{"version":3,"file":"static/js/index.09b451b6.js","sources":["./src/App.tsx","./src/__mocks__/categoriesSidebars/adminMenu.tsx","./src/__mocks__/categoriesSidebars/agentMenu.tsx","./src/__mocks__/categoriesSidebars/index.tsx","./src/__mocks__/categoriesSidebars/moderatorMenu.tsx","./src/__mocks__/categoriesSidebars/superAdminMenu.tsx","./src/__mocks__/categoriesSidebars/supportMenu.tsx","./src/__mocks__/categoriesSidebars/technicalManagerMenu.tsx","./src/__mocks__/supportManagerAdditionalMenu.tsx","./src/api/axios.ts","./src/api/core/ApiError.ts","./src/api/core/AxiosHttpRequest.ts","./src/api/core/BaseHttpRequest.ts","./src/api/core/CancelablePromise.ts","./src/api/core/OpenAPI.ts","./src/api/core/request.ts","./src/api/services/AuthService.ts","./src/api/services/BitrixService.ts","./src/api/services/CategoryService.ts","./src/api/services/CurrencyService.ts","./src/api/services/DiscountService.ts","./src/api/services/ExhibitionService.ts","./src/api/services/ExhibitorService.ts","./src/api/services/GlobalSettingsService.ts","./src/api/services/IteCompanyService.ts","./src/api/services/OrderService.ts","./src/api/services/PriceListItemService.ts","./src/api/services/PriceListService.ts","./src/api/services/ProductService.ts","./src/api/services/SellingOfficeService.ts","./src/api/services/StandService.ts","./src/api/services/UserService.ts","./src/api/setup-openapi.ts","./src/api/typed-axios.ts","./src/components/AdminSearch/AdminSearch.tsx","./src/components/AmountCounter/index.tsx","./src/components/AmountCounter/styled.ts","./src/components/AsyncButton/AsyncButton.tsx","./src/components/BrandBox/BrandBox.tsx","./src/components/Breadcrumbs/Breadcrumbs.tsx","./src/components/Buttons/Button/Button.tsx","./src/components/Buttons/Link/index.tsx","./src/components/Card/Card.tsx","./src/components/Card/ExhibitionCard.tsx","./src/components/Card/ProductCard.tsx","./src/components/Card/TechnicalServiceCard.tsx","./src/components/Content/index.tsx","./src/components/DatePicker/DatePicker.tsx","./src/components/Debug.tsx","./src/components/DevelopmentCard/BuildingCardModal.tsx","./src/components/DevelopmentCard/DevelopmentCard.styled.tsx","./src/components/DevelopmentCard/DevelopmentCard.tsx","./src/components/DownloadFileLink.tsx","./src/components/Fields/Checkbox.tsx","./src/components/Fields/Input.tsx","./src/components/Fields/InputNumber.tsx","./src/components/Fields/Select.tsx","./src/components/FileUpload/FileUpload.tsx","./src/components/FormLabel/FormLabel.tsx","./src/components/Forms/Services/SelectBuilding/getSelectBuildingInfo.tsx","./src/components/Forms/Services/SelectBuilding/index.tsx","./src/components/Forms/Services/ServiceFactory.tsx","./src/components/Forms/Services/TemporaryStaff/Row.tsx","./src/components/Forms/Services/TemporaryStaff/config.ts","./src/components/Forms/Services/TemporaryStaff/index.tsx","./src/components/Forms/Services/common/ProductItemsCard.tsx","./src/components/Forms/Services/common/use-products-loader.ts","./src/components/Forms/Services/defaultConfig.ts","./src/components/Header/Header.tsx","./src/components/Header/headerMenuConfig.tsx","./src/components/Icons/Development.tsx","./src/components/Icons/DraggableHandlerIcon.tsx","./src/components/Icons/Orders.tsx","./src/components/Icons/Users.tsx","./src/components/ImageGalleries/BuildingGallery.tsx","./src/components/ImageGalleries/CommonProductGallery.styled.tsx","./src/components/ImageGalleries/CommonProductGallery.tsx","./src/components/LanguageSwitcher/LanguageSwitcher.tsx","./src/components/Loader/Loader.tsx","./src/components/Menu/Menu.tsx","./src/components/Menu/MenuItem.tsx","./src/components/Modal/Provider.tsx","./src/components/Modal/api.tsx","./src/components/MultiSelect/MultiSelect.tsx","./src/components/OrderBadge.tsx","./src/components/OrderTableRow/OrderTableRow.tsx","./src/components/OrderTableRow/styled.ts","./src/components/Profile/Profile.styled.tsx","./src/components/Profile/Profile.tsx","./src/components/Profile/ProfileMenu.tsx","./src/components/Search/Search.tsx","./src/components/Sidebar/CategoriesSidebar.tsx","./src/components/Sidebar/OrderList/Footer.tsx","./src/components/Sidebar/OrderList/Header.tsx","./src/components/Sidebar/OrderList/OrderItemDependencyWarning.styled.tsx","./src/components/Sidebar/OrderList/OrderItemDependencyWarning.tsx","./src/components/Sidebar/OrderList/OrderList.styled.tsx","./src/components/Sidebar/OrderList/Row.tsx","./src/components/Sidebar/OrderList/index.tsx","./src/components/Sidebar/Sidebar.tsx","./src/components/Table/DraggableTable.tsx","./src/components/Table/Pagination.tsx","./src/components/Table/Table.tsx","./src/components/Table/useTableLoader.ts","./src/components/TechnicalServicesGrid/index.tsx","./src/components/TextArea/TextArea.tsx","./src/components/Timer/Timer.tsx","./src/components/Typography/PageTitle.tsx","./src/constants/admin-pages.ts","./src/constants/categorie.ts","./src/constants/endpoints.ts","./src/constants/languages.ts","./src/constants/order.ts","./src/constants/router.ts","./src/constants/technical-services.ts","./src/features/Routing/RoutesConfig/authRoutesConfig.ts","./src/features/Routing/auth.tsx","./src/features/Routing/guard.ts","./src/features/Routing/protected.tsx","./src/features/Routing/protected/admin-exhibitions.tsx","./src/features/Routing/protected/agent-pages.ts","./src/features/Routing/protected/exhibitions-by-role.tsx","./src/features/Routing/protected/member-directory.tsx","./src/features/Routing/protected/service-dictionary.tsx","./src/features/Routing/protected/settings.tsx","./src/features/Routing/protected/users.tsx","./src/features/Routing/provider.tsx","./src/features/Routing/root.tsx","./src/features/Routing/userPaths.ts","./src/features/feautres/index.ts","./src/features/query/index.ts","./src/features/query/query-options/index.ts","./src/features/rbac/useRBAC.ts","./src/features/sentry.ts","./src/hooks/categoriesConverter/useCategoriesByData.ts","./src/hooks/categoriesConverter/useSubCategoriesByData.ts","./src/hooks/useExhibitionStateReset.ts","./src/hooks/useFormErrorsHandler.ts","./src/hooks/useProductCategory.ts","./src/hooks/useSearchCategoryForProduct.ts","./src/hooks/useStringName.ts","./src/i18n/index.ts","./src/i18n/lang/colors/index.ts","./src/i18n/validate-translations-match.ts","./src/index.tsx","./src/layout/AdminAdditionalPanel/ToExhibition.tsx","./src/layout/AdminPanel/index.tsx","./src/layout/Auth/index.tsx","./src/layout/ConnectedSidebar/ConnectedSidebar.tsx","./src/layout/ConnectedSidebar/SidebarsByPageType/ExhibitionSidebar.tsx","./src/layout/ConnectedSidebar/SidebarsByPageType/SidebarByRole.tsx","./src/layout/Default/Layout.styled.tsx","./src/layout/Default/index.tsx","./src/model/IBaseOrder.ts","./src/model/ICart.ts","./src/model/ICategory.ts","./src/model/IExhibition.ts","./src/model/IExhibition/shema.ts","./src/model/IExhibitionSummary.ts","./src/model/IOrder.ts","./src/model/IOrderItem.ts","./src/model/IProduct.ts","./src/model/IUser.ts","./src/model/Serializable.ts","./src/pages/AdminPanel/Accordion/use-categories-loader.ts","./src/pages/AdminPanel/Accordion/use-categories-order-update.ts","./src/pages/AdminPanel/Accordion/use-products-loader.ts","./src/pages/AdminPanel/Accordion/use-products-order-update.ts","./src/pages/AdminPanel/Accordion/use-sub-categories-order-update.ts","./src/pages/AdminPanel/Exhibitions/EditPriceListItemForm.tsx","./src/pages/AdminPanel/Exhibitions/ExhibitionDescription.tsx","./src/pages/AdminPanel/Exhibitions/Exhibitions.tsx","./src/pages/AdminPanel/Exhibitions/ExhibitionsTabsPage.tsx","./src/pages/AdminPanel/Exhibitions/ImportExhibitionForm.tsx","./src/pages/AdminPanel/Exhibitions/NewExhibition.tsx","./src/pages/AdminPanel/Exhibitions/PriceList.styled.ts","./src/pages/AdminPanel/Exhibitions/PriceLists.tsx","./src/pages/AdminPanel/Exhibitions/TableIncludedPriceListItemsBadge.tsx","./src/pages/AdminPanel/Exhibitions/hooks/use-import-exhibition.tsx","./src/pages/AdminPanel/Exhibitions/types.ts","./src/pages/AdminPanel/MembersDirectory/EditMemberForm.tsx","./src/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/Actions.tsx","./src/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/AddNewEmployeeForm.tsx","./src/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/ManageExhibitorUsers.tsx","./src/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/hooks/use-save-employee.tsx","./src/pages/AdminPanel/MembersDirectory/MembersDirectory.tsx","./src/pages/AdminPanel/PersonalAccounts/MainInfo.tsx","./src/pages/AdminPanel/PersonalAccounts/MainInfoTab/hooks/use-company-save.ts","./src/pages/AdminPanel/PersonalAccounts/MainInfoTab/hooks/use-search-company-by-employee.ts","./src/pages/AdminPanel/PersonalAccounts/MainInfoTab/styled.ts","./src/pages/AdminPanel/PersonalAccounts/MainInfoTab/types.ts","./src/pages/AdminPanel/PersonalAccounts/Modals/EditManagerModal.tsx","./src/pages/AdminPanel/PersonalAccounts/NewAccount.tsx","./src/pages/AdminPanel/PersonalAccounts/PersonalAccounts.tsx","./src/pages/AdminPanel/PersonalAccounts/PersonalAccountsTabs.tsx","./src/pages/AdminPanel/PersonalAccounts/ProductsTab/ProductsTab.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab/StandFieldSet.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/ProjectChangeForm.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/ProjectImageUploader.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/StandProjectForm.tsx","./src/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/api.ts","./src/pages/AdminPanel/PersonalAccounts/StandsTab/contsants.ts","./src/pages/AdminPanel/PersonalAccounts/StandsTab/use-save-stand.ts","./src/pages/AdminPanel/PersonalAccounts/SubexponentsTab/SubexponentsTab.tsx","./src/pages/AdminPanel/PersonalAccounts/UsersTab/AddNewEmployeeForm.tsx","./src/pages/AdminPanel/PersonalAccounts/UsersTab/UsersTab.tsx","./src/pages/AdminPanel/PersonalAccounts/UsersTab/UsersTableActions.tsx","./src/pages/AdminPanel/PersonalAccounts/UsersTab/hooks/use-employee-create.tsx","./src/pages/AdminPanel/PersonalAccounts/UsersTab/hooks/use-employee-search.ts","./src/pages/AdminPanel/PersonalAccounts/UsersTab/types.ts","./src/pages/AdminPanel/PersonalAccounts/hooks/use-edit-technical-managers.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/AddItemToOrderModal.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/AddedToOrderItemsTable.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/CreateOrder.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/CreateOrderButton.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/CreateOrderContext.ts","./src/pages/AdminPanel/PlacedOrders/CreateOrder/NoPriceListsLink.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/NoStandsLink.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/OrderControls.tsx","./src/pages/AdminPanel/PlacedOrders/CreateOrder/types.ts","./src/pages/AdminPanel/PlacedOrders/EditOrder/EditOrder.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/EditOrderForm.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/MarkupManagement/MarkupForm.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/MarkupManagement/MarkupManagement.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/MarkupManagement/use-order-extra-charge-management.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/PersonalDiscount/PersonalDiscount.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/PersonalDiscount/PersonalDiscountForm.tsx","./src/pages/AdminPanel/PlacedOrders/EditOrder/hooks/use-send-order-email.tsx","./src/pages/AdminPanel/PlacedOrders/EditStatus.tsx","./src/pages/AdminPanel/PlacedOrders/PlacedOrders.tsx","./src/pages/AdminPanel/PlacedOrders/exportOrderForm.tsx","./src/pages/AdminPanel/PlacedOrders/hooks/use-export-order.tsx","./src/pages/AdminPanel/PlacedOrders/shared/NumberColumnComponent.tsx","./src/pages/AdminPanel/ServiceDirectory/EditCategoryForm/EditCategoryForm.tsx","./src/pages/AdminPanel/ServiceDirectory/EditCategoryForm/use-parent-categories-loader.ts","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/AbstractEditProductDrawerForm.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditBuildingTypeProduct.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditDefaultProduct.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditProductDrawer.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditTemporaryStaffProduct.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useCommonProductSave.ts","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm.tsx","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/utils.ts","./src/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas.ts","./src/pages/AdminPanel/ServiceDirectory/EditProductForm/useCommonProductEditLoader.ts","./src/pages/AdminPanel/ServiceDirectory/ImportCSVForm.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/CategoryControls.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/CategoryItem.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/EditCategoryModalForm.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/ProductsList.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/SubCategoriesList.tsx","./src/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/edit-category-api.ts","./src/pages/AdminPanel/ServiceDirectory/types.ts","./src/pages/AdminPanel/Settings/BitrixPassport/BitrixIntegrationPassportTab.tsx","./src/pages/AdminPanel/Settings/BitrixPassport/TableData.ts","./src/pages/AdminPanel/Settings/ChangePassword.tsx","./src/pages/AdminPanel/Settings/Disounts/DiscountsTab.tsx","./src/pages/AdminPanel/Settings/Disounts/EditDiscountModal.tsx","./src/pages/AdminPanel/Settings/LogoTab.tsx","./src/pages/AdminPanel/Settings/ManualUploaderTab.tsx","./src/pages/AdminPanel/Settings/Settings.tsx","./src/pages/AdminPanel/Settings/SettingsPage.tsx","./src/pages/AdminPanel/UsersTable/NewUsers/NewUser.tsx","./src/pages/AdminPanel/UsersTable/NewUsers/NewUsersForm.tsx","./src/pages/AdminPanel/UsersTable/UsersTable.tsx","./src/pages/AgentHome/AgentHome.tsx","./src/pages/Cart/CartTotal.tsx","./src/pages/Cart/OrderComments/ExtendedStandOrderCommentsForm.tsx","./src/pages/Cart/OrderComments/SpaceOnlyStandOrderCommentsForm.tsx","./src/pages/Cart/index.tsx","./src/pages/Cart/styled.tsx","./src/pages/ConfirmModal.tsx","./src/pages/Exhibition/DeleteModal.tsx","./src/pages/Exhibition/Exhibition.styled.tsx","./src/pages/Exhibition/FilesStorage/FilesStorage.tsx","./src/pages/Exhibition/FilesStorage/filesStorageApi.ts","./src/pages/Exhibition/index.tsx","./src/pages/Exhibition/orderTranscriptTableColumns.tsx","./src/pages/Exhibition/shared/StandDescription.tsx","./src/pages/Exhibition/useEditOrderLoader.ts","./src/pages/Exhibition/useGetOrderItems.ts","./src/pages/LoginPage/index.tsx","./src/pages/Order/Categories.tsx","./src/pages/Order/Service.tsx","./src/pages/Profile/ExhibitionsList.tsx","./src/pages/Profile/ExhibitionsTabs.tsx","./src/pages/Profile/Profile.tsx","./src/pages/Profile/hooks/use-exhibition-detailed-preload.ts","./src/pages/Profile/hooks/use-exhibition-loader.ts","./src/pages/StandProject/StandProject.tsx","./src/pages/StandProject/StandProjectDescription/AttachmentUploader.tsx","./src/pages/StandProject/StandProjectDescription/CommentForm.tsx","./src/pages/StandProject/StandProjectDescription/CommentsHistory.tsx","./src/pages/StandProject/StandProjectDescription/HistoryItem.tsx","./src/pages/StandProject/StandProjectDescription/ProjectDescription.tsx","./src/pages/StandProject/StandProjectDescription/StandProjectDescription.tsx","./src/pages/StandProject/StandProjectImage/StandProjectImage.styled.tsx","./src/pages/StandProject/StandProjectImage/StandProjectImage.tsx","./src/pages/VerifyEmailPage/index.tsx","./src/pages/common/Auth.styled.tsx","./src/store/effector/auth.ts","./src/store/effector/catalog-gate.tsx","./src/store/effector/catalog.ts","./src/store/effector/cleanup.ts","./src/store/effector/common.ts","./src/store/effector/exhibition.ts","./src/store/effector/init.ts","./src/store/effector/loading.ts","./src/store/effector/logger.ts","./src/store/effector/order-completeness.ts","./src/store/effector/order.ts","./src/store/effector/stand.ts","./src/store/effector/vat-settings.ts","./src/theme/css/styles.tsx","./src/theme/default/Globals.tsx","./src/theme/default/index.ts","./src/utils/amountTransformation.ts","./src/utils/attempt.ts","./src/utils/breadcrumbs.ts","./src/utils/constants.ts","./src/utils/date-utils.ts","./src/utils/draggable-utils.ts","./src/utils/exhibition-utils.ts","./src/utils/fetchAPI.ts","./src/utils/file-utils.ts","./src/utils/form-options-as-values.ts","./src/utils/is-nil.ts","./src/utils/is-option.ts","./src/utils/math-utils.ts","./src/utils/product-utils.ts","./src/utils/route.ts","./src/utils/typed-object-keys.ts","./src/utils/url-utils.ts","./src/utils/url.ts"],"sourcesContent":["import { ChakraProvider } from '@chakra-ui/react';\nimport 'simplebar-react/dist/simplebar.min.css';\nimport { RouterProvider } from '@/features/Routing/provider';\nimport DEFAULT_THEME from './theme/default/index';\nimport 'react-toastify/dist/ReactToastify.css';\nimport { ToastContainer } from 'react-toastify';\nimport { ModalFactoryProvider } from './components/Modal/Provider';\nimport { GlobalStyles } from '@/theme/default/Globals';\n\nfunction App(): JSX.Element {\n return (\n <ChakraProvider theme={DEFAULT_THEME}>\n <GlobalStyles />\n <RouterProvider />\n <ToastContainer />\n <ModalFactoryProvider />\n </ChakraProvider>\n );\n}\n\nexport default App;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport { CREATE_USER, SETTINGS } from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nconst adminMenu = () => {\n const settings = new Category({\n id: SETTINGS,\n name: SETTINGS,\n displayName: i18n.t(SETTINGS),\n });\n const createUser = new Category({\n id: CREATE_USER,\n name: CREATE_USER,\n displayName: i18n.t(CREATE_USER),\n });\n\n return [\n {\n category: createUser,\n image: <DevelopmentIcon />,\n },\n {\n category: settings,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n\nexport default adminMenu;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport { EXHIBITIONS } from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nexport const agentMenu = () => {\n const exhibitions = new Category({\n id: EXHIBITIONS,\n name: EXHIBITIONS,\n displayName: i18n.t(EXHIBITIONS),\n });\n\n return [\n {\n category: exhibitions,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n","import superAdminMenu from '@/__mocks__/categoriesSidebars/superAdminMenu';\nimport adminMenu from '@/__mocks__/categoriesSidebars/adminMenu';\nimport supportMenu from '@/__mocks__/categoriesSidebars/supportMenu';\nimport technicalManagerMenu from '@/__mocks__/categoriesSidebars/technicalManagerMenu';\nimport moderatorMenu from '@/__mocks__/categoriesSidebars/moderatorMenu';\nimport { User } from '@/model/IUser';\nimport { agentMenu } from '@/__mocks__/categoriesSidebars/agentMenu';\n\nexport const getCategoriesByRole = (user: User) => {\n switch (true) {\n case user.isAgent:\n return agentMenu();\n case user.isSuperAdmin:\n return superAdminMenu();\n case user.isAdmin:\n return adminMenu();\n case user.isSupportManager:\n return supportMenu();\n case user.isTechnicalManager:\n return technicalManagerMenu();\n case user.isModerator:\n return moderatorMenu();\n default:\n return [];\n }\n};\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport { EXHIBITIONS } from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nconst moderatorMenu = () => {\n const exhibitions = new Category({\n id: EXHIBITIONS,\n name: EXHIBITIONS,\n displayName: i18n.t(EXHIBITIONS),\n });\n\n return [\n {\n category: exhibitions,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n\nexport default moderatorMenu;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport {\n CREATE_USER,\n EXHIBITIONS,\n MEMBER_DIRECTORY,\n SERVICE_DICTIONARY,\n SETTINGS,\n} from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nconst superAdminMenu = () => {\n const exhibitions = new Category({\n id: EXHIBITIONS,\n name: EXHIBITIONS,\n displayName: i18n.t(EXHIBITIONS),\n });\n const serviceDirectory = new Category({\n id: SERVICE_DICTIONARY,\n name: SERVICE_DICTIONARY,\n displayName: i18n.t(SERVICE_DICTIONARY),\n });\n const memberDirectory = new Category({\n id: MEMBER_DIRECTORY,\n name: MEMBER_DIRECTORY,\n displayName: i18n.t(MEMBER_DIRECTORY),\n });\n const settings = new Category({\n id: SETTINGS,\n name: SETTINGS,\n displayName: i18n.t(SETTINGS),\n });\n const createUser = new Category({\n id: CREATE_USER,\n name: CREATE_USER,\n displayName: i18n.t(CREATE_USER),\n });\n\n return [\n {\n category: exhibitions,\n image: <DevelopmentIcon />,\n },\n {\n category: serviceDirectory,\n image: <DevelopmentIcon />,\n },\n {\n category: memberDirectory,\n image: <DevelopmentIcon />,\n },\n {\n category: settings,\n image: <DevelopmentIcon />,\n },\n {\n category: createUser,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n\nexport default superAdminMenu;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport {\n EXHIBITIONS,\n MEMBER_DIRECTORY,\n SERVICE_DICTIONARY,\n} from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nconst supportMenu = () => {\n const exhibitions = new Category({\n id: EXHIBITIONS,\n name: EXHIBITIONS,\n displayName: i18n.t(EXHIBITIONS),\n });\n const serviceDirectory = new Category({\n id: SERVICE_DICTIONARY,\n name: SERVICE_DICTIONARY,\n displayName: i18n.t(SERVICE_DICTIONARY),\n });\n const memberDirectory = new Category({\n id: MEMBER_DIRECTORY,\n name: MEMBER_DIRECTORY,\n displayName: i18n.t(MEMBER_DIRECTORY),\n });\n\n return [\n {\n category: exhibitions,\n image: <DevelopmentIcon />,\n },\n {\n category: serviceDirectory,\n image: <DevelopmentIcon />,\n },\n {\n category: memberDirectory,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n\nexport default supportMenu;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport { EXHIBITIONS } from '@/constants/technical-services';\nimport i18n from '@/i18n';\n\nconst technicalManagerMenu = () => {\n const exhibitions = new Category({\n id: EXHIBITIONS,\n name: EXHIBITIONS,\n displayName: i18n.t(EXHIBITIONS),\n });\n\n return [\n {\n category: exhibitions,\n image: <DevelopmentIcon />,\n },\n ] as ITechnicalService[];\n};\n\nexport default technicalManagerMenu;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport DevelopmentIcon from '@/components/Icons/Development';\nimport { Category } from '@/model/ICategory';\nimport {\n PERSONAL_ACCOUNTS,\n PLACED_ORDERS,\n} from '@/constants/technical-services';\nimport { IdType } from '@/model/common';\nimport { checkRBACRule } from '@/features/rbac/useRBAC';\nimport { $auth } from '@/store/effector/auth';\n\nconst supportManagerAdditionalMenu = (exhibitionId: IdType, t: any) => {\n const canManagePersonalAccounts = checkRBACRule($auth.getState().user)(\n 'canAccessExhibitionPersonalAccounts'\n );\n\n const menuItems: ITechnicalService[] = [];\n\n if (canManagePersonalAccounts) {\n menuItems.push({\n category: new Category({\n id: PERSONAL_ACCOUNTS,\n name: PERSONAL_ACCOUNTS,\n displayName: t(PERSONAL_ACCOUNTS),\n\n resolveUrl: () => {\n return `/admin/exhibitions/${exhibitionId}/view/personal-accounts`;\n },\n }),\n image: <DevelopmentIcon />,\n });\n }\n\n menuItems.push({\n category: new Category({\n id: PLACED_ORDERS,\n name: PLACED_ORDERS,\n displayName: t(PLACED_ORDERS),\n\n resolveUrl: () => {\n return `/admin/exhibitions/${exhibitionId}/view/placed-orders`;\n },\n }),\n image: <DevelopmentIcon />,\n });\n\n return menuItems;\n};\n\nexport default supportManagerAdditionalMenu;\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { BaseHttpRequest } from './core/BaseHttpRequest';\nimport type { OpenAPIConfig } from './core/OpenAPI';\nimport { AxiosHttpRequest } from './core/AxiosHttpRequest';\n\nimport { AuthService } from './services/AuthService';\nimport { BitrixService } from './services/BitrixService';\nimport { CategoryService } from './services/CategoryService';\nimport { CurrencyService } from './services/CurrencyService';\nimport { DiscountService } from './services/DiscountService';\nimport { ExhibitionService } from './services/ExhibitionService';\nimport { ExhibitorService } from './services/ExhibitorService';\nimport { GlobalSettingsService } from './services/GlobalSettingsService';\nimport { IteCompanyService } from './services/IteCompanyService';\nimport { OrderService } from './services/OrderService';\nimport { PriceListService } from './services/PriceListService';\nimport { PriceListItemService } from './services/PriceListItemService';\nimport { ProductService } from './services/ProductService';\nimport { SellingOfficeService } from './services/SellingOfficeService';\nimport { StandService } from './services/StandService';\nimport { UserService } from './services/UserService';\n\ntype HttpRequestConstructor = new (config: OpenAPIConfig) => BaseHttpRequest;\n\nexport class axios {\n\n public readonly auth: AuthService;\n public readonly bitrix: BitrixService;\n public readonly category: CategoryService;\n public readonly currency: CurrencyService;\n public readonly discount: DiscountService;\n public readonly exhibition: ExhibitionService;\n public readonly exhibitor: ExhibitorService;\n public readonly globalSettings: GlobalSettingsService;\n public readonly iteCompany: IteCompanyService;\n public readonly order: OrderService;\n public readonly priceList: PriceListService;\n public readonly priceListItem: PriceListItemService;\n public readonly product: ProductService;\n public readonly sellingOffice: SellingOfficeService;\n public readonly stand: StandService;\n public readonly user: UserService;\n\n public readonly request: BaseHttpRequest;\n\n constructor(config?: Partial<OpenAPIConfig>, HttpRequest: HttpRequestConstructor = AxiosHttpRequest) {\n this.request = new HttpRequest({\n BASE: config?.BASE ?? '',\n VERSION: config?.VERSION ?? '1',\n WITH_CREDENTIALS: config?.WITH_CREDENTIALS ?? false,\n CREDENTIALS: config?.CREDENTIALS ?? 'include',\n TOKEN: config?.TOKEN,\n USERNAME: config?.USERNAME,\n PASSWORD: config?.PASSWORD,\n HEADERS: config?.HEADERS,\n ENCODE_PATH: config?.ENCODE_PATH,\n });\n\n this.auth = new AuthService(this.request);\n this.bitrix = new BitrixService(this.request);\n this.category = new CategoryService(this.request);\n this.currency = new CurrencyService(this.request);\n this.discount = new DiscountService(this.request);\n this.exhibition = new ExhibitionService(this.request);\n this.exhibitor = new ExhibitorService(this.request);\n this.globalSettings = new GlobalSettingsService(this.request);\n this.iteCompany = new IteCompanyService(this.request);\n this.order = new OrderService(this.request);\n this.priceList = new PriceListService(this.request);\n this.priceListItem = new PriceListItemService(this.request);\n this.product = new ProductService(this.request);\n this.sellingOffice = new SellingOfficeService(this.request);\n this.stand = new StandService(this.request);\n this.user = new UserService(this.request);\n }\n}\n\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\n\nexport class ApiError extends Error {\n public readonly url: string;\n public readonly status: number;\n public readonly statusText: string;\n public readonly body: any;\n public readonly request: ApiRequestOptions;\n\n constructor(request: ApiRequestOptions, response: ApiResult, message: string) {\n super(message);\n\n this.name = 'ApiError';\n this.url = response.url;\n this.status = response.status;\n this.statusText = response.statusText;\n this.body = response.body;\n this.request = request;\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport { BaseHttpRequest } from './BaseHttpRequest';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\nimport { request as __request } from './request';\n\nexport class AxiosHttpRequest extends BaseHttpRequest {\n\n constructor(config: OpenAPIConfig) {\n super(config);\n }\n\n /**\n * Request method\n * @param options The request options from the service\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\n public override request<T>(options: ApiRequestOptions): CancelablePromise<T> {\n return __request(this.config, options);\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { CancelablePromise } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport abstract class BaseHttpRequest {\n\n constructor(public readonly config: OpenAPIConfig) {}\n\n public abstract request<T>(options: ApiRequestOptions): CancelablePromise<T>;\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nexport class CancelError extends Error {\n\n constructor(message: string) {\n super(message);\n this.name = 'CancelError';\n }\n\n public get isCancelled(): boolean {\n return true;\n }\n}\n\nexport interface OnCancel {\n readonly isResolved: boolean;\n readonly isRejected: boolean;\n readonly isCancelled: boolean;\n\n (cancelHandler: () => void): void;\n}\n\nexport class CancelablePromise<T> implements Promise<T> {\n #isResolved: boolean;\n #isRejected: boolean;\n #isCancelled: boolean;\n readonly #cancelHandlers: (() => void)[];\n readonly #promise: Promise<T>;\n #resolve?: (value: T | PromiseLike<T>) => void;\n #reject?: (reason?: any) => void;\n\n constructor(\n executor: (\n resolve: (value: T | PromiseLike<T>) => void,\n reject: (reason?: any) => void,\n onCancel: OnCancel\n ) => void\n ) {\n this.#isResolved = false;\n this.#isRejected = false;\n this.#isCancelled = false;\n this.#cancelHandlers = [];\n this.#promise = new Promise<T>((resolve, reject) => {\n this.#resolve = resolve;\n this.#reject = reject;\n\n const onResolve = (value: T | PromiseLike<T>): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isResolved = true;\n this.#resolve?.(value);\n };\n\n const onReject = (reason?: any): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isRejected = true;\n this.#reject?.(reason);\n };\n\n const onCancel = (cancelHandler: () => void): void => {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#cancelHandlers.push(cancelHandler);\n };\n\n Object.defineProperty(onCancel, 'isResolved', {\n get: (): boolean => this.#isResolved,\n });\n\n Object.defineProperty(onCancel, 'isRejected', {\n get: (): boolean => this.#isRejected,\n });\n\n Object.defineProperty(onCancel, 'isCancelled', {\n get: (): boolean => this.#isCancelled,\n });\n\n return executor(onResolve, onReject, onCancel as OnCancel);\n });\n }\n\n get [Symbol.toStringTag]() {\n return \"Cancellable Promise\";\n }\n\n public then<TResult1 = T, TResult2 = never>(\n onFulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null,\n onRejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null\n ): Promise<TResult1 | TResult2> {\n return this.#promise.then(onFulfilled, onRejected);\n }\n\n public catch<TResult = never>(\n onRejected?: ((reason: any) => TResult | PromiseLike<TResult>) | null\n ): Promise<T | TResult> {\n return this.#promise.catch(onRejected);\n }\n\n public finally(onFinally?: (() => void) | null): Promise<T> {\n return this.#promise.finally(onFinally);\n }\n\n public cancel(): void {\n if (this.#isResolved || this.#isRejected || this.#isCancelled) {\n return;\n }\n this.#isCancelled = true;\n if (this.#cancelHandlers.length) {\n try {\n for (const cancelHandler of this.#cancelHandlers) {\n cancelHandler();\n }\n } catch (error) {\n console.warn('Cancellation threw an error', error);\n return;\n }\n }\n this.#cancelHandlers.length = 0;\n this.#reject?.(new CancelError('Request aborted'));\n }\n\n public get isCancelled(): boolean {\n return this.#isCancelled;\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ApiRequestOptions } from './ApiRequestOptions';\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\ntype Headers = Record<string, string>;\n\nexport type OpenAPIConfig = {\n BASE: string;\n VERSION: string;\n WITH_CREDENTIALS: boolean;\n CREDENTIALS: 'include' | 'omit' | 'same-origin';\n TOKEN?: string | Resolver<string> | undefined;\n USERNAME?: string | Resolver<string> | undefined;\n PASSWORD?: string | Resolver<string> | undefined;\n HEADERS?: Headers | Resolver<Headers> | undefined;\n ENCODE_PATH?: ((path: string) => string) | undefined;\n};\n\nexport const OpenAPI: OpenAPIConfig = {\n BASE: '',\n VERSION: '1',\n WITH_CREDENTIALS: false,\n CREDENTIALS: 'include',\n TOKEN: undefined,\n USERNAME: undefined,\n PASSWORD: undefined,\n HEADERS: undefined,\n ENCODE_PATH: undefined,\n};\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport axios from 'axios';\nimport type { AxiosError, AxiosRequestConfig, AxiosResponse, AxiosInstance } from 'axios';\nimport FormData from 'form-data';\n\nimport { ApiError } from './ApiError';\nimport type { ApiRequestOptions } from './ApiRequestOptions';\nimport type { ApiResult } from './ApiResult';\nimport { CancelablePromise } from './CancelablePromise';\nimport type { OnCancel } from './CancelablePromise';\nimport type { OpenAPIConfig } from './OpenAPI';\n\nexport const isDefined = <T>(value: T | null | undefined): value is Exclude<T, null | undefined> => {\n return value !== undefined && value !== null;\n};\n\nexport const isString = (value: any): value is string => {\n return typeof value === 'string';\n};\n\nexport const isStringWithValue = (value: any): value is string => {\n return isString(value) && value !== '';\n};\n\nexport const isBlob = (value: any): value is Blob => {\n return (\n typeof value === 'object' &&\n typeof value.type === 'string' &&\n typeof value.stream === 'function' &&\n typeof value.arrayBuffer === 'function' &&\n typeof value.constructor === 'function' &&\n typeof value.constructor.name === 'string' &&\n /^(Blob|File)$/.test(value.constructor.name) &&\n /^(Blob|File)$/.test(value[Symbol.toStringTag])\n );\n};\n\nexport const isFormData = (value: any): value is FormData => {\n return value instanceof FormData;\n};\n\nexport const isSuccess = (status: number): boolean => {\n return status >= 200 && status < 300;\n};\n\nexport const base64 = (str: string): string => {\n try {\n return btoa(str);\n } catch (err) {\n // @ts-ignore\n return Buffer.from(str).toString('base64');\n }\n};\n\nexport const getQueryString = (params: Record<string, any>): string => {\n const qs: string[] = [];\n\n const append = (key: string, value: any) => {\n qs.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`);\n };\n\n const process = (key: string, value: any) => {\n if (isDefined(value)) {\n if (Array.isArray(value)) {\n value.forEach(v => {\n process(key, v);\n });\n } else if (typeof value === 'object') {\n Object.entries(value).forEach(([k, v]) => {\n process(`${key}[${k}]`, v);\n });\n } else {\n append(key, value);\n }\n }\n };\n\n Object.entries(params).forEach(([key, value]) => {\n process(key, value);\n });\n\n if (qs.length > 0) {\n return `?${qs.join('&')}`;\n }\n\n return '';\n};\n\nconst getUrl = (config: OpenAPIConfig, options: ApiRequestOptions): string => {\n const encoder = config.ENCODE_PATH || encodeURI;\n\n const path = options.url\n .replace('{api-version}', config.VERSION)\n .replace(/{(.*?)}/g, (substring: string, group: string) => {\n if (options.path?.hasOwnProperty(group)) {\n return encoder(String(options.path[group]));\n }\n return substring;\n });\n\n const url = `${config.BASE}${path}`;\n if (options.query) {\n return `${url}${getQueryString(options.query)}`;\n }\n return url;\n};\n\nexport const getFormData = (options: ApiRequestOptions): FormData | undefined => {\n if (options.formData) {\n const formData = new FormData();\n\n const process = (key: string, value: any) => {\n if (isString(value) || isBlob(value)) {\n formData.append(key, value);\n } else {\n formData.append(key, JSON.stringify(value));\n }\n };\n\n Object.entries(options.formData)\n .filter(([_, value]) => isDefined(value))\n .forEach(([key, value]) => {\n if (Array.isArray(value)) {\n value.forEach(v => process(key, v));\n } else {\n process(key, value);\n }\n });\n\n return formData;\n }\n return undefined;\n};\n\ntype Resolver<T> = (options: ApiRequestOptions) => Promise<T>;\n\nexport const resolve = async <T>(options: ApiRequestOptions, resolver?: T | Resolver<T>): Promise<T | undefined> => {\n if (typeof resolver === 'function') {\n return (resolver as Resolver<T>)(options);\n }\n return resolver;\n};\n\nexport const getHeaders = async (config: OpenAPIConfig, options: ApiRequestOptions, formData?: FormData): Promise<Record<string, string>> => {\n const token = await resolve(options, config.TOKEN);\n const username = await resolve(options, config.USERNAME);\n const password = await resolve(options, config.PASSWORD);\n const additionalHeaders = await resolve(options, config.HEADERS);\n const formHeaders = typeof formData?.getHeaders === 'function' && formData?.getHeaders() || {}\n\n const headers = Object.entries({\n Accept: 'application/json',\n ...additionalHeaders,\n ...options.headers,\n ...formHeaders,\n })\n .filter(([_, value]) => isDefined(value))\n .reduce((headers, [key, value]) => ({\n ...headers,\n [key]: String(value),\n }), {} as Record<string, string>);\n\n if (isStringWithValue(token)) {\n headers['Authorization'] = `Bearer ${token}`;\n }\n\n if (isStringWithValue(username) && isStringWithValue(password)) {\n const credentials = base64(`${username}:${password}`);\n headers['Authorization'] = `Basic ${credentials}`;\n }\n\n if (options.body) {\n if (options.mediaType) {\n headers['Content-Type'] = options.mediaType;\n } else if (isBlob(options.body)) {\n headers['Content-Type'] = options.body.type || 'application/octet-stream';\n } else if (isString(options.body)) {\n headers['Content-Type'] = 'text/plain';\n } else if (!isFormData(options.body)) {\n headers['Content-Type'] = 'application/json';\n }\n }\n\n return headers;\n};\n\nexport const getRequestBody = (options: ApiRequestOptions): any => {\n if (options.body) {\n return options.body;\n }\n return undefined;\n};\n\nexport const sendRequest = async <T>(\n config: OpenAPIConfig,\n options: ApiRequestOptions,\n url: string,\n body: any,\n formData: FormData | undefined,\n headers: Record<string, string>,\n onCancel: OnCancel,\n axiosClient: AxiosInstance\n): Promise<AxiosResponse<T>> => {\n const source = axios.CancelToken.source();\n\n const requestConfig: AxiosRequestConfig = {\n url,\n headers,\n data: body ?? formData,\n method: options.method,\n withCredentials: config.WITH_CREDENTIALS,\n cancelToken: source.token,\n };\n\n onCancel(() => source.cancel('The user aborted a request.'));\n\n try {\n return await axiosClient.request(requestConfig);\n } catch (error) {\n const axiosError = error as AxiosError<T>;\n if (axiosError.response) {\n return axiosError.response;\n }\n throw error;\n }\n};\n\nexport const getResponseHeader = (response: AxiosResponse<any>, responseHeader?: string): string | undefined => {\n if (responseHeader) {\n const content = response.headers[responseHeader];\n if (isString(content)) {\n return content;\n }\n }\n return undefined;\n};\n\nexport const getResponseBody = (response: AxiosResponse<any>): any => {\n if (response.status !== 204) {\n return response.data;\n }\n return undefined;\n};\n\nexport const catchErrorCodes = (options: ApiRequestOptions, result: ApiResult): void => {\n const errors: Record<number, string> = {\n 400: 'Bad Request',\n 401: 'Unauthorized',\n 403: 'Forbidden',\n 404: 'Not Found',\n 500: 'Internal Server Error',\n 502: 'Bad Gateway',\n 503: 'Service Unavailable',\n ...options.errors,\n }\n\n const error = errors[result.status];\n if (error) {\n throw new ApiError(options, result, error);\n }\n\n if (!result.ok) {\n const errorStatus = result.status ?? 'unknown';\n const errorStatusText = result.statusText ?? 'unknown';\n const errorBody = (() => {\n try {\n return JSON.stringify(result.body, null, 2);\n } catch (e) {\n return undefined;\n }\n })();\n\n throw new ApiError(options, result,\n `Generic Error: status: ${errorStatus}; status text: ${errorStatusText}; body: ${errorBody}`\n );\n }\n};\n\n/**\n * Request method\n * @param config The OpenAPI configuration object\n * @param options The request options from the service\n * @param axiosClient The axios client instance to use\n * @returns CancelablePromise<T>\n * @throws ApiError\n */\nexport const request = <T>(config: OpenAPIConfig, options: ApiRequestOptions, axiosClient: AxiosInstance = axios): CancelablePromise<T> => {\n return new CancelablePromise(async (resolve, reject, onCancel) => {\n try {\n const url = getUrl(config, options);\n const formData = getFormData(options);\n const body = getRequestBody(options);\n const headers = await getHeaders(config, options, formData);\n\n if (!onCancel.isCancelled) {\n const response = await sendRequest<T>(config, options, url, body, formData, headers, onCancel, axiosClient);\n const responseBody = getResponseBody(response);\n const responseHeader = getResponseHeader(response, options.responseHeader);\n\n const result: ApiResult = {\n url,\n ok: isSuccess(response.status),\n status: response.status,\n statusText: response.statusText,\n body: responseHeader ?? responseBody,\n };\n\n catchErrorCodes(options, result);\n\n resolve(result.body);\n }\n } catch (error) {\n reject(error);\n }\n });\n};\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { WebApi_ViewModels_Auth_Login } from '../models/WebApi_ViewModels_Auth_Login';\nimport type { WebApi_ViewModels_Login_AuthCodeRequest } from '../models/WebApi_ViewModels_Login_AuthCodeRequest';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class AuthService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public postAuthEmail({\n requestBody,\n }: {\n requestBody?: WebApi_ViewModels_Auth_Login,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/auth/email',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postAuthToken({\n requestBody,\n }: {\n requestBody?: WebApi_ViewModels_Login_AuthCodeRequest,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/auth/token',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getAuthRefreshToken(): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/auth/refresh-token',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto } from '../models/ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto';\nimport type { ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto } from '../models/ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto';\nimport type { ITEPortal_Domain_Dto_Bitrix_Update_BitrixUpdateDto } from '../models/ITEPortal_Domain_Dto_Bitrix_Update_BitrixUpdateDto';\nimport type { ITEPortal_Domain_Dto_Order_ExportOrderDto } from '../models/ITEPortal_Domain_Dto_Order_ExportOrderDto';\nimport type { ITEPortal_Domain_Dto_PriceListDto } from '../models/ITEPortal_Domain_Dto_PriceListDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class BitrixService {\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto Success\n * @throws ApiError\n */\n public getBitrixEventMasters(): CancelablePromise<\n Array<ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto>\n > {\n return this.httpRequest.request({\n method: 'GET',\n url: '/bitrix/event-masters',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto Success\n * @throws ApiError\n */\n public getBitrixEventEditions({\n eventMasterId,\n }: {\n eventMasterId?: number;\n }): CancelablePromise<\n Array<ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto>\n > {\n return this.httpRequest.request({\n method: 'GET',\n url: '/bitrix/event-editions/{eventMasterId}',\n path: {\n eventMasterId: eventMasterId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postBitrixExhibition({\n eventEditionId,\n culture = 'ru',\n requestBody,\n }: {\n eventEditionId: number;\n culture?: string;\n requestBody?: Array<number>;\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/exhibition/{eventEditionId}',\n path: {\n eventEditionId: eventEditionId,\n },\n query: {\n culture: culture,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns binary Success\n * @throws ApiError\n */\n public postBitrixExhibitionExhibitors({\n exhibitionId,\n }: {\n exhibitionId: number;\n }): CancelablePromise<Blob> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/exhibition/{exhibitionId}/exhibitors',\n path: {\n exhibitionId: exhibitionId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_PriceListDto Success\n * @throws ApiError\n */\n public postBitrixPriceList({\n exhibitionId,\n }: {\n exhibitionId: number;\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_PriceListDto>> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/price-list/{exhibitionId}',\n path: {\n exhibitionId: exhibitionId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postBitrixSalesOffices(): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/sales-offices',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postBitrixResponsible(): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/responsible',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postBitrixOrders({\n orderId,\n requestBody,\n }: {\n orderId: number;\n requestBody?: ITEPortal_Domain_Dto_Order_ExportOrderDto;\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/orders/{orderId}',\n path: {\n orderId: orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public postBitrixUpdateFromBitrix({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_Bitrix_Update_BitrixUpdateDto;\n }): CancelablePromise<Record<string, boolean>> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/update-from-bitrix',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postBitrixUpdateContactId({\n userId,\n contactId,\n }: {\n userId: number;\n contactId: number;\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/bitrix/update-contact-id/{userId}/{contactId}',\n path: {\n userId: userId,\n contactId: contactId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Contracts_Enums_BuildingType } from '../models/ITEPortal_Contracts_Enums_BuildingType';\nimport type { ITEPortal_Domain_Dto_AddCategoryDto } from '../models/ITEPortal_Domain_Dto_AddCategoryDto';\nimport type { ITEPortal_Domain_Dto_AdminCategoryResourcesSummary } from '../models/ITEPortal_Domain_Dto_AdminCategoryResourcesSummary';\nimport type { ITEPortal_Domain_Dto_Category_CategoryOrderIndexDto } from '../models/ITEPortal_Domain_Dto_Category_CategoryOrderIndexDto';\nimport type { ITEPortal_Domain_Dto_CategoryDropdownDto } from '../models/ITEPortal_Domain_Dto_CategoryDropdownDto';\nimport type { ITEPortal_Domain_Dto_CategoryDto } from '../models/ITEPortal_Domain_Dto_CategoryDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class CategoryService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_CategoryDropdownDto Success\n * @throws ApiError\n */\n public getCategoriesAdminSummaries(): CancelablePromise<Array<ITEPortal_Domain_Dto_CategoryDropdownDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/categories/admin-summaries',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_CategoryDto Success\n * @throws ApiError\n */\n public getCategories({\n pageNumber,\n pageSize,\n buildingType,\n parentCategoryId,\n search,\n product,\n }: {\n pageNumber?: number,\n pageSize?: number,\n buildingType?: ITEPortal_Contracts_Enums_BuildingType,\n parentCategoryId?: number,\n search?: string,\n product?: string,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_CategoryDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/categories',\n query: {\n 'PageNumber': pageNumber,\n 'PageSize': pageSize,\n 'buildingType': buildingType,\n 'parentCategoryId': parentCategoryId,\n 'search': search,\n 'product': product,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCategories({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_AddCategoryDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/categories',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putCategories({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_AddCategoryDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/categories',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_CategoryDto Success\n * @throws ApiError\n */\n public getCategoriesPriceList({\n exhibitionId,\n currency,\n buildingType,\n }: {\n exhibitionId?: number,\n currency?: string,\n buildingType?: ITEPortal_Contracts_Enums_BuildingType,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_CategoryDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/categories/price-list',\n query: {\n 'ExhibitionId': exhibitionId,\n 'Currency': currency,\n 'BuildingType': buildingType,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminCategoryResourcesSummary Success\n * @throws ApiError\n */\n public getCategoriesResources({\n name,\n }: {\n name: string,\n }): CancelablePromise<Record<string, ITEPortal_Domain_Dto_AdminCategoryResourcesSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/categories/{name}/resources',\n path: {\n 'name': name,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_CategoryDto Success\n * @throws ApiError\n */\n public getCategoriesParentCategories(): CancelablePromise<Array<ITEPortal_Domain_Dto_CategoryDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/categories/parent-categories',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCategoriesImage({\n name,\n formData,\n }: {\n name: string,\n formData?: {\n image?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/categories/{name}/image',\n path: {\n 'name': name,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCategoriesResourcesBatch({\n formData,\n }: {\n formData?: {\n importCategoryResourcesFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/categories/resources/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCategoriesOrderIndex({\n requestBody,\n }: {\n requestBody?: Array<ITEPortal_Domain_Dto_Category_CategoryOrderIndexDto>,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/categories/order-index',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_CurrencyDto } from '../models/ITEPortal_Domain_Dto_CurrencyDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class CurrencyService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_CurrencyDto Success\n * @throws ApiError\n */\n public getCurrency(): CancelablePromise<Array<ITEPortal_Domain_Dto_CurrencyDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/currency',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto } from '../models/ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class DiscountService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto Success\n * @throws ApiError\n */\n public getDiscountsCleaning(): CancelablePromise<Array<ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/discounts/cleaning',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postDiscountsCleaning({\n areaFrom,\n areaTo,\n discountPercentage,\n }: {\n areaFrom?: number,\n areaTo?: number,\n discountPercentage?: number,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/discounts/cleaning',\n query: {\n 'AreaFrom': areaFrom,\n 'AreaTo': areaTo,\n 'DiscountPercentage': discountPercentage,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public putDiscountsCleaning({\n discountId,\n areaFrom,\n areaTo,\n discountPercentage,\n }: {\n discountId: number,\n areaFrom?: number,\n areaTo?: number,\n discountPercentage?: number,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/discounts/cleaning/{discountId}',\n path: {\n 'discountId': discountId,\n },\n query: {\n 'AreaFrom': areaFrom,\n 'AreaTo': areaTo,\n 'DiscountPercentage': discountPercentage,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public deleteDiscountsCleaning({\n discountId,\n }: {\n discountId: number,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/discounts/cleaning/{discountId}',\n path: {\n 'discountId': discountId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_AdminExhibitionSummary } from '../models/ITEPortal_Domain_Dto_AdminExhibitionSummary';\nimport type { ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary } from '../models/ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary';\nimport type { ITEPortal_Domain_Dto_ExhibitionDto } from '../models/ITEPortal_Domain_Dto_ExhibitionDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class ExhibitionService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary Created\n * @throws ApiError\n */\n public getExhibitionsExhibitorStatistics(): CancelablePromise<Array<ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/exhibitor-statistics',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminExhibitionSummary Success\n * @throws ApiError\n */\n public getExhibitionsAdminSummaries({\n search,\n type,\n pageNumber,\n pageSize,\n }: {\n search?: string,\n type?: string,\n pageNumber?: number,\n pageSize?: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_AdminExhibitionSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/admin-summaries',\n query: {\n 'Search': search,\n 'Type': type,\n 'PageNumber': pageNumber,\n 'PageSize': pageSize,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_ExhibitionDto Success\n * @throws ApiError\n */\n public getExhibitions({\n id,\n }: {\n id: number,\n }): CancelablePromise<ITEPortal_Domain_Dto_ExhibitionDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{id}',\n path: {\n 'id': id,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitionsLogo({\n id,\n formData,\n }: {\n id: number,\n formData?: {\n logo?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions/{id}/logo',\n path: {\n 'id': id,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitions({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_ExhibitionDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putExhibitions({\n exhibitionId,\n requestBody,\n }: {\n exhibitionId: number,\n requestBody?: ITEPortal_Domain_Dto_ExhibitionDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitions/{exhibitionId}',\n path: {\n 'exhibitionId': exhibitionId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_AdminExhibitorSummary } from '../models/ITEPortal_Domain_Dto_AdminExhibitorSummary';\nimport type { ITEPortal_Domain_Dto_AssignManagerToExhibitorsDto } from '../models/ITEPortal_Domain_Dto_AssignManagerToExhibitorsDto';\nimport type { ITEPortal_Domain_Dto_CatalogExhibitorSummary } from '../models/ITEPortal_Domain_Dto_CatalogExhibitorSummary';\nimport type { ITEPortal_Domain_Dto_CreateExhibitorDto } from '../models/ITEPortal_Domain_Dto_CreateExhibitorDto';\nimport type { ITEPortal_Domain_Dto_Exhibitor_ExhibitorEmployeeDto } from '../models/ITEPortal_Domain_Dto_Exhibitor_ExhibitorEmployeeDto';\nimport type { ITEPortal_Domain_Dto_ExhibitorDto } from '../models/ITEPortal_Domain_Dto_ExhibitorDto';\nimport type { ITEPortal_Domain_Dto_UpdateExhibitorDto } from '../models/ITEPortal_Domain_Dto_UpdateExhibitorDto';\nimport type { ITEPortal_Domain_Dto_UpdateExhibitorUserDataDto } from '../models/ITEPortal_Domain_Dto_UpdateExhibitorUserDataDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class ExhibitorService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_CatalogExhibitorSummary Success\n * @throws ApiError\n */\n public getAdminSummaries({\n search,\n pageNumber,\n pageSize,\n }: {\n search?: string,\n pageNumber?: number,\n pageSize?: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_CatalogExhibitorSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/admin-summaries',\n query: {\n 'Search': search,\n 'PageNumber': pageNumber,\n 'PageSize': pageSize,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_ExhibitorDto Success\n * @throws ApiError\n */\n public getExhibitors({\n id,\n exhibitionId,\n }: {\n id: number,\n exhibitionId?: number,\n }): CancelablePromise<ITEPortal_Domain_Dto_ExhibitorDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitors/{id}',\n path: {\n 'id': id,\n },\n query: {\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putExhibitors({\n id,\n requestBody,\n }: {\n id: number,\n requestBody?: ITEPortal_Domain_Dto_UpdateExhibitorDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitors/{id}',\n path: {\n 'id': id,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_ExhibitorDto Success\n * @throws ApiError\n */\n public getExhibitors1({\n email,\n }: {\n email?: string,\n }): CancelablePromise<ITEPortal_Domain_Dto_ExhibitorDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitors',\n query: {\n 'email': email,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitors({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_CreateExhibitorDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitors',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminExhibitorSummary Success\n * @throws ApiError\n */\n public getExhibitorsExhibition({\n exhibitionId,\n search,\n hasTechnicalManager = true,\n }: {\n exhibitionId?: number,\n search?: string,\n hasTechnicalManager?: boolean,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_AdminExhibitorSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitors/exhibition',\n query: {\n 'exhibitionId': exhibitionId,\n 'search': search,\n 'hasTechnicalManager': hasTechnicalManager,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitionExhibitorsBatch({\n exhibitionId,\n formData,\n }: {\n exhibitionId: number,\n formData?: {\n importFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibition/{exhibitionId}/exhibitors/batch',\n path: {\n 'exhibitionId': exhibitionId,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putAdminSummaries({\n id,\n requestBody,\n }: {\n id: number,\n requestBody?: ITEPortal_Domain_Dto_UpdateExhibitorUserDataDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/admin-summaries/{id}',\n path: {\n 'id': id,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteExhibitionsExhibitors({\n exhibitionId,\n exhibitorId,\n }: {\n exhibitionId: number,\n exhibitorId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitions/{exhibitionId}/exhibitors/{exhibitorId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'exhibitorId': exhibitorId,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postExhibitorsExhibitionEmployees({\n exhibitorId,\n exhibitionId,\n requestBody,\n }: {\n exhibitorId: number,\n exhibitionId: number,\n requestBody?: ITEPortal_Domain_Dto_Exhibitor_ExhibitorEmployeeDto,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitors/{exhibitorId}/exhibition/{exhibitionId}/employees',\n path: {\n 'exhibitorId': exhibitorId,\n 'exhibitionId': exhibitionId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postExhibitorsEmployees({\n exhibitorId,\n requestBody,\n }: {\n exhibitorId: number,\n requestBody?: ITEPortal_Domain_Dto_Exhibitor_ExhibitorEmployeeDto,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitors/{exhibitorId}/employees',\n path: {\n 'exhibitorId': exhibitorId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public putExhibitorsEmployees({\n employeeId,\n requestBody,\n }: {\n employeeId: number,\n requestBody?: ITEPortal_Domain_Dto_Exhibitor_ExhibitorEmployeeDto,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitors/employees/{employeeId}',\n path: {\n 'employeeId': employeeId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public deleteExhibitorsEmployees({\n employeeId,\n }: {\n employeeId: number,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitors/employees/{employeeId}',\n path: {\n 'employeeId': employeeId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public deleteExhibitorsEmployeesExhibitions({\n employeeId,\n exhibitionId,\n }: {\n employeeId: number,\n exhibitionId: number,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitors/employees/{employeeId}/exhibitions/{exhibitionId}',\n path: {\n 'employeeId': employeeId,\n 'exhibitionId': exhibitionId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminExhibitorSummary Success\n * @throws ApiError\n */\n public getExhibitorsExhibitionsAgents({\n exhibitionId,\n }: {\n exhibitionId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_AdminExhibitorSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitors/exhibitions/{exhibitionId}/agents',\n path: {\n 'exhibitionId': exhibitionId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public putExhibitorsExhibitionsTechnicalManagers({\n exhibitorId,\n exhibitionId,\n id,\n }: {\n exhibitorId: number,\n exhibitionId: number,\n id: number,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitors/{exhibitorId}/exhibitions/{exhibitionId}/technical-managers/{id}',\n path: {\n 'exhibitorId': exhibitorId,\n 'exhibitionId': exhibitionId,\n 'id': id,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putExhibitorsExhibition({\n exhibitionId,\n requestBody,\n }: {\n exhibitionId: number,\n requestBody?: ITEPortal_Domain_Dto_AssignManagerToExhibitorsDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitors/exhibition/{exhibitionId}',\n path: {\n 'exhibitionId': exhibitionId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_ChangePasswordSettingsDto } from '../models/ITEPortal_Domain_Dto_ChangePasswordSettingsDto';\nimport type { ITEPortal_Domain_Dto_GlobalSettingsDto } from '../models/ITEPortal_Domain_Dto_GlobalSettingsDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class GlobalSettingsService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_GlobalSettingsDto Success\n * @throws ApiError\n */\n public getGlobalSettings(): CancelablePromise<ITEPortal_Domain_Dto_GlobalSettingsDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/global-settings',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditFromEmail({\n fromEmail,\n }: {\n fromEmail?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-fromEmail',\n query: {\n 'fromEmail': fromEmail,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditUsername({\n username,\n }: {\n username?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-username',\n query: {\n 'username': username,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditPassword({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_ChangePasswordSettingsDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-password',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditHost({\n host,\n }: {\n host?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-host',\n query: {\n 'host': host,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditPort({\n port,\n }: {\n port?: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-port',\n query: {\n 'port': port,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postGlobalSettingsEditLogo({\n formData,\n }: {\n formData?: {\n logo?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-logo',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public postGlobalSettingsEditExhibitorManualFile({\n culture,\n formData,\n }: {\n culture: string,\n formData?: {\n manual?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-exhibitor-manual-file/{culture}',\n path: {\n 'culture': culture,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public postGlobalSettingsEditExhibitorManualUrl({\n culture,\n url,\n }: {\n culture: string,\n url?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/global-settings/edit-exhibitor-manual-url/{culture}',\n path: {\n 'culture': culture,\n },\n query: {\n 'url': url,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns string Created\n * @throws ApiError\n */\n public getGlobalSettingsExhibitorManual(): CancelablePromise<string> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/global-settings/exhibitor-manual',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_BankAccount_BankAccountDto } from '../models/ITEPortal_Domain_Dto_BankAccount_BankAccountDto';\nimport type { ITEPortal_Domain_Dto_BankAccount_GetBankAccountDto } from '../models/ITEPortal_Domain_Dto_BankAccount_GetBankAccountDto';\nimport type { ITEPortal_Domain_Dto_IteCompany_GetIteCompanyDto } from '../models/ITEPortal_Domain_Dto_IteCompany_GetIteCompanyDto';\nimport type { ITEPortal_Domain_Dto_IteCompany_IteCompanyDto } from '../models/ITEPortal_Domain_Dto_IteCompany_IteCompanyDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class IteCompanyService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_IteCompany_GetIteCompanyDto Success\n * @throws ApiError\n */\n public getCompanies(): CancelablePromise<Array<ITEPortal_Domain_Dto_IteCompany_GetIteCompanyDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/companies',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public postCompany({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_IteCompany_IteCompanyDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/company',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public putCompany({\n companyId,\n requestBody,\n }: {\n companyId: number,\n requestBody?: ITEPortal_Domain_Dto_IteCompany_IteCompanyDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/company/{companyId}',\n path: {\n 'companyId': companyId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCompaniesBatch({\n formData,\n }: {\n formData?: {\n companiesFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/companies/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_BankAccount_GetBankAccountDto Success\n * @throws ApiError\n */\n public getCompaniesBankAccounts({\n companyId,\n }: {\n companyId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_BankAccount_GetBankAccountDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/companies/{companyId}/bank-accounts',\n path: {\n 'companyId': companyId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCompaniesBankAccountsBatch({\n formData,\n }: {\n formData?: {\n bankAccountsFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/companies/bank-accounts/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postCompaniesBankAccount({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_BankAccount_BankAccountDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/companies/bank-account',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putCompaniesBankAccount({\n bankAccountId,\n requestBody,\n }: {\n bankAccountId: number,\n requestBody?: ITEPortal_Domain_Dto_BankAccount_BankAccountDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/companies/bank-account/{bankAccountId}',\n path: {\n 'bankAccountId': bankAccountId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Contracts_Enums_OrderStatus } from '../models/ITEPortal_Contracts_Enums_OrderStatus';\nimport type { ITEPortal_Domain_Dto_AdminOrderSummary } from '../models/ITEPortal_Domain_Dto_AdminOrderSummary';\nimport type { ITEPortal_Domain_Dto_Order_CreateOrderDto } from '../models/ITEPortal_Domain_Dto_Order_CreateOrderDto';\nimport type { ITEPortal_Domain_Dto_Order_CreateOrderFromAdminDto } from '../models/ITEPortal_Domain_Dto_Order_CreateOrderFromAdminDto';\nimport type { ITEPortal_Domain_Dto_Order_ExtraChargeRemovingDto } from '../models/ITEPortal_Domain_Dto_Order_ExtraChargeRemovingDto';\nimport type { ITEPortal_Domain_Dto_Order_PersonalDiscountDto } from '../models/ITEPortal_Domain_Dto_Order_PersonalDiscountDto';\nimport type { ITEPortal_Domain_Dto_Order_PersonalExtraChargeDto } from '../models/ITEPortal_Domain_Dto_Order_PersonalExtraChargeDto';\nimport type { ITEPortal_Domain_Dto_Order_UpdateOrderDto } from '../models/ITEPortal_Domain_Dto_Order_UpdateOrderDto';\nimport type { ITEPortal_Domain_Dto_OrderDto } from '../models/ITEPortal_Domain_Dto_OrderDto';\nimport type { ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto } from '../models/ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class OrderService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminOrderSummary Success\n * @throws ApiError\n */\n public getOrders({\n exhibitionId,\n orderStatus,\n exhibitorId,\n search,\n }: {\n exhibitionId?: number,\n orderStatus?: ITEPortal_Contracts_Enums_OrderStatus,\n exhibitorId?: number,\n search?: string,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_AdminOrderSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/orders',\n query: {\n 'exhibitionId': exhibitionId,\n 'orderStatus': orderStatus,\n 'exhibitorId': exhibitorId,\n 'search': search,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postOrders({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_Order_CreateOrderDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/orders',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putOrders({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_Order_UpdateOrderDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/orders',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postOrdersExhibitors({\n exhibitorId,\n requestBody,\n }: {\n exhibitorId: number,\n requestBody?: ITEPortal_Domain_Dto_Order_CreateOrderFromAdminDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/orders/exhibitors/{exhibitorId}',\n path: {\n 'exhibitorId': exhibitorId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_OrderDto Created\n * @throws ApiError\n */\n public getOrders1({\n orderId,\n }: {\n orderId: number,\n }): CancelablePromise<ITEPortal_Domain_Dto_OrderDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/orders/{orderId}',\n path: {\n 'orderId': orderId,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteOrders({\n orderId,\n }: {\n orderId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/orders/{orderId}',\n path: {\n 'orderId': orderId,\n },\n });\n }\n\n /**\n * @returns binary Success\n * @throws ApiError\n */\n public getOrdersPdf({\n orderId,\n }: {\n orderId: number,\n }): CancelablePromise<Blob> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/orders/{orderId}/pdf',\n path: {\n 'orderId': orderId,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitionsOrders({\n exhibitionId,\n orderId,\n requestBody,\n }: {\n exhibitionId: number,\n orderId: number,\n requestBody?: ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions/{exhibitionId}/orders/{orderId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putExhibitionsOrders({\n exhibitionId,\n orderId,\n orderItemId,\n requestBody,\n }: {\n exhibitionId: number,\n orderId: number,\n orderItemId?: number,\n requestBody?: ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitions/{exhibitionId}/orders/{orderId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'orderId': orderId,\n },\n query: {\n 'orderItemId': orderItemId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteExhibitionsOrders({\n exhibitionId,\n orderId,\n orderItemId,\n }: {\n exhibitionId: number,\n orderId: number,\n orderItemId?: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitions/{exhibitionId}/orders/{orderId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'orderId': orderId,\n },\n query: {\n 'orderItemId': orderItemId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteOrdersDraft({\n orderId,\n }: {\n orderId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/orders/{orderId}/draft',\n path: {\n 'orderId': orderId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putOrdersStatus({\n orderId,\n orderStatus,\n }: {\n orderId: number,\n orderStatus?: ITEPortal_Contracts_Enums_OrderStatus,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/orders/{orderId}/status',\n path: {\n 'orderId': orderId,\n },\n query: {\n 'orderStatus': orderStatus,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public postOrdersSendOrderChangedConfirmation({\n orderId,\n requestBody,\n }: {\n orderId: number,\n requestBody?: string,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/orders/{orderId}/send-order-changed-confirmation',\n path: {\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postOrdersPersonalDiscount({\n orderId,\n requestBody,\n }: {\n orderId: number,\n requestBody?: ITEPortal_Domain_Dto_Order_PersonalDiscountDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/orders/{orderId}/personal-discount',\n path: {\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putOrdersPersonalDiscount({\n orderId,\n requestBody,\n }: {\n orderId: number,\n requestBody?: ITEPortal_Domain_Dto_Order_PersonalDiscountDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/orders/{orderId}/personal-discount',\n path: {\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteOrdersPersonalDiscount({\n orderId,\n }: {\n orderId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/orders/{orderId}/personal-discount',\n path: {\n 'orderId': orderId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putOrdersRemoveExtraCharge({\n orderId,\n requestBody,\n }: {\n orderId: number,\n requestBody?: ITEPortal_Domain_Dto_Order_ExtraChargeRemovingDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/orders/{orderId}/remove-extra-charge',\n path: {\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putOrdersPersonalExtraCharge({\n orderId,\n requestBody,\n }: {\n orderId: number,\n requestBody?: ITEPortal_Domain_Dto_Order_PersonalExtraChargeDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/orders/{orderId}/personal-extra-charge',\n path: {\n 'orderId': orderId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Contracts_Enums_BuildingType } from '../models/ITEPortal_Contracts_Enums_BuildingType';\nimport type { ITEPortal_Domain_Dto_AddPriceListItemDto } from '../models/ITEPortal_Domain_Dto_AddPriceListItemDto';\nimport type { ITEPortal_Domain_Dto_AdminPriceListItem } from '../models/ITEPortal_Domain_Dto_AdminPriceListItem';\nimport type { ITEPortal_Domain_Dto_PriceListItemSummary } from '../models/ITEPortal_Domain_Dto_PriceListItemSummary';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class PriceListItemService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_PriceListItemSummary Success\n * @throws ApiError\n */\n public getPricelistItems({\n exhibitionId,\n currency,\n categoryIds,\n productId,\n buildingType,\n }: {\n exhibitionId?: number,\n currency?: string,\n categoryIds?: string,\n productId?: number,\n buildingType?: ITEPortal_Contracts_Enums_BuildingType,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_PriceListItemSummary>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/pricelist-items',\n query: {\n 'ExhibitionId': exhibitionId,\n 'Currency': currency,\n 'CategoryIds': categoryIds,\n 'ProductId': productId,\n 'BuildingType': buildingType,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_AdminPriceListItem Success\n * @throws ApiError\n */\n public getExhibitionsPriceListsItems({\n exhibitionId,\n priceListId,\n }: {\n exhibitionId: number,\n priceListId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_AdminPriceListItem>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}/items',\n path: {\n 'exhibitionId': exhibitionId,\n 'priceListId': priceListId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Created\n * @throws ApiError\n */\n public postExhibitionsPriceListsItems({\n exhibitionId,\n priceListId,\n requestBody,\n }: {\n exhibitionId: number,\n priceListId: number,\n requestBody?: ITEPortal_Domain_Dto_AddPriceListItemDto,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}/items',\n path: {\n 'exhibitionId': exhibitionId,\n 'priceListId': priceListId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitionsPriceListsItemsBatch({\n exhibitionId,\n priceListId,\n formData,\n }: {\n exhibitionId: number,\n priceListId: number,\n formData?: {\n importPriceListItems?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}/items/batch',\n path: {\n 'exhibitionId': exhibitionId,\n 'priceListId': priceListId,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postPricelistItemsBatch({\n formData,\n }: {\n formData?: {\n importPriceListsFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/pricelist-items/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public putExhibitionsPriceListsItems({\n exhibitionId,\n priceListId,\n priceListItemId,\n requestBody,\n }: {\n exhibitionId: number,\n priceListId: number,\n priceListItemId: number,\n requestBody?: ITEPortal_Domain_Dto_AddPriceListItemDto,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}/items/{priceListItemId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'priceListId': priceListId,\n 'priceListItemId': priceListItemId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public deleteExhibitionsPriceListsItems({\n exhibitionId,\n priceListId,\n priceListItemId,\n }: {\n exhibitionId: number,\n priceListId: number,\n priceListItemId: number,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}/items/{priceListItemId}',\n path: {\n 'exhibitionId': exhibitionId,\n 'priceListId': priceListId,\n 'priceListItemId': priceListItemId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_PriceListDto } from '../models/ITEPortal_Domain_Dto_PriceListDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class PriceListService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_PriceListDto Success\n * @throws ApiError\n */\n public getExhibitionsPriceLists({\n exhibitionId,\n }: {\n exhibitionId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_PriceListDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{exhibitionId}/price-lists',\n path: {\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteExhibitionsPriceLists({\n priceListId,\n exhibitionId,\n }: {\n priceListId: number,\n exhibitionId: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/exhibitions/{exhibitionId}/price-lists/{priceListId}',\n path: {\n 'priceListId': priceListId,\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Contracts_Enums_BuildingType } from '../models/ITEPortal_Contracts_Enums_BuildingType';\nimport type { ITEPortal_Domain_Dto_AddProductDto } from '../models/ITEPortal_Domain_Dto_AddProductDto';\nimport type { ITEPortal_Domain_Dto_Product_ProductOrderIndexDto } from '../models/ITEPortal_Domain_Dto_Product_ProductOrderIndexDto';\nimport type { ITEPortal_Domain_Dto_ProductDto } from '../models/ITEPortal_Domain_Dto_ProductDto';\nimport type { ITEPortal_Domain_Dto_ShortenedProductDto } from '../models/ITEPortal_Domain_Dto_ShortenedProductDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class ProductService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_ProductDto Success\n * @throws ApiError\n */\n public getProducts({\n pageNumber,\n pageSize,\n categoryId,\n buildingType,\n search,\n }: {\n pageNumber?: number,\n pageSize?: number,\n categoryId?: number,\n buildingType?: ITEPortal_Contracts_Enums_BuildingType,\n search?: string,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_ProductDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/products',\n query: {\n 'PageNumber': pageNumber,\n 'PageSize': pageSize,\n 'categoryId': categoryId,\n 'buildingType': buildingType,\n 'search': search,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postProducts({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_AddProductDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/products',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putProducts({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_AddProductDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/products',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteProducts({\n name,\n }: {\n name?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/products',\n query: {\n 'name': name,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getProductsResources({\n name,\n }: {\n name: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/products/{name}/resources',\n path: {\n 'name': name,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_ShortenedProductDto Success\n * @throws ApiError\n */\n public getProductsShort({\n exceptPriceListId,\n }: {\n exceptPriceListId?: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_ShortenedProductDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/products/short',\n query: {\n 'exceptPriceListId': exceptPriceListId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postProductsBatch({\n formData,\n }: {\n formData?: {\n importProductsFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/products/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postProductsResourcesBatch({\n formData,\n }: {\n formData?: {\n importProductsResourcesFile?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/products/resources/batch',\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postProductsImages({\n name,\n formData,\n }: {\n name: string,\n formData?: {\n images?: Array<Blob>;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/products/{name}/images',\n path: {\n 'name': name,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postProductsOrderIndex({\n requestBody,\n }: {\n requestBody?: Array<ITEPortal_Domain_Dto_Product_ProductOrderIndexDto>,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/products/order-index',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_SellingOfficeDto } from '../models/ITEPortal_Domain_Dto_SellingOfficeDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class SellingOfficeService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_SellingOfficeDto Success\n * @throws ApiError\n */\n public getSellingOffices(): CancelablePromise<Array<ITEPortal_Domain_Dto_SellingOfficeDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/selling-offices',\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto } from '../models/ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto';\nimport type { ITEPortal_Domain_Dto_ExhibitorStandDto } from '../models/ITEPortal_Domain_Dto_ExhibitorStandDto';\nimport type { ITEPortal_Domain_Dto_Stand_GetStandFileDto } from '../models/ITEPortal_Domain_Dto_Stand_GetStandFileDto';\nimport type { ITEPortal_Domain_Dto_Stand_GetStandProductDto } from '../models/ITEPortal_Domain_Dto_Stand_GetStandProductDto';\nimport type { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '../models/ITEPortal_Domain_Dto_Stand_GetStandProjectDto';\nimport type { ITEPortal_Domain_Dto_Stand_StandProjectChangesDto } from '../models/ITEPortal_Domain_Dto_Stand_StandProjectChangesDto';\nimport type { ITEPortal_Domain_Dto_Stand_StandProjectDto } from '../models/ITEPortal_Domain_Dto_Stand_StandProjectDto';\nimport type { ITEPortal_Domain_Dto_Stand_StandStatusUpdateDto } from '../models/ITEPortal_Domain_Dto_Stand_StandStatusUpdateDto';\nimport type { ITEPortal_Domain_Dto_StandDto } from '../models/ITEPortal_Domain_Dto_StandDto';\nimport type { ITEPortal_Domain_Dto_StandSummariesDto } from '../models/ITEPortal_Domain_Dto_StandSummariesDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class StandService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns ITEPortal_Domain_Dto_StandSummariesDto Success\n * @throws ApiError\n */\n public getExhibitionsExhibitorStands({\n exhibitionId,\n }: {\n exhibitionId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_StandSummariesDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{exhibitionId}/exhibitor-stands',\n path: {\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_StandSummariesDto Success\n * @throws ApiError\n */\n public getExhibitorStands({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<ITEPortal_Domain_Dto_StandSummariesDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitor-stands/{standId}',\n path: {\n 'standId': standId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_StandDto Success\n * @throws ApiError\n */\n public getExhibitionsStands({\n id,\n exhibitionId,\n }: {\n id: number,\n exhibitionId: string,\n }): CancelablePromise<ITEPortal_Domain_Dto_StandDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{exhibitionId}/stands/{id}',\n path: {\n 'id': id,\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putExhibitionsStands({\n id,\n exhibitionId,\n requestBody,\n }: {\n id: number,\n exhibitionId: string,\n requestBody?: ITEPortal_Domain_Dto_StandDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/exhibitions/{exhibitionId}/stands/{id}',\n path: {\n 'id': id,\n 'exhibitionId': exhibitionId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_ExhibitorStandDto Success\n * @throws ApiError\n */\n public getExhibitionsExhibitorsStands({\n exhibitionId,\n exhibitorId,\n }: {\n exhibitionId: number,\n exhibitorId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_ExhibitorStandDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/exhibitions/{exhibitionId}/exhibitors/{exhibitorId}/stands',\n path: {\n 'exhibitionId': exhibitionId,\n 'exhibitorId': exhibitorId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public postExhibitionsStands({\n exhibitionId,\n requestBody,\n }: {\n exhibitionId: number,\n requestBody?: ITEPortal_Domain_Dto_StandDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/exhibitions/{exhibitionId}/stands',\n path: {\n 'exhibitionId': exhibitionId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_Stand_GetStandProjectDto Success\n * @throws ApiError\n */\n public getStandsProject({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<ITEPortal_Domain_Dto_Stand_GetStandProjectDto> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/stands/{standId}/project',\n path: {\n 'standId': standId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postStandsProject({\n standId,\n requestBody,\n }: {\n standId: number,\n requestBody?: ITEPortal_Domain_Dto_Stand_StandProjectDto,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/stands/{standId}/project',\n path: {\n 'standId': standId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public postStandsUpdateProjectStatus({\n standId,\n projectId,\n requestBody,\n }: {\n standId: number,\n projectId: number,\n requestBody?: ITEPortal_Domain_Dto_Stand_StandStatusUpdateDto,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/stands/{standId}/update-project-status/{projectId}',\n path: {\n 'standId': standId,\n 'projectId': projectId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns boolean Success\n * @throws ApiError\n */\n public putStandsProject({\n standId,\n projectId,\n requestBody,\n }: {\n standId: number,\n projectId: number,\n requestBody?: ITEPortal_Domain_Dto_Stand_StandProjectDto,\n }): CancelablePromise<boolean> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/stands/{standId}/project/{projectId}',\n path: {\n 'standId': standId,\n 'projectId': projectId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putStandsProjectImage({\n standId,\n projectId,\n formData,\n }: {\n standId: number,\n projectId: number,\n formData?: {\n image?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/stands/{standId}/project/{projectId}/image',\n path: {\n 'standId': standId,\n 'projectId': projectId,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns number Success\n * @throws ApiError\n */\n public postStandsProjectChanges({\n standId,\n projectId,\n requestBody,\n }: {\n standId: number,\n projectId: number,\n requestBody?: ITEPortal_Domain_Dto_Stand_StandProjectChangesDto,\n }): CancelablePromise<number> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/stands/{standId}/project/{projectId}/changes',\n path: {\n 'standId': standId,\n 'projectId': projectId,\n },\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putStandsProjectChanges({\n standId,\n projectId,\n changesId,\n formData,\n }: {\n standId: number,\n projectId: number,\n changesId: number,\n formData?: {\n file?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/stands/{standId}/project/{projectId}/changes/{changesId}',\n path: {\n 'standId': standId,\n 'projectId': projectId,\n 'changesId': changesId,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_Stand_GetStandFileDto Success\n * @throws ApiError\n */\n public getStandsFiles({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_Stand_GetStandFileDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/stands/{standId}/files',\n path: {\n 'standId': standId,\n },\n errors: {\n 400: `Bad Request`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public putStandsFiles({\n standId,\n formData,\n }: {\n standId: number,\n formData?: {\n file?: Blob;\n },\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/stands/{standId}/files',\n path: {\n 'standId': standId,\n },\n formData: formData,\n mediaType: 'multipart/form-data',\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteStandsFiles({\n standId,\n fileId,\n }: {\n standId: number,\n fileId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/stands/{standId}/files/{fileId}',\n path: {\n 'standId': standId,\n 'fileId': fileId,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getStandsZip({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/stands/{standId}/zip',\n path: {\n 'standId': standId,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto Success\n * @throws ApiError\n */\n public getStandsSharers({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/stands/{standId}/sharers',\n path: {\n 'standId': standId,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_Stand_GetStandProductDto Success\n * @throws ApiError\n */\n public getStandsProducts({\n standId,\n }: {\n standId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_Stand_GetStandProductDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/stands/{standId}/products',\n path: {\n 'standId': standId,\n },\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n}\n","/* generated using openapi-typescript-codegen -- do no edit */\n/* istanbul ignore file */\n/* tslint:disable */\n/* eslint-disable */\nimport type { ITEPortal_Domain_Dto_TechnicalManagerDto } from '../models/ITEPortal_Domain_Dto_TechnicalManagerDto';\nimport type { ITEPortal_Domain_Dto_UserDto } from '../models/ITEPortal_Domain_Dto_UserDto';\n\nimport type { CancelablePromise } from '../core/CancelablePromise';\nimport type { BaseHttpRequest } from '../core/BaseHttpRequest';\n\nexport class UserService {\n\n constructor(public readonly httpRequest: BaseHttpRequest) {}\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getUsers({\n search,\n roles,\n }: {\n search?: string,\n roles?: Array<number>,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/users',\n query: {\n 'search': search,\n 'roles': roles,\n },\n errors: {\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getUsers1({\n userId,\n }: {\n userId: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/users/{userId}',\n path: {\n 'userId': userId,\n },\n errors: {\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public getUsersEmail({\n email,\n }: {\n email?: string,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/users/email',\n query: {\n 'email': email,\n },\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public postUsersAdd({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_UserDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'POST',\n url: '/users/add',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Success\n * @throws ApiError\n */\n public deleteUsersDelete({\n id,\n }: {\n id: number,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'DELETE',\n url: '/users/delete/{id}',\n path: {\n 'id': id,\n },\n errors: {\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns any Created\n * @throws ApiError\n */\n public putUsersUpdate({\n requestBody,\n }: {\n requestBody?: ITEPortal_Domain_Dto_UserDto,\n }): CancelablePromise<any> {\n return this.httpRequest.request({\n method: 'PUT',\n url: '/users/update',\n body: requestBody,\n mediaType: 'application/json-patch+json',\n errors: {\n 400: `Bad Request`,\n 500: `Server Error`,\n },\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_TechnicalManagerDto Success\n * @throws ApiError\n */\n public getUsersTechnicalManagers(): CancelablePromise<Array<ITEPortal_Domain_Dto_TechnicalManagerDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/users/technical-managers',\n });\n }\n\n /**\n * @returns ITEPortal_Domain_Dto_TechnicalManagerDto Success\n * @throws ApiError\n */\n public getUsersTechnicalManagers1({\n exhibitionId,\n }: {\n exhibitionId: number,\n }): CancelablePromise<Array<ITEPortal_Domain_Dto_TechnicalManagerDto>> {\n return this.httpRequest.request({\n method: 'GET',\n url: '/users/technical-managers/{exhibitionId}',\n path: {\n 'exhibitionId': exhibitionId,\n },\n });\n }\n\n}\n","import { OpenAPI } from './core/OpenAPI';\nimport { removeTrailingSlash } from '../utils/url';\n\nOpenAPI.BASE = removeTrailingSlash(process.env.PUBLIC_API_URL as string);\n\nOpenAPI.WITH_CREDENTIALS = true;\n\nOpenAPI.HEADERS = {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${localStorage.getItem('token')}`,\n};\n","import { axios } from './axios';\nimport baseAxios from 'axios';\nimport { removeTrailingSlash } from '../utils/url';\nimport { AxiosHttpRequest } from './core/AxiosHttpRequest';\nimport type { ApiRequestOptions } from './core/ApiRequestOptions';\nimport type { CancelablePromise } from './core/CancelablePromise';\nimport { request as __request } from './core/request';\nimport { OpenAPIConfig } from '@/api/core/OpenAPI';\n\nclass TypedAxiosHttpRequest extends AxiosHttpRequest {\n axiosInstance = baseAxios.create();\n\n constructor(config: OpenAPIConfig) {\n super(config);\n this.axiosInstance.interceptors.response.use(\n (response) => {\n return response;\n },\n (error) => {\n if (error.response?.status === 401) {\n localStorage.clear();\n window.location.href = '/login';\n }\n\n throw error;\n }\n );\n }\n\n public override request<T>(options: ApiRequestOptions): CancelablePromise<T> {\n return __request(\n this.config,\n {\n ...options,\n query: {\n ...options.query,\n culture: localStorage.getItem('lang'),\n },\n headers: {\n ...options.headers,\n Authorization: `Bearer ${localStorage.getItem('token')}`,\n },\n },\n this.axiosInstance\n );\n }\n}\n\nexport const typedAxios = new axios(\n {\n BASE: removeTrailingSlash(process.env.PUBLIC_API_URL as string),\n WITH_CREDENTIALS: true,\n HEADERS: {\n Authorization: `Bearer ${localStorage.getItem('token')}`,\n },\n },\n TypedAxiosHttpRequest\n);\n","import { SearchIcon } from '@chakra-ui/icons';\nimport {\n InputGroup,\n InputLeftElement,\n Input,\n Box,\n Flex,\n} from '@chakra-ui/react';\nimport { useMatches, useNavigate, useSearch } from '@tanstack/react-router';\nimport { SearchBoxOptionsType } from './types';\nimport { useTranslation } from 'react-i18next';\nimport { useDebouncedCallback } from 'use-debounce';\n\nexport const AdminSearch = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const currentSearch = useSearch({ strict: false });\n const context = (useMatches().at(-1)?.context || {\n searchOptions: null,\n }) as {\n searchOptions: SearchBoxOptionsType[];\n };\n\n const doSearch = (parameterName: string, value: string | undefined) => {\n const params = {\n ...currentSearch,\n [parameterName]: value || undefined,\n };\n\n if (params.p) {\n params.p = undefined;\n }\n\n navigate({\n search: params,\n });\n };\n\n const doDebouncedSearch = useDebouncedCallback(\n (parameterName: string, value: string) => {\n doSearch(parameterName, value);\n },\n 1000\n );\n\n const clearSearch = (parameterName: string) => {\n doSearch(parameterName, undefined);\n };\n\n if (!context.searchOptions || !Array.isArray(context.searchOptions)) {\n return null;\n }\n\n return (\n <Flex flexDirection=\"row\">\n {context.searchOptions.map((searchDescriptor, index) => {\n const { placeholder = t('search'), queryParameterName = 'search' } =\n searchDescriptor;\n\n return (\n <Box mr=\"32px\" key={index}>\n <InputGroup maxWidth=\"300px\">\n <InputLeftElement pointerEvents=\"none\">\n <SearchIcon color=\"gray.300\" />\n </InputLeftElement>\n <Input\n type=\"search\"\n defaultValue={currentSearch?.[queryParameterName]}\n placeholder={placeholder}\n onKeyUp={(e) => {\n const target = e.target as HTMLInputElement;\n\n if (!target.value) {\n clearSearch(queryParameterName);\n\n return;\n }\n\n if (e.key === 'Enter') {\n doSearch(queryParameterName, target.value);\n\n return;\n }\n\n doDebouncedSearch(queryParameterName, target.value);\n }}\n onChangeCapture={(e) => {\n const target = e.target as HTMLInputElement;\n\n if (!target.value) {\n e.stopPropagation();\n e.preventDefault();\n\n clearSearch(queryParameterName);\n\n doDebouncedSearch.cancel();\n\n return;\n }\n }}\n />\n </InputGroup>\n </Box>\n );\n })}\n </Flex>\n );\n};\n","import { HStack, Input, InputProps, Text, useCounter } from '@chakra-ui/react';\nimport { AddIcon, MinusIcon } from '@chakra-ui/icons';\nimport { AmountWrapper, CounterButtonDec, CounterButtonInc } from './styled';\nimport { MathUtils } from '../../utils/math-utils';\nimport { ButtonHTMLAttributes, DetailedHTMLProps } from 'react';\nconst minValue = 0;\nconst maxValue = 9999;\n\ninterface AmountCounterProps {\n amountCounterValue: string | number | undefined;\n onChange?: (counterValue: number) => void;\n suffix?: string;\n disabled?: boolean;\n precision?: number;\n step?: number;\n}\n\nexport const AmountCounter = ({\n amountCounterValue,\n onChange,\n disabled = false,\n suffix,\n step = 1,\n precision = 0,\n}: AmountCounterProps) => {\n useCounter({});\n const {\n increment,\n decrement,\n update,\n value: controlledValue,\n } = useCounter({\n step,\n defaultValue: amountCounterValue,\n min: minValue,\n max: maxValue,\n precision,\n keepWithinRange: true,\n onChange(_: string, valueAsNumber: number) {\n if (valueAsNumber > 0) {\n if (step === 0.25 && valueAsNumber % step !== 0) {\n onChange?.(MathUtils.roundToNearestQuarter(valueAsNumber));\n } else {\n onChange?.(valueAsNumber);\n }\n }\n },\n });\n\n const inc = {\n onClick: () => {\n increment(step);\n },\n } satisfies DetailedHTMLProps<\n ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n const dec = {\n onClick: () => {\n decrement(step);\n },\n } satisfies DetailedHTMLProps<\n ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n const input = {\n onChange: (e) => {\n if (step < 1) {\n update((e.target.value || '').replace(/[^0-9.,]/g, ''));\n } else {\n if (\n typeof e.target.value === 'string' &&\n e.target.value.match(/\\.|,/)\n ) {\n return;\n }\n\n if (\n typeof e.target.value === 'string' &&\n e.target.value.startsWith('0')\n ) {\n update((e.target.value || '').slice(1));\n\n return;\n }\n\n update((e.target.value || '').replace(/[^0-9]/g, ''));\n }\n },\n onBlur: (event) => {\n if (step !== 0.25) {\n return;\n }\n\n const value = event.target.value;\n\n const valueAsNumber = parseFloat(value);\n\n if (\n typeof valueAsNumber === 'number' &&\n !Number.isNaN(valueAsNumber) &&\n valueAsNumber % 0.25 !== 0\n ) {\n update(MathUtils.roundToNearestQuarter(valueAsNumber));\n }\n },\n value: controlledValue,\n } satisfies InputProps;\n\n return (\n <AmountWrapper lang=\"ar-EG\" suffix={suffix} disabled={disabled}>\n <HStack maxW=\"320px\">\n <CounterButtonDec\n {...dec}\n type=\"button\"\n suffix={suffix}\n disabled={disabled}\n aria-label=\"decrement\"\n >\n <MinusIcon boxSize={3} />\n </CounterButtonDec>\n <Input\n {...input}\n textAlign=\"center\"\n min={minValue}\n // maxLength={4}\n height=\"28px\"\n maxWidth={!suffix ? '35px' : '60px'}\n variant=\"unstyled\"\n disabled={disabled}\n role=\"textbox\"\n />\n {suffix && <Text>{suffix}</Text>}\n <CounterButtonInc\n {...inc}\n type=\"button\"\n suffix={suffix}\n disabled={disabled}\n aria-label=\"increment\"\n >\n <AddIcon boxSize={3} />\n </CounterButtonInc>\n </HStack>\n </AmountWrapper>\n );\n};\n","import styled, { css } from 'styled-components';\nimport { ifProp } from 'styled-tools';\n\nconst Button = styled.button`\n opacity: 0.5;\n\n transition: all ease-in-out 0.15s;\n\n &:hover {\n opacity: 1;\n }\n`;\n\nexport const CounterButtonDec = styled(Button)<{\n suffix: string | undefined;\n}>`\n //padding-left: ${({ suffix }) => (suffix ? '0' : '20px')};\n\n ${ifProp(\n 'disabled',\n css`\n cursor: not-allowed;\n `\n )}\n`;\n\nexport const AmountWrapper = styled.div<{\n suffix: string | undefined;\n disabled: boolean | undefined;\n}>`\n width: ${({ suffix }) => (suffix ? '170px' : '120px')};\n text-align: center;\n padding: 0 20px;\n ${ifProp(\n 'suffix',\n css`\n padding: 0 10px;\n `\n )}\n border: 1px solid silver;\n border-radius: 5px;\n display: flex;\n flex-direction: row;\n justify-content: center;\n\n ${ifProp(\n 'disabled',\n css`\n cursor: not-allowed;\n color: #999999;\n background-color: #f7f7f7;\n `\n )}\n\n :focus {\n text-align: center;\n border: none;\n outline: none;\n }\n`;\n\nexport const CounterButtonInc = styled(Button)<{\n suffix: string | undefined;\n}>`\n //padding-right: ${({ suffix }) => (suffix ? '0' : '20px')};\n\n ${ifProp(\n 'disabled',\n css`\n cursor: not-allowed;\n `\n )}\n`;\n","import { Button, ButtonProps } from '@chakra-ui/react';\nimport { useState } from 'react';\n\nexport const AsyncButton = (props: ButtonProps) => {\n const { onClick, ...rest } = props;\n const [isLoading, toggleLoading] = useState(false);\n\n const handleAsyncClick = async (e: any) => {\n try {\n const promise = onClick?.(e);\n\n if (\n promise &&\n // @ts-expect-error expecting that void could not be promise\n promise instanceof Promise\n ) {\n toggleLoading(true);\n await promise;\n }\n } finally {\n toggleLoading(false);\n }\n };\n\n return (\n <Button\n {...rest}\n onClick={handleAsyncClick}\n isDisabled={isLoading}\n isLoading={isLoading}\n />\n );\n};\n","import styled from 'styled-components';\nimport { Link } from '@tanstack/react-router';\nimport { DEFAULT_LOGO_PATH } from '@/utils/constants';\n\nconst Wrapper = styled.div`\n width: 100%;\n max-width: var(--chakra-sizes-header-brand-width);\n`;\n\nconst StyledLink = styled(Link)`\n display: block;\n`;\n\nconst Image = styled.img`\n width: 100%;\n height: auto;\n max-height: 70px;\n min-height: 60px;\n max-width: 60px;\n min-width: 60px;\n margin-top: -10px;\n`;\n\nconst BrandBox = () => {\n return (\n <Wrapper>\n <StyledLink to=\"/\">\n <Image src={DEFAULT_LOGO_PATH} alt=\"Logo\" />\n </StyledLink>\n </Wrapper>\n );\n};\n\nexport default BrandBox;\n","import { Breadcrumb, BreadcrumbItem, BreadcrumbLink } from '@chakra-ui/react';\nimport styled, { css } from 'styled-components';\nimport { BreadcrumbOptions } from '@chakra-ui/breadcrumb/dist/breadcrumb-types';\nimport { ChevronRightIcon } from '@chakra-ui/icons';\nimport { Link } from '@tanstack/react-router';\nimport { ifProp } from 'styled-tools';\nimport { IBreadcrumbItem } from '@/model/common';\n\ninterface BreadcrumbsProps {\n id?: string;\n options?: BreadcrumbOptions;\n items?: IBreadcrumbItem[];\n}\n\nconst BreadcrumbsWrapper = styled.div`\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n`;\n\nconst BreadcrumbsLinkContainer = styled(BreadcrumbLink)`\n ${ifProp(\n 'disabled',\n css`\n cursor: default;\n `\n )}\n`;\n\nconst Breadcrumbs: React.FC<BreadcrumbsProps> = ({\n items,\n id,\n options = {\n spacing: '8px',\n separator: <ChevronRightIcon />,\n },\n}) => {\n return (\n <BreadcrumbsWrapper>\n <Breadcrumb id={id} {...options}>\n {items &&\n items.map((breadcrumbItem, index) => {\n const { label, link } = breadcrumbItem;\n const isDisabled = index !== 0 && items.length === index + 1;\n\n return (\n <BreadcrumbItem key={index}>\n <BreadcrumbsLinkContainer\n as={Link}\n to={link}\n disabled={isDisabled}\n >\n {label}\n </BreadcrumbsLinkContainer>\n </BreadcrumbItem>\n );\n })}\n </Breadcrumb>\n </BreadcrumbsWrapper>\n );\n};\n\nexport default Breadcrumbs;\n","import { Box, Spinner } from '@chakra-ui/react';\n\ninterface ButtonProps {\n type?: 'strict' | 'rounded';\n colorScheme?:\n | 'primary'\n | 'secondary'\n | 'disabled'\n | 'disabledSecondary'\n | 'black'\n | 'transparent'\n | 'red';\n children?: React.ReactNode;\n height?: string;\n width?: string;\n fontWeight?: string;\n onClick?: () => void;\n disabled?: boolean;\n buttonType?: 'submit' | 'button' | 'reset' | undefined;\n defaultColor?: string;\n isLoading?: boolean;\n}\n\nconst schemeConfig = {\n primary: {\n backgroundImage: 'linear-gradient(120deg, #F18F18 0%, #E8431A 100%)',\n color: 'white',\n },\n secondary: {\n backgroundImage: '#fcfcfc',\n border: '1px',\n color: '#E8431A',\n },\n disabled: {\n backgroundImage: 'linear-gradient(120deg, #F18F18 0%, #E8431A 100%)',\n opacity: '0.5',\n color: 'white',\n },\n disabledSecondary: {\n border: '1px',\n opacity: '0.5',\n color: '#E8431A',\n },\n black: {\n color: '#1A202C',\n border: '1px solid silver',\n },\n transparent: {\n color: '#1A202C',\n border: 'none',\n },\n red: {\n backgroundColor: '#E8431A',\n color: 'white',\n },\n};\n\nconst hoverConfig = {\n primary: {\n backgroundImage: 'linear-gradient(120deg, #e2820e 0%, #d33b15 100%)',\n color: '#e6e6e6',\n },\n secondary: {\n backgroundImage: '#fcfcfc',\n border: '1px',\n color: '#E8431A',\n opacity: '0.7',\n },\n disabled: {\n backgroundImage: 'linear-gradient(120deg, #e2820e 0%, #d33b15 100%)',\n opacity: '0.5',\n color: '#e6e6e6',\n },\n disabledSecondary: {\n border: '1px',\n opacity: '0.5',\n color: '#E8431A',\n },\n black: {\n color: '#1A202C',\n border: '1px solid silver',\n opacity: '0.5',\n },\n transparent: {\n color: '#E8431A',\n border: 'none',\n opacity: '0.5',\n },\n red: {\n backgroundColor: '#E8431A',\n color: 'white',\n opacity: '0.5',\n },\n};\n\nconst focusConfig = {\n transparent: {\n color: '#E8431A',\n },\n};\n\nexport const Button = ({\n type = 'rounded',\n colorScheme = 'primary',\n children = 'Test button',\n height = '40px',\n width = '120px',\n fontWeight = 'bold',\n onClick,\n disabled = false,\n buttonType,\n defaultColor,\n isLoading,\n}: ButtonProps): JSX.Element => {\n const rounded = type === 'strict' ? '0px' : '6px';\n\n const defaultColorConfig = defaultColor\n ? {\n color: defaultColor,\n }\n : {};\n\n return (\n <Box\n as=\"button\"\n minWidth=\"max-content\"\n transition=\"all 0.2s cubic-bezier(.08,.52,.52,1)\"\n px=\"8px\"\n fontSize=\"14px\"\n height={height}\n borderRadius={rounded}\n fontWeight={fontWeight}\n width={width}\n onClick={onClick}\n _hover={\n hoverConfig?.[\n disabled && colorScheme !== 'transparent' ? 'disabled' : colorScheme\n ]\n }\n _focus={colorScheme === 'transparent' ? focusConfig?.['transparent'] : {}}\n {...schemeConfig?.[\n disabled && colorScheme !== 'transparent' ? 'disabled' : colorScheme\n ]}\n disabled={disabled}\n type={buttonType}\n {...defaultColorConfig}\n >\n {isLoading ? <Spinner /> : children}\n </Box>\n );\n};\n","import styled from 'styled-components';\nimport { Link } from '@tanstack/react-router';\n\nexport const StyledLink = styled(Link)`\n text-decoration: none;\n color: rgba(0, 0, 0, 0.5);\n font-weight: 500;\n`;\n","import {\n Card as ChakraCard,\n CardBody,\n CardFooter,\n CardHeader,\n} from '@chakra-ui/react';\nimport { ReactNode } from 'react';\nimport styled from 'styled-components';\n\nexport interface CardProps {\n className?: string;\n header?: ReactNode;\n children: ReactNode;\n footer?: ReactNode;\n width?: string | number;\n}\n\nconst ChakraCardWrapper = styled.div<{\n width: number | string;\n}>`\n width: ${({ width }) => width};\n`;\n\nconst ChakraCardContainer = styled(ChakraCard)`\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);\n\n &.animated-card {\n transition: all ease-in-out 0.3s;\n transform: translateY(0);\n }\n\n &.animated-card:hover {\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1),\n 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n }\n`;\n\nconst ChakraCardTitle = styled(CardHeader)`\n font-size: 20px;\n font-weight: 600;\n padding-left: 24px;\n padding-top: 26px;\n`;\n\nconst ChakraCardFooter = styled(CardFooter)`\n display: flex;\n justify-content: end;\n`;\n\nexport const Card = ({\n className,\n header,\n children,\n footer,\n width = 'auto',\n}: CardProps): JSX.Element => {\n return (\n <ChakraCardWrapper width={width}>\n <ChakraCardContainer className={className}>\n {header && <ChakraCardTitle>{header}</ChakraCardTitle>}\n <CardBody>{children}</CardBody>\n {footer && <ChakraCardFooter>{footer}</ChakraCardFooter>}\n </ChakraCardContainer>\n </ChakraCardWrapper>\n );\n};\n","import {\n Box,\n Card,\n CardBody,\n CardFooter,\n Divider,\n Heading,\n Image,\n Stack,\n Text,\n} from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Nullable } from '../../types/support-types';\n\ninterface ExhibitionCardProps {\n image: string;\n name: string;\n subtitles?: Array<Nullable<string>>;\n description?: string | ReactNode;\n stands?: number;\n orders?: number;\n}\n\ninterface SubtitleProps {\n subtitles: Array<Nullable<string>>;\n}\n\ninterface FooterSectionProps {\n stands: number | undefined;\n orders: number | undefined;\n}\n\nconst SubtitlesWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 10px;\n color: #718096;\n padding-top: 10px;\n`;\n\nconst DescriptionWrapper = styled(Text)`\n color: #718096;\n font-size: 12px;\n padding-top: 20px;\n`;\n\nconst ImageContainer = styled(Image)`\n height: max-content;\n max-width: 200px;\n`;\n\nconst ImageWrapper = styled.div`\n border-right: 1px solid #e2e8f0;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n padding: 25px;\n`;\n\nconst DotsContainer = styled(Box)`\n margin: 0 2px;\n border-radius: 50%;\n display: inline-block;\n`;\n\nconst FooterTextWrapper = styled.div`\n font-size: 14px;\n color: #718096;\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: center;\n`;\n\nconst SubtitleRowWrapper = styled.div`\n display: flex;\n flex-direction: row;\n gap: 10px;\n`;\n\nconst Subtitle = ({ subtitles }: SubtitleProps): JSX.Element => {\n return (\n <SubtitlesWrapper>\n {subtitles.map((subtitle, index) => {\n return (\n <SubtitleRowWrapper key={index}>\n <Text>{subtitle}</Text>\n {index !== subtitles.length - 1 && (\n <Divider orientation=\"vertical\" height=\"25px\" />\n )}\n </SubtitleRowWrapper>\n );\n })}\n <Divider orientation=\"vertical\" />\n </SubtitlesWrapper>\n );\n};\n\nconst FooterSection = ({ stands, orders }: FooterSectionProps): JSX.Element => {\n const { t } = useTranslation();\n\n return (\n <FooterTextWrapper>\n {`${t('stands')} ${stands}`}\n <DotsContainer boxSize={['7px', null, '8px']} bg=\"blackAlpha.400\" />\n {`${t('orders')} ${orders}`}\n </FooterTextWrapper>\n );\n};\n\nexport const ExhibitionCard = ({\n image,\n name,\n subtitles,\n description,\n stands,\n orders,\n}: ExhibitionCardProps): JSX.Element => {\n return (\n <Card\n direction={{ base: 'column', sm: 'row' }}\n overflow=\"hidden\"\n variant=\"elevated\"\n h=\"100%\"\n w=\"100%\"\n >\n <ImageWrapper>\n {image && <ImageContainer src={image} alt=\"Caffe Latte\" />}\n </ImageWrapper>\n\n <Stack w=\"100%\">\n <CardBody textAlign=\"left\">\n <Heading size=\"md\" textAlign=\"left\">\n {name}\n </Heading>\n {subtitles && <Subtitle subtitles={subtitles} />}\n {description && (\n <DescriptionWrapper>{description}</DescriptionWrapper>\n )}\n </CardBody>\n\n <CardFooter>\n <FooterSection stands={stands} orders={orders} />\n </CardFooter>\n </Stack>\n </Card>\n );\n};\n","import { Card, CardProps } from './Card';\nimport styled from 'styled-components';\n\nconst StyledCard = styled(Card)`\n .chakra-card__body {\n padding-top: 0;\n padding-bottom: 0;\n }\n`;\n\nconst ProductCard = ({ children, className, ...props }: CardProps) => {\n return (\n <StyledCard {...props} className={className}>\n {children}\n </StyledCard>\n );\n};\n\nexport default ProductCard;\n","import { ITechnicalService } from '@/model/ITechnicalService';\nimport styled from 'styled-components';\nimport { Card } from './Card';\nimport { StyledLink } from '../Buttons/Link';\nimport { replacePaths } from '@/utils/route';\nimport { CREATE_EXHIBITION_ORDER_TAB_PATH } from '@/constants/router';\nimport { Flex, Image } from '@chakra-ui/react';\nimport { viewExhibitionCart } from '@/features/Routing/protected/exhibitions-by-role';\n\ninterface TechnicalServiceProps {\n service: ITechnicalService;\n}\n\nconst Wrapper = styled(StyledLink)`\n max-width: 240px;\n width: 100%;\n text-align: center;\n\n svg {\n transition: all ease-in-out 0.15s;\n max-width: 96px;\n width: 100%;\n display: block;\n margin-left: auto;\n margin-right: auto;\n\n fill: #a0aec0;\n }\n\n .service-name {\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n word-wrap: normal;\n\n color: #4a5568;\n }\n\n &:hover {\n svg {\n fill: var(--chakra-colors-brandColor);\n }\n }\n`;\n\nconst ServiceName = styled.div`\n margin-top: 0.5rem;\n height: 2.3rem;\n\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n\n color: inherit;\n`;\n\nconst TechnicalCardWrapper = styled(Flex)`\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst TechnicalServiceCard: React.FC<TechnicalServiceProps> = ({ service }) => {\n const { exhibitionId, stand } = viewExhibitionCart.useParams();\n const category = service.category;\n\n const pathName = replacePaths(CREATE_EXHIBITION_ORDER_TAB_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n ':service': category.name,\n });\n\n return (\n <Wrapper to={pathName}>\n <Card className=\"animated-card\">\n <TechnicalCardWrapper>\n {service.image && typeof service.image === 'string' ? (\n <Image boxSize=\"100px\" src={service.image} alt={service.image} />\n ) : (\n service.image\n )}\n <ServiceName className=\"service-name\">\n {category.displayName || category.name || category.id}\n </ServiceName>\n </TechnicalCardWrapper>\n </Card>\n </Wrapper>\n );\n};\n\nexport default TechnicalServiceCard;\n","import styled from 'styled-components';\nimport SimpleBar from 'simplebar-react';\n\ninterface ContentProps {\n className?: string;\n}\n\nexport const Content = styled.div<ContentProps>`\n max-width: 100%;\n width: 100%;\n\n overflow: hidden;\n`;\n\nexport const ContentInner = styled(SimpleBar)`\n height: 100%;\n\n overflow-y: auto;\n\n max-height: calc(100vh - var(--chakra-sizes-nav-bar-height) - 0px);\n padding-bottom: 20px;\n`;\n\nexport const ContentWithSidebars = styled(Content)`\n max-width: calc(\n 100% - var(--chakra-sizes-side-bar-width) -\n var(--chakra-sizes-order-list-width)\n );\n\n margin-left: var(--chakra-sizes-side-bar-width);\n margin-right: var(--chakra-sizes-side-bar-width);\n`;\n\nexport const AdminPanelContent = styled(Content)`\n max-width: calc(100% - var(--chakra-sizes-side-bar-width));\n\n margin-left: var(--chakra-sizes-side-bar-width);\n`;\n","import { SingleDatepicker } from 'chakra-dayzed-datepicker';\nimport { DatePickerDays, DatePickerMonths } from '@/utils/constants';\nimport { FieldProps } from '@/components/Fields/interfaces';\nimport { FormErrorMessage, Box, FormControl } from '@chakra-ui/react';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport {\n Controller,\n FieldValues,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\ninterface DatePickerProps<T extends FieldValues> extends FieldProps<T> {\n defaultValue?: Date;\n dateFormat?: string;\n width?: string | number;\n errors?: any;\n}\n\nexport const DatePicker = <T extends FieldValues = FieldValues>({\n dateFormat = 'dd.MM.yyyy',\n // @ts-expect-error as default string doesn't found in generic T\n name = 'date-picker',\n label,\n isRequired,\n control,\n defaultValue,\n}: DatePickerProps<T>) => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n dayjs.extend(utc);\n dayjs.extend(timezone);\n\n const defaultDate = defaultValue\n ? new Date(dayjs(defaultValue).toString())\n : undefined;\n\n return (\n <Box width=\"100%\">\n <FormControl\n isInvalid={fieldState.invalid}\n isRequired={isRequired}\n display=\"felx\"\n flexDirection=\"column\"\n >\n {label && <FormLabel>{label}</FormLabel>}\n <Controller\n control={control}\n name={name}\n render={({ field }) => {\n let fieldValue = field.value;\n\n if (typeof field.value === 'string') {\n // @ts-expect-error desc\n fieldValue = new Date(dayjs(field.value).toString());\n }\n\n return (\n <SingleDatepicker\n date={fieldValue || defaultDate}\n onDateChange={(date: Date) => {\n field.onChange(date);\n }}\n configs={{\n dateFormat: dateFormat,\n dayNames: DatePickerDays,\n monthNames: DatePickerMonths,\n }}\n />\n );\n }}\n />\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error?.message}</FormErrorMessage>\n )}\n </FormControl>\n </Box>\n );\n};\n","import { PropsWithChildren } from 'react';\n\nconst isDebugEnabled = sessionStorage.getItem('debug-enabled') === '1';\n\nexport const Debug = ({ children }: PropsWithChildren) => {\n if (!isDebugEnabled) {\n return null;\n }\n\n return <>{children}</>;\n};\n","import {\n BuildingDescriptionBodyRow,\n BuildingDescriptionLabelContainer,\n BuildingDescriptionWrapper,\n BuildingTableRow,\n BuildingTableTitle,\n ImageDescription,\n ImageWrapper,\n NoteSectionContainer,\n PriceLabel,\n PriceNumber,\n PriceRowContainer,\n PricesWrapper,\n TableContainerWrapper,\n} from '@/components/DevelopmentCard/DevelopmentCard.styled';\nimport { Table, Tbody, Thead, Tr } from '@chakra-ui/react';\nimport React, { ReactNode } from 'react';\nimport {\n CardPricesType,\n TableDataType,\n} from '@/components/DevelopmentCard/DevelopmentCard';\nimport { useTranslation } from 'react-i18next';\nimport parse from 'html-react-parser';\nimport { Nullable } from '../../types/support-types';\nimport { useExhibition } from '@/store/effector/exhibition';\n\ninterface ModalPricesProps {\n prices?: CardPricesType;\n header?: ReactNode;\n}\n\ninterface ImageSectionProps {\n description?: Nullable<string>;\n children?: ReactNode;\n}\n\ninterface BuildingDescriptionSectionProps {\n buildingLabel?: Nullable<string>;\n buildingDescription?: Nullable<string>;\n}\n\ninterface TableSectionProps {\n tableData?: TableDataType;\n}\n\ninterface NoteSectionProps {\n note?: string;\n}\n\nexport const ModalPrices = ({ prices, header }: ModalPricesProps) => {\n const { t } = useTranslation();\n const { currency } = useExhibition();\n\n return (\n <PricesWrapper>\n {prices?.current && (\n <PriceRowContainer>\n <PriceLabel>{header}</PriceLabel>\n <PriceNumber>\n {t('building-info-price', { price: prices?.current, currency })}\n </PriceNumber>\n </PriceRowContainer>\n )}\n {prices?.transition &&\n prices?.transition?.map((transition, index) => {\n return (\n <PriceRowContainer key={index}>\n <PriceLabel>{transition?.label}</PriceLabel>\n <PriceNumber>\n {t('building-info-price', {\n price: transition?.price,\n currency,\n })}\n </PriceNumber>\n </PriceRowContainer>\n );\n })}\n </PricesWrapper>\n );\n};\n\nexport const ImageSection = ({\n description,\n children,\n}: ImageSectionProps): JSX.Element => {\n return (\n <ImageWrapper>\n {children}\n <ImageDescription>{description}</ImageDescription>\n </ImageWrapper>\n );\n};\n\nexport const BuildingDescriptionSection = ({\n buildingLabel,\n buildingDescription,\n}: BuildingDescriptionSectionProps): JSX.Element => {\n return (\n <BuildingDescriptionWrapper>\n <BuildingDescriptionLabelContainer>\n {buildingLabel}\n </BuildingDescriptionLabelContainer>\n {buildingDescription && (\n <BuildingDescriptionBodyRow>\n {parse(buildingDescription)}\n </BuildingDescriptionBodyRow>\n )}\n </BuildingDescriptionWrapper>\n );\n};\n\nexport const TableSection = ({ tableData }: TableSectionProps): JSX.Element => {\n return (\n <TableContainerWrapper>\n <Table variant=\"simple\" size=\"sm\">\n <Thead>\n <Tr>\n {tableData?.titles?.map((columnTitle, index) => (\n <BuildingTableTitle key={index}>{columnTitle}</BuildingTableTitle>\n ))}\n </Tr>\n </Thead>\n <Tbody width=\"100%\">\n {tableData?.rows?.map((row, index) => {\n return (\n <Tr key={index}>\n {row?.map((value, key) => (\n <BuildingTableRow key={key}>{value}</BuildingTableRow>\n ))}\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </TableContainerWrapper>\n );\n};\n\nexport const NoteSection = ({ note }: NoteSectionProps): JSX.Element => {\n return <NoteSectionContainer>{note}</NoteSectionContainer>;\n};\n","import styled from 'styled-components';\nimport { Box, TableContainer, Td, Text, Th } from '@chakra-ui/react';\n\nexport const PricesWrapper = styled(Box)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding-bottom: 10px;\n`;\n\nexport const PriceRowContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n background-color: #edf2f7;\n border-radius: 5px;\n height: 40px;\n padding: 10px 0 10px 10px;\n width: 100%;\n`;\n\nexport const PriceNumber = styled(Box)`\n background-color: #a0aec0;\n color: #ffffff;\n width: 30%;\n height: 40px;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border-top-right-radius: 5px;\n border-bottom-right-radius: 5px;\n`;\n\nexport const PriceLabel = styled(Box)`\n width: 70%;\n font-size: 14px;\n line-height: 1;\n`;\n\nexport const ImageDescription = styled(Box)`\n display: flex;\n justify-content: center;\n font-size: 12px;\n padding-top: 5px;\n`;\n\nexport const ImageWrapper = styled(Box)`\n padding-bottom: 10px;\n`;\n\nexport const BuildingDescriptionWrapper = styled(Box)`\n padding-bottom: 5px;\n`;\n\nexport const BuildingDescriptionLabelContainer = styled(Box)`\n font-size: 16px;\n font-weight: 600;\n padding-bottom: 5px;\n`;\n\nexport const BuildingDescriptionBodyRow = styled(Text)`\n font-size: 14px;\n`;\n\nexport const BuildingTableTitle = styled(Th)`\n font-size: 14px;\n font-weight: 600;\n padding-left: 0 !important;\n`;\n\nexport const BuildingTableRow = styled(Td)`\n font-size: 14px;\n padding-left: 0 !important;\n`;\n\nexport const TableContainerWrapper = styled(TableContainer)`\n white-space: unset !important;\n padding: 15px 0;\n`;\n\nexport const NoteSectionContainer = styled(Box)`\n background-color: #edf2f7;\n border-radius: 5px;\n padding: 10px;\n font-size: 12px;\n`;\n\nexport const BuildingCardWrapper = styled.form``;\n","import React, {\n PropsWithChildren,\n ReactNode,\n useCallback,\n useState,\n} from 'react';\nimport { Card } from '@/components/Card/Card';\nimport { useTranslation } from 'react-i18next';\nimport {\n ButtonGroup,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n useDisclosure,\n} from '@chakra-ui/react';\nimport { Button } from '../Buttons/Button/Button';\nimport {\n BuildingDescriptionSection,\n ImageSection,\n ModalPrices,\n NoteSection,\n TableSection,\n} from '@/components/DevelopmentCard/BuildingCardModal';\nimport { AmountCounter } from '@/components/AmountCounter';\nimport { useForm } from 'react-hook-form';\nimport { BuildingCardWrapper } from '@/components/DevelopmentCard/DevelopmentCard.styled';\nimport styled from 'styled-components';\nimport { OrderItem } from '@/model/IOrderItem';\nimport { Product } from '@/model/IProduct';\nimport { useStand } from '@/store/effector/stand';\nimport { orderApi } from '@/store/effector/order';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { ITEPortal_Contracts_Enums_BuildingType } from '@/api';\n\nexport type CardPricesType = {\n current?: number;\n transition?: TransitionType[];\n};\n\ntype TransitionType = {\n label: string;\n price: number;\n};\n\ntype TableRowType = string[];\n\nexport type TableDataType = {\n titles: string[];\n rows: TableRowType[];\n};\n\nexport type CardInfoType = {\n prices?: CardPricesType;\n imageDescription?: string | null;\n buildingLabel?: string | null;\n buildingDescription?: string | null;\n tableData?: TableDataType;\n note?: string | null;\n images?: string[] | null;\n};\n\ninterface DevelopmentCardProps {\n header?: ReactNode;\n cardName: string;\n cardInfo?: CardInfoType;\n product: Product;\n isSelected: boolean;\n}\n\nconst StyledCard = styled(Card)`\n .chakra-card__header {\n padding-bottom: 0;\n }\n\n .chakra-card__body {\n padding-top: 1rem;\n padding-bottom: 0;\n }\n`;\n\nexport const DevelopmentCard = ({\n header,\n children,\n cardInfo,\n product,\n isSelected,\n ...props\n}: PropsWithChildren<DevelopmentCardProps>) => {\n const { standForOrder } = useStand();\n const { exhibitionId } = useExhibition();\n const { isOpen, onOpen, onClose } = useDisclosure();\n const [openConfirm, setOpenConfirm] = useState(false);\n const { handleSubmit } = useForm();\n const { t } = useTranslation();\n const suffix = t('sqm');\n\n const onSubmit = handleSubmit(() => {\n setOpenConfirm(!openConfirm);\n });\n\n const selectBuilding = useCallback(async () => {\n if (product) {\n try {\n const buildingType = Math.max(...(product.buildingTypes || []));\n\n const priceListItemsBasedOnBuildingType =\n await typedAxios.priceListItem.getPricelistItems({\n exhibitionId: +exhibitionId,\n currency: standForOrder?.currency || undefined,\n buildingType:\n +buildingType as ITEPortal_Contracts_Enums_BuildingType,\n categoryIds: product.categoryId?.toString(),\n productId: product.productId,\n });\n\n const building = priceListItemsBasedOnBuildingType.find(\n (pi) => pi.productName === product.productName\n );\n\n if (building && building.includedPriceListItems) {\n product.setLinkedItems(building.includedPriceListItems);\n }\n } catch {}\n\n orderApi.clearProducts();\n orderApi.addItem(\n OrderItem.fromJSON({\n id: product.getProductId(),\n product,\n amount: standForOrder?.area,\n })\n );\n }\n }, []);\n\n const setBuilding = async () => {\n await selectBuilding();\n };\n\n const ModalConfirm = () => {\n const closeModal = () => setOpenConfirm(false);\n const confirmTransition = () => setBuilding();\n\n return (\n <Modal isOpen={openConfirm} onClose={closeModal} size=\"lg\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('building-selection-confirmation')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n {t('building-confirm', { buildingName: header })}\n </ModalBody>\n <ModalFooter onClick={closeModal}>\n <ButtonGroup gap=\"1\">\n <Button colorScheme=\"secondary\" onClick={confirmTransition}>\n {t('yes')}\n </Button>\n <Button colorScheme=\"black\" onClick={closeModal}>\n {t('cancel')}\n </Button>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n };\n\n const ModalInfoComponent = (): JSX.Element => {\n return (\n <Modal isOpen={isOpen} onClose={onClose} size=\"2xl\">\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{header}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <ModalPrices prices={cardInfo?.prices} header={header} />\n <ImageSection description={cardInfo?.imageDescription}>\n {children}\n </ImageSection>\n <BuildingDescriptionSection\n buildingLabel={cardInfo?.buildingLabel}\n buildingDescription={cardInfo?.buildingDescription}\n />\n {cardInfo?.tableData && (\n <TableSection tableData={cardInfo?.tableData} />\n )}\n {cardInfo?.note && <NoteSection note={cardInfo?.note} />}\n </ModalBody>\n </ModalContent>\n </Modal>\n );\n };\n\n const SelectionButton = () => {\n const changeHandler = (value: number) => {\n if (product && product instanceof Product) {\n orderApi.changeItem({\n id: product.getProductId(),\n product,\n amount: value,\n });\n }\n };\n\n return isSelected ? (\n <AmountCounter\n amountCounterValue={standForOrder?.area}\n onChange={(counterValue: number) => changeHandler(counterValue)}\n disabled={true}\n suffix={suffix}\n precision={2}\n step={0.25}\n />\n ) : (\n <Button colorScheme=\"secondary\" width=\"90px\">\n {t('choose')}\n </Button>\n );\n };\n\n const BuildingInfoButton = (): JSX.Element => {\n return (\n <>\n <Button colorScheme=\"black\" width=\"110px\" onClick={onOpen}>\n {t('moreDetails')}\n </Button>\n <ModalInfoComponent />\n <ModalConfirm />\n </>\n );\n };\n\n return (\n <StyledCard\n header={header}\n footer={\n <BuildingCardWrapper onSubmit={onSubmit}>\n <ButtonGroup spacing=\"2\">\n <BuildingInfoButton />\n <SelectionButton />\n </ButtonGroup>\n </BuildingCardWrapper>\n }\n {...props}\n >\n {children}\n </StyledCard>\n );\n};\n","import { Text, TextProps } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { AttachmentIcon, DeleteIcon } from '@chakra-ui/icons';\nimport { FileUtils } from '@/utils/file-utils';\nimport styled from 'styled-components';\nimport { ModalFactory } from '@/components/Modal/api';\nimport React, { MouseEvent, useState } from 'react';\nimport Download from 'yet-another-react-lightbox/plugins/download';\nimport Lightbox from 'yet-another-react-lightbox';\n\ntype DownloadFileLinkPropsType = {\n attachmentUrl?: string | null;\n fileName?: string | null;\n onDelete?: () => Promise<void>;\n withIcon?: boolean;\n} & TextProps;\n\nconst imageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'svg', 'webp'];\n\nconst isImage = (fileName: string) => {\n return imageExtensions.some((ext) => fileName.endsWith(`.${ext}`));\n};\n\nconst FileLink = styled(Text)`\n .delete-handler {\n visibility: hidden;\n margin-top: -5px;\n margin-left: 1em;\n }\n &:hover {\n .delete-handler {\n visibility: visible;\n }\n }\n`;\n\nexport const DownloadFileLink = (props: DownloadFileLinkPropsType) => {\n const {\n attachmentUrl,\n fileName: fileNameFromProps,\n onDelete,\n withIcon = true,\n ...textProps\n } = props;\n const { t } = useTranslation();\n const canBeDeleted = typeof onDelete === 'function';\n const couldBeOpenedInPopup = attachmentUrl && isImage(attachmentUrl);\n const [open, setOpen] = useState(false);\n\n if (!attachmentUrl) {\n return null;\n }\n\n const handleDeleteFile = (e: MouseEvent<SVGElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (typeof onDelete !== 'function') {\n return;\n }\n\n ModalFactory.confirm({\n id: 'file-delete-confirmation',\n Component: () => <>{t('delete-file-confirmation')}</>,\n okLabel: t('confirm-delete'),\n onOk: async () => {\n await onDelete();\n\n ModalFactory.closeById('file-delete-confirmation');\n },\n });\n };\n\n const downloadAttachment = () => {\n if (attachmentUrl) {\n if (couldBeOpenedInPopup) {\n setOpen(true);\n\n return;\n }\n\n FileUtils.saveUrlToBlob(attachmentUrl);\n }\n };\n\n return (\n <FileLink\n cursor=\"pointer\"\n fontSize={12}\n color=\"red\"\n mt={2}\n onClick={downloadAttachment}\n {...textProps}\n >\n {withIcon && <AttachmentIcon />} {fileNameFromProps || t('download-file')}\n {canBeDeleted && (\n <DeleteIcon className=\"delete-handler\" onClick={handleDeleteFile} />\n )}\n {couldBeOpenedInPopup && (\n <Lightbox\n open={open}\n close={() => setOpen(false)}\n index={0}\n slides={[\n {\n src: attachmentUrl,\n },\n ]}\n animation={{ fade: 0 }}\n controller={{ closeOnPullDown: true, closeOnBackdropClick: true }}\n styles={{ root: { '--yarl__color_backdrop': 'rgba(0, 0, 0, .7)' } }}\n plugins={[Download]}\n download={{\n download: ({ slide }) => {\n FileUtils.saveUrlToBlob(slide.src);\n },\n }}\n />\n )}\n </FileLink>\n );\n};\n","import {\n FieldValues,\n Path,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport {\n Checkbox as BaseCheckbox,\n CheckboxProps as BaseCheckboxProps,\n} from '@chakra-ui/react';\n\ninterface CheckboxProps<T extends FieldValues = FieldValues>\n extends Omit<BaseCheckboxProps, 'name'> {\n name: Path<T>;\n}\n\nexport const Checkbox = <T extends FieldValues = FieldValues>(\n props: CheckboxProps<T>\n) => {\n const { onChange, name } = props;\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState, field } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const registeredFieldProps = formContext.register(name as Path<T>, {\n onChange: (event) => {\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n formContext.clearErrors(name);\n },\n });\n\n return (\n <>\n <BaseCheckbox\n colorScheme=\"red\"\n id={name}\n {...props}\n {...registeredFieldProps}\n isChecked={field.value}\n isInvalid={!!fieldState.error}\n />\n {/* todo add error handling */}\n </>\n );\n};\n","import { FieldProps } from './interfaces';\nimport {\n FormErrorMessage,\n Input as ChakraInput,\n Box,\n FormControl,\n InputGroup,\n InputLeftAddon,\n InputRightAddon,\n InputProps as ChakraInputProps,\n Tooltip,\n Flex,\n} from '@chakra-ui/react';\nimport React, { ReactNode } from 'react';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport styled from 'styled-components';\nimport {\n FieldValues,\n Path,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport { InfoIcon } from '@chakra-ui/icons';\n\ninterface InputProps<T extends FieldValues> extends FieldProps<T> {\n maxWidth?: number | string | null;\n defaultValue?: string;\n disabled?: boolean;\n value?: string;\n onChange?: any;\n addonLeft?: ReactNode;\n addonRight?: ReactNode;\n tooltip?: string;\n}\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n`;\n\nexport const ParticipantCheckContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 10px;\n width: 100%;\n`;\n\nconst Input = <T extends FieldValues = FieldValues>({\n // @ts-expect-error as default string doesn't found in generic T\n name = 'input',\n label,\n placeholder,\n settings,\n maxWidth = '170px',\n defaultValue,\n isRequired,\n disabled,\n value,\n onChange,\n addonLeft,\n addonRight,\n tooltip,\n children,\n ...rest\n}: InputProps<T> & ChakraInputProps) => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const registerFieldName = formContext.register(name as Path<T>, {\n onChange: (event) => {\n if (typeof onChange === 'function') {\n onChange(event);\n }\n\n formContext.clearErrors(name);\n },\n ...settings,\n });\n\n return (\n <Box width=\"100%\" maxWidth={maxWidth !== null ? maxWidth : undefined}>\n <FormControlWrapper\n isInvalid={fieldState.invalid}\n isRequired={isRequired}\n >\n <Flex flexDirection=\"row\">\n {label && <FormLabel htmlFor={name}>{label}</FormLabel>}\n {tooltip && (\n <Tooltip label={tooltip} hasArrow placement=\"top\">\n <InfoIcon\n color=\"lightgray\"\n boxSize={4}\n style={{ marginTop: 4 }}\n />\n </Tooltip>\n )}\n </Flex>\n <InputGroup>\n {addonLeft && <InputLeftAddon>{addonLeft}</InputLeftAddon>}\n <ParticipantCheckContainer>\n <ChakraInput\n placeholder={placeholder}\n maxWidth={maxWidth !== null ? maxWidth : undefined}\n defaultValue={defaultValue}\n disabled={disabled}\n value={value}\n id={name}\n {...rest}\n {...registerFieldName}\n />\n {children}\n </ParticipantCheckContainer>\n {addonRight && <InputRightAddon>{addonRight}</InputRightAddon>}\n </InputGroup>\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error?.message}</FormErrorMessage>\n )}\n </FormControlWrapper>\n </Box>\n );\n};\n\nexport default Input;\n","import React, { CSSProperties, ReactNode } from 'react';\nimport {\n NumberDecrementStepper,\n NumberIncrementStepper,\n NumberInput,\n NumberInputField,\n NumberInputStepper,\n NumberInputProps,\n FormControl,\n FormErrorMessage,\n InputGroup,\n InputLeftAddon,\n} from '@chakra-ui/react';\nimport { FieldProps } from './interfaces';\nimport {\n FieldValues,\n Path,\n useController,\n useFormContext,\n} from 'react-hook-form';\nimport { FormLabel } from '../FormLabel/FormLabel';\n\ntype InputNumberProps<T extends FieldValues = FieldValues> = NumberInputProps &\n FieldProps<T> & {\n defaultValue?: number;\n addon?: ReactNode;\n };\n\nconst StyledForCaseWithAddon: CSSProperties = {\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n};\n\nconst InputNumber = <T extends FieldValues = FieldValues>({\n name,\n placeholder,\n settings,\n min,\n max,\n defaultValue,\n label,\n addon,\n ...rest\n}: InputNumberProps<T>) => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState, field } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const { onChange, ...registerFieldName } = formContext.register(\n name as Path<FieldValues>,\n {\n onChange: () => {\n formContext.clearErrors(name);\n },\n ...settings,\n }\n );\n\n return (\n <FormControl isInvalid={fieldState.invalid}>\n {label && <FormLabel htmlFor={name}>{label}</FormLabel>}\n\n <NumberInput\n step={1}\n precision={0}\n min={min}\n max={max}\n defaultValue={defaultValue}\n {...rest}\n onChange={(valueAsString, valueAsNumber) => {\n onChange({ target: { value: valueAsNumber, name } });\n }}\n >\n <InputGroup>\n {addon && <InputLeftAddon>{addon}</InputLeftAddon>}\n <NumberInputField\n id={name}\n placeholder={placeholder}\n {...registerFieldName}\n value={field.value}\n style={addon ? StyledForCaseWithAddon : {}}\n />\n </InputGroup>\n <NumberInputStepper>\n <NumberIncrementStepper />\n <NumberDecrementStepper />\n </NumberInputStepper>\n </NumberInput>\n\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error?.message}</FormErrorMessage>\n )}\n </FormControl>\n );\n};\n\nexport default InputNumber;\n","import styled from 'styled-components';\nimport { Select } from '@chakra-ui/react';\nimport { BadgeItem } from '@/components/OrderTableRow/OrderTableRow';\nimport { FieldProps } from './interfaces';\nimport {\n FieldValues,\n Path,\n useController,\n useFormContext,\n} from 'react-hook-form';\n\nconst OrderTableRowContainerBadgeComponent = styled(Select)`\n //padding: 5px 0;\n width: 170px !important;\n`;\n\ninterface BadgeDataProp extends FieldProps {\n options?: BadgeItem[];\n}\n\nconst SelectComponent: React.FC<BadgeDataProp> = ({\n options,\n placeholder,\n settings,\n name = 'select',\n}) => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const registerFieldName = formContext.register(name as Path<FieldValues>, {\n onChange: () => {\n formContext.clearErrors(name);\n },\n ...settings,\n });\n\n return (\n <OrderTableRowContainerBadgeComponent\n rootProps={{ width: '170px' }}\n defaultValue=\"\"\n {...registerFieldName}\n >\n <option value=\"\" disabled>\n {placeholder}\n </option>\n {options?.map(({ key, value }) => {\n return (\n <option value={key} key={key}>\n {value}\n </option>\n );\n })}\n </OrderTableRowContainerBadgeComponent>\n );\n};\n\nexport default SelectComponent;\n","import React, { useCallback } from 'react';\nimport { FileWithPath, useDropzone, Accept } from 'react-dropzone';\nimport { Box, FormControl, FormErrorMessage, Text } from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { FieldProps } from '@/components/Fields/interfaces';\nimport { useTranslation } from 'react-i18next';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport { FieldValues, useController, useFormContext } from 'react-hook-form';\n\nconst Container = styled.div`\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 5px;\n border-width: 2px;\n border-radius: 5px;\n border-color: silver;\n border-style: dashed;\n color: grey;\n outline: none;\n transition: border 0.24s ease-in-out;\n cursor: pointer;\n`;\n\ninterface UploadFileDropzoneProps<T extends FieldValues = FieldValues>\n extends FieldProps<T> {\n multiple?: boolean;\n defaultValue?: string;\n accept?: Accept;\n defaultLabel?: React.ReactNode;\n}\n\nexport const UploadFileDropzone = <T extends FieldValues = FieldValues>({\n label,\n multiple = false,\n // @ts-expect-error as default string doesn't found in generic T\n name = 'download-file',\n isRequired,\n defaultValue,\n accept,\n // accept = { 'image/*': [] },\n defaultLabel: defaultLabelFromProps,\n}: UploadFileDropzoneProps<T>) => {\n const { t } = useTranslation();\n\n const { setValue } = useFormContext<T>();\n const onDrop = useCallback(\n (droppedFiles: File[]) => {\n setValue(\n name,\n // @ts-expect-error as generic T doesn't know that value is File\n droppedFiles,\n { shouldValidate: true }\n );\n },\n [setValue, name]\n );\n const { getRootProps, getInputProps, acceptedFiles } = useDropzone({\n accept,\n multiple: multiple,\n onDrop,\n });\n\n const { fieldState } = useController({\n name: name,\n });\n\n const filesLength = acceptedFiles.length;\n const defaultLabel = defaultLabelFromProps || t('upload-file-default-label');\n\n const files = acceptedFiles.map((file: FileWithPath) => (\n <li key={file.path}>\n {file.path} - {file.size} bytes\n </li>\n ));\n\n const uploadFileLabel = filesLength\n ? acceptedFiles.length > 1\n ? t('multiple-files-selected', { filesCount: acceptedFiles.length })\n : files\n : defaultValue || defaultLabel;\n\n return (\n <Box>\n <FormControl isRequired={isRequired} isInvalid={fieldState.invalid}>\n {label && <FormLabel>{label}</FormLabel>}\n <Box className=\"container\">\n <Container {...getRootProps()}>\n <input {...getInputProps()} />\n <Text>{uploadFileLabel}</Text>\n </Container>\n </Box>\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error.message}</FormErrorMessage>\n )}\n </FormControl>\n </Box>\n );\n};\n","import { FormLabel as ChakraFormLabel, FormLabelProps } from '@chakra-ui/react';\nimport { PropsWithChildren } from 'react';\n\nconst formLabelStyle = {\n color: 'grey',\n fontWeight: 500,\n fontSize: '16px',\n};\n\nexport const FormLabel = (\n props: PropsWithChildren<FormLabelProps>\n): JSX.Element => {\n return <ChakraFormLabel style={formLabelStyle} {...props} />;\n};\n","import { Product } from '@/model/IProduct';\nimport { DomainRecord } from '@/model/common';\nimport { CardInfoType } from '@/components/DevelopmentCard';\nimport { ITEPortal_Domain_Dto_PriceListItemSummary } from '../../../../api';\n\nexport function getSelectBuildingInfo(\n products: Product[],\n data: ITEPortal_Domain_Dto_PriceListItemSummary[]\n): DomainRecord[] {\n return products.map((product) => {\n const cardInfo: CardInfoType = {};\n\n const selectBuildingData = data?.find(\n (productData) => productData?.productName === product?.productName\n );\n\n const buildingType = selectBuildingData?.buildingTypes?.find(\n (type) => type !== 0\n );\n\n cardInfo['prices'] = {\n current: product?.price,\n };\n cardInfo['imageDescription'] = selectBuildingData?.imageDescription;\n cardInfo['buildingLabel'] = selectBuildingData?.productDisplayName;\n cardInfo['buildingDescription'] = selectBuildingData?.description;\n cardInfo['note'] = selectBuildingData?.additionalNotes;\n cardInfo['images'] = selectBuildingData?.imageUrls;\n\n return {\n key: product.getProductId(),\n text:\n product.productDisplayName ||\n product.productName ||\n product.getProductId(),\n product: product,\n buildingType,\n cardInfo,\n } satisfies DomainRecord;\n });\n}\n","import React, { useEffect } from 'react';\nimport { DevelopmentCard } from '@/components/DevelopmentCard';\nimport styled from 'styled-components';\nimport { t } from 'i18next';\nimport { LoaderWrapper } from '@/theme/css/styles';\nimport { Loader } from '@/components/Loader/Loader';\nimport { getSelectBuildingInfo } from '@/components/Forms/Services/SelectBuilding/getSelectBuildingInfo';\nimport { ShowMoreText } from '@/components/Forms/Services/TemporaryStaff';\nimport { createExhibitionOrderServiceRoute } from '../../../../features/Routing/protected/exhibitions-by-role';\nimport { CATEGORY_TYPES } from '../../../../constants/categorie';\nimport { typedAxios } from '../../../../api/typed-axios';\nimport { ProductUtils } from '@/utils/product-utils';\nimport { useStand } from '@/store/effector/stand';\nimport { useOrder } from '@/store/effector/order';\nimport { loadingApi, useAppLoading } from '@/store/effector/loading';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '../../../../api';\nimport { Box, Text } from '@chakra-ui/react';\nimport { useVatSettings } from '@/store/effector/vat-settings';\nimport { BuildingGallery } from '@/components/ImageGalleries/BuildingGallery';\nimport { useQuery } from '@tanstack/react-query';\n\nconst BuildingTypesWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n flex-direction: row;\n gap: 20px;\n\n & > div {\n flex-basis: 50%;\n max-width: calc(50% - 10px);\n }\n`;\n\ninterface SelectBuildingCardProps {\n description?: ITEPortal_Domain_Dto_CategoryDto['description'];\n}\n\nconst useBuildingsLoader = () => {\n const { exhibitionId } = createExhibitionOrderServiceRoute.useParams();\n const { standForOrder, originalBuildingType } = useStand();\n\n return useQuery({\n queryKey: [\n 'buildings',\n exhibitionId,\n standForOrder,\n standForOrder?.currency,\n ],\n queryFn: async () => {\n const data = await typedAxios.priceListItem.getPricelistItems({\n exhibitionId: +exhibitionId,\n currency: standForOrder?.currency || undefined,\n buildingType: standForOrder.buildingType || originalBuildingType,\n });\n\n const productItemCardData = data.filter(\n (item) => item.categoryName === CATEGORY_TYPES.SELECT_BUILDING\n );\n\n const productItemCardObjects = productItemCardData?.map((product) => {\n return ProductUtils.createProductFromPriceListItem(product);\n });\n\n const productItemsObjects = getSelectBuildingInfo(\n productItemCardObjects,\n productItemCardData\n );\n\n return productItemsObjects;\n },\n });\n};\n\nexport const SelectBuilding = ({\n description,\n}: SelectBuildingCardProps): JSX.Element => {\n const { items } = useOrder();\n const isLoader = useAppLoading();\n const { vatMessage } = useVatSettings();\n\n const { data: cardItems = [], isFetching } = useBuildingsLoader();\n\n useEffect(\n function toggleLoading() {\n if (isFetching) {\n loadingApi.on();\n } else {\n loadingApi.off();\n }\n },\n [isFetching]\n );\n\n return (\n <>\n {vatMessage && (\n <Box marginY={4}>\n <Text color=\"gray.500\">{vatMessage}</Text>\n </Box>\n )}\n {description && !isLoader && (\n <ShowMoreText\n lines={2}\n keepNewLines={false}\n more={t('showMore')}\n less={t('showLess')}\n anchorClass=\"show-more-less-clickable\"\n >\n {description}\n </ShowMoreText>\n )}\n {isLoader ? (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n ) : (\n <>\n {cardItems.length > 0 && (\n <BuildingTypesWrapper>\n {cardItems.map(({ key, text, cardInfo, product }) => {\n const isSelected = items?.some(\n (oi) => oi.id === product.getProductId()\n );\n\n return (\n <DevelopmentCard\n header={text}\n key={key}\n cardName={key}\n cardInfo={cardInfo}\n product={product}\n isSelected={isSelected}\n >\n {cardInfo?.images && (\n <BuildingGallery images={cardInfo?.images} />\n )}\n </DevelopmentCard>\n );\n })}\n </BuildingTypesWrapper>\n )}\n </>\n )}\n </>\n );\n};\n","import {\n SELECT_BUILDING,\n TEMPORARY_STAFF,\n} from '@/constants/technical-services';\nimport { SelectBuilding } from './SelectBuilding';\nimport ProductItemsCard from './common/ProductItemsCard';\nimport TemporaryStaff from './TemporaryStaff';\nimport { Category } from '@/model/ICategory';\n\ninterface ServiceFactoryProps {\n category: Category;\n description: string;\n}\n\nconst ServiceFactory = ({ category }: ServiceFactoryProps) => {\n switch (category.name) {\n case SELECT_BUILDING:\n return <SelectBuilding description={category.description} />;\n case TEMPORARY_STAFF:\n return <TemporaryStaff description={category.description} />;\n default:\n return <ProductItemsCard serviceCategory={category} />;\n }\n};\n\nexport default ServiceFactory;\n","import { Product } from '@/model/IProduct';\nimport { FieldValues, FormProvider, useForm } from 'react-hook-form';\nimport styled from 'styled-components';\nimport { Button, Flex, Tooltip } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport Select from '@/components/Fields/Select';\nimport { WarningIcon } from '@chakra-ui/icons';\nimport {\n BadgeItem,\n RowDataStructure,\n} from '@/components/OrderTableRow/OrderTableRow';\nimport InputNumber from '@/components/Fields/InputNumber';\nimport Input from '@/components/Fields/Input';\n\ninterface RowProps {\n label: string;\n submitHandler: (product: Product, values: FieldValues) => void;\n product: Product;\n params: RowDataStructure[];\n}\n\nconst Form = styled.form`\n display: flex;\n flex-direction: row;\n align-items: center;\n\n padding: 20px 0;\n\n &:not(:last-child) {\n border-bottom: 1px solid #e2e8f0;\n }\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n margin-left: auto;\n align-items: center;\n`;\n\nconst Price = styled.div`\n font-weight: 600;\n font-size: 14px;\n line-height: 20px;\n text-align: right;\n margin-right: 1rem;\n`;\n\nconst Label = styled.div`\n font-weight: 400;\n font-size: 14px;\n line-height: 20px;\n margin-bottom: 0.75rem;\n`;\n\nexport const TooltipWrapper = styled.span`\n margin-left: 0.25rem;\n color: #cbd5e0;\n font-size: 16px;\n`;\n\nconst rowDataComponentsConfig = {\n inputNumber: InputNumber,\n input: Input,\n badge: Select,\n};\n\nconst Row: React.FC<RowProps> = ({ label, product, submitHandler, params }) => {\n const { t } = useTranslation();\n const instance = useForm();\n const {\n handleSubmit,\n formState: { isValid },\n } = instance;\n const description = product?.description;\n\n const onSubmit = handleSubmit((data) => {\n submitHandler(product, data);\n });\n\n return (\n <FormProvider {...instance}>\n <Form onSubmit={onSubmit}>\n <div>\n <Label>\n {label}\n {description && (\n <TooltipWrapper>\n <Tooltip hasArrow label={description}>\n <WarningIcon color=\"var(--chakra-colors-brandColor)\" />\n </Tooltip>\n </TooltipWrapper>\n )}\n </Label>\n\n <Flex gap=\"12px\" alignItems=\"center\">\n {params?.map((tableElement, key) => {\n const Component =\n rowDataComponentsConfig?.[\n tableElement?.type as 'badge' | 'input' | 'inputNumber'\n ];\n\n return (\n <Component\n key={key}\n // @ts-expect-error as Component is generic\n text={tableElement?.text as string}\n options={tableElement?.options as BadgeItem[]}\n name={tableElement.name as string}\n placeholder={tableElement.placeholder}\n settings={tableElement.settings}\n min={0}\n />\n );\n })}\n </Flex>\n </div>\n <Wrapper>\n <Price>{product.formattedPrice}</Price>\n <Button type=\"submit\" variant=\"brandSecondary\" isDisabled={!isValid}>\n {t('choose')}\n </Button>\n </Wrapper>\n </Form>\n </FormProvider>\n );\n};\n\nexport default Row;\n","import { DomainRecord } from '@/model/common';\nimport { RowDataStructure } from '@/components/OrderTableRow/OrderTableRow';\nimport { LANGUAGES_OPTIONS } from '@/constants/languages';\nimport { t } from 'i18next';\nimport { Product } from '@/model/IProduct';\n\nfunction getTemporaryStaffConfig(products: Product[]): DomainRecord[] {\n return products.map((product) => {\n const params: RowDataStructure[] = [];\n\n switch (product?.fieldType) {\n case 'select':\n params.push({\n type: 'badge',\n name: 'language',\n text: product.formattedPrice,\n options: LANGUAGES_OPTIONS,\n settings: { required: true },\n placeholder: t('chooseLanguage') as string,\n });\n break;\n case 'input':\n params.push({\n type: 'input',\n name: 'language',\n text: product.formattedPrice,\n placeholder: t('enterLanguage') as string,\n settings: { required: true },\n });\n break;\n }\n\n params.push(\n {\n type: 'inputNumber',\n name: 'staff_amount',\n placeholder: t('personAmountPlaceholder') as string,\n settings: { required: true, min: 1 },\n },\n {\n type: 'inputNumber',\n name: 'day_amount',\n placeholder: t('dayAmountPlaceholder') as string,\n settings: { required: true, min: 1 },\n }\n );\n\n return {\n key: product.getProductId(),\n text:\n product.productDisplayName ||\n product.productName ||\n product.getProductId() + '',\n product: product,\n params,\n };\n });\n}\n\nexport default getTemporaryStaffConfig;\n","import React, { useCallback, useEffect, useState } from 'react';\nimport getTemporaryStaffConfig from './config';\nimport { Product } from '@/model/IProduct';\nimport { FieldValues } from 'react-hook-form';\nimport ProductCard from '@/components/Card/ProductCard';\nimport ReactShowMoreText from 'react-show-more-text';\nimport styled from 'styled-components';\nimport Row from './Row';\nimport { TemporaryStaffOrderItem } from '@/model/IOrderItem';\nimport fetchApi from '@/utils/fetchAPI';\nimport { GET_PRICELIST_PRODUCTS } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { DomainRecord } from '@/model/common';\nimport { Loader } from '@/components/Loader/Loader';\nimport { t } from 'i18next';\nimport { LoaderWrapper } from '@/theme/css/styles';\nimport { createExhibitionOrderServiceRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport { ITEPortal_Domain_Dto_PriceListItemSummary } from '@/api';\nimport { ProductUtils } from '@/utils/product-utils';\nimport { useStand } from '@/store/effector/stand';\nimport { orderApi } from '@/store/effector/order';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '../../../../api';\nimport { useVatSettings } from '@/store/effector/vat-settings';\nimport { Box, Text } from '@chakra-ui/react';\n\ninterface TemporaryStaffProps {\n description: ITEPortal_Domain_Dto_CategoryDto['description'];\n}\n\nexport const ShowMoreText = styled(ReactShowMoreText)`\n position: relative;\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 24px;\n padding-bottom: 20px;\n\n .show-more-less-clickable {\n position: absolute;\n right: 0;\n cursor: pointer;\n color: var(--chakra-colors-brandColor);\n text-decoration: none;\n transform: translateY(100%);\n }\n`;\n\nconst TemporaryStaff: React.FC<TemporaryStaffProps> = ({ description }) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [productItems, setProductItems] = useState<DomainRecord[]>([]);\n const { standForOrder } = useStand();\n const { vatMessage } = useVatSettings();\n const { exhibitionId } = createExhibitionOrderServiceRoute.useParams();\n\n const clickHandler = useCallback((product: Product, values: FieldValues) => {\n const language = values?.language as string | undefined;\n const personAmount = parseInt(values?.staff_amount);\n const dayAmount = parseInt(values?.day_amount);\n\n orderApi.addItem(\n new TemporaryStaffOrderItem({\n id: product.getProductId(),\n product: product,\n language: language,\n peopleAmount: personAmount,\n dayAmount: dayAmount,\n })\n );\n }, []);\n\n useEffect(() => {\n const fetchData = async () => {\n const culture = localStorage.getItem('lang');\n\n setIsSubmitting(true);\n try {\n const { data } = await fetchApi<\n Array<ITEPortal_Domain_Dto_PriceListItemSummary>\n >(GET_PRICELIST_PRODUCTS, {\n method: FetchMethods.Get,\n params: {\n exhibitionId,\n currency: standForOrder?.currency || undefined,\n buildingType: standForOrder?.buildingType,\n culture,\n },\n });\n\n const productItemCardData = data.filter(\n (item: any) => item.categoryName === CATEGORY_TYPES.TEMPORARY_STAFF\n );\n\n const productItemCardObjects = productItemCardData?.map((product) => {\n return ProductUtils.createProductFromPriceListItem(product);\n });\n\n const productItemsObjects = getTemporaryStaffConfig(\n productItemCardObjects\n );\n\n setProductItems(productItemsObjects);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n fetchData();\n }, []);\n\n return (\n <>\n {vatMessage && (\n <Box marginY={4}>\n <Text color=\"gray.500\">{vatMessage}</Text>\n </Box>\n )}\n {description && !isSubmitting && (\n <ShowMoreText\n lines={2}\n keepNewLines={false}\n more={t('showMore')}\n less={t('showLess')}\n anchorClass=\"show-more-less-clickable\"\n >\n {description}\n </ShowMoreText>\n )}\n {isSubmitting ? (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n ) : (\n productItems?.length > 0 && (\n <ProductCard>\n {productItems.map(({ key, text, product, params }) => (\n <Row\n key={key}\n submitHandler={clickHandler}\n label={text}\n product={product}\n params={params || []}\n />\n ))}\n </ProductCard>\n )\n )}\n </>\n );\n};\n\nexport default TemporaryStaff;\n","import { OrderTableRow } from '@/components/OrderTableRow/OrderTableRow';\nimport ProductCard from '@/components/Card/ProductCard';\nimport { ShowMoreText } from '@/components/Forms/Services/TemporaryStaff';\nimport { useTranslation } from 'react-i18next';\nimport { Loader } from '@/components/Loader/Loader';\nimport { LoaderWrapper } from '@/theme/css/styles';\nimport { Category } from '@/model/ICategory';\nimport TechnicalServicesGrid from '@/components/TechnicalServicesGrid';\nimport { useProductsLoader } from './use-products-loader';\nimport { Box, Text } from '@chakra-ui/react';\nimport { useVatSettings } from '@/store/effector/vat-settings';\n\ninterface ProductItemsCardProps {\n serviceCategory: Category;\n}\n\nconst ProductItemsCard = ({ serviceCategory }: ProductItemsCardProps) => {\n const serviceSpecification = serviceCategory.id;\n const { t } = useTranslation();\n const { vatMessage } = useVatSettings();\n\n const { productItems, isLoading } = useProductsLoader({\n categoryId: serviceSpecification,\n });\n\n if (isLoading) {\n return (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n );\n }\n\n return (\n <>\n {vatMessage && (\n <Box marginY={4}>\n <Text color=\"gray.500\">{vatMessage}</Text>\n </Box>\n )}\n {serviceCategory.description && (\n <ShowMoreText\n lines={2}\n keepNewLines\n more={t('showMore')}\n less={t('showLess')}\n anchorClass=\"show-more-less-clickable\"\n >\n {serviceCategory.description}\n </ShowMoreText>\n )}\n\n {serviceCategory.tree.length > 0 && (\n <Box mb={4}>\n <TechnicalServicesGrid category={serviceCategory} />\n </Box>\n )}\n\n <ProductCard>\n {productItems.map(({ key, text, params, product }, index) => {\n //Temporary solution\n\n return (\n <OrderTableRow\n key={key}\n rowData={{\n text,\n params: params || [],\n }}\n product={product}\n withDivider={index !== productItems?.length - 1}\n />\n );\n })}\n </ProductCard>\n </>\n );\n};\n\nexport default ProductItemsCard;\n","import { useEffect, useState } from 'react';\nimport { typedAxios } from '@/api/typed-axios';\nimport getConfig from '../defaultConfig';\nimport { createExhibitionOrderServiceRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport { IdType, DomainRecord } from '@/model/common';\nimport { ProductUtils } from '@/utils/product-utils';\nimport { useStand } from '@/store/effector/stand';\nimport { useCatalog } from '@/store/effector/catalog';\n\nexport const useProductsLoader = (opts: { categoryId: IdType }) => {\n const { categoryId } = opts;\n\n const { flatMap } = useCatalog();\n const [isLoading, setLoading] = useState(false);\n const [productItems, setProductItems] = useState<DomainRecord[]>([]);\n const { standForOrder } = useStand();\n const { exhibitionId } = createExhibitionOrderServiceRoute.useParams();\n const categoriesSource = [...flatMap.values()];\n\n useEffect(() => {\n const fetchData = async () => {\n setLoading(true);\n try {\n const data = await typedAxios.priceListItem.getPricelistItems({\n exhibitionId: +exhibitionId,\n currency: standForOrder?.currency || undefined,\n buildingType: standForOrder?.buildingType,\n categoryIds: categoryId + '' || undefined,\n });\n\n const productItemCardObjects = data?.map((product) => {\n const category = categoriesSource.find((cat) => {\n return cat.id === product.categoryId;\n });\n\n return ProductUtils.createProductFromPriceListItem(product, {\n category,\n });\n });\n\n const productItemsObjects = getConfig(productItemCardObjects);\n\n setProductItems(productItemsObjects);\n } finally {\n setLoading(false);\n }\n };\n\n fetchData();\n }, [categoryId]);\n\n return {\n isLoading,\n productItems,\n };\n};\n","import { DomainRecord } from '@/model/common';\nimport { Product } from '@/model/IProduct';\n\nexport default function getConfig(products: Product[]): DomainRecord[] {\n return products.map((product) => ({\n key: product.getProductId(),\n text:\n product.productDisplayName ||\n product.productName ||\n product.getProductId(),\n product: product,\n params: [\n {\n type: 'price',\n text: product.formattedPrice,\n },\n ],\n }));\n}\n","import styled from 'styled-components';\nimport BrandBox from '@/components/BrandBox';\nimport ProfileMenu from '@/components/Profile/ProfileMenu';\nimport Menu from '@/components/Menu';\nimport { headerMenuConfig } from '@/components/Header/headerMenuConfig';\nimport Search from '@/components/Search';\nimport { useMatches, useParams } from '@tanstack/react-router';\nimport { LanguageSwitcher } from '@/components/LanguageSwitcher/LanguageSwitcher';\nimport { Flex } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { AdminSearch } from '../AdminSearch';\nimport { useAuth } from '@/store/effector/auth';\n\nconst NavBar = styled.header`\n display: flex;\n flex-direction: row;\n\n padding: 16px 20px;\n height: var(--chakra-sizes-nav-bar-height);\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n\n background: #fff;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n flex-grow: 1;\n\n justify-content: end;\n`;\n\nconst StyleMenu = styled(Menu)`\n margin-left: 32px;\n`;\n\nconst StyledSearch = styled(Search)`\n max-width: 222px;\n margin-right: 32px;\n`;\n\nconst RightBlockWrapper = styled(Flex)`\n flex-direction: column;\n align-items: end;\n justify-content: center;\n padding-bottom: 10px;\n`;\n\nconst Header: React.FC = () => {\n const { user } = useAuth();\n\n const matchContext = useMatches().at(-1)?.context || {\n key: 'default',\n };\n\n const { exhibitionId, stand } = useParams({ strict: false }) || {};\n const { t } = useTranslation();\n const shouldRenderExhibitionSearchForExhibitor =\n Boolean(user?.isExhibitor) && Boolean(exhibitionId) && Boolean(stand);\n\n const shouldRenderPageSpecificSearch = !user?.isExhibitor;\n\n return (\n <NavBar>\n <BrandBox />\n {user?.isExhibitor && (\n <StyleMenu direction=\"row\" config={headerMenuConfig(t)} />\n )}\n <Wrapper>\n {shouldRenderExhibitionSearchForExhibitor && (\n <StyledSearch exhibitionId={exhibitionId} stand={stand} />\n )}\n {shouldRenderPageSpecificSearch && (\n <AdminSearch key={JSON.stringify(matchContext)} />\n )}\n <RightBlockWrapper>\n <LanguageSwitcher />\n <ProfileMenu />\n </RightBlockWrapper>\n </Wrapper>\n </NavBar>\n );\n};\n\nexport default Header;\n","import { IMenuConfig } from '@/components/Menu/config';\nimport { WarningIcon } from '@chakra-ui/icons';\nimport { typedAxios } from '../../api/typed-axios';\nimport { UrlUtils } from '../../utils/url-utils';\n\nconst saveManual = async () => {\n typedAxios.request\n .request({\n url: '/global-settings/exhibitor-manual',\n method: 'GET',\n query: {\n culture: localStorage.getItem('lang'),\n },\n })\n .then((manualUrl) => {\n if (manualUrl && typeof manualUrl === 'string') {\n window.open(UrlUtils.appendTimestampToUrl(manualUrl), '_blank');\n }\n });\n};\n\nexport const headerMenuConfig = (t: any) => {\n return {\n items: [\n {\n key: 'manual',\n name: t('participantManual'),\n to: saveManual,\n icon: <WarningIcon fontSize=\"11px\" />,\n },\n ],\n } as IMenuConfig;\n};\n","const DevelopmentIcon = () => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n id=\"Layer_1\"\n data-name=\"Layer 1\"\n viewBox=\"0 0 85.04 85.04\"\n >\n <path\n d=\"M41.65 65.39H30.36c-.58 0-1.04-.47-1.04-1.04V33.97c0-.58.47-1.04 1.04-1.04h11.29c.58 0 1.04.47 1.04 1.04v30.38c0 .58-.47 1.04-1.04 1.04ZM31.4 63.31h9.2V35.02h-9.2v28.29Z\"\n className=\"cls-1\"\n />\n <path\n d=\"M45.38 35.02H26.63c-.58 0-1.04-.47-1.04-1.04V23.72c0-.58.47-1.04 1.04-1.04h18.76c.58 0 1.04.47 1.04 1.04v10.26c0 .58-.47 1.04-1.04 1.04Zm-17.71-2.08h16.67v-8.17H27.67v8.17Z\"\n className=\"cls-1\"\n />\n <path\n d=\"M26.63 32.12h-5.12c-.58 0-1.04-.47-1.04-1.04v-4.46c0-.58.47-1.04 1.04-1.04h5.12a1.04 1.04 0 1 1 0 2.08h-4.08v2.38h4.08a1.04 1.04 0 1 1 0 2.08Zm35.3 0H45.39a1.04 1.04 0 1 1 0-2.08h15.5v-2.38h-15.5a1.04 1.04 0 1 1 0-2.08h16.54c.58 0 1.04.47 1.04 1.04v4.46c0 .58-.47 1.04-1.04 1.04Zm1.6 27.89H52.42c-.58 0-1.04-.47-1.04-1.04v-5.48c0-.58.47-1.04 1.04-1.04h11.11c.58 0 1.04.47 1.04 1.04v5.48c0 .58-.47 1.04-1.04 1.04Zm-10.07-2.08h9.03v-3.39h-9.03v3.39Z\"\n className=\"cls-1\"\n />\n <path\n d=\"M57.97 48.9c-.58 0-1.04-.47-1.04-1.04v-16.7a1.04 1.04 0 1 1 2.08 0v16.7c0 .58-.47 1.04-1.04 1.04Z\"\n className=\"cls-1\"\n />\n <path\n d=\"M52.42 54.54c-.28 0-.56-.11-.77-.33-.39-.42-.36-1.08.06-1.47l5.78-5.34c.41-.38 1.05-.37 1.44.03l5.34 5.34c.41.41.41 1.07 0 1.47-.41.41-1.07.41-1.47 0l-4.63-4.63-5.04 4.66c-.2.19-.45.28-.71.28ZM41.65 65.39c-.22 0-.45-.07-.64-.22L29.72 56.4c-.28-.21-.43-.55-.4-.9.03-.35.22-.66.53-.83l9.88-5.54-9.99-7.38c-.28-.21-.44-.54-.42-.88.01-.35.2-.66.5-.84l11.29-6.93a1.039 1.039 0 1 1 1.09 1.77L32.23 41l10.05 7.42c.28.21.44.55.42.9-.02.35-.22.67-.53.84l-9.92 5.57 10.05 7.81c.45.35.54 1.01.18 1.46-.21.26-.51.4-.82.4Z\"\n className=\"cls-1\"\n />\n </svg>\n);\n\nexport default DevelopmentIcon;\n","import { forwardRef, Icon, IconProps } from '@chakra-ui/react';\n\nexport const DraggableHandlerIcon = forwardRef((props: IconProps, ref) => {\n return (\n <Icon\n width={5}\n height={5}\n {...props}\n ref={ref}\n viewBox=\"0 0 25 25\"\n fill=\"gray.800\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.5 8C10.3284 8 11 7.32843 11 6.5C11 5.67157 10.3284 5 9.5 5C8.67157 5 8 5.67157 8 6.5C8 7.32843 8.67157 8 9.5 8ZM9.5 14C10.3284 14 11 13.3284 11 12.5C11 11.6716 10.3284 11 9.5 11C8.67157 11 8 11.6716 8 12.5C8 13.3284 8.67157 14 9.5 14ZM11 18.5C11 19.3284 10.3284 20 9.5 20C8.67157 20 8 19.3284 8 18.5C8 17.6716 8.67157 17 9.5 17C10.3284 17 11 17.6716 11 18.5ZM15.5 8C16.3284 8 17 7.32843 17 6.5C17 5.67157 16.3284 5 15.5 5C14.6716 5 14 5.67157 14 6.5C14 7.32843 14.6716 8 15.5 8ZM17 12.5C17 13.3284 16.3284 14 15.5 14C14.6716 14 14 13.3284 14 12.5C14 11.6716 14.6716 11 15.5 11C16.3284 11 17 11.6716 17 12.5ZM15.5 20C16.3284 20 17 19.3284 17 18.5C17 17.6716 16.3284 17 15.5 17C14.6716 17 14 17.6716 14 18.5C14 19.3284 14.6716 20 15.5 20Z\"\n fill=\"currentColor\"\n />\n </Icon>\n );\n});\n","import { Icon, IconProps } from '@chakra-ui/react';\n\nexport const OrdersIcon = (props: IconProps) => {\n return (\n <Icon\n {...props}\n style={{ width: 23, height: 23 }}\n viewBox=\"0 0 1024 1024\"\n fill=\"gray.800\"\n >\n <path d=\"M733.280244 645.89143c-54.359049 0-98.429777 44.246737-98.429777 98.812493 0 54.606689 44.069705 98.841146 98.429777 98.841146s98.429777-44.234457 98.429777-98.841146C831.710021 690.138166 787.639293 645.89143 733.280244 645.89143zM798.258141 718.952422c0 0-70.821999 69.891813-71.161736 70.244854-8.068769 7.971555-12.287861 6.702656-15.875572 3.081175l-42.341341-42.518373c-3.597945-3.598968-3.388167-9.66615 0.457418-13.522991s9.865695-4.068665 13.462616-0.447185l34.643008 34.781154 67.068512-65.75868c3.8814-3.810792 10.113335-3.727904 13.922081 0.163729C802.221406 708.886159 802.149774 715.142653 798.258141 718.952422zM406.700257 248.419859l150.802588 0c15.897062 0 29.290093-15.004739 29.290093-33.512255 0-18.49626-13.368472-33.441647-30.137391-33.441647l-149.95529 0c-16.743336 0-30.125111 14.944364-30.125111 33.441647C376.576169 233.416144 389.992737 248.419859 406.700257 248.419859zM721.910289 615.155405c17.553795 0 34.264385 3.656273 49.408293 10.252505l0-331.22375c0-45.398979-24.387433-76.853365-75.464739-76.853365l-67.963904 0c0.681522 3.63376 1.081635 7.349385 1.081635 11.100826 0.035816 28.137851-20.306488 55.82954-44.493354 55.82954l-208.795397 0c-25.451672 0-45.811372-27.691689-45.811372-55.82954 0.035816-3.751441 0.417509-7.467065 1.116427-11.100826l-68.792782 0c-55.282071 0-68.858274 31.454386-68.858274 76.853365l0 449.64893c0 48.773843 19.442818 76.077699 73.043596 76.077699l360.027773 0c-18.014282-21.659299-28.856211-49.526997-28.856211-79.933517C597.55198 671.042249 653.240303 615.155405 721.910289 615.155405zM338.448804 388.063293l294.685579 0c10.886955 0 20.10592 10.17064 20.917402 21.929452 0 10.958586-11.464099 22.717398-22.340821 22.717398L336.19753 432.710143c-10.906397 0-17.832134-11.757788-17.832134-22.717398C318.365396 399.021879 327.566966 388.063293 338.448804 388.063293zM471.149105 684.799578 336.19753 684.799578c-10.906397 0-17.832134-11.746532-17.832134-22.717398 0-10.946306 9.201569-21.905916 20.083407-21.905916l134.122697 0c10.900258 0 20.106943 10.148128 20.918425 21.905916C493.489926 673.053046 482.038106 684.799578 471.149105 684.799578zM334.985936 560.713468c-10.894118 0-21.753443-13.415544-21.753443-24.375154 0-10.912537 9.18929-20.259416 20.095687-20.259416l294.677393 0c10.889001 0 20.084431 8.501628 20.919449 20.259416 0 10.959609-7.515161 24.375154-18.413372 24.375154L334.985936 560.713468z\" />\n </Icon>\n );\n};\n","import { Icon, IconProps } from '@chakra-ui/react';\n\nexport const UsersIcon = (props: IconProps) => {\n return (\n <Icon {...props} viewBox=\"0 0 80.13 80.13\" fill=\"gray.800\">\n <path\n d=\"M48.355,17.922c3.705,2.323,6.303,6.254,6.776,10.817c1.511,0.706,3.188,1.112,4.966,1.112\n\t\tc6.491,0,11.752-5.261,11.752-11.751c0-6.491-5.261-11.752-11.752-11.752C53.668,6.35,48.453,11.517,48.355,17.922z M40.656,41.984\n\t\tc6.491,0,11.752-5.262,11.752-11.752s-5.262-11.751-11.752-11.751c-6.49,0-11.754,5.262-11.754,11.752S34.166,41.984,40.656,41.984\n\t\tz M45.641,42.785h-9.972c-8.297,0-15.047,6.751-15.047,15.048v12.195l0.031,0.191l0.84,0.263\n\t\tc7.918,2.474,14.797,3.299,20.459,3.299c11.059,0,17.469-3.153,17.864-3.354l0.785-0.397h0.084V57.833\n\t\tC60.688,49.536,53.938,42.785,45.641,42.785z M65.084,30.653h-9.895c-0.107,3.959-1.797,7.524-4.47,10.088\n\t\tc7.375,2.193,12.771,9.032,12.771,17.11v3.758c9.77-0.358,15.4-3.127,15.771-3.313l0.785-0.398h0.084V45.699\n\t\tC80.13,37.403,73.38,30.653,65.084,30.653z M20.035,29.853c2.299,0,4.438-0.671,6.25-1.814c0.576-3.757,2.59-7.04,5.467-9.276\n\t\tc0.012-0.22,0.033-0.438,0.033-0.66c0-6.491-5.262-11.752-11.75-11.752c-6.492,0-11.752,5.261-11.752,11.752\n\t\tC8.283,24.591,13.543,29.853,20.035,29.853z M30.589,40.741c-2.66-2.551-4.344-6.097-4.467-10.032\n\t\tc-0.367-0.027-0.73-0.056-1.104-0.056h-9.971C6.75,30.653,0,37.403,0,45.699v12.197l0.031,0.188l0.84,0.265\n\t\tc6.352,1.983,12.021,2.897,16.945,3.185v-3.683C17.818,49.773,23.212,42.936,30.589,40.741z\"\n />\n </Icon>\n );\n};\n","import Lightbox, { SlideImage } from 'yet-another-react-lightbox';\nimport Inline from 'yet-another-react-lightbox/plugins/inline';\nimport 'yet-another-react-lightbox/styles.css';\nimport 'yet-another-react-lightbox/plugins/thumbnails.css';\n\nimport { useMemo, useState } from 'react';\nimport styled from 'styled-components';\nimport { Box, HStack } from '@chakra-ui/react';\n\ninterface BuildingStandardBodyProps {\n images: string[];\n}\n\nconst DotsWrapper = styled(HStack)`\n justify-content: center;\n position: absolute;\n bottom: 8px;\n width: 100%;\n`;\n\nconst DotsContainer = styled(Box)`\n cursor: pointer;\n margin: 0 2px;\n border-radius: 50%;\n display: inline-block;\n transition: background-color 0.6s ease;\n\n &:hover {\n background: black;\n }\n`;\n\nexport const BuildingGallery = ({\n images,\n}: BuildingStandardBodyProps): JSX.Element => {\n const [open, setOpen] = useState(false);\n const [index, setIndex] = useState(0);\n\n const slides = useMemo<Array<SlideImage>>(() => {\n return images.map((image) => {\n return {\n id: image,\n src: image,\n };\n });\n }, [images]);\n\n const toggleOpen = (state: boolean) => () => setOpen(state);\n\n const updateIndex = ({ index: current }: { index: number }) =>\n setIndex(current);\n\n const singleImage = slides.length <= 1;\n\n return (\n <Box position=\"relative\">\n <Lightbox\n index={index}\n slides={slides}\n plugins={[Inline]}\n on={{\n view: updateIndex,\n click: toggleOpen(true),\n }}\n carousel={{\n padding: 0,\n spacing: 0,\n imageFit: 'cover',\n finite: singleImage,\n }}\n render={{\n iconPrev: singleImage ? () => null : undefined,\n iconNext: singleImage ? () => null : undefined,\n }}\n inline={{\n style: {\n width: '100%',\n maxWidth: '430px',\n aspectRatio: '3 / 2',\n margin: '0 auto',\n },\n }}\n />\n {!singleImage && (\n <DotsWrapper>\n {Array.from({ length: slides.length }).map((_, slide) => (\n <DotsContainer\n key={`dots-${slide}`}\n boxSize={['7px', null, '10px']}\n bg={index === slide ? '#ffffff' : 'blackAlpha.200'}\n onClick={() => updateIndex({ index: slide })}\n />\n ))}\n </DotsWrapper>\n )}\n\n <Lightbox\n open={open}\n close={toggleOpen(false)}\n index={index}\n slides={slides}\n carousel={{\n finite: singleImage,\n }}\n on={{ view: updateIndex }}\n animation={{ fade: 0 }}\n render={{\n iconPrev: singleImage ? () => null : undefined,\n iconNext: singleImage ? () => null : undefined,\n }}\n controller={{ closeOnPullDown: true, closeOnBackdropClick: true }}\n styles={{ root: { '--yarl__color_backdrop': 'rgba(0, 0, 0, .7)' } }}\n />\n </Box>\n );\n};\n","import styled from 'styled-components';\n\nexport const Thumbnail = styled.img`\n height: 40px;\n border-radius: 5px;\n width: auto;\n margin-right: 0.5rem;\n cursor: pointer;\n opacity: 0.9;\n\n &:hover {\n opacity: 1;\n }\n`;\n","import Lightbox, { SlideImage } from 'yet-another-react-lightbox';\nimport 'yet-another-react-lightbox/styles.css';\nimport 'yet-another-react-lightbox/plugins/thumbnails.css';\n\nimport { useMemo, useState } from 'react';\nimport { Flex, Text } from '@chakra-ui/react';\nimport { Thumbnail } from '@/components/ImageGalleries/CommonProductGallery.styled';\nimport { useFeatureValue } from '@/features/feautres';\n\ninterface BuildingStandardBodyProps {\n images: string[];\n}\n\nexport const CommonProductGallery = ({ images }: BuildingStandardBodyProps) => {\n const [open, setOpen] = useState(false);\n const [index, setIndex] = useState(0);\n const thumbnailsCount = useFeatureValue(\n 'PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT',\n 3\n );\n\n const slides = useMemo<Array<SlideImage>>(() => {\n return images.map((image) => {\n return {\n id: image,\n src: image,\n };\n });\n }, [images]);\n\n const visibleSlides = slides.slice(0, thumbnailsCount);\n const hiddenSlidesCount = slides.length - thumbnailsCount;\n\n const toggleOpen = (state: boolean) => () => setOpen(state);\n\n const updateIndex = ({ index: current }: { index: number }) =>\n setIndex(current);\n\n if (!visibleSlides.length) {\n return null;\n }\n\n return (\n <>\n <Flex flexDirection=\"row\" alignItems=\"center\">\n {visibleSlides.map((slide, i) => (\n <Thumbnail\n key={slide.src}\n src={slide.src}\n onClick={() => {\n updateIndex({ index: i });\n toggleOpen(true)();\n }}\n />\n ))}\n {hiddenSlidesCount > 0 && (\n <Text color=\"gray.400\" whiteSpace=\"nowrap\">\n + {hiddenSlidesCount}\n </Text>\n )}\n </Flex>\n\n <Lightbox\n open={open}\n close={toggleOpen(false)}\n index={index}\n slides={slides}\n on={{ view: updateIndex }}\n animation={{ fade: 0 }}\n controller={{ closeOnPullDown: true, closeOnBackdropClick: true }}\n styles={{ root: { '--yarl__color_backdrop': 'rgba(0, 0, 0, .7)' } }}\n />\n </>\n );\n};\n","import { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport { Box, Divider } from '@chakra-ui/react';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport { SystemLangType } from '../../model/common';\nimport { commonApi, useCommonStore } from '@/store/effector/common';\n\nconst ButtonsWrapper = styled(Box)`\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n`;\n\nexport const LanguageSwitcher = (): JSX.Element => {\n const { i18n } = useTranslation();\n const { lang: language } = useCommonStore();\n const [lngValue, setLngValue] = useState(language);\n\n useEffect(() => {\n setLngValue(language);\n setLanguageValue(language);\n }, [language]);\n\n const setLanguageValue = (languageValue: SystemLangType) => {\n commonApi.setLanguage(languageValue);\n\n if (localStorage.getItem('lang') !== languageValue) {\n localStorage.setItem('lang', languageValue);\n i18n.changeLanguage(languageValue);\n location.reload();\n }\n };\n\n return (\n <ButtonsWrapper>\n <OrderButton\n colorScheme=\"transparent\"\n width=\"70px\"\n defaultColor={lngValue === 'ru' ? '#E8431A' : ''}\n onClick={() => setLanguageValue('ru')}\n >\n Русский\n </OrderButton>\n <Divider orientation=\"vertical\" height=\"20px\" colorScheme=\"red\" />\n <OrderButton\n colorScheme=\"transparent\"\n width=\"70px\"\n defaultColor={lngValue === 'en' ? '#E8431A' : ''}\n onClick={() => setLanguageValue('en')}\n >\n English\n </OrderButton>\n </ButtonsWrapper>\n );\n};\n","import React, { PropsWithChildren } from 'react';\nimport { Box, BoxProps, Spinner, SpinnerProps } from '@chakra-ui/react';\n\nexport const Loader = ({\n centralized,\n ...rest\n}: {\n centralized?: boolean;\n} & SpinnerProps): JSX.Element => {\n return (\n <Spinner\n thickness=\"4px\"\n speed=\"0.65s\"\n emptyColor=\"gray.200\"\n color=\"red.500\"\n size=\"xl\"\n {...(centralized\n ? ({\n style: {\n position: 'fixed',\n top: '50%',\n left: '50%',\n },\n } satisfies SpinnerProps)\n : {})}\n {...rest}\n />\n );\n};\n\nconst LoaderWrapperLoadingStyles: BoxProps = {\n opacity: 0.6,\n pointerEvents: 'none',\n userSelect: 'none',\n};\n\nexport const LoaderWrapper = (\n props: PropsWithChildren<{ loading: boolean } & BoxProps>\n) => {\n const { loading, children, ...boxProps } = props;\n\n return (\n <Box {...(loading ? LoaderWrapperLoadingStyles : {})} {...boxProps}>\n {props.loading && (\n <Loader\n style={{\n position: 'absolute',\n left: '50%',\n top: '50%',\n zIndex: 1,\n }}\n />\n )}\n {children}\n </Box>\n );\n};\n","import React, { useCallback } from 'react';\nimport styled from 'styled-components';\nimport MenuItem from './MenuItem';\nimport { IMenuConfig } from './config';\nimport { Button } from '@chakra-ui/react';\nimport { useNavigate } from '@tanstack/react-router';\n\ninterface ListProps {\n direction?: 'row' | 'column';\n}\n\nconst List = styled.ul<ListProps>`\n display: flex;\n flex-direction: ${(props) => props.direction};\n align-items: center;\n\n padding-left: 0;\n margin-left: 0;\n\n list-style: none;\n`;\n\ninterface MenuProps extends ListProps {\n config: IMenuConfig;\n className?: string;\n}\n\nconst Menu: React.FC<MenuProps> = ({\n config,\n className,\n direction = 'row',\n}) => {\n const navigate = useNavigate();\n\n const redirectTo = useCallback(\n (path: string) => navigate({ to: path, replace: true }),\n []\n );\n\n return (\n <List direction={direction} className={className}>\n {config.items.map(({ key, name, icon, to }) => {\n const onClick = () => {\n if (to) {\n if (typeof to === 'function') {\n return to();\n }\n\n return redirectTo(to);\n }\n };\n\n return (\n <MenuItem key={key}>\n {to ? (\n <Button\n rightIcon={icon}\n height=\"auto\"\n variant=\"brandSecondary\"\n onClick={onClick}\n >\n {name}\n </Button>\n ) : (\n name\n )}\n </MenuItem>\n );\n })}\n </List>\n );\n};\n\nexport default Menu;\n","import styled from 'styled-components';\n\nconst Item = styled.li<{ active: boolean }>`\n margin: 0;\n\n color: ${({ active }) =>\n active ? 'rgba(0, 0, 0, 0.7)' : 'rgba(0, 0, 0, 0.5)'};\n\n transition: color ease-in-out 15ms;\n cursor: pointer;\n\n &:hover {\n color: rgba(0, 0, 0, 0.7);\n }\n\n > * {\n padding: 0.5rem 1rem;\n }\n`;\n\ninterface MenuItem {\n children?: React.ReactNode;\n active?: boolean;\n}\n\nconst MenuItem: React.FC<MenuItem> = ({ children, active = false }) => {\n return <Item active={active}>{children}</Item>;\n};\n\nexport default MenuItem;\n","import {\n Button,\n ButtonGroup,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n} from '@chakra-ui/react';\nimport { $modalContext, $modalStack, ModalFactory } from './api';\nimport { useUnit } from 'effector-react';\nimport { useTranslation } from 'react-i18next';\nimport { AsyncButton } from '@/components/AsyncButton';\n\nexport const ModalFactoryProvider = () => {\n const { t } = useTranslation();\n const modals = useUnit($modalStack);\n\n if (modals.length === 0) {\n return null;\n }\n\n return (\n <>\n {modals.map((modal, index) => {\n const shouldUseOverlay = index === 0;\n\n return (\n <Modal\n key={modal.id || index}\n isOpen={!!modal.isOpened}\n onClose={ModalFactory.close}\n size=\"xl\"\n scrollBehavior=\"inside\"\n isCentered\n >\n {shouldUseOverlay && <ModalOverlay />}\n <ModalContent>\n <ModalHeader>{modal.title}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <modal.Component />\n </ModalBody>\n\n <ModalFooter justifyContent=\"center\" alignItems=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <Button\n variant=\"outline\"\n colorScheme=\"red\"\n minW={120}\n onClick={() => ModalFactory.close(modal.id)}\n >\n {modal.cancelLabel || t('cancel')}\n </Button>\n {modal.okLabel && (\n <AsyncButton\n minW={120}\n colorScheme=\"red\"\n onClick={async () => {\n return modal.onOk?.($modalContext.getState());\n }}\n >\n {modal.okLabel}\n </AsyncButton>\n )}\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n })}\n </>\n );\n};\n","import { createDomain, createApi } from 'effector';\nimport { ComponentType, ReactNode, useEffect } from 'react';\nimport { attempt } from '../../utils/attempt';\nimport i18n from '../../i18n';\n\nexport type ModalDescriptor = {\n id?: string;\n isOpened?: boolean;\n okLabel?: ReactNode;\n cancelLabel?: ReactNode;\n onOk?: (modalContext?: any) => Promise<void>;\n onCancel?: () => Promise<void>;\n Component: ComponentType;\n title?: ReactNode;\n};\n\nconst domain = createDomain('modal-factory');\n\ntype StackType = ModalDescriptor[];\nexport const $modalStack = domain.createStore<StackType>([]);\n\nconst defaultModalProps: Partial<ModalDescriptor> = {\n isOpened: true,\n};\n\nconst infoModalDefaultProps: Partial<ModalDescriptor> = {\n title: 'Success',\n okLabel: '',\n cancelLabel: 'Close',\n ...defaultModalProps,\n};\n\nconst confirmModalDefaultProps: Partial<ModalDescriptor> = {\n title: i18n.t('attention'),\n okLabel: i18n.t('yes'),\n cancelLabel: i18n.t('cancel'),\n onCancel: async () => {\n ModalFactory.close();\n },\n ...defaultModalProps,\n};\n\nexport const $modalContext = domain.createStore<unknown>(null);\n\nexport const ModalFactory = {\n ...createApi($modalStack, {\n show: (_, newModal: ModalDescriptor) => [\n ..._,\n { ...defaultModalProps, ...newModal, isOpened: true },\n ],\n info: (_, newModal: ModalDescriptor) => [\n ..._,\n { ...infoModalDefaultProps, ...newModal, isOpened: true },\n ],\n confirm: (_, newModal: ModalDescriptor) => [\n ..._,\n { ...confirmModalDefaultProps, ...newModal, isOpened: true },\n ],\n closeAll: () => [],\n closeById: (_, id: ModalDescriptor['id']) => {\n if (!id) {\n return _;\n }\n\n return _.filter((d) => d.id !== id);\n },\n close: (_, id: string | undefined) => {\n let descriptorById: ModalDescriptor | null = null;\n\n if (typeof id === 'string') {\n const indexOfDescriptor = _.findIndex((d) => d.id === id);\n\n if (indexOfDescriptor === -1) {\n return _;\n }\n\n descriptorById = _.splice(indexOfDescriptor, 1)[0];\n }\n\n const lastModalDescriptor = descriptorById ? descriptorById : _.pop();\n\n if (!lastModalDescriptor) {\n return [];\n }\n\n setTimeout(() => {\n // todo this breaks a purity of reducer, needs to be refined\n if (typeof lastModalDescriptor?.onCancel === 'function') {\n attempt(() => lastModalDescriptor.onCancel?.());\n }\n }, 0);\n\n return [..._];\n },\n }),\n isOpened: $modalStack.map((stack) => {\n return stack.length > 0;\n }),\n\n isOpenedById: (id: string) => {\n return $modalStack.getState().some((d) => d.id === id);\n },\n ...createApi($modalContext, {\n updateContext: <S, T>(_: S, payload: T) => payload,\n }),\n};\n\nexport const useModalFactoryContextProvider = <T,>(context: T) => {\n useEffect(() => {\n ModalFactory.updateContext(context);\n }, [context]);\n};\n","import Select, { StylesConfig } from 'react-select';\nimport CreatableSelect from 'react-select/creatable';\nimport { FieldProps } from '@/components/Fields/interfaces';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport { Box, FormControl, FormErrorMessage } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport styled from 'styled-components';\nimport { FieldValues, useController, useFormContext } from 'react-hook-form';\nimport { useMemo } from 'react';\nimport { OptionType } from '../../model/common';\nimport { isArrayOfOptions, isOption } from '../../utils/is-option';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n`;\n\ninterface SelectComponentProps<T extends FieldValues = FieldValues>\n extends Omit<FieldProps<T>, 'settings'> {\n options?: OptionType[];\n isMulti?: boolean;\n closeMenuOnSelect?: boolean;\n blurInputOnSelect?: boolean;\n defaultValue?: OptionType | OptionType[];\n maxWidth?: string;\n minWidth?: string;\n onChange?: (value: any) => void;\n disabled?: boolean;\n allowCreate?: boolean;\n onClear?: () => void;\n}\n\nexport const SelectComponent = <T extends FieldValues = FieldValues>({\n label,\n options,\n isRequired,\n isMulti = false,\n closeMenuOnSelect = true,\n blurInputOnSelect = true,\n maxWidth,\n minWidth,\n onChange,\n disabled,\n name,\n allowCreate,\n onClear,\n ...props\n}: SelectComponentProps<T>): JSX.Element => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState, field } = useController({\n name: name,\n control: formContext.control,\n });\n\n const value = useMemo(() => {\n if (Array.isArray(field.value)) {\n if (field.value.every(isOption)) {\n return field.value;\n }\n }\n\n if (isOption(field.value)) {\n return field.value;\n }\n\n if (Array.isArray(options) && !Array.isArray(field.value)) {\n const option = options?.find((opt) => opt.value === field.value);\n\n if (option) {\n return option;\n }\n }\n\n if (Array.isArray(options) && isArrayOfOptions(field.value)) {\n const possibleValues = field.value\n // @ts-expect-error todo fix types\n .map((option) => option.value);\n\n return options.filter((opt) => possibleValues.includes(opt.value));\n }\n\n return null;\n }, [field, options]);\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const { t } = useTranslation();\n\n const selectStylesOverride: StylesConfig = {\n control: (styles, { isDisabled }) => ({\n ...styles,\n backgroundColor: isDisabled ? '#f7f7f7' : 'inherit',\n borderColor: fieldState.invalid ? 'red' : 'inherit',\n cursor: isDisabled ? 'not-allowed' : 'pointer',\n }),\n option: (styles) => ({ ...styles, minHeight: '40px' }),\n menuPortal: (styles) => ({ ...styles, zIndex: 10000 }),\n };\n\n const BaseComponent = allowCreate ? CreatableSelect : Select;\n\n return (\n <Box maxWidth={maxWidth} minWidth={minWidth}>\n <FormControlWrapper\n isInvalid={fieldState.invalid}\n isRequired={isRequired}\n >\n {label && <FormLabel htmlFor={name}>{label}</FormLabel>}\n <BaseComponent\n id={name}\n options={options}\n styles={selectStylesOverride}\n closeMenuOnSelect={closeMenuOnSelect}\n blurInputOnSelect={blurInputOnSelect}\n placeholder={t('select')}\n isMulti={isMulti}\n defaultValue={formContext.getValues(name)}\n isDisabled={disabled}\n isClearable\n menuPlacement=\"auto\"\n // menuIsOpen={true}\n {...props}\n {...field}\n value={value}\n menuPortalTarget={document.body}\n onChange={(event) => {\n if (event) {\n field.onChange(event);\n\n if (typeof onChange === 'function') {\n onChange(event);\n }\n } else if (event === null && typeof onClear === 'function') {\n // reset field state and propagate clearing select\n onClear();\n formContext.resetField(name);\n }\n }}\n />\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error?.message}</FormErrorMessage>\n )}\n </FormControlWrapper>\n </Box>\n );\n};\n","import { Badge, BadgeProps } from '@chakra-ui/react';\nimport { ITEPortal_Domain_Dto_AdminOrderSummary } from '@/api';\nimport { ORDER_STATUSES } from '@/constants/order';\nimport { isNil } from '@/utils/is-nil';\nimport i18n from '@/i18n';\n\ntype BadgeConfigType = {\n [key: string]: { color: BadgeProps['colorScheme']; label: string };\n};\n\nconst badgeConfig: BadgeConfigType = {\n [ORDER_STATUSES.Draft]: {\n color: 'gray',\n label: i18n.t('order-status-draft'),\n },\n [ORDER_STATUSES.Submitted]: {\n color: 'orange',\n label: i18n.t('order-status-submitted'),\n },\n [ORDER_STATUSES.Processing]: {\n color: 'yellow',\n label: i18n.t('order-status-processing'),\n },\n [ORDER_STATUSES.Invoiced]: {\n color: 'blue',\n label: i18n.t('order-status-invoiced'),\n },\n [ORDER_STATUSES.Paid]: {\n color: 'green',\n label: i18n.t('order-status-paid'),\n },\n [ORDER_STATUSES.Cancelled]: {\n color: 'red',\n label: i18n.t('order-status-cancelled'),\n },\n};\n\nexport const OrderBadge = ({\n status,\n}: {\n status: ITEPortal_Domain_Dto_AdminOrderSummary['orderStatus'];\n}) => {\n if (isNil(status)) {\n return null;\n }\n\n const badgeType = badgeConfig[status];\n\n return <Badge colorScheme={badgeType?.color}>{badgeType?.label}</Badge>;\n};\n","import React, { useCallback } from 'react';\nimport { Divider, Flex, Tooltip } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../Buttons/Button/Button';\nimport { FieldValues, RegisterOptions, UseFormRegister } from 'react-hook-form';\nimport { Product } from '@/model/IProduct';\nimport InputNumber from '../Fields/InputNumber';\nimport { IdType } from '@/model/common';\nimport { WarningIcon } from '@chakra-ui/icons';\nimport { TooltipWrapper } from '@/components/Forms/Services/TemporaryStaff/Row';\nimport {\n ButtonContainer,\n InfoSectionContainer,\n OrderTableRowContainer,\n OrderTableRowContainerBadgeComponent,\n OrderTableRowContainerInputComponent,\n OrderTableRowContainerInputWrapper,\n OrderTableRowContainerNameComponent,\n OrderTableRowContainerPriceComponent,\n OrderTableRowWrapper,\n ParamsSectionContainer,\n} from './styled';\nimport { AmountCounter } from '@/components/AmountCounter';\nimport { Nullable } from '../../types/support-types';\nimport { OrderItem } from '../../model/IOrderItem';\nimport { orderApi, useOrder } from '@/store/effector/order';\nimport { ITEPortal_Domain_Dto_PriceListItemSummary } from '@/api';\nimport { CommonProductGallery } from '@/components/ImageGalleries/CommonProductGallery';\n\ntype RowDataType = 'price' | 'input' | 'badge' | 'inputNumber';\n\nexport interface RowDataStructure {\n type: RowDataType;\n text?: string | null;\n name?: string | null;\n options?: BadgeItem[];\n placeholder?: string;\n settings?: RegisterOptions<FieldValues, string>;\n}\n\ninterface RowDataProps {\n rowData: {\n text: string;\n params: RowDataStructure[];\n };\n // submitHandler: (product: Product, values: FieldValues) => void;\n product: Product;\n withDivider?: boolean;\n}\n\ntype TextDataProp = {\n text?: string;\n id?: IdType;\n description?: Nullable<string>;\n} & Pick<ITEPortal_Domain_Dto_PriceListItemSummary, 'imageUrls'>;\n\nexport interface BadgeItem {\n key?: string | number;\n value: string | number;\n}\n\ninterface BadgeDataProp {\n register?: UseFormRegister<FieldValues>;\n options?: BadgeItem[];\n name?: string;\n placeholder?: string;\n settings?: RegisterOptions<FieldValues, string>;\n}\n\ninterface InputFieldProps {\n register?: UseFormRegister<FieldValues>;\n name?: string;\n placeholder?: string;\n settings?: RegisterOptions<FieldValues, string>;\n}\n\nconst NameComponent = ({\n text,\n description,\n imageUrls,\n}: TextDataProp): JSX.Element => {\n return (\n <OrderTableRowContainerNameComponent>\n <Flex direction=\"row\" justifyContent=\"space-between\">\n {text}\n {description && (\n <TooltipWrapper>\n <Tooltip hasArrow label={description}>\n <WarningIcon\n color=\"var(--chakra-colors-brandColor)\"\n verticalAlign=\"initial\"\n />\n </Tooltip>\n </TooltipWrapper>\n )}\n </Flex>\n {imageUrls && <CommonProductGallery images={imageUrls} />}\n </OrderTableRowContainerNameComponent>\n );\n};\n\nconst PriceComponent = ({ text }: TextDataProp): JSX.Element => {\n return (\n <OrderTableRowContainerPriceComponent>\n {text}\n </OrderTableRowContainerPriceComponent>\n );\n};\n\nconst InputComponent: React.FC<InputFieldProps> = ({\n register,\n placeholder,\n settings,\n name = 'field',\n}) => {\n const registerFieldName = register ? { ...register(name, settings) } : {};\n\n return (\n <OrderTableRowContainerInputWrapper>\n <OrderTableRowContainerInputComponent\n placeholder={placeholder}\n size=\"xs\"\n colorScheme=\"red\"\n type=\"number\"\n {...registerFieldName}\n />\n </OrderTableRowContainerInputWrapper>\n );\n};\n\nconst SelectComponent: React.FC<BadgeDataProp> = ({\n register,\n options,\n placeholder,\n settings,\n name = 'select',\n}) => {\n const registerFieldName = register ? { ...register(name, settings) } : {};\n\n return (\n <OrderTableRowContainerBadgeComponent\n size=\"xs\"\n bg=\"twitter\"\n name={name}\n rootProps={{ width: '150px' }}\n defaultValue=\"\"\n {...registerFieldName}\n >\n <option value=\"\" disabled>\n {placeholder}\n </option>\n {options?.map(({ key, value }) => {\n return (\n <option value={key} key={key}>\n {value}\n </option>\n );\n })}\n </OrderTableRowContainerBadgeComponent>\n );\n};\n\nconst rowDataComponentsConfig = {\n price: PriceComponent,\n inputNumber: InputNumber,\n input: InputComponent,\n badge: SelectComponent,\n};\n\nconst RowControl = ({ orderItem }: { orderItem: OrderItem }) => {\n const product = orderItem.product;\n\n const changeHandler = (value: number) => {\n orderApi.changeItem({\n id: product.getProductId(),\n product,\n amount: value,\n });\n };\n\n const isProductSupportsDecimals = product.category.isDecimal;\n\n return (\n <AmountCounter\n amountCounterValue={orderItem.getAmount()}\n onChange={(counterValue: number) => changeHandler(counterValue)}\n suffix={product instanceof Product ? product.unit : undefined}\n precision={isProductSupportsDecimals ? 2 : 0}\n step={product instanceof Product ? product.amountStep : 1}\n />\n );\n};\n\nconst AddItemToOrderButton = ({ product }: { product: Product }) => {\n const { t } = useTranslation();\n\n const addItem = useCallback((productToAdd: Product) => {\n const item = new OrderItem({\n id: productToAdd.getProductId(),\n product: productToAdd,\n });\n\n item.setAmount(1);\n\n orderApi.addItem(item);\n }, []);\n\n return (\n <Button\n buttonType=\"button\"\n height=\"100%\"\n colorScheme=\"secondary\"\n onClick={() => addItem(product)}\n >\n {t('choose')}\n </Button>\n );\n};\n\nexport const OrderTableRow = ({\n rowData,\n product,\n withDivider,\n}: RowDataProps): JSX.Element => {\n const { items } = useOrder();\n const { params, text } = rowData;\n const orderItem = items?.find((item) => item?.id === product?.productName);\n\n return (\n <OrderTableRowWrapper>\n <OrderTableRowContainer>\n <InfoSectionContainer>\n {text && (\n <NameComponent\n text={text}\n description={product?.description}\n imageUrls={product.imageUrls}\n />\n )}\n <ParamsSectionContainer>\n {params?.map((tableElement, key) => {\n const rowDataText = tableElement?.text as string;\n const rowDataOptions = tableElement?.options as BadgeItem[];\n\n const Component = rowDataComponentsConfig[tableElement?.type];\n\n if (!Component) {\n console.warn(`there is no Component for ${tableElement?.type}`);\n\n return null;\n }\n\n return (\n <Component\n key={key}\n text={rowDataText}\n options={rowDataOptions}\n name={tableElement.name || 'input'}\n placeholder={tableElement.placeholder}\n settings={tableElement.settings}\n />\n );\n })}\n </ParamsSectionContainer>\n </InfoSectionContainer>\n <ButtonContainer>\n {orderItem && !orderItem.included ? (\n <RowControl orderItem={orderItem} />\n ) : (\n <AddItemToOrderButton product={product} />\n )}\n </ButtonContainer>\n </OrderTableRowContainer>\n {withDivider && <Divider orientation=\"horizontal\" />}\n </OrderTableRowWrapper>\n );\n};\n","import styled from 'styled-components';\nimport { Input, Select } from '@chakra-ui/react';\n\nexport const OrderTableRowWrapper = styled.div`\n width: 100%;\n`;\n\nexport const OrderTableRowContainer = styled.form`\n display: flex;\n flex-direction: row;\n margin-left: auto;\n justify-content: space-between;\n align-items: center;\n max-width: 100%;\n padding-top: 1.3rem;\n padding-bottom: 1.3rem;\n`;\n\nexport const ButtonContainer = styled.div`\n display: flex;\n justify-content: end;\n height: 30px;\n`;\n\nexport const OrderTableRowContainerNameComponent = styled.div`\n font-size: 14px;\n line-height: 1.2;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: flex-start;\n gap: 1rem;\n\n @media all and (max-width: 1300px) {\n flex-direction: column;\n align-items: flex-start;\n }\n`;\n\nexport const OrderTableRowContainerPriceComponent = styled.div`\n font-size: 14px;\n min-width: 100px;\n text-align: center;\n font-weight: 600;\n`;\n\nexport const OrderTableRowContainerInputComponent = styled(Input)`\n padding: 0 5px;\n max-width: 50px;\n text-align: center;\n\n ::placeholder {\n text-align: center;\n }\n\n :focus {\n text-align: center;\n }\n`;\n\nexport const InfoSectionContainer = styled.div`\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-right: 20px;\n gap: 20px;\n`;\n\nexport const ParamsSectionContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n gap: 20px;\n`;\n\nexport const OrderTableRowContainerInputWrapper = styled.div`\n padding: 5px 0;\n min-width: 50px;\n`;\n\nexport const OrderTableRowContainerBadgeComponent = styled(Select)`\n padding: 5px 0;\n width: 150px;\n`;\n","import styled from 'styled-components';\nimport { Text, Avatar as ChakraAvatar } from '@chakra-ui/react';\n\nexport const Row = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n`;\n\nexport const Avatar = styled(ChakraAvatar)`\n max-width: 40px;\n max-height: 40px;\n\n border-radius: 50%;\n margin-left: 12px;\n`;\n\nexport const UserInfo = styled(Text)`\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n`;\n","import { User } from '@/model/IUser';\nimport { Row, UserInfo } from './Profile.styled';\nimport { ChevronDownIcon } from '@chakra-ui/icons';\nimport styled from 'styled-components';\n\ninterface ProfileProps {\n user: User;\n}\n\nconst StyledChevronDownIcon = styled(ChevronDownIcon)`\n margin-left: 8.7px;\n`;\n\nconst Profile: React.FC<ProfileProps> = ({ user }) => {\n return (\n <Row>\n <UserInfo>{user.fullName}</UserInfo>\n <StyledChevronDownIcon />\n </Row>\n );\n};\n\nexport default Profile;\n","import {\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n} from '@chakra-ui/react';\nimport Profile from './Profile';\nimport React, { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport styled from 'styled-components';\nimport { useNavigate } from '@tanstack/react-router';\nimport { authApi, useAuth } from '@/store/effector/auth';\nimport { exhibitorPathRootPath } from '@/features/Routing/userPaths';\nimport { useRBAC } from '@/features/rbac/useRBAC';\n\nconst StyledMenuList = styled(MenuList)`\n font-size: 0.8125rem;\n`;\n\nconst StyledMenuItem = styled(MenuItem)`\n padding: 0.35rem 1.2rem;\n`;\n\nconst ProfileMenu: React.FC = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { can } = useRBAC();\n\n const logOutHandler = useCallback(() => {\n authApi.logout();\n }, []);\n\n const toExhibitions = () => {\n navigate({\n to: exhibitorPathRootPath,\n });\n };\n\n const { user } = useAuth();\n\n if (!user) {\n return null;\n }\n\n return (\n <>\n <Menu>\n <MenuButton>\n <Profile user={user} />\n </MenuButton>\n <StyledMenuList marginY={0.5} borderRadius={0}>\n {can('canViewPublicExhibitions') && (\n <>\n <StyledMenuItem onClick={toExhibitions}>\n {t('myExhibitions')}\n </StyledMenuItem>\n\n <MenuDivider />\n </>\n )}\n <StyledMenuItem onClick={logOutHandler}>{t('logout')}</StyledMenuItem>\n </StyledMenuList>\n </Menu>\n </>\n );\n};\n\nexport default ProfileMenu;\n","import React, { useCallback, useRef } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport {\n AutoComplete,\n AutoCompleteInput,\n AutoCompleteItem,\n AutoCompleteList,\n} from '@choc-ui/chakra-autocomplete';\nimport { Box, InputGroup, InputLeftElement } from '@chakra-ui/react';\nimport { Search2Icon } from '@chakra-ui/icons';\nimport { Item } from '@choc-ui/chakra-autocomplete/dist/types';\nimport { useNavigate } from '@tanstack/react-router';\nimport { getPathByProduct } from '@/utils/route';\nimport { useCategoriesByData } from '@/hooks/categoriesConverter/useCategoriesByData';\nimport { queryOptions, useQuery, useQueryClient } from '@tanstack/react-query';\nimport { ProductUtils } from '@/utils/product-utils';\nimport { useStand } from '@/store/effector/stand';\nimport { useCatalog } from '@/store/effector/catalog';\nimport { typedAxios } from '@/api/typed-axios';\n\nconst Wrapper = styled.div`\n font-weight: 400;\n font-size: 16px;\n line-height: 24px;\n`;\n\nconst StyledInputGroup = styled(InputGroup)`\n color: #a0aec0;\n`;\n\ninterface SearchProps {\n className?: string;\n exhibitionId: string;\n stand: string;\n}\n\nconst filter = (query: string, optionValue: string, optionLabel: string) => {\n if (query.length > 0) {\n return optionLabel\n .trim()\n .toLowerCase()\n .includes(query.toLowerCase().trim());\n }\n\n return false;\n};\n\nconst Search: React.FC<SearchProps> = ({ className, exhibitionId, stand }) => {\n const queryClient = useQueryClient();\n const { flatMap } = useCatalog();\n\n const { standForOrder } = useStand();\n const source = useCategoriesByData([...flatMap.values()]);\n\n const categoryIds = source?.map((category) => category?.['id'])?.toString();\n\n const ref = useRef();\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n const onSelectHandler = useCallback(({ item }: { item: Item }) => {\n navigate({\n to: getPathByProduct(exhibitionId, stand, item.originalValue),\n replace: true,\n });\n\n return false;\n }, []);\n\n const autoCompleteQueryOptions = queryOptions({\n queryKey: [\n 'products-search',\n standForOrder?.buildingType,\n exhibitionId,\n categoryIds,\n standForOrder?.currency,\n ],\n enabled: false,\n queryFn: async () => {\n const response = await typedAxios.priceListItem.getPricelistItems({\n exhibitionId: +exhibitionId,\n currency: standForOrder?.currency || undefined,\n categoryIds,\n buildingType: standForOrder?.buildingType,\n });\n // const { data: response } = await fetchApi<\n // Array<ITEPortal_Domain_Dto_PriceListItemSummary>\n // >(GET_PRICELIST_PRODUCTS, {\n // method: FetchMethods.Get,\n // params: {\n // exhibitionId,\n // sellingOfficeId,\n // categoryIds,\n // buildingType: standForOrder?.buildingType,\n // },\n // });\n\n return response.map((product) => {\n return ProductUtils.createProductFromPriceListItem(product);\n });\n },\n });\n\n const { data = [], isFetching } = useQuery(autoCompleteQueryOptions);\n\n return (\n <Wrapper className={className}>\n <AutoComplete\n ref={ref}\n filter={filter}\n onSelectOption={onSelectHandler}\n freeSolo\n emptyState={\n <Box textAlign=\"center\">{t('notFoundOption') as string}</Box>\n }\n openOnFocus\n isLoading={isFetching}\n >\n <StyledInputGroup>\n <InputLeftElement pointerEvents=\"none\">\n <Search2Icon />\n </InputLeftElement>\n <AutoCompleteInput\n placeholder={t('searchService') as string}\n onFocus={() => {\n queryClient.ensureQueryData(autoCompleteQueryOptions);\n }}\n />\n </StyledInputGroup>\n <AutoCompleteList>\n {data.map((product) => (\n <AutoCompleteItem\n key={`option-${product.id}`}\n value={product}\n label={product.productDisplayName || product.getProductId()}\n >\n {product.productDisplayName || product.getProductId()}\n </AutoCompleteItem>\n ))}\n </AutoCompleteList>\n </AutoComplete>\n </Wrapper>\n );\n};\n\nexport default Search;\n","import React, { useEffect, useRef } from 'react';\nimport { Link, useParams } from '@tanstack/react-router';\nimport Sidebar from './Sidebar';\nimport styled from 'styled-components';\nimport { replacePaths } from '@/utils/route';\nimport {\n CREATE_EXHIBITION_ORDER_TAB_PATH,\n SHOW_SUPPORT_MANAGER_ADDITIONAL_PATH,\n SHOW_SUPPORT_MANAGER_PATH,\n} from '@/constants/router';\nimport SimpleBarCore from 'simplebar-core';\nimport classNames from 'classnames';\nimport { ITechnicalService } from '@/model/ITechnicalService';\nimport { Box, Image } from '@chakra-ui/react';\nimport { useProductCategory } from '@/hooks/useProductCategory';\nimport { Nullable } from '../../types/support-types';\n\nconst StyledLink = styled(Link)`\n background: transparent;\n text-decoration: none;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n padding: 12px 0;\n\n &:first-child {\n margin-top: 12px;\n }\n\n &:last-child {\n margin-bottom: 12px;\n }\n\n transition: all ease-in-out 0.15s;\n\n text-align: center;\n color: #718096;\n\n &:hover,\n &.active {\n color: var(--chakra-colors-brandColor);\n\n > svg {\n fill: var(--chakra-colors-brandColor);\n }\n }\n\n > * {\n z-index: -1;\n }\n\n > svg {\n max-width: 57px;\n max-height: 57px;\n\n margin-left: auto;\n margin-right: auto;\n\n fill: #a0aec0;\n transition: all ease-in-out 0.15s;\n\n position: relative;\n z-index: -1;\n }\n`;\nconst ServiceName = styled.div`\n font-weight: 600;\n font-size: 12px;\n line-height: 16px;\n\n position: relative;\n z-index: -1;\n`;\n\nconst Wrapper = styled.div`\n padding: 0 24px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst BarTitleWrapper = styled(Box)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80px;\n font-size: 16px;\n font-weight: 600;\n color: #718096;\n text-align: center;\n border-bottom: 1px solid silver;\n border-top: 1px solid silver;\n box-shadow: 0 1px 2px rgb(0 0 0 / 5%);\n`;\n\ninterface CategoriesSidebarProps {\n categories: ITechnicalService[];\n type?: 'adminPanel' | 'order' | 'additionalPanel';\n barTitle?: Nullable<string>;\n}\n\nconst CategoriesSidebar = ({\n categories,\n type = 'order',\n barTitle,\n}: CategoriesSidebarProps) => {\n const { exhibitionId, service, stand } = useParams({ strict: false }) || {};\n\n const ref = useRef<null | SimpleBarCore>(null);\n const itemRefs = useRef<Record<string, HTMLAnchorElement | null>>({});\n const categoryInfo = useProductCategory(categories, service);\n const category = categoryInfo?.category;\n\n useEffect(() => {\n setTimeout(() => {\n const target =\n itemRefs.current[(category?.parent?.id || category?.id) as string];\n\n if (target) {\n const top = target.offsetTop;\n\n ref.current?.getScrollElement()?.scrollTo({\n top: top > 0 ? top : 0,\n behavior: 'smooth',\n });\n }\n }, 300);\n }, [itemRefs, ref, category]);\n\n return (\n <Sidebar scrollRef={ref} fixed>\n {barTitle && <BarTitleWrapper>{barTitle}</BarTitleWrapper>}\n <Wrapper>\n {categories.map(({ category: serviceObject, image }) => {\n const serviceCategory = serviceObject.parent || serviceObject;\n\n const resolvedUlr = serviceCategory.resolveUrl?.();\n\n const pageUrl =\n type === 'adminPanel'\n ? SHOW_SUPPORT_MANAGER_PATH\n : SHOW_SUPPORT_MANAGER_ADDITIONAL_PATH;\n\n const link =\n type === 'order'\n ? replacePaths(CREATE_EXHIBITION_ORDER_TAB_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n ':service': serviceCategory.name,\n })\n : replacePaths(pageUrl, {\n ':page': serviceCategory.name,\n });\n\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return (\n <StyledLink\n // _ref={(el) => {\n // itemRefs.current[serviceCategory.id] = el;\n // }}\n id={`sidebar-${serviceCategory.id.toString()}`}\n key={serviceCategory.name}\n to={resolvedUlr || link}\n className={classNames({\n active: category?.parent?.name === serviceCategory.name,\n })}\n >\n {image && typeof image === 'string' ? (\n <Image boxSize=\"50px\" src={image} alt={image} />\n ) : (\n image\n )}\n <ServiceName>\n {serviceCategory.displayName ||\n serviceCategory.name ||\n serviceCategory.id}\n </ServiceName>\n </StyledLink>\n );\n })}\n </Wrapper>\n </Sidebar>\n );\n};\n\nexport default CategoriesSidebar;\n","import {\n Footer as StyledFooter,\n StyledButton,\n StyledText,\n} from './OrderList.styled';\nimport { useTranslation } from 'react-i18next';\nimport { useNavigate } from '@tanstack/react-router';\nimport { replacePaths } from '@/utils/route';\nimport { CREATE_EXHIBITION_CART_PATH } from '@/constants/router';\nimport { createExhibitionOrderServiceRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport { useOrder, useOrderTotal } from '@/store/effector/order';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { useOrderCompleteness } from '@/store/effector/order-completeness';\n\nconst Footer = () => {\n const { t } = useTranslation();\n const { items } = useOrder();\n const total = useOrderTotal();\n const { currency } = useExhibition();\n const { isOrderCompleted } = useOrderCompleteness();\n const isDisabled = !items?.length || !isOrderCompleted;\n const navigate = useNavigate();\n const { exhibitionId, stand } = createExhibitionOrderServiceRoute.useParams();\n\n const addToCart = () => {\n const cartPath = replacePaths(CREATE_EXHIBITION_CART_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n });\n\n navigate({\n to: cartPath,\n });\n };\n\n return (\n <StyledFooter>\n <StyledText>\n {t('summary', {\n cost: t('result-price', {\n cost: (total || 0).toLocaleString(),\n currency,\n }),\n })}\n </StyledText>\n <StyledButton onClick={addToCart} isDisabled={isDisabled}>\n {t('checkout')}\n </StyledButton>\n </StyledFooter>\n );\n};\n\nexport default Footer;\n","import { useTranslation } from 'react-i18next';\nimport {\n ExhibitionBox,\n ExhibitionTitle,\n HeaderTitle,\n StyledHeader,\n} from './OrderList.styled';\n\nimport { StandDescription } from '@/pages/Exhibition/shared/StandDescription';\nimport { Box } from '@chakra-ui/react';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { useStand } from '@/store/effector/stand';\n\nconst Header = () => {\n const { t } = useTranslation();\n const { exhibitionName } = useExhibition();\n const { standForOrder, originalBuildingType } = useStand();\n\n return (\n <StyledHeader>\n <ExhibitionBox>\n <ExhibitionTitle>{exhibitionName}</ExhibitionTitle>\n </ExhibitionBox>\n {standForOrder && (\n <Box mt=\"20px\">\n <StandDescription\n stand={standForOrder}\n originalBuildingType={originalBuildingType}\n includeStandNumber\n inline\n />\n </Box>\n )}\n <HeaderTitle>{t('orderedServices')}</HeaderTitle>\n </StyledHeader>\n );\n};\n\nexport default Header;\n","import styled from 'styled-components';\nimport { Link as RRLink } from '@tanstack/react-router';\n\nexport const Link = styled(RRLink)`\n &:hover {\n text-decoration: underline;\n color: var(--chakra-colors-brandColor);\n }\n`;\n","import { OrderItem } from '@/model/IOrderItem';\nimport { useOrderCompleteness } from '@/store/effector/order-completeness';\nimport {\n Alert,\n AlertDescription,\n AlertProps,\n AlertTitle,\n} from '@chakra-ui/react';\nimport { useParams } from '@tanstack/react-router';\nimport { Link } from '@/components/Sidebar/OrderList/OrderItemDependencyWarning.styled';\nimport { useTranslation } from 'react-i18next';\nimport { ArrowUpIcon } from '@chakra-ui/icons';\nimport { ReactNode } from 'react';\n\nexport const OrderItemDependencyWarning = (\n props: {\n orderItem: OrderItem;\n renderProps?: (node: ReactNode) => JSX.Element;\n } & AlertProps\n) => {\n const { orderItem, renderProps, ...alertProps } = props;\n const { incompleteItemsDueToDependency, isOrderCompleted } =\n useOrderCompleteness();\n const { t } = useTranslation();\n const { exhibitionId, stand } = useParams({ strict: false });\n\n if (isOrderCompleted) {\n return null;\n }\n\n const inTheListOfIncomplete = incompleteItemsDueToDependency.find(\n (incomplete) => incomplete.productId === orderItem.id\n );\n\n if (!inTheListOfIncomplete) {\n return null;\n }\n\n const wrapInto =\n typeof renderProps === 'function' ? renderProps : (el: JSX.Element) => el;\n\n return wrapInto(\n <Alert\n status=\"warning\"\n flexDirection=\"column\"\n alignItems=\"flex-start\"\n justifyContent=\"flex-start\"\n {...alertProps}\n >\n <AlertTitle fontSize={12}>\n <ArrowUpIcon mt=\"-2px\" ml=\"-15px\" /> {t('service-require-dependency')}\n </AlertTitle>\n <AlertDescription fontSize={12}>\n <ul style={{ listStyle: 'none' }}>\n {inTheListOfIncomplete.outstandingDeps?.map((pr) => {\n return (\n <Link\n key={pr.getProductId()}\n to={`/exhibitions/${exhibitionId}/${stand}/create/${pr.categoryName}`}\n >\n <li>{pr.productDisplayName}</li>\n </Link>\n );\n })}\n </ul>\n </AlertDescription>\n </Alert>\n );\n};\n","import styled from 'styled-components';\nimport Sidebar from '../Sidebar';\nimport { Button, Text } from '@chakra-ui/react';\n\nexport const StyledSidebar = styled(Sidebar)`\n display: flex;\n flex-direction: column;\n\n max-height: calc(100% - var(--chakra-sizes-nav-bar-height));\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n`;\n\nexport const Footer = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n`;\n\nexport const StyledText = styled(Text)`\n font-weight: 600;\n font-size: 16px;\n line-height: 24px;\n`;\n\nexport const StyledButton = styled(Button)`\n margin-top: 20px;\n width: 100%;\n font-weight: 600;\n font-size: 16px;\n line-height: 24px;\n\n :hover {\n background-color: var(--chakra-colors-brandColor) !important;\n }\n`;\n\nexport const HeaderTitle = styled.h3`\n font-weight: 600;\n font-size: 18px;\n line-height: 28px;\n\n margin: 20px 0;\n`;\n\nexport const StyledHeader = styled.div`\n margin-top: 10px;\n`;\n\nexport const ExhibitionBox = styled.div`\n background: #e2e8f0;\n border-radius: 6px;\n text-align: left;\n padding: 8px 12px;\n`;\n\nexport const ExhibitionTitle = styled.h4`\n font-weight: 600;\n font-size: 16px;\n line-height: 24px;\n\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport const BoothNumber = styled.h6`\n font-weight: 500;\n font-size: 12px;\n line-height: 16px;\n margin-top: 4px;\n`;\n","import React, { useCallback, useState } from 'react';\nimport { CloseIcon, InfoIcon } from '@chakra-ui/icons';\nimport styled from 'styled-components';\nimport { OrderItem, TemporaryStaffOrderItem } from '@/model/IOrderItem';\nimport { Link, useNavigate } from '@tanstack/react-router';\nimport { useTranslation } from 'react-i18next';\nimport { getPathByProduct } from '@/utils/route';\nimport classNames from 'classnames';\nimport { viewExhibitionCart } from '@/features/Routing/protected/exhibitions-by-role';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport { TKey } from '@/i18n/types';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { orderApi } from '@/store/effector/order';\nimport { OrderItemDependencyWarning } from '@/components/Sidebar/OrderList/OrderItemDependencyWarning';\nimport { Tooltip } from '@chakra-ui/react';\n\ninterface RowProps {\n className?: string;\n item: OrderItem | TemporaryStaffOrderItem;\n}\n\nconst Wrapper = styled.div`\n overflow-x: hidden;\n transition: all ease-in-out 0.3s;\n\n transform: translateX(0);\n\n &.showActions {\n transform: translateX(-2rem);\n\n .actions {\n width: 1rem;\n }\n }\n\n &:not(:last-child) .wrapper-inner {\n border-bottom: 1px solid #e2e8f0;\n }\n`;\n\nconst WrapperInner = styled.div`\n display: flex;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n gap: 20px;\n\n padding: 12px 0;\n\n font-size: 12px;\n line-height: 16px;\n`;\n\nconst Name = styled(Link)`\n padding-left: 20px;\n width: 50%;\n font-weight: 400;\n\n &:hover {\n text-decoration: underline;\n color: var(--chakra-colors-brandColor);\n }\n`;\n\nconst Count = styled.div`\n text-align: center;\n width: 20%;\n font-weight: 400;\n white-space: nowrap;\n`;\n\nconst Price = styled.div`\n text-align: right;\n width: 30%;\n\n font-weight: 600;\n white-space: nowrap;\n`;\n\nconst Actions = styled.div`\n text-align: right;\n transition: width ease-in-out 0.3s;\n width: 0;\n`;\n\nconst Button = styled.button`\n transition: all ease-in-out 0.15s;\n\n color: #718096;\n\n &:hover {\n color: var(--chakra-colors-brandColor);\n }\n`;\n\nconst Row: React.FC<RowProps> = ({ item, className }) => {\n const { currency } = useExhibition();\n const { t } = useTranslation();\n const navigate = useNavigate();\n const productPrice = item.total;\n\n const itemName = item.displayName;\n\n const [visible, setVisible] = useState(false);\n\n const { exhibitionId, stand } = viewExhibitionCart.useParams();\n const isBuilding = item.product.category.isBuilding;\n\n const deleteHandler = useCallback(async () => {\n if (isBuilding) {\n await navigate({\n to: `/exhibitions/${exhibitionId}/${stand}/create/${CATEGORY_TYPES.SELECT_BUILDING}`,\n replace: true,\n });\n }\n\n orderApi.removeItem(item);\n }, []);\n\n const unitOfMeasurement = isBuilding\n ? 'sqm'\n : item.product.category.unitOfMeasure;\n\n return (\n <>\n <Wrapper\n className={classNames({\n [className || '']: true,\n showActions: visible,\n })}\n onMouseLeave={() => !item.included && setVisible(false)}\n >\n <WrapperInner className=\"wrapper-inner\">\n <Name to={getPathByProduct(exhibitionId, stand, item.product)}>\n {itemName}{' '}\n {item.included && (\n <Tooltip\n label={t('included-into-price-of')}\n placement=\"top\"\n hasArrow\n >\n <InfoIcon color=\"brandColor\" />\n </Tooltip>\n )}\n </Name>\n <Count onMouseEnter={() => !item.included && setVisible(true)}>\n {item.getAmount()}{' '}\n {unitOfMeasurement ? `(${t(unitOfMeasurement as TKey)})` : null}\n </Count>\n <Price onMouseEnter={() => !item.included && setVisible(true)}>\n {t('result-price', {\n cost: productPrice.toLocaleString(),\n currency,\n })}\n </Price>\n\n <Actions className=\"actions\">\n {!item.included && (\n <Button onClick={deleteHandler}>\n <CloseIcon />\n </Button>\n )}\n </Actions>\n </WrapperInner>\n </Wrapper>\n <OrderItemDependencyWarning\n orderItem={item}\n pl={5}\n pr={5}\n pt={2}\n pb={2}\n />\n </>\n );\n};\n\nexport default Row;\n","import Row from '@/components/Sidebar/OrderList/Row';\nimport { StyledSidebar } from './OrderList.styled';\nimport Footer from './Footer';\nimport Header from './Header';\nimport { useOrder } from '@/store/effector/order';\n\nconst OrderListSidebar = () => {\n const { items } = useOrder();\n\n return (\n <StyledSidebar\n position=\"right\"\n fixed\n header={<Header />}\n footer={<Footer />}\n maxWidth=\"var(--chakra-sizes-order-list-width)\"\n >\n {items.map((item, index) => (\n <Row key={`${item.id}-${index}`} item={item} className=\"order-row\" />\n ))}\n </StyledSidebar>\n );\n};\n\nexport default OrderListSidebar;\n","import styled from 'styled-components';\nimport SimpleBar from 'simplebar-react';\nimport SimpleBarCore from 'simplebar-core';\n\nconst SidebarWrapper = styled.div<{\n fixed: number;\n maxWidth: number | string;\n position: 'left' | 'right';\n}>`\n height: 100%;\n width: 100%;\n max-width: ${({ maxWidth }) => maxWidth};\n\n box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);\n background: #fff;\n\n ${({ fixed, position }) =>\n fixed &&\n `\n bottom: 0;\n ${position === 'left' ? 'left: 0;' : 'right: 0;'}\n position: fixed !important;\n top: 0;\n margin-top: var(--chakra-sizes-nav-bar-height);\n max-height: calc(100% - var(--chakra-sizes-nav-bar-height));\n `}\n`;\n\nconst SidebarHeader = styled.div`\n text-align: center;\n padding: 10px 20px;\n font-size: 1.5rem;\n`;\n\nconst SidebarFooter = styled.div`\n padding: 20px;\n border-top: 1px solid #e2e8f0;\n`;\n\nconst SidebarInner = styled(SimpleBar)`\n overflow-y: auto;\n\n display: flex;\n flex-direction: column;\n justify-content: center;\n height: 100%;\n`;\n\ninterface SidebarProps {\n header?: React.ReactNode;\n footer?: React.ReactNode;\n children?: React.ReactNode | React.ReactNode[];\n fixed?: boolean;\n scrollRef?: React.RefObject<SimpleBarCore>;\n position?: 'left' | 'right';\n maxWidth?: string | number;\n className?: string;\n}\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n header,\n footer,\n children,\n fixed,\n scrollRef,\n position = 'left',\n maxWidth = 'var(--chakra-sizes-side-bar-width)',\n className,\n}) => {\n return (\n <SidebarWrapper\n className={className}\n fixed={fixed ? 1 : 0}\n position={position}\n maxWidth={maxWidth}\n >\n {header && <SidebarHeader>{header}</SidebarHeader>}\n <SidebarInner ref={scrollRef}>{children}</SidebarInner>\n {footer && <SidebarFooter>{footer}</SidebarFooter>}\n </SidebarWrapper>\n );\n};\n\nexport default Sidebar;\n","import { useTable, Column } from 'react-table';\nimport {\n Table as ChakraTable,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n Flex,\n Box,\n Text,\n} from '@chakra-ui/react';\nimport i18n from '@/i18n';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { DraggableUtils } from '@/utils/draggable-utils';\n\ninterface TableProps<T extends object = object> {\n columns: Array<Column<T>>;\n data: Array<T>;\n onDragEnd: OnDragEndResponder;\n}\n\nexport const DraggableTable = <T extends object = object>({\n columns,\n data,\n onDragEnd,\n}: TableProps<T>) => {\n const { getTableProps, getTableBodyProps, headerGroups, rows, prepareRow } =\n useTable<T>({\n columns,\n data,\n initialState: {\n hiddenColumns: columns.map((column: any) => {\n if (column.show === false) {\n return column.accessor || column.id;\n }\n }),\n },\n });\n\n const isEmpty = rows.length === 0;\n\n return (\n <>\n <DragDropContext onDragEnd={onDragEnd}>\n <ChakraTable\n {...getTableProps({\n style: {\n backgroundColor: 'white',\n },\n })}\n >\n <Thead>\n {headerGroups.map((headerGroup, index) => (\n <Tr {...headerGroup.getHeaderGroupProps()} key={index}>\n {headerGroup.headers.map((column: any, headerIndex) => (\n // Add the sorting props to control sorting. For this example\n // we can add them into the header props\n <Th\n userSelect=\"none\"\n {...column.getHeaderProps({\n width: column?.width,\n ...(column.id === 'drag-handler'\n ? { paddingLeft: 0, paddingRight: 0 }\n : {}),\n minWidth: column.minWidth,\n })}\n padding={3}\n key={headerIndex}\n >\n <Flex alignItems=\"center\">{column.render('Header')}</Flex>\n </Th>\n ))}\n </Tr>\n ))}\n </Thead>\n <Droppable droppableId=\"draggable-table\" type=\"draggable-table\">\n {(provided) => {\n return (\n <Tbody\n {...getTableBodyProps({\n style: {\n backgroundColor: 'white',\n },\n })}\n ref={provided.innerRef}\n {...provided.droppableProps}\n >\n {rows.map((row, index) => {\n prepareRow(row);\n\n return (\n <Draggable\n key={row.id}\n draggableId={row.id}\n index={index}\n >\n {(providedRow, rowSnapshot) => {\n return (\n <Tr\n ref={providedRow.innerRef}\n {...providedRow.draggableProps}\n {...row.getRowProps({\n style: {\n backgroundColor: rowSnapshot.isDragging\n ? 'var(--chakra-colors-orange-100)'\n : 'white',\n ...DraggableUtils.getItemStyle(\n rowSnapshot.isDragging,\n providedRow.draggableProps.style\n ),\n display: rowSnapshot.isDragging\n ? 'table'\n : undefined,\n cursor: 'initial',\n },\n })}\n >\n {row.cells.map((cell, cellIndex) => {\n return (\n <Td\n {...(cell.column.id === 'drag-handler'\n ? providedRow.dragHandleProps\n : {})}\n {...cell.getCellProps({\n style: {\n ...(cell.column.id === 'drag-handler'\n ? {\n paddingLeft: 0,\n paddingRight: 0,\n cursor: 'grab',\n }\n : {}),\n },\n })}\n key={cellIndex}\n verticalAlign=\"top\"\n fontSize=\"0.9em\"\n padding={3}\n >\n {cell.render('Cell')}\n </Td>\n );\n })}\n </Tr>\n );\n }}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </Tbody>\n );\n }}\n </Droppable>\n </ChakraTable>\n </DragDropContext>\n {isEmpty && (\n <Box m={4} mt={6} display=\"flex\" justifyContent=\"center\" w=\"100%\">\n <Text color=\"gray.400\">{i18n.t('no-data')}</Text>\n </Box>\n )}\n </>\n );\n};\n","import React, { useMemo } from 'react';\nimport { Flex, IconButton, Select, Tooltip, Text } from '@chakra-ui/react';\nimport { ChevronLeftIcon, ChevronRightIcon } from '@chakra-ui/icons';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport * as v from 'zod';\n\ninterface PaginationProps {\n setPageNumber: (pageIndex: number) => void;\n setPageSize: (pageSize: number) => void;\n paginationInfo: PaginationSchemaType;\n}\n\nconst PaginationContainer = styled(Flex)`\n justify-content: space-between;\n margin: 4px 4px 4px auto;\n align-items: center;\n //min-width: 250px;\n padding-top: 20px;\n width: fit-content;\n`;\n\nconst PaginationSchema = v.object({\n CurrentPage: v.number(),\n TotalPages: v.number(),\n PageSize: v.number(),\n TotalCount: v.number(),\n});\n\ntype PaginationSchemaType = v.infer<typeof PaginationSchema>;\n\nconst Pagination = ({\n setPageNumber,\n setPageSize,\n paginationInfo,\n}: PaginationProps) => {\n const { CurrentPage, TotalPages, PageSize, TotalCount } =\n useMemo<PaginationSchemaType>(() => {\n const parsedSchema = PaginationSchema.safeParse(paginationInfo);\n\n if (parsedSchema.success) {\n return parsedSchema.data;\n }\n\n return {\n PageSize: 0,\n TotalPages: 0,\n TotalCount: 0,\n CurrentPage: 1,\n };\n }, [paginationInfo]);\n\n const isActiveLast = CurrentPage === TotalPages || TotalCount === 0;\n const { t } = useTranslation();\n\n return (\n <PaginationContainer>\n <Flex>\n <Tooltip label=\"Previous Page\">\n <IconButton\n onClick={() => setPageNumber(CurrentPage - 1)}\n isDisabled={CurrentPage === 1}\n icon={<ChevronLeftIcon h={6} w={6} />}\n aria-label=\"Previous Page\"\n />\n </Tooltip>\n </Flex>\n\n <Text fontWeight=\"bold\" as=\"span\" minW=\"40px\" textAlign=\"center\">\n {CurrentPage}\n </Text>\n\n <Flex>\n <Tooltip label=\"Next Page\">\n <IconButton\n onClick={() => setPageNumber(CurrentPage + 1)}\n isDisabled={isActiveLast}\n icon={<ChevronRightIcon h={6} w={6} />}\n aria-label=\"Next Page\"\n />\n </Tooltip>\n </Flex>\n\n <Flex alignItems=\"center\" ml=\"20px\">\n <Select\n w={36}\n value={PageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n }}\n >\n {[10, 20, 30, 40, 50].map((pageSizeNumber) => (\n <option key={pageSizeNumber} value={pageSizeNumber}>\n {t('show')} {pageSizeNumber}\n </option>\n ))}\n </Select>\n </Flex>\n </PaginationContainer>\n );\n};\n\nexport default Pagination;\n","import { useEffect } from 'react';\nimport { useTable, useSortBy, useRowSelect, Column } from 'react-table';\nimport {\n Table as ChakraTable,\n Thead,\n Tbody,\n Tr,\n Th,\n Td,\n Flex,\n Box,\n Text,\n Checkbox,\n} from '@chakra-ui/react';\nimport { ChevronUpIcon, ChevronDownIcon } from '@chakra-ui/icons';\nimport i18n from '@/i18n';\n\ninterface TableProps<T extends object = object> {\n columns: Array<Column<T>>;\n data: Array<T>;\n onBulkAction?: (selectedRows: Array<T>) => void;\n showBulkAction?: boolean;\n}\n\nexport const Table = <T extends object = object>({\n columns,\n data,\n onBulkAction,\n showBulkAction = false,\n}: TableProps<T>) => {\n const {\n getTableProps,\n getTableBodyProps,\n headerGroups,\n rows,\n prepareRow,\n selectedFlatRows,\n toggleAllRowsSelected,\n } = useTable<T>(\n {\n columns,\n data,\n initialState: {\n hiddenColumns: columns.map((column: any) => {\n if (column.show === false) {\n return column.accessor || column.id;\n }\n }),\n },\n },\n useSortBy,\n useRowSelect,\n (hooks) => {\n if (showBulkAction) {\n hooks.visibleColumns.push((columnsData) => [\n {\n id: 'selection',\n width: '3%',\n Header: ({ getToggleAllRowsSelectedProps }) => {\n const isSelected = getToggleAllRowsSelectedProps()?.checked;\n\n return (\n <Checkbox\n {...getToggleAllRowsSelectedProps()}\n isChecked={isSelected}\n />\n );\n },\n Cell: ({ row }: { row: any }) => {\n const isSelected = row.isSelected;\n\n return (\n <Checkbox\n {...row.getToggleRowSelectedProps()}\n isChecked={isSelected}\n />\n );\n },\n },\n ...columnsData,\n ]);\n }\n }\n );\n\n useEffect(\n function setSelectedRowIds() {\n const rowIds = selectedFlatRows.map((d) => d.original);\n\n if (onBulkAction) {\n onBulkAction(rowIds);\n }\n },\n [selectedFlatRows]\n );\n\n useEffect(\n function resetPivotIds() {\n if (!showBulkAction) {\n toggleAllRowsSelected(false);\n }\n },\n [showBulkAction]\n );\n\n const isEmpty = rows.length === 0;\n\n return (\n <>\n <ChakraTable {...getTableProps()}>\n <Thead>\n {headerGroups.map((headerGroup, index) => (\n <Tr {...headerGroup.getHeaderGroupProps()} key={index}>\n {headerGroup.headers.map((column: any, headerIndex) => (\n <Th\n userSelect=\"none\"\n {...column.getHeaderProps({\n ...column.getSortByToggleProps(),\n width: column?.width,\n })}\n key={headerIndex}\n >\n <Flex alignItems=\"center\">\n {column.render('Header')}\n {column.isSorted ? (\n column.isSortedDesc ? (\n <ChevronDownIcon ml={1} w={4} h={4} />\n ) : (\n <ChevronUpIcon ml={1} w={4} h={4} />\n )\n ) : (\n ''\n )}\n </Flex>\n </Th>\n ))}\n </Tr>\n ))}\n </Thead>\n <Tbody {...getTableBodyProps()}>\n {rows.map((row, index) => {\n prepareRow(row);\n\n return (\n <Tr {...row.getRowProps()} key={index}>\n {row.cells.map((cell, cellIndex) => {\n return (\n <Td\n {...cell.getCellProps()}\n key={cellIndex}\n verticalAlign=\"top\"\n >\n {cell.render('Cell')}\n </Td>\n );\n })}\n </Tr>\n );\n })}\n </Tbody>\n </ChakraTable>\n {isEmpty && (\n <Box m={4} mt={6} display=\"flex\" justifyContent=\"center\" w=\"100%\">\n <Text color=\"gray.400\">{i18n.t('no-data')}</Text>\n </Box>\n )}\n </>\n );\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport fetchApi, { XhrOptions } from '../../utils/fetchAPI';\nimport { FetchMethods } from '../../utils/constants';\nimport { useNavigate, useSearch } from '@tanstack/react-router';\nimport { PaginationInfoType } from '../../model/common';\nimport { AxiosHeaders } from 'axios';\n\nexport type UseTableLoaderOptionsType<T = object> = {\n resource: string;\n additionalPrams?: Record<string, unknown>;\n map?: (data: T[]) => unknown[];\n onError?: (error: any) => void;\n ignorePagination?: boolean;\n xhrOptions?: Partial<XhrOptions>;\n};\n\nconst DEFAULT_PAGE_INDEX = 1;\nconst DEFAULT_PAGE_SIZE = 10;\n\ntype QueryType = {\n s?: number;\n p?: number;\n search?: string;\n};\n\nexport const useTableLoader = <T = object>({\n resource,\n onError,\n map,\n ignorePagination,\n additionalPrams = {},\n xhrOptions,\n}: UseTableLoaderOptionsType<T>) => {\n const search = useSearch<any, unknown, false, QueryType>({ strict: false });\n const [isLoading, setIsLoading] = useState(false);\n const [data, setData] = useState<T[]>([]);\n const navigate = useNavigate();\n const [paginationInfo, setPaginationInfo] = useState<PaginationInfoType>({\n TotalCount: 0,\n TotalPages: 1,\n PageSize: DEFAULT_PAGE_SIZE,\n CurrentPage: DEFAULT_PAGE_INDEX,\n });\n\n const fetchData = async () => {\n setIsLoading(true);\n try {\n const { data: responseData, headers } = await fetchApi(resource, {\n method: FetchMethods.Get,\n params: {\n ...(ignorePagination === true\n ? {}\n : {\n pageNumber: search?.p || DEFAULT_PAGE_INDEX,\n pageSize: search?.s || DEFAULT_PAGE_SIZE,\n }),\n\n search: search?.search || undefined,\n ...additionalPrams,\n },\n ...xhrOptions,\n });\n\n let responseArray = responseData;\n\n if (\n Object.hasOwn(responseData, 'data') &&\n Array.isArray(responseData.data)\n ) {\n responseArray = responseData.data;\n }\n\n try {\n if (headers instanceof AxiosHeaders) {\n const paginationInfoHeader = headers?.get?.('pagination', (value) => {\n if (typeof value === 'string') {\n return JSON.parse(value);\n }\n\n return value;\n });\n\n if (\n paginationInfoHeader &&\n typeof paginationInfoHeader === 'object' &&\n // if header contains CurrentPage let's assume that this is pagination object\n Object.hasOwn(paginationInfoHeader, 'CurrentPage')\n ) {\n setPaginationInfo(\n paginationInfoHeader as unknown as PaginationInfoType\n );\n }\n }\n } catch {\n setPaginationInfo({\n CurrentPage: search?.p || DEFAULT_PAGE_INDEX,\n PageSize: search?.s || DEFAULT_PAGE_SIZE,\n TotalPages: search?.p || DEFAULT_PAGE_INDEX,\n TotalCount: responseArray.length,\n });\n }\n\n setData(typeof map === 'function' ? map(responseArray) : responseArray);\n } catch (error) {\n console.log(error);\n\n if (typeof onError === 'function') {\n onError(error);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n useEffect(() => {\n fetchData();\n }, [search]);\n\n const refresh = () => fetchData();\n\n const onPageSizeChange = useCallback(\n (size: number) => {\n navigate({\n to: './',\n search: {\n ...search,\n s: size,\n p: DEFAULT_PAGE_INDEX,\n },\n });\n },\n [search]\n );\n const onPageChange = useCallback(\n (page: number) => {\n navigate({\n to: './',\n search: {\n ...search,\n p: page,\n },\n });\n },\n [search]\n );\n\n return {\n data,\n isLoading,\n onPageSizeChange,\n onPageChange,\n currentPage: search?.p || DEFAULT_PAGE_INDEX,\n currentSize: search?.s || DEFAULT_PAGE_SIZE,\n refresh,\n paginationInfo,\n };\n};\n","import styled from 'styled-components';\nimport TechnicalServiceCard from '@/components/Card/TechnicalServiceCard';\nimport { useTranslation } from 'react-i18next';\nimport { PageTitle } from '@/components/Typography/PageTitle';\nimport { ITechnicalService } from '@/model/ITechnicalService';\nimport { SimpleGrid } from '@chakra-ui/react';\nimport { IdType } from '@/model/common';\n\nimport { Loader } from '@/components/Loader/Loader';\nimport { LoaderWrapper } from '@/theme/css/styles';\nimport { useCategoriesByData } from '@/hooks/categoriesConverter/useCategoriesByData';\nimport { useSubCategoriesByData } from '@/hooks/categoriesConverter/useSubCategoriesByData';\nimport { TKey } from '../../i18n/types';\nimport { useCatalog } from '@/store/effector/catalog';\nimport { useAppLoading } from '@/store/effector/loading';\nimport { Category } from '@/model/ICategory';\n\nexport const Grid = styled(SimpleGrid)`\n margin-left: auto;\n margin-right: auto;\n`;\n\nconst CenteredTitle = styled(PageTitle)`\n margin-top: 40px;\n margin-bottom: 32px;\n padding-bottom: 0;\n text-align: center;\n`;\n\ninterface CategoriesProps {\n config?: ITechnicalService[];\n title?: TKey;\n category?: Category;\n}\n\nexport type CategoryType = {\n description: string;\n displayName: string;\n id: IdType;\n imageUrl: string;\n name: string;\n parentCategory: string;\n parentCategoryId: IdType;\n};\n\nconst TechnicalServicesGrid: React.FC<CategoriesProps> = ({\n title,\n category,\n}) => {\n const isLoader = useAppLoading();\n const { rootCategories } = useCatalog();\n const categoryConfig = useCategoriesByData(rootCategories);\n const subcategoriesByCategory = useSubCategoriesByData(category?.tree || []);\n const { t } = useTranslation();\n\n const categoriesToRender =\n subcategoriesByCategory.length > 0\n ? subcategoriesByCategory\n : categoryConfig;\n\n return (\n <>\n {title && <CenteredTitle>{t(title)}</CenteredTitle>}\n {isLoader ? (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n ) : (\n <Grid\n maxWidth=\"1600px\"\n gap=\"32px\"\n rowGap=\"32px\"\n columns={{\n sm: 2,\n md: 3,\n xl: 4,\n }}\n >\n {categoriesToRender.map((service) => {\n return (\n <TechnicalServiceCard\n key={service?.['category']?.['id']}\n service={service}\n />\n );\n })}\n </Grid>\n )}\n </>\n );\n};\n\nexport default TechnicalServicesGrid;\n","import {\n Box,\n FormControl,\n FormErrorMessage,\n Textarea as ChakraTextArea,\n TextareaProps as ChakraTextareaProps,\n} from '@chakra-ui/react';\n\nimport { FieldProps } from '@/components/Fields/interfaces';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport {\n FieldValues,\n Path,\n useController,\n useFormContext,\n} from 'react-hook-form';\n\ninterface TextAreaProps<T extends FieldValues = FieldValues>\n extends FieldProps<T>,\n Omit<ChakraTextareaProps, 'name'> {\n defaultValue?: string;\n}\n\nexport const TextArea = <T extends FieldValues = FieldValues>({\n label,\n placeholder,\n // @ts-expect-error as default string doesn't found in generic T\n name = 'text-area',\n defaultValue,\n isRequired,\n ...rest\n}: TextAreaProps<T>): JSX.Element => {\n const formContext = useFormContext();\n\n if (!formContext) {\n throw new Error(\n `This field (${name}) should be used only within FormContext`\n );\n }\n\n const { fieldState } = useController({\n name: name,\n });\n\n if (!fieldState) {\n throw new Error(\n 'fieldState not found. Is this field used within FormContext?'\n );\n }\n\n const registerFieldName = formContext.register(name as Path<T>, {\n onChange: () => {\n formContext.clearErrors(name);\n },\n });\n\n return (\n <Box>\n <FormControl isRequired={isRequired} isInvalid={fieldState.invalid}>\n {label && <FormLabel htmlFor={name}>{label}</FormLabel>}\n <ChakraTextArea\n id={name}\n placeholder={placeholder}\n defaultValue={defaultValue}\n {...rest}\n {...registerFieldName}\n />\n {fieldState.error?.message && (\n <FormErrorMessage>{fieldState.error.message}</FormErrorMessage>\n )}\n </FormControl>\n </Box>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { Box, Link, Text } from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport fetchApi from '@/utils/fetchAPI';\nimport { LOGIN } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { useAuth } from '@/store/effector/auth';\n\nconst CodeWrapper = styled(Box)`\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n gap: 10px;\n`;\n\nconst CodeLabel = styled(Text)`\n color: grey;\n`;\n\nconst CodeTimer = styled(Text)`\n font-weight: 600;\n color: grey;\n font-size: 16px;\n`;\n\ninterface TimerProps {\n sec: number;\n}\n\nexport const Timer = ({ sec }: TimerProps) => {\n const culture = localStorage.getItem('lang');\n const authInfo = useAuth();\n const userEmail = authInfo.userEmail;\n const [over, setOver] = useState(false);\n const [time, setTime] = useState(sec);\n const { t } = useTranslation();\n\n const tick = () => {\n if (over) {\n return;\n }\n\n if (time === 0) {\n setOver(true);\n } else {\n setTime(time - 1);\n }\n };\n\n const resendCode = async () => {\n await fetchApi(LOGIN, {\n method: FetchMethods.Post,\n data: {\n email: userEmail,\n },\n params: {\n culture,\n },\n });\n\n setTime(sec);\n setOver(false);\n };\n\n useEffect(() => {\n const timerID = setInterval(() => tick(), 1000);\n\n return () => clearInterval(timerID);\n });\n\n return (\n <CodeWrapper>\n {time === 0 ? (\n <Link onClick={resendCode}>{t('resend')}</Link>\n ) : (\n <>\n <CodeTimer>{`00:${time.toString().padStart(2, '0')}`}</CodeTimer>\n <CodeLabel>{t('resend')}</CodeLabel>\n </>\n )}\n </CodeWrapper>\n );\n};\n","import styled from 'styled-components';\nimport { Heading } from '@chakra-ui/react';\n\nexport const PageTitle = styled(Heading)`\n font-size: 1.8rem !important;\n margin-bottom: 24px;\n margin-top: 26px;\n`;\n\nexport const FlexedPageTitle = styled(PageTitle)`\n display: flex;\n flex-direction: row;\n`;\n\nexport const CenteredPageTitle = styled(PageTitle)`\n margin-top: 40px;\n margin-bottom: 32px;\n text-align: center;\n`;\n","import { t } from 'i18next';\nimport { ORDER_STATUSES } from '@/constants/order';\nimport { User } from '@/model/IUser';\n\nexport const ROLES = [\n { value: User.Role.SuperAdmin, label: t('super-admin') },\n { value: User.Role.Admin, label: t('admin') },\n { value: User.Role.SupportManager, label: t('support') },\n { value: User.Role.TechnicalManager, label: t('technical-manager') },\n { value: User.Role.Moderator, label: t('moderator') },\n];\n\nexport const BUILDING_TYPES = [\n { value: 0, label: 'All' },\n { value: 1, label: 'SpaceOnly' },\n { value: 2, label: 'Standard' },\n { value: 3, label: 'StandardPlus' },\n { value: 4, label: 'PremiumFerrara' },\n { value: 5, label: 'PremiumVerona' },\n { value: 6, label: 'PremiumRavenna' },\n { value: 7, label: 'PremiumKremona' },\n { value: 8, label: 'PremiumAncona' },\n { value: 9, label: 'PremiumFabriano' },\n { value: 10, label: 'PremiumLivorno' },\n { value: 11, label: 'Optima' },\n];\n\nexport const STATUS_CONFIG = [\n { value: 0, label: 'Undefined' },\n { value: ORDER_STATUSES.Draft, label: t('order-status-draft') },\n { value: ORDER_STATUSES.Submitted, label: t('order-status-submitted') },\n { value: ORDER_STATUSES.Processing, label: t('order-status-processing') },\n { value: ORDER_STATUSES.Invoiced, label: t('order-status-invoiced') },\n { value: ORDER_STATUSES.Paid, label: t('order-status-paid') },\n { value: ORDER_STATUSES.Cancelled, label: t('order-status-cancelled') },\n];\n","export const CATEGORY_TYPES = {\n SELECT_BUILDING: 'select-building',\n TEMPORARY_STAFF: 'temporary-staff',\n CLEANING: 'cleaning',\n};\n\nexport const PRODUCT_TYPES = {\n TEMPORARY_STAFF: 'temporary-staff',\n BUILDING: 'select-building',\n COMMON: 'common',\n} as const;\n\nexport type ProductTypesType =\n (typeof PRODUCT_TYPES)[keyof typeof PRODUCT_TYPES];\n","import { IdType } from '@/model/common';\nimport { ITEPortal_Domain_Dto_OrderDto } from '../api';\n\nexport const LOGIN = 'auth/email';\nexport const CODE_VERIFY = 'auth/token';\nexport const SESSION_EXTEND = 'auth/refresh-token';\nexport const EXHIBITIONS = 'exhibitions/exhibitor-statistics';\nexport const STANDS = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}/exhibitor-stands`;\nexport const CATEGORIES = 'categories';\nexport const EXHIBITOR_CATEGORIES = 'categories/price-list';\nexport const SAVE_ORDER = 'orders';\nexport const SAVE_DRAFT_ORDER = 'orders/draft';\nexport const DELETE_ORDER = (orderId: IdType) => `orders/${orderId}`;\nexport const GET_ORDER = (orderId: IdType) => `orders/${orderId}`;\nexport const GET_PDF_BY_ORDER = (\n orderId: ITEPortal_Domain_Dto_OrderDto['orderId']\n) => `orders/${orderId}/pdf`;\nexport const EXHIBITIONS_TABLE = 'exhibitions/admin-summaries';\nexport const EXHIBITORS_FROM_EXHIBITOR = 'exhibitors/exhibition';\nexport const CREATE_EXHIBITION = 'exhibitions';\nexport const EDIT_EXHIBITION = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}`;\nexport const EXHIBITION_DATA = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}`;\nexport const SELLING_OFFICES = 'selling-offices';\nexport const USERS = 'users';\nexport const EDIT_USER_INFO = (userId: IdType) => `users/${userId}`;\nexport const ADD_USER = `users/add`;\nexport const EDIT_USER = `users/update`;\nexport const DELETE_USER = (userId: IdType) => `users/delete/${userId}`;\nexport const TECHNICAL_MANAGERS = 'users/technical-managers';\nexport const ADD_EXHIBITOR = 'exhibitors';\nexport const EDIT_EXHIBITOR = (exhibitorId: IdType) =>\n `exhibitors/${exhibitorId}`;\nexport const USER_CHECK = 'users/email';\nexport const PLACED_ORDERS = 'orders';\nexport const CHANGE_ORDER_STATUS = (orderId: IdType) =>\n `orders/${orderId}/status`;\nexport const SAVE_STAND = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}/stands`;\nexport const EDIT_STAND = (exhibitionId: IdType, standId: IdType) =>\n `exhibitions/${exhibitionId}/stands/${standId}`;\nexport const EDIT_MAIN_INFO = (exhibitorId: IdType) =>\n `exhibitors/${exhibitorId}`;\nexport const GET_STAND = (exhibitionId: IdType, exhibitorId: IdType) =>\n `exhibitions/${exhibitionId}/exhibitors/${exhibitorId}/stands`;\nexport const SAVE_EXHIBITION_IMG = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}/logo`;\nexport const GET_PRICELISTS = (exhibitionId: IdType) =>\n `exhibitions/${exhibitionId}/price-lists`;\nexport const GET_PRICELIST_ITEMS = (\n exhibitionId: IdType,\n priceListId: IdType\n) => `exhibitions/${exhibitionId}/price-lists/${priceListId}/items`;\nexport const GET_PRICELIST_ITEM_IDS = 'products';\nexport const GET_PRICELIST_ITEM_IDS_SHORT = 'products/short';\nexport const DOWNLOAD_EXHIBITOR_CSV = (exhibitionId: IdType) =>\n `exhibition/${exhibitionId}/exhibitors/batch`;\nexport const ADD_PRICELIST_ITEM = (exhibitionId: IdType, priceListId: IdType) =>\n `exhibitions/${exhibitionId}/price-lists/${priceListId}/items`;\nexport const EDIT_PRICELIST_ITEM = (\n exhibitionId: IdType,\n priceListId: IdType,\n priceListItemId: IdType\n) =>\n `exhibitions/${exhibitionId}/price-lists/${priceListId}/items/${priceListItemId}`;\nexport const IMPORT_PRICELIST_ITEMS = (\n exhibitionId: IdType,\n priceListId: IdType\n) => `exhibitions/${exhibitionId}/price-lists/${priceListId}/items/batch`;\nexport const GET_PRICELIST_PRODUCTS = 'pricelist-items';\nexport const GET_PRODUCTS = 'products';\nexport const SAVE_PRODUCT_IMAGES = (name: string) => `products/${name}/images`;\nexport const SAVE_CATEGORIES = 'categories';\nexport const SAVE_CATEGORY_IMAGES = (name: string) =>\n `categories/${name}/image`;\nexport const MEMBERS = 'admin-summaries';\nexport const EDIT_MEMBERS = (memberId: IdType) => `admin-summaries/${memberId}`;\nexport const DELETE_EXHIBITOR = (exhibitionId: IdType, exhibitorId: IdType) =>\n `exhibitions/${exhibitionId}/exhibitors/${exhibitorId}`;\nexport const EDIT_PRODUCT_RESOURCES = (name: string) =>\n `products/${name}/resources`;\nexport const EDIT_CATEGORY_RESOURCES = (name: string) =>\n `categories/${name}/resources`;\nexport const PARENT_CATEGORIES = 'categories/parent-categories';\nexport const GLOBAL_SETTINGS = 'global-settings';\nexport const SAVE_FROM_EMAIL = 'global-settings/edit-fromEmail';\nexport const SAVE_USER_NAME = 'global-settings/edit-username';\nexport const SAVE_HOST = 'global-settings/edit-host';\nexport const SAVE_PORT = 'global-settings/edit-port';\nexport const EDIT_PASSWORD = 'global-settings/edit-password';\nexport const DELETE_PRICE_LIST = (exhibitionId: IdType, priceListId: IdType) =>\n `exhibitions/${exhibitionId}/price-lists/${priceListId}`;\nexport const CHANGE_ORDER_PRODUCT = (exhibitionId: IdType, orderId: IdType) =>\n `exhibitions/${exhibitionId}/orders/${orderId}`;\nexport const CHANGE_MAIN_LOGO = 'global-settings/edit-logo';\nexport const SEND_EMAIL = (orderId: IdType) =>\n `orders/${orderId}/send-order-changed-confirmation`;\nexport const DELETE_ORDER_ITEM = (exhibitionId: IdType, orderId: IdType) =>\n `exhibitions/${exhibitionId}/orders/${orderId}`;\nexport const DELETE_SERVICE = 'products';\n","import { t } from 'i18next';\nimport { BadgeItem } from '@/components/OrderTableRow/OrderTableRow';\n\nexport const EN_LANGUAGE = 'en';\nexport const DC_LANGUAGE = 'dc';\nexport const FR_LANGUAGE = 'fr';\nexport const IT_LANGUAGE = 'it';\nexport const SP_LANGUAGE = 'sp';\n\nexport const LANGUAGES_OPTIONS: BadgeItem[] = [\n {\n key: EN_LANGUAGE,\n value: t(EN_LANGUAGE) as string,\n },\n {\n key: DC_LANGUAGE,\n value: t(DC_LANGUAGE) as string,\n },\n {\n key: FR_LANGUAGE,\n value: t(FR_LANGUAGE) as string,\n },\n {\n key: IT_LANGUAGE,\n value: t(IT_LANGUAGE) as string,\n },\n {\n key: SP_LANGUAGE,\n value: t(SP_LANGUAGE) as string,\n },\n];\n","import {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Contracts_Enums_OrderStatus,\n} from '../api';\n\nexport const ORDER_STATUSES = {\n Undefined: 0,\n Submitted: 1,\n Draft: 2,\n Invoiced: 3,\n Paid: 4,\n Cancelled: 5,\n Processing: 6,\n} satisfies Record<\n | 'Undefined'\n | 'Submitted'\n | 'Draft'\n | 'Invoiced'\n | 'Paid'\n | 'Cancelled'\n | 'Processing',\n ITEPortal_Contracts_Enums_OrderStatus\n>;\n\nexport const PERSONAL_DISCOUNT_TYPE = {\n PERCENT: 0,\n AMOUNT: 1,\n} as const;\n\nexport const SPACE_ONLY_BUILDING_TYPE: ITEPortal_Contracts_Enums_BuildingType = 1;\n","export const USERS_PATH = '/users';\nexport const SHOW_EXHIBITION_PATH = '/exhibitions/:exhibitionId';\nexport const SHOW_SUPPORT_MANAGER_PATH = '/admin/:page';\nexport const SHOW_SUPPORT_MANAGER_ACTION_PATH = '/admin/:page/:type';\nexport const SHOW_SUPPORT_MANAGER_ADDITIONAL_PATH = '/additionalPage/:page';\nexport const SHOW_SUPPORT_MANAGER_ADDITIONAL_ACTION_PATH =\n '/additionalPage/:page/:type';\nexport const CREATE_EXHIBITION_ORDER_PATH =\n '/exhibitions/:exhibitionId/:stand/create';\nexport const CREATE_EXHIBITION_ORDER_TAB_PATH =\n '/exhibitions/:exhibitionId/:stand/create/:service';\nexport const CREATE_EXHIBITION_CART_PATH =\n '/exhibitions/:exhibitionId/:stand/cart';\n\nexport const MANUAL_PATH = '/manual';\n","export const SELECT_BUILDING = 'select-building';\nexport const CLEANING = 'cleaning';\nexport const CAR_PASSES = 'auto-card';\nexport const WATER_SUPPLY = 'water';\nexport const TELECOMMUNICATIONS = 'telecommunication';\nexport const GRAPHIC_WORKS = 'graphic-works';\nexport const COMPRESSED_AIR = 'air';\nexport const TV_RENT = 'tv-rent';\nexport const STAND_DESIGN = 'stand-design';\nexport const CARPET_COVERING = 'carpet-covering';\nexport const WALL_PANELS = 'wall-panels';\nexport const TEMPORARY_STAFF = 'temporary-staff';\nexport const POWER = 'power';\nexport const DOORS_FENCES = 'doors-fences';\nexport const OTHER_CONSTRUCTIVE = 'other-constructive';\nexport const SOCKETS_LIGHTING = 'sockets-lights';\nexport const SOCKETS = 'sockets';\nexport const LIGHTING = 'lighting';\nexport const CART_TABLE = [\n 'name',\n 'price',\n 'amount',\n 'total',\n 'delete',\n] as const;\nexport const FURNITURE = 'furniture';\nexport const CHAIR = 'chair';\nexport const TABLE = 'table';\nexport const RACK = 'rack';\nexport const RACKS_CABINETS_SHELVES = 'racks-cabinets-shelves';\nexport const SHOWCASE = 'showcase';\nexport const PODIUM = 'podium';\nexport const OTHER_FURNITURE = 'other-furniture';\nexport const KITCHEN_EQUIPMENT = 'kitchen-equipment';\n\nexport const USERS = 'users';\nexport const SETTINGS = 'settings';\nexport const EXHIBITIONS = 'exhibitions';\nexport const SERVICE_DICTIONARY = 'service-dictionary';\nexport const MEMBER_DIRECTORY = 'member-directory';\nexport const OTHER_REFERENCE = 'other-reference';\nexport const PERSONAL_ACCOUNTS = 'personal-accounts';\nexport const PLACED_ORDERS = 'placed-orders';\nexport const CREATE_USER = 'users';\nexport const CREATE_USER_ADD_PAGE = 'users/add';\nexport const CREATE_USER_EDIT_PAGE = 'users/edit';\n","export const LOGIN_PATH = '/login';\nexport const VERIFY_EMAIL_PATH = '/verify-email';\n","import VerifyEmailPage from '@/pages/VerifyEmailPage';\nimport LoginPage from '@/pages/LoginPage';\nimport Layout from '@/layout/Auth';\n\nimport { Outlet, redirect, Route } from '@tanstack/react-router';\nimport { LOGIN_PATH, VERIFY_EMAIL_PATH } from './RoutesConfig/authRoutesConfig';\nimport { rootRoute } from './root';\nimport { indexRouteFactory } from './userPaths';\nimport { UserRoleType } from '../../types/open-api/domain-types';\nimport { $auth } from '@/store/effector/auth';\n\nexport const rootAuthRoute = new Route({\n id: 'auth-root',\n getParentRoute: () => rootRoute,\n beforeLoad: () => {\n const { isLoggedIn, user } = $auth.getState();\n\n if (isLoggedIn && user?.role) {\n throw redirect({\n to: indexRouteFactory(user.role as UserRoleType),\n replace: true,\n });\n }\n },\n component: () => {\n return (\n <Layout>\n <Outlet />\n </Layout>\n );\n },\n});\n\nexport const loginRoute = new Route({\n path: LOGIN_PATH,\n component: () => <LoginPage />,\n getParentRoute: () => rootAuthRoute,\n validateSearch: (\n searchObj: Record<string, unknown>\n ): { redirect: string } => {\n return {\n redirect:\n typeof searchObj.redirect === 'string' ? searchObj.redirect : '',\n };\n },\n});\n\nexport const verifyEmailRoute = new Route({\n path: VERIFY_EMAIL_PATH,\n component: () => <VerifyEmailPage />,\n getParentRoute: () => rootAuthRoute,\n validateSearch: (\n searchObj: Record<string, unknown>\n ): { redirect: string } => {\n return {\n redirect:\n typeof searchObj.redirect === 'string' ? searchObj.redirect : '',\n };\n },\n});\n\nexport const authRouteTree = rootAuthRoute.addChildren([\n loginRoute,\n verifyEmailRoute,\n]);\n","import { User } from '@/model/IUser';\nimport { checkRBACRule, RBACRulesType } from '@/features/rbac/useRBAC';\nimport { redirect } from '@tanstack/react-router';\nimport { indexRouteFactory } from '@/features/Routing/userPaths';\nimport { RoleType } from '@/model/common';\n\nexport const routerRBACGuard = async (\n user: User | null,\n rule: RBACRulesType\n) => {\n if (!user) {\n return;\n }\n\n if (!checkRBACRule(user)(rule)) {\n throw redirect({\n to: indexRouteFactory(user.role as RoleType),\n replace: true,\n });\n }\n};\n","import { Outlet, redirect, Route } from '@tanstack/react-router';\nimport { rootRoute } from './root';\nimport { Profile } from '@/pages/Profile/Profile';\nimport { AdminPanelPage } from '@/layout/AdminPanel';\nimport { exhibitionsRoutesTree } from './protected/admin-exhibitions';\nimport { serviceDictionaryRoutesRootTree } from './protected/service-dictionary';\nimport { memberDirectoryRoutesTree } from './protected/member-directory';\nimport { settingsRoutesRootTree } from './protected/settings';\nimport { usersRoutesRootTree } from './protected/users';\nimport {\n createExhibitionOrderCategoryRoute,\n createExhibitionOrderServiceRoute,\n exhibitionRootRoute,\n exhibitionViewRoute,\n standProjectRoute,\n viewExhibitionCart,\n} from './protected/exhibitions-by-role';\nimport { ADMIN_AREA_PREFIX, indexRouteFactory } from './userPaths';\nimport { RoleType } from '@/model/common';\nimport { $auth } from '@/store/effector/auth';\nimport { agentRoutesRoot } from '@/features/Routing/protected/agent-pages';\n\nexport const protectedRoute = new Route({\n id: 'protected',\n getParentRoute: () => rootRoute,\n beforeLoad: (opts) => {\n const { isLoggedIn, user } = $auth.getState();\n\n if (!isLoggedIn) {\n throw redirect({\n to: '/login',\n search: {\n redirect: opts.location.href,\n },\n });\n }\n\n return {\n role: user?.role,\n user,\n };\n },\n component: () => {\n return <Outlet />;\n },\n});\n\nexport const indexRoute = new Route({\n path: '/',\n beforeLoad: async (opts) => {\n const { role } = opts.context;\n\n if (role) {\n throw redirect({\n to: indexRouteFactory(role as RoleType),\n replace: true,\n });\n }\n },\n getParentRoute: () => protectedRoute,\n});\n\nexport const profileRoute = new Route({\n path: '/profile',\n getParentRoute: () => protectedRoute,\n component: () => <Profile />,\n});\n\nexport const cabinetRoute = new Route({\n path: ADMIN_AREA_PREFIX,\n getParentRoute: () => protectedRoute,\n component: () => <AdminPanelPage />,\n});\n\nexport const flatRouteTree = new Route({\n id: 'routes-by-role',\n getParentRoute: () => protectedRoute,\n});\n\nexport const protectedTree = protectedRoute.addChildren([\n cabinetRoute.addChildren([\n exhibitionsRoutesTree,\n serviceDictionaryRoutesRootTree,\n memberDirectoryRoutesTree,\n settingsRoutesRootTree,\n usersRoutesRootTree,\n ]),\n\n flatRouteTree.addChildren([\n indexRoute,\n agentRoutesRoot,\n profileRoute,\n exhibitionRootRoute.addChildren([\n exhibitionViewRoute,\n viewExhibitionCart,\n createExhibitionOrderCategoryRoute,\n createExhibitionOrderServiceRoute,\n standProjectRoute,\n ]),\n ]),\n]);\n","import { Route } from '@tanstack/react-router';\nimport { cabinetRoute } from '../protected';\nimport { NewExhibition } from '@/pages/AdminPanel/Exhibitions/NewExhibition';\nimport { PlacedOrders } from '@/pages/AdminPanel/PlacedOrders/PlacedOrders';\nimport { EditOrder } from '@/pages/AdminPanel/PlacedOrders/EditOrder/EditOrder';\nimport { NewAccount } from '@/pages/AdminPanel/PersonalAccounts/NewAccount';\nimport * as v from 'zod';\nimport { ManagerType, SellingOfficeType } from '@/types/open-api/domain-types';\nimport { typedAxios } from '@/api/typed-axios';\nimport { CreateOrder } from '@/pages/AdminPanel/PlacedOrders/CreateOrder';\nimport { Loader } from '@/components/Loader/Loader';\nimport { OptionType } from '@/model/common';\nimport {\n type ITEPortal_Domain_Dto_AdminExhibitorSummary,\n type ITEPortal_Domain_Dto_CatalogExhibitorSummary,\n ITEPortal_Domain_Dto_CurrencyDto,\n} from '@/api';\nimport { IBaseOrder } from '@/model/IBaseOrder';\nimport { SearchBoxOptionsType } from '@/components/AdminSearch/types';\nimport i18n from '@/i18n';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ExhibitionsTabsPage } from '@/pages/AdminPanel/Exhibitions/ExhibitionsTabsPage';\nimport { routerRBACGuard } from '@/features/Routing/guard';\nimport { PersonalAccountsTab } from '@/pages/AdminPanel/PersonalAccounts/PersonalAccountsTabs';\n\nexport const adminExhibitionRoutesRoot = new Route({\n path: '/exhibitions',\n getParentRoute: () => cabinetRoute,\n beforeLoad: async ({ context: { user } }) => {\n await routerRBACGuard(user, 'canAccessAdminExhibitions');\n\n return { page: 'exhibitions' };\n },\n});\n\nexport const exhibitionsTabs = ['current', 'past'] as const;\nexport const ExhibitionAccountsTabs = ['posted', 'process'] as const;\n\nconst ExhibitionListRouteSearchSchema = v.object({\n tab: v.enum(exhibitionsTabs).catch('current'),\n});\n\nconst ExhibitionAccountsListRouteSearchSchema = v.object({\n tab: v.enum(ExhibitionAccountsTabs).catch('posted'),\n});\n\nexport type ExhibitionListRouteSearchSchemaType = v.infer<\n typeof ExhibitionListRouteSearchSchema\n>;\n\nexport const exhibitionListRoute = new Route({\n path: '/',\n getParentRoute: () => adminExhibitionRoutesRoot,\n component: () => <ExhibitionsTabsPage />,\n beforeLoad: () => ({\n searchOptions: [\n {\n placeholder: i18n.t('search-exhibition'),\n } satisfies SearchBoxOptionsType,\n ],\n }),\n\n validateSearch: (searchObj) => {\n return ExhibitionListRouteSearchSchema.parse(searchObj);\n },\n});\n\nexport const createExhibitionRoute = new Route({\n path: 'add',\n getParentRoute: () => adminExhibitionRoutesRoot,\n component: () => <NewExhibition type=\"add\" />,\n beforeLoad: () => ({ type: 'add' }),\n loader: async () => {\n const technicalManagers = await typedAxios.user\n .getUsersTechnicalManagers()\n .catch(() => []);\n\n const technicalManagersOptions = technicalManagers.map((manager) => {\n return {\n label: manager.email || manager.id,\n value: manager?.email || manager.id,\n };\n });\n\n return {\n technicalManagers: technicalManagersOptions,\n };\n },\n});\n\nexport const editExhibitionRoute = new Route({\n path: '/$exhibitionId/edit',\n getParentRoute: () => adminExhibitionRoutesRoot,\n component: () => <NewExhibition type=\"edit\" />,\n beforeLoad: () => ({ type: 'edit' }),\n loader: async () => {\n const technicalManagers = await typedAxios.user\n .getUsersTechnicalManagers()\n .catch(() => []);\n\n const technicalManagersOptions = technicalManagers.map((manager) => {\n return {\n label: manager.email || manager.id,\n value: manager?.email || manager.id,\n };\n });\n\n return {\n technicalManagers: technicalManagersOptions,\n };\n },\n});\n\nexport const viewExhibitionRoute = new Route({\n path: '/$exhibitionId/view',\n getParentRoute: () => adminExhibitionRoutesRoot,\n loader: async () => {\n // const { exhibitionId } = store.getState().common;\n //\n // if (+exhibitionId !== +opts.params.exhibitionId) {\n // const exhibition = await typedAxios.exhibition.getExhibitions({\n // id: +opts.params.exhibitionId,\n // });\n //\n // store.dispatch(setExhibitionId(opts.params.exhibitionId));\n // store.dispatch(setExhibitionName(exhibition.name));\n // }\n },\n});\n\nexport const viewExhibitionAccountsRoute = new Route({\n path: 'personal-accounts',\n getParentRoute: () => viewExhibitionRoute,\n component: () => <PersonalAccountsTab />,\n validateSearch: (searchObj) => {\n return ExhibitionAccountsListRouteSearchSchema.parse(searchObj);\n },\n beforeLoad: async (opts) => {\n await routerRBACGuard(\n opts.context.user,\n 'canAccessExhibitionPersonalAccounts'\n );\n\n return {\n page: 'personal-accounts',\n searchOptions: [\n {\n placeholder: i18n.t('search-exhibitors'),\n } satisfies SearchBoxOptionsType,\n ],\n };\n },\n});\n\nexport const settingsTabs = [\n 'main',\n 'stands',\n 'users',\n 'products',\n 'subexponents',\n] as const;\n\nconst EditPersonalAccountsPageSearchSchema = v.object({\n tab: v.enum(settingsTabs).catch('main'),\n});\n\nexport type EditPersonalAccountsPageSearchSchemaType = v.infer<\n typeof EditPersonalAccountsPageSearchSchema\n>;\n\nexport const editExhibitionAccountRoute = new Route({\n path: 'personal-accounts/$accountId/edit',\n getParentRoute: () => viewExhibitionRoute,\n component: () => <NewAccount type=\"edit\" />,\n pendingComponent: () => <Loader centralized />,\n validateSearch: (searchObj) => {\n return EditPersonalAccountsPageSearchSchema.parse(searchObj);\n },\n shouldReload: (match) => {\n return match.cause === 'enter';\n },\n beforeLoad: async (opts) => {\n await routerRBACGuard(\n opts.context.user,\n 'canAccessExhibitionPersonalAccounts'\n );\n\n return {\n page: 'personal-accounts',\n type: 'edit',\n backPath: `/admin/exhibitions/${opts.params.exhibitionId}/view/personal-accounts`,\n };\n },\n loader: async (match) => {\n const {\n context: { queryClient },\n params: { exhibitionId, accountId },\n } = match;\n const accountData = await queryClient.ensureQueryData(\n QueryOptions.exhibitorQueryOptions({\n exhibitorId: +accountId,\n exhibitionId: +exhibitionId,\n })\n );\n\n const technicalManagers = await typedAxios.user.getUsersTechnicalManagers1({\n exhibitionId: +exhibitionId,\n });\n const sellingOffices = await typedAxios.sellingOffice.getSellingOffices();\n\n const currencyData = await typedAxios.currency\n .getCurrency()\n .catch(() => []);\n\n const officesOptions = sellingOffices.map((office) => {\n return { label: office.name || office.id, value: office.id || office.id };\n });\n const technicalManagersOptions = technicalManagers.map((manager) => {\n return {\n label: manager?.email || manager.id,\n value: manager?.email || manager.id,\n };\n });\n\n const currencyOptions = currencyData?.map(\n (option: ITEPortal_Domain_Dto_CurrencyDto) => {\n return {\n label: option?.name,\n value: option?.id,\n };\n }\n );\n\n const agents = await (async () => {\n if (accountData.isAgent) {\n return [] as Array<OptionType>;\n }\n\n return await typedAxios.exhibitor\n .getExhibitorsExhibitionsAgents({\n exhibitionId: +exhibitionId,\n })\n .then((agentsModels) => {\n return agentsModels.map(\n (ag) =>\n ({\n value: ag.id,\n label: ag.name,\n } satisfies OptionType)\n );\n })\n .catch(() => [] as Array<OptionType>);\n })();\n\n return {\n technicalManagers: technicalManagersOptions,\n currencyOptions,\n data: accountData,\n offices: officesOptions,\n agents,\n companies: [] as Array<\n OptionType<ITEPortal_Domain_Dto_CatalogExhibitorSummary>\n >,\n };\n },\n});\n\nexport const addExhibitionAccountRoute = new Route({\n path: 'personal-accounts/add',\n getParentRoute: () => viewExhibitionRoute,\n component: () => <NewAccount type=\"add\" />,\n pendingComponent: () => <Loader centralized />,\n validateSearch: (searchObj) => {\n return EditPersonalAccountsPageSearchSchema.parse(searchObj);\n },\n beforeLoad: async (opts) => {\n await routerRBACGuard(\n opts.context.user,\n 'canAccessExhibitionPersonalAccounts'\n );\n\n return {\n page: 'personal-accounts',\n type: 'add',\n backPath: `/admin/exhibitions/${opts.params.exhibitionId}/view/personal-accounts`,\n };\n },\n loader: async (match) => {\n const {\n params: { exhibitionId },\n } = match;\n\n const technicalManagers = await typedAxios.user.getUsersTechnicalManagers1({\n exhibitionId: +exhibitionId,\n });\n\n const companies = await (async () => {\n try {\n return await typedAxios.exhibitor.getAdminSummaries({\n pageSize: -1,\n });\n } catch {\n return [];\n }\n })();\n\n const sellingOffices = await typedAxios.sellingOffice.getSellingOffices();\n\n const currencyData = await typedAxios.currency\n .getCurrency()\n .catch(() => []);\n\n const technicalManagersOptions = technicalManagers.map(\n (manager: ManagerType) => {\n return {\n label: manager.email || manager.id,\n value: manager.email || manager.id,\n };\n }\n );\n\n const agents = await typedAxios.exhibitor\n .getExhibitorsExhibitionsAgents({\n exhibitionId: +exhibitionId,\n })\n .then((agentsModels) => {\n return agentsModels.map(\n (ag) =>\n ({\n value: ag.id,\n label: ag.name,\n } satisfies OptionType)\n );\n })\n .catch(() => [] as Array<ITEPortal_Domain_Dto_AdminExhibitorSummary>);\n\n const officesOptions = sellingOffices.map((office: SellingOfficeType) => {\n return {\n label: office.name || office.id,\n value: office.id || office.id,\n };\n });\n\n const currencyOptions = currencyData?.map(\n (option: ITEPortal_Domain_Dto_CurrencyDto) => {\n return {\n label: option?.name,\n value: option?.id,\n };\n }\n );\n\n return {\n technicalManagers: technicalManagersOptions,\n currencyOptions,\n offices: officesOptions,\n data: {},\n agents,\n companies: companies.map((c) => ({\n value: c.id,\n label: c.name,\n meta: c,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_CatalogExhibitorSummary>\n >,\n };\n },\n});\n\nconst PlacedOrdersRouteSearchSchema = v.object({\n exhibitorId: v.coerce.number().optional(),\n orderStatus: v.coerce.number().optional(),\n});\n\nexport const viewExhibitionPlacedOrdersRoute = new Route({\n path: 'placed-orders',\n getParentRoute: () => viewExhibitionRoute,\n component: PlacedOrders,\n beforeLoad: () => ({\n page: 'placed-orders',\n searchOptions: [\n {\n placeholder: i18n.t('search-orders'),\n } satisfies SearchBoxOptionsType,\n ],\n }),\n\n validateSearch: (searchObj) => {\n return PlacedOrdersRouteSearchSchema.parse(searchObj);\n },\n});\n\nexport const editOrderRoute = new Route({\n path: 'placed-orders/$orderId/edit',\n getParentRoute: () => viewExhibitionRoute,\n component: EditOrder,\n beforeLoad: (opts) => {\n const { exhibitionId } = opts.params;\n\n return {\n page: 'placed-orders',\n type: 'edit',\n backPath: `/admin/exhibitions/${exhibitionId}/view/placed-orders/`,\n };\n },\n pendingComponent: () => <Loader centralized />,\n loader: async (opts) => {\n const {\n params: { exhibitionId, orderId },\n context: { user },\n } = opts;\n\n const isAgent = user?.isAgent || null;\n\n const order = await typedAxios.order.getOrders1({\n orderId: +orderId,\n });\n\n const alreadyAddedItemIds =\n order.products?.filter((p) => !p.included).map((p) => p.id) || [];\n\n const exhibitors = await typedAxios.exhibitor.getExhibitorsExhibition({\n exhibitionId: +exhibitionId,\n });\n\n const exhibitor = exhibitors.find((e) => e.id === order.exhibitorId);\n\n const items = await typedAxios.priceListItem.getExhibitionsPriceListsItems({\n exhibitionId: +exhibitionId,\n priceListId: exhibitor?.priceListId || 0,\n });\n\n const sellingOffices = isAgent\n ? null\n : await typedAxios.sellingOffice.getSellingOffices();\n\n return {\n order: new IBaseOrder(order),\n exhibitor,\n sellingOffices,\n currency: isAgent ? null : order?.currency,\n items: items.filter(\n (i) => i.name && !alreadyAddedItemIds.includes(i.name)\n ),\n };\n },\n});\n\nexport const createOrderRoute = new Route({\n path: 'placed-orders/create',\n getParentRoute: () => viewExhibitionRoute,\n component: CreateOrder,\n validateSearch: (searchObj) => {\n return PlacedOrdersRouteSearchSchema.parse(searchObj);\n },\n pendingComponent: () => <Loader centralized />,\n loader: async (opts) => {\n const {\n params: { exhibitionId },\n } = opts;\n\n const exhibitors = await typedAxios.exhibitor.getExhibitorsExhibition({\n exhibitionId: +exhibitionId,\n });\n\n return {\n exhibitors: exhibitors.map((exhibitor) => {\n return {\n label: exhibitor.name,\n value: exhibitor.id,\n meta: exhibitor,\n };\n }) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_AdminExhibitorSummary>\n >,\n };\n },\n beforeLoad: (opts) => {\n const { exhibitionId } = opts.params;\n\n return {\n page: 'placed-orders',\n type: 'create',\n backPath: `/admin/exhibitions/${exhibitionId}/view/placed-orders/`,\n };\n },\n});\n\nexport const exhibitionsRoutesTree = adminExhibitionRoutesRoot.addChildren([\n exhibitionListRoute,\n createExhibitionRoute,\n editExhibitionRoute,\n viewExhibitionRoute.addChildren([\n viewExhibitionAccountsRoute,\n editExhibitionAccountRoute,\n addExhibitionAccountRoute,\n viewExhibitionPlacedOrdersRoute,\n editOrderRoute,\n createOrderRoute,\n ]),\n]);\n","import { redirect, Route } from '@tanstack/react-router';\nimport { flatRouteTree } from '@/features/Routing/protected';\nimport { AgentHome } from '@/pages/AgentHome';\nimport { User } from '@/model/IUser';\nimport { indexRouteFactory } from '@/features/Routing/userPaths';\nimport { RoleType } from '@/model/common';\n\nexport const agentRoutesRoot = new Route({\n path: '/agent-home',\n getParentRoute: () => flatRouteTree,\n component: AgentHome,\n beforeLoad: async ({ context: { role } }) => {\n if (role !== User.Role.Agent) {\n throw redirect({\n to: indexRouteFactory(role as RoleType),\n replace: true,\n });\n }\n },\n});\n","import { redirect, Route } from '@tanstack/react-router';\nimport { flatRouteTree } from '../protected';\nimport Exhibition from '../../../pages/Exhibition';\nimport Cart from '../../../pages/Cart';\nimport Categories from '../../../pages/Order/Categories';\nimport Service from '../../../pages/Order/Service';\nimport { Loader } from '@/components/Loader/Loader';\n\nimport { typedAxios } from '@/api/typed-axios';\nimport { ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto } from '@/api';\n\nimport { leaveExhibitionOrderEvent } from '@/store/effector/cleanup';\nimport { $exhibition, exhibitionApi } from '@/store/effector/exhibition';\n\nimport { CatalogGateHOC } from '@/store/effector/catalog-gate';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { QueryClient } from '@tanstack/react-query';\nimport { IExhibition } from '@/model/IExhibition';\nimport { $stand, standApi } from '@/store/effector/stand';\nimport { StandProject } from '@/pages/StandProject';\nimport { routerRBACGuard } from '@/features/Routing/guard';\n\nexport const exhibitionRootRoute = new Route({\n path: '/exhibitions',\n getParentRoute: () => flatRouteTree,\n onLeave: () => {\n leaveExhibitionOrderEvent();\n },\n pendingComponent: () => <Loader centralized />,\n beforeLoad: async (opts) => {\n // @ts-expect-error for root route there is no such param, but for child routes it will be\n const { exhibitionId } = opts.params;\n const {\n context: { user },\n } = opts;\n\n await routerRBACGuard(user, 'canAccessExhibitionProfile');\n\n if (!exhibitionId) {\n return { exhibition: null };\n }\n\n const exhibitionInstance = $exhibition.getState().exhibition;\n\n if (exhibitionInstance instanceof IExhibition) {\n if (exhibitionInstance.id == exhibitionId) {\n return {\n exhibition: exhibitionInstance,\n };\n }\n }\n\n const exhibition = await typedAxios.exhibition.getExhibitions({\n id: +exhibitionId,\n });\n\n const exhibitionNewInstance = new IExhibition({\n id: +exhibitionId,\n ...exhibition,\n });\n\n exhibitionApi.setInstance(exhibitionNewInstance);\n\n return { exhibition: exhibitionNewInstance };\n },\n});\n\nexport const exhibitionViewRoute = new Route({\n path: '$exhibitionId',\n getParentRoute: () => exhibitionRootRoute,\n loader: async (opts) => {\n const { exhibitionId } = opts.params;\n const data = await typedAxios.stand.getExhibitionsExhibitorStands({\n exhibitionId: +exhibitionId,\n });\n\n return { standsData: data };\n },\n pendingComponent: () => <Loader centralized />,\n component: () => <Exhibition />,\n});\n\nexport const viewExhibitionCart = new Route({\n path: '$exhibitionId/$stand/cart',\n getParentRoute: () => exhibitionRootRoute,\n component: () => <Cart />,\n loader: async ({ params, context: { queryClient } }) => {\n const cleaningDiscount = await typedAxios.discount\n .getDiscountsCleaning()\n .then((response) => response)\n .catch(() => {\n return [] as ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto[];\n });\n\n await invalidateStand({\n standId: +params.stand,\n queryClient,\n });\n\n return {\n cleaningDiscount,\n };\n },\n});\n\nconst invalidateStand = async (opts: {\n standId: number;\n queryClient: QueryClient;\n}) => {\n try {\n const { queryClient, standId } = opts;\n const stand = await queryClient.ensureQueryData(\n QueryOptions.loadExhibitorStand({\n standId,\n })\n );\n\n const exhibition = $exhibition.getState();\n\n if (\n exhibition.sellingOfficeId !== stand.sellingOfficeId ||\n exhibition.exhibitionId !== stand.exhibitionId ||\n exhibition.currency !== stand.currency\n ) {\n exhibitionApi.update({\n sellingOfficeId: stand.sellingOfficeId,\n exhibitionId: stand.exhibitionId,\n currency: stand.currency,\n });\n }\n\n if ($stand.getState().standForOrder?.standId !== stand.standId) {\n standApi.setStandForOrder(stand);\n }\n } catch {}\n};\n\nexport const createExhibitionOrderCategoryRoute = new Route({\n path: '$exhibitionId/$stand/create',\n getParentRoute: () => exhibitionRootRoute,\n component: () => {\n return (\n <CatalogGateHOC>\n <Categories title={'technicalServices'} />\n </CatalogGateHOC>\n );\n },\n beforeLoad: async ({ params, context: { exhibition, queryClient } }) => {\n if (exhibition && exhibition.isPast) {\n throw redirect({\n to: exhibition.id ? `/exhibitions/${exhibition.id}` : '/',\n });\n }\n\n await invalidateStand({\n queryClient,\n standId: +params.stand,\n });\n },\n});\n\nexport const createExhibitionOrderServiceRoute = new Route({\n path: '$exhibitionId/$stand/create/$service',\n getParentRoute: () => exhibitionRootRoute,\n component: () => {\n return (\n <CatalogGateHOC>\n <Service />\n </CatalogGateHOC>\n );\n },\n beforeLoad: async ({ params, context: { queryClient } }) => {\n await invalidateStand({\n queryClient,\n standId: +params.stand,\n });\n },\n});\n\nexport const standProjectRoute = new Route({\n path: '$exhibitionId/$stand/project/$projectId',\n getParentRoute: () => exhibitionRootRoute,\n component: StandProject,\n loader: async ({\n context: { queryClient },\n params: { stand: standId, exhibitionId },\n }) => {\n const { exhibitionName } = $exhibition.getState();\n\n if (!exhibitionName) {\n const exhibition = await typedAxios.exhibition.getExhibitions({\n id: +exhibitionId,\n });\n\n exhibitionApi.update({\n exhibitionName: exhibition.name,\n });\n }\n\n const project = await queryClient.fetchQuery(\n QueryOptions.loadStandProject({\n standId: +standId,\n })\n );\n\n return {\n project,\n };\n },\n});\n","import { Route } from '@tanstack/react-router';\nimport { cabinetRoute } from '../protected';\n\nimport { MembersDirectory } from '../../../pages/AdminPanel/MembersDirectory/MembersDirectory';\nimport { SearchBoxOptionsType } from '../../../components/AdminSearch/types';\nimport i18n from '../../../i18n';\nimport { ManageExhibitorUsers } from '@/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers';\nimport { typedAxios } from '@/api/typed-axios';\nimport { Loader } from '@/components/Loader/Loader';\nimport { routerRBACGuard } from '@/features/Routing/guard';\n\nexport const memberDirectoryRoutesRoot = new Route({\n path: '/member-directory',\n getParentRoute: () => cabinetRoute,\n beforeLoad: async ({ context: { user } }) => {\n await routerRBACGuard(user, 'canAccessAdminCompanies');\n\n return { page: 'member-directory' };\n },\n});\n\nexport const memberDictionaryRoute = new Route({\n path: '/',\n getParentRoute: () => memberDirectoryRoutesRoot,\n component: () => <MembersDirectory />,\n beforeLoad: () => {\n return {\n searchOptions: [\n {\n placeholder: i18n.t('search-exhibitors'),\n } satisfies SearchBoxOptionsType,\n ],\n };\n },\n});\n\nexport const viewExhibitorRoute = new Route({\n path: '/$exhibitorId',\n getParentRoute: () => memberDirectoryRoutesRoot,\n component: () => <ManageExhibitorUsers />,\n pendingComponent: () => <Loader centralized />,\n beforeLoad: async (opts) => {\n const {\n params: { exhibitorId },\n } = opts;\n\n const exhibitor = await typedAxios.exhibitor.getExhibitors({\n id: +exhibitorId,\n });\n\n return {\n pageTitle: i18n.t('company-employees-title', {\n companyName: exhibitor.name,\n }),\n exhibitor,\n };\n },\n loader: async ({ context: { exhibitor } }) => {\n return {\n exhibitor,\n };\n },\n});\n\nexport const memberDirectoryRoutesTree = memberDirectoryRoutesRoot.addChildren([\n memberDictionaryRoute,\n viewExhibitorRoute,\n]);\n","import { Route } from '@tanstack/react-router';\nimport { cabinetRoute } from '../protected';\nimport { ServiceDirectory } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion';\n\nimport { TKey } from '@/i18n/types';\nimport { SearchBoxOptionsType } from '@/components/AdminSearch/types';\nimport i18n from '@/i18n';\nimport { Button, Flex } from '@chakra-ui/react';\nimport { editCategoryApi } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/edit-category-api';\nimport { routerRBACGuard } from '@/features/Routing/guard';\nimport { editProductApi } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\nimport { queryClient } from '@/features/query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { ApiError } from '@/api';\nimport { toast } from 'react-toastify';\nimport { UseFormReturn } from 'react-hook-form';\nimport {\n ImportCSVForm,\n ImportCSVFormValues,\n} from '@/pages/AdminPanel/ServiceDirectory/ImportCSVForm';\nimport { typedAxios } from '@/api/typed-axios';\n\nexport const serviceDictionaryRoutesRoot = new Route({\n path: '/service-dictionary',\n getParentRoute: () => cabinetRoute,\n beforeLoad: async ({ context: { user } }) => {\n await routerRBACGuard(user, 'canAccessAdminServiceDirectory');\n\n return { page: 'service-dictionary' satisfies TKey } as const;\n },\n});\n\nexport const serviceDictionaryRoute = new Route({\n path: '/',\n getParentRoute: () => serviceDictionaryRoutesRoot,\n component: () => <ServiceDirectory />,\n beforeLoad: async (opts) => {\n queryClient.ensureQueryData(QueryOptions.loadCategoryOptions());\n\n const saveCSV = async (values: ImportCSVFormValues) => {\n try {\n const response = await typedAxios.product.postProductsBatch({\n formData: {\n importProductsFile: values?.file?.[0],\n },\n });\n\n if (response) {\n const url = window.URL.createObjectURL(new Blob([response]));\n\n const link = document.createElement('a');\n\n link.href = url;\n link.setAttribute('download', 'ErrorRows.csv');\n document.body.appendChild(link);\n link.click();\n\n toast.error(i18n.t('error-rows-file'));\n } else {\n toast.success(i18n.t('rows-downloaded-successfully'));\n }\n } catch (e) {\n if (e instanceof ApiError) {\n const message = e.body;\n\n if (message && typeof message === 'string') {\n toast.error(message);\n } else {\n toast.error(i18n.t('error-occurred'));\n }\n }\n } finally {\n ModalFactory.close();\n }\n };\n\n const openImportModal = () => {\n ModalFactory.show({\n title: i18n.t('importCSV'),\n Component: ImportCSVForm,\n okLabel: i18n.t('importButton'),\n onOk: async (ctx: UseFormReturn<ImportCSVFormValues>) => {\n return ctx.handleSubmit(saveCSV)();\n },\n });\n };\n\n if (!opts.search.tab || opts.search.tab === 'categories') {\n return {\n key: 'categories',\n searchOptions: [\n {\n placeholder: i18n.t('search-categories'),\n } satisfies SearchBoxOptionsType,\n {\n placeholder: i18n.t('search-services'),\n queryParameterName: 'searchProduct',\n } satisfies SearchBoxOptionsType,\n ],\n subHeader: (\n <Flex flexDirection=\"row\" ml=\"auto\" gap={4}>\n <Button\n ml=\"auto\"\n onClick={() => {\n editCategoryApi.open({\n category: null,\n parentCategoryName: undefined,\n });\n }}\n >\n {i18n.t('add-category')}\n </Button>\n <Button\n ml=\"auto\"\n onClick={() => {\n editProductApi.open({\n product: null,\n });\n }}\n >\n {i18n.t('add-service')}\n </Button>\n <Button ml=\"auto\" onClick={openImportModal}>\n {i18n.t('importCSV')}\n </Button>\n </Flex>\n ),\n };\n }\n\n if (opts.search.tab && opts.search.tab === 'services') {\n return {\n key: 'services',\n searchOptions: [\n {\n placeholder: i18n.t('search-services'),\n } satisfies SearchBoxOptionsType,\n ],\n };\n }\n },\n validateSearch: (\n searchObj: Record<string, unknown>\n ): {\n tab: 'categories' | 'services' | undefined;\n action: 'create-category' | undefined;\n } => {\n return {\n tab: ['categories', 'services'].includes(searchObj.tab as string)\n ? (searchObj.tab as 'categories' | 'services')\n : undefined,\n\n action: ['create-category'].includes(searchObj.action as string)\n ? (searchObj.action as 'create-category')\n : undefined,\n };\n },\n});\n\nexport const serviceDictionaryRoutesRootTree =\n serviceDictionaryRoutesRoot.addChildren([serviceDictionaryRoute]);\n","import { Route } from '@tanstack/react-router';\nimport { cabinetRoute } from '../protected';\n\nimport { SettingsPage } from '../../../pages/AdminPanel/Settings/SettingsPage';\nimport { typedAxios } from '../../../api/typed-axios';\nimport * as v from 'zod';\nimport { routerRBACGuard } from '@/features/Routing/guard';\n\nexport const settingsRoutesRoot = new Route({\n path: '/settings',\n getParentRoute: () => cabinetRoute,\n beforeLoad: async ({ context: { user } }) => {\n await routerRBACGuard(user, 'canAccessAdminSettings');\n\n return { page: 'settings' };\n },\n});\n\nexport const settingsTabs = [\n 'global',\n 'smtp',\n 'logo',\n 'manual',\n 'discount',\n 'bitrix',\n] as const;\n\nconst SettingsPageSearchSchema = v.object({\n tab: v.enum(settingsTabs).catch('global'),\n});\n\nexport type SettingsPageSearchSchemaType = v.infer<\n typeof SettingsPageSearchSchema\n>;\n\nexport const settingsRoute = new Route({\n path: '/',\n getParentRoute: () => settingsRoutesRoot,\n component: () => <SettingsPage />,\n\n loader: async () => {\n const settings = await typedAxios.globalSettings.getGlobalSettings();\n const discounts = await typedAxios.discount.getDiscountsCleaning();\n\n return { settings, discounts };\n },\n validateSearch: (searchObj) => {\n return SettingsPageSearchSchema.parse(searchObj);\n },\n});\n\nexport const settingsRoutesRootTree = settingsRoutesRoot.addChildren([\n settingsRoute,\n]);\n","import { Route } from '@tanstack/react-router';\nimport { cabinetRoute } from '../protected';\n\nimport { UsersTable } from '@/pages/AdminPanel/UsersTable/UsersTable';\nimport { NewUser } from '@/pages/AdminPanel/UsersTable/NewUsers/NewUser';\nimport i18n from '@/i18n';\nimport { SearchBoxOptionsType } from '@/components/AdminSearch/types';\nimport { routerRBACGuard } from '@/features/Routing/guard';\n\nexport const usersRoutesRoot = new Route({\n getParentRoute: () => cabinetRoute,\n path: '/users',\n beforeLoad: async ({ context: { user } }) => {\n await routerRBACGuard(user, 'canAccessAdminUsers');\n\n return {\n page: 'users',\n searchOptions: [\n {\n placeholder: i18n.t('search-users'),\n } satisfies SearchBoxOptionsType,\n ],\n };\n },\n});\n\nexport const usersListRoute = new Route({\n getParentRoute: () => usersRoutesRoot,\n path: '/',\n component: () => <UsersTable />,\n});\n\nexport const addNewUserRoute = new Route({\n getParentRoute: () => usersRoutesRoot,\n path: '/add',\n component: () => <NewUser type=\"add\" />,\n beforeLoad: () => ({ page: 'create-user-add' }),\n});\nexport const editUserRoute = new Route({\n getParentRoute: () => usersRoutesRoot,\n path: '/$userId/edit',\n component: () => <NewUser type=\"edit\" />,\n beforeLoad: () => ({ page: 'create-user-edit' }),\n});\n\nexport const usersRoutesRootTree = usersRoutesRoot.addChildren([\n usersListRoute,\n addNewUserRoute,\n editUserRoute,\n]);\n","import {\n Route,\n Router,\n RouterProvider as TanstackRouterProvider,\n} from '@tanstack/react-router';\nimport { authRouteTree } from './auth';\nimport { protectedTree } from './protected';\nimport { rootRoute } from './root';\nimport { queryClient } from '../query';\n\nconst indexRoute = new Route({\n getParentRoute: () => rootRoute,\n path: '/index',\n component: () => 'index',\n});\n\nconst routeTree = rootRoute.addChildren([\n protectedTree,\n authRouteTree,\n indexRoute,\n]);\n\nexport const router = new Router({\n routeTree,\n context: {\n queryClient,\n },\n});\n\nexport const RouterProvider = () => {\n return <TanstackRouterProvider router={router} />;\n};\n","import { Outlet, rootRouteWithContext } from '@tanstack/react-router';\nimport { TanStackRouterDevtools } from '@tanstack/router-devtools';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { queryClient } from '../query';\nimport { ReactQueryDevtools } from '@tanstack/react-query-devtools';\n\nexport const rootRoute = rootRouteWithContext<{\n page?: string;\n type?: string;\n queryClient: QueryClient;\n}>()({\n component: () => {\n return (\n <QueryClientProvider client={queryClient}>\n <Outlet />\n {process.env.NODE_ENV === 'development' && <TanStackRouterDevtools />}\n {process.env.NODE_ENV === 'development' && <ReactQueryDevtools />}\n </QueryClientProvider>\n );\n },\n});\n","import { UserRoleType } from '@/types/open-api/domain-types';\nimport { User } from '@/model/IUser';\n\nexport const ADMIN_AREA_PREFIX = '/admin' as const;\nexport const PROFILE_PATH = '/profile' as const;\n\nexport const superAdminPathRootPath =\n `${ADMIN_AREA_PREFIX}/exhibitions` as const;\n\nexport const exhibitorPathRootPath = PROFILE_PATH;\nexport const agentPathRootPath = '/agent-home' as const;\n\nexport const adminPathRootPath = `${ADMIN_AREA_PREFIX}/users` as const;\n\nexport const supportPathRootPath = superAdminPathRootPath;\n\nexport const technicalManagerPathRootPath = superAdminPathRootPath;\n\nexport const moderatorPathRootPath = superAdminPathRootPath;\n\nexport const indexRouteFactory = (role: UserRoleType) => {\n switch (role) {\n case User.Role.Agent:\n return agentPathRootPath;\n case User.Role.SuperAdmin:\n return superAdminPathRootPath;\n case User.Role.Admin:\n return adminPathRootPath;\n case User.Role.SupportManager:\n return supportPathRootPath;\n case User.Role.TechnicalManager:\n return technicalManagerPathRootPath;\n case User.Role.Moderator:\n return moderatorPathRootPath;\n case User.Role.Exhibitor:\n return exhibitorPathRootPath;\n default:\n return '/';\n }\n};\n","import { isNil } from '@/utils/is-nil';\n\nexport const FEATURES = {\n VAT_DESCRIPTION: 'VAT_DESCRIPTION',\n LINKED_ZERO_PRICE_PRODUCTS: 'LINKED_ZERO_PRICE_PRODUCTS',\n PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT:\n 'PUBLIC_PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT',\n} as const;\n\ntype FeatureKeys = keyof typeof FEATURES;\n\nconst getFeaturesMap = () => {\n return {\n VAT_DESCRIPTION: process.env.PUBLIC_VAT_DESCRIPTION,\n PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT:\n process.env.PUBLIC_PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT || 3,\n LINKED_ZERO_PRICE_PRODUCTS: true,\n };\n};\n\nexport const useFeature = (feature: FeatureKeys) => {\n const flag = getFeaturesMap()[feature];\n\n if (isNil(flag)) {\n return false;\n }\n\n return (\n flag &&\n flag !== '0' &&\n flag !== 0 &&\n flag !== 'false' &&\n flag !== 'undefined'\n );\n};\n\nexport const useFeatureValue = <T>(\n feature: FeatureKeys,\n defaultValue: T\n): T => {\n const hasFeature = useFeature(feature);\n\n if (!hasFeature) {\n return defaultValue;\n }\n\n return getFeaturesMap()[feature] as T;\n};\n","import { QueryClient } from '@tanstack/react-query';\n\nexport const queryClient = new QueryClient({\n defaultOptions: {\n queries: {\n refetchOnWindowFocus: false,\n refetchIntervalInBackground: false,\n },\n },\n});\n","import {\n ITEPortal_Domain_Dto_AdminExhibitionSummary,\n ITEPortal_Domain_Dto_CategoryDropdownDto,\n ITEPortal_Domain_Dto_ExhibitorDto,\n} from '@/api';\nimport { queryOptions } from '@tanstack/react-query';\nimport { typedAxios } from '@/api/typed-axios';\nimport { isNil } from '@/utils/is-nil';\nimport { CategoryQueryOptionsType } from '@/features/query/query-options/types';\nimport { IdType, OptionType } from '@/model/common';\nimport { ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto } from '@/api/models/ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto';\n\nexport const QueryOptions = {\n standsQueryOptions: (opts: {\n exhibitorId: ITEPortal_Domain_Dto_ExhibitorDto['id'];\n exhibitionId: ITEPortal_Domain_Dto_AdminExhibitionSummary['id'];\n }) =>\n queryOptions({\n queryKey: ['exhibitor-stands', opts],\n queryFn: () =>\n typedAxios.stand.getExhibitionsExhibitorsStands({\n exhibitorId: opts.exhibitorId,\n exhibitionId: opts.exhibitionId,\n }),\n }),\n exhibitorQueryOptions: (opts: {\n exhibitionId: ITEPortal_Domain_Dto_AdminExhibitionSummary['id'];\n exhibitorId?: ITEPortal_Domain_Dto_ExhibitorDto['id'];\n }) =>\n queryOptions({\n queryKey: ['exhibitor', opts],\n queryFn: async () => {\n if (isNil(opts.exhibitorId)) {\n return {} as ITEPortal_Domain_Dto_ExhibitorDto;\n }\n\n return typedAxios.exhibitor.getExhibitors({\n exhibitionId: opts.exhibitionId,\n id: opts.exhibitorId,\n });\n },\n }),\n\n loadExhibitorStand: (opts: { standId: number }) => {\n return queryOptions({\n queryKey: ['stands', opts.standId],\n queryFn: async () =>\n await typedAxios.stand.getExhibitorStands({\n standId: opts.standId,\n }),\n });\n },\n\n loadCategoriesQueryOptions: (opts: CategoryQueryOptionsType) => {\n return queryOptions({\n queryKey: [\n 'load-catalog-categories',\n opts.buildingType,\n opts.exhibitionId,\n opts.currency,\n ],\n queryFn: async () => {\n const { buildingType, exhibitionId, currency } = opts;\n\n if (isNil(buildingType) || isNil(exhibitionId) || isNil(currency)) {\n return [];\n }\n\n const data = await typedAxios.category.getCategoriesPriceList({\n buildingType: buildingType,\n exhibitionId: +exhibitionId,\n currency: currency ? currency : undefined,\n });\n\n return data;\n },\n });\n },\n\n loadPriceListItemsShort: (exceptPriceListId?: IdType) => {\n return queryOptions({\n queryKey: ['price-list-items', exceptPriceListId],\n initialData: [],\n queryFn: async () => {\n const data = await typedAxios.product.getProductsShort({\n exceptPriceListId: exceptPriceListId ? +exceptPriceListId : undefined,\n });\n\n return data.map((priceListItemOption) => {\n return {\n value: priceListItemOption?.id,\n label: priceListItemOption?.key,\n } satisfies OptionType;\n });\n },\n });\n },\n\n loadStandProject: (opts: { standId: number | null }) => {\n return queryOptions({\n queryKey: ['stand-project', opts],\n retry: 1,\n queryFn: async () => {\n if (!opts.standId) {\n return null;\n }\n\n return typedAxios.stand.getStandsProject({\n standId: opts.standId,\n });\n },\n });\n },\n\n loadCategoryOptions: () => {\n return queryOptions({\n queryKey: ['category-formatted-options'],\n retry: 1,\n queryFn: async () => {\n const categories =\n await typedAxios.category.getCategoriesAdminSummaries();\n\n return categories.map((ct) => ({\n value: ct.key as string,\n label: ct.value,\n meta: ct,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_CategoryDropdownDto>\n >;\n },\n });\n },\n\n loadEventMasterOptions: () => {\n return queryOptions({\n queryKey: ['event-master-formatted-options'],\n retry: 1,\n queryFn: async () => {\n const eventMasters = await typedAxios.bitrix.getBitrixEventMasters();\n\n return eventMasters.map((em) => ({\n value: em.id,\n label: em.title,\n meta: em,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto>\n >;\n },\n });\n },\n loadCompanyOptions: () => {\n return queryOptions({\n queryKey: ['company-options'],\n retry: 1,\n queryFn: async () => {\n const eventMasters = await typedAxios.iteCompany.getCompanies();\n\n return eventMasters.map((em) => ({\n value: em.id,\n label: em.title,\n meta: em,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventMaster_EventMasterDto>\n >;\n },\n });\n },\n subexponentsQueryOptions: (opts: { standId: number }) =>\n queryOptions({\n queryKey: ['stand-subexponents', opts],\n queryFn: () =>\n typedAxios.stand.getStandsSharers({\n standId: opts.standId,\n }),\n }),\n\n productsQueryOptions: (opts: { standId: number }) =>\n queryOptions({\n queryKey: ['stand-products', opts],\n queryFn: () =>\n typedAxios.stand.getStandsProducts({\n standId: opts.standId,\n }),\n }),\n};\n","import { User } from '@/model/IUser';\nimport { useAuth } from '@/store/effector/auth';\n\nexport const rules = {\n canManageSuperAdmins: (user) => {\n return user.isSuperAdmin;\n },\n canDeleteOrder: (user) => {\n return user.isSuperAdmin || user.isTechnicalManager;\n },\n canCreateOrder: (user) => {\n return user.isSuperAdmin || user.isTechnicalManager || user.isAgent;\n },\n canEditOrders: (user) => {\n return !user.isModerator && !user.isExhibitor;\n },\n canViewPublicExhibitions: (user) => {\n return user.isExhibitor || user.isAgent;\n },\n canAccessAdminUsers: (user) => {\n return user.isSuperAdmin || user.isAdmin;\n },\n canAccessAdminSettings: (user) => {\n return user.isSuperAdmin || user.isAdmin;\n },\n canAccessAdminServiceDirectory: (user) => {\n return user.isSuperAdmin || user.isSupportManager;\n },\n canAccessAdminCompanies: (user) => {\n return user.isSuperAdmin || user.isSupportManager;\n },\n canAccessAdminExhibitions: (user) => {\n return (\n user.isSuperAdmin ||\n user.isAgent ||\n user.isModerator ||\n user.isTechnicalManager ||\n user.isSupportManager\n );\n },\n canAccessExhibitionProfile: (user) => {\n return user.isAgent || user.isExhibitor;\n },\n canAccessExhibitionPersonalAccounts: (user) => {\n return !user.isExhibitor && !user.isAgent && !user.isSupportManager;\n },\n canAccessExhibitionOrders: (user) => {\n return (\n user.isSuperAdmin ||\n user.isAgent ||\n user.isTechnicalManager ||\n user.isModerator\n );\n },\n canAddExhibition: (user) => {\n return !user.isExhibitor && !user.isAgent && !user.isTechnicalManager;\n },\n canEditExhibition: (user) => {\n return !user.isAgent && !user.isModerator && !user.isTechnicalManager;\n },\n canManageExhibition: (user) => {\n return (\n user.isSuperAdmin ||\n user.isTechnicalManager ||\n user.isAgent ||\n user.isModerator\n );\n },\n canAddExhibitionExhibitor: (user) => {\n return user.isSuperAdmin || user.isTechnicalManager;\n },\n canAddStand: (user) => {\n return user.isSuperAdmin || user.isTechnicalManager;\n },\n canAddOrderPersonalDiscount: (user) => {\n return !user.isModerator && !user.isExhibitor && !user.isAgent;\n },\n canRemoveSurchargeFromOrder: (user) => {\n return !user.isModerator && !user.isExhibitor && !user.isAgent;\n },\n canChangeOrderStatus: (user) => {\n return !user.isModerator && !user.isExhibitor && !user.isAgent;\n },\n} satisfies Record<string, (user: User) => boolean>;\n\nexport type RBACRulesType = keyof typeof rules;\n\nexport const checkRBACRule = (user: User | null) => (rule: RBACRulesType) => {\n if (!user) {\n return null;\n }\n\n return rules[rule]?.(user) || false;\n};\n\nexport const useRBAC = () => {\n const { user } = useAuth();\n\n const guard = checkRBACRule(user);\n\n return {\n user,\n can: (rule: RBACRulesType) => {\n return guard(rule);\n },\n };\n};\n","import * as Sentry from '@sentry/react';\n\nexport const bootstrapSentry = () => {\n if (process.env.NODE_ENV === 'development') {\n return;\n }\n\n try {\n Sentry.init({\n dsn: 'https://0131d4d8a994bb3eee122cac062f6017@o308535.ingest.sentry.io/4506558801379328',\n // Set tracesSampleRate to 1.0 to capture 100%\n // of transactions for performance monitoring.\n tracesSampleRate: 1.0,\n\n // Capture Replay for 10% of all sessions,\n // plus for 100% of sessions with an error\n replaysSessionSampleRate: 0.1,\n replaysOnErrorSampleRate: 1.0,\n release: process.env.PUBLIC_API_URL,\n });\n } catch {\n console.warn(`sentry initialisation failed`);\n }\n};\n","import { Category } from '@/model/ICategory';\n\nexport const useCategoriesByData = (categoriesData: Category[]) => {\n return categoriesData.map((category) => {\n return {\n category: category,\n image: category.imageUrl,\n id: category.id,\n description: category.description,\n };\n });\n};\n","import { Category } from '@/model/ICategory';\n\nexport const useSubCategoriesByData = (subCategoriesData: Category[]) => {\n return subCategoriesData.map((subCategory) => {\n return {\n category: subCategory,\n image: subCategory.imageUrl,\n id: subCategory.id,\n description: subCategory.description,\n };\n });\n};\n","import { useEffect } from 'react';\nimport { orderApi } from '@/store/effector/order';\n\n/**\n * @description this hook should be used on exhibition screen to reset all the data from the previously edited order\n */\nexport const useExhibitionStateReset = () => {\n useEffect(() => {\n orderApi.cleanUpOrderState();\n }, []);\n};\n","import { FieldValues, Path, UseFormReturn } from 'react-hook-form';\nimport i18n from '../i18n';\nimport { typedObjectKeys } from '../utils/typed-object-keys';\n\ntype HandlingOptions = {\n ignoreFields?: string[];\n fieldPrefix?: string;\n};\n\nconst errorsOverride = {\n 'Error converting value {null}': i18n.t('required-field'),\n};\n\nconst getOverride = (m: string) =>\n typedObjectKeys(errorsOverride).find((o) => m.includes(o));\n\nconst overrideMessage = (messages: string[]) => {\n return messages.map((m) => {\n const override = getOverride(m);\n\n if (typeof override === 'string') {\n return errorsOverride[override];\n }\n\n return m;\n });\n};\n\nexport const useFormErrorsHandler = <FV extends FieldValues = FieldValues>(\n formContext: UseFormReturn<FV>\n) => {\n const processErrorsArray = (handledError: any, options?: HandlingOptions) => {\n const { ignoreFields = [] } = options || {};\n\n try {\n const errorsData = handledError?.response?.data as Array<{\n propertyName: string;\n errorMessage: string;\n }>;\n\n errorsData?.forEach((error) => {\n const messageErrorKey = error.propertyName?.split('.').at(-1) as string;\n const errorKey = (messageErrorKey?.charAt(0).toLowerCase() +\n messageErrorKey?.slice(1)) as Path<FV>;\n\n if (ignoreFields.includes(errorKey)) {\n return;\n }\n\n if (formContext.getFieldState(errorKey)) {\n formContext.setError(errorKey, {\n message: error?.errorMessage,\n type: 'custom',\n });\n }\n });\n } catch (e) {\n console.warn('Unable to process errors');\n console.warn(e);\n\n console.dir(handledError);\n }\n };\n\n const processErrorsObject = (\n handledError: any,\n options?: HandlingOptions\n ) => {\n const { ignoreFields = [], fieldPrefix = '' } = options || {};\n\n try {\n const errorsData = handledError?.body?.errors as Record<string, string[]>;\n\n Object.entries(errorsData)?.forEach(([key, error]) => {\n const errorKey = (fieldPrefix +\n (key?.charAt(0).toLowerCase() + key?.slice(1))) as Path<FV>;\n\n if (formContext.getFieldState(errorKey)) {\n if (ignoreFields.includes(errorKey)) {\n return;\n }\n\n formContext.setError(errorKey, {\n message: overrideMessage(error).join(' '),\n type: 'custom',\n });\n }\n });\n } catch (e) {\n console.warn('Unable to process errors');\n console.warn(e);\n\n console.dir(handledError);\n }\n };\n\n return { processErrorsArray, processErrorsObject };\n};\n","import { Category } from '@/model/ICategory';\nimport { ITechnicalService } from '@/model/ITechnicalService';\nimport { Nullable } from '../types/support-types';\n\ntype CategoryInfo = {\n category: undefined | Category;\n description: Nullable<string>;\n};\n\nexport const useProductCategory = (\n categories: ITechnicalService[],\n id: number | string\n): undefined | CategoryInfo => {\n const category = categories.find(\n (exhibitionCategory: ITechnicalService) =>\n exhibitionCategory?.category?.name === id\n );\n\n return {\n category: category?.['category'],\n description: category?.['description'],\n };\n};\n","import { IdType } from '../model/common';\nimport { Nullable } from '../types/support-types';\nimport { useCatalog } from '@/store/effector/catalog';\n\nexport const useSearchCategoryForProduct = () => {\n const { flatMap } = useCatalog();\n const source = [...flatMap.values()];\n\n return {\n findCategoryForProduct: (categoryId: Nullable<IdType>) => {\n return source.find(\n (cat) => cat.id === categoryId || cat.name === categoryId\n );\n },\n };\n};\n","import { useTranslation } from 'react-i18next';\nimport { TKey } from '../i18n/types';\n\nexport const useNameTranslate = (name: TKey) => {\n const { t } = useTranslation();\n\n return t(name) || '';\n};\n","import i18n from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport ReactPostprocessor from 'i18next-react-postprocessor';\n\nimport ruTranslation from './lang/ru.json';\nimport enTranslation from './lang/en.json';\nimport ruSearch from '@/i18n/lang/search/ru.json';\nimport enSearch from '@/i18n/lang/search/en.json';\nimport ruUnitOfMeasurement from './lang/unit-of-measurement/ru.json';\nimport enUnitOfMeasurement from './lang/unit-of-measurement/en.json';\nimport enStands from './lang/stands/en.json';\nimport ruStands from './lang/stands/ru.json';\nimport enColors from './lang/colors/en.json';\nimport ruColors from './lang/colors/ru.json';\nimport enOrder from './lang/order/en.json';\nimport ruOrder from './lang/order/ru.json';\nimport Backend from 'i18next-http-backend';\nimport { validateTranslationsMatch } from './validate-translations-match';\n\nconst ru = {\n ...ruTranslation,\n ...ruUnitOfMeasurement,\n ...ruStands,\n ...ruSearch,\n ...ruColors,\n ...ruOrder,\n};\nconst en = {\n ...enTranslation,\n ...enUnitOfMeasurement,\n ...enStands,\n ...enSearch,\n ...enColors,\n ...enOrder,\n};\n\nvalidateTranslationsMatch([ru, en]);\n\ndeclare module 'i18next' {\n // Extend CustomTypeOptions\n interface CustomTypeOptions {\n // custom namespace type, if you changed it\n defaultNS: 'ruTranslation';\n // custom resources type\n resources: {\n ruTranslation: typeof ru;\n enTranslation: typeof en;\n };\n // other\n }\n}\n\nconst lang = localStorage.getItem('lang') as string;\n\ni18n\n .use(Backend)\n .use(initReactI18next)\n .use(new ReactPostprocessor())\n .init({\n resources: {\n ru: {\n translation: ru,\n },\n en: {\n translation: en,\n },\n },\n fallbackLng: lang || 'ru',\n interpolation: {\n escapeValue: false,\n },\n });\n\nexport default i18n;\n","import en from './en.json';\nimport { OptionType } from '@/model/common';\nimport i18n from '@/i18n';\nimport { typedObjectKeys } from '@/utils/typed-object-keys';\n\ntype GetColorCode<\n Scope extends string,\n Path extends string\n> = Path extends `${Scope}.${infer R}` ? (R extends string ? R : never) : never;\n\nexport const FASCIA_INSCRIPTION_COLORS = typedObjectKeys(en)\n .filter((key) => key.startsWith('fascia-inscription-colors'))\n .map((colorCode) => {\n const [scope, code] = colorCode.split('.') as [\n 'fascia-inscription-colors',\n GetColorCode<'fascia-inscription-colors', typeof colorCode>\n ];\n\n return {\n value: code,\n label: i18n.t(`${scope}.${code}`),\n } satisfies OptionType;\n })\n .filter(Boolean);\n\nexport const CARPET_COLORS = typedObjectKeys(en)\n .filter((key) => key.startsWith('carpet-colors'))\n .map((colorCode) => {\n const [scope, code] = colorCode.split('.') as [\n 'carpet-colors',\n GetColorCode<'carpet-colors', typeof colorCode>\n ];\n\n return {\n value: code,\n label: i18n.t(`${scope}.${code}`),\n } satisfies OptionType;\n })\n .filter(Boolean);\n","const arraysDiff = (arr1: string[], arr2: string[]): string[] => {\n const missingKeys = [];\n\n for (const element of arr1) {\n if (!arr2.includes(element)) {\n missingKeys.push(element);\n }\n }\n\n return missingKeys;\n};\n\nexport const validateTranslationsMatch = (\n translations: Array<Record<string, string | Record<string, string>>>\n) => {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n if (translations.length === 0) {\n // If the array is empty, there is nothing to validate\n return true;\n }\n\n const referenceKeys = Object.keys(translations[0]);\n\n for (const translation of translations) {\n const currentKeys = Object.keys(translation);\n\n const diff = arraysDiff(referenceKeys, currentKeys);\n // Check if the current object has the same keys as the reference\n\n if (diff.length > 0) {\n throw new Error(`Missing translation key ${diff.join(',')}`);\n }\n }\n\n return true;\n};\n","// @ts-expect-error this looks odd, but https://github.com/facebook/create-react-app/issues/13118#issuecomment-1540018089\nexport * from 'core-js/actual';\n\nimport './i18n';\nimport './store/effector/init';\nimport './api/setup-openapi';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport axios from 'axios';\nimport { bootstrapSentry } from './features/sentry';\n// import { router } from '@/features/Routing/provider';\n\nconst root = ReactDOM.createRoot(\n document.getElementById('root') as HTMLElement\n);\n\nconsole.info(`App version: ${process.env.PUBLIC_VERSION}`);\n\nbootstrapSentry();\n\n// declare module '@tanstack/react-router' {\n// interface Register {\n// router: typeof router;\n// }\n// }\n\naxios.interceptors.response.use(\n (response) => {\n return response;\n },\n (error) => {\n if (error?.code === 'ERR_NETWORK') {\n // localStorage.clear();\n // localStorage.setItem('lang', 'ru');\n // window.location.href = '/';\n } else {\n return Promise.reject(error);\n }\n }\n);\n\nasync function enableMocking() {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n // const { worker } = await import('./features/msw/browser');\n //\n // return worker.start({\n // quiet: true,\n // onUnhandledRequest: 'bypass',\n // });\n}\n\nenableMocking().finally(() => {\n root.render(<App />);\n});\n","import { IBreadcrumbItem } from '@/model/common';\n\nimport styled from 'styled-components';\nimport { Box } from '@chakra-ui/react';\nimport { ArrowBackIcon } from '@chakra-ui/icons';\nimport Breadcrumbs from '@/components/Breadcrumbs';\nimport { useTranslation } from 'react-i18next';\nimport { useParams } from '@tanstack/react-router';\n\nconst BackButtonWrapper = styled(Box)`\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 16px;\n gap: 10px;\n`;\n\nexport const ToExhibition = () => {\n const { t } = useTranslation();\n\n const { exhibitionId } = useParams({ strict: false });\n\n if (!exhibitionId) {\n return null;\n }\n\n const BackButton = () => {\n return (\n <BackButtonWrapper>\n <ArrowBackIcon w={5} h={5} color=\"grey.300\" />\n {t('to-exhibitions')}\n </BackButtonWrapper>\n );\n };\n\n const getBack: IBreadcrumbItem[] = [\n {\n label: <BackButton />,\n link: '/admin/exhibitions',\n },\n ];\n\n return <Breadcrumbs items={getBack} />;\n};\n","import { AdminPanelContent, ContentInner } from '@/components/Content';\nimport Layout from '@/layout/Default';\nimport React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { FlexedPageTitle } from '@/components/Typography/PageTitle';\nimport { IBreadcrumbItem } from '@/model/common';\nimport { replacePaths } from '@/utils/route';\nimport {\n SHOW_SUPPORT_MANAGER_ACTION_PATH,\n SHOW_SUPPORT_MANAGER_PATH,\n} from '@/constants/router';\nimport { useTranslation } from 'react-i18next';\nimport Breadcrumbs from '@/components/Breadcrumbs';\n\nimport { Category } from '@/model/ICategory';\nimport { Outlet, useMatches } from '@tanstack/react-router';\nimport { ConnectedSidebar } from '../ConnectedSidebar/ConnectedSidebar';\n\nconst StyledContentInner = styled(ContentInner)<{\n $withToolbar?: boolean;\n}>`\n padding: ${({ $withToolbar }) => ($withToolbar ? '26px 24px' : '0 24px')};\n padding-bottom: 10px;\n`;\n\nexport const AdminPanelPage = (): JSX.Element => {\n // todo ad refactoring\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { context = {} } = useMatches().at(-1);\n const { page, type, backPath, pageTitle, subHeader } = context;\n\n const { t } = useTranslation();\n const category = new Category({\n id: page,\n name: page,\n displayName: t(page),\n });\n\n if (!category) {\n return <>not found</>;\n }\n\n const pageName = (() => {\n if (pageTitle) {\n return pageTitle;\n }\n\n return type\n ? // @ts-expect-error this should be resolved on react router level\n t(`${page}-${type}`)\n : category.displayName;\n })();\n\n const breadcrumbsItems = useMemo<IBreadcrumbItem[]>(() => {\n const items: IBreadcrumbItem[] = [\n {\n label: t(page),\n link:\n backPath ||\n replacePaths(SHOW_SUPPORT_MANAGER_PATH, {\n ':page': page,\n }),\n },\n ];\n\n if (type) {\n items.push({\n label:\n // @ts-expect-error this should be resolved on react router level\n t(`${page}-${type}`),\n link: replacePaths(SHOW_SUPPORT_MANAGER_ACTION_PATH, {\n ':page': page,\n ':type': type,\n }),\n });\n }\n\n return [...items];\n }, [page, type]);\n\n return (\n <Layout>\n <ConnectedSidebar />\n <AdminPanelContent>\n <StyledContentInner $withToolbar={!!type}>\n {type && <Breadcrumbs items={breadcrumbsItems} id=\"breadcrumbsId\" />}\n <FlexedPageTitle>\n {pageName}\n {subHeader}\n </FlexedPageTitle>\n <Outlet />\n </StyledContentInner>\n </AdminPanelContent>\n </Layout>\n );\n};\n","import styled from 'styled-components';\nimport { Flex } from '@chakra-ui/react';\n\ninterface LayoutProps {\n children?: React.ReactNode | React.ReactNode[];\n}\n\nconst Grid = styled(Flex)`\n min-height: 100vh;\n`;\n\nconst Layout: React.FC<LayoutProps> = ({ children }) => {\n return (\n <Grid alignItems=\"center\" justifyContent=\"center\" direction=\"column\">\n {children}\n </Grid>\n );\n};\n\nexport default Layout;\n","import { useMatches } from '@tanstack/react-router';\nimport { SidebarByRole } from './SidebarsByPageType/SidebarByRole';\nimport { ExhibitionSidebar } from './SidebarsByPageType/ExhibitionSidebar';\n\nexport const ConnectedSidebar = () => {\n // todo ad refactoring\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const { context = {} } = useMatches().at(-1);\n\n switch (context.page) {\n case 'personal-accounts':\n case 'placed-orders': {\n return <ExhibitionSidebar />;\n }\n\n default:\n return <SidebarByRole />;\n }\n};\n","import supportManagerAdditionalMenu from '../../../__mocks__/supportManagerAdditionalMenu';\nimport CategoriesSidebar from '../../../components/Sidebar/CategoriesSidebar';\n\nimport { useTranslation } from 'react-i18next';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { useParams } from '@tanstack/react-router';\n\nexport const ExhibitionSidebar = () => {\n const { exhibitionId } = useParams({ strict: false });\n const { exhibitionName } = useExhibition();\n const { t } = useTranslation();\n\n if (!exhibitionId) {\n return null;\n }\n\n return (\n <CategoriesSidebar\n categories={supportManagerAdditionalMenu(exhibitionId, t)}\n type=\"additionalPanel\"\n barTitle={exhibitionName}\n />\n );\n};\n","import CategoriesSidebar from '../../../components/Sidebar/CategoriesSidebar';\nimport { getCategoriesByRole } from '@/__mocks__/categoriesSidebars';\nimport { useAuth } from '@/store/effector/auth';\n\nexport const SidebarByRole = () => {\n const { user } = useAuth();\n\n if (!user) {\n return null;\n }\n\n return (\n <CategoriesSidebar\n categories={getCategoriesByRole(user)}\n type=\"adminPanel\"\n />\n );\n};\n","import styled from 'styled-components';\n\nexport const Main = styled.div`\n min-height: 100vh;\n\n display: flex;\n flex-direction: column;\n`;\n","import { ReactNode } from 'react';\nimport { Main } from './Layout.styled';\nimport Header from '@/components/Header';\n\nexport interface AuthLayoutProps {\n children?: ReactNode | ReactNode[];\n}\n\nconst Layout = ({ children }: AuthLayoutProps): JSX.Element => {\n return (\n <Main>\n <Header />\n {children}\n </Main>\n );\n};\n\nexport default Layout;\n","import { Serializable } from './Serializable';\nimport {\n type ITEPortal_Contracts_Enums_OrderStatus,\n type ITEPortal_Domain_Dto_OrderDto,\n type ITEPortal_Domain_Dto_OrderItemDto,\n} from '../api';\nimport { isNil } from '../utils/is-nil';\nimport { ORDER_STATUSES } from '../constants/order';\n\n// prettier-ignore\nexport class IBaseOrder\n extends Serializable\n implements ITEPortal_Domain_Dto_OrderDto {\n exhibitionId?: number;\n exhibitorId?: number;\n standId?: number;\n orderId?: number | null;\n products?: Array<ITEPortal_Domain_Dto_OrderItemDto> | null;\n personalDiscount?: number;\n orderStatus?: ITEPortal_Contracts_Enums_OrderStatus;\n orderSummary?: number;\n currency?: string | null;\n typeOfDiscount?: ITEPortal_Domain_Dto_OrderDto['typeOfDiscount'] = 0;\n markup?: number;\n removeExtraCharge?: boolean | null;\n personalExtraChargePercentage?: number | null;\n \n constructor(order: ITEPortal_Domain_Dto_OrderDto) {\n super();\n\n Object.assign(this, order);\n\n // this.personalDiscount = 15.1\n // this.typeOfDiscount = 1\n }\n\n public get hasDiscount() {\n return !isNil(this.personalDiscount) && this.personalDiscount > 0\n }\n\n public get hasPersonalExtraCharge() {\n return !isNil(this.personalExtraChargePercentage) && this.personalExtraChargePercentage > 0\n }\n\n public get commonExtraChargeDisabled() {\n return this.removeExtraCharge === true\n }\n\n public setDiscount(discount: number) {\n if (typeof discount === 'number' && Number.isFinite(discount)) {\n this.personalDiscount = discount\n } else {\n this.personalDiscount = discount\n }\n\n return this;\n }\n\n public setDiscountType(type: ITEPortal_Domain_Dto_OrderDto['typeOfDiscount']) {\n this.typeOfDiscount = type\n\n return this;\n }\n\n public get isDraft() {\n return this.orderStatus === ORDER_STATUSES.Draft\n }\n\n toJSON(): unknown {\n return {};\n }\n}\n","import { IBaseOrder } from './IBaseOrder';\nimport { BuildingTypeInfo, MarginType } from './common';\nimport { OrderItem } from './IOrderItem';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport {\n PERSONAL_DISCOUNT_TYPE,\n SPACE_ONLY_BUILDING_TYPE,\n} from '../constants/order';\nimport { isNil } from '../utils/is-nil';\nimport { ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto } from '../api';\nimport { CATEGORY_TYPES } from '../constants/categorie';\n\ndayjs.extend(isSameOrAfter);\n\nexport class Cart {\n public currency?: string;\n\n private cleaningDiscounts?: ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto[] =\n [];\n\n private order?: IBaseOrder;\n private margin?: MarginType;\n private items: Array<OrderItem> = [];\n private standInfo: BuildingTypeInfo | null = null;\n\n setOrder(order: IBaseOrder) {\n this.order = order;\n\n return this;\n }\n\n setMargin(margin: MarginType) {\n this.margin = margin;\n\n return this;\n }\n\n setItems(items: Array<OrderItem>) {\n this.items = items;\n\n return this;\n }\n\n setCurrency(currency: string) {\n this.currency = currency;\n\n return this;\n }\n\n setCleaningDiscounts(\n discounts: ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto[]\n ) {\n this.cleaningDiscounts = discounts;\n\n return this;\n }\n\n setStandInfo(stand: BuildingTypeInfo) {\n this.standInfo = stand;\n\n return this;\n }\n\n get isSpaceOnlyStand() {\n if (!this.standInfo) {\n return true;\n }\n\n return this.standInfo.type === SPACE_ONLY_BUILDING_TYPE;\n }\n\n get cleaningItems() {\n if (!this.items) {\n return [];\n }\n\n return this.items.filter(\n (i) => i.product?.category?.name === CATEGORY_TYPES.CLEANING\n );\n }\n\n get cleaningArea() {\n const cleaningItems = this.cleaningItems;\n\n if (\n !cleaningItems ||\n !Array.isArray(cleaningItems) ||\n cleaningItems.length === 0\n ) {\n return 0;\n }\n\n return this.cleaningItems.reduce((totalArea, item) => {\n return totalArea + (item.getAmount() || 0);\n }, 0);\n }\n\n get cleaningTotal() {\n const cleaningItems = this.cleaningItems;\n\n if (\n !cleaningItems ||\n !Array.isArray(cleaningItems) ||\n cleaningItems.length === 0\n ) {\n return 0;\n }\n\n return this.cleaningItems.reduce((cleaningTotal, item) => {\n return cleaningTotal + item.total;\n }, 0);\n }\n\n get cleaningDiscountMultiplier(): number {\n if (!Array.isArray(this.cleaningDiscounts)) {\n return 0;\n }\n\n const cleaningArea = this.cleaningArea;\n\n const discount = this.cleaningDiscounts.find((d) => {\n return (\n typeof d.areaFrom === 'number' &&\n typeof d.areaTo === 'number' &&\n cleaningArea >= d.areaFrom &&\n cleaningArea <= d.areaTo\n );\n });\n\n if (typeof discount?.discountPercentage === 'number') {\n return discount.discountPercentage / 100;\n }\n\n return 0;\n }\n\n get cleaningDiscount() {\n if (!this.cleaningTotal || !this.cleaningDiscountMultiplier) {\n return 0;\n }\n\n return this.cleaningTotal * this.cleaningDiscountMultiplier;\n }\n\n get markup() {\n if (!this.margin) {\n return 0;\n }\n\n if (this.order && this.order.removeExtraCharge === true) {\n return 0;\n }\n\n let markupPercentage = 0;\n\n const currentDate = dayjs();\n const firstMarkup = dayjs(this.margin.firstMarginDate);\n const secondMarkup = dayjs(this.margin.secondMarginDate);\n const thirdMarkup = dayjs(this.margin.thirdMarginDate);\n\n switch (true) {\n case this.order &&\n this.order.hasPersonalExtraCharge &&\n typeof this.order.personalExtraChargePercentage === 'number': {\n markupPercentage = this.order?.personalExtraChargePercentage;\n break;\n }\n\n case currentDate.isSameOrAfter(thirdMarkup): {\n markupPercentage = this.margin.thirdMargin\n ? parseInt(this.margin.thirdMargin + '')\n : 0;\n break;\n }\n\n case currentDate.isSameOrAfter(secondMarkup): {\n markupPercentage = this.margin.secondMargin\n ? parseInt(this.margin.secondMargin + '')\n : 0;\n\n break;\n }\n\n case currentDate.isSameOrAfter(firstMarkup): {\n markupPercentage = this.margin.firstMargin\n ? parseInt(this.margin.firstMargin + '')\n : 0;\n\n break;\n }\n\n default:\n markupPercentage = 0;\n }\n\n if (markupPercentage === 0) {\n return 0;\n }\n\n if (markupPercentage > 1) {\n markupPercentage = markupPercentage / 100;\n }\n\n return this.subTotal * markupPercentage;\n }\n\n get personalDiscount() {\n if (!this.order) {\n return 0;\n }\n\n if (!this.hasPersonalDiscount) {\n return 0;\n }\n\n if (\n !this.order.personalDiscount ||\n typeof this.order.personalDiscount !== 'number'\n ) {\n return 0;\n }\n\n if (this.order.typeOfDiscount === PERSONAL_DISCOUNT_TYPE.AMOUNT) {\n return this.order.personalDiscount;\n }\n\n let discountPercentage = this.order.personalDiscount;\n\n if (discountPercentage > 1) {\n discountPercentage = discountPercentage / 100;\n }\n\n return this.itemsTotal * discountPercentage;\n }\n\n get itemsTotal() {\n if (this.items.length === 0) {\n return 0;\n }\n\n return this.items.reduce((total, item) => {\n return total + item.total;\n }, 0);\n }\n\n get vatPercent() {\n if (!this.hasVat) {\n return 0;\n }\n\n return 0.2;\n }\n\n get hasPersonalDiscount() {\n return (\n !isNil(this.order?.typeOfDiscount) &&\n [PERSONAL_DISCOUNT_TYPE.PERCENT, PERSONAL_DISCOUNT_TYPE.AMOUNT].includes(\n this.order?.typeOfDiscount\n ) &&\n !isNil(this.order?.personalDiscount) &&\n this.order?.personalDiscount > 0\n );\n }\n\n get hasVat() {\n if (!this.currency) {\n return false;\n }\n\n return this.currency.toLowerCase() === 'rub';\n }\n\n get hasCleaningDiscount() {\n return this.cleaningDiscount > 0;\n }\n\n get vat() {\n return this.subTotalWithMarkup * this.vatPercent;\n }\n\n get subTotal() {\n return this.itemsTotal - this.personalDiscount - this.cleaningDiscount;\n }\n\n get subTotalWithMarkup() {\n return this.subTotal + this.markup;\n }\n\n get subTotalWithVat() {\n return this.subTotalWithMarkup + this.vat;\n }\n\n get total() {\n return this.subTotalWithVat;\n }\n}\n","import { IdType, WithIdType, WithPrivateProps } from './common';\nimport { Serializable } from './Serializable';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '../api';\nimport { Nullable } from '../types/support-types';\nimport { isNil } from '../utils/is-nil';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\n\ntype ConstructionOptionsType = WithIdType<ITEPortal_Domain_Dto_CategoryDto> & {\n parent?: Nullable<Category | ConstructionOptionsType>;\n parentCategoryName?: Nullable<string>;\n resolveUrl?: () => string | null;\n};\n\n// prettier-ignore\nexport class Category\n extends Serializable\n implements WithPrivateProps<WithIdType<ITEPortal_Domain_Dto_CategoryDto>> {\n private readonly _urlResolver?: () => string | null;\n\n id: IdType = 0;\n name: string = '';\n displayName?: string | null | undefined;\n imageUrl?: string | null | undefined;\n description?: string | null | undefined;\n parentCategory?: string | null | undefined;\n parentCategoryId?: string | null | undefined;\n isDecimal?: boolean | null | undefined;\n unitOfMeasure?: string | null | undefined;\n parentCategoryName?: Nullable<string>;\n\n tree: Array<Category> = []\n\n parent?: Category | null = null;\n\n constructor(data: ConstructionOptionsType) {\n super();\n\n const { parent, resolveUrl, ...rest } = data;\n\n Object.assign(this, rest);\n\n this.parent =\n parent && !(parent instanceof Category) ? new Category(parent) : parent;\n\n if (!this.parentCategoryName && this.parent) {\n this.parentCategoryName = parent?.displayName\n }\n\n this._urlResolver = resolveUrl;\n }\n\n get isBuilding() {\n return this.id === CATEGORY_TYPES.SELECT_BUILDING ||\n this.name === CATEGORY_TYPES.SELECT_BUILDING\n }\n\n resolveUrl() {\n if (typeof this._urlResolver === 'function') {\n return this._urlResolver();\n }\n\n return null;\n }\n\n toJSON(): ConstructionOptionsType {\n return {\n id: this.id,\n name: this.name,\n parent: this.parent?.toJSON(),\n isDecimal: this.isDecimal,\n unitOfMeasure: this.unitOfMeasure,\n parentCategoryId: this.parentCategoryId,\n description: this.description,\n displayName: this.displayName,\n imageUrl: this.imageUrl,\n };\n }\n\n static fromJSON(json: ConstructionOptionsType): Category {\n const parent = !isNil(json.parent) ? Category.fromJSON(json.parent) : undefined;\n\n return new Category({\n ...json,\n id: json.id,\n name: json.name,\n parent: parent,\n isDecimal: json.isDecimal,\n unitOfMeasure: json.unitOfMeasure,\n });\n }\n\n static empty() {\n return new Category({\n id: 'empty',\n name: 'empty',\n });\n }\n}\n","import { ITEPortal_Domain_Dto_ExhibitionDto } from '../api';\nimport dayjs from 'dayjs';\nimport { isValidExhibition } from '@/model/IExhibition/shema';\n\n// prettier-ignore\nexport class IExhibition implements ITEPortal_Domain_Dto_ExhibitionDto {\n id: number | null = null;\n description?: string | null;\n endDate?: string;\n firstMargin?: number | null;\n firstMarginDate?: string | null;\n logoUrl?: string | null;\n name?: string | null;\n place?: string | null;\n secondMargin?: number;\n secondMarginDate?: string;\n startDate?: string;\n orderCreationLastDate?: string;\n technicalManagers?: Array<string> | null;\n thirdMargin?: number;\n thirdMarginDate?: string;\n\n constructor(\n json: ITEPortal_Domain_Dto_ExhibitionDto & {id?: number}\n ) {\n Object.assign(this, json);\n }\n\n get isPast() {\n if (!this.endDate) {\n return true;\n }\n\n const currentDate = dayjs();\n const endDate = dayjs(this.endDate);\n\n return endDate.isBefore(currentDate);\n }\n\n get canEditOrders() {\n if (!this.orderCreationLastDate) {\n return !this.isPast\n }\n\n const currentDate = dayjs();\n const endDate = dayjs(this.orderCreationLastDate);\n\n return currentDate.isBefore(endDate);\n }\n\n get formattedStartDate() {\n if (!this.startDate) {\n return 'n/a';\n }\n\n return dayjs(this.startDate).format('DD.MM.YYYY');\n }\n\n get formattedEndDate() {\n if (!this.endDate) {\n return 'n/a';\n }\n\n return dayjs(this.endDate).format('DD.MM.YYYY');\n }\n\n static fromJSON(json: ITEPortal_Domain_Dto_ExhibitionDto) {\n if (isValidExhibition(json)) {\n return new IExhibition(json)\n }\n\n return null\n }\n}\n","import * as v from 'zod';\nimport { ITEPortal_Domain_Dto_ExhibitionDto } from '@/api';\nimport { Expect, MatchTypesKeys } from '@/types/support-types';\n\nexport const IExhibition = v.object({\n id: v.number(),\n description: v.string().nullish(),\n endDate: v.string(),\n firstMargin: v.number(),\n firstMarginDate: v.string(),\n logoUrl: v.string().nullish(),\n name: v.string(),\n place: v.string(),\n secondMargin: v.number(),\n secondMarginDate: v.string(),\n startDate: v.string(),\n technicalManagers: v.array(v.string()),\n thirdMargin: v.number(),\n orderCreationLastDate: v.string().nullish(),\n thirdMarginDate: v.string(),\n eventEditionId: v.number(),\n});\n\nexport const isValidExhibition = (json: ITEPortal_Domain_Dto_ExhibitionDto) => {\n return IExhibition.safeParse(json).success;\n};\n\ntype IExhibitionSchemaType = v.infer<typeof IExhibition>;\n\ntype Matched = MatchTypesKeys<\n ITEPortal_Domain_Dto_ExhibitionDto,\n IExhibitionSchemaType\n>;\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ntype test = Expect<Matched>;\n","import { IdType } from './common';\nimport { ReactNode } from 'react';\nimport {\n ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary,\n ITEPortal_Domain_Dto_ExhibitionSummary,\n} from '../api';\nimport dayjs from 'dayjs';\n\nexport type ExhibitionSummaryType = {\n id: IdType;\n name: string;\n logoUrl: string;\n description?: string | ReactNode;\n startDate: string;\n endDate: string;\n place: string;\n};\n\n// prettier-ignore\nexport class IExhibitionSummary\n implements ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary {\n currency?: string | null = null;\n exhibitionSummary?: ITEPortal_Domain_Dto_ExhibitionSummary;\n orders?: number;\n sellingOfficeId?: number;\n stands?: number;\n\n constructor(\n json: ITEPortal_Domain_Dto_Exhibition_ExhibitionStatisticsWithSummary\n ) {\n Object.assign(this, json);\n }\n\n get isPast() {\n if (!this.exhibitionSummary || !this.exhibitionSummary.endDate) {\n return true;\n }\n\n const currentDate = dayjs();\n const endDate = dayjs(this.exhibitionSummary.endDate);\n\n return endDate.isBefore(currentDate);\n }\n\n get formattedStartDate() {\n if (!this.exhibitionSummary?.startDate) {\n return 'n/a';\n }\n\n return dayjs(this.exhibitionSummary.startDate).format('DD.MM.YYYY');\n }\n\n get formattedEndDate() {\n if (!this.exhibitionSummary?.endDate) {\n return 'n/a';\n }\n\n return dayjs(this.exhibitionSummary.endDate).format('DD.MM.YYYY');\n }\n}\n","import { Serializable } from './Serializable';\nimport { OrderItem, TemporaryStaffOrderItem } from './IOrderItem';\nimport { Category } from './ICategory';\nimport { Product } from './IProduct';\nimport { InitialState } from '@/store/effector/order';\nimport type { ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto } from '@/api';\nimport { ProductId } from '@/types/support-types';\n\nexport class Order extends Serializable {\n private items: Array<OrderItem | TemporaryStaffOrderItem> = [];\n constructor({\n items,\n }: {\n items: Array<OrderItem | TemporaryStaffOrderItem>;\n }) {\n super();\n\n this.items = items;\n }\n\n getItems() {\n return this.items;\n }\n\n toJSON(): unknown {\n return undefined;\n }\n\n static fromJSON(state: InitialState): InitialState {\n if (!Array.isArray(state.items)) {\n state.items = [];\n }\n\n state.items = state.items.filter(Boolean);\n\n state.items.forEach((item, i) => {\n try {\n const category = item.product.category;\n\n const product = item.product;\n const categoryObj = new Category(category);\n\n item.product = new Product({\n ...product,\n category: categoryObj,\n });\n\n item.id = item.product.getProductId();\n\n state.items[i] = OrderItem.fromJSON(\n // @ts-expect-error improve types\n item\n );\n } catch (e) {\n console.log(e);\n }\n });\n\n return state;\n }\n\n static prepareItemsForPlace(\n items: Array<OrderItem | TemporaryStaffOrderItem>\n ): Array<ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto> {\n return items.map((item) => {\n let originalProductId = item.product.getProductId();\n\n if (item.included) {\n originalProductId = originalProductId.replace(\n '-included',\n ''\n ) as ProductId;\n }\n\n if (item instanceof TemporaryStaffOrderItem) {\n return {\n id: originalProductId,\n amount: item.getAmount(),\n peopleAmount: item.peopleAmount,\n dayAmount: item.dayAmount,\n language: item.language,\n };\n }\n\n return {\n id: originalProductId,\n amount: item.getAmount(),\n included: item.included,\n };\n });\n }\n}\n","import { Product } from './IProduct';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Domain_Dto_OrderItemDto,\n} from '@/api';\nimport { ISerialisable, Serializable } from './Serializable';\nimport { ProductId } from '@/types/support-types';\n\ninterface OrderItemConstructorDetails {\n id: ProductId;\n product: Product;\n amount?: number;\n buildingTypes?: Array<ITEPortal_Contracts_Enums_BuildingType>;\n included?: boolean;\n includedReason?: string;\n}\n\ninterface TemporaryServiceOrderItemConstructorDetails {\n id: ProductId;\n product: Product;\n language?: string | null;\n peopleAmount?: number;\n dayAmount?: number;\n buildingTypes?: Array<ITEPortal_Contracts_Enums_BuildingType>;\n}\n\nexport interface IOrderItem extends ISerialisable {\n id: ProductId;\n product: Product;\n buildingTypes?: Array<ITEPortal_Contracts_Enums_BuildingType>;\n\n get total(): number;\n get displayName(): string | null;\n getAmount(): number;\n\n // new (orderItemDetails: OrderItemConstructorDetails): OrderItem;\n}\n\nexport interface ITemporaryStaffOrderItem extends IOrderItem {\n // new (orderItemDetails: OrderItemConstructorDetails): TemporaryStaffOrderItem;\n}\n\nexport class OrderItem extends Serializable implements IOrderItem {\n id: ProductId;\n product: Product;\n included: boolean = false;\n includedReason: string | null = null;\n\n private amount: number = 0;\n\n buildingTypes: Array<ITEPortal_Contracts_Enums_BuildingType> = [0];\n\n constructor(item: OrderItemConstructorDetails) {\n super();\n\n this.id = item.id;\n this.product = item.product;\n if (item.amount) {\n this.amount = item.amount;\n } else {\n this.amount = 0;\n }\n\n if (item.buildingTypes) {\n this.buildingTypes = item.buildingTypes;\n }\n\n if (item.included) {\n this.included = true;\n if (item.includedReason) {\n this.includedReason = item.includedReason;\n }\n }\n }\n\n get total() {\n if (this.included) {\n return 0;\n }\n\n return Number((this.amount * this.product.price).toFixed(2));\n }\n\n setAmount(amount: number) {\n this.amount = amount;\n }\n\n getAmount(): number {\n return this.amount;\n }\n\n get displayName() {\n return this.product.productDisplayName || this.product.productName;\n }\n\n get uniqueKey() {\n return this.id.toString();\n }\n\n static fromJSON(\n json: Omit<ITEPortal_Domain_Dto_OrderItemDto, 'id'> & {\n product: Product;\n included?: boolean;\n includedReason?: string;\n id: ProductId;\n }\n ) {\n if (TemporaryStaffOrderItem.is(json)) {\n return TemporaryStaffOrderItem.fromJSON(json);\n }\n\n const item = new OrderItem({\n id: json.product.getProductId(),\n product: json.product,\n buildingTypes: json.buildingTypes?.length ? json.buildingTypes : [0],\n amount: json.amount,\n included: json.included,\n includedReason: json.includedReason,\n });\n\n if (json.amount) {\n item.setAmount(json.amount);\n }\n\n return item;\n }\n\n toJSON() {\n return {\n id: this.product.getProductId(),\n amount: this.amount,\n product: this.product,\n buildingTypes: this.buildingTypes,\n included: this.included,\n includedReason: this.includedReason,\n };\n }\n}\n\n// prettier-ignore\nexport class TemporaryStaffOrderItem\n extends OrderItem\n implements ITemporaryStaffOrderItem {\n public peopleAmount: number;\n public dayAmount: number;\n public language: string | undefined;\n\n constructor(itemDetails: TemporaryServiceOrderItemConstructorDetails) {\n super({\n id: itemDetails.product.getProductId(),\n product: itemDetails.product,\n buildingTypes: itemDetails.buildingTypes,\n });\n\n this.language = itemDetails.language || undefined;\n this.peopleAmount = itemDetails.peopleAmount || 0;\n this.dayAmount = itemDetails.dayAmount || 0;\n }\n\n getAmount() {\n return this.peopleAmount;\n }\n\n get total() {\n return this.product.price * (this.peopleAmount * this.dayAmount);\n }\n\n get displayName() {\n if (!this.language) {\n return super.displayName;\n }\n\n return `${super.displayName} (${this.language})`;\n }\n\n get uniqueKey() {\n return `${super.uniqueKey}-${this.language}`;\n }\n\n toJSON() {\n return {\n ...super.toJSON(),\n peopleAmount: this.peopleAmount,\n dayAmount: this.peopleAmount,\n language: this.language,\n };\n }\n\n static fromJSON(\n json: ITEPortal_Domain_Dto_OrderItemDto & { product: Product }\n ) {\n return new TemporaryStaffOrderItem({\n id: json.product.getProductId(),\n product: json.product,\n dayAmount: json.dayAmount,\n peopleAmount: json.peopleAmount,\n language: json.language,\n });\n }\n\n static is(json: ITEPortal_Domain_Dto_OrderItemDto) {\n return json.peopleAmount && json.dayAmount;\n }\n}\n","import { IdType } from './common';\nimport { Category } from './ICategory';\nimport { ISerialisable, Serializable } from './Serializable';\nimport i18n from '../i18n';\nimport { Nullable, ProductId } from '@/types/support-types';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n type ITEPortal_Domain_Dto_PriceList_IncludedPriceListItemDto,\n ITEPortal_Domain_Dto_PriceListItemSummary,\n} from '@/api';\nimport { ProductUtils } from '@/utils/product-utils';\n\nexport interface IProduct extends ISerialisable {\n id: IdType;\n name: string;\n price: number;\n formattedPrice: string;\n category: Category;\n displayName?: Nullable<string>;\n categoryId?: IdType;\n description?: Nullable<string>;\n imageUrls?: string[];\n imageDescription?: Nullable<string>;\n buildingTypes?: ITEPortal_Contracts_Enums_BuildingType[] | null;\n fieldType?: Nullable<string>;\n linkedProducts?: Array<IProduct> | null;\n linkedZeroPriceProducts?: Array<IProduct> | null;\n}\n\n// prettier-ignore\nexport class Product\n extends Serializable\n implements ITEPortal_Domain_Dto_PriceListItemSummary {\n id: number = 0;\n additionalNotes: string | null = null;\n buildingTypes: Array<ITEPortal_Contracts_Enums_BuildingType> | null = null;\n categoryDisplayName: string | null = null;\n categoryId: number = 0;\n categoryName: string | null = null;\n description: string | null = null;\n fieldType: string | null = null;\n formattedPrice: string | null = null;\n imageDescription: string | null = null;\n imageUrls: Array<string> | null = null;\n linkedProducts: Array<Product> | null = null;\n includedPriceListItems: Array<Product> | null = null;\n price: number = 0;\n productDisplayName: string | null = null;\n productId: number = 0;\n productName: string | null = null;\n quantity: number = 0;\n\n category: Category = Category.empty();\n\n constructor(\n opts: ITEPortal_Domain_Dto_PriceListItemSummary & { category?: Category, quantity?: number }\n ) {\n super();\n const { category, linkedProducts, includedPriceListItems } = opts;\n\n Object.assign(this, opts);\n\n if (category instanceof Category) {\n this.category = category;\n } else {\n this.category = Category.empty();\n }\n\n if (Array.isArray(linkedProducts)) {\n this.linkedProducts = linkedProducts.map((json) =>\n Product.fromJSON(json)\n );\n }\n\n if (Array.isArray(includedPriceListItems)) {\n this.includedPriceListItems = includedPriceListItems.map((json) =>\n Product.linkedFromJSON(json)\n );\n }\n }\n\n getProductId(): ProductId {\n return this.productName as ProductId;\n }\n\n get unit() {\n if (!this.category.unitOfMeasure) {\n return undefined;\n }\n\n // @ts-expect-error todo uncomment\n return i18n.t(this.category.unitOfMeasure) || undefined;\n }\n\n get amountStep() {\n if (!this.category.isDecimal) {\n return 1;\n }\n\n return this.category.unitOfMeasure === 'sqm' ? 0.25 : 0.1;\n }\n\n get hasLinkedProducts() {\n return Array.isArray(this.linkedProducts) && this.linkedProducts.length > 0;\n }\n\n toJSON() {\n return this;\n }\n\n static fromJSON(\n json: ITEPortal_Domain_Dto_PriceListItemSummary & { category?: Category }\n ) {\n const { category, ...rest } = json;\n\n return ProductUtils.createProductFromPriceListItem(rest, { category });\n }\n\n static linkedFromJSON(\n json: ITEPortal_Domain_Dto_PriceList_IncludedPriceListItemDto & { category?: Category }\n ) {\n const { category, productName, ...rest } = json;\n\n let includedProductName = productName;\n\n if (includedProductName && !includedProductName.includes('-included')) {\n includedProductName = `${includedProductName}-included`\n }\n\n return ProductUtils.createProductFromPriceListItem({ ...rest, productName: includedProductName }, { category });\n }\n\n setLinkedItems(includedPriceListItems: Array<ITEPortal_Domain_Dto_PriceList_IncludedPriceListItemDto>) {\n this.includedPriceListItems = includedPriceListItems.map((json) =>\n Product.linkedFromJSON(json)\n );\n }\n}\n","import { IdType, AdminRoleType, SelectItem, RoleType } from './common';\nimport { UserRoleNameType, UserRoleType } from '@/types/open-api/domain-types';\n\nexport interface IUser {\n fullName: string;\n name?: string;\n id?: IdType;\n email?: string;\n image?: string;\n jobTitle?: SelectItem;\n role?: AdminRoleType | RoleType;\n subdivision?: SelectItem;\n get firstName(): string;\n get isSuperAdmin(): boolean;\n get isAdmin(): boolean;\n get isSupportManager(): boolean;\n get isTechnicalManager(): boolean;\n get isModerator(): boolean;\n get isExhibitor(): boolean;\n}\n\ntype UserInstanceOptions = {\n fullName: string;\n id?: IdType;\n email?: string;\n image?: string;\n jobTitle?: SelectItem;\n role?: UserRoleType;\n subdivision?: SelectItem;\n};\n\nexport class User implements IUser {\n private readonly _fullName: string;\n private readonly _id?: IdType;\n private readonly _email?: string;\n private readonly _image?: string;\n private readonly _jobTitle?: SelectItem;\n private readonly _role?: UserRoleType;\n private readonly _subdivision?: SelectItem;\n\n static Role: Record<UserRoleNameType, UserRoleType> = {\n SuperAdmin: 1,\n Admin: 2,\n SupportManager: 3,\n TechnicalManager: 4,\n Moderator: 5,\n Exhibitor: 6,\n Agent: 7,\n };\n\n constructor(options: UserInstanceOptions) {\n const { fullName, id, email, image, jobTitle, role, subdivision } = options;\n\n this._fullName = fullName;\n this._id = id;\n this._email = email;\n this._image = image;\n this._jobTitle = jobTitle;\n this._role = role;\n this._subdivision = subdivision;\n }\n\n get id() {\n return this._id;\n }\n\n get email() {\n return this._email;\n }\n\n get image() {\n return this._image;\n }\n\n get fullName() {\n return this._fullName;\n }\n\n get jobTitle() {\n return this._jobTitle;\n }\n\n get role() {\n return this._role;\n }\n\n get subdivision() {\n return this._subdivision;\n }\n\n get firstName(): string {\n return this._fullName.split(' ')[0];\n }\n\n get isSuperAdmin() {\n return this._role === User.Role.SuperAdmin;\n }\n\n get isAdmin() {\n return this._role === User.Role.Admin;\n }\n\n get isSupportManager() {\n return this._role === User.Role.SupportManager;\n }\n\n get isTechnicalManager() {\n return this._role === User.Role.TechnicalManager;\n }\n\n get isModerator() {\n return this._role === User.Role.Moderator;\n }\n\n get isExhibitor() {\n return this._role === User.Role.Exhibitor;\n }\n\n get isAgent() {\n return this._role === User.Role.Agent;\n }\n\n toJSON() {\n return {\n id: this.id,\n fullName: this.fullName,\n email: this.email,\n image: this.image,\n jobTitle: this.jobTitle,\n role: this.role,\n subdivision: this.subdivision,\n };\n }\n}\n","export interface ISerialisable {\n toString(): string;\n toJSON(): unknown;\n}\n\nexport abstract class Serializable implements ISerialisable {\n public toString(): string {\n return JSON.stringify(this.toJSON());\n }\n\n public abstract toJSON(): unknown;\n}\n","import { queryOptions, useQuery } from '@tanstack/react-query';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useSearch } from '@tanstack/react-router';\nimport { isNil } from '@/utils/is-nil';\n\nexport const useHasCategorySearchCriteria = () => {\n const { search, searchProduct } = useSearch({\n strict: false,\n });\n\n return !isNil(search) || !isNil(searchProduct);\n};\n\nexport const useHasProductSearchCriteria = () => {\n const { searchProduct } = useSearch({\n strict: false,\n });\n\n return !isNil(searchProduct);\n};\n\nexport const useCategoriesLoaderQueryOptions = () => {\n const { search, searchProduct } = useSearch({\n strict: false,\n });\n\n return queryOptions({\n queryKey: ['service-directory-categories', { search, searchProduct }],\n queryFn: async () =>\n await typedAxios.category.getCategories({\n pageSize: -1,\n search,\n product: searchProduct,\n }),\n\n structuralSharing: true,\n });\n};\n\nexport const useSubCategoriesLoaderQueryOptions = (\n parentCategoryId: number\n) => {\n const { searchProduct } = useSearch({\n strict: false,\n });\n\n return queryOptions({\n queryKey: [\n 'service-directory-sub-categories',\n { searchProduct, parentCategoryId },\n ],\n queryFn: async () =>\n await typedAxios.category.getCategories({\n pageSize: -1,\n // product: searchProduct,\n parentCategoryId: parentCategoryId,\n }),\n\n structuralSharing: true,\n });\n};\n\nexport const useCategoriesLoader = () => {\n return useQuery(useCategoriesLoaderQueryOptions());\n};\n\nexport const useSubCategoriesLoader = (parentCategoryId: number) => {\n return useQuery(useSubCategoriesLoaderQueryOptions(parentCategoryId));\n};\n","import {\n ITEPortal_Domain_Dto_Category_CategoryOrderIndexDto,\n ITEPortal_Domain_Dto_CategoryDto,\n} from '@/api';\nimport { DraggableUtils } from '@/utils/draggable-utils';\nimport { useMutation } from '@tanstack/react-query';\nimport { queryClient } from '@/features/query';\nimport { useCategoriesLoaderQueryOptions } from '@/pages/AdminPanel/Accordion/use-categories-loader';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport i18n from '@/i18n';\n\nexport const useCategoriesOrderUpdate = () => {\n const { queryKey } = useCategoriesLoaderQueryOptions();\n\n return useMutation({\n mutationKey: ['reorder-categories-mutation', queryKey],\n mutationFn: async (opts: {\n categoriesSource: ITEPortal_Domain_Dto_CategoryDto[];\n startIndex: number;\n endIndex: number;\n preSaveFn: (ordered: ITEPortal_Domain_Dto_CategoryDto[]) => void;\n }) => {\n const { categoriesSource, startIndex, endIndex, preSaveFn } = opts;\n\n const initialTableData = queryClient.getQueryData(queryKey);\n\n if (startIndex === endIndex) {\n return Promise.resolve(initialTableData);\n }\n\n const localOrdered = DraggableUtils.reorder(\n categoriesSource,\n startIndex,\n endIndex,\n true\n );\n\n preSaveFn(localOrdered);\n\n queryClient.setQueryData(queryKey, localOrdered);\n\n try {\n await typedAxios.category.postCategoriesOrderIndex({\n requestBody: localOrdered.map((ct) => {\n return {\n categoryId: ct.id,\n orderIndex: ct.orderIndex || 0,\n } satisfies ITEPortal_Domain_Dto_Category_CategoryOrderIndexDto;\n }),\n });\n\n return localOrdered;\n } catch {\n toast.error(i18n.t('unable-to-apply-reorder'));\n\n queryClient.setQueryData(queryKey, initialTableData);\n\n return initialTableData;\n }\n },\n });\n};\n","import { useSearch } from '@tanstack/react-router';\nimport {\n keepPreviousData,\n queryOptions,\n useQuery,\n} from '@tanstack/react-query';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport { typedAxios } from '@/api/typed-axios';\n\nexport const useProductsLoaderOptions = () => {\n const { searchProduct } = useSearch({ strict: false });\n\n return {\n getProductsLoaderOptions: (\n categoryId: ITEPortal_Domain_Dto_CategoryDto['id']\n ) =>\n queryOptions({\n queryKey: ['category-products', categoryId, searchProduct],\n queryFn: async () => {\n return typedAxios.product.getProducts({\n categoryId: categoryId,\n search: searchProduct,\n pageSize: -1,\n });\n },\n refetchOnMount: false,\n structuralSharing: true,\n retryOnMount: false,\n placeholderData: keepPreviousData,\n }),\n };\n};\n\nexport const useProductsLoader = (\n categoryId: ITEPortal_Domain_Dto_CategoryDto['id']\n) => {\n const { getProductsLoaderOptions } = useProductsLoaderOptions();\n\n return useQuery(getProductsLoaderOptions(categoryId));\n};\n","import {\n ITEPortal_Domain_Dto_CategoryDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport { DraggableUtils } from '@/utils/draggable-utils';\nimport { useMutation } from '@tanstack/react-query';\nimport { queryClient } from '@/features/query';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport i18n from '@/i18n';\nimport { useProductsLoaderOptions } from '@/pages/AdminPanel/Accordion/use-products-loader';\nimport { isNil } from '@/utils/is-nil';\n\nexport const useProductsOrderUpdate = (\n categoryId: ITEPortal_Domain_Dto_CategoryDto['id']\n) => {\n const { getProductsLoaderOptions } = useProductsLoaderOptions();\n\n return useMutation({\n mutationKey: ['reorder-products-mutation', categoryId],\n mutationFn: async (opts: {\n productsSource: ITEPortal_Domain_Dto_ProductDto[];\n startIndex: number;\n endIndex: number;\n }) => {\n const { productsSource, startIndex, endIndex } = opts;\n\n const initialTableData = queryClient.getQueryData(\n getProductsLoaderOptions(categoryId).queryKey\n );\n\n if (startIndex === endIndex) {\n return Promise.resolve();\n }\n\n const localOrdered = DraggableUtils.reorder(\n productsSource,\n startIndex,\n endIndex\n );\n\n queryClient.setQueryData(\n getProductsLoaderOptions(categoryId).queryKey,\n localOrdered\n );\n\n try {\n await typedAxios.product.postProductsOrderIndex({\n requestBody: localOrdered\n .filter((pr) => !isNil(pr.id))\n .map((pr) => ({\n // \"as\" allowed here as we filter products above using isNil(pr.id)\n productId: pr.id as number,\n orderIndex: pr.orderIndex || 0,\n })),\n });\n } catch {\n toast.error(i18n.t('unable-to-apply-reorder'));\n\n queryClient.setQueryData(\n getProductsLoaderOptions(categoryId).queryKey,\n initialTableData\n );\n }\n },\n });\n};\n","import { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport { DraggableUtils } from '@/utils/draggable-utils';\nimport { useMutation } from '@tanstack/react-query';\nimport { queryClient } from '@/features/query';\nimport { useSubCategoriesLoaderQueryOptions } from '@/pages/AdminPanel/Accordion/use-categories-loader';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport i18n from '@/i18n';\n\nexport const useSubCategoriesOrderUpdate = (parentCategoryId: number) => {\n const { queryKey } = useSubCategoriesLoaderQueryOptions(parentCategoryId);\n\n return useMutation({\n mutationKey: ['reorder-sub-categories-mutation', queryKey],\n mutationFn: async (opts: {\n categoriesSource: ITEPortal_Domain_Dto_CategoryDto[];\n startIndex: number;\n endIndex: number;\n preSaveFn: (ordered: ITEPortal_Domain_Dto_CategoryDto[]) => void;\n }) => {\n const { categoriesSource, startIndex, endIndex, preSaveFn } = opts;\n\n const initialTableData = queryClient.getQueryData(queryKey);\n\n if (startIndex === endIndex) {\n return Promise.resolve(initialTableData);\n }\n\n const localOrdered = DraggableUtils.reorder(\n categoriesSource,\n startIndex,\n endIndex\n );\n\n if (Array.isArray(initialTableData)) {\n preSaveFn(localOrdered);\n\n queryClient.setQueryData(queryKey, () => {\n return localOrdered;\n // initialTableData.forEach((ct) => {\n // if (ct.id === parentCategoryId) {\n // ct.subCategories = localOrdered;\n // }\n //\n // return ct;\n // });\n //\n // return initialTableData;\n });\n }\n\n try {\n await typedAxios.category.postCategoriesOrderIndex({\n requestBody: localOrdered.map((ct) => ({\n categoryId: ct.id,\n orderIndex: ct.orderIndex || 0,\n })),\n });\n\n return localOrdered;\n } catch {\n toast.error(i18n.t('unable-to-apply-reorder'));\n\n queryClient.setQueryData(queryKey, initialTableData);\n\n return initialTableData;\n }\n },\n });\n};\n","import { FormProvider, useFieldArray, useForm } from 'react-hook-form';\nimport {\n Box,\n Button,\n ButtonGroup,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n Flex,\n FormControl,\n Stack,\n} from '@chakra-ui/react';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport Input from '@/components/Fields/Input';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport { IdType, OptionType } from '@/model/common';\nimport { viewExhibitionRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { ITEPortal_Domain_Dto_AdminPriceListItem } from '@/api';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { TKey } from '@/i18n/types';\nimport { FEATURES, useFeature } from '@/features/feautres';\nimport { DeleteIcon } from '@chakra-ui/icons';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nconst OptionSchema = vali.object(\n {\n value: vali.coerce.number(),\n label: vali.string(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst ValidationSchema = vali.object({\n name: OptionSchema,\n price: vali.coerce.number(),\n linked: vali\n .array(\n vali.object({\n product: OptionSchema,\n amount: vali.coerce.number().min(1, {\n message: i18n.t('should-be-gte', { n: 1 }),\n }),\n })\n )\n .optional()\n .nullable(),\n});\n\ntype ValidationSchemaType = vali.infer<typeof ValidationSchema>;\n\ninterface EditPriceListItemFormProps {\n openConfirm: boolean;\n closeModal: () => void;\n editTableData: ITEPortal_Domain_Dto_AdminPriceListItem | null;\n priceListId?: IdType;\n currency: OptionType;\n reloadPriceList: (currency: OptionType) => void;\n existingPriceListItems: Array<\n OptionType<ITEPortal_Domain_Dto_AdminPriceListItem>\n >;\n}\n\nexport const EditPriceListItemForm = ({\n openConfirm,\n closeModal,\n editTableData,\n priceListId,\n currency,\n reloadPriceList,\n existingPriceListItems,\n}: EditPriceListItemFormProps) => {\n const zeroPriceProductsEnabled = useFeature(\n FEATURES.LINKED_ZERO_PRICE_PRODUCTS\n );\n const [entityId, setEntityId] = useState<number | null>(null);\n const { exhibitionId } = viewExhibitionRoute.useParams();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { t } = useTranslation();\n\n const { data: priceListItemOptions } = useQuery(\n QueryOptions.loadPriceListItemsShort(priceListId)\n );\n\n const filteredPricelistItemOptions = useMemo(() => {\n const existingIds = existingPriceListItems.map((pi) => pi.value);\n\n return (\n priceListItemOptions?.filter(\n (pi) => existingIds.indexOf(pi.value) === -1\n ) || []\n );\n }, [priceListItemOptions, existingPriceListItems]);\n\n const formInstance = useForm<ValidationSchemaType>({\n // mode: 'onBlur',\n resolver: zodResolver(ValidationSchema),\n });\n const {\n fields: linkedFieldset,\n append,\n remove,\n } = useFieldArray({\n name: 'linked',\n control: formInstance.control,\n });\n\n useEffect(\n function setInitialDataToForm() {\n if (editTableData?.id) {\n setEntityId(editTableData.id);\n }\n\n formInstance.reset({\n ...editTableData,\n name: {\n value: editTableData?.productId || undefined,\n label: editTableData?.name || undefined,\n },\n // @ts-expect-error desc\n linked: editTableData?.includedPriceListItems?.map((linked) => {\n return {\n product: existingPriceListItems?.find(\n (it) => it.value === linked.includedPricelistItemId\n ),\n amount: linked.quantity,\n };\n }),\n });\n },\n [editTableData, existingPriceListItems]\n );\n\n const filteredLinkedProducts = useMemo(() => {\n return existingPriceListItems;\n }, [existingPriceListItems, formInstance.getValues('name')]);\n\n const submitHandler = async (\n values: ValidationSchemaType,\n addAnother: boolean\n ) => {\n if (priceListId) {\n try {\n setIsSubmitting(true);\n if (entityId) {\n await typedAxios.priceListItem.putExhibitionsPriceListsItems({\n priceListId: +priceListId,\n priceListItemId: entityId,\n exhibitionId: +exhibitionId,\n requestBody: {\n productId: values.name.value,\n price: values.price,\n includedPriceListItems: values.linked?.map((linked) => {\n return {\n includedPriceListItemId: linked.product.value,\n quantity: linked.amount,\n };\n }),\n },\n });\n } else {\n await typedAxios.priceListItem.postExhibitionsPriceListsItems({\n priceListId: +priceListId,\n exhibitionId: +exhibitionId,\n requestBody: {\n productId: values.name.value,\n price: values.price,\n includedPriceListItems: values.linked?.map((linked) => {\n return {\n includedPriceListItemId: linked.product.value,\n quantity: linked.amount,\n };\n }),\n },\n });\n }\n\n if (!addAnother) {\n closeModal();\n } else {\n setEntityId(null);\n formInstance.reset({});\n }\n\n reloadPriceList(currency);\n } catch (error) {\n console.log(error);\n } finally {\n setIsSubmitting(false);\n }\n }\n };\n\n const headerMessage: TKey = editTableData\n ? 'edit-pricelist-item'\n : 'add-pricelist-item';\n\n return (\n <Drawer isOpen={openConfirm} onClose={closeModal} size=\"lg\">\n <DrawerOverlay />\n <DrawerContent>\n <DrawerHeader>{t(headerMessage)}</DrawerHeader>\n <DrawerCloseButton />\n <DrawerBody>\n <FormProvider {...formInstance}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <SelectComponent<ValidationSchemaType>\n label={t('service-id')}\n options={filteredPricelistItemOptions}\n isRequired\n name=\"name\"\n />\n <Input<ValidationSchemaType>\n label={t('price')}\n maxWidth=\"100%\"\n name=\"price\"\n isRequired\n />\n {zeroPriceProductsEnabled && (\n <>\n {t('linked-services')}\n {linkedFieldset.map((field, index) => (\n <Flex\n key={field.id}\n flexDirection=\"column\"\n width=\"100%\"\n >\n <Flex flexDirection=\"row\" gap={4}>\n <Box flexBasis=\"50%\">\n <SelectComponent<ValidationSchemaType>\n label={t('service')}\n options={filteredLinkedProducts}\n isRequired\n name={`linked.${index}.product`}\n />\n </Box>\n <Box flexBasis=\"30%\">\n <Input<ValidationSchemaType>\n label={t('amount')}\n isRequired\n name={`linked.${index}.amount`}\n maxWidth=\"unset\"\n />\n </Box>\n <Box flexBasis=\"20%\" pt=\"37px\">\n <DeleteIcon onClick={() => remove(index)} />\n </Box>\n </Flex>\n </Flex>\n ))}\n <Button\n variant=\"ghost\"\n colorScheme=\"red\"\n onClick={() =>\n append(\n // @ts-expect-error desc\n {}\n )\n }\n >\n {t('add-service')}\n </Button>\n </>\n )}\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </DrawerBody>\n <DrawerFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={formInstance.handleSubmit((values) =>\n submitHandler(values, false)\n )}\n disabled={isSubmitting}\n >\n {t('save')}\n </OrderButton>\n {/*<OrderButton*/}\n {/* colorScheme=\"red\"*/}\n {/* onClick={formInstance.handleSubmit((values) =>*/}\n {/* submitHandler(values, true)*/}\n {/* )}*/}\n {/* disabled={isSubmitting}*/}\n {/*>*/}\n {/* {t('save-and-add-another')}*/}\n {/*</OrderButton>*/}\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { useNameTranslate } from '@/hooks/useStringName';\nimport {\n Box,\n Button as ChakraButton,\n ButtonGroup,\n FormControl,\n Stack,\n} from '@chakra-ui/react';\nimport React, { useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { Button } from '@/components/Buttons/Button/Button';\nimport Input from '@/components/Fields/Input';\nimport { useNavigate, useParams } from '@tanstack/react-router';\nimport { DatePicker } from '@/components/DatePicker/DatePicker';\nimport styled from 'styled-components';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport fetchApi from '@/utils/fetchAPI';\nimport {\n CREATE_EXHIBITION,\n EDIT_EXHIBITION,\n SAVE_EXHIBITION_IMG,\n} from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport dayjs from 'dayjs';\nimport {\n createExhibitionRoute,\n editExhibitionRoute,\n} from '../../../features/Routing/protected/admin-exhibitions';\nimport { toast } from 'react-toastify';\nimport { useFormErrorsHandler } from '../../../hooks/useFormErrorsHandler';\nimport { typedAxios } from '../../../api/typed-axios';\nimport { typedObjectKeys } from '../../../utils/typed-object-keys';\nimport { isOption } from '../../../utils/is-option';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { FormValues, ValidationSchema } from './types';\nimport { DateUtils } from '../../../utils/date-utils';\nimport { useTranslation } from 'react-i18next';\n\nconst MarginContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n gap: 10px;\n width: 100%;\n`;\n\nconst MarginWrapper = styled(FormControl)`\n min-width: 100%;\n`;\n\ninterface ExhibitionDescriptionProps {\n type: 'add' | 'edit';\n}\n\nconst dateFields = [\n 'startDate',\n 'endDate',\n 'orderCreationLastDate',\n 'firstMarginDate',\n 'secondMarginDate',\n 'thirdMarginDate',\n] as const;\n\nconst isDateField = (name: string): name is (typeof dateFields)[number] => {\n // @ts-expect-error as we are asserting acceptable names\n return dateFields.includes(name);\n};\n\nexport const ExhibitionDescription = ({\n type,\n}: ExhibitionDescriptionProps): JSX.Element => {\n const { t } = useTranslation();\n const { exhibitionId } = useParams({ strict: false });\n const editForm = type === 'edit';\n const { technicalManagers: managers } = (\n editForm ? editExhibitionRoute : createExhibitionRoute\n ).useLoaderData();\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const navigate = useNavigate();\n\n const methods = useForm<FormValues>({\n mode: 'onBlur',\n resolver: zodResolver(ValidationSchema),\n });\n\n const { processErrorsArray } = useFormErrorsHandler(methods);\n\n const toExhibitions = () => {\n navigate({\n to: '/admin/exhibitions',\n replace: true,\n });\n };\n\n useEffect(() => {\n if (type === 'edit') {\n const fetchData = async () => {\n setIsSubmitting(true);\n try {\n const data = await typedAxios.exhibition.getExhibitions({\n id: +exhibitionId,\n });\n\n if (Array.isArray(data.technicalManagers)) {\n // @ts-expect-error desc\n data.technicalManagers = data.technicalManagers\n .map((managerValue) => {\n return managers.find(\n (managerOption) => managerOption?.value === managerValue\n );\n })\n .filter(Boolean);\n }\n\n typedObjectKeys(data).forEach((field) => {\n // @ts-expect-error desc\n methods.setValue(field, data[field]);\n });\n } catch (error: any) {\n toast.error('Could not load exhibition');\n } finally {\n setIsSubmitting(false);\n }\n };\n\n fetchData();\n }\n }, []);\n\n const submitHandler = async (values: FormValues) => {\n typedObjectKeys(values).forEach((field) => {\n const value = values[field];\n\n if (isDateField(field) && DateUtils.isDate(value)) {\n values[field] = dayjs\n .tz(dayjs(value).format('YYYY-MM-DD'), 'Etc/GMT+0')\n .toDate();\n }\n });\n\n const method = editForm ? FetchMethods.Put : FetchMethods.Post;\n const link = editForm ? EDIT_EXHIBITION(exhibitionId) : CREATE_EXHIBITION;\n const technicalManagers = values.technicalManagers?.map((manager) =>\n typeof manager !== 'string' && isOption(manager) ? manager.value : manager\n );\n\n const data = {\n ...values,\n technicalManagers,\n };\n\n setIsSubmitting(true);\n try {\n const response = await fetchApi(link, {\n method: method,\n data,\n });\n\n const id = editForm ? exhibitionId : response?.data;\n\n if (data['upload-image']) {\n await fetchApi(\n SAVE_EXHIBITION_IMG(id),\n {\n method: FetchMethods.Post,\n\n data: { logo: data['upload-image'][0] },\n },\n { 'Content-Type': 'multipart/form-data' }\n );\n }\n\n toast.success(t('exhibition-import-saved'));\n toExhibitions();\n } catch (e: any) {\n processErrorsArray(e);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <FormProvider {...methods}>\n <form onSubmit={methods.handleSubmit(submitHandler)}>\n <Stack spacing=\"5\">\n <Input<FormValues>\n label={useNameTranslate('exhibition-name')}\n maxWidth=\"100%\"\n name=\"name\"\n isRequired\n />\n <UploadFileDropzone\n label={useNameTranslate('upload-image')}\n defaultValue={methods.getValues('logoUrl') || undefined}\n name=\"upload-image\"\n />\n <DatePicker<FormValues>\n name=\"startDate\"\n label={useNameTranslate('startDate')}\n isRequired\n />\n <DatePicker<FormValues>\n name=\"endDate\"\n label={useNameTranslate('finDate')}\n isRequired\n />\n <DatePicker<FormValues>\n name=\"orderCreationLastDate\"\n label={useNameTranslate('order-creation-last-date')}\n />\n <Input<FormValues>\n label={useNameTranslate('location')}\n maxWidth=\"100%\"\n name=\"place\"\n isRequired\n />\n <TextArea<FormValues>\n label={useNameTranslate('exhibition-description')}\n name=\"description\"\n />\n <SelectComponent<FormValues>\n label={useNameTranslate('technical-managers')}\n options={managers}\n closeMenuOnSelect={false}\n name=\"technicalManagers\"\n isMulti\n isRequired\n />\n <MarginWrapper isRequired>\n <FormLabel>{useNameTranslate('margin1')}</FormLabel>\n <MarginContainer>\n <Input<FormValues>\n maxWidth=\"100%\"\n name=\"firstMargin\"\n addonRight=\"%\"\n />\n <DatePicker<FormValues> name=\"firstMarginDate\" />\n </MarginContainer>\n </MarginWrapper>\n <MarginWrapper isRequired>\n <FormLabel>{`${useNameTranslate('margin2')}`}</FormLabel>\n <MarginContainer>\n <Input<FormValues>\n maxWidth=\"100%\"\n name=\"secondMargin\"\n isRequired\n addonRight=\"%\"\n />\n <DatePicker<FormValues> name=\"secondMarginDate\" isRequired />\n </MarginContainer>\n </MarginWrapper>\n <MarginWrapper isRequired>\n <FormLabel>{`${useNameTranslate('margin3')}`}</FormLabel>\n <MarginContainer>\n <Input<FormValues>\n maxWidth=\"100%\"\n name=\"thirdMargin\"\n isRequired\n addonRight=\"%\"\n />\n <DatePicker<FormValues> name=\"thirdMarginDate\" isRequired />\n </MarginContainer>\n </MarginWrapper>\n\n <ButtonGroup gap=\"1\">\n <ChakraButton\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(submitHandler)}\n >\n {useNameTranslate('save')}\n </ChakraButton>\n <Button\n colorScheme=\"secondary\"\n buttonType=\"reset\"\n onClick={toExhibitions}\n >\n {useNameTranslate('cancel')}\n </Button>\n </ButtonGroup>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { Table } from '@/components/Table/Table';\nimport { useTranslation } from 'react-i18next';\nimport { Card } from '@/components/Card/Card';\nimport { EditIcon, ExternalLinkIcon } from '@chakra-ui/icons';\nimport { Box, Flex } from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { Button } from '@/components/Buttons/Button/Button';\nimport { Link, useNavigate } from '@tanstack/react-router';\nimport { Column, Row } from 'react-table';\nimport { EXHIBITIONS_TABLE } from '@/constants/endpoints';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport dayjs from 'dayjs';\nimport Pagination from '@/components/Table/Pagination';\nimport { useTableLoader } from '@/components/Table/useTableLoader';\nimport { useMemo } from 'react';\nimport { exhibitionApi } from '@/store/effector/exhibition';\nimport { ITEPortal_Domain_Dto_AdminExhibitionSummary } from '@/api';\nimport { exhibitionListRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useRBAC } from '@/features/rbac/useRBAC';\nimport { ButtonGroup } from '@chakra-ui/react';\nimport { useExportExhibition } from '@/pages/AdminPanel/Exhibitions/hooks/use-import-exhibition';\n\nconst OptionWrapper = styled(Flex)`\n flex-direction: row;\n gap: 20px;\n`;\n\nconst ButtonContainer = styled(Box)`\n padding-top: 20px;\n`;\n\nconst FooterContainer = styled(Flex)`\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\ninterface ExhibitionOptionsType {\n row: Row<ITEPortal_Domain_Dto_AdminExhibitionSummary>;\n}\n\nexport const Exhibitions = (): JSX.Element => {\n const { tab } = exhibitionListRoute.useSearch();\n const { t } = useTranslation();\n const { can, user } = useRBAC();\n const { isLoading, data, onPageChange, onPageSizeChange, paginationInfo } =\n useTableLoader<ITEPortal_Domain_Dto_AdminExhibitionSummary>({\n resource: EXHIBITIONS_TABLE,\n additionalPrams: {\n type: tab,\n },\n });\n const navigate = useNavigate();\n\n const { openImportModal } = useExportExhibition();\n\n // const { user } = useAuth();\n // const role = user?.role as AdminRoleType;\n\n const ExhibitionOptions = ({ row }: ExhibitionOptionsType) => {\n // const editAvailable = !(role == 4 || role == 5);\n // const showAvailable = role !== 3;\n\n return (\n <OptionWrapper>\n {can('canManageExhibition') && (\n <Link\n to={`/admin/exhibitions/$exhibitionId/view/${\n user?.isAgent ? 'placed-orders' : 'personal-accounts'\n }`}\n params={{\n exhibitionId: row.original.id,\n }}\n onClick={() => {\n exhibitionApi.setEventEditionId(\n row.original.eventEditionId || null\n );\n\n if (row.original.name) {\n exhibitionApi.setName(row.original.name);\n }\n }}\n >\n <ExternalLinkIcon />\n </Link>\n )}\n {can('canEditExhibition') && (\n <Link\n to=\"/admin/exhibitions/$exhibitionId/edit\"\n params={{\n exhibitionId: row.original.id,\n }}\n >\n <EditIcon />\n </Link>\n )}\n </OptionWrapper>\n );\n };\n\n const exhibitionColumns = useMemo<\n Array<Column<ITEPortal_Domain_Dto_AdminExhibitionSummary>>\n >(() => {\n return [\n {\n Header: `${t('exhibitionId')}`,\n accessor: 'id',\n width: '10%',\n },\n {\n accessor: 'eventEditionId',\n show: false,\n },\n {\n Header: `${t('exhibitionName')}`,\n accessor: 'name',\n },\n {\n Header: `${t('startDate')}`,\n accessor: 'startDate',\n Cell: ({ row: { values } }) => (\n <>\n {values?.startDate\n ? dayjs(values?.startDate).format('DD.MM.YYYY')\n : ''}\n </>\n ),\n },\n {\n Header: `${t('finDate')}`,\n accessor: 'endDate',\n Cell: ({ row: { values } }) => (\n <>\n {values?.endDate ? dayjs(values?.endDate).format('DD.MM.YYYY') : ''}\n </>\n ),\n },\n {\n Header: `${t('location')}`,\n accessor: 'place',\n },\n {\n Header: '',\n id: 'options',\n width: '5%',\n Cell: ({ row }) => <ExhibitionOptions row={row} />,\n },\n ];\n }, []);\n\n const addExhibition = () => {\n navigate({ to: '/admin/exhibitions/add' });\n };\n\n return (\n <LoaderWrapper loading={isLoading}>\n <Card>\n <Table columns={exhibitionColumns} data={data} />\n <FooterContainer>\n <ButtonGroup gap=\"4\" justifyContent=\"flex-end\">\n {can('canAddExhibition') && (\n <ButtonContainer>\n <Button colorScheme=\"red\" onClick={addExhibition}>\n {t('addExhibition')}\n </Button>\n </ButtonContainer>\n )}\n {can('canAddExhibition') && (\n <ButtonContainer>\n <Button colorScheme=\"red\" onClick={openImportModal}>\n + {t('bitrixImport')}\n </Button>\n </ButtonContainer>\n )}\n </ButtonGroup>\n <Pagination\n setPageNumber={onPageChange}\n setPageSize={onPageSizeChange}\n paginationInfo={paginationInfo}\n />\n </FooterContainer>\n </Card>\n </LoaderWrapper>\n );\n};\n","import {\n SystemStyleObject,\n Tab,\n TabList,\n TabPanel,\n TabPanelProps,\n TabPanels,\n TabProps,\n Tabs,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { Exhibitions } from './Exhibitions';\nimport {\n exhibitionListRoute,\n exhibitionsTabs,\n} from '../../../features/Routing/protected/admin-exhibitions';\nimport { useNavigate } from '@tanstack/react-router';\n\nconst selectedTabStyles: SystemStyleObject = {\n background: 'blackAlpha.300',\n};\n\nconst tabStyles: TabProps = {\n background: 'blackAlpha.100',\n minW: '100px',\n};\n\nconst tabPanelsStyle: TabPanelProps = {\n width: '100%',\n};\n\nexport const ExhibitionsTabsPage = () => {\n const { t } = useTranslation();\n const { tab } = exhibitionListRoute.useSearch();\n const indexFromUrl = exhibitionsTabs.indexOf(tab);\n const navigate = useNavigate();\n\n const handleTabChange = (index: number) => {\n navigate({\n search: { tab: exhibitionsTabs[index] || 'current' },\n });\n };\n\n return (\n <Tabs\n variant=\"unstyled\"\n align=\"center\"\n w=\"100%\"\n index={indexFromUrl}\n onChange={handleTabChange}\n >\n <TabList>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopLeftRadius=\"md\"\n borderBottomLeftRadius=\"md\"\n >\n {t('current-exhibitions')}\n </Tab>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopRightRadius=\"md\"\n borderBottomRightRadius=\"md\"\n >\n {t('past-exhibitions')}\n </Tab>\n </TabList>\n <TabPanels>\n <TabPanel {...tabPanelsStyle}>\n {tab === 'current' && <Exhibitions />}\n </TabPanel>\n <TabPanel {...tabPanelsStyle}>\n {tab === 'past' && <Exhibitions />}\n </TabPanel>\n </TabPanels>\n </Tabs>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport React, { useEffect, useState } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { Stack } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { OptionType } from '@/model/common';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto } from '@/api/models/ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto';\n\nconst OptionSchema = vali.object(\n {\n value: vali.coerce.number(),\n label: vali.string(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst ValidationSchema = vali.object({\n eventMaster: OptionSchema,\n exhibition: OptionSchema,\n technicalManagers: vali.array(OptionSchema),\n});\n\nexport type ValidationSchemaType = vali.infer<typeof ValidationSchema>;\n\nexport const ImportExhibitionForm = () => {\n const { t } = useTranslation();\n const [eventMasterId, setEventMasterId] = useState<number>();\n const [exhibition, setExhibition] =\n useState<\n Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto>\n >\n >();\n const [technicalManagers, setTechnicalManagers] = useState<OptionType[]>();\n const instance = useForm<ValidationSchemaType>({\n resolver: zodResolver(ValidationSchema),\n mode: 'onChange',\n });\n const { data: eventMasterOptions = [] } = useQuery(\n QueryOptions.loadEventMasterOptions()\n );\n\n useEffect(() => {\n const fetchExhibition = async () => {\n const exhibitionsData = await typedAxios.bitrix.getBitrixEventEditions({\n eventMasterId,\n });\n\n const exhibitionOptions = exhibitionsData.map((ex) => ({\n value: ex.id,\n label: ex.title,\n meta: ex,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto>\n >;\n\n setExhibition(exhibitionOptions);\n };\n\n if (eventMasterId) {\n instance.resetField('exhibition');\n fetchExhibition();\n }\n }, [eventMasterId]);\n\n useEffect(() => {\n const fetchTechnicalManagers = async () => {\n const technicalManagersData = await typedAxios.user\n .getUsersTechnicalManagers()\n .catch(() => []);\n\n const technicalManagersOptions = technicalManagersData.map((manager) => {\n return {\n label: manager.email || manager.name,\n value: manager.id,\n meta: { contactId: manager.contactId },\n };\n });\n\n setTechnicalManagers(technicalManagersOptions);\n };\n\n fetchTechnicalManagers();\n ModalFactory.updateContext(instance);\n }, [instance]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <SelectComponent<ValidationSchemaType>\n label={t('event-master')}\n options={eventMasterOptions}\n isRequired\n name=\"eventMaster\"\n onChange={({ value }) => setEventMasterId(value)}\n />\n {eventMasterId && (\n <>\n <SelectComponent<ValidationSchemaType>\n label={t('exhibitions')}\n options={exhibition}\n isRequired\n name=\"exhibition\"\n />\n <SelectComponent<ValidationSchemaType>\n label={t('technical-manager')}\n options={technicalManagers}\n isRequired\n name=\"technicalManagers\"\n isMulti\n />\n </>\n )}\n </Stack>\n </FormProvider>\n );\n};\n","import {\n Tabs,\n TabList,\n TabPanels,\n Tab,\n TabPanel,\n CardBody,\n Card,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { ExhibitionDescription } from '@/pages/AdminPanel/Exhibitions/ExhibitionDescription';\nimport styled from 'styled-components';\nimport { PriceLists } from '@/pages/AdminPanel/Exhibitions/PriceLists';\nimport { useEffect } from 'react';\n\nconst tabStyles = {\n borderColor: 'blackAlpha.200',\n borderBottomColor: '#F7FAFC',\n color: 'red',\n};\n\nconst TabWrapper = styled(TabPanel)`\n padding-top: 50px;\n max-width: 600px;\n`;\n\ninterface NewExhibitionProps {\n type: 'add' | 'edit';\n}\n\nexport const NewExhibition = ({ type }: NewExhibitionProps): JSX.Element => {\n const { t } = useTranslation();\n const disabled = type === 'add';\n\n useEffect(() => {\n const element = document.getElementById('breadcrumbsId');\n\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return (\n <Card>\n <CardBody>\n <Tabs isManual variant=\"enclosed\">\n <TabList>\n <Tab _selected={tabStyles}>{t('exhibition-description')}</Tab>\n <Tab _selected={tabStyles} isDisabled={disabled}>\n {t('priceLists')}\n </Tab>\n </TabList>\n <TabPanels>\n <TabWrapper>\n <ExhibitionDescription type={type} />\n </TabWrapper>\n <TabPanel>{!disabled && <PriceLists />}</TabPanel>\n </TabPanels>\n </Tabs>\n </CardBody>\n </Card>\n );\n};\n","import styled from 'styled-components';\nimport { Box, Flex, Text } from '@chakra-ui/react';\n\nexport const SelectedPriceWrapper = styled(Box)`\n display: flex;\n flex-direction: column;\n padding-top: 40px;\n padding-bottom: 30px;\n`;\n\nexport const LoaderWrapper = styled(Flex)`\n justify-content: center;\n padding-top: 10%;\n`;\n\nexport const SelectedPriceContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding-bottom: 5px;\n`;\n\nexport const OptionWrapper = styled(Flex)`\n flex-direction: row;\n gap: 20px;\n max-width: 100px;\n`;\n\nexport const ToolBarWrapper = styled(Box)`\n padding-bottom: 10px;\n display: flex;\n flex-direction: row;\n justify-content: end;\n gap: 20px;\n`;\n\nexport const ButtonContentContainer = styled(Flex)`\n flex-direction: row;\n align-items: center;\n gap: 5px;\n`;\n\nexport const TransparentButtonsTextContainer = styled(Text)`\n font-size: 16px;\n color: var(--chakra-colors-gray-600);\n`;\n","import { useNameTranslate } from '@/hooks/useStringName';\nimport React, { SetStateAction, useEffect, useMemo, useState } from 'react';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport {\n Box,\n ButtonGroup,\n Divider,\n FormControl,\n Link,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Flex,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { DeleteIcon, EditIcon } from '@chakra-ui/icons';\nimport { Table } from '@/components/Table/Table';\nimport { Card } from '@/components/Card/Card';\nimport {\n Button as OrderButton,\n Button,\n} from '@/components/Buttons/Button/Button';\nimport { CiImport } from 'react-icons/ci';\nimport fetchApi from '@/utils/fetchAPI';\nimport {\n DELETE_PRICE_LIST,\n EDIT_PRICELIST_ITEM,\n GET_PRICELISTS,\n IMPORT_PRICELIST_ITEMS,\n} from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { Loader } from '@/components/Loader/Loader';\nimport { FieldValues, FormProvider, useForm } from 'react-hook-form';\nimport { IdType, OptionType } from '@/model/common';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { toast } from 'react-toastify';\nimport { DeleteModal } from '@/pages/Exhibition/DeleteModal';\nimport { EditPriceListItemForm } from '@/pages/AdminPanel/Exhibitions/EditPriceListItemForm';\nimport { typedAxios } from '@/api/typed-axios';\nimport type { ITEPortal_Domain_Dto_AdminPriceListItem } from '@/api';\nimport { editExhibitionRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport {\n ButtonContentContainer,\n LoaderWrapper,\n OptionWrapper,\n SelectedPriceContainer,\n SelectedPriceWrapper,\n ToolBarWrapper,\n TransparentButtonsTextContainer,\n} from '@/pages/AdminPanel/Exhibitions/PriceList.styled';\nimport { Column, Row } from 'react-table';\nimport { TableIncludedPriceListItemsBadge } from '@/pages/AdminPanel/Exhibitions/TableIncludedPriceListItemsBadge';\nimport { ITEPortal_Domain_Dto_CurrencyDto } from '@/api';\nimport { ButtonContainer } from '@/components/OrderTableRow/styled';\nimport { ModalFactory } from '@/components/Modal/api';\n\ninterface PriceListsOptionsType {\n row: Row<ITEPortal_Domain_Dto_AdminPriceListItem>;\n}\n\ntype PriceListType = {\n exhibitionId: number;\n priceListId: number;\n currencyId: number;\n};\n\nexport const PriceLists = (): JSX.Element => {\n const { exhibitionId } = editExhibitionRoute.useParams();\n const [currency, setCurrency] = useState<any>();\n const [currencyOptions, setCurrencyOptions] = useState([]);\n const [isLoading, setIsLoading] = useState(false);\n const [priceListsData, setPriceListsData] = useState<\n ITEPortal_Domain_Dto_AdminPriceListItem[]\n >([]);\n const [openConfirm, setOpenConfirm] = useState(false);\n const [openImportModal, setOpenImportModal] = useState(false);\n const defaultValues = { name: null, price: null };\n const [editData, setEditData] = useState<any>(defaultValues);\n const [editTableData, setEditTableData] =\n useState<ITEPortal_Domain_Dto_AdminPriceListItem | null>(null);\n const [priceLists, setPriceLists] = useState<any>();\n const [selectedPriceId, setSelectedPriceId] = useState<IdType>('');\n const [openDeletePriceListItem, setOpenDeletePriceListItem] = useState(false);\n const [deleteAll, setDeleteAll] = useState(false);\n const [priceListItemId, setPriceListItemId] = useState();\n const { t } = useTranslation();\n const [eventEditionId, setEventEditionId] = useState<number | null>();\n\n useEffect(() => {\n const fetchEventEditionId = async () => {\n if (exhibitionId) {\n const data = await typedAxios.exhibition.getExhibitions({\n id: +exhibitionId,\n });\n\n setEventEditionId(data.eventEditionId);\n }\n };\n\n fetchEventEditionId();\n }, []);\n\n const closeDeletePriceListItemModal = () => setOpenDeletePriceListItem(false);\n\n const deletePriceListItemModalShow = (id: any) => {\n setPriceListItemId(id);\n setDeleteAll(false);\n setOpenDeletePriceListItem(!openDeletePriceListItem);\n };\n\n const deletePriceModalShow = () => {\n setDeleteAll(true);\n setOpenDeletePriceListItem(!openDeletePriceListItem);\n };\n\n const methods = useForm({\n mode: 'onBlur',\n });\n\n useEffect(() => {\n Object.keys(editData).forEach((field) => {\n methods.setValue(field, editData[field]);\n });\n }, [editData]);\n\n useEffect(() => {\n const fetchData = async () => {\n setIsLoading(true);\n try {\n const currencyData = await typedAxios.currency.getCurrency();\n\n const options = currencyData?.map(\n (option: ITEPortal_Domain_Dto_CurrencyDto) => {\n return {\n label: option?.name,\n value: option?.id,\n };\n }\n ) as SetStateAction<never[]>;\n\n setCurrencyOptions(options);\n\n const response = await fetchApi(GET_PRICELISTS(exhibitionId));\n\n setPriceLists(response?.data);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n };\n\n fetchData();\n }, []);\n\n const PriceListsOptions = ({ row }: PriceListsOptionsType) => {\n const rowValues = row.original;\n\n return (\n <OptionWrapper>\n <Link onClick={() => editRow(rowValues)}>\n <EditIcon />\n </Link>\n <Link onClick={() => deletePriceListItemModalShow(rowValues.id)}>\n <DeleteIcon />\n </Link>\n </OptionWrapper>\n );\n };\n\n const PriceListsToolbar = () => {\n return (\n <ToolBarWrapper>\n <Button colorScheme=\"transparent\" onClick={importCSV}>\n <ButtonContentContainer>\n <CiImport size=\"20px\" />\n <TransparentButtonsTextContainer>\n {t('importCSV')}\n </TransparentButtonsTextContainer>\n </ButtonContentContainer>\n </Button>\n <Button colorScheme=\"red\" onClick={addRow}>\n {t('add-price')}\n </Button>\n </ToolBarWrapper>\n );\n };\n\n const importCSV = () => {\n setOpenImportModal(!openImportModal);\n };\n\n const closeImportModal = () => setOpenImportModal(false);\n\n const importItems = async (values: FieldValues) => {\n setIsLoading(true);\n try {\n const response = await fetchApi(\n IMPORT_PRICELIST_ITEMS(exhibitionId, selectedPriceId),\n {\n method: FetchMethods.Post,\n data: { importPriceListItems: values?.['upload-csv'][0] },\n },\n { 'Content-Type': 'multipart/form-data' }\n );\n\n if (response?.data?.errors) {\n const message = `${t('import-errors')} ${response?.data?.errors.join(\n ','\n )}`;\n\n toast.error(message);\n }\n\n await showPriceList(currency);\n } finally {\n setIsLoading(false);\n closeImportModal();\n }\n };\n\n const ImportCSVModal = () => {\n return (\n <Modal\n isOpen={openImportModal}\n onClose={closeImportModal}\n size=\"lg\"\n isCentered\n >\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('set-file')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...methods}>\n <form>\n <FormControl>\n <UploadFileDropzone\n label={useNameTranslate('upload-csv')}\n name=\"upload-csv\"\n accept={{ 'text/csv': ['.csv'] }}\n />\n </FormControl>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(importItems)}\n >\n {t('choose')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeImportModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n };\n\n const addRow = () => {\n setEditData(defaultValues);\n setEditTableData(null);\n setOpenConfirm(!openConfirm);\n };\n\n const closeModal = () => setOpenConfirm(false);\n\n const editRow = (values: ITEPortal_Domain_Dto_AdminPriceListItem) => {\n setEditData(values);\n setEditTableData(values);\n setOpenConfirm(!openConfirm);\n };\n\n const deleteRow = async () => {\n if (priceListItemId) {\n try {\n setIsLoading(true);\n await fetchApi(\n EDIT_PRICELIST_ITEM(exhibitionId, selectedPriceId, priceListItemId),\n {\n method: FetchMethods.Delete,\n }\n );\n\n closeModal();\n setEditData(defaultValues);\n setEditTableData(null);\n await showPriceList(currency);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }\n };\n\n const priceListsColumns = React.useMemo<\n Array<Column<ITEPortal_Domain_Dto_AdminPriceListItem>>\n >(\n () => [\n {\n Header: ``,\n accessor: 'id',\n show: false,\n },\n {\n Header: ``,\n accessor: 'productId',\n show: false,\n },\n {\n Header: `${t('service-name')}`,\n accessor: 'displayName',\n width: '30%',\n },\n {\n Header: `${t('service-id')}`,\n accessor: 'name',\n width: '20%',\n },\n {\n Header: `${t('price')}`,\n accessor: 'price',\n width: '10%',\n },\n {\n Header: `${t('linked-services')}`,\n accessor: 'includedPriceListItems',\n Cell: ({ value }) => {\n return (\n <TableIncludedPriceListItemsBadge\n includedPriceListItems={value}\n source={priceListsData}\n />\n );\n },\n },\n {\n Header: '',\n id: 'options',\n width: '10%',\n Cell: ({ row }: PriceListsOptionsType) => (\n <PriceListsOptions row={row} />\n ),\n },\n ],\n [priceListsData]\n );\n\n const existingPriceListItems = useMemo<\n Array<OptionType<ITEPortal_Domain_Dto_AdminPriceListItem>>\n >(() => {\n return priceListsData.map((pi) => ({\n value: pi.id,\n label: pi.name,\n meta: pi,\n }));\n }, [priceListsData]);\n\n const showPriceList = async (value: OptionType) => {\n setCurrency(value);\n\n const priceListId = priceLists.find(\n (priceList: PriceListType) => priceList?.currencyId === value?.value\n )?.priceListId;\n\n setSelectedPriceId(priceListId);\n\n if (priceListId) {\n setIsLoading(true);\n try {\n const data =\n await typedAxios.priceListItem.getExhibitionsPriceListsItems({\n exhibitionId: +exhibitionId,\n priceListId,\n });\n\n setPriceListsData(data);\n } catch (error) {\n console.log(error);\n } finally {\n setIsLoading(false);\n }\n }\n\n if (!priceListId) {\n setPriceListsData([]);\n }\n };\n\n const deletePriceList = async () => {\n try {\n setIsLoading(true);\n await fetchApi(DELETE_PRICE_LIST(exhibitionId, selectedPriceId), {\n method: FetchMethods.Delete,\n });\n\n closeModal();\n setEditData(defaultValues);\n setEditTableData(null);\n await showPriceList(currency);\n } finally {\n setIsLoading(false);\n }\n };\n\n const showImportModal = () => {\n ModalFactory.show({\n title: t('bitrixImport'),\n Component: () => <Box>{t('import-from-bitrix-message')}</Box>,\n okLabel: t('importButton'),\n onOk: async () => {\n try {\n setIsLoading(true);\n const pricelists = await typedAxios.bitrix.postBitrixPriceList({\n exhibitionId: +exhibitionId,\n });\n\n ModalFactory.close();\n\n if (pricelists?.length === 0) {\n toast.success(t('pricelist-is-empty'));\n } else {\n setPriceLists(pricelists);\n toast.success(t('pricelist-import-success'));\n }\n } catch {\n toast.error(t('error-occurred'));\n } finally {\n setIsLoading(false);\n }\n },\n });\n };\n\n const deletePriceListFunc = deleteAll ? deletePriceList : deleteRow;\n\n return (\n <Box minH=\"300px\">\n <FormProvider {...useForm()}>\n <Flex\n flexDirection=\"row\"\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <SelectComponent\n label={useNameTranslate('select-currency')}\n options={[{ label: 'Выбрать...', value: '' }, ...currencyOptions]}\n name=\"currency\"\n maxWidth=\"360px\"\n minWidth=\"360px\"\n onClear={() => setPriceListsData([])}\n onChange={(value) => {\n showPriceList(value);\n }}\n />\n {!currency?.['value'] && eventEditionId && (\n <ButtonContainer>\n <Button colorScheme=\"red\" onClick={showImportModal}>\n + {t('bitrixImport')}\n </Button>\n </ButtonContainer>\n )}\n </Flex>\n </FormProvider>\n {currency?.['value'] && (\n <>\n <SelectedPriceWrapper>\n <SelectedPriceContainer>\n {`${t('price-list')} ${currency?.['label']}`}\n <Link onClick={deletePriceModalShow}>\n <DeleteIcon paddingRight=\"5px\" boxSize={5} />\n {t('delete-price')}\n </Link>\n </SelectedPriceContainer>\n <Divider />\n </SelectedPriceWrapper>\n <PriceListsToolbar />\n {isLoading ? (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n ) : (\n <Card>\n <DeleteModal\n onSubmit={deletePriceListFunc}\n isOpen={openDeletePriceListItem}\n onClose={closeDeletePriceListItemModal}\n />\n <Table columns={priceListsColumns} data={priceListsData} />\n {openConfirm && (\n <EditPriceListItemForm\n openConfirm={openConfirm}\n closeModal={closeModal}\n editTableData={editTableData}\n priceListId={selectedPriceId}\n currency={currency}\n reloadPriceList={showPriceList}\n existingPriceListItems={existingPriceListItems}\n />\n )}\n <ImportCSVModal />\n </Card>\n )}\n </>\n )}\n </Box>\n );\n};\n","import { ITEPortal_Domain_Dto_AdminPriceListItem } from '@/api';\nimport React, { Fragment, useMemo } from 'react';\nimport { Badge, Flex, Tooltip, Text, TooltipProps } from '@chakra-ui/react';\n\ntype TableIncludedPriceListItemsBadge = {\n includedPriceListItems: ITEPortal_Domain_Dto_AdminPriceListItem['includedPriceListItems'];\n source: ITEPortal_Domain_Dto_AdminPriceListItem[];\n};\n\nexport const TableIncludedPriceListItemsBadge = (\n props: TableIncludedPriceListItemsBadge\n) => {\n const threshold = 5;\n const { includedPriceListItems, source } = props;\n\n const itemsWithDisplayName = useMemo(() => {\n if (!includedPriceListItems || includedPriceListItems.length === 0) {\n return [];\n }\n\n return (\n includedPriceListItems?.map((ipi) => {\n return {\n ...ipi,\n displayName:\n source.find((pi) => pi.id === ipi.includedPricelistItemId)?.name ||\n ipi.includedPricelistItemId,\n };\n }) || []\n );\n }, [includedPriceListItems, source]);\n\n if (!itemsWithDisplayName || !itemsWithDisplayName.length) {\n return <>-</>;\n }\n\n const total = itemsWithDisplayName.length;\n const tailLength = total - threshold;\n const TooltipWrapper = total >= threshold ? Tooltip : Fragment;\n let tooltipProps: Omit<TooltipProps, 'children'> = {};\n\n if (TooltipWrapper === Tooltip) {\n tooltipProps = {\n label: itemsWithDisplayName\n .map((pi) => `${pi.displayName} (${pi.quantity})`)\n .join(', '),\n placement: 'top',\n hasArrow: true,\n openDelay: 500,\n width: 'fit-content',\n };\n }\n\n return (\n <TooltipWrapper {...tooltipProps}>\n <Flex\n flexDirection=\"row\"\n flexWrap=\"wrap\"\n gap={1}\n alignItems=\"center\"\n cursor={tailLength > 0 ? 'help' : undefined}\n width=\"fit-content\"\n >\n {itemsWithDisplayName.slice(0, threshold).map((bt, i) => (\n <Badge fontSize=\"0.7em\" key={i}>\n {bt.displayName || bt.includedPricelistItemId} ({bt.quantity})\n </Badge>\n ))}{' '}\n {tailLength > 0 && <Text fontSize=\"0.7em\">+{tailLength} </Text>}\n </Flex>\n </TooltipWrapper>\n );\n};\n","import React, { useCallback } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { useTranslation } from 'react-i18next';\nimport { UseFormReturn } from 'react-hook-form';\nimport { ApiError } from '@/api';\nimport { toast } from 'react-toastify';\nimport {\n ImportExhibitionForm,\n ValidationSchemaType,\n} from '@/pages/AdminPanel/Exhibitions/ImportExhibitionForm';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useNavigate } from '@tanstack/react-router';\nimport { OptionType } from '@/model/common';\n\ntype TechnicalManagersType = OptionType & {\n label: string;\n meta?: {\n contactId: string | null;\n };\n};\n\nexport const useExportExhibition = () => {\n const { t } = useTranslation();\n const queryClient = new QueryClient();\n const navigate = useNavigate();\n\n const saveExhibition = async (values: ValidationSchemaType) => {\n const withoutContactIdManagers: string[] = [];\n\n if (values?.technicalManagers?.length > 0) {\n values?.technicalManagers?.forEach((value: TechnicalManagersType) => {\n if (value?.meta?.contactId === null && value.label) {\n withoutContactIdManagers.push(value.label);\n }\n });\n }\n\n if (withoutContactIdManagers.length > 0) {\n toast.error(\n `${t('managers-without-contact-id')} ${withoutContactIdManagers.join(\n '\\n'\n )}`\n );\n\n return;\n }\n\n const technicalManagers = values?.technicalManagers?.map(\n (manager) => manager?.value\n );\n\n try {\n const exhibitionId = await typedAxios.bitrix.postBitrixExhibition({\n eventEditionId: values?.exhibition?.value,\n requestBody: technicalManagers,\n });\n\n ModalFactory.close();\n toast.success(t('exhibition-import-success'));\n\n navigate({\n to: `/admin/exhibitions/${exhibitionId}/edit`,\n });\n } catch (e) {\n if (e instanceof ApiError) {\n const message = e.body;\n\n if (message && typeof message === 'string') {\n toast.error(message);\n } else {\n toast.error(t('error-occurred'));\n }\n }\n }\n };\n\n const openImportModal = useCallback(() => {\n ModalFactory.show({\n title: t('importExhibition'),\n Component: () => (\n <QueryClientProvider client={queryClient}>\n <ImportExhibitionForm />\n </QueryClientProvider>\n ),\n okLabel: t('importButton'),\n onOk: async (ctx: UseFormReturn<ValidationSchemaType>) => {\n return ctx.handleSubmit(() => saveExhibition(ctx.getValues()))();\n },\n });\n }, []);\n\n return {\n openImportModal,\n };\n};\n","import * as v from 'zod';\nimport dayjs from 'dayjs';\nimport i18n from '../../../i18n';\n\nexport const ValidationSchema = v\n .object({\n 'name': v.string().min(1, { message: 'Name field is required' }),\n 'description': v.string().nullable(),\n 'logoUrl': v.string().optional().nullable(),\n 'startDate': v.coerce.date(),\n 'endDate': v.coerce.date(),\n 'place': v.string().min(1, { message: 'Place field is required' }),\n 'technicalManagers': v\n .array(\n v.object({\n value: v.string(),\n label: v.string(),\n })\n )\n .min(1, { message: 'At least one manager is required' }),\n 'firstMargin': v.coerce.number(),\n 'firstMarginDate': v.coerce.date(),\n 'secondMargin': v.coerce.number().gt(0),\n 'secondMarginDate': v.coerce.date(),\n 'thirdMargin': v.coerce.number().gt(0),\n 'thirdMarginDate': v.coerce.date(),\n 'orderCreationLastDate': v.coerce.date().optional().nullable(),\n 'upload-image': v.array(v.instanceof(File)).optional(),\n })\n .refine(\n (data) => {\n if (!data.firstMarginDate || !data.secondMarginDate) {\n return true;\n }\n\n const firstMargin = dayjs(data.firstMarginDate);\n const secondMarginDate = dayjs(data.secondMarginDate);\n\n return firstMargin.isBefore(secondMarginDate);\n },\n {\n path: ['secondMarginDate'],\n message: i18n.t('first-margin-before second-margin'),\n }\n )\n .refine(\n (data) => {\n if (!data.secondMarginDate || !data.thirdMarginDate) {\n return true;\n }\n\n const secondMarginDate = dayjs(data.secondMarginDate);\n const thirdMarginDate = dayjs(data.thirdMarginDate);\n\n return secondMarginDate.isBefore(thirdMarginDate);\n },\n {\n path: ['thirdMarginDate'],\n message: i18n.t('second-margin-before third-margin'),\n }\n )\n .refine(\n (data) => {\n if (!data.startDate || !data.endDate) {\n return true;\n }\n\n const startDate = dayjs(data.startDate);\n const endDate = dayjs(data.endDate);\n\n return startDate.isBefore(endDate);\n },\n {\n path: ['startDate'],\n message: i18n.t('exhibition-start-date-error'),\n }\n )\n .refine(\n (data) => {\n if (!data.orderCreationLastDate) {\n return true;\n }\n\n const startDate = dayjs(data.startDate);\n const endDate = dayjs(data.endDate);\n const orderCreationLastDate = dayjs(data.orderCreationLastDate);\n\n // Validate if orderCreationLastDate is after endDate\n if (orderCreationLastDate.isAfter(endDate)) {\n return false;\n }\n\n // Validate if orderCreationLastDate is before startDate\n if (orderCreationLastDate.isBefore(startDate)) {\n return false;\n }\n\n return true;\n },\n {\n path: ['orderCreationLastDate'],\n message: i18n.t('order-creation-last-date-error'),\n }\n )\n .transform((data) => ({\n ...data,\n startDate: new Date(data.startDate),\n endDate: new Date(data.endDate),\n firstMarginDate: new Date(data.firstMarginDate),\n secondMarginDate: new Date(data.secondMarginDate),\n thirdMarginDate: new Date(data.thirdMarginDate),\n orderCreationLastDate: data.orderCreationLastDate\n ? new Date(data.orderCreationLastDate)\n : null,\n }));\n\nexport type FormValues = v.infer<typeof ValidationSchema>;\n","import { FieldValues, useForm, FormProvider } from 'react-hook-form';\nimport {\n ButtonGroup,\n FormControl,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport Input from '@/components/Fields/Input';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'i18next';\nimport fetchApi from '@/utils/fetchAPI';\nimport { EDIT_MEMBERS } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { toast } from 'react-toastify';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n openConfirm: boolean;\n closeModal: () => void;\n refresh: () => void;\n editData: any;\n}\n\nexport const EditMemberForm = ({\n openConfirm,\n closeModal,\n refresh,\n editData,\n}: AddBuildingTypeProductProps) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const methods = useForm({\n mode: 'onBlur',\n });\n\n useEffect(() => {\n Object.keys(editData).forEach((field) => {\n methods.setValue(field, editData[field]);\n });\n }, [editData]);\n\n const submitHandler = async (values: FieldValues) => {\n const formData = {\n name: values?.name,\n };\n\n try {\n setIsSubmitting(true);\n await fetchApi(EDIT_MEMBERS(values?.id), {\n method: FetchMethods.Put,\n data: formData,\n });\n\n closeModal();\n refresh();\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal isOpen={openConfirm} onClose={closeModal} size=\"xl\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('edit-company')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input\n label={useNameTranslate('username')}\n maxWidth=\"100%\"\n defaultValue={editData?.['name']}\n name=\"name\"\n isRequired\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(submitHandler)}\n disabled={isSubmitting}\n >\n {t('save')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport { Row } from 'react-table';\nimport { Flex } from '@chakra-ui/react';\nimport { DeleteIcon, EditIcon } from '@chakra-ui/icons';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport i18n from '@/i18n';\nimport { toast } from 'react-toastify';\nimport { useRouter } from '@tanstack/react-router';\nimport { useSaveEmployee } from '@/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/hooks/use-save-employee';\n\nexport const UsersTableActions = (props: {\n row: Row<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>;\n}) => {\n const { row } = props;\n const router = useRouter();\n const { openForm } = useSaveEmployee();\n const confirmRemoveUserFromExhibition = () => {\n ModalFactory.confirm({\n Component: () => <>{i18n.t('remove-employee')}</>,\n onOk: async () => {\n if (row.original.employeeId) {\n try {\n await typedAxios.exhibitor.deleteExhibitorsEmployees({\n employeeId: row.original.employeeId,\n });\n\n router.invalidate();\n\n ModalFactory.close();\n\n toast.success(i18n.t('employee-removed'));\n } catch {\n toast.error(i18n.t('error-occurred'));\n }\n }\n },\n });\n };\n\n return (\n <Flex\n flexDir=\"row\"\n gap=\"10px\"\n alignItems=\"center\"\n justifyContent=\"flex-end\"\n >\n <EditIcon onClick={() => openForm(row.original)} />\n <DeleteIcon onClick={confirmRemoveUserFromExhibition} />\n </Flex>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useEffect } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { Stack } from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { useTranslation } from 'react-i18next';\nimport { type ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport {\n EmployeeFormValues,\n EmployeeFormSchema,\n} from '@/pages/AdminPanel/PersonalAccounts/UsersTab/types';\n\nexport const AddNewEmployeeForm = (props: {\n model?: ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto;\n}) => {\n const { model } = props;\n const { t } = useTranslation();\n const instance = useForm<EmployeeFormValues>({\n resolver: zodResolver(EmployeeFormSchema),\n mode: 'onChange',\n });\n\n useEffect(() => {\n ModalFactory.updateContext(instance);\n }, [instance]);\n\n useEffect(() => {\n if (model && model.email && model.name) {\n instance.reset({\n id: model.employeeId,\n email: model.email,\n name: model.name,\n phoneNumber: model.phoneNumber,\n });\n } else {\n instance.reset({\n name: '',\n });\n }\n }, [model]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <Input<EmployeeFormValues>\n name=\"email\"\n placeholder={t('employee-email')}\n maxWidth=\"unset\"\n />\n <Input<EmployeeFormValues>\n name=\"name\"\n label={t('employee-name')}\n maxWidth=\"unset\"\n />\n <Input<EmployeeFormValues>\n name=\"phoneNumber\"\n type=\"tel\"\n label={t('phone')}\n maxWidth=\"unset\"\n />\n </Stack>\n </FormProvider>\n );\n};\n","import { UsersTableActions } from './Actions';\nimport { Column } from 'react-table';\nimport { ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport { viewExhibitorRoute } from '@/features/Routing/protected/member-directory';\nimport { Table } from '@/components/Table/Table';\nimport { Card } from '@/components/Card/Card';\nimport { Button, Flex } from '@chakra-ui/react';\nimport i18n from '@/i18n';\nimport { useSaveEmployee } from '@/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/hooks/use-save-employee';\nimport dayjs from 'dayjs';\n\nconst columns = [\n {\n Header: i18n.t('employee-name'),\n accessor: 'name',\n },\n {\n Header: 'Email',\n accessor: 'email',\n },\n {\n Header: i18n.t('phone-number'),\n accessor: 'phoneNumber',\n },\n {\n Header: i18n.t('creation-date'),\n accessor: 'createdDate',\n Cell: ({ value }) => {\n if (value && dayjs(value).isValid()) {\n return <>{dayjs(value).format('DD.MM.YYYY')}</>;\n }\n\n return <>-</>;\n },\n },\n {\n Header: i18n.t('last-visit-date'),\n accessor: 'lastVisitDate',\n Cell: ({ value }) => {\n console.log(dayjs(value).isValid(), value);\n if (value && dayjs(value).isValid()) {\n return <>{dayjs(value).format('DD.MM.YYYY')}</>;\n }\n\n return <>-</>;\n },\n },\n {\n id: 'actions',\n width: 90,\n Cell: ({ row }) => {\n return <UsersTableActions row={row} />;\n },\n },\n] satisfies Array<\n Column<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>\n>;\n\nexport const ManageExhibitorUsers = () => {\n const { exhibitor } = viewExhibitorRoute.useLoaderData();\n const { openForm } = useSaveEmployee();\n\n return (\n <Flex direction=\"column\" gap={4}>\n <Button ml=\"auto\" onClick={() => openForm()}>\n + {i18n.t('add-employee')}\n </Button>\n <Card>\n <Table columns={columns} data={exhibitor.exhibitorEmployees || []} />\n </Card>\n </Flex>\n );\n};\n","import { ModalFactory } from '@/components/Modal/api';\nimport i18n from '@/i18n';\nimport { AddNewEmployeeForm } from '@/pages/AdminPanel/MembersDirectory/ManageExhibitorUsers/AddNewEmployeeForm';\nimport { UseFormReturn } from 'react-hook-form';\nimport { EmployeeFormValues } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/types';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport { ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport { useRouter } from '@tanstack/react-router';\nimport { viewExhibitorRoute } from '@/features/Routing/protected/member-directory';\n\nexport const useSaveEmployee = () => {\n const router = useRouter();\n const { exhibitorId } = viewExhibitorRoute.useParams();\n\n const openForm = (\n model?: ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto\n ) => {\n ModalFactory.show({\n title: model ? i18n.t('edit-employee') : i18n.t('add-employee'),\n Component: () => <AddNewEmployeeForm model={model} />,\n okLabel: i18n.t('save'),\n onOk: async (ctx: UseFormReturn<EmployeeFormValues>) => {\n const isValid = await ctx.trigger();\n\n if (!isValid) {\n return;\n }\n\n const values = ctx.getValues();\n\n try {\n if (model && model.employeeId) {\n await typedAxios.exhibitor.putExhibitorsEmployees({\n employeeId: model.employeeId,\n requestBody: values,\n });\n } else {\n await typedAxios.exhibitor.postExhibitorsEmployees({\n exhibitorId: +exhibitorId,\n requestBody: values,\n });\n }\n\n router.invalidate();\n\n ModalFactory.close();\n } catch {\n toast.error(i18n.t('error-occurred'));\n }\n },\n });\n };\n\n return { openForm };\n};\n","import React, { useState } from 'react';\nimport { Table } from '@/components/Table/Table';\nimport { useTranslation } from 'react-i18next';\nimport { Card } from '@/components/Card/Card';\nimport { EditIcon } from '@chakra-ui/icons';\nimport { Flex } from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { Column, Row } from 'react-table';\nimport { MEMBERS } from '@/constants/endpoints';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport Pagination from '@/components/Table/Pagination';\nimport { EditMemberForm } from '@/pages/AdminPanel/MembersDirectory/EditMemberForm';\nimport { FieldValues } from 'react-hook-form';\nimport dayjs from 'dayjs';\nimport { useTableLoader } from '@/components/Table/useTableLoader';\nimport { UsersIcon } from '@/components/Icons/Users';\nimport { type ITEPortal_Domain_Dto_CatalogExhibitorSummary } from '@/api';\nimport { Link } from '@tanstack/react-router';\n\nconst OptionWrapper = styled(Flex)`\n flex-direction: row;\n align-items: center;\n gap: 20px;\n`;\n\ninterface ExhibitionOptionsType {\n row: Row<ITEPortal_Domain_Dto_CatalogExhibitorSummary>;\n}\n\nconst defaultValues = {\n id: null,\n name: null,\n email: null,\n};\n\nexport const MembersDirectory = (): JSX.Element => {\n const { t } = useTranslation();\n const [openConfirmEditMember, setOpenConfirmEditMember] = useState(false);\n const [editData, setEditData] = useState<FieldValues>(defaultValues);\n\n const {\n data,\n isLoading,\n onPageSizeChange,\n onPageChange,\n paginationInfo,\n refresh,\n } = useTableLoader<ITEPortal_Domain_Dto_CatalogExhibitorSummary>({\n resource: MEMBERS,\n });\n\n const closeModalEditMember = () => setOpenConfirmEditMember(false);\n\n const ExhibitionOptions = ({ row }: ExhibitionOptionsType) => {\n return (\n <OptionWrapper>\n <Link to={`/admin/member-directory/${row.original.id}`}>\n <UsersIcon />\n </Link>\n\n <EditIcon onClick={() => editUser(row)} />\n </OptionWrapper>\n );\n };\n\n const editUser = (values: FieldValues) => {\n const editValues = values?.values;\n\n setEditData(editValues);\n setOpenConfirmEditMember(!openConfirmEditMember);\n };\n\n const exhibitionColumns = React.useMemo<\n Array<Column<ITEPortal_Domain_Dto_CatalogExhibitorSummary>>\n >(\n () => [\n {\n Header: `ID`,\n accessor: 'id',\n width: '10%',\n },\n {\n Header: `${t('participant-name')}`,\n accessor: 'name',\n width: '30%',\n },\n {\n Header: `${t('create-date')}`,\n accessor: 'createdDate',\n Cell: ({ row: { values } }) => (\n <>\n {values?.createdDate\n ? dayjs(values?.createdDate).format('DD.MM.YYYY')\n : ''}\n </>\n ),\n },\n {\n Header: `${t('last-modified-date')}`,\n accessor: 'lastModifiedDate',\n Cell: ({ row: { values } }) => (\n <>\n {values?.lastModifiedDate\n ? dayjs(values?.lastModifiedDate).format('DD.MM.YYYY')\n : ''}\n </>\n ),\n },\n {\n Header: `${t('phone-number')}`,\n accessor: 'phoneNumber',\n },\n {\n Header: '',\n id: 'options',\n width: '3%',\n Cell: ({ row }) => <ExhibitionOptions row={row} />,\n },\n ],\n []\n );\n\n return (\n <LoaderWrapper loading={isLoading}>\n <Card>\n <Table columns={exhibitionColumns} data={data} />\n <EditMemberForm\n openConfirm={openConfirmEditMember}\n closeModal={closeModalEditMember}\n refresh={refresh}\n editData={editData}\n />\n <Pagination\n setPageNumber={onPageChange}\n setPageSize={onPageSizeChange}\n paginationInfo={paginationInfo}\n />\n </Card>\n </LoaderWrapper>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { Button, ButtonGroup, Stack, useBoolean } from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { useNavigate, useParams } from '@tanstack/react-router';\nimport {\n addExhibitionAccountRoute,\n editExhibitionAccountRoute,\n} from '@/features/Routing/protected/admin-exhibitions';\nimport {\n CompanyFormSchemaType,\n NewCompanyFormSchema,\n UpdateCompanyFormSchema,\n} from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/types';\nimport {\n FormControlWrapper,\n ParticipantCheckContainer,\n ParticipantCheckWrapper,\n} from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/styled';\nimport { useSearchCompanyByEmployee } from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/hooks/use-search-company-by-employee';\nimport { useCompanySave } from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/hooks/use-company-save';\nimport { useTranslation } from 'react-i18next';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useSuspenseQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { Checkbox } from '@/components/Fields/Checkbox';\nimport { isNil } from '@/utils/is-nil';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { OptionType } from '@/model/common';\nimport { ITEPortal_Domain_Dto_CatalogExhibitorSummary } from '@/api';\n\ninterface MainInfoProps {\n type: string;\n}\n\nexport const MainInfo = ({ type }: MainInfoProps): JSX.Element => {\n const editForm = type === 'edit';\n const { t } = useTranslation();\n const { exhibitionId, accountId } = useParams({ strict: false });\n const formInstance = useForm<CompanyFormSchemaType>({\n resolver: zodResolver(\n editForm ? UpdateCompanyFormSchema : NewCompanyFormSchema\n ),\n });\n const isAgentSelectedForExhibitor = formInstance.watch('agent');\n const navigate = useNavigate();\n const [selectedCompanyOption, setSelectedCompany] =\n useState<OptionType<ITEPortal_Domain_Dto_CatalogExhibitorSummary> | null>(\n null\n );\n const { technicalManagers, offices, companies, agents, currencyOptions } = (\n editForm ? editExhibitionAccountRoute : addExhibitionAccountRoute\n ).useLoaderData();\n\n const { data: accountData } = useSuspenseQuery(\n QueryOptions.exhibitorQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: accountId ? +accountId : undefined,\n })\n );\n\n const [isAgentCreating, isAgentCreatingApi] = useBoolean(\n isNil(accountData.isAgent) ? false : accountData.isAgent\n );\n\n useEffect(\n function watchFormToToggleUXFlags() {\n formInstance.watch((value, { name }) => {\n if (name === 'isAgent') {\n isAgentCreatingApi[value.isAgent ? 'on' : 'off']();\n }\n\n if (name === 'companyName') {\n setSelectedCompany(\n // @ts-expect-error update types\n value.companyName || null\n );\n }\n });\n },\n [formInstance]\n );\n\n const { findCompanyByEmployee, isCompanyFoundByEmployee } =\n useSearchCompanyByEmployee(formInstance);\n const { saveCompany } = useCompanySave(formInstance);\n\n useEffect(\n function setValuesFromLoadedModel() {\n formInstance.reset({\n id: accountData.id,\n phoneNumber: accountData.phoneNumber || undefined,\n // @ts-expect-error desc\n sellingOfficeId: offices.find(\n (officeOption) => officeOption?.value === accountData.sellingOfficeId\n ),\n // @ts-expect-error desc\n technicalManagerEmail: technicalManagers.find(\n (managerOption) =>\n managerOption?.value === accountData.technicalManagerEmail\n ),\n currencyId: currencyOptions.find(\n (currencyOption) => currencyOption?.value === accountData.currencyId\n ),\n isAgent: accountData.isAgent,\n agent: accountData.agent\n ? {\n value: accountData.agent.id,\n label: accountData.agent.name,\n // @ts-expect-error update types\n meta: accountData,\n }\n : undefined,\n });\n },\n [accountData]\n );\n\n const toAccounts = () => {\n navigate({\n to: '/admin/exhibitions/$exhibitionId/view/personal-accounts',\n replace: true,\n params: {\n exhibitionId,\n },\n });\n };\n\n useEffect(\n function toggleFormIsAgentCheckboxBasedOnSelectedCompany() {\n if (editForm) {\n return;\n }\n\n if (selectedCompanyOption?.meta) {\n formInstance.setValue('isAgent', selectedCompanyOption.meta.isAgent);\n } else if (!selectedCompanyOption) {\n formInstance.setValue('isAgent', false);\n }\n },\n [selectedCompanyOption]\n );\n\n const isAgentCheckboxDisabled = useMemo(() => {\n if (editForm) {\n return true;\n }\n\n if (isCompanyFoundByEmployee) {\n return true;\n }\n\n if (selectedCompanyOption) {\n return !selectedCompanyOption.__isNew__;\n }\n\n if (isAgentSelectedForExhibitor && isAgentSelectedForExhibitor.value) {\n return true;\n }\n\n return false;\n }, [\n editForm,\n isCompanyFoundByEmployee,\n selectedCompanyOption,\n isAgentSelectedForExhibitor,\n ]);\n\n const filteredCompanies = useMemo(() => {\n if (isAgentCreating) {\n return companies.filter((opt) => opt.meta?.isAgent);\n }\n\n if (isAgentSelectedForExhibitor) {\n return companies.filter((opt) => !opt.meta?.isAgent);\n }\n\n return companies;\n }, [companies, isAgentCreating, isAgentSelectedForExhibitor]);\n\n return (\n <FormProvider {...formInstance}>\n <form onSubmit={formInstance.handleSubmit(saveCompany)}>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n {!editForm && (\n <ParticipantCheckWrapper isRequired>\n <FormLabel>{t('participant-email')}</FormLabel>\n <ParticipantCheckContainer>\n <Input<CompanyFormSchemaType>\n maxWidth=\"100%\"\n name=\"employeeEmail\"\n disabled={editForm}\n isRequired\n >\n <AsyncButton\n colorScheme=\"red\"\n type=\"button\"\n onClick={findCompanyByEmployee}\n disabled={editForm}\n minW=\"fit-content\"\n >\n {t('find-company-by-employee')}\n </AsyncButton>\n </Input>\n </ParticipantCheckContainer>\n </ParticipantCheckWrapper>\n )}\n\n {!editForm && (\n <Input<CompanyFormSchemaType>\n label={t('employee-name')}\n maxWidth=\"unset\"\n name=\"employeeName\"\n isRequired\n />\n )}\n\n {editForm ? (\n <>\n <Input<CompanyFormSchemaType>\n label={t('company')}\n name=\"companyName\"\n maxWidth=\"unset\"\n value={accountData.name || undefined}\n disabled\n />\n </>\n ) : (\n <SelectComponent<CompanyFormSchemaType>\n name=\"companyName\"\n allowCreate\n isRequired\n disabled={isCompanyFoundByEmployee}\n label={t('company')}\n options={filteredCompanies}\n />\n )}\n <Checkbox<CompanyFormSchemaType>\n name=\"isAgent\"\n isDisabled={isAgentCheckboxDisabled}\n >\n {t('agent')}\n </Checkbox>\n <SelectComponent<CompanyFormSchemaType>\n label={t('sales-office')}\n options={offices}\n name=\"sellingOfficeId\"\n />\n <SelectComponent<CompanyFormSchemaType>\n label={t('technical-managers')}\n options={technicalManagers}\n isRequired\n name=\"technicalManagerEmail\"\n />\n <SelectComponent<CompanyFormSchemaType>\n label={t('currency')}\n options={currencyOptions}\n isRequired\n name=\"currencyId\"\n />\n <Input<CompanyFormSchemaType>\n label={t('phone')}\n maxWidth=\"unset\"\n name=\"phoneNumber\"\n />\n <SelectComponent<CompanyFormSchemaType>\n label={t('choose-agent')}\n options={agents}\n disabled={isAgentCreating}\n name=\"agent\"\n />\n </FormControlWrapper>\n <ButtonGroup gap=\"1\">\n <Button\n colorScheme=\"red\"\n type=\"submit\"\n isDisabled={formInstance.formState.isSubmitting}\n isLoading={formInstance.formState.isSubmitting}\n >\n {t('save')}\n </Button>\n <Button\n colorScheme=\"secondary\"\n type=\"reset\"\n onClick={toAccounts}\n isDisabled={formInstance.formState.isSubmitting}\n >\n {t('cancel')}\n </Button>\n </ButtonGroup>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { CompanyFormSchemaType } from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/types';\nimport { useFormErrorsHandler } from '@/hooks/useFormErrorsHandler';\nimport { useNavigate, useParams } from '@tanstack/react-router';\nimport { UseFormReturn } from 'react-hook-form';\nimport { typedAxios } from '@/api/typed-axios';\nimport { ApiError, ITEPortal_Domain_Dto_CreateExhibitorDto } from '@/api';\nimport { isNil } from '@/utils/is-nil';\nimport { toast } from 'react-toastify';\nimport i18n from '@/i18n';\nimport { queryClient } from '@/features/query';\nimport { QueryOptions } from '@/features/query/query-options';\n\nexport const useCompanySave = (\n formInstance: UseFormReturn<CompanyFormSchemaType>\n) => {\n const { processErrorsArray } = useFormErrorsHandler(formInstance);\n const { exhibitionId } = useParams({ strict: false });\n const navigate = useNavigate();\n\n const saveCompany = async (values: CompanyFormSchemaType) => {\n const id = values.id;\n const isEdit = !isNil(id);\n\n try {\n if (isEdit && !isNil(id)) {\n await typedAxios.exhibitor.putExhibitors({\n id: id,\n requestBody: {\n phoneNumber: values.phoneNumber,\n sellingOfficeId: +values.sellingOfficeId.value,\n agentId: values.agent?.value || null,\n exhibitionId: +exhibitionId,\n technicalManagerEmail: values.technicalManagerEmail?.value,\n currencyId: +values.currencyId.value,\n },\n });\n\n await queryClient.refetchQueries({\n queryKey: QueryOptions.exhibitorQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: id,\n }).queryKey,\n });\n } else {\n const body: ITEPortal_Domain_Dto_CreateExhibitorDto = {\n exhibitionId: +exhibitionId,\n currencyId: +values.currencyId.value,\n sellingOfficeId: +values.sellingOfficeId.value,\n technicalManagerEmail: values.technicalManagerEmail.value,\n exhibitorEmployees: [\n {\n exhibitionId: +exhibitionId,\n name: values.employeeName,\n email: values.employeeEmail,\n },\n ],\n phoneNumber: values.phoneNumber,\n isAgent: !isNil(values.isAgent) ? values.isAgent : undefined,\n agentId: values.agent?.value || null,\n };\n\n if (values.companyName.__isNew__) {\n body.name = values.companyName.value;\n } else {\n body.exhibitorId = +values.companyName.value;\n body.name = values.companyName.label;\n }\n\n const savedId = await typedAxios.exhibitor.postExhibitors({\n requestBody: body,\n });\n\n navigate({\n to: `/admin/exhibitions/${exhibitionId}/view/personal-accounts/${savedId}/edit`,\n replace: true,\n });\n }\n\n toast.success(i18n.t('saved'));\n } catch (error: any) {\n processErrorsArray(error);\n console.dir(error);\n\n if (error instanceof ApiError && typeof error.body === 'string') {\n toast.error(error.body);\n }\n }\n };\n\n return {\n saveCompany,\n };\n};\n","import { useCallback, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport { UseFormReturn } from 'react-hook-form';\nimport { CompanyFormSchemaType } from '@/pages/AdminPanel/PersonalAccounts/MainInfoTab/types';\nimport { useBoolean } from '@chakra-ui/react';\nimport { typedAxios } from '@/api/typed-axios';\nimport { ITEPortal_Domain_Dto_ExhibitorDto } from '@/api';\n\nexport const useSearchCompanyByEmployee = (\n formInstance: UseFormReturn<CompanyFormSchemaType>\n) => {\n const [foundCompany, setFoundCompany] =\n useState<ITEPortal_Domain_Dto_ExhibitorDto | null>(null);\n const [\n isEmployeeEmailFieldVisible,\n { toggle: toggleIsEmployeeEmailFieldVisible },\n ] = useBoolean(false);\n\n const [\n isCompanySelectionAllowed,\n { toggle: toggleIsCompanySelectionAllowed },\n ] = useBoolean(false);\n\n const [\n isCompanyFoundByEmployee,\n { on: markIsCompanyFoundByEmployee, off: markCompanyNotFoundByEmployee },\n ] = useBoolean(false);\n\n const findCompanyByEmployee = useCallback(async () => {\n const isValid = await formInstance.trigger('employeeEmail');\n\n if (!isValid) {\n return;\n }\n\n try {\n const employeeEmail = formInstance.getValues('employeeEmail');\n const company = await typedAxios.exhibitor.getExhibitors1({\n email: employeeEmail,\n });\n\n if (!company || !company.exhibitorEmployees) {\n markCompanyNotFoundByEmployee();\n setFoundCompany(null);\n\n return null;\n }\n\n setFoundCompany(company);\n\n const existingEmployee = company.exhibitorEmployees.find(\n (e) => e.email === employeeEmail\n );\n\n if (!existingEmployee) {\n return;\n }\n\n if (existingEmployee.name) {\n formInstance.setValue('employeeName', existingEmployee.name);\n }\n\n if (company.id) {\n formInstance.setValue('companyName', {\n value: company.id + '',\n label: company.name || company.id + '',\n // @ts-expect-error update types\n meta: company,\n __isNew__: false,\n });\n }\n\n if (company.phoneNumber) {\n formInstance.setValue('phoneNumber', company.phoneNumber);\n }\n\n toggleIsCompanySelectionAllowed();\n markIsCompanyFoundByEmployee();\n } catch {\n toast.error('Участник не найден');\n } finally {\n toggleIsEmployeeEmailFieldVisible();\n }\n }, []);\n\n return {\n isCompanyFoundByEmployee,\n isCompanySelectionAllowed,\n isEmployeeEmailFieldVisible,\n foundCompany,\n findCompanyByEmployee,\n };\n};\n","import styled from 'styled-components';\nimport { Box, FormControl } from '@chakra-ui/react';\n\nexport const FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n\nexport const ParticipantCheckContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 10px;\n width: 100%;\n`;\n\nexport const ParticipantCheckWrapper = styled(FormControl)`\n min-width: 100%;\n`;\n","import * as v from 'zod';\nimport { z } from 'zod';\nimport i18n from '@/i18n';\n\nconst OptionSchema = v.object({\n value: v.coerce.string(),\n label: v.string(),\n __isNew__: v.boolean().optional(),\n});\n\nexport const NewCompanyFormSchema = z.object({\n id: v.number().optional(),\n companyName: OptionSchema,\n technicalManagerEmail: OptionSchema,\n sellingOfficeId: OptionSchema,\n currencyId: v.object({\n value: v.coerce.number(),\n label: v.string().nullable(),\n }),\n phoneNumber: v.string(),\n employeeName: v.string(),\n employeeEmail: v.string().email({\n message: i18n.t('invalid-email'),\n }),\n isAgent: v.boolean().optional().nullable(),\n agent: v\n .object({\n value: v.coerce.number(),\n label: v.string().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport const UpdateCompanyFormSchema = z.object({\n id: v.number().optional(),\n sellingOfficeId: OptionSchema,\n technicalManagerEmail: OptionSchema,\n currencyId: v.object({\n value: v.coerce.number(),\n label: v.string().nullable(),\n }),\n phoneNumber: v.string(),\n agent: v\n .object({\n value: v.coerce.number(),\n label: v.string().nullable(),\n })\n .optional()\n .nullable(),\n});\n\nexport type CompanyFormSchemaType = v.infer<typeof NewCompanyFormSchema>;\n","import { Stack } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport React, { useEffect, useState } from 'react';\nimport { IdType, OptionType } from '@/model/common';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { typedAxios } from '@/api/typed-axios';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\n\nconst OptionSchema = vali.object(\n {\n value: vali.coerce.number(),\n label: vali.string(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst ValidationSchema = vali.object({\n technicalManager: OptionSchema,\n});\n\nexport type ValidationSchemaType = vali.infer<typeof ValidationSchema>;\n\nexport const EditManagerModal = ({\n exhibitionId,\n}: {\n exhibitionId: IdType;\n}) => {\n const { t } = useTranslation();\n const [technicalManagers, setTechnicalManagers] = useState<OptionType[]>();\n const instance = useForm<ValidationSchemaType>({\n resolver: zodResolver(ValidationSchema),\n mode: 'onChange',\n });\n\n useEffect(() => {\n const fetchTechnicalManagers = async () => {\n const technicalManagersData = await typedAxios.user\n .getUsersTechnicalManagers1({\n exhibitionId: +exhibitionId,\n })\n .catch(() => []);\n\n const technicalManagersOptions = technicalManagersData.map((manager) => {\n return {\n label: manager.email || manager.name,\n value: manager.id,\n meta: { contactId: manager.contactId },\n };\n });\n\n setTechnicalManagers(technicalManagersOptions);\n };\n\n fetchTechnicalManagers();\n ModalFactory.updateContext(instance);\n }, [instance]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <SelectComponent<ValidationSchemaType>\n label={t('technical-manager')}\n options={technicalManagers}\n isRequired\n name=\"technicalManager\"\n />\n </Stack>\n </FormProvider>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport {\n ButtonGroup,\n Card,\n CardBody,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Tab,\n TabList,\n TabPanel,\n TabPanels,\n Tabs,\n Flex,\n} from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { MainInfo } from '@/pages/AdminPanel/PersonalAccounts/MainInfo';\nimport { StandsTab } from '@/pages/AdminPanel/PersonalAccounts/StandsTab';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useState } from 'react';\nimport {\n addExhibitionAccountRoute,\n editExhibitionAccountRoute,\n EditPersonalAccountsPageSearchSchemaType,\n} from '../../../features/Routing/protected/admin-exhibitions';\nimport { useNavigate } from '@tanstack/react-router';\nimport { UsersTab } from '@/pages/AdminPanel/PersonalAccounts/UsersTab';\nimport {\n ExhibitionBox,\n ExhibitionTitle,\n} from '@/components/Sidebar/OrderList/OrderList.styled';\nimport { Nullable } from 'vitest';\nimport { ProductsTab } from '@/pages/AdminPanel/PersonalAccounts/ProductsTab/ProductsTab';\nimport { SubexponentsTab } from '@/pages/AdminPanel/PersonalAccounts/SubexponentsTab/SubexponentsTab';\n\nconst tabStyles = {\n borderColor: 'blackAlpha.200',\n borderBottomColor: '#F7FAFC',\n color: 'red',\n};\n\nconst TabWrapper = styled(TabPanel)`\n && {\n padding-top: 50px;\n padding-left: 0;\n }\n`;\n\ninterface NewAccountProps {\n type: 'edit' | 'add';\n}\n\ninterface ShowExhibitionInfoProps {\n label?: Nullable<string>;\n}\n\nconst TabsMap: Record<EditPersonalAccountsPageSearchSchemaType['tab'], number> =\n {\n main: 0,\n stands: 1,\n users: 2,\n products: 3,\n subexponents: 4,\n };\n\nconst ExhibitionInfoWrapper = styled(Flex)`\n flex-direction: row;\n justify-content: flex-end;\n position: absolute;\n right: 20px;\n top: 10px;\n`;\n\nconst ShowExhibitionInfo = ({ label }: ShowExhibitionInfoProps) => {\n if (!label) {\n return null;\n }\n\n return (\n <ExhibitionInfoWrapper>\n <ExhibitionBox>\n <ExhibitionTitle>{label}</ExhibitionTitle>\n </ExhibitionBox>\n </ExhibitionInfoWrapper>\n );\n};\n\nexport const NewAccount = ({ type }: NewAccountProps): JSX.Element => {\n const [openConfirm, setOpenConfirm] = useState(false);\n const navigate = useNavigate();\n const isEdit = type === 'edit';\n const { t } = useTranslation();\n\n const { tab } = (\n isEdit ? editExhibitionAccountRoute : addExhibitionAccountRoute\n ).useSearch();\n\n const { data } = (\n isEdit ? editExhibitionAccountRoute : addExhibitionAccountRoute\n ).useLoaderData();\n\n const selectedTabFromUrl = isEdit ? TabsMap[tab] || 0 : 0;\n\n const WarningModal = () => {\n const closeModal = () => setOpenConfirm(false);\n\n return (\n <Modal isOpen={openConfirm} onClose={closeModal} size=\"lg\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('warning')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>{t('new-account-modal-text')}</ModalBody>\n <ModalFooter onClick={closeModal} justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n };\n\n const handleTabsChange = (index: number) => {\n if (isEdit) {\n navigate({\n to: './',\n search: {\n tab: Object.keys(TabsMap)[index],\n },\n });\n }\n };\n\n return (\n <Card>\n <CardBody>\n <ShowExhibitionInfo label={data?.name} />\n <Tabs\n isManual\n isLazy\n variant=\"enclosed\"\n index={selectedTabFromUrl}\n onChange={handleTabsChange}\n >\n <TabList>\n <Tab _selected={tabStyles}>{t('main-info')}</Tab>\n <Tab isDisabled={!isEdit} _selected={tabStyles}>\n {t('stands-tab')}\n </Tab>\n <Tab isDisabled={!isEdit} _selected={tabStyles}>\n {t('employees')}\n </Tab>\n <Tab isDisabled={!isEdit} _selected={tabStyles}>\n {t('products')}\n </Tab>\n <Tab isDisabled={!isEdit} _selected={tabStyles}>\n {t('subexponents')}\n </Tab>\n </TabList>\n <TabPanels>\n <TabWrapper maxWidth={600}>\n <MainInfo type={type} />\n </TabWrapper>\n <TabWrapper>{isEdit && <StandsTab />}</TabWrapper>\n <TabWrapper>{isEdit && <UsersTab />}</TabWrapper>\n <TabWrapper>{isEdit && <ProductsTab />}</TabWrapper>\n <TabWrapper>{isEdit && <SubexponentsTab />}</TabWrapper>\n </TabPanels>\n </Tabs>\n <WarningModal />\n </CardBody>\n </Card>\n );\n};\n","import React, { useState } from 'react';\nimport { Table } from '@/components/Table/Table';\nimport { useTranslation } from 'react-i18next';\nimport { Card } from '@/components/Card/Card';\nimport { DeleteIcon, EditIcon } from '@chakra-ui/icons';\nimport {\n Box,\n ButtonGroup,\n Flex,\n FormControl,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Text,\n Button as ChakraButton,\n} from '@chakra-ui/react';\nimport styled from 'styled-components';\nimport { useNavigate, useParams, Link } from '@tanstack/react-router';\nimport { Column, Row } from 'react-table';\nimport fetchApi from '@/utils/fetchAPI';\nimport {\n DOWNLOAD_EXHIBITOR_CSV,\n EXHIBITORS_FROM_EXHIBITOR,\n} from '@/constants/endpoints';\nimport { Loader } from '@/components/Loader/Loader';\nimport { FetchMethods } from '@/utils/constants';\nimport {\n Button as OrderButton,\n Button,\n} from '@/components/Buttons/Button/Button';\nimport { CiImport } from 'react-icons/ci';\nimport { ToExhibition } from '@/layout/AdminAdditionalPanel/ToExhibition';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { FieldValues, FormProvider, useForm } from 'react-hook-form';\nimport { IdType } from '@/model/common';\nimport { toast } from 'react-toastify';\nimport { ModalFactory } from '../../../components/Modal/api';\nimport { typedAxios } from '../../../api/typed-axios';\nimport { useTableLoader } from '../../../components/Table/useTableLoader';\nimport {\n ITEPortal_Domain_Dto_AdminExhibitorSummary,\n ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto,\n} from '@/api';\nimport { OrdersIcon } from '@/components/Icons/Orders';\nimport { DateUtils } from '@/utils/date-utils';\nimport { ConfirmModal } from '@/pages/ConfirmModal';\nimport { viewExhibitionAccountsRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { useEditTechnicalManagers } from '@/pages/AdminPanel/PersonalAccounts/hooks/use-edit-technical-managers';\n\nconst OptionWrapper = styled(Flex)`\n flex-direction: row;\n justify-content: flex-end;\n`;\n\nconst LoaderWrapper = styled(Flex)`\n justify-content: center;\n padding-top: 10%;\n`;\n\nconst ToolBarWrapper = styled(Box)`\n padding-bottom: 10px;\n display: flex;\n flex-direction: row;\n justify-content: end;\n gap: 20px;\n`;\n\nconst ButtonContentContainer = styled(Flex)`\n flex-direction: row;\n align-items: center;\n gap: 5px;\n`;\n\nconst TransparentButtonsTextContainer = styled(Text)`\n font-size: 16px;\n color: var(--chakra-colors-gray-600);\n`;\n\ntype Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary =\n ITEPortal_Domain_Dto_AdminExhibitorSummary & {\n lastVisitDate: ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto['lastVisitDate'];\n };\n\ninterface ExhibitionOptionsType {\n row: Row<Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary>;\n}\n\nexport const PersonalAccounts = (): JSX.Element => {\n const { t } = useTranslation();\n\n const { tab } = viewExhibitionAccountsRoute.useSearch();\n const exhibition = useExhibition();\n const { openEditTechnicalManagersModal } = useEditTechnicalManagers();\n const processedAccounts = tab === 'process';\n const navigate = useNavigate();\n const { exhibitionId } = useParams({ strict: false });\n const [loader, setLoader] = useState(false);\n const [showBulkAction, setShowBulkAction] = useState(false);\n const [selectedRows, setSelectedRows] = useState<\n Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary[]\n >([]);\n\n const {\n data: personalAccountsData,\n isLoading,\n refresh,\n } = useTableLoader<Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary>({\n ignorePagination: true,\n resource: `${EXHIBITORS_FROM_EXHIBITOR}?exhibitionId=${exhibitionId}`,\n additionalPrams: {\n hasTechnicalManager: !processedAccounts,\n },\n map: (data) => {\n return data.map((ac) => {\n if (ac.exhibitorEmployees && ac.exhibitorEmployees.length > 0) {\n ac.lastVisitDate = DateUtils.findLatestDate(\n ac.exhibitorEmployees.map((empl) => empl.lastVisitDate)\n );\n }\n\n return ac;\n });\n },\n });\n const [openConfirm, setOpenConfirm] = useState(false);\n const [showBitrixModal, setShowBitrixModal] = useState<boolean>(false);\n\n const methods = useForm({\n mode: 'onBlur',\n });\n\n const PersonalAccountsOptions = ({ row }: ExhibitionOptionsType) => {\n const rowValues = row.values;\n\n return (\n <OptionWrapper>\n <Link\n title=\"Placed orders\"\n to=\"/admin/exhibitions/$exhibitionId/view/placed-orders\"\n params={{ exhibitionId }}\n style={{ paddingRight: 20 }}\n search={{\n exhibitorId: rowValues.id,\n }}\n >\n <OrdersIcon />\n </Link>\n <Link\n to=\"/admin/exhibitions/$exhibitionId/view/personal-accounts/$accountId/edit\"\n params={{ accountId: rowValues.id, exhibitionId }}\n style={{ paddingRight: 10 }}\n >\n <EditIcon />\n </Link>\n <ChakraButton\n colorScheme=\"black\"\n variant=\"link\"\n onClick={() => showDeleteModal(rowValues?.id)}\n >\n <DeleteIcon />\n </ChakraButton>\n </OptionWrapper>\n );\n };\n\n const showDeleteModal = (id: IdType) => {\n ModalFactory.confirm({\n Component: () => <>{t('delete-exhibitor-message')}</>,\n onOk: async () => {\n try {\n await typedAxios.exhibitor.deleteExhibitionsExhibitors({\n exhibitionId: +exhibitionId,\n exhibitorId: +id,\n });\n\n toast.success(t('exhibitor-deleted'));\n\n ModalFactory.close();\n refresh();\n } catch {\n toast.error(t('unable-to-delete', { entity: t('exhibitor_') }));\n }\n },\n });\n };\n\n const PersonalAccountsToolbar = () => {\n return (\n <ToolBarWrapper>\n <Button colorScheme=\"transparent\" onClick={importCSV}>\n <ButtonContentContainer>\n <CiImport size=\"20px\" />\n <TransparentButtonsTextContainer>\n {t('importCSV')}\n </TransparentButtonsTextContainer>\n </ButtonContentContainer>\n </Button>\n <Button colorScheme=\"red\" onClick={addPersonalAccount}>\n {t('addPerson')}\n </Button>\n {exhibition?.eventEditionId && (\n <Button colorScheme=\"red\" onClick={() => setShowBitrixModal(true)}>\n + {t('bitrixImport')}\n </Button>\n )}\n {processedAccounts && (\n <Button\n colorScheme={showBulkAction ? 'secondary' : 'red'}\n onClick={() => setDistributeMode(!showBulkAction)}\n >\n {showBulkAction ? `X ${t('closeSelection')}` : t('choose')}\n </Button>\n )}\n {selectedRows?.length > 0 && (\n <Button\n colorScheme=\"red\"\n onClick={() =>\n openEditTechnicalManagersModal(\n selectedRows,\n refresh,\n setShowBulkAction\n )\n }\n >\n {t('edit')}\n </Button>\n )}\n </ToolBarWrapper>\n );\n };\n\n const importCSV = () => {\n setOpenConfirm(!openConfirm);\n };\n\n const closeModal = () => setOpenConfirm(false);\n\n const submitHandler = async (values: FieldValues) => {\n try {\n const { data } = await fetchApi(\n DOWNLOAD_EXHIBITOR_CSV(exhibitionId),\n {\n method: FetchMethods.Post,\n responseType: 'blob',\n data: { importFile: values?.['upload-csv'][0] },\n },\n { 'Content-Type': 'multipart/form-data' }\n );\n\n if (data) {\n const url = window.URL.createObjectURL(new Blob([data]));\n\n const link = document.createElement('a');\n\n link.href = url;\n link.setAttribute('download', 'ErrorRows.csv');\n document.body.appendChild(link);\n link.click();\n }\n } finally {\n refresh();\n }\n\n closeModal();\n };\n\n const ImportCSVModal = () => {\n return (\n <Modal isOpen={openConfirm} onClose={closeModal} size=\"lg\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('set-file')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...methods}>\n <form>\n <FormControl>\n <UploadFileDropzone\n label={useNameTranslate('upload-csv')}\n name=\"upload-csv\"\n accept={{ 'text/csv': ['.csv'] }}\n />\n </FormControl>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(submitHandler)}\n >\n {t('choose')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n };\n\n const personalAccountsColumns = React.useMemo<\n Array<Column<Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary>>\n >(\n () => [\n {\n accessor: 'id',\n show: false,\n },\n {\n Header: `${t('participant-name')}`,\n accessor: 'name',\n },\n {\n Header: `${t('sales-office')}`,\n accessor: 'sellingOffice',\n },\n {\n Header: `${t('last-visit-date')}`,\n accessor: 'lastVisitDate',\n },\n {\n Header: `${t('technical-manager')}`,\n accessor: 'technicalManagerEmail',\n },\n {\n Header: t('agent'),\n accessor: 'agent',\n Cell: ({ value }) => {\n if (value && value.name) {\n return <>{value.name}</>;\n }\n\n return <>-</>;\n },\n },\n {\n Header: '',\n id: 'options',\n width: '10%',\n Cell: ({ row }) => <PersonalAccountsOptions row={row} />,\n },\n ],\n [showBulkAction]\n );\n\n const addPersonalAccount = () => {\n navigate({\n to: '/admin/exhibitions/$exhibitionId/view/personal-accounts/add',\n params: {\n exhibitionId: exhibitionId,\n },\n });\n };\n\n const importPersonalAccountsFromBitrix = async () => {\n try {\n setLoader(true);\n\n const response = await typedAxios.bitrix.postBitrixExhibitionExhibitors({\n exhibitionId: +exhibitionId,\n });\n\n if (response) {\n const url = window.URL.createObjectURL(new Blob([response]));\n\n const link = document.createElement('a');\n\n link.href = url;\n link.setAttribute('download', 'ErrorRows.csv');\n document.body.appendChild(link);\n link.click();\n toast.error(t('error-rows-file'));\n } else {\n toast.success(t('personal-accounts-import-success'));\n }\n } catch {\n toast.error(t('error-occurred'));\n } finally {\n setLoader(false);\n refresh();\n }\n };\n\n const setDistributeMode = (value: boolean) => {\n setShowBulkAction(value);\n\n if (value) {\n setSelectedRows([]);\n }\n };\n\n const handleBulkAction = (\n rows: Extended_ITEPortal_Domain_Dto_AdminExhibitorSummary[]\n ) => {\n setSelectedRows(rows);\n };\n\n return (\n <>\n {isLoading || loader ? (\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n ) : (\n <>\n <ToExhibition />\n <PersonalAccountsToolbar />\n\n <Card>\n <Table\n columns={personalAccountsColumns}\n data={personalAccountsData}\n showBulkAction={showBulkAction}\n onBulkAction={handleBulkAction}\n />\n <ImportCSVModal />\n <ConfirmModal\n modalMessage={t('import-from-bitrix-message')}\n isOpen={showBitrixModal}\n closeModal={() => setShowBitrixModal(false)}\n confirm={importPersonalAccountsFromBitrix}\n />\n </Card>\n </>\n )}\n </>\n );\n};\n","import {\n SystemStyleObject,\n Tab,\n TabList,\n TabPanel,\n TabPanelProps,\n TabPanels,\n TabProps,\n Tabs,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport {\n ExhibitionAccountsTabs,\n viewExhibitionAccountsRoute,\n} from '@/features/Routing/protected/admin-exhibitions';\nimport { useNavigate } from '@tanstack/react-router';\nimport { PersonalAccounts } from '@/pages/AdminPanel/PersonalAccounts/PersonalAccounts';\n\nconst selectedTabStyles: SystemStyleObject = {\n background: 'blackAlpha.300',\n};\n\nconst tabStyles: TabProps = {\n background: 'blackAlpha.100',\n minW: '100px',\n};\n\nconst tabPanelsStyle: TabPanelProps = {\n width: '100%',\n};\n\nexport const PersonalAccountsTab = () => {\n const { t } = useTranslation();\n const { tab } = viewExhibitionAccountsRoute.useSearch();\n const indexFromUrl = ExhibitionAccountsTabs.indexOf(tab);\n const navigate = useNavigate();\n\n const handleTabChange = (index: number) => {\n navigate({\n search: { tab: ExhibitionAccountsTabs[index] || 'posted' },\n });\n };\n\n return (\n <Tabs\n variant=\"unstyled\"\n align=\"center\"\n w=\"100%\"\n index={indexFromUrl}\n onChange={handleTabChange}\n >\n <TabList>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopLeftRadius=\"md\"\n borderBottomLeftRadius=\"md\"\n >\n {t('distributed-accounts')}\n </Tab>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopRightRadius=\"md\"\n borderBottomRightRadius=\"md\"\n >\n {t('unassigned-accounts')}\n </Tab>\n </TabList>\n <TabPanels>\n <TabPanel {...tabPanelsStyle}>\n {tab === 'posted' && <PersonalAccounts />}\n </TabPanel>\n <TabPanel {...tabPanelsStyle}>\n {tab === 'process' && <PersonalAccounts />}\n </TabPanel>\n </TabPanels>\n </Tabs>\n );\n};\n","import { Column } from 'react-table';\nimport { Table } from '@/components/Table/Table';\nimport { Flex } from '@chakra-ui/react';\nimport i18n from '@/i18n';\nimport { editExhibitionAccountRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useSuspenseQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProductDto } from '@/api';\nimport { Loader } from '@/components/Loader/Loader';\n\nconst columns = [\n {\n Header: i18n.t('product-name'),\n accessor: 'displayName',\n width: '30%',\n },\n {\n Header: i18n.t('product-id'),\n accessor: 'productId',\n },\n {\n Header: i18n.t('price'),\n accessor: 'price',\n },\n {\n Header: i18n.t('amount'),\n accessor: 'quantity',\n },\n {\n Header: i18n.t('discount'),\n accessor: 'discount',\n },\n {\n Header: i18n.t('tax'),\n accessor: 'vat',\n },\n //Need formula\n // {\n // Header: i18n.t('taxIncluded'),\n // accessor: 'vatIncluded',\n // },\n {\n Header: i18n.t('currency'),\n accessor: 'currency',\n },\n] satisfies Array<Column<ITEPortal_Domain_Dto_Stand_GetStandProductDto>>;\n\nexport const ProductsTab = () => {\n const { accountId, exhibitionId } = editExhibitionAccountRoute.useParams();\n\n const { data: stands = [] } = useSuspenseQuery(\n QueryOptions.standsQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +accountId,\n })\n );\n\n const { data = [], isLoading } = useSuspenseQuery(\n QueryOptions.productsQueryOptions({\n standId: stands?.[0]?.id,\n })\n );\n\n return (\n <Flex flexDir=\"column\">\n {isLoading ? <Loader /> : <Table columns={columns} data={data} />}\n </Flex>\n );\n};\n","import { FormProvider, useFieldArray, useForm } from 'react-hook-form';\nimport React, { useEffect, useMemo } from 'react';\nimport { ButtonGroup, Button, Box, Flex } from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { useNavigate, useParams } from '@tanstack/react-router';\nimport { StandFieldSet } from './StandsTab/StandFieldSet';\nimport { StandFormValues } from './StandsTab/types';\nimport { useSuspenseQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { StandProjectForm } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm';\nimport { FilesStorage } from '@/pages/Exhibition/FilesStorage/FilesStorage';\n\nconst defaultValues = {\n id: 0,\n area: undefined,\n buildingType: undefined,\n secondFloorArea: undefined,\n standConfiguration: undefined,\n standNumber: undefined,\n};\n\nexport const StandsTab = (): JSX.Element => {\n const { exhibitionId, accountId: exhibitorId } = useParams({ strict: false });\n\n const { data: stands = [], isLoading } = useSuspenseQuery(\n QueryOptions.standsQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +exhibitorId,\n })\n );\n\n const sortedStands = useMemo(() => {\n return stands.sort((a, b) => a.id - b.id);\n }, [stands]);\n\n const navigate = useNavigate();\n\n const methods = useForm<StandFormValues>({\n mode: 'onSubmit',\n reValidateMode: 'onSubmit',\n });\n\n const { fields, append, remove } = useFieldArray({\n name: 'stands',\n control: methods.control,\n });\n\n useEffect(() => {\n methods.reset({\n stands: sortedStands,\n });\n\n if (Array.isArray(sortedStands) && sortedStands.length === 0) {\n append(defaultValues);\n }\n }, [sortedStands]);\n\n const toAccounts = () => {\n navigate({\n to: '/admin/exhibitions/$exhibitionId/view/personal-accounts',\n replace: true,\n params: {\n exhibitionId,\n },\n });\n };\n\n return (\n <>\n <FormProvider {...methods}>\n <Flex gap=\"20px\" direction=\"row\" flexWrap=\"wrap\">\n {fields.map((field, index) => {\n const projectId = sortedStands[index]?.projectId;\n\n return (\n <StandFieldSet\n key={field.id}\n index={index}\n isNew={!Boolean(sortedStands[index])}\n onRemove={remove}\n standId={sortedStands[index]?.id}\n projectId={projectId}\n />\n );\n })}\n </Flex>\n <Box mt={4}>\n {!isLoading && (\n <ButtonGroup gap=\"1\">\n <Button\n colorScheme=\"red\"\n variant=\"outline\"\n type=\"reset\"\n onClick={toAccounts}\n >\n {useNameTranslate('cancel')}\n </Button>\n <Button\n type=\"button\"\n variant=\"ghost\"\n colorScheme=\"red\"\n onClick={() => {\n append(defaultValues, {\n focusName: '',\n });\n }}\n >\n + {useNameTranslate('add-stand')}\n </Button>\n </ButtonGroup>\n )}\n </Box>\n <FilesStorage canUploadNewFiles={false} />\n </FormProvider>\n <StandProjectForm />\n </>\n );\n};\n","import { UseFieldArrayRemove } from 'react-hook-form/dist/types/fieldArray';\nimport { useTranslation } from 'react-i18next';\nimport { useFormContext } from 'react-hook-form';\nimport {\n Button,\n ButtonGroup,\n Card,\n CardBody,\n CardFooter,\n CardHeader,\n FormControl,\n Stack,\n} from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { AreaTypeConfig, StandConfiguration } from '@/utils/constants';\n\nimport styled from 'styled-components';\nimport { useStandSave } from './use-save-stand';\nimport { StandFormValues } from './types';\nimport InputNumber from '@/components/Fields/InputNumber';\nimport { standProjectApi } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/api';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { PavilionOptions } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/contsants';\nimport { filesStorageApi } from '@/pages/Exhibition/FilesStorage/filesStorageApi';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n\nexport const StandFieldSet = (props: {\n index: number;\n isNew: boolean;\n standId: number | null;\n projectId?: number | null;\n onRemove: UseFieldArrayRemove;\n}) => {\n const { t } = useTranslation();\n\n const { index, isNew, onRemove, standId, projectId } = props;\n const { isSaving, saveStand } = useStandSave();\n const { getValues } = useFormContext<StandFormValues>();\n const openEditStandProjectForm = () => {\n if (standId) {\n standProjectApi.setStandId({\n standId,\n projectId,\n });\n }\n };\n\n const openStandFileStorage = () => {\n if (standId) {\n filesStorageApi.setStand({\n standId: standId,\n standNumber: getValues(`stands.${index}.standNumber`),\n });\n }\n };\n\n return (\n <>\n <Card\n style={{ boxShadow: 'none' }}\n variant=\"outline\"\n flexBasis={{\n base: '100%',\n lg: 'calc(50% - 20px)',\n }}\n >\n <CardHeader>\n {t('stand')} #{index + 1}\n </CardHeader>\n <CardBody>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <InputNumber<StandFormValues>\n addon={t('sqm')}\n label={t('stand-footage')}\n maxWidth=\"100%\"\n name={`stands.${index}.area`}\n step={0.25}\n precision={2}\n />\n <SelectComponent<StandFormValues>\n label={t('area-type')}\n options={AreaTypeConfig}\n name={`stands.${index}.buildingType`}\n />\n <SelectComponent<StandFormValues>\n label={t('stand-configuration')}\n options={StandConfiguration}\n name={`stands.${index}.standConfiguration`}\n />\n <InputNumber<StandFormValues>\n addon={t('sqm')}\n label={t('second-floor-area')}\n maxWidth=\"100%\"\n name={`stands.${index}.secondFloorArea`}\n step={0.25}\n precision={2}\n />\n <Input<StandFormValues>\n label={t('stand-number')}\n maxWidth=\"100%\"\n name={`stands.${index}.standNumber`}\n />\n <SelectComponent<StandFormValues>\n label={t('pavilion')}\n maxWidth=\"100%\"\n options={PavilionOptions}\n name={`stands.${index}.pavilionHall`}\n />\n </FormControlWrapper>\n </Stack>\n\n <CardFooter justifyContent=\"flex-end\" paddingX={0}>\n <ButtonGroup>\n {isNew && (\n <Button size=\"sm\" onClick={() => onRemove(index)}>\n {t('delete')}\n </Button>\n )}\n {!isNew && (\n <Button size=\"sm\" onClick={() => openStandFileStorage()}>\n {t('file-storage')}\n </Button>\n )}\n {!isNew && (\n <Button size=\"sm\" onClick={() => openEditStandProjectForm()}>\n {t('stand-project')}\n </Button>\n )}\n <AsyncButton\n colorScheme=\"red\"\n type=\"button\"\n size=\"sm\"\n disabled={isSaving}\n isLoading={isSaving}\n onClick={async () => {\n return saveStand(getValues('stands')[index], index);\n }}\n >\n {t('save')}\n </AsyncButton>\n </ButtonGroup>\n </CardFooter>\n </CardBody>\n </Card>\n </>\n );\n};\n","import { CommentsHistory } from '@/pages/StandProject/StandProjectDescription/CommentsHistory';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { Flex } from '@chakra-ui/react';\nimport { AttachmentUploader } from '@/pages/StandProject/StandProjectDescription/AttachmentUploader';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '@/api';\nimport { editExhibitionAccountRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { toast } from 'react-toastify';\nimport { queryClient } from '@/features/query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useStandProject } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/api';\n\nconst ValidationSchema = vali.object({\n changeDescription: vali\n .string({\n required_error: i18n.t('required-field'),\n invalid_type_error: i18n.t('required-field'),\n })\n .min(1, {\n message: i18n.t('required-field'),\n }),\n file: vali.instanceof(File).optional().nullish(),\n});\n\ntype FormValues = vali.infer<typeof ValidationSchema>;\n\nexport const ProjectChangeForm = ({\n project,\n}: {\n project: ITEPortal_Domain_Dto_Stand_GetStandProjectDto;\n}) => {\n const editable = project.approved !== true;\n const { t } = useTranslation();\n const { data: exhibitor } = editExhibitionAccountRoute.useLoaderData();\n const { standId } = useStandProject();\n const [uploaderKey, setUploaderKey] = useState<number | null>(null);\n\n const employeesIds = useMemo(() => {\n return exhibitor.exhibitorEmployees?.map((empl) => empl.userId) || [];\n }, [exhibitor]);\n\n const formInstance = useForm<FormValues>({\n resolver: zodResolver(ValidationSchema),\n });\n\n const handleSubmit = async (values: FormValues) => {\n try {\n if (!standId || !project.projectId) {\n return;\n }\n\n const changeId = await typedAxios.stand.postStandsProjectChanges({\n standId: standId,\n projectId: project.projectId,\n requestBody: {\n comment: values.changeDescription,\n },\n });\n\n if (values.file instanceof File) {\n await typedAxios.stand.putStandsProjectChanges({\n changesId: +changeId,\n projectId: +project.projectId,\n standId: +standId,\n formData: {\n file: values.file,\n },\n });\n }\n\n await queryClient.refetchQueries({\n queryKey: QueryOptions.loadStandProject({\n standId: standId,\n }).queryKey,\n });\n\n setUploaderKey(changeId);\n\n formInstance.reset({\n changeDescription: '',\n });\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n if (!project || !project?.projectChangesHistory) {\n return null;\n }\n\n return (\n <FormProvider {...formInstance}>\n <CommentsHistory\n comments={project.projectChangesHistory}\n ownershipResolver={(historyItem) =>\n historyItem.createdBy\n ? employeesIds.includes(historyItem.createdBy)\n : false\n }\n />\n {editable && (\n <>\n <TextArea<FormValues>\n label={t('stand-change-description')}\n name=\"changeDescription\"\n />\n <Flex direction=\"row\" gap={4} mb={6} justifyContent=\"flex-end\">\n <AttachmentUploader\n key={uploaderKey}\n onFileChange={(file) => {\n formInstance.setValue('file', file);\n }}\n />\n <AsyncButton\n size=\"sm\"\n variant=\"solid\"\n colorScheme=\"red\"\n onClick={formInstance.handleSubmit(handleSubmit)}\n >\n {t('publish-stand-project-change')}\n </AsyncButton>\n </Flex>\n </>\n )}\n </FormProvider>\n );\n};\n","import { Flex } from '@chakra-ui/react';\nimport { ProjectImage } from '@/pages/StandProject/StandProjectImage/StandProjectImage.styled';\nimport Lightbox from 'yet-another-react-lightbox';\nimport Download from 'yet-another-react-lightbox/plugins/download';\nimport React, { useState } from 'react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '@/api';\nimport { FileUtils } from '@/utils/file-utils';\n\ntype StandProjectImagePropsType = Pick<\n ITEPortal_Domain_Dto_Stand_GetStandProjectDto,\n 'projectImageUrl'\n> & {\n editable: boolean;\n};\n\nexport const ProjectImageUploader = (props: StandProjectImagePropsType) => {\n const { projectImageUrl, editable } = props;\n const [open, setOpen] = useState(false);\n\n return (\n <Flex flexDirection=\"column\" maxW=\"100%\" gap={6}>\n {editable && (\n <UploadFileDropzone\n label={useNameTranslate('upload-image')}\n defaultValue={projectImageUrl || ''}\n multiple={false}\n name=\"file\"\n />\n )}\n\n {projectImageUrl && (\n <>\n {props.projectImageUrl && (\n <ProjectImage\n key={projectImageUrl}\n style={{ width: 100, height: 'auto' }}\n src={projectImageUrl}\n onClick={() => setOpen(true)}\n />\n )}\n\n <Lightbox\n open={open}\n close={() => setOpen(false)}\n index={0}\n slides={[\n {\n src: projectImageUrl,\n },\n ]}\n animation={{ fade: 0 }}\n controller={{ closeOnPullDown: true, closeOnBackdropClick: true }}\n styles={{ root: { '--yarl__color_backdrop': 'rgba(0, 0, 0, .7)' } }}\n plugins={[Download]}\n download={{\n download: ({ slide }) => {\n FileUtils.saveUrlToBlob(slide.src);\n },\n }}\n />\n </>\n )}\n </Flex>\n );\n};\n","import {\n Button,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerHeader,\n DrawerOverlay,\n Flex,\n} from '@chakra-ui/react';\nimport { useParams, useSearch } from '@tanstack/react-router';\nimport { useEffect, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n standProjectApi,\n useStandProject,\n} from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/api';\nimport { queryClient } from '@/features/query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ProjectImageUploader } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/ProjectImageUploader';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { ProjectChangeForm } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/StandProjectForm/ProjectChangeForm';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { toast } from 'react-toastify';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useQuery } from '@tanstack/react-query';\nimport { AsyncButton } from '@/components/AsyncButton';\n\nconst ValidationSchema = vali.object({\n projectDescription: vali\n .string({\n required_error: i18n.t('required-field'),\n invalid_type_error: i18n.t('required-field'),\n })\n .nullish(),\n file: vali.array(vali.instanceof(File)).optional().nullish(),\n});\n\ntype FormValues = vali.infer<typeof ValidationSchema>;\n\nexport const StandProjectForm = () => {\n const { t } = useTranslation();\n const { exhibitionId, accountId: exhibitorId } = useParams({ strict: false });\n const { standId: standIdFromUrl } = useSearch({ strict: false });\n const { standId, projectId } = useStandProject();\n const [isOpened, toggleOpened] = useState(false);\n const formInstance = useForm<FormValues>({\n resolver: zodResolver(ValidationSchema),\n });\n const [isDescriptionEditable, setDescriptionEditable] =\n useState<boolean>(true);\n\n const { data: project, dataUpdatedAt } = useQuery({\n ...QueryOptions.loadStandProject({\n standId: standId,\n }),\n enabled: Boolean(standId) && Boolean(projectId),\n });\n\n const isExistingProject = Boolean(project);\n\n useEffect(\n function openDrawerIdStandIdFromUrlExists() {\n toggleOpened(Boolean(standId));\n },\n [standId]\n );\n\n useEffect(\n function setStandIdToStoreViaApi() {\n if (typeof +standIdFromUrl === 'number') {\n standProjectApi.setStandId(standIdFromUrl);\n }\n },\n [standIdFromUrl]\n );\n\n useEffect(\n function setFormValues() {\n if (project) {\n formInstance.reset({\n projectDescription: project.projectDescription || '',\n });\n\n setDescriptionEditable(false);\n }\n },\n [project]\n );\n\n const handleClose = () => {\n standProjectApi.reset();\n formInstance.reset({\n projectDescription: '',\n });\n };\n\n const reopenProject = async () => {\n if (!project?.projectId || !standId) {\n return;\n }\n\n try {\n await typedAxios.stand.postStandsUpdateProjectStatus({\n projectId: +project.projectId,\n standId: +standId,\n requestBody: {\n standStatus: false,\n },\n });\n\n await queryClient.refetchQueries({\n queryKey: QueryOptions.loadStandProject({\n standId,\n }).queryKey,\n });\n\n toast.success(t('saved'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n const handleSubmit = async (values: FormValues) => {\n if (!standId) {\n return;\n }\n\n try {\n if (project?.projectId) {\n await typedAxios.stand.putStandsProject({\n projectId: project.projectId,\n standId,\n requestBody: {\n projectDescription: values.projectDescription,\n },\n });\n\n if (values.file?.[0] instanceof File) {\n await typedAxios.stand.putStandsProjectImage({\n standId,\n projectId: project.projectId,\n formData: {\n image: values.file?.[0],\n },\n });\n }\n } else {\n const saveProjectId = await typedAxios.stand.postStandsProject({\n standId,\n requestBody: {\n projectDescription: values.projectDescription,\n },\n });\n\n standProjectApi.setStandId({\n projectId: saveProjectId,\n standId: standId,\n });\n\n if (values.file?.[0] instanceof File) {\n await typedAxios.stand.putStandsProjectImage({\n standId,\n projectId: saveProjectId,\n formData: {\n image: values.file?.[0],\n },\n });\n }\n }\n\n await queryClient.refetchQueries({\n queryKey: QueryOptions.loadStandProject({\n standId,\n }).queryKey,\n });\n\n if (!projectId) {\n await queryClient.refetchQueries(\n QueryOptions.standsQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +exhibitorId,\n })\n );\n }\n\n toast.success(t('saved'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n if (!isOpened) {\n return null;\n }\n\n const editable = project?.approved !== true;\n const canEditHistory = Boolean(project?.projectChangesHistory?.length);\n const canAmendInitialDescription = true; // !canEditHistory;\n\n return (\n <Drawer isOpen={isOpened} placement=\"right\" size=\"xl\" onClose={handleClose}>\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n <DrawerHeader>{t('stand-project')}</DrawerHeader>\n\n <DrawerBody>\n <Flex direction=\"column\" gap={8}>\n <FormProvider {...formInstance}>\n <ProjectImageUploader\n key={dataUpdatedAt}\n editable={editable}\n projectImageUrl={project?.projectImageUrl}\n />\n <TextArea<FormValues>\n label={t('project-description')}\n name=\"projectDescription\"\n size=\"md\"\n isDisabled={\n !canAmendInitialDescription ||\n !editable ||\n !isDescriptionEditable\n }\n />\n </FormProvider>\n {canAmendInitialDescription && (\n <Flex direction=\"row\" gap={2} justifyContent=\"flex-end\">\n <Button variant=\"outline\" size=\"sm\" onClick={handleClose}>\n {t('cancel')}\n </Button>\n {isExistingProject && (\n <AsyncButton\n size=\"sm\"\n colorScheme=\"brandColor\"\n onClick={() => {\n if (isDescriptionEditable) {\n formInstance.setValue(\n 'projectDescription',\n project?.projectDescription\n );\n }\n\n setDescriptionEditable(!isDescriptionEditable);\n }}\n >\n {isDescriptionEditable\n ? t('cancel-edit-description')\n : t('edit-description')}\n </AsyncButton>\n )}\n {editable && (\n <AsyncButton\n size=\"sm\"\n colorScheme=\"brandColor\"\n onClick={formInstance.handleSubmit(handleSubmit)}\n >\n {t('save')}\n </AsyncButton>\n )}\n {!editable && (\n <AsyncButton\n onClick={reopenProject}\n size=\"sm\"\n colorScheme=\"brandColor\"\n >\n {t('reopen-project')}\n </AsyncButton>\n )}\n </Flex>\n )}\n {canEditHistory && project?.projectChangesHistory && (\n <ProjectChangeForm project={project} />\n )}\n </Flex>\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { createApi, createStore } from 'effector';\nimport { useUnit } from 'effector-react';\n\ntype StandProjectStateType = {\n standId: number | null;\n projectId?: number | null;\n};\n\nconst $standProject = createStore<StandProjectStateType>({\n standId: null,\n projectId: null,\n});\n\nexport const standProjectApi = createApi($standProject, {\n setStandId: (state, payload: StandProjectStateType) => {\n return {\n ...state,\n ...payload,\n };\n },\n reset: () => {\n return {\n standId: null,\n projectId: null,\n };\n },\n});\n\nexport const useStandProject = () => useUnit($standProject);\n","import { OptionType } from '@/model/common';\nimport i18n from '@/i18n';\nimport { ITEPortal_Contracts_Enums_PavilionHall } from '@/api';\n\nexport const PavilionOptions: Array<OptionType> = [\n { value: 1, label: i18n.t('Pav1Hall1') },\n { value: 2, label: i18n.t('Pav1Hall2') },\n { value: 3, label: i18n.t('Pav1Hall3') },\n { value: 4, label: i18n.t('Pav1Hall4') },\n { value: 5, label: i18n.t('Pav2Hall5') },\n { value: 6, label: i18n.t('Pav2Hall6') },\n { value: 7, label: i18n.t('Pav2Hall7') },\n { value: 8, label: i18n.t('Pav2Hall8') },\n { value: 9, label: i18n.t('Pav2Hall9') },\n { value: 10, label: i18n.t('Pav2Hall10') },\n { value: 11, label: i18n.t('Pav2Hall11') },\n { value: 12, label: i18n.t('Pav3Hall12') },\n { value: 13, label: i18n.t('Pav3Hall13') },\n { value: 14, label: i18n.t('Pav3Hall14') },\n { value: 15, label: i18n.t('Pav3Hall15') },\n { value: 16, label: i18n.t('Pav3Hall16') },\n { value: 17, label: i18n.t('Pav3Hall17') },\n { value: 18, label: i18n.t('Pav3Hall18') },\n { value: 19, label: i18n.t('Pav3Hall19') },\n];\n\nexport const getPavilionLabelByCode = (\n code: ITEPortal_Contracts_Enums_PavilionHall\n) => {\n return PavilionOptions.find((p) => p.value === code)?.label;\n};\n","import { useTranslation } from 'react-i18next';\nimport { useBoolean } from '@chakra-ui/react';\nimport { useFormContext } from 'react-hook-form';\nimport { useParams } from '@tanstack/react-router';\nimport { useFormErrorsHandler } from '@/hooks/useFormErrorsHandler';\nimport { typedAxios } from '@/api/typed-axios';\nimport { formOptionsAsValues } from '@/utils/form-options-as-values';\nimport { toast } from 'react-toastify';\nimport { isNil } from '@/utils/is-nil';\nimport { StandFormValues } from './types';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\n\nexport const useStandSave = () => {\n const { t } = useTranslation();\n const client = useQueryClient();\n\n const [isSaving, { toggle }] = useBoolean(false);\n const instance = useFormContext<StandFormValues>();\n const { accountId: exhibitorId, exhibitionId } = useParams({ strict: false });\n\n const { processErrorsObject } = useFormErrorsHandler(instance);\n\n const saveStand = async (\n stand: StandFormValues['stands'][number],\n index: number\n ) => {\n if (!isNil(stand.area) && stand.area % 0.25 !== 0) {\n instance.setError(`stands.${index}.area`, {\n message: t('divisible-by-quarter', {\n unit: t('sqm'),\n }),\n });\n\n return;\n }\n\n if (!isNil(stand.secondFloorArea) && stand.secondFloorArea % 0.25 !== 0) {\n instance.setError(`stands.${index}.secondFloorArea`, {\n message: t('divisible-by-quarter', {\n unit: t('sqm'),\n }),\n });\n\n return;\n }\n\n try {\n toggle();\n\n if (stand.id) {\n await typedAxios.stand.putExhibitionsStands({\n id: stand.id,\n exhibitionId: exhibitionId,\n requestBody: {\n ...formOptionsAsValues(stand),\n exhibitorId: exhibitorId,\n },\n });\n toast.success(t('stand-saved'));\n } else {\n const rawValues = formOptionsAsValues(stand);\n\n if (!isNil(stand.id)) {\n // @ts-expect-error desc\n delete rawValues.id;\n }\n\n await typedAxios.stand.postExhibitionsStands({\n exhibitionId: exhibitionId,\n requestBody: { ...rawValues, exhibitorId },\n });\n\n toast.success(t('stand-created'));\n }\n\n await client.refetchQueries({\n queryKey: QueryOptions.standsQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +exhibitorId,\n }).queryKey,\n });\n } catch (e) {\n processErrorsObject(e, {\n fieldPrefix: `stands.${index}.`,\n ignoreFields: [`stands.${index}.stand`],\n });\n } finally {\n toggle();\n }\n };\n\n return { isSaving, saveStand };\n};\n","import { Column } from 'react-table';\nimport { Table } from '@/components/Table/Table';\nimport { Flex } from '@chakra-ui/react';\nimport i18n from '@/i18n';\nimport { useSuspenseQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { editExhibitionAccountRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto } from '@/api';\nimport { Loader } from '@/components/Loader/Loader';\n\nconst columns = [\n {\n Header: i18n.t('company'),\n accessor: 'companyId',\n },\n {\n Header: i18n.t('area'),\n accessor: 'area',\n },\n {\n Header: i18n.t('stand-number'),\n accessor: 'standNumber',\n },\n {\n Header: i18n.t('stand-type'),\n accessor: 'standConfiguration',\n },\n] satisfies Array<Column<ITEPortal_Domain_Dto_Bitrix_Deal_StandSharerDto>>;\n\nexport const SubexponentsTab = () => {\n const { accountId, exhibitionId } = editExhibitionAccountRoute.useParams();\n\n const { data: stands = [] } = useSuspenseQuery(\n QueryOptions.standsQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +accountId,\n })\n );\n\n const { data, isLoading } = useSuspenseQuery(\n QueryOptions.subexponentsQueryOptions({\n standId: stands?.[0]?.id,\n })\n );\n\n return (\n <Flex flexDir=\"column\">\n {isLoading ? <Loader /> : <Table columns={columns} data={data} />}\n </Flex>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useEffect, useState } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { Button, Flex, Stack } from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { useEmployeeSearch } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/hooks/use-employee-search';\nimport { useTranslation } from 'react-i18next';\nimport { type ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport {\n EmployeeFormValues,\n EmployeeFormSchema,\n} from '@/pages/AdminPanel/PersonalAccounts/UsersTab/types';\nimport { toast } from 'react-toastify';\n\nexport const AddNewEmployeeForm = () => {\n const { t } = useTranslation();\n const instance = useForm<EmployeeFormValues>({\n resolver: zodResolver(EmployeeFormSchema),\n mode: 'onChange',\n });\n\n const [foundModel, setFoundModel] = useState<\n ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto | null | undefined\n >(null);\n\n const { findUser, isSearching } = useEmployeeSearch();\n\n useEffect(() => {\n ModalFactory.updateContext(instance);\n }, [instance]);\n\n useEffect(() => {\n if (foundModel && foundModel.email && foundModel.name) {\n instance.reset({\n id: foundModel.employeeId,\n email: foundModel.email,\n name: foundModel.name,\n phoneNumber: foundModel.phoneNumber,\n });\n } else {\n instance.reset({\n name: '',\n });\n }\n }, [foundModel]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <Flex flexDir=\"row\" gap={4}>\n <Input<EmployeeFormValues>\n name=\"email\"\n placeholder={t('employee-email')}\n maxWidth=\"unset\"\n />\n <Button\n minW=\"fit-content\"\n isLoading={isSearching}\n isDisabled={isSearching}\n onClick={async () => {\n const foundEmployee = await findUser(instance);\n\n if (!foundEmployee) {\n toast.warning(t('employee-not-found'));\n }\n\n setFoundModel(foundEmployee);\n }}\n >\n {t('find-employee')}\n </Button>\n </Flex>\n <Input<EmployeeFormValues>\n name=\"name\"\n disabled={Boolean(foundModel)}\n label={t('employee-name')}\n maxWidth=\"unset\"\n />\n <Input<EmployeeFormValues>\n name=\"phoneNumber\"\n disabled={Boolean(foundModel)}\n label={t('phone')}\n type=\"tel\"\n maxWidth=\"unset\"\n />\n </Stack>\n </FormProvider>\n );\n};\n","import { ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport { Column } from 'react-table';\nimport { Table } from '@/components/Table/Table';\nimport { UsersTableActions } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/UsersTableActions';\nimport { Button, ButtonGroup, Flex } from '@chakra-ui/react';\nimport i18n from '@/i18n';\nimport { useEmployeeCreate } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/hooks/use-employee-create';\nimport { editExhibitionAccountRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useSuspenseQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport dayjs from 'dayjs';\n\nconst columns = [\n {\n Header: i18n.t('employee-name'),\n accessor: 'name',\n },\n {\n Header: 'Email',\n accessor: 'email',\n },\n {\n Header: i18n.t('phone'),\n accessor: 'phoneNumber',\n },\n {\n Header: i18n.t('creation-date'),\n accessor: 'createdDate',\n Cell: ({ value }) => {\n if (value && dayjs(value).isValid()) {\n return <>{dayjs(value).format('DD.MM.YYYY')}</>;\n }\n\n return <>-</>;\n },\n },\n {\n Header: i18n.t('last-visit-date'),\n accessor: 'lastVisitDate',\n Cell: ({ value }) => {\n if (value && dayjs(value).isValid()) {\n return <>{dayjs(value).format('DD.MM.YYYY')}</>;\n }\n\n return <>-</>;\n },\n },\n {\n id: 'actions',\n width: 90,\n Cell: ({ row }) => {\n return <UsersTableActions row={row} />;\n },\n },\n] satisfies Array<\n Column<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>\n>;\n\nexport const UsersTab = () => {\n const { accountId, exhibitionId } = editExhibitionAccountRoute.useParams();\n\n const { data } = useSuspenseQuery(\n QueryOptions.exhibitorQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +accountId,\n })\n );\n\n const exhibitorEmployees = data?.exhibitorEmployees || [];\n\n const opts = {\n exhibitionId: +exhibitionId,\n exhibitorId: +accountId,\n };\n\n const { openCreateModal } = useEmployeeCreate(opts);\n\n return (\n <Flex flexDir=\"column\">\n <ButtonGroup gap=\"4\" justifyContent=\"flex-end\">\n <Button onClick={openCreateModal}>+ {i18n.t('add-employee')}</Button>\n </ButtonGroup>\n <Table columns={columns} data={exhibitorEmployees} />\n </Flex>\n );\n};\n","import { ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto } from '@/api';\nimport { Row } from 'react-table';\nimport { Flex } from '@chakra-ui/react';\nimport { DeleteIcon } from '@chakra-ui/icons';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { editExhibitionAccountRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport i18n from '@/i18n';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { toast } from 'react-toastify';\n\nexport const UsersTableActions = (props: {\n row: Row<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>;\n}) => {\n const { row } = props;\n const queryClient = useQueryClient();\n const { exhibitionId, accountId: exhibitorId } =\n editExhibitionAccountRoute.useParams();\n\n const confirmRemoveUserFromExhibition = () => {\n ModalFactory.confirm({\n Component: () => <>{i18n.t('remove-employee-from-exhibition')}</>,\n onOk: async () => {\n if (row.original.employeeId) {\n try {\n await typedAxios.exhibitor.deleteExhibitorsEmployeesExhibitions({\n exhibitionId: +exhibitionId,\n employeeId: row.original.employeeId,\n });\n\n await queryClient.invalidateQueries(\n QueryOptions.exhibitorQueryOptions({\n exhibitionId: +exhibitionId,\n exhibitorId: +exhibitorId,\n })\n );\n\n ModalFactory.close();\n\n toast.success(i18n.t('employee-removed-from-exhibition'));\n } catch {\n toast.error(i18n.t('error-occurred'));\n }\n }\n },\n });\n };\n\n return (\n <Flex flexDir=\"row\" gap=\"10px\" justifyContent=\"flex-end\">\n <DeleteIcon onClick={confirmRemoveUserFromExhibition} />\n </Flex>\n );\n};\n","import { useCallback } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { useTranslation } from 'react-i18next';\nimport { EmployeeFormValues } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/types';\nimport { UseFormReturn } from 'react-hook-form';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { AddNewEmployeeForm } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/AddNewEmployeeForm';\nimport { typedAxios } from '@/api/typed-axios';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ApiError } from '@/api';\nimport { toast } from 'react-toastify';\n\nexport const useEmployeeCreate = (opts: {\n exhibitionId: number;\n exhibitorId: number;\n}) => {\n const queryClient = useQueryClient();\n const { t } = useTranslation();\n\n const saveEmployee = async (values: EmployeeFormValues) => {\n try {\n await typedAxios.exhibitor.postExhibitorsExhibitionEmployees({\n exhibitorId: opts.exhibitorId,\n exhibitionId: opts.exhibitionId,\n requestBody: {\n email: values.email,\n name: values.name,\n phoneNumber: values.phoneNumber,\n },\n });\n\n await queryClient.invalidateQueries(\n QueryOptions.exhibitorQueryOptions(opts)\n );\n\n ModalFactory.close();\n } catch (e) {\n if (e instanceof ApiError) {\n const message = e.body;\n\n if (message && typeof message === 'string') {\n toast.error(message);\n } else {\n toast.error(t('error-occurred'));\n }\n }\n }\n };\n\n const openCreateModal = useCallback(() => {\n ModalFactory.show({\n title: t('add-employee'),\n Component: AddNewEmployeeForm,\n okLabel: t('add-employee'),\n onOk: async (ctx: UseFormReturn<EmployeeFormValues>) => {\n return ctx.handleSubmit(saveEmployee)();\n },\n });\n }, []);\n\n return {\n openCreateModal,\n };\n};\n","import { UseFormReturn } from 'react-hook-form';\nimport { EmployeeFormValues } from '@/pages/AdminPanel/PersonalAccounts/UsersTab/types';\nimport { useBoolean } from '@chakra-ui/react';\nimport { typedAxios } from '@/api/typed-axios';\n\nexport const useEmployeeSearch = () => {\n const [isSearching, { on, off }] = useBoolean();\n\n return {\n isSearching,\n findUser: async (formInstance: UseFormReturn<EmployeeFormValues>) => {\n const isValid = await formInstance.trigger('email');\n\n if (!isValid) {\n return;\n }\n\n const employeeEmail = formInstance.getValues('email');\n\n try {\n on();\n\n const company = await typedAxios.exhibitor.getExhibitors1({\n email: employeeEmail,\n });\n\n if (!company || !company.exhibitorEmployees) {\n return null;\n }\n\n const existingEmployee = company.exhibitorEmployees.find(\n (e) => e.email === employeeEmail\n );\n\n if (!existingEmployee) {\n return null;\n }\n\n return existingEmployee;\n } catch {\n return null;\n } finally {\n off();\n }\n },\n };\n};\n","import * as v from 'zod';\nimport i18n from '@/i18n';\n\nexport const EmployeeFormSchema = v.object({\n id: v.number().optional(),\n email: v.string().email({\n message: i18n.t('invalid-email'),\n }),\n name: v.string().min(1, {\n message: i18n.t('required-field'),\n }),\n phoneNumber: v.string().optional().nullish(),\n});\n\nexport type EmployeeFormValues = v.infer<typeof EmployeeFormSchema>;\n","import { useTranslation } from 'react-i18next';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\n\nimport { ModalFactory } from '@/components/Modal/api';\nimport React, { useCallback } from 'react';\nimport { UseFormReturn } from 'react-hook-form';\nimport {\n EditManagerModal,\n ValidationSchemaType,\n} from '@/pages/AdminPanel/PersonalAccounts/Modals/EditManagerModal';\nimport { ApiError, ITEPortal_Domain_Dto_AdminExhibitorSummary } from '@/api';\nimport { useParams } from '@tanstack/react-router';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\n\nexport type SaveTechnicalManagers = ValidationSchemaType & {\n selectedRows: ITEPortal_Domain_Dto_AdminExhibitorSummary[];\n};\n\nexport const useEditTechnicalManagers = () => {\n const { t } = useTranslation();\n const queryClient = new QueryClient();\n const { exhibitionId } = useParams({ strict: false });\n\n const saveTechnicalManagers = async (\n values: SaveTechnicalManagers,\n refresh: () => void,\n setShowBulkAction: (value: boolean) => void\n ) => {\n const rowIds = values?.selectedRows.map((row) => row?.id);\n\n try {\n await typedAxios.exhibitor.putExhibitorsExhibition({\n exhibitionId: +exhibitionId,\n requestBody: {\n technicalManagerEmail: values?.technicalManager?.label,\n exhibitorIds: rowIds,\n },\n });\n\n ModalFactory.close();\n refresh();\n setShowBulkAction(false);\n toast.success(t('exhibitorsUpdated'));\n } catch (e) {\n if (e instanceof ApiError) {\n const message = e.body;\n\n if (message && typeof message === 'string') {\n toast.error(message);\n } else {\n toast.error(t('error-occurred'));\n }\n }\n }\n };\n\n const openEditTechnicalManagersModal = useCallback(\n (\n selectedRows: ITEPortal_Domain_Dto_AdminExhibitorSummary[],\n refresh: () => void,\n setShowBulkAction: (value: boolean) => void\n ) => {\n ModalFactory.show({\n title: t('personal-accounts-edit'),\n Component: () => (\n <QueryClientProvider client={queryClient}>\n <EditManagerModal exhibitionId={exhibitionId} />\n </QueryClientProvider>\n ),\n okLabel: t('save'),\n onOk: async (ctx: UseFormReturn<ValidationSchemaType>) => {\n return ctx.handleSubmit(() =>\n saveTechnicalManagers(\n { ...ctx.getValues(), selectedRows },\n refresh,\n setShowBulkAction\n )\n )();\n },\n });\n },\n []\n );\n\n return {\n openEditTechnicalManagersModal,\n };\n};\n","import { useForm, FormProvider } from 'react-hook-form';\nimport {\n ButtonGroup,\n FormControl,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport Input from '@/components/Fields/Input';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useMemo } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'i18next';\nimport { OptionType } from '@/model/common';\n\nimport { ITEPortal_Domain_Dto_AdminPriceListItem } from '../../../../api';\nimport { useCreateOrderContext } from './CreateOrderContext';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n openConfirm: boolean;\n closeModal: () => void;\n items: ITEPortal_Domain_Dto_AdminPriceListItem[];\n}\n\ntype FormValues = {\n id: OptionType<{\n item: ITEPortal_Domain_Dto_AdminPriceListItem;\n }>;\n amount: number;\n dayAmount: number;\n peopleAmount: number;\n language: string;\n};\n\nexport const AddItemToOrderModal = ({\n openConfirm,\n closeModal,\n}: AddBuildingTypeProductProps) => {\n const { items, addItem } = useCreateOrderContext();\n\n const formInstance = useForm<FormValues>({\n mode: 'onBlur',\n });\n\n const submitHandler = async (values: FormValues) => {\n const id = values?.id;\n const dayAmount = values?.dayAmount || 0;\n const peopleAmount = values?.peopleAmount || 0;\n const amount = values?.amount || 0;\n const language = values?.language || '';\n\n const data = { dayAmount, peopleAmount, language, amount, id };\n\n const item = values.id?.meta?.item;\n\n if (!item || !item.name) {\n formInstance.setError('id', {\n message: 'todo error message',\n });\n\n return;\n }\n\n addItem?.({\n ...data,\n id: item.name,\n productName: item.displayName,\n });\n\n if (item.includedPriceListItems?.length) {\n item.includedPriceListItems.forEach((it) => {\n const originalPriceListItem = items.find(\n (oit) => oit.id === it.includedPricelistItemId\n );\n\n if (originalPriceListItem && originalPriceListItem.name) {\n addItem?.({\n id: originalPriceListItem.name,\n amount: it.quantity,\n productName: originalPriceListItem.displayName,\n included: true,\n });\n }\n });\n }\n\n closeModal();\n };\n\n const itemsOptions = useMemo(() => {\n return items.map((i) => {\n return {\n value: i.id,\n label: `${i.name} (${i.displayName})`,\n meta: {\n item: i,\n },\n };\n }) satisfies Array<\n OptionType<{\n item: ITEPortal_Domain_Dto_AdminPriceListItem;\n }>\n >;\n }, [items]);\n\n return (\n <Modal\n isOpen={openConfirm}\n onClose={closeModal}\n size=\"xl\"\n scrollBehavior=\"inside\"\n isCentered\n >\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('add-product')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...formInstance}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <SelectComponent<FormValues>\n label={useNameTranslate('service-name')}\n maxWidth=\"100%\"\n name=\"id\"\n options={itemsOptions}\n isRequired\n />\n <Input<FormValues>\n label={`${useNameTranslate('amount')} / ${useNameTranslate(\n 'sqm'\n )}`}\n maxWidth=\"100%\"\n name=\"amount\"\n />\n <Input<FormValues>\n label={useNameTranslate('dayAmountPlaceholder')}\n maxWidth=\"100%\"\n name=\"dayAmount\"\n />\n <Input<FormValues>\n label={useNameTranslate('personAmountPlaceholder')}\n maxWidth=\"100%\"\n name=\"peopleAmount\"\n />\n <Input<FormValues>\n label={useNameTranslate('language')}\n maxWidth=\"100%\"\n name=\"language\"\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={formInstance.handleSubmit(submitHandler)}\n >\n {t('save')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { Table } from '../../../../components/Table/Table';\nimport React, { useMemo } from 'react';\nimport { NumberColumnComponent } from '../shared/NumberColumnComponent';\nimport { useTranslation } from 'react-i18next';\nimport { OrderControls } from './OrderControls';\nimport { Box } from '@chakra-ui/react';\nimport { useCreateOrderContext } from './CreateOrderContext';\nimport { CreateOrderButton } from './CreateOrderButton';\nimport { DeleteIcon } from '@chakra-ui/icons';\nimport { Column, Row } from 'react-table';\nimport { ITEPortal_Domain_Dto_OrderItemDto } from '../../../../api';\n\nexport const AddedToOrderItemsTable = () => {\n const { t } = useTranslation();\n const { selectedItems, removeItem } = useCreateOrderContext();\n\n const columns = useMemo<\n Array<Column<ITEPortal_Domain_Dto_OrderItemDto>>\n >(() => {\n return [\n {\n Header: t('service-id'),\n accessor: 'id',\n width: '15%',\n },\n {\n Header: t('service-name'),\n accessor: 'productName',\n width: '30%',\n },\n {\n accessor: 'orderItemId',\n show: false,\n },\n {\n Header: `${t('amount')}`,\n accessor: 'amount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.amount} />\n ),\n },\n {\n Header: `${t('dayAmountPlaceholder')}`,\n accessor: 'dayAmount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.dayAmount} />\n ),\n },\n {\n Header: `${t('personAmountPlaceholder')}`,\n accessor: 'peopleAmount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.peopleAmount} />\n ),\n },\n {\n Header: `${t('language')}`,\n accessor: 'language',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.language} />\n ),\n },\n {\n Header: '',\n id: 'options',\n width: '5%',\n Cell: ({ row }: { row: Row<ITEPortal_Domain_Dto_OrderItemDto> }) => {\n return (\n <>\n <DeleteIcon onClick={() => removeItem?.(row.original)} />\n </>\n );\n },\n },\n ];\n }, []);\n\n return (\n <Box marginTop=\"20px\">\n <OrderControls />\n <Table columns={columns} data={selectedItems} />\n <CreateOrderButton />\n </Box>\n );\n};\n","import { createOrderRoute } from '../../../../features/Routing/protected/admin-exhibitions';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { SelectComponent } from '../../../../components/MultiSelect/MultiSelect';\nimport { useTranslation } from 'react-i18next';\nimport { useEffect, useMemo, useReducer } from 'react';\nimport { typedAxios } from '../../../../api/typed-axios';\nimport {\n ITEPortal_Domain_Dto_AdminPriceListItem,\n type ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto,\n ITEPortal_Domain_Dto_ExhibitorStandDto,\n ITEPortal_Domain_Dto_OrderItemDto,\n} from '../../../../api';\nimport { AddedToOrderItemsTable } from './AddedToOrderItemsTable';\nimport {\n CreateOrderContextProvider,\n CreateOrderContextType,\n} from './CreateOrderContext';\nimport { Box, Stack } from '@chakra-ui/react';\nimport { ORDER_STATUSES } from '../../../../constants/order';\nimport { useNavigate } from '@tanstack/react-router';\n// import { useQueryClient } from '@tanstack/react-query';\n// import { QueryOptions } from '@/features/query/query-options';\nimport { OptionType } from '@/model/common';\nimport {\n CreateOrderFormSchema,\n CreateOrderFormSchemaType,\n} from '@/pages/AdminPanel/PlacedOrders/CreateOrder/types';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { NoStandsLink } from '@/pages/AdminPanel/PlacedOrders/CreateOrder/NoStandsLink';\nimport { NoPriceListsLink } from '@/pages/AdminPanel/PlacedOrders/CreateOrder/NoPriceListsLink';\nimport { toast } from 'react-toastify';\n\ntype CreateOrderPageStateType = {\n itemsSource: ITEPortal_Domain_Dto_AdminPriceListItem[];\n availableItems: ITEPortal_Domain_Dto_AdminPriceListItem[];\n stands: ITEPortal_Domain_Dto_ExhibitorStandDto[];\n selectedItems: ITEPortal_Domain_Dto_OrderItemDto[];\n employees: Array<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>;\n exhibitorId?: number;\n hasPriceList: boolean;\n};\n\ntype ActionsType =\n | {\n type: 'ADD_ITEM';\n payload: ITEPortal_Domain_Dto_OrderItemDto;\n }\n | {\n type: 'REMOVE_ITEM';\n payload: ITEPortal_Domain_Dto_OrderItemDto;\n }\n | {\n type: 'PREPARE';\n payload: {\n stands: ITEPortal_Domain_Dto_ExhibitorStandDto[];\n sourceItems: ITEPortal_Domain_Dto_AdminPriceListItem[];\n employees: ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto[];\n exhibitorId?: number;\n hasPriceList: boolean;\n };\n };\n\nconst reducer = (\n state: CreateOrderPageStateType,\n action: ActionsType\n): CreateOrderPageStateType => {\n switch (action.type) {\n case 'PREPARE': {\n return {\n ...state,\n selectedItems: [],\n stands: action.payload.stands,\n itemsSource: action.payload.sourceItems,\n availableItems: action.payload.sourceItems,\n employees: action.payload.employees,\n exhibitorId: action.payload.exhibitorId,\n hasPriceList: action.payload.hasPriceList,\n };\n }\n\n case 'ADD_ITEM': {\n return {\n ...state,\n selectedItems: [...state.selectedItems, action.payload],\n availableItems: state.availableItems.filter(\n (i) => i.name !== action.payload.id\n ),\n };\n }\n\n case 'REMOVE_ITEM': {\n const selectedItems = state.selectedItems.filter(\n (s) => s.id !== action.payload.id\n );\n\n return {\n ...state,\n selectedItems,\n availableItems: state.itemsSource.filter(\n (s) => !selectedItems.find((selected) => selected.id !== s.name)\n ),\n };\n }\n\n default:\n action satisfies never;\n }\n\n return state;\n};\n\nexport const CreateOrder = () => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n // const queryClient = useQueryClient();\n const { exhibitorId: exhibitorIdFromQuery } = createOrderRoute.useSearch();\n const [state, dispatch] = useReducer<typeof reducer>(reducer, {\n availableItems: [],\n itemsSource: [],\n stands: [],\n selectedItems: [],\n employees: [],\n hasPriceList: false,\n });\n\n const {\n exhibitorId,\n employees,\n availableItems,\n selectedItems,\n itemsSource,\n stands,\n hasPriceList,\n } = state;\n\n const hasStands = stands.length > 0;\n\n const couldAddItems = itemsSource.length > 0 && hasStands;\n\n const { exhibitors } = createOrderRoute.useLoaderData();\n const { exhibitionId } = createOrderRoute.useParams();\n\n const formInstance = useForm<CreateOrderFormSchemaType>({\n resolver: zodResolver(CreateOrderFormSchema),\n });\n\n useEffect(() => {\n if (exhibitorIdFromQuery) {\n const exhibitor = exhibitors.find(\n (ex) => ex.value === exhibitorIdFromQuery\n );\n\n if (exhibitor) {\n formInstance.setValue(\n 'exhibitorId',\n // @ts-expect-error desc\n exhibitor,\n {\n shouldDirty: true,\n shouldTouch: true,\n }\n );\n }\n }\n }, [exhibitorIdFromQuery]);\n\n const ex = formInstance.watch('exhibitorId');\n\n const employeesOptions = useMemo<\n Array<OptionType<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>>\n >(() => {\n return employees.map((e) => {\n return {\n value: e.userId ? `${e.userId}` : '',\n label: `${e.name} (${e.email})`,\n meta: e,\n };\n });\n }, [employees]);\n\n const standsOptions = useMemo<\n Array<OptionType<ITEPortal_Domain_Dto_ExhibitorStandDto>>\n >(() => {\n return stands.map((s) => {\n return {\n value: s.id,\n label: s.standNumber,\n meta: s,\n };\n });\n }, [stands]);\n\n useEffect(\n function updateDueToExhibitorChange() {\n const updateDueToExChange = async () => {\n if (!ex) {\n return;\n }\n\n const exhibitor = ex?.meta;\n\n if (!exhibitor?.id || !exhibitor?.priceListId) {\n dispatch({\n type: 'PREPARE',\n payload: {\n stands: [],\n sourceItems: [],\n employees: [],\n exhibitorId: exhibitor?.id,\n hasPriceList: false,\n },\n });\n\n return;\n }\n\n formInstance.resetField('employeeId');\n\n const exhibitorEmployees = Array.isArray(exhibitor.exhibitorEmployees)\n ? (exhibitor.exhibitorEmployees as Array<ITEPortal_Domain_Dto_Exhibitor_GetExhibitorEmployeeDto>)\n : [];\n\n console.log(\n exhibitorEmployees,\n !Array.isArray(employees),\n employees.length,\n employees.length === 0\n );\n\n // if (!Array.isArray(employees) || employees.length === 0) {\n // const exhibitorModel = await queryClient.fetchQuery(\n // QueryOptions.exhibitorQueryOptions({\n // exhibitionId: +exhibitionId,\n // exhibitorId: +exhibitor.id,\n // })\n // );\n //\n // if (Array.isArray(exhibitorModel.exhibitorEmployees)) {\n // exhibitorEmployees = exhibitorModel.exhibitorEmployees;\n // }\n // }\n\n const loadedItems =\n await typedAxios.priceListItem.getExhibitionsPriceListsItems({\n exhibitionId: +exhibitionId,\n priceListId: exhibitor.priceListId,\n });\n\n let loadedStands: ITEPortal_Domain_Dto_ExhibitorStandDto[] = [];\n\n if (exhibitor.id) {\n const exhibitorStands =\n await typedAxios.stand.getExhibitionsExhibitorsStands({\n exhibitionId: +exhibitionId,\n exhibitorId: exhibitor.id,\n });\n\n loadedStands = exhibitorStands;\n }\n\n dispatch({\n type: 'PREPARE',\n payload: {\n stands: loadedStands,\n sourceItems: loadedItems,\n employees: exhibitorEmployees,\n exhibitorId: exhibitor.id,\n hasPriceList: true,\n },\n });\n };\n\n updateDueToExChange();\n },\n [ex]\n );\n\n const addItem: CreateOrderContextType['addItem'] = (item) => {\n dispatch({\n type: 'ADD_ITEM',\n payload: item,\n });\n };\n\n const removeItem: CreateOrderContextType['removeItem'] = (item) => {\n dispatch({\n type: 'REMOVE_ITEM',\n payload: item,\n });\n };\n\n const createOrder = async () => {\n const isValid = await formInstance.trigger();\n\n if (!isValid) {\n return;\n }\n\n try {\n const selectedExhibitorId = formInstance.getValues('exhibitorId.value');\n const employeeId = formInstance.getValues('employeeId.value');\n const standId = formInstance.getValues('standId.value');\n\n const createdOrderId = await typedAxios.order.postOrdersExhibitors({\n exhibitorId: +selectedExhibitorId,\n requestBody: {\n exhibitionId: +exhibitionId,\n orderStatus: ORDER_STATUSES.Submitted,\n standId: +standId,\n products: selectedItems,\n employeeUserId: +employeeId,\n },\n });\n\n navigate({\n to: `/admin/exhibitions/${exhibitionId}/view/placed-orders/${createdOrderId}/edit`,\n });\n } catch (e) {\n toast.error(t('order-save-error'));\n\n console.dir(e);\n }\n };\n\n return (\n <CreateOrderContextProvider\n value={{\n addItem,\n removeItem,\n items: availableItems,\n selectedItems,\n createOrder,\n }}\n >\n <FormProvider {...formInstance}>\n {/* this looks odd, but, ensures that dropdown of the select doesn't overlapped and visible */}\n <Box paddingBottom={270}>\n <Stack spacing={4}>\n <SelectComponent\n label={t('exhibitor')}\n name=\"exhibitorId\"\n isRequired\n options={exhibitors}\n />\n {employeesOptions.length > 0 && (\n <SelectComponent\n label={t('employee')}\n name=\"employeeId\"\n isRequired\n options={employeesOptions}\n />\n )}\n {hasStands && (\n <SelectComponent\n name=\"standId\"\n isRequired\n label={t('stand')}\n options={standsOptions}\n />\n )}\n </Stack>\n {!hasPriceList && exhibitorId && (\n <NoPriceListsLink\n exhibitorId={+exhibitorId}\n exhibitionId={+exhibitionId}\n />\n )}\n {hasPriceList && !hasStands && exhibitorId && (\n <NoStandsLink\n exhibitionId={+exhibitionId}\n exhibitorId={exhibitorId}\n />\n )}\n\n {couldAddItems && <AddedToOrderItemsTable />}\n </Box>\n </FormProvider>\n </CreateOrderContextProvider>\n );\n};\n","import { Button } from '../../../../components/Buttons/Button/Button';\nimport { Box } from '@chakra-ui/react';\nimport React, { useState } from 'react';\nimport { useCreateOrderContext } from './CreateOrderContext';\nimport { useTranslation } from 'react-i18next';\n\nexport const CreateOrderButton = () => {\n const { t } = useTranslation();\n const { selectedItems, createOrder } = useCreateOrderContext();\n const [isLoading, toggleLoading] = useState(false);\n\n const hasItems = selectedItems.length > 0;\n\n const onClick = async () => {\n try {\n toggleLoading(true);\n\n await createOrder?.();\n } finally {\n toggleLoading(false);\n }\n };\n\n if (!hasItems) {\n return null;\n }\n\n return (\n <Box paddingTop=\"20px\" justifyContent=\"flex-end\" display=\"flex\">\n <Button\n colorScheme=\"primary\"\n isLoading={isLoading}\n disabled={isLoading}\n onClick={onClick}\n >\n {t('save')}\n </Button>\n </Box>\n );\n};\n","import { createContext, useContext } from 'react';\nimport {\n ITEPortal_Domain_Dto_AdminPriceListItem,\n ITEPortal_Domain_Dto_OrderItemDto,\n} from '../../../../api';\n\nexport type CreateOrderContextType = {\n addItem?: (item: ITEPortal_Domain_Dto_OrderItemDto) => void;\n removeItem?: (item: ITEPortal_Domain_Dto_OrderItemDto) => void;\n items: ITEPortal_Domain_Dto_AdminPriceListItem[];\n selectedItems: ITEPortal_Domain_Dto_OrderItemDto[];\n createOrder?: () => Promise<void>;\n};\n\nconst CreateOrderContext = createContext<CreateOrderContextType>({\n items: [],\n selectedItems: [],\n});\n\nexport const useCreateOrderContext = () => useContext(CreateOrderContext);\n\nexport const CreateOrderContextProvider = CreateOrderContext.Provider;\n","import { Alert, AlertIcon, Link } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\n\ntype NoStandsLinkPropsType = {\n exhibitionId: number;\n exhibitorId: number;\n};\n\nexport const NoPriceListsLink = (props: NoStandsLinkPropsType) => {\n const { t } = useTranslation();\n\n return (\n <Alert status=\"warning\" mt={4} mb={4} whiteSpace=\"break-spaces\">\n <AlertIcon />\n {t('no-price-lists-warning', {\n here: (\n <Link\n fontWeight=\"bolder\"\n textDecoration=\"underline\"\n target=\"_blank\"\n href={`/admin/exhibitions/${props.exhibitionId}/edit`}\n >\n {t('here')}\n </Link>\n ),\n postProcess: 'reactPostprocessor',\n })}\n </Alert>\n );\n};\n","import { useRBAC } from '@/features/rbac/useRBAC';\nimport { Alert, AlertIcon, Link } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\n\ntype NoStandsLinkPropsType = {\n exhibitionId: number;\n exhibitorId: number;\n};\n\nexport const NoStandsLink = (props: NoStandsLinkPropsType) => {\n const { t } = useTranslation();\n const { can } = useRBAC();\n\n return (\n <Alert status=\"warning\" mt={4} mb={4} whiteSpace=\"break-spaces\">\n <AlertIcon />\n {can('canAddStand')\n ? t('no-stands-warning', {\n here: (\n <Link\n fontWeight=\"bolder\"\n textDecoration=\"underline\"\n target=\"_blank\"\n href={`/admin/exhibitions/${props.exhibitionId}/view/personal-accounts/${props.exhibitorId}/edit/?tab=stands`}\n >\n {t('here')}\n </Link>\n ),\n postProcess: 'reactPostprocessor',\n })\n : t('no-stands-warning-without-link')}\n </Alert>\n );\n};\n","import { Box, Button } from '@chakra-ui/react';\nimport React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { useTranslation } from 'react-i18next';\nimport { AddItemToOrderModal } from './AddItemToOrderModal';\n\nconst AddButtonWrapper = styled(Box)`\n padding-bottom: 10px;\n display: flex;\n flex-direction: row;\n justify-content: end;\n gap: 20px;\n`;\n\nexport const OrderControls = () => {\n const { t } = useTranslation();\n const [isOpened, setIsOpened] = useState(false);\n\n return (\n <AddButtonWrapper>\n <Button colorScheme=\"red\" onClick={() => setIsOpened(true)}>\n {t('add-service')}\n </Button>\n {isOpened && (\n <AddItemToOrderModal\n items={[]}\n openConfirm={isOpened}\n closeModal={() => setIsOpened(false)}\n />\n )}\n </AddButtonWrapper>\n );\n};\n","import * as v from 'zod';\nimport type { ITEPortal_Domain_Dto_AdminExhibitorSummary } from '@/api';\n\nexport const CreateOrderFormSchema = v.object({\n exhibitorId: v.object({\n value: v.coerce.string(),\n label: v.string(),\n meta: v.custom<ITEPortal_Domain_Dto_AdminExhibitorSummary>(\n (data): data is ITEPortal_Domain_Dto_AdminExhibitorSummary => {\n return (\n typeof (data as ITEPortal_Domain_Dto_AdminExhibitorSummary)?.[\n 'id'\n ] === 'number'\n );\n }\n ),\n }),\n employeeId: v.object({\n value: v.coerce.string(),\n label: v.string(),\n }),\n standId: v.object({\n value: v.coerce.string(),\n label: v.string(),\n }),\n});\n\nexport type CreateOrderFormSchemaType = v.infer<typeof CreateOrderFormSchema>;\n","import React, { useState } from 'react';\nimport { Flex, Link, Button, Box, Text, Tooltip } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport {\n DeleteIcon,\n EditIcon,\n DownloadIcon,\n EmailIcon,\n InfoIcon,\n ArrowUpIcon,\n} from '@chakra-ui/icons';\nimport styled from 'styled-components';\n\nimport { Card } from '@/components/Card/Card';\nimport { Table } from '@/components/Table/Table';\nimport fetchApi from '@/utils/fetchAPI';\nimport { DELETE_ORDER_ITEM, GET_PDF_BY_ORDER } from '@/constants/endpoints';\nimport { EditOrderForm } from '@/pages/AdminPanel/PlacedOrders/EditOrder/EditOrderForm';\nimport { toast } from 'react-toastify';\nimport { IdType } from '@/model/common';\nimport { ConfirmModal } from '@/pages/ConfirmModal';\nimport { FetchMethods } from '@/utils/constants';\nimport { NumberColumnComponent } from '../shared/NumberColumnComponent';\nimport { editOrderRoute } from '../../../../features/Routing/protected/admin-exhibitions';\nimport { useRouter } from '@tanstack/react-router';\nimport { PersonalDiscount } from './PersonalDiscount';\nimport { MarkupManagement } from './MarkupManagement';\nimport { numberWithSpaces } from '../../../../utils/amountTransformation';\nimport { AsyncButton } from '../../../../components/AsyncButton';\nimport { FileUtils } from '../../../../utils/file-utils';\nimport { useSendOrderEmail } from './hooks/use-send-order-email';\nimport { Column, Row } from 'react-table';\nimport type { ITEPortal_Domain_Dto_OrderItemDto } from '../../../../api';\nimport { isNil } from '../../../../utils/is-nil';\nimport { useRBAC } from '@/features/rbac/useRBAC';\nimport { useExportOrder } from '@/pages/AdminPanel/PlacedOrders/hooks/use-export-order';\nimport { useExhibition } from '@/store/effector/exhibition';\n\nconst AddButtonWrapper = styled(Box)`\n padding-bottom: 10px;\n display: flex;\n flex-direction: row;\n justify-content: end;\n gap: 20px;\n flex-wrap: wrap;\n align-items: center;\n`;\n\nconst TotalRowContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 25px 25px 10px 0;\n min-width: 225px;\n`;\n\ninterface OrderOptionsType {\n row: Row<ITEPortal_Domain_Dto_OrderItemDto>;\n}\n\nexport const EditOrder = (): JSX.Element => {\n const router = useRouter();\n const { can } = useRBAC();\n const { order } = editOrderRoute.useLoaderData();\n const { orderId, exhibitionId } = editOrderRoute.useParams();\n const culture = localStorage.getItem('lang');\n const [openConfirm, setOpenConfirm] = useState(false);\n const [editTableData, setEditTableData] =\n useState<ITEPortal_Domain_Dto_OrderItemDto | null>(null);\n const [orderItem, setOrderItem] = useState<IdType>();\n const [openConfirmDeleteModal, setOpenConfirmDeleteModal] = useState(false);\n const { t } = useTranslation();\n const { requestSendOrderEmail } = useSendOrderEmail(orderId);\n const exhibition = useExhibition();\n const { openExportModal } = useExportOrder();\n\n const closeConfirmDeleteModal = () => setOpenConfirmDeleteModal(false);\n\n const closeModal = () => setOpenConfirm(false);\n\n const OrderRowOptions = ({ row }: OrderOptionsType) => {\n const rowValues = row.original;\n\n const editProduct = () => {\n setEditTableData(rowValues);\n setOpenConfirm(!openConfirm);\n };\n\n return (\n <Flex gap={4} flexDirection=\"row\">\n <Link onClick={editProduct}>\n <EditIcon />\n </Link>\n <Link\n onClick={() => {\n if (!isNil(rowValues.orderItemId)) {\n showDeleteModal(rowValues.orderItemId);\n }\n }}\n >\n <DeleteIcon />\n </Link>\n </Flex>\n );\n };\n\n const showDeleteModal = (id: IdType) => {\n setOrderItem(id);\n setOpenConfirmDeleteModal(!openConfirmDeleteModal);\n };\n\n const orderColumns = React.useMemo<\n Array<Column<ITEPortal_Domain_Dto_OrderItemDto>>\n >(\n () => [\n {\n Header: t('order-id'),\n accessor: 'id',\n width: '10%',\n },\n {\n Header: t('service-name'),\n accessor: 'productName',\n width: '30%',\n Cell: ({ row: { original } }) => {\n if (!original.included) {\n return <>{original.productName}</>;\n }\n\n return (\n <>\n {original.productName}{' '}\n <Tooltip\n label={t('included-into-price-of')}\n placement=\"top\"\n hasArrow\n >\n <InfoIcon color=\"brandColor\" />\n </Tooltip>\n </>\n );\n },\n },\n {\n accessor: 'orderItemId',\n show: false,\n },\n {\n Header: `${t('amount')}`,\n accessor: 'amount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.amount} />\n ),\n },\n {\n Header: `${t('dayAmountPlaceholder')}`,\n accessor: 'dayAmount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.dayAmount} />\n ),\n },\n {\n Header: `${t('personAmountPlaceholder')}`,\n accessor: 'peopleAmount',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.peopleAmount} />\n ),\n },\n {\n Header: `${t('language')}`,\n accessor: 'language',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <NumberColumnComponent value={values?.language} />\n ),\n },\n {\n Header: '',\n id: 'options',\n width: '5%',\n Cell: ({ row }) => <OrderRowOptions row={row} />,\n },\n ],\n []\n );\n\n const addProduct = () => {\n setEditTableData(null);\n setOpenConfirm(!openConfirm);\n };\n\n const downloadPDF = async () => {\n if (order.orderId) {\n try {\n const { data } = await fetchApi(GET_PDF_BY_ORDER(order.orderId), {\n method: FetchMethods.Get,\n responseType: 'blob',\n params: {\n culture,\n },\n });\n\n FileUtils.saveBlobAsFile(data, `exhibition-order-${order.orderId}.pdf`);\n } catch (e) {\n toast.error(t('unable-to-download', { object: 'PDF' }));\n }\n }\n };\n\n const deleteOrderItem = async () => {\n try {\n await fetchApi(DELETE_ORDER_ITEM(exhibitionId, orderId), {\n method: FetchMethods.Delete,\n params: {\n orderItemId: orderItem,\n },\n });\n\n toast.success(t('order-item-deleted'));\n\n router.invalidate();\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n }\n };\n\n return (\n <>\n <AddButtonWrapper>\n <AsyncButton colorScheme=\"red\" onClick={requestSendOrderEmail}>\n <EmailIcon mr={1} />\n {t('send-email')}\n </AsyncButton>\n {exhibition?.eventEditionId && (\n <AsyncButton onClick={openExportModal}>\n <ArrowUpIcon mr={1} />\n {t('bitrixExport')}\n </AsyncButton>\n )}\n <AsyncButton marginRight=\"auto\" onClick={downloadPDF}>\n <DownloadIcon mr={1} />\n {t('downloadPdf')}\n </AsyncButton>\n {can('canRemoveSurchargeFromOrder') && (\n <MarkupManagement order={order} />\n )}\n {can('canAddOrderPersonalDiscount') && (\n <PersonalDiscount order={order} />\n )}\n <Button colorScheme=\"red\" onClick={addProduct}>\n {t('add-service')}\n </Button>\n </AddButtonWrapper>\n <Card>\n {openConfirm && (\n <EditOrderForm\n openConfirm={openConfirm}\n closeModal={closeModal}\n editTableData={editTableData}\n />\n )}\n <Table columns={orderColumns} data={order.products || []} />\n <Flex justifyContent=\"flex-end\">\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('cartTotal')}</Text>\n <Text fontSize=\"md\" fontWeight=\"700\">\n {numberWithSpaces(\n order.orderSummary || 0,\n order.currency || 'RUB',\n false\n )}\n </Text>\n </TotalRowContainer>\n </Flex>\n {openConfirmDeleteModal && (\n <ConfirmModal\n modalMessage={t('delete-order-item-message')}\n isOpen={openConfirmDeleteModal}\n closeModal={closeConfirmDeleteModal}\n confirm={deleteOrderItem}\n />\n )}\n </Card>\n </>\n );\n};\n","import {\n FieldValues,\n useForm,\n FormProvider,\n useController,\n} from 'react-hook-form';\nimport {\n ButtonGroup,\n FormControl,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport Input from '@/components/Fields/Input';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'i18next';\nimport { toast } from 'react-toastify';\nimport { OptionType } from '@/model/common';\nimport { editOrderRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { useRouter } from '@tanstack/react-router';\nimport { typedAxios } from '@/api/typed-axios';\nimport {\n ITEPortal_Domain_Dto_AdminPriceListItem,\n ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto,\n} from '@/api';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n openConfirm: boolean;\n closeModal: () => void;\n editTableData?: any;\n}\n\nconst defaultValues = {\n id: null,\n amount: null,\n dayAmount: null,\n peopleAmount: null,\n language: null,\n};\n\nexport const EditOrderForm = ({\n openConfirm,\n closeModal,\n editTableData,\n}: AddBuildingTypeProductProps) => {\n const { orderId, exhibitionId } = editOrderRoute.useParams();\n const router = useRouter();\n const { items } = editOrderRoute.useLoaderData();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [editData, setEditData] = useState<any>();\n\n const products = useMemo(() => {\n return items.map((i) => ({\n value: i.name || i.id,\n label: `${i.name || i.id} (${i.displayName})`,\n meta: i,\n })) satisfies OptionType<ITEPortal_Domain_Dto_AdminPriceListItem>[];\n }, [items]);\n\n useEffect(() => {\n if (!editTableData) {\n setEditData(defaultValues);\n }\n\n if (editTableData) {\n const orderItemData = [] as any;\n\n Object.keys(editTableData).forEach((field) => {\n orderItemData[field] =\n field === 'id'\n ? {\n value: editTableData?.id,\n label: editTableData?.productName,\n }\n : editTableData[field];\n });\n\n setEditData(orderItemData);\n }\n }, [editTableData]);\n\n useEffect(() => {\n methods.reset({\n ...editData,\n });\n }, [editData]);\n\n const methods = useForm({\n mode: 'onBlur',\n });\n\n const {\n field: { ...idProps },\n } = useController({ name: 'id', control: methods?.control });\n\n const submitHandler = async (values: FieldValues) => {\n const id = values?.id?.value;\n const dayAmount = values?.dayAmount || 0;\n const peopleAmount = values?.peopleAmount || 0;\n const amount = values?.amount || 0;\n const language = values?.language || '';\n\n const data = {\n dayAmount,\n peopleAmount,\n language,\n amount,\n id,\n included: editTableData ? editTableData.included : undefined,\n } satisfies ITEPortal_Domain_Dto_OrderItem_CreateOrderItemDto;\n\n try {\n setIsSubmitting(true);\n\n if (editTableData) {\n await typedAxios.order.putExhibitionsOrders({\n orderId: +orderId,\n exhibitionId: +exhibitionId,\n orderItemId: editTableData.orderItemId,\n requestBody: data,\n });\n } else {\n await typedAxios.order.postExhibitionsOrders({\n orderId: +orderId,\n exhibitionId: +exhibitionId,\n requestBody: data,\n });\n }\n\n closeModal();\n router.invalidate();\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal\n isOpen={openConfirm}\n onClose={closeModal}\n size=\"xl\"\n scrollBehavior=\"inside\"\n isCentered\n >\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('add-product')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <SelectComponent\n label={useNameTranslate('service-name')}\n maxWidth=\"100%\"\n options={products}\n defaultValue={editData?.['id']}\n isRequired\n {...idProps}\n />\n <Input\n label={`${useNameTranslate('amount')} / ${useNameTranslate(\n 'sqm'\n )}`}\n maxWidth=\"100%\"\n defaultValue={editData?.['amount']}\n name=\"amount\"\n />\n <Input\n label={useNameTranslate('dayAmountPlaceholder')}\n maxWidth=\"100%\"\n defaultValue={editData?.['dayAmount']}\n name=\"dayAmount\"\n />\n <Input\n label={useNameTranslate('personAmountPlaceholder')}\n maxWidth=\"100%\"\n defaultValue={editData?.['peopleAmount']}\n name=\"peopleAmount\"\n />\n <Input\n label={useNameTranslate('language')}\n maxWidth=\"100%\"\n defaultValue={editData?.['language']}\n name=\"language\"\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(submitHandler)}\n disabled={isSubmitting}\n >\n {t('save')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\n\nimport InputNumber from '../../../../../components/Fields/InputNumber';\nimport { useTranslation } from 'react-i18next';\nimport { useEffect } from 'react';\nimport { IBaseOrder } from '../../../../../model/IBaseOrder';\nimport { ModalFactory } from '../../../../../components/Modal/api';\nimport { ITEPortal_Domain_Dto_Order_PersonalExtraChargeDto } from '../../../../../api';\nimport { isNil } from '../../../../../utils/is-nil';\n\nexport type EditChargeContextType =\n ITEPortal_Domain_Dto_Order_PersonalExtraChargeDto;\n\nexport const MarkupForm = ({ order }: { order: IBaseOrder }) => {\n const { t } = useTranslation();\n const instance = useForm<{ markup: number | null }>();\n\n useEffect(() => {\n instance.watch((value) => {\n ModalFactory.updateContext({\n personalExtraChargePercentage: value.markup,\n });\n });\n }, []);\n\n useEffect(() => {\n if (!isNil(order.personalExtraChargePercentage)) {\n instance.reset({\n markup: +order.personalExtraChargePercentage,\n });\n }\n }, [order]);\n\n return (\n <FormProvider {...instance}>\n <InputNumber\n name=\"markup\"\n label={t('markup')}\n addon=\"%\"\n max={100}\n min={0.1}\n step={0.1}\n precision={1}\n defaultValue={\n !isNil(order.personalExtraChargePercentage)\n ? order.personalExtraChargePercentage\n : undefined\n }\n />\n </FormProvider>\n );\n};\n","import { IBaseOrder } from '../../../../../model/IBaseOrder';\nimport { Button, Flex, Switch, Text } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { ModalFactory } from '../../../../../components/Modal/api';\nimport { EditChargeContextType, MarkupForm } from './MarkupForm';\nimport {\n useManageCommonExtraCharge,\n useManagePersonalExtraCharge,\n} from './use-order-extra-charge-management';\nimport { useRouter } from '@tanstack/react-router';\n\ntype VATManagementPropsType = {\n order: IBaseOrder;\n};\n\nexport const MarkupManagement = ({ order }: VATManagementPropsType) => {\n const router = useRouter();\n const { t } = useTranslation();\n const { toggleCommonExtraCharge } = useManageCommonExtraCharge();\n const { savePersonalExtraCharge } = useManagePersonalExtraCharge();\n\n const toggleCharge = () => {\n toggleCommonExtraCharge(order, () => {\n ModalFactory.close();\n router.invalidate();\n });\n };\n\n const addVAT = () => {\n ModalFactory.show({\n title: t('personal-markup'),\n Component: () => <MarkupForm order={order} />,\n onOk: async (context?: EditChargeContextType) => {\n if (!context) {\n return Promise.resolve();\n }\n\n return savePersonalExtraCharge(order, context, () => {\n router.invalidate();\n ModalFactory.close();\n });\n },\n okLabel: t('save'),\n });\n };\n\n return (\n <>\n <Flex alignItems=\"center\" justifyContent=\"space-between\">\n <Switch\n colorScheme=\"red\"\n isChecked={order.removeExtraCharge === true}\n onChange={toggleCharge}\n />\n <Text ml=\"10px\">{t('remove-markup')}</Text>\n </Flex>\n <Button\n colorScheme=\"red\"\n onClick={addVAT}\n isDisabled={order.removeExtraCharge === true}\n >\n + {t('personal-markup')}{' '}\n {order.hasPersonalExtraCharge &&\n `(${order.personalExtraChargePercentage}%)`}\n </Button>\n </>\n );\n};\n","import { IBaseOrder } from '../../../../../model/IBaseOrder';\nimport { ModalFactory } from '../../../../../components/Modal/api';\nimport { useTranslation } from 'react-i18next';\nimport { typedAxios } from '../../../../../api/typed-axios';\nimport { isNil } from '../../../../../utils/is-nil';\nimport { toast } from 'react-toastify';\nimport { EditChargeContextType } from './MarkupForm';\n\nexport const useManageCommonExtraCharge = () => {\n const { t } = useTranslation();\n const toggleCommonExtraCharge = (order: IBaseOrder, onSaved?: () => void) => {\n if (isNil(order.orderId)) {\n return;\n }\n\n ModalFactory.confirm({\n Component: () => <>{t('delete-markup-confirmation')}</>,\n onOk: async () => {\n const chargeState = order.removeExtraCharge !== true;\n\n try {\n if (isNil(order.orderId)) {\n return;\n }\n\n await typedAxios.order.putOrdersRemoveExtraCharge({\n orderId: order.orderId,\n requestBody: {\n removeExtraCharge: chargeState,\n },\n });\n\n onSaved?.();\n } catch {\n toast.error(\n chargeState === false\n ? t('unable-to-remove-common-extra-charge')\n : t('unable-to-add-common-extra-charge')\n );\n }\n },\n });\n };\n\n return {\n toggleCommonExtraCharge,\n };\n};\n\nexport const useManagePersonalExtraCharge = () => {\n const savePersonalExtraCharge = async (\n order: IBaseOrder,\n values: EditChargeContextType,\n onSaved?: () => void\n ) => {\n if (order.orderId && !isNil(values.personalExtraChargePercentage)) {\n await typedAxios.order.putOrdersPersonalExtraCharge({\n orderId: order.orderId,\n requestBody: {\n personalExtraChargePercentage: values.personalExtraChargePercentage,\n },\n });\n\n onSaved?.();\n }\n };\n\n return {\n savePersonalExtraCharge,\n };\n};\n","import { Button } from '../../../../../components/Buttons/Button/Button';\nimport { useTranslation } from 'react-i18next';\nimport { useState } from 'react';\nimport { PersonalDiscountForm } from './PersonalDiscountForm';\nimport { IBaseOrder } from '../../../../../model/IBaseOrder';\n\ntype PersonalDiscountPropsType = {\n order: IBaseOrder;\n};\n\nexport const PersonalDiscount = (props: PersonalDiscountPropsType) => {\n const { order } = props;\n const { t } = useTranslation();\n const [isEditModalOpened, toggleOpenState] = useState(false);\n\n if (order.isDraft) {\n return null;\n }\n\n return (\n <>\n <Button colorScheme=\"red\" onClick={() => toggleOpenState(true)}>\n {order.hasDiscount\n ? t('edit-personal-discount')\n : `+ ${t('apply-personal-discount')}`}\n </Button>\n {isEditModalOpened && (\n <PersonalDiscountForm\n order={order}\n onClose={() => toggleOpenState(false)}\n />\n )}\n </>\n );\n};\n","import {\n ButtonGroup,\n Flex,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '../../../../../hooks/useStringName';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Button } from '../../../../../components/Buttons/Button/Button';\nimport { t } from 'i18next';\nimport React, { useEffect, useState } from 'react';\nimport { IBaseOrder } from '../../../../../model/IBaseOrder';\n\nimport * as v from 'zod';\nimport InputNumber from '../../../../../components/Fields/InputNumber';\nimport { SubmitHandler } from 'react-hook-form/dist/types/form';\nimport { typedAxios } from '../../../../../api/typed-axios';\nimport i18n from '../../../../../i18n';\nimport { SelectComponent } from '../../../../../components/MultiSelect/MultiSelect';\nimport { PERSONAL_DISCOUNT_TYPE } from '../../../../../constants/order';\nimport { editOrderRoute } from '../../../../../features/Routing/protected/admin-exhibitions';\nimport { toast } from 'react-toastify';\nimport { isNil } from '../../../../../utils/is-nil';\nimport { useRouter } from '@tanstack/react-router';\n\ntype PersonalDiscountFormPropsType = {\n order: IBaseOrder;\n onClose: () => void;\n};\n\nconst schema = v.object({\n typeOfDiscount: v.object({\n value: v.number(),\n label: v.string(),\n }),\n discount: v.preprocess(\n (value: unknown) => {\n if (value === '') {\n return value;\n }\n\n return typeof value === 'string' ? +value : value;\n },\n v.number({\n required_error: i18n.t('required-field'),\n invalid_type_error: i18n.t('required-field'),\n })\n ),\n});\n\ntype FormValues = v.infer<typeof schema>;\n\nconst SubmitTypes = {\n Delete: 'delete',\n Save: 'save',\n} as const;\n\ntype SubmitType = (typeof SubmitTypes)[keyof typeof SubmitTypes];\n\nexport const PersonalDiscountForm = (props: PersonalDiscountFormPropsType) => {\n const router = useRouter();\n const { order, onClose } = props;\n const isUpdate = !isNil(order.personalDiscount);\n const [submitType, setSubmitType] = useState<SubmitType | null>(null);\n const isDeleting = submitType === SubmitTypes.Delete;\n const isSaving = submitType === SubmitTypes.Save;\n\n const { currency } = editOrderRoute.useLoaderData();\n const instance = useForm<FormValues>({\n resolver: zodResolver(schema),\n });\n\n const [discountType, setDiscountType] = useState<number>(\n order.typeOfDiscount || PERSONAL_DISCOUNT_TYPE.PERCENT\n );\n const isPercentSelected = discountType === PERSONAL_DISCOUNT_TYPE.PERCENT;\n\n const save: SubmitHandler<FormValues> = async (values) => {\n if (!order.orderId) {\n return;\n }\n\n const typeOfDiscount = values.typeOfDiscount.value;\n const value = values.discount;\n\n if (\n typeOfDiscount === PERSONAL_DISCOUNT_TYPE.AMOUNT &&\n !isNil(order.orderSummary) &&\n value > order.orderSummary\n ) {\n instance.setError('discount', {\n message: t('discount-could-not-exceed-total'),\n });\n\n return;\n }\n\n if (typeOfDiscount === PERSONAL_DISCOUNT_TYPE.PERCENT && value > 100) {\n instance.setError('discount', {\n message: t('discount-gte-100'),\n });\n\n return;\n }\n\n setSubmitType(SubmitTypes.Save);\n\n try {\n await typedAxios.order[\n isUpdate ? 'putOrdersPersonalDiscount' : 'postOrdersPersonalDiscount'\n ]({\n orderId: order.orderId,\n requestBody: {\n // @ts-expect-error desc\n typeOfDiscount,\n value,\n },\n });\n\n toast.success(t('personal-discount-applied'));\n\n router.invalidate();\n onClose();\n } catch (e) {\n instance.setError('discount', {\n message: t('unable-to-apply-discount'),\n });\n } finally {\n setSubmitType(null);\n }\n };\n\n const removeDiscount = async () => {\n if (!order.orderId) {\n return;\n }\n\n setSubmitType(SubmitTypes.Delete);\n\n try {\n await typedAxios.order.deleteOrdersPersonalDiscount({\n orderId: order.orderId,\n });\n toast.success(t('personal-discount-removed'));\n\n router.invalidate();\n onClose();\n } catch {\n toast.error(t('unable-to-remove-discount'));\n } finally {\n setSubmitType(null);\n }\n };\n\n useEffect(() => {\n const defaultDiscountType =\n order.typeOfDiscount || PERSONAL_DISCOUNT_TYPE.PERCENT;\n const label =\n defaultDiscountType === PERSONAL_DISCOUNT_TYPE.PERCENT\n ? t('percent')\n : t('fixed-amount');\n\n instance.reset({\n discount: order.personalDiscount,\n typeOfDiscount: {\n value: defaultDiscountType,\n label: label,\n },\n });\n }, [order]);\n\n useEffect(() => {\n instance.watch((value, { name }) => {\n if (name === 'typeOfDiscount') {\n setDiscountType(\n value.typeOfDiscount?.value || PERSONAL_DISCOUNT_TYPE.PERCENT\n );\n }\n });\n }, []);\n\n return (\n <Modal\n isOpen\n size=\"xl\"\n onClose={onClose}\n scrollBehavior=\"inside\"\n isCentered\n >\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('personal-discount')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...instance}>\n <Flex gap=\"20px\" flexDirection=\"column\">\n <SelectComponent\n name=\"typeOfDiscount\"\n label={t('type-of-personal-discount')}\n options={[\n {\n value: PERSONAL_DISCOUNT_TYPE.PERCENT,\n label: t('percent'),\n },\n {\n value: PERSONAL_DISCOUNT_TYPE.AMOUNT,\n label: t('fixed-amount'),\n },\n ]}\n />\n <InputNumber\n maxWidth=\"100%\"\n label={t('personal-discount')}\n name=\"discount\"\n max={isPercentSelected ? 100 : undefined}\n precision={isPercentSelected ? 2 : 0}\n step={isPercentSelected ? 0.1 : 1}\n keepWithinRange\n addon={isPercentSelected ? '%' : currency}\n />\n </Flex>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <Button colorScheme=\"secondary\" onClick={onClose}>\n {t('cancel')}\n </Button>\n {order.hasDiscount && (\n <Button\n colorScheme=\"secondary\"\n disabled={isDeleting}\n isLoading={isDeleting}\n onClick={removeDiscount}\n >\n {t('remove-personal-discount')}\n </Button>\n )}\n <Button\n colorScheme=\"red\"\n disabled={isSaving}\n isLoading={isSaving}\n onClick={instance.handleSubmit(save)}\n >\n {t(\n isUpdate\n ? 'update-personal-discount'\n : 'apply-personal-discount'\n )}\n </Button>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { toast } from 'react-toastify';\nimport { typedAxios } from '../../../../../api/typed-axios';\nimport { ModalFactory } from '../../../../../components/Modal/api';\nimport { useTranslation } from 'react-i18next';\nimport { TextArea } from '../../../../../components/TextArea/TextArea';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport * as v from 'zod';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport i18n from '../../../../../i18n';\nimport { Nullable } from '../../../../../types/support-types';\n\nconst Schema = v.object({\n comment: v.string().min(1, {\n message: i18n.t('required-field'),\n }),\n});\n\ntype FormValues = v.infer<typeof Schema>;\n\nexport const useSendOrderEmail = (orderId: Nullable<string>) => {\n const { t } = useTranslation();\n\n const instance = useForm<FormValues>({\n resolver: zodResolver(Schema),\n });\n\n const sendEmail = async (values: FormValues) => {\n try {\n if (!orderId) {\n return;\n }\n\n await typedAxios.order.postOrdersSendOrderChangedConfirmation({\n orderId: +orderId,\n requestBody: values.comment,\n });\n\n toast.success(t('success-email'));\n\n ModalFactory.close();\n instance.reset();\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n }\n };\n\n const requestSendOrderEmail = () => {\n if (!orderId) {\n return;\n }\n\n ModalFactory.show({\n title: t('order-comments'),\n Component: () => (\n <FormProvider {...instance}>\n <TextArea<FormValues> name=\"comment\" />\n </FormProvider>\n ),\n okLabel: t('send-email'),\n onOk: async () => {\n return instance.handleSubmit(sendEmail)();\n },\n });\n };\n\n return {\n requestSendOrderEmail,\n };\n};\n","import { useForm, FormProvider, useController } from 'react-hook-form';\nimport {\n ButtonGroup,\n FormControl,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'i18next';\nimport { FetchMethods } from '@/utils/constants';\nimport { STATUS_CONFIG } from '@/constants/admin-pages';\nimport fetchApi from '@/utils/fetchAPI';\nimport { CHANGE_ORDER_STATUS } from '@/constants/endpoints';\nimport { toast } from 'react-toastify';\nimport { OptionType } from '@/model/common';\nimport { ITEPortal_Domain_Dto_AdminOrderSummary } from '@/api';\nimport { isNil } from '@/utils/is-nil';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ntype FormValues = {\n orderStatus: OptionType;\n};\n\ninterface AddBuildingTypeProductProps {\n openConfirm: boolean;\n closeModal: () => void;\n refresh: () => void;\n editTableData?: ITEPortal_Domain_Dto_AdminOrderSummary;\n}\n\nexport const EditStatusModal = ({\n openConfirm,\n closeModal,\n refresh,\n editTableData,\n}: AddBuildingTypeProductProps) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [editData, setEditData] = useState<any>();\n const culture = localStorage.getItem('lang');\n const methods = useForm<FormValues>({\n mode: 'onBlur',\n });\n\n useEffect(() => {\n const orderData = editTableData;\n\n if (orderData?.orderStatus) {\n const value = STATUS_CONFIG.find(\n (status: OptionType) => status?.value === orderData.orderStatus\n );\n\n if (value) {\n methods.setValue('orderStatus', value);\n }\n\n setEditData(orderData);\n }\n }, [editTableData]);\n\n useEffect(() => {\n methods.reset({\n ...editData,\n });\n }, [editData]);\n\n const {\n field: { ...statusProps },\n } = useController({ name: 'orderStatus', control: methods.control });\n\n const submitHandler = async (values: FormValues) => {\n const status = values?.orderStatus?.value;\n\n if (!editTableData?.orderId || isNil(status)) {\n return;\n }\n\n setIsSubmitting(true);\n try {\n await fetchApi(CHANGE_ORDER_STATUS(editTableData?.orderId), {\n method: FetchMethods.Put,\n params: { orderStatus: status, culture },\n });\n\n closeModal();\n refresh();\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Modal isOpen={openConfirm} onClose={closeModal} size=\"xl\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('edit-order')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <SelectComponent\n label={useNameTranslate('status')}\n options={STATUS_CONFIG}\n defaultValue={editData?.['status']}\n isRequired\n {...statusProps}\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(submitHandler)}\n disabled={isSubmitting}\n isLoading={isSubmitting}\n >\n {t('save')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport React, { useState } from 'react';\nimport { Box, Flex, Link, Select } from '@chakra-ui/react';\nimport {\n DeleteIcon,\n DownloadIcon,\n EditIcon,\n ExternalLinkIcon,\n} from '@chakra-ui/icons';\nimport dayjs from 'dayjs';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport { Card } from '@/components/Card/Card';\nimport { Table } from '@/components/Table/Table';\nimport styled from 'styled-components';\nimport { Column, Row } from 'react-table';\nimport { ToExhibition } from '@/layout/AdminAdditionalPanel/ToExhibition';\nimport fetchApi from '@/utils/fetchAPI';\nimport { GET_PDF_BY_ORDER, PLACED_ORDERS } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { useNavigate } from '@tanstack/react-router';\nimport { STATUS_CONFIG } from '@/constants/admin-pages';\nimport { EditStatusModal } from '@/pages/AdminPanel/PlacedOrders/EditStatus';\nimport {\n type ITEPortal_Domain_Dto_AdminOrderSummary,\n ITEPortal_Domain_Dto_OrderDto,\n} from '@/api';\nimport { useRBAC } from '@/features/rbac/useRBAC';\nimport { ConfirmModal } from '../../ConfirmModal';\nimport { toast } from 'react-toastify';\nimport { typedAxios } from '../../../api/typed-axios';\nimport { isNil } from '../../../utils/is-nil';\nimport { useTableLoader } from '../../../components/Table/useTableLoader';\nimport { Button } from '../../../components/Buttons/Button/Button';\nimport { FileUtils } from '../../../utils/file-utils';\nimport { viewExhibitionPlacedOrdersRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { ORDER_STATUSES } from '@/constants/order';\nimport { OrderBadge } from '@/components/OrderBadge';\n\nconst OptionWrapper = styled(Flex)`\n flex-direction: row;\n gap: 20px;\n`;\n\nconst ToExhibitionWrapper = styled(Box)`\n padding-bottom: 20px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n`;\n\ninterface PlacedOrdersOptionsType {\n row: Row<ITEPortal_Domain_Dto_AdminOrderSummary>;\n}\n\nexport const PlacedOrders = () => {\n const { can } = useRBAC();\n const culture = localStorage.getItem('lang');\n const { exhibitionId } = viewExhibitionPlacedOrdersRoute.useParams();\n const { exhibitorId, orderStatus } =\n viewExhibitionPlacedOrdersRoute.useSearch();\n const { t } = useTranslation();\n const [isEditModalOpened, setIsEditModalOpened] = useState(false);\n const [orderIdToDelete, setOrderIdToDelete] = useState<number | null>(null);\n const [editTableData, setEditTableData] =\n useState<ITEPortal_Domain_Dto_AdminOrderSummary | null>(null);\n const navigate = useNavigate();\n const canCreateOrder = can('canCreateOrder');\n\n const {\n data: orders,\n refresh,\n isLoading,\n } = useTableLoader<ITEPortal_Domain_Dto_AdminOrderSummary>({\n resource: PLACED_ORDERS,\n additionalPrams: { exhibitionId, culture, exhibitorId, orderStatus },\n });\n\n const showPdfByOrder = async (\n order: ITEPortal_Domain_Dto_OrderDto['orderId']\n ) => {\n try {\n const { data } = await fetchApi(GET_PDF_BY_ORDER(order), {\n method: FetchMethods.Get,\n responseType: 'blob',\n params: {\n culture,\n },\n });\n\n FileUtils.saveBlobAsFile(data, `exhibition-order-${order}.pdf`);\n } catch {\n toast.error(t('unable-to-download', { object: 'PDF' }));\n }\n };\n\n const DownloadPDF = ({ row }: PlacedOrdersOptionsType) => {\n const orderId = row.original.orderId;\n\n return (\n <Link onClick={() => showPdfByOrder(orderId)}>\n <DownloadIcon />\n </Link>\n );\n };\n\n const openModal = () => {\n setIsEditModalOpened(!isEditModalOpened);\n };\n\n const PlacedOrdersOptions = ({ row }: PlacedOrdersOptionsType) => {\n const orderId = row.original.orderId;\n\n if (!orderId) {\n return null;\n }\n\n const canDeleteOrder = can('canDeleteOrder');\n const canChangeOrderStatus = can('canChangeOrderStatus');\n\n const editStatus = () => {\n setEditTableData(row.original);\n openModal();\n };\n\n return (\n <OptionWrapper>\n <Link onClick={() => editOrder(orderId)}>\n <ExternalLinkIcon />\n </Link>\n {canChangeOrderStatus && (\n <Link onClick={editStatus}>\n <EditIcon />\n </Link>\n )}\n\n {canDeleteOrder && (\n <Link onClick={() => setOrderIdToDelete(orderId)}>\n <DeleteIcon />\n </Link>\n )}\n </OptionWrapper>\n );\n };\n\n const editOrder = (id: ITEPortal_Domain_Dto_AdminOrderSummary['orderId']) => {\n navigate({\n to: '/admin/exhibitions/$exhibitionId/view/placed-orders/$orderId/edit',\n params: {\n exhibitionId: exhibitionId,\n orderId: id,\n },\n });\n };\n\n const deleteOrder = async () => {\n try {\n if (isNil(orderIdToDelete)) {\n return;\n }\n\n await typedAxios.order.deleteOrders({\n orderId: orderIdToDelete,\n });\n\n refresh();\n } catch {\n toast.error(\n t('unable-to-delete', {\n entity: t('order').toLowerCase(),\n })\n );\n }\n };\n\n const closeModal = () => setIsEditModalOpened(false);\n\n const placedOrdersColumns = React.useMemo<\n Record<any, Column<ITEPortal_Domain_Dto_AdminOrderSummary>>\n >(() => {\n return {\n id: {\n Header: `${t('orderNumber')}`,\n accessor: 'orderId',\n width: '5%',\n },\n exhibitorName: {\n Header: `${t('orderName')}`,\n accessor: 'exhibitorName',\n width: '30%',\n },\n status: {\n Header: `${t('status')}`,\n accessor: 'orderStatus',\n width: '10%',\n Cell: ({ value }) => <OrderBadge status={value} />,\n },\n createdDate: {\n Header: `${t('createDate')}`,\n accessor: 'createdDate',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <>\n {values?.createdDate\n ? dayjs(values?.createdDate).format('DD.MM.YYYY')\n : ''}\n </>\n ),\n },\n lastModifiedDate: {\n Header: `${t('editDate')}`,\n accessor: 'lastModifiedDate',\n width: '10%',\n Cell: ({ row: { values } }: any) => (\n <>\n {values?.lastModifiedDate\n ? dayjs(values?.lastModifiedDate).format('DD.MM.YYYY')\n : ''}\n </>\n ),\n },\n orderSummary: {\n Header: () => (\n <Box w=\"100%\" textAlign=\"right\">\n {t('orderTotal')}\n </Box>\n ),\n accessor: 'orderSummary',\n width: '20%',\n Cell: ({ row }: PlacedOrdersOptionsType) => {\n return (\n <Box\n whiteSpace=\"nowrap\"\n textAlign=\"right\"\n >{`${row?.values?.orderSummary} ${row?.values?.currency}`}</Box>\n );\n },\n },\n currency: {\n accessor: 'currency',\n show: false,\n },\n downloadPdf: {\n Header: `${t('downloadPdf')}`,\n id: 'downloadPdf',\n width: '10%',\n Cell: ({ row }) => <DownloadPDF row={row} />,\n },\n options: {\n Header: '',\n id: 'options',\n width: '5%',\n Cell: ({ row }: PlacedOrdersOptionsType) => (\n <PlacedOrdersOptions row={row} />\n ),\n },\n };\n }, []);\n\n const getOrderColumns = () => {\n const {\n id,\n exhibitorName,\n status,\n createdDate,\n lastModifiedDate,\n orderSummary,\n currency,\n downloadPdf,\n options,\n } = placedOrdersColumns;\n\n if (!can('canEditOrders')) {\n return [\n id,\n exhibitorName,\n status,\n createdDate,\n lastModifiedDate,\n orderSummary,\n currency,\n downloadPdf,\n ];\n }\n\n return [\n id,\n exhibitorName,\n status,\n createdDate,\n lastModifiedDate,\n orderSummary,\n currency,\n downloadPdf,\n options,\n ];\n };\n\n return (\n <LoaderWrapper loading={isLoading}>\n <ToExhibitionWrapper>\n <ToExhibition />\n <Select\n defaultValue={orderStatus}\n bg=\"white\"\n onChange={(event) => {\n navigate({\n to: './',\n search: {\n orderStatus: event.target.value\n ? +event.target.value\n : undefined,\n exhibitorId,\n },\n });\n }}\n placeholder={t('status')}\n width=\"200px\"\n ml=\"auto\"\n mr={4}\n >\n {STATUS_CONFIG.map((cfg) => {\n if (cfg.value === ORDER_STATUSES.Undefined) {\n return null;\n }\n\n return (\n <option key={cfg.value} value={cfg.value}>\n {cfg.label}\n </option>\n );\n })}\n </Select>\n {canCreateOrder && (\n <Button\n colorScheme=\"red\"\n onClick={() => {\n navigate({\n to: './create',\n search: {\n exhibitorId: exhibitorId ?? undefined,\n },\n });\n }}\n >\n + {t('createNewOrder')}\n </Button>\n )}\n </ToExhibitionWrapper>\n\n <Card>\n <Table columns={getOrderColumns()} data={orders} />\n {editTableData && isEditModalOpened && (\n <EditStatusModal\n openConfirm={isEditModalOpened}\n closeModal={closeModal}\n refresh={refresh}\n editTableData={editTableData}\n />\n )}\n {orderIdToDelete && (\n <ConfirmModal\n modalMessage={t('delete-order')}\n isOpen={!!orderIdToDelete}\n closeModal={() => setOrderIdToDelete(null)}\n confirm={deleteOrder}\n />\n )}\n </Card>\n </LoaderWrapper>\n );\n};\n","import { FormProvider, UseFormReturn } from 'react-hook-form';\nimport React, { useEffect, useState } from 'react';\nimport { Stack } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { OptionType } from '@/model/common';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto } from '@/api/models/ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto';\nimport { ExportToBitrixFormValidationSchemaType } from '@/pages/AdminPanel/PlacedOrders/hooks/use-export-order';\n\nexport const ExportToBitrixForm = ({\n instance,\n}: {\n instance: UseFormReturn<ExportToBitrixFormValidationSchemaType>;\n}) => {\n const { t } = useTranslation();\n const [companyId, setCompanyId] = useState<number>();\n const [bankAccounts, setBankAccounts] =\n useState<\n Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto>\n >\n >();\n\n const { data: companyOptions = [] } = useQuery(\n QueryOptions.loadCompanyOptions()\n );\n\n useEffect(() => {\n const fetchBankAccounts = async () => {\n if (companyId) {\n const bankAccountsData =\n await typedAxios.iteCompany.getCompaniesBankAccounts({\n companyId,\n });\n\n const bankAccountOptions = bankAccountsData.map((ba) => ({\n value: ba.id,\n label: ba.title,\n meta: ba,\n })) satisfies Array<\n OptionType<ITEPortal_Domain_Dto_Bitrix_EventEdition_EventEditionDropdownDto>\n >;\n\n setBankAccounts(bankAccountOptions);\n }\n };\n\n if (companyId) {\n instance.resetField('bankAccount');\n fetchBankAccounts();\n }\n }, [companyId]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <SelectComponent<ExportToBitrixFormValidationSchemaType>\n label={t('company')}\n options={companyOptions}\n isRequired\n name=\"company\"\n onChange={({ value }) => setCompanyId(value)}\n />\n {companyId && (\n <SelectComponent<ExportToBitrixFormValidationSchemaType>\n label={t('bank-account')}\n options={bankAccounts}\n isRequired\n name=\"bankAccount\"\n />\n )}\n </Stack>\n </FormProvider>\n );\n};\n","import React, { useCallback } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { useTranslation } from 'react-i18next';\nimport { useForm } from 'react-hook-form';\nimport { ApiError } from '@/api';\nimport { toast } from 'react-toastify';\nimport { ExportToBitrixForm } from '@/pages/AdminPanel/PlacedOrders/exportOrderForm';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query';\nimport { editOrderRoute } from '@/features/Routing/protected/admin-exhibitions';\nimport { typedAxios } from '@/api/typed-axios';\n\nconst OptionSchema = vali.object(\n {\n value: vali.coerce.number(),\n label: vali.string(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst ValidationSchema = vali.object({\n company: OptionSchema,\n bankAccount: OptionSchema,\n});\n\nexport type ExportToBitrixFormValidationSchemaType = vali.infer<\n typeof ValidationSchema\n>;\n\nexport const useExportOrder = () => {\n const { t } = useTranslation();\n const { orderId } = editOrderRoute.useParams();\n const queryClient = new QueryClient();\n\n const instance = useForm<ExportToBitrixFormValidationSchemaType>({\n resolver: zodResolver(ValidationSchema),\n mode: 'onChange',\n });\n\n const exportOrder = async (\n values: ExportToBitrixFormValidationSchemaType\n ) => {\n try {\n console.log(values);\n await typedAxios.bitrix.postBitrixOrders({\n orderId: +orderId,\n requestBody: {\n bankAccountId: values?.bankAccount?.value,\n iteCompanyId: values?.company?.value,\n },\n });\n\n ModalFactory.close();\n toast.success(t('order-exported-successfully'));\n } catch (e) {\n if (e instanceof ApiError) {\n const message = e.body;\n\n if (message && typeof message === 'string') {\n toast.error(message);\n } else {\n toast.error(t('error-occurred'));\n }\n }\n }\n };\n\n const openExportModal = useCallback(() => {\n ModalFactory.show({\n title: t('bitrixExport'),\n Component: () => (\n <QueryClientProvider client={queryClient}>\n <ExportToBitrixForm instance={instance} />\n </QueryClientProvider>\n ),\n okLabel: t('export'),\n onOk: async () => {\n return instance.handleSubmit(exportOrder)();\n },\n });\n }, []);\n\n return {\n openExportModal,\n };\n};\n","import { Text } from '@chakra-ui/react';\n\ninterface NumberStringType {\n value: number;\n}\n\nexport const NumberColumnComponent = ({ value }: NumberStringType) => {\n const columnValue = value !== 0 ? value : '';\n\n return <Text>{columnValue}</Text>;\n};\n","import { FieldValues, useForm, FormProvider } from 'react-hook-form';\nimport {\n ButtonGroup,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n FormControl,\n Stack,\n} from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { toast } from 'react-toastify';\n\nimport unitsOfMeasurement from '@/i18n/lang/unit-of-measurement/en.json';\nimport { Checkbox } from '@/components/Fields/Checkbox';\nimport { typedObjectKeys } from '@/utils/typed-object-keys';\nimport { Strict } from '@/types/support-types';\nimport { OptionType } from '@/model/common';\nimport { typedAxios } from '@/api/typed-axios';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport { isNil } from '@/utils/is-nil';\nimport { TKey } from '@/i18n/types';\nimport { useTranslation } from 'react-i18next';\nimport { useParentCategoriesLoader } from '@/pages/AdminPanel/ServiceDirectory/EditCategoryForm/use-parent-categories-loader';\nimport { isOption } from '@/utils/is-option';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { ServiceDictionaryValidationSchema } from '@/pages/AdminPanel/ServiceDirectory/types';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface EditEntityModalProps<T> {\n openConfirm: boolean;\n closeModal: () => void;\n refresh: () => void;\n editTableData: Required<T> | undefined;\n parentCategoryName: ITEPortal_Domain_Dto_CategoryDto['name'];\n}\n\nconst defaultValues = {\n id: null,\n parentCategoryName: null,\n imageUrl: null,\n descriptionRu: null,\n descriptionEn: null,\n};\n\ntype FormValues = Omit<ITEPortal_Domain_Dto_CategoryDto, 'unitOfMeasure'> & {\n displayNameRu: string;\n displayNameEn: string;\n descriptionRu: string;\n descriptionEn: string;\n unitOfMeasure: OptionType;\n isDecimal: boolean;\n parentCategoryName?: ITEPortal_Domain_Dto_CategoryDto['name'];\n};\n\nexport const EditCategoryForm = <\n T extends Strict<ITEPortal_Domain_Dto_CategoryDto>\n>({\n openConfirm,\n closeModal,\n refresh,\n editTableData,\n}: EditEntityModalProps<T>) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [editData, setEditData] = useState<any>();\n const isEdit = Boolean(editTableData);\n const { t } = useTranslation();\n\n const { data: parentCategories = [] } = useParentCategoriesLoader();\n\n useEffect(\n function prepareEditData() {\n if (!editTableData) {\n setEditData(defaultValues);\n }\n\n if (editTableData) {\n const fetchData = async () => {\n const categoryID = editTableData.name;\n\n if (isNil(categoryID)) {\n return;\n }\n\n setIsSubmitting(true);\n try {\n const data = await typedAxios.category.getCategoriesResources({\n name: categoryID,\n });\n\n const editDataWithResources: FormValues = {\n id: editTableData.id,\n name: editTableData.name,\n imageUrl: editTableData.imageUrl,\n parentCategoryName: editTableData.parentCategoryId,\n displayNameRu: data?.ru?.name || '',\n displayNameEn: data?.en?.name || '',\n descriptionRu: data?.ru?.description || '',\n descriptionEn: data?.en?.description || '',\n isDecimal: editTableData.isDecimal,\n unitOfMeasure: {\n value: editTableData.unitOfMeasure,\n label: t(editTableData.unitOfMeasure as TKey),\n },\n };\n\n typedObjectKeys(editDataWithResources).forEach((field) => {\n methods.setValue(field, editDataWithResources[field]);\n });\n\n setEditData(editDataWithResources);\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n fetchData();\n }\n },\n [editTableData]\n );\n\n useEffect(\n function setFormValues() {\n methods.reset({\n ...editData,\n });\n },\n [editData]\n );\n\n const methods = useForm<FormValues>({\n mode: 'onBlur',\n resolver: zodResolver(ServiceDictionaryValidationSchema),\n });\n\n const unitOptions = [\n {\n value: '',\n label: '',\n },\n ...typedObjectKeys(unitsOfMeasurement).map((unit) => {\n return {\n value: unit,\n label: t(unit),\n };\n }),\n ];\n\n const submitHandler = async (values: FieldValues) => {\n const method = editTableData ? 'put' : 'post';\n\n try {\n setIsSubmitting(true);\n\n console.log(values);\n\n await typedAxios.category[`${method}Categories`]({\n requestBody: {\n name: values.name,\n isDecimal: !!values?.isDecimal,\n unitOfMeasure: values?.unitOfMeasure?.value,\n parentCategoryName: isOption(values.parentCategoryName)\n ? values.parentCategoryName.value\n : values.parentCategoryName,\n resources: [\n {\n key: 'name',\n value: values?.displayNameRu || '',\n cultureName: 'ru',\n },\n {\n key: 'name',\n value: values?.displayNameEn || '',\n cultureName: 'en',\n },\n {\n key: 'description',\n value: values?.descriptionRu || '',\n cultureName: 'ru',\n },\n {\n key: 'description',\n value: values?.descriptionEn || '',\n cultureName: 'en',\n },\n ],\n },\n });\n\n if (values?.['imageUrl'] && typeof values?.['imageUrl'][0] !== 'string') {\n typedAxios.category.postCategoriesImage({\n name: values.name,\n formData: {\n image: values?.['imageUrl'][0],\n },\n });\n }\n\n toast.success(t('saved'));\n closeModal();\n refresh();\n } catch (error: any) {\n // processErrorsObject(error);\n toast.error(t('error-occurred'));\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <Drawer isOpen={openConfirm} onClose={closeModal} size=\"lg\">\n <DrawerOverlay />\n <DrawerContent>\n <DrawerHeader>\n {t(isEdit ? 'edit-category' : 'new-category')}\n </DrawerHeader>\n <DrawerCloseButton />\n <DrawerBody>\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input<FormValues>\n label=\"ID\"\n maxWidth=\"100%\"\n name=\"name\"\n disabled={!!editTableData}\n isRequired\n />\n <Input<FormValues>\n label={`${t('category-name')} (RU)`}\n maxWidth=\"100%\"\n name=\"displayNameRu\"\n isRequired\n />\n <Input<FormValues>\n label={`${t('category-name')} (EN)`}\n maxWidth=\"100%\"\n name=\"displayNameEn\"\n isRequired\n />\n <SelectComponent<FormValues>\n label={t('parent-category-name')}\n // @ts-expect-error desc\n options={parentCategories}\n name=\"parentCategoryName\"\n />\n <SelectComponent<FormValues>\n name=\"unitOfMeasure\"\n options={unitOptions}\n label={t('unit-of-measurement')}\n isRequired\n />\n <Checkbox<FormValues> name=\"isDecimal\">\n {t('decimal-values')}\n </Checkbox>\n <UploadFileDropzone<FormValues>\n label={t('upload-image')}\n name=\"imageUrl\"\n defaultValue={editData?.['imageUrl']}\n />\n <TextArea<FormValues>\n label={`${t('category-description')} (RU)`}\n name=\"descriptionRu\"\n />\n <TextArea<FormValues>\n label={`${t('category-description')} (EN)`}\n name=\"descriptionEn\"\n defaultValue={editData?.['descriptionEn']}\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n </DrawerBody>\n <DrawerFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <OrderButton\n colorScheme=\"red\"\n onClick={methods.handleSubmit(() =>\n submitHandler(methods.getValues())\n )}\n disabled={isSubmitting}\n >\n {t('save')}\n </OrderButton>\n <OrderButton colorScheme=\"secondary\" onClick={closeModal}>\n {t('cancel')}\n </OrderButton>\n </ButtonGroup>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { useQuery } from '@tanstack/react-query';\nimport { typedAxios } from '@/api/typed-axios';\n\nexport const useParentCategoriesLoader = () => {\n return useQuery({\n queryKey: ['parent-categories'],\n queryFn: async () => {\n const data = await typedAxios.category.getCategoriesParentCategories();\n\n const categories = data?.map((category) => {\n return {\n value: category?.name,\n label: category?.displayName,\n };\n });\n\n return categories || [];\n },\n });\n};\n","import { ITEPortal_Domain_Dto_ProductDto } from '@/api';\nimport { PRODUCT_TYPES, ProductTypesType } from '@/constants/categorie';\nimport { Fragment, useEffect, useMemo } from 'react';\nimport { Stack } from '@chakra-ui/react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { OptionType } from '@/model/common';\nimport { EditBuildingProductFieldset } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditBuildingTypeProduct';\nimport { EditTemporaryStaffProductFieldset } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditTemporaryStaffProduct';\nimport { EditDefaultProductFieldset } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditDefaultProduct';\nimport i18n from '@/i18n';\n\ntype AbstractEditProductModalFormPropsType = {\n product: ITEPortal_Domain_Dto_ProductDto | null;\n productType?: ProductTypesType | null;\n};\n\nconst productTypeOptions: Array<OptionType> = [\n {\n value: PRODUCT_TYPES.COMMON,\n label: i18n.t('product-type-common'),\n },\n {\n value: PRODUCT_TYPES.BUILDING,\n label: i18n.t('product-type-select-building'),\n },\n {\n value: PRODUCT_TYPES.TEMPORARY_STAFF,\n label: i18n.t('product-type-temporary-staff'),\n },\n];\n\nexport const AbstractEditProductDrawerForm = (\n props: AbstractEditProductModalFormPropsType\n) => {\n const { product, productType } = props;\n const formInstance = useForm<{\n productType: { value: ProductTypesType; label: string };\n }>();\n const productTypeFromSelect = formInstance.watch('productType');\n\n const Fieldset = useMemo(() => {\n switch (productTypeFromSelect?.value) {\n case 'select-building': {\n return EditBuildingProductFieldset;\n }\n\n case 'temporary-staff': {\n return EditTemporaryStaffProductFieldset;\n }\n\n case 'common': {\n return EditDefaultProductFieldset;\n }\n\n default: {\n return Fragment;\n }\n }\n }, [productTypeFromSelect]);\n\n useEffect(\n function setProductType() {\n if (productType) {\n formInstance.setValue(\n 'productType',\n // @ts-expect-error desc\n productTypeOptions.find((po) => po.value === productType) ||\n productTypeOptions[0]\n );\n }\n },\n [productType]\n );\n\n return (\n <Stack spacing={5}>\n {!product?.id && (\n <FormProvider {...formInstance}>\n <SelectComponent\n label={i18n.t('product-type')}\n name=\"productType\"\n disabled={Boolean(productType)}\n options={productTypeOptions}\n />\n </FormProvider>\n )}\n {Fieldset === Fragment ? (\n <Fragment />\n ) : (\n <Fieldset editTableData={product} />\n )}\n </Stack>\n );\n};\n","import { useForm, FormProvider } from 'react-hook-form';\nimport { FormControl, Stack } from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport Input from '@/components/Fields/Input';\nimport React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport fetchApi from '@/utils/fetchAPI';\nimport { EDIT_PRODUCT_RESOURCES } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { toast } from 'react-toastify';\nimport { BUILDING_TYPES } from '@/constants/admin-pages';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { OptionType } from '@/model/common';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport {\n ITEPortal_Domain_Dto_AddProductDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport {\n BuildingProductValidationSchema,\n BuildingProductValidationSchemaType,\n CommonProductValidationSchemaType,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport {\n editProductApi,\n useProductForm,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n editTableData: ITEPortal_Domain_Dto_ProductDto | null;\n}\n\nconst mapValues = (\n values: BuildingProductValidationSchemaType\n): ITEPortal_Domain_Dto_AddProductDto => {\n const buildingTypes = values?.buildingTypes?.map(\n (type: OptionType) => type?.value\n );\n\n return {\n name: values?.name,\n categoryName: CATEGORY_TYPES.SELECT_BUILDING,\n // @ts-expect-error to think how to map Enum to zod type\n buildingTypes: buildingTypes,\n resources: [\n {\n key: 'name',\n value: values?.displayNameRu || '',\n cultureName: 'ru',\n },\n {\n key: 'name',\n value: values?.displayNameEn || '',\n cultureName: 'en',\n },\n {\n key: 'description',\n value: values?.descriptionRu || '',\n cultureName: 'ru',\n },\n {\n key: 'description',\n value: values?.descriptionEn || '',\n cultureName: 'en',\n },\n {\n key: 'imageDescription',\n value: values?.imageDescriptionRu || '',\n cultureName: 'ru',\n },\n {\n key: 'imageDescription',\n value: values?.imageDescriptionEn || '',\n cultureName: 'en',\n },\n {\n key: 'additionalNotes',\n value: values?.additionalNotesRu || '',\n cultureName: 'ru',\n },\n {\n key: 'additionalNotes',\n value: values?.additionalNotesEn || '',\n cultureName: 'en',\n },\n ],\n };\n};\n\nexport const EditBuildingProductFieldset = ({\n editTableData,\n}: AddBuildingTypeProductProps) => {\n const culture = localStorage.getItem('lang');\n\n const methods = useForm<BuildingProductValidationSchemaType>({\n mode: 'onBlur',\n resolver: zodResolver(BuildingProductValidationSchema),\n });\n\n const { categoryOptions } = useProductForm();\n\n useEffect(() => {\n editProductApi.setFormInstance({\n map: mapValues,\n formInstance: methods,\n });\n }, []);\n\n useEffect(() => {\n if (editTableData) {\n const fetchData = async () => {\n const productID = editTableData?.name;\n\n if (!productID) {\n return;\n }\n\n try {\n const { data } = await fetchApi(EDIT_PRODUCT_RESOURCES(productID), {\n method: FetchMethods.Get,\n params: {\n culture,\n },\n });\n const buildingTypeValues = editTableData?.buildingTypes?.map(\n (type: number) => {\n const buildingTypeLabel = BUILDING_TYPES.find(\n (dictionaryType) => dictionaryType.value === type\n )?.label;\n\n return {\n value: type,\n label: buildingTypeLabel,\n };\n }\n );\n\n const editDataWithResources = {\n name: editTableData?.name,\n imageUrls: editTableData?.imageUrls,\n displayNameRu: data?.ru?.name,\n displayNameEn: data?.en?.name,\n buildingTypes: buildingTypeValues,\n descriptionRu: data?.ru?.description,\n descriptionEn: data?.en?.description,\n imageDescriptionRu: data?.ru?.imageDescription,\n imageDescriptionEn: data?.en?.imageDescription,\n additionalNotesRu: data?.ru?.additionalNotes,\n additionalNotesEn: data?.en?.additionalNotes,\n categoryName: categoryOptions.find(\n (ct) => ct.value === editTableData.categoryName\n ),\n } as any;\n\n methods.reset(editDataWithResources);\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n }\n };\n\n fetchData();\n }\n }, [editTableData]);\n\n return (\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input<BuildingProductValidationSchemaType>\n label=\"ID\"\n maxWidth=\"100%\"\n name=\"name\"\n disabled={Boolean(editTableData)}\n isRequired\n />\n <Input<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('service-name')} (RU)`}\n maxWidth=\"100%\"\n name=\"displayNameRu\"\n isRequired\n />\n <Input<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('service-name')} (EN)`}\n maxWidth=\"100%\"\n name=\"displayNameEn\"\n isRequired\n />\n <SelectComponent<BuildingProductValidationSchemaType>\n label={useNameTranslate('building-type')}\n options={BUILDING_TYPES}\n closeMenuOnSelect={false}\n isMulti\n isRequired\n name=\"buildingTypes\"\n />\n <SelectComponent<CommonProductValidationSchemaType>\n label={useNameTranslate('category-name')}\n options={categoryOptions}\n isRequired\n name=\"categoryName\"\n />\n <UploadFileDropzone<BuildingProductValidationSchemaType>\n label={useNameTranslate('upload-image')}\n defaultValue={editTableData?.imageUrls?.join('\\n')}\n multiple={true}\n name=\"imageUrls\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('image-description')} (RU)`}\n name=\"imageDescriptionRu\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('image-description')} (EN)`}\n name=\"imageDescriptionEn\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('service-description')} (RU)`}\n name=\"descriptionRu\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('service-description')} (EN)`}\n name=\"descriptionEn\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('additional-notes')} (RU)`}\n name=\"additionalNotesRu\"\n />\n <TextArea<BuildingProductValidationSchemaType>\n label={`${useNameTranslate('additional-notes')} (EN)`}\n name=\"additionalNotesEn\"\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { useForm, FormProvider } from 'react-hook-form';\nimport { FormControl, Stack } from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { BUILDING_TYPES } from '@/constants/admin-pages';\nimport { useTranslation } from 'react-i18next';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { useQuery } from '@tanstack/react-query';\nimport {\n ITEPortal_Domain_Dto_AddProductDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport { useCommonProductEditLoader } from '@/pages/AdminPanel/ServiceDirectory/EditProductForm/useCommonProductEditLoader';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport {\n CommonProductValidationSchema,\n CommonProductValidationSchemaType,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport {\n editProductApi,\n useProductForm,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\nimport { OptionType } from '@/model/common';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n editTableData: ITEPortal_Domain_Dto_ProductDto | null;\n}\n\nconst mapValues = (\n values: CommonProductValidationSchemaType\n): ITEPortal_Domain_Dto_AddProductDto => {\n const buildingTypes = values?.buildingTypes?.map(\n (type: OptionType) => type?.value\n );\n\n return {\n name: values.name,\n // @ts-expect-error to think how to map Enum to zod type\n buildingTypes: buildingTypes,\n linkedProductIds: Array.isArray(values.linkedProductIds)\n ? values.linkedProductIds.map((opt) => +opt.value)\n : [],\n categoryName: values.categoryName?.value as string,\n resources: [\n {\n key: 'name',\n value: values?.displayNameRu || '',\n cultureName: 'ru',\n },\n {\n key: 'name',\n value: values?.displayNameEn || '',\n cultureName: 'en',\n },\n {\n key: 'description',\n value: values?.descriptionRu || '',\n cultureName: 'ru',\n },\n {\n key: 'description',\n value: values?.descriptionEn || '',\n cultureName: 'en',\n },\n ],\n };\n};\n\nexport const EditDefaultProductFieldset = ({\n editTableData,\n}: AddBuildingTypeProductProps) => {\n const { t } = useTranslation();\n const { data: dependencyOptions } = useQuery(\n QueryOptions.loadPriceListItemsShort()\n );\n\n const { categoryOptions, categoryName } = useProductForm();\n\n console.log({ categoryName });\n\n const { data: editData } = useCommonProductEditLoader(\n editTableData,\n categoryName\n );\n\n console.log(editData);\n\n const methods = useForm<CommonProductValidationSchemaType>({\n mode: 'onBlur',\n resolver: zodResolver(CommonProductValidationSchema),\n });\n\n useEffect(() => {\n methods.reset({\n ...editData,\n });\n }, [editData]);\n\n useEffect(() => {\n editProductApi.setFormInstance({\n formInstance: methods,\n map: mapValues,\n });\n }, []);\n\n return (\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input<CommonProductValidationSchemaType>\n label=\"ID\"\n maxWidth=\"100%\"\n name=\"name\"\n disabled={Boolean(editTableData?.id)}\n isRequired\n />\n <Input<CommonProductValidationSchemaType>\n label={`${t('service-name')} (RU)`}\n maxWidth=\"100%\"\n name=\"displayNameRu\"\n isRequired\n />\n <Input<CommonProductValidationSchemaType>\n label={`${t('service-name')} (EN)`}\n maxWidth=\"100%\"\n name=\"displayNameEn\"\n isRequired\n />\n <SelectComponent<CommonProductValidationSchemaType>\n label={t('building-type')}\n options={BUILDING_TYPES}\n closeMenuOnSelect={false}\n name=\"buildingTypes\"\n isMulti\n isRequired\n />\n <SelectComponent<CommonProductValidationSchemaType>\n label={t('category-name')}\n options={categoryOptions}\n isRequired\n name=\"categoryName\"\n />\n <UploadFileDropzone<CommonProductValidationSchemaType>\n label={t('upload-image')}\n defaultValue={editData?.imageUrls?.join('\\n')}\n multiple={true}\n name=\"imageFiles\"\n />\n <TextArea<CommonProductValidationSchemaType>\n label={`${t('service-description')} (RU)`}\n name=\"descriptionRu\"\n />\n <TextArea<CommonProductValidationSchemaType>\n label={`${t('service-description')} (EN)`}\n name=\"descriptionEn\"\n />\n <SelectComponent<CommonProductValidationSchemaType>\n name=\"linkedProductIds\"\n label={t('dependencies')}\n options={dependencyOptions}\n isMulti\n />\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import {\n Button,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n} from '@chakra-ui/react';\nimport {\n editProductApi,\n useProductForm,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\nimport { AbstractEditProductDrawerForm } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/AbstractEditProductDrawerForm';\nimport { useTranslation } from 'react-i18next';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { useCommonProductSave } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useCommonProductSave';\nimport { CommonProductValidationSchemaType } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport { queryClient } from '@/features/query';\nimport { useEffect } from 'react';\n\nexport const EditProductDrawer = () => {\n const { categoryId, product, productType, isOpened, map, formInstance } =\n useProductForm();\n const { t } = useTranslation();\n\n const { mutateAsync, isSuccess } =\n useCommonProductSave<CommonProductValidationSchemaType>();\n\n const handleSubmit = async () => {\n if (!formInstance || typeof map !== 'function') {\n return;\n }\n\n const isValid = await formInstance.trigger();\n\n if (!isValid) {\n return;\n }\n\n const values = formInstance.getValues();\n\n return mutateAsync({\n isUpdate: Boolean(product?.id),\n values,\n map: map,\n });\n };\n\n useEffect(\n function refetchProductsData() {\n if (isSuccess) {\n queryClient\n .refetchQueries({\n queryKey: ['category-products', categoryId],\n })\n .then(() => {\n editProductApi.close();\n });\n }\n },\n [isSuccess]\n );\n\n return (\n <Drawer\n size=\"lg\"\n isOpen={isOpened}\n placement=\"right\"\n onClose={() => editProductApi.close()}\n >\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n <DrawerHeader>\n {product?.id ? t('edit-product') : t('add-product')}\n </DrawerHeader>\n\n <DrawerBody>\n <AbstractEditProductDrawerForm\n product={product}\n productType={productType}\n />\n </DrawerBody>\n\n <DrawerFooter>\n <Button\n variant=\"outline\"\n mr={3}\n onClick={() => editProductApi.close()}\n >\n {t('cancel')}\n </Button>\n <AsyncButton colorScheme=\"blue\" onClick={handleSubmit}>\n {t('save')}\n </AsyncButton>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { useForm, FormProvider } from 'react-hook-form';\nimport { FormControl, Stack } from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport Input from '@/components/Fields/Input';\nimport React, { useEffect } from 'react';\nimport styled from 'styled-components';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport fetchApi from '@/utils/fetchAPI';\nimport { EDIT_PRODUCT_RESOURCES } from '@/constants/endpoints';\nimport { FetchMethods, FieldTypeConfig } from '@/utils/constants';\nimport { toast } from 'react-toastify';\nimport { OptionType } from '@/model/common';\nimport { BUILDING_TYPES } from '@/constants/admin-pages';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport {\n CommonProductValidationSchemaType,\n TemporaryStaffValidationSchema,\n TemporaryStaffValidationSchemaType,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport {\n ITEPortal_Domain_Dto_AddProductDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport {\n editProductApi,\n useProductForm,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\ninterface AddBuildingTypeProductProps {\n editTableData: ITEPortal_Domain_Dto_ProductDto | null;\n}\n\nconst mapData = (\n values: TemporaryStaffValidationSchemaType\n): ITEPortal_Domain_Dto_AddProductDto => {\n const buildingTypes = values?.buildingTypes?.map(\n (type: OptionType) => type?.value\n );\n\n return {\n name: values?.name,\n categoryName: CATEGORY_TYPES.TEMPORARY_STAFF,\n fieldType: values?.fieldType?.value + '',\n // @ts-expect-error to think how to map Enum to zod type\n buildingTypes: buildingTypes,\n resources: [\n {\n key: 'name',\n value: values?.displayNameRu || '',\n cultureName: 'ru',\n },\n {\n key: 'name',\n value: values?.displayNameEn || '',\n cultureName: 'en',\n },\n {\n key: 'description',\n value: values?.descriptionRu || '',\n cultureName: 'ru',\n },\n {\n key: 'description',\n value: values?.descriptionEn || '',\n cultureName: 'en',\n },\n ],\n };\n};\n\nexport const EditTemporaryStaffProductFieldset = ({\n editTableData,\n}: AddBuildingTypeProductProps) => {\n const culture = localStorage.getItem('lang');\n const { categoryOptions } = useProductForm();\n\n useEffect(() => {\n if (editTableData) {\n const fetchData = async () => {\n const productID = editTableData?.name;\n\n if (!productID) {\n return;\n }\n\n const fieldTypeEditLabel = FieldTypeConfig.find(\n (type: OptionType) => type.value === editTableData?.fieldType\n )?.label;\n\n try {\n const { data } = await fetchApi(EDIT_PRODUCT_RESOURCES(productID), {\n method: FetchMethods.Get,\n params: {\n culture,\n },\n });\n const buildingTypeValues = editTableData?.buildingTypes?.map(\n (type: number) => {\n const buildingTypeLabel = BUILDING_TYPES.find(\n (dictionaryType) => dictionaryType.value === type\n )?.label;\n\n return {\n value: type,\n label: buildingTypeLabel,\n };\n }\n );\n\n const editDataWithResources: TemporaryStaffValidationSchemaType = {\n name: editTableData?.name,\n buildingTypes: buildingTypeValues,\n displayNameRu: data?.ru?.name,\n displayNameEn: data?.en?.name,\n descriptionRu: data?.ru?.description,\n descriptionEn: data?.en?.description,\n fieldType: {\n value: editTableData?.fieldType,\n label: fieldTypeEditLabel,\n },\n categoryName: categoryOptions.find(\n (ct) => ct.value === editTableData.categoryName\n ),\n } as any;\n\n methods.reset(editDataWithResources);\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n }\n };\n\n fetchData();\n }\n }, [editTableData]);\n\n useEffect(() => {\n // @ts-expect-error todo investigate type error\n editProductApi.setFormInstance({\n formInstance: methods,\n map: mapData,\n });\n }, []);\n\n const methods = useForm<TemporaryStaffValidationSchemaType>({\n mode: 'onBlur',\n resolver: zodResolver(TemporaryStaffValidationSchema),\n });\n\n return (\n <FormProvider {...methods}>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input<TemporaryStaffValidationSchemaType>\n label=\"ID\"\n maxWidth=\"100%\"\n name=\"name\"\n disabled={Boolean(editTableData)}\n isRequired\n />\n <SelectComponent<TemporaryStaffValidationSchemaType>\n label={useNameTranslate('building-type')}\n options={BUILDING_TYPES}\n closeMenuOnSelect={false}\n isMulti\n isRequired\n name=\"buildingTypes\"\n />\n <Input<TemporaryStaffValidationSchemaType>\n label={`${useNameTranslate('service-name')} (RU)`}\n maxWidth=\"100%\"\n name=\"displayNameRu\"\n isRequired\n />\n <Input<TemporaryStaffValidationSchemaType>\n label={`${useNameTranslate('service-name')} (EN)`}\n maxWidth=\"100%\"\n name=\"displayNameEn\"\n isRequired\n />\n <SelectComponent<CommonProductValidationSchemaType>\n label={useNameTranslate('category-name')}\n options={categoryOptions}\n isRequired\n name=\"categoryName\"\n />\n <TextArea<TemporaryStaffValidationSchemaType>\n label={`${useNameTranslate('service-description')} (RU)`}\n name=\"descriptionRu\"\n />\n <TextArea<TemporaryStaffValidationSchemaType>\n label={`${useNameTranslate('service-description')} (EN)`}\n name=\"descriptionEn\"\n />\n <SelectComponent<TemporaryStaffValidationSchemaType>\n label={useNameTranslate('additional-field')}\n options={FieldTypeConfig}\n isRequired\n name=\"fieldType\"\n />\n </FormControlWrapper>\n </Stack>\n </FormProvider>\n );\n};\n","import { useMutation } from '@tanstack/react-query';\nimport { ApiError, ITEPortal_Domain_Dto_AddProductDto } from '@/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport fetchApi from '@/utils/fetchAPI';\nimport { SAVE_PRODUCT_IMAGES } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { CommonProductValidationSchemaType } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport { useTranslation } from 'react-i18next';\n\nexport const useCommonProductSave = <\n T extends CommonProductValidationSchemaType\n>() => {\n const { t } = useTranslation();\n\n return useMutation({\n mutationKey: ['save-common-product'],\n mutationFn: async (opts: {\n values: T;\n isUpdate: boolean;\n map: (v: T) => ITEPortal_Domain_Dto_AddProductDto;\n }) => {\n const { values, isUpdate, map } = opts;\n const categoryName = values.categoryName?.value as string;\n const productData = map(values);\n\n try {\n if (isUpdate) {\n await typedAxios.product.putProducts({\n requestBody: { ...productData, categoryName },\n });\n } else {\n await typedAxios.product.postProducts({\n requestBody: { ...productData, categoryName },\n });\n }\n\n const filesData = values.imageFiles || values.imageUrls;\n\n if (filesData && filesData[0] instanceof File) {\n const formData = new FormData();\n\n filesData.forEach((file) => formData.append('images', file));\n\n await fetchApi(\n SAVE_PRODUCT_IMAGES(values?.name),\n {\n method: FetchMethods.Post,\n data: formData,\n },\n { 'Content-Type': 'multipart/form-data' }\n );\n }\n\n toast.success(t('product-saved-successfully'));\n } catch (error) {\n if (error instanceof ApiError && typeof error.body === 'string') {\n toast.error(error.body);\n }\n }\n },\n });\n};\n","import {\n ITEPortal_Domain_Dto_AddProductDto,\n ITEPortal_Domain_Dto_CategoryDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport { createApi, createStore } from 'effector';\nimport { useUnit } from 'effector-react';\nimport { UseFormReturn } from 'react-hook-form/dist/types';\nimport {\n BuildingProductValidationSchemaType,\n CommonProductValidationSchemaType,\n TemporaryStaffValidationSchemaType,\n} from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/validation-schemas';\nimport { ProductTypesType } from '@/constants/categorie';\nimport { useQuery } from '@tanstack/react-query';\nimport { QueryOptions } from '@/features/query/query-options';\n\nconst $editProduct = createStore<{\n isOpened: boolean;\n product: ITEPortal_Domain_Dto_ProductDto | null;\n productType?: ProductTypesType | null;\n categoryName?: ITEPortal_Domain_Dto_CategoryDto['name'];\n categoryId?: ITEPortal_Domain_Dto_CategoryDto['id'] | null;\n formInstance: UseFormReturn<\n | CommonProductValidationSchemaType\n | TemporaryStaffValidationSchemaType\n | BuildingProductValidationSchemaType\n > | null;\n map:\n | ((\n values:\n | CommonProductValidationSchemaType\n | TemporaryStaffValidationSchemaType\n | BuildingProductValidationSchemaType\n ) => ITEPortal_Domain_Dto_AddProductDto)\n | null;\n}>({\n categoryName: null,\n categoryId: null,\n isOpened: false,\n product: null,\n formInstance: null,\n productType: null,\n map: null,\n});\n\nexport const editProductApi = createApi($editProduct, {\n open: (\n state,\n payload: {\n product: ITEPortal_Domain_Dto_ProductDto | null;\n productType?: ProductTypesType | null;\n categoryName?: ITEPortal_Domain_Dto_CategoryDto['name'];\n categoryId?: ITEPortal_Domain_Dto_CategoryDto['id'];\n }\n ) => {\n return {\n ...state,\n product: payload.product,\n productType: payload.productType,\n categoryName: payload.categoryName,\n categoryId: payload.categoryId,\n isOpened: true,\n };\n },\n\n setFormInstance: (\n state,\n payload: {\n formInstance?: UseFormReturn<\n | CommonProductValidationSchemaType\n | TemporaryStaffValidationSchemaType\n | BuildingProductValidationSchemaType\n >;\n map: (\n values:\n | CommonProductValidationSchemaType\n | TemporaryStaffValidationSchemaType\n | BuildingProductValidationSchemaType\n ) => ITEPortal_Domain_Dto_AddProductDto;\n }\n ) => {\n return {\n ...state,\n ...payload,\n };\n },\n\n close: () => {\n return {\n isOpened: false,\n product: null,\n formInstance: null,\n productType: null,\n map: null,\n categoryName: null,\n categoryId: null,\n };\n },\n});\n\nexport const useProductForm = () => {\n const { data: categoryOptions = [] } = useQuery(\n QueryOptions.loadCategoryOptions()\n );\n\n return {\n ...useUnit($editProduct),\n categoryOptions,\n };\n};\n","import { ITEPortal_Domain_Dto_ProductDto } from '@/api';\nimport {\n CATEGORY_TYPES,\n PRODUCT_TYPES,\n ProductTypesType,\n} from '@/constants/categorie';\nimport i18n from '@/i18n';\n\nexport const CreateProductUtils = {\n getProductType: (product: ITEPortal_Domain_Dto_ProductDto | null) => {\n if (!product) {\n return null;\n }\n\n const productCategory = product.categoryName;\n\n switch (productCategory) {\n case CATEGORY_TYPES.SELECT_BUILDING: {\n return PRODUCT_TYPES.BUILDING;\n }\n\n case CATEGORY_TYPES.TEMPORARY_STAFF: {\n return PRODUCT_TYPES.TEMPORARY_STAFF;\n }\n\n default: {\n return PRODUCT_TYPES.COMMON;\n }\n }\n },\n\n getCreateButtonLabelByType: (productType: ProductTypesType | null) => {\n switch (productType) {\n case PRODUCT_TYPES.BUILDING: {\n return i18n.t('add-service-for-buildings');\n }\n\n case PRODUCT_TYPES.TEMPORARY_STAFF: {\n return i18n.t('add-service-for-temporary-staff');\n }\n\n default: {\n return i18n.t('add-service');\n }\n }\n },\n};\n","import * as vali from 'zod';\nimport i18n from '@/i18n';\n\nconst OptionSchema = vali.object(\n {\n value: vali.union([vali.coerce.string(), vali.number()]),\n label: vali.coerce.string().nullable(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst SchemaWithImages = vali.object({\n imageUrls: vali\n .array(vali.union([vali.string(), vali.instanceof(File)]))\n .optional()\n .nullable(),\n imageFiles: vali.array(vali.instanceof(File)).optional().nullable(),\n});\n\nexport const SharedProductValidationSchema = vali.object({\n name: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .min(1, {\n message: i18n.t('required-field'),\n }),\n displayNameRu: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .min(1, {\n message: i18n.t('required-field'),\n }),\n displayNameEn: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .min(1, {\n message: i18n.t('required-field'),\n }),\n buildingTypes: vali.array(OptionSchema, {\n required_error: i18n.t('required-field'),\n }),\n descriptionRu: vali.coerce.string().optional().nullable(),\n descriptionEn: vali.coerce.string().optional().nullable(),\n categoryName: OptionSchema,\n});\n\nexport const CommonProductValidationSchema = vali\n .object({\n linkedProductIds: vali.array(OptionSchema).optional(),\n })\n .merge(SharedProductValidationSchema)\n .merge(SchemaWithImages);\n\nexport const BuildingProductValidationSchema = vali\n .object({\n imageDescriptionRu: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .optional()\n .nullable(),\n imageDescriptionEn: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .optional()\n .nullable(),\n additionalNotesRu: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .optional()\n .nullable(),\n additionalNotesEn: vali\n .string({\n invalid_type_error: i18n.t('required-field'),\n })\n .optional()\n .nullable(),\n })\n .merge(SharedProductValidationSchema)\n .merge(SchemaWithImages);\n\nexport const TemporaryStaffValidationSchema = vali\n .object({\n fieldType: OptionSchema,\n })\n .merge(SharedProductValidationSchema);\n\nexport type CommonProductValidationSchemaType = vali.infer<\n typeof CommonProductValidationSchema\n>;\nexport type BuildingProductValidationSchemaType = vali.infer<\n typeof BuildingProductValidationSchema\n>;\nexport type TemporaryStaffValidationSchemaType = vali.infer<\n typeof TemporaryStaffValidationSchema\n>;\n","import { BUILDING_TYPES } from '@/constants/admin-pages';\nimport { useQuery } from '@tanstack/react-query';\nimport { ITEPortal_Domain_Dto_ProductDto } from '@/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { CommonProductValidationSchemaType } from '@/pages/AdminPanel/ServiceDirectory/EditProductForm/types';\nimport { OptionType } from '@/model/common';\nimport { useProductForm } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\n\nexport const useCommonProductEditLoader = (\n product: ITEPortal_Domain_Dto_ProductDto | null,\n categoryName?: string | null\n) => {\n const { categoryOptions } = useProductForm();\n\n return useQuery<CommonProductValidationSchemaType>({\n queryKey: ['edit-product', product?.id],\n queryFn: async () => {\n if (!product?.name) {\n // @ts-expect-error desc\n return {\n categoryName: categoryOptions.find((ct) => categoryName === ct.value),\n } as CommonProductValidationSchemaType;\n }\n\n const resources = await typedAxios.product.getProductsResources({\n name: product?.name,\n });\n\n const buildingTypeValues = product?.buildingTypes?.map((type: number) => {\n const buildingTypeLabel = BUILDING_TYPES.find(\n (dictionaryType) => dictionaryType.value === type\n )?.label;\n\n return {\n value: type,\n label: buildingTypeLabel,\n } satisfies OptionType;\n });\n\n const editDataWithResources: CommonProductValidationSchemaType = {\n name: product.name,\n displayNameRu: resources?.ru?.name,\n displayNameEn: resources?.en?.name,\n // @ts-expect-error to think how to map Enum to zod type\n buildingTypes: buildingTypeValues || [],\n descriptionRu: resources?.ru?.description,\n descriptionEn: resources?.en?.description,\n imageUrls: product.imageUrls || [],\n // @ts-expect-error desc\n categoryName: categoryOptions.find((ct) =>\n categoryName\n ? categoryName === ct.value\n : ct.value === product.categoryName\n ),\n // categoryName: {\n // value: product.categoryName || '',\n // label: product.categoryName || '',\n // },\n linkedProductIds: Array.isArray(product.linkedProductIds)\n ? product.linkedProductIds.map((id) => ({ value: id, label: null }))\n : [],\n // dependencies: [\n // {\n // value: 474,\n // // label: 474,\n // },\n // ],\n };\n\n return editDataWithResources;\n },\n });\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport React, { useEffect } from 'react';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { Stack } from '@chakra-ui/react';\nimport * as vali from 'zod';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { useNameTranslate } from '@/hooks/useStringName';\n\nconst ValidationSchema = vali.object({\n file: vali.array(vali.instanceof(File)).optional().nullish(),\n});\n\nexport type ImportCSVFormValues = vali.infer<typeof ValidationSchema>;\n\nexport const ImportCSVForm = () => {\n const instance = useForm<ImportCSVFormValues>({\n resolver: zodResolver(ValidationSchema),\n });\n\n useEffect(() => {\n ModalFactory.updateContext(instance);\n }, [instance]);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={4}>\n <UploadFileDropzone\n label={useNameTranslate('upload-csv')}\n multiple={false}\n name=\"file\"\n accept={{ 'text/csv': ['.csv'] }}\n />\n </Stack>\n </FormProvider>\n );\n};\n","import {\n useCategoriesLoader,\n useHasCategorySearchCriteria,\n} from '@/pages/AdminPanel/Accordion/use-categories-loader';\nimport { Accordion } from '@chakra-ui/react';\nimport { CategoryItem } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/CategoryItem';\nimport { EditCategoryModalForm } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/EditCategoryModalForm';\nimport {\n DragDropContext,\n Droppable,\n Draggable,\n OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { DraggableUtils } from '@/utils/draggable-utils';\nimport { useCategoriesOrderUpdate } from '@/pages/AdminPanel/Accordion/use-categories-order-update';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport React, { useMemo, useState } from 'react';\nimport { DraggableHandlerIcon } from '@/components/Icons/DraggableHandlerIcon';\nimport { EditProductDrawer } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/EditProductDrawer';\n\nexport const ServiceDirectory = (): JSX.Element => {\n const { data = [] } = useCategoriesLoader();\n const [currentExpandedIndex, setExpandedIndex] = useState<number | undefined>(\n undefined\n );\n const hasSearchCriteria = useHasCategorySearchCriteria();\n const canBeReordered = useMemo(() => {\n if (hasSearchCriteria) {\n return false;\n }\n\n return DraggableUtils.canBeReordered(data);\n }, [data, hasSearchCriteria]);\n const { mutateAsync: reorderAsync, isPending: isReordering } =\n useCategoriesOrderUpdate();\n\n const dropHandler: OnDragEndResponder = (result) => {\n const { source, destination } = result;\n\n if (!destination) {\n return;\n }\n\n const currentOpened = data.find(\n (_, index) => index === currentExpandedIndex\n );\n\n const startIndex = source.index;\n const endIndex = destination.index;\n\n reorderAsync({\n categoriesSource: data,\n startIndex,\n endIndex,\n preSaveFn: (reorderedList) => {\n if (reorderedList) {\n const reorderedExpandedIndex = reorderedList.findIndex(\n (it) => it.id === currentOpened?.id\n );\n\n if (reorderedExpandedIndex > -1) {\n setExpandedIndex(reorderedExpandedIndex);\n }\n }\n },\n });\n };\n\n return (\n <LoaderWrapper loading={isReordering}>\n <Accordion\n index={currentExpandedIndex}\n allowToggle\n onChange={(expandedIndex) => {\n if (typeof expandedIndex === 'number') {\n setExpandedIndex(expandedIndex);\n }\n }}\n >\n <DragDropContext onDragEnd={dropHandler}>\n <Droppable\n droppableId=\"first-level-categories\"\n type=\"draggable-accordion\"\n >\n {(provided, snapshot) => {\n return (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n style={DraggableUtils.getListStyle(snapshot.isDraggingOver)}\n >\n {data?.map((category, index) => {\n return (\n <Draggable\n key={category.name}\n draggableId={category.id.toString()}\n index={index}\n isDragDisabled={!canBeReordered}\n >\n {(itemProvided, itemSnapshot) => {\n return (\n <div\n ref={itemProvided.innerRef}\n {...itemProvided.draggableProps}\n style={DraggableUtils.getItemStyle(\n itemSnapshot.isDragging,\n itemProvided.draggableProps.style\n )}\n >\n <CategoryItem\n key={category.name}\n category={category}\n isDragDisabled={!canBeReordered}\n dragHandle={\n canBeReordered ? (\n <div {...itemProvided.dragHandleProps}>\n <DraggableHandlerIcon />\n </div>\n ) : null\n }\n />\n </div>\n );\n }}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n );\n }}\n </Droppable>\n </DragDropContext>\n </Accordion>\n <EditCategoryModalForm />\n <EditProductDrawer />\n </LoaderWrapper>\n );\n};\n","import { Button, Flex } from '@chakra-ui/react';\nimport { editProductApi } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\nimport { CreateProductUtils } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/utils';\nimport { editCategoryApi } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/edit-category-api';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport { ProductTypesType } from '@/constants/categorie';\nimport i18n from '@/i18n';\nimport { isNil } from '@/utils/is-nil';\n\ntype CategoryControlsPropsType = {\n category: ITEPortal_Domain_Dto_CategoryDto;\n productType: ProductTypesType;\n};\nexport const CategoryControls = (props: CategoryControlsPropsType) => {\n const { category, productType } = props;\n const isSubCategory = !isNil(category.parentCategoryId);\n\n return (\n <Flex>\n <Button\n size=\"sm\"\n ml={4}\n mr={4}\n onClick={() =>\n editProductApi.open({\n product: null,\n productType,\n categoryName: category.name,\n categoryId: category.id,\n })\n }\n >\n {CreateProductUtils.getCreateButtonLabelByType(productType)}\n </Button>\n {!isSubCategory && (\n <Button\n size=\"sm\"\n ml={4}\n mr={4}\n onClick={() =>\n editCategoryApi.open({\n category: null,\n parentCategoryName: category.name,\n })\n }\n >\n {i18n.t('add-sub-category')}\n </Button>\n )}\n </Flex>\n );\n};\n","import {\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Box,\n Card,\n CardBody,\n Flex,\n} from '@chakra-ui/react';\nimport { ProductsList } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/ProductsList';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport React, { ReactNode } from 'react';\nimport { EditIcon } from '@chakra-ui/icons';\nimport { editCategoryApi } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/edit-category-api';\nimport { SubCategoriesList } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/SubCategoriesList';\nimport { CreateProductUtils } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/utils';\nimport { CategoryControls } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/CategoryControls';\nimport { Debug } from '@/components/Debug';\n\ntype CategoryItemPropsType = {\n category: ITEPortal_Domain_Dto_CategoryDto;\n isDragDisabled?: boolean;\n dragHandle?: ReactNode;\n};\n\nexport const CategoryItem = (props: CategoryItemPropsType) => {\n const { category, dragHandle } = props;\n const productType = CreateProductUtils.getProductType({\n id: 0,\n categoryName: category.name,\n });\n\n return (\n <AccordionItem key={category.id} border=\"unset\">\n {({ isExpanded }) => (\n <Card mb={2}>\n <CardBody padding={2} pb={isExpanded ? 4 : 2}>\n <Flex flexDirection=\"row\" alignItems=\"center\">\n {dragHandle}\n <AccordionButton>\n <Box as=\"span\" flex=\"1\" textAlign=\"left\" fontWeight=\"500\">\n <Debug>{category.id}</Debug>\n {category.displayName || category.name}\n </Box>\n </AccordionButton>\n <EditIcon\n ml={2}\n mr={2}\n cursor=\"pointer\"\n onClick={() => {\n editCategoryApi.open({\n category,\n parentCategoryName: category.parentCategoryId,\n });\n }}\n />\n\n <AccordionButton\n width=\"fit-content\"\n background=\"transparent !important\"\n >\n <AccordionIcon cursor=\"pointer\" />\n </AccordionButton>\n </Flex>\n {isExpanded && (\n <>\n <AccordionPanel pb={4}>\n {isExpanded && (\n <SubCategoriesList parentCategoryId={category.id} />\n )}\n {isExpanded && <ProductsList categoryId={category.id} />}\n </AccordionPanel>\n {productType && (\n <CategoryControls\n category={category}\n productType={productType}\n />\n )}\n </>\n )}\n </CardBody>\n </Card>\n )}\n </AccordionItem>\n );\n};\n","import { EditCategoryForm } from '@/pages/AdminPanel/ServiceDirectory/EditCategoryForm/EditCategoryForm';\nimport {\n editCategoryApi,\n useEditCategoryApi,\n} from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/edit-category-api';\nimport { useCategoriesLoaderQueryOptions } from '@/pages/AdminPanel/Accordion/use-categories-loader';\nimport { queryClient } from '@/features/query';\n\nexport const EditCategoryModalForm = () => {\n const { category, isModalOpened, parentCategoryName } = useEditCategoryApi();\n\n const { queryKey } = useCategoriesLoaderQueryOptions();\n\n if (!isModalOpened) {\n return null;\n }\n\n return (\n <EditCategoryForm\n openConfirm={isModalOpened}\n closeModal={() => editCategoryApi.close()}\n refresh={() => {\n queryClient.invalidateQueries({\n queryKey: queryKey,\n });\n }}\n // @ts-expect-error refactor types\n editTableData={category || undefined}\n parentCategoryName={parentCategoryName}\n />\n );\n};\n","import {\n ITEPortal_Domain_Dto_CategoryDto,\n ITEPortal_Domain_Dto_ProductDto,\n} from '@/api';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport { Column } from 'react-table';\nimport i18n from '@/i18n';\nimport { Badge, Flex, Text, Tooltip } from '@chakra-ui/react';\nimport { DeleteIcon, EditIcon } from '@chakra-ui/icons';\nimport { editProductApi } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/useProductForm';\nimport { DraggableHandlerIcon } from '@/components/Icons/DraggableHandlerIcon';\nimport { DraggableTable } from '@/components/Table/DraggableTable';\nimport {\n useProductsLoader,\n useProductsLoaderOptions,\n} from '@/pages/AdminPanel/Accordion/use-products-loader';\nimport { useProductsOrderUpdate } from '@/pages/AdminPanel/Accordion/use-products-order-update';\nimport { OnDragEndResponder } from 'react-beautiful-dnd';\nimport { BUILDING_TYPES } from '@/constants/admin-pages';\nimport { CreateProductUtils } from '@/pages/AdminPanel/ServiceDirectory/EditProductFieldsets/utils';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport { queryClient } from '@/features/query';\nimport React from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useHasProductSearchCriteria } from '@/pages/AdminPanel/Accordion/use-categories-loader';\n\ntype ProductsListPropsType = {\n categoryId: ITEPortal_Domain_Dto_CategoryDto['id'];\n};\n\nconst BuildingTypes = ({ row }: { row: ITEPortal_Domain_Dto_ProductDto }) => {\n const buildingTypes = row.buildingTypes;\n\n const buildingTypeNames =\n buildingTypes?.map((type: number) => {\n return BUILDING_TYPES.find(\n (dictionaryTypeName) => dictionaryTypeName.value === type\n )?.label;\n }) || [];\n\n const total = buildingTypeNames.length;\n const tailLength = total - 2;\n\n if (tailLength > 0) {\n return (\n <Tooltip\n label={buildingTypeNames.join(', ')}\n placement=\"top\"\n hasArrow\n openDelay={500}\n >\n <Flex\n flexDirection=\"row\"\n flexWrap=\"wrap\"\n gap={1}\n alignItems=\"center\"\n cursor=\"help\"\n >\n {buildingTypeNames.slice(0, 2).map((bt, i) => (\n <Badge fontSize=\"0.7em\" key={i}>\n {bt}\n </Badge>\n ))}{' '}\n {tailLength > 0 && <Text fontSize=\"0.7em\">+{tailLength} </Text>}\n </Flex>\n </Tooltip>\n );\n }\n\n return (\n <Flex flexDirection=\"row\" flexWrap=\"wrap\" gap={1} alignItems=\"center\">\n {buildingTypeNames.slice(0, 2).map((bt, i) => (\n <Badge fontSize=\"0.7em\" key={i}>\n {bt}\n </Badge>\n ))}\n </Flex>\n );\n};\n\nconst getColumns = (opts: {\n isDraggable: boolean;\n onRemoved: () => void;\n}): Array<Column<ITEPortal_Domain_Dto_ProductDto>> => {\n const handleProductDelete = (product: ITEPortal_Domain_Dto_ProductDto) => {\n ModalFactory.confirm({\n title: i18n.t('attention'),\n Component: () => <>{i18n.t('delete-order-item-message')}</>,\n okLabel: i18n.t('delete'),\n onOk: async () => {\n if (!product.name) {\n return;\n }\n\n try {\n await typedAxios.product.deleteProducts({\n name: product.name,\n });\n\n toast.success(i18n.t('order-item-deleted'));\n\n ModalFactory.close();\n\n opts.onRemoved();\n } catch {\n toast.error(i18n.t('error-occurred'));\n }\n },\n });\n };\n\n const columns: Array<Column<ITEPortal_Domain_Dto_ProductDto>> = [\n {\n id: 'drag-handler',\n Header: 'ID',\n width: '2%',\n Cell: () => <DraggableHandlerIcon />,\n },\n {\n Header: opts.isDraggable ? () => null : 'ID',\n accessor: 'name',\n width: '5%',\n },\n {\n Header: i18n.t('service-name'),\n accessor: 'displayName',\n width: '550%',\n },\n {\n Header: i18n.t('building-type'),\n accessor: 'buildingTypes',\n minWidth: 250,\n Cell: ({ row }) => <BuildingTypes row={row.original} />,\n },\n {\n id: 'actions',\n Cell: ({ row }) => (\n <Flex flexDirection=\"row\" gap={4}>\n <EditIcon\n cursor=\"pointer\"\n onClick={() => {\n if (row.original.categoryId) {\n editProductApi.open({\n product: row.original,\n productType: CreateProductUtils.getProductType(row.original),\n categoryName: row.original.categoryName,\n categoryId: +row.original.categoryId,\n });\n }\n }}\n />\n <DeleteIcon\n cursor=\"pointer\"\n onClick={() => handleProductDelete(row.original)}\n />\n </Flex>\n ),\n },\n ];\n\n return columns.filter((c) => {\n if (opts.isDraggable) {\n return true;\n }\n\n return c.id !== 'drag-handler';\n });\n};\n\nexport const ProductsList = (props: ProductsListPropsType) => {\n const hasSearch = useHasProductSearchCriteria();\n\n const { t } = useTranslation();\n const { getProductsLoaderOptions } = useProductsLoaderOptions();\n const { isFetching, data = [] } = useProductsLoader(props.categoryId);\n const { mutate: updateProductsOrder, isPending: isUpdatingOrder } =\n useProductsOrderUpdate(props.categoryId);\n\n const dropHandler: OnDragEndResponder = (result) => {\n const { source, destination } = result;\n\n if (!destination) {\n return;\n }\n\n const startIndex = source.index;\n const endIndex = destination.index;\n\n updateProductsOrder({\n productsSource: data,\n startIndex,\n endIndex,\n });\n };\n\n if (data.length === 0 && !isFetching) {\n return null;\n }\n\n return (\n <>\n <Text fontWeight=\"500\" mb={2}>\n {t('services-list')}\n </Text>\n <LoaderWrapper loading={isFetching || isUpdatingOrder}>\n <DraggableTable\n columns={getColumns({\n isDraggable: !hasSearch,\n onRemoved: () =>\n queryClient.refetchQueries({\n queryKey: getProductsLoaderOptions(props.categoryId).queryKey,\n }),\n })}\n data={data}\n onDragEnd={dropHandler}\n />\n </LoaderWrapper>\n </>\n );\n};\n","import { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n OnDragEndResponder,\n} from 'react-beautiful-dnd';\nimport { DraggableUtils } from '@/utils/draggable-utils';\nimport { useSubCategoriesOrderUpdate } from '@/pages/AdminPanel/Accordion/use-sub-categories-order-update';\nimport { CategoryItem } from '@/pages/AdminPanel/ServiceDirectory/ServiceDirectory.Accordion/CategoryItem';\nimport { DraggableHandlerIcon } from '@/components/Icons/DraggableHandlerIcon';\nimport React, { useMemo, useState } from 'react';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport { Accordion, Text } from '@chakra-ui/react';\n\nimport {\n useHasCategorySearchCriteria,\n useSubCategoriesLoader,\n} from '@/pages/AdminPanel/Accordion/use-categories-loader';\nimport { useTranslation } from 'react-i18next';\n\ntype SubCategoriesListPropsType = {\n parentCategoryId: ITEPortal_Domain_Dto_CategoryDto['id'];\n};\n\nexport const SubCategoriesList = (props: SubCategoriesListPropsType) => {\n const { parentCategoryId } = props;\n const { t } = useTranslation();\n const [currentExpandedIndex, setExpandedIndex] = useState<number | undefined>(\n undefined\n );\n\n const hasCategorySearchCriteria = useHasCategorySearchCriteria();\n\n const { data: categories = [], isFetching } =\n useSubCategoriesLoader(parentCategoryId);\n\n const canBeReordered = useMemo(() => {\n if (hasCategorySearchCriteria) {\n return false;\n }\n\n if (!categories.length) {\n return false;\n }\n\n return DraggableUtils.canBeReordered(categories);\n }, [categories, hasCategorySearchCriteria]);\n\n const { mutateAsync: reorderAsync, isPending: isReordering } =\n useSubCategoriesOrderUpdate(parentCategoryId);\n\n const dropHandler: OnDragEndResponder = (result) => {\n const { source, destination } = result;\n\n if (!destination) {\n return;\n }\n\n const currentOpened = categories.find(\n (_, index) => index === currentExpandedIndex\n );\n\n const startIndex = source.index;\n const endIndex = destination.index;\n\n reorderAsync({\n categoriesSource: categories,\n startIndex,\n endIndex,\n preSaveFn: (reorderedList) => {\n if (reorderedList) {\n const reorderedExpandedIndex = reorderedList.findIndex(\n (it) => it.id === currentOpened?.id\n );\n\n if (reorderedExpandedIndex > -1) {\n setExpandedIndex(reorderedExpandedIndex);\n }\n }\n },\n });\n };\n\n if (categories.length === 0) {\n return null;\n }\n\n return (\n <>\n <Text fontWeight=\"500\" mb={2}>\n {t('sub-categories')}\n </Text>\n <Accordion\n allowToggle\n index={currentExpandedIndex}\n onChange={(expandedIndex) => {\n if (typeof expandedIndex === 'number') {\n setExpandedIndex(expandedIndex);\n }\n }}\n >\n <LoaderWrapper loading={isReordering || isFetching}>\n <DragDropContext onDragEnd={dropHandler}>\n <Droppable\n droppableId=\"first-level-categories\"\n type=\"draggable-accordion-sub-categories\"\n >\n {(provided, snapshot) => {\n return (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n style={{\n ...DraggableUtils.getListStyle(snapshot.isDraggingOver),\n padding: 0,\n marginBottom: '1rem',\n }}\n >\n {categories?.map((category, index) => {\n return (\n <Draggable\n key={category.name}\n draggableId={category.id.toString()}\n index={index}\n isDragDisabled={!canBeReordered}\n >\n {(itemProvided, itemSnapshot) => {\n return (\n <div\n ref={itemProvided.innerRef}\n {...itemProvided.draggableProps}\n style={DraggableUtils.getItemStyle(\n itemSnapshot.isDragging,\n itemProvided.draggableProps.style\n )}\n >\n <CategoryItem\n key={category.name}\n category={category}\n isDragDisabled={!canBeReordered}\n dragHandle={\n canBeReordered ? (\n <div {...itemProvided.dragHandleProps}>\n <DraggableHandlerIcon />\n </div>\n ) : null\n }\n />\n </div>\n );\n }}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n );\n }}\n </Droppable>\n </DragDropContext>\n </LoaderWrapper>\n </Accordion>\n </>\n );\n};\n","import { useUnit } from 'effector-react';\nimport { createApi, createStore } from 'effector';\nimport { ITEPortal_Domain_Dto_CategoryDto } from '@/api';\n\nconst INITIAL_STATE = {\n isModalOpened: false,\n category: null,\n parentCategoryName: null,\n};\n\nconst $editCategory = createStore<{\n isModalOpened: boolean;\n category: ITEPortal_Domain_Dto_CategoryDto | null;\n parentCategoryName: ITEPortal_Domain_Dto_CategoryDto['parentCategoryId'];\n}>(INITIAL_STATE);\n\nexport const editCategoryApi = createApi($editCategory, {\n open: (\n state,\n payload: {\n category: ITEPortal_Domain_Dto_CategoryDto | null;\n parentCategoryName: ITEPortal_Domain_Dto_CategoryDto['name'];\n }\n ) => {\n return {\n ...state,\n category: payload.category,\n parentCategoryName: payload.parentCategoryName,\n isModalOpened: true,\n };\n },\n\n close: () => {\n return INITIAL_STATE;\n },\n});\n\nexport const useEditCategoryApi = () => {\n return useUnit($editCategory);\n};\n","import * as v from 'zod';\n\nexport const ServiceDictionaryValidationSchema = v.object({\n name: v.string().min(1, { message: 'ID field is required' }),\n displayNameRu: v\n .string()\n .min(1, { message: 'Category name RU field is required' }),\n displayNameEn: v\n .string()\n .min(1, { message: 'Category name EN field is required' }),\n unitOfMeasure: v.object({\n value: v.string(),\n label: v.string(),\n }),\n});\n","import { Box, Code } from '@chakra-ui/react';\nimport { Table } from '@/components/Table/Table';\nimport { useMemo } from 'react';\nimport { Column } from 'react-table';\nimport { BitrixTableData } from '@/pages/AdminPanel/Settings/BitrixPassport/TableData';\nimport styled from 'styled-components';\n\nexport type BitrixPassportTableFields = {\n name: string;\n description: string;\n method: string;\n url: string;\n queryParams?: string;\n requestBody?: string;\n response?: string;\n};\n\nconst TableMainCallData = styled(Box)`\n font-weight: 600;\n font-size: 14px;\n`;\n\nconst TableCallData = styled(Box)`\n font-size: 14px;\n`;\n\nconst CodeWrapper = styled(Code)`\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n font-size: 14px;\n font-weight: 400;\n`;\n\nexport const BitrixIntegrationPassportTab = (): JSX.Element => {\n const codeCellData = (value: string | undefined) => {\n return value ? <CodeWrapper>{value}</CodeWrapper> : <Box>-</Box>;\n };\n\n const columns = useMemo<Array<Column<BitrixPassportTableFields>>>(() => {\n return [\n {\n accessor: 'description',\n Header: 'Description',\n width: '20%',\n Cell: ({ value }) => {\n return <TableMainCallData>{value}</TableMainCallData>;\n },\n },\n {\n accessor: 'name',\n Header: 'Name',\n Cell: ({ value }) => {\n return <TableCallData>{value}</TableCallData>;\n },\n },\n {\n accessor: 'method',\n Header: 'Method',\n width: '5%',\n Cell: ({ value }) => {\n return <TableCallData>{value}</TableCallData>;\n },\n },\n {\n accessor: 'url',\n Header: 'URL',\n Cell: ({ value }) => {\n return codeCellData(value);\n },\n },\n {\n accessor: 'queryParams',\n Header: 'Query params',\n width: '15%',\n Cell: ({ value }) => {\n return codeCellData(value);\n },\n },\n {\n accessor: 'requestBody',\n Header: 'Request body',\n Cell: ({ value }) => {\n return codeCellData(value);\n },\n },\n {\n accessor: 'response',\n Header: 'Response',\n Cell: ({ value }) => {\n return codeCellData(value);\n },\n },\n ];\n }, []);\n\n return (\n <Box>\n <Table columns={columns} data={BitrixTableData} />\n </Box>\n );\n};\n","import { BitrixPassportTableFields } from '@/pages/AdminPanel/Settings/BitrixPassport/BitrixIntegrationPassportTab';\n\nexport const BitrixTableData = [\n {\n name: 'getBitrixEventMasters',\n description: 'Event masters list',\n method: 'GET',\n url: '/bitrix/event-masters',\n queryParams: '',\n requestBody: '',\n response: `{\n id: number, \n title?: string | null\n}[]`,\n },\n {\n name: 'getBitrixEventEditions',\n description: 'Master exhibitions list',\n method: 'GET',\n url: '/bitrix/event-editions/{eventMasterId}',\n queryParams: `{\n eventMasterId?: number\n}`,\n requestBody: '',\n response: `{\n id: number, \n title?: string | null\n}[]`,\n },\n {\n name: 'postBitrixExhibition',\n description: 'import exhibition from Bitrix',\n method: 'POST',\n url: '/bitrix/exhibition/{eventEditionId}',\n queryParams: `{\n eventEditionId: number\n}`,\n requestBody: 'number[]',\n response: '',\n },\n {\n name: 'postBitrixExhibitionExhibitors',\n description: 'Import exhibitors from Bitrix',\n method: 'POST',\n url: '/bitrix/exhibition/{exhibitionId}/exhibitors',\n queryParams: `{\n exhibitionId: number\n}`,\n requestBody: '',\n response: '',\n },\n {\n name: 'postBitrixPriceList',\n description: 'Import price lists from Bitrix',\n method: 'POST',\n url: '/bitrix/price-list/{exhibitionId}',\n queryParams: `{\n exhibitionId: number\n}`,\n requestBody: '',\n response: '',\n },\n {\n name: 'postBitrixSalesOffices',\n description: 'Import sales offices from Bitrix',\n method: 'POST',\n url: '/bitrix/sales-offices',\n queryParams: '',\n requestBody: '',\n response: '',\n },\n {\n name: 'postBitrixOrders',\n description: 'Update order in Bitrix',\n method: 'POST',\n url: '/bitrix/orders/{orderId}',\n queryParams: `{\n orderId: number\n}`,\n requestBody: `{\nbankAccountId?: number;\niteCompanyId?: number;\n}`,\n response: '',\n },\n {\n name: 'postBitrixUpdateContactId',\n description: 'Update contact ID',\n method: 'POST',\n url: '/bitrix/update-contact-id/{userId}/{contactId}',\n queryParams: `{\n userId: number,\n contactId: number,\n}`,\n requestBody: '',\n response: '',\n },\n {\n name: 'getCompanies',\n description: 'Get companies list',\n method: 'GET',\n url: '/companies',\n queryParams: '',\n requestBody: '',\n response: `{\n bitrixId?: number;\n title?: string | null;\n email?: string | null;\n id: number;\n}[]`,\n },\n {\n name: 'getCompaniesBankAccounts',\n description: 'Get companies bank accounts',\n method: 'GET',\n url: '/companies/{companyId}/bank-accounts',\n queryParams: `{\n companyId: number,\n}`,\n requestBody: '',\n response: `{\n bitrixId?: number;\n title?: string;\n bitrixCompanyId?: number;\n bankName?: string;\n bic?: string;\n checkingAccount?: string;\n correspondentAccount?: string;\n accountCurrency?: string;\n bankAddressRu?: string;\n swift?: string;\n bankAddressEng?: string;\n iban?: string;\n id: number;\n}[]`,\n },\n {\n name: 'getStandsSharers',\n description: 'Get stands sharers',\n method: 'GET',\n url: '/stands/{standId}/sharers',\n queryParams: `{\n standId: number,\n}`,\n requestBody: '',\n response: `{\n companyId?: number;\n area?: number;\n standNumber?: string;\n standConfiguration?: ITEPortal_Contracts_Enums_StandConfiguration;\n}[]`,\n },\n {\n name: 'getStandsProducts',\n description: 'Get stands products',\n method: 'GET',\n url: '/stands/{standId}/products',\n queryParams: `{\n standId: number,\n}`,\n requestBody: '',\n response: `{\n productId?: number;\n standId?: number;\n discount?: number;\n currency?: string;\n price?: number;\n quantity?: number;\n vat?: number;\n vatIncluded?: boolean;\n displayName?: string;\n}[]`,\n },\n] satisfies BitrixPassportTableFields[];\n","import { FormProvider, useForm } from 'react-hook-form';\nimport React, { useState } from 'react';\nimport { FormControl, Stack, Button } from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport Input from '@/components/Fields/Input';\nimport styled from 'styled-components';\nimport { EDIT_PASSWORD } from '@/constants/endpoints';\nimport { toast } from 'react-toastify';\nimport fetchApi from '@/utils/fetchAPI';\nimport { FetchMethods } from '@/utils/constants';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n\nexport const ChangePassword = (): JSX.Element => {\n const methods = useForm();\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const submitHandler = async (value: any) => {\n setIsSubmitting(true);\n try {\n await fetchApi(EDIT_PASSWORD, {\n method: FetchMethods.Post,\n data: {\n ...value,\n },\n });\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input\n maxWidth=\"360px\"\n name=\"currentPassword\"\n label={useNameTranslate('current-password')}\n />\n <Input\n maxWidth=\"360px\"\n name=\"newPassword\"\n label={useNameTranslate('new-password')}\n />\n <Input\n maxWidth=\"360px\"\n name=\"confirmNewPassword\"\n label={useNameTranslate('confirm-new-password')}\n />\n\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(submitHandler)}\n >\n {useNameTranslate('save')}\n </Button>\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { useMemo, useState } from 'react';\n\nimport { Stack, Flex, Button } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { settingsRoute } from '../../../../features/Routing/protected/settings';\nimport { Table } from '../../../../components/Table/Table';\nimport { Column } from 'react-table';\n\nimport { EditIcon, DeleteIcon } from '@chakra-ui/icons';\nimport { EditDiscountModal } from './EditDiscountModal';\nimport { ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto } from '../../../../api';\nimport { useRouter } from '@tanstack/react-router';\nimport { ModalFactory } from '../../../../components/Modal/api';\nimport { toast } from 'react-toastify';\nimport { typedAxios } from '../../../../api/typed-axios';\n\nexport const DiscountsTab = () => {\n const router = useRouter();\n const { discounts } = settingsRoute.useLoaderData();\n const { t } = useTranslation();\n const [editableRow, setEditableRow] =\n useState<ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto | null>(null);\n\n const isEditModalOpened = editableRow !== null;\n\n const confirmDeletion = (\n discount: ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto\n ) => {\n ModalFactory.confirm({\n Component: () => <>{t('delete-cleaning-discount')}</>,\n onOk: async () => {\n try {\n await typedAxios.discount.deleteDiscountsCleaning({\n discountId: discount.id,\n });\n\n ModalFactory.close();\n router.invalidate();\n } catch {\n toast.error(\n t('unable-to-delete', {\n entity: t('discount_').toLowerCase(),\n })\n );\n }\n },\n });\n };\n\n const columns = useMemo(() => {\n return [\n {\n accessor: 'areaFrom',\n Header: t('areaFrom'),\n Cell: ({ value }) => {\n return <>{value}</>;\n },\n },\n {\n accessor: 'areaTo',\n Header: t('areaTo'),\n Cell: ({ value }) => {\n return <>{value}</>;\n },\n },\n {\n accessor: 'discountPercentage',\n Header: `${t('discount')} (%)`,\n Cell: ({ value }) => {\n return <>{value}</>;\n },\n },\n {\n id: 'actions',\n Header: '',\n width: '40px',\n Cell: ({ row }) => {\n return (\n <Flex columnGap=\"10px\" maxWidth=\"40px\">\n <EditIcon onClick={() => setEditableRow(row.original)} />\n <DeleteIcon onClick={() => confirmDeletion(row.original)} />\n </Flex>\n );\n },\n },\n ] satisfies Column<ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto>[];\n }, [editableRow]);\n\n const data = useMemo(() => {\n return discounts;\n }, [discounts]);\n\n return (\n <Stack spacing={5} direction=\"column\" paddingBottom={200}>\n <Flex flexDirection=\"row\" justifyContent=\"flex-end\">\n <Button\n colorScheme=\"red\"\n onClick={() =>\n setEditableRow({\n id: 0,\n })\n }\n >\n + {t('add-discount')}\n </Button>\n </Flex>\n <Table columns={columns} data={data} />\n\n {isEditModalOpened && (\n <EditDiscountModal\n model={editableRow}\n close={() => {\n setEditableRow(null);\n }}\n onSaved={() => {\n router.invalidate();\n }}\n />\n )}\n </Stack>\n );\n};\n","import * as v from 'zod';\nimport { FormProvider, SubmitHandler, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport {\n Button,\n ButtonGroup,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Stack,\n} from '@chakra-ui/react';\nimport { useNameTranslate } from '../../../../hooks/useStringName';\nimport { t } from 'i18next';\nimport React, { useEffect } from 'react';\nimport InputNumber from '../../../../components/Fields/InputNumber';\nimport {\n ApiError,\n ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto,\n} from '../../../../api';\nimport { typedAxios } from '../../../../api/typed-axios';\nimport i18n from '../../../../i18n';\n\nconst AREA_EXISTS_MESSAGE = 'Discount already exists for the specified range.';\n\nconst isAreaExistsMessage = (message: string) =>\n message.toLowerCase() === AREA_EXISTS_MESSAGE.toLowerCase();\n\nconst preprocessNumber = (value: unknown) => {\n if (value === '') {\n return value;\n }\n\n return typeof value === 'string' ? +value : value;\n};\n\nconst ValidationSchema = v\n .object({\n areaFrom: v.preprocess(preprocessNumber, v.number().safe()),\n areaTo: v.preprocess(preprocessNumber, v.number().safe()),\n discountPercentage: v.preprocess(preprocessNumber, v.number().lte(100)),\n })\n .refine(\n (schema) => {\n return schema.areaFrom < schema.areaTo;\n },\n {\n path: ['areaFrom'],\n message: i18n.t('areaFrom-gt-to-error'),\n }\n )\n .refine(\n (schema) => {\n return schema.areaTo > schema.areaFrom;\n },\n {\n path: ['areaTo'],\n message: i18n.t('areaTo-lt-form-error'),\n }\n );\n\ntype FormValues = v.infer<typeof ValidationSchema>;\n\ntype EditDiscountModalPropsType = {\n close: () => void;\n onSaved?: () => void;\n model: ITEPortal_Domain_Dto_Discount_GetCleaningDiscountDto | null;\n};\n\nexport const EditDiscountModal = (props: EditDiscountModalPropsType) => {\n const { close, model, onSaved } = props;\n const instance = useForm<FormValues>({\n resolver: zodResolver(ValidationSchema),\n });\n\n useEffect(\n function setFormValuesOfLoadedModel() {\n instance.reset({\n ...model,\n });\n },\n [model]\n );\n\n const save: SubmitHandler<FormValues> = async (values) => {\n try {\n if (model?.id && model.id > 0) {\n await typedAxios.discount.putDiscountsCleaning({\n ...values,\n discountId: model.id,\n });\n } else {\n await typedAxios.discount.postDiscountsCleaning(values);\n }\n\n instance.reset();\n close();\n\n onSaved?.();\n } catch (e) {\n if (e instanceof ApiError && typeof e.body === 'string') {\n instance.setError('areaFrom', {\n message: isAreaExistsMessage(e.body)\n ? t('cleaning-discount-area-error')\n : e.body,\n });\n }\n }\n };\n\n return (\n <Modal isOpen onClose={close} size=\"xl\" scrollBehavior=\"inside\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{useNameTranslate('discount')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>\n <FormProvider {...instance}>\n <form>\n <Stack spacing=\"5\">\n <InputNumber<FormValues>\n name=\"areaFrom\"\n precision={2}\n step={0.1}\n min={0}\n label={t('areaFrom')}\n />\n <InputNumber<FormValues>\n name=\"areaTo\"\n precision={2}\n step={0.1}\n min={0}\n label={t('areaTo')}\n />\n <InputNumber<FormValues>\n name=\"discountPercentage\"\n max={100}\n min={0}\n precision={2}\n step={0.1}\n label={`${t('discount')} (%)`}\n />\n </Stack>\n </form>\n </FormProvider>\n </ModalBody>\n <ModalFooter justifyContent=\"center\">\n <ButtonGroup gap=\"1\" justifyContent=\"center\">\n <Button colorScheme=\"red\" variant=\"outline\" onClick={close}>\n {t('cancel')}\n </Button>\n <Button colorScheme=\"red\" onClick={instance.handleSubmit(save)}>\n {t('save')}\n </Button>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport React, { useState } from 'react';\nimport { FormControl, Stack, Button } from '@chakra-ui/react';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport styled from 'styled-components';\nimport { CHANGE_MAIN_LOGO } from '@/constants/endpoints';\nimport { toast } from 'react-toastify';\nimport fetchApi from '@/utils/fetchAPI';\nimport { FetchMethods } from '@/utils/constants';\nimport { UploadFileDropzone } from '@/components/FileUpload/FileUpload';\nimport { useTranslation } from 'react-i18next';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n max-width: 600px;\n`;\n\nexport const LogoTab = (): JSX.Element => {\n const methods = useForm();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { t } = useTranslation();\n\n const submitHandler = async (value: any) => {\n if (value?.['logo']) {\n setIsSubmitting(true);\n try {\n await fetchApi(\n CHANGE_MAIN_LOGO,\n {\n method: FetchMethods.Post,\n\n data: { logo: value?.['logo'][0] },\n },\n { 'Content-Type': 'multipart/form-data' }\n );\n\n toast.success(t('success-logo-download'));\n } catch (error: any) {\n const fieldErrors = error?.response?.data?.errors;\n\n if (fieldErrors) {\n toast.error(fieldErrors);\n }\n } finally {\n setIsSubmitting(false);\n }\n }\n };\n\n return (\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <UploadFileDropzone\n label={useNameTranslate('change-logo')}\n name=\"logo\"\n accept={{\n 'image/png': ['.png'],\n }}\n />\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(submitHandler)}\n >\n {useNameTranslate('save')}\n </Button>\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport * as v from 'zod';\n\nimport React, { useEffect } from 'react';\nimport { useNameTranslate } from '../../../hooks/useStringName';\nimport { Box, Button, FormControl, Stack } from '@chakra-ui/react';\nimport { UploadFileDropzone } from '../../../components/FileUpload/FileUpload';\nimport styled from 'styled-components';\nimport Input from '../../../components/Fields/Input';\nimport { FormLabel } from '../../../components/FormLabel/FormLabel';\nimport { typedAxios } from '../../../api/typed-axios';\nimport { settingsRoute } from '../../../features/Routing/protected/settings';\nimport { toast } from 'react-toastify';\nimport { useTranslation } from 'react-i18next';\n\ntype ManualUploaderFormValues = {\n manualFileEn?: Blob[];\n manualLinkEn?: string | null;\n manualFileRu?: Blob[];\n manualLinkRu?: string | null;\n};\n\nconst Schema = v.object({\n manualFileEn: v.array(v.instanceof(File)),\n manualLinkEn: v.string().url('Should be valid URL'),\n manualFileRu: v.array(v.instanceof(File)),\n manualLinkRu: v.string().url('Should be valid URL'),\n});\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n max-width: 600px;\n`;\n\nconst ControlLine = styled.div`\n display: flex;\n flex-direction: row;\n align-items: end;\n gap: 10px;\n\n > div:first-of-type {\n width: 70%;\n }\n`;\n\nexport const ManualUploaderTab = () => {\n const { t } = useTranslation();\n const instance = useForm<ManualUploaderFormValues>({\n resolver: zodResolver(Schema),\n });\n\n const loaderData = settingsRoute.useLoaderData();\n\n useEffect(\n function setFormValuesOfLoadedModel() {\n instance.reset({\n manualLinkRu: loaderData.settings.exhibitorManualRu,\n manualLinkEn: loaderData.settings.exhibitorManualEn,\n });\n },\n [loaderData]\n );\n\n const handleSaveSetting =\n (scope: keyof ManualUploaderFormValues, locale: 'en' | 'ru') =>\n async () => {\n const valid = await instance.trigger(scope);\n const value = instance.getValues(scope);\n\n if (!valid) {\n return;\n }\n\n switch (true) {\n case scope.includes('manualLink') && typeof value === 'string':\n typedAxios.globalSettings\n .postGlobalSettingsEditExhibitorManualUrl({\n culture: locale,\n url: value,\n })\n .then(() => {\n toast.success(t('user-manual-updated'));\n })\n .catch(() => {\n toast.error(t('user-manual-update-failed'));\n });\n\n break;\n\n case scope.includes('manualFile') && value && value[0] instanceof Blob:\n typedAxios.globalSettings\n .postGlobalSettingsEditExhibitorManualFile({\n culture: locale,\n formData: {\n manual: value[0],\n },\n })\n .then(() => {\n toast.success(t('user-manual-updated'));\n })\n .catch(() => {\n toast.error(t('user-manual-update-failed'));\n });\n\n break;\n }\n };\n\n return (\n <FormProvider {...instance}>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <ControlLine>\n <UploadFileDropzone<ManualUploaderFormValues>\n label={`${useNameTranslate('participantManual')} (EN)`}\n name=\"manualFileEn\"\n multiple={false}\n accept={{\n 'application/pdf': ['.pdf'],\n }}\n />\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n onClick={handleSaveSetting('manualFileEn', 'en')}\n >\n {useNameTranslate('save')}\n </Button>\n </ControlLine>\n\n <ControlLine>\n <Box>\n <FormLabel>\n {useNameTranslate('linkToParticipantManual')} (EN)\n </FormLabel>\n <Input<ManualUploaderFormValues>\n name=\"manualLinkEn\"\n maxWidth=\"100%\"\n />\n </Box>\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n onClick={handleSaveSetting('manualLinkEn', 'en')}\n >\n {useNameTranslate('save')}\n </Button>\n </ControlLine>\n\n <ControlLine>\n <UploadFileDropzone<ManualUploaderFormValues>\n label={`${useNameTranslate('participantManual')} (RU)`}\n name=\"manualFileRu\"\n multiple={false}\n accept={{\n 'application/pdf': ['.pdf'],\n }}\n />\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n onClick={handleSaveSetting('manualFileRu', 'ru')}\n >\n {useNameTranslate('save')}\n </Button>\n </ControlLine>\n\n <ControlLine>\n <Box>\n <FormLabel>\n {useNameTranslate('linkToParticipantManual')} (RU)\n </FormLabel>\n <Input<ManualUploaderFormValues>\n name=\"manualLinkRu\"\n maxWidth=\"100%\"\n />\n </Box>\n <Button\n colorScheme=\"red\"\n width=\"100px\"\n onClick={handleSaveSetting('manualLinkRu', 'ru')}\n >\n {useNameTranslate('save')}\n </Button>\n </ControlLine>\n </FormControlWrapper>\n </Stack>\n </FormProvider>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport React, { useEffect, useState } from 'react';\nimport { Box, FormControl, Stack, Button } from '@chakra-ui/react';\nimport { FormLabel } from '@/components/FormLabel/FormLabel';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport Input from '@/components/Fields/Input';\nimport styled from 'styled-components';\nimport { settingsRoute } from '../../../features/Routing/protected/settings';\nimport { typedAxios } from '../../../api/typed-axios';\nimport {\n ApiError,\n CancelablePromise,\n ITEPortal_Domain_Dto_GlobalSettingsDto,\n} from '../../../api';\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n\nconst ParticipantCheckContainer = styled(Box)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: start;\n gap: 10px;\n width: 100%;\n`;\n\nconst ParticipantCheckWrapper = styled(Box)`\n min-width: 100%;\n`;\n\ntype SettingsFormValues = Pick<\n ITEPortal_Domain_Dto_GlobalSettingsDto,\n 'host' | 'port' | 'username' | 'fromEmail'\n>;\n\nexport const Settings = (): JSX.Element => {\n const methods = useForm<SettingsFormValues>();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const { settings } = settingsRoute.useLoaderData();\n\n useEffect(\n function setFormValuesOfLoadedModel() {\n methods.reset({\n ...settings,\n });\n },\n [settings]\n );\n\n const save = async (saverFn: CancelablePromise<any>) => {\n try {\n setIsSubmitting(true);\n await saverFn;\n } catch (e) {\n if (e instanceof ApiError) {\n const fieldErrors = e.body.errors;\n\n if (fieldErrors) {\n Object.entries(fieldErrors).forEach(([fieldName, errors]) => {\n methods.setError(fieldName as keyof SettingsFormValues, {\n message: errors as string,\n });\n });\n }\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <FormProvider {...methods}>\n <form>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <ParticipantCheckWrapper>\n <FormLabel>{useNameTranslate('from-email')}</FormLabel>\n <ParticipantCheckContainer>\n <Input<SettingsFormValues> maxWidth=\"360px\" name=\"fromEmail\" />\n <Button\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(({ fromEmail }) =>\n save(\n typedAxios.globalSettings.postGlobalSettingsEditFromEmail(\n {\n fromEmail: fromEmail || undefined,\n }\n )\n )\n )}\n >\n {useNameTranslate('save')}\n </Button>\n </ParticipantCheckContainer>\n </ParticipantCheckWrapper>\n <ParticipantCheckWrapper>\n <FormLabel>{useNameTranslate('username-email')}</FormLabel>\n <ParticipantCheckContainer>\n <Input maxWidth=\"360px\" name=\"username\" />\n <Button\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(({ username }) =>\n save(\n typedAxios.globalSettings.postGlobalSettingsEditUsername({\n username: username || undefined,\n })\n )\n )}\n >\n {useNameTranslate('save')}\n </Button>\n </ParticipantCheckContainer>\n </ParticipantCheckWrapper>\n <ParticipantCheckWrapper>\n <FormLabel>{useNameTranslate('host')}</FormLabel>\n <ParticipantCheckContainer>\n <Input maxWidth=\"360px\" name=\"host\" />\n <Button\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(({ host }) =>\n save(\n typedAxios.globalSettings.postGlobalSettingsEditHost({\n host: host || undefined,\n })\n )\n )}\n >\n {useNameTranslate('save')}\n </Button>\n </ParticipantCheckContainer>\n </ParticipantCheckWrapper>\n <ParticipantCheckWrapper>\n <FormLabel>{useNameTranslate('port')}</FormLabel>\n <ParticipantCheckContainer>\n <Input maxWidth=\"360px\" name=\"port\" />\n <Button\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(({ port }) =>\n save(\n typedAxios.globalSettings.postGlobalSettingsEditPort({\n port: port || undefined,\n })\n )\n )}\n >\n {useNameTranslate('save')}\n </Button>\n </ParticipantCheckContainer>\n </ParticipantCheckWrapper>\n </FormControlWrapper>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { Tab, TabList, TabPanel, TabPanels, Tabs } from '@chakra-ui/react';\nimport styled from 'styled-components';\n\nimport { Settings } from '@/pages/AdminPanel/Settings/Settings';\nimport { ChangePassword } from '@/pages/AdminPanel/Settings/ChangePassword';\nimport { LogoTab } from './LogoTab';\nimport { ManualUploaderTab } from './ManualUploaderTab';\nimport {\n SettingsPageSearchSchemaType,\n settingsRoute,\n} from '../../../features/Routing/protected/settings';\nimport { useNavigate } from '@tanstack/react-router';\nimport { DiscountsTab } from './Disounts';\nimport { BitrixIntegrationPassportTab } from '@/pages/AdminPanel/Settings/BitrixPassport/BitrixIntegrationPassportTab';\n\nconst tabStyles = {\n borderColor: 'blackAlpha.200',\n borderBottomColor: '#F7FAFC',\n color: 'red',\n};\n\nconst TabWrapper = styled(TabPanel)`\n padding-top: 50px;\n`;\n\nconst TabsMap: Record<SettingsPageSearchSchemaType['tab'], number> = {\n global: 0,\n smtp: 1,\n logo: 2,\n manual: 3,\n discount: 4,\n bitrix: 5,\n};\n\nexport const SettingsPage = (): JSX.Element => {\n const { t } = useTranslation();\n const { tab = 'global' } = settingsRoute.useSearch();\n const navigate = useNavigate();\n\n const selectedTabFromUrl = TabsMap[tab] || 0;\n\n return (\n <>\n <Tabs\n index={selectedTabFromUrl}\n variant=\"enclosed\"\n onChange={(index) => {\n navigate({\n to: './',\n search: {\n tab: Object.keys(TabsMap)[index],\n },\n });\n }}\n >\n <TabList>\n <Tab _selected={tabStyles}>{t('main-settings')}</Tab>\n <Tab _selected={tabStyles}>{t('change-password')}</Tab>\n <Tab _selected={tabStyles}>{t('logo')}</Tab>\n <Tab _selected={tabStyles}>{t('participantManual')}</Tab>\n <Tab _selected={tabStyles}>{t('cleaning-discounts')}</Tab>\n <Tab _selected={tabStyles}>{t('bitrix-integration-passport')}</Tab>\n </TabList>\n <TabPanels>\n <TabWrapper>\n <Settings />\n </TabWrapper>\n <TabWrapper>\n <ChangePassword />\n </TabWrapper>\n <TabWrapper>\n <LogoTab />\n </TabWrapper>\n <TabWrapper>\n <ManualUploaderTab />\n </TabWrapper>\n <TabWrapper>\n <DiscountsTab />\n </TabWrapper>\n <TabWrapper>\n <BitrixIntegrationPassportTab />\n </TabWrapper>\n </TabPanels>\n </Tabs>\n </>\n );\n};\n","import { useEffect } from 'react';\nimport { NewUsersForm } from '@/pages/AdminPanel/UsersTable/NewUsers/NewUsersForm';\n\ninterface NewUserProps {\n type: 'add' | 'edit';\n}\n\nexport const NewUser = ({ type }: NewUserProps): JSX.Element => {\n useEffect(() => {\n const element = document.getElementById('breadcrumbsId');\n\n if (element) {\n element.scrollIntoView({ behavior: 'smooth' });\n }\n }, []);\n\n return <NewUsersForm type={type} />;\n};\n","import React, { useEffect, useState } from 'react';\nimport {\n useForm,\n FormProvider,\n useController,\n FieldValues,\n} from 'react-hook-form';\nimport {\n ButtonGroup,\n FormControl,\n Stack,\n Button as ChakraButton,\n} from '@chakra-ui/react';\nimport Input from '@/components/Fields/Input';\nimport { Button } from '@/components/Buttons/Button/Button';\nimport styled from 'styled-components';\nimport { useNameTranslate } from '@/hooks/useStringName';\nimport { ROLES } from '@/constants/admin-pages';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { ADD_USER, EDIT_USER, EDIT_USER_INFO } from '@/constants/endpoints';\nimport fetchApi from '@/utils/fetchAPI';\nimport { FetchMethods } from '@/utils/constants';\nimport { useNavigate, useParams } from '@tanstack/react-router';\nimport { useFormErrorsHandler } from '../../../../hooks/useFormErrorsHandler';\nimport { useTranslation } from 'react-i18next';\n\ninterface NewUsersFormProps {\n type: string;\n}\n\nconst FormControlWrapper = styled(FormControl)`\n display: flex;\n flex-direction: column;\n gap: 15px;\n`;\n\ntype OptionType = { label?: string; value: string | number };\n\nexport const NewUsersForm = ({ type }: NewUsersFormProps): JSX.Element => {\n const { t } = useTranslation();\n const { userId } = useParams({ strict: false });\n const editForm = type === 'edit';\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [editData, setEditData] = useState<any>();\n const navigate = useNavigate();\n\n const methods = useForm({\n mode: 'onChange',\n });\n\n const { processErrorsObject } = useFormErrorsHandler(methods);\n\n useEffect(\n function setFormValuesOfLoadedModel() {\n methods.reset({\n ...editData,\n });\n },\n [editData]\n );\n\n const {\n field: { ...roleProps },\n } = useController({ name: 'role', control: methods.control });\n\n const toUsers = () => {\n navigate({\n to: '/admin/users',\n replace: true,\n });\n };\n\n useEffect(function loadUserDataIfFormOpenedForEdit() {\n if (type === 'edit') {\n const fetchData = async () => {\n setIsSubmitting(true);\n try {\n const { data } = await fetchApi(EDIT_USER_INFO(userId));\n\n data.data.role = ROLES.find(\n (roleOption: OptionType) => roleOption?.value === data.data.role\n );\n\n Object.keys(data).forEach((field) => {\n methods.setValue(field, data[field]);\n });\n\n setEditData(data.data);\n } catch (error: any) {\n //\n } finally {\n setIsSubmitting(false);\n }\n };\n\n fetchData();\n }\n }, []);\n\n const submitHandler = async (values: FieldValues) => {\n const method = editForm ? FetchMethods.Put : FetchMethods.Post;\n const link = editForm ? EDIT_USER : ADD_USER;\n\n const data = { ...values, role: values?.role?.value };\n\n setIsSubmitting(true);\n try {\n await fetchApi(link, {\n method: method,\n data,\n });\n\n await toUsers();\n } catch (error: any) {\n processErrorsObject(error);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <FormProvider {...methods}>\n <form onSubmit={methods.handleSubmit(submitHandler)}>\n <Stack spacing=\"5\">\n <FormControlWrapper>\n <Input\n label={useNameTranslate('full-name')}\n maxWidth=\"100%\"\n name=\"name\"\n defaultValue={editData?.['name']}\n isRequired\n />\n <SelectComponent\n label={useNameTranslate('role')}\n options={ROLES}\n defaultValue={editData?.['role']}\n isRequired\n {...roleProps}\n />\n <Input\n label={useNameTranslate('emailPlaceholder')}\n maxWidth=\"100%\"\n name=\"email\"\n defaultValue={editData?.['email']}\n isRequired\n />\n <Input\n label={useNameTranslate('phone')}\n maxWidth=\"100%\"\n name=\"phoneNumber\"\n defaultValue={editData?.['phoneNumber']}\n />\n <Input\n label=\"Bitrix ID\"\n maxWidth=\"100%\"\n name=\"contactId\"\n tooltip={t('bitrix-id-tooltip')}\n defaultValue={editData?.['contactId']}\n />\n </FormControlWrapper>\n <ButtonGroup gap=\"1\">\n <ChakraButton\n colorScheme=\"red\"\n isLoading={isSubmitting}\n onClick={methods.handleSubmit(submitHandler)}\n >\n {useNameTranslate('save')}\n </ChakraButton>\n <Button\n colorScheme=\"secondary\"\n buttonType=\"reset\"\n onClick={toUsers}\n >\n {useNameTranslate('cancel')}\n </Button>\n </ButtonGroup>\n </Stack>\n </form>\n </FormProvider>\n );\n};\n","import React, { useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Box, Flex, Link, Text } from '@chakra-ui/react';\nimport { DeleteIcon, EditIcon } from '@chakra-ui/icons';\nimport styled from 'styled-components';\nimport { Column, Row } from 'react-table';\nimport { Table } from '@/components/Table/Table';\nimport { Card } from '@/components/Card/Card';\nimport { toast } from 'react-toastify';\nimport { Button } from '@/components/Buttons/Button/Button';\nimport { ROLES } from '@/constants/admin-pages';\nimport { User } from '@/model/IUser';\nimport { useNavigate } from '@tanstack/react-router';\nimport { DeleteModal } from '@/pages/Exhibition/DeleteModal';\nimport { typedAxios } from '@/api/typed-axios';\nimport { useTableLoader } from '@/components/Table/useTableLoader';\nimport { ITEPortal_Domain_Dto_UserDto } from '@/api';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport { useRBAC } from '@/features/rbac/useRBAC';\n\nconst OptionWrapper = styled(Flex)`\n flex-direction: row;\n gap: 20px;\n`;\n\nconst ButtonContainer = styled(Box)`\n padding-top: 20px;\n`;\n\ninterface UsersTableOptionsProps {\n row: Row<ITEPortal_Domain_Dto_UserDto>;\n}\n\nexport const UsersTable = (): JSX.Element => {\n const { t } = useTranslation();\n const [openConfirm, setOpenConfirm] = useState(false);\n const [userIdValue, setUserIdValue] = useState();\n const navigate = useNavigate();\n const { can } = useRBAC();\n\n const {\n data = [],\n isLoading,\n refresh,\n } = useTableLoader<ITEPortal_Domain_Dto_UserDto>({\n resource: 'users',\n additionalPrams: {\n roles: [\n User.Role.SuperAdmin,\n User.Role.Admin,\n User.Role.Moderator,\n User.Role.SupportManager,\n User.Role.TechnicalManager,\n ],\n },\n xhrOptions: {\n paramsSerializer: {\n indexes: null,\n },\n },\n });\n\n const openDeleteModal = (userId: any) => {\n setUserIdValue(userId);\n setOpenConfirm(!openConfirm);\n };\n\n const closeDeleteModal = () => setOpenConfirm(false);\n\n const UsersTableOptions = ({ row }: UsersTableOptionsProps) => {\n const rowValues = row.values;\n\n if (\n row.original.role === User.Role.SuperAdmin &&\n !can('canManageSuperAdmins')\n ) {\n return null;\n }\n\n return (\n <OptionWrapper>\n <Link onClick={() => editUser(rowValues?.id)}>\n <EditIcon />\n </Link>\n <Link onClick={() => openDeleteModal(rowValues?.id)}>\n <DeleteIcon />\n </Link>\n </OptionWrapper>\n );\n };\n\n const UserRole = ({ row }: UsersTableOptionsProps): JSX.Element => {\n const role = row?.values?.role as number;\n\n return (\n <Text>\n {role ? ROLES.find((userRole) => userRole?.value === role)?.label : ''}\n </Text>\n );\n };\n\n const deleteUser = async () => {\n if (userIdValue) {\n try {\n await typedAxios.user.deleteUsersDelete({\n id: userIdValue,\n });\n\n refresh();\n toast.success(t('user-deleted-successfully'));\n } catch {\n toast.error(t('error-occurred'));\n }\n }\n };\n\n const usersTableColumns = React.useMemo<\n Array<Column<ITEPortal_Domain_Dto_UserDto>>\n >(\n () => [\n {\n Header: `ID`,\n accessor: 'id',\n show: false,\n },\n {\n Header: `${t('full-name')}`,\n accessor: 'name',\n width: '20%',\n },\n {\n Header: `${t('emailPlaceholder')}`,\n accessor: 'email',\n width: '35%',\n },\n {\n Header: `${t('role')}`,\n accessor: 'role',\n width: '35%',\n Cell: ({ row }) => <UserRole row={row} />,\n },\n {\n Header: '',\n id: 'options',\n width: '5%',\n Cell: ({ row }) => <UsersTableOptions row={row} />,\n },\n ],\n []\n );\n\n const addUser = () => {\n navigate({ to: '/admin/users/add' });\n };\n\n const editUser = (id: string) => {\n navigate({\n to: '/admin/users/$userId/edit',\n params: { userId: id },\n });\n };\n\n return (\n <LoaderWrapper loading={isLoading}>\n <Card>\n <DeleteModal\n onSubmit={deleteUser}\n isOpen={openConfirm}\n onClose={closeDeleteModal}\n />\n <Table columns={usersTableColumns} data={data} />\n <ButtonContainer>\n <Button colorScheme=\"red\" onClick={addUser}>\n {t('add-user')}\n </Button>\n </ButtonContainer>\n </Card>\n </LoaderWrapper>\n );\n};\n","import { Card, CardBody, Flex } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport Layout from '@/layout/Default';\nimport { Link } from '@tanstack/react-router';\n\nexport const AgentHome = (): JSX.Element => {\n const { t } = useTranslation();\n\n return (\n <Layout>\n <Flex\n direction=\"row\"\n gap={4}\n alignSelf=\"center\"\n position=\"absolute\"\n top=\"50%\"\n left=\"50%\"\n transform=\"translate(-50%, -50%)\"\n >\n <Link to=\"/admin/exhibitions\">\n <Card>\n <CardBody>{t('agent-cabinet')}</CardBody>\n </Card>\n </Link>\n <Link to=\"/profile\">\n <Card>\n <CardBody>{t('myExhibitions')}</CardBody>\n </Card>\n </Link>\n </Flex>\n </Layout>\n );\n};\n","import { useTranslation } from 'react-i18next';\nimport { useNavigate } from '@tanstack/react-router';\nimport { viewExhibitionCart } from '@/features/Routing/protected/exhibitions-by-role';\nimport { numberWithSpaces } from '@/utils/amountTransformation';\nimport { replacePaths } from '@/utils/route';\nimport { SHOW_EXHIBITION_PATH } from '@/constants/router';\nimport { Divider, Text } from '@chakra-ui/react';\nimport { Button as OrderButton } from '@/components/Buttons/Button/Button';\nimport { TKey } from '@/i18n/types';\nimport { OrderItem, TemporaryStaffOrderItem } from '@/model/IOrderItem';\nimport { ORDER_STATUSES } from '@/constants/order';\nimport {\n ITEPortal_Domain_Dto_Order_CreateOrderDto,\n ITEPortal_Domain_Dto_Order_CreateOrderFromAdminDto,\n} from '@/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { Card } from '@/components/Card/Card';\nimport {\n CartButtonsContainer,\n TotalRowContainer,\n TotalRowContainerSummary,\n TotalWrapper,\n} from './styled';\nimport { ModalFactory } from '@/components/Modal/api';\nimport { Cart } from '@/model/ICart';\nimport { SpaceOnlyStandOrderCommentsForm } from './OrderComments/SpaceOnlyStandOrderCommentsForm';\nimport {\n ExtendedStandOrderCommentsForm,\n ExtendedStandOrderCommentsFormType,\n ExtendedStandOrderCommentsFormValuesType,\n} from './OrderComments/ExtendedStandOrderCommentsForm';\nimport { orderApi, useOrder } from '@/store/effector/order';\nimport { loadingApi } from '@/store/effector/loading';\nimport { useOrderCompleteness } from '@/store/effector/order-completeness';\nimport { Order } from '@/model/IOrder';\n\ninterface TotalCardProps {\n total: number;\n currency: string;\n items: Array<OrderItem | TemporaryStaffOrderItem>;\n cart: Cart;\n}\n\nexport const CartTotal = ({ currency, items, cart }: TotalCardProps) => {\n const { t } = useTranslation();\n const navigate = useNavigate();\n const { orderId } = useOrder();\n\n const { exhibitionId, stand } = viewExhibitionCart.useParams();\n const { isOrderCompleted } = useOrderCompleteness();\n\n const canPlaceOrder = items?.length === 0 || !isOrderCompleted;\n\n const navigateToOrders = () => {\n const orderPath = replacePaths(SHOW_EXHIBITION_PATH, {\n ':exhibitionId': exhibitionId,\n });\n\n navigate({\n to: orderPath,\n });\n\n orderApi.clearProducts();\n };\n\n const createOrder = async ({\n asDraft,\n comments,\n }: {\n asDraft: boolean;\n comments?: ExtendedStandOrderCommentsFormValuesType;\n }) => {\n const modalMessage: TKey = asDraft ? 'draftConfirmed' : 'orderConfirmed';\n\n const products = Order.prepareItemsForPlace(items);\n\n const dataForSave = {\n exhibitionId: +exhibitionId,\n standId: +stand,\n products,\n orderStatus: asDraft ? ORDER_STATUSES.Draft : ORDER_STATUSES.Submitted,\n } satisfies ITEPortal_Domain_Dto_Order_CreateOrderDto;\n\n if (orderId) {\n Object.assign(dataForSave, { orderId });\n }\n\n let payload: ITEPortal_Domain_Dto_Order_CreateOrderFromAdminDto = {\n ...dataForSave,\n additionalComments: comments?.additionalComments,\n };\n\n if (orderId || !asDraft) {\n payload = {\n ...payload,\n carpetColor: comments?.carpetColor?.value,\n fasciaInscription: comments?.fasciaInscription,\n fasciaInscriptionColor: comments?.fasciaInscriptionColor?.value,\n };\n }\n\n try {\n loadingApi.on();\n\n if (orderId) {\n await typedAxios.order.putOrders({\n requestBody: payload,\n });\n } else {\n await typedAxios.order.postOrders({\n requestBody: payload,\n });\n }\n\n ModalFactory.closeById('order-comments');\n\n ModalFactory.info({\n title: t('thankYou'),\n Component: () => <>{t(modalMessage)}</>,\n cancelLabel: t('toOrders'),\n onCancel: async () => {\n orderApi.cleanUpOrderState();\n\n navigateToOrders();\n },\n });\n } catch (error) {\n } finally {\n loadingApi.off();\n }\n };\n\n const amount = (value: number) => {\n return numberWithSpaces(value, currency, false);\n };\n\n const requestComments = () => {\n ModalFactory.show({\n id: 'order-comments',\n title: t('order-comments'),\n Component: cart.isSpaceOnlyStand\n ? SpaceOnlyStandOrderCommentsForm\n : ExtendedStandOrderCommentsForm,\n okLabel: t('confirmOrder'),\n onOk: async (context?: ExtendedStandOrderCommentsFormType) => {\n return context?.handleSubmit((v) => {\n createOrder({\n asDraft: false,\n comments: v,\n });\n })();\n },\n });\n };\n\n return (\n <Card width=\"25%\">\n <TotalWrapper>\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('cartTotal')}</Text>\n <Text fontSize=\"md\">{amount(cart.itemsTotal)}</Text>\n </TotalRowContainer>\n {cart.hasPersonalDiscount && (\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('personal-discount')}:</Text>\n <Text fontSize=\"md\">-{amount(cart.personalDiscount)}</Text>\n </TotalRowContainer>\n )}\n {cart.hasCleaningDiscount && (\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('cleaning-discount')}:</Text>\n <Text fontSize=\"md\">{amount(cart.cleaningDiscount)}</Text>\n </TotalRowContainer>\n )}\n {Boolean(cart.markup) && (\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('cartMarkup')}</Text>\n <Text fontSize=\"md\">{amount(cart.markup)}</Text>\n </TotalRowContainer>\n )}\n {cart.hasVat && (\n <TotalRowContainer>\n <Text fontSize=\"md\">{t('cartTax')}</Text>\n <Text fontSize=\"md\">{amount(cart.vat)}</Text>\n </TotalRowContainer>\n )}\n <Divider />\n <TotalRowContainerSummary>\n <Text fontSize=\"md\">{t('cartTotal')}</Text>\n <Text fontSize=\"md\" fontWeight=\"700\">\n {amount(cart.total)}\n </Text>\n </TotalRowContainerSummary>\n </TotalWrapper>\n <CartButtonsContainer>\n <OrderButton\n width=\"100%\"\n colorScheme=\"red\"\n onClick={() => {\n requestComments();\n }}\n disabled={canPlaceOrder}\n >\n {t('confirmOrder')}\n </OrderButton>\n <OrderButton\n width=\"100%\"\n colorScheme=\"black\"\n onClick={() => createOrder({ asDraft: true })}\n disabled={canPlaceOrder}\n >\n {t('saveDraft')}\n </OrderButton>\n </CartButtonsContainer>\n </Card>\n );\n};\n","import { FormProvider, useForm, UseFormReturn } from 'react-hook-form';\nimport * as v from 'zod';\nimport { useModalFactoryContextProvider } from '../../../components/Modal/api';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { TextArea } from '../../../components/TextArea/TextArea';\nimport { useTranslation } from 'react-i18next';\nimport { SpaceOnlyStandOrderCommentsFormSchema } from './SpaceOnlyStandOrderCommentsForm';\nimport Input from '../../../components/Fields/Input';\nimport i18n from '../../../i18n';\nimport { Stack } from '@chakra-ui/react';\nimport { SelectComponent } from '@/components/MultiSelect/MultiSelect';\nimport { CARPET_COLORS, FASCIA_INSCRIPTION_COLORS } from '@/i18n/lang/colors';\n\nconst OptionSchema = v.object(\n {\n value: v.coerce.string(),\n label: v.string(),\n },\n {\n required_error: i18n.t('required-field'),\n }\n);\n\nconst Schema = v\n .object({\n fasciaInscription: v\n .string()\n .min(1, i18n.t('required-field'))\n .max(500, i18n.t('exceed-n-characters', { n: 500 })),\n fasciaInscriptionColor: OptionSchema,\n carpetColor: OptionSchema,\n })\n .merge(SpaceOnlyStandOrderCommentsFormSchema);\n\nexport type ExtendedStandOrderCommentsFormValuesType = v.infer<typeof Schema>;\n\nexport type ExtendedStandOrderCommentsFormType =\n UseFormReturn<ExtendedStandOrderCommentsFormValuesType>;\n\nexport const ExtendedStandOrderCommentsForm = () => {\n const { t } = useTranslation();\n const instance: ExtendedStandOrderCommentsFormType =\n useForm<ExtendedStandOrderCommentsFormValuesType>({\n resolver: zodResolver(Schema),\n });\n\n useModalFactoryContextProvider(instance);\n\n return (\n <FormProvider {...instance}>\n <Stack spacing={5}>\n <Input<ExtendedStandOrderCommentsFormValuesType>\n name=\"fasciaInscription\"\n label={t('fascia-inscription')}\n maxWidth=\"unset\"\n isRequired\n />\n <SelectComponent<ExtendedStandOrderCommentsFormValuesType>\n name=\"fasciaInscriptionColor\"\n label={t('fascia-inscription-color')}\n maxWidth=\"unset\"\n isRequired\n options={FASCIA_INSCRIPTION_COLORS}\n />\n <SelectComponent<ExtendedStandOrderCommentsFormValuesType>\n name=\"carpetColor\"\n label={t('carpet-color')}\n maxWidth=\"unset\"\n isRequired\n options={CARPET_COLORS}\n />\n <TextArea<ExtendedStandOrderCommentsFormValuesType>\n name=\"additionalComments\"\n label={t('comment')}\n />\n </Stack>\n </FormProvider>\n );\n};\n","import { FormProvider, useForm, UseFormReturn } from 'react-hook-form';\nimport * as v from 'zod';\nimport { useModalFactoryContextProvider } from '../../../components/Modal/api';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { TextArea } from '../../../components/TextArea/TextArea';\nimport { useTranslation } from 'react-i18next';\n\nexport const SpaceOnlyStandOrderCommentsFormSchema = v.object({\n additionalComments: v.string().max(1000).optional(),\n});\n\ntype ValuesType = v.infer<typeof SpaceOnlyStandOrderCommentsFormSchema>;\n\nexport type SpaceOnlyStandOrderCommentsFormType = UseFormReturn<ValuesType>;\n\nexport const SpaceOnlyStandOrderCommentsForm = () => {\n const { t } = useTranslation();\n const instance: SpaceOnlyStandOrderCommentsFormType = useForm<ValuesType>({\n resolver: zodResolver(SpaceOnlyStandOrderCommentsFormSchema),\n });\n\n useModalFactoryContextProvider(instance);\n\n return (\n <FormProvider {...instance}>\n <TextArea<ValuesType> name=\"additionalComments\" label={t('comment')} />\n </FormProvider>\n );\n};\n","import React, { useCallback, useMemo } from 'react';\nimport { Icon, Table, Tbody, Td, Th, Thead, Tr } from '@chakra-ui/react';\nimport { ArrowBackIcon, SmallCloseIcon } from '@chakra-ui/icons';\nimport { Card } from '@/components/Card/Card';\nimport { useTranslation } from 'react-i18next';\nimport { OrderItem, TemporaryStaffOrderItem } from '@/model/IOrderItem';\nimport { CART_TABLE } from '@/constants/technical-services';\nimport { numberWithSpaces } from '@/utils/amountTransformation';\nimport Layout from '@/layout/Default';\nimport { Content, ContentInner } from '@/components/Content';\nimport { replacePaths } from '@/utils/route';\nimport { CREATE_EXHIBITION_ORDER_PATH } from '@/constants/router';\nimport Breadcrumbs from '@/components/Breadcrumbs';\nimport { IBreadcrumbItem } from '@/model/common';\nimport { ExhibitionTitle } from '@/components/Sidebar/OrderList/OrderList.styled';\nimport { Loader } from '@/components/Loader/Loader';\nimport { IsLoadingWrapper, LoaderWrapper } from '@/theme/css/styles';\nimport dayjs from 'dayjs';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport { viewExhibitionCart } from '../../features/Routing/protected/exhibitions-by-role';\nimport { AmountCounter } from '../../components/AmountCounter';\nimport { CATEGORY_TYPES } from '../../constants/categorie';\nimport { Product } from '../../model/IProduct';\nimport { Cart as CartInstance } from '../../model/ICart';\nimport {\n BackButtonWrapper,\n Button,\n ExhibitionBoxWrapper,\n OrderCartWrapper,\n OrderPageWrapper,\n PageTitleWithService,\n} from './styled';\nimport { CartTotal } from './CartTotal';\nimport { IBaseOrder } from '../../model/IBaseOrder';\nimport { isNil } from '../../utils/is-nil';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { orderApi, useOrder, useOrderTotal } from '@/store/effector/order';\nimport { useStand } from '@/store/effector/stand';\nimport { useAppLoading } from '@/store/effector/loading';\nimport { OrderItemDependencyWarning } from '@/components/Sidebar/OrderList/OrderItemDependencyWarning';\n\ndayjs.extend(isSameOrAfter);\n\ninterface CartRowProps {\n item: OrderItem | TemporaryStaffOrderItem;\n currency: string;\n}\n\nconst CartRow: React.FC<CartRowProps> = ({ item, currency }) => {\n const { t } = useTranslation();\n const { product } = item;\n const total = numberWithSpaces(item.total, currency);\n const isDisabled =\n product?.category?.name === CATEGORY_TYPES.TEMPORARY_STAFF ||\n product?.category?.name === CATEGORY_TYPES.SELECT_BUILDING ||\n item.included;\n\n const itemName = item?.displayName;\n\n const precision = (() => {\n if (product?.category?.name === CATEGORY_TYPES.SELECT_BUILDING) {\n return 1;\n }\n\n return item.product.category.isDecimal ? 2 : 0;\n })();\n\n const deleteHandler = useCallback(() => {\n orderApi.removeItem(item);\n }, []);\n\n const changeHandler = (value: number) => {\n orderApi.changeItem({\n id: product.getProductId(),\n product,\n amount: value,\n });\n };\n\n const unit = (() => {\n if (product.category.name === CATEGORY_TYPES.SELECT_BUILDING) {\n return t('sqm');\n }\n\n return item.product instanceof Product ? item.product.unit : undefined;\n })();\n\n return (\n <>\n <Tr>\n <Td>{itemName}</Td>\n <Td isNumeric whiteSpace=\"nowrap\">\n {product?.formattedPrice}\n </Td>\n <Td w={120} isNumeric>\n <div style={{ marginLeft: 'auto', width: 'fit-content' }}>\n <AmountCounter\n amountCounterValue={item.getAmount()}\n onChange={(counterValue: number) => changeHandler(counterValue)}\n disabled={isDisabled}\n precision={precision}\n step={product instanceof Product ? product.amountStep : 1}\n suffix={unit}\n />\n </div>\n </Td>\n <Td w={160} isNumeric whiteSpace=\"nowrap\">\n {total}\n </Td>\n <Td w={50} isNumeric>\n {!item.included && (\n <Button\n onClick={deleteHandler}\n disabled={\n product?.category?.id === CATEGORY_TYPES.SELECT_BUILDING\n }\n >\n <Icon as={SmallCloseIcon} />\n </Button>\n )}\n </Td>\n </Tr>\n {item && (\n <OrderItemDependencyWarning\n orderItem={item}\n ml=\"-1.5rem\"\n mr=\"-1.5rem\"\n pl=\"20px\"\n pr=\"20px\"\n width=\"unset\"\n renderProps={(children) => (\n <Tr>\n <Td colSpan={5} pt={0} pb={0}>\n {children}\n </Td>\n </Tr>\n )}\n />\n )}\n </>\n );\n};\n\nconst BackButton = () => {\n const { t } = useTranslation();\n\n return (\n <BackButtonWrapper>\n <ArrowBackIcon w={5} h={5} color=\"grey.300\" />\n {t('toService')}\n </BackButtonWrapper>\n );\n};\n\nconst Cart: React.FC = () => {\n const { currency, margin, exhibitionName } = useExhibition();\n const { exhibitionId, stand } = viewExhibitionCart.useParams();\n const { cleaningDiscount } = viewExhibitionCart.useLoaderData();\n const { items, orderDto } = useOrder();\n const total = useOrderTotal();\n const isLoader = useAppLoading();\n const { standForOrder } = useStand();\n\n const cart = useMemo(() => {\n const order = new IBaseOrder({\n orderId: orderDto?.orderId || 0,\n exhibitionId: orderDto?.exhibitionId || 0,\n // typeOfDiscount: orderDto?.typeOfDiscount || 0,\n // personalDiscount: orderDto?.personalDiscount || 0,\n standId: orderDto?.standId || 0,\n personalExtraChargePercentage: orderDto?.personalExtraChargePercentage,\n removeExtraCharge: orderDto?.removeExtraCharge,\n });\n\n const cartInstance = new CartInstance();\n\n cartInstance\n .setItems(items)\n .setOrder(order)\n .setItems(items)\n .setCleaningDiscounts(cleaningDiscount)\n .setMargin(margin);\n\n if (standForOrder) {\n cartInstance.setStandInfo({\n type: standForOrder.buildingType,\n // this is just to mock, type only will be used\n id: standForOrder.standNumber || 0,\n // this is just to mock, type only will be used\n name: standForOrder.standNumber || '',\n });\n }\n\n if (!isNil(currency)) {\n cartInstance.setCurrency(currency);\n }\n\n return cartInstance;\n }, [orderDto, items, currency, margin, cleaningDiscount, standForOrder]);\n\n const { t } = useTranslation();\n\n const getBack: IBreadcrumbItem[] = [\n {\n label: <BackButton />,\n link: replacePaths(CREATE_EXHIBITION_ORDER_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n }),\n },\n ];\n\n return (\n <>\n {isLoader && (\n <IsLoadingWrapper>\n <LoaderWrapper>\n <Loader />\n </LoaderWrapper>\n </IsLoadingWrapper>\n )}\n <Layout>\n <Content>\n <ContentInner>\n <OrderPageWrapper>\n <PageTitleWithService>\n <Breadcrumbs items={getBack} />\n {t('yourOrder')}\n <ExhibitionBoxWrapper>\n <ExhibitionTitle>{exhibitionName}</ExhibitionTitle>\n </ExhibitionBoxWrapper>\n </PageTitleWithService>\n <OrderCartWrapper>\n <Card width=\"75%\">\n <Table colorScheme=\"gray\">\n <Thead>\n <Tr>\n {CART_TABLE?.map((columnName, index) => {\n const firstColumn = index === 0;\n\n return (\n <Th key={columnName} isNumeric={!firstColumn}>\n {t(columnName)}\n </Th>\n );\n })}\n </Tr>\n </Thead>\n {items?.length > 0 && (\n <Tbody>\n {items?.map((tableRow) => (\n <CartRow\n item={tableRow}\n key={tableRow.uniqueKey}\n currency={currency || ''}\n />\n ))}\n </Tbody>\n )}\n </Table>\n </Card>\n <CartTotal\n total={total}\n currency={currency || ''}\n items={items}\n cart={cart}\n />\n </OrderCartWrapper>\n </OrderPageWrapper>\n </ContentInner>\n </Content>\n </Layout>\n </>\n );\n};\n\nexport default Cart;\n","import styled from 'styled-components';\nimport { Box } from '@chakra-ui/react';\nimport { CenteredPageTitle } from '../../components/Typography/PageTitle';\nimport { ExhibitionBox } from '../../components/Sidebar/OrderList/OrderList.styled';\n\nexport const Button = styled.button`\n opacity: 0.5;\n\n transition: all ease-in-out 0.15s;\n\n &:hover {\n opacity: 1;\n }\n`;\n\nexport const OrderPageWrapper = styled.div``;\n\nexport const OrderCartWrapper = styled.div`\n display: flex;\n flex-direction: row;\n width: 100%;\n padding: 0 100px;\n gap: 24px;\n`;\n\nexport const TotalWrapper = styled.div`\n display: flex;\n flex-direction: column;\n padding-top: 5px;\n`;\n\nexport const TotalRowContainer = styled.div`\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n padding: 5px 0 10px 0;\n`;\n\nexport const TotalRowContainerSummary = styled(TotalRowContainer)`\n padding-top: 20px;\n padding-bottom: 20px;\n`;\n\nexport const CartButtonsContainer = styled.div`\n display: flex;\n flex-direction: column;\n gap: 10px;\n`;\n\nexport const PageTitleWithService = styled(CenteredPageTitle)`\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n padding: 0 100px;\n`;\n\nexport const ExhibitionBoxWrapper = styled(ExhibitionBox)`\n max-width: 25%;\n text-align: end;\n background-color: inherit;\n`;\n\nexport const BackButtonWrapper = styled(Box)`\n display: flex;\n flex-direction: row;\n align-items: center;\n font-size: 16px;\n gap: 10px;\n`;\n","import {\n ButtonGroup,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n} from '@chakra-ui/react';\nimport { Button } from '@/components/Buttons/Button/Button';\n\nimport { useTranslation } from 'react-i18next';\n\ninterface ConfirmModalProps {\n modalMessage: string;\n isOpen: boolean;\n closeModal: () => void;\n confirm: any;\n}\n\nexport const ConfirmModal = ({\n modalMessage,\n isOpen,\n closeModal,\n confirm,\n}: ConfirmModalProps) => {\n const { t } = useTranslation();\n\n return (\n <Modal isOpen={isOpen} onClose={closeModal} size=\"lg\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('attention')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>{modalMessage}</ModalBody>\n <ModalFooter onClick={closeModal}>\n <ButtonGroup gap=\"1\">\n <Button colorScheme=\"secondary\" onClick={confirm}>\n {t('yes')}\n </Button>\n <Button colorScheme=\"black\" onClick={closeModal}>\n {t('cancel')}\n </Button>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import {\n ButtonGroup,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n} from '@chakra-ui/react';\nimport { Button } from '@/components/Buttons/Button/Button';\n\nimport { useTranslation } from 'react-i18next';\n\ninterface DeleteModalProps {\n onSubmit: () => void;\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const DeleteModal = ({\n onSubmit,\n isOpen,\n onClose,\n}: DeleteModalProps): JSX.Element => {\n const { t } = useTranslation();\n\n return (\n <Modal isOpen={isOpen} onClose={onClose} size=\"lg\" isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>{t('attention')}</ModalHeader>\n <ModalCloseButton />\n <ModalBody>{t('deletePosition')}</ModalBody>\n <ModalFooter onClick={onClose}>\n <ButtonGroup gap=\"1\">\n <Button colorScheme=\"secondary\" onClick={onSubmit}>\n {t('yes')}\n </Button>\n <Button colorScheme=\"black\" onClick={onClose}>\n {t('cancel')}\n </Button>\n </ButtonGroup>\n </ModalFooter>\n </ModalContent>\n </Modal>\n );\n};\n","import styled from 'styled-components';\nimport { Accordion, AccordionItem, Box, Text } from '@chakra-ui/react';\nimport { PageTitle } from '@/components/Typography/PageTitle';\n\nexport const AccordionButtonWrapper = styled(AccordionItem)`\n border: none;\n width: 100%;\n`;\n\nexport const PageTitleContainer = styled(PageTitle)`\n padding-top: 30px;\n text-align: center;\n`;\n\nexport const AccordionButtonDescription = styled(Box)`\n flex: 1;\n text-align: left;\n`;\n\nexport const AccordionTitleWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nexport const AccordionTitleContainer = styled(Text)`\n font-size: 18px;\n font-weight: 600;\n display: flex;\n flex-direction: row;\n align-items: center;\n gap: 10px;\n`;\n\nexport const DotContainer = styled(Box)`\n margin: 0 2px;\n border-radius: 50%;\n display: inline-block;\n`;\n\nexport const AccordionItemWrapper = styled.div`\n width: 50%;\n min-width: 800px;\n padding: 10px;\n`;\n\nexport const AccordionWrapper = styled(Accordion)`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nexport const OrderRowWrapper = styled(Box)`\n padding: 10px;\n border-radius: 5px;\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n`;\n\nexport const OrdersWrapper = styled(Box)`\n width: 100%;\n`;\n\nexport const OrderInfoContainer = styled(Box)`\n width: 60%;\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n gap: 50px;\n color: #2d3748;\n font-size: 16px;\n`;\n\nexport const OrderOptionsContainer = styled(Box)`\n width: 40%;\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n align-items: center;\n gap: 10px;\n`;\n\nexport const OptionBox = styled(Box)`\n color: #718096;\n cursor: pointer;\n\n &:hover {\n color: #e53e3e;\n }\n`;\n\nexport const AddOrderButtonContainer = styled(Box)`\n padding-top: 20px;\n padding-bottom: 10px;\n display: flex;\n justify-content: flex-start;\n`;\n","import {\n filesStorageApi,\n useFilesStorage,\n} from '@/pages/Exhibition/FilesStorage/filesStorageApi';\nimport { useQuery } from '@tanstack/react-query';\nimport { typedAxios } from '@/api/typed-axios';\nimport {\n Button,\n Card,\n CardBody,\n Drawer,\n DrawerBody,\n DrawerCloseButton,\n DrawerContent,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n Table,\n TableContainer,\n Tbody,\n Td,\n Text,\n Th,\n Thead,\n Tr,\n} from '@chakra-ui/react';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { useTranslation } from 'react-i18next';\nimport React, { useRef } from 'react';\nimport { toast } from 'react-toastify';\nimport { queryClient } from '@/features/query';\nimport { LoaderWrapper } from '@/components/Loader/Loader';\nimport fetchApi from '@/utils/fetchAPI';\nimport { FileUtils } from '@/utils/file-utils';\nimport type { ITEPortal_Domain_Dto_Stand_GetStandFileDto } from '@/api';\nimport { DeleteIcon } from '@chakra-ui/icons';\nimport { DownloadFileLink } from '@/components/DownloadFileLink';\n\ntype FilesStoragePropsType = {\n canUploadNewFiles: boolean;\n};\n\nexport const FilesStorage = (props: FilesStoragePropsType) => {\n const { canUploadNewFiles } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { t } = useTranslation();\n const { stand } = useFilesStorage();\n\n const hasStandId = typeof stand?.standId === 'number';\n\n const { isFetching, data = [] } = useQuery({\n queryKey: ['stand-files-storage', stand?.standId],\n enabled: hasStandId,\n queryFn: async () => {\n if (!stand?.standId) {\n return [];\n }\n\n return typedAxios.stand.getStandsFiles({\n standId: stand.standId,\n });\n },\n });\n\n const handleUpload = async (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!canUploadNewFiles) {\n return;\n }\n\n try {\n const file = e.currentTarget.files?.[0];\n\n if (!stand?.standId || !(file instanceof File)) {\n return;\n }\n\n await typedAxios.stand.putStandsFiles({\n standId: stand?.standId,\n formData: {\n file,\n },\n });\n\n await queryClient.refetchQueries({\n queryKey: ['stand-files-storage', stand?.standId],\n });\n\n toast.success(t('file-upload-success'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n const handleClose = () => {\n filesStorageApi.reset();\n };\n\n const handleDownloadArchive = async () => {\n if (!stand?.standId) {\n return;\n }\n\n const { data: stream } = await fetchApi(`stands/${stand?.standId}/zip`, {\n method: 'GET',\n responseType: 'blob',\n });\n\n FileUtils.saveBlobAsFile(stream, `stand-files-${stand.standId}.zip`);\n };\n\n const handleFileDelete =\n (file: ITEPortal_Domain_Dto_Stand_GetStandFileDto) => async () => {\n if (!stand?.standId) {\n return;\n }\n\n try {\n await typedAxios.stand.deleteStandsFiles({\n standId: stand?.standId,\n fileId: file.id,\n });\n await queryClient.refetchQueries({\n queryKey: ['stand-files-storage', stand?.standId],\n });\n\n toast.success(t('file-delete-success'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n return (\n <Drawer\n size=\"lg\"\n isOpen={hasStandId}\n placement=\"right\"\n onClose={handleClose}\n >\n <DrawerOverlay />\n <DrawerContent>\n <DrawerCloseButton />\n <DrawerHeader>\n {t('stand-files', { standNumber: stand?.standNumber })}\n </DrawerHeader>\n <DrawerBody>\n <LoaderWrapper\n loading={isFetching}\n display=\"flex\"\n flexDirection=\"column\"\n >\n {canUploadNewFiles && (\n <>\n <input\n ref={inputRef}\n type=\"file\"\n hidden\n onChange={handleUpload}\n />\n <AsyncButton\n marginLeft=\"auto\"\n colorScheme=\"blue\"\n mt={2}\n mb={4}\n onClick={() => {\n inputRef.current?.click();\n }}\n >\n {t('upload')}\n </AsyncButton>\n </>\n )}\n\n {data.length > 0 && (\n <Card>\n <CardBody>\n <TableContainer>\n <Table variant=\"simple\">\n <Thead>\n <Tr>\n <Th>{t('file')}</Th>\n <Th>{t('delete')}</Th>\n </Tr>\n </Thead>\n <Tbody>\n {data.map((file) => {\n return (\n <Tr key={file.fileName}>\n <Td>\n <DownloadFileLink\n attachmentUrl={file.fileUrl}\n fileName={file.fileName}\n withIcon={false}\n color=\"inherit\"\n fontSize=\"sm\"\n />\n </Td>\n <Td isNumeric>\n <DeleteIcon\n cursor=\"pointer\"\n onClick={handleFileDelete(file)}\n />\n </Td>\n </Tr>\n );\n })}\n </Tbody>\n </Table>\n </TableContainer>\n </CardBody>\n </Card>\n )}\n\n {!isFetching && data.length === 0 && (\n <Text color=\"gray.500\">{t('no-files-uploaded')}</Text>\n )}\n </LoaderWrapper>\n </DrawerBody>\n\n <DrawerFooter>\n <Button\n variant=\"outline\"\n colorScheme=\"red\"\n mr={3}\n onClick={handleClose}\n >\n {t('cancel')}\n </Button>\n <AsyncButton\n variant=\"outline\"\n colorScheme=\"red\"\n mr={3}\n onClick={handleDownloadArchive}\n >\n {t('download-files-archive')}\n </AsyncButton>\n </DrawerFooter>\n </DrawerContent>\n </Drawer>\n );\n};\n","import { createApi, createStore } from 'effector';\nimport { useUnit } from 'effector-react';\nimport { ITEPortal_Domain_Dto_StandSummariesDto } from '@/api';\n\ntype FilesStorageStateType = {\n stand: ITEPortal_Domain_Dto_StandSummariesDto | null;\n};\n\nconst $filesStorage = createStore<FilesStorageStateType>({\n stand: null,\n});\n\nexport const filesStorageApi = createApi($filesStorage, {\n setStand: (_, stand: ITEPortal_Domain_Dto_StandSummariesDto) => ({\n stand,\n }),\n\n reset: () => ({\n stand: null,\n }),\n});\n\nexport const useFilesStorage = () => useUnit($filesStorage);\n","import React, { useState } from 'react';\nimport { useNavigate, useRouter } from '@tanstack/react-router';\nimport { Card } from '@/components/Card/Card';\nimport { Content, ContentInner } from '@/components/Content';\nimport { Table } from '@/components/Table/Table';\nimport {\n Accordion,\n AccordionButton,\n AccordionIcon,\n AccordionItem,\n AccordionPanel,\n Button,\n Flex,\n Text,\n Tooltip,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport {\n AccordionButtonDescription,\n AccordionButtonWrapper,\n AccordionItemWrapper,\n AccordionTitleContainer,\n AccordionTitleWrapper,\n AccordionWrapper,\n AddOrderButtonContainer,\n OptionBox,\n OrderInfoContainer,\n OrderOptionsContainer,\n OrderRowWrapper,\n OrdersWrapper,\n PageTitleContainer,\n} from './Exhibition.styled';\nimport { MdDelete, MdModeEdit } from 'react-icons/md';\nimport { AiFillFilePdf } from 'react-icons/ai';\nimport Layout from '@/layout/Default';\nimport fetchApi from '@/utils/fetchAPI';\nimport { Loader } from '@/components/Loader/Loader';\nimport { GET_PDF_BY_ORDER } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { DeleteModal } from '@/pages/Exhibition/DeleteModal';\nimport { exhibitionViewRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport {\n ITEPortal_Domain_Dto_OrderItemDto,\n ITEPortal_Domain_Dto_StandOrderDto,\n ITEPortal_Domain_Dto_StandSummariesDto,\n} from '@/api';\nimport { typedAxios } from '@/api/typed-axios';\nimport { toast } from 'react-toastify';\nimport { useEditOrderLoader } from './useEditOrderLoader';\nimport { InfoIcon } from '@chakra-ui/icons';\nimport { StandDescription } from './shared/StandDescription';\nimport { useExhibitionStateReset } from '@/hooks/useExhibitionStateReset';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { standApi } from '@/store/effector/stand';\nimport { orderApi } from '@/store/effector/order';\nimport { loadingApi, useAppLoading } from '@/store/effector/loading';\nimport { FileUtils } from '../../utils/file-utils';\nimport { OrderBadge } from '@/components/OrderBadge';\nimport { ORDER_STATUSES } from '@/constants/order';\nimport { filesStorageApi } from '@/pages/Exhibition/FilesStorage/filesStorageApi';\nimport { FilesStorage } from '@/pages/Exhibition/FilesStorage/FilesStorage';\nimport { useGetOrderItems } from '@/pages/Exhibition/useGetOrderItems';\nimport { orderTranscriptTableColumns } from '@/pages/Exhibition/orderTranscriptTableColumns';\n\ninterface AccordionButtonContentProps {\n standName: string;\n stand: ITEPortal_Domain_Dto_StandSummariesDto;\n}\n\ntype OrderRowContentProps = {\n title: string;\n stand: ITEPortal_Domain_Dto_StandSummariesDto;\n editable: boolean;\n} & Pick<ITEPortal_Domain_Dto_StandOrderDto, 'status' | 'orderId'>;\n\ntype OrderRowProps = Required<{\n status: OrderRowContentProps['status'];\n order: Required<OrderRowContentProps['orderId']>;\n stand: OrderRowContentProps['stand'];\n canEdit: boolean;\n canRemove: boolean;\n}>;\n\nconst defaultAccordionValue = [0];\n\nconst AccordionButtonContent = ({\n stand,\n standName,\n}: AccordionButtonContentProps) => {\n const { standNumber } = stand;\n const { t } = useTranslation();\n\n return (\n <AccordionTitleWrapper>\n <AccordionTitleContainer>\n {standName}\n {standNumber && (\n <>\n , {standNumber}\n <Tooltip label={t('stand-number')} hasArrow placement=\"top\">\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </>\n )}\n </AccordionTitleContainer>\n </AccordionTitleWrapper>\n );\n};\n\nconst OrderOptions = ({\n status,\n order,\n stand,\n canEdit,\n canRemove,\n}: OrderRowProps): JSX.Element => {\n const culture = localStorage.getItem('lang');\n const router = useRouter();\n const { t } = useTranslation();\n const [openConfirm, setOpenConfirm] = useState(false);\n\n const { exhibitionId } = exhibitionViewRoute.useParams();\n\n const { editOrder } = useEditOrderLoader({\n orderId: order,\n exhibitionId: +exhibitionId,\n stand,\n });\n\n const showPdf = async (e: MouseEvent) => {\n e.stopPropagation();\n\n try {\n const { data } = await fetchApi(GET_PDF_BY_ORDER(order), {\n method: FetchMethods.Get,\n responseType: 'blob',\n params: {\n culture,\n },\n });\n\n FileUtils.saveBlobAsFile(data, `order-${order}.pdf`);\n } catch (error) {}\n };\n\n const deleteOrder = async () => {\n loadingApi.on();\n try {\n if (typeof order === 'number') {\n await typedAxios.order.deleteOrdersDraft({\n orderId: order,\n });\n\n router.invalidate();\n }\n } catch {\n toast.error(\n t('unable-to-delete', {\n entity: t('order').toLowerCase(),\n })\n );\n } finally {\n loadingApi.off();\n }\n };\n\n const openDeleteModal = (e: MouseEvent) => {\n e.stopPropagation();\n\n setOpenConfirm(!openConfirm);\n };\n\n const closeDeleteModal = () => setOpenConfirm(false);\n\n return (\n <>\n <OptionBox onClick={(e: MouseEvent) => showPdf(e)}>\n <AiFillFilePdf />\n </OptionBox>\n <DeleteModal\n onSubmit={deleteOrder}\n isOpen={openConfirm}\n onClose={closeDeleteModal}\n />\n {status === ORDER_STATUSES.Draft && (\n <>\n {canEdit && (\n <OptionBox onClick={editOrder}>\n <MdModeEdit />\n </OptionBox>\n )}\n {canRemove && (\n <OptionBox onClick={(e: MouseEvent) => openDeleteModal(e)}>\n <MdDelete />\n </OptionBox>\n )}\n </>\n )}\n </>\n );\n};\n\nconst OrderRowContent = ({\n title,\n status,\n orderId,\n stand,\n editable,\n}: OrderRowContentProps): JSX.Element => {\n return (\n <OrdersWrapper>\n <OrderRowWrapper>\n <OrderInfoContainer>\n <Text minW=\"15%\">{title}</Text>\n <Text minW=\"5%\">{orderId}</Text>\n <OrderBadge status={status} />\n </OrderInfoContainer>\n <OrderOptionsContainer>\n <OrderOptions\n canEdit={editable}\n canRemove={editable}\n status={status}\n order={orderId}\n stand={stand}\n />\n </OrderOptionsContainer>\n </OrderRowWrapper>\n </OrdersWrapper>\n );\n};\n\nconst Exhibition = () => {\n const { exhibitionId } = exhibitionViewRoute.useParams();\n const { standsData } = exhibitionViewRoute.useLoaderData();\n const { exhibition } = useExhibition();\n const isLoader = useAppLoading();\n const { getOrderItems, orderLoading } = useGetOrderItems();\n const [orderItems, setOrderItems] = useState<\n Array<ITEPortal_Domain_Dto_OrderItemDto>\n >([]);\n\n const { t } = useTranslation();\n const navigate = useNavigate();\n\n useExhibitionStateReset();\n\n if (!exhibition) {\n return null;\n }\n\n const { name } = exhibition;\n\n const canManageOrder = exhibition.canEditOrders;\n\n const createOrder = (stand: ITEPortal_Domain_Dto_StandSummariesDto) => {\n orderApi.clearProducts();\n standApi.setStandForOrder(stand);\n\n navigate({\n to: `/exhibitions/$exhibitionId/$stand/create`,\n params: {\n exhibitionId: exhibitionId,\n stand: stand.standId,\n },\n });\n };\n\n return (\n <Layout>\n <Content>\n <ContentInner>\n <PageTitleContainer centered=\"true\">{name}</PageTitleContainer>\n <AccordionWrapper defaultIndex={defaultAccordionValue} allowMultiple>\n {isLoader ? (\n <Loader centralized />\n ) : (\n standsData?.map((stand, index) => {\n const { orders } = stand;\n const hasOrders = !!orders?.length;\n const standName = `${t('stand')} ${index + 1}`;\n\n const getOrderData = (orderIndex: number) => {\n setOrderItems([]);\n const order = orders?.[orderIndex];\n const products = getOrderItems(order?.orderId);\n\n products.then(function (result) {\n if (result) {\n setOrderItems(result);\n }\n });\n };\n\n return (\n <AccordionItemWrapper key={index}>\n <Card>\n <AccordionButtonWrapper>\n <AccordionButton\n _hover={{ backgroundColor: 'inherit' }}\n >\n <AccordionButtonDescription as=\"span\">\n <AccordionButtonContent\n standName={standName}\n stand={stand}\n />\n </AccordionButtonDescription>\n <AccordionIcon />\n </AccordionButton>\n\n <AccordionPanel pb={4}>\n <StandDescription stand={stand} />\n\n <AddOrderButtonContainer gap={2}>\n {canManageOrder && (\n <Button\n size=\"sm\"\n onClick={() => createOrder(stand)}\n >\n {t('createNewOrder')}\n </Button>\n )}\n {stand.projectId && (\n <Button\n colorScheme=\"red\"\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n navigate({\n to: `/exhibitions/${exhibitionId}/${stand.standId}/project/${stand.projectId}`,\n });\n }}\n >\n {t('stand-project')}\n </Button>\n )}\n <Button\n size=\"sm\"\n variant=\"outline\"\n colorScheme=\"red\"\n onClick={() => {\n filesStorageApi.setStand(stand);\n }}\n >\n {t('my-files')}\n </Button>\n </AddOrderButtonContainer>\n <Accordion\n onChange={(tabIndex: number) =>\n getOrderData(tabIndex)\n }\n allowToggle\n reduceMotion\n >\n {hasOrders &&\n orders.map((order, orderKey) => {\n const orderTitle = `${t('order')} ${\n orderKey + 1\n }`;\n\n return (\n <AccordionItem key={orderKey}>\n <AccordionButton>\n <OrderRowContent\n title={orderTitle}\n status={order?.status}\n orderId={order?.orderId}\n key={orderKey}\n stand={stand}\n editable={canManageOrder}\n />\n <AccordionIcon />\n </AccordionButton>\n\n <AccordionPanel\n pb={4}\n style={{\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n {orderLoading ? (\n <Loader />\n ) : (\n <Flex flexDir=\"column\">\n <Table\n columns={\n orderTranscriptTableColumns\n }\n data={orderItems}\n />\n </Flex>\n )}\n </AccordionPanel>\n </AccordionItem>\n );\n })}\n </Accordion>\n </AccordionPanel>\n </AccordionButtonWrapper>\n </Card>\n </AccordionItemWrapper>\n );\n })\n )}\n </AccordionWrapper>\n <FilesStorage canUploadNewFiles />\n </ContentInner>\n </Content>\n </Layout>\n );\n};\n\nexport default Exhibition;\n","import i18n from '@/i18n';\nimport { Column } from 'react-table';\nimport { ITEPortal_Domain_Dto_OrderItemDto } from '@/api';\nimport styled from 'styled-components';\nimport { Box } from '@chakra-ui/react';\n\nconst TranscriptTableRow = styled(Box)`\n font-size: 12px;\n`;\n\nconst TranscriptTableHeader = styled(Box)`\n font-size: 10px;\n font-weight: 600;\n`;\n\nexport const orderTranscriptTableColumns = [\n {\n Header: (\n <TranscriptTableHeader>\n {i18n.t('product-type-common')}\n </TranscriptTableHeader>\n ),\n accessor: 'productName',\n width: '60%',\n Cell: ({ value }) => {\n return <TranscriptTableRow>{value}</TranscriptTableRow>;\n },\n },\n {\n Header: <TranscriptTableHeader>{i18n.t('language')}</TranscriptTableHeader>,\n accessor: 'language',\n Cell: ({ value }) => {\n return <TranscriptTableRow>{value}</TranscriptTableRow>;\n },\n },\n {\n Header: (\n <TranscriptTableHeader>\n {i18n.t('peopleMountShort')}\n </TranscriptTableHeader>\n ),\n accessor: 'peopleAmount',\n Cell: ({ value }) => {\n return (\n <TranscriptTableRow>\n {value && value > 0 ? value : ''}\n </TranscriptTableRow>\n );\n },\n },\n {\n Header: (\n <TranscriptTableHeader>{i18n.t('daysMountShort')}</TranscriptTableHeader>\n ),\n accessor: 'dayAmount',\n Cell: ({ value }) => {\n return (\n <TranscriptTableRow>\n {value && value > 0 ? value : ''}\n </TranscriptTableRow>\n );\n },\n },\n {\n Header: <TranscriptTableHeader>{i18n.t('amount')}</TranscriptTableHeader>,\n accessor: 'amount',\n Cell: ({ value }) => {\n return <TranscriptTableRow>{value}</TranscriptTableRow>;\n },\n },\n] satisfies Array<Column<ITEPortal_Domain_Dto_OrderItemDto>>;\n","import styled from 'styled-components';\nimport { Flex, Text, Tooltip } from '@chakra-ui/react';\nimport {\n StandConfDescriptionByConf,\n StandConfLabelsByConf,\n StandTypeLabelsByType,\n} from '../../../utils/constants';\nimport { InfoIcon } from '@chakra-ui/icons';\nimport { useTranslation } from 'react-i18next';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Domain_Dto_StandSummariesDto,\n} from '../../../api';\nimport { isNil } from '@/utils/is-nil';\nimport { getPavilionLabelByCode } from '@/pages/AdminPanel/PersonalAccounts/StandsTab/contsants';\n\nconst AccordionSubTitleContainer = styled.div`\n display: flex;\n flex-direction: row;\n color: #718096;\n font-size: 14px;\n gap: 10px;\n align-items: center;\n`;\n\nexport const StandDescription = ({\n stand,\n includeStandNumber,\n inline,\n originalBuildingType,\n}: {\n originalBuildingType?: ITEPortal_Contracts_Enums_BuildingType;\n stand: ITEPortal_Domain_Dto_StandSummariesDto;\n includeStandNumber?: boolean;\n inline?: boolean;\n}) => {\n const {\n buildingType,\n standConfiguration,\n standNumber,\n area,\n secondFloorArea,\n pavilionHall,\n } = stand;\n const totalArea = (area || 0) + (secondFloorArea || 0);\n const { t } = useTranslation();\n const shouldRenderStandNumber = includeStandNumber && standNumber;\n\n return (\n <AccordionSubTitleContainer>\n <Flex\n gap={inline ? 4 : 1}\n flexDirection={inline ? 'row' : 'column'}\n width=\"100%\"\n flexWrap=\"wrap\"\n >\n {shouldRenderStandNumber && (\n <Flex flexDirection=\"row\" alignItems=\"center\" gap={2}>\n <Text whiteSpace=\"nowrap\">{standNumber}</Text>\n <Tooltip label={t('stand-number')} hasArrow placement=\"top\">\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </Flex>\n )}\n {!isNil(buildingType) && (\n <Flex flexDirection=\"row\" alignItems=\"center\" gap={2}>\n <Text whiteSpace=\"nowrap\">\n {StandTypeLabelsByType[originalBuildingType || buildingType]}\n </Text>\n <Tooltip\n label={\n buildingType === 1\n ? t('stand-space-only-description')\n : t('area-type')\n }\n hasArrow\n placement=\"top\"\n >\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </Flex>\n )}\n <Flex flexDirection=\"row\" alignItems=\"center\" gap={2}>\n <Text whiteSpace=\"nowrap\">\n {totalArea} {t('sqm')}\n </Text>\n <Tooltip label={t('stand-area')} hasArrow placement=\"top\">\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </Flex>\n {standConfiguration && (\n <Flex flexDirection=\"row\" alignItems=\"center\" gap={2}>\n <Text whiteSpace=\"nowrap\">\n {StandConfLabelsByConf[standConfiguration]}\n </Text>\n <Tooltip\n label={\n StandConfDescriptionByConf[standConfiguration] ||\n t('stand-configuration')\n }\n hasArrow\n placement=\"top\"\n >\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </Flex>\n )}\n {pavilionHall && (\n <Flex flexDirection=\"row\" alignItems=\"center\" gap={2}>\n <Text whiteSpace=\"nowrap\">\n {getPavilionLabelByCode(pavilionHall)}\n </Text>\n <Tooltip label={t('pavilion')} hasArrow placement=\"top\">\n <InfoIcon color=\"lightgray\" boxSize={4} />\n </Tooltip>\n </Flex>\n )}\n </Flex>\n </AccordionSubTitleContainer>\n );\n};\n","import { typedAxios } from '@/api/typed-axios';\nimport { Category } from '@/model/ICategory';\nimport { OrderItem, TemporaryStaffOrderItem } from '@/model/IOrderItem';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Domain_Dto_OrderDto,\n ITEPortal_Domain_Dto_StandSummariesDto,\n} from '@/api';\nimport { useSearchCategoryForProduct } from '@/hooks/useSearchCategoryForProduct';\nimport { useNavigate } from '@tanstack/react-router';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport { ProductUtils } from '@/utils/product-utils';\nimport { standApi } from '@/store/effector/stand';\nimport { orderApi } from '@/store/effector/order';\nimport { loadingApi } from '@/store/effector/loading';\nimport { Product } from '@/model/IProduct';\n\nexport const useEditOrderLoader = ({\n orderId,\n exhibitionId,\n stand,\n}: {\n orderId: ITEPortal_Domain_Dto_OrderDto['orderId'];\n exhibitionId: ITEPortal_Domain_Dto_OrderDto['exhibitionId'];\n stand: ITEPortal_Domain_Dto_StandSummariesDto;\n}) => {\n const { findCategoryForProduct } = useSearchCategoryForProduct();\n const navigate = useNavigate();\n\n const editOrder = async () => {\n if (!orderId || !exhibitionId || !stand.currency) {\n return;\n }\n\n loadingApi.on();\n\n try {\n let buildingType = stand.buildingType;\n\n const orderDto = await typedAxios.order.getOrders1({\n orderId: +orderId,\n });\n\n const { products: draftProducts, standId } = orderDto;\n\n const data = await typedAxios.priceListItem.getPricelistItems({\n exhibitionId: +exhibitionId,\n currency: stand.currency,\n });\n\n const buildings = data.filter(\n (p) => p.categoryName === CATEGORY_TYPES.SELECT_BUILDING\n );\n\n const orderedBuilding = buildings?.find((b) =>\n draftProducts?.find((dp) => b.productName === dp.id)\n );\n\n if (orderedBuilding && Array.isArray(orderedBuilding.buildingTypes)) {\n buildingType = Math.max(\n ...orderedBuilding.buildingTypes\n ) as ITEPortal_Contracts_Enums_BuildingType;\n }\n\n const productsInfo = data?.filter((product) => {\n if (!Array.isArray(draftProducts)) {\n return [];\n }\n\n const orderProductIds = draftProducts.map(\n (draftProduct) => draftProduct.id\n );\n\n if (!product.productName) {\n return false;\n }\n\n return orderProductIds.includes(product.productName);\n });\n\n if (!draftProducts) {\n return;\n }\n\n const draftOrderedItems: Array<OrderItem> = [];\n\n draftProducts.forEach((responseProduct) => {\n const filteredProduct = productsInfo?.find(\n (productInfo) => productInfo?.productName === responseProduct?.id\n );\n\n if (!filteredProduct) {\n return;\n }\n\n const category =\n findCategoryForProduct(filteredProduct?.categoryId) ||\n new Category({\n id: filteredProduct?.categoryName || '',\n name: filteredProduct?.categoryName,\n displayName: filteredProduct?.categoryDisplayName,\n });\n\n const product = responseProduct.included\n ? Product.linkedFromJSON({ ...filteredProduct, category })\n : ProductUtils.createProductFromPriceListItem(filteredProduct, {\n category,\n });\n\n if (TemporaryStaffOrderItem.is(responseProduct)) {\n draftOrderedItems.push(\n TemporaryStaffOrderItem.fromJSON({\n ...responseProduct,\n product,\n })\n );\n } else {\n draftOrderedItems.push(\n OrderItem.fromJSON({\n ...responseProduct,\n product,\n included: !!responseProduct.included,\n id: product.getProductId(),\n })\n );\n }\n });\n\n console.log(draftOrderedItems);\n\n if (draftOrderedItems.length > 0) {\n orderApi.setState(draftOrderedItems);\n }\n\n orderApi.setOrderDto(orderDto);\n\n standApi.setStandForOrder({ ...stand, buildingType });\n\n navigate({\n to: `/exhibitions/$exhibitionId/$stand/create`,\n params: {\n exhibitionId: exhibitionId,\n stand: standId,\n },\n });\n } finally {\n loadingApi.off();\n }\n };\n\n return {\n editOrder,\n };\n};\n","import { typedAxios } from '@/api/typed-axios';\nimport { ITEPortal_Domain_Dto_OrderDto } from '@/api';\nimport { useState } from 'react';\n\nexport const useGetOrderItems = () => {\n const [orderLoading, setOrderLoading] = useState<boolean>(false);\n\n const getOrderItems = async (\n orderId: ITEPortal_Domain_Dto_OrderDto['orderId']\n ) => {\n if (!orderId) {\n return;\n }\n\n setOrderLoading(true);\n\n try {\n const orders = await typedAxios.order.getOrders1({\n orderId: +orderId,\n });\n\n const { products } = orders;\n\n return products;\n } finally {\n setOrderLoading(false);\n }\n };\n\n return { getOrderItems, orderLoading };\n};\n","import {\n Button,\n CardBody,\n CardHeader,\n FormControl,\n FormErrorMessage,\n Heading,\n Input,\n Stack,\n} from '@chakra-ui/react';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { useTranslation } from 'react-i18next';\nimport { useState } from 'react';\nimport { useNavigate } from '@tanstack/react-router';\nimport { VERIFY_EMAIL_PATH } from '@/features/Routing/RoutesConfig/authRoutesConfig';\nimport { Logo, StyledCard } from '@/pages/common/Auth.styled';\nimport fetchApi from '@/utils/fetchAPI';\nimport { LOGIN } from '@/constants/endpoints';\nimport { FetchMethods } from '@/utils/constants';\nimport { FormError } from '@/model/common';\nimport { LanguageSwitcher } from '@/components/LanguageSwitcher/LanguageSwitcher';\nimport { DEFAULT_LOGO_PATH } from '@/utils/constants';\nimport { loginRoute } from '../../features/Routing/auth';\nimport { authApi } from '@/store/effector/auth';\n\nconst LoginPage = (): JSX.Element => {\n const { t } = useTranslation();\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [errors, setErrors] = useState<FormError>({});\n const navigate = useNavigate();\n const { redirect } = loginRoute.useSearch();\n const culture = localStorage.getItem('lang');\n\n const { register, handleSubmit } = useForm();\n\n const submitHandler = async (values: FieldValues) => {\n const email = values.email;\n\n setIsSubmitting(true);\n\n try {\n await fetchApi(LOGIN, {\n method: FetchMethods.Post,\n data: {\n email: email,\n },\n params: {\n culture,\n },\n });\n\n localStorage.removeItem('user');\n authApi.addEmail(values.email);\n\n navigate({\n to: VERIFY_EMAIL_PATH,\n search: {\n redirect,\n },\n });\n } catch (error) {\n setErrors({ email: ['Email не зарегистрирован'] });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <StyledCard>\n <CardHeader>\n <Logo src={DEFAULT_LOGO_PATH} alt=\"Logo\" />\n <LanguageSwitcher />\n <Heading size={{ base: 'xs', md: 'sm' }}>{t('welcomeAuth')}</Heading>\n <Heading size={{ base: 'xs' }} fontWeight=\"400\" marginTop=\"7px\">\n {t('loginTitle')}\n </Heading>\n </CardHeader>\n <CardBody>\n <form onSubmit={handleSubmit(submitHandler)}>\n <Stack spacing=\"5\">\n <FormControl isInvalid={!!errors['email']}>\n <Input\n type=\"email\"\n placeholder={t('emailPlaceholder') as string}\n {...register('email', { required: true })}\n />\n {errors['email'] && (\n <FormErrorMessage>{errors['email'].join(' ')}</FormErrorMessage>\n )}\n </FormControl>\n <Button type=\"submit\" isLoading={isSubmitting}>\n {t('signIn')}\n </Button>\n </Stack>\n </form>\n </CardBody>\n </StyledCard>\n );\n};\n\nexport default LoginPage;\n","import Layout from '@/layout/Default';\nimport TechnicalServicesGrid from '@/components/TechnicalServicesGrid';\nimport { TKey } from '../../i18n/types';\n\ninterface CategoriesProps {\n title?: TKey;\n}\n\nconst Categories: React.FC<CategoriesProps> = ({ title }) => {\n return (\n <Layout>\n <TechnicalServicesGrid title={title} />\n </Layout>\n );\n};\n\nexport default Categories;\n","import { ContentInner, ContentWithSidebars } from '@/components/Content';\nimport { PageTitle } from '@/components/Typography/PageTitle';\nimport CategoriesSidebar from '@/components/Sidebar/CategoriesSidebar';\nimport Breadcrumbs from '@/components/Breadcrumbs';\nimport ServiceFactory from '@/components/Forms/Services/ServiceFactory';\nimport OrderListSidebar from '@/components/Sidebar/OrderList';\nimport styled from 'styled-components';\nimport { IBreadcrumbItem } from '@/model/common';\nimport { useTranslation } from 'react-i18next';\nimport { CREATE_EXHIBITION_ORDER_PATH } from '@/constants/router';\nimport { replacePaths } from '@/utils/route';\nimport { getBreadcrumbsByCategory } from '@/utils/breadcrumbs';\nimport Layout from '@/layout/Default';\nimport { useCategoriesByData } from '@/hooks/categoriesConverter/useCategoriesByData';\nimport { createExhibitionOrderServiceRoute } from '../../features/Routing/protected/exhibitions-by-role';\nimport { useCatalog } from '@/store/effector/catalog';\nimport { Loader } from '@/components/Loader/Loader';\n\nconst StyledContentInner = styled(ContentInner)`\n padding: 26px 24px;\n`;\n\nconst Service = () => {\n const { t } = useTranslation();\n const { rootCategories, flatMap, isLoading } = useCatalog();\n\n const exhibitionCategoriesObject = useCategoriesByData(rootCategories);\n // const exhibitionSubCategoriesObject = useSubCategoriesByData(subCategories);\n const { exhibitionId, stand, service } =\n createExhibitionOrderServiceRoute.useParams();\n\n const categoryInfo = flatMap.get(service); //useProductCategory(mergedCategories, service);\n const category = categoryInfo;\n const description = categoryInfo?.description || '';\n\n if (isLoading) {\n return <Loader centralized />;\n }\n\n if (!category) {\n // todo update it\n return <>not found</>;\n }\n\n const breadcrumbsItems = () => {\n return [\n {\n label: t('technicalServices'),\n link: replacePaths(CREATE_EXHIBITION_ORDER_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n }),\n },\n ...getBreadcrumbsByCategory(category, exhibitionId, stand),\n ] as IBreadcrumbItem[];\n };\n\n return (\n <Layout>\n <CategoriesSidebar categories={exhibitionCategoriesObject} />\n <OrderListSidebar />\n <ContentWithSidebars>\n <StyledContentInner>\n <Breadcrumbs items={breadcrumbsItems()} />\n <PageTitle>{category.displayName}</PageTitle>\n <ServiceFactory\n category={category}\n description={description}\n // subCategoryId={subCategory?.parent?.id}\n />\n </StyledContentInner>\n </ContentWithSidebars>\n </Layout>\n );\n};\n\nexport default Service;\n","import { IExhibitionSummary } from '@/model/IExhibitionSummary';\nimport { isNil } from '@/utils/is-nil';\nimport { ExhibitionCard } from '@/components/Card/ExhibitionCard';\n\nimport styled from 'styled-components';\nimport { Link } from '@tanstack/react-router';\nimport { useExhibitionDetailedPreload } from './hooks/use-exhibition-detailed-preload';\nimport { Stack } from '@chakra-ui/react';\n\nconst ExhibitionsCardWrapper = styled(Link)`\n width: 100%;\n //min-width: 800px;\n display: block;\n`;\n\nexport const ExhibitionsList = (props: {\n exhibitions: IExhibitionSummary[];\n}) => {\n const { preloadExhibition } = useExhibitionDetailedPreload();\n\n return (\n <Stack spacing={4}>\n {props.exhibitions.map((exhibition, index) => {\n const { exhibitionSummary, stands, orders } = exhibition;\n\n if (isNil(exhibitionSummary)) {\n return null;\n }\n\n const { logoUrl, name, id, place, description } = exhibitionSummary;\n\n const subtitles = [\n `${exhibition.formattedStartDate} - ${exhibition.formattedEndDate}`,\n place,\n ];\n\n return (\n <ExhibitionsCardWrapper\n to={`/exhibitions/${id}`}\n key={index}\n onClick={() => preloadExhibition(exhibition)}\n >\n <ExhibitionCard\n image={logoUrl || ''}\n name={name || ''}\n subtitles={subtitles || []}\n description={description}\n stands={stands}\n orders={orders}\n />\n </ExhibitionsCardWrapper>\n );\n })}\n </Stack>\n );\n};\n","import {\n SystemStyleObject,\n Tab,\n TabList,\n TabPanel,\n TabPanelProps,\n TabPanels,\n TabProps,\n Tabs,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { useExhibitionLoader } from './hooks/use-exhibition-loader';\nimport { ExhibitionsList } from './ExhibitionsList';\n\nconst selectedTabStyles: SystemStyleObject = {\n background: 'blackAlpha.300',\n};\nconst tabStyles: TabProps = {\n background: 'blackAlpha.100',\n minW: '100px',\n};\n\nconst tabPanelsStyle: TabPanelProps = {\n width: '100%',\n maxWidth: '800px',\n};\n\nexport const ExhibitionsTabs = (\n props: Pick<ReturnType<typeof useExhibitionLoader>, 'exhibitions'>\n) => {\n const {\n exhibitions: { pastExhibitions, currentExhibitions },\n } = props;\n\n const { t } = useTranslation();\n\n return (\n <Tabs variant=\"unstyled\" align=\"center\" w=\"100%\">\n <TabList>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopLeftRadius=\"md\"\n borderBottomLeftRadius=\"md\"\n >\n {t('current-exhibitions')}\n </Tab>\n <Tab\n _selected={selectedTabStyles}\n {...tabStyles}\n borderTopRightRadius=\"md\"\n borderBottomRightRadius=\"md\"\n >\n {t('past-exhibitions')}\n </Tab>\n </TabList>\n <TabPanels>\n <TabPanel {...tabPanelsStyle}>\n <ExhibitionsList exhibitions={currentExhibitions} />\n </TabPanel>\n <TabPanel {...tabPanelsStyle}>\n <ExhibitionsList exhibitions={pastExhibitions} />\n </TabPanel>\n </TabPanels>\n </Tabs>\n );\n};\n","import { Flex } from '@chakra-ui/react';\nimport { Content, ContentInner } from '@/components/Content';\nimport styled from 'styled-components';\nimport { CenteredPageTitle } from '@/components/Typography/PageTitle';\nimport { useTranslation } from 'react-i18next';\nimport Layout from '@/layout/Default';\nimport { Loader } from '@/components/Loader/Loader';\n\nimport { useExhibitionLoader } from './hooks/use-exhibition-loader';\nimport { ExhibitionsTabs } from './ExhibitionsTabs';\n\nconst ExhibitionsWrapper = styled(Flex)`\n justify-content: center;\n flex-direction: column;\n align-items: center;\n gap: 20px;\n padding-bottom: 10px;\n`;\n\nexport const Profile = (): JSX.Element => {\n const { t } = useTranslation();\n const { exhibitions, isLoading } = useExhibitionLoader();\n\n return (\n <Layout>\n <Content>\n <ContentInner>\n <ExhibitionsWrapper>\n <CenteredPageTitle>{t('myExhibitions')}</CenteredPageTitle>\n\n {isLoading ? (\n <Loader />\n ) : (\n <ExhibitionsTabs exhibitions={exhibitions} />\n )}\n </ExhibitionsWrapper>\n </ContentInner>\n </Content>\n </Layout>\n );\n};\n","import { MarginType } from '@/model/common';\nimport { IExhibitionSummary } from '@/model/IExhibitionSummary';\nimport { typedAxios } from '@/api/typed-axios';\nimport { exhibitionApi } from '@/store/effector/exhibition';\nimport { IExhibition } from '@/model/IExhibition';\n\nexport function useExhibitionDetailedPreload() {\n const preloadExhibition = async (exhibition: IExhibitionSummary) => {\n if (!exhibition.exhibitionSummary?.id) {\n return;\n }\n\n try {\n const data = await typedAxios.exhibition.getExhibitions({\n id: exhibition.exhibitionSummary.id,\n });\n\n const margins: MarginType = {\n firstMargin: data.firstMargin,\n firstMarginDate: data.firstMarginDate,\n secondMargin: data.secondMargin,\n secondMarginDate: data.secondMarginDate,\n thirdMargin: data.thirdMargin,\n thirdMarginDate: data.thirdMarginDate,\n };\n\n const exhibitionNewInstance = new IExhibition({\n id: exhibition.exhibitionSummary.id,\n ...exhibition,\n });\n\n exhibitionApi.prepare({\n exhibitionName: exhibition.exhibitionSummary.name,\n margin: margins,\n sellingOfficeId: exhibition.sellingOfficeId || 0,\n currency: exhibition.currency,\n exhibitionId: exhibition.exhibitionSummary.id,\n exhibition: exhibitionNewInstance,\n });\n } catch (error: any) {}\n };\n\n return {\n preloadExhibition,\n };\n}\n","import { useEffect, useState } from 'react';\nimport { typedAxios } from '../../../api/typed-axios';\nimport { ExhibitionUtils } from '../../../utils/exhibition-utils';\nimport { useBoolean } from '@chakra-ui/react';\nimport { IExhibitionSummary } from '../../../model/IExhibitionSummary';\n\nexport function useExhibitionLoader() {\n const [exhibitions, setExhibitions] = useState<\n ReturnType<typeof ExhibitionUtils.splitExhibitionByDate>\n >({ currentExhibitions: [], pastExhibitions: [] });\n\n const [isLoading, { off }] = useBoolean(true);\n\n useEffect(() => {\n const load = async () => {\n try {\n const response =\n await typedAxios.exhibition.getExhibitionsExhibitorStatistics();\n\n setExhibitions(\n ExhibitionUtils.splitExhibitionByDate(\n response.map((ex) => new IExhibitionSummary(ex))\n )\n );\n } finally {\n off();\n }\n };\n\n load();\n }, []);\n\n return {\n exhibitions,\n isLoading,\n };\n}\n","import { Content, ContentInner } from '@/components/Content';\nimport { PageTitleContainer } from '@/pages/Exhibition/Exhibition.styled';\nimport Layout from '@/layout/Default';\nimport { standProjectRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport { Box, Card, CardBody, Flex, Heading } from '@chakra-ui/react';\nimport { StandProjectImage } from './StandProjectImage';\nimport { StandProjectDescription } from '@/pages/StandProject/StandProjectDescription';\nimport { useTranslation } from 'react-i18next';\nimport { useExhibition } from '@/store/effector/exhibition';\nimport { Link } from '@tanstack/react-router';\nimport { ChevronLeftIcon } from '@chakra-ui/icons';\n\nexport const StandProject = () => {\n const { exhibitionId } = standProjectRoute.useParams();\n const { project } = standProjectRoute.useLoaderData();\n const { t } = useTranslation();\n const { exhibitionName } = useExhibition();\n\n if (!project) {\n return null;\n }\n\n return (\n <Layout>\n <Content>\n <ContentInner>\n <Box mt={8} ml={8}>\n <Link to={`/exhibitions/${exhibitionId}`}>\n <ChevronLeftIcon mr={2} />\n {t('back-to-my-stands')}\n </Link>\n </Box>\n <PageTitleContainer centered=\"true\" pt={0} mt={0} mb={8}>\n {exhibitionName}\n </PageTitleContainer>\n <Flex justifyContent=\"center\">\n <Card maxW={['90%', '80%']} maxH=\"80vh\" position=\"relative\">\n <CardBody pl={12} pr={12} height=\"100%\">\n <Heading mb={6} as=\"h2\" size=\"lg\">\n {t('stand-project')}\n </Heading>\n <Flex\n gap={project.projectImageUrl ? 12 : 0}\n height=\"calc(100% - 70px)\"\n >\n <div style={{ flexBasis: '50%' }}>\n {project.projectImageUrl && (\n <StandProjectImage\n projectImageUrl={project.projectImageUrl}\n />\n )}\n </div>\n <div style={{ flexBasis: '50%' }}>\n {project && <StandProjectDescription project={project} />}\n </div>\n </Flex>\n </CardBody>\n </Card>\n </Flex>\n </ContentInner>\n </Content>\n </Layout>\n );\n};\n","import { AttachmentIcon, DeleteIcon } from '@chakra-ui/icons';\nimport { Box, Button } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { InputHTMLAttributes, useRef, useState } from 'react';\n\ntype AttachmentUploaderPropsType = {\n onFileChange: (file: File) => void;\n};\n\nconst allowedMimeTypes = (\n [\n 'image/*',\n 'application/pdf',\n 'application/vnd.ms-excel',\n 'application/msword',\n 'text/csv',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n ] satisfies Array<InputHTMLAttributes<HTMLInputElement>['accept']>\n).join();\n\nexport const AttachmentUploader = (props: AttachmentUploaderPropsType) => {\n const { t } = useTranslation();\n const inputRef = useRef<HTMLInputElement>(null);\n const [attachment, setAttachment] = useState<File | null>(null);\n\n return (\n <>\n <input\n ref={inputRef}\n type=\"file\"\n style={{ display: 'none' }}\n accept={allowedMimeTypes}\n multiple={false}\n onChange={(event) => {\n const file = event.target.files?.item(0);\n\n if (file) {\n setAttachment(file);\n\n if (typeof props.onFileChange === 'function') {\n props.onFileChange(file);\n }\n }\n }}\n />\n\n {attachment?.name ? (\n <Box\n display=\"flex\"\n flexDirection=\"row\"\n justifyContent=\"flex-start\"\n alignItems=\"center\"\n mr=\"auto\"\n color=\"red.500\"\n fontSize=\"sm\"\n >\n <AttachmentIcon mr={2} />\n {attachment.name}\n <DeleteIcon ml={2} onClick={() => setAttachment(null)} />\n </Box>\n ) : (\n <Button\n size=\"sm\"\n variant=\"ghost\"\n colorScheme=\"red\"\n mr=\"auto\"\n onClick={() => {\n inputRef.current?.click();\n }}\n >\n {t('attach-file')} <AttachmentIcon ml={2} />\n </Button>\n )}\n </>\n );\n};\n","import { FormProvider, useForm } from 'react-hook-form';\nimport { TextArea } from '@/components/TextArea/TextArea';\nimport * as vali from 'zod';\nimport i18n from '@/i18n';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { Flex } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { AttachmentUploader } from '@/pages/StandProject/StandProjectDescription/AttachmentUploader';\nimport { toast } from 'react-toastify';\nimport { AsyncButton } from '@/components/AsyncButton';\nimport { typedAxios } from '@/api/typed-axios';\nimport { standProjectRoute } from '@/features/Routing/protected/exhibitions-by-role';\nimport { useRouter } from '@tanstack/react-router';\nimport { useState } from 'react';\n\nconst ValidationSchema = vali.object({\n comment: vali.string().min(1, {\n message: i18n.t('required-field'),\n }),\n file: vali.instanceof(File).optional(),\n});\n\ntype FormValues = vali.infer<typeof ValidationSchema>;\n\nexport const CommentForm = () => {\n const { t } = useTranslation();\n const { stand, projectId } = standProjectRoute.useParams();\n const router = useRouter();\n const [uploaderKey, setUploaderKey] = useState<number | null>(null);\n\n const formInstance = useForm<FormValues>({\n resolver: zodResolver(ValidationSchema),\n });\n\n const handleSubmit = async (values: FormValues) => {\n try {\n const changeId = await typedAxios.stand.postStandsProjectChanges({\n standId: +stand,\n projectId: +projectId,\n requestBody: {\n comment: values.comment,\n },\n });\n\n if (values.file instanceof File) {\n await typedAxios.stand.putStandsProjectChanges({\n changesId: +changeId,\n projectId: +projectId,\n standId: +stand,\n formData: {\n file: values.file,\n },\n });\n }\n\n setUploaderKey(changeId);\n\n router.invalidate();\n\n formInstance.reset({\n comment: '',\n });\n toast.success(t('saved'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n const approveProject = async () => {\n try {\n await typedAxios.stand.postStandsUpdateProjectStatus({\n projectId: +projectId,\n standId: +stand,\n requestBody: {\n standStatus: true,\n },\n });\n\n router.invalidate();\n\n toast.success(t('saved'));\n } catch {\n toast.error(t('error-occurred'));\n }\n };\n\n return (\n <FormProvider {...formInstance}>\n <Flex direction=\"column\" mt=\"auto\">\n <TextArea<FormValues>\n label={`${t('stand-change-request-label')}:`}\n name=\"comment\"\n />\n\n <Flex direction=\"row\" gap={4} justifyContent=\"flex-end\" mt={4}>\n <AttachmentUploader\n key={uploaderKey}\n onFileChange={(file) => {\n formInstance.setValue('file', file);\n }}\n />\n <AsyncButton\n size=\"sm\"\n variant=\"outline\"\n colorScheme=\"red\"\n onClick={formInstance.handleSubmit(handleSubmit)}\n >\n {t('request-changes')}\n </AsyncButton>\n <AsyncButton\n size=\"sm\"\n variant=\"solid\"\n colorScheme=\"red\"\n onClick={approveProject}\n >\n {t('approve-project')}\n </AsyncButton>\n </Flex>\n </Flex>\n </FormProvider>\n );\n};\n","import { Flex, Text } from '@chakra-ui/react';\nimport { HistoryItem } from '@/pages/StandProject/StandProjectDescription/HistoryItem';\nimport { useTranslation } from 'react-i18next';\nimport {\n type ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto,\n type ITEPortal_Domain_Dto_Stand_GetStandProjectDto,\n} from '@/api';\n\nimport { CustomScroll } from 'react-custom-scroll';\nimport { DateUtils } from '@/utils/date-utils';\n\ntype CommentsHistoryPropsType = {\n comments?: ITEPortal_Domain_Dto_Stand_GetStandProjectDto['projectChangesHistory'];\n ownershipResolver?: (\n historyItem: ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto\n ) => boolean;\n};\n\nexport const CommentsHistory = (props: CommentsHistoryPropsType) => {\n const { comments, ownershipResolver } = props;\n const { t } = useTranslation();\n\n if (!Array.isArray(comments) || comments.length === 0) {\n return null;\n }\n\n const sortedComments =\n DateUtils.sortByDateAddedDescending<ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto>(\n comments\n );\n\n return (\n <Flex flexDirection=\"column\" maxHeight=\"calc(100% - 250px)\">\n <Text fontWeight={500} mb={4}>\n {t('stand-changes-history')}:\n </Text>\n\n <CustomScroll heightRelativeToParent=\"100%\">\n <Flex flexDirection=\"column\" gap={4}>\n {sortedComments.map((historyItem, index) => (\n <HistoryItem\n key={index}\n historyItem={historyItem}\n ownershipResolver={ownershipResolver}\n />\n ))}\n </Flex>\n </CustomScroll>\n </Flex>\n );\n};\n","import { Flex, Text } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { DateUtils } from '@/utils/date-utils';\nimport { useAuth } from '@/store/effector/auth';\nimport { DownloadFileLink } from '@/components/DownloadFileLink';\nimport { useMemo } from 'react';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto } from '@/api';\n\ntype HistoryItemPropsType = {\n historyItem: ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto;\n ownershipResolver?: (\n historyItem: ITEPortal_Domain_Dto_Stand_GetStandProjectChangesDto\n ) => boolean;\n};\n\nexport const HistoryItem = (props: HistoryItemPropsType) => {\n const { t } = useTranslation();\n const { user } = useAuth();\n const { historyItem, ownershipResolver } = props;\n const ownershipLabel =\n typeof ownershipResolver === 'function' ? t('exhibitor') : t('you');\n const postedByCurrentUser = useMemo(() => {\n if (typeof ownershipResolver === 'function') {\n return ownershipResolver(historyItem);\n }\n\n return historyItem.createdBy === user?.id;\n }, [ownershipResolver, user, historyItem]);\n\n if (!historyItem) {\n return null;\n }\n\n return (\n <Flex\n flexDirection=\"column\"\n background=\"gray.100\"\n padding={4}\n borderRadius=\"md\"\n >\n <Text color={postedByCurrentUser ? 'red' : 'gray.600'} fontWeight={500}>\n {postedByCurrentUser ? ownershipLabel : t('technical-manager')}\n </Text>\n <Text fontSize={14} color=\"gray.600\">\n {historyItem.comment}\n </Text>\n {historyItem.attachmentUrl && (\n <DownloadFileLink attachmentUrl={historyItem.attachmentUrl} />\n )}\n {historyItem.createdAt && (\n <Text fontSize={12} color=\"gray.400\" marginLeft=\"auto\">\n {DateUtils.format(historyItem.createdAt, 'DD.MM.YYYY HH:mm:ss')}\n </Text>\n )}\n </Flex>\n );\n};\n","import { Flex, Heading, Text } from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { CommentForm } from '@/pages/StandProject/StandProjectDescription/CommentForm';\nimport { CommentsHistory } from '@/pages/StandProject/StandProjectDescription/CommentsHistory';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '@/api';\n\ntype ProjectDescriptionPropsType = Pick<\n ITEPortal_Domain_Dto_Stand_GetStandProjectDto,\n 'projectDescription' | 'projectChangesHistory' | 'approved'\n>;\n\nexport const ProjectDescription = (props: ProjectDescriptionPropsType) => {\n const { projectDescription, projectChangesHistory, approved } = props;\n const { t } = useTranslation();\n\n return (\n <Flex flexDirection=\"column\" gap={4} height=\"100%\">\n {projectDescription && (\n <>\n <Heading as=\"h2\" size=\"sm\" noOfLines={1}>\n {t('project-tech-manager-comment-title')}\n </Heading>\n <Text>{projectDescription}</Text>\n </>\n )}\n\n <CommentsHistory comments={projectChangesHistory} />\n {!approved && <CommentForm />}\n </Flex>\n );\n};\n","import { Flex } from '@chakra-ui/react';\nimport { ProjectDescription } from '@/pages/StandProject/StandProjectDescription/ProjectDescription';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '@/api';\n\ntype StandProjectDescriptionPropsType = {\n project: ITEPortal_Domain_Dto_Stand_GetStandProjectDto;\n};\nexport const StandProjectDescription = (\n props: StandProjectDescriptionPropsType\n) => {\n const { project } = props;\n\n if (!project) {\n return null;\n }\n\n const { projectDescription } = project;\n\n return (\n <Flex flexDirection=\"column\" height=\"100%\">\n <ProjectDescription\n projectDescription={projectDescription}\n projectChangesHistory={project.projectChangesHistory}\n approved={project.approved}\n />\n </Flex>\n );\n};\n","import styled from 'styled-components';\n\nexport const ProjectImage = styled.img`\n height: auto;\n width: 100%;\n cursor: pointer;\n max-width: 700px;\n cursor: pointer;\n`;\n","import { Button, Flex } from '@chakra-ui/react';\nimport { ProjectImage } from '@/pages/StandProject/StandProjectImage/StandProjectImage.styled';\nimport Lightbox from 'yet-another-react-lightbox';\nimport Download from 'yet-another-react-lightbox/plugins/download';\nimport { useState } from 'react';\nimport { FileUtils } from '@/utils/file-utils';\nimport { useTranslation } from 'react-i18next';\nimport { ITEPortal_Domain_Dto_Stand_GetStandProjectDto } from '@/api';\n\ntype StandProjectImagePropsType = Pick<\n ITEPortal_Domain_Dto_Stand_GetStandProjectDto,\n 'projectImageUrl'\n>;\n\nexport const StandProjectImage = (props: StandProjectImagePropsType) => {\n const { projectImageUrl } = props;\n const [open, setOpen] = useState(false);\n const { t } = useTranslation();\n\n if (!projectImageUrl) {\n return null;\n }\n\n const fileExtension = projectImageUrl.split('.').at(-1)?.toUpperCase();\n const fileName = projectImageUrl.split('/').at(-1);\n\n return (\n <Flex flexDirection=\"column\" maxW=\"100%\" gap={6}>\n {props.projectImageUrl && (\n <ProjectImage\n src={props.projectImageUrl}\n onClick={() => setOpen(true)}\n />\n )}\n <Button\n width=\"fit-content\"\n size=\"sm\"\n onClick={() => {\n if (fileName) {\n FileUtils.saveUrlAsFile(projectImageUrl, fileName);\n }\n }}\n >\n {t('download-file')}, {fileExtension}\n </Button>\n <Lightbox\n open={open}\n close={() => setOpen(false)}\n index={0}\n slides={[\n {\n src: projectImageUrl,\n },\n ]}\n animation={{ fade: 0 }}\n controller={{ closeOnPullDown: true, closeOnBackdropClick: true }}\n styles={{ root: { '--yarl__color_backdrop': 'rgba(0, 0, 0, .7)' } }}\n plugins={[Download]}\n download={{\n download: ({ slide }) => {\n FileUtils.saveUrlToBlob(slide.src);\n },\n }}\n />\n </Flex>\n );\n};\n","import React, { useState } from 'react';\nimport {\n Button,\n CardBody,\n CardHeader,\n Heading,\n HStack,\n PinInput,\n PinInputField,\n Stack,\n FormControl,\n FormErrorMessage,\n} from '@chakra-ui/react';\nimport { useTranslation } from 'react-i18next';\nimport { FieldValues, useForm } from 'react-hook-form';\nimport { Logo, StyledCard } from '@/pages/common/Auth.styled';\nimport { Timer } from '@/components/Timer/Timer';\nimport fetchApi from '@/utils/fetchAPI';\nimport { CODE_VERIFY } from '@/constants/endpoints';\nimport { DEFAULT_LOGO_PATH, FetchMethods } from '@/utils/constants';\nimport { useNavigate } from '@tanstack/react-router';\nimport { FormError, IdType } from '@/model/common';\nimport { User } from '@/model/IUser';\nimport { indexRouteFactory } from '@/features/Routing/userPaths';\nimport { LanguageSwitcher } from '@/components/LanguageSwitcher/LanguageSwitcher';\nimport { verifyEmailRoute } from '@/features/Routing/auth';\nimport { authApi, useAuth } from '@/store/effector/auth';\n\ninterface VerifyEmailPageProps {\n pinLength?: number;\n}\n\nexport type OfficeType = {\n currency: string;\n id: IdType;\n location: string;\n name: string;\n};\n\nconst VerifyEmailPage: React.FC<VerifyEmailPageProps> = ({ pinLength = 4 }) => {\n const [isSubmitting, setIsSubmitting] = useState(false);\n const authInfo = useAuth();\n const { redirect } = verifyEmailRoute.useSearch();\n const [errors, setErrors] = useState<FormError>({});\n const navigate = useNavigate();\n\n const { t } = useTranslation();\n\n const methods = useForm();\n\n const submitHandler = async (values: FieldValues) => {\n const code = (values.code as string[]).join('');\n const userEmail = authInfo.userEmail;\n\n setIsSubmitting(true);\n\n try {\n const { data } = await fetchApi(CODE_VERIFY, {\n method: FetchMethods.Post,\n data: {\n email: userEmail,\n code: code,\n },\n });\n\n const currentUser = new User({\n fullName: data?.name,\n role: data?.role,\n id: data?.id,\n });\n\n localStorage.setItem('token', data?.token);\n localStorage.setItem('user', JSON.stringify(currentUser));\n\n authApi.setUser(currentUser);\n authApi.setIsLoggedIn(true);\n authApi.setToken(data?.token);\n\n // dispatch(clearProducts());\n\n const indexRoute = (() => {\n if (redirect) {\n return redirect;\n }\n\n if (currentUser.role) {\n return indexRouteFactory(currentUser.role);\n }\n\n return '/';\n })();\n\n navigate({\n to: indexRoute,\n });\n } catch (error) {\n setErrors({ verify: ['Неверный код доступа'] });\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const setValues = (values: string) => {\n const codeValues = Array.from(values);\n\n Object.values(codeValues).forEach((field, index) => {\n const fieldName = `code.${index}`;\n\n methods.setValue(fieldName, field);\n });\n };\n\n return (\n <StyledCard>\n <CardHeader>\n <Logo src={DEFAULT_LOGO_PATH} alt=\"Logo\" />\n <LanguageSwitcher />\n <Heading size={{ base: 'xs', md: 'sm' }}>{t('welcomeAuth')}</Heading>\n <Heading size={{ base: 'xs' }} fontWeight=\"400\" marginTop=\"7px\">\n {t('verifyEmailAddress')}\n </Heading>\n </CardHeader>\n <CardBody>\n <form onSubmit={methods.handleSubmit(submitHandler)}>\n <FormControl isInvalid={!!errors['verify']}>\n <Stack spacing=\"5\">\n <HStack marginLeft=\"auto\" marginRight=\"auto\">\n <PinInput\n type=\"number\"\n onComplete={(values) => setValues(values)}\n >\n {new Array(pinLength).fill(undefined).map((_, index) => (\n <PinInputField\n key={index}\n {...methods.register(`code.${index}`)}\n />\n ))}\n </PinInput>\n </HStack>\n {errors['verify'] && (\n <FormErrorMessage justifyContent=\"center\">\n {errors['verify'].join(' ')}\n </FormErrorMessage>\n )}\n <Button type=\"submit\" isLoading={isSubmitting}>\n {t('confirm')}\n </Button>\n\n <Timer sec={59} />\n </Stack>\n </FormControl>\n </form>\n </CardBody>\n </StyledCard>\n );\n};\n\nexport default VerifyEmailPage;\n","import styled from 'styled-components';\nimport { Card, Image } from '@chakra-ui/react';\n\nexport const StyledCard = styled(Card)`\n max-width: 450px;\n width: 100%;\n\n .chakra-card__body {\n padding: 0 40px 36px;\n }\n\n .chakra-card__header {\n padding-top: 48px;\n text-align: center;\n }\n\n .chakra-button {\n margin-top: 32px;\n }\n`;\n\nexport const Logo = styled(Image)`\n width: auto;\n margin-bottom: 1.5rem;\n margin-left: auto;\n margin-right: auto;\n height: 120px;\n object-fit: contain;\n`;\n","import { User } from '@/model/IUser';\nimport { IdType } from '@/model/common';\nimport { persist, StorageAdapter } from 'effector-storage';\nimport { createApi, createDomain, sample } from 'effector';\nimport { produce } from 'immer';\nimport { useUnit } from 'effector-react';\n\ntype TokenType = null | IdType;\n\ninterface State {\n isLoggedIn: boolean;\n user: null | User;\n userEmail: string;\n token: TokenType;\n}\n\nconst initialState: State = {\n isLoggedIn: false,\n user: null,\n userEmail: '',\n token: localStorage.getItem('token') || null,\n};\n\nconst auth = createDomain('auth');\n\nexport const $auth = auth.createStore<State>(initialState, { name: 'auth' });\n\nconst adapter: StorageAdapter = (key) => ({\n get: () => {\n const state = localStorage.getItem(key);\n\n if (!state) {\n return initialState;\n }\n\n try {\n const deserialized = JSON.parse(state);\n\n if (deserialized.user) {\n deserialized.user = new User({\n ...deserialized.user,\n });\n }\n\n return deserialized;\n } catch {\n return initialState;\n }\n },\n set: (value) => localStorage.setItem(key, JSON.stringify(value)),\n});\n\npersist({\n store: $auth,\n adapter: adapter,\n});\n\nexport const authApi = createApi($auth, {\n addEmail: (state, payload: string) => {\n return produce(state, (draft) => {\n draft.userEmail = payload;\n });\n },\n setUser: (state, payload: null | User) => {\n return produce(state, (draft) => {\n draft.user = payload;\n });\n },\n setIsLoggedIn: (state, payload: boolean) => {\n return produce(state, (draft) => {\n draft.isLoggedIn = payload;\n });\n },\n setToken: (state, payload: TokenType) => {\n return produce(state, (draft) => {\n draft.token = payload;\n });\n },\n\n logout: () => initialState,\n});\n\nsample({\n clock: authApi.logout,\n target: auth.createEffect('auth/cleanup', {\n handler: async () => {\n console.log('auth clean up');\n try {\n localStorage.clear();\n window.location.href = '/login';\n } catch (e) {\n console.warn(e);\n }\n },\n }),\n});\n\nexport const useAuth = () => useUnit($auth);\n","import { createGate, useGate } from 'effector-react';\nimport { PropsWithChildren } from 'react';\n\nexport const CatalogGate = createGate('catalog-gate');\n\nexport const CatalogGateHOC = (props: PropsWithChildren) => {\n useGate(CatalogGate);\n\n return <>{props.children}</>;\n};\n","import { Category } from '@/model/ICategory';\nimport { createApi, createEffect, createStore } from 'effector';\nimport { produce } from 'immer';\nimport { useUnit } from 'effector-react';\nimport { queryClient } from '@/features/query';\nimport { leaveExhibitionOrderEvent } from '@/store/effector/cleanup';\nimport { QueryOptions } from '@/features/query/query-options';\nimport { CategoryQueryOptionsType } from '@/features/query/query-options/types';\n\ntype CatalogStateType = {\n rootCategories: Category[];\n flatMap: Map<string, Category>;\n isLoading: boolean;\n};\n\nconst initialState: CatalogStateType = {\n rootCategories: [],\n flatMap: new Map<string, Category>(),\n isLoading: true,\n};\n\nexport const $catalog = createStore<CatalogStateType>(initialState).reset(\n leaveExhibitionOrderEvent\n);\n\nconst catalogApi = createApi($catalog, {\n updateCategories: (\n state,\n payload: Pick<CatalogStateType, 'rootCategories' | 'flatMap'>\n ) => {\n return produce(state, (draft) => {\n draft.rootCategories = payload.rootCategories;\n draft.flatMap = payload.flatMap;\n draft.isLoading = false;\n });\n },\n});\n\nexport const loadCategoriesFX = createEffect(\n async (opts: CategoryQueryOptionsType) => {\n const data = await queryClient.ensureQueryData(\n QueryOptions.loadCategoriesQueryOptions(opts)\n );\n\n const sortedCategories = data.map((category) => new Category(category));\n\n const flatMap = new Map<string, Category>();\n\n sortedCategories.forEach((ct) => {\n flatMap.set(ct.name, ct);\n });\n\n sortedCategories.forEach((ct) => {\n if (ct.parentCategoryId && flatMap.get(ct.parentCategoryId)) {\n ct.parent = flatMap.get(ct.parentCategoryId);\n flatMap.get(ct.parentCategoryId)?.tree.push(ct);\n }\n });\n\n const rootCategories = [...flatMap.values()].filter(\n (ct) => !ct.parentCategoryId\n );\n\n catalogApi.updateCategories({\n rootCategories: rootCategories,\n flatMap: flatMap,\n });\n }\n);\n\nexport const useCatalog = () => {\n const state = useUnit($catalog);\n\n return {\n ...state,\n isEmpty: state.rootCategories.length === 0,\n };\n};\n\nexport const useCatalogLoading = () => {\n return useUnit(loadCategoriesFX.inFlight);\n};\n","import { createEvent } from 'effector';\n\nexport const leaveExhibitionOrderEvent = createEvent();\n\nleaveExhibitionOrderEvent.watch(() => {\n console.log('leaveExhibitionOrderEvent');\n});\n","import { createApi, createStore } from 'effector';\nimport { OptionType, SystemLangType } from '@/model/common';\nimport { produce } from 'immer';\nimport { useUnit } from 'effector-react/compat';\n\ntype CommonState = {\n categoryOptions: OptionType[];\n lang: SystemLangType;\n};\n\nconst $common = createStore<CommonState>({\n categoryOptions: [],\n lang:\n (localStorage.getItem('lang') as SystemLangType) ||\n (navigator.language as SystemLangType),\n});\n\nexport const commonApi = createApi($common, {\n setCategoryOptions: (state, payload: OptionType[]) => {\n return produce(state, (draft) => {\n draft.categoryOptions = payload;\n });\n },\n\n setLanguage: (state, payload: SystemLangType) => {\n return produce(state, (draft) => {\n draft.lang = payload;\n });\n },\n});\n\nexport const useCommonStore = () => useUnit($common);\n","import { IdType, MarginType } from '@/model/common';\nimport { Nullable } from '@/types/support-types';\nimport { createApi, createStore } from 'effector';\nimport { produce } from 'immer';\nimport { useUnit } from 'effector-react';\nimport { leaveExhibitionOrderEvent } from '@/store/effector/cleanup';\nimport { typedObjectKeys } from '@/utils/typed-object-keys';\nimport { IExhibition } from '@/model/IExhibition';\n\ntype InitialState = {\n margin: MarginType;\n currency: Nullable<string>;\n exhibitionName: Nullable<string>;\n sellingOfficeId: IdType;\n exhibitionId: IdType;\n exhibition: IExhibition | null;\n eventEditionId?: IdType | null;\n};\n\nexport const exhibitionInitialState: InitialState = {\n exhibitionName: '',\n margin: {\n firstMargin: null,\n firstMarginDate: null,\n secondMargin: undefined,\n secondMarginDate: undefined,\n thirdMargin: undefined,\n thirdMarginDate: undefined,\n },\n currency: null,\n sellingOfficeId: 0,\n exhibitionId: 0,\n exhibition: null,\n eventEditionId: null,\n};\n\nexport const $exhibition = createStore<InitialState>(\n exhibitionInitialState\n).reset(leaveExhibitionOrderEvent);\n\nexport const exhibitionApi = createApi($exhibition, {\n prepare: (state, payload: InitialState) => {\n return produce(state, (draft) => {\n draft.exhibitionName = payload.exhibitionName;\n draft.margin = payload.margin;\n draft.sellingOfficeId = payload.sellingOfficeId;\n draft.currency = payload.currency;\n draft.exhibitionId = payload.exhibitionId;\n });\n },\n\n update: (state, payload: Partial<InitialState>) => {\n return produce(state, (draft) => {\n typedObjectKeys(payload).forEach((key) => {\n if (key && payload[key] && payload[key] !== undefined) {\n // @ts-expect-error fix types\n draft[key] = payload[key];\n }\n });\n });\n },\n\n setName: (state, payload: string) => {\n return produce(state, (draft) => {\n draft.exhibitionName = payload;\n });\n },\n\n setEventEditionId: (state, payload: number | null) => {\n return produce(state, (draft) => {\n draft.eventEditionId = payload;\n });\n },\n\n setInstance: (state, payload: IExhibition | null) => {\n return produce(state, (draft) => {\n draft.exhibition = payload;\n });\n },\n});\n\nexport const useExhibition = () => useUnit($exhibition);\n","import { merge, sample } from 'effector';\nimport { $catalog, loadCategoriesFX } from '@/store/effector/catalog';\nimport { $stand } from '@/store/effector/stand';\nimport {\n $exhibition,\n exhibitionInitialState,\n} from '@/store/effector/exhibition';\nimport { persist as persistLocal } from 'effector-storage/local';\nimport { persist as persistAbstract } from 'effector-storage';\nimport { isNil } from '@/utils/is-nil';\nimport { createLogger } from '@/store/effector/logger';\nimport { $order } from '@/store/effector/order';\n// import { $auth } from '@/store/effector/auth';\nimport { CatalogGate } from '@/store/effector/catalog-gate';\nimport { $vatSettings } from '@/store/effector/vat-settings';\nimport { StorageAdapter } from 'effector-storage';\nimport { $orderCompleteness } from '@/store/effector/order-completeness';\n\nconst merged = merge([$stand, $exhibition, CatalogGate.open]);\n\nsample({\n clock: merged,\n target: loadCategoriesFX,\n fn: () => {\n const stand = $stand.getState();\n const exhibition = $exhibition.getState();\n\n return {\n buildingType: stand.standForOrder.buildingType,\n exhibitionId: exhibition.exhibitionId,\n sellingOfficeId: exhibition.sellingOfficeId,\n currency: exhibition.currency,\n };\n },\n filter: () => {\n const stand = $stand.getState();\n const exhibition = $exhibition.getState();\n\n return (\n CatalogGate.status.getState() &&\n !isNil(stand.standForOrder.buildingType) &&\n !isNil(exhibition.exhibitionId) &&\n !isNil(exhibition.sellingOfficeId)\n );\n },\n});\n\nconst exhibitionAdapter: StorageAdapter = (key) => ({\n get: () => {\n const state = localStorage.getItem(key);\n\n if (!state) {\n return exhibitionInitialState;\n }\n\n try {\n const deserialized = JSON.parse(state);\n\n // commented for now, should be tested in production\n // for now - just load exhibition each time route matched\n // if (deserialized.exhibition) {\n // deserialized.exhibition = IExhibition.fromJSON(deserialized.exhibition);\n // }\n\n // console.log(deserialized);\n\n return deserialized;\n } catch {\n return exhibitionInitialState;\n }\n },\n set: (value) => localStorage.setItem(key, JSON.stringify(value)),\n});\n\npersistAbstract({\n store: $exhibition,\n key: 'exhibition',\n adapter: exhibitionAdapter,\n});\n\npersistLocal({\n store: $stand,\n key: 'stand',\n sync: 'force',\n});\n\ncreateLogger({\n // $auth,\n $stand,\n $order,\n $exhibition,\n $catalog,\n loadCategoriesFX: loadCategoriesFX,\n $vatSettings,\n $orderCompleteness,\n});\n","import { createApi, createStore } from 'effector';\nimport { useUnit } from 'effector-react';\n\nconst $loading = createStore<boolean>(false);\n\nexport const loadingApi = createApi($loading, {\n on: () => true,\n off: () => false,\n toggle: (state) => !state,\n});\n\nexport const useAppLoading = () => useUnit($loading);\n","import { Store, EventCallable, is, Effect } from 'effector';\n\ntype LogType = '$' | 'ev' | 'fx' | string;\n\nconst fontFamily =\n 'font-family: \"Apple Color Emoji\",\"Segoe UI Emoji\",\"Noto Color Emoji\",\"Android Emoji\",\"EmojiOne Mozilla\",\"Twemoji Mozilla\",\"Noto Emoji\",\"Segoe UI Symbol\",EmojiSymbols,emoji;';\n\nconst log = (type: LogType, ...args: any[]) => {\n const [name, ...rest] = args;\n\n console.groupCollapsed('%c☄️', fontFamily, type, name);\n console.log(...rest);\n console.groupEnd();\n};\n\nexport const createLogger = (\n units: Record<string, Store<any> | EventCallable<any> | Effect<any, any, any>>\n) => {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n Object.entries(units).forEach(([name, unit]) => {\n if (is.effect(unit)) {\n unit.pending.watch((pending) => {\n log('fx', `${name} -> pending`, pending);\n });\n\n unit.done.watch(({ params, result }) => {\n log('fx', `${name} -> done`, { params, result });\n });\n\n return;\n }\n\n unit.watch((s) => {\n switch (true) {\n case is.store(unit): {\n log('$', name, s);\n break;\n }\n\n case is.event(unit): {\n log('ev', name, s);\n break;\n }\n\n default:\n log('untyped', name, s);\n }\n });\n });\n};\n","import { $order } from '@/store/effector/order';\nimport { useUnit } from 'effector-react';\n\nexport const $orderCompleteness = $order.map(({ items }) => {\n const itemsWithDependencies = items.filter(\n (it) => it.product.hasLinkedProducts\n );\n\n if (itemsWithDependencies.length === 0) {\n return [];\n }\n\n const allOrderItemsIds = items.map((item) => item.product.getProductId());\n\n return itemsWithDependencies\n .filter((productWithDeps) => {\n const depsIDS =\n productWithDeps.product.linkedProducts?.map((pr) =>\n pr.getProductId()\n ) || [];\n\n return !depsIDS.every((dependencyId) =>\n allOrderItemsIds.includes(dependencyId)\n );\n })\n .map((productWithDeps) => {\n return {\n productId: productWithDeps.product.getProductId(),\n outstandingDeps: productWithDeps.product.linkedProducts?.filter(\n (dep) => !allOrderItemsIds.includes(dep.getProductId())\n ),\n };\n });\n});\n\nexport const useOrderCompleteness = () => {\n const incompleteItemsDueToDependency = useUnit($orderCompleteness);\n\n return {\n isOrderCompleted: incompleteItemsDueToDependency.length === 0,\n incompleteItemsDueToDependency,\n };\n};\n","import { BuildingTypeInfo } from '@/model/common';\nimport { createApi, createEffect, createStore, sample } from 'effector';\nimport { produce } from 'immer';\nimport { persist } from 'effector-storage';\nimport { useUnit } from 'effector-react';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Domain_Dto_OrderDto,\n} from '@/api';\nimport {\n IOrderItem,\n OrderItem,\n TemporaryStaffOrderItem,\n} from '@/model/IOrderItem';\nimport { Order } from '@/model/IOrder';\nimport { CATEGORY_TYPES } from '@/constants/categorie';\nimport { standApi } from '@/store/effector/stand';\nimport { leaveExhibitionOrderEvent } from '@/store/effector/cleanup';\nimport i18n from '@/i18n';\n\nexport type ChangeItemPayload = {\n id: IOrderItem['id'];\n amount: number;\n product: IOrderItem['product'];\n};\n\nexport type InitialState = {\n items: Array<OrderItem | TemporaryStaffOrderItem>;\n buildings: BuildingTypeInfo[];\n orderDto?: ITEPortal_Domain_Dto_OrderDto | null;\n};\n\nconst initialState: InitialState = {\n items: [],\n buildings: [],\n orderDto: null,\n};\n\nexport const $order = createStore<InitialState>(initialState).reset(\n leaveExhibitionOrderEvent\n);\n\nconst adapter = (\n // @ts-expect-error desc\n key\n) => ({\n get: () => {\n const state = localStorage.getItem(key);\n\n if (!state) {\n return initialState;\n }\n\n try {\n const deserialized = JSON.parse(state);\n\n return Order.fromJSON(deserialized);\n } catch {\n return initialState;\n }\n },\n set: (value: InitialState) => {\n return localStorage.setItem(key, JSON.stringify(value));\n },\n});\n\npersist({\n store: $order,\n key: 'order',\n adapter,\n});\n\nexport const orderApi = createApi($order, {\n addItem: (state, payload: OrderItem) => {\n return produce(state, (draft) => {\n draft.items.push(payload);\n });\n },\n /**\n * @description test covered by OE-3\n */\n addItemsBatch: (state, payload: Array<OrderItem>) => {\n return produce(state, (draft) => {\n draft.items = [...state.items, ...payload].reduce((acc, item) => {\n const existing = acc.find((oi) => oi.id === item.id);\n\n if (existing) {\n existing.setAmount(existing.getAmount() + item.getAmount());\n if (item.included) {\n existing.included = true;\n }\n } else {\n acc.push(item);\n }\n\n return acc;\n }, [] as Array<OrderItem>);\n });\n },\n /**\n * @description test covered by OE-4 OE-5\n */\n removeItem: (state, payload: OrderItem) => {\n return produce(state, (draft) => {\n const linkedProductIds =\n payload.product.includedPriceListItems?.map((lp) =>\n lp.getProductId()\n ) || [];\n\n draft.items = draft.items.filter((item) => {\n return item.id !== payload.id && !linkedProductIds.includes(item.id);\n });\n });\n },\n clearBuildingItems: () => {},\n /**\n * @description test covered by OE-6\n */\n changeItem: (state, payload: ChangeItemPayload) => {\n return produce(state, (draft) => {\n draft.items = draft.items.map((item) => {\n if (item.id === payload.id) {\n item.setAmount(payload.amount);\n }\n\n return item;\n });\n });\n },\n setState: (state, payload: OrderItem[]) => {\n return produce(state, (draft) => {\n draft.items = payload;\n });\n },\n clearProducts: (state) => {\n return produce(state, (draft) => {\n draft.items = initialState.items;\n // draft.total = initialState.total;\n });\n },\n setBuildings: () => {},\n setOrderDto: (state, payload: ITEPortal_Domain_Dto_OrderDto | null) => {\n return produce(state, (draft) => {\n draft.orderDto = payload;\n });\n },\n cleanUpOrderState: () => {\n return initialState;\n },\n});\n\nsample({\n clock: [orderApi.addItem],\n filter: (orderItem) => {\n return orderItem.product.category.name === CATEGORY_TYPES.SELECT_BUILDING;\n },\n target: createEffect({\n name: 'if-building-selected-update-building-type',\n handler: (orderItem: OrderItem) => {\n if (Array.isArray(orderItem.product.buildingTypes)) {\n standApi.updateBuildingType(\n Math.max(\n ...orderItem.product.buildingTypes\n ) as ITEPortal_Contracts_Enums_BuildingType\n );\n }\n },\n }),\n});\n\nsample({\n clock: orderApi.removeItem,\n filter: (orderItem) => {\n return orderItem.product.category.name === CATEGORY_TYPES.SELECT_BUILDING;\n },\n target: [\n createEffect({\n name: 'reset-original-building-type',\n handler: () => {\n standApi.resetOriginalBuildingType();\n },\n }),\n createEffect({\n name: 'remove-all-ordered-items-if-building-removed',\n handler: () => {\n orderApi.clearProducts();\n },\n }),\n ],\n});\n\nsample({\n clock: [orderApi.addItem],\n filter: (orderItem) => {\n return (\n Array.isArray(orderItem.product.includedPriceListItems) &&\n orderItem.product.includedPriceListItems.length > 0\n );\n },\n target: createEffect({\n name: 'if-product-has-linked-products-then-add-them-to-the-order-with-zero-price',\n handler: (orderItem: OrderItem) => {\n if (Array.isArray(orderItem.product.includedPriceListItems)) {\n orderApi.addItemsBatch(\n orderItem.product.includedPriceListItems?.map((product) => {\n return new OrderItem({\n id: product.getProductId(),\n product: product,\n amount: product.quantity,\n included: true,\n includedReason: orderItem.displayName\n ? (i18n.t(`included-into-price-of`, {\n name: orderItem.displayName,\n }) as string)\n : undefined,\n });\n })\n );\n }\n },\n }),\n});\n\nexport const useOrder = () => {\n const state = useUnit($order);\n\n return {\n ...state,\n orderId: state.orderDto?.orderId,\n };\n};\n\nexport const $orderTotal = $order.map((state) => {\n return state.items.reduce((accumulator, currentValue) => {\n return accumulator + currentValue.total;\n }, 0);\n});\n\nexport const useOrderTotal = () => useUnit($orderTotal);\n","import { createApi, createStore } from 'effector';\nimport { produce } from 'immer';\nimport { useUnit } from 'effector-react';\nimport {\n ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Domain_Dto_StandSummariesDto,\n} from '@/api';\nimport { leaveExhibitionOrderEvent } from '@/store/effector/cleanup';\n\ntype StandType = ITEPortal_Domain_Dto_StandSummariesDto;\n\ntype StandInitialState = {\n standForOrder: StandType;\n originalBuildingType?: ITEPortal_Contracts_Enums_BuildingType;\n};\n\nconst initialState: StandInitialState = {\n standForOrder: {\n buildingType: undefined,\n },\n};\n\nexport const $stand = createStore<StandInitialState>(initialState).reset(\n leaveExhibitionOrderEvent\n);\n\n// $stand.watch(console.log);\n\nexport const standApi = createApi($stand, {\n setStandForOrder: (state, payload: StandType) => {\n return produce(state, (draft) => {\n draft.standForOrder = payload;\n draft.originalBuildingType = payload.buildingType;\n });\n },\n updateBuildingType: (\n state,\n payload: ITEPortal_Contracts_Enums_BuildingType\n ) => {\n return {\n ...state,\n standForOrder: {\n ...state.standForOrder,\n buildingType: payload,\n },\n };\n },\n resetOriginalBuildingType: (state) => {\n return produce(state, (draft) => {\n draft.standForOrder.buildingType = draft.originalBuildingType;\n });\n },\n});\n\nexport const useStand = () => useUnit($stand);\n","import { $exhibition } from '@/store/effector/exhibition';\nimport { useUnit } from 'effector-react';\nimport i18n from '@/i18n';\nimport { FEATURES, useFeature } from '@/features/feautres';\n\nexport const $vatSettings = $exhibition.map((state) => {\n return {\n vatMessage:\n state.currency?.toLowerCase() === 'rub' ? i18n.t('vat-message') : null,\n };\n});\n\nexport const useVatSettings = () => {\n const featureEnabled = useFeature(FEATURES.VAT_DESCRIPTION);\n\n if (!featureEnabled) {\n return {\n vatMessage: null,\n };\n }\n\n return useUnit($vatSettings);\n};\n","import { Box, Flex } from '@chakra-ui/react';\nimport styled from 'styled-components';\n\nexport const IsLoadingWrapper = styled(Box)`\n background: silver;\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 999999;\n opacity: 0.4;\n`;\n\nexport const LoaderWrapper = styled(Flex)`\n justify-content: center;\n padding-top: 10%;\n`;\n","import { Global, css } from '@emotion/react';\n\nexport const GlobalStyles = () => (\n <Global\n styles={css`\n input[disabled],\n input[aria-disabled='true'],\n input[data-disabled],\n textarea[disabled],\n textarea[aria-disabled='true'],\n textarea[data-disabled] {\n background-color: #f7f7f7;\n opacity: 1 !important;\n color: #999999;\n }\n `}\n />\n);\n","import { defineStyle, defineStyleConfig, extendTheme } from '@chakra-ui/react';\n\nconst brandPrimary = defineStyle({\n padding: '6px 12px',\n background: 'var(--chakra-colors-brandColor) !important',\n color: '#fff',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n alignItems: 'center',\n});\n\nconst brandSecondary = defineStyle({\n padding: '6px 12px',\n background: '#fff',\n color: 'var(--chakra-colors-brandColor)',\n border: '1px solid var(--chakra-colors-brandColor)',\n fontWeight: 600,\n fontSize: '14px',\n lineHeight: '20px',\n alignItems: 'center',\n height: 'auto',\n});\n\nexport const buttonTheme = defineStyleConfig({\n variants: { brandPrimary, brandSecondary },\n defaultProps: {\n variant: 'brandPrimary',\n },\n});\n\nconst theme = extendTheme({\n styles: {\n global: {\n '*': {\n boxSizing: 'border-box',\n },\n '#root': {\n backgroundColor: '#F7FAFC',\n color: '#2d3748',\n },\n },\n },\n sizes: {\n 'nav-bar-height': '72px',\n 'side-bar-width': '178px',\n 'order-list-width': '350px',\n 'header-brand-width': '40px',\n },\n colors: {\n brandColor: '#E8431A',\n },\n components: {\n Button: buttonTheme,\n },\n});\n\nexport default theme;\n","type valueType = number;\n\nconst isFloat = (n: valueType) => {\n return Number(n) === n && n % 1 !== 0;\n};\n\nexport const numberWithSpaces = (\n value: valueType,\n currency: string,\n useIntl: boolean = false\n) => {\n let buffer = value;\n\n if (useIntl) {\n return new Intl.NumberFormat(navigator.language, {\n style: 'currency',\n currency: currency || 'RUB',\n }).format(+buffer);\n }\n\n if (isFloat(buffer)) {\n buffer = Number(buffer.toFixed(2));\n }\n\n const parts = buffer.toString().split('.');\n\n parts[0] = parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\n\n return `${parts.join('.')} ${currency}`;\n};\n","export const attempt = <T = unknown>(\n fn: () => T | null,\n options?: { silent: boolean }\n) => {\n try {\n return fn();\n } catch (e) {\n if (options?.silent && process.env.NODE_ENV === 'development') {\n console.warn(e);\n }\n\n return null;\n }\n};\n","import { Category } from '@/model/ICategory';\nimport { IBreadcrumbItem } from '@/model/common';\nimport { replacePaths } from './route';\nimport { CREATE_EXHIBITION_ORDER_TAB_PATH } from '@/constants/router';\n\nexport function getBreadcrumbsByCategory(\n category: Category,\n exhibitionId: string,\n stand: string\n): IBreadcrumbItem[] {\n const items: IBreadcrumbItem[] = [];\n\n if (category.parent) {\n items.push(\n ...getBreadcrumbsByCategory(category.parent, exhibitionId, stand)\n );\n }\n\n items.push({\n label: category.displayName,\n link: replacePaths(CREATE_EXHIBITION_ORDER_TAB_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': stand,\n ':service': category.name,\n }),\n });\n\n return items;\n}\n","import { t } from 'i18next';\nimport {\n type ITEPortal_Contracts_Enums_BuildingType,\n ITEPortal_Contracts_Enums_StandConfiguration,\n} from '../api';\nimport i18n from '../i18n';\n\nexport const FetchMethods = {\n Delete: 'DELETE',\n Patch: 'PATCH',\n Post: 'POST',\n Get: 'GET',\n Put: 'PUT',\n};\n\nexport const DatePickerMonths = [\n 'Январь',\n 'Февраль',\n 'Март',\n 'Апрель',\n 'Май',\n 'Июнь',\n 'Июль',\n 'Август',\n 'Сентябрь',\n 'Октябрь',\n 'Ноябрь',\n 'Декабрь',\n];\n\nexport const DatePickerDays = ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб'];\n\nexport const StandTypeLabelsByType: Record<\n ITEPortal_Contracts_Enums_BuildingType,\n string\n> = {\n 0: '',\n 1: i18n.t('stand-space-only'),\n 2: i18n.t('stand-standard'),\n 3: i18n.t('stand-standard-plus'),\n 4: i18n.t('stand-premium-ferrara'),\n 5: i18n.t('stand-premium-verona'),\n 6: i18n.t('stand-premium-ravenna'),\n 7: i18n.t('stand-premium-kremona'),\n 8: i18n.t('stand-premium-ancona'),\n 9: i18n.t('stand-premium-fabriano'),\n 10: i18n.t('stand-premium-livorno'),\n 11: i18n.t('stand-optima'),\n};\n\nexport const StandConfLabelsByConf: Record<\n ITEPortal_Contracts_Enums_StandConfiguration,\n string\n> = {\n 1: '',\n 2: i18n.t('stand-conf-cor'),\n 3: i18n.t('stand-conf-inl'),\n 4: i18n.t('stand-conf-isl'),\n 5: i18n.t('stand-conf-pen'),\n};\n\nexport const StandConfDescriptionByConf: Record<\n ITEPortal_Contracts_Enums_StandConfiguration,\n string\n> = {\n 1: '',\n 2: i18n.t('stand-conf-cor-description'),\n 3: i18n.t('stand-conf-inl-description'),\n 4: i18n.t('stand-conf-isl-description'),\n 5: i18n.t('stand-conf-pen-description'),\n};\n\nexport const AreaTypeConfig = [\n { label: 'Space Only', value: 1 },\n { label: 'Standard', value: 2 },\n { label: 'Standard Plus', value: 3 },\n { label: 'Premium – Ferrara', value: 4 },\n { label: 'Premium – Verona', value: 5 },\n { label: 'Premium – Ravenna', value: 6 },\n { label: 'Premium – Kremona', value: 7 },\n { label: 'Premium – Ancona', value: 8 },\n { label: 'Premium – Fabriano', value: 9 },\n { label: 'Premium – Livorno', value: 10 },\n { label: 'Optima', value: 11 },\n];\n\nexport const StandConfiguration = [\n { label: '', value: 1 },\n { label: 'COR', value: 2 },\n { label: 'INL', value: 3 },\n { label: 'ISL', value: 4 },\n { label: 'PEN', value: 5 },\n];\n\nexport const FieldTypeConfig = [\n { value: 'none', label: t('without-language') || '' },\n { value: 'select', label: t('select-list') || '' },\n { value: 'input', label: t('input') || '' },\n];\n\nexport const DEFAULT_LOGO_PATH =\n 'https://storage.yandexcloud.net/prod.techstore-files/main-logo/main-logo.png';\n","import dayjs from 'dayjs';\n\nexport const DateUtils = {\n isDate: (date: unknown): date is Date => {\n return date instanceof Date && !isNaN(date.getTime());\n },\n format(date: string, format = 'DD.MM.YYYY HH:mm'): string {\n return dayjs(date).format(format);\n },\n findLatestDate: (dates: Array<string | null | undefined>): string | null => {\n if (dates.length === 0) {\n return null;\n }\n\n let latestDate: dayjs.Dayjs | null = null;\n\n for (const dateString of dates.filter(Boolean)) {\n const date = dayjs(dateString);\n\n // Check if date is valid\n if (!date.isValid()) {\n continue;\n }\n\n if (!latestDate || date.isAfter(latestDate)) {\n latestDate = date;\n }\n }\n\n return latestDate ? latestDate.format('DD.MM.YYYY') : null;\n },\n sortByDateAddedDescending: <T extends { createdAt?: string | null }>(\n array: Array<T>\n ) => {\n return array.sort((a, b) => {\n const dateA = dayjs(a.createdAt);\n const dateB = dayjs(b.createdAt);\n\n if (dateA.isAfter(dateB)) {\n return -1;\n } else if (dateA.isBefore(dateB)) {\n return 1;\n } else {\n return 0;\n }\n });\n },\n};\n","import { CSSProperties } from 'react';\nimport { DraggingStyle, NotDraggingStyle } from 'react-beautiful-dnd';\n\nexport const DraggableUtils = {\n canBeReordered: <T extends { orderIndex?: number | null }>(list: T[]) => {\n return true || list.length > 0;\n // if (list.length === 0 || list.length === 1) {\n // return false;\n // }\n //\n // const sortedList = list\n // .filter(\n // (item) => item.orderIndex !== undefined && item.orderIndex !== null\n // )\n // .sort((a, b) => (a.orderIndex || 0) - (b.orderIndex || 0));\n //\n // for (let i = 0; i < sortedList.length - 1; i++) {\n // if (\n // sortedList[i + 1].orderIndex === 0 &&\n // sortedList[i].orderIndex === 0\n // ) {\n // return true;\n // }\n //\n // if (\n // (sortedList[i + 1].orderIndex || 0) -\n // (sortedList[i].orderIndex || 0) !==\n // 1\n // ) {\n // return false;\n // }\n // }\n //\n // return true;\n },\n isBrokenIndexing: <T extends { orderIndex?: number | null }>(\n list: T[]\n ): boolean => {\n const hasAtLeastOneDuplicatedOrderIndex = (lst: T[]) => {\n return !lst\n .map((it) => it.orderIndex)\n .every((oi, index, arr) => arr.indexOf(oi) === index);\n };\n\n return (\n DraggableUtils.canBeReordered(list) &&\n hasAtLeastOneDuplicatedOrderIndex(list)\n );\n },\n reorder: <T extends { orderIndex?: number | null }>(\n list: T[],\n startIndex: number,\n endIndex: number,\n forceNormalized?: boolean\n ): T[] => {\n if (list.length === 0) {\n return list;\n }\n\n if (forceNormalized) {\n list.forEach((it, i) => {\n it.orderIndex = i;\n });\n }\n\n const minIndex = list[0].orderIndex || 0;\n const greatestIndex = list.at(-1)?.orderIndex || list.length - 1;\n const isFullListOrdering = greatestIndex === list.length - 1;\n const hasBrokenIndexing = DraggableUtils.isBrokenIndexing(list);\n\n if (isFullListOrdering || hasBrokenIndexing) {\n const result = Array.from(list);\n const [removed] = result.splice(startIndex, 1);\n\n result.splice(endIndex, 0, removed);\n result.forEach((item, index) => {\n item.orderIndex = index;\n });\n\n return result;\n }\n\n const ghostStartIndex = (() => {\n switch (true) {\n case startIndex === list.length - 1: {\n return greatestIndex;\n }\n\n case startIndex > endIndex: {\n return greatestIndex - startIndex;\n }\n\n default: {\n return minIndex + startIndex;\n }\n }\n })();\n const ghostEndIndex = (() => {\n switch (true) {\n case endIndex === 0: {\n return minIndex;\n }\n\n case startIndex > endIndex: {\n return greatestIndex - (startIndex - endIndex || 1);\n }\n\n default: {\n return minIndex + endIndex;\n }\n }\n })();\n\n const ghostArray = Array(greatestIndex + 1).fill(null);\n\n list.reverse().forEach((item, i) => (ghostArray[greatestIndex - i] = item));\n\n const [removed] = ghostArray.splice(ghostStartIndex, 1);\n\n ghostArray.splice(ghostEndIndex, 0, removed);\n\n ghostArray.forEach((it, i) => {\n if (it) {\n it.orderIndex = i;\n }\n });\n\n return ghostArray.filter(Boolean);\n },\n\n getListStyle: (isDraggingOver: boolean): CSSProperties => ({\n background: isDraggingOver\n ? 'var(--chakra-colors-green-50)'\n : 'transparent',\n padding: 'var(--chakra-space-2)',\n border: isDraggingOver ? '2px dashed lightgray' : '2px dashed transparent',\n borderRadius: isDraggingOver ? 'var(--chakra-radii-md)' : undefined,\n width: '100%',\n }),\n\n getItemStyle: (\n isDragging: boolean,\n styles: DraggingStyle | NotDraggingStyle | undefined\n ): CSSProperties => ({\n ...styles,\n // width: '100%',\n }),\n};\n","import { IExhibitionSummary } from '../model/IExhibitionSummary';\n\nconst splitExhibitionByDate = (exhibitions: IExhibitionSummary[]) => {\n const { currentExhibitions, pastExhibitions } = exhibitions.reduce(\n (result, exhibition) => {\n if (exhibition.isPast) {\n result.pastExhibitions.push(exhibition);\n } else {\n result.currentExhibitions.push(exhibition);\n }\n\n return result;\n },\n {\n currentExhibitions: [] as IExhibitionSummary[],\n pastExhibitions: [] as IExhibitionSummary[],\n }\n );\n\n return { currentExhibitions, pastExhibitions };\n};\n\nexport const ExhibitionUtils = {\n splitExhibitionByDate,\n};\n","import axios, { AxiosRequestConfig, ResponseType } from 'axios';\nimport { FetchMethods } from '@/utils/constants';\nimport { appendTrailingSlash, removeTrailingSlash } from '@/utils/url';\n\nexport function generateAPIURL(baseUrl: string, endpoint: string) {\n return appendTrailingSlash(baseUrl) + removeTrailingSlash(endpoint);\n}\n\n/**\n * perform a query with specified parameters\n * @param {string} endpoint URL for the query\n * @param {Object} options options wor the query\n */\n\nexport type XhrOptions = {\n method: string;\n data?: object;\n params?: object;\n responseType?: ResponseType;\n} & Omit<AxiosRequestConfig, 'method'>;\n\ntype AdditionalHeadersType = {\n 'Content-Type': string;\n};\n\nexport default async function fetchApi<T = any>(\n endpoint: string,\n options: XhrOptions = { method: FetchMethods.Get },\n additionalHeaders?: AdditionalHeadersType\n) {\n return axios<T>(\n generateAPIURL(process.env.PUBLIC_API_URL as string, endpoint),\n {\n withCredentials: true,\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${localStorage.getItem('token')}`,\n ...additionalHeaders,\n },\n ...options,\n }\n );\n}\n","import FileDownload from 'js-file-download';\n\nexport const FileUtils = {\n saveBlobAsFile: (blob: Blob, fileName: string): void => {\n FileDownload(blob, fileName);\n },\n\n saveUrlAsFile: (url: string, fileName: string): void => {\n const link = document.createElement('a');\n\n link.href = url;\n link.target = '_blank';\n link.style.display = 'none';\n link.setAttribute('download', fileName);\n document.body.appendChild(link);\n link.click();\n },\n\n saveUrlToBlob: async (url: string): Promise<void> => {\n async function toDataURL(urlToBlob: string) {\n const blob = await fetch(urlToBlob, {\n mode: 'cors',\n }).then(async (res) => {\n return res.blob();\n });\n\n return URL.createObjectURL(blob);\n }\n\n const fileName = url.split('/').reverse()[0];\n const a = document.createElement('a');\n\n a.href = await toDataURL(url);\n a.download = fileName;\n\n document.body.appendChild(a);\n\n const clickHandler = () => {\n setTimeout(() => {\n URL.revokeObjectURL(url);\n a.removeEventListener('click', clickHandler);\n }, 150);\n };\n\n a.addEventListener('click', clickHandler);\n\n a.click();\n },\n};\n","import { FieldValues } from 'react-hook-form';\nimport { isOption } from './is-option';\n\nexport const formOptionsAsValues = <T extends FieldValues = FieldValues>(\n values: T\n): T => {\n const transformed: FieldValues = {};\n\n Object.entries(values).forEach(([key, value]) => {\n if (isOption(value)) {\n transformed[key] = value.value;\n } else {\n transformed[key] = value;\n }\n });\n\n return transformed as T;\n};\n","export const isNil = (v: unknown): v is null | undefined => {\n return v === null || v === undefined;\n};\n","import { OptionType } from '../model/common';\nimport { isNil } from './is-nil';\n\nexport const isOption = (\n value: OptionType | undefined | null\n): value is OptionType => {\n return !isNil(value?.value) && !isNil(value?.label);\n};\n\nexport const isArrayOfOptions = (\n value: unknown\n): value is Array<OptionType> => {\n if (Array.isArray(value)) {\n return value.every((opt) => !isNil(opt.value));\n }\n\n return false;\n};\n","export const MathUtils = {\n roundToNearestQuarter: (numberToRound: number) => {\n return Number((Math.round(numberToRound * 4) / 4).toFixed(2));\n },\n};\n","import { Product } from '@/model/IProduct';\nimport { Category } from '@/model/ICategory';\nimport i18n from '@/i18n';\nimport { TKey } from '@/i18n/types';\nimport { ITEPortal_Domain_Dto_PriceListItemSummary } from '@/api';\n\nexport const ProductUtils = {\n createProductFromPriceListItem: (\n priceListItem: ITEPortal_Domain_Dto_PriceListItemSummary,\n opts?: {\n category?: Category;\n categorySource?: Category[];\n }\n ) => {\n let category = (() => {\n if (opts?.category) {\n return opts.category;\n }\n\n if (opts?.categorySource?.length) {\n return opts.categorySource.find((cat) => {\n return cat.id === priceListItem.categoryId;\n });\n }\n })();\n\n if (!category) {\n // console.warn('category mocked');\n\n category = new Category({\n id: priceListItem.categoryId || 0,\n name: priceListItem.categoryName,\n displayName: i18n.t(priceListItem.categoryName as TKey),\n });\n }\n\n return new Product({\n ...priceListItem,\n category,\n imageUrls: priceListItem.imageUrls || undefined,\n });\n },\n};\n","import { Product } from '@/model/IProduct';\nimport { CREATE_EXHIBITION_ORDER_TAB_PATH } from '@/constants/router';\nimport { IdType } from '@/model/common';\n\nexport const replacePaths = (\n route: string,\n replace: Record<string, string | number>\n) => {\n Object.keys(replace).forEach((key) => {\n route = route.replace(key, <string>replace[key]);\n });\n\n return route;\n};\n\nexport const getPathByProduct = (\n exhibitionId: IdType,\n standId: IdType,\n product: Product\n): string => {\n return replacePaths(CREATE_EXHIBITION_ORDER_TAB_PATH, {\n ':exhibitionId': exhibitionId,\n ':stand': standId,\n ':service': product.category.name,\n });\n};\n","import { isNil } from '@/utils/is-nil';\n\nexport const typedObjectKeys = <T extends object>(obj: T) => {\n if (isNil(obj)) {\n return [];\n }\n\n return Object.keys(obj) as Array<keyof T>;\n};\n","export const UrlUtils = {\n appendTimestampToUrl: (url: string) => {\n const urlObject = new URL(url);\n\n const queryParams = new URLSearchParams(urlObject.search);\n\n queryParams.set('timestamp', Date.now() + '');\n\n urlObject.search = queryParams.toString();\n\n return urlObject.toString();\n },\n};\n","export const removeTrailingSlash = (url: string) => url.replace(/\\/?$/, '');\n\nexport const appendTrailingSlash = (url: string) =>\n url.replace(/\\/?(\\?|#|$)/, '/');\n"],"names":["ChakraProvider","theme","GlobalStyles","RouterProvider","ToastContainer","ModalFactoryProvider","settings","Category","id","SETTINGS","name","displayName","category","CREATE_USER","image","agentMenu","EXHIBITIONS","getCategoriesByRole","user","isAgent","isSuperAdmin","isAdmin","isSupportManager","isTechnicalManager","isModerator","exhibitions","serviceDirectory","SERVICE_DICTIONARY","memberDirectory","MEMBER_DIRECTORY","createUser","exhibitionId","t","canManagePersonalAccounts","checkRBACRule","$auth","menuItems","push","PERSONAL_ACCOUNTS","resolveUrl","PLACED_ORDERS","axios","config","HttpRequest","AxiosHttpRequest","request","BASE","VERSION","WITH_CREDENTIALS","CREDENTIALS","TOKEN","USERNAME","PASSWORD","HEADERS","ENCODE_PATH","auth","AuthService","bitrix","BitrixService","CategoryService","currency","CurrencyService","discount","DiscountService","exhibition","ExhibitionService","exhibitor","ExhibitorService","globalSettings","GlobalSettingsService","iteCompany","IteCompanyService","order","OrderService","priceList","PriceListService","priceListItem","PriceListItemService","product","ProductService","sellingOffice","SellingOfficeService","stand","StandService","UserService","ApiError","response","message","url","status","statusText","body","Error","options","BaseHttpRequest","CancelError","Symbol","toStringTag","CancelablePromise","executor","Promise","resolve","reject","onCancel","cancelHandler","Object","defineProperty","get","value","reason","onFulfilled","onRejected","then","catch","onFinally","finally","length","error","console","warn","OpenAPI","undefined","isDefined","isString","isStringWithValue","isBlob","type","stream","arrayBuffer","constructor","test","base64","str","btoa","err","Buffer","from","toString","getQueryString","params","qs","append","key","encodeURIComponent","String","process","Array","isArray","forEach","v","entries","k","join","getUrl","encoder","encodeURI","path","replace","substring","group","hasOwnProperty","query","getFormData","formData","JSON","stringify","filter","resolver","getHeaders","token","username","password","additionalHeaders","formHeaders","headers","credentials","Accept","reduce","mediaType","getRequestBody","sendRequest","axiosClient","source","requestConfig","axiosError","data","method","withCredentials","cancelToken","cancel","getResponseHeader","responseHeader","content","getResponseBody","catchErrorCodes","result","errors","ok","errorStatus","errorStatusText","errorBody","e","responseBody","isCancelled","httpRequest","requestBody","eventMasterId","eventEditionId","culture","orderId","userId","contactId","pageNumber","pageSize","buildingType","parentCategoryId","search","areaFrom","areaTo","discountPercentage","discountId","email","hasTechnicalManager","exhibitorId","employeeId","fromEmail","host","port","companyId","bankAccountId","orderStatus","orderItemId","categoryIds","productId","priceListId","priceListItemId","categoryId","exceptPriceListId","standId","projectId","changesId","fileId","roles","removeTrailingSlash","localStorage","getItem","TypedAxiosHttpRequest","axiosInstance","interceptors","use","clear","window","location","href","Authorization","typedAxios","AdminSearch","useTranslation","navigate","useNavigate","currentSearch","useSearch","strict","context","useMatches","at","searchOptions","doSearch","parameterName","p","doDebouncedSearch","useDebouncedCallback","clearSearch","Flex","flexDirection","map","searchDescriptor","index","placeholder","queryParameterName","Box","mr","InputGroup","maxWidth","InputLeftElement","pointerEvents","SearchIcon","color","Input","defaultValue","onKeyUp","target","onChangeCapture","stopPropagation","preventDefault","AmountCounter","amountCounterValue","onChange","disabled","suffix","step","precision","useCounter","min","max","keepWithinRange","_","valueAsNumber","MathUtils","increment","decrement","update","controlledValue","AmountWrapper","lang","HStack","maxW","CounterButtonDec","onClick","MinusIcon","boxSize","match","startsWith","slice","onBlur","event","parseFloat","Number","isNaN","textAlign","height","variant","role","Text","CounterButtonInc","AddIcon","Button","ifProp","css","AsyncButton","props","rest","useState","isLoading","toggleLoading","handleAsyncClick","promise","isDisabled","Wrapper","StyledLink","Link","Image","to","src","DEFAULT_LOGO_PATH","alt","BreadcrumbsWrapper","BreadcrumbsLinkContainer","BreadcrumbLink","items","spacing","separator","ChevronRightIcon","Breadcrumb","breadcrumbItem","label","link","BreadcrumbItem","as","schemeConfig","primary","backgroundImage","secondary","border","opacity","disabledSecondary","black","transparent","red","backgroundColor","hoverConfig","focusConfig","colorScheme","children","width","fontWeight","buttonType","defaultColor","minWidth","transition","px","fontSize","borderRadius","_hover","_focus","Spinner","ChakraCardWrapper","ChakraCardContainer","ChakraCardTitle","CardHeader","ChakraCardFooter","CardFooter","Card","className","header","footer","CardBody","SubtitlesWrapper","DescriptionWrapper","ImageContainer","ImageWrapper","DotsContainer","FooterTextWrapper","SubtitleRowWrapper","Subtitle","subtitles","subtitle","Divider","orientation","FooterSection","stands","orders","bg","ExhibitionCard","description","direction","base","sm","overflow","h","w","Stack","Heading","size","StyledCard","ServiceName","TechnicalCardWrapper","service","viewExhibitionCart","pathName","replacePaths","CREATE_EXHIBITION_ORDER_TAB_PATH","Content","ContentInner","ContentWithSidebars","AdminPanelContent","DatePicker","dateFormat","isRequired","control","useFormContext","fieldState","useController","defaultDate","Date","FormControl","isInvalid","invalid","display","FormLabel","Controller","render","field","fieldValue","SingleDatepicker","date","onDateChange","configs","dayNames","DatePickerDays","monthNames","DatePickerMonths","FormErrorMessage","isDebugEnabled","sessionStorage","Debug","ModalPrices","prices","useExhibition","PricesWrapper","current","PriceRowContainer","PriceLabel","PriceNumber","price","ImageSection","ImageDescription","BuildingDescriptionSection","buildingLabel","buildingDescription","BuildingDescriptionWrapper","BuildingDescriptionLabelContainer","BuildingDescriptionBodyRow","TableSection","tableData","TableContainerWrapper","Table","Thead","Tr","titles","columnTitle","BuildingTableTitle","Tbody","rows","row","BuildingTableRow","NoteSection","note","NoteSectionContainer","Th","Td","TableContainer","BuildingCardWrapper","DevelopmentCard","cardInfo","isSelected","standForOrder","useStand","useDisclosure","isOpen","onOpen","onClose","openConfirm","setOpenConfirm","handleSubmit","useForm","onSubmit","selectBuilding","useCallback","building","Math","buildingTypes","priceListItemsBasedOnBuildingType","find","pi","productName","includedPriceListItems","setLinkedItems","orderApi","OrderItem","getProductId","amount","area","setBuilding","ModalConfirm","closeModal","Modal","isCentered","ModalOverlay","ModalContent","ModalHeader","ModalCloseButton","ModalBody","buildingName","ModalFooter","ButtonGroup","gap","ModalInfoComponent","imageDescription","changeHandler","Product","counterValue","imageExtensions","FileLink","DownloadFileLink","fileName","attachmentUrl","fileNameFromProps","onDelete","withIcon","textProps","couldBeOpenedInPopup","some","ext","endsWith","open","setOpen","cursor","mt","FileUtils","AttachmentIcon","canBeDeleted","DeleteIcon","ModalFactory","Component","okLabel","onOk","close","slides","animation","fade","controller","closeOnPullDown","closeOnBackdropClick","styles","root","plugins","download","slide","Checkbox","formContext","registeredFieldProps","register","clearErrors","isChecked","FormControlWrapper","ParticipantCheckContainer","addonLeft","addonRight","tooltip","registerFieldName","htmlFor","Tooltip","hasArrow","placement","InfoIcon","style","marginTop","InputLeftAddon","InputRightAddon","StyledForCaseWithAddon","borderTopLeftRadius","borderBottomLeftRadius","addon","NumberInput","valueAsString","NumberInputField","NumberInputStepper","NumberIncrementStepper","NumberDecrementStepper","OrderTableRowContainerBadgeComponent","Select","rootProps","Container","UploadFileDropzone","multiple","accept","defaultLabelFromProps","defaultLabel","setValue","onDrop","droppedFiles","shouldValidate","useDropzone","getRootProps","getInputProps","acceptedFiles","filesLength","files","file","uploadFileLabel","filesCount","formLabelStyle","getSelectBuildingInfo","products","selectBuildingData","productData","productDisplayName","additionalNotes","imageUrls","text","BuildingTypesWrapper","useBuildingsLoader","createExhibitionOrderServiceRoute","originalBuildingType","useQuery","queryKey","queryFn","productItemCardData","productItemCardObjects","item","categoryName","CATEGORY_TYPES","ProductUtils","SelectBuilding","useOrder","isLoader","useAppLoading","vatMessage","useVatSettings","cardItems","isFetching","useEffect","loadingApi","marginY","ShowMoreText","lines","keepNewLines","more","less","anchorClass","LoaderWrapper","Loader","oi","cardName","images","BuildingGallery","SELECT_BUILDING","TEMPORARY_STAFF","serviceCategory","Form","Price","Label","TooltipWrapper","rowDataComponentsConfig","inputNumber","input","badge","submitHandler","param","instance","isValid","formState","FormProvider","WarningIcon","alignItems","tableElement","formattedPrice","fieldType","LANGUAGES_OPTIONS","required","isSubmitting","setIsSubmitting","productItems","setProductItems","clickHandler","values","language","personAmount","parseInt","staff_amount","dayAmount","day_amount","TemporaryStaffOrderItem","peopleAmount","fetchData","GET_PRICELIST_PRODUCTS","FetchMethods","serviceSpecification","useProductsLoader","tree","mb","OrderTableRow","rowData","withDivider","opts","flatMap","useCatalog","setLoading","categoriesSource","cat","getConfig","NavBar","StyleMenu","StyledSearch","RightBlockWrapper","useAuth","matchContext","useParams","shouldRenderExhibitionSearchForExhibitor","Boolean","isExhibitor","shouldRenderPageSpecificSearch","headerMenuConfig","LanguageSwitcher","saveManual","manualUrl","UrlUtils","icon","xmlns","viewBox","d","DraggableHandlerIcon","forwardRef","ref","Icon","fill","fillRule","clipRule","OrdersIcon","UsersIcon","DotsWrapper","setIndex","useMemo","toggleOpen","state","updateIndex","singleImage","position","on","view","click","carousel","padding","imageFit","finite","iconPrev","iconNext","inline","aspectRatio","margin","Thumbnail","CommonProductGallery","thumbnailsCount","useFeatureValue","visibleSlides","hiddenSlidesCount","i","whiteSpace","ButtonsWrapper","i18n","useCommonStore","lngValue","setLngValue","setLanguageValue","languageValue","commonApi","setItem","changeLanguage","reload","centralized","thickness","speed","emptyColor","top","left","LoaderWrapperLoadingStyles","userSelect","loading","boxProps","zIndex","List","redirectTo","rightIcon","Item","active","modals","useUnit","$modalStack","modal","isOpened","scrollBehavior","shouldUseOverlay","title","justifyContent","minW","cancelLabel","$modalContext","domain","createDomain","createStore","defaultModalProps","infoModalDefaultProps","confirmModalDefaultProps","createApi","show","newModal","info","confirm","closeAll","closeById","descriptorById","indexOfDescriptor","findIndex","splice","lastModalDescriptor","pop","setTimeout","attempt","stack","isOpenedById","getState","updateContext","payload","useModalFactoryContextProvider","SelectComponent","isMulti","closeMenuOnSelect","blurInputOnSelect","allowCreate","onClear","every","isOption","option","opt","isArrayOfOptions","possibleValues","includes","BaseComponent","borderColor","minHeight","menuPortal","getValues","isClearable","menuPlacement","menuPortalTarget","document","resetField","badgeConfig","ORDER_STATUSES","OrderBadge","isNil","badgeType","Badge","NameComponent","OrderTableRowContainerNameComponent","verticalAlign","OrderTableRowContainerPriceComponent","OrderTableRowContainerInputWrapper","OrderTableRowContainerInputComponent","RowControl","orderItem","isProductSupportsDecimals","isDecimal","getAmount","unit","amountStep","AddItemToOrderButton","addItem","productToAdd","setAmount","OrderTableRowWrapper","OrderTableRowContainer","InfoSectionContainer","ParamsSectionContainer","rowDataText","rowDataOptions","ButtonContainer","included","Row","UserInfo","StyledChevronDownIcon","ChevronDownIcon","fullName","StyledMenuList","MenuList","StyledMenuItem","MenuItem","can","useRBAC","logOutHandler","authApi","Menu","MenuButton","exhibitorPathRootPath","MenuDivider","StyledInputGroup","optionValue","optionLabel","trim","toLowerCase","queryClient","useQueryClient","useCategoriesByData","useRef","onSelectHandler","getPathByProduct","originalValue","autoCompleteQueryOptions","queryOptions","enabled","AutoComplete","onSelectOption","freeSolo","emptyState","openOnFocus","Search2Icon","AutoCompleteInput","onFocus","ensureQueryData","AutoCompleteList","AutoCompleteItem","BarTitleWrapper","categories","barTitle","itemRefs","categoryInfo","useProductCategory","parent","offsetTop","getScrollElement","scrollTo","behavior","scrollRef","fixed","serviceObject","resolvedUlr","pageUrl","SHOW_SUPPORT_MANAGER_PATH","SHOW_SUPPORT_MANAGER_ADDITIONAL_PATH","total","useOrderTotal","isOrderCompleted","useOrderCompleteness","StyledText","cost","toLocaleString","StyledButton","CREATE_EXHIBITION_CART_PATH","exhibitionName","StyledHeader","ExhibitionBox","ExhibitionTitle","StandDescription","includeStandNumber","HeaderTitle","OrderItemDependencyWarning","renderProps","alertProps","incompleteItemsDueToDependency","inTheListOfIncomplete","incomplete","wrapInto","el","Alert","AlertTitle","ArrowUpIcon","ml","AlertDescription","listStyle","outstandingDeps","pr","StyledSidebar","Footer","WrapperInner","Name","Count","Actions","productPrice","itemName","visible","setVisible","isBuilding","deleteHandler","unitOfMeasurement","unitOfMeasure","onMouseLeave","onMouseEnter","CloseIcon","pl","pt","pb","SidebarWrapper","SidebarHeader","SidebarFooter","SidebarInner","DraggableTable","columns","onDragEnd","useTable","initialState","hiddenColumns","column","accessor","getTableProps","getTableBodyProps","headerGroups","prepareRow","isEmpty","DragDropContext","headerGroup","getHeaderGroupProps","headerIndex","getHeaderProps","paddingLeft","paddingRight","Droppable","droppableId","provided","innerRef","droppableProps","Draggable","draggableId","providedRow","rowSnapshot","draggableProps","getRowProps","isDragging","DraggableUtils","cells","cell","cellIndex","dragHandleProps","getCellProps","m","PaginationContainer","PaginationSchema","CurrentPage","TotalPages","PageSize","TotalCount","setPageNumber","setPageSize","paginationInfo","parsedSchema","safeParse","success","IconButton","ChevronLeftIcon","pageSizeNumber","onBulkAction","showBulkAction","useSortBy","useRowSelect","hooks","visibleColumns","columnsData","Header","getToggleAllRowsSelectedProps","checked","Cell","getToggleRowSelectedProps","selectedFlatRows","toggleAllRowsSelected","rowIds","original","getSortByToggleProps","isSorted","isSortedDesc","ChevronUpIcon","useTableLoader","resource","onError","ignorePagination","additionalPrams","xhrOptions","setIsLoading","setData","setPaginationInfo","responseData","responseArray","paginationInfoHeader","s","hasOwn","AxiosHeaders","parse","log","onPageSizeChange","onPageChange","page","currentPage","currentSize","refresh","Grid","SimpleGrid","CenteredTitle","PageTitle","rootCategories","categoryConfig","subcategoriesByCategory","useSubCategoriesByData","categoriesToRender","rowGap","md","xl","TextArea","CodeWrapper","CodeLabel","CodeTimer","Timer","sec","userEmail","authInfo","over","setOver","time","setTime","tick","resendCode","LOGIN","timerID","setInterval","clearInterval","padStart","FlexedPageTitle","CenteredPageTitle","ROLES","User","BUILDING_TYPES","STATUS_CONFIG","CLEANING","PRODUCT_TYPES","BUILDING","COMMON","CODE_VERIFY","GET_PDF_BY_ORDER","EXHIBITIONS_TABLE","EXHIBITORS_FROM_EXHIBITOR","CREATE_EXHIBITION","EDIT_EXHIBITION","EDIT_USER_INFO","ADD_USER","EDIT_USER","CHANGE_ORDER_STATUS","SAVE_EXHIBITION_IMG","GET_PRICELISTS","DOWNLOAD_EXHIBITOR_CSV","EDIT_PRICELIST_ITEM","IMPORT_PRICELIST_ITEMS","SAVE_PRODUCT_IMAGES","MEMBERS","EDIT_MEMBERS","memberId","EDIT_PRODUCT_RESOURCES","EDIT_PASSWORD","DELETE_PRICE_LIST","CHANGE_MAIN_LOGO","DELETE_ORDER_ITEM","Undefined","Submitted","Draft","Invoiced","Paid","Cancelled","Processing","PERSONAL_DISCOUNT_TYPE","PERCENT","AMOUNT","SPACE_ONLY_BUILDING_TYPE","SHOW_EXHIBITION_PATH","SHOW_SUPPORT_MANAGER_ACTION_PATH","CREATE_EXHIBITION_ORDER_PATH","CART_TABLE","LOGIN_PATH","VERIFY_EMAIL_PATH","rootAuthRoute","Route","getParentRoute","rootRoute","beforeLoad","isLoggedIn","redirect","indexRouteFactory","component","Outlet","loginRoute","validateSearch","searchObj","verifyEmailRoute","authRouteTree","addChildren","routerRBACGuard","rule","protectedRoute","indexRoute","profileRoute","Profile","cabinetRoute","ADMIN_AREA_PREFIX","AdminPanelPage","flatRouteTree","protectedTree","exhibitionsRoutesTree","serviceDictionaryRoutesRootTree","memberDirectoryRoutesTree","settingsRoutesRootTree","usersRoutesRootTree","agentRoutesRoot","exhibitionRootRoute","exhibitionViewRoute","createExhibitionOrderCategoryRoute","standProjectRoute","adminExhibitionRoutesRoot","exhibitionsTabs","ExhibitionAccountsTabs","ExhibitionListRouteSearchSchema","tab","ExhibitionAccountsListRouteSearchSchema","exhibitionListRoute","ExhibitionsTabsPage","createExhibitionRoute","NewExhibition","loader","technicalManagers","manager","editExhibitionRoute","viewExhibitionRoute","viewExhibitionAccountsRoute","PersonalAccountsTab","EditPersonalAccountsPageSearchSchema","editExhibitionAccountRoute","NewAccount","pendingComponent","shouldReload","cause","backPath","accountId","accountData","sellingOffices","currencyData","officesOptions","technicalManagersOptions","currencyOptions","agents","QueryOptions","office","agentsModels","ag","offices","companies","addExhibitionAccountRoute","c","meta","PlacedOrdersRouteSearchSchema","optional","viewExhibitionPlacedOrdersRoute","PlacedOrders","editOrderRoute","EditOrder","alreadyAddedItemIds","exhibitors","IBaseOrder","createOrderRoute","CreateOrder","AgentHome","onLeave","leaveExhibitionOrderEvent","exhibitionInstance","exhibitionNewInstance","$exhibition","IExhibition","exhibitionApi","standsData","cleaningDiscount","invalidateStand","sellingOfficeId","$stand","standApi","CatalogGateHOC","isPast","StandProject","fetchQuery","project","memberDirectoryRoutesRoot","memberDictionaryRoute","MembersDirectory","viewExhibitorRoute","ManageExhibitorUsers","pageTitle","companyName","serviceDictionaryRoutesRoot","serviceDictionaryRoute","ServiceDirectory","saveCSV","openImportModal","importProductsFile","URL","createObjectURL","Blob","createElement","setAttribute","appendChild","toast","ImportCSVForm","ctx","subHeader","editCategoryApi","parentCategoryName","editProductApi","action","settingsRoutesRoot","SettingsPageSearchSchema","settingsRoute","SettingsPage","discounts","usersRoutesRoot","usersListRoute","UsersTable","addNewUserRoute","NewUser","editUserRoute","routeTree","router","Router","rootRouteWithContext","QueryClientProvider","client","superAdminPathRootPath","adminPathRootPath","FEATURES","VAT_DESCRIPTION","LINKED_ZERO_PRICE_PRODUCTS","PRODUCT_GALLERY_PREVIEW_IMAGES_COUNT","getFeaturesMap","useFeature","feature","flag","QueryClient","defaultOptions","queries","refetchOnWindowFocus","refetchIntervalInBackground","standsQueryOptions","exhibitorQueryOptions","loadExhibitorStand","loadCategoriesQueryOptions","loadPriceListItemsShort","initialData","priceListItemOption","loadStandProject","retry","loadCategoryOptions","ct","loadEventMasterOptions","eventMasters","em","loadCompanyOptions","subexponentsQueryOptions","productsQueryOptions","rules","canManageSuperAdmins","canDeleteOrder","canCreateOrder","canEditOrders","canViewPublicExhibitions","canAccessAdminUsers","canAccessAdminSettings","canAccessAdminServiceDirectory","canAccessAdminCompanies","canAccessAdminExhibitions","canAccessExhibitionProfile","canAccessExhibitionPersonalAccounts","canAccessExhibitionOrders","canAddExhibition","canEditExhibition","canManageExhibition","canAddExhibitionExhibitor","canAddStand","canAddOrderPersonalDiscount","canRemoveSurchargeFromOrder","canChangeOrderStatus","guard","bootstrapSentry","dsn","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","release","categoriesData","imageUrl","subCategoriesData","subCategory","useExhibitionStateReset","errorsOverride","useFormErrorsHandler","processErrorsArray","handledError","ignoreFields","errorsData","messageErrorKey","propertyName","split","errorKey","charAt","getFieldState","setError","errorMessage","dir","processErrorsObject","fieldPrefix","overrideMessage","messages","override","typedObjectKeys","o","exhibitionCategory","useSearchCategoryForProduct","findCategoryForProduct","useNameTranslate","ru","en","validateTranslationsMatch","initReactI18next","init","resources","translation","fallbackLng","interpolation","escapeValue","FASCIA_INSCRIPTION_COLORS","colorCode","scope","code","CARPET_COLORS","translations","getElementById","enableMocking","BackButtonWrapper","ToExhibition","getBack","ArrowBackIcon","StyledContentInner","$withToolbar","pageName","breadcrumbsItems","ConnectedSidebar","ExhibitionSidebar","SidebarByRole","Main","assign","personalDiscount","personalExtraChargePercentage","removeExtraCharge","isFinite","typeOfDiscount","Serializable","Cart","cleaningDiscounts","standInfo","cleaningItems","totalArea","cleaningTotal","cleaningArea","cleaningDiscountMultiplier","markupPercentage","currentDate","firstMarkup","firstMarginDate","secondMarkup","secondMarginDate","thirdMarkup","thirdMarginDate","hasPersonalExtraCharge","isSameOrAfter","thirdMargin","secondMargin","firstMargin","subTotal","hasPersonalDiscount","itemsTotal","hasVat","subTotalWithMarkup","vatPercent","markup","vat","subTotalWithVat","_urlResolver","toJSON","json","fromJSON","endDate","isBefore","orderCreationLastDate","startDate","format","isValidExhibition","nullish","logoUrl","place","IExhibitionSummary","exhibitionSummary","Order","categoryObj","originalProductId","includedReason","toFixed","is","itemDetails","linkedProducts","linkedFromJSON","includedProductName","jobTitle","subdivision","_fullName","_id","_email","_image","_jobTitle","_role","_subdivision","Role","SuperAdmin","Admin","SupportManager","TechnicalManager","Moderator","Exhibitor","Agent","useHasCategorySearchCriteria","searchProduct","useHasProductSearchCriteria","useCategoriesLoaderQueryOptions","structuralSharing","useSubCategoriesLoaderQueryOptions","useCategoriesLoader","useSubCategoriesLoader","useCategoriesOrderUpdate","useMutation","mutationKey","mutationFn","startIndex","endIndex","preSaveFn","initialTableData","localOrdered","orderIndex","useProductsLoaderOptions","getProductsLoaderOptions","refetchOnMount","retryOnMount","placeholderData","keepPreviousData","useProductsOrderUpdate","productsSource","useSubCategoriesOrderUpdate","OptionSchema","required_error","ValidationSchema","linked","n","nullable","EditPriceListItemForm","editTableData","reloadPriceList","existingPriceListItems","zeroPriceProductsEnabled","entityId","setEntityId","priceListItemOptions","filteredPricelistItemOptions","existingIds","indexOf","formInstance","zodResolver","useFieldArray","linkedFieldset","fields","remove","reset","it","includedPricelistItemId","quantity","filteredLinkedProducts","addAnother","includedPriceListItemId","headerMessage","Drawer","DrawerOverlay","DrawerContent","DrawerHeader","DrawerCloseButton","DrawerBody","flexBasis","DrawerFooter","MarginContainer","MarginWrapper","dateFields","ExhibitionDescription","editForm","managers","useLoaderData","methods","mode","toExhibitions","managerValue","managerOption","isDateField","DateUtils","toDate","logo","OptionWrapper","FooterContainer","Exhibitions","useExportExhibition","ExhibitionOptions","ExternalLinkIcon","EditIcon","exhibitionColumns","selectedTabStyles","background","tabStyles","tabPanelsStyle","indexFromUrl","Tabs","align","TabList","Tab","_selected","borderTopRightRadius","borderBottomRightRadius","TabPanels","TabPanel","eventMaster","ImportExhibitionForm","setEventMasterId","setExhibition","setTechnicalManagers","fetchExhibition","exhibitionsData","ex","fetchTechnicalManagers","technicalManagersData","borderBottomColor","TabWrapper","element","scrollIntoView","isManual","PriceLists","SelectedPriceWrapper","SelectedPriceContainer","ToolBarWrapper","ButtonContentContainer","TransparentButtonsTextContainer","setCurrency","setCurrencyOptions","priceListsData","setPriceListsData","setOpenImportModal","defaultValues","editData","setEditData","setEditTableData","priceLists","setPriceLists","selectedPriceId","setSelectedPriceId","openDeletePriceListItem","setOpenDeletePriceListItem","deleteAll","setDeleteAll","setPriceListItemId","setEventEditionId","fetchEventEditionId","deletePriceListItemModalShow","keys","PriceListsOptions","rowValues","editRow","importCSV","closeImportModal","importItems","importPriceListItems","showPriceList","addRow","deleteRow","priceListsColumns","TableIncludedPriceListItemsBadge","currencyId","deletePriceList","minH","pricelists","CiImport","DeleteModal","itemsWithDisplayName","ipi","tailLength","Fragment","tooltipProps","openDelay","flexWrap","bt","saveExhibition","withoutContactIdManagers","gt","File","refine","isAfter","transform","EditMemberForm","fieldErrors","UsersTableActions","useRouter","openForm","useSaveEmployee","flexDir","invalidate","AddNewEmployeeForm","model","EmployeeFormSchema","phoneNumber","exhibitorEmployees","trigger","openConfirmEditMember","setOpenConfirmEditMember","editUser","createdDate","lastModifiedDate","MainInfo","UpdateCompanyFormSchema","NewCompanyFormSchema","isAgentSelectedForExhibitor","watch","selectedCompanyOption","setSelectedCompany","useSuspenseQuery","useBoolean","isAgentCreating","isAgentCreatingApi","useSearchCompanyByEmployee","findCompanyByEmployee","isCompanyFoundByEmployee","saveCompany","useCompanySave","officeOption","technicalManagerEmail","currencyOption","agent","isAgentCheckboxDisabled","__isNew__","filteredCompanies","ParticipantCheckWrapper","isEdit","savedId","agentId","employeeName","employeeEmail","foundCompany","setFoundCompany","isEmployeeEmailFieldVisible","toggleIsEmployeeEmailFieldVisible","toggle","isCompanySelectionAllowed","toggleIsCompanySelectionAllowed","markIsCompanyFoundByEmployee","markCompanyNotFoundByEmployee","off","company","existingEmployee","z","technicalManager","EditManagerModal","TabsMap","main","users","subexponents","ExhibitionInfoWrapper","ShowExhibitionInfo","selectedTabFromUrl","isLazy","StandsTab","UsersTab","ProductsTab","SubexponentsTab","PersonalAccounts","openEditTechnicalManagersModal","useEditTechnicalManagers","processedAccounts","setLoader","setShowBulkAction","selectedRows","setSelectedRows","ac","lastVisitDate","empl","personalAccountsData","showBitrixModal","setShowBitrixModal","PersonalAccountsOptions","showDeleteModal","entity","responseType","importFile","personalAccountsColumns","addPersonalAccount","importPersonalAccountsFromBitrix","setDistributeMode","ConfirmModal","modalMessage","secondFloorArea","standConfiguration","standNumber","sortedStands","sort","a","b","reValidateMode","StandFieldSet","isNew","onRemove","focusName","FilesStorage","canUploadNewFiles","StandProjectForm","useStandSave","isSaving","saveStand","openEditStandProjectForm","standProjectApi","openStandFileStorage","filesStorageApi","boxShadow","lg","AreaTypeConfig","StandConfiguration","PavilionOptions","paddingX","changeDescription","invalid_type_error","ProjectChangeForm","editable","approved","useStandProject","uploaderKey","setUploaderKey","employeesIds","changeId","comment","projectChangesHistory","CommentsHistory","comments","ownershipResolver","historyItem","createdBy","AttachmentUploader","onFileChange","ProjectImageUploader","projectImageUrl","ProjectImage","projectDescription","standIdFromUrl","toggleOpened","isDescriptionEditable","setDescriptionEditable","dataUpdatedAt","isExistingProject","handleClose","reopenProject","standStatus","saveProjectId","canEditHistory","$standProject","setStandId","getPavilionLabelByCode","rawValues","formOptionsAsValues","refetchQueries","foundModel","setFoundModel","useEmployeeSearch","findUser","isSearching","foundEmployee","openCreateModal","useEmployeeCreate","invalidateQueries","saveEmployee","saveTechnicalManagers","exhibitorIds","AddItemToOrderModal","useCreateOrderContext","originalPriceListItem","oit","itemsOptions","AddedToOrderItemsTable","selectedItems","removeItem","NumberColumnComponent","OrderControls","CreateOrderButton","reducer","itemsSource","sourceItems","availableItems","employees","hasPriceList","selected","exhibitorIdFromQuery","useReducer","dispatch","hasStands","couldAddItems","CreateOrderFormSchema","shouldDirty","shouldTouch","employeesOptions","standsOptions","updateDueToExChange","loadedItems","loadedStands","createOrder","selectedExhibitorId","createdOrderId","employeeUserId","CreateOrderContextProvider","paddingBottom","NoPriceListsLink","NoStandsLink","hasItems","paddingTop","CreateOrderContext","createContext","useContext","Provider","AlertIcon","here","textDecoration","postProcess","AddButtonWrapper","setIsOpened","TotalRowContainer","setOrderItem","openConfirmDeleteModal","setOpenConfirmDeleteModal","requestSendOrderEmail","useSendOrderEmail","openExportModal","useExportOrder","OrderRowOptions","orderColumns","downloadPDF","object","deleteOrderItem","EmailIcon","marginRight","DownloadIcon","MarkupManagement","PersonalDiscount","EditOrderForm","numberWithSpaces","orderSummary","orderItemData","idProps","MarkupForm","toggleCommonExtraCharge","useManageCommonExtraCharge","savePersonalExtraCharge","useManagePersonalExtraCharge","Switch","onSaved","chargeState","isEditModalOpened","toggleOpenState","isDraft","hasDiscount","PersonalDiscountForm","schema","SubmitTypes","Delete","Save","isUpdate","submitType","setSubmitType","isDeleting","discountType","setDiscountType","isPercentSelected","save","removeDiscount","defaultDiscountType","Schema","sendEmail","EditStatusModal","orderData","statusProps","ToExhibitionWrapper","exhibitorName","downloadPdf","setIsEditModalOpened","orderIdToDelete","setOrderIdToDelete","showPdfByOrder","DownloadPDF","openModal","PlacedOrdersOptions","editOrder","deleteOrder","placedOrdersColumns","cfg","ExportToBitrixForm","setCompanyId","bankAccounts","setBankAccounts","fetchBankAccounts","bankAccountsData","ba","bankAccount","exportOrder","iteCompanyId","descriptionRu","descriptionEn","EditCategoryForm","useParentCategoriesLoader","categoryID","editDataWithResources","displayNameRu","displayNameEn","ServiceDictionaryValidationSchema","unitOptions","cultureName","productTypeOptions","AbstractEditProductDrawerForm","productType","productTypeFromSelect","Fieldset","EditBuildingProductFieldset","EditTemporaryStaffProductFieldset","EditDefaultProductFieldset","po","mapValues","imageDescriptionRu","imageDescriptionEn","additionalNotesRu","additionalNotesEn","BuildingProductValidationSchema","categoryOptions","useProductForm","productID","buildingTypeValues","buildingTypeLabel","dictionaryType","linkedProductIds","dependencyOptions","useCommonProductEditLoader","CommonProductValidationSchema","EditProductDrawer","useCommonProductSave","mutateAsync","isSuccess","mapData","fieldTypeEditLabel","FieldTypeConfig","TemporaryStaffValidationSchema","filesData","imageFiles","FormData","$editProduct","setFormInstance","CreateProductUtils","getProductType","getCreateButtonLabelByType","SchemaWithImages","SharedProductValidationSchema","merge","currentExpandedIndex","setExpandedIndex","hasSearchCriteria","canBeReordered","reorderAsync","isReordering","isPending","Accordion","allowToggle","expandedIndex","destination","currentOpened","reorderedList","reorderedExpandedIndex","snapshot","isDraggingOver","isDragDisabled","itemProvided","itemSnapshot","CategoryItem","dragHandle","EditCategoryModalForm","CategoryControls","isSubCategory","AccordionItem","isExpanded","AccordionButton","flex","AccordionIcon","AccordionPanel","SubCategoriesList","ProductsList","useEditCategoryApi","isModalOpened","BuildingTypes","buildingTypeNames","dictionaryTypeName","getColumns","handleProductDelete","onRemoved","isDraggable","hasSearch","updateProductsOrder","mutate","isUpdatingOrder","hasCategorySearchCriteria","marginBottom","INITIAL_STATE","$editCategory","TableMainCallData","TableCallData","Code","BitrixIntegrationPassportTab","codeCellData","BitrixTableData","queryParams","ChangePassword","DiscountsTab","editableRow","setEditableRow","confirmDeletion","columnGap","EditDiscountModal","preprocessNumber","safe","lte","isAreaExistsMessage","LogoTab","manualFileEn","manualLinkEn","manualFileRu","manualLinkRu","ControlLine","ManualUploaderTab","loaderData","exhibitorManualRu","exhibitorManualEn","handleSaveSetting","locale","valid","manual","Settings","saverFn","fieldName","global","smtp","NewUsersForm","roleProps","toUsers","roleOption","userIdValue","setUserIdValue","paramsSerializer","indexes","openDeleteModal","UsersTableOptions","UserRole","userRole","deleteUser","usersTableColumns","alignSelf","CartTotal","cart","canPlaceOrder","navigateToOrders","asDraft","dataForSave","additionalComments","carpetColor","fasciaInscription","fasciaInscriptionColor","requestComments","isSpaceOnlyStand","SpaceOnlyStandOrderCommentsForm","ExtendedStandOrderCommentsForm","TotalWrapper","hasCleaningDiscount","TotalRowContainerSummary","CartButtonsContainer","SpaceOnlyStandOrderCommentsFormSchema","CartRow","isNumeric","marginLeft","SmallCloseIcon","colSpan","BackButton","orderDto","cartInstance","setItems","setOrder","setCleaningDiscounts","setMargin","setStandInfo","IsLoadingWrapper","OrderPageWrapper","PageTitleWithService","ExhibitionBoxWrapper","OrderCartWrapper","columnName","tableRow","uniqueKey","AccordionButtonWrapper","PageTitleContainer","AccordionButtonDescription","AccordionTitleWrapper","AccordionTitleContainer","AccordionItemWrapper","AccordionWrapper","OrderRowWrapper","OrdersWrapper","OrderInfoContainer","OrderOptionsContainer","OptionBox","AddOrderButtonContainer","inputRef","useFilesStorage","hasStandId","handleUpload","currentTarget","handleDownloadArchive","hidden","fileUrl","$filesStorage","setStand","defaultAccordionValue","AccordionButtonContent","standName","OrderOptions","canEdit","canRemove","useEditOrderLoader","showPdf","AiFillFilePdf","MdModeEdit","MdDelete","OrderRowContent","useGetOrderItems","getOrderItems","orderLoading","orderItems","setOrderItems","canManageOrder","centered","defaultIndex","allowMultiple","hasOrders","getOrderData","tabIndex","reduceMotion","orderKey","orderTitle","orderTranscriptTableColumns","TranscriptTableRow","TranscriptTableHeader","AccordionSubTitleContainer","pavilionHall","shouldRenderStandNumber","StandTypeLabelsByType","StandConfLabelsByConf","StandConfDescriptionByConf","draftProducts","buildings","orderedBuilding","productsInfo","draftOrderedItems","dp","orderProductIds","draftProduct","responseProduct","filteredProduct","productInfo","categoryDisplayName","setOrderLoading","setErrors","Logo","exhibitionCategoriesObject","getBreadcrumbsByCategory","ExhibitionsCardWrapper","ExhibitionsList","preloadExhibition","useExhibitionDetailedPreload","formattedStartDate","formattedEndDate","ExhibitionsTabs","pastExhibitions","currentExhibitions","ExhibitionsWrapper","useExhibitionLoader","margins","setExhibitions","load","ExhibitionUtils","maxH","StandProjectImage","StandProjectDescription","attachment","setAttachment","CommentForm","approveProject","sortedComments","maxHeight","CustomScroll","heightRelativeToParent","HistoryItem","ownershipLabel","postedByCurrentUser","createdAt","ProjectDescription","noOfLines","fileExtension","toUpperCase","pinLength","currentUser","verify","setValues","PinInput","onComplete","PinInputField","persist","store","adapter","deserialized","set","addEmail","produce","draft","setUser","setIsLoggedIn","setToken","logout","sample","clock","createEffect","handler","CatalogGate","createGate","useGate","Map","$catalog","catalogApi","updateCategories","loadCategoriesFX","sortedCategories","createEvent","$common","navigator","setCategoryOptions","setLanguage","exhibitionInitialState","prepare","setName","setInstance","merged","fn","sync","createLogger","$order","$vatSettings","$orderCompleteness","$loading","units","itemsWithDependencies","hasLinkedProducts","allOrderItemsIds","productWithDeps","depsIDS","dependencyId","dep","addItemsBatch","acc","existing","lp","clearBuildingItems","changeItem","setState","clearProducts","setBuildings","setOrderDto","cleanUpOrderState","$orderTotal","accumulator","currentValue","setStandForOrder","updateBuildingType","resetOriginalBuildingType","Global","brandPrimary","defineStyle","lineHeight","brandSecondary","buttonTheme","defineStyleConfig","variants","defaultProps","extendTheme","boxSizing","sizes","colors","brandColor","components","useIntl","buffer","Intl","NumberFormat","parts","silent","Patch","Post","Get","Put","isDate","getTime","findLatestDate","dates","latestDate","dateString","sortByDateAddedDescending","array","dateA","dateB","list","isBrokenIndexing","lst","arr","reorder","forceNormalized","minIndex","greatestIndex","isFullListOrdering","hasBrokenIndexing","removed","ghostStartIndex","ghostEndIndex","ghostArray","reverse","getListStyle","getItemStyle","splitExhibitionByDate","fetchApi","endpoint","baseUrl","appendTrailingSlash","saveBlobAsFile","blob","saveUrlAsFile","saveUrlToBlob","urlToBlob","fetch","res","toDataURL","revokeObjectURL","removeEventListener","addEventListener","transformed","roundToNearestQuarter","numberToRound","round","createProductFromPriceListItem","categorySource","route","obj","appendTimestampToUrl","urlObject","URLSearchParams","now"],"mappings":";6PAoBA,EAXA,WACE,MACE,WAAC,EAAAA,cAAc,EAACC,MAAO,SAAa,WAClC,UAAC,EAAAC,YAAY,KACb,UAAC,EAAAC,cAAc,KACf,UAAC,EAAAC,cAAc,KACf,UAAC,EAAAC,oBAAoB,OAG3B,uJCYA,EAxBkB,WAChB,IAAMC,EAAW,IAAI,EAAAC,QAAQ,CAAC,CAC5BC,GAAI,EAAAC,QAAQ,CACZC,KAAM,EAAAD,QAAQ,CACdE,YAAa,WAAM,CAAC,EAAAF,QAAQ,CAC9B,GAOA,MAAO,CACL,CACEG,SARe,IAAI,EAAAL,QAAQ,CAAC,CAC9BC,GAAI,EAAAK,WAAW,CACfH,KAAM,EAAAG,WAAW,CACjBF,YAAa,WAAM,CAAC,EAAAE,WAAW,CACjC,GAKIC,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUN,EACVQ,MAAO,UAAC,SAAe,IACzB,EACD,AACH,0JCtBaC,EAAY,WAOvB,MAAO,CACL,CACEH,SARgB,IAAI,EAAAL,QAAQ,CAAC,CAC/BC,GAAI,EAAAQ,WAAW,CACfN,KAAM,EAAAM,WAAW,CACjBL,YAAa,WAAM,CAAC,EAAAK,WAAW,CACjC,GAKIF,MAAO,UAAC,SAAe,IACzB,EACD,AACH,gLCXaG,EAAsB,SAACC,CAAI,EACtC,OAAQ,IACN,KAAKA,EAAKC,OAAO,CACf,MAAO,KAAAJ,SAAA,GACT,MAAKG,EAAKE,YAAY,CACpB,MAAO,eACT,MAAKF,EAAKG,OAAO,CACf,MAAO,eACT,MAAKH,EAAKI,gBAAgB,CACxB,MAAO,eACT,MAAKJ,EAAKK,kBAAkB,CAC1B,MAAO,eACT,MAAKL,EAAKM,WAAW,CACnB,MAAO,eACT,SACE,MAAO,EAAE,AACb,CACF,wJCJA,EAfsB,WAOpB,MAAO,CACL,CACEZ,SARgB,IAAI,EAAAL,QAAQ,CAAC,CAC/BC,GAAI,EAAAQ,WAAW,CACfN,KAAM,EAAAM,WAAW,CACjBL,YAAa,WAAM,CAAC,EAAAK,WAAW,CACjC,GAKIF,MAAO,UAAC,SAAe,IACzB,EACD,AACH,wJC4CA,EAnDuB,WACrB,IAAMW,EAAc,IAAI,EAAAlB,QAAQ,CAAC,CAC/BC,GAAI,EAAAQ,WAAW,CACfN,KAAM,EAAAM,WAAW,CACjBL,YAAa,WAAM,CAAC,EAAAK,WAAW,CACjC,GACMU,EAAmB,IAAI,EAAAnB,QAAQ,CAAC,CACpCC,GAAI,EAAAmB,kBAAkB,CACtBjB,KAAM,EAAAiB,kBAAkB,CACxBhB,YAAa,WAAM,CAAC,EAAAgB,kBAAkB,CACxC,GACMC,EAAkB,IAAI,EAAArB,QAAQ,CAAC,CACnCC,GAAI,EAAAqB,gBAAgB,CACpBnB,KAAM,EAAAmB,gBAAgB,CACtBlB,YAAa,WAAM,CAAC,EAAAkB,gBAAgB,CACtC,GACMvB,EAAW,IAAI,EAAAC,QAAQ,CAAC,CAC5BC,GAAI,EAAAC,QAAQ,CACZC,KAAM,EAAAD,QAAQ,CACdE,YAAa,WAAM,CAAC,EAAAF,QAAQ,CAC9B,GACMqB,EAAa,IAAI,EAAAvB,QAAQ,CAAC,CAC9BC,GAAI,EAAAK,WAAW,CACfH,KAAM,EAAAG,WAAW,CACjBF,YAAa,WAAM,CAAC,EAAAE,WAAW,CACjC,GAEA,MAAO,CACL,CACED,SAAUa,EACVX,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUc,EACVZ,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUgB,EACVd,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUN,EACVQ,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUkB,EACVhB,MAAO,UAAC,SAAe,IACzB,EACD,AACH,wJClBA,EAjCoB,WAClB,IAAMW,EAAc,IAAI,EAAAlB,QAAQ,CAAC,CAC/BC,GAAI,EAAAQ,WAAW,CACfN,KAAM,EAAAM,WAAW,CACjBL,YAAa,WAAM,CAAC,EAAAK,WAAW,CACjC,GACMU,EAAmB,IAAI,EAAAnB,QAAQ,CAAC,CACpCC,GAAI,EAAAmB,kBAAkB,CACtBjB,KAAM,EAAAiB,kBAAkB,CACxBhB,YAAa,WAAM,CAAC,EAAAgB,kBAAkB,CACxC,GACMC,EAAkB,IAAI,EAAArB,QAAQ,CAAC,CACnCC,GAAI,EAAAqB,gBAAgB,CACpBnB,KAAM,EAAAmB,gBAAgB,CACtBlB,YAAa,WAAM,CAAC,EAAAkB,gBAAgB,CACtC,GAEA,MAAO,CACL,CACEjB,SAAUa,EACVX,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUc,EACVZ,MAAO,UAAC,SAAe,IACzB,EACA,CACEF,SAAUgB,EACVd,MAAO,UAAC,SAAe,IACzB,EACD,AACH,wJCpBA,EAf6B,WAO3B,MAAO,CACL,CACEF,SARgB,IAAI,EAAAL,QAAQ,CAAC,CAC/BC,GAAI,EAAAQ,WAAW,CACfN,KAAM,EAAAM,WAAW,CACjBL,YAAa,WAAM,CAAC,EAAAK,WAAW,CACjC,GAKIF,MAAO,UAAC,SAAe,IACzB,EACD,AACH,qKC8BA,EAtCqC,SAACiB,CAAY,CAAUC,CAAC,EAC3D,IAAMC,EAA4B,KAAAC,aAAA,EAAc,EAAAC,KAAA,SAAc,GAAGjB,IAAI,EACnE,uCAGIkB,EAAiC,EAAE,CA8BzC,OA5BIH,GACFG,EAAUC,IAAI,CAAC,CACbzB,SAAU,IAAI,EAAAL,QAAQ,CAAC,CACrBC,GAAI,EAAA8B,iBAAiB,CACrB5B,KAAM,EAAA4B,iBAAiB,CACvB3B,YAAaqB,EAAE,EAAAM,iBAAiB,EAEhCC,WAAY,WACV,MAAQ,sBAAkC,OAAbR,EAAa,0BAC5C,CACF,GACAjB,MAAO,UAAC,SAAe,IACzB,GAGFsB,EAAUC,IAAI,CAAC,CACbzB,SAAU,IAAI,EAAAL,QAAQ,CAAC,CACrBC,GAAI,EAAAgC,aAAa,CACjB9B,KAAM,EAAA8B,aAAa,CACnB7B,YAAaqB,EAAE,EAAAQ,aAAa,EAE5BD,WAAY,WACV,MAAQ,sBAAkC,OAAbR,EAAa,sBAC5C,CACF,GACAjB,MAAO,UAAC,SAAe,IACzB,GAEOsB,CACT,0UCpBaK,EAAN,SAAMA,EAqBGC,CAA+B,MAE7B,EACG,EACS,EACL,EALwBC,EAAA,uDAAsC,EAAAC,gBAAgB,cArB1FH,GAET,aAAgB,OAAhB,QACA,aAAgB,SAAhB,QACA,aAAgB,WAAhB,QACA,aAAgB,WAAhB,QACA,aAAgB,WAAhB,QACA,aAAgB,aAAhB,QACA,aAAgB,YAAhB,QACA,aAAgB,iBAAhB,QACA,aAAgB,aAAhB,QACA,aAAgB,QAAhB,QACA,aAAgB,YAAhB,QACA,aAAgB,gBAAhB,QACA,aAAgB,UAAhB,QACA,aAAgB,gBAAhB,QACA,aAAgB,QAAhB,QACA,aAAgB,OAAhB,QAEA,aAAgB,UAAhB,QAGI,IAAI,CAACI,OAAO,CAAG,IAAIF,EAAY,CAC3BG,KAAM,AAAY,OAAZ,GAAAJ,MAAAA,EAAA,OAAAA,EAAQI,IAAI,AAAD,GAAX,aAAgB,GACtBC,QAAS,AAAe,OAAf,GAAAL,MAAAA,EAAA,OAAAA,EAAQK,OAAO,AAAD,GAAd,aAAmB,IAC5BC,iBAAkB,AAAwB,OAAxB,GAAAN,MAAAA,EAAA,OAAAA,EAAQM,gBAAgB,AAAD,GAAvB,cAClBC,YAAa,AAAmB,OAAnB,GAAAP,MAAAA,EAAA,OAAAA,EAAQO,WAAW,AAAD,GAAlB,aAAuB,UACpCC,MAAOR,MAAAA,EAAA,OAAAA,EAAQQ,KAAK,CACpBC,SAAUT,MAAAA,EAAA,OAAAA,EAAQS,QAAQ,CAC1BC,SAAUV,MAAAA,EAAA,OAAAA,EAAQU,QAAQ,CAC1BC,QAASX,MAAAA,EAAA,OAAAA,EAAQW,OAAO,CACxBC,YAAaZ,MAAAA,EAAA,OAAAA,EAAQY,WAAW,AACpC,GAEA,IAAI,CAACC,IAAI,CAAG,IAAI,EAAAC,WAAW,CAAC,IAAI,CAACX,OAAO,EACxC,IAAI,CAACY,MAAM,CAAG,IAAI,EAAAC,aAAa,CAAC,IAAI,CAACb,OAAO,EAC5C,IAAI,CAACjC,QAAQ,CAAG,IAAI,EAAA+C,eAAe,CAAC,IAAI,CAACd,OAAO,EAChD,IAAI,CAACe,QAAQ,CAAG,IAAI,EAAAC,eAAe,CAAC,IAAI,CAAChB,OAAO,EAChD,IAAI,CAACiB,QAAQ,CAAG,IAAI,EAAAC,eAAe,CAAC,IAAI,CAAClB,OAAO,EAChD,IAAI,CAACmB,UAAU,CAAG,IAAI,EAAAC,iBAAiB,CAAC,IAAI,CAACpB,OAAO,EACpD,IAAI,CAACqB,SAAS,CAAG,IAAI,EAAAC,gBAAgB,CAAC,IAAI,CAACtB,OAAO,EAClD,IAAI,CAACuB,cAAc,CAAG,IAAI,EAAAC,qBAAqB,CAAC,IAAI,CAACxB,OAAO,EAC5D,IAAI,CAACyB,UAAU,CAAG,IAAI,EAAAC,iBAAiB,CAAC,IAAI,CAAC1B,OAAO,EACpD,IAAI,CAAC2B,KAAK,CAAG,IAAI,EAAAC,YAAY,CAAC,IAAI,CAAC5B,OAAO,EAC1C,IAAI,CAAC6B,SAAS,CAAG,IAAI,EAAAC,gBAAgB,CAAC,IAAI,CAAC9B,OAAO,EAClD,IAAI,CAAC+B,aAAa,CAAG,IAAI,EAAAC,oBAAoB,CAAC,IAAI,CAAChC,OAAO,EAC1D,IAAI,CAACiC,OAAO,CAAG,IAAI,EAAAC,cAAc,CAAC,IAAI,CAAClC,OAAO,EAC9C,IAAI,CAACmC,aAAa,CAAG,IAAI,EAAAC,oBAAoB,CAAC,IAAI,CAACpC,OAAO,EAC1D,IAAI,CAACqC,KAAK,CAAG,IAAI,EAAAC,YAAY,CAAC,IAAI,CAACtC,OAAO,EAC1C,IAAI,CAAC3B,IAAI,CAAG,IAAI,EAAAkE,WAAW,CAAC,IAAI,CAACvC,OAAO,sKCrEnCwC,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAOGxC,CAA0B,CAAEyC,CAAmB,CAAEC,CAAe,2BAPnEF,iBAQCE,GAPV,mBAAgB,MAAhB,QACA,mBAAgB,SAAhB,QACA,mBAAgB,aAAhB,QACA,mBAAgB,OAAhB,QACA,mBAAgB,UAAhB,QAKI,EAAK7E,IAAI,CAAG,WACZ,EAAK8E,GAAG,CAAGF,EAASE,GAAG,CACvB,EAAKC,MAAM,CAAGH,EAASG,MAAM,CAC7B,EAAKC,UAAU,CAAGJ,EAASI,UAAU,CACrC,EAAKC,IAAI,CAAGL,EAASK,IAAI,CACzB,EAAK9C,OAAO,CAAGA,WAfVwC,WAAiBO,mLCGjBhD,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAEGF,CAAqB,qBAFxBE,eAGCF,iBAHDE,EAAA,EAYO,oBAAhB,SAA2BiD,CAA0B,EACjD,MAAO,cAAU,IAAI,CAACnD,MAAM,CAAEmD,EAClC,KAdSjD,GAAyB,EAAAkD,eAAe,yHCF/BA,EAAf,SAAeA,EAEUpD,CAAqB,eAF/BoD,sCAEUpD,MAAM,CAANA,yMCNnBqD,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAEGR,CAAe,2BAFlBQ,GAIL,eADMR,EAAO,EACR7E,IAAI,CAAG,8BAJPqF,EAAA,EAOE,sBAAX,WACI,MAAO,EACX,KATSA,WAAoBH,QAqB7B,cACA,cACA,cACS,cACA,cACT,cACA,cAwDM,EAAAI,OAAOC,WAAW,CA/DfC,EAAN,oBAAMA,EAULC,CAIS,MAeD,MAQA,0BArCHD,GACT,2CACA,2CACA,2CACA,aAAS,qBAAT,SACA,aAAS,qBAAT,SACA,2CACA,wDASU,EAAa,iBACb,EAAa,iBACb,EAAc,iBACd,EAAiB,EAAE,eACnB,EAAU,IAAIE,QAAW,SAACC,CAAO,CAAEC,CAAM,YACrC,EAAUD,aACV,EAASC,GAkBf,IAAMC,EAAW,SAACC,CAAa,GACvB,WAAM,cAAoB,cAAoB,KAGlD,UAAM,GAAenE,IAAI,CAACmE,EAC9B,EAcA,OAZAC,OAAOC,cAAc,CAACH,EAAU,aAAc,CAC1CI,IAAK,2BAAqB,GAC9B,GAEAF,OAAOC,cAAc,CAACH,EAAU,aAAc,CAC1CI,IAAK,2BAAqB,GAC9B,GAEAF,OAAOC,cAAc,CAACH,EAAU,cAAe,CAC3CI,IAAK,2BAAqB,GAC9B,GAEOR,EAnCW,SAACS,CAAK,GAChB,WAAM,cAAoB,cAAoB,gBAG5C,EAAa,IACb,OAAN,eAAM,KAAN,qBAAgBA,GACpB,EAEiB,SAACC,CAAM,GAChB,WAAM,cAAoB,cAAoB,gBAG5C,EAAa,IACb,OAAN,eAAM,KAAN,qBAAeA,GACnB,EAqBqCN,EACzC,kBA5DKL,EAAA,EA+DJ,IAAC,MAAL,WACO,MAAO,qBACd,IAEM,iBAAP,SACIY,CAAqE,CACrEC,CAAuE,EAEvE,MAAO,YAAI,CAAE,GAAQC,IAAI,CAACF,EAAaC,EAC3C,IAEO,kBAAP,SACIA,CAAqE,EAErE,MAAO,YAAI,CAAE,GAAQE,KAAK,CAACF,EAC/B,IAEO,oBAAP,SAAeG,CAA+B,EAC1C,MAAO,YAAI,CAAE,GAAQC,OAAO,CAACD,EACjC,IAEO,mBAAP,eAgBI,EAfA,IAAI,aAAI,CAAE,YAAc,IAAI,CAAE,YAAc,IAAI,CAAE,KAIlD,gBADM,EAAc,IAChB,YAAI,CAAE,GAAeE,MAAM,CAC3B,GAAI,KACK,uBAAL,QAAK,YAAuB,IAAI,CAAE,sBAA7B,4BACDZ,AADC,iGAGT,CAAE,MAAOa,EAAO,CACZC,QAAQC,IAAI,CAAC,8BAA+BF,GAC5C,MACJ,CAEJ,YAAI,CAAE,GAAeD,MAAM,CAAG,EACxB,OAAN,eAAI,CAAE,KAAN,uBAAI,CAAW,IAAIrB,EAAY,oBACnC,IAEW,sBAAX,WACI,MAAO,YAAI,CAAE,EACjB,KAzGSG,sFCHN,IAAMsB,EAAyB,CAClC1E,KAAM,GACNC,QAAS,IACTC,iBAAkB,GAClBC,YAAa,UACbC,MAAOuE,KAAAA,EACPtE,SAAUsE,KAAAA,EACVrE,SAAUqE,KAAAA,EACVpE,QAASoE,KAAAA,EACTnE,YAAamE,KAAAA,CACjB,sOChBaC,EAAY,SAAId,CAAK,EAC9B,OAAOA,MAAAA,CACX,EAEae,EAAW,SAACf,CAAK,EAC1B,MAAO,AAAiB,UAAjB,OAAOA,CAClB,EAEagB,EAAoB,SAAChB,CAAK,EACnC,OAAOe,EAASf,IAAUA,AAAU,KAAVA,CAC9B,EAEaiB,EAAS,SAACjB,CAAK,EACxB,MACI,AAAiB,UAAjB,OAAOA,GACP,AAAsB,UAAtB,OAAOA,EAAMkB,IAAI,EACjB,AAAwB,YAAxB,OAAOlB,EAAMmB,MAAM,EACnB,AAA6B,YAA7B,OAAOnB,EAAMoB,WAAW,EACxB,AAA6B,YAA7B,OAAOpB,EAAMqB,WAAW,EACxB,AAAkC,UAAlC,OAAOrB,EAAMqB,WAAW,CAACvH,IAAI,EAC7B,gBAAgBwH,IAAI,CAACtB,EAAMqB,WAAW,CAACvH,IAAI,GAC3C,gBAAgBwH,IAAI,CAACtB,CAAK,CAACZ,OAAOC,WAAW,CAAC,CAEtD,EAUakC,EAAS,SAACC,CAAG,EACtB,GAAI,CACA,OAAOC,KAAKD,EAChB,CAAE,MAAOE,EAAK,CAEV,OAAOC,OAAOC,IAAI,CAACJ,GAAKK,QAAQ,CAAC,SACrC,CACJ,EAEaC,EAAiB,SAACC,CAAM,EACjC,IAAMC,EAAe,EAAE,CAEjBC,EAAS,SAACC,CAAG,CAAUlC,CAAK,EAC9BgC,EAAGvG,IAAI,CAAE,GAA6B,OAA3B0G,mBAAmBD,GAAK,KAAqC,OAAlCC,mBAAmBC,OAAOpC,KACpE,EAEMqC,EAAU,SAACH,CAAG,CAAUlC,CAAK,EAC3Bc,EAAUd,KACNsC,MAAMC,OAAO,CAACvC,GACdA,EAAMwC,OAAO,CAAC,SAAAC,CAAA,EACVJ,EAAQH,EAAKO,EACjB,GACO,AAAiB,UAAjB,OAAOzC,EACdH,OAAO6C,OAAO,CAAC1C,GAAOwC,OAAO,CAAC,+BAAEG,EAAA,KAAGF,EAAA,KAC/BJ,EAAS,GAAS,OAAPH,EAAI,KAAK,OAAFS,EAAE,KAAIF,EAC5B,GAEAR,EAAOC,EAAKlC,GAGxB,QAMA,CAJAH,OAAO6C,OAAO,CAACX,GAAQS,OAAO,CAAC,+BAC3BH,EAD6B,KAAK,KAEtC,GAEIL,EAAGxB,MAAM,CAAG,GACJ,IAAgB,OAAbwB,EAAGY,IAAI,CAAC,MAGhB,EACX,EAEMC,EAAS,SAAC/G,CAAM,CAAiBmD,CAAO,EAC1C,IAAM6D,EAAUhH,EAAOY,WAAW,EAAIqG,UAEhCC,EAAO/D,EAAQL,GAAG,CACnBqE,OAAO,CAAC,gBAAiBnH,EAAOK,OAAO,EACvC8G,OAAO,CAAC,WAAY,SAACC,CAAS,CAAUC,CAAK,MACtC,QAAJ,AAAI,CAAY,OAAZ,GAAAlE,EAAQ+D,IAAI,AAAD,GAAX,oBAAcI,cAAc,CAACD,EAAK,EAC3BL,EAAQV,OAAOnD,EAAQ+D,IAAI,CAACG,EAAM,GAEtCD,CACX,GAEEtE,EAAO,GAAgB,OAAd9C,EAAOI,IAAI,EAAQ,OAAL8G,UAC7B,AAAI/D,EAAQoE,KAAK,CACL,GAAQ,OAANzE,GAAoC,OAA9BkD,EAAe7C,EAAQoE,KAAK,GAEzCzE,CACX,EAEa0E,EAAc,SAACrE,CAAO,EAC/B,GAAIA,EAAQsE,QAAQ,CAAE,CAClB,IAAMA,EAAW,GAAI,MAEflB,EAAU,SAACH,CAAG,CAAUlC,CAAK,EAC3Be,EAASf,IAAUiB,EAAOjB,GAC1BuD,EAAStB,MAAM,CAACC,EAAKlC,GAErBuD,EAAStB,MAAM,CAACC,EAAKsB,KAAKC,SAAS,CAACzD,GAE5C,EAYA,OAVAH,OAAO6C,OAAO,CAACzD,EAAQsE,QAAQ,EAC1BG,MAAM,CAAC,sCAAgB5C,GAAd,KAAG,SACZ0B,OAAO,CAAC,+BAAEN,EAAA,KAAKlC,EAAA,KACRsC,MAAMC,OAAO,CAACvC,GACdA,EAAMwC,OAAO,CAAC,SAAAC,CAAA,SAAKJ,EAAQH,EAAKO,KAEhCJ,EAAQH,EAAKlC,EAErB,GAEGuD,CACX,CAEJ,EAIO,IAAM9D,KAAU,iBAAUR,CAAO,CAAqB0E,CAAQ,uCACjE,AAAI,AAAoB,YAApB,OAAOA,EACA,GAACA,EAAyB1E,IAE9B,GAAA0E,IACX,YALiC1E,CAAO,CAAqB0E,CAAQ,mCAO9D,IAAMC,KAAa,iBAAO9H,CAAM,CAAiBmD,CAAO,CAAqBsE,CAAQ,MAClFM,EACAC,EACAC,EACAC,EACAC,EAEAC,EAiBIC,wDAvBI,SAAM1E,EAAQR,EAASnD,EAAOQ,KAAK,UAChC,OADXuH,EAAQ,SACG,GAAMpE,EAAQR,EAASnD,EAAOS,QAAQ,UACtC,OADXuH,EAAW,SACA,GAAMrE,EAAQR,EAASnD,EAAOU,QAAQ,UAC7B,OADpBuH,EAAW,SACS,GAAMtE,EAAQR,EAASnD,EAAOW,OAAO,UAwB/D,GAxBMuH,EAAoB,SACpBC,EAAc,AAAgC,YAAhC,MAAOV,CAAAA,MAAAA,EAAA,OAAAA,EAAUK,UAAU,AAAD,GAAoBL,CAAAA,MAAAA,EAAA,OAAAA,EAAUK,UAAU,EAAC,GAAK,CAAC,EAEvFM,EAAUrE,OAAO6C,OAAO,CAAC,SAC3B0B,OAAQ,oBACLJ,EACA/E,EAAQiF,OAAO,CACfD,IAENP,MAAM,CAAC,sCAAgB5C,GAAd,KAAG,SACZuD,MAAM,CAAC,SAACH,CAAO,CAAE,CAAT,qBAAUhC,EAAA,KAAKlC,EAAA,WAAY,mBAC7BkE,GACH,WAAChC,EAAME,OAAOpC,MACd,CAAC,GAEDgB,EAAkB6C,IAClBK,CAAAA,EAAQ,aAAgB,CAAI,UAAe,OAANL,EAAK,EAG1C7C,EAAkB8C,IAAa9C,EAAkB+C,KAC3CI,EAAc5C,EAAQ,GAAc,OAAZuC,EAAS,KAAY,OAATC,IAC1CG,EAAQ,aAAgB,CAAI,SAAoB,OAAZC,IAGpClF,EAAQF,IAAI,EACZ,GAAIE,EAAQqF,SAAS,CACjBJ,CAAO,CAAC,eAAe,CAAGjF,EAAQqF,SAAS,MACxC,GAAIrD,EAAOhC,EAAQF,IAAI,EAC1BmF,CAAO,CAAC,eAAe,CAAGjF,EAAQF,IAAI,CAACmC,IAAI,EAAI,gCAC5C,GAAIH,EAAS9B,EAAQF,IAAI,EAC5BmF,CAAO,CAAC,eAAe,CAAG,kBACvB,GAAI,CA5IRlE,CAAAA,AA4IoBf,EAAQF,IAAI,YA5If,KA6IhBmF,CAAO,CAAC,eAAe,CAAG,mBAIlC,MAAO,GAAAA,KACX,YAzCiCpI,CAAM,CAAiBmD,CAAO,CAAqBsE,CAAQ,mCA2C/EgB,EAAiB,SAACtF,CAAO,EAClC,GAAIA,EAAQF,IAAI,CACZ,OAAOE,EAAQF,IAAI,AAG3B,EAEO,IAAMyF,KAAc,iBACvB1I,CAAM,CACNmD,CAAO,CACPL,CAAG,CACHG,CAAI,CACJwE,CAAQ,CACRW,CAAO,CACPvE,CAAQ,CACR8E,CAAW,MAELC,EAEAC,EAaGlE,EACCmE,wDAhBJF,EAAS,4BAAwB,GAEjCC,EAAoC,CACtC/F,IAAAA,EACAsF,QAAAA,EACAW,KAAM9F,MAAAA,EAAAA,EAAQwE,EACduB,OAAQ7F,EAAQ6F,MAAM,CACtBC,gBAAiBjJ,EAAOM,gBAAgB,CACxC4I,YAAaN,EAAOb,KAAK,AAC7B,EAEAlE,EAAS,kBAAM+E,EAAOO,MAAM,CAAC,kDAGlB,gCAAMR,EAAYxI,OAAO,CAAC0I,WAAjC,MAAO,oBAGP,GAAIC,AADEA,CAAAA,EADDnE,EAAA,QACkB,EACR/B,QAAQ,CACnB,MAAO,GAAAkG,EAAWlG,QAAQ,CAE9B,OAAM+B,qBAEd,YA/BI3E,CAAM,CACNmD,CAAO,CACPL,CAAG,CACHG,CAAI,CACJwE,CAAQ,CACRW,CAAO,CACPvE,CAAQ,CACR8E,CAAW,mCA0BFS,EAAoB,SAACxG,CAAQ,CAAsByG,CAAc,EAC1E,GAAIA,EAAgB,CAChB,IAAMC,EAAU1G,EAASwF,OAAO,CAACiB,EAAe,CAChD,GAAIpE,EAASqE,GACT,OAAOA,CAEf,CAEJ,EAEaC,EAAkB,SAAC3G,CAAQ,EACpC,GAAIA,AAAoB,MAApBA,EAASG,MAAM,CACf,OAAOH,EAASmG,IAAI,AAG5B,EAEaS,EAAkB,SAACrG,CAAO,CAAqBsG,CAAM,EAY9D,IAAM9E,EAAQ+E,AAXyB,SACnC,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,wBACL,IAAK,cACL,IAAK,uBACFvG,EAAQuG,MAAM,CAGD,CAACD,EAAO1G,MAAM,CAAC,CACnC,GAAI4B,EACA,MAAM,IAAI,EAAAhC,QAAQ,CAACQ,EAASsG,EAAQ9E,GAGxC,GAAI,CAAC8E,EAAOE,EAAE,CAAE,CACZ,IAAoB,EACI,EADlBC,EAAc,AAAa,OAAb,GAAAH,EAAO1G,MAAM,AAAD,GAAZ,aAAiB,UAC/B8G,EAAkB,AAAiB,OAAjB,GAAAJ,EAAOzG,UAAU,AAAD,GAAhB,aAAqB,UACvC8G,EAAa,WACf,GAAI,CACA,OAAOpC,KAAKC,SAAS,CAAC8B,EAAOxG,IAAI,CAAE,KAAM,EAC7C,CAAE,MAAO8G,EAAG,CACR,MACJ,CACJ,GAEA,OAAM,IAAI,EAAApH,QAAQ,CAACQ,EAASsG,EACvB,0BAAsD,OAA7BG,EAAY,mBAA2C,OAA1BC,EAAgB,YAAoB,OAAVC,GAEzF,CACJ,EAUa3J,EAAU,SAAIH,CAAM,CAAiBmD,CAAO,QAAqBwF,EAAA,uDAA6B,SAAK,CAC5G,OAAO,IAAI,EAAAnF,iBAAiB,IAAC,iBAAOG,CAAO,CAAEC,CAAM,CAAEC,CAAQ,MAE/Cf,EACA2E,EACAxE,EACAmF,EAGIxF,EACAoH,EACAX,EAEAI,wDAPM,6BAHV3G,EAAMiE,EAAO/G,EAAQmD,GACrBsE,EAAWD,EAAYrE,GACvBF,EAAOwF,EAAetF,GACZ,GAAM2E,EAAW9H,EAAQmD,EAASsE,cAA5CW,EAAU,SAEXvE,EAASoG,WAAW,CAArB,YACiB,SAAMvB,EAAe1I,EAAQmD,EAASL,EAAKG,EAAMwE,EAAUW,EAASvE,EAAU8E,eA9PrF5F,EA+PJiH,EAAeT,EADf3G,EAAW,UAEXyG,EAAiBD,EAAkBxG,EAAUO,EAAQkG,cAAc,EAUzEG,EAAgBrG,EARVsG,EAAoB,CACtB3G,IAAAA,EACA6G,GAnQT5G,CADeA,EAoQQH,EAASG,MAAM,GAnQ5B,KAAOA,EAAS,IAoQjBA,OAAQH,EAASG,MAAM,CACvBC,WAAYJ,EAASI,UAAU,CAC/BC,KAAMoG,MAAAA,EAAAA,EAAkBW,CAC5B,GAIArG,EAAQ8F,EAAOxG,IAAI,6CAGvBW,EADK,mCAGb,YA3BoCD,CAAO,CAAEC,CAAM,CAAEC,CAAQ,mCA4BjE,kbCpTa/C,EAAN,oBAAMA,EAEmBoJ,CAA4B,eAF/CpJ,2CAEmBoJ,WAAW,CAAXA,gBAFnBpJ,EAAA,EAQF,0BAAP,SAAqB,CAIpB,MAHGqJ,EADiB,EACjBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,cACLG,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,0BAAP,SAAqB,CAIpB,MAHGS,EADiB,EACjBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,cACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,gCAAP,WACI,OAAO,IAAI,CAAC0B,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,qBACT,EACJ,KAnDShC,uICGAE,EAAN,oBAAMA,EACiBkJ,CAA4B,eAD7ClJ,2CACiBkJ,WAAW,CAAXA,gBADjBlJ,EAAA,EAOJ,kCAAP,WAGE,OAAO,IAAI,CAACkJ,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,MACRlG,IAAK,wBACL4G,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,mCAAP,SAA8B,CAI7B,MAHCU,EAD4B,EAC5BA,aAAa,CAMb,OAAO,IAAI,CAACF,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,MACRlG,IAAK,yCACLoE,KAAM,CACJkD,cAAeA,CACjB,EACAV,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,iCAAP,SAA4B,CAQ3B,MAPCW,EAD0B,EAC1BA,cAAc,CAAd,EAD0B,EAE1BC,OAAO,CACPH,EAH0B,EAG1BA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,sCACLoE,KAAM,CACJmD,eAAgBA,CAClB,EACA9C,MAAO,CACL+C,QAdJ,WAAU,MAeR,EACArH,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,2CAAP,SAAsC,CAIrC,MAHCrK,EADoC,EACpCA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,+CACLoE,KAAM,CACJ7H,aAAcA,CAChB,EACAqK,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,gCAAP,SAA2B,CAI1B,MAHCrK,EADyB,EACzBA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,oCACLoE,KAAM,CACJ7H,aAAcA,CAChB,EACAqK,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,mCAAP,WACE,OAAO,IAAI,CAACQ,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,wBACL4G,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,kCAAP,WACE,OAAO,IAAI,CAACQ,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,sBACL4G,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,6BAAP,SAAwB,CAMvB,MALCa,EADsB,EACtBA,OAAO,CACPJ,EAFsB,EAEtBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,2BACLoE,KAAM,CACJqD,QAASA,CACX,EACAtH,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,uCAAP,SAAkC,CAIjC,MAHCS,EADgC,EAChCA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,6BACLG,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACN,IAAM,aACR,CACF,EACF,IAMO,sCAAP,SAAiC,CAMhC,MALCc,EAD+B,EAC/BA,MAAM,CACNC,EAF+B,EAE/BA,SAAS,CAKT,OAAO,IAAI,CAACP,WAAW,CAAC/J,OAAO,CAAC,CAC9B6I,OAAQ,OACRlG,IAAK,iDACLoE,KAAM,CACJsD,OAAQA,EACRC,UAAWA,CACb,EACAf,OAAQ,CACN,IAAM,aACR,CACF,EACF,KAjNW1I,yICCAC,EAAN,oBAAMA,EAEmBiJ,CAA4B,eAF/CjJ,2CAEmBiJ,WAAW,CAAXA,gBAFnBjJ,EAAA,EAQF,wCAAP,WACI,OAAO,IAAI,CAACiJ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8BACL4G,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,0BAAP,SAAqB,CAcpB,MAbGgB,EADiB,EACjBA,UAAU,CACVC,EAFiB,EAEjBA,QAAQ,CACRC,EAHiB,EAGjBA,YAAY,CACZC,EAJiB,EAIjBA,gBAAgB,CAChBC,EALiB,EAKjBA,MAAM,CACN1I,EANiB,EAMjBA,OAAO,CASP,OAAO,IAAI,CAAC8H,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,cACLyE,MAAO,CACH,WAAcmD,EACd,SAAYC,EACZ,aAAgBC,EAChB,iBAAoBC,EACpB,OAAUC,EACV,QAAW1I,CACf,CACJ,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHG+H,EADkB,EAClBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,cACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,0BAAP,SAAqB,CAIpB,MAHG2B,EADiB,EACjBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,cACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,mCAAP,SAA8B,CAQ7B,MAPGnJ,EAD0B,EAC1BA,YAAY,CACZ6B,EAF0B,EAE1BA,QAAQ,CACR0J,EAH0B,EAG1BA,YAAY,CAMZ,OAAO,IAAI,CAACV,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,yBACLyE,MAAO,CACH,aAAgBlI,EAChB,SAAY6B,EACZ,aAAgB0J,CACpB,CACJ,EACJ,IAMO,mCAAP,SAA8B,CAI7B,MAHG5M,EAD0B,EAC1BA,IAAI,CAIJ,OAAO,IAAI,CAACkM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,+BACLoE,KAAM,CACF,KAAQlJ,CACZ,EACA0L,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,0CAAP,WACI,OAAO,IAAI,CAACQ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,gCACL4G,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,gCAAP,SAA2B,CAQ1B,MAPG1L,EADuB,EACvBA,IAAI,CACJyJ,EAFuB,EAEvBA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,2BACLoE,KAAM,CACF,KAAQlJ,CACZ,EACAyJ,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,yCAAP,SAAoC,CAMnC,MALGf,EADgC,EAChCA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,8BACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,qCAAP,SAAgC,CAI/B,MAHG2B,EAD4B,EAC5BA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,0BACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KA1MSvH,yICLAE,EAAN,oBAAMA,EAEmB+I,CAA4B,eAF/C/I,2CAEmB+I,WAAW,CAAXA,gBAFnB/I,EAAA,EAQF,wBAAP,WACI,OAAO,IAAI,CAAC+I,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,WACT,EACJ,KAbS3B,yICAAE,EAAN,oBAAMA,EAEmB6I,CAA4B,eAF/C7I,2CAEmB6I,WAAW,CAAXA,gBAFnB7I,EAAA,EAQF,iCAAP,WACI,OAAO,IAAI,CAAC6I,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,sBACL4G,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,kCAAP,SAA6B,CAQ5B,MAPGqB,EADyB,EACzBA,QAAQ,CACRC,EAFyB,EAEzBA,MAAM,CACNC,EAHyB,EAGzBA,kBAAkB,CAMlB,OAAO,IAAI,CAACf,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,sBACLyE,MAAO,CACH,SAAYwD,EACZ,OAAUC,EACV,mBAAsBC,CAC1B,EACAvB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,iCAAP,SAA4B,CAU3B,MATGwB,EADwB,EACxBA,UAAU,CACVH,EAFwB,EAExBA,QAAQ,CACRC,EAHwB,EAGxBA,MAAM,CACNC,EAJwB,EAIxBA,kBAAkB,CAOlB,OAAO,IAAI,CAACf,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mCACLoE,KAAM,CACF,WAAcgE,CAClB,EACA3D,MAAO,CACH,SAAYwD,EACZ,OAAUC,EACV,mBAAsBC,CAC1B,EACAvB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,oCAAP,SAA+B,CAI9B,MAHGwB,EAD2B,EAC3BA,UAAU,CAIV,OAAO,IAAI,CAAChB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,mCACLoE,KAAM,CACF,WAAcgE,CAClB,EACAxB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,KAhGSrI,2ICEAE,EAAN,oBAAMA,EAEmB2I,CAA4B,eAF/C3I,2CAEmB2I,WAAW,CAAXA,gBAFnB3I,EAAA,EAQF,8CAAP,WACI,OAAO,IAAI,CAAC2I,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,oCACL4G,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,yCAAP,SAAoC,CAUnC,MATGoB,EADgC,EAChCA,MAAM,CACN1F,EAFgC,EAEhCA,IAAI,CACJsF,EAHgC,EAGhCA,UAAU,CACVC,EAJgC,EAIhCA,QAAQ,CAOR,OAAO,IAAI,CAACT,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,+BACLyE,MAAO,CACH,OAAUuD,EACV,KAAQ1F,EACR,WAAcsF,EACd,SAAYC,CAChB,CACJ,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHG7M,EADkB,EAClBA,EAAE,CAIF,OAAO,IAAI,CAACoM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,oBACLoE,KAAM,CACF,GAAMpJ,CACV,CACJ,EACJ,IAMO,gCAAP,SAA2B,CAQ1B,MAPGA,EADuB,EACvBA,EAAE,CACF2J,EAFuB,EAEvBA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,yBACLoE,KAAM,CACF,GAAMpJ,CACV,EACA2J,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,4BAAP,SAAuB,CAItB,MAHG2B,EADmB,EACnBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,eACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,2BAAP,SAAsB,CAMrB,MALGnJ,EADkB,EAClBA,YAAY,CACZ8K,EAFkB,EAElBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8BACLoE,KAAM,CACF,aAAgB7H,CACpB,EACA4D,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KA7HSjH,0ICKAE,EAAN,oBAAMA,EAEmByI,CAA4B,eAF/CzI,2CAEmByI,WAAW,CAAXA,gBAFnBzI,EAAA,EAQF,8BAAP,SAAyB,CAQxB,MAPGqJ,EADqB,EACrBA,MAAM,CACNJ,EAFqB,EAErBA,UAAU,CACVC,EAHqB,EAGrBA,QAAQ,CAMR,OAAO,IAAI,CAACT,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mBACLyE,MAAO,CACH,OAAUuD,EACV,WAAcJ,EACd,SAAYC,CAChB,CACJ,EACJ,IAMO,0BAAP,SAAqB,CAMpB,MALG7M,EADiB,EACjBA,EAAE,CACFuB,EAFiB,EAEjBA,YAAY,CAKZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mBACLoE,KAAM,CACF,GAAMpJ,CACV,EACAyJ,MAAO,CACH,aAAgBlI,CACpB,CACJ,EACJ,IAMO,0BAAP,SAAqB,CAMpB,MALGvB,EADiB,EACjBA,EAAE,CACFqM,EAFiB,EAEjBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mBACLoE,KAAM,CACF,GAAMpJ,CACV,EACAmF,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHG2C,EADkB,EAClBA,KAAK,CAIL,OAAO,IAAI,CAACjB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,cACLyE,MAAO,CACH,MAAS4D,CACb,CACJ,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHGhB,EADkB,EAClBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,cACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,oCAAP,SAA+B,CAQ9B,MAPGnJ,EAD2B,EAC3BA,YAAY,CACZyL,EAF2B,EAE3BA,MAAM,CAAN,EAF2B,EAG3BM,mBAAmB,CAMnB,OAAO,IAAI,CAAClB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,yBACLyE,MAAO,CACH,aAAgBlI,EAChB,OAAUyL,EACV,oBAZR,YAAsB,CAalB,EACApB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,0CAAP,SAAqC,CAQpC,MAPGrK,EADiC,EACjCA,YAAY,CACZoI,EAFiC,EAEjCA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,8CACLoE,KAAM,CACF,aAAgB7H,CACpB,EACAoI,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,8BAAP,SAAyB,CAMxB,MALG1K,EADqB,EACrBA,EAAE,CACFqM,EAFqB,EAErBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wBACLoE,KAAM,CACF,GAAMpJ,CACV,EACAmF,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,wCAAP,SAAmC,CAMlC,MALGnJ,EAD+B,EAC/BA,YAAY,CACZgM,EAF+B,EAE/BA,WAAW,CAKX,OAAO,IAAI,CAACnB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,uDACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAegM,CACnB,CACJ,EACJ,IAMO,8CAAP,SAAyC,CAQxC,MAPGA,EADqC,EACrCA,WAAW,CACXhM,EAFqC,EAErCA,YAAY,CACZ8K,EAHqC,EAGrCA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,gEACLoE,KAAM,CACF,YAAemE,EACf,aAAgBhM,CACpB,EACA4D,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,oCAAP,SAA+B,CAM9B,MALG2B,EAD2B,EAC3BA,WAAW,CACXlB,EAF2B,EAE3BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,sCACLoE,KAAM,CACF,YAAemE,CACnB,EACApI,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,mCAAP,SAA8B,CAM7B,MALG4B,EAD0B,EAC1BA,UAAU,CACVnB,EAF0B,EAE1BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,qCACLoE,KAAM,CACF,WAAcoE,CAClB,EACArI,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,sCAAP,SAAiC,CAIhC,MAHG4B,EAD6B,EAC7BA,UAAU,CAIV,OAAO,IAAI,CAACpB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,qCACLoE,KAAM,CACF,WAAcoE,CAClB,EACA5B,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,iDAAP,SAA4C,CAM3C,MALG4B,EADwC,EACxCA,UAAU,CACVjM,EAFwC,EAExCA,YAAY,CAKZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,gEACLoE,KAAM,CACF,WAAcoE,EACd,aAAgBjM,CACpB,EACAqK,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,2CAAP,SAAsC,CAIrC,MAHGrK,EADkC,EAClCA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,gDACLoE,KAAM,CACF,aAAgB7H,CACpB,EACAqK,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,sDAAP,SAAiD,CAQhD,MAPG2B,EAD6C,EAC7CA,WAAW,CACXhM,EAF6C,EAE7CA,YAAY,CACZvB,EAH6C,EAG7CA,EAAE,CAMF,OAAO,IAAI,CAACoM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,+EACLoE,KAAM,CACF,YAAemE,EACf,aAAgBhM,EAChB,GAAMvB,CACV,EACA4L,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,oCAAP,SAA+B,CAM9B,MALGrK,EAD2B,EAC3BA,YAAY,CACZ8K,EAF2B,EAE3BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wCACLoE,KAAM,CACF,aAAgB7H,CACpB,EACA4D,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KA1YS/G,+ICNAE,EAAN,oBAAMA,EAEmBuI,CAA4B,eAF/CvI,2CAEmBuI,WAAW,CAAXA,gBAFnBvI,EAAA,EAQF,8BAAP,WACI,OAAO,IAAI,CAACuI,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mBACL4G,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,4CAAP,SAAuC,CAItC,MAHG6B,EADmC,EACnCA,SAAS,CAIT,OAAO,IAAI,CAACrB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,kCACLyE,MAAO,CACH,UAAagE,CACjB,CACJ,EACJ,IAMO,2CAAP,SAAsC,CAIrC,MAHGvD,EADkC,EAClCA,QAAQ,CAIR,OAAO,IAAI,CAACkC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,iCACLyE,MAAO,CACH,SAAYS,CAChB,CACJ,EACJ,IAMO,2CAAP,SAAsC,CAIrC,MAHGmC,EADkC,EAClCA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,iCACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,uCAAP,SAAkC,CAIjC,MAHGgD,EAD8B,EAC9BA,IAAI,CAIJ,OAAO,IAAI,CAACtB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,6BACLyE,MAAO,CACH,KAAQiE,CACZ,CACJ,EACJ,IAMO,uCAAP,SAAkC,CAIjC,MAHGC,EAD8B,EAC9BA,IAAI,CAIJ,OAAO,IAAI,CAACvB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,6BACLyE,MAAO,CACH,KAAQkE,CACZ,CACJ,EACJ,IAMO,uCAAP,SAAkC,CAMjC,MALGhE,EAD8B,EAC9BA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,6BACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,sDAAP,SAAiD,CAQhD,MAPG8B,EAD6C,EAC7CA,OAAO,CACP7C,EAF6C,EAE7CA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,wDACLoE,KAAM,CACF,QAAWoD,CACf,EACA7C,SAAUA,EACVe,UAAW,sBACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,qDAAP,SAAgD,CAM/C,MALGY,EAD4C,EAC5CA,OAAO,CACPxH,EAF4C,EAE5CA,GAAG,CAKH,OAAO,IAAI,CAACoH,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,uDACLoE,KAAM,CACF,QAAWoD,CACf,EACA/C,MAAO,CACH,IAAOzE,CACX,EACA4G,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,6CAAP,WACI,OAAO,IAAI,CAACQ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,oCACL4G,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,KAlMS/H,2ICEAE,EAAN,oBAAMA,EAEmBqI,CAA4B,eAF/CrI,2CAEmBqI,WAAW,CAAXA,gBAFnBrI,EAAA,EAQF,yBAAP,WACI,OAAO,IAAI,CAACqI,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,aACL4G,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,wBAAP,SAAmB,CAIlB,MAHGS,EADe,EACfA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,WACLG,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,uBAAP,SAAkB,CAMjB,MALGgC,EADc,EACdA,SAAS,CACTvB,EAFc,EAEdA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,uBACLoE,KAAM,CACF,UAAawE,CACjB,EACAzI,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,+BAAP,SAA0B,CAMzB,MALGjC,EADsB,EACtBA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,mBACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,qCAAP,SAAgC,CAI/B,MAHGkD,EAD4B,EAC5BA,SAAS,CAIT,OAAO,IAAI,CAACxB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,uCACLoE,KAAM,CACF,UAAawE,CACjB,EACAhC,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,2CAAP,SAAsC,CAMrC,MALGjC,EADkC,EAClCA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,iCACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,qCAAP,SAAgC,CAI/B,MAHG2B,EAD4B,EAC5BA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,0BACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,oCAAP,SAA+B,CAM9B,MALGmD,EAD2B,EAC3BA,aAAa,CACbxB,EAF2B,EAE3BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0CACLoE,KAAM,CACF,cAAiByE,CACrB,EACA1I,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KAjKS3G,sICMAE,EAAN,oBAAMA,EAEmBmI,CAA4B,eAF/CnI,2CAEmBmI,WAAW,CAAXA,gBAFnBnI,EAAA,EAQF,sBAAP,SAAiB,CAUhB,MATG1C,EADa,EACbA,YAAY,CACZuM,EAFa,EAEbA,WAAW,CACXP,EAHa,EAGbA,WAAW,CACXP,EAJa,EAIbA,MAAM,CAON,OAAO,IAAI,CAACZ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,UACLyE,MAAO,CACH,aAAgBlI,EAChB,YAAeuM,EACf,YAAeP,EACf,OAAUP,CACd,EACApB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,uBAAP,SAAkB,CAIjB,MAHGS,EADc,EACdA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,UACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,sBAAP,SAAiB,CAIhB,MAHG2B,EADa,EACbA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,UACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,iCAAP,SAA4B,CAM3B,MALG6C,EADwB,EACxBA,WAAW,CACXlB,EAFwB,EAExBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,mCACLoE,KAAM,CACF,YAAemE,CACnB,EACApI,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,uBAAP,SAAkB,CAIjB,MAHG+B,EADc,EACdA,OAAO,CAIP,OAAO,IAAI,CAACL,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,oBACLoE,KAAM,CACF,QAAWqD,CACf,EACAb,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,yBAAP,SAAoB,CAInB,MAHGa,EADgB,EAChBA,OAAO,CAIP,OAAO,IAAI,CAACL,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,oBACLoE,KAAM,CACF,QAAWqD,CACf,CACJ,EACJ,IAMO,yBAAP,SAAoB,CAInB,MAHGA,EADgB,EAChBA,OAAO,CAIP,OAAO,IAAI,CAACL,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wBACLoE,KAAM,CACF,QAAWqD,CACf,EACAb,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,kCAAP,SAA6B,CAQ5B,MAPGrK,EADyB,EACzBA,YAAY,CACZkL,EAFyB,EAEzBA,OAAO,CACPJ,EAHyB,EAGzBA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,+CACLoE,KAAM,CACF,aAAgB7H,EAChB,QAAWkL,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,iCAAP,SAA4B,CAU3B,MATGnJ,EADwB,EACxBA,YAAY,CACZkL,EAFwB,EAExBA,OAAO,CACPsB,EAHwB,EAGxBA,WAAW,CACX1B,EAJwB,EAIxBA,WAAW,CAOX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,+CACLoE,KAAM,CACF,aAAgB7H,EAChB,QAAWkL,CACf,EACAhD,MAAO,CACH,YAAesE,CACnB,EACA5I,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,oCAAP,SAA+B,CAQ9B,MAPGnJ,EAD2B,EAC3BA,YAAY,CACZkL,EAF2B,EAE3BA,OAAO,CACPsB,EAH2B,EAG3BA,WAAW,CAMX,OAAO,IAAI,CAAC3B,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,+CACLoE,KAAM,CACF,aAAgB7H,EAChB,QAAWkL,CACf,EACAhD,MAAO,CACH,YAAesE,CACnB,CACJ,EACJ,IAMO,8BAAP,SAAyB,CAIxB,MAHGtB,EADqB,EACrBA,OAAO,CAIP,OAAO,IAAI,CAACL,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,0BACLoE,KAAM,CACF,QAAWqD,CACf,CACJ,EACJ,IAMO,4BAAP,SAAuB,CAMtB,MALGA,EADmB,EACnBA,OAAO,CACPqB,EAFmB,EAEnBA,WAAW,CAKX,OAAO,IAAI,CAAC1B,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,2BACLoE,KAAM,CACF,QAAWqD,CACf,EACAhD,MAAO,CACH,YAAeqE,CACnB,CACJ,EACJ,IAMO,mDAAP,SAA8C,CAM7C,MALGrB,EAD0C,EAC1CA,OAAO,CACPJ,EAF0C,EAE1CA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,oDACLoE,KAAM,CACF,QAAWqD,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,uCAAP,SAAkC,CAMjC,MALG+B,EAD8B,EAC9BA,OAAO,CACPJ,EAF8B,EAE9BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,sCACLoE,KAAM,CACF,QAAWqD,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,sCAAP,SAAiC,CAMhC,MALG+B,EAD6B,EAC7BA,OAAO,CACPJ,EAF6B,EAE7BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,sCACLoE,KAAM,CACF,QAAWqD,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,yCAAP,SAAoC,CAInC,MAHG+B,EADgC,EAChCA,OAAO,CAIP,OAAO,IAAI,CAACL,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,sCACLoE,KAAM,CACF,QAAWqD,CACf,CACJ,EACJ,IAMO,uCAAP,SAAkC,CAMjC,MALGA,EAD8B,EAC9BA,OAAO,CACPJ,EAF8B,EAE9BA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wCACLoE,KAAM,CACF,QAAWqD,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,yCAAP,SAAoC,CAMnC,MALG+B,EADgC,EAChCA,OAAO,CACPJ,EAFgC,EAEhCA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0CACLoE,KAAM,CACF,QAAWqD,CACf,EACAtH,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KAjZSzG,8ICNAI,EAAN,oBAAMA,EAEmB+H,CAA4B,eAF/C/H,2CAEmB+H,WAAW,CAAXA,gBAFnB/H,EAAA,EAQF,8BAAP,SAAyB,CAYxB,MAXG9C,EADqB,EACrBA,YAAY,CACZ6B,EAFqB,EAErBA,QAAQ,CACR4K,EAHqB,EAGrBA,WAAW,CACXC,EAJqB,EAIrBA,SAAS,CACTnB,EALqB,EAKrBA,YAAY,CAQZ,OAAO,IAAI,CAACV,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,mBACLyE,MAAO,CACH,aAAgBlI,EAChB,SAAY6B,EACZ,YAAe4K,EACf,UAAaC,EACb,aAAgBnB,CACpB,EACAlB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,0CAAP,SAAqC,CAMpC,MALGrK,EADiC,EACjCA,YAAY,CACZ2M,EAFiC,EAEjCA,WAAW,CAKX,OAAO,IAAI,CAAC9B,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8DACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAe2M,CACnB,EACAtC,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,2CAAP,SAAsC,CAQrC,MAPGrK,EADkC,EAClCA,YAAY,CACZ2M,EAFkC,EAElCA,WAAW,CACX7B,EAHkC,EAGlCA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,8DACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAe2M,CACnB,EACA/I,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,gDAAP,SAA2C,CAU1C,MATGrK,EADuC,EACvCA,YAAY,CACZ2M,EAFuC,EAEvCA,WAAW,CACXvE,EAHuC,EAGvCA,QAAQ,CAQR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,oEACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAe2M,CACnB,EACAvE,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,oCAAP,SAA+B,CAM9B,MALGf,EAD2B,EAC3BA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,yBACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,0CAAP,SAAqC,CAUpC,MATGnJ,EADiC,EACjCA,YAAY,CACZ2M,EAFiC,EAEjCA,WAAW,CACXC,EAHiC,EAGjCA,eAAe,CACf9B,EAJiC,EAIjCA,WAAW,CAOX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,gFACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAe2M,EACf,gBAAmBC,CACvB,EACAhJ,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,6CAAP,SAAwC,CAQvC,MAPGnJ,EADoC,EACpCA,YAAY,CACZ2M,EAFoC,EAEpCA,WAAW,CACXC,EAHoC,EAGpCA,eAAe,CAMf,OAAO,IAAI,CAAC/B,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,gFACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAe2M,EACf,gBAAmBC,CACvB,EACAvC,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,KA5LSvH,0ICHAF,EAAN,oBAAMA,EAEmBiI,CAA4B,eAF/CjI,2CAEmBiI,WAAW,CAAXA,gBAFnBjI,EAAA,EAQF,qCAAP,SAAgC,CAI/B,MAHG5C,EAD4B,EAC5BA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0CACLoE,KAAM,CACF,aAAgB7H,CACpB,CACJ,EACJ,IAMO,wCAAP,SAAmC,CAMlC,MALG2M,EAD+B,EAC/BA,WAAW,CACX3M,EAF+B,EAE/BA,YAAY,CAKZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,wDACLoE,KAAM,CACF,YAAe8E,EACf,aAAgB3M,CACpB,CACJ,EACJ,KAzCS4C,uICIAI,EAAN,oBAAMA,EAEmB6H,CAA4B,eAF/C7H,2CAEmB6H,WAAW,CAAXA,gBAFnB7H,EAAA,EAQF,wBAAP,SAAmB,CAYlB,MAXGqI,EADe,EACfA,UAAU,CACVC,EAFe,EAEfA,QAAQ,CACRuB,EAHe,EAGfA,UAAU,CACVtB,EAJe,EAIfA,YAAY,CACZE,EALe,EAKfA,MAAM,CAQN,OAAO,IAAI,CAACZ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,YACLyE,MAAO,CACH,WAAcmD,EACd,SAAYC,EACZ,WAAcuB,EACd,aAAgBtB,EAChB,OAAUE,CACd,CACJ,EACJ,IAMO,yBAAP,SAAoB,CAInB,MAHGX,EADgB,EAChBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,YACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,wBAAP,SAAmB,CAIlB,MAHG2B,EADe,EACfA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,YACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHGxK,EADkB,EAClBA,IAAI,CAIJ,OAAO,IAAI,CAACkM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,YACLyE,MAAO,CACH,KAAQvJ,CACZ,CACJ,EACJ,IAMO,iCAAP,SAA4B,CAI3B,MAHGA,EADwB,EACxBA,IAAI,CAIJ,OAAO,IAAI,CAACkM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,6BACLoE,KAAM,CACF,KAAQlJ,CACZ,CACJ,EACJ,IAMO,6BAAP,SAAwB,CAIvB,MAHGmO,EADoB,EACpBA,iBAAiB,CAIjB,OAAO,IAAI,CAACjC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,kBACLyE,MAAO,CACH,kBAAqB4E,CACzB,CACJ,EACJ,IAMO,8BAAP,SAAyB,CAMxB,MALG1E,EADqB,EACrBA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,kBACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,uCAAP,SAAkC,CAMjC,MALGf,EAD8B,EAC9BA,QAAQ,CAMR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,4BACL2E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,+BAAP,SAA0B,CAQzB,MAPGxK,EADsB,EACtBA,IAAI,CACJyJ,EAFsB,EAEtBA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,0BACLoE,KAAM,CACF,KAAQlJ,CACZ,EACAyJ,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,mCAAP,SAA8B,CAI7B,MAHG2B,EAD0B,EAC1BA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,wBACLG,KAAMkH,EACN3B,UAAW,6BACf,EACJ,KAvMSnG,8ICJAE,EAAN,oBAAMA,EAEmB2H,CAA4B,eAF/C3H,2CAEmB2H,WAAW,CAAXA,gBAFnB3H,EAAA,EAQF,8BAAP,WACI,OAAO,IAAI,CAAC2H,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,kBACT,EACJ,KAbSP,sICSAE,EAAN,oBAAMA,EAEmByH,CAA4B,eAF/CzH,2CAEmByH,WAAW,CAAXA,gBAFnBzH,EAAA,EAQF,0CAAP,SAAqC,CAIpC,MAHGpD,EADiC,EACjCA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,+CACLoE,KAAM,CACF,aAAgB7H,CACpB,CACJ,EACJ,IAMO,+BAAP,SAA0B,CAIzB,MAHG+M,EADsB,EACtBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8BACLoE,KAAM,CACF,QAAWkF,CACf,EACA1C,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,iCAAP,SAA4B,CAM3B,MALG5L,EADwB,EACxBA,EAAE,CACFuB,EAFwB,EAExBA,YAAY,CAKZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0CACLoE,KAAM,CACF,GAAMpJ,EACN,aAAgBuB,CACpB,CACJ,EACJ,IAMO,iCAAP,SAA4B,CAQ3B,MAPGvB,EADwB,EACxBA,EAAE,CACFuB,EAFwB,EAExBA,YAAY,CACZ8K,EAHwB,EAGxBA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0CACLoE,KAAM,CACF,GAAMpJ,EACN,aAAgBuB,CACpB,EACA4D,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,2CAAP,SAAsC,CAMrC,MALGnJ,EADkC,EAClCA,YAAY,CACZgM,EAFkC,EAElCA,WAAW,CAKX,OAAO,IAAI,CAACnB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8DACLoE,KAAM,CACF,aAAgB7H,EAChB,YAAegM,CACnB,CACJ,EACJ,IAMO,kCAAP,SAA6B,CAM5B,MALGhM,EADyB,EACzBA,YAAY,CACZ8K,EAFyB,EAEzBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,qCACLoE,KAAM,CACF,aAAgB7H,CACpB,EACA4D,KAAMkH,EACN3B,UAAW,6BACf,EACJ,IAMO,6BAAP,SAAwB,CAIvB,MAHG4D,EADoB,EACpBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,4BACLoE,KAAM,CACF,QAAWkF,CACf,EACA1C,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,8BAAP,SAAyB,CAMxB,MALG0C,EADqB,EACrBA,OAAO,CACPjC,EAFqB,EAErBA,WAAW,CAKX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,4BACLoE,KAAM,CACF,QAAWkF,CACf,EACAnJ,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,0CAAP,SAAqC,CAQpC,MAPG0C,EADiC,EACjCA,OAAO,CACPC,EAFiC,EAEjCA,SAAS,CACTlC,EAHiC,EAGjCA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,sDACLoE,KAAM,CACF,QAAWkF,EACX,UAAaC,CACjB,EACApJ,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,6BAAP,SAAwB,CAQvB,MAPG0C,EADoB,EACpBA,OAAO,CACPC,EAFoB,EAEpBA,SAAS,CACTlC,EAHoB,EAGpBA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wCACLoE,KAAM,CACF,QAAWkF,EACX,UAAaC,CACjB,EACApJ,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,kCAAP,SAA6B,CAU5B,MATG0C,EADyB,EACzBA,OAAO,CACPC,EAFyB,EAEzBA,SAAS,CACT5E,EAHyB,EAGzBA,QAAQ,CAQR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,8CACLoE,KAAM,CACF,QAAWkF,EACX,UAAaC,CACjB,EACA5E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,qCAAP,SAAgC,CAQ/B,MAPG4D,EAD4B,EAC5BA,OAAO,CACPC,EAF4B,EAE5BA,SAAS,CACTlC,EAH4B,EAG5BA,WAAW,CAMX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,gDACLoE,KAAM,CACF,QAAWkF,EACX,UAAaC,CACjB,EACApJ,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,oCAAP,SAA+B,CAY9B,MAXG0C,EAD2B,EAC3BA,OAAO,CACPC,EAF2B,EAE3BA,SAAS,CACTC,EAH2B,EAG3BA,SAAS,CACT7E,EAJ2B,EAI3BA,QAAQ,CASR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,4DACLoE,KAAM,CACF,QAAWkF,EACX,UAAaC,EACb,UAAaC,CACjB,EACA7E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHG4D,EADkB,EAClBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0BACLoE,KAAM,CACF,QAAWkF,CACf,EACA1C,OAAQ,CACJ,IAAM,aACV,CACJ,EACJ,IAMO,2BAAP,SAAsB,CAQrB,MAPG0C,EADkB,EAClBA,OAAO,CACP3E,EAFkB,EAElBA,QAAQ,CAOR,OAAO,IAAI,CAACyC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,0BACLoE,KAAM,CACF,QAAWkF,CACf,EACA3E,SAAUA,EACVe,UAAW,qBACf,EACJ,IAMO,8BAAP,SAAyB,CAMxB,MALG4D,EADqB,EACrBA,OAAO,CACPG,EAFqB,EAErBA,MAAM,CAKN,OAAO,IAAI,CAACrC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,mCACLoE,KAAM,CACF,QAAWkF,EACX,OAAUG,CACd,CACJ,EACJ,IAMO,yBAAP,SAAoB,CAInB,MAHGH,EADgB,EAChBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,wBACLoE,KAAM,CACF,QAAWkF,CACf,CACJ,EACJ,IAMO,6BAAP,SAAwB,CAIvB,MAHGA,EADoB,EACpBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,4BACLoE,KAAM,CACF,QAAWkF,CACf,EACA1C,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,8BAAP,SAAyB,CAIxB,MAHG0C,EADqB,EACrBA,OAAO,CAIP,OAAO,IAAI,CAAClC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,6BACLoE,KAAM,CACF,QAAWkF,CACf,EACA1C,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,KA7bSjH,oICRAC,EAAN,oBAAMA,EAEmBwH,CAA4B,eAF/CxH,2CAEmBwH,WAAW,CAAXA,gBAFnBxH,EAAA,EAQF,qBAAP,SAAgB,CAMf,MALGoI,EADY,EACZA,MAAM,CACN0B,EAFY,EAEZA,KAAK,CAKL,OAAO,IAAI,CAACtC,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,SACLyE,MAAO,CACH,OAAUuD,EACV,MAAS0B,CACb,EACA9C,OAAQ,CACJ,IAAM,cACV,CACJ,EACJ,IAMO,sBAAP,SAAiB,CAIhB,MAHGc,EADa,EACbA,MAAM,CAIN,OAAO,IAAI,CAACN,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,kBACLoE,KAAM,CACF,OAAUsD,CACd,EACAd,OAAQ,CACJ,IAAM,cACV,CACJ,EACJ,IAMO,0BAAP,SAAqB,CAIpB,MAHGyB,EADiB,EACjBA,KAAK,CAIL,OAAO,IAAI,CAACjB,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,eACLyE,MAAO,CACH,MAAS4D,CACb,CACJ,EACJ,IAMO,yBAAP,SAAoB,CAInB,MAHGhB,EADgB,EAChBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,OACRlG,IAAK,aACLG,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,8BAAP,SAAyB,CAIxB,MAHG5L,EADqB,EACrBA,EAAE,CAIF,OAAO,IAAI,CAACoM,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,SACRlG,IAAK,qBACLoE,KAAM,CACF,GAAMpJ,CACV,EACA4L,OAAQ,CACJ,IAAM,cACV,CACJ,EACJ,IAMO,2BAAP,SAAsB,CAIrB,MAHGS,EADkB,EAClBA,WAAW,CAIX,OAAO,IAAI,CAACD,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,gBACLG,KAAMkH,EACN3B,UAAW,8BACXkB,OAAQ,CACJ,IAAM,cACN,IAAM,cACV,CACJ,EACJ,IAMO,sCAAP,WACI,OAAO,IAAI,CAACQ,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,2BACT,EACJ,IAMO,uCAAP,SAAkC,CAIjC,MAHGzD,EAD8B,EAC9BA,YAAY,CAIZ,OAAO,IAAI,CAAC6K,WAAW,CAAC/J,OAAO,CAAC,CAC5B6I,OAAQ,MACRlG,IAAK,2CACLoE,KAAM,CACF,aAAgB7H,CACpB,CACJ,EACJ,KA7JSqD,6ECPb,GAAAoC,OAAA,KAAY,CAAG,KAAA2H,mBAAA,EAHY,mCAK3B,EAAA3H,OAAA,iBAAwB,CAAG,GAE3B,EAAAA,OAAA,QAAe,CAAG,CAChB,OAAU,mBACV,eAAgB,mBAChB,cAAkB,UAAuC,OAA9B4H,aAAaC,OAAO,CAAC,SAClD,iQCFMC,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAGQ5M,CAAqB,2BAH7B4M,iBAII5M,GAHR,mCAAgB,gBAAgB,IAI9B,EAAK6M,aAAa,CAACC,YAAY,CAAClK,QAAQ,CAACmK,GAAG,CAC1C,SAACnK,CAAQ,EACP,OAAOA,CACT,EACA,SAAC+B,CAAK,MACA,CAKJ,MALI,CAAc,OAAd,GAAAA,EAAM/B,QAAQ,AAAD,GAAb,oBAAgBG,MAAM,AAAD,IAAM,MAC7B2J,aAAaM,KAAK,GAClBC,OAAOC,QAAQ,CAACC,IAAI,CAAG,UAGnBxI,CACR,mBAhBAiI,EAAA,EAoBY,oBAAhB,SAA2BzJ,CAA0B,EACnD,MAAO,cACL,IAAI,CAACnD,MAAM,CACX,mBACKmD,GAAA,CACHoE,MAAO,mBACFpE,EAAQoE,KAAK,GAChB+C,QAASoC,aAAaC,OAAO,CAAC,UAEhCvE,QAAS,mBACJjF,EAAQiF,OAAO,GAClBgF,cAAgB,UAAuC,OAA9BV,aAAaC,OAAO,CAAC,cAGlD,IAAI,CAACE,aAAa,CAEtB,KApCID,GAA8B,EAAA1M,gBAAgB,EAuCvCmN,EAAa,IAAI,EAAAtN,KAAK,CACjC,CACEK,KAAM,KAAAqM,mBAAA,EAlDiB,mCAmDvBnM,iBAAkB,GAClBK,QAAS,CACPyM,cAAgB,UAAuC,OAA9BV,aAAaC,OAAO,CAAC,SAChD,CACF,EACAC,+MC3CWU,EAAc,WACzB,IAGiB,EAHThO,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IACXC,EAAgB,KAAAC,SAAA,EAAU,CAAEC,OAAQ,EAAM,GAC1CC,EAAW,CAAgB,OAAhB,QAAAC,UAAA,IAAaC,EAAE,CAAC,GAAE,GAAlB,oBAAqBF,OAAO,AAAD,GAAK,CAC/CG,cAAe,IACjB,EAIMC,EAAW,SAACC,CAAa,CAAUhK,CAAK,EAC5C,IAAM+B,EAAS,mBACVyH,GACH,WAACQ,EAAgBhK,GAASa,KAAAA,GAGxBkB,CAAAA,EAAOkI,CAAC,EACVlI,CAAAA,EAAOkI,CAAC,CAAGpJ,KAAAA,CAAQ,EAGrByI,EAAS,CACP1C,OAAQ7E,CACV,EACF,EAEMmI,EAAoB,KAAAC,oBAAA,EACxB,SAACH,CAAa,CAAUhK,CAAK,EAC3B+J,EAASC,EAAehK,EAC1B,EACA,KAGIoK,EAAc,SAACJ,CAAa,EAChCD,EAASC,EAAenJ,KAAAA,EAC1B,SAEA,AAAI,AAAC8I,EAAQG,aAAa,EAAKxH,MAAMC,OAAO,CAACoH,EAAQG,aAAa,EAKhE,UAAC,EAAAO,IAAI,EAACC,cAAc,eACjBX,EAAQG,aAAa,CAACS,GAAG,CAAC,SAACC,CAAgB,CAAEC,CAAK,EACjD,MACED,EADME,WAAW,CAAXA,EAAA,WAActP,EAAE,cACtBoP,EADiCG,kBAAkB,CAAlBA,EAAA,WAAqB,WAGxD,MACE,UAAC,EAAAC,GAAG,EAACC,GAAG,gBACN,WAAC,EAAAC,UAAU,EAACC,SAAS,kBACnB,UAAC,EAAAC,gBAAgB,EAACC,cAAc,gBAC9B,UAAC,EAAAC,UAAU,EAACC,MAAM,eAEpB,UAAC,EAAAC,KAAK,EACJlK,KAAK,SACLmK,aAAc7B,MAAAA,EAAA,OAAAA,CAAe,CAACmB,EAAmB,CACjDD,YAAaA,EACbY,QAAS,SAACzF,CAAC,EACT,IAAM0F,EAAS1F,EAAE0F,MAAM,CAEvB,GAAI,CAACA,EAAOvL,KAAK,CAAE,CACjBoK,EAAYO,GAEZ,MACF,CAEA,GAAI9E,AAAU,UAAVA,EAAE3D,GAAG,CAAc,CACrB6H,EAASY,EAAoBY,EAAOvL,KAAK,EAEzC,MACF,CAEAkK,EAAkBS,EAAoBY,EAAOvL,KAAK,CACpD,EACAwL,gBAAiB,SAAC3F,CAAC,EAGjB,GAAI,CAAC0F,AAFU1F,EAAE0F,MAAM,CAEXvL,KAAK,CAAE,CACjB6F,EAAE4F,eAAe,GACjB5F,EAAE6F,cAAc,GAEhBtB,EAAYO,GAEZT,EAAkBjF,MAAM,GAExB,MACF,CACF,QAvCcwF,EA4CxB,KAtDK,IAyDX,6PC1FakB,EAAgB,gBAC3BC,EAAA,EAAAA,kBAAA,CACAC,EAAA,EAAAA,QAAA,KACAC,QAAQ,CAARA,EAAA,YAAW,EACXC,EAAA,EAAAA,MAAA,KACAC,IAAI,CAAJA,EAAA,WAAO,QACPC,SAAS,CAET,KAAAC,UAAA,EAAW,CAAC,GACZ,IAKI,OAAAA,UAAA,EAAW,CACbF,KAAAA,EACAX,aAAcO,EACdO,IA7Ba,EA8BbC,IA7Ba,KA8BbH,UAbF,WAAY,IAcVI,gBAAiB,GACjBR,SAAA,SAASS,CAAS,CAAEC,CAAqB,EACnCA,EAAgB,IACdP,AAAS,MAATA,GAAiBO,EAAgBP,GAAS,EAC5CH,MAAAA,GAAAA,EAAW,EAAAW,SAAA,sBAA+B,CAACD,IAE3CV,MAAAA,GAAAA,EAAWU,GAGjB,CACF,GApBEE,EAIE,EAJFA,SAAS,CACTC,EAGE,EAHFA,SAAS,CACTC,EAEE,EAFFA,MAAM,CACCC,EACL,EADF5M,KAAK,CAiFP,MACE,UAAC,EAAA6M,aAAa,EAACC,KAAK,QAAQf,OAAQA,EAAQD,SAAUA,WACpD,WAAC,EAAAiB,MAAM,EAACC,KAAK,kBACX,UAAC,EAAAC,gBAAgB,oBAxDX,CACVC,QAAS,WACPR,EAAUV,EACZ,CACF,GAqDY,CACJ9K,KAAK,SACL6K,OAAQA,EACRD,SAAUA,EACV,aAAW,qBAEX,UAAC,EAAAqB,SAAS,EAACC,QAAS,OAEtB,UAAC,EAAAhC,KAAK,oBAxDE,CACZS,SAAU,SAAChG,CAAC,EACV,GAAImG,EAAO,EACTW,EAAQ,AAAA9G,CAAAA,EAAE0F,MAAM,CAACvL,KAAK,EAAI,IAAIiD,OAAO,CAAC,YAAa,SAC9C,CACL,GACE,AAA0B,UAA1B,OAAO4C,EAAE0F,MAAM,CAACvL,KAAK,EACrB6F,EAAE0F,MAAM,CAACvL,KAAK,CAACqN,KAAK,CAAC,QAErB,OAGF,GACE,AAA0B,UAA1B,OAAOxH,EAAE0F,MAAM,CAACvL,KAAK,EACrB6F,EAAE0F,MAAM,CAACvL,KAAK,CAACsN,UAAU,CAAC,KAC1B,CACAX,EAAQ,AAAA9G,CAAAA,EAAE0F,MAAM,CAACvL,KAAK,EAAI,IAAIuN,KAAK,CAAC,IAEpC,MACF,CAEAZ,EAAQ,AAAA9G,CAAAA,EAAE0F,MAAM,CAACvL,KAAK,EAAI,IAAIiD,OAAO,CAAC,UAAW,IACnD,CACF,EACAuK,OAAQ,SAACC,CAAK,EACZ,GAAIzB,AAAS,MAATA,GAMJ,IAAMO,EAAgBmB,WAFRD,EAAMlC,MAAM,CAACvL,KAAK,CAKL,WAAzB,OAAOuM,GACP,CAACoB,OAAOC,KAAK,CAACrB,IACdA,EAAgB,KAAS,GAEzBI,EAAO,EAAAH,SAAA,sBAA+B,CAACD,IAE3C,EACAvM,MAAO4M,CACT,GAeY,CACJiB,UAAU,SACV1B,IAzHO,EA2HP2B,OAAO,OACP/C,SAAU,AAACgB,EAAkB,OAAT,OACpBgC,QAAQ,WACRjC,SAAUA,EACVkC,KAAK,aAENjC,GAAU,UAAC,EAAAkC,IAAI,WAAElC,IAClB,UAAC,EAAAmC,gBAAgB,oBAtFX,CACVhB,QAAS,WACPT,EAAUT,EACZ,CACF,GAmFY,CACJ9K,KAAK,SACL6K,OAAQA,EACRD,SAAUA,EACV,aAAW,qBAEX,UAAC,EAAAqC,OAAO,EAACf,QAAS,WAK5B,q1CChJA,IAAMgB,EAAS,gBAAa,MAUfnB,EAAmB,cAAOmB,GAAA,IAGnB,mBAAiBrC,AAAd,EAAAA,MAAA,CAAuB,IAAM,QAEhD,KAAAsC,MAAA,EACA,WACA,KAAAC,GAAA,EAAG,OAMMzB,EAAgB,aAAU,KAI5B,mBAAiBd,AAAd,EAAAA,MAAA,CAAuB,QAAU,SAG3C,KAAAsC,MAAA,EACA,SACA,KAAAC,GAAA,EAAG,MAUH,KAAAD,MAAA,EACA,WACA,KAAAC,GAAA,EAAG,OAcMJ,EAAmB,cAAOE,GAAA,IAGlB,mBAAiBrC,AAAd,EAAAA,MAAA,CAAuB,IAAM,QAEjD,KAAAsC,MAAA,EACA,WACA,KAAAC,GAAA,EAAG,mNCjEMC,EAAc,SAACC,CAAK,EAC/B,MAAQtB,EAAqBsB,EAArBtB,OAAO,CAAKuB,EAAA,QAASD,EAAA,CAArB,YAC2B,eAAAE,QAAA,EAAS,OAArCC,EAA4B,KAAjBC,EAAiB,KAEnC,IAAMC,KAAmB,iBAAOhJ,CAAC,MAEvBiJ,kFAGJA,CAAAA,AAHIA,CAAAA,EAAU5B,MAAAA,EAAA,OAAAA,EAAUrH,EAAC,GAKzBiJ,aAAmBtP,OAAM,EAFzB,YAKA,OADAoP,EAAc,IACd,GAAME,UAAN,oDAGFF,EAAc,2BAElB,YAfgC/I,CAAC,mCAiBjC,MACE,UAAC,EAAAuI,MAAM,oBACDK,GAAA,CACJvB,QAAS2B,EACTE,WAAYJ,EACZA,UAAWA,IAGjB,woBC5BA,IAAMK,EAAU,aAAU,MAKpBC,EAAa,cAAO,EAAAC,IAAI,OAIxBC,EAAQ,aAAU,MAoBxB,EAViB,WACf,MACE,UAACH,EAAA,UACC,UAACC,EAAA,CAAWG,GAAG,aACb,UAACD,EAAA,CAAME,IAAK,EAAAC,iBAAiB,CAAEC,IAAI,YAI3C,0mBCjBA,IAAMC,EAAqB,aAAU,MAM/BC,EAA2B,cAAO,EAAAC,cAAc,MAClD,KAAArB,MAAA,EACA,WACA,KAAAC,GAAA,EAAG,OAuCP,EAjCgD,gBAC9CqB,EAAA,EAAAA,KAAA,CACA/V,EAAA,EAAAA,EAAA,KACAqF,OAAO,CAAPA,EAAA,WAAU,CACR2Q,QAAS,MACTC,UAAW,UAAC,EAAAC,gBAAgB,IAC9B,IAEA,MACE,UAACN,EAAA,UACC,UAAC,EAAAO,UAAU,kBAACnW,GAAIA,GAAQqF,GAAA,UACrB0Q,GACCA,EAAMpF,GAAG,CAAC,SAACyF,CAAc,CAAEvF,CAAK,EAC9B,IAAQwF,EAAgBD,EAAhBC,KAAK,CAAEC,EAASF,EAATE,IAAI,CACbnB,EAAatE,AAAU,IAAVA,GAAekF,EAAMnP,MAAM,GAAKiK,EAAQ,EAE3D,MACE,UAAC,EAAA0F,cAAc,WACb,UAACV,EAAA,CACCW,GAAI,EAAAlB,IAAI,CACRE,GAAIc,EACJpE,SAAUiD,WAETkB,KANgBxF,EAUzB,OAIV,6PCrCM4F,EAAe,CACnBC,QAAS,CACPC,gBAAiB,oDACjBpF,MAAO,OACT,EACAqF,UAAW,CACTD,gBAAiB,UACjBE,OAAQ,MACRtF,MAAO,SACT,EACAW,SAAU,CACRyE,gBAAiB,oDACjBG,QAAS,MACTvF,MAAO,OACT,EACAwF,kBAAmB,CACjBF,OAAQ,MACRC,QAAS,MACTvF,MAAO,SACT,EACAyF,MAAO,CACLzF,MAAO,UACPsF,OAAQ,kBACV,EACAI,YAAa,CACX1F,MAAO,UACPsF,OAAQ,MACV,EACAK,IAAK,CACHC,gBAAiB,UACjB5F,MAAO,OACT,CACF,EAEM6F,EAAc,CAClBV,QAAS,CACPC,gBAAiB,oDACjBpF,MAAO,SACT,EACAqF,UAAW,CACTD,gBAAiB,UACjBE,OAAQ,MACRtF,MAAO,UACPuF,QAAS,KACX,EACA5E,SAAU,CACRyE,gBAAiB,oDACjBG,QAAS,MACTvF,MAAO,SACT,EACAwF,kBAAmB,CACjBF,OAAQ,MACRC,QAAS,MACTvF,MAAO,SACT,EACAyF,MAAO,CACLzF,MAAO,UACPsF,OAAQ,mBACRC,QAAS,KACX,EACAG,YAAa,CACX1F,MAAO,UACPsF,OAAQ,OACRC,QAAS,KACX,EACAI,IAAK,CACHC,gBAAiB,UACjB5F,MAAO,QACPuF,QAAS,KACX,CACF,EAEMO,EAAc,CAClBJ,YAAa,CACX1F,MAAO,SACT,CACF,EAEaiD,EAAS,oBACpBlN,IAAI,CAAG,IACPgQ,WAAW,CAAXA,EAAA,WAAc,gBACdC,QAAQ,CAAG,IACXrD,MAAM,CAAG,IACTsD,KAAK,CAAG,IACRC,UAAU,CACVnE,EAAA,EAAAA,OAAA,KACApB,QAAQ,CAARA,EAAA,YAAW,EACXwF,EAAA,EAAAA,UAAA,CACAC,EAAA,EAAAA,YAAA,CACA5C,EAAA,EAAAA,SAAA,CAUA,MACE,UAAC,EAAA/D,GAAG,kCACFwF,GAAG,SACHoB,SAAS,cACTC,WAAW,uCACXC,GAAG,MACHC,SAAS,OACT7D,OAxBJ,WAAS,SAyBL8D,aAhBY1Q,AAAS,WAZzB,YAAO,aAY6B,MAAQ,MAiBxCmQ,WAxBJ,WAAa,SAyBTD,MA1BJ,WAAQ,UA2BJlE,QAASA,EACT2E,OACEb,MAAAA,EAAA,OAAAA,CAAa,CACXlF,GAAYoF,AAAgB,gBAAhBA,EAAgC,WAAaA,EAC1D,CAEHY,OAAQZ,AAAgB,gBAAhBA,EAAgCD,MAAAA,EAAA,OAAAA,EAAc,WAAc,CAAG,CAAC,GACpEZ,MAAAA,EAAA,OAAAA,CAAc,CAChBvE,GAAYoF,AAAgB,gBAAhBA,EAAgC,WAAaA,EAC1D,GACDpF,SAAUA,EACV5K,KAAMoQ,IA5BiBC,EACvB,CACEpG,MAAOoG,CACT,EACA,CAAC,GAyBG,UAEH5C,EAAY,UAAC,EAAAoD,OAAO,KA3CzB,WAAW,kBA8Cb,iRCnJO,IAAM9C,EAAa,cAAO,EAAAC,IAAI,g3BCcrC,IAAM8C,EAAoB,aAAU,KAGzB,mBAAG,EAAAZ,KAAA,GAGRa,EAAsB,cAAO,MAAU,OAevCC,EAAkB,cAAO,EAAAC,UAAU,OAOnCC,EAAmB,cAAO,EAAAC,UAAU,OAK7BC,EAAO,gBAClBC,EAAA,EAAAA,SAAA,CACAC,EAAA,EAAAA,MAAA,CACArB,EAAA,EAAAA,QAAA,CACAsB,EAAA,EAAAA,MAAA,KACArB,KAAK,CAEL,MACE,UAACY,EAAA,CAAkBZ,MAHrB,WAAQ,kBAIJ,WAACa,EAAA,CAAoBM,UAAWA,YAC7BC,GAAU,UAACN,EAAA,UAAiBM,IAC7B,UAAC,EAAAE,QAAQ,WAAEvB,IACVsB,GAAU,UAACL,EAAA,UAAkBK,QAItC,+tCChCA,IAAME,EAAmB,aAAU,MAQ7BC,EAAqB,cAAO,EAAA3E,IAAI,OAMhC4E,EAAiB,cAAO,EAAA1D,KAAK,OAK7B2D,EAAe,aAAU,MASzBC,EAAgB,cAAO,EAAAnI,GAAG,OAM1BoI,EAAoB,aAAU,MAU9BC,EAAqB,aAAU,MAM/BC,EAAW,gBAAGC,EAAA,EAAAA,SAAA,CAClB,MACE,WAACR,EAAA,WACEQ,EAAU5I,GAAG,CAAC,SAAC6I,CAAQ,CAAE3I,CAAK,EAC7B,MACE,WAACwI,EAAA,WACC,UAAC,EAAAhF,IAAI,WAAEmF,IACN3I,IAAU0I,EAAU3S,MAAM,CAAG,GAC5B,UAAC,EAAA6S,OAAO,EAACC,YAAY,WAAWxF,OAAO,WAHlBrD,EAO7B,GACA,UAAC,EAAA4I,OAAO,EAACC,YAAY,eAG3B,EAEMC,EAAgB,gBAAGC,EAAA,EAAAA,MAAA,CAAQC,EAAA,EAAAA,MAAA,CACvBrY,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC4X,EAAA,WACG,GAAiB,OAAf5X,EAAE,UAAU,KAAU,OAAPoY,GACnB,UAACT,EAAA,CAAc3F,QAAS,CAAC,MAAO,KAAM,MAAM,CAAEsG,GAAG,mBAC/C,GAAiB,OAAftY,EAAE,UAAU,KAAU,OAAPqY,KAGzB,EAEaE,EAAiB,gBAC5BzZ,EAAA,EAAAA,KAAA,CACAJ,EAAA,EAAAA,IAAA,CACAqZ,EAAA,EAAAA,SAAA,CACAS,EAAA,EAAAA,WAAA,CACAJ,EAAA,EAAAA,MAAA,CACAC,EAAA,EAAAA,MAAA,CAEA,MACE,WAAC,EAAAnB,IAAI,EACHuB,UAAW,CAAEC,KAAM,SAAUC,GAAI,KAAM,EACvCC,SAAS,SACTjG,QAAQ,WACRkG,EAAE,OACFC,EAAE,iBAEF,UAACpB,EAAA,UACE5Y,GAAS,UAAC2Y,EAAA,CAAexD,IAAKnV,EAAOqV,IAAI,kBAG5C,WAAC,EAAA4E,KAAK,EAACD,EAAE,iBACP,WAAC,EAAAxB,QAAQ,EAAC7E,UAAU,iBAClB,UAAC,EAAAuG,OAAO,EAACC,KAAK,KAAKxG,UAAU,gBAC1B/T,IAEFqZ,GAAa,UAACD,EAAA,CAASC,UAAWA,IAClCS,GACC,UAAChB,EAAA,UAAoBgB,OAIzB,UAAC,EAAAvB,UAAU,WACT,UAACkB,EAAA,CAAcC,OAAQA,EAAQC,OAAQA,WAKjD,iTCpJA,IAAMa,EAAa,uBAAO,EAAAhC,IAAI,OAe9B,EARoB,gBAAGnB,EAAA,EAAAA,QAAA,CAAUoB,EAAA,EAAAA,SAAA,CAAc/D,EAAA,WAAxB,WAAU,cAC/B,MACE,UAAC8F,EAAA,mBAAe9F,GAAA,CAAO+D,UAAWA,WAC/BpB,IAGP,6jCCHA,IAAMnC,EAAU,cAAO,EAAAC,UAAU,OAgC3BsF,EAAc,aAAU,MAWxBC,EAAuB,cAAO,EAAAnK,IAAI,OAkCxC,EA5B8D,gBAAGoK,EAAA,EAAAA,OAAA,CAC/B,IAAAC,kBAAA,UAA4B,GAApDvZ,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CACrBtE,EAAWya,EAAQza,QAAQ,CAE3B2a,EAAW,KAAAC,YAAA,EAAa,EAAAC,gCAAgC,CAAE,CAC9D,gBAAiB1Z,EACjB,SAAUmD,EACV,WAAYtE,EAASF,IAAI,AAC3B,GAEA,MACE,UAACkV,EAAA,CAAQI,GAAIuF,WACX,UAAC,EAAArC,IAAI,EAACC,UAAU,yBACd,WAACiC,EAAA,WACEC,EAAQva,KAAK,EAAI,AAAyB,UAAzB,OAAOua,EAAQva,KAAK,CACpC,UAAC,EAAAiV,KAAK,EAAC/B,QAAQ,QAAQiC,IAAKoF,EAAQva,KAAK,CAAEqV,IAAKkF,EAAQva,KAAK,GAE7Dua,EAAQva,KAAK,CAEf,UAACqa,EAAA,CAAYhC,UAAU,wBACpBvY,EAASD,WAAW,EAAIC,EAASF,IAAI,EAAIE,EAASJ,EAAE,SAMjE,whCCjFO,IAAMkb,EAAU,aAAU,MAOpBC,EAAe,cAAO,SAAS,OAS/BC,EAAsB,cAAOF,GAAA,KAU7BG,EAAoB,cAAOH,GAAA,6OCX3BI,EAAa,gBAqEjB,EACoB,MArE3BC,UAAU,CAAVA,EAAA,WAAa,mBAEbrb,IAAI,CAAJA,EAAA,WAAO,gBACPmW,EAAA,EAAAA,KAAA,CACAmF,EAAA,EAAAA,UAAA,CACAC,EAAA,EAAAA,OAAA,CACAhK,EAAA,EAAAA,YAAA,CAIA,GAAI,CAFgB,KAAAiK,cAAA,IAGlB,MAAM,AAAItW,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAAQyb,EAAe,KAAAC,aAAA,EAAc,CACnC1b,KAAMA,CACR,GAFQyb,UAAU,CAIlB,GAAI,CAACA,EACH,MAAM,AAAIvW,MACR,gEAIJ,UAAY,CAAC,KACb,UAAY,CAAC,KAEb,IAAMyW,EAAcpK,EAChB,IAAIqK,KAAK,IAAMrK,GAAcxJ,QAAQ,IACrChB,KAAAA,EAEJ,MACE,UAAC,EAAA+J,GAAG,EAACwG,MAAM,gBACT,WAAC,EAAAuE,WAAW,EACVC,UAAWL,EAAWM,OAAO,CAC7BT,WAAYA,EACZU,QAAQ,OACRxL,cAAc,mBAEb2F,GAAS,UAAC,EAAA8F,SAAS,WAAE9F,IACtB,UAAC,EAAA+F,UAAU,EACTX,QAASA,EACTvb,KAAMA,EACNmc,OAAQ,gBAAGC,EAAA,EAAAA,KAAA,CACLC,EAAaD,EAAMlW,KAAK,CAO5B,MAL2B,UAAvB,OAAOkW,EAAMlW,KAAK,EAEpBmW,CAAAA,EAAa,IAAIT,KAAK,IAAMQ,EAAMlW,KAAK,EAAE6B,QAAQ,GAAE,EAInD,UAAC,EAAAuU,gBAAgB,EACfC,KAAMF,GAAcV,EACpBa,aAAc,SAACD,CAAI,EACjBH,EAAMrK,QAAQ,CAACwK,EACjB,EACAE,QAAS,CACPpB,WAAYA,EACZqB,SAAU,EAAAC,cAAc,CACxBC,WAAY,EAAAC,gBAAgB,AAC9B,GAGN,IAED,CAAgB,OAAhB,GAAApB,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAkB,OAAhB,GAAArB,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,OAKtD,iGC/FMkY,EAAiBC,AAA4C,MAA5CA,eAAerO,OAAO,CAAC,iBAEjCsO,EAAQ,gBAAG5F,EAAA,EAAAA,QAAA,QACtB,AAAK0F,EAIE,+BAAG1F,IAHD,IAIX,2UCuCa6F,EAAc,gBAenB,EAfsBC,EAAA,EAAAA,MAAA,CAAQzE,EAAA,EAAAA,MAAA,CAC5BpX,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACD4B,EAAa,KAAAka,aAAA,IAAbla,QAAQ,CAEhB,MACE,WAAC,EAAAma,aAAa,YACX,AAAAF,CAAAA,MAAAA,EAAA,OAAAA,EAAQG,OAAO,AAAD,GACb,WAAC,EAAAC,iBAAiB,YAChB,UAAC,EAAAC,UAAU,WAAE9E,IACb,UAAC,EAAA+E,WAAW,WACTnc,EAAE,sBAAuB,CAAEoc,MAAOP,MAAAA,EAAA,OAAAA,EAAQG,OAAO,CAAEpa,SAAAA,CAAS,QAIlE,AAAAia,CAAAA,MAAAA,EAAA,OAAAA,EAAQxF,UAAU,AAAD,GAChBwF,CAAAA,MAAAA,EAAA,OAAkB,OAAlB,GAAAA,EAAQxF,UAAU,AAAD,GAAjB,oBAAoBlH,GAAG,CAAC,SAACkH,CAAU,CAAEhH,CAAK,EACxC,MACE,WAAC,EAAA4M,iBAAiB,YAChB,UAAC,EAAAC,UAAU,WAAE7F,MAAAA,EAAA,OAAAA,EAAYxB,KAAK,GAC9B,UAAC,EAAAsH,WAAW,WACTnc,EAAE,sBAAuB,CACxBoc,MAAO/F,MAAAA,EAAA,OAAAA,EAAY+F,KAAK,CACxBxa,SAAAA,CACF,OANoByN,EAU5B,EAAC,IAGT,EAEagN,EAAe,gBAC1B7D,EAAA,EAAAA,WAAA,CACAzC,EAAA,EAAAA,QAAA,CAEA,MACE,WAAC,EAAA2B,YAAY,YACV3B,EACD,UAAC,EAAAuG,gBAAgB,WAAE9D,MAGzB,EAEa+D,EAA6B,gBACxCC,EAAA,EAAAA,aAAA,CACAC,EAAA,EAAAA,mBAAA,CAEA,MACE,WAAC,EAAAC,0BAA0B,YACzB,UAAC,EAAAC,iCAAiC,WAC/BH,IAEFC,GACC,UAAC,EAAAG,0BAA0B,WACxB,cAAMH,OAKjB,EAEaI,EAAe,gBAMf,EAMF,EAZoBC,EAAA,EAAAA,SAAA,CAC7B,MACE,UAAC,EAAAC,qBAAqB,WACpB,WAAC,EAAAC,KAAK,EAACrK,QAAQ,SAASsG,KAAK,eAC3B,UAAC,EAAAgE,KAAK,WACJ,UAAC,EAAAC,EAAE,WACAJ,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAAWK,MAAM,AAAD,GAAhB,oBAAmBhO,GAAG,CAAC,SAACiO,CAAW,CAAE/N,CAAK,QACzC,UAAC,EAAAgO,kBAAkB,WAAcD,GAAR/N,SAI/B,UAAC,EAAAiO,KAAK,EAACtH,MAAM,gBACV8G,MAAAA,EAAA,OAAe,OAAf,GAAAA,EAAWS,IAAI,AAAD,GAAd,oBAAiBpO,GAAG,CAAC,SAACqO,CAAG,CAAEnO,CAAK,EAC/B,MACE,UAAC,EAAA6N,EAAE,WACAM,MAAAA,EAAA,OAAAA,EAAKrO,GAAG,CAAC,SAACvK,CAAK,CAAEkC,CAAG,QACnB,UAAC,EAAA2W,gBAAgB,WAAY7Y,GAANkC,MAFlBuI,EAMb,SAKV,EAEaqO,EAAc,gBAAGC,EAAA,EAAAA,IAAA,CAC5B,MAAO,UAAC,EAAAC,oBAAoB,WAAED,GAChC,+nFCzIO,IAAM5B,EAAgB,cAAO,EAAAvM,GAAG,OAO1ByM,EAAoB,cAAO,EAAAzM,GAAG,OAY9B2M,EAAc,cAAO,EAAA3M,GAAG,OAaxB0M,EAAa,cAAO,EAAA1M,GAAG,OAMvB8M,EAAmB,cAAO,EAAA9M,GAAG,OAO7BkI,EAAe,cAAO,EAAAlI,GAAG,OAIzBkN,EAA6B,cAAO,EAAAlN,GAAG,OAIvCmN,EAAoC,cAAO,EAAAnN,GAAG,OAM9CoN,EAA6B,cAAO,EAAA/J,IAAI,OAIxCwK,EAAqB,cAAO,EAAAQ,EAAE,OAM9BJ,EAAmB,cAAO,EAAAK,EAAE,OAK5Bf,EAAwB,cAAO,EAAAgB,cAAc,OAK7CH,EAAuB,cAAO,EAAApO,GAAG,OAOjCwO,EAAsB,cAAW,8mBCf9C,IAAM9E,EAAa,cAAO,EAAAhC,IAAI,OAWjB+G,EAAkB,kBAC7B7G,EAAA,EAAAA,MAAA,CACArB,EAAA,EAAAA,QAAA,CACAmI,EAAA,EAAAA,QAAA,CACApb,EAAA,EAAAA,OAAA,CACAqb,EAAA,EAAAA,UAAA,CACG/K,EAAA,WALH,SACA,WACA,WACA,UACA,eAGQgL,EAAkB,KAAAC,QAAA,IAAlBD,aAAa,CACbre,EAAiB,KAAA+b,aAAA,IAAjB/b,YAAY,CACgB,OAAAue,aAAA,IAA5BC,EAA4B,EAA5BA,MAAM,CAAEC,EAAoB,EAApBA,MAAM,CAAEC,EAAY,EAAZA,OAAO,CACO,eAAAnL,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KAC9BC,EAAiB,KAAAC,OAAA,IAAjBD,YAAY,CACZ5e,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACH2Q,EAAS3Q,EAAE,OAEX8e,EAAWF,EAAa,WAC5BD,EAAe,CAACD,EAClB,GAEMK,EAAiB,KAAAC,WAAA,EAAY,uBAGR,EAQJ,EARX1T,EAYA2T,EAAA,4DAdNnc,EAAS,MAAT,uBAKE,6BAHIwI,EAAe,GAAA4T,IAAA,EAAKlO,GAAG,CAAR,QAAS,QAAIlO,EAAQqc,aAAa,EAAI,EAAE,GAG3D,GAAM,EAAApR,UAAA,gCAA0C,CAAC,CAC/ChO,aAAc,CAACA,EACf6B,SAAU,AAAAwc,CAAAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,AAAD,GAAK6D,KAAAA,EACrC6F,aACE,CAACA,EACHkB,YAAa,AAAkB,OAAlB,GAAA1J,EAAQ8J,UAAU,AAAD,GAAjB,oBAAoBnG,QAAQ,GACzCgG,UAAW3J,EAAQ2J,SAAS,AAC9B,iBAEIwS,CAAAA,EAAWG,AATf,SASiDC,IAAI,CACrD,SAACC,CAAE,SAAKA,EAAGC,WAAW,GAAKzc,EAAQyc,WAAW,KAGhCN,EAASO,sBAAsB,EAC7C1c,EAAQ2c,cAAc,CAACR,EAASO,sBAAsB,4CAI1D,EAAAE,QAAA,cAAsB,GACtB,EAAAA,QAAA,QAAgB,CACd,EAAAC,SAAA,SAAkB,CAAC,CACjBnhB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAAAA,EACA+c,OAAQzB,MAAAA,EAAA,OAAAA,EAAe0B,IAAI,AAC7B,iCAGN,GAAG,EAAE,EAEL,IAAMC,KAAc,yEAClB,SAAMhB,mBAAN,eACF,+CAEMiB,EAAe,WACnB,IAAMC,EAAa,kBAAMtB,EAAe,KAGxC,MACE,WAAC,EAAAuB,KAAK,EAAC3B,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,KAAKkH,WAAU,aACnE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,EAAE,qCAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACPxgB,EAAE,mBAAoB,CAAEygB,aAAcrJ,CAAO,KAEhD,UAAC,EAAAsJ,WAAW,EAAC5O,QAASmO,WACpB,WAAC,EAAAU,WAAW,EAACC,IAAI,cACf,UAAC,EAAA5N,MAAM,EAAC8C,YAAY,YAAYhE,QAbhB,kBAAMiO,cAcnB/f,EAAE,SAEL,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,QAAQhE,QAASmO,WAClCjgB,EAAE,sBAOjB,EAEM6gB,EAAqB,WACzB,MACE,WAAC,EAAAX,KAAK,EAAC3B,OAAQA,EAAQE,QAASA,EAASxF,KAAK,gBAC5C,UAAC,EAAAmH,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAElJ,IACd,UAAC,EAAAmJ,gBAAgB,KACjB,WAAC,EAAAC,SAAS,YACR,UAAC,EAAA5E,WAAW,EAACC,OAAQqC,MAAAA,EAAA,OAAAA,EAAUrC,MAAM,CAAEzE,OAAQA,IAC/C,UAAC,EAAAiF,YAAY,EAAC7D,YAAa0F,MAAAA,EAAA,OAAAA,EAAU4C,gBAAgB,UAClD/K,IAEH,UAAC,EAAAwG,0BAA0B,EACzBC,cAAe0B,MAAAA,EAAA,OAAAA,EAAU1B,aAAa,CACtCC,oBAAqByB,MAAAA,EAAA,OAAAA,EAAUzB,mBAAmB,GAEnD,AAAAyB,CAAAA,MAAAA,EAAA,OAAAA,EAAUpB,SAAS,AAAD,GACjB,UAAC,EAAAD,YAAY,EAACC,UAAWoB,MAAAA,EAAA,OAAAA,EAAUpB,SAAS,GAE7C,AAAAoB,CAAAA,MAAAA,EAAA,OAAAA,EAAUP,IAAI,AAAD,GAAK,UAAC,EAAAD,WAAW,EAACC,KAAMO,MAAAA,EAAA,OAAAA,EAAUP,IAAI,WAK9D,EAyCA,MACE,UAACzE,EAAA,iBACC9B,OAAQA,EACRC,OACE,UAAC,EAAA2G,mBAAmB,EAACc,SAAUA,WAC7B,WAAC,EAAA6B,WAAW,EAACnM,QAAQ,cACnB,UAlBiB,WACzB,MACE,iCACE,UAAC,EAAAxB,MAAM,EAAC8C,YAAY,QAAQE,MAAM,QAAQlE,QAAS0M,WAChDxe,EAAE,iBAEL,UAAC6gB,EAAA,IACD,UAACb,EAAA,MAGP,EAQW,IACD,UA9Cc,WACtB,IAAMe,EAAgB,SAACnc,CAAK,EACtB9B,GAAWA,aAAmB,EAAAke,OAAO,EACvC,EAAAtB,QAAA,WAAmB,CAAC,CAClBlhB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAAAA,EACA+c,OAAQjb,CACV,EAEJ,EAEA,OAAOuZ,EACL,UAAC,EAAA5N,aAAa,EACZC,mBAAoB4N,MAAAA,EAAA,OAAAA,EAAe0B,IAAI,CACvCrP,SAAU,SAACwQ,CAAY,SAAaF,EAAcE,IAClDvQ,SAAU,GACVC,OAAQA,EACRE,UAAW,EACXD,KAAM,MAGR,UAAC,EAAAoC,MAAM,EAAC8C,YAAY,YAAYE,MAAM,gBACnChW,EAAE,WAGT,EAqBW,UAIHoT,GAAA,UAEH2C,IAGP,inBC5OA,IAAMmL,EAAkB,CAAC,MAAO,MAAO,OAAQ,MAAO,MAAO,OAAO,CAM9DC,EAAW,cAAO,EAAAtO,IAAI,OAafuO,EAAmB,SAAChO,CAAK,EACpC,IAlBeiO,EAmBbC,EAKElO,EALFkO,aAAa,CACHC,EAIRnO,EAJFiO,QAAQ,CACRG,EAGEpO,EAHFoO,QAAQ,CAAR,EAGEpO,EAFFqO,QAAQ,CACLC,EAAA,QACDtO,EAAA,CALF,gBACA,WACA,WACA,aAGMpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,IAAM2hB,EAAuBL,IA3BdD,EA2BuCC,EA1B/CJ,EAAgBU,IAAI,CAAC,SAACC,CAAG,SAAKR,EAASS,QAAQ,CAAE,IAAO,OAAJD,OA2BnC,eAAAvO,QAAA,EAAS,OAA1ByO,EAAiB,KAAXC,EAAW,YAExB,AAAKV,EAqCH,WAACH,EAAA,iBACCc,OAAO,UACP1L,SAAU,GACVxG,MAAM,MACNmS,GAAI,EACJpQ,QAlBuB,WACzB,GAAIwP,EAAe,CACjB,GAAIK,EAAsB,CACxBK,EAAQ,IAER,MACF,CAEA,EAAAG,SAAA,cAAuB,CAACb,EAC1B,CACF,GASQI,GAAA,WAEHD,AArDH,aAAW,IAqDI,UAAC,EAAAW,cAAc,KAAI,IAAEb,GAAqBvhB,EAAE,iBACxDqiB,AAlDoC,YAApB,OAAOb,GAmDtB,UAAC,EAAAc,UAAU,EAACnL,UAAU,iBAAiBrF,QA3CpB,SAACrH,CAAC,EACzBA,EAAE6F,cAAc,GAChB7F,EAAE4F,eAAe,GAEO,YAApB,OAAOmR,GAIX,EAAAe,YAAA,QAAoB,CAAC,CACnB/jB,GAAI,2BACJgkB,UAAW,iBAAM,+BAAGxiB,EAAE,+BACtByiB,QAASziB,EAAE,kBACX0iB,KAAM,yEACJ,SAAMlB,mBAAN,SAEA,EAAAe,YAAA,UAAsB,CAAC,kCACzB,EACF,EACF,IA2BKZ,GACC,UAAC,SAAQ,EACPI,KAAMA,EACNY,MAAO,kBAAMX,EAAQ,KACrB3S,MAAO,EACPuT,OAAQ,CACN,CACE3O,IAAKqN,CACP,EACD,CACDuB,UAAW,CAAEC,KAAM,CAAE,EACrBC,WAAY,CAAEC,gBAAiB,GAAMC,qBAAsB,EAAK,EAChEC,OAAQ,CAAEC,KAAM,CAAE,yBAA0B,mBAAoB,CAAE,EAClEC,QAAS,CAAC,SAAQ,CAAC,CACnBC,SAAU,CACRA,SAAU,gBAAGC,EAAA,EAAAA,KAAA,CACX,EAAAnB,SAAA,cAAuB,CAACmB,EAAMrP,GAAG,CACnC,CACF,QAlEC,IAuEX,wJCzGasP,EAAW,SACtBnQ,CAAK,EAEL,IAAQ3C,EAAmB2C,EAAnB3C,QAAQ,CAAE/R,EAAS0U,EAAT1U,IAAI,CAChB8kB,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAA8B,OAAA0b,aAAA,EAAc,CAC1C1b,KAAMA,CACR,GAFQyb,EAAsB,EAAtBA,UAAU,CAAEW,EAAU,EAAVA,KAAK,CAIzB,GAAI,CAACX,EACH,MAAM,AAAIvW,MACR,gEAIJ,IAAM6f,EAAuBD,EAAYE,QAAQ,CAAChlB,EAAiB,CACjE+R,SAAU,SAAC4B,CAAK,EACU,YAApB,OAAO5B,GACTA,EAAS4B,GAGXmR,EAAYG,WAAW,CAACjlB,EAC1B,CACF,GAEA,MACE,+BACE,UAAC,UAAY,kBACXoX,YAAY,MACZtX,GAAIE,GACA0U,EACAqQ,GAAA,CACJG,UAAW9I,EAAMlW,KAAK,CACtB4V,UAAW,CAAC,CAACL,EAAW9U,KAAK,KAKrC,ygBC1BA,IAAMwe,EAAqB,cAAO,EAAAtJ,WAAW,OAKhCuJ,EAA4B,cAAO,EAAAtU,GAAG,OAmGnD,EA1Fc,gBAkFL,EACoB,MAjF3B9Q,IAAI,CAAJA,EAAA,WAAO,UACPmW,EAAA,EAAAA,KAAA,CACAvF,EAAA,EAAAA,WAAA,CACAhR,EAAA,EAAAA,QAAA,KACAqR,QAAQ,CAARA,EAAA,WAAW,UACXM,EAAA,EAAAA,YAAA,CACA+J,EAAA,EAAAA,UAAA,CACAtJ,EAAA,EAAAA,QAAA,CACA9L,EAAA,EAAAA,KAAA,CACA6L,EAAA,EAAAA,QAAA,CACAsT,EAAA,EAAAA,SAAA,CACAC,EAAA,EAAAA,UAAA,CACAC,EAAA,EAAAA,OAAA,CACAlO,EAAA,EAAAA,QAAA,CACG1C,EAAA,WAdH,OACA,QACA,cACA,WACA,WACA,eACA,aACA,WACA,QACA,WACA,YACA,aACA,UACA,aAGMmQ,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAAQyb,EAAe,KAAAC,aAAA,EAAc,CACnC1b,KAAMA,CACR,GAFQyb,UAAU,CAIlB,GAAI,CAACA,EACH,MAAM,AAAIvW,MACR,gEAIJ,IAAMsgB,EAAoBV,EAAYE,QAAQ,CAAChlB,EAAiB,SAC9D+R,SAAU,SAAC4B,CAAK,EACU,YAApB,OAAO5B,GACTA,EAAS4B,GAGXmR,EAAYG,WAAW,CAACjlB,EAC1B,GACGJ,IAGL,MACE,UAAC,EAAAkR,GAAG,EAACwG,MAAM,OAAOrG,SAAUA,AAAa,OAAbA,EAAoBA,EAAWlK,KAAAA,WACzD,WAACoe,EAAA,CACCrJ,UAAWL,EAAWM,OAAO,CAC7BT,WAAYA,YAEZ,WAAC,EAAA/K,IAAI,EAACC,cAAc,gBACjB2F,GAAS,UAAC,EAAA8F,SAAS,EAACwJ,QAASzlB,WAAOmW,IACpCoP,GACC,UAAC,EAAAG,OAAO,EAACvP,MAAOoP,EAASI,SAAQ,GAACC,UAAU,eAC1C,UAAC,EAAAC,QAAQ,EACPxU,MAAM,YACNiC,QAAS,EACTwS,MAAO,CAAEC,UAAW,CAAE,SAK9B,WAAC,EAAA/U,UAAU,YACRqU,GAAa,UAAC,EAAAW,cAAc,WAAEX,IAC/B,WAACD,EAAA,WACC,UAAC,OAAW,UACVxU,YAAaA,EACbK,SAAUA,AAAa,OAAbA,EAAoBA,EAAWlK,KAAAA,EACzCwK,aAAcA,EACdS,SAAUA,EACV9L,MAAOA,EACPpG,GAAIE,GACA2U,EACA6Q,IAELnO,KAEFiO,GAAc,UAAC,EAAAW,eAAe,WAAEX,OAElC,CAAgB,OAAhB,GAAA7J,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAkB,OAAhB,GAAArB,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,OAKtD,gMC7GMqhB,EAAwC,CAC5CC,oBAAqB,EACrBC,uBAAwB,CAC1B,EA+EA,EA7EoB,gBAsEb,EACoB,EAtEzBpmB,EAAA,EAAAA,IAAA,CACA4Q,EAAA,EAAAA,WAAA,CACAhR,EAAA,EAAAA,QAAA,CACAyS,EAAA,EAAAA,GAAA,CACAC,EAAA,EAAAA,GAAA,CACAf,EAAA,EAAAA,YAAA,CACA4E,EAAA,EAAAA,KAAA,CACAkQ,EAAA,EAAAA,KAAA,CACG1R,EAAA,WARH,OACA,cACA,WACA,MACA,MACA,eACA,QACA,UAGMmQ,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAA8B,OAAA0b,aAAA,EAAc,CAC1C1b,KAAMA,CACR,GAFQyb,EAAsB,EAAtBA,UAAU,CAAEW,EAAU,EAAVA,KAAK,CAIzB,GAAI,CAACX,EACH,MAAM,AAAIvW,MACR,gEAIJ,IAA2C,EAAA4f,EAAYE,QAAQ,CAC7DhlB,EACA,SACE+R,SAAU,WACR+S,EAAYG,WAAW,CAACjlB,EAC1B,GACGJ,IANCmS,EAAmC,EAAnCA,QAAQ,CAAKyT,EAAA,QAAsB,GAAnC,aAUR,MACE,WAAC,EAAA3J,WAAW,EAACC,UAAWL,EAAWM,OAAO,WACvC5F,GAAS,UAAC,EAAA8F,SAAS,EAACwJ,QAASzlB,WAAOmW,IAErC,WAAC,EAAAmQ,WAAW,kBACVpU,KAAM,EACNC,UAAW,EACXE,IAAKA,EACLC,IAAKA,EACLf,aAAcA,GACVoD,GAAA,CACJ5C,SAAU,SAACwU,CAAa,CAAE9T,CAAa,EACrCV,EAAS,CAAEN,OAAQ,CAAEvL,MAAOuM,EAAezS,KAAAA,CAAK,CAAE,EACpD,YAEA,WAAC,EAAAgR,UAAU,YACRqV,GAAS,UAAC,EAAAL,cAAc,WAAEK,IAC3B,UAAC,EAAAG,gBAAgB,kBACf1mB,GAAIE,EACJ4Q,YAAaA,GACT4U,GAAA,CACJtf,MAAOkW,EAAMlW,KAAK,CAClB4f,MAAOO,EAAQH,EAAyB,CAAC,QAG7C,WAAC,EAAAO,kBAAkB,YACjB,UAAC,EAAAC,sBAAsB,KACvB,UAAC,EAAAC,sBAAsB,YAI1B,CAAgB,OAAhB,GAAAlL,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAkB,OAAhB,GAAArB,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,KAIpD,qSCjGA,IAAM+hB,EAAuC,cAAO,EAAAC,MAAM,OA4D1D,EAnDiD,gBAC/C1hB,EAAA,EAAAA,OAAA,CACAyL,EAAA,EAAAA,WAAA,CACAhR,EAAA,EAAAA,QAAA,KACAI,IAAI,CAAJA,EAAA,WAAO,WAED8kB,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAQxB,GAAI,CAJmB,KAAA0b,aAAA,EAAc,CACnC1b,KAAMA,CACR,GAFQyb,UAAU,CAKhB,MAAM,AAAIvW,MACR,gEAIJ,IAAMsgB,EAAoBV,EAAYE,QAAQ,CAAChlB,EAA2B,SACxE+R,SAAU,WACR+S,EAAYG,WAAW,CAACjlB,EAC1B,GACGJ,IAGL,MACE,WAACgnB,EAAA,iBACCE,UAAW,CAAExP,MAAO,OAAQ,EAC5B/F,aAAa,IACTiU,GAAA,WAEJ,UAAC,UAAOtf,MAAM,GAAG8L,SAAQ,YACtBpB,IAEFzL,MAAAA,EAAA,OAAAA,EAASsL,GAAG,CAAC,gBAAGrI,EAAA,EAAAA,GAAA,CAAKlC,EAAA,EAAAA,KAAA,CACpB,MACE,UAAC,UAAOA,MAAOkC,WACZlC,GADsBkC,EAI7B,MAGN,klBC5DA,IAAM2e,EAAY,aAAU,MAwBfC,EAAqB,gBA4DzB,EA3DP7Q,EAAA,EAAAA,KAAA,KACA8Q,QAAQ,CAAG,IAEXjnB,IAAI,CAAJA,EAAA,WAAO,kBACPsb,EAAA,EAAAA,UAAA,CACA/J,EAAA,EAAAA,YAAA,CACA2V,EAAA,EAAAA,MAAA,CAEcC,EAAA,EAAdC,YAAY,CAEJ9lB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAED+lB,EAAa,KAAA7L,cAAA,IAAb6L,QAAQ,CACVC,EAAS,KAAAhH,WAAA,EACb,SAACiH,CAAY,EACXF,EACErnB,EAEAunB,EACA,CAAEC,eAAgB,EAAK,EAE3B,EACA,CAACH,EAAUrnB,EAAK,EAEqC,OAAAynB,WAAA,EAAY,CACjEP,OAAAA,EACAD,SAzBF,YAAW,EA0BTK,OAAAA,CACF,GAJQI,EAA+C,EAA/CA,YAAY,CAAEC,EAAiC,EAAjCA,aAAa,CAAEC,EAAkB,EAAlBA,aAAa,CAM1CnM,EAAe,KAAAC,aAAA,EAAc,CACnC1b,KAAMA,CACR,GAFQyb,UAAU,CAIZoM,EAAcD,EAAclhB,MAAM,CAClC0gB,EAAeD,GAAyB7lB,EAAE,6BAE1CwmB,EAAQF,EAAcnX,GAAG,CAAC,SAACsX,CAAI,QACnC,WAAC,gBACEA,EAAK7e,IAAI,CAAC,MAAI6e,EAAKxN,IAAI,CAAC,WADlBwN,EAAK7e,IAAI,IAKd8e,EAAkBH,EACpBD,EAAclhB,MAAM,CAAG,EACrBpF,EAAE,0BAA2B,CAAE2mB,WAAYL,EAAclhB,MAAM,AAAC,GAChEohB,EACFvW,GAAgB6V,EAEpB,MACE,UAAC,EAAAtW,GAAG,WACF,WAAC,EAAA+K,WAAW,EAACP,WAAYA,EAAYQ,UAAWL,EAAWM,OAAO,WAC/D5F,GAAS,UAAC,EAAA8F,SAAS,WAAE9F,IACtB,UAAC,EAAArF,GAAG,EAAC2H,UAAU,qBACb,WAACsO,EAAA,mBAAcW,KAAA,WACb,UAAC,mBAAUC,MACX,UAAC,EAAAxT,IAAI,WAAE6T,UAGV,CAAgB,OAAhB,GAAAvM,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAErB,EAAW9U,KAAK,CAAC9B,OAAO,OAKrD,+HChGMqjB,EAAiB,CACrB7W,MAAO,OACPkG,WAAY,IACZM,SAAU,MACZ,EAEaoE,EAAY,SACvBvH,CAAK,EAEL,MAAO,UAAC,WAAe,UAACoR,MAAOoC,GAAoBxT,GACrD,sCCRO,SAASyT,EACdC,CAAmB,CACnBrd,CAAiD,EAEjD,OAAOqd,EAAS3X,GAAG,CAAC,SAACrM,CAAO,EAC1B,IAMqB,EANfob,EAAyB,CAAC,EAE1B6I,EAAqBtd,MAAAA,EAAA,OAAAA,EAAM4V,IAAI,CACnC,SAAC2H,CAAW,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAazH,WAAW,AAAD,IAAMzc,CAAAA,MAAAA,EAAA,OAAAA,EAASyc,WAAW,AAAD,IAG7DjU,EAAeyb,MAAAA,EAAA,OAAiC,OAAjC,GAAAA,EAAoB5H,aAAa,AAAD,GAAhC,oBAAmCE,IAAI,CAC1D,SAACvZ,CAAI,SAAKA,AAAS,IAATA,IAYZ,OATAoY,EAAS,MAAS,CAAG,CACnBlC,QAASlZ,MAAAA,EAAA,OAAAA,EAASsZ,KAAK,AACzB,EACA8B,EAAS,gBAAmB,CAAG6I,MAAAA,EAAA,OAAAA,EAAoBjG,gBAAgB,CACnE5C,EAAS,aAAgB,CAAG6I,MAAAA,EAAA,OAAAA,EAAoBE,kBAAkB,CAClE/I,EAAS,mBAAsB,CAAG6I,MAAAA,EAAA,OAAAA,EAAoBvO,WAAW,CACjE0F,EAAS,IAAO,CAAG6I,MAAAA,EAAA,OAAAA,EAAoBG,eAAe,CACtDhJ,EAAS,MAAS,CAAG6I,MAAAA,EAAA,OAAAA,EAAoBI,SAAS,CAE3C,CACLrgB,IAAKhE,EAAQ8c,YAAY,GACzBwH,KACEtkB,EAAQmkB,kBAAkB,EAC1BnkB,EAAQyc,WAAW,EACnBzc,EAAQ8c,YAAY,GACtB9c,QAASA,EACTwI,aAAAA,EACA4S,SAAAA,CACF,CACF,EACF,6pBCnBA,IAAMmJ,EAAuB,aAAU,MAgBjCC,EAAqB,WACzB,IAAQvnB,EAAiB,EAAAwnB,iCAAA,UAA2C,GAA5DxnB,YAAY,CAC4B,OAAAse,QAAA,IAAxCD,EAAwC,EAAxCA,aAAa,CAAEoJ,EAAyB,EAAzBA,oBAAoB,CAE3C,MAAO,KAAAC,QAAA,EAAS,CACdC,SAAU,CACR,YACA3nB,EACAqe,EACAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,CACxB,CACD+lB,QAAS,uBAODC,EAIAC,wDAVO,SAAM,EAAA9Z,UAAA,gCAA0C,CAAC,CAC5DhO,aAAc,CAACA,EACf6B,SAAU,AAAAwc,CAAAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,AAAD,GAAK6D,KAAAA,EACrC6F,aAAc8S,EAAc9S,YAAY,EAAIkc,CAC9C,WAeA,OATMK,EAAyBD,MAJzBA,CAAAA,EAAsBne,AANf,SAMoBnB,MAAM,CACrC,SAACwf,CAAI,SAAKA,EAAKC,YAAY,GAAK,EAAAC,cAAA,gBAA8B,IAGjC,OAAAJ,EAAqBzY,GAAG,CAAC,SAACrM,CAAO,EAC9D,OAAO,EAAAmlB,YAAA,+BAA2C,CAACnlB,EACrD,GAOO,GALqB,KAAA+jB,qBAAA,EAC1BgB,EACAD,MAIJ,EACF,EACF,EAEaM,EAAiB,gBAC5B1P,EAAA,EAAAA,WAAA,CAEQjE,EAAU,KAAA4T,QAAA,IAAV5T,KAAK,CACP6T,EAAW,KAAAC,aAAA,IACTC,EAAe,KAAAC,cAAA,IAAfD,UAAU,CAE2B,EAAAhB,IAA/B,EAA+B,EAArC7d,IAAI,CAAE+e,EAAY,AAAZ,SAAY,IAAE,CAAd,EAAgBC,EAAe,EAAfA,UAAU,CAaxC,MAXA,KAAAC,SAAA,EACE,WACMD,EACF,EAAAE,UAAA,GAAa,GAEb,EAAAA,UAAA,IAAc,EAElB,EACA,CAACF,EAAW,EAIZ,iCACGH,GACC,UAAC,EAAA9Y,GAAG,EAACoZ,QAAS,WACZ,UAAC,EAAA/V,IAAI,EAAC9C,MAAM,oBAAYuY,MAG3B9P,GAAe,CAAC4P,GACf,UAAC,EAAAS,YAAY,EACXC,MAAO,EACPC,aAAc,GACdC,KAAM,KAAAhpB,CAAA,AAAAA,EAAE,YACRipB,KAAM,KAAAjpB,CAAA,AAAAA,EAAE,YACRkpB,YAAY,oCAEX1Q,IAGJ4P,EACC,UAAC,EAAAe,aAAa,WACZ,UAAC,EAAAC,MAAM,OAGT,+BACGZ,EAAUpjB,MAAM,CAAG,GAClB,UAACiiB,EAAA,UACEmB,EAAUrZ,GAAG,CAAC,gBAAGrI,EAAA,EAAAA,GAAA,CAAKsgB,EAAA,EAAAA,IAAA,CAAMlJ,EAAA,EAAAA,QAAA,CAAUpb,EAAA,EAAAA,OAAA,CAC/Bqb,EAAa5J,MAAAA,EAAA,OAAAA,EAAOqN,IAAI,CAC5B,SAACyH,CAAE,SAAKA,EAAG7qB,EAAE,GAAKsE,EAAQ8c,YAAY,KAGxC,MACE,UAAC,EAAA3B,eAAe,EACd7G,OAAQgQ,EAERkC,SAAUxiB,EACVoX,SAAUA,EACVpb,QAASA,EACTqb,WAAYA,WAEX,AAAAD,CAAAA,MAAAA,EAAA,OAAAA,EAAUqL,MAAM,AAAD,GACd,UAAC,EAAAC,eAAe,EAACD,OAAQrL,MAAAA,EAAA,OAAAA,EAAUqL,MAAM,IAPtCziB,EAWX,SAOd,uJCxHA,EAXuB,gBAAGlI,EAAA,EAAAA,QAAA,CACxB,OAAQA,EAASF,IAAI,EACnB,KAAK,EAAA+qB,eAAe,CAClB,MAAO,UAAC,EAAAvB,cAAc,EAAC1P,YAAa5Z,EAAS4Z,WAAW,EAC1D,MAAK,EAAAkR,eAAe,CAClB,MAAO,UAAC,SAAc,EAAClR,YAAa5Z,EAAS4Z,WAAW,EAC1D,SACE,MAAO,UAAC,SAAgB,EAACmR,gBAAiB/qB,GAC9C,CACF,gmCCFA,IAAMgrB,EAAO,cAAW,MAYlBhW,EAAU,aAAU,MAOpBiW,EAAQ,aAAU,MAQlBC,EAAQ,aAAU,MAOXC,EAAiB,cAAW,MAMnCC,EAA0B,CAC9BC,YAAa,SAAW,CACxBC,MAAO,SAAK,CACZC,MAAO,SAAM,AACf,EA+DA,EA7DgC,gBAAGtV,EAAA,EAAAA,KAAA,CAAO/R,EAAA,EAAAA,OAAA,CAASsnB,EAAA,EAAAA,aAAA,CAAezjB,EAAA0jB,EAAA1jB,MAAA,CACxD3G,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAW,KAAAzL,OAAA,IAEfD,EAEE0L,EAFF1L,YAAY,CACC2L,EACXD,EADFE,SAAS,CAAID,OAAO,CAEhB/R,EAAc1V,MAAAA,EAAA,OAAAA,EAAS0V,WAAW,CAElCsG,EAAWF,EAAa,SAACnV,CAAI,EACjC2gB,EAActnB,EAAS2G,EACzB,GAEA,MACE,UAAC,EAAAghB,YAAY,oBAAKH,GAAA,UAChB,WAACV,EAAA,CAAK9K,SAAUA,YACd,WAAC,iBACC,WAACgL,EAAA,WACEjV,EACA2D,GACC,UAACuR,EAAA,UACC,UAAC,EAAA3F,OAAO,EAACC,SAAQ,GAACxP,MAAO2D,WACvB,UAAC,EAAAkS,WAAW,EAAC3a,MAAM,2CAM3B,UAAC,EAAAd,IAAI,EAAC2R,IAAI,OAAO+J,WAAW,kBACzBhkB,MAAAA,EAAA,OAAAA,EAAQwI,GAAG,CAAC,SAACyb,CAAY,CAAE9jB,CAAG,EAC7B,IAAM0b,EACJwH,MAAAA,EAAA,OAAAA,CAAyB,CACvBY,MAAAA,EAAA,OAAAA,EAAc9kB,IAAI,CACnB,CAEH,MACE,UAAC0c,EAAA,CAGC4E,KAAMwD,MAAAA,EAAA,OAAAA,EAAcxD,IAAI,CACxBvjB,QAAS+mB,MAAAA,EAAA,OAAAA,EAAc/mB,OAAO,CAC9BnF,KAAMksB,EAAalsB,IAAI,CACvB4Q,YAAasb,EAAatb,WAAW,CACrChR,SAAUssB,EAAatsB,QAAQ,CAC/ByS,IAAK,GAPAjK,EAUX,QAGJ,WAAC8M,EAAA,WACC,UAACiW,EAAA,UAAO/mB,EAAQ+nB,cAAc,GAC9B,UAAC,EAAA7X,MAAM,EAAClN,KAAK,SAAS6M,QAAQ,iBAAiBgB,WAAY,CAAC4W,WACzDvqB,EAAE,oBAMf,iHCnEA,EArDA,SAAiC8mB,CAAmB,EAClD,OAAOA,EAAS3X,GAAG,CAAC,SAACrM,CAAO,EAC1B,IAAM6D,EAA6B,EAAE,CAErC,OAAQ7D,MAAAA,EAAA,OAAAA,EAASgoB,SAAS,EACxB,IAAK,SACHnkB,EAAOtG,IAAI,CAAC,CACVyF,KAAM,QACNpH,KAAM,WACN0oB,KAAMtkB,EAAQ+nB,cAAc,CAC5BhnB,QAAS,EAAAknB,iBAAiB,CAC1BzsB,SAAU,CAAE0sB,SAAU,EAAK,EAC3B1b,YAAa,KAAAtP,CAAA,AAAAA,EAAE,iBACjB,GACA,KACF,KAAK,QACH2G,EAAOtG,IAAI,CAAC,CACVyF,KAAM,QACNpH,KAAM,WACN0oB,KAAMtkB,EAAQ+nB,cAAc,CAC5Bvb,YAAa,KAAAtP,CAAA,AAAAA,EAAE,iBACf1B,SAAU,CAAE0sB,SAAU,EAAK,CAC7B,EAEJ,CAiBA,OAfArkB,EAAOtG,IAAI,CACT,CACEyF,KAAM,cACNpH,KAAM,eACN4Q,YAAa,KAAAtP,CAAA,AAAAA,EAAE,2BACf1B,SAAU,CAAE0sB,SAAU,GAAMja,IAAK,CAAE,CACrC,EACA,CACEjL,KAAM,cACNpH,KAAM,aACN4Q,YAAa,KAAAtP,CAAA,AAAAA,EAAE,wBACf1B,SAAU,CAAE0sB,SAAU,GAAMja,IAAK,CAAE,CACrC,GAGK,CACLjK,IAAKhE,EAAQ8c,YAAY,GACzBwH,KACEtkB,EAAQmkB,kBAAkB,EAC1BnkB,EAAQyc,WAAW,EACnBzc,EAAQ8c,YAAY,GAAK,GAC3B9c,QAASA,EACT6D,OAAAA,CACF,CACF,EACF,o1BC3BO,IAAMkiB,EAAe,cAAO,SAAiB,OAyHpD,EAvGsD,gBAAGrQ,EAAA,EAAAA,WAAA,CACf,eAAAlF,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACA,eAAA5X,QAAA,EAAyB,EAAE,KAA5D6X,EAAiC,KAAnBC,EAAmB,KAChChN,EAAkB,KAAAC,QAAA,IAAlBD,aAAa,CACbkK,EAAe,KAAAC,cAAA,IAAfD,UAAU,CACVvoB,EAAiB,EAAAwnB,iCAAA,UAA2C,GAA5DxnB,YAAY,CAEdsrB,EAAe,KAAArM,WAAA,EAAY,SAAClc,CAAO,CAAWwoB,CAAM,EACxD,IAAMC,EAAWD,MAAAA,EAAA,OAAAA,EAAQC,QAAQ,CAC3BC,EAAeC,SAASH,MAAAA,EAAA,OAAAA,EAAQI,YAAY,EAC5CC,EAAYF,SAASH,MAAAA,EAAA,OAAAA,EAAQM,UAAU,EAE7C,EAAAlM,QAAA,QAAgB,CACd,IAAI,EAAAmM,uBAAuB,CAAC,CAC1BrtB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAASA,EACTyoB,SAAUA,EACVO,aAAcN,EACdG,UAAWA,CACb,GAEJ,EAAG,EAAE,EAyCL,MAvCA,KAAAjD,SAAA,EAAU,iBAoCRqD,GAnCkB,uBACV/gB,EAgBE4c,EAIAC,wDApBF7c,EAAUoC,aAAaC,OAAO,CAAC,QAErC6d,EAAgB,qBAEG,gCAAM,cAErB,EAAAc,sBAAsB,CAAE,CACxBtiB,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBtlB,OAAQ,CACN5G,aAAAA,EACA6B,SAAU,AAAAwc,CAAAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,AAAD,GAAK6D,KAAAA,EACrC6F,aAAc8S,MAAAA,EAAA,OAAAA,EAAe9S,YAAY,CACzCN,QAAAA,CACF,CACF,kBAMM6c,EAAyBD,MAJzBA,CAAAA,EAAsBne,AAZX,SAATA,IAAI,CAYqBnB,MAAM,CACrC,SAACwf,CAAI,SAAUA,EAAKC,YAAY,GAAK,EAAAC,cAAA,gBAA8B,IAGtC,OAAAJ,EAAqBzY,GAAG,CAAC,SAACrM,CAAO,EAC9D,OAAO,EAAAmlB,YAAA,+BAA2C,CAACnlB,EACrD,GAMAsoB,EAJ4B,cAC1BvD,wBAKFqD,EAAgB,2BAEpB,gDAGF,EAAG,EAAE,EAGH,iCACG5C,GACC,UAAC,EAAA9Y,GAAG,EAACoZ,QAAS,WACZ,UAAC,EAAA/V,IAAI,EAAC9C,MAAM,oBAAYuY,MAG3B9P,GAAe,CAACyS,GACf,UAACpC,EAAA,CACCC,MAAO,EACPC,aAAc,GACdC,KAAM,KAAAhpB,CAAA,AAAAA,EAAE,YACRipB,KAAM,KAAAjpB,CAAA,AAAAA,EAAE,YACRkpB,YAAY,oCAEX1Q,IAGJyS,EACC,UAAC,EAAA9B,aAAa,WACZ,UAAC,EAAAC,MAAM,OAGT,AAAA+B,CAAAA,MAAAA,EAAA,OAAAA,EAAc/lB,MAAM,AAAD,EAAI,GACrB,UAAC,SAAW,WACT+lB,EAAahc,GAAG,CAAC,gBAAGrI,EAAA,EAAAA,GAAA,CAAKsgB,EAAA,EAAAA,IAAA,CAAMtkB,EAAA,EAAAA,OAAA,CAAS6D,EAAA0jB,EAAA1jB,MAAA,OACvC,UAAC,SAAG,EAEFyjB,cAAeiB,EACfxW,MAAOuS,EACPtkB,QAASA,EACT6D,OAAQA,GAAU,EAAE,EAJfG,SAYrB,oOCtEA,EA/DyB,gBAAG6iB,EAAA,EAAAA,eAAA,CACpBuC,EAAuBvC,EAAgBnrB,EAAE,CACvCwB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDsoB,EAAe,KAAAC,cAAA,IAAfD,UAAU,CAEkB,OAAA6D,iBAAA,EAAkB,CACpDvf,WAAYsf,CACd,GAFQf,EAA4B,EAA5BA,YAAY,QAIpB,AAJoC,EAAd5X,SAAS,CAM3B,UAAC,EAAA4V,aAAa,WACZ,UAAC,EAAAC,MAAM,OAMX,iCACGd,GACC,UAAC,EAAA9Y,GAAG,EAACoZ,QAAS,WACZ,UAAC,EAAA/V,IAAI,EAAC9C,MAAM,oBAAYuY,MAG3BqB,EAAgBnR,WAAW,EAC1B,UAAC,EAAAqQ,YAAY,EACXC,MAAO,EACPC,aAAY,GACZC,KAAMhpB,EAAE,YACRipB,KAAMjpB,EAAE,YACRkpB,YAAY,oCAEXS,EAAgBnR,WAAW,GAI/BmR,EAAgByC,IAAI,CAAChnB,MAAM,CAAG,GAC7B,UAAC,EAAAoK,GAAG,EAAC6c,GAAI,WACP,UAAC,SAAqB,EAACztB,SAAU+qB,MAIrC,UAAC,SAAW,WACTwB,EAAahc,GAAG,CAAC,WAAiCE,CAAK,MAAnCvI,EAAA,EAAAA,GAAA,CAAKsgB,EAAA,EAAAA,IAAA,CAAMzgB,EAAA0jB,EAAA1jB,MAAA,CAAQ7D,EAAA,EAAAA,OAAA,CAGtC,MACE,UAAC,EAAAwpB,aAAa,EAEZC,QAAS,CACPnF,KAAAA,EACAzgB,OAAQA,GAAU,EAAE,AACtB,EACA7D,QAASA,EACT0pB,YAAand,IAAU,AAAA8b,CAAAA,MAAAA,EAAA,OAAAA,EAAc/lB,MAAM,AAAD,EAAI,GANzC0B,EASX,OAIR,+OCpEaqlB,EAAoB,SAACM,CAAI,EACpC,IAAQ7f,EAAe6f,EAAf7f,UAAU,CAEV8f,EAAY,KAAAC,UAAA,IAAZD,OAAO,CACiB,eAAApZ,QAAA,EAAS,OAAlCC,EAAyB,KAAdqZ,EAAc,KACQ,eAAAtZ,QAAA,EAAyB,EAAE,KAA5D6X,EAAiC,KAAnBC,EAAmB,KAChChN,EAAkB,KAAAC,QAAA,IAAlBD,aAAa,CACbre,EAAiB,EAAAwnB,iCAAA,UAA2C,GAA5DxnB,YAAY,CACd8sB,EAAoB,QAAGH,EAAQpB,MAAM,IAkC3C,MAhCA,KAAA5C,SAAA,EAAU,iBA6BRqD,GA5BkB,uBAGRtiB,EAOAoe,wDATR+E,EAAW,qBAEI,gCAAM,EAAA7e,UAAA,gCAA0C,CAAC,CAC5DhO,aAAc,CAACA,EACf6B,SAAU,AAAAwc,CAAAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,AAAD,GAAK6D,KAAAA,EACrC6F,aAAc8S,MAAAA,EAAA,OAAAA,EAAe9S,YAAY,CACzCkB,YAAaI,EAAa,IAAMnH,KAAAA,CAClC,kBAEMoiB,EAAyBpe,MAPzBA,CAAAA,EAAO,UAOkB,OAAAA,EAAM0F,GAAG,CAAC,SAACrM,CAAO,EAC/C,IAAMlE,EAAWiuB,EAAiBxN,IAAI,CAAC,SAACyN,CAAG,EACzC,OAAOA,EAAItuB,EAAE,GAAKsE,EAAQ8J,UAAU,AACtC,GAEA,OAAO,EAAAqb,YAAA,+BAA2C,CAACnlB,EAAS,CAC1DlE,SAAAA,CACF,EACF,GAIAwsB,EAF4B,cAAUvD,wBAItC+E,EAAW,2BAEf,gDAGF,EAAG,CAAChgB,EAAW,EAER,CACL2G,UAAAA,EACA4X,aAAAA,CACF,CACF,sCCpDe,SAAS4B,EAAUjG,CAAmB,EACnD,OAAOA,EAAS3X,GAAG,CAAC,SAACrM,CAAO,QAAM,CAChCgE,IAAKhE,EAAQ8c,YAAY,GACzBwH,KACEtkB,EAAQmkB,kBAAkB,EAC1BnkB,EAAQyc,WAAW,EACnBzc,EAAQ8c,YAAY,GACtB9c,QAASA,EACT6D,OAAQ,CACN,CACEb,KAAM,QACNshB,KAAMtkB,EAAQ+nB,cAAc,AAC9B,EACD,AACH,GACF,0jCCLA,IAAMmC,EAAS,gBAAa,MAWtBpZ,EAAU,aAAU,MAQpBqZ,EAAY,cAAO,SAAI,OAIvBC,EAAe,cAAO,SAAM,OAK5BC,EAAoB,cAAO,EAAAle,IAAI,OA2CrC,EApCyB,WACvB,IAEqB,EAFb/P,EAAS,KAAAkuB,OAAA,IAATluB,IAAI,CAENmuB,EAAe,CAAgB,OAAhB,QAAA7e,UAAA,IAAaC,EAAE,CAAC,GAAE,GAAlB,oBAAqBF,OAAO,AAAD,GAAK,CACnDzH,IAAK,SACP,EAEgC,OAAAwmB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,IAAM,CAAC,EAAzDvO,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CACnBlD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHutB,EACJC,CAAAA,CAAQtuB,CAAAA,MAAAA,EAAA,OAAAA,EAAMuuB,WAAW,AAAD,GAAMD,CAAAA,CAAQztB,GAAiBytB,CAAAA,CAAQtqB,EAE3DwqB,EAAiC,CAACxuB,CAAAA,MAAAA,EAAA,OAAAA,EAAMuuB,WAAW,AAAD,EAExD,MACE,WAACT,EAAA,WACC,UAAC,SAAQ,KACR,AAAA9tB,CAAAA,MAAAA,EAAA,OAAAA,EAAMuuB,WAAW,AAAD,GACf,UAACR,EAAA,CAAUxU,UAAU,MAAM/X,OAAQ,KAAAitB,gBAAA,EAAiB3tB,KAEtD,WAAC4T,EAAA,WACE2Z,GACC,UAACL,EAAA,CAAantB,aAAcA,EAAcmD,MAAOA,IAElDwqB,GACC,UAAC,EAAA1f,WAAW,IAAM5F,KAAKC,SAAS,CAACglB,IAEnC,WAACF,EAAA,WACC,UAAC,EAAAS,gBAAgB,KACjB,UAAC,SAAW,aAKtB,gLC7EA,IAAMC,KAAa,yDACjB,EAAA9f,UAAA,gBACU,CAAC,CACPvK,IAAK,oCACLkG,OAAQ,MACRzB,MAAO,CACL+C,QAASoC,aAAaC,OAAO,CAAC,OAChC,CACF,GACCrI,IAAI,CAAC,SAAC8oB,CAAS,EACVA,GAAa,AAAqB,UAArB,OAAOA,GACtBngB,OAAOoU,IAAI,CAAC,EAAAgM,QAAA,qBAA6B,CAACD,GAAY,SAE1D,QACJ,+CAEaH,EAAmB,SAAC3tB,CAAC,EAChC,MAAO,CACLuU,MAAO,CACL,CACEzN,IAAK,SACLpI,KAAMsB,EAAE,qBACRgU,GAAI6Z,EACJG,KAAM,UAAC,EAAAtD,WAAW,EAACnU,SAAS,QAC9B,EACD,AACH,CACF,wNCFA,EA9BwB,iBACtB,WAAC,OACC0X,MAAM,6BACNzvB,GAAG,UACH,YAAU,UACV0vB,QAAQ,4BAER,UAAC,QACCC,EAAE,4KACFhX,UAAU,UAEZ,UAAC,QACCgX,EAAE,+KACFhX,UAAU,UAEZ,UAAC,QACCgX,EAAE,kcACFhX,UAAU,UAEZ,UAAC,QACCgX,EAAE,oGACFhX,UAAU,UAEZ,UAAC,QACCgX,EAAE,ggBACFhX,UAAU,mKCvBHiX,EAAuB,KAAAC,UAAA,EAAW,SAACjb,CAAK,CAAakb,CAAG,EACnE,MACE,UAAC,EAAAC,IAAI,kBACHvY,MAAO,EACPtD,OAAQ,GACJU,GAAA,CACJkb,IAAKA,EACLJ,QAAQ,YACRM,KAAK,oBAEL,UAAC,QACCC,SAAS,UACTC,SAAS,UACTP,EAAE,suBACFK,KAAK,mBAIb,8IClBaG,EAAa,SAACvb,CAAK,EAC9B,MACE,UAAC,EAAAmb,IAAI,oBACCnb,GAAA,CACJoR,MAAO,CAAExO,MAAO,GAAItD,OAAQ,EAAG,EAC/Bwb,QAAQ,gBACRM,KAAK,oBAEL,UAAC,QAAKL,EAAE,w0EAGd,4ICXaS,EAAY,SAACxb,CAAK,EAC7B,MACE,UAAC,EAAAmb,IAAI,oBAAKnb,GAAA,CAAO8a,QAAQ,kBAAkBM,KAAK,oBAC9C,UAAC,QACCL,EAAE,kwCAeV,wmBCRA,IAAMU,EAAc,cAAO,EAAAld,MAAM,OAO3BgG,EAAgB,cAAO,EAAAnI,GAAG,OAYnBga,EAAkB,gBAC7BD,EAAA,EAAAA,MAAA,CAEwB,eAAAjW,QAAA,EAAS,OAA1ByO,EAAiB,KAAXC,EAAW,KACE,eAAA1O,QAAA,EAAS,MAA5BjE,EAAmB,KAAZyf,EAAY,KAEpBlM,EAAS,KAAAmM,OAAA,EAA2B,WACxC,OAAOxF,EAAOpa,GAAG,CAAC,SAACrQ,CAAK,EACtB,MAAO,CACLN,GAAIM,EACJmV,IAAKnV,CACP,CACF,EACF,EAAG,CAACyqB,EAAO,EAELyF,EAAa,SAACC,CAAK,SAAc,kBAAMjN,EAAQiN,KAE/CC,EAAc,mBAClBJ,EAD4B,EAAPzf,KAAK,GAGtB8f,EAAcvM,EAAOxd,MAAM,EAAI,EAErC,MACE,WAAC,EAAAoK,GAAG,EAAC4f,SAAS,qBACZ,UAAC,SAAQ,EACP/f,MAAOA,EACPuT,OAAQA,EACRQ,QAAS,CAAC,SAAM,CAAC,CACjBiM,GAAI,CACFC,KAAMJ,EACNK,MAAOP,EAAW,GACpB,EACAQ,SAAU,CACRC,QAAS,EACTjb,QAAS,EACTkb,SAAU,QACVC,OAAQR,CACV,EACAtU,OAAQ,CACN+U,SAAUT,EAAc,kBAAM,MAAO1pB,KAAAA,EACrCoqB,SAAUV,EAAc,kBAAM,MAAO1pB,KAAAA,CACvC,EACAqqB,OAAQ,CACNtL,MAAO,CACLxO,MAAO,OACPrG,SAAU,QACVogB,YAAa,QACbC,OAAQ,QACV,CACF,IAED,CAACb,GACA,UAACN,EAAA,UACE3nB,MAAMV,IAAI,CAAC,CAAEpB,OAAQwd,EAAOxd,MAAM,AAAC,GAAG+J,GAAG,CAAC,SAAC+B,CAAC,CAAEoS,CAAK,QAClD,UAAC3L,EAAA,CAEC3F,QAAS,CAAC,MAAO,KAAM,OAAO,CAC9BsG,GAAIjJ,IAAUiU,EAAQ,UAAY,iBAClCxR,QAAS,kBAAMod,EAAY,CAAE7f,MAAOiU,CAAM,KAHpC,QAAa,OAANA,QASrB,UAAC,SAAQ,EACPvB,KAAMA,EACNY,MAAOqM,EAAW,IAClB3f,MAAOA,EACPuT,OAAQA,EACR4M,SAAU,CACRG,OAAQR,CACV,EACAE,GAAI,CAAEC,KAAMJ,CAAY,EACxBrM,UAAW,CAAEC,KAAM,CAAE,EACrBjI,OAAQ,CACN+U,SAAUT,EAAc,kBAAM,MAAO1pB,KAAAA,EACrCoqB,SAAUV,EAAc,kBAAM,MAAO1pB,KAAAA,CACvC,EACAsd,WAAY,CAAEC,gBAAiB,GAAMC,qBAAsB,EAAK,EAChEC,OAAQ,CAAEC,KAAM,CAAE,yBAA0B,mBAAoB,CAAE,MAI1E,oUCjHO,IAAM8M,EAAY,sBAAU,6NCWtBC,EAAuB,gBAAG3G,EAAA,EAAAA,MAAA,CACb,eAAAjW,QAAA,EAAS,OAA1ByO,EAAiB,KAAXC,EAAW,KACE,eAAA1O,QAAA,EAAS,MAA5BjE,EAAmB,KAAZyf,EAAY,KACpBqB,EAAkB,KAAAC,eAAA,EACtB,uCACA,GAGIxN,EAAS,KAAAmM,OAAA,EAA2B,WACxC,OAAOxF,EAAOpa,GAAG,CAAC,SAACrQ,CAAK,EACtB,MAAO,CACLN,GAAIM,EACJmV,IAAKnV,CACP,CACF,EACF,EAAG,CAACyqB,EAAO,EAEL8G,EAAgBzN,EAAOzQ,KAAK,CAAC,EAAGge,GAChCG,EAAoB1N,EAAOxd,MAAM,CAAG+qB,EAEpCnB,EAAa,SAACC,CAAK,SAAc,kBAAMjN,EAAQiN,KAE/CC,EAAc,mBAClBJ,EAD4B,EAAPzf,KAAK,UAG5B,AAAKghB,EAAcjrB,MAAM,CAKvB,iCACE,WAAC,EAAA6J,IAAI,EAACC,cAAc,MAAMyb,WAAW,mBAClC0F,EAAclhB,GAAG,CAAC,SAACmU,CAAK,CAAEiN,CAAC,QAC1B,UAAC,EAAAN,SAAS,EAERhc,IAAKqP,EAAMrP,GAAG,CACdnC,QAAS,WACPod,EAAY,CAAE7f,MAAOkhB,CAAE,GACvBvB,EAAW,KACb,GALK1L,EAAMrP,GAAG,IAQjBqc,EAAoB,GACnB,WAAC,EAAAzd,IAAI,EAAC9C,MAAM,WAAWygB,WAAW,mBAAS,KACtCF,QAKT,UAAC,SAAQ,EACPvO,KAAMA,EACNY,MAAOqM,EAAW,IAClB3f,MAAOA,EACPuT,OAAQA,EACRyM,GAAI,CAAEC,KAAMJ,CAAY,EACxBrM,UAAW,CAAEC,KAAM,CAAE,EACrBC,WAAY,CAAEC,gBAAiB,GAAMC,qBAAsB,EAAK,EAChEC,OAAQ,CAAEC,KAAM,CAAE,yBAA0B,mBAAoB,CAAE,OA/B/D,IAmCX,qXClEA,IAAMsN,EAAiB,cAAO,EAAAjhB,GAAG,OAOpBoe,EAAmB,WAC9B,IAAQ8C,EAAS,KAAAziB,cAAA,IAATyiB,IAAI,CACEnF,EAAa,KAAAoF,cAAA,IAAnBjf,IAAI,CACoB,eAAA4B,QAAA,EAASiY,GAAA,GAAlCqF,EAAyB,KAAfC,EAAe,KAEhC,KAAAnI,SAAA,EAAU,WACRmI,EAAYtF,GACZuF,EAAiBvF,EACnB,EAAG,CAACA,EAAS,EAEb,IAAMuF,EAAmB,SAACC,CAAa,EACrC,EAAAC,SAAA,YAAqB,CAACD,GAElB3jB,aAAaC,OAAO,CAAC,UAAY0jB,IACnC3jB,aAAa6jB,OAAO,CAAC,OAAQF,GAC7BL,EAAKQ,cAAc,CAACH,GACpBnjB,SAASujB,MAAM,GAEnB,EAEA,MACE,WAACV,EAAA,WACC,UAAC,QAAW,EACV3a,YAAY,cACZE,MAAM,OACNG,aAAcya,AAAa,OAAbA,EAAoB,UAAY,GAC9C9e,QAAS,kBAAMgf,EAAiB,gBACjC,+CAGD,UAAC,EAAA7Y,OAAO,EAACC,YAAY,WAAWxF,OAAO,OAAOoD,YAAY,QAC1D,UAAC,QAAW,EACVA,YAAY,cACZE,MAAM,OACNG,aAAcya,AAAa,OAAbA,EAAoB,UAAY,GAC9C9e,QAAS,kBAAMgf,EAAiB,gBACjC,cAKP,wMCrDa1H,EAAS,gBACpBgI,EAAA,EAAAA,WAAA,CACG/d,EAAA,WADH,gBAKA,MACE,UAAC,EAAAsD,OAAO,UACN0a,UAAU,MACVC,MAAM,QACNC,WAAW,WACXxhB,MAAM,UACNkJ,KAAK,MACAmY,EACA,CACC5M,MAAO,CACL4K,SAAU,QACVoC,IAAK,MACLC,KAAM,KACR,CACF,EACA,CAAC,EACDpe,GAGV,EAEMqe,EAAuC,CAC3Cpc,QAAS,GACTzF,cAAe,OACf8hB,WAAY,MACd,EAEaxI,EAAgB,SAC3B/V,CAAK,EAEL,IAAQwe,EAAmCxe,EAAnCwe,OAAO,CAAE7b,EAA0B3C,EAA1B2C,QAAQ,CAAK8b,EAAA,QAAaze,EAAA,CAAnC,UAAS,aAEjB,MACE,WAAC,EAAA5D,GAAG,oBAAMoiB,EAAUF,EAA6B,CAAC,EAAQG,GAAA,WACvDze,EAAMwe,OAAO,EACZ,UAACxI,EAAA,CACC5E,MAAO,CACL4K,SAAU,WACVqC,KAAM,MACND,IAAK,MACLM,OAAQ,CACV,IAGH/b,KAGP,uXC7CA,IAAMgc,EAAO,YAAS,KAEF,SAAC3e,CAAK,SAAKA,EAAMqF,SAAS,GA4D9C,EA9CkC,gBAChC/X,EAAA,EAAAA,MAAA,CACAyW,EAAA,EAAAA,SAAA,KACAsB,SAAS,CAEHvK,EAAW,KAAAC,WAAA,IAEX6jB,EAAa,KAAAhT,WAAA,EACjB,SAACpX,CAAI,SAAasG,EAAS,CAAE8F,GAAIpM,EAAMC,QAAS,EAAK,IACrD,EAAE,EAGJ,MACE,UAACkqB,EAAA,CAAKtZ,UAVR,WAAY,QAUkBtB,UAAWA,WACpCzW,EAAO6T,KAAK,CAACpF,GAAG,CAAC,gBAAGrI,EAAA,EAAAA,GAAA,CAAKpI,EAAA,EAAAA,IAAA,CAAMsvB,EAAA,EAAAA,IAAA,CAAMha,EAAA,EAAAA,EAAA,CAWpC,MACE,UAAC,SAAQ,WACNA,EACC,UAAC,EAAAhB,MAAM,EACLif,UAAWjE,EACXtb,OAAO,OACPC,QAAQ,iBACRb,QAjBQ,WACd,GAAIkC,QACF,AAAI,AAAc,YAAd,OAAOA,EACFA,IAGFge,EAAWhe,EAEtB,WAWStV,IAGHA,GAXWoI,EAenB,IAGN,+WCrEA,IAAMorB,EAAO,qBAAS,KAGX,mBACPC,AADU,EAAAA,MAAA,CACD,qBAAuB,uBAuBpC,EAJqC,gBAAGpc,EAAA,EAAAA,QAAA,KAAUoc,MAAM,CACtD,MAAO,UAACD,EAAA,CAAKC,OADmC,YAAS,WAC3Bpc,GAChC,+TCXa1X,EAAuB,WAClC,IAAQ2B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHoyB,EAAS,KAAAC,OAAA,EAAQ,EAAAC,WAAW,SAElC,AAAIF,AAAkB,IAAlBA,EAAOhtB,MAAM,CACR,KAIP,+BACGgtB,EAAOjjB,GAAG,CAAC,SAACojB,CAAK,CAAEljB,CAAK,EAGvB,MACE,WAAC,EAAA6Q,KAAK,EAEJ3B,OAAQ,CAAC,CAACgU,EAAMC,QAAQ,CACxB/T,QAAS,EAAA8D,YAAA,MAAkB,CAC3BtJ,KAAK,KACLwZ,eAAe,SACftS,WAAU,aAETuS,AAX8B,IAAVrjB,GAWA,UAAC,EAAA+Q,YAAY,KAClC,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEiS,EAAMI,KAAK,GACzB,UAAC,EAAApS,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC+R,EAAM/P,SAAS,OAGlB,UAAC,EAAA9B,WAAW,EAACkS,eAAe,SAASjI,WAAW,kBAC9C,WAAC,EAAAhK,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,EAAA5f,MAAM,EACLL,QAAQ,UACRmD,YAAY,MACZ+c,KAAM,IACN/gB,QAAS,kBAAM,EAAAyQ,YAAA,MAAkB,CAACgQ,EAAM/zB,EAAE,YAEzC+zB,EAAMO,WAAW,EAAI9yB,EAAE,YAEzBuyB,EAAM9P,OAAO,EACZ,UAAC,EAAAtP,WAAW,EACV0f,KAAM,IACN/c,YAAY,MACZhE,QAAS,uBACA,iCAAP,MAAO,GAAU,OAAV,GAAAygB,EAAM7P,IAAI,AAAD,GAAT,yBAAA6P,EAAa,EAAAQ,aAAA,SAAsB,MAC5C,YAECR,EAAM9P,OAAO,aAjCnB8P,EAAM/zB,EAAE,EAAI6Q,EAyCvB,IAGN,wUC3DM2jB,EAAS,KAAAC,YAAA,EAAa,iBAGfX,EAAcU,EAAOE,WAAW,CAAY,EAAE,EAErDC,EAA8C,CAClDX,SAAU,EACZ,EAEMY,EAAkD,SACtDT,MAAO,UACPlQ,QAAS,GACTqQ,YAAa,SACVK,GAGCE,EAAqD,SACzDV,MAAO,WAAM,CAAC,aACdlQ,QAAS,WAAM,CAAC,OAChBqQ,YAAa,WAAM,CAAC,UACpBvuB,SAAU,yDACRge,EAAaI,KAAK,QACpB,IACGwQ,GAGQJ,EAAgBC,EAAOE,WAAW,CAAU,MAE5C3Q,EAAe,2BACvB,KAAA+Q,SAAA,EAAUhB,EAAa,CACxBiB,KAAM,SAACriB,CAAC,CAAEsiB,CAAQ,QAChB,QAAGtiB,GAAA,OADmC,CAEtC,mBAAKiiB,EAAsBK,GAAA,CAAUhB,SAAU,KAChD,GACDiB,KAAM,SAACviB,CAAC,CAAEsiB,CAAQ,QAChB,QAAGtiB,GAAA,OADmC,CAEtC,mBAAKkiB,EAA0BI,GAAA,CAAUhB,SAAU,KACpD,GACDkB,QAAS,SAACxiB,CAAC,CAAEsiB,CAAQ,QACnB,QAAGtiB,GAAA,OADsC,CAEzC,mBAAKmiB,EAA6BG,GAAA,CAAUhB,SAAU,KACvD,GACDmB,SAAU,iBAAM,EAAE,EAClBC,UAAW,SAAC1iB,CAAC,CAAE1S,CAAE,SACf,AAAKA,EAIE0S,EAAE5I,MAAM,CAAC,SAAC6lB,CAAC,SAAKA,EAAE3vB,EAAE,GAAKA,IAHvB0S,CAIX,EACAyR,MAAO,SAACzR,CAAC,CAAE1S,CAAE,EACX,IAAIq1B,EAAyC,KAE7C,GAAI,AAAc,UAAd,OAAOr1B,EAAiB,CAC1B,IAAMs1B,EAAoB5iB,EAAE6iB,SAAS,CAAC,SAAC5F,CAAC,SAAKA,EAAE3vB,EAAE,GAAKA,IAEtD,GAAIs1B,AAAsB,KAAtBA,EACF,OAAO5iB,EAGT2iB,EAAiB3iB,EAAE8iB,MAAM,CAACF,EAAmB,EAAE,CAAC,EAAE,AACpD,CAEA,IAAMG,EAAsBJ,GAAkC3iB,EAAEgjB,GAAG,UAEnE,AAAKD,GAILE,WAAW,WAEoC,YAAzC,MAAOF,CAAAA,MAAAA,EAAA,OAAAA,EAAqB1vB,QAAQ,AAAD,GACrC,KAAA6vB,OAAA,EAAQ,eAAM,SAA4B,OAA5B,GAAAH,EAAoB1vB,QAAQ,AAAD,GAA3B,yBAAA0vB,IAElB,EAAG,GAEK,QAAG/iB,IAVF,EAAE,AAWb,CACF,KACAshB,SAAUF,EAAYnjB,GAAG,CAAC,SAACklB,CAAK,EAC9B,OAAOA,EAAMjvB,MAAM,CAAG,CACxB,GAEAkvB,aAAc,SAAC91B,CAAE,EACf,OAAO8zB,EAAYiC,QAAQ,GAAG3S,IAAI,CAAC,SAACuM,CAAC,SAAKA,EAAE3vB,EAAE,GAAKA,GACrD,IACG,KAAA80B,SAAA,EAAUP,EAAe,CAC1ByB,cAAe,SAAOtjB,CAAC,CAAKujB,CAAO,SAAQA,EAC7C,IAGWC,EAAiC,SAAKnmB,CAAO,EACxD,KAAAma,SAAA,EAAU,WACRnG,EAAaiS,aAAa,CAACjmB,EAC7B,EAAG,CAACA,EAAQ,CACd,kYCnGA,IAAMsV,EAAqB,cAAO,EAAAtJ,WAAW,OAoBhCoa,EAAkB,gBAsHtB,EACoB,EAtH3B9f,EAAA,EAAAA,KAAA,CACAhR,EAAA,EAAAA,OAAA,CACAmW,EAAA,EAAAA,UAAA,KACA4a,OAAO,CAAG,IACVC,iBAAiB,CAAG,IACpBC,iBAAiB,CACjBnlB,EAAA,EAAAA,QAAA,CACAyG,EAAA,EAAAA,QAAA,CACA3F,EAAA,EAAAA,QAAA,CACAC,EAAA,EAAAA,QAAA,CACAhS,EAAA,EAAAA,IAAA,CACAq2B,EAAA,EAAAA,WAAA,CACAC,EAAA,EAAAA,OAAA,CACG5hB,EAAA,WAbH,QACA,UACA,aACA,UACA,oBACA,oBACA,WACA,WACA,WACA,WACA,OACA,cACA,YAGMoQ,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAA8B,OAAA0b,aAAA,EAAc,CAC1C1b,KAAMA,EACNub,QAASuJ,EAAYvJ,OAAO,AAC9B,GAHQE,EAAsB,EAAtBA,UAAU,CAAEW,EAAU,EAAVA,KAAK,CAKnBlW,EAAQ,KAAAmqB,OAAA,EAAQ,WACpB,GAAI7nB,MAAMC,OAAO,CAAC2T,EAAMlW,KAAK,GACvBkW,EAAMlW,KAAK,CAACqwB,KAAK,CAAC,EAAAC,QAAQ,GAK5B,KAAAA,QAAA,EAASpa,EAAMlW,KAAK,EAJpB,OAAOkW,EAAMlW,KAAK,CAQtB,GAAIsC,MAAMC,OAAO,CAACtD,IAAY,CAACqD,MAAMC,OAAO,CAAC2T,EAAMlW,KAAK,EAAG,CACzD,IAAMuwB,EAAStxB,MAAAA,EAAA,OAAAA,EAASwb,IAAI,CAAC,SAAC+V,CAAG,SAAKA,EAAIxwB,KAAK,GAAKkW,EAAMlW,KAAK,GAE/D,GAAIuwB,EACF,OAAOA,CAEX,CAEA,GAAIjuB,MAAMC,OAAO,CAACtD,IAAY,KAAAwxB,gBAAA,EAAiBva,EAAMlW,KAAK,EAAG,CAC3D,IAAM0wB,EAAiBxa,EAAMlW,KAAK,CAE/BuK,GAAG,CAAC,SAACgmB,CAAM,SAAKA,EAAOvwB,KAAK,GAE/B,OAAOf,EAAQyE,MAAM,CAAC,SAAC8sB,CAAG,SAAKE,EAAeC,QAAQ,CAACH,EAAIxwB,KAAK,GAClE,CAEA,OAAO,IACT,EAAG,CAACkW,EAAOjX,EAAQ,EAEnB,GAAI,CAACsW,EACH,MAAM,AAAIvW,MACR,gEAIJ,IAAQ5D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAaHw1B,EAAgBT,EAAc,SAAe,CAAG,SAAM,CAE5D,MACE,UAAC,EAAAvlB,GAAG,EAACG,SAAUA,EAAUyG,SAAUA,WACjC,WAACyN,EAAA,CACCrJ,UAAWL,EAAWM,OAAO,CAC7BT,WAAYA,YAEXnF,GAAS,UAAC,EAAA8F,SAAS,EAACwJ,QAASzlB,WAAOmW,IACrC,UAAC2gB,EAAA,iBACCh3B,GAAIE,EACJmF,QAASA,EACTqf,OAvBmC,CACzCjJ,QAAS,SAACiJ,CAAM,CAAE,CAAR,MAAUvP,EAAA,EAAAA,UAAA,OAAkB,mBACjCuP,GAAA,CACHvN,gBAAiBhC,EAAa,UAAY,UAC1C8hB,YAAatb,EAAWM,OAAO,CAAG,MAAQ,UAC1CwH,OAAQtO,EAAa,cAAgB,aAEvCwhB,OAAQ,SAACjS,CAAM,QAAM,mBAAKA,GAAA,CAAQwS,UAAW,UAC7CC,WAAY,SAACzS,CAAM,QAAM,mBAAKA,GAAA,CAAQ4O,OAAQ,MAChD,EAeQ+C,kBAtFR,YAAoB,EAuFZC,kBAtFR,YAAoB,EAuFZxlB,YAAatP,EAAE,UACf40B,QA1FR,YAAU,EA2FF3kB,aAAcuT,EAAYoS,SAAS,CAACl3B,GACpCiV,WAAYjD,EACZmlB,YAAW,GACXC,cAAc,QAEV1iB,EACA0H,GAAA,CACJlW,MAAOA,EACPmxB,iBAAkBC,SAASryB,IAAI,CAC/B8M,SAAU,SAAC4B,CAAK,EACVA,GACFyI,EAAMrK,QAAQ,CAAC4B,GAES,YAApB,OAAO5B,GACTA,EAAS4B,IAEQ,OAAVA,GAAkB,AAAmB,YAAnB,OAAO2iB,IAElCA,IACAxR,EAAYyS,UAAU,CAACv3B,GAE3B,KAED,CAAgB,OAAhB,GAAAyb,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAkB,OAAhB,GAAArB,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,OAKtD,0FClJqC,+EAA/B2yB,EAA+B,MACnC,QADmC,EAClC,EAAAC,cAAA,MAAoB,CAAG,CACtBpmB,MAAO,OACP8E,MAAO,WAAM,CAAC,qBAChB,GACA,QALmC,EAKlC,EAAAshB,cAAA,UAAwB,CAAG,CAC1BpmB,MAAO,SACP8E,MAAO,WAAM,CAAC,yBAChB,GACA,QATmC,EASlC,EAAAshB,cAAA,WAAyB,CAAG,CAC3BpmB,MAAO,SACP8E,MAAO,WAAM,CAAC,0BAChB,GACA,QAbmC,EAalC,EAAAshB,cAAA,SAAuB,CAAG,CACzBpmB,MAAO,OACP8E,MAAO,WAAM,CAAC,wBAChB,GACA,QAjBmC,EAiBlC,EAAAshB,cAAA,KAAmB,CAAG,CACrBpmB,MAAO,QACP8E,MAAO,WAAM,CAAC,oBAChB,GACA,QArBmC,EAqBlC,EAAAshB,cAAA,UAAwB,CAAG,CAC1BpmB,MAAO,MACP8E,MAAO,WAAM,CAAC,yBAChB,GAxBmC,GA2BxBuhB,EAAa,gBACxB3yB,EAAA,EAAAA,MAAA,CAIA,GAAI,KAAA4yB,KAAA,EAAM5yB,GACR,OAAO,KAGT,IAAM6yB,EAAYJ,CAAW,CAACzyB,EAAO,CAErC,MAAO,UAAC,EAAA8yB,KAAK,EAACzgB,YAAawgB,MAAAA,EAAA,OAAAA,EAAWvmB,KAAK,UAAGumB,MAAAA,EAAA,OAAAA,EAAWzhB,KAAK,EAChE,2SC2BM2hB,EAAgB,gBACpBpP,EAAA,EAAAA,IAAA,CACA5O,EAAA,EAAAA,WAAA,CACA2O,EAAA,EAAAA,SAAA,CAEA,MACE,WAAC,EAAAsP,mCAAmC,YAClC,WAAC,EAAAxnB,IAAI,EAACwJ,UAAU,MAAMma,eAAe,0BAClCxL,EACA5O,GACC,UAAC,EAAAuR,cAAc,WACb,UAAC,EAAA3F,OAAO,EAACC,SAAQ,GAACxP,MAAO2D,WACvB,UAAC,EAAAkS,WAAW,EACV3a,MAAM,kCACN2mB,cAAc,mBAMvBvP,GAAa,UAAC,EAAA+I,oBAAoB,EAAC3G,OAAQpC,MAGlD,EA+DM6C,EAA0B,CAC9B5N,MA9DqB,gBAAGgL,EAAA,EAAAA,IAAA,CACxB,MACE,UAAC,EAAAuP,oCAAoC,WAClCvP,GAGP,EAyDE6C,YAAa,SAAW,CACxBC,MAxDgD,gBAChDxG,EAAA,EAAAA,QAAA,CACApU,EAAA,EAAAA,WAAA,CACAhR,EAAA,EAAAA,QAAA,KACAI,IAAI,CAEEwlB,EAAoBR,EAAW,WAAKA,EAF1C,WAAO,UAEkDplB,IAAc,CAAC,EAExE,MACE,UAAC,EAAAs4B,kCAAkC,WACjC,UAAC,EAAAC,oCAAoC,UACnCvnB,YAAaA,EACb2J,KAAK,KACLnD,YAAY,MACZhQ,KAAK,UACDoe,KAIZ,EAsCEiG,MApC+C,gBAC/CzG,EAAA,EAAAA,QAAA,CACA7f,EAAA,EAAAA,OAAA,CACAyL,EAAA,EAAAA,WAAA,CACAhR,EAAA,EAAAA,QAAA,KACAI,IAAI,CAAJA,EAAA,WAAO,WAEDwlB,EAAoBR,EAAW,WAAKA,EAAShlB,EAAMJ,IAAc,CAAC,EAExE,MACE,WAAC,EAAAgnB,oCAAoC,kBACnCrM,KAAK,KACLX,GAAG,UACH5Z,KAAMA,EACN8mB,UAAW,CAAExP,MAAO,OAAQ,EAC5B/F,aAAa,IACTiU,GAAA,WAEJ,UAAC,UAAOtf,MAAM,GAAG8L,SAAQ,YACtBpB,IAEFzL,MAAAA,EAAA,OAAAA,EAASsL,GAAG,CAAC,gBAAGrI,EAAA,EAAAA,GAAA,CAAKlC,EAAA,EAAAA,KAAA,CACpB,MACE,UAAC,UAAOA,MAAOkC,WACZlC,GADsBkC,EAI7B,MAGN,CAOA,EAEMgwB,EAAa,gBAAGC,EAAA,EAAAA,SAAA,CACdj0B,EAAUi0B,EAAUj0B,OAAO,CAE3Bie,EAAgB,SAACnc,CAAK,EAC1B,EAAA8a,QAAA,WAAmB,CAAC,CAClBlhB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAAAA,EACA+c,OAAQjb,CACV,EACF,EAEMoyB,EAA4Bl0B,EAAQlE,QAAQ,CAACq4B,SAAS,CAE5D,MACE,UAAC,EAAA1mB,aAAa,EACZC,mBAAoBumB,EAAUG,SAAS,GACvCzmB,SAAU,SAACwQ,CAAY,SAAaF,EAAcE,IAClDtQ,OAAQ7N,aAAmB,EAAAke,OAAO,CAAGle,EAAQq0B,IAAI,CAAG1xB,KAAAA,EACpDoL,UAAWmmB,EAA4B,EAAI,EAC3CpmB,KAAM9N,aAAmB,EAAAke,OAAO,CAAGle,EAAQs0B,UAAU,CAAG,GAG9D,EAEMC,EAAuB,gBAAGv0B,EAAA,EAAAA,OAAA,CACtB9C,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEHs3B,EAAU,KAAAtY,WAAA,EAAY,SAACuY,CAAY,EACvC,IAAMzP,EAAO,IAAI,EAAAnI,SAAS,CAAC,CACzBnhB,GAAI+4B,EAAa3X,YAAY,GAC7B9c,QAASy0B,CACX,GAEAzP,EAAK0P,SAAS,CAAC,GAEf,EAAA9X,QAAA,QAAgB,CAACoI,EACnB,EAAG,EAAE,EAEL,MACE,UAAC,EAAA9U,MAAM,EACLkD,WAAW,SACXxD,OAAO,OACPoD,YAAY,YACZhE,QAAS,kBAAMwlB,EAAQx0B,aAEtB9C,EAAE,WAGT,EAEassB,EAAgB,gBAC3BC,EAAA,EAAAA,OAAA,CACAzpB,EAAA,EAAAA,OAAA,CACA0pB,EAAA,EAAAA,WAAA,CAEQjY,EAAU,KAAA4T,QAAA,IAAV5T,KAAK,CACL5N,EAAiB4lB,EAAjB5lB,MAAM,CAAEygB,EAASmF,EAATnF,IAAI,CACd2P,EAAYxiB,MAAAA,EAAA,OAAAA,EAAO8K,IAAI,CAAC,SAACyI,CAAI,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAMtpB,EAAE,AAAD,IAAMsE,CAAAA,MAAAA,EAAA,OAAAA,EAASyc,WAAW,AAAD,IAExE,MACE,WAAC,EAAAkY,oBAAoB,YACnB,WAAC,EAAAC,sBAAsB,YACrB,WAAC,EAAAC,oBAAoB,YAClBvQ,GACC,UAACoP,EAAA,CACCpP,KAAMA,EACN5O,YAAa1V,MAAAA,EAAA,OAAAA,EAAS0V,WAAW,CACjC2O,UAAWrkB,EAAQqkB,SAAS,GAGhC,UAAC,EAAAyQ,sBAAsB,WACpBjxB,MAAAA,EAAA,OAAAA,EAAQwI,GAAG,CAAC,SAACyb,CAAY,CAAE9jB,CAAG,EAC7B,IAAM+wB,EAAcjN,MAAAA,EAAA,OAAAA,EAAcxD,IAAI,CAChC0Q,EAAiBlN,MAAAA,EAAA,OAAAA,EAAc/mB,OAAO,CAEtC2e,EAAYwH,CAAuB,CAACY,MAAAA,EAAA,OAAAA,EAAc9kB,IAAI,CAAC,QAE7D,AAAK0c,EAOH,UAACA,EAAA,CAEC4E,KAAMyQ,EACNh0B,QAASi0B,EACTp5B,KAAMksB,EAAalsB,IAAI,EAAI,QAC3B4Q,YAAasb,EAAatb,WAAW,CACrChR,SAAUssB,EAAatsB,QAAQ,EAL1BwI,IAPPxB,QAAQC,IAAI,CAAE,6BAA+C,OAAnBqlB,MAAAA,EAAA,OAAAA,EAAc9kB,IAAI,GAErD,KAaX,QAGJ,UAAC,EAAAiyB,eAAe,WACbhB,GAAa,CAACA,EAAUiB,QAAQ,CAC/B,UAAClB,EAAA,CAAWC,UAAWA,IAEvB,UAACM,EAAA,CAAqBv0B,QAASA,SAIpC0pB,GAAe,UAAC,EAAAvU,OAAO,EAACC,YAAY,iBAG3C,8yECjRO,IAAMuf,EAAuB,aAAU,MAIjCC,EAAyB,cAAW,MAWpCK,EAAkB,aAAU,MAM5BtB,EAAsC,aAAU,MAehDE,EAAuC,aAAU,MAOjDE,EAAuC,cAAO,EAAA7mB,KAAK,OAcnD2nB,EAAuB,aAAU,MASjCC,EAAyB,aAAU,MAQnChB,EAAqC,aAAU,MAK/CtR,EAAuC,cAAO,EAAAC,MAAM,+jBC/E1D,IAAM0S,EAAM,aAAU,MAMP,cAAO,QAAY,OAQlC,IAAMC,EAAW,cAAO,EAAArlB,IAAI,0OCRnC,IAAMslB,EAAwB,uBAAO,EAAAC,eAAe,OAapD,EATwC,gBAAGl5B,EAAA,EAAAA,IAAA,CACzC,MACE,WAAC,EAAA+4B,GAAG,YACF,UAAC,EAAAC,QAAQ,WAAEh5B,EAAKm5B,QAAQ,GACxB,UAACF,EAAA,MAGP,gaCJA,IAAMG,EAAiB,cAAO,EAAAC,QAAQ,OAIhCC,EAAiB,cAAO,EAAAC,QAAQ,OAgDtC,EA5C8B,WAC5B,IAAQz4B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IACTuqB,EAAQ,KAAAC,OAAA,IAARD,GAAG,CAELE,EAAgB,KAAA5Z,WAAA,EAAY,WAChC,EAAA6Z,OAAA,OAAc,EAChB,EAAG,EAAE,EAQG35B,EAAS,KAAAkuB,OAAA,IAATluB,IAAI,QAEZ,AAAKA,EAKH,+BACE,WAAC,EAAA45B,IAAI,YACH,UAAC,EAAAC,UAAU,WACT,UAAC,SAAO,EAAC75B,KAAMA,MAEjB,WAACo5B,EAAA,CAAe1P,QAAS,GAAKpS,aAAc,YACzCkiB,EAAI,6BACH,iCACE,UAACF,EAAA,CAAe1mB,QArBN,WACpB5D,EAAS,CACP8F,GAAI,EAAAglB,qBAAqB,AAC3B,EACF,WAkBeh5B,EAAE,mBAGL,UAAC,EAAAi5B,WAAW,QAGhB,UAACT,EAAA,CAAe1mB,QAAS8mB,WAAgB54B,EAAE,oBAnB1C,IAwBX,miBC7CA,IAAM4T,EAAU,aAAU,MAMpBslB,EAAmB,cAAO,EAAAxpB,UAAU,OAUpCpH,EAAS,SAACL,CAAK,CAAUkxB,CAAW,CAAUC,CAAW,QAC7D,EAAInxB,CAAAA,EAAM7C,MAAM,CAAG,IACVg0B,EACJC,IAAI,GACJC,WAAW,GACX/D,QAAQ,CAACttB,EAAMqxB,WAAW,GAAGD,IAAI,GAIxC,EAoGA,EAlGsC,gBAOhB,EAPmBliB,EAAA,EAAAA,SAAA,CAAWpX,EAAA,EAAAA,YAAA,CAAcmD,EAAA,EAAAA,KAAA,CAC1Dq2B,EAAc,KAAAC,cAAA,IACZ9M,EAAY,KAAAC,UAAA,IAAZD,OAAO,CAEPtO,EAAkB,KAAAC,QAAA,IAAlBD,aAAa,CACf9U,EAAS,KAAAmwB,mBAAA,EAAqB,QAAG/M,EAAQpB,MAAM,KAE/C9e,EAAclD,MAAAA,EAAA,iBAAAA,EAAQ6F,GAAG,CAAC,SAACvQ,CAAQ,SAAKA,MAAAA,EAAA,OAAAA,EAAW,EAAK,KAA1C,oBAA6C6H,QAAQ,GAEnE6nB,EAAM,KAAAoL,MAAA,IACJ15B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IAEXwrB,EAAkB,KAAA3a,WAAA,EAAY,gBAAG8I,EAAA,EAAAA,IAAA,CAMrC,OALA5Z,EAAS,CACP8F,GAAI,KAAA4lB,gBAAA,EAAiB75B,EAAcmD,EAAO4kB,EAAK+R,aAAa,EAC5DhyB,QAAS,EACX,GAEO,EACT,EAAG,EAAE,EAECiyB,EAA2B,KAAAC,YAAA,EAAa,CAC5CrS,SAAU,CACR,kBACAtJ,MAAAA,EAAA,OAAAA,EAAe9S,YAAY,CAC3BvL,EACAyM,EACA4R,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,CACxB,CACDo4B,QAAS,GACTrS,QAAS,yEACU,SAAM,EAAA5Z,UAAA,gCAA0C,CAAC,CAChEhO,aAAc,CAACA,EACf6B,SAAU,AAAAwc,CAAAA,MAAAA,EAAA,OAAAA,EAAexc,QAAQ,AAAD,GAAK6D,KAAAA,EACrC+G,YAAAA,EACAlB,aAAc8S,MAAAA,EAAA,OAAAA,EAAe9S,YAAY,AAC3C,WAaA,MAAO,GAAAhI,AAlBU,SAkBD6L,GAAG,CAAC,SAACrM,CAAO,EAC1B,OAAO,EAAAmlB,YAAA,+BAA2C,CAACnlB,EACrD,MACF,EACF,GAEkC,OAAA2kB,QAAA,EAASqS,GAAA,EAAT,EAA1BrwB,IAAI,CAAOgf,EAAe,EAAfA,UAAU,CAE7B,MACE,UAAC7U,EAAA,CAAQuD,UAAWA,WAClB,WAAC,EAAA8iB,YAAY,EACX3L,IAAKA,EACLhmB,OAAQA,EACR4xB,eAAgBP,EAChBQ,SAAQ,GACRC,WACE,UAAC,EAAA5qB,GAAG,EAACiD,UAAU,kBAAUzS,EAAE,oBAE7Bq6B,YAAW,GACX9mB,UAAWkV,YAEX,WAACyQ,EAAA,WACC,UAAC,EAAAtpB,gBAAgB,EAACC,cAAc,gBAC9B,UAAC,EAAAyqB,WAAW,OAEd,UAAC,EAAAC,iBAAiB,EAChBjrB,YAAatP,EAAE,iBACfw6B,QAAS,WACPjB,EAAYkB,eAAe,CAACX,EAC9B,OAGJ,UAAC,EAAAY,gBAAgB,WACdjxB,AA3BD,YAAO,EAAE,IA2BH0F,GAAG,CAAC,SAACrM,CAAO,QAChB,UAAC,EAAA63B,gBAAgB,EAEf/1B,MAAO9B,EACP+R,MAAO/R,EAAQmkB,kBAAkB,EAAInkB,EAAQ8c,YAAY,YAExD9c,EAAQmkB,kBAAkB,EAAInkB,EAAQ8c,YAAY,IAJ7C,UAAoB,OAAX9c,EAAQtE,EAAE,WAWvC,o3DC/HA,IAAMqV,EAAa,cAAO,EAAAC,IAAI,OAkDxBqF,EAAc,aAAU,MASxBvF,EAAU,aAAU,MAQpBgnB,EAAkB,cAAO,EAAAprB,GAAG,OA0GlC,EArF0B,gBACxBqrB,EAAA,EAAAA,UAAA,KACA/0B,IAAI,CAAJA,EAAA,WAAO,UACPg1B,EAAA,EAAAA,QAAA,CAEyC,OAAAxN,SAAA,EAAU,CAAEhf,OAAQ,EAAM,IAAM,CAAC,EAAlEvO,EAAiC,EAAjCA,YAAY,CAAEsZ,EAAmB,EAAnBA,OAAO,CAAEnW,EAAU,EAAVA,KAAK,CAE9BorB,EAAM,KAAAoL,MAAA,EAA6B,MACnCqB,EAAW,KAAArB,MAAA,EAAiD,CAAC,GAC7DsB,EAAe,KAAAC,kBAAA,EAAmBJ,EAAYxhB,GAC9Cza,EAAWo8B,MAAAA,EAAA,OAAAA,EAAcp8B,QAAQ,CAkBvC,MAhBA,KAAA8pB,SAAA,EAAU,WACRyL,WAAW,WACT,IAAMhkB,EACJ4qB,EAAS/e,OAAO,CAAE,AAAApd,CAAAA,MAAAA,EAAA,OAAgB,OAAhB,GAAAA,EAAUs8B,MAAM,AAAD,GAAf,oBAAkB18B,EAAE,AAAD,GAAKI,CAAAA,MAAAA,EAAA,OAAAA,EAAUJ,EAAE,AAAD,EAAa,CAEpE,GAAI2R,EAAQ,CACV,IAHkB,EAKlB,IAFMqhB,EAAMrhB,EAAOgrB,SAAS,AAEjB,QAAX,GAAA7M,EAAItS,OAAO,AAAD,GAAV,YAA6B,OAA7B,KAAaof,gBAAgB,EAAC,GAA9B,cAAiCC,QAAQ,CAAC,CACxC7J,IAAKA,EAAM,EAAIA,EAAM,EACrB8J,SAAU,QACZ,EACF,CACF,EAAG,IACL,EAAG,CAACP,EAAUzM,EAAK1vB,EAAS,EAG1B,WAAC,SAAO,EAAC28B,UAAWjN,EAAKkN,MAAK,aAC3BV,GAAY,UAACF,EAAA,UAAiBE,IAC/B,UAAClnB,EAAA,UACEinB,EAAW1rB,GAAG,CAAC,gBAGM,EA6BN,EAhCassB,EAAA,EAAV78B,QAAQ,CAAiBE,EAAA,EAAAA,KAAA,CACpC6qB,EAAkB8R,EAAcP,MAAM,EAAIO,EAE1CC,EAAc,AAA0B,OAA1B,GAAA/R,EAAgBppB,UAAU,AAAD,GAAzB,yBAAAopB,GAEdgS,EACJ71B,AAAS,eAATA,EACI,EAAA81B,yBAAyB,CACzB,EAAAC,oCAAoC,CAEpC/mB,EACJhP,AAAS,UAATA,EACI,KAAA0T,YAAA,EAAa,EAAAC,gCAAgC,CAAE,CAC7C,gBAAiB1Z,EACjB,SAAUmD,EACV,WAAYymB,EAAgBjrB,IAAI,AAClC,GACA,KAAA8a,YAAA,EAAamiB,EAAS,CACpB,QAAShS,EAAgBjrB,IAAI,AAC/B,GAIN,MACE,WAACmV,EAAA,CAICrV,GAAK,WAAwC,OAA9BmrB,EAAgBnrB,EAAE,CAACiI,QAAQ,IAE1CuN,GAAI0nB,GAAe5mB,EACnBqC,UAAW,IAAW,CACpBgb,OAAQ,AAAAvzB,CAAAA,MAAAA,EAAA,OAAgB,OAAhB,GAAAA,EAAUs8B,MAAM,AAAD,GAAf,oBAAkBx8B,IAAI,AAAD,IAAMirB,EAAgBjrB,IAAI,AACzD,aAECI,GAAS,AAAiB,UAAjB,OAAOA,EACf,UAAC,EAAAiV,KAAK,EAAC/B,QAAQ,OAAOiC,IAAKnV,EAAOqV,IAAKrV,IAEvCA,EAEF,UAACqa,EAAA,UACEwQ,EAAgBhrB,WAAW,EAC1BgrB,EAAgBjrB,IAAI,EACpBirB,EAAgBnrB,EAAE,KAdjBmrB,EAAgBjrB,IAAI,CAkB/B,OAIR,uNCxIA,EAtCe,WACb,IAAQsB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDuU,EAAU,KAAA4T,QAAA,IAAV5T,KAAK,CACPunB,EAAQ,KAAAC,aAAA,IACNn6B,EAAa,KAAAka,aAAA,IAAbla,QAAQ,CACRo6B,EAAqB,KAAAC,oBAAA,IAArBD,gBAAgB,CAClBroB,EAAa,CAACY,CAAAA,MAAAA,EAAA,OAAAA,EAAOnP,MAAM,AAAD,GAAK,CAAC42B,EAChC9tB,EAAW,KAAAC,WAAA,IACe,IAAAoZ,iCAAA,UAA2C,GAAnExnB,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CAa3B,MACE,WAAC,QAAY,YACX,UAAC,EAAAg5B,UAAU,WACRl8B,EAAE,UAAW,CACZm8B,KAAMn8B,EAAE,eAAgB,CACtBm8B,KAAO,AAAAL,CAAAA,GAAS,GAAGM,cAAc,GACjCx6B,SAAAA,CACF,EACF,KAEF,UAAC,EAAAy6B,YAAY,EAACvqB,QArBA,WAMhB5D,EAAS,CACP8F,GANe,KAAAwF,YAAA,EAAa,EAAA8iB,2BAA2B,CAAE,CACzD,gBAAiBv8B,EACjB,SAAUmD,CACZ,EAIA,EACF,EAYsCyQ,WAAYA,WAC3C3T,EAAE,gBAIX,iLCZA,EAzBe,WACb,IAAQA,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDu8B,EAAmB,KAAAzgB,aAAA,IAAnBygB,cAAc,CAC0B,OAAAle,QAAA,IAAxCD,EAAwC,EAAxCA,aAAa,CAAEoJ,EAAyB,EAAzBA,oBAAoB,CAE3C,MACE,WAAC,EAAAgV,YAAY,YACX,UAAC,EAAAC,aAAa,WACZ,UAAC,EAAAC,eAAe,WAAEH,MAEnBne,GACC,UAAC,EAAA5O,GAAG,EAAC0S,GAAG,gBACN,UAAC,EAAAya,gBAAgB,EACfz5B,MAAOkb,EACPoJ,qBAAsBA,EACtBoV,mBAAkB,GAClB9M,OAAM,OAIZ,UAAC,EAAA+M,WAAW,WAAE78B,EAAE,uBAGtB,6RCjCO,IAAM8T,EAAO,cAAO,MAAM,6OCWpBgpB,EAA6B,SACxC1pB,CAAK,EAKL,IAkCS,EAlCD2jB,EAA0C3jB,EAA1C2jB,SAAS,CAAEgG,EAA+B3pB,EAA/B2pB,WAAW,CAAKC,EAAA,QAAe5pB,EAAA,CAA1C,YAAW,gBAEjB,OAAA6oB,oBAAA,IADMgB,EACN,EADMA,8BAA8B,CAAEjB,EACtC,EADsCA,gBAAgB,CAEhDh8B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACuB,OAAAstB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAAlDvO,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CAE3B,GAAI84B,EACF,OAAO,KAGT,IAAMkB,EAAwBD,EAA+B5d,IAAI,CAC/D,SAAC8d,CAAU,SAAKA,EAAW1wB,SAAS,GAAKsqB,EAAUv4B,EAAE,UAGvD,AAAK0+B,EAOEE,AAFL,CAAuB,YAAvB,OAAOL,EAA6BA,EAAc,SAACM,CAAE,SAAkBA,IAGvE,WAAC,EAAAC,KAAK,kBACJ75B,OAAO,UACPyL,cAAc,SACdyb,WAAW,aACXiI,eAAe,cACXoK,GAAA,WAEJ,WAAC,EAAAO,UAAU,EAAChnB,SAAU,aACpB,UAAC,EAAAinB,WAAW,EAACtb,GAAG,OAAOub,GAAG,UAAU,IAAEz9B,EAAE,iCAE1C,UAAC,EAAA09B,gBAAgB,EAACnnB,SAAU,YAC1B,UAAC,MAAGiO,MAAO,CAAEmZ,UAAW,MAAO,WACS,OAArC,GAAAT,EAAsBU,eAAe,AAAD,GAApC,oBAAuCzuB,GAAG,CAAC,SAAC0uB,CAAE,EAC7C,MACE,UAAC,EAAA/pB,IAAI,EAEHE,GAAK,gBAA+B,OAAhBjU,EAAa,KAAmB,OAAhBmD,EAAM,YAA0B,OAAhB26B,EAAG9V,YAAY,WAEnE,UAAC,eAAI8V,EAAG5W,kBAAkB,IAHrB4W,EAAGje,YAAY,GAM1B,YA5BC,IAiCX,m3DChEO,IAAMke,EAAgB,cAAO,SAAO,OAQ9BC,EAAS,aAAU,MAOnB7B,EAAa,cAAO,EAAArpB,IAAI,OAMxBwpB,EAAe,cAAO,EAAArpB,MAAM,OAY5B6pB,EAAc,YAAS,MAQvBL,EAAe,aAAU,MAIzBC,EAAgB,aAAU,MAO1BC,EAAkB,YAAS,MAUb,YAAS,yvDC7CpC,IAAM9oB,EAAU,aAAU,MAmBpBoqB,EAAe,aAAU,MAazBC,EAAO,cAAO,EAAAnqB,IAAI,OAWlBoqB,EAAQ,aAAU,MAOlBrU,EAAQ,aAAU,MAQlBsU,EAAU,aAAU,MAMpBnrB,EAAS,gBAAa,MA2F5B,EAjFgC,gBA+BF,EA/BK8U,EAAA,EAAAA,IAAA,CAAM3Q,EAAA,EAAAA,SAAA,CAC/BvV,EAAa,KAAAka,aAAA,IAAbla,QAAQ,CACR5B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IACXiwB,EAAetW,EAAKgU,KAAK,CAEzBuC,EAAWvW,EAAKnpB,WAAW,CAEH,eAAA2U,QAAA,EAAS,OAAhCgrB,EAAuB,KAAdC,EAAc,KAEE,IAAAjlB,kBAAA,UAA4B,GAApDvZ,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CACrBs7B,EAAa1W,EAAKhlB,OAAO,CAAClE,QAAQ,CAAC4/B,UAAU,CAE7CC,EAAgB,KAAAzf,WAAA,EAAY,6EAC5Bwf,EAAY,MAAZ,MACF,SAAMtwB,EAAS,CACb8F,GAAK,gBAA+B,OAAhBjU,EAAa,KAAmB,OAAhBmD,EAAM,YAAyC,OAA/B,EAAA8kB,cAAA,gBAA8B,EAClFngB,QAAS,EACX,WAHA,iCAMF,EAAA6X,QAAA,WAAmB,CAACoI,SACtB,GAAG,EAAE,EAEC4W,EAAoBF,EACtB,MACA1W,EAAKhlB,OAAO,CAAClE,QAAQ,CAAC+/B,aAAa,CAEvC,MACE,iCACE,UAAC/qB,EAAA,CACCuD,UAAW,IAAW,MACpB,QADoB,EACnBA,GAAa,GAAK,IACnB,QAFoB,EAEpB,cAAamnB,GAFO,IAItBM,aAAc,iBAAM,CAAC9W,EAAKkQ,QAAQ,EAAIuG,EAAW,cAEjD,WAACP,EAAA,CAAa7mB,UAAU,0BACtB,WAAC8mB,EAAA,CAAKjqB,GAAI,KAAA4lB,gBAAA,EAAiB75B,EAAcmD,EAAO4kB,EAAKhlB,OAAO,YACzDu7B,EAAU,IACVvW,EAAKkQ,QAAQ,EACZ,UAAC,EAAA5T,OAAO,EACNvP,MAAO7U,EAAE,0BACTskB,UAAU,MACVD,SAAQ,YAER,UAAC,EAAAE,QAAQ,EAACxU,MAAM,oBAItB,WAACmuB,EAAA,CAAMW,aAAc,iBAAM,CAAC/W,EAAKkQ,QAAQ,EAAIuG,EAAW,eACrDzW,EAAKoP,SAAS,GAAI,IAClBwH,EAAqB,IAAgC,OAA7B1+B,EAAE0+B,GAA2B,KAAK,QAE7D,UAAC7U,EAAA,CAAMgV,aAAc,iBAAM,CAAC/W,EAAKkQ,QAAQ,EAAIuG,EAAW,cACrDv+B,EAAE,eAAgB,CACjBm8B,KAAMiC,EAAahC,cAAc,GACjCx6B,SAAAA,CACF,KAGF,UAACu8B,EAAA,CAAQhnB,UAAU,mBAChB,CAAC2Q,EAAKkQ,QAAQ,EACb,UAAChlB,EAAA,CAAOlB,QAAS2sB,WACf,UAAC,EAAAK,SAAS,cAMpB,UAAC,EAAAhC,0BAA0B,EACzB/F,UAAWjP,EACXiX,GAAI,EACJlB,GAAI,EACJmB,GAAI,EACJC,GAAI,MAIZ,qKCtJA,EAlByB,WACvB,IAAQ1qB,EAAU,KAAA4T,QAAA,IAAV5T,KAAK,CAEb,MACE,UAAC,EAAAupB,aAAa,EACZ1O,SAAS,QACToM,MAAK,GACLpkB,OAAQ,UAAC,SAAM,KACfC,OAAQ,UAAC,SAAM,KACf1H,SAAS,gDAER4E,EAAMpF,GAAG,CAAC,SAAC2Y,CAAI,CAAEzY,CAAK,QACrB,UAAC,SAAG,EAA6ByY,KAAMA,EAAM3Q,UAAU,aAA5C,GAAa,OAAX2Q,EAAKtpB,EAAE,CAAC,KAAS,OAAN6Q,OAIhC,owBClBA,IAAM6vB,EAAiB,aAAU,KAOlB,mBAAG,EAAAvvB,QAAA,EAKd,gBAAG6rB,EAAA,EAAAA,KAAA,CAAOpM,EAAA,EAAAA,QAAA,QACVoM,GACC,yBAEgD,OAA/CpM,AAAa,SAAbA,EAAsB,WAAa,YAAY,+KAQ/C+P,EAAgB,aAAU,MAM1BC,EAAgB,aAAU,MAK1BC,EAAe,cAAO,SAAS,OA4CrC,EAxB+C,gBAC7CjoB,EAAA,EAAAA,MAAA,CACAC,EAAA,EAAAA,MAAA,CACAtB,EAAA,EAAAA,QAAA,CACAylB,EAAA,EAAAA,KAAA,CACAD,EAAA,EAAAA,SAAA,KACAnM,QAAQ,CAAG,IACXzf,QAAQ,CACRwH,EAAA,EAAAA,SAAA,CAEA,MACE,WAAC+nB,EAAA,CACC/nB,UAAWA,EACXqkB,MAAOA,EAAQ,EAAI,EACnBpM,SARJ,WAAW,SASPzf,SARJ,WAAW,iDAUNyH,GAAU,UAAC+nB,EAAA,UAAe/nB,IAC3B,UAACioB,EAAA,CAAa/Q,IAAKiN,WAAYxlB,IAC9BsB,GAAU,UAAC+nB,EAAA,UAAe/nB,MAGjC,kNCtDaioB,EAAiB,gBAC5BC,EAAA,EAAAA,OAAA,CACA91B,EAAA,EAAAA,IAAA,CACA+1B,EAAA,EAAAA,SAAA,CAGE,OAAAC,QAAA,EAAY,CACVF,QAAAA,EACA91B,KAAAA,EACAi2B,aAAc,CACZC,cAAeJ,EAAQpwB,GAAG,CAAC,SAACywB,CAAM,EAChC,GAAIA,AAAgB,KAAhBA,EAAOrM,IAAI,CACb,OAAOqM,EAAOC,QAAQ,EAAID,EAAOphC,EAAE,AAEvC,EACF,CACF,GAXMshC,EACN,EADMA,aAAa,CAAEC,EACrB,EADqBA,iBAAiB,CAAEC,EACxC,EADwCA,YAAY,CAAEziB,EACtD,EADsDA,IAAI,CAAE0iB,EAC5D,EAD4DA,UAAU,CAalEC,EAAU3iB,AAAgB,IAAhBA,EAAKnY,MAAM,CAE3B,MACE,iCACE,UAAC,EAAA+6B,eAAe,EAACX,UAAWA,WAC1B,WAAC,OAAW,oBACNM,EAAc,CAChBtb,MAAO,CACL7O,gBAAiB,OACnB,CACF,eAEA,UAAC,EAAAsH,KAAK,WACH+iB,EAAa7wB,GAAG,CAAC,SAACixB,CAAW,CAAE/wB,CAAK,QACnC,oBAAC,EAAA6N,EAAE,oBAAKkjB,EAAYC,mBAAmB,KAAIv5B,IAAKuI,IAC7C+wB,EAAYt3B,OAAO,CAACqG,GAAG,CAAC,SAACywB,CAAM,CAAOU,CAAW,QAGhD,oBAAC,EAAAziB,EAAE,kBACD8T,WAAW,QACPiO,EAAOW,cAAc,CAAC,iBACxBvqB,MAAO4pB,MAAAA,EAAA,OAAAA,EAAQ5pB,KAAK,EAChB4pB,AAAc,iBAAdA,EAAOphC,EAAE,CACT,CAAEgiC,YAAa,EAAGC,aAAc,CAAE,EAClC,CAAC,IACLrqB,SAAUwpB,EAAOxpB,QAAQ,MAE3BqZ,QAAS,EACT3oB,IAAKw5B,IAEL,UAAC,EAAArxB,IAAI,EAAC0b,WAAW,kBAAUiV,EAAO/kB,MAAM,CAAC,oBAMnD,UAAC,EAAA6lB,SAAS,EAACC,YAAY,kBAAkB76B,KAAK,2BAC3C,SAAC86B,CAAQ,EACR,MACE,WAAC,EAAAtjB,KAAK,oCACAyiB,EAAkB,CACpBvb,MAAO,CACL7O,gBAAiB,OACnB,CACF,KACA2Y,IAAKsS,EAASC,QAAQ,GAClBD,EAASE,cAAc,aAE1BvjB,EAAKpO,GAAG,CAAC,SAACqO,CAAG,CAAEnO,CAAK,EAGnB,OAFA4wB,EAAWziB,GAGT,UAAC,EAAAujB,SAAS,EAERC,YAAaxjB,EAAIhf,EAAE,CACnB6Q,MAAOA,WAEN,SAAC4xB,CAAW,CAAEC,CAAW,EACxB,MACE,UAAC,EAAAhkB,EAAE,kBACDoR,IAAK2S,EAAYJ,QAAQ,EACrBI,EAAYE,cAAc,CAC1B3jB,EAAI4jB,WAAW,CAAC,CAClB5c,MAAO,iBACL7O,gBAAiBurB,EAAYG,UAAU,CACnC,kCACA,SACD,EAAAC,cAAA,aAA2B,CAC5BJ,EAAYG,UAAU,CACtBJ,EAAYE,cAAc,CAAC3c,KAAK,IAElC9J,QAASwmB,EAAYG,UAAU,CAC3B,QACA57B,KAAAA,EACJwc,OAAQ,WAEZ,cAECzE,EAAI+jB,KAAK,CAACpyB,GAAG,CAAC,SAACqyB,CAAI,CAAEC,CAAS,EAC7B,MACE,oBAAC,EAAA3jB,EAAE,oBACI0jB,AAAmB,iBAAnBA,EAAK5B,MAAM,CAACphC,EAAE,CACfyiC,EAAYS,eAAe,CAC3B,CAAC,EACDF,EAAKG,YAAY,CAAC,CACpBnd,MAAO,WACDgd,AAAmB,iBAAnBA,EAAK5B,MAAM,CAACphC,EAAE,CACd,CACEgiC,YAAa,EACbC,aAAc,EACdxe,OAAQ,MACV,EACA,CAAC,EAET,KACAnb,IAAK26B,EACL/K,cAAc,MACdngB,SAAS,QACTkZ,QAAS,IAER+R,EAAK3mB,MAAM,CAAC,QAGnB,KAGN,GArDK2C,EAAIhf,EAAE,CAwDjB,GACCoiC,EAAStxB,WAAW,IAG3B,UAIL4wB,GACC,UAAC,EAAA1wB,GAAG,EAACoyB,EAAG,EAAG1f,GAAI,EAAGxH,QAAQ,OAAOkY,eAAe,SAAS9Z,EAAE,gBACzD,UAAC,EAAAjG,IAAI,EAAC9C,MAAM,oBAAY,WAAM,CAAC,iBAKzC,4ZC5JA,IAAM8xB,EAAsB,cAAO,EAAA5yB,IAAI,OASjC6yB,EAAmB,QAAQ,CAAC,CAChCC,YAAa,QAAQ,GACrBC,WAAY,QAAQ,GACpBC,SAAU,QAAQ,GAClBC,WAAY,QAAQ,EACtB,GA2EA,EAvEmB,gBACjBC,EAAA,EAAAA,aAAA,CACAC,EAAA,EAAAA,WAAA,CACAC,EAAA,EAAAA,cAAA,CAGE,OAAAtT,OAAA,EAA8B,WAC5B,IAAMuT,EAAeR,EAAiBS,SAAS,CAACF,UAEhD,AAAIC,EAAaE,OAAO,CACfF,EAAa74B,IAAI,CAGnB,CACLw4B,SAAU,EACVD,WAAY,EACZE,WAAY,EACZH,YAAa,CACf,CACF,EAAG,CAACM,EAAe,EAdbN,EACN,EADMA,WAAW,CAAEC,EACnB,EADmBA,UAAU,CAAEC,EAC/B,EAD+BA,QAAQ,CAAEC,EACzC,EADyCA,UAAU,CAiB7CliC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC6hC,EAAA,WACC,UAAC,EAAA5yB,IAAI,WACH,UAAC,EAAAmV,OAAO,EAACvP,MAAM,yBACb,UAAC,EAAA4tB,UAAU,EACT3wB,QAAS,kBAAMqwB,EAAcJ,EAAc,IAC3CpuB,WAAYouB,AAAgB,IAAhBA,EACZ/T,KAAM,UAAC,EAAA0U,eAAe,EAAC7pB,EAAG,EAAGC,EAAG,IAChC,aAAW,sBAKjB,UAAC,EAAAjG,IAAI,EAACoD,WAAW,OAAOjB,GAAG,OAAO6d,KAAK,OAAOpgB,UAAU,kBACrDsvB,IAGH,UAAC,EAAA9yB,IAAI,WACH,UAAC,EAAAmV,OAAO,EAACvP,MAAM,qBACb,UAAC,EAAA4tB,UAAU,EACT3wB,QAAS,kBAAMqwB,EAAcJ,EAAc,IAC3CpuB,WAxBWouB,IAAgBC,GAAcE,AAAe,IAAfA,EAyBzClU,KAAM,UAAC,EAAAtZ,gBAAgB,EAACmE,EAAG,EAAGC,EAAG,IACjC,aAAW,kBAKjB,UAAC,EAAA7J,IAAI,EAAC0b,WAAW,SAAS8S,GAAG,gBAC3B,UAAC,EAAAlY,MAAM,EACLzM,EAAG,GACHlU,MAAOq9B,EACPxxB,SAAU,SAAChG,CAAC,EACV23B,EAAY7vB,OAAO9H,EAAE0F,MAAM,CAACvL,KAAK,EACnC,WAEC,CAAC,GAAI,GAAI,GAAI,GAAI,GAAG,CAACuK,GAAG,CAAC,SAACwzB,CAAc,QACvC,WAAC,UAA4B/9B,MAAO+9B,YACjC3iC,EAAE,QAAQ,IAAE2iC,IADFA,WAQzB,yMC5Ea3lB,EAAQ,gBACnBuiB,EAAA,EAAAA,OAAA,CACA91B,EAAA,EAAAA,IAAA,CACAm5B,EAAA,EAAAA,YAAA,KACAC,cAAc,CAAdA,EAAA,YAAiB,EAUb,OAAApD,QAAA,EACF,CACEF,QAAAA,EACA91B,KAAAA,EACAi2B,aAAc,CACZC,cAAeJ,EAAQpwB,GAAG,CAAC,SAACywB,CAAM,EAChC,GAAIA,AAAgB,KAAhBA,EAAOrM,IAAI,CACb,OAAOqM,EAAOC,QAAQ,EAAID,EAAOphC,EAAE,AAEvC,EACF,CACF,EACA,EAAAskC,SAAS,CACT,EAAAC,YAAY,CACZ,SAACC,CAAK,EACAH,GACFG,EAAMC,cAAc,CAAC5iC,IAAI,CAAC,SAAC6iC,CAAW,QAAK,CACzC,CACE1kC,GAAI,YACJwX,MAAO,KACPmtB,OAAQ,gBACa,EADVC,EAAA,EAAAA,6BAAA,CACHjlB,EAAa,UAAAilB,GAAA,uBAAiCC,OAAO,CAE3D,MACE,UAAC,EAAA9f,QAAQ,oBACH6f,KAAA,CACJxf,UAAWzF,IAGjB,EACAmlB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,CACDW,EAAaX,EAAIW,UAAU,CAEjC,MACE,UAAC,EAAAoF,QAAQ,oBACH/F,EAAI+lB,yBAAyB,KACjC3f,UAAWzF,IAGjB,CACF,EAED,CA1B0C,OAyBzC,QAAG+kB,KAGT,GAnDApD,EAOE,EAPFA,aAAa,CACbC,EAME,EANFA,iBAAiB,CACjBC,EAKE,EALFA,YAAY,CACZziB,EAIE,EAJFA,IAAI,CACJ0iB,EAGE,EAHFA,UAAU,CACVuD,EAEE,EAFFA,gBAAgB,CAChBC,EACE,EADFA,qBAAqB,CAgDvB,KAAA/a,SAAA,EACE,WACE,IAAMgb,EAASF,EAAiBr0B,GAAG,CAAC,SAACgf,CAAC,SAAKA,EAAEwV,QAAQ,GAEjDf,GACFA,EAAac,EAEjB,EACA,CAACF,EAAiB,EAGpB,KAAA9a,SAAA,EACE,WACM,CAACma,GACHY,EAAsB,GAE1B,EACA,CAACZ,EAAe,EAGlB,IAAM3C,EAAU3iB,AAAgB,IAAhBA,EAAKnY,MAAM,CAE3B,MACE,iCACE,WAAC,OAAW,oBAAK06B,KAAA,WACf,UAAC,EAAA7iB,KAAK,WACH+iB,EAAa7wB,GAAG,CAAC,SAACixB,CAAW,CAAE/wB,CAAK,QACnC,oBAAC,EAAA6N,EAAE,oBAAKkjB,EAAYC,mBAAmB,KAAIv5B,IAAKuI,IAC7C+wB,EAAYt3B,OAAO,CAACqG,GAAG,CAAC,SAACywB,CAAM,CAAOU,CAAW,QAChD,oBAAC,EAAAziB,EAAE,kBACD8T,WAAW,QACPiO,EAAOW,cAAc,CAAC,mBACrBX,EAAOgE,oBAAoB,KAC9B5tB,MAAO4pB,MAAAA,EAAA,OAAAA,EAAQ5pB,KAAK,MAEtBlP,IAAKw5B,IAEL,WAAC,EAAArxB,IAAI,EAAC0b,WAAW,mBACdiV,EAAO/kB,MAAM,CAAC,UACd+kB,EAAOiE,QAAQ,CACdjE,EAAOkE,YAAY,CACjB,UAAC,EAAA1L,eAAe,EAACqF,GAAI,EAAG3kB,EAAG,EAAGD,EAAG,IAEjC,UAAC,EAAAkrB,aAAa,EAACtG,GAAI,EAAG3kB,EAAG,EAAGD,EAAG,IAGjC,cAQd,UAAC,EAAAyE,KAAK,oBAAKyiB,KAAA,UACRxiB,EAAKpO,GAAG,CAAC,SAACqO,CAAG,CAAEnO,CAAK,EAGnB,OAFA4wB,EAAWziB,GAGT,oBAAC,EAAAN,EAAE,oBAAKM,EAAI4jB,WAAW,KAAIt6B,IAAKuI,IAC7BmO,EAAI+jB,KAAK,CAACpyB,GAAG,CAAC,SAACqyB,CAAI,CAAEC,CAAS,EAC7B,MACE,oBAAC,EAAA3jB,EAAE,oBACG0jB,EAAKG,YAAY,KACrB76B,IAAK26B,EACL/K,cAAc,QAEb8K,EAAK3mB,MAAM,CAAC,QAGnB,GAGN,UAGHqlB,GACC,UAAC,EAAA1wB,GAAG,EAACoyB,EAAG,EAAG1f,GAAI,EAAGxH,QAAQ,OAAOkY,eAAe,SAAS9Z,EAAE,gBACzD,UAAC,EAAAjG,IAAI,EAAC9C,MAAM,oBAAY,WAAM,CAAC,iBAKzC,+NC/Iai0B,EAAiB,kBAC5BC,EAAA,EAAAA,QAAA,CACAC,EAAA,EAAAA,OAAA,CACA/0B,EAAA,EAAAA,GAAA,CACAg1B,EAAA,EAAAA,gBAAA,KACAC,eAAe,CAAfA,EAAA,WAAkB,CAAC,IACnBC,EAAA,EAAAA,UAAA,CAEM74B,EAAS,KAAA6C,SAAA,EAA0C,CAAEC,OAAQ,EAAM,GACvC,eAAAgF,QAAA,EAAS,OAApCC,EAA2B,KAAhB+wB,EAAgB,KACV,eAAAhxB,QAAA,EAAc,EAAE,KAAjC7J,EAAiB,KAAX86B,EAAW,KAClBr2B,EAAW,KAAAC,WAAA,IAC2B,eAAAmF,QAAA,EAA6B,CACvE4uB,WAAY,EACZF,WAAY,EACZC,SAvBsB,GAwBtBF,YAzBuB,CA0BzB,MALOM,EAAqC,KAArBmC,EAAqB,KAO5C,IAAMzY,KAAY,uBAG0B,EAA1B0Y,EAAc37B,EAgBxB47B,EAW6B,EAAvBC,EA6BHt/B,wDA1DTi/B,EAAa,qBAE6B,iCAAM,cAASL,EAAU,SAC/Dv6B,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBtlB,OAAQ,2BACFw9B,AAAqB,KAArBA,EACA,CAAC,EACD,CACE/4B,WAAY,AAAAI,CAAAA,MAAAA,EAAA,OAAAA,EAAQqD,CAAC,AAADA,GArCT,EAsCXxD,SAAU,AAAAG,CAAAA,MAAAA,EAAA,OAAAA,EAAQo5B,CAAC,AAADA,GArCR,EAsCZ,IAEJp5B,OAAQ,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQA,MAAM,AAAD,GAAK/F,KAAAA,IACvB2+B,IAEFC,YAbSI,EAA0B,aAAhCh7B,IAAI,CAAgBX,EAAY,EAAZA,OAAO,CAgB/B47B,EAAgBD,EAGlBhgC,OAAOogC,MAAM,CAACJ,EAAc,SAC5Bv9B,MAAMC,OAAO,CAACs9B,EAAah7B,IAAI,GAE/Bi7B,CAAAA,EAAgBD,EAAah7B,IAAI,AAAD,EAGlC,GAAI,CACEX,aAAmB,EAAAg8B,YAAY,EAC3BH,CAAAA,EAAuB77B,MAAAA,EAAA,OAAY,OAAZ,GAAAA,EAASnE,GAAG,AAAD,GAAX,yBAAAmE,EAAe,aAAc,SAAClE,CAAK,QAC9D,AAAI,AAAiB,UAAjB,OAAOA,EACFwD,KAAK28B,KAAK,CAACngC,GAGbA,CACT,EAAC,GAIC,AAAgC,UAAhC,OAAO+/B,GAEPlgC,OAAOogC,MAAM,CAACF,EAAsB,gBAEpCH,EACEG,EAIR,CAAE,QAAM,CACNH,EAAkB,CAChBzC,YAAa,AAAAv2B,CAAAA,MAAAA,EAAA,OAAAA,EAAQqD,CAAC,AAADA,GA/EJ,EAgFjBozB,SAAU,AAAAz2B,CAAAA,MAAAA,EAAA,OAAAA,EAAQo5B,CAAC,AAADA,GA/EF,GAgFhB5C,WAAY,AAAAx2B,CAAAA,MAAAA,EAAA,OAAAA,EAAQqD,CAAC,AAADA,GAjFH,EAkFjBqzB,WAAYwC,EAAct/B,MAAM,AAClC,EACF,QAEAm/B,EAAQ,AAAe,YAAf,OAAOp1B,EAAqBA,EAAIu1B,GAAiBA,uBAEzDp/B,QAAQ0/B,GAAG,CADJ3/B,EAAA,UAGgB,YAAnB,OAAO6+B,GACTA,EAAQ7+B,uBAGVi/B,EAAa,2BAEjB,qDAEA,KAAA5b,SAAA,EAAU,WACRqD,GACF,EAAG,CAACvgB,EAAO,EA8BJ,CACL/B,KAAAA,EACA8J,UAAAA,EACA0xB,iBA7BuB,KAAAjmB,WAAA,EACvB,SAAC/F,CAAI,EACH/K,EAAS,CACP8F,GAAI,KACJxI,OAAQ,mBACHA,GAAA,CACHo5B,EAAG3rB,EACHpK,EA/GiB,GAiHrB,EACF,EACA,CAACrD,EAAO,EAmBR05B,aAjBmB,KAAAlmB,WAAA,EACnB,SAACmmB,CAAI,EACHj3B,EAAS,CACP8F,GAAI,KACJxI,OAAQ,mBACHA,GAAA,CACHqD,EAAGs2B,GAEP,EACF,EACA,CAAC35B,EAAO,EAQR45B,YAAa,AAAA55B,CAAAA,MAAAA,EAAA,OAAAA,EAAQqD,CAAC,AAADA,GAvIE,EAwIvBw2B,YAAa,AAAA75B,CAAAA,MAAAA,EAAA,OAAAA,EAAQo5B,CAAC,AAADA,GAvIC,GAwItBU,QAnCc,kBAAMvZ,KAoCpBsW,eAAAA,CACF,CACF,ygBC3IO,IAAMkD,EAAO,cAAO,EAAAC,UAAU,OAK/BC,EAAgB,cAAO,EAAAC,SAAS,OAsEtC,EA/CyD,gBACvD/S,EAAA,EAAAA,KAAA,CACA/zB,EAAA,EAAAA,QAAA,CAEMwpB,EAAW,KAAAC,aAAA,IACTsd,EAAmB,KAAAhZ,UAAA,IAAnBgZ,cAAc,CAChBC,EAAiB,KAAAnM,mBAAA,EAAoBkM,GACrCE,EAA0B,KAAAC,sBAAA,EAAuB,AAAAlnC,CAAAA,MAAAA,EAAA,OAAAA,EAAUwtB,IAAI,AAAD,GAAK,EAAE,EACnEpsB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEH+lC,EACJF,EAAwBzgC,MAAM,CAAG,EAC7BygC,EACAD,EAEN,MACE,iCACGjT,GAAS,UAAC8S,EAAA,UAAezlC,EAAE2yB,KAC3BvK,EACC,UAAC,EAAAe,aAAa,WACZ,UAAC,EAAAC,MAAM,OAGT,UAACmc,EAAA,CACC51B,SAAS,SACTiR,IAAI,OACJolB,OAAO,OACPzG,QAAS,CACP5mB,GAAI,EACJstB,GAAI,EACJC,GAAI,CACN,WAECH,EAAmB52B,GAAG,CAAC,SAACkK,CAAO,MAGrB,EAFT,MACE,UAAC,SAAoB,EAEnBA,QAASA,GADJA,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAU,QAAW,AAAX,GAAV,oBAAwB,EAAK,CAIxC,OAKV,qKCnEa8sB,EAAW,gBA4Cf,EA3CPtxB,EAAA,EAAAA,KAAA,CACAvF,EAAA,EAAAA,WAAA,KAEA5Q,IAAI,CAAJA,EAAA,WAAO,cACPuR,EAAA,EAAAA,YAAA,CACA+J,EAAA,EAAAA,UAAA,CACG3G,EAAA,WANH,QACA,cAEA,OACA,eACA,eAGMmQ,EAAc,KAAAtJ,cAAA,IAEpB,GAAI,CAACsJ,EACH,MAAM,AAAI5f,MACP,eAAmB,OAALlF,EAAK,6CAIxB,IAAQyb,EAAe,KAAAC,aAAA,EAAc,CACnC1b,KAAMA,CACR,GAFQyb,UAAU,CAIlB,GAAI,CAACA,EACH,MAAM,AAAIvW,MACR,gEAIJ,IAAMsgB,EAAoBV,EAAYE,QAAQ,CAAChlB,EAAiB,CAC9D+R,SAAU,WACR+S,EAAYG,WAAW,CAACjlB,EAC1B,CACF,GAEA,MACE,UAAC,EAAA8Q,GAAG,WACF,WAAC,EAAA+K,WAAW,EAACP,WAAYA,EAAYQ,UAAWL,EAAWM,OAAO,WAC/D5F,GAAS,UAAC,EAAA8F,SAAS,EAACwJ,QAASzlB,WAAOmW,IACrC,UAAC,UAAc,UACbrW,GAAIE,EACJ4Q,YAAaA,EACbW,aAAcA,GACVoD,EACA6Q,IAEL,CAAgB,OAAhB,GAAA/J,EAAW9U,KAAK,AAAD,GAAf,oBAAkB9B,OAAO,AAAD,GACvB,UAAC,EAAAiY,gBAAgB,WAAErB,EAAW9U,KAAK,CAAC9B,OAAO,OAKrD,mmBChEA,IAAM6iC,EAAc,cAAO,EAAA52B,GAAG,OAOxB62B,EAAY,cAAO,EAAAxzB,IAAI,OAIvByzB,EAAY,cAAO,EAAAzzB,IAAI,OAUhB0zB,EAAQ,kBAAGC,EAAA,EAAAA,GAAA,CAChBx7B,EAAUoC,aAAaC,OAAO,CAAC,QAE/Bo5B,EAAYC,AADD,KAAAtZ,OAAA,IACUqZ,SAAS,CACZ,eAAAnzB,QAAA,EAAS,OAA1BqzB,EAAiB,KAAXC,EAAW,KACA,eAAAtzB,QAAA,EAASkzB,GAAA,GAA1BK,EAAiB,KAAXC,EAAW,KAChB9mC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEH+mC,EAAO,YACPJ,IAIAE,AAAS,IAATA,EACFD,EAAQ,IAERE,EAAQD,EAAO,GAEnB,EAEA,IAAMG,KAAa,yEACjB,SAAM,cAAS,EAAAC,KAAK,CAAE,CACpBv9B,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAM,CACJoC,MAAO46B,CACT,EACA9/B,OAAQ,CACNqE,QAAAA,CACF,CACF,kBARA,SAUA87B,EAAQN,GACRI,EAAQ,UACV,+CAQA,MANA,KAAAle,SAAA,EAAU,WACR,IAAMwe,EAAUC,YAAY,kBAAMJ,KAAQ,KAE1C,OAAO,kBAAMK,cAAcF,GAC7B,GAGE,UAACd,EAAA,UACES,AAAS,IAATA,EACC,UAAC,EAAA/yB,IAAI,EAAChC,QAASk1B,WAAahnC,EAAE,YAE9B,iCACE,UAACsmC,EAAA,UAAY,MAAsC,OAAjCO,EAAKpgC,QAAQ,GAAG4gC,QAAQ,CAAC,EAAG,QAC9C,UAAChB,EAAA,UAAWrmC,EAAE,gBAKxB,+kBChFO,IAAM0lC,EAAY,cAAO,EAAA1sB,OAAO,OAM1BsuB,EAAkB,cAAO5B,GAAA,KAKzB6B,EAAoB,cAAO7B,GAAA,oMCV3B8B,EAAQ,CACnB,CAAE5iC,MAAO,EAAA6iC,IAAA,gBAAoB,CAAE5yB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,cAAe,EACvD,CAAE4E,MAAO,EAAA6iC,IAAA,WAAe,CAAE5yB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,QAAS,EAC5C,CAAE4E,MAAO,EAAA6iC,IAAA,oBAAwB,CAAE5yB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,UAAW,EACvD,CAAE4E,MAAO,EAAA6iC,IAAA,sBAA0B,CAAE5yB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,oBAAqB,EACnE,CAAE4E,MAAO,EAAA6iC,IAAA,eAAmB,CAAE5yB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,YAAa,EACrD,CAEY0nC,EAAiB,CAC5B,CAAE9iC,MAAO,EAAGiQ,MAAO,KAAM,EACzB,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAY,EAC/B,CAAEjQ,MAAO,EAAGiQ,MAAO,UAAW,EAC9B,CAAEjQ,MAAO,EAAGiQ,MAAO,cAAe,EAClC,CAAEjQ,MAAO,EAAGiQ,MAAO,gBAAiB,EACpC,CAAEjQ,MAAO,EAAGiQ,MAAO,eAAgB,EACnC,CAAEjQ,MAAO,EAAGiQ,MAAO,gBAAiB,EACpC,CAAEjQ,MAAO,EAAGiQ,MAAO,gBAAiB,EACpC,CAAEjQ,MAAO,EAAGiQ,MAAO,eAAgB,EACnC,CAAEjQ,MAAO,EAAGiQ,MAAO,iBAAkB,EACrC,CAAEjQ,MAAO,GAAIiQ,MAAO,gBAAiB,EACrC,CAAEjQ,MAAO,GAAIiQ,MAAO,QAAS,EAC9B,CAEY8yB,EAAgB,CAC3B,CAAE/iC,MAAO,EAAGiQ,MAAO,WAAY,EAC/B,CAAEjQ,MAAO,EAAAuxB,cAAA,MAAoB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,qBAAsB,EAC9D,CAAE4E,MAAO,EAAAuxB,cAAA,UAAwB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,yBAA0B,EACtE,CAAE4E,MAAO,EAAAuxB,cAAA,WAAyB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,0BAA2B,EACxE,CAAE4E,MAAO,EAAAuxB,cAAA,SAAuB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,wBAAyB,EACpE,CAAE4E,MAAO,EAAAuxB,cAAA,KAAmB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,oBAAqB,EAC5D,CAAE4E,MAAO,EAAAuxB,cAAA,UAAwB,CAAEthB,MAAO,KAAA7U,CAAA,AAAAA,EAAE,yBAA0B,EACvE,4HCnCM,IAAMgoB,EAAiB,CAC5ByB,gBAAiB,kBACjBC,gBAAiB,kBACjBke,SAAU,UACZ,EAEaC,EAAgB,CAC3Bne,gBAAiB,kBACjBoe,SAAU,kBACVC,OAAQ,QACV,0gCCPO,IAAMd,EAAQ,aACRe,EAAc,aAWdC,EAAmB,SAC9Bh9B,CAAO,QACH,UAAiB,OAARA,EAAQ,SACVi9B,EAAoB,8BACpBC,EAA4B,wBAC5BC,EAAoB,cACpBC,EAAkB,SAACtoC,CAAY,QACzC,eAA2B,OAAbA,IAKJuoC,EAAiB,SAACp9B,CAAM,QAAc,SAAe,OAAPA,IAC9Cq9B,EAAY,YACZC,EAAa,eAObhoC,EAAgB,SAChBioC,EAAsB,SAACx9B,CAAO,QACxC,UAAiB,OAARA,EAAQ,YASPy9B,EAAsB,SAAC3oC,CAAY,QAC7C,eAA2B,OAAbA,EAAa,UACjB4oC,EAAiB,SAAC5oC,CAAY,QACxC,eAA2B,OAAbA,EAAa,iBAOjB6oC,EAAyB,SAAC7oC,CAAY,QAChD,cAA0B,OAAbA,EAAa,sBAGhB8oC,EAAsB,SACjC9oC,CAAY,CACZ2M,CAAW,CACXC,CAAe,QAEd,eAA0C,OAA5B5M,EAAa,iBAAoC,OAArB2M,EAAY,WAAyB,OAAhBC,IACrDm8B,EAAyB,SACpC/oC,CAAY,CACZ2M,CAAW,QACP,eAA0C,OAA5B3M,EAAa,iBAA2B,OAAZ2M,EAAY,iBAC/Csf,EAAyB,kBAEzB+c,EAAsB,SAACrqC,CAAI,QAAc,YAAgB,OAALA,EAAK,YAIzDsqC,EAAU,kBACVC,EAAe,SAACC,CAAQ,QAAc,mBAA2B,OAATA,IAGxDC,EAAyB,SAACzqC,CAAI,QACxC,YAAgB,OAALA,EAAK,eASN0qC,EAAgB,gCAChBC,EAAoB,SAACtpC,CAAY,CAAU2M,CAAW,QAChE,eAA0C,OAA5B3M,EAAa,iBAA2B,OAAZ2M,IAGhC48B,EAAmB,4BAGnBC,EAAoB,SAACxpC,CAAY,CAAUkL,CAAO,QAC5D,eAAqC,OAAvBlL,EAAa,YAAkB,OAARkL,gHC3F3B8f,EAAiC,CAC5C,CACEjkB,IARuB,KASvBlC,MAAO,KAAA5E,CAAA,AAAAA,EATgB,KAUzB,EACA,CACE8G,IAXuB,KAYvBlC,MAAO,KAAA5E,CAAA,AAAAA,EAZgB,KAazB,EACA,CACE8G,IAduB,KAevBlC,MAAO,KAAA5E,CAAA,AAAAA,EAfgB,KAgBzB,EACA,CACE8G,IAjBuB,KAkBvBlC,MAAO,KAAA5E,CAAA,AAAAA,EAlBgB,KAmBzB,EACA,CACE8G,IApBuB,KAqBvBlC,MAAO,KAAA5E,CAAA,AAAAA,EArBgB,KAsBzB,EACD,kLCzBM,IAAMm2B,EAAiB,CAC5BqT,UAAW,EACXC,UAAW,EACXC,MAAO,EACPC,SAAU,EACVC,KAAM,EACNC,UAAW,EACXC,WAAY,CACd,EAWaC,EAAyB,CACpCC,QAAS,EACTC,OAAQ,CACV,EAEaC,EAAmE,wZC5BzE,IAAMC,EAAuB,6BACvBvO,EAA4B,eAC5BwO,EAAmC,qBACnCvO,EAAuC,wBAGvCwO,EACX,2CACW5wB,EACX,oDACW6iB,EACX,+bCZK,IAAM7S,EAAkB,kBAWlBC,EAAkB,kBAOlB4gB,EAAa,CACxB,OACA,QACA,SACA,QACA,SACD,CAYY7rC,EAAW,WACXO,EAAc,cACdW,EAAqB,qBACrBE,EAAmB,mBAEnBS,EAAoB,oBACpBE,EAAgB,gBAChB3B,EAAc,kIC3CpB,IAAM0rC,EAAa,SACbC,EAAoB,qSCUpBC,EAAgB,IAAI,EAAAC,KAAK,CAAC,CACrClsC,GAAI,YACJmsC,eAAgB,kBAAM,EAAAC,SAAS,EAC/BC,WAAY,WACV,IAA6B,IAAA1qC,KAAA,SAAc,GAAnC2qC,EAAqB,EAArBA,UAAU,CAAE5rC,EAAS,EAATA,IAAI,CAExB,GAAI4rC,GAAc5rC,CAAAA,MAAAA,EAAA,OAAAA,EAAM0T,IAAI,AAAD,EACzB,KAAM,KAAAm4B,QAAA,EAAS,CACb/2B,GAAI,KAAAg3B,iBAAA,EAAkB9rC,EAAK0T,IAAI,EAC/B/K,QAAS,EACX,EAEJ,EACAojC,UAAW,WACT,MACE,UAAC,SAAM,WACL,UAAC,EAAAC,MAAM,MAGb,CACF,GAEaC,EAAa,IAAI,EAAAT,KAAK,CAAC,CAClC9iC,KAAM,EAAA2iC,UAAU,CAChBU,UAAW,iBAAM,UAAC,SAAS,MAC3BN,eAAgB,kBAAMF,GACtBW,eAAgB,SACdC,CAAS,EAET,MAAO,CACLN,SACE,AAA8B,UAA9B,OAAOM,EAAUN,QAAQ,CAAgBM,EAAUN,QAAQ,CAAG,EAClE,CACF,CACF,GAEaO,EAAmB,IAAI,EAAAZ,KAAK,CAAC,CACxC9iC,KAAM,EAAA4iC,iBAAiB,CACvBS,UAAW,iBAAM,UAAC,SAAe,MACjCN,eAAgB,kBAAMF,GACtBW,eAAgB,SACdC,CAAS,EAET,MAAO,CACLN,SACE,AAA8B,UAA9B,OAAOM,EAAUN,QAAQ,CAAgBM,EAAUN,QAAQ,CAAG,EAClE,CACF,CACF,GAEaQ,EAAgBd,EAAce,WAAW,CAAC,CACrDL,EACAG,EACD,kKC1DM,IAAMG,KAAkB,iBAC7BvsC,CAAI,CACJwsC,CAAI,iCAEJ,GAAI,CAACxsC,EACH,UAGF,GAAI,CAAC,KAAAgB,aAAA,EAAchB,GAAMwsC,GACvB,KAAM,KAAAX,QAAA,EAAS,CACb/2B,GAAI,KAAAg3B,iBAAA,EAAkB9rC,EAAK0T,IAAI,EAC/B/K,QAAS,EACX,cAEJ,YAbE3I,CAAI,CACJwsC,CAAI,qZCcOC,EAAiB,IAAI,EAAAjB,KAAK,CAAC,CACtClsC,GAAI,YACJmsC,eAAgB,kBAAM,EAAAC,SAAS,EAC/BC,WAAY,SAACpe,CAAI,EACf,IAA6B,IAAAtsB,KAAA,SAAc,GAAnC2qC,EAAqB,EAArBA,UAAU,CAAE5rC,EAAS,EAATA,IAAI,CAExB,GAAI,CAAC4rC,EACH,KAAM,KAAAC,QAAA,EAAS,CACb/2B,GAAI,SACJxI,OAAQ,CACNu/B,SAAUte,EAAK7e,QAAQ,CAACC,IAAI,AAC9B,CACF,GAGF,MAAO,CACL+E,KAAM1T,MAAAA,EAAA,OAAAA,EAAM0T,IAAI,CAChB1T,KAAAA,CACF,CACF,EACA+rC,UAAW,WACT,MAAO,UAAC,EAAAC,MAAM,IAChB,CACF,GAEO,IAAMU,EAAa,IAAI,EAAAlB,KAAK,CAAC,CAClC9iC,KAAM,IACNijC,UAAU,IAAE,iBAAOpe,CAAI,MACb7Z,iCAER,GAFQA,EAAS6Z,EAAKle,OAAO,CAArBqE,IAAI,CAGV,KAAM,KAAAm4B,QAAA,EAAS,CACb/2B,GAAI,KAAAg3B,iBAAA,EAAkBp4B,GACtB/K,QAAS,EACX,cAEJ,YATmB4kB,CAAI,mCAUvBke,eAAgB,kBAAMgB,EACxB,GAEaE,EAAe,IAAI,EAAAnB,KAAK,CAAC,CACpC9iC,KAAM,WACN+iC,eAAgB,kBAAMgB,GACtBV,UAAW,iBAAM,UAAC,EAAAa,OAAO,KAC3B,GAEaC,EAAe,IAAI,EAAArB,KAAK,CAAC,CACpC9iC,KAAM,EAAAokC,iBAAiB,CACvBrB,eAAgB,kBAAMgB,GACtBV,UAAW,iBAAM,UAAC,EAAAgB,cAAc,KAClC,GAEaC,EAAgB,IAAI,EAAAxB,KAAK,CAAC,CACrClsC,GAAI,iBACJmsC,eAAgB,kBAAMgB,EACxB,GAEaQ,EAAgBR,EAAeH,WAAW,CAAC,CACtDO,EAAaP,WAAW,CAAC,CACvB,EAAAY,qBAAqB,CACrB,EAAAC,+BAA+B,CAC/B,EAAAC,yBAAyB,CACzB,EAAAC,sBAAsB,CACtB,EAAAC,mBAAmB,CACpB,EAEDN,EAAcV,WAAW,CAAC,CACxBI,EACA,EAAAa,eAAe,CACfZ,EACA,EAAAa,mBAAA,YAA+B,CAAC,CAC9B,EAAAC,mBAAmB,CACnB,EAAArzB,kBAAkB,CAClB,EAAAszB,kCAAkC,CAClC,EAAArlB,iCAAiC,CACjC,EAAAslB,iBAAiB,CAClB,EACF,EACF,+2BC3EM,IAAMC,EAA4B,IAAI,EAAApC,KAAK,CAAC,CACjD9iC,KAAM,eACN+iC,eAAgB,kBAAM,EAAAoB,YAAY,EAClClB,UAAU,IAAE,wBAAoB3rC,wDAC9B,OAD8BA,EAAA,EAAXqP,OAAO,CAAIrP,IAAI,CAClC,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,qCAE5B,OAFA,SAEO,IAAEimC,KAAM,aAAc,KAC/B,+CACF,GAEa4H,EAAkB,CAAC,UAAW,OAAO,CACrCC,EAAyB,CAAC,SAAU,UAAU,CAErDC,EAAkC,QAAQ,CAAC,CAC/CC,IAAK,MAAM,CAACH,GAAiB9nC,KAAK,CAAC,UACrC,GAEMkoC,EAA0C,QAAQ,CAAC,CACvDD,IAAK,MAAM,CAACF,GAAwB/nC,KAAK,CAAC,SAC5C,GAMamoC,EAAsB,IAAI,EAAA1C,KAAK,CAAC,CAC3C9iC,KAAM,IACN+iC,eAAgB,kBAAMmC,GACtB7B,UAAW,iBAAM,UAAC,EAAAoC,mBAAmB,MACrCxC,WAAY,iBAAO,CACjBn8B,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,oBACtB,EACD,AACH,GAEA87B,eAAgB,SAACC,CAAS,EACxB,OAAO4B,EAAgClI,KAAK,CAACsG,EAC/C,CACF,GAEaiC,EAAwB,IAAI,EAAA5C,KAAK,CAAC,CAC7C9iC,KAAM,MACN+iC,eAAgB,kBAAMmC,GACtB7B,UAAW,iBAAM,UAAC,EAAAsC,aAAa,EAACznC,KAAK,SACrC+kC,WAAY,iBAAO,CAAE/kC,KAAM,KAAM,GACjC0nC,OAAQ,yEACoB,SAAM,EAAAz/B,UAAA,+BACJ,GACzB9I,KAAK,CAAC,iBAAM,EAAE,WASjB,MAAO,IACLwoC,kBAR+BA,AAJP,SAIyBt+B,GAAG,CAAC,SAACu+B,CAAO,EAC7D,MAAO,CACL74B,MAAO64B,EAAQ7hC,KAAK,EAAI6hC,EAAQlvC,EAAE,CAClCoG,MAAO,AAAA8oC,CAAAA,MAAAA,EAAA,OAAAA,EAAS7hC,KAAK,AAAD,GAAK6hC,EAAQlvC,EAAE,AACrC,CACF,EAIA,KACF,EACF,GAEamvC,EAAsB,IAAI,EAAAjD,KAAK,CAAC,CAC3C9iC,KAAM,sBACN+iC,eAAgB,kBAAMmC,GACtB7B,UAAW,iBAAM,UAAC,EAAAsC,aAAa,EAACznC,KAAK,UACrC+kC,WAAY,iBAAO,CAAE/kC,KAAM,MAAO,GAClC0nC,OAAQ,yEACoB,SAAM,EAAAz/B,UAAA,+BACJ,GACzB9I,KAAK,CAAC,iBAAM,EAAE,WASjB,MAAO,IACLwoC,kBAR+BA,AAJP,SAIyBt+B,GAAG,CAAC,SAACu+B,CAAO,EAC7D,MAAO,CACL74B,MAAO64B,EAAQ7hC,KAAK,EAAI6hC,EAAQlvC,EAAE,CAClCoG,MAAO,AAAA8oC,CAAAA,MAAAA,EAAA,OAAAA,EAAS7hC,KAAK,AAAD,GAAK6hC,EAAQlvC,EAAE,AACrC,CACF,EAIA,KACF,EACF,GAEaovC,EAAsB,IAAI,EAAAlD,KAAK,CAAC,CAC3C9iC,KAAM,sBACN+iC,eAAgB,kBAAMmC,GACtBU,OAAQ,6DAWR,EACF,GAEO,IAAMK,EAA8B,IAAI,EAAAnD,KAAK,CAAC,CACnD9iC,KAAM,oBACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,iBAAM,UAAC,EAAA6C,mBAAmB,MACrC1C,eAAgB,SAACC,CAAS,EACxB,OAAO8B,EAAwCpI,KAAK,CAACsG,EACvD,EACAR,UAAU,IAAE,iBAAOpe,CAAI,wDACrB,SAAM,KAAAgf,eAAA,EACJhf,EAAKle,OAAO,CAACrP,IAAI,CACjB,+CAGF,OALA,SAKO,IACLimC,KAAM,oBACNz2B,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,oBACtB,EAEJ,KACF,YAdmBmd,CAAI,kCAezB,GAUMshB,EAAuC,QAAQ,CAAC,CACpDb,IAAK,MAAM,CATe,CAC1B,OACA,SACA,QACA,WACA,eACD,EAG2BjoC,KAAK,CAAC,OAClC,GAMO,IAAM+oC,EAA6B,IAAI,EAAAtD,KAAK,CAAC,CAClD9iC,KAAM,oCACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,iBAAM,UAAC,EAAAgD,UAAU,EAACnoC,KAAK,UAClCooC,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3Cga,eAAgB,SAACC,CAAS,EACxB,OAAO0C,EAAqChJ,KAAK,CAACsG,EACpD,EACA8C,aAAc,SAACl8B,CAAK,EAClB,MAAOA,AAAgB,UAAhBA,EAAMm8B,KAAK,AACpB,EACAvD,UAAU,IAAE,iBAAOpe,CAAI,wDACrB,SAAM,KAAAgf,eAAA,EACJhf,EAAKle,OAAO,CAACrP,IAAI,CACjB,+CAGF,OALA,SAKO,IACLimC,KAAM,oBACNr/B,KAAM,OACNuoC,SAAW,sBAA8C,OAAzB5hB,EAAK9lB,MAAM,CAAC5G,YAAY,CAAC,0BAC3D,KACF,YAXmB0sB,CAAI,mCAYvB+gB,MAAM,IAAE,iBAAOv7B,CAAK,MAELsnB,EAAA,EACDx5B,EAAcuuC,EAEpBC,EAOAd,EAGAe,EAEAC,EAIAC,EAGAC,EAOAC,EASAC,wDAnCc,OAHPtV,EAETtnB,EAFF1D,OAAO,CAAIgrB,WAAW,CACZx5B,EAAA,AADC,GAETkS,EADFtL,MAAM,AAAD,EAAK5G,YAAA,CAAcuuC,EAAA,EAAAA,SAAA,CAEN,GAAM/U,EAAYkB,eAAe,CACnD,EAAAqU,YAAA,sBAAkC,CAAC,CACjC/iC,YAAa,CAACuiC,EACdvuC,aAAc,CAACA,CACjB,YAGwB,OAPpBwuC,EAAc,SAOM,GAAM,EAAAxgC,UAAA,gCAA0C,CAAC,CACzEhO,aAAc,CAACA,CACjB,WACuB,OAHjB0tC,EAAoB,SAGH,GAAM,EAAA1/B,UAAA,gCAA0C,WAElD,OAFfygC,EAAiB,SAEF,GAAM,EAAAzgC,UAAA,qBACb,GACX9I,KAAK,CAAC,iBAAM,EAAE,WAqBF,OAvBTwpC,EAAe,SAIfC,EAAiBF,EAAer/B,GAAG,CAAC,SAAC4/B,CAAM,EAC/C,MAAO,CAAEl6B,MAAOk6B,EAAOrwC,IAAI,EAAIqwC,EAAOvwC,EAAE,CAAEoG,MAAOmqC,EAAOvwC,EAAE,EAAIuwC,EAAOvwC,EAAE,AAAC,CAC1E,GACMmwC,EAA2BlB,EAAkBt+B,GAAG,CAAC,SAACu+B,CAAO,EAC7D,MAAO,CACL74B,MAAO,AAAA64B,CAAAA,MAAAA,EAAA,OAAAA,EAAS7hC,KAAK,AAAD,GAAK6hC,EAAQlvC,EAAE,CACnCoG,MAAO,AAAA8oC,CAAAA,MAAAA,EAAA,OAAAA,EAAS7hC,KAAK,AAAD,GAAK6hC,EAAQlvC,EAAE,AACrC,CACF,GAEMowC,EAAkBH,MAAAA,EAAA,OAAAA,EAAct/B,GAAG,CACvC,SAACgmB,CAAM,EACL,MAAO,CACLtgB,MAAOsgB,MAAAA,EAAA,OAAAA,EAAQz2B,IAAI,CACnBkG,MAAOuwB,MAAAA,EAAA,OAAAA,EAAQ32B,EAAE,AACnB,CACF,GAGa,GAAO,yEACpB,GAAI+vC,EAAYpvC,OAAO,CACrB,MAAO,OAGF,SAAM,EAAA4O,UAAA,yCACoB,CAAC,CAC9BhO,aAAc,CAACA,CACjB,GACCiF,IAAI,CAAC,SAACgqC,CAAY,EACjB,OAAOA,EAAa7/B,GAAG,CACrB,SAAC8/B,CAAE,QACA,CACCrqC,MAAOqqC,EAAGzwC,EAAE,CACZqW,MAAOo6B,EAAGvwC,IAAI,AAChB,GAEN,GACCuG,KAAK,CAAC,iBAAM,EAAE,WAbjB,MAAO,eAcT,aAEA,OArBM4pC,EAAS,SAqBR,IACLpB,kBAAmBkB,EACnBC,gBAAAA,EACAnlC,KAAM8kC,EACNW,QAASR,EACTG,OAAAA,EACAM,UAAW,EAAE,AAGf,KACF,YAvEel9B,CAAK,kCAwEtB,GAEO,IAAMm9B,EAA4B,IAAI,EAAA1E,KAAK,CAAC,CACjD9iC,KAAM,wBACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,iBAAM,UAAC,EAAAgD,UAAU,EAACnoC,KAAK,SAClCooC,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3Cga,eAAgB,SAACC,CAAS,EACxB,OAAO0C,EAAqChJ,KAAK,CAACsG,EACpD,EACAR,UAAU,IAAE,iBAAOpe,CAAI,wDACrB,SAAM,KAAAgf,eAAA,EACJhf,EAAKle,OAAO,CAACrP,IAAI,CACjB,+CAGF,OALA,SAKO,IACLimC,KAAM,oBACNr/B,KAAM,MACNuoC,SAAW,sBAA8C,OAAzB5hB,EAAK9lB,MAAM,CAAC5G,YAAY,CAAC,0BAC3D,KACF,YAXmB0sB,CAAI,mCAYvB+gB,MAAM,IAAE,iBAAOv7B,CAAK,MAENlS,EAGN0tC,EAIA0B,EAUAX,EAEAC,EAIAE,EASAE,EAeAH,EAOAE,wDAnDoB,OAHd7uC,EACRkS,EADFtL,MAAM,CAAI5G,YAAY,CAGE,GAAM,EAAAgO,UAAA,gCAA0C,CAAC,CACzEhO,aAAc,CAACA,CACjB,WAEkB,OAJZ0tC,EAAoB,SAIR,GAAO,+EAEd,gCAAM,EAAA1/B,UAAA,4BAAsC,CAAC,CAClD1C,SAAU,EACZ,WAFA,MAAO,oBAIP,gBAAO,0BAEX,aAEuB,OAVjB8jC,EAAY,SAUK,GAAM,EAAAphC,UAAA,gCAA0C,WAElD,OAFfygC,EAAiB,SAEF,GAAM,EAAAzgC,UAAA,qBACb,GACX9I,KAAK,CAAC,iBAAM,EAAE,WAWF,OAbTwpC,EAAe,SAIfE,EAA2BlB,EAAkBt+B,GAAG,CACpD,SAACu+B,CAAO,EACN,MAAO,CACL74B,MAAO64B,EAAQ7hC,KAAK,EAAI6hC,EAAQlvC,EAAE,CAClCoG,MAAO8oC,EAAQ7hC,KAAK,EAAI6hC,EAAQlvC,EAAE,AACpC,CACF,GAGa,GAAM,EAAAuP,UAAA,yCACY,CAAC,CAC9BhO,aAAc,CAACA,CACjB,GACCiF,IAAI,CAAC,SAACgqC,CAAY,EACjB,OAAOA,EAAa7/B,GAAG,CACrB,SAAC8/B,CAAE,QACA,CACCrqC,MAAOqqC,EAAGzwC,EAAE,CACZqW,MAAOo6B,EAAGvwC,IAAI,AAChB,GAEN,GACCuG,KAAK,CAAC,iBAAM,EAAE,WAkBjB,OA/BM4pC,EAAS,SAeTH,EAAiBF,EAAer/B,GAAG,CAAC,SAAC4/B,CAAM,EAC/C,MAAO,CACLl6B,MAAOk6B,EAAOrwC,IAAI,EAAIqwC,EAAOvwC,EAAE,CAC/BoG,MAAOmqC,EAAOvwC,EAAE,EAAIuwC,EAAOvwC,EAAE,AAC/B,CACF,GAEMowC,EAAkBH,MAAAA,EAAA,OAAAA,EAAct/B,GAAG,CACvC,SAACgmB,CAAM,EACL,MAAO,CACLtgB,MAAOsgB,MAAAA,EAAA,OAAAA,EAAQz2B,IAAI,CACnBkG,MAAOuwB,MAAAA,EAAA,OAAAA,EAAQ32B,EAAE,AACnB,CACF,GAGK,IACLivC,kBAAmBkB,EACnBC,gBAAAA,EACAM,QAASR,EACTjlC,KAAM,CAAC,EACPolC,OAAAA,EACAM,UAAWA,EAAUhgC,GAAG,CAAC,SAACkgC,CAAC,QAAM,CAC/BzqC,MAAOyqC,EAAE7wC,EAAE,CACXqW,MAAOw6B,EAAE3wC,IAAI,CACb4wC,KAAMD,CACR,GAGF,KACF,YA/Eep9B,CAAK,kCAgFtB,GAEMs9B,EAAgC,QAAQ,CAAC,CAC7CxjC,YAAa,eAAe,GAAGyjC,QAAQ,GACvCljC,YAAa,eAAe,GAAGkjC,QAAQ,EACzC,GAEaC,EAAkC,IAAI,EAAA/E,KAAK,CAAC,CACvD9iC,KAAM,gBACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,EAAAyE,YAAY,CACvB7E,WAAY,iBAAO,CACjB1F,KAAM,gBACNz2B,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,gBACtB,EACD,AACH,GAEA87B,eAAgB,SAACC,CAAS,EACxB,OAAOkE,EAA8BxK,KAAK,CAACsG,EAC7C,CACF,GAEO,IAAMsE,EAAiB,IAAI,EAAAjF,KAAK,CAAC,CACtC9iC,KAAM,8BACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,EAAA2E,SAAS,CACpB/E,WAAY,SAACpe,CAAI,EACf,IAAQ1sB,EAAiB0sB,EAAK9lB,MAAM,CAA5B5G,YAAY,CAEpB,MAAO,CACLolC,KAAM,gBACNr/B,KAAM,OACNuoC,SAAW,sBAAkC,OAAbtuC,EAAa,uBAC/C,CACF,EACAmuC,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3Coc,MAAM,IAAE,iBAAO/gB,CAAI,MAaf,IAXU1sB,EAAckL,EACb/L,EAGPC,EAEAqD,EAIAqtC,EAOA3tC,EAEAqS,EAKAi6B,EAAA,wDAlBQ,OANFzuC,EAAA,GAER0sB,EAFF9lB,MAAM,AAAD,EAAK5G,YAAA,CAAckL,EAAA,EAAAA,OAAA,CAIpB9L,EAAU,AAAAD,CAAAA,MAHHA,CAAAA,EACTutB,EADFle,OAAO,CAAIrP,IAAI,AAAD,EAGA,OAAAA,EAAMC,OAAO,AAAD,GAAK,KAEnB,GAAM,EAAA4O,UAAA,iBAA2B,CAAC,CAC9C9C,QAAS,CAACA,CACZ,WAKmB,OAHb4kC,EACJ,CAAc,OAAd,GAAArtC,AALIA,CAAAA,EAAQ,UAKNskB,QAAQ,AAAD,GAAb,oBAAgBxe,MAAM,CAAC,SAACuG,CAAC,QAAK,CAACA,EAAEmpB,QAAQ,GAAE7oB,GAAG,CAAC,SAACN,CAAC,SAAKA,EAAErQ,EAAE,QAEzC,GAAM,EAAAuP,UAAA,kCAA4C,CAAC,CACpEhO,aAAc,CAACA,CACjB,WAIc,OAFRmC,EAAY4tC,AAJC,SAIUzwB,IAAI,CAAC,SAAC5U,CAAC,SAAKA,EAAEjM,EAAE,GAAKgE,EAAMuJ,WAAW,GAErD,GAAM,EAAAgC,UAAA,4CAAsD,CAAC,CACzEhO,aAAc,CAACA,EACf2M,YAAa,AAAAxK,CAAAA,MAAAA,EAAA,OAAAA,EAAWwK,WAAW,AAAD,GAAK,CACzC,cAHM6H,EAAQ,UAKSpV,EAAA,qBACnB,kBACA,SAAM,EAAA4O,UAAA,gCAA0C,aAAhD,0BAEJ,OAJMygC,EAAiB,EAIhB,IACLhsC,MAAO,IAAI,EAAAutC,UAAU,CAACvtC,GACtBN,UAAAA,EACAssC,eAAAA,EACA5sC,SAAUzC,EAAU,KAAOqD,MAAAA,EAAA,OAAAA,EAAOZ,QAAQ,CAC1C2S,MAAOA,EAAMjM,MAAM,CACjB,SAACioB,CAAC,SAAKA,EAAE7xB,IAAI,EAAI,CAACmxC,EAAoBta,QAAQ,CAAChF,EAAE7xB,IAAI,GAEzD,KACF,YAvCe+tB,CAAI,kCAwCrB,GAEO,IAAMujB,EAAmB,IAAI,EAAAtF,KAAK,CAAC,CACxC9iC,KAAM,uBACN+iC,eAAgB,kBAAMiD,GACtB3C,UAAW,EAAAgF,WAAW,CACtB7E,eAAgB,SAACC,CAAS,EACxB,OAAOkE,EAA8BxK,KAAK,CAACsG,EAC7C,EACA6C,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3Coc,MAAM,IAAE,iBAAO/gB,CAAI,MAEL1sB,wDAGO,OAHPA,EACR0sB,EADF9lB,MAAM,CAAI5G,YAAY,CAGL,GAAM,EAAAgO,UAAA,kCAA4C,CAAC,CACpEhO,aAAc,CAACA,CACjB,WAEA,MAAO,IACL+vC,WAAYA,AALK,SAKM3gC,GAAG,CAAC,SAACjN,CAAS,EACnC,MAAO,CACL2S,MAAO3S,EAAUxD,IAAI,CACrBkG,MAAO1C,EAAU1D,EAAE,CACnB8wC,KAAMptC,CACR,CACF,EAGF,KACF,YApBeuqB,CAAI,mCAqBnBoe,WAAY,SAACpe,CAAI,EACf,IAAQ1sB,EAAiB0sB,EAAK9lB,MAAM,CAA5B5G,YAAY,CAEpB,MAAO,CACLolC,KAAM,gBACNr/B,KAAM,SACNuoC,SAAW,sBAAkC,OAAbtuC,EAAa,uBAC/C,CACF,CACF,GAEaqsC,EAAwBU,EAA0BtB,WAAW,CAAC,CACzE4B,EACAE,EACAK,EACAC,EAAoBpC,WAAW,CAAC,CAC9BqC,EACAG,EACAoB,EACAK,EACAE,EACAK,EACD,EACF,2LC7eM,IAAMvD,EAAkB,IAAI,EAAA/B,KAAK,CAAC,CACvC9iC,KAAM,cACN+iC,eAAgB,kBAAM,EAAAuB,aAAa,EACnCjB,UAAW,EAAAiF,SAAS,CACpBrF,UAAU,IAAE,wBAAoBj4B,iCAC9B,GAAIA,AAD0BA,CAAAA,EAAA,EAAXrE,OAAO,CAAIqE,IAAI,AAAD,IACpB,EAAA60B,IAAA,WAAe,CAC1B,KAAM,KAAAsD,QAAA,EAAS,CACb/2B,GAAI,KAAAg3B,iBAAA,EAAkBp4B,GACtB/K,QAAS,EACX,cAEJ,+CACF,4lBCGO,IAAM6kC,EAAsB,IAAI,EAAAhC,KAAK,CAAC,CAC3C9iC,KAAM,eACN+iC,eAAgB,kBAAM,EAAAuB,aAAa,EACnCiE,QAAS,WACP,KAAAC,yBAAA,GACF,EACAlC,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3CyZ,UAAU,IAAE,iBAAOpe,CAAI,MAEb1sB,EAEKb,EASPmxC,EAUAruC,EAIAsuC,wDApBN,OALQvwC,EAAiB0sB,EAAK9lB,MAAM,CAA5B5G,YAAY,CAEPb,EACTutB,EADFle,OAAO,CAAIrP,IAAI,CAGjB,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,sCAE5B,GAFA,SAEI,CAACa,EACH,MAAO,IAAEiC,WAAY,IAAK,GAK5B,GAAIquC,AAFEA,CAAAA,EAAqB,EAAAE,WAAA,SAAoB,GAAGvuC,UAAU,AAAD,YAEzB,EAAAwuC,WAAW,EACvCH,EAAmB7xC,EAAE,EAAIuB,EAC3B,MAAO,IACLiC,WAAYquC,CACd,GAIe,SAAM,EAAAtiC,UAAA,0BAAoC,CAAC,CAC5DvP,GAAI,CAACuB,CACP,WASA,OAXMiC,EAAa,SAIbsuC,EAAwB,IAAI,EAAAE,WAAW,CAAC,SAC5ChyC,GAAI,CAACuB,GACFiC,IAGL,EAAAyuC,aAAA,YAAyB,CAACH,GAEnB,IAAEtuC,WAAYsuC,CAAsB,KAC7C,YAnCmB7jB,CAAI,kCAoCzB,GAEO,IAAMkgB,EAAsB,IAAI,EAAAjC,KAAK,CAAC,CAC3C9iC,KAAM,gBACN+iC,eAAgB,kBAAM+B,GACtBc,MAAM,IAAE,iBAAO/gB,CAAI,MACT1sB,wDACK,OADLA,EAAiB0sB,EAAK9lB,MAAM,CAA5B5G,YAAY,CACP,GAAM,EAAAgO,UAAA,oCAA8C,CAAC,CAChEhO,aAAc,CAACA,CACjB,WAEA,MAAO,IAAE2wC,WAJI,QAIa,KAC5B,YAPejkB,CAAI,mCAQnByhB,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3C6Z,UAAW,iBAAM,UAAC,SAAU,KAC9B,GAEO,IAAM3xB,EAAqB,IAAI,EAAAoxB,KAAK,CAAC,CAC1C9iC,KAAM,4BACN+iC,eAAgB,kBAAM+B,GACtBzB,UAAW,iBAAM,UAAC,SAAI,MACtBuC,MAAM,IAAE,wBAAS7mC,EAAmB4yB,EAC5BoX,wDAAmB,OADVhqC,EAAA0jB,EAAA1jB,MAAA,CAAmB4yB,EAAA,EAAXhrB,OAAO,CAAIgrB,WAAW,CACpB,GAAM,EAAAxrB,UAAA,8BACR,GACpB/I,IAAI,CAAC,SAAC1B,CAAQ,SAAKA,IACnB2B,KAAK,CAAC,WACL,MAAO,EAAE,AACX,WAEF,OAPM0rC,EAAmB,SAOzB,GAAMC,EAAgB,CACpB9jC,QAAS,CAACnG,EAAOzD,KAAK,CACtBq2B,YAAAA,CACF,WAEA,OALA,SAKO,IACLoX,iBAAAA,CACF,KACF,+CACF,GAEA,IAAMC,KAAkB,iBAAOnkB,CAAI,MA0B3B,EArBI8M,EAAazsB,EACf5J,EAMAlB,EAAAyI,wDANQ,6BADN8uB,EAAyB9M,EAAzB8M,WAAW,CAAEzsB,EAAY2f,EAAZ3f,OAAO,CACd,GAAMysB,EAAYkB,eAAe,CAC7C,EAAAqU,YAAA,mBAA+B,CAAC,CAC9BhiC,QAAAA,CACF,mBAHI5J,EAAQ,SASZlB,CAAAA,AAHIA,CAAAA,EAAa,EAAAuuC,WAAA,SAAoB,EAAC,EAG3BM,eAAe,GAAK3tC,EAAM2tC,eAAe,EACpD7uC,EAAWjC,YAAY,GAAKmD,EAAMnD,YAAY,EAC9CiC,EAAWJ,QAAQ,GAAKsB,EAAMtB,QAAQ,AAAD,GAErC,EAAA6uC,aAAA,OAAoB,CAAC,CACnBI,gBAAiB3tC,EAAM2tC,eAAe,CACtC9wC,aAAcmD,EAAMnD,YAAY,CAChC6B,SAAUsB,EAAMtB,QAAQ,AAC1B,GAGE,CAA+B,OAA/B,KAAAkvC,MAAA,SAAe,GAAG1yB,aAAa,AAAD,GAA9B,oBAAiCtR,OAAO,AAAD,IAAM5J,EAAM4J,OAAO,EAC5D,EAAAikC,QAAA,iBAAyB,CAAC7tC,yDAGhC,YA9B+BupB,CAAI,mCAgC5B,IAAMmgB,EAAqC,IAAI,EAAAlC,KAAK,CAAC,CAC1D9iC,KAAM,8BACN+iC,eAAgB,kBAAM+B,GACtBzB,UAAW,WACT,MACE,UAAC,EAAA+F,cAAc,WACb,UAAC,SAAU,EAACre,MAAO,uBAGzB,EACAkY,UAAU,IAAE,wBAASlkC,EAAQ,EAAW3E,EAAYu3B,wDAClD,GADmB5yB,EAAA0jB,EAAA1jB,MAAA,CAAmB3E,EAAA,AAAnB,GAAAqoB,EAAQ9b,OAAO,AAAD,EAAKvM,UAAA,CAAYu3B,EAAA,EAAAA,WAAA,CAC9Cv3B,GAAcA,EAAWivC,MAAM,CACjC,KAAM,KAAAlG,QAAA,EAAS,CACb/2B,GAAIhS,EAAWxD,EAAE,CAAI,gBAA6B,OAAdwD,EAAWxD,EAAE,EAAK,GACxD,GAGF,SAAMoyC,EAAgB,CACpBrX,YAAAA,EACAzsB,QAAS,CAACnG,EAAOzD,KAAK,AACxB,kBAHA,eAIF,+CACF,GAEO,IAAMqkB,EAAoC,IAAI,EAAAmjB,KAAK,CAAC,CACzD9iC,KAAM,uCACN+iC,eAAgB,kBAAM+B,GACtBzB,UAAW,WACT,MACE,UAAC,EAAA+F,cAAc,WACb,UAAC,SAAO,MAGd,EACAnG,UAAU,IAAE,wBAASlkC,wDACnB,OADmBA,EAAA0jB,EAAA1jB,MAAA,CACnB,GAAMiqC,EAAgB,CACpBrX,YAFoC,EAAXhrB,OAAO,CAAIgrB,WAAW,CAG/CzsB,QAAS,CAACnG,EAAOzD,KAAK,AACxB,kBAHA,eAIF,+CACF,GAEO,IAAM2pC,EAAoB,IAAI,EAAAnC,KAAK,CAAC,CACzC9iC,KAAM,0CACN+iC,eAAgB,kBAAM+B,GACtBzB,UAAW,EAAAiG,YAAY,CACvB1D,MAAM,IAAE,wBACKjU,EAAA,EACMzsB,EAAS/M,EAKlBiC,2DANGu3B,EAAA,EAAXhrB,OAAO,CAAIgrB,WAAW,CACLzsB,EAAA,AADN,KACXnG,MAAM,AAAD,EAAKzD,KAAK,CAAWnD,EAAA,EAAAA,YAAA,CAEC,EAAAwwC,WAAA,SAAoB,GAAvChU,cAAc,CAElB,YACiB,SAAM,EAAAxuB,UAAA,0BAAoC,CAAC,CAC5DvP,GAAI,CAACuB,CACP,WAFMiC,EAAa,SAInB,EAAAyuC,aAAA,OAAoB,CAAC,CACnBlU,eAAgBv6B,EAAWtD,IAAI,AACjC,oBAGc,SAAM66B,EAAY4X,UAAU,CAC1C,EAAArC,YAAA,iBAA6B,CAAC,CAC5BhiC,QAAS,CAACA,CACZ,YAGF,MAAO,IACLskC,QAPc,QAQhB,KACF,+CACF,sSCtMO,IAAMC,EAA4B,IAAI,EAAA3G,KAAK,CAAC,CACjD9iC,KAAM,oBACN+iC,eAAgB,kBAAM,EAAAoB,YAAY,EAClClB,UAAU,IAAE,wBAAoB3rC,wDAC9B,OAD8BA,EAAA,EAAXqP,OAAO,CAAIrP,IAAI,CAClC,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,mCAE5B,OAFA,SAEO,IAAEimC,KAAM,kBAAmB,KACpC,+CACF,GAEamM,EAAwB,IAAI,EAAA5G,KAAK,CAAC,CAC7C9iC,KAAM,IACN+iC,eAAgB,kBAAM0G,GACtBpG,UAAW,iBAAM,UAAC,EAAAsG,gBAAgB,MAClC1G,WAAY,WACV,MAAO,CACLn8B,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,oBACtB,EACD,AACH,CACF,CACF,GAEO,IAAMkiC,EAAqB,IAAI,EAAA9G,KAAK,CAAC,CAC1C9iC,KAAM,gBACN+iC,eAAgB,kBAAM0G,GACtBpG,UAAW,iBAAM,UAAC,EAAAwG,oBAAoB,MACtCvD,iBAAkB,iBAAM,UAAC,EAAA9kB,MAAM,EAACgI,YAAW,MAC3CyZ,UAAU,IAAE,iBAAOpe,CAAI,MAET1gB,EAGN7J,wDAAY,OAHN6J,EACR0gB,EADF9lB,MAAM,CAAIoF,WAAW,CAGL,GAAM,EAAAgC,UAAA,wBAAkC,CAAC,CACzDvP,GAAI,CAACuN,CACP,WAEA,OAJM7J,EAAY,SAIX,IACLwvC,UAAW,WAAM,CAAC,0BAA2B,CAC3CC,YAAazvC,EAAUxD,IAAI,AAC7B,GACAwD,UAAAA,CACF,KACF,YAfmBuqB,CAAI,mCAgBvB+gB,MAAM,IAAE,mDACN,MAAO,IACLtrC,UAFwB,EAAXqM,OAAO,CAAIrM,SAAS,AAGnC,IACF,+CACF,GAEaoqC,EAA4B+E,EAA0B7F,WAAW,CAAC,CAC7E8F,EACAE,EACD,2VC5CM,IAAMI,EAA8B,IAAI,EAAAlH,KAAK,CAAC,CACnD9iC,KAAM,sBACN+iC,eAAgB,kBAAM,EAAAoB,YAAY,EAClClB,UAAU,IAAE,wBAAoB3rC,wDAC9B,OAD8BA,EAAA,EAAXqP,OAAO,CAAIrP,IAAI,CAClC,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,0CAE5B,OAFA,SAEO,IAAEimC,KAAM,oBAAoC,KACrD,+CACF,GAEO,IAAM0M,EAAyB,IAAI,EAAAnH,KAAK,CAAC,CAC9C9iC,KAAM,IACN+iC,eAAgB,kBAAMiH,GACtB3G,UAAW,iBAAM,UAAC,EAAA6G,gBAAgB,MAClCjH,UAAU,IAAE,iBAAOpe,CAAI,MAGfslB,EAqCAC,6CAWN,CAlDA,EAAAzY,WAAA,gBAA2B,CAAC,EAAAuV,YAAA,oBAAgC,MAE5C,iBAAOxjB,CAAM,MAID,EAFlBhoB,EAOEE,EAEAsR,EAWDrK,EAEClH,wDAtBS,iCAAM,EAAAwK,UAAA,0BAAoC,CAAC,CAC1D5F,SAAU,CACR8pC,mBAAoB3mB,MAAAA,EAAA,OAAY,OAAZ,GAAAA,EAAQ7E,IAAI,AAAD,GAAX,mBAAc,CAAC,EAAE,AACvC,CACF,iBAJMnjB,CAAAA,EAAW,WAOTE,EAAMmK,OAAOukC,GAAG,CAACC,eAAe,CAAC,IAAIC,KAAK,CAAC9uC,KAIjDwR,AAFMA,CAAAA,EAAOkhB,SAASqc,aAAa,CAAC,MAE/BxkC,IAAI,CAAGrK,EACZsR,EAAKw9B,YAAY,CAAC,WAAY,iBAC9Btc,SAASryB,IAAI,CAAC4uC,WAAW,CAACz9B,GAC1BA,EAAKya,KAAK,GAEV,EAAAijB,KAAA,MAAW,CAAC,WAAM,CAAC,qBAEnB,EAAAA,KAAA,QAAa,CAAC,WAAM,CAAC,oDAEhB/nC,CAAAA,EAAA,oBACU,EAAApH,QAAQ,GAGnBE,AAFEA,CAAAA,EAAUkH,EAAE9G,IAAI,AAAD,GAEN,AAAmB,UAAnB,OAAOJ,EACpB,EAAAivC,KAAA,MAAW,CAACjvC,GAEZ,EAAAivC,KAAA,MAAW,CAAC,WAAM,CAAC,wCAIvB,EAAAjwB,YAAA,MAAkB,0BAEtB,GAnCMwvB,WAAiBzmB,CAAM,kCAqCvB0mB,EAAkB,iBACtB,EAAAzvB,YAAA,KAAiB,CAAC,CAChBoQ,MAAO,WAAM,CAAC,aACdnQ,UAAW,EAAAiwB,aAAa,CACxBhwB,QAAS,WAAM,CAAC,gBAChBC,IAAI,IAAE,iBAAOgwB,CAAG,iCACd,MAAO,GAAAA,EAAI9zB,YAAY,CAACmzB,OAC1B,YAFaW,CAAG,kCAGlB,EACF,EAEI,AAACjmB,EAAKjhB,MAAM,CAAC0hC,GAAG,EAAIzgB,AAAoB,eAApBA,EAAKjhB,MAAM,CAAC0hC,GAAG,EA2CnCzgB,EAAKjhB,MAAM,CAAC0hC,GAAG,EAAIzgB,AAAoB,aAApBA,EAAKjhB,MAAM,CAAC0hC,GAAG,CAC7B,IACLpmC,IAAK,WACL4H,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,kBACtB,EAEJ,OAlDO,IACLxI,IAAK,aACL4H,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,oBACtB,EACA,CACEA,YAAa,WAAM,CAAC,mBACpBC,mBAAoB,eACtB,GAEFojC,UACE,WAAC,EAAA1jC,IAAI,EAACC,cAAc,MAAMuuB,GAAG,OAAO7c,IAAK,YACvC,UAAC,EAAA5N,MAAM,EACLyqB,GAAG,OACH3rB,QAAS,WACP,EAAA8gC,eAAA,KAAoB,CAAC,CACnBh0C,SAAU,KACVi0C,mBAAoBptC,KAAAA,CACtB,EACF,WAEC,WAAM,CAAC,kBAEV,UAAC,EAAAuN,MAAM,EACLyqB,GAAG,OACH3rB,QAAS,WACP,EAAAghC,cAAA,KAAmB,CAAC,CAClBhwC,QAAS,IACX,EACF,WAEC,WAAM,CAAC,iBAEV,UAAC,EAAAkQ,MAAM,EAACyqB,GAAG,OAAO3rB,QAASkgC,WACxB,WAAM,CAAC,iBAIhB,IAaJ,YAxGmBvlB,CAAI,mCAyGvB2e,eAAgB,SACdC,CAAS,EAKT,MAAO,CACL6B,IAAK,CAAC,aAAc,WAAW,CAAC3X,QAAQ,CAAC8V,EAAU6B,GAAG,EACjD7B,EAAU6B,GAAG,CACdznC,KAAAA,EAEJstC,OAAQ,CAAC,kBAAkB,CAACxd,QAAQ,CAAC8V,EAAU0H,MAAM,EAChD1H,EAAU0H,MAAM,CACjBttC,KAAAA,CACN,CACF,CACF,GAEa4mC,EACXuF,EAA4BpG,WAAW,CAAC,CAACqG,EAAuB,+PCzJ3D,IAAMmB,EAAqB,IAAI,EAAAtI,KAAK,CAAC,CAC1C9iC,KAAM,YACN+iC,eAAgB,kBAAM,EAAAoB,YAAY,EAClClB,UAAU,IAAE,wBAAoB3rC,wDAC9B,OAD8BA,EAAA,EAAXqP,OAAO,CAAIrP,IAAI,CAClC,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,kCAE5B,OAFA,SAEO,IAAEimC,KAAM,UAAW,KAC5B,+CACF,GAWM8N,EAA2B,QAAQ,CAAC,CACxC/F,IAAK,MAAM,CAVe,CAC1B,SACA,OACA,OACA,SACA,WACA,SACD,EAG2BjoC,KAAK,CAAC,SAClC,GAMaiuC,EAAgB,IAAI,EAAAxI,KAAK,CAAC,CACrC9iC,KAAM,IACN+iC,eAAgB,kBAAMqI,GACtB/H,UAAW,iBAAM,UAAC,EAAAkI,YAAY,MAE9B3F,OAAQ,uBACAlvC,EACA80C,wDADW,SAAM,EAAArlC,UAAA,iCAA2C,WAChD,OADZzP,EAAW,SACC,GAAM,EAAAyP,UAAA,8BAAwC,WAEhE,OAFMqlC,EAAY,SAEX,IAAE90C,SAAAA,EAAU80C,UAAAA,CAAU,KAC/B,GACAhI,eAAgB,SAACC,CAAS,EACxB,OAAO4H,EAAyBlO,KAAK,CAACsG,EACxC,CACF,GAEakB,EAAyByG,EAAmBxH,WAAW,CAAC,CACnE0H,EACD,0NC5CM,IAAMG,EAAkB,IAAI,EAAA3I,KAAK,CAAC,CACvCC,eAAgB,kBAAM,EAAAoB,YAAY,EAClCnkC,KAAM,SACNijC,UAAU,IAAE,wBAAoB3rC,wDAC9B,OAD8BA,EAAA,EAAXqP,OAAO,CAAIrP,IAAI,CAClC,GAAM,KAAAusC,eAAA,EAAgBvsC,EAAM,+BAE5B,OAFA,SAEO,IACLimC,KAAM,QACNz2B,cAAe,CACb,CACEY,YAAa,WAAM,CAAC,eACtB,EAEJ,KACF,+CACF,GAEagkC,EAAiB,IAAI,EAAA5I,KAAK,CAAC,CACtCC,eAAgB,kBAAM0I,GACtBzrC,KAAM,IACNqjC,UAAW,iBAAM,UAAC,EAAAsI,UAAU,KAC9B,GAEaC,EAAkB,IAAI,EAAA9I,KAAK,CAAC,CACvCC,eAAgB,kBAAM0I,GACtBzrC,KAAM,OACNqjC,UAAW,iBAAM,UAAC,EAAAwI,OAAO,EAAC3tC,KAAK,SAC/B+kC,WAAY,iBAAO,CAAE1F,KAAM,iBAAkB,EAC/C,GACauO,EAAgB,IAAI,EAAAhJ,KAAK,CAAC,CACrCC,eAAgB,kBAAM0I,GACtBzrC,KAAM,gBACNqjC,UAAW,iBAAM,UAAC,EAAAwI,OAAO,EAAC3tC,KAAK,UAC/B+kC,WAAY,iBAAO,CAAE1F,KAAM,kBAAmB,EAChD,GAEaqH,EAAsB6G,EAAgB7H,WAAW,CAAC,CAC7D8H,EACAE,EACAE,EACD,4KCvCK9H,EAAa,IAAI,EAAAlB,KAAK,CAAC,CAC3BC,eAAgB,kBAAM,EAAAC,SAAS,EAC/BhjC,KAAM,SACNqjC,UAAW,iBAAM,QACnB,GAEM0I,EAAY,EAAA/I,SAAA,YAAqB,CAAC,CACtC,EAAAuB,aAAa,CACb,EAAAZ,aAAa,CACbK,EACD,EAEYgI,EAAS,IAAI,EAAAC,MAAM,CAAC,CAC/BF,UAAAA,EACAplC,QAAS,CACPgrB,YAAA,EAAAA,WAAW,AACb,CACF,GAEap7B,EAAiB,WAC5B,MAAO,UAAC,gBAAsB,EAACy1C,OAAQA,GACzC,6ICzBahJ,EAAY,KAAAkJ,oBAAA,IAIpB,CACH7I,UAAW,WACT,MACE,WAAC,EAAA8I,mBAAmB,EAACC,OAAQ,EAAAza,WAAW,WACtC,UAAC,EAAA2R,MAAM,KACN,GACA,KAGP,CACF,gMCjBac,EAAoB,SAGpBiI,EACV,GAAoB,OAAlBjI,EAAkB,gBAEVhT,EALe,WAQfkb,EAAqB,GAAoB,OAAlBlI,EAAkB,UAQzChB,EAAoB,SAACp4B,CAAI,EACpC,OAAQA,GACN,KAAK,EAAA60B,IAAA,WAAe,CAClB,MAb2B,aAc7B,MAAK,EAAAA,IAAA,gBAAoB,CACvB,OAAOwM,CACT,MAAK,EAAAxM,IAAA,WAAe,CAClB,OAAOyM,CACT,MAAK,EAAAzM,IAAA,oBAAwB,CAE7B,KAAK,EAAAA,IAAA,sBAA0B,CAE/B,KAAK,EAAAA,IAAA,eAAmB,CAHtB,OAf6BwM,CAoB/B,MAAK,EAAAxM,IAAA,eAAmB,CACtB,OAAOzO,CACT,SACE,MAAO,GACX,CACF,0KCrCamb,EAAW,CACtBC,gBAAiB,kBACjBC,2BAA4B,6BAC5BC,qCACE,6CACJ,EAIMC,EAAiB,WACrB,MAAO,CACLH,gBAP4C,IAQ5CE,qCARK,IAULD,2BAA4B,EAC9B,CACF,EAEaG,EAAa,SAACC,CAAO,EAChC,IAAMC,EAAOH,GAAgB,CAACE,EAAQ,OAEtC,CAAI,KAAApe,KAAA,EAAMqe,IAKRA,GACAA,AAAS,MAATA,GACAA,AAAS,IAATA,GACAA,AAAS,UAATA,GACAA,AAAS,cAATA,CAEJ,EAEatkB,EAAkB,SAC7BqkB,CAAO,CACPxkC,CAAY,SAIZ,AAFmBukC,EAAWC,GAMvBF,GAAgB,CAACE,EAAQ,CAHvBxkC,CAIX,uFC7CO,IAAMspB,EAAc,GAAI,aAAAob,WAAW,CAAC,CACzCC,eAAgB,CACdC,QAAS,CACPC,qBAAsB,GACtBC,4BAA6B,EAC/B,CACF,CACF,8JCGajG,EAAe,CAC1BkG,mBAAoB,SAACvoB,CAAI,QAIvB,KAAAsN,YAAA,EAAa,CACXrS,SAAU,CAAC,mBAAoB+E,EAAK,CACpC9E,QAAS,kBACP,EAAA5Z,UAAA,qCAA+C,CAAC,CAC9ChC,YAAa0gB,EAAK1gB,WAAW,CAC7BhM,aAAc0sB,EAAK1sB,YAAY,AACjC,GACJ,IACFk1C,sBAAuB,SAACxoB,CAAI,QAI1B,KAAAsN,YAAA,EAAa,CACXrS,SAAU,CAAC,YAAa+E,EAAK,CAC7B9E,QAAS,wDACP,AAAI,KAAA0O,KAAA,EAAM5J,EAAK1gB,WAAW,EACjB,IAAC,GAGH,KAAAgC,UAAA,wBAAkC,CAAC,CACxChO,aAAc0sB,EAAK1sB,YAAY,CAC/BvB,GAAIiuB,EAAK1gB,WAAW,AACtB,KACF,EACF,IAEFmpC,mBAAoB,SAACzoB,CAAI,EACvB,MAAO,KAAAsN,YAAA,EAAa,CAClBrS,SAAU,CAAC,SAAU+E,EAAK3f,OAAO,CAAC,CAClC6a,QAAS,yEACP,SAAM,EAAA5Z,UAAA,yBAAmC,CAAC,CACxCjB,QAAS2f,EAAK3f,OAAO,AACvB,WAFA,uBAGJ,EACF,EAEAqoC,2BAA4B,SAAC1oB,CAAI,EAC/B,MAAO,KAAAsN,YAAA,EAAa,CAClBrS,SAAU,CACR,0BACA+E,EAAKnhB,YAAY,CACjBmhB,EAAK1sB,YAAY,CACjB0sB,EAAK7qB,QAAQ,CACd,CACD+lB,QAAS,uBACCrc,EAAcvL,EAAc6B,wDAEpC,GAFQ0J,EAAyCmhB,EAAzCnhB,YAAY,CAAEvL,EAA2B0sB,EAA3B1sB,YAAY,CAAE6B,EAAa6qB,EAAb7qB,QAAQ,CAExC,KAAAy0B,KAAA,EAAM/qB,IAAiB,KAAA+qB,KAAA,EAAMt2B,IAAiB,KAAAs2B,KAAA,EAAMz0B,GACtD,MAAO,OAGI,SAAM,EAAAmM,UAAA,gCAA0C,CAAC,CAC5DzC,aAAcA,EACdvL,aAAc,CAACA,EACf6B,SAAUA,GAAsB6D,KAAAA,CAClC,WAEA,MAAO,GANM,YAOf,EACF,EACF,EAEA2vC,wBAAyB,SAACvoC,CAAiB,EACzC,MAAO,KAAAktB,YAAA,EAAa,CAClBrS,SAAU,CAAC,mBAAoB7a,EAAkB,CACjDwoC,YAAa,EAAE,CACf1tB,QAAS,yEACM,SAAM,EAAA5Z,UAAA,yBAAmC,CAAC,CACrDlB,kBAAmBA,EAAoB,CAACA,EAAoBpH,KAAAA,CAC9D,WAEA,MAAO,GAAAgE,AAJM,SAID0F,GAAG,CAAC,SAACmmC,CAAmB,EAClC,MAAO,CACL1wC,MAAO0wC,MAAAA,EAAA,OAAAA,EAAqB92C,EAAE,CAC9BqW,MAAOygC,MAAAA,EAAA,OAAAA,EAAqBxuC,GAAG,AACjC,CACF,MACF,EACF,EACF,EAEAyuC,iBAAkB,SAAC9oB,CAAI,EACrB,MAAO,KAAAsN,YAAA,EAAa,CAClBrS,SAAU,CAAC,gBAAiB+E,EAAK,CACjC+oB,MAAO,EACP7tB,QAAS,yDACP,AAAK8E,EAAK3f,OAAO,CAIV,KAAAiB,UAAA,uBAAiC,CAAC,CACvCjB,QAAS2f,EAAK3f,OAAO,AACvB,IALS,UAMX,EACF,EACF,EAEA2oC,oBAAqB,WACnB,MAAO,KAAA1b,YAAA,EAAa,CAClBrS,SAAU,CAAC,6BAA6B,CACxC8tB,MAAO,EACP7tB,QAAS,yEAEL,SAAM,EAAA5Z,UAAA,qCAA+C,WAEvD,MAAO,GAAA8sB,AAFL,SAEgB1rB,GAAG,CAAC,SAACumC,CAAE,QAAM,CAC7B9wC,MAAO8wC,EAAG5uC,GAAG,CACb+N,MAAO6gC,EAAG9wC,KAAK,CACf0qC,KAAMoG,CACR,OAGF,EACF,EACF,EAEAC,uBAAwB,WACtB,MAAO,KAAA5b,YAAA,EAAa,CAClBrS,SAAU,CAAC,iCAAiC,CAC5C8tB,MAAO,EACP7tB,QAAS,yEACc,SAAM,EAAA5Z,UAAA,6BAAuC,WAElE,MAAO,GAAA6nC,AAFc,SAEDzmC,GAAG,CAAC,SAAC0mC,CAAE,QAAM,CAC/BjxC,MAAOixC,EAAGr3C,EAAE,CACZqW,MAAOghC,EAAGljB,KAAK,CACf2c,KAAMuG,CACR,OAGF,EACF,EACF,EACAC,mBAAoB,WAClB,MAAO,KAAA/b,YAAA,EAAa,CAClBrS,SAAU,CAAC,kBAAkB,CAC7B8tB,MAAO,EACP7tB,QAAS,yEACc,SAAM,EAAA5Z,UAAA,wBAAkC,WAE7D,MAAO,GAAA6nC,AAFc,SAEDzmC,GAAG,CAAC,SAAC0mC,CAAE,QAAM,CAC/BjxC,MAAOixC,EAAGr3C,EAAE,CACZqW,MAAOghC,EAAGljB,KAAK,CACf2c,KAAMuG,CACR,OAGF,EACF,EACF,EACAE,yBAA0B,SAACtpB,CAAI,QAC7B,KAAAsN,YAAA,EAAa,CACXrS,SAAU,CAAC,qBAAsB+E,EAAK,CACtC9E,QAAS,kBACP,EAAA5Z,UAAA,uBAAiC,CAAC,CAChCjB,QAAS2f,EAAK3f,OAAO,AACvB,GACJ,IAEFkpC,qBAAsB,SAACvpB,CAAI,QACzB,KAAAsN,YAAA,EAAa,CACXrS,SAAU,CAAC,iBAAkB+E,EAAK,CAClC9E,QAAS,kBACP,EAAA5Z,UAAA,wBAAkC,CAAC,CACjCjB,QAAS2f,EAAK3f,OAAO,AACvB,GACJ,GACJ,uICrLampC,EAAQ,CACnBC,qBAAsB,SAACh3C,CAAI,EACzB,OAAOA,EAAKE,YAAY,AAC1B,EACA+2C,eAAgB,SAACj3C,CAAI,EACnB,OAAOA,EAAKE,YAAY,EAAIF,EAAKK,kBAAkB,AACrD,EACA62C,eAAgB,SAACl3C,CAAI,EACnB,OAAOA,EAAKE,YAAY,EAAIF,EAAKK,kBAAkB,EAAIL,EAAKC,OAAO,AACrE,EACAk3C,cAAe,SAACn3C,CAAI,EAClB,MAAO,CAACA,EAAKM,WAAW,EAAI,CAACN,EAAKuuB,WAAW,AAC/C,EACA6oB,yBAA0B,SAACp3C,CAAI,EAC7B,OAAOA,EAAKuuB,WAAW,EAAIvuB,EAAKC,OAAO,AACzC,EACAo3C,oBAAqB,SAACr3C,CAAI,EACxB,OAAOA,EAAKE,YAAY,EAAIF,EAAKG,OAAO,AAC1C,EACAm3C,uBAAwB,SAACt3C,CAAI,EAC3B,OAAOA,EAAKE,YAAY,EAAIF,EAAKG,OAAO,AAC1C,EACAo3C,+BAAgC,SAACv3C,CAAI,EACnC,OAAOA,EAAKE,YAAY,EAAIF,EAAKI,gBAAgB,AACnD,EACAo3C,wBAAyB,SAACx3C,CAAI,EAC5B,OAAOA,EAAKE,YAAY,EAAIF,EAAKI,gBAAgB,AACnD,EACAq3C,0BAA2B,SAACz3C,CAAI,EAC9B,OACEA,EAAKE,YAAY,EACjBF,EAAKC,OAAO,EACZD,EAAKM,WAAW,EAChBN,EAAKK,kBAAkB,EACvBL,EAAKI,gBAAgB,AAEzB,EACAs3C,2BAA4B,SAAC13C,CAAI,EAC/B,OAAOA,EAAKC,OAAO,EAAID,EAAKuuB,WAAW,AACzC,EACAopB,oCAAqC,SAAC33C,CAAI,EACxC,MAAO,CAACA,EAAKuuB,WAAW,EAAI,CAACvuB,EAAKC,OAAO,EAAI,CAACD,EAAKI,gBAAgB,AACrE,EACAw3C,0BAA2B,SAAC53C,CAAI,EAC9B,OACEA,EAAKE,YAAY,EACjBF,EAAKC,OAAO,EACZD,EAAKK,kBAAkB,EACvBL,EAAKM,WAAW,AAEpB,EACAu3C,iBAAkB,SAAC73C,CAAI,EACrB,MAAO,CAACA,EAAKuuB,WAAW,EAAI,CAACvuB,EAAKC,OAAO,EAAI,CAACD,EAAKK,kBAAkB,AACvE,EACAy3C,kBAAmB,SAAC93C,CAAI,EACtB,MAAO,CAACA,EAAKC,OAAO,EAAI,CAACD,EAAKM,WAAW,EAAI,CAACN,EAAKK,kBAAkB,AACvE,EACA03C,oBAAqB,SAAC/3C,CAAI,EACxB,OACEA,EAAKE,YAAY,EACjBF,EAAKK,kBAAkB,EACvBL,EAAKC,OAAO,EACZD,EAAKM,WAAW,AAEpB,EACA03C,0BAA2B,SAACh4C,CAAI,EAC9B,OAAOA,EAAKE,YAAY,EAAIF,EAAKK,kBAAkB,AACrD,EACA43C,YAAa,SAACj4C,CAAI,EAChB,OAAOA,EAAKE,YAAY,EAAIF,EAAKK,kBAAkB,AACrD,EACA63C,4BAA6B,SAACl4C,CAAI,EAChC,MAAO,CAACA,EAAKM,WAAW,EAAI,CAACN,EAAKuuB,WAAW,EAAI,CAACvuB,EAAKC,OAAO,AAChE,EACAk4C,4BAA6B,SAACn4C,CAAI,EAChC,MAAO,CAACA,EAAKM,WAAW,EAAI,CAACN,EAAKuuB,WAAW,EAAI,CAACvuB,EAAKC,OAAO,AAChE,EACAm4C,qBAAsB,SAACp4C,CAAI,EACzB,MAAO,CAACA,EAAKM,WAAW,EAAI,CAACN,EAAKuuB,WAAW,EAAI,CAACvuB,EAAKC,OAAO,AAChE,CACF,EAIae,EAAgB,SAAChB,CAAI,SAAkB,SAACwsC,CAAI,MAKhD,SAJP,AAAKxsC,EAIE,CAAW,OAAX,GAAA+2C,CAAK,CAACvK,EAAK,AAAD,GAAV,yBAAAuK,EAAc/2C,EAAI,GAAK,GAHrB,IAIX,GAEay5B,EAAU,WACrB,IAAQz5B,EAAS,KAAAkuB,OAAA,IAATluB,IAAI,CAENq4C,EAAQr3C,EAAchB,GAE5B,MAAO,CACLA,KAAAA,EACAw5B,IAAK,SAACgT,CAAI,EACR,OAAO6L,EAAM7L,EACf,CACF,CACF,2GCxGa8L,EAAkB,WAK7B,GAAI,CACF,MAAW,CAAC,CACVC,IAAK,qFAGLC,iBAAkB,EAIlBC,yBAA0B,GAC1BC,yBAA0B,EAC1BC,QAlBqB,iCAmBvB,EACF,CAAE,QAAM,CACNvyC,QAAQC,IAAI,CAAE,+BAChB,CACF,+FCrBO,IAAMk0B,EAAsB,SAACqe,CAAc,EAChD,OAAOA,EAAe3oC,GAAG,CAAC,SAACvQ,CAAQ,EACjC,MAAO,CACLA,SAAUA,EACVE,MAAOF,EAASm5C,QAAQ,CACxBv5C,GAAII,EAASJ,EAAE,CACfga,YAAa5Z,EAAS4Z,WAAW,AACnC,CACF,EACF,kGCTO,IAAMstB,EAAyB,SAACkS,CAAiB,EACtD,OAAOA,EAAkB7oC,GAAG,CAAC,SAAC8oC,CAAW,EACvC,MAAO,CACLr5C,SAAUq5C,EACVn5C,MAAOm5C,EAAYF,QAAQ,CAC3Bv5C,GAAIy5C,EAAYz5C,EAAE,CAClBga,YAAay/B,EAAYz/B,WAAW,AACtC,CACF,EACF,iICLa0/B,EAA0B,WACrC,KAAAxvB,SAAA,EAAU,WACR,EAAAhJ,QAAA,kBAA0B,EAC5B,EAAG,EAAE,CACP,2ICDMy4B,EAAiB,CACrB,gCAAiC,WAAM,CAAC,iBAC1C,EAiBaC,EAAuB,SAClC50B,CAAW,EAmEX,MAAO,CAAE60B,mBAjEkB,SAACC,CAAY,CAAOz0C,CAAO,EACpD,IAA0C,EAAZ,AAAAA,CAAAA,GAAW,CAAC,GAAlC00C,YAAY,CAAZA,EAAA,WAAe,EAAE,GAEzB,GAAI,CACF,IAAmB,EAAbC,EAAaF,MAAAA,EAAA,OAAsB,OAAtB,GAAAA,EAAch1C,QAAQ,AAAD,GAArB,oBAAwBmG,IAAI,AAK/C+uC,OAAAA,GAAAA,EAAYpxC,OAAO,CAAC,SAAC/B,CAAK,EACxB,IAAwB,EAAlBozC,EAAkB,AAAkB,OAAlB,GAAApzC,EAAMqzC,YAAY,AAAD,GAAjB,oBAAoBC,KAAK,CAAC,KAAKlqC,EAAE,CAAC,IACpDmqC,EAAY,AAAAH,CAAAA,MAAAA,EAAA,OAAAA,EAAiBI,MAAM,CAAC,GAAGvf,WAAW,EAAC,EACvDmf,CAAAA,MAAAA,EAAA,OAAAA,EAAiBtmC,KAAK,CAAC,EAAC,GAEtBomC,EAAahjB,QAAQ,CAACqjB,IAItBp1B,EAAYs1B,aAAa,CAACF,IAC5Bp1B,EAAYu1B,QAAQ,CAACH,EAAU,CAC7Br1C,QAAS8B,MAAAA,EAAA,OAAAA,EAAO2zC,YAAY,CAC5BlzC,KAAM,QACR,EAEJ,EACF,CAAE,MAAO2E,EAAG,CACVnF,QAAQC,IAAI,CAAC,4BACbD,QAAQC,IAAI,CAACkF,GAEbnF,QAAQ2zC,GAAG,CAACX,EACd,CACF,EAkC6BY,oBAhCD,SAC1BZ,CAAY,CACZz0C,CAAO,EAEP,IAAgD,EAAAA,GAAW,CAAC,IAAZ,EAAxC00C,YAAY,CAAZA,EAAA,WAAe,EAAE,KAAuB,EAArBY,WAAW,CAAXA,EAAA,WAAc,KAEzC,GAAI,CACF,IAAmB,EAEnB,EAFMX,EAAaF,MAAAA,EAAA,OAAkB,OAAlB,GAAAA,EAAc30C,IAAI,AAAD,GAAjB,oBAAoByG,MAAM,AAE9B,QAAf,GAAA3F,OAAO6C,OAAO,CAACkxC,EAAU,GAAzB,cAA4BpxC,OAAO,CAAC,+BAAEN,EAAA,KAAKzB,EAAA,KACnCuzC,EAAYO,EACf,CAAAryC,CAAAA,MAAAA,EAAA,OAAAA,EAAK+xC,MAAM,CAAC,GAAGvf,WAAW,EAAC,EAAIxyB,CAAAA,MAAAA,EAAA,OAAAA,EAAKqL,KAAK,CAAC,EAAC,CAAC,EAE/C,GAAIqR,EAAYs1B,aAAa,CAACF,GAAW,CACvC,GAAIL,EAAahjB,QAAQ,CAACqjB,GACxB,OAGFp1B,EAAYu1B,QAAQ,CAACH,EAAU,CAC7Br1C,QAAS61C,AAlEZC,AAkE4Bh0C,EAlEnB8J,GAAG,CAAC,SAACyyB,CAAC,EACpB,IALiBA,EAKX0X,GALW1X,EAKYA,EAJ/B,KAAA2X,eAAA,EAAgBpB,GAAgB94B,IAAI,CAAC,SAACm6B,CAAC,SAAK5X,EAAErM,QAAQ,CAACikB,YAMrD,AAAI,AAAoB,UAApB,OAAOF,EACFnB,CAAc,CAACmB,EAAS,CAG1B1X,CACT,GA0D0Cp6B,IAAI,CAAC,KACrC1B,KAAM,QACR,EACF,CACF,EACF,CAAE,MAAO2E,EAAG,CACVnF,QAAQC,IAAI,CAAC,4BACbD,QAAQC,IAAI,CAACkF,GAEbnF,QAAQ2zC,GAAG,CAACX,EACd,CACF,CAEiD,CACnD,8FCxFO,IAAMrd,EAAqB,SAChCJ,CAAU,CACVr8B,CAAE,EAEF,IAAMI,EAAWi8B,EAAWxb,IAAI,CAC9B,SAACo6B,CAAkB,MACjB,QAAAA,CAAAA,MAAAA,EAAA,OAA4B,OAA5B,GAAAA,EAAoB76C,QAAQ,AAAD,GAA3B,oBAA8BF,IAAI,AAAD,IAAMF,IAG3C,MAAO,CACLI,SAAUA,MAAAA,EAAA,OAAAA,EAAW,QAAW,CAChC4Z,YAAa5Z,MAAAA,EAAA,OAAAA,EAAW,WAAc,AACxC,CACF,oIClBa86C,EAA8B,WACzC,IAAQhtB,EAAY,KAAAC,UAAA,IAAZD,OAAO,CACTpjB,EAAU,QAAGojB,EAAQpB,MAAM,IAEjC,MAAO,CACLquB,uBAAwB,SAAC/sC,CAAU,EACjC,OAAOtD,EAAO+V,IAAI,CAChB,SAACyN,CAAG,SAAKA,EAAItuB,EAAE,GAAKoO,GAAckgB,EAAIpuB,IAAI,GAAKkO,GAEnD,CACF,CACF,2GCZagtC,EAAmB,SAACl7C,CAAI,EAGnC,MAAOsB,AAFO,QAAAiO,cAAA,IAANjO,CAAC,AAADA,EAECtB,IAAS,EACpB,8TCYMm7C,EAAK,WACN,EACA,EACA,EACA,EACA,EACA,GAECC,EAAK,WACN,EACA,EACA,EACA,EACA,EACA,GAGL,KAAAC,yBAAA,EAA0B,CAACF,EAAIC,EAAG,EAgBlC,IAAMpoC,EAAOtE,aAAaC,OAAO,CAAC,QAElC,aACM,CAAC,SAAO,EACXI,GAAG,CAAC,EAAAusC,gBAAgB,EACpBvsC,GAAG,CAAC,IAAI,SAAkB,EAC1BwsC,IAAI,CAAC,CACJC,UAAW,CACTL,GAAI,CACFM,YAAaN,CACf,EACAC,GAAI,CACFK,YAAaL,CACf,CACF,EACAM,YAAa1oC,GAAQ,KACrB2oC,cAAe,CACbC,YAAa,EACf,CACF,GAEF,MAAe,SAAI,+LC/DNC,EAA4B,KAAAhB,eAAA,EAAgB,GACtDjxC,MAAM,CAAC,SAACxB,CAAG,SAAKA,EAAIoL,UAAU,CAAC,+BAC/B/C,GAAG,CAAC,SAACqrC,CAAS,EACb,IAAsB,UAAAA,EAAU7B,KAAK,CAAC,QAA/B8B,EAAe,KAARC,EAAQ,KAKtB,MAAO,CACL91C,MAAO81C,EACP7lC,MAAO,WAAM,CAAE,GAAW,OAAT4lC,EAAM,KAAQ,OAALC,GAC5B,CACF,GACCpyC,MAAM,CAACklB,SAEGmtB,EAAgB,KAAApB,eAAA,EAAgB,GAC1CjxC,MAAM,CAAC,SAACxB,CAAG,SAAKA,EAAIoL,UAAU,CAAC,mBAC/B/C,GAAG,CAAC,SAACqrC,CAAS,EACb,IAAsB,UAAAA,EAAU7B,KAAK,CAAC,QAA/B8B,EAAe,KAARC,EAAQ,KAKtB,MAAO,CACL91C,MAAO81C,EACP7lC,MAAO,WAAM,CAAE,GAAW,OAAT4lC,EAAM,KAAQ,OAALC,GAC5B,CACF,GACCpyC,MAAM,CAACklB,4GC1BH,IAAMusB,EAA4B,SACvCa,CAAY,EAyBd,sNCzBMz3B,EAAO,YAAmB,CAC9B6S,SAAS6kB,cAAc,CAAC,SAG1Bv1C,QAAQmuB,IAAI,CAAE,gBAA0C,OAhBxD,UAkBA,KAAA+jB,eAAA,IAQA,mCAA+B,CAC7B,SAACl0C,CAAQ,EACP,OAAOA,CACT,EACA,SAAC+B,CAAK,EACJ,GAAI,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAOq1C,IAAI,AAAD,IAAM,cAKlB,OAAOt2C,QAAQE,MAAM,CAACe,EAE1B,YAGa,aAAf,kDAEI,WASJ,EAAC,EAXc,sBAafy1C,mBAbe,4BAaC31C,OAAO,CAAC,WACtBge,EAAKtI,MAAM,CAAC,UAAC,SAAG,KAClB,2WChDA,IAAMkgC,EAAoB,cAAO,EAAAvrC,GAAG,OAQvBwrC,EAAe,WAC1B,IAAQh7C,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAIT,GAAI,CAFqB,KAAAstB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CAGlB,OAAO,KAYT,IAAMk7C,EAA6B,CACjC,CACEpmC,MAAO,UAXQ,WACjB,MACE,WAACkmC,EAAA,WACC,UAAC,EAAAG,aAAa,EAACpiC,EAAG,EAAGD,EAAG,EAAG9I,MAAM,aAChC/P,EAAE,oBAGT,EAIY,IACR8U,KAAM,oBACR,EACD,CAED,MAAO,UAAC,SAAW,EAACP,MAAO0mC,GAC7B,yYCzBA,IAAME,EAAqB,cAAO,EAAAxhC,YAAY,MAGjC,mBAAuByhC,AAApB,EAAAA,YAAA,CAAmC,YAAc,WAIpDnP,EAAiB,WAI5B,IAAyC,EAAhB,KAAAz9B,UAAA,IAAaC,EAAE,CAAC,IAAjCF,OAAO,CAAPA,EAAA,WAAU,CAAC,IACX42B,EAA+C52B,EAA/C42B,IAAI,CAAEr/B,EAAyCyI,EAAzCzI,IAAI,CAAEuoC,EAAmC9/B,EAAnC8/B,QAAQ,CAAEqD,EAAyBnjC,EAAzBmjC,SAAS,CAAEiB,EAAcpkC,EAAdokC,SAAS,CAE1C3yC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHpB,EAAW,IAAI,EAAAL,QAAQ,CAAC,CAC5BC,GAAI2mC,EACJzmC,KAAMymC,EACNxmC,YAAaqB,EAAEmlC,EACjB,GAEA,GAAI,CAACvmC,EACH,MAAO,+BAAE,cAGX,IAAMy8C,EACJ,AAAI3J,EACKA,EAGF5rC,EAEH9F,EAAG,GAAU,OAARmlC,EAAK,KAAQ,OAALr/B,IACblH,EAASD,WAAW,CAGpB28C,EAAmB,KAAAvsB,OAAA,EAA2B,WAClD,IAAMxa,EAA2B,CAC/B,CACEM,MAAO7U,EAAEmlC,GACTrwB,KACEu5B,GACA,KAAA70B,YAAA,EAAa,EAAAoiB,yBAAyB,CAAE,CACtC,QAASuJ,CACX,EACJ,EACD,CAcD,OAZIr/B,GACFyO,EAAMlU,IAAI,CAAC,CACTwU,MAEE7U,EAAG,GAAU,OAARmlC,EAAK,KAAQ,OAALr/B,IACfgP,KAAM,KAAA0E,YAAA,EAAa,EAAA4wB,gCAAgC,CAAE,CACnD,QAASjF,EACT,QAASr/B,CACX,EACF,GAGM,QAAGyO,EACb,EAAG,CAAC4wB,EAAMr/B,EAAK,EAEf,MACE,WAAC,SAAM,YACL,UAAC,EAAAy1C,gBAAgB,KACjB,UAAC,EAAA1hC,iBAAiB,WAChB,WAACshC,EAAA,CAAmBC,aAAc,CAAC,CAACt1C,YACjCA,GAAQ,UAAC,SAAW,EAACyO,MAAO+mC,EAAkB98C,GAAG,kBAClD,WAAC,EAAA8oC,eAAe,YACb+T,EACA1I,KAEH,UAAC,EAAAzH,MAAM,YAKjB,oOCzFA,IAAM3F,EAAO,cAAO,EAAAt2B,IAAI,OAYxB,EARsC,gBAAG8G,EAAA,EAAAA,QAAA,CACvC,MACE,UAACwvB,EAAA,CAAK5a,WAAW,SAASiI,eAAe,SAASna,UAAU,kBACzD1C,GAGP,oJCbawlC,EAAmB,WAI9B,IAAyC,EAAhB,KAAA/sC,UAAA,IAAaC,EAAE,CAAC,IAAjCF,OAAO,CAEf,OAAQA,AAFA,YAAU,CAAC,KAEH42B,IAAI,EAClB,IAAK,oBACL,IAAK,gBACH,MAAO,UAAC,EAAAqW,iBAAiB,IAG3B,SACE,MAAO,UAAC,EAAAC,aAAa,IACzB,CACF,8KCZaD,EAAoB,WAC/B,IAAQz7C,EAAiB,KAAAutB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CACZw8B,EAAmB,KAAAzgB,aAAA,IAAnBygB,cAAc,CACdv8B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,QAET,AAAKD,EAKH,UAAC,SAAiB,EAChB86B,WAAY,cAA6B96B,EAAcC,GACvD8F,KAAK,kBACLg1B,SAAUyB,IAPL,IAUX,iJCnBakf,EAAgB,WAC3B,IAAQv8C,EAAS,KAAAkuB,OAAA,IAATluB,IAAI,QAEZ,AAAKA,EAKH,UAAC,SAAiB,EAChB27B,WAAY,KAAA57B,mBAAA,EAAoBC,GAChC4G,KAAK,eANA,IASX,uOCfO,IAAM41C,EAAO,sBAAU,+HCe9B,EATe,gBAAG3lC,EAAA,EAAAA,QAAA,CAChB,MACE,WAAC,EAAA2lC,IAAI,YACH,UAAC,SAAM,KACN3lC,IAGP,4MCLag6B,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAiBCvtC,CAAoC,2BAjBrCutC,kBAGX,0CACA,yCACA,qCACA,qCACA,sCACA,8CACA,yCACA,0CACA,sCACA,oCAAmE,GACnE,oCACA,+CACA,2DAKEtrC,OAAOk3C,MAAM,CAAC,WAAMn5C,mBApBXutC,EAAA,EA0BA,sBAAX,WACE,MAAO,CAAC,KAAA1Z,KAAA,EAAM,IAAI,CAACulB,gBAAgB,GAAK,IAAI,CAACA,gBAAgB,CAAG,CAClE,IAEW,iCAAX,WACE,MAAO,CAAC,KAAAvlB,KAAA,EAAM,IAAI,CAACwlB,6BAA6B,GAAK,IAAI,CAACA,6BAA6B,CAAG,CAC5F,IAEW,oCAAX,WACE,MAAO,AAA2B,KAA3B,IAAI,CAACC,iBAAiB,AAC/B,IAEO,wBAAP,SAAmBh6C,CAAgB,EAOjC,MANI,AAAoB,UAApB,OAAOA,GAAyByQ,OAAOwpC,QAAQ,CAACj6C,GAClD,IAAI,CAAC85C,gBAAgB,CAAG95C,EAKnB,IAAI,AACb,IAEO,4BAAP,SAAuBgE,CAAqD,EAG1E,OAFA,IAAI,CAACk2C,cAAc,CAAGl2C,EAEf,IAAI,AACb,IAEW,kBAAX,WACE,OAAO,IAAI,CAACwG,WAAW,GAAK,EAAA6pB,cAAA,MAAoB,AAClD,IAEA,8BACE,MAAO,CAAC,CACV,KA5DW4Z,GACH,EAAAkM,YAAY,6MCEtB,UAAY,CAAC,KAEN,IAAMC,EAAN,oBAAMA,iBAAAA,GACX,aAAO,WAAP,QAEA,aAAQ,oBACN,EAAE,EAEJ,aAAQ,QAAR,QACA,aAAQ,SAAR,QACA,aAAQ,QAA0B,EAAE,EACpC,aAAQ,YAAqC,oBATlCA,EAAA,EAWX,8BAAS15C,CAAiB,EAGxB,OAFA,IAAI,CAACA,KAAK,CAAGA,EAEN,IAAI,AACb,IAEA,+BAAUwtB,CAAkB,EAG1B,OAFA,IAAI,CAACA,MAAM,CAAGA,EAEP,IAAI,AACb,IAEA,8BAASzb,CAAuB,EAG9B,OAFA,IAAI,CAACA,KAAK,CAAGA,EAEN,IAAI,AACb,IAEA,iCAAY3S,CAAgB,EAG1B,OAFA,IAAI,CAACA,QAAQ,CAAGA,EAET,IAAI,AACb,IAEA,0CACEwxC,CAAiE,EAIjE,OAFA,IAAI,CAAC+I,iBAAiB,CAAG/I,EAElB,IAAI,AACb,IAEA,kCAAalwC,CAAuB,EAGlC,OAFA,IAAI,CAACk5C,SAAS,CAAGl5C,EAEV,IAAI,AACb,IAEI,2BAAJ,iBACE,CAAK,IAAI,CAACk5C,SAAS,EAIZ,IAAI,CAACA,SAAS,CAACt2C,IAAI,GAAK,EAAAokC,wBAAwB,AACzD,IAEI,wBAAJ,kBACE,AAAK,IAAI,CAAC31B,KAAK,CAIR,IAAI,CAACA,KAAK,CAACjM,MAAM,CACtB,SAACioB,CAAC,MAAK,WAAS,OAAT,GAAAA,EAAEztB,OAAO,AAAD,GAAR,kBAAmB,OAAnB,KAAWlE,QAAQ,AAAD,GAAlB,oBAAqBF,IAAI,AAAD,IAAM,EAAAspB,cAAA,SAAuB,GAJrD,EAAE,AAMb,IAEI,uBAAJ,WACE,IAAMq0B,EAAgB,IAAI,CAACA,aAAa,QAExC,AACE,AAACA,GACAn1C,MAAMC,OAAO,CAACk1C,IACfA,AAAyB,IAAzBA,EAAcj3C,MAAM,CAKf,IAAI,CAACi3C,aAAa,CAACpzC,MAAM,CAAC,SAACqzC,CAAS,CAAEx0B,CAAI,EAC/C,OAAOw0B,EAAax0B,CAAAA,EAAKoP,SAAS,IAAM,EAC1C,EAAG,GALM,CAMX,IAEI,wBAAJ,WACE,IAAMmlB,EAAgB,IAAI,CAACA,aAAa,QAExC,AACE,AAACA,GACAn1C,MAAMC,OAAO,CAACk1C,IACfA,AAAyB,IAAzBA,EAAcj3C,MAAM,CAKf,IAAI,CAACi3C,aAAa,CAACpzC,MAAM,CAAC,SAACszC,CAAa,CAAEz0B,CAAI,EACnD,OAAOy0B,EAAgBz0B,EAAKgU,KAAK,AACnC,EAAG,GALM,CAMX,IAEI,qCAAJ,WACE,GAAI,CAAC50B,MAAMC,OAAO,CAAC,IAAI,CAACg1C,iBAAiB,EACvC,OAAO,EAGT,IAAMK,EAAe,IAAI,CAACA,YAAY,CAEhC16C,EAAW,IAAI,CAACq6C,iBAAiB,CAAC98B,IAAI,CAAC,SAAC8O,CAAC,EAC7C,MACE,AAAsB,UAAtB,OAAOA,EAAE1iB,QAAQ,EACjB,AAAoB,UAApB,OAAO0iB,EAAEziB,MAAM,EACf8wC,GAAgBruB,EAAE1iB,QAAQ,EAC1B+wC,GAAgBruB,EAAEziB,MAAM,AAE5B,SAEA,AAAI,AAAwC,UAAxC,MAAO5J,CAAAA,MAAAA,EAAA,OAAAA,EAAU6J,kBAAkB,AAAD,EAC7B7J,EAAS6J,kBAAkB,CAAG,IAGhC,CACT,IAEI,2BAAJ,kBACE,AAAI,AAAC,IAAI,CAAC4wC,aAAa,EAAK,IAAI,CAACE,0BAA0B,CAIpD,IAAI,CAACF,aAAa,CAAG,IAAI,CAACE,0BAA0B,CAHlD,CAIX,IAEI,iBAAJ,WACE,GAAI,CAAC,IAAI,CAACzsB,MAAM,EAIZ,IAAI,CAACxtB,KAAK,EAAI,AAAiC,KAAjC,IAAI,CAACA,KAAK,CAACs5C,iBAAiB,CAH5C,OAAO,EAOT,IAWuB,EAXnBY,EAAmB,EAEjBC,EAAc,MACdC,EAAc,IAAM,IAAI,CAAC5sB,MAAM,CAAC6sB,eAAe,EAC/CC,EAAe,IAAM,IAAI,CAAC9sB,MAAM,CAAC+sB,gBAAgB,EACjDC,EAAc,IAAM,IAAI,CAAChtB,MAAM,CAACitB,eAAe,EAErD,OAAQ,IACN,KAAK,IAAI,CAACz6C,KAAK,EACb,IAAI,CAACA,KAAK,CAAC06C,sBAAsB,EACjC,AAAoD,UAApD,OAAO,IAAI,CAAC16C,KAAK,CAACq5C,6BAA6B,CAC/Ca,EAAmB,AAAU,OAAV,OAAI,CAACl6C,KAAK,AAAD,GAAT,oBAAYq5C,6BAA6B,CAC5D,KAGF,MAAKc,EAAYQ,aAAa,CAACH,GAC7BN,EAAmB,IAAI,CAAC1sB,MAAM,CAACotB,WAAW,CACtC3xB,SAAS,IAAI,CAACuE,MAAM,CAACotB,WAAW,CAAG,IACnC,EACJ,KAGF,MAAKT,EAAYQ,aAAa,CAACL,GAC7BJ,EAAmB,IAAI,CAAC1sB,MAAM,CAACqtB,YAAY,CACvC5xB,SAAS,IAAI,CAACuE,MAAM,CAACqtB,YAAY,CAAG,IACpC,EAEJ,KAGF,MAAKV,EAAYQ,aAAa,CAACP,GAC7BF,EAAmB,IAAI,CAAC1sB,MAAM,CAACstB,WAAW,CACtC7xB,SAAS,IAAI,CAACuE,MAAM,CAACstB,WAAW,CAAG,IACnC,EAEJ,KAGF,SACEZ,EAAmB,CACvB,QAEA,AAAIA,AAAqB,IAArBA,EACK,GAGLA,EAAmB,GACrBA,CAAAA,GAAsC,GAAE,EAGnC,IAAI,CAACa,QAAQ,CAAGb,EACzB,IAEI,2BAAJ,WACE,GAAI,CAAC,IAAI,CAACl6C,KAAK,EAIX,CAAC,IAAI,CAACg7C,mBAAmB,EAK3B,CAAC,IAAI,CAACh7C,KAAK,CAACo5C,gBAAgB,EAC5B,AAAuC,UAAvC,OAAO,IAAI,CAACp5C,KAAK,CAACo5C,gBAAgB,CATlC,OAAO,EAcT,GAAI,IAAI,CAACp5C,KAAK,CAACw5C,cAAc,GAAK,EAAAjS,sBAAA,OAA6B,CAC7D,OAAO,IAAI,CAACvnC,KAAK,CAACo5C,gBAAgB,CAGpC,IAAIjwC,EAAqB,IAAI,CAACnJ,KAAK,CAACo5C,gBAAgB,CAMpD,OAJIjwC,EAAqB,GACvBA,CAAAA,GAA0C,GAAE,EAGvC,IAAI,CAAC8xC,UAAU,CAAG9xC,CAC3B,IAEI,qBAAJ,kBACE,AAAI,AAAsB,IAAtB,IAAI,CAAC4I,KAAK,CAACnP,MAAM,CACZ,EAGF,IAAI,CAACmP,KAAK,CAACtL,MAAM,CAAC,SAAC6yB,CAAK,CAAEhU,CAAI,EACnC,OAAOgU,EAAQhU,EAAKgU,KAAK,AAC3B,EAAG,EACL,IAEI,qBAAJ,kBACE,AAAK,IAAI,CAAC4hB,MAAM,CAIT,GAHE,CAIX,IAEI,8BAAJ,eAEW,EAEL,EAEK,EACP,EANF,MACE,CAAC,KAAArnB,KAAA,EAAM,AAAU,OAAV,OAAI,CAAC7zB,KAAK,AAAD,GAAT,oBAAYw5C,cAAc,GACjC,CAAC,EAAAjS,sBAAA,QAA8B,CAAE,EAAAA,sBAAA,OAA6B,CAAC,CAACxU,QAAQ,CAAC,AAC7D,OAAV,OAAI,CAAC/yB,KAAK,AAAD,GAAT,oBAAYw5C,cAAc,GAE5B,CAAC,KAAA3lB,KAAA,EAAM,AAAU,OAAV,OAAI,CAAC7zB,KAAK,AAAD,GAAT,oBAAYo5C,gBAAgB,GACnC,CAAU,OAAV,OAAI,CAACp5C,KAAK,AAAD,GAAT,oBAAYo5C,gBAAgB,AAAD,EAAI,CAEnC,IAEI,iBAAJ,iBACE,EAAK,IAAI,CAACh6C,QAAQ,EAIX,AAAgC,QAAhC,IAAI,CAACA,QAAQ,CAAC03B,WAAW,EAClC,IAEI,8BAAJ,WACE,OAAO,IAAI,CAACqX,gBAAgB,CAAG,CACjC,IAEI,cAAJ,WACE,OAAO,IAAI,CAACgN,kBAAkB,CAAG,IAAI,CAACC,UAAU,AAClD,IAEI,mBAAJ,WACE,OAAO,IAAI,CAACH,UAAU,CAAG,IAAI,CAAC7B,gBAAgB,CAAG,IAAI,CAACjL,gBAAgB,AACxE,IAEI,6BAAJ,WACE,OAAO,IAAI,CAAC4M,QAAQ,CAAG,IAAI,CAACM,MAAM,AACpC,IAEI,0BAAJ,WACE,OAAO,IAAI,CAACF,kBAAkB,CAAG,IAAI,CAACG,GAAG,AAC3C,IAEI,gBAAJ,WACE,OAAO,IAAI,CAACC,eAAe,AAC7B,KAxRW7B,oPCDA39C,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAoBCkL,CAA6B,eApB9BlL,kBAGX,mBAAiB,eAAjB,QAEA,wBAAa,GACb,0BAAe,IACf,yCACA,sCACA,yCACA,4CACA,8CACA,uCACA,2CACA,gDAEA,0BAAwB,EAAE,EAE1B,4BAA2B,MAKzB,MAAQ28B,EAAgCzxB,EAAhCyxB,MAAM,CAAE36B,EAAwBkJ,EAAxBlJ,UAAU,CAAK8S,EAAA,QAAS5J,EAAA,CAAhC,SAAQ,sBAEhBhF,OAAOk3C,MAAM,CAAC,WAAMtoC,GAEpB,EAAK6nB,MAAM,CACTA,CAAAA,GAAYA,aA5BL38B,EA4B0D28B,EAAvB,IA5BnC38B,EA4BgD28B,GAErD,CAAC,EAAK2X,kBAAkB,EAAI,EAAK3X,MAAM,EACzC,GAAK2X,kBAAkB,CAAG3X,MAAAA,EAAA,OAAAA,EAAQv8B,WAAW,AAAD,EAG9C,EAAKq/C,YAAY,CAAGz9C,kBAlCXhC,EAAA,EAqCP,qBAAJ,WACE,OAAO,IAAI,CAACC,EAAE,GAAK,EAAAwpB,cAAA,gBAA8B,EACjD,IAAI,CAACtpB,IAAI,GAAK,EAAAspB,cAAA,gBAA8B,AAC9C,IAEA,wCACE,AAAI,AAA6B,YAA7B,OAAO,IAAI,CAACg2B,YAAY,CACnB,IAAI,CAACA,YAAY,GAGnB,IACT,IAEA,kCAIY,EAHV,MAAO,CACLx/C,GAAI,IAAI,CAACA,EAAE,CACXE,KAAM,IAAI,CAACA,IAAI,CACfw8B,OAAQ,AAAW,OAAX,OAAI,CAACA,MAAM,AAAD,GAAV,oBAAa+iB,MAAM,GAC3BhnB,UAAW,IAAI,CAACA,SAAS,CACzB0H,cAAe,IAAI,CAACA,aAAa,CACjCpzB,iBAAkB,IAAI,CAACA,gBAAgB,CACvCiN,YAAa,IAAI,CAACA,WAAW,CAC7B7Z,YAAa,IAAI,CAACA,WAAW,CAC7Bo5C,SAAU,IAAI,CAACA,QAAQ,AACzB,CACF,MAEO,qBAAP,SAAgBmG,CAA6B,EAC3C,IAAMhjB,EAAS,AAAC,KAAA7E,KAAA,EAAM6nB,EAAKhjB,MAAM,EAAqCz1B,KAAAA,EAjE7DlH,EAiEqC4/C,QAAQ,CAACD,EAAKhjB,MAAM,EAElE,OAAO,IAnEE38B,EAmEW,mBACf2/C,GAAA,CACH1/C,GAAI0/C,EAAK1/C,EAAE,CACXE,KAAMw/C,EAAKx/C,IAAI,CACfw8B,OAAQA,EACRjE,UAAWinB,EAAKjnB,SAAS,CACzB0H,cAAeuf,EAAKvf,aAAa,GAErC,IAEO,kBAAP,WACE,OAAO,IA9EEpgC,EA8EW,CAClBC,GAAI,QACJE,KAAM,OACR,EACF,KAlFWH,GACH,EAAA09C,YAAY,qKCVTzL,EAAN,oBAAMA,EAkBT0N,CAAwD,eAlB/C1N,GACX,kBAAoB,MACpB,mCACA,+BACA,mCACA,uCACA,+BACA,4BACA,6BACA,oCACA,wCACA,iCACA,6CACA,yCACA,mCACA,uCAKE/rC,OAAOk3C,MAAM,CAAC,IAAI,CAAEuC,iBApBX1N,EAAA,EAuBP,iBAAJ,WACE,GAAI,CAAC,IAAI,CAAC4N,OAAO,CACf,MAAO,GAGT,IAAMzB,EAAc,MAGpB,OAAOyB,AAFS,IAAM,IAAI,CAACA,OAAO,EAEnBC,QAAQ,CAAC1B,EAC1B,IAEI,wBAAJ,WACE,GAAI,CAAC,IAAI,CAAC2B,qBAAqB,CAC7B,MAAO,CAAC,IAAI,CAACrN,MAAM,CAGrB,IAAM0L,EAAc,MACdyB,EAAU,IAAM,IAAI,CAACE,qBAAqB,EAEhD,OAAO3B,EAAY0B,QAAQ,CAACD,EAC9B,IAEI,6BAAJ,kBACE,AAAK,IAAI,CAACG,SAAS,CAIZ,IAAM,IAAI,CAACA,SAAS,EAAEC,MAAM,CAAC,cAH3B,KAIX,IAEI,2BAAJ,kBACE,AAAK,IAAI,CAACJ,OAAO,CAIV,IAAM,IAAI,CAACA,OAAO,EAAEI,MAAM,CAAC,cAHzB,KAIX,MAEO,qBAAP,SAAgBN,CAAwC,QACtD,AAAI,KAAAO,iBAAA,EAAkBP,GACb,IA/DA1N,EA+DiB0N,GAGnB,IACT,KAnEW1N,gHCDAA,EAAc,QAAQ,CAAC,CAClChyC,GAAI,QAAQ,GACZga,YAAa,QAAQ,GAAGkmC,OAAO,GAC/BN,QAAS,QAAQ,GACjBd,YAAa,QAAQ,GACrBT,gBAAiB,QAAQ,GACzB8B,QAAS,QAAQ,GAAGD,OAAO,GAC3BhgD,KAAM,QAAQ,GACdkgD,MAAO,QAAQ,GACfvB,aAAc,QAAQ,GACtBN,iBAAkB,QAAQ,GAC1BwB,UAAW,QAAQ,GACnB9Q,kBAAmB,OAAO,CAAC,QAAQ,IACnC2P,YAAa,QAAQ,GACrBkB,sBAAuB,QAAQ,GAAGI,OAAO,GACzCzB,gBAAiB,QAAQ,GACzBlyC,eAAgB,QAAQ,EAC1B,GAEa0zC,EAAoB,SAACP,CAAI,EACpC,OAAO1N,EAAYjO,SAAS,CAAC2b,GAAM1b,OAAO,AAC5C,+JCNaqc,EAAN,oBAAMA,EASTX,CAAqE,eAT5DW,GAEX,wBAA2B,MAC3B,yCACA,8BACA,uCACA,8BAKEp6C,OAAOk3C,MAAM,CAAC,IAAI,CAAEuC,iBAXXW,EAAA,EAcP,iBAAJ,WACE,GAAI,CAAC,IAAI,CAACC,iBAAiB,EAAI,CAAC,IAAI,CAACA,iBAAiB,CAACV,OAAO,CAC5D,MAAO,GAGT,IAAMzB,EAAc,MAGpB,OAAOyB,AAFS,IAAM,IAAI,CAACU,iBAAiB,CAACV,OAAO,EAErCC,QAAQ,CAAC1B,EAC1B,IAEI,6BAAJ,eACO,QAAL,AAAI,CAAuB,OAAtB,OAAI,CAACmC,iBAAiB,AAAD,GAArB,oBAAwBP,SAAS,AAAD,EAI9B,IAAM,IAAI,CAACO,iBAAiB,CAACP,SAAS,EAAEC,MAAM,CAAC,cAH7C,KAIX,IAEI,2BAAJ,eACO,QAAL,AAAI,CAAuB,OAAtB,OAAI,CAACM,iBAAiB,AAAD,GAArB,oBAAwBV,OAAO,AAAD,EAI5B,IAAM,IAAI,CAACU,iBAAiB,CAACV,OAAO,EAAEI,MAAM,CAAC,cAH3C,KAIX,KAvCWK,iPCXAE,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAEC,CAIX,QAHCxqC,EADU,EACVA,KAAK,oBAHIwqC,kBACX,mBAAQ,QAAoD,EAAE,EAQ5D,EAAKxqC,KAAK,CAAGA,kBATJwqC,EAAA,EAYX,gCACE,OAAO,IAAI,CAACxqC,KAAK,AACnB,IAEA,8BAEA,MAEO,qBAAP,SAAgB0a,CAAmB,EA8BjC,MA7BI,CAAC/nB,MAAMC,OAAO,CAAC8nB,EAAM1a,KAAK,GAC5B0a,CAAAA,EAAM1a,KAAK,CAAG,EAAE,AAAD,EAGjB0a,EAAM1a,KAAK,CAAG0a,EAAM1a,KAAK,CAACjM,MAAM,CAACklB,SAEjCyB,EAAM1a,KAAK,CAACnN,OAAO,CAAC,SAAC0gB,CAAI,CAAEyI,CAAC,EAC1B,GAAI,CACF,IAAM3xB,EAAWkpB,EAAKhlB,OAAO,CAAClE,QAAQ,CAEhCkE,EAAUglB,EAAKhlB,OAAO,CACtBk8C,EAAc,IAAI,EAAAzgD,QAAQ,CAACK,EAEjCkpB,CAAAA,EAAKhlB,OAAO,CAAG,IAAI,EAAAke,OAAO,CAAC,mBACtBle,GAAA,CACHlE,SAAUogD,KAGZl3B,EAAKtpB,EAAE,CAAGspB,EAAKhlB,OAAO,CAAC8c,YAAY,GAEnCqP,EAAM1a,KAAK,CAACgc,EAAE,CAAG,EAAA5Q,SAAA,SAAkB,CAEjCmI,EAEJ,CAAE,MAAOrd,EAAG,CACVnF,QAAQ0/B,GAAG,CAACv6B,EACd,CACF,GAEOwkB,CACT,IAEO,iCAAP,SACE1a,CAAiD,EAEjD,OAAOA,EAAMpF,GAAG,CAAC,SAAC2Y,CAAI,EACpB,IAAIm3B,EAAoBn3B,EAAKhlB,OAAO,CAAC8c,YAAY,SASjD,CAPIkI,EAAKkQ,QAAQ,EACfinB,CAAAA,EAAoBA,EAAkBp3C,OAAO,CAC3C,YACA,KAIAigB,aAAgB,EAAA+D,uBAAuB,EAClC,CACLrtB,GAAIygD,EACJp/B,OAAQiI,EAAKoP,SAAS,GACtBpL,aAAchE,EAAKgE,YAAY,CAC/BH,UAAW7D,EAAK6D,SAAS,CACzBJ,SAAUzD,EAAKyD,QAAQ,AACzB,EAGK,CACL/sB,GAAIygD,EACJp/B,OAAQiI,EAAKoP,SAAS,GACtBc,SAAUlQ,EAAKkQ,QAAQ,AACzB,CACF,EACF,KAlFW+mB,GAAc,EAAA9C,YAAY,sQCkC1Bt8B,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAUCmI,CAAiC,2BAVlCnI,kBACX,gCACA,qCACA,8BAAoB,IACpB,oCAAgC,MAEhC,mBAAQ,SAAiB,GAEzB,mCAA+D,CAAC,EAAE,EAKhE,EAAKnhB,EAAE,CAAGspB,EAAKtpB,EAAE,CACjB,EAAKsE,OAAO,CAAGglB,EAAKhlB,OAAO,CACvBglB,EAAKjI,MAAM,CACb,EAAKA,MAAM,CAAGiI,EAAKjI,MAAM,CAEzB,EAAKA,MAAM,CAAG,EAGZiI,EAAK3I,aAAa,EACpB,GAAKA,aAAa,CAAG2I,EAAK3I,aAAa,AAAD,EAGpC2I,EAAKkQ,QAAQ,GACf,EAAKA,QAAQ,CAAG,GACZlQ,EAAKo3B,cAAc,EACrB,GAAKA,cAAc,CAAGp3B,EAAKo3B,cAAc,AAAD,mBA5BnCv/B,EAAA,EAiCP,gBAAJ,kBACE,AAAI,IAAI,CAACqY,QAAQ,CACR,EAGFzlB,OAAQ,KAAI,CAACsN,MAAM,CAAG,IAAI,CAAC/c,OAAO,CAACsZ,KAAI,EAAG+iC,OAAO,CAAC,GAC3D,IAEA,+BAAUt/B,CAAc,EACtB,IAAI,CAACA,MAAM,CAAGA,CAChB,IAEA,iCACE,OAAO,IAAI,CAACA,MAAM,AACpB,IAEI,sBAAJ,WACE,OAAO,IAAI,CAAC/c,OAAO,CAACmkB,kBAAkB,EAAI,IAAI,CAACnkB,OAAO,CAACyc,WAAW,AACpE,IAEI,oBAAJ,WACE,OAAO,IAAI,CAAC/gB,EAAE,CAACiI,QAAQ,EACzB,IA8BA,8BACE,MAAO,CACLjI,GAAI,IAAI,CAACsE,OAAO,CAAC8c,YAAY,GAC7BC,OAAQ,IAAI,CAACA,MAAM,CACnB/c,QAAS,IAAI,CAACA,OAAO,CACrBqc,cAAe,IAAI,CAACA,aAAa,CACjC6Y,SAAU,IAAI,CAACA,QAAQ,CACvBknB,eAAgB,IAAI,CAACA,cAAc,AACrC,CACF,MArCO,qBAAP,SACEhB,CAKC,EAED,GAAIryB,EAAwBuzB,EAAE,CAAClB,GAC7B,OAAOryB,EAAwBsyB,QAAQ,CAACD,GAG1C,IAGiB,EAHXp2B,EAAO,IArEJnI,EAqEkB,CACzBnhB,GAAI0/C,EAAKp7C,OAAO,CAAC8c,YAAY,GAC7B9c,QAASo7C,EAAKp7C,OAAO,CACrBqc,cAAe,CAAkB,OAAlB,GAAA++B,EAAK/+B,aAAa,AAAD,GAAjB,oBAAoB/Z,MAAM,AAAD,EAAI84C,EAAK/+B,aAAa,CAAG,CAAC,EAAE,CACpEU,OAAQq+B,EAAKr+B,MAAM,CACnBmY,SAAUkmB,EAAKlmB,QAAQ,CACvBknB,eAAgBhB,EAAKgB,cAAc,AACrC,GAMA,OAJIhB,EAAKr+B,MAAM,EACbiI,EAAK0P,SAAS,CAAC0mB,EAAKr+B,MAAM,EAGrBiI,CACT,KAnFWnI,GAAkB,UAAAs8B,YAAY,EAkG9BpwB,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAOCwzB,CAAwD,2BAPzDxzB,iBAQH,CACJrtB,GAAI6gD,EAAYv8C,OAAO,CAAC8c,YAAY,GACpC9c,QAASu8C,EAAYv8C,OAAO,CAC5Bqc,cAAekgC,EAAYlgC,aAAa,AAC1C,GATF,mBAAO,eAAP,QACA,mBAAO,YAAP,QACA,mBAAO,WAAP,QASE,EAAKoM,QAAQ,CAAG8zB,EAAY9zB,QAAQ,EAAI9lB,KAAAA,EACxC,EAAKqmB,YAAY,CAAGuzB,EAAYvzB,YAAY,EAAI,EAChD,EAAKH,SAAS,CAAG0zB,EAAY1zB,SAAS,EAAI,kBAhBjCE,EAAA,EAmBX,iCACE,OAAO,IAAI,CAACC,YAAY,AAC1B,IAEI,gBAAJ,WACE,OAAO,IAAI,CAAChpB,OAAO,CAACsZ,KAAK,CAAI,KAAI,CAAC0P,YAAY,CAAG,IAAI,CAACH,SAAQ,CAChE,IAEI,sBAAJ,kBACE,AAAK,IAAI,CAACJ,QAAQ,CAIV,GAAwB,OAAtB,gBAhCDM,EAAA,WAgCO,cAAN,IAAK,EAAa,MAAkB,OAAd,IAAI,CAACN,QAAQ,CAAC,KAHrC,gBA7BAM,EAAA,WA6BM,cAAN,IAAK,CAIhB,IAEI,oBAAJ,WACE,MAAQ,GAAqB,OAAnB,gBApCDA,EAAA,WAoCO,YAAN,IAAK,EAAW,KAAiB,OAAd,IAAI,CAACN,QAAQ,CAC5C,IAEA,8BACE,MAAO,mBACF,gBAzCIM,EAAA,WAyCE,SAAN,IAAK,eACRC,aAAc,IAAI,CAACA,YAAY,CAC/BH,UAAW,IAAI,CAACG,YAAY,CAC5BP,SAAU,IAAI,CAACA,QAAQ,EAE3B,MAEO,qBAAP,SACE2yB,CAA8D,EAE9D,OAAO,IAnDEryB,EAmD0B,CACjCrtB,GAAI0/C,EAAKp7C,OAAO,CAAC8c,YAAY,GAC7B9c,QAASo7C,EAAKp7C,OAAO,CACrB6oB,UAAWuyB,EAAKvyB,SAAS,CACzBG,aAAcoyB,EAAKpyB,YAAY,CAC/BP,SAAU2yB,EAAK3yB,QAAQ,AACzB,EACF,IAEO,eAAP,SAAU2yB,CAAuC,EAC/C,OAAOA,EAAKpyB,YAAY,EAAIoyB,EAAKvyB,SAAS,AAC5C,KA9DWE,GACHlM,8PC/GGqB,EAAN,oBAAMA,EAAA,iBAAAA,YAAAA,EAyBTyL,CAA4F,eAzBnFzL,kBAGX,wBAAa,GACb,qCAAiC,MACjC,mCAAsE,MACtE,yCAAqC,MACrC,gCAAqB,GACrB,kCAA8B,MAC9B,iCAA6B,MAC7B,+BAA2B,MAC3B,oCAAgC,MAChC,sCAAkC,MAClC,+BAAkC,MAClC,oCAAwC,MACxC,4CAAgD,MAChD,2BAAgB,GAChB,wCAAoC,MACpC,+BAAoB,GACpB,iCAA6B,MAC7B,8BAAmB,GAEnB,8BAAqB,EAAAziB,QAAA,MAAc,IAMjC,MAAQK,EAAqD6tB,EAArD7tB,QAAQ,CAAE0gD,EAA2C7yB,EAA3C6yB,cAAc,CAAE9/B,EAA2BiN,EAA3BjN,sBAAsB,QAExD/a,OAAOk3C,MAAM,CAAC,WAAMlvB,GAEhB7tB,aAAoB,EAAAL,QAAQ,CAC9B,EAAKK,QAAQ,CAAGA,EAEhB,EAAKA,QAAQ,CAAG,EAAAL,QAAA,MAAc,GAG5B2I,MAAMC,OAAO,CAACm4C,IAChB,GAAKA,cAAc,CAAGA,EAAenwC,GAAG,CAAC,SAAC+uC,CAAI,SAvCvCl9B,EAwCGm9B,QAAQ,CAACD,MAIjBh3C,MAAMC,OAAO,CAACqY,IAChB,GAAKA,sBAAsB,CAAGA,EAAuBrQ,GAAG,CAAC,SAAC+uC,CAAI,SA7CvDl9B,EA8CGu+B,cAAc,CAACrB,sBA9ClBl9B,EAAA,EAmDX,oCACE,OAAO,IAAI,CAACzB,WAAW,AACzB,IAEI,eAAJ,WACE,GAAK,IAAI,CAAC3gB,QAAQ,CAAC+/B,aAAa,CAKhC,OAAO,WAAM,CAAC,IAAI,CAAC//B,QAAQ,CAAC+/B,aAAa,GAAKl5B,KAAAA,CAChD,IAEI,qBAAJ,kBACE,AAAK,IAAI,CAAC7G,QAAQ,CAACq4B,SAAS,CAIrB,AAAgC,QAAhC,IAAI,CAACr4B,QAAQ,CAAC+/B,aAAa,CAAa,IAAO,GAH7C,CAIX,IAEI,4BAAJ,WACE,OAAOz3B,MAAMC,OAAO,CAAC,IAAI,CAACm4C,cAAc,GAAK,IAAI,CAACA,cAAc,CAACl6C,MAAM,CAAG,CAC5E,IAEA,8BACE,OAAO,IAAI,AACb,IAwBA,oCAAeoa,CAAsF,EACnG,IAAI,CAACA,sBAAsB,CAAGA,EAAuBrQ,GAAG,CAAC,SAAC+uC,CAAI,SAvGrDl9B,EAwGCu+B,cAAc,CAACrB,IAE3B,MA1BO,qBAAP,SACEA,CAAyE,EAEzE,IAAQt/C,EAAsBs/C,EAAtBt/C,QAAQ,CAAKyU,EAAA,QAAS6qC,EAAA,CAAtB,aAER,OAAO,EAAAj2B,YAAA,+BAA2C,CAAC5U,EAAM,CAAEzU,SAAAA,CAAS,EACtE,IAEO,2BAAP,SACEs/C,CAAuF,EAEvF,IAAQt/C,EAAmCs/C,EAAnCt/C,QAAQ,CAAE2gB,EAAyB2+B,EAAzB3+B,WAAW,CAAKlM,EAAA,QAAS6qC,EAAA,CAAnC,WAAU,gBAEdsB,EAAsBjgC,EAM1B,OAJIigC,GAAuB,CAACA,EAAoBjqB,QAAQ,CAAC,cACvDiqB,CAAAA,EAAuB,GAAsB,OAApBA,EAAoB,cAGxC,EAAAv3B,YAAA,+BAA2C,CAAC,mBAAK5U,GAAA,CAAMkM,YAAaigC,IAAuB,CAAE5gD,SAAAA,CAAS,EAC/G,KApGWoiB,GACH,EAAAi7B,YAAY,0HCATxU,EAAN,oBAAMA,EAmBC5jC,CAA4B,eAnB7B4jC,GACX,aAAiB,YAAjB,QACA,aAAiB,MAAjB,QACA,aAAiB,SAAjB,QACA,aAAiB,SAAjB,QACA,aAAiB,YAAjB,QACA,aAAiB,QAAjB,QACA,aAAiB,eAAjB,QAaE,IAAQpP,EAA4Dx0B,EAA5Dw0B,QAAQ,CAAE75B,EAAkDqF,EAAlDrF,EAAE,CAAEqN,EAA8ChI,EAA9CgI,KAAK,CAAE/M,EAAuC+E,EAAvC/E,KAAK,CAAE2gD,EAAgC57C,EAAhC47C,QAAQ,CAAE7sC,EAAsB/O,EAAtB+O,IAAI,CAAE8sC,EAAgB77C,EAAhB67C,WAAW,AAE/D,KAAI,CAACC,SAAS,CAAGtnB,EACjB,IAAI,CAACunB,GAAG,CAAGphD,EACX,IAAI,CAACqhD,MAAM,CAAGh0C,EACd,IAAI,CAACi0C,MAAM,CAAGhhD,EACd,IAAI,CAACihD,SAAS,CAAGN,EACjB,IAAI,CAACO,KAAK,CAAGptC,EACb,IAAI,CAACqtC,YAAY,CAAGP,gBA5BXjY,EAAA,EA+BP,aAAJ,WACE,OAAO,IAAI,CAACmY,GAAG,AACjB,IAEI,gBAAJ,WACE,OAAO,IAAI,CAACC,MAAM,AACpB,IAEI,gBAAJ,WACE,OAAO,IAAI,CAACC,MAAM,AACpB,IAEI,mBAAJ,WACE,OAAO,IAAI,CAACH,SAAS,AACvB,IAEI,mBAAJ,WACE,OAAO,IAAI,CAACI,SAAS,AACvB,IAEI,eAAJ,WACE,OAAO,IAAI,CAACC,KAAK,AACnB,IAEI,sBAAJ,WACE,OAAO,IAAI,CAACC,YAAY,AAC1B,IAEI,oBAAJ,WACE,OAAO,IAAI,CAACN,SAAS,CAAChH,KAAK,CAAC,IAAI,CAAC,EAAE,AACrC,IAEI,uBAAJ,WACE,OAAO,IAAI,CAACqH,KAAK,GAhERvY,EAgEkByY,IAAI,CAACC,UAAU,AAC5C,IAEI,kBAAJ,WACE,OAAO,IAAI,CAACH,KAAK,GApERvY,EAoEkByY,IAAI,CAACE,KAAK,AACvC,IAEI,2BAAJ,WACE,OAAO,IAAI,CAACJ,KAAK,GAxERvY,EAwEkByY,IAAI,CAACG,cAAc,AAChD,IAEI,6BAAJ,WACE,OAAO,IAAI,CAACL,KAAK,GA5ERvY,EA4EkByY,IAAI,CAACI,gBAAgB,AAClD,IAEI,sBAAJ,WACE,OAAO,IAAI,CAACN,KAAK,GAhFRvY,EAgFkByY,IAAI,CAACK,SAAS,AAC3C,IAEI,sBAAJ,WACE,OAAO,IAAI,CAACP,KAAK,GApFRvY,EAoFkByY,IAAI,CAACM,SAAS,AAC3C,IAEI,kBAAJ,WACE,OAAO,IAAI,CAACR,KAAK,GAxFRvY,EAwFkByY,IAAI,CAACO,KAAK,AACvC,IAEA,8BACE,MAAO,CACLjiD,GAAI,IAAI,CAACA,EAAE,CACX65B,SAAU,IAAI,CAACA,QAAQ,CACvBxsB,MAAO,IAAI,CAACA,KAAK,CACjB/M,MAAO,IAAI,CAACA,KAAK,CACjB2gD,SAAU,IAAI,CAACA,QAAQ,CACvB7sC,KAAM,IAAI,CAACA,IAAI,CACf8sC,YAAa,IAAI,CAACA,WAAW,AAC/B,CACF,KArGWjY,KASX,QATWA,EASJ,OAA+C,CACpD0Y,WAAY,EACZC,MAAO,EACPC,eAAgB,EAChBC,iBAAkB,EAClBC,UAAW,EACXC,UAAW,EACXC,MAAO,CACT,sHC3CoBxE,EAAf,oBAAeA,iBAAAA,iBAAAA,EAAA,EACb,qBAAP,WACE,OAAO7zC,KAAKC,SAAS,CAAC,IAAI,CAAC41C,MAAM,GACnC,KAHoBhC,gbCATyE,EAA+B,WAC1C,IAAkC,OAAAryC,SAAA,EAAU,CAC1CC,OAAQ,EACV,GAFQ9C,EAA0B,EAA1BA,MAAM,CAAEm1C,EAAkB,EAAlBA,aAAa,CAI7B,MAAO,CAAC,KAAAtqB,KAAA,EAAM7qB,IAAW,CAAC,KAAA6qB,KAAA,EAAMsqB,EAClC,EAEaC,EAA8B,WACzC,IAAQD,EAAkB,KAAAtyC,SAAA,EAAU,CAClCC,OAAQ,EACV,GAFQqyC,aAAa,CAIrB,MAAO,CAAC,KAAAtqB,KAAA,EAAMsqB,EAChB,EAEaE,EAAkC,WAC7C,IAAkC,OAAAxyC,SAAA,EAAU,CAC1CC,OAAQ,EACV,GAFQ9C,EAA0B,EAA1BA,MAAM,CAAEm1C,EAAkB,EAAlBA,aAAa,CAI7B,MAAO,KAAA5mB,YAAA,EAAa,CAClBrS,SAAU,CAAC,+BAAgC,CAAElc,OAAAA,EAAQm1C,cAAAA,CAAc,EAAE,CACrEh5B,QAAS,yEACP,SAAM,EAAA5Z,UAAA,uBAAiC,CAAC,CACtC1C,SAAU,GACVG,OAAAA,EACA1I,QAAS69C,CACX,WAJA,wBAMFG,kBAAmB,EACrB,EACF,EAEaC,EAAqC,SAChDx1C,CAAgB,EAEhB,IAAQo1C,EAAkB,KAAAtyC,SAAA,EAAU,CAClCC,OAAQ,EACV,GAFQqyC,aAAa,CAIrB,MAAO,KAAA5mB,YAAA,EAAa,CAClBrS,SAAU,CACR,mCACA,CAAEi5B,cAAAA,EAAep1C,iBAAAA,CAAiB,EACnC,CACDoc,QAAS,yEACP,SAAM,EAAA5Z,UAAA,uBAAiC,CAAC,CACtC1C,SAAU,GAEVE,iBAAkBA,CACpB,WAJA,wBAMFu1C,kBAAmB,EACrB,EACF,EAEaE,EAAsB,WACjC,MAAO,KAAAv5B,QAAA,EAASo5B,IAClB,EAEaI,EAAyB,SAAC11C,CAAgB,EACrD,MAAO,KAAAkc,QAAA,EAASs5B,EAAmCx1C,GACrD,4NCxDa21C,EAA2B,WACtC,MAAQx5B,EAAa,KAAAm5B,+BAAA,IAAbn5B,QAAQ,CAEhB,MAAO,KAAAy5B,WAAA,EAAY,CACjBC,YAAa,CAAC,8BAA+B15B,EAAS,CACtD25B,UAAU,IAAE,iBAAO50B,CAAI,MAMbI,EAAkBy0B,EAAYC,EAAUC,EAE1CC,EAMAC,EAAA,wDAJN,GAJQ70B,EAAsDJ,EAAtDI,gBAAgB,CAAEy0B,EAAoC70B,EAApC60B,UAAU,CAAEC,EAAwB90B,EAAxB80B,QAAQ,CAAEC,EAAc/0B,EAAd+0B,SAAS,CAEnDC,EAAmB,EAAAloB,WAAA,aAAwB,CAAC7R,GAE9C45B,IAAeC,EACjB,MAAO,GAAAn9C,QAAQC,OAAO,CAACo9C,IAUzBD,EAPME,EAAe,EAAApgB,cAAA,QAAsB,CACzCzU,EACAy0B,EACAC,EACA,KAKF,EAAAhoB,WAAA,aAAwB,CAAC7R,EAAUg6B,oBAGjC,gCAAM,EAAA3zC,UAAA,kCAA4C,CAAC,CACjDlD,YAAa62C,EAAavyC,GAAG,CAAC,SAACumC,CAAE,EAC/B,MAAO,CACL9oC,WAAY8oC,EAAGl3C,EAAE,CACjBmjD,WAAYjM,EAAGiM,UAAU,EAAI,CAC/B,CACF,EACF,WAEA,OATA,SASO,GAAAD,UAMP,gBAJA,EAAAlP,KAAA,MAAW,CAAC,WAAM,CAAC,4BAEnB,EAAAjZ,WAAA,aAAwB,CAAC7R,EAAU+5B,GAE5B,GAAAA,sBAEX,YA3CmBh1B,CAAI,kCA4CzB,EACF,gNCrDam1B,EAA2B,WACtC,IAAQjB,EAAkB,KAAAtyC,SAAA,EAAU,CAAEC,OAAQ,EAAM,GAA5CqyC,aAAa,CAErB,MAAO,CACLkB,yBAA0B,SACxBj1C,CAAU,QAEV,KAAAmtB,YAAA,EAAa,CACXrS,SAAU,CAAC,oBAAqB9a,EAAY+zC,EAAc,CAC1Dh5B,QAAS,kDACP,MAAO,KAAA5Z,UAAA,oBAA8B,CAAC,CACpCnB,WAAYA,EACZpB,OAAQm1C,EACRt1C,SAAU,EACZ,KACF,GACAy2C,eAAgB,GAChBhB,kBAAmB,GACnBiB,aAAc,GACdC,gBAAiB,EAAAC,gBAAgB,AACnC,GACJ,CACF,EAEa91B,EAAoB,SAC/Bvf,CAAU,EAEV,IAAQi1C,EAA6BD,IAA7BC,wBAAwB,CAEhC,MAAO,KAAAp6B,QAAA,EAASo6B,EAAyBj1C,GAC3C,uOC1Bas1C,EAAyB,SACpCt1C,CAAU,EAEV,MAAQi1C,EAA6B,KAAAD,wBAAA,IAA7BC,wBAAwB,CAEhC,MAAO,KAAAV,WAAA,EAAY,CACjBC,YAAa,CAAC,4BAA6Bx0C,EAAW,CACtDy0C,UAAU,IAAE,iBAAO50B,CAAI,MAKb01B,EAAgBb,EAAYC,EAE9BE,EAQAC,EAAA,wDAJN,GANQS,EAAyC11B,EAAzC01B,cAAc,CAAEb,EAAyB70B,EAAzB60B,UAAU,CAAEC,EAAa90B,EAAb80B,QAAQ,CAEtCE,EAAmB,EAAAloB,WAAA,aAAwB,CAC/CsoB,EAAyBj1C,GAAY8a,QAAQ,EAG3C45B,IAAeC,EACjB,MAAO,GAAAn9C,QAAQC,OAAO,IAGlBq9C,EAAe,EAAApgB,cAAA,QAAsB,CACzC6gB,EACAb,EACAC,GAGF,EAAAhoB,WAAA,aAAwB,CACtBsoB,EAAyBj1C,GAAY8a,QAAQ,CAC7Cg6B,oBAIA,gCAAM,EAAA3zC,UAAA,+BAAyC,CAAC,CAC9ClD,YAAa62C,EACVp5C,MAAM,CAAC,SAACu1B,CAAE,QAAK,CAAC,KAAAxH,KAAA,EAAMwH,EAAGr/B,EAAE,IAC3B2Q,GAAG,CAAC,SAAC0uB,CAAE,QAAM,CAEZpxB,UAAWoxB,EAAGr/B,EAAE,CAChBmjD,WAAY9jB,EAAG8jB,UAAU,EAAI,CAC/B,GACJ,kBARA,sCAUA,EAAAnP,KAAA,MAAW,CAAC,WAAM,CAAC,4BAEnB,EAAAjZ,WAAA,aAAwB,CACtBsoB,EAAyBj1C,GAAY8a,QAAQ,CAC7C+5B,4BAGN,YA5CmBh1B,CAAI,kCA6CzB,EACF,+NCzDa21B,EAA8B,SAAC72C,CAAgB,EAC1D,MAAQmc,EAAa,KAAAq5B,kCAAA,EAAmCx1C,GAAhDmc,QAAQ,CAEhB,MAAO,KAAAy5B,WAAA,EAAY,CACjBC,YAAa,CAAC,kCAAmC15B,EAAS,CAC1D25B,UAAU,IAAE,iBAAO50B,CAAI,MAMbI,EAAkBy0B,EAAYC,EAAUC,EAE1CC,EAMAC,EAAA,wDAJN,GAJQ70B,EAAsDJ,EAAtDI,gBAAgB,CAAEy0B,EAAoC70B,EAApC60B,UAAU,CAAEC,EAAwB90B,EAAxB80B,QAAQ,CAAEC,EAAc/0B,EAAd+0B,SAAS,CAEnDC,EAAmB,EAAAloB,WAAA,aAAwB,CAAC7R,GAE9C45B,IAAeC,EACjB,MAAO,GAAAn9C,QAAQC,OAAO,CAACo9C,IAGnBC,EAAe,EAAApgB,cAAA,QAAsB,CACzCzU,EACAy0B,EACAC,GAGEr6C,MAAMC,OAAO,CAACs6C,KAChBD,EAAUE,GAEV,EAAAnoB,WAAA,aAAwB,CAAC7R,EAAU,WACjC,OAAOg6B,CAUT,qBAIA,gCAAM,EAAA3zC,UAAA,kCAA4C,CAAC,CACjDlD,YAAa62C,EAAavyC,GAAG,CAAC,SAACumC,CAAE,QAAM,CACrC9oC,WAAY8oC,EAAGl3C,EAAE,CACjBmjD,WAAYjM,EAAGiM,UAAU,EAAI,CAC/B,GACF,WAEA,OAPA,SAOO,GAAAD,UAMP,gBAJA,EAAAlP,KAAA,MAAW,CAAC,WAAM,CAAC,4BAEnB,EAAAjZ,WAAA,aAAwB,CAAC7R,EAAU+5B,GAE5B,GAAAA,sBAEX,YArDmBh1B,CAAI,kCAsDzB,EACF,whBClCA,IAAM5I,EAAqB,cAAO,EAAAtJ,WAAW,OAMvC8nC,EAAe,QAAW,CAC9B,CACEz9C,MAAO,eAAkB,GACzBiQ,MAAO,QAAW,EACpB,EACA,CACEytC,eAAgB,WAAM,CAAC,iBACzB,GAGIC,EAAmB,QAAW,CAAC,CACnC7jD,KAAM2jD,EACNjmC,MAAO,eAAkB,GACzBomC,OAAQ,OACA,CACJ,QAAW,CAAC,CACV1/C,QAASu/C,EACTxiC,OAAQ,eAAkB,GAAG9O,GAAG,CAAC,EAAG,CAClCxN,QAAS,WAAM,CAAC,gBAAiB,CAAEk/C,EAAG,CAAE,EAC1C,EACF,IAEDjT,QAAQ,GACRkT,QAAQ,EACb,GAgBaC,EAAwB,kBACnCjkC,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CACA2iC,EAAA,EAAAA,aAAA,CACAl2C,EAAA,EAAAA,WAAA,CACA9K,EAAA,EAAAA,QAAA,CACAihD,EAAA,EAAAA,eAAA,CACAC,EAAA,EAAAA,sBAAA,CAEMC,EAA2B,KAAAvO,UAAA,EAC/B,EAAAL,QAAA,2BAAmC,EAEL,eAAA7gC,QAAA,EAAwB,SAAjD0vC,EAAyB,KAAfC,EAAe,KACxBljD,EAAiB,EAAA6tC,mBAAA,UAA6B,GAA9C7tC,YAAY,CACoB,eAAAuT,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAChClrB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEKkjD,EAAyB,KAAAz7B,QAAA,EACrC,EAAAqnB,YAAA,wBAAoC,CAACpiC,IAD/BjD,IAAI,CAIN05C,EAA+B,KAAAp0B,OAAA,EAAQ,WAC3C,IAAMq0B,EAAcN,EAAuB3zC,GAAG,CAAC,SAACmQ,CAAE,SAAKA,EAAG1a,KAAK,GAE/D,MACE,AAAAs+C,CAAAA,MAAAA,EAAA,OAAAA,EAAsB56C,MAAM,CAC1B,SAACgX,CAAE,SAAK8jC,AAAkC,KAAlCA,EAAYC,OAAO,CAAC/jC,EAAG1a,KAAK,MACjC,EAAE,AAEX,EAAG,CAACs+C,EAAsBJ,EAAuB,EAE3CQ,EAAe,KAAAzkC,OAAA,EAA8B,CAEjDtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAKI,OAAAiB,aAAA,EAAc,CAChB9kD,KAAM,SACNub,QAASqpC,EAAarpC,OAAO,AAC/B,GANUwpC,EAGN,EAHFC,MAAM,CACN78C,EAEE,EAFFA,MAAM,CACN88C,EACE,EADFA,MAAM,CAMR,KAAAj7B,SAAA,EACE,eAYY,EAXNk6B,CAAAA,MAAAA,EAAA,OAAAA,EAAepkD,EAAE,AAAD,GAClBykD,EAAYL,EAAcpkD,EAAE,EAG9B8kD,EAAaM,KAAK,CAAC,mBACdhB,GAAA,CACHlkD,KAAM,CACJkG,MAAO,AAAAg+C,CAAAA,MAAAA,EAAA,OAAAA,EAAen2C,SAAS,AAAD,GAAKhH,KAAAA,EACnCoP,MAAO,AAAA+tC,CAAAA,MAAAA,EAAA,OAAAA,EAAelkD,IAAI,AAAD,GAAK+G,KAAAA,CAChC,EAEA+8C,OAAQI,MAAAA,EAAA,OAAqC,OAArC,GAAAA,EAAepjC,sBAAsB,AAAD,GAApC,oBAAuCrQ,GAAG,CAAC,SAACqzC,CAAM,EACxD,MAAO,CACL1/C,QAASggD,MAAAA,EAAA,OAAAA,EAAwBzjC,IAAI,CACnC,SAACwkC,CAAE,SAAKA,EAAGj/C,KAAK,GAAK49C,EAAOsB,uBAAuB,GAErDjkC,OAAQ2iC,EAAOuB,QAAQ,AACzB,CACF,KAEJ,EACA,CAACnB,EAAeE,EAAuB,EAGzC,IAAMkB,EAAyB,KAAAj1B,OAAA,EAAQ,WACrC,OAAO+zB,CACT,EAAG,CAACA,EAAwBQ,EAAa1tB,SAAS,CAAC,QAAQ,EAE3D,IAAMxL,KAAgB,iBACpBkB,CAAM,CACN24B,CAAU,MAawB,EAeA,4DA1B9Bv3C,EAAa,MAAb,iDAEAwe,EAAgB,KACZ83B,EAAU,MAAV,MACF,SAAM,EAAAj1C,UAAA,4CAAsD,CAAC,CAC3DrB,YAAa,CAACA,EACdC,gBAAiBq2C,EACjBjjD,aAAc,CAACA,EACf8K,YAAa,CACX4B,UAAW6e,EAAO5sB,IAAI,CAACkG,KAAK,CAC5BwX,MAAOkP,EAAOlP,KAAK,CACnBoD,uBAAwB,AAAa,OAAb,GAAA8L,EAAOk3B,MAAM,AAAD,GAAZ,oBAAerzC,GAAG,CAAC,SAACqzC,CAAM,EAChD,MAAO,CACL0B,wBAAyB1B,EAAO1/C,OAAO,CAAC8B,KAAK,CAC7Cm/C,SAAUvB,EAAO3iC,MAAM,AACzB,CACF,EACF,CACF,kBAdA,sBAgBA,SAAM,EAAA9R,UAAA,6CAAuD,CAAC,CAC5DrB,YAAa,CAACA,EACd3M,aAAc,CAACA,EACf8K,YAAa,CACX4B,UAAW6e,EAAO5sB,IAAI,CAACkG,KAAK,CAC5BwX,MAAOkP,EAAOlP,KAAK,CACnBoD,uBAAwB,AAAa,OAAb,GAAA8L,EAAOk3B,MAAM,AAAD,GAAZ,oBAAerzC,GAAG,CAAC,SAACqzC,CAAM,EAChD,MAAO,CACL0B,wBAAyB1B,EAAO1/C,OAAO,CAAC8B,KAAK,CAC7Cm/C,SAAUvB,EAAO3iC,MAAM,AACzB,CACF,EACF,CACF,WAbA,iCAgBGokC,GAGHhB,EAAY,MACZK,EAAaM,KAAK,CAAC,CAAC,IAHpB3jC,IAMF4iC,EAAgBjhD,uBAEhB0D,QAAQ0/B,GAAG,CADJ,8BAGP9Z,EAAgB,2BAGtB,YArDEI,CAAM,CACN24B,CAAU,mCAsDNE,EAAsBvB,EACxB,sBACA,qBAEJ,MACE,WAAC,EAAAwB,MAAM,EAAC7lC,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,eACrD,UAAC,EAAAorC,aAAa,KACd,WAAC,EAAAC,aAAa,YACZ,UAAC,EAAAC,YAAY,WAAEvkD,EAAEmkD,KACjB,UAAC,EAAAK,iBAAiB,KAClB,UAAC,EAAAC,UAAU,WACT,UAAC,EAAAh6B,YAAY,oBAAK64B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAAvqC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,EAAA8Q,eAAe,EACd9f,MAAO7U,EAAE,cACT6D,QAASs/C,EACTnpC,WAAU,GACVtb,KAAK,SAEP,UAAC,SAAK,EACJmW,MAAO7U,EAAE,SACT2P,SAAS,OACTjR,KAAK,QACLsb,WAAU,KAEX+oC,GACC,iCACG/iD,EAAE,mBACFyjD,EAAet0C,GAAG,CAAC,SAAC2L,CAAK,CAAEzL,CAAK,QAC/B,UAAC,EAAAJ,IAAI,EAEHC,cAAc,SACd8G,MAAM,gBAEN,WAAC,EAAA/G,IAAI,EAACC,cAAc,MAAM0R,IAAK,YAC7B,UAAC,EAAApR,GAAG,EAACk1C,UAAU,eACb,UAAC,EAAA/vB,eAAe,EACd9f,MAAO7U,EAAE,WACT6D,QAASmgD,EACThqC,WAAU,GACVtb,KAAO,UAAe,OAAN2Q,EAAM,gBAG1B,UAAC,EAAAG,GAAG,EAACk1C,UAAU,eACb,UAAC,SAAK,EACJ7vC,MAAO7U,EAAE,UACTga,WAAU,GACVtb,KAAO,UAAe,OAAN2Q,EAAM,WACtBM,SAAS,YAGb,UAAC,EAAAH,GAAG,EAACk1C,UAAU,MAAM1lB,GAAG,gBACtB,UAAC,EAAA1c,UAAU,EAACxQ,QAAS,kBAAM6xC,EAAOt0C,YAtBjCyL,EAAMtc,EAAE,IA2BjB,UAAC,EAAAwU,MAAM,EACLL,QAAQ,QACRmD,YAAY,MACZhE,QAAS,kBACPjL,EAEE,CAAC,aAIJ7G,EAAE,gCASnB,UAAC,EAAA2kD,YAAY,EAAC/xB,eAAe,kBAC3B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASwxC,EAAa1kC,YAAY,CAAC,SAAC0M,CAAM,SACxClB,EAAckB,EAAQ,MAExB5a,SAAUua,WAETjrB,EAAE,UAWL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3CjgB,EAAE,sBAOjB,mwBCpRA,IAAM4kD,EAAkB,cAAO,EAAAp1C,GAAG,OAO5Bq1C,EAAgB,cAAO,EAAAtqC,WAAW,OAQlCuqC,EAAa,CACjB,YACA,UACA,wBACA,kBACA,mBACA,kBACD,CAOYC,EAAwB,kBACnCj/C,EAAA,EAAAA,IAAA,CAEQ9F,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDD,EAAiB,KAAAutB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CACdilD,EAAWl/C,AAAS,SAATA,EACUm/C,EAAa,AACtC,AAAAD,CAAAA,EAAW,KAAArX,mBAAA,EAAsB,KAAAL,qBAAA,GACjC4X,aAAa,GAFPzX,iBAAiB,CAIe,eAAAn6B,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAElChd,EAAW,KAAAC,WAAA,IAEXg3C,EAAU,KAAAtmC,OAAA,EAAoB,CAClCumC,KAAM,SACN78C,SAAU,KAAAg7C,WAAA,EAAY,EAAAhB,gBAAgB,CACxC,GAEQlK,EAAuB,KAAAD,oBAAA,EAAqB+M,GAA5C9M,kBAAkB,CAEpBgN,EAAgB,WACpBn3C,EAAS,CACP8F,GAAI,qBACJnM,QAAS,EACX,EACF,EAEA,KAAA6gB,SAAA,EAAU,WACR,GAAI5iB,AAAS,SAATA,EAAiB,OA8BnBimB,GA7BkB,uBAGRtiB,EAmBCpE,wDArBT6lB,EAAgB,qBAED,iCAAM,EAAAnd,UAAA,0BAAoC,CAAC,CACtDvP,GAAI,CAACuB,CACP,kBAEImH,MAAMC,OAAO,CAACsC,AAJZA,CAAAA,EAAO,UAIUgkC,iBAAiB,GAEtChkC,CAAAA,EAAKgkC,iBAAiB,CAAGhkC,EAAKgkC,iBAAiB,CAC5Ct+B,GAAG,CAAC,SAACm2C,CAAY,EAChB,OAAOL,EAAS5lC,IAAI,CAClB,SAACkmC,CAAa,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAe3gD,KAAK,AAAD,IAAM0gD,GAEhD,GACCh9C,MAAM,CAACklB,QAAO,EAGnB,KAAA+rB,eAAA,EAAgB9vC,GAAMrC,OAAO,CAAC,SAAC0T,CAAK,EAElCqqC,EAAQp/B,QAAQ,CAACjL,EAAOrR,CAAI,CAACqR,EAAM,CACrC,uBACO,SACP,EAAA03B,KAAA,MAAW,CAAC,iDAEZtnB,EAAgB,2BAEpB,gDAGF,CACF,EAAG,EAAE,EAEL,IAAMd,KAAgB,iBAAOkB,CAAM,MAaP,EAFpB5hB,EACAoL,EACA24B,EAIAhkC,EAOEnG,EAKA9E,wDA5BR,KAAA+6C,eAAA,EAAgBjuB,GAAQlkB,OAAO,CAAC,SAAC0T,CAAK,EACpC,IAtEepc,EAsETkG,EAAQ0mB,CAAM,CAACxQ,EAAM,CAE3B,GAAI0qC,AAxEW9mD,EAwECoc,EAtEbgqC,EAAWvvB,QAAQ,CAAC72B,IAsEG,EAAA+mD,SAAA,OAAgB,CAAC7gD,GACzC0mB,CAAM,CAACxQ,EAAM,CAAG,MACX,CAAC,IAAMlW,GAAO45C,MAAM,CAAC,cAAe,aACtCkH,MAAM,EAEb,GAEMh8C,EAASs7C,EAAW,EAAA/4B,YAAA,IAAgB,CAAG,EAAAA,YAAA,KAAiB,CACxDnX,EAAOkwC,EAAW,KAAA3c,eAAA,EAAgBtoC,GAAgB,EAAAqoC,iBAAiB,CACnEqF,EAAoB,AAAwB,OAAxB,GAAAniB,EAAOmiB,iBAAiB,AAAD,GAAvB,oBAA0Bt+B,GAAG,CAAC,SAACu+B,CAAO,QAC9D,AAAmB,UAAnB,OAAOA,GAAwB,KAAAxY,QAAA,EAASwY,GAAWA,EAAQ9oC,KAAK,CAAG8oC,IAG/DjkC,EAAO,mBACR6hB,GAAA,CACHmiB,kBAAAA,IAGFviB,EAAgB,qBAEG,iCAAM,cAASpW,EAAM,CACpCpL,OAAQA,EACRD,KAAAA,CACF,cAHMnG,EAAW,SAKX9E,EAAKwmD,EAAWjlD,EAAeuD,MAAAA,EAAA,OAAAA,EAAUmG,IAAI,EAE/CA,CAAI,CAAC,eAAe,CAApB,YACF,SAAM,cACJ,KAAAi/B,mBAAA,EAAoBlqC,GACpB,CACEkL,OAAQ,EAAAuiB,YAAA,KAAiB,CAEzBxiB,KAAM,CAAEk8C,KAAMl8C,CAAI,CAAC,eAAe,CAAC,EAAE,AAAC,CACxC,EACA,CAAE,eAAgB,qBAAsB,WAP1C,iCAWF,EAAA+oC,KAAA,QAAa,CAACxyC,EAAE,4BAChBqlD,wBAEAhN,EADO,8BAGPntB,EAAgB,2BAEpB,YAlD6BI,CAAM,mCAoDnC,MACE,UAAC,EAAAb,YAAY,oBAAK06B,GAAA,UAChB,UAAC,QAAKrmC,SAAUqmC,EAAQvmC,YAAY,CAACwL,YACnC,WAAC,EAAArR,KAAK,EAACvE,QAAQ,cACb,UAAC,SAAK,EACJK,MAAO,KAAA+kC,gBAAA,EAAiB,mBACxBjqC,SAAS,OACTjR,KAAK,OACLsb,WAAU,KAEZ,UAAC,EAAA0L,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,gBACxB3pC,aAAck1C,EAAQvvB,SAAS,CAAC,YAAcnwB,KAAAA,EAC9C/G,KAAK,iBAEP,UAAC,EAAAob,UAAU,EACTpb,KAAK,YACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,aACxB5/B,WAAU,KAEZ,UAAC,EAAAF,UAAU,EACTpb,KAAK,UACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,WACxB5/B,WAAU,KAEZ,UAAC,EAAAF,UAAU,EACTpb,KAAK,wBACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,8BAE1B,UAAC,SAAK,EACJ/kC,MAAO,KAAA+kC,gBAAA,EAAiB,YACxBjqC,SAAS,OACTjR,KAAK,QACLsb,WAAU,KAEZ,UAAC,EAAAmsB,QAAQ,EACPtxB,MAAO,KAAA+kC,gBAAA,EAAiB,0BACxBl7C,KAAK,gBAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,sBACxB/1C,QAASohD,EACTpwB,kBAAmB,GACnBn2B,KAAK,oBACLk2B,QAAO,GACP5a,WAAU,KAEZ,WAAC6qC,EAAA,CAAc7qC,WAAU,aACvB,UAAC,EAAAW,SAAS,WAAE,KAAAi/B,gBAAA,EAAiB,aAC7B,WAACgL,EAAA,WACC,UAAC,SAAK,EACJj1C,SAAS,OACTjR,KAAK,cACLslB,WAAW,MAEb,UAAC,EAAAlK,UAAU,EAAapb,KAAK,0BAGjC,WAACmmD,EAAA,CAAc7qC,WAAU,aACvB,UAAC,EAAAW,SAAS,WAAG,GAA8B,OAA5B,KAAAi/B,gBAAA,EAAiB,cAChC,WAACgL,EAAA,WACC,UAAC,SAAK,EACJj1C,SAAS,OACTjR,KAAK,eACLsb,WAAU,GACVgK,WAAW,MAEb,UAAC,EAAAlK,UAAU,EAAapb,KAAK,mBAAmBsb,WAAU,WAG9D,WAAC6qC,EAAA,CAAc7qC,WAAU,aACvB,UAAC,EAAAW,SAAS,WAAG,GAA8B,OAA5B,KAAAi/B,gBAAA,EAAiB,cAChC,WAACgL,EAAA,WACC,UAAC,SAAK,EACJj1C,SAAS,OACTjR,KAAK,cACLsb,WAAU,GACVgK,WAAW,MAEb,UAAC,EAAAlK,UAAU,EAAapb,KAAK,kBAAkBsb,WAAU,WAI7D,WAAC,EAAA2G,WAAW,EAACC,IAAI,cACf,UAAC,QAAY,EACX9K,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAACwL,YAE7B,KAAAwvB,gBAAA,EAAiB,UAEpB,UAAC,EAAA5mC,MAAM,EACL8C,YAAY,YACZI,WAAW,QACXpE,QAASuzC,WAER,KAAAzL,gBAAA,EAAiB,sBAOhC,6rBC1QA,IAAMgM,EAAgB,cAAO,EAAA32C,IAAI,OAK3B8oB,EAAkB,cAAO,EAAAvoB,GAAG,OAI5Bq2C,EAAkB,cAAO,EAAA52C,IAAI,OAUtB62C,EAAc,WACzB,IAAQ5Y,EAAQ,EAAAE,mBAAA,UAA6B,GAArCF,GAAG,CACHltC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACa,OAAA24B,OAAA,IAAdD,EAAc,EAAdA,GAAG,CAAEx5B,EAAS,EAATA,IAAI,CAEf,OAAA8kC,cAAA,EAA4D,CAC1DC,SAAU,EAAAiE,iBAAiB,CAC3B9D,gBAAiB,CACft+B,KAAMonC,CACR,CACF,GANM35B,EACN,EADMA,SAAS,CAAE9J,EACjB,EADiBA,IAAI,CAAEy7B,EACvB,EADuBA,YAAY,CAAED,EACrC,EADqCA,gBAAgB,CAAE5C,EACvD,EADuDA,cAAc,CAOjEn0B,EAAW,KAAAC,WAAA,IAET6jC,EAAoB,KAAA+T,mBAAA,IAApB/T,eAAe,CAKjBgU,EAAoB,gBAAGxoC,EAAA,EAAAA,GAAA,CAI3B,MACE,WAACooC,EAAA,WACEltB,EAAI,wBACH,UAAC,EAAA5kB,IAAI,EACHE,GAAK,yCAEJ,OADC,AAAA9U,CAAAA,MAAAA,EAAA,OAAAA,EAAMC,OAAO,AAAD,EAAI,gBAAkB,qBAEpCwH,OAAQ,CACN5G,aAAcyd,EAAImmB,QAAQ,CAACnlC,EAAE,AAC/B,EACAsT,QAAS,WACP,EAAA2+B,aAAA,kBAA+B,CAC7BjzB,EAAImmB,QAAQ,CAAC54B,cAAc,EAAI,MAG7ByS,EAAImmB,QAAQ,CAACjlC,IAAI,EACnB,EAAA+xC,aAAA,QAAqB,CAACjzB,EAAImmB,QAAQ,CAACjlC,IAAI,CAE3C,WAEA,UAAC,EAAAunD,gBAAgB,OAGpBvtB,EAAI,sBACH,UAAC,EAAA5kB,IAAI,EACHE,GAAG,wCACHrN,OAAQ,CACN5G,aAAcyd,EAAImmB,QAAQ,CAACnlC,EAAE,AAC/B,WAEA,UAAC,EAAA0nD,QAAQ,SAKnB,EAEMC,EAAoB,KAAAp3B,OAAA,EAExB,WACA,MAAO,CACL,CACEoU,OAAS,GAAoB,OAAlBnjC,EAAE,iBACb6/B,SAAU,KACV7pB,MAAO,KACT,EACA,CACE6pB,SAAU,iBACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAsB,OAApBnjC,EAAE,mBACb6/B,SAAU,MACZ,EACA,CACEsD,OAAS,GAAiB,OAAfnjC,EAAE,cACb6/B,SAAU,YACVyD,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQizB,SAAS,AAAD,EACb,IAAMjzB,MAAAA,EAAA,OAAAA,EAAQizB,SAAS,EAAEC,MAAM,CAAC,cAChC,KAGV,EACA,CACErb,OAAS,GAAe,OAAbnjC,EAAE,YACb6/B,SAAU,UACVyD,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQ8yB,OAAO,AAAD,EAAI,IAAM9yB,MAAAA,EAAA,OAAAA,EAAQ8yB,OAAO,EAAEI,MAAM,CAAC,cAAgB,KAGvE,EACA,CACErb,OAAS,GAAgB,OAAdnjC,EAAE,aACb6/B,SAAU,OACZ,EACA,CACEsD,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACwoC,EAAA,CAAkBxoC,IAAKA,IAC7C,EACD,AACH,EAAG,EAAE,EAML,MACE,UAAC,EAAA2L,aAAa,EAACyI,QAASre,WACtB,WAAC,EAAA2D,IAAI,YACH,UAAC,EAAA8F,KAAK,EAACuiB,QAAS4mB,EAAmB18C,KAAMA,IACzC,WAACo8C,EAAA,WACC,WAAC,EAAAllC,WAAW,EAACC,IAAI,IAAIgS,eAAe,qBACjC8F,EAAI,qBACH,UAACX,EAAA,UACC,UAAC,EAAA/kB,MAAM,EAAC8C,YAAY,MAAMhE,QAZlB,WACpB5D,EAAS,CAAE8F,GAAI,wBAAyB,EAC1C,WAWiBhU,EAAE,qBAIR04B,EAAI,qBACH,UAACX,EAAA,UACC,WAAC,EAAA/kB,MAAM,EAAC8C,YAAY,MAAMhE,QAASkgC,YAAiB,KAC/ChyC,EAAE,wBAKb,UAAC,SAAU,EACTmiC,cAAe+C,EACf9C,YAAa6C,EACb5C,eAAgBA,WAM5B,wMCtKM+jB,EAAuC,CAC3CC,WAAY,gBACd,EAEMC,EAAsB,CAC1BD,WAAY,iBACZxzB,KAAM,OACR,EAEM0zB,EAAgC,CACpCvwC,MAAO,MACT,EAEaq3B,EAAsB,WACjC,IAAQrtC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDktC,EAAQ,EAAAE,mBAAA,UAA6B,GAArCF,GAAG,CACLsZ,EAAe,EAAAzZ,eAAA,QAAuB,CAACG,GACvCh/B,EAAW,KAAAC,WAAA,IAQjB,MACE,WAAC,EAAAs4C,IAAI,EACH9zC,QAAQ,WACR+zC,MAAM,SACN5tC,EAAE,OACFzJ,MAAOm3C,EACP/1C,SAZoB,SAACpB,CAAK,EAC5BnB,EAAS,CACP1C,OAAQ,CAAE0hC,IAAK,EAAAH,eAAe,CAAC19B,EAAM,EAAI,SAAU,CACrD,EACF,YAUI,WAAC,EAAAs3C,OAAO,YACN,UAAC,EAAAC,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJzhC,oBAAoB,KACpBC,uBAAuB,cAEtB9kB,EAAE,0BAEL,UAAC,EAAA4mD,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJQ,qBAAqB,KACrBC,wBAAwB,cAEvB/mD,EAAE,0BAGP,WAAC,EAAAgnD,SAAS,YACR,UAAC,EAAAC,QAAQ,oBAAKV,GAAA,UACXrZ,AAAQ,YAARA,GAAqB,UAAC,EAAA4Y,WAAW,QAEpC,UAAC,EAAAmB,QAAQ,oBAAKV,GAAA,UACXrZ,AAAQ,SAARA,GAAkB,UAAC,EAAA4Y,WAAW,aAKzC,2UChEMzD,EAAe,QAAW,CAC9B,CACEz9C,MAAO,eAAkB,GACzBiQ,MAAO,QAAW,EACpB,EACA,CACEytC,eAAgB,WAAM,CAAC,iBACzB,GAGIC,EAAmB,QAAW,CAAC,CACnC2E,YAAa7E,EACbrgD,WAAYqgD,EACZ5U,kBAAmB,OAAU,CAAC4U,EAChC,GAIa8E,EAAuB,WAClC,IAAQnnD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACiC,eAAAsT,QAAA,IAAQ,GAA3CxI,EAAmC,KAApBs8C,EAAoB,KAExC,eAAA9zC,QAAA,IAAQ,GADHtR,EACL,KADiBqlD,EACjB,KAKgD,eAAA/zC,QAAA,IAAQ,GAAnDm6B,EAA2C,KAAxB6Z,EAAwB,KAC5Ch9B,EAAW,KAAAzL,OAAA,EAA8B,CAC7CtW,SAAU,KAAAg7C,WAAA,EAAYhB,GACtB6C,KAAM,UACR,GACc,EAA4B,KAAA39B,QAAA,EACxC,EAAAqnB,YAAA,uBAAmC,IAD7BrlC,IAAI,CAgDZ,MA5CA,KAAAif,SAAA,EAAU,WACR,MAAM6+B,KAAkB,yEACE,SAAM,EAAAx5C,UAAA,8BAAwC,CAAC,CACrEjD,cAAAA,CACF,kBAUAu8C,EAR0BG,AAJF,SAIkBr4C,GAAG,CAAC,SAACs4C,CAAE,QAAM,CACrD7iD,MAAO6iD,EAAGjpD,EAAE,CACZqW,MAAO4yC,EAAG90B,KAAK,CACf2c,KAAMmY,CACR,WAKF,+CAEI38C,IACFwf,EAAS2L,UAAU,CAAC,cACpBsxB,IAEJ,EAAG,CAACz8C,EAAc,EAElB,KAAA4d,SAAA,EAAU,iBAiBRg/B,GAhB+B,yEACC,SAAM,EAAA35C,UAAA,+BACR,GACzB9I,KAAK,CAAC,iBAAM,EAAE,kBAUjBqiD,EARiCK,AAJH,SAIyBx4C,GAAG,CAAC,SAACu+B,CAAO,EACjE,MAAO,CACL74B,MAAO64B,EAAQ7hC,KAAK,EAAI6hC,EAAQhvC,IAAI,CACpCkG,MAAO8oC,EAAQlvC,EAAE,CACjB8wC,KAAM,CAAEnkC,UAAWuiC,EAAQviC,SAAS,AAAC,CACvC,CACF,UAGF,iDAGA,EAAAoX,YAAA,cAA0B,CAAC+H,EAC7B,EAAG,CAACA,EAAS,EAGX,UAAC,EAAAG,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAAvR,KAAK,EAACvE,QAAS,YACd,UAAC,EAAAmgB,eAAe,EACd9f,MAAO7U,EAAE,gBACT6D,QArD2B,AAArB,SAAqB,IAAE,CAAvB,EAsDNmW,WAAU,GACVtb,KAAK,cACL+R,SAAU,mBAAe22C,EAAZ,EAAAxiD,KAAA,KAEdkG,GACC,iCACE,UAAC,EAAA6pB,eAAe,EACd9f,MAAO7U,EAAE,eACT6D,QAAS7B,EACTgY,WAAU,GACVtb,KAAK,eAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO7U,EAAE,qBACT6D,QAAS4pC,EACTzzB,WAAU,GACVtb,KAAK,oBACLk2B,QAAO,aAOrB,kTC9GA,IAAM0xB,EAAY,CAChB7wB,YAAa,iBACbmyB,kBAAmB,UACnB73C,MAAO,KACT,EAEM83C,EAAa,cAAO,EAAAZ,QAAQ,OASrB1Z,EAAgB,gBAAGznC,EAAA,EAAAA,IAAA,CACtB9F,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACH0Q,EAAW5K,AAAS,QAATA,EAUjB,MARA,KAAA4iB,SAAA,EAAU,WACR,IAAMo/B,EAAU9xB,SAAS6kB,cAAc,CAAC,iBAEpCiN,GACFA,EAAQC,cAAc,CAAC,CAAEzsB,SAAU,QAAS,EAEhD,EAAG,EAAE,EAGH,UAAC,EAAApkB,IAAI,WACH,UAAC,EAAAI,QAAQ,WACP,WAAC,EAAAmvC,IAAI,EAACuB,SAAQ,GAACr1C,QAAQ,qBACrB,WAAC,EAAAg0C,OAAO,YACN,UAAC,EAAAC,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,4BAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,EAAW3yC,WAAYjD,WACpC1Q,EAAE,mBAGP,WAAC,EAAAgnD,SAAS,YACR,UAACa,EAAA,UACC,UAAC,EAAA9C,qBAAqB,EAACj/C,KAAMA,MAE/B,UAAC,EAAAmhD,QAAQ,WAAE,CAACv2C,GAAY,UAAC,EAAAu3C,UAAU,gBAM/C,w2CC3DO,IAAMC,EAAuB,cAAO,EAAA14C,GAAG,OAOjC2Z,EAAgB,cAAO,EAAAla,IAAI,OAK3Bk5C,EAAyB,cAAO,EAAA34C,GAAG,OAOnCo2C,EAAgB,cAAO,EAAA32C,IAAI,OAM3Bm5C,EAAiB,cAAO,EAAA54C,GAAG,OAQ3B64C,EAAyB,cAAO,EAAAp5C,IAAI,OAMpCq5C,EAAkC,cAAO,EAAAz1C,IAAI,igBC4B7Co1C,EAAa,WACxB,YAAQloD,EAAiB,EAAA4tC,mBAAA,UAA6B,GAA9C5tC,YAAY,CACY,eAAAuT,QAAA,IAAQ,GAAjC1R,EAAyB,KAAf2mD,EAAe,KACc,eAAAj1C,QAAA,EAAS,EAAE,KAAlDs7B,EAAuC,KAAtB4Z,EAAsB,KACZ,eAAAl1C,QAAA,EAAS,OAApCC,EAA2B,KAAhB+wB,EAAgB,KACU,eAAAhxB,QAAA,EAE1C,EAAE,KAFGm1C,EAAqC,KAArBC,EAAqB,KAGN,eAAAp1C,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KACQ,eAAArL,QAAA,EAAS,OAAhD0+B,GAAuC,KAAtB2W,GAAsB,KACxCC,GAAgB,CAAElqD,KAAM,KAAM0d,MAAO,IAAK,EAChB,gBAAA9I,QAAA,EAAcs1C,IAAA,GAAvCC,GAAyB,MAAfC,GAAe,MAE9B,gBAAAx1C,QAAA,EAAyD,SADpDsvC,GACL,MADoBmG,GACpB,MACkC,gBAAAz1C,QAAA,IAAQ,GAArC01C,GAA6B,MAAjBC,GAAiB,MACU,gBAAA31C,QAAA,EAAiB,OAAxD41C,GAAuC,MAAtBC,GAAsB,MACgB,gBAAA71C,QAAA,EAAS,OAAhE81C,GAAuD,MAA9BC,GAA8B,MAC5B,gBAAA/1C,QAAA,EAAS,OAApCg2C,GAA2B,MAAhBC,GAAgB,MACY,gBAAAj2C,QAAA,IAAQ,GAA/C3G,GAAuC,MAAtB68C,GAAsB,MACtCxpD,GAAM,KAAAiO,cAAA,IAANjO,CAAC,CACmC,gBAAAsT,QAAA,IAAQ,GAA7CvI,GAAqC,MAArB0+C,GAAqB,MAE5C,KAAA/gC,SAAA,EAAU,iBAWRghC,GAV4B,6EACtB3pD,EAAc,MAAd,MACW,SAAM,EAAAgO,UAAA,0BAAoC,CAAC,CACtDvP,GAAI,CAACuB,CACP,WAEA0pD,GAAkBhgD,AAJL,SAIUsB,cAAc,+BAEzC,gDAGF,EAAG,EAAE,EAIL,IAAM4+C,GAA+B,SAACnrD,CAAE,EACtCgrD,GAAmBhrD,GACnB+qD,GAAa,IACbF,GAA2B,CAACD,GAC9B,EAOMjE,GAAU,KAAAtmC,OAAA,EAAQ,CACtBumC,KAAM,QACR,GAEA,KAAA18B,SAAA,EAAU,WACRjkB,OAAOmlD,IAAI,CAACf,IAAUzhD,OAAO,CAAC,SAAC0T,CAAK,EAClCqqC,GAAQp/B,QAAQ,CAACjL,EAAO+tC,EAAQ,CAAC/tC,EAAM,CACzC,EACF,EAAG,CAAC+tC,GAAS,EAEb,KAAAngC,SAAA,EAAU,iBA2BRqD,GA1BkB,uBAGR0iB,EAaAnrC,wDAfRghC,EAAa,qBAEU,iCAAM,EAAAv2B,UAAA,qBAA+B,WAazC,OAFjBy6C,EATgB/Z,MAFVA,CAAAA,EAAe,UAEL,OAAAA,EAAct/B,GAAG,CAC/B,SAACgmB,CAAM,EACL,MAAO,CACLtgB,MAAOsgB,MAAAA,EAAA,OAAAA,EAAQz2B,IAAI,CACnBkG,MAAOuwB,MAAAA,EAAA,OAAAA,EAAQ32B,EAAE,AACnB,CACF,IAKe,GAAM,cAAS,KAAAmqC,cAAA,EAAe5oC,mBAE/CkpD,GAAc3lD,MAFRA,CAAAA,EAAW,UAEH,OAAAA,EAAUmG,IAAI,sBAE5BnE,QAAQ0/B,GAAG,CADJ,8BAGPV,EAAa,2BAEjB,gDAGF,EAAG,EAAE,EAEL,IAAMulB,GAAoB,YACxB,IAAMC,EAAYtsC,AADS,EAAAA,GAAA,CACLmmB,QAAQ,CAE9B,MACE,WAAC,EAAAiiB,aAAa,YACZ,UAAC,EAAA9xC,IAAI,EAAChC,QAAS,kBAAMi4C,GAAQD,aAC3B,UAAC,EAAA5D,QAAQ,OAEX,UAAC,EAAApyC,IAAI,EAAChC,QAAS,kBAAM63C,GAA6BG,EAAUtrD,EAAE,YAC5D,UAAC,EAAA8jB,UAAU,SAInB,EAoBM0nC,GAAY,WAChBrB,GAAmB,CAAC3W,GACtB,EAEMiY,GAAmB,kBAAMtB,GAAmB,KAElD,IAAMuB,MAAc,iBAAO5+B,CAAM,MAYzB,EATEhoB,EAUqC,EAAnCC,wDAZV+gC,EAAa,qBAEM,gCAAM,cACrB,KAAAwE,sBAAA,EAAuB/oC,EAAcmpD,IACrC,CACEx/C,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAM,CAAE0gD,qBAAsB7+B,MAAAA,EAAA,OAAAA,CAAQ,CAAC,aAAa,CAAC,EAAE,AAAC,CAC1D,EACA,CAAE,eAAgB,qBAAsB,WAW1C,MARIhoB,CAAAA,MATEA,CAAAA,EAAW,UASb,OAAc,OAAd,GAAAA,EAAUmG,IAAI,AAAD,GAAb,oBAAgBW,MAAM,AAAD,IACjB7G,EAAW,UAAEvD,GAAE,iBAAiB,KAEpC,OAFuCsD,MAAAA,EAAA,OAAc,OAAd,GAAAA,EAAUmG,IAAI,AAAD,GAAb,oBAAgBW,MAAM,CAAC5C,IAAI,CAClE,MAGF,EAAAgrC,KAAA,MAAW,CAACjvC,IAGd,GAAM6mD,GAAcxoD,kBAApB,6BAEA0iC,EAAa,IACb2lB,4BAEJ,YAzB2B3+B,CAAM,mCAsE3B++B,GAAS,WACbvB,GAAYF,IACZG,GAAiB,MACjBpqC,EAAe,CAACD,EAClB,EAEMuB,GAAa,kBAAMtB,EAAe,KAElCorC,GAAU,SAACz+B,CAAM,EACrBw9B,GAAYx9B,GACZy9B,GAAiBz9B,GACjB3M,EAAe,CAACD,EAClB,EAEA,IAAM4rC,MAAY,6EACZ39C,GAAiB,MAAjB,uBAGA,8BADA23B,EAAa,IACb,GAAM,cACJ,KAAAuE,mBAAA,EAAoB9oC,EAAcmpD,GAAiBv8C,IACnD,CACEjD,OAAQ,EAAAuiB,YAAA,OAAmB,AAC7B,WAMF,OAVA,SAOAhM,KACA6oC,GAAYF,IACZG,GAAiB,MACjB,GAAMqB,GAAcxoD,kBAApB,6BAEA0D,QAAQ0/B,GAAG,CADJ,8BAGPV,EAAa,2BAGnB,+CAEMimB,GAAoB,WAAa,CAGrC,iBAAM,CACJ,CACEpnB,OAAS,GACTtD,SAAU,KACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GACTtD,SAAU,YACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAoB,OAAlBnjC,GAAE,iBACb6/B,SAAU,cACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAkB,OAAhBnjC,GAAE,eACb6/B,SAAU,OACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAa,OAAXnjC,GAAE,UACb6/B,SAAU,QACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAuB,OAArBnjC,GAAE,oBACb6/B,SAAU,yBACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MACE,UAAC,EAAA4lD,gCAAgC,EAC/BhrC,uBAAwB5a,EACxB0E,OAAQm/C,GAGd,CACF,EACA,CACEtlB,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,MACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OACP,UAACqsC,GAAA,CAAkBrsC,IAAKA,IAE5B,EACD,EACD,CAACirC,EAAe,EAGZ3F,GAAyB,KAAA/zB,OAAA,EAE7B,WACA,OAAO05B,EAAet5C,GAAG,CAAC,SAACmQ,CAAE,QAAM,CACjC1a,MAAO0a,EAAG9gB,EAAE,CACZqW,MAAOyK,EAAG5gB,IAAI,CACd4wC,KAAMhwB,CACR,GACF,EAAG,CAACmpC,EAAe,EAEnB,IAAM2B,MAAgB,iBAAOxlD,CAAK,MAGZ,EAAd8H,2DAFN67C,EAAY3jD,GAMZukD,GAJMz8C,EAAc,UAAAs8C,GAAW3pC,IAAI,CACjC,SAAC3c,CAAS,QAAoB,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAW+nD,UAAU,AAAD,IAAM7lD,CAAAA,MAAAA,EAAA,OAAAA,EAAOA,KAAK,AAAD,MADjD,oBAEjB8H,WAAW,GAIVA,EAAa,MAAb,MACF43B,EAAa,qBAGT,iCAAM,EAAAv2B,UAAA,4CAAsD,CAAC,CAC3DhO,aAAc,CAACA,EACf2M,YAAAA,CACF,kBAEFg8C,EALE,8BAOFpjD,QAAQ0/B,GAAG,CADJ,8BAGPV,EAAa,qBAIb,CAAC53B,GACHg8C,EAAkB,EAAE,QAExB,YA7B6B9jD,CAAK,mCA+BlC,IAAM8lD,MAAkB,yEAGpB,6BADApmB,EAAa,IACb,GAAM,cAAS,KAAA+E,iBAAA,EAAkBtpC,EAAcmpD,IAAkB,CAC/Dx/C,OAAQ,EAAAuiB,YAAA,OAAmB,AAC7B,WAKA,OAPA,SAIAhM,KACA6oC,GAAYF,IACZG,GAAiB,MACjB,GAAMqB,GAAcxoD,kBAApB,6BAEA0iC,EAAa,2BAEjB,+CAiCA,MACE,WAAC,EAAA90B,GAAG,EAACm7C,KAAK,kBACR,UAAC,EAAAlgC,YAAY,oBAAK,KAAA5L,OAAA,KAAO,UACvB,WAAC,EAAA5P,IAAI,EACHC,cAAc,MACd0jB,eAAe,gBACfjI,WAAW,mBAEX,UAAC,EAAAgK,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,mBACxB/1C,QAAS,CAAC,CAAEgR,MAAO,gDAAcjQ,MAAO,EAAG,EAAsB,CAAxD,OAAqC,QAAGgqC,IACjDlwC,KAAK,WACLiR,SAAS,QACTyG,SAAS,QACT4e,QAAS,kBAAM0zB,EAAkB,EAAE,GACnCj4C,SAAU,SAAC7L,CAAK,EACdwlD,GAAcxlD,EAChB,IAED,CAAChD,CAAAA,MAAAA,EAAA,OAAAA,EAAW,KAAQ,AAAR,GAAYmJ,IACvB,UAAC,EAAAgtB,eAAe,WACd,WAAC,EAAA/kB,MAAM,EAAC8C,YAAY,MAAMhE,QApDd,WACtB,EAAAyQ,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,GAAE,gBACTwiB,UAAW,iBAAM,UAAC,EAAAhT,GAAG,WAAExP,GAAE,iCACzByiB,QAASziB,GAAE,gBACX0iB,KAAM,uBAGIkoC,EAAA,wDAAa,8BADnBtmB,EAAa,IACM,GAAM,EAAAv2B,UAAA,2BAAqC,CAAC,CAC7DhO,aAAc,CAACA,CACjB,kBAFM6qD,EAAa,SAInB,EAAAroC,YAAA,MAAkB,GAEd,AAAAqoC,CAAAA,MAAAA,EAAA,OAAAA,EAAYxlD,MAAM,AAAD,IAAM,EACzB,EAAAotC,KAAA,QAAa,CAACxyC,GAAE,wBAEhBipD,GAAc2B,GACd,EAAApY,KAAA,QAAa,CAACxyC,GAAE,2DAGlB,EAAAwyC,KAAA,MAAW,CAACxyC,GAAE,uCAEdskC,EAAa,2BAEjB,EACF,EACF,YAyBgE,KAC/CtkC,GAAE,2BAMd,AAAA4B,CAAAA,MAAAA,EAAA,OAAAA,EAAW,KAAQ,AAAR,GACV,iCACE,WAAC,EAAAsmD,oBAAoB,YACnB,WAAC,EAAAC,sBAAsB,YACnB,UAAEnoD,GAAE,cAAc,KAAuB,OAApB4B,MAAAA,EAAA,OAAAA,EAAW,KAAQ,EAC1C,WAAC,EAAAkS,IAAI,EAAChC,QA7WW,WAC3By3C,GAAa,IACbF,GAA2B,CAACD,GAC9B,YA2Wc,UAAC,EAAA9mC,UAAU,EAACme,aAAa,MAAMzuB,QAAS,IACvChS,GAAE,sBAGP,UAAC,EAAAiY,OAAO,QAEV,UAxTkB,WACxB,MACE,WAAC,EAAAmwC,cAAc,YACb,UAAC,EAAAp1C,MAAM,EAAC8C,YAAY,cAAchE,QAASk4C,YACzC,WAAC,EAAA3B,sBAAsB,YACrB,UAAC,EAAAwC,QAAQ,EAAC5xC,KAAK,SACf,UAAC,EAAAqvC,+BAA+B,WAC7BtoD,GAAE,oBAIT,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,MAAMhE,QAASu4C,YAChCrqD,GAAE,iBAIX,EAwSS,IACAuT,EACC,UAAC,EAAA4V,aAAa,WACZ,UAAC,EAAAC,MAAM,OAGT,WAAC,EAAAlS,IAAI,YACH,UAAC,EAAA4zC,WAAW,EACVhsC,SAlDcwqC,GAAYoB,GAAkBJ,GAmD5C/rC,OAAQ6qC,GACR3qC,QAtYwB,kBAAM4qC,GAA2B,OAwY3D,UAAC,EAAArsC,KAAK,EAACuiB,QAASgrB,GAAmB9gD,KAAMg/C,IACxC/pC,GACC,UAAC,EAAAikC,qBAAqB,EACpBjkC,YAAaA,EACbuB,WAAYA,GACZ2iC,cAAeA,GACfl2C,YAAaw8C,GACbtnD,SAAUA,EACVihD,gBAAiBuH,GACjBtH,uBAAwBA,KAG5B,UA7RW,WACrB,MACE,WAAC,EAAA5iC,KAAK,EACJ3B,OAAQyzB,GACRvzB,QAASwrC,GACThxC,KAAK,KACLkH,WAAU,aAEV,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,GAAE,cAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK06B,IAAA,UAChB,UAAC,iBACC,UAAC,EAAA5qC,WAAW,WACV,UAAC,EAAAmL,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,cACxBl7C,KAAK,aACLknB,OAAQ,CAAE,WAAY,CAAC,OAAO,AAAC,aAMzC,UAAC,EAAAlF,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,GAAQvmC,YAAY,CAACsrC,aAE7BlqD,GAAE,YAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASm4C,YAC3CjqD,GAAE,sBAOjB,EAoPa,YAOf,gLC5fawqD,EAAmC,SAC9Cp3C,CAAK,EAGL,IAAQoM,EAAmCpM,EAAnCoM,sBAAsB,CAAElW,EAAW8J,EAAX9J,MAAM,CAEhCyhD,EAAuB,KAAAh8B,OAAA,EAAQ,kBACnC,AAAKvP,GAA0BA,AAAkC,IAAlCA,EAAuBpa,MAAM,EAK1Doa,CAAAA,MAAAA,EAAA,OAAAA,EAAwBrQ,GAAG,CAAC,SAAC67C,CAAG,MAI1B,EAHJ,MAAO,mBACFA,GAAA,CACHrsD,YACE,WAAA2K,EAAO+V,IAAI,CAAC,SAACC,CAAE,SAAKA,EAAG9gB,EAAE,GAAKwsD,EAAIlH,uBAAuB,KAAzD,oBAA4DplD,IAAI,AAAD,GAC/DssD,EAAIlH,uBAAuB,EAEjC,EAAC,GAAK,EAAE,AAEZ,EAAG,CAACtkC,EAAwBlW,EAAO,EAEnC,GAAI,CAACyhD,GAAwB,CAACA,EAAqB3lD,MAAM,CACvD,MAAO,+BAAE,MAGX,IAAM02B,EAAQivB,EAAqB3lD,MAAM,CACnC6lD,EAAanvB,EAzBD,EA0BZ/R,EAAiB+R,GA1BL,EA0B0B,EAAA1X,OAAO,CAAG,EAAA8mC,QAAQ,CAC1DC,EAA+C,CAAC,EAcpD,OAZIphC,IAAmB,EAAA3F,OAAO,EAC5B+mC,CAAAA,EAAe,CACbt2C,MAAOk2C,EACJ57C,GAAG,CAAC,SAACmQ,CAAE,QAAM,GAAqB,OAAnBA,EAAG3gB,WAAW,CAAC,MAAgB,OAAZ2gB,EAAGykC,QAAQ,CAAC,OAC9Cv8C,IAAI,CAAC,MACR8c,UAAW,MACXD,SAAU,GACV+mC,UAAW,IACXp1C,MAAO,aACT,GAIA,UAAC+T,EAAA,mBAAmBohC,GAAA,UAClB,WAAC,EAAAl8C,IAAI,EACHC,cAAc,MACdm8C,SAAS,OACTzqC,IAAK,EACL+J,WAAW,SACX1I,OAAQgpC,EAAa,EAAI,OAASxlD,KAAAA,EAClCuQ,MAAM,wBAEL+0C,EAAqB54C,KAAK,CAAC,EAnDhB,GAmD8BhD,GAAG,CAAC,SAACm8C,CAAE,CAAE/6B,CAAC,QAClD,WAAC,EAAAgG,KAAK,EAAChgB,SAAS,kBACb+0C,EAAG3sD,WAAW,EAAI2sD,EAAGxH,uBAAuB,CAAC,KAAGwH,EAAGvH,QAAQ,CAAC,MADlCxzB,KAG3B,IACH06B,EAAa,GAAK,WAAC,EAAAp4C,IAAI,EAAC0D,SAAS,kBAAQ,IAAE00C,EAAW,YAI/D,6PClDalF,EAAsB,WACjC,MAAQ/lD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHu5B,EAAc,IAAI,EAAAob,WAAW,CAC7BzmC,EAAW,KAAAC,WAAA,IAEjB,IAAMo9C,KAAiB,iBAAOjgC,CAAM,MAG9B,EAkBsB,EApBpBkgC,EAGJ,EAiBI/d,EAMc,EADZ1tC,EAWC0K,EAEClH,wDA5BV,GAVMioD,EAAA,GAEFlgC,CAAAA,MAAAA,EAAA,OAAyB,OAAzB,GAAAA,EAAQmiB,iBAAiB,AAAD,GAAxB,oBAA2BroC,MAAM,AAAD,EAAI,GACtCkmB,CAAAA,MAAAA,GAAA,AAAyB,OAAzB,GAAAA,EAAQmiB,iBAAiB,AAAD,GAAxB,cAA2BrmC,OAAO,CAAC,SAACxC,CAAK,MACnC,EAAAA,CAAAA,MAAAA,EAAA,OAAW,OAAX,GAAAA,EAAO0qC,IAAI,AAAD,GAAV,oBAAankC,SAAS,AAAD,IAAM,MAAQvG,EAAMiQ,KAAK,EAChD22C,EAAyBnrD,IAAI,CAACuE,EAAMiQ,KAAK,CAE7C,EAAC,EAGC22C,EAAyBpmD,MAAM,CAAG,EAOpC,OANA,EAAAotC,KAAA,MAAW,CACR,GAAsC,OAApCxyC,EAAE,+BAA+B,KAElC,OAFqCwrD,EAAyBhkD,IAAI,CAClE,QAIJ,IAGIimC,EAAoBniB,MAAAA,EAAA,OAAyB,OAAzB,GAAAA,EAAQmiB,iBAAiB,AAAD,GAAxB,oBAA2Bt+B,GAAG,CACtD,SAACu+B,CAAO,SAAKA,MAAAA,EAAA,OAAAA,EAAS9oC,KAAK,oBAIN,gCAAM,EAAAmJ,UAAA,4BAAsC,CAAC,CAChEhD,eAAgBugB,MAAAA,EAAA,OAAkB,OAAlB,GAAAA,EAAQtpB,UAAU,AAAD,GAAjB,oBAAoB4C,KAAK,CACzCiG,YAAa4iC,CACf,kBAHM1tC,EAAe,SAKrB,EAAAwiB,YAAA,MAAkB,GAClB,EAAAiwB,KAAA,QAAa,CAACxyC,EAAE,8BAEhBkO,EAAS,CACP8F,GAAK,sBAAkC,OAAbjU,EAAa,QACzC,sBACO0K,CAAAA,EAAA,oBACU,EAAApH,QAAQ,GAGnBE,AAFEA,CAAAA,EAAUkH,EAAE9G,IAAI,AAAD,GAEN,AAAmB,UAAnB,OAAOJ,EACpB,EAAAivC,KAAA,MAAW,CAACjvC,GAEZ,EAAAivC,KAAA,MAAW,CAACxyC,EAAE,6CAItB,YAhD8BsrB,CAAM,mCAiEpC,MAAO,CACL0mB,gBAhBsB,KAAAhzB,WAAA,EAAY,iBAClC,EAAAuD,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,oBACTwiB,UAAW,iBACT,UAAC,EAAAuxB,mBAAmB,EAACC,OAAQza,WAC3B,UAAC,EAAA4tB,oBAAoB,QAGzB1kC,QAASziB,EAAE,gBACX0iB,IAAI,IAAE,iBAAOgwB,CAAG,iCACd,MAAO,GAAAA,EAAI9zB,YAAY,CAAC,kBAAM2sC,EAAe7Y,EAAI9c,SAAS,UAC5D,YAFa8c,CAAG,kCAGlB,EACF,EAAG,EAAE,CAIL,CACF,wKC3Fa6P,EAAmB,QACvB,CAAC,CACN,KAAQ,QAAQ,GAAGxxC,GAAG,CAAC,EAAG,CAAExN,QAAS,wBAAyB,GAC9D,YAAe,QAAQ,GAAGm/C,QAAQ,GAClC,QAAW,QAAQ,GAAGlT,QAAQ,GAAGkT,QAAQ,GACzC,UAAa,aAAa,GAC1B,QAAW,aAAa,GACxB,MAAS,QAAQ,GAAG3xC,GAAG,CAAC,EAAG,CAAExN,QAAS,yBAA0B,GAChE,kBAAqB,OACb,CACJ,QAAQ,CAAC,CACPqB,MAAO,QAAQ,GACfiQ,MAAO,QAAQ,EACjB,IAED9D,GAAG,CAAC,EAAG,CAAExN,QAAS,kCAAmC,GACxD,YAAe,eAAe,GAC9B,gBAAmB,aAAa,GAChC,aAAgB,eAAe,GAAGkoD,EAAE,CAAC,GACrC,iBAAoB,aAAa,GACjC,YAAe,eAAe,GAAGA,EAAE,CAAC,GACpC,gBAAmB,aAAa,GAChC,sBAAyB,aAAa,GAAGjc,QAAQ,GAAGkT,QAAQ,GAC5D,eAAgB,OAAO,CAAC,YAAY,CAACgJ,OAAOlc,QAAQ,EACtD,GACCmc,MAAM,CACL,SAACliD,CAAI,EACH,GAAI,CAACA,EAAKozC,eAAe,EAAI,CAACpzC,EAAKszC,gBAAgB,CACjD,MAAO,GAGT,IAAMO,EAAc,IAAM7zC,EAAKozC,eAAe,EACxCE,EAAmB,IAAMtzC,EAAKszC,gBAAgB,EAEpD,OAAOO,EAAYe,QAAQ,CAACtB,EAC9B,EACA,CACEn1C,KAAM,CAAC,mBAAmB,CAC1BrE,QAAS,WAAM,CAAC,oCAClB,GAEDooD,MAAM,CACL,SAACliD,CAAI,EACH,GAAI,CAACA,EAAKszC,gBAAgB,EAAI,CAACtzC,EAAKwzC,eAAe,CACjD,MAAO,GAGT,IAAMF,EAAmB,IAAMtzC,EAAKszC,gBAAgB,EAC9CE,EAAkB,IAAMxzC,EAAKwzC,eAAe,EAElD,OAAOF,EAAiBsB,QAAQ,CAACpB,EACnC,EACA,CACEr1C,KAAM,CAAC,kBAAkB,CACzBrE,QAAS,WAAM,CAAC,oCAClB,GAEDooD,MAAM,CACL,SAACliD,CAAI,EACH,GAAI,CAACA,EAAK80C,SAAS,EAAI,CAAC90C,EAAK20C,OAAO,CAClC,MAAO,GAGT,IAAMG,EAAY,IAAM90C,EAAK80C,SAAS,EAChCH,EAAU,IAAM30C,EAAK20C,OAAO,EAElC,OAAOG,EAAUF,QAAQ,CAACD,EAC5B,EACA,CACEx2C,KAAM,CAAC,YAAY,CACnBrE,QAAS,WAAM,CAAC,8BAClB,GAEDooD,MAAM,CACL,SAACliD,CAAI,EACH,GAAI,CAACA,EAAK60C,qBAAqB,CAC7B,MAAO,GAGT,IAAMC,EAAY,IAAM90C,EAAK80C,SAAS,EAChCH,EAAU,IAAM30C,EAAK20C,OAAO,EAC5BE,EAAwB,IAAM70C,EAAK60C,qBAAqB,QAG9D,EAAIA,EAAsBsN,OAAO,CAACxN,IAK9BE,EAAsBD,QAAQ,CAACE,KAI5B,EACT,EACA,CACE32C,KAAM,CAAC,wBAAwB,CAC/BrE,QAAS,WAAM,CAAC,iCAClB,GAEDsoD,SAAS,CAAC,SAACpiD,CAAI,QAAM,mBACjBA,GAAA,CACH80C,UAAW,IAAIjkC,KAAK7Q,EAAK80C,SAAS,EAClCH,QAAS,IAAI9jC,KAAK7Q,EAAK20C,OAAO,EAC9BvB,gBAAiB,IAAIviC,KAAK7Q,EAAKozC,eAAe,EAC9CE,iBAAkB,IAAIziC,KAAK7Q,EAAKszC,gBAAgB,EAChDE,gBAAiB,IAAI3iC,KAAK7Q,EAAKwzC,eAAe,EAC9CqB,sBAAuB70C,EAAK60C,qBAAqB,CAC7C,IAAIhkC,KAAK7Q,EAAK60C,qBAAqB,EACnC,qdCzFR,IAAMz6B,EAAqB,cAAO,EAAAtJ,WAAW,OAahCuxC,EAAiB,kBAC5BptC,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CACAqlB,EAAA,EAAAA,OAAA,CACAujB,EAAA,EAAAA,QAAA,CAEwC,eAAAv1C,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAClCi6B,EAAU,KAAAtmC,OAAA,EAAQ,CACtBumC,KAAM,QACR,GAEA,KAAA18B,SAAA,EAAU,WACRjkB,OAAOmlD,IAAI,CAACf,GAAUzhD,OAAO,CAAC,SAAC0T,CAAK,EAClCqqC,EAAQp/B,QAAQ,CAACjL,EAAO+tC,CAAQ,CAAC/tC,EAAM,CACzC,EACF,EAAG,CAAC+tC,EAAS,EAEb,IAAMz+B,KAAgB,iBAAOkB,CAAM,MAC3BnjB,EAaG9C,EACa,IAAd0mD,wDAdF5jD,EAAW,CACfzJ,KAAM4sB,MAAAA,EAAA,OAAAA,EAAQ5sB,IAAI,AACpB,mBAIE,8BADAwsB,EAAgB,IAChB,GAAM,cAAS,KAAA+d,YAAA,EAAa3d,MAAAA,EAAA,OAAAA,EAAQ9sB,EAAE,EAAG,CACvCkL,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBxiB,KAAMtB,CACR,kBAHA,SAKA8X,IACAqlB,uBAEMymB,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAEpB,YAvB6BI,CAAM,mCAyBnC,MACE,WAAC,EAAApL,KAAK,EAAC3B,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,KAAKkH,WAAU,aACnE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,kBAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,UAACqP,EAAA,UACC,UAAC,SAAK,EACJhP,MAAO,KAAA+kC,gBAAA,EAAiB,YACxBjqC,SAAS,OACTM,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,IAAO,CAChCnqD,KAAK,OACLsb,WAAU,gBAOtB,UAAC,EAAA0G,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,EAAQvmC,YAAY,CAACwL,GAC9B1Z,SAAUua,WAET,KAAAjrB,CAAA,AAAAA,EAAE,UAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3C,KAAAjgB,CAAA,AAAAA,EAAE,sBAOjB,+OC5GagsD,EAAoB,SAAC54C,CAAK,EAGrC,IAAQoK,EAAQpK,EAARoK,GAAG,CACLo2B,EAAS,KAAAqY,SAAA,IACPC,EAAa,KAAAC,eAAA,IAAbD,QAAQ,CAwBhB,MACE,WAAC,EAAAj9C,IAAI,EACHm9C,QAAQ,MACRxrC,IAAI,OACJ+J,WAAW,SACXiI,eAAe,qBAEf,UAAC,EAAAszB,QAAQ,EAACp0C,QAAS,kBAAMo6C,EAAS1uC,EAAImmB,QAAQ,KAC9C,UAAC,EAAArhB,UAAU,EAACxQ,QA/BwB,WACtC,EAAAyQ,YAAA,QAAoB,CAAC,CACnBC,UAAW,iBAAM,+BAAG,WAAM,CAAC,sBAC3BE,KAAM,mFACAlF,EAAImmB,QAAQ,CAAC33B,UAAU,CAAvB,6BAEA,gCAAM,EAAA+B,UAAA,oCAA8C,CAAC,CACnD/B,WAAYwR,EAAImmB,QAAQ,CAAC33B,UAAU,AACrC,kBAFA,SAIA4nC,EAAOyY,UAAU,GAEjB,EAAA9pC,YAAA,MAAkB,GAElB,EAAAiwB,KAAA,QAAa,CAAC,WAAM,CAAC,kDAErB,EAAAA,KAAA,MAAW,CAAC,WAAM,CAAC,4CAGzB,EACF,EACF,MAaF,+OCtCa8Z,EAAqB,SAACl5C,CAAK,EAGtC,IAAQm5C,EAAUn5C,EAAVm5C,KAAK,CACLvsD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAW,KAAAzL,OAAA,EAA4B,CAC3CtW,SAAU,KAAAg7C,WAAA,EAAY,EAAAiJ,kBAAkB,EACxCpH,KAAM,UACR,GAqBA,MAnBA,KAAA18B,SAAA,EAAU,WACR,EAAAnG,YAAA,cAA0B,CAAC+H,EAC7B,EAAG,CAACA,EAAS,EAEb,KAAA5B,SAAA,EAAU,WACJ6jC,GAASA,EAAM1gD,KAAK,EAAI0gD,EAAM7tD,IAAI,CACpC4rB,EAASs5B,KAAK,CAAC,CACbplD,GAAI+tD,EAAMvgD,UAAU,CACpBH,MAAO0gD,EAAM1gD,KAAK,CAClBnN,KAAM6tD,EAAM7tD,IAAI,CAChB+tD,YAAaF,EAAME,WAAW,AAChC,GAEAniC,EAASs5B,KAAK,CAAC,CACbllD,KAAM,EACR,EAEJ,EAAG,CAAC6tD,EAAM,EAGR,UAAC,EAAA9hC,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAAvR,KAAK,EAACvE,QAAS,YACd,UAAC,SAAK,EACJ9V,KAAK,QACL4Q,YAAatP,EAAE,kBACf2P,SAAS,UAEX,UAAC,SAAK,EACJjR,KAAK,OACLmW,MAAO7U,EAAE,iBACT2P,SAAS,UAEX,UAAC,SAAK,EACJjR,KAAK,cACLoH,KAAK,MACL+O,MAAO7U,EAAE,SACT2P,SAAS,eAKnB,kOCrDM4vB,EAAU,CACd,CACE4D,OAAQ,WAAM,CAAC,iBACftD,SAAU,MACZ,EACA,CACEsD,OAAQ,QACRtD,SAAU,OACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,gBACftD,SAAU,aACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,iBACftD,SAAU,cACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,QACP,AAAIA,GAAS,IAAMA,GAAO2lB,OAAO,GACxB,+BAAG,IAAM3lB,GAAO45C,MAAM,CAAC,gBAGzB,+BAAE,KACX,CACF,EACA,CACErb,OAAQ,WAAM,CAAC,mBACftD,SAAU,gBACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,OAEP,CADAU,QAAQ0/B,GAAG,CAAC,IAAMpgC,GAAO2lB,OAAO,GAAI3lB,GAChCA,GAAS,IAAMA,GAAO2lB,OAAO,IACxB,+BAAG,IAAM3lB,GAAO45C,MAAM,CAAC,gBAGzB,+BAAE,KACX,CACF,EACA,CACEhgD,GAAI,UACJwX,MAAO,GACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,CACP,MAAO,UAAC,EAAAwuC,iBAAiB,EAACxuC,IAAKA,GACjC,CACF,EACD,CAIYi0B,EAAuB,WAClC,IAAQvvC,EAAc,EAAAsvC,kBAAA,cAAgC,GAA9CtvC,SAAS,CACTgqD,EAAa,KAAAC,eAAA,IAAbD,QAAQ,CAEhB,MACE,WAAC,EAAAj9C,IAAI,EAACwJ,UAAU,SAASmI,IAAK,YAC5B,WAAC,EAAA5N,MAAM,EAACyqB,GAAG,OAAO3rB,QAAS,kBAAMo6C,eAAY,KACxC,WAAM,CAAC,mBAEZ,UAAC,EAAAh1C,IAAI,WACH,UAAC,EAAA8F,KAAK,EAACuiB,QAASA,EAAS91B,KAAMvH,EAAUwqD,kBAAkB,EAAI,EAAE,OAIzE,gOC7DaP,EAAkB,WAC7B,IAAMvY,EAAS,KAAAqY,SAAA,IACPlgD,EAAgB,EAAAylC,kBAAA,UAA4B,GAA5CzlC,WAAW,CAyCnB,MAAO,CAAEmgD,SAvCQ,SACfK,CAAK,QAEL,EAAAhqC,YAAA,KAAiB,CAAC,CAChBoQ,MAAO45B,EAAQ,WAAM,CAAC,iBAAmB,WAAM,CAAC,gBAChD/pC,UAAW,iBAAM,UAAC,EAAA8pC,kBAAkB,EAACC,MAAOA,KAC5C9pC,QAAS,WAAM,CAAC,QAChBC,IAAI,IAAE,iBAAOgwB,CAAG,MAORpnB,EAAA,wDANU,SAAMonB,EAAIia,OAAO,WAEjC,GAAI,CAFY,SAGd,UAGIrhC,EAASonB,EAAI9c,SAAS,8CAGtB22B,CAAAA,GAASA,EAAMvgD,UAAS,EAAxB,YACF,SAAM,EAAA+B,UAAA,iCAA2C,CAAC,CAChD/B,WAAYugD,EAAMvgD,UAAU,CAC5BnB,YAAaygB,CACf,kBAHA,sBAKA,SAAM,EAAAvd,UAAA,kCAA4C,CAAC,CACjDhC,YAAa,CAACA,EACdlB,YAAaygB,CACf,WAHA,iCAMFsoB,EAAOyY,UAAU,GAEjB,EAAA9pC,YAAA,MAAkB,gCAElB,EAAAiwB,KAAA,MAAW,CAAC,WAAM,CAAC,4CAEvB,YA5BaE,CAAG,kCA6BlB,EACF,CAEkB,CACpB,+hBCpCA,IAAMkT,EAAgB,cAAO,EAAA32C,IAAI,OAU3B25C,EAAgB,CACpBpqD,GAAI,KACJE,KAAM,KACNmN,MAAO,IACT,EAEa0lC,EAAmB,WAC9B,IAAQvxC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACiD,eAAAsT,QAAA,EAAS,OAA5Ds5C,EAAmD,KAA5BC,EAA4B,KAC1B,eAAAv5C,QAAA,EAAsBs1C,GAAA,GAA/CC,EAAyB,KAAfC,EAAe,KAS5B,OAAA9kB,cAAA,EAA6D,CAC/DC,SAAU,EAAA+E,OAAO,AACnB,GAREv/B,EAME,EANFA,IAAI,CACJ8J,EAKE,EALFA,SAAS,CACT0xB,EAIE,EAJFA,gBAAgB,CAChBC,EAGE,EAHFA,YAAY,CACZ7C,EAEE,EAFFA,cAAc,CACdiD,EACE,EADFA,OAAO,CAOH0gB,EAAoB,gBAAGxoC,EAAA,EAAAA,GAAA,CAC3B,MACE,WAACooC,EAAA,WACC,UAAC,EAAA9xC,IAAI,EAACE,GAAK,2BAA0C,OAAhBwJ,EAAImmB,QAAQ,CAACnlC,EAAE,WAClD,UAAC,EAAAowB,SAAS,OAGZ,UAAC,EAAAs3B,QAAQ,EAACp0C,QAAS,kBAAMg7C,EAAStvC,QAGxC,EAEMsvC,EAAW,SAACxhC,CAAM,EAGtBw9B,EAFmBx9B,MAAAA,EAAA,OAAAA,EAAQA,MAAM,EAGjCuhC,EAAyB,CAACD,EAC5B,EAEMzG,EAAoB,WAAa,CAGrC,iBAAM,CACJ,CACEhjB,OAAS,KACTtD,SAAU,KACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAwB,OAAtBnjC,EAAE,qBACb6/B,SAAU,OACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAmB,OAAjBnjC,EAAE,gBACb6/B,SAAU,cACVyD,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQyhC,WAAW,AAAD,EACf,IAAMzhC,MAAAA,EAAA,OAAAA,EAAQyhC,WAAW,EAAEvO,MAAM,CAAC,cAClC,KAGV,EACA,CACErb,OAAS,GAA0B,OAAxBnjC,EAAE,uBACb6/B,SAAU,mBACVyD,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQ0hC,gBAAgB,AAAD,EACpB,IAAM1hC,MAAAA,EAAA,OAAAA,EAAQ0hC,gBAAgB,EAAExO,MAAM,CAAC,cACvC,KAGV,EACA,CACErb,OAAS,GAAoB,OAAlBnjC,EAAE,iBACb6/B,SAAU,aACZ,EACA,CACEsD,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACwoC,EAAA,CAAkBxoC,IAAKA,IAC7C,EACD,EACD,EAAE,EAGJ,MACE,UAAC,EAAA2L,aAAa,EAACyI,QAASre,WACtB,WAAC,EAAA2D,IAAI,YACH,UAAC,EAAA8F,KAAK,EAACuiB,QAAS4mB,EAAmB18C,KAAMA,IACzC,UAAC,EAAAqiD,cAAc,EACbptC,YAAakuC,EACb3sC,WA7EqB,kBAAM4sC,EAAyB,KA8EpDvnB,QAASA,EACTujB,SAAUA,IAEZ,UAAC,SAAU,EACT1mB,cAAe+C,EACf9C,YAAa6C,EACb5C,eAAgBA,QAK1B,iYCvGa4qB,EAAW,YACtB,IAAMjI,EAAWl/C,AAAS,SADD,EAAAA,IAAA,CAEjB9F,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC2B,OAAAstB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAAtDvO,EAA4B,EAA5BA,YAAY,CAAEuuC,EAAc,EAAdA,SAAS,CACzBgV,EAAe,KAAAzkC,OAAA,EAA+B,CAClDtW,SAAU,KAAAg7C,WAAA,EACRyB,EAAW,EAAAkI,uBAAuB,CAAG,EAAAC,oBAAoB,CAE7D,GACMC,EAA8B9J,EAAa+J,KAAK,CAAC,SACjDn/C,EAAW,KAAAC,WAAA,IAEf,eAAAmF,QAAA,EACE,SAFGg6C,EACL,KAD4BC,EAC5B,KAGyE,EACzE,AAAAvI,CAAAA,EAAW,KAAAhX,0BAAA,EAA6B,KAAAoB,yBAAA,GACxC8V,aAAa,GAFPzX,EAAmE,EAAnEA,iBAAiB,CAAEyB,EAAgD,EAAhDA,OAAO,CAAEC,EAAuC,EAAvCA,SAAS,CAAEN,EAA4B,EAA5BA,MAAM,CAAED,EAAoB,EAApBA,eAAe,CAIxDL,EAAgB,KAAAif,gBAAA,EAC5B,EAAA1e,YAAA,sBAAkC,CAAC,CACjC/uC,aAAc,CAACA,EACfgM,YAAauiC,EAAY,CAACA,EAAY7oC,KAAAA,CACxC,IAJMgE,IAAI,CAOkC,eAAAgkD,UAAA,EAC5C,MAAAp3B,KAAA,EAAMkY,EAAYpvC,OAAO,GAAYovC,EAAYpvC,OAAO,KADnDuuD,EAAuC,KAAtBC,EAAsB,KAI9C,KAAAjlC,SAAA,EACE,WACE46B,EAAa+J,KAAK,CAAC,SAACzoD,CAAK,CAAE,CAAP,MAASlG,EAAA,EAAAA,IAAA,AACd,aAATA,GACFivD,CAAkB,CAAC/oD,EAAMzF,OAAO,CAAG,KAAO,MAAM,GAGrC,gBAATT,GACF6uD,EAEE3oD,EAAM+sC,WAAW,EAAI,KAG3B,EACF,EACA,CAAC2R,EAAa,EAGhB,IACE,OAAAsK,0BAAA,EAA2BtK,GADrBuK,EACN,EADMA,qBAAqB,CAAEC,EAC7B,EAD6BA,wBAAwB,CAE/CC,EAAgB,KAAAC,cAAA,EAAe1K,GAA/ByK,WAAW,CAEnB,KAAArlC,SAAA,EACE,WACE46B,EAAaM,KAAK,CAAC,CACjBplD,GAAI+vC,EAAY/vC,EAAE,CAClBiuD,YAAale,EAAYke,WAAW,EAAIhnD,KAAAA,EAExCorC,gBAAiB3B,EAAQ7vB,IAAI,CAC3B,SAAC4uC,CAAY,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAcrpD,KAAK,AAAD,IAAM2pC,EAAYsC,eAAe,GAGvEqd,sBAAuBzgB,EAAkBpuB,IAAI,CAC3C,SAACkmC,CAAa,QACZ,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAe3gD,KAAK,AAAD,IAAM2pC,EAAY2f,qBAAqB,GAE9DzD,WAAY7b,EAAgBvvB,IAAI,CAC9B,SAAC8uC,CAAc,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAgBvpD,KAAK,AAAD,IAAM2pC,EAAYkc,UAAU,GAEtEtrD,QAASovC,EAAYpvC,OAAO,CAC5BivD,MAAO7f,EAAY6f,KAAK,CACpB,CACExpD,MAAO2pC,EAAY6f,KAAK,CAAC5vD,EAAE,CAC3BqW,MAAO05B,EAAY6f,KAAK,CAAC1vD,IAAI,CAE7B4wC,KAAMf,CACR,EACA9oC,KAAAA,CACN,EACF,EACA,CAAC8oC,EAAY,EAaf,KAAA7lB,SAAA,EACE,YACMs8B,IAIAsI,CAAAA,MAAAA,EAAA,OAAAA,EAAuBhe,IAAI,AAAD,EAC5BgU,EAAav9B,QAAQ,CAAC,UAAWunC,EAAsBhe,IAAI,CAACnwC,OAAO,EAC1D,CAACmuD,GACVhK,EAAav9B,QAAQ,CAAC,UAAW,IAErC,EACA,CAACunC,EAAsB,EAGzB,IAAMe,EAA0B,KAAAt/B,OAAA,EAAQ,iBACtC,EAAIi2B,KAIA8I,IAIAR,EACK,CAACA,EAAsBgB,SAAS,GAGrClB,KAA+BA,EAA4BxoD,KAAK,EAI7D,GACT,EAAG,CACDogD,EACA8I,EACAR,EACAF,EACD,EAEKmB,EAAoB,KAAAx/B,OAAA,EAAQ,kBAChC,AAAI2+B,EACKve,EAAU7mC,MAAM,CAAC,SAAC8sB,CAAG,MAAK,SAAQ,OAAR,GAAAA,EAAIka,IAAI,AAAD,GAAP,oBAAUnwC,OAAO,GAGhDiuD,EACKje,EAAU7mC,MAAM,CAAC,SAAC8sB,CAAG,MAAM,QAAD,EAAS,OAAR,GAAAA,EAAIka,IAAI,AAAD,GAAP,oBAAUnwC,OAAO,AAAD,IAG7CgwC,CACT,EAAG,CAACA,EAAWue,EAAiBN,EAA4B,EAE5D,MACE,UAAC,EAAA3iC,YAAY,oBAAK64B,GAAA,UAChB,UAAC,QAAKxkC,SAAUwkC,EAAa1kC,YAAY,CAACmvC,YACxC,WAAC,EAAAh1C,KAAK,EAACvE,QAAQ,cACb,WAAC,EAAAqP,kBAAkB,YAChB,CAACmhC,GACA,WAAC,EAAAwJ,uBAAuB,EAACx0C,WAAU,aACjC,UAAC,EAAAW,SAAS,WAAE3a,EAAE,uBACd,UAAC,EAAA8jB,yBAAyB,WACxB,UAAC,SAAK,EACJnU,SAAS,OACTjR,KAAK,gBACLgS,SAAUs0C,EACVhrC,WAAU,YAEV,UAAC,EAAA7G,WAAW,EACV2C,YAAY,MACZhQ,KAAK,SACLgM,QAAS+7C,EACTn9C,SAAUs0C,EACVnyB,KAAK,uBAEJ7yB,EAAE,qCAOZ,CAACglD,GACA,UAAC,SAAK,EACJnwC,MAAO7U,EAAE,iBACT2P,SAAS,QACTjR,KAAK,eACLsb,WAAU,KAIbgrC,EACC,+BACE,UAAC,SAAK,EACJnwC,MAAO7U,EAAE,WACTtB,KAAK,cACLiR,SAAS,QACT/K,MAAO2pC,EAAY7vC,IAAI,EAAI+G,KAAAA,EAC3BiL,SAAQ,OAIZ,UAAC,EAAAikB,eAAe,EACdj2B,KAAK,cACLq2B,YAAW,GACX/a,WAAU,GACVtJ,SAAUo9C,EACVj5C,MAAO7U,EAAE,WACT6D,QAAS0qD,IAGb,UAAC,EAAAhrC,QAAQ,EACP7kB,KAAK,UACLiV,WAAY06C,WAEXruD,EAAE,WAEL,UAAC,EAAA20B,eAAe,EACd9f,MAAO7U,EAAE,gBACT6D,QAASqrC,EACTxwC,KAAK,oBAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO7U,EAAE,sBACT6D,QAAS4pC,EACTzzB,WAAU,GACVtb,KAAK,0BAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO7U,EAAE,YACT6D,QAAS+qC,EACT50B,WAAU,GACVtb,KAAK,eAEP,UAAC,SAAK,EACJmW,MAAO7U,EAAE,SACT2P,SAAS,QACTjR,KAAK,gBAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO7U,EAAE,gBACT6D,QAASgrC,EACTn+B,SAAUg9C,EACVhvD,KAAK,aAGT,WAAC,EAAAiiB,WAAW,EAACC,IAAI,cACf,UAAC,EAAA5N,MAAM,EACL8C,YAAY,MACZhQ,KAAK,SACL6N,WAAY2vC,EAAa94B,SAAS,CAACS,YAAY,CAC/C1X,UAAW+vC,EAAa94B,SAAS,CAACS,YAAY,UAE7CjrB,EAAE,UAEL,UAAC,EAAAgT,MAAM,EACL8C,YAAY,YACZhQ,KAAK,QACLgM,QAvKO,WACjB5D,EAAS,CACP8F,GAAI,0DACJnM,QAAS,GACTlB,OAAQ,CACN5G,aAAAA,CACF,CACF,EACF,EAgKY4T,WAAY2vC,EAAa94B,SAAS,CAACS,YAAY,UAE9CjrB,EAAE,sBAOjB,4OC7RaguD,EAAiB,SAC5B1K,CAAY,EAEZ,MAAQjL,EAAuB,KAAAD,oBAAA,EAAqBkL,GAA5CjL,kBAAkB,CAClBt4C,EAAiB,KAAAutB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CACdmO,EAAW,KAAAC,WAAA,IAwEjB,MAAO,CACL4/C,WAAW,IAvEO,iBAAOziC,CAAM,MACzB9sB,EACAiwD,EASW,EAEc,EA0BhB,EAdL9qD,EAwBA+qD,EAWDrpD,wDA3DH7G,EAAK8sB,EAAO9sB,EAAE,CACdiwD,EAAS,CAAC,KAAAp4B,KAAA,EAAM73B,8CAGhBiwD,CAAAA,GAAU,CAAC,KAAAp4B,KAAA,EAAM73B,EAAE,EAAnB,YACF,SAAM,EAAAuP,UAAA,wBAAkC,CAAC,CACvCvP,GAAIA,EACJqM,YAAa,CACX4hD,YAAanhC,EAAOmhC,WAAW,CAC/B5b,gBAAiB,CAACvlB,EAAOulB,eAAe,CAACjsC,KAAK,CAC9C+pD,QAAS,CAAY,OAAZ,GAAArjC,EAAO8iC,KAAK,AAAD,GAAX,oBAAcxpD,KAAK,AAAD,GAAK,KAChC7E,aAAc,CAACA,EACfmuD,sBAAuB,AAA4B,OAA5B,GAAA5iC,EAAO4iC,qBAAqB,AAAD,GAA3B,oBAA8BtpD,KAAK,CAC1D6lD,WAAY,CAACn/B,EAAOm/B,UAAU,CAAC7lD,KAAK,AACtC,CACF,WAEA,OAZA,SAYA,GAAM,EAAA20B,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,EAAAonB,YAAA,sBAAkC,CAAC,CAC3C/uC,aAAc,CAACA,EACfgM,YAAavN,CACf,GAAGkpB,QAAQ,AACb,kBALA,sBA+BgB,OAxBV/jB,EAAgD,CACpD5D,aAAc,CAACA,EACf0qD,WAAY,CAACn/B,EAAOm/B,UAAU,CAAC7lD,KAAK,CACpCisC,gBAAiB,CAACvlB,EAAOulB,eAAe,CAACjsC,KAAK,CAC9CspD,sBAAuB5iC,EAAO4iC,qBAAqB,CAACtpD,KAAK,CACzD8nD,mBAAoB,CAClB,CACE3sD,aAAc,CAACA,EACfrB,KAAM4sB,EAAOsjC,YAAY,CACzB/iD,MAAOyf,EAAOujC,aAAa,AAC7B,GAEFpC,YAAanhC,EAAOmhC,WAAW,CAC/BttD,QAAS,AAAC,KAAAk3B,KAAA,EAAM/K,EAAOnsB,OAAO,EAAqBsG,KAAAA,EAAjB6lB,EAAOnsB,OAAO,CAChDwvD,QAAS,CAAY,OAAZ,GAAArjC,EAAO8iC,KAAK,AAAD,GAAX,oBAAcxpD,KAAK,AAAD,GAAK,IAClC,EAEI0mB,EAAOqmB,WAAW,CAAC2c,SAAS,CAC9B3qD,EAAKjF,IAAI,CAAG4sB,EAAOqmB,WAAW,CAAC/sC,KAAK,EAEpCjB,EAAKoI,WAAW,CAAG,CAACuf,EAAOqmB,WAAW,CAAC/sC,KAAK,CAC5CjB,EAAKjF,IAAI,CAAG4sB,EAAOqmB,WAAW,CAAC98B,KAAK,EAGtB,GAAM,EAAA9G,UAAA,yBAAmC,CAAC,CACxDlD,YAAalH,CACf,WAFM+qD,EAAU,SAIhBxgD,EAAS,CACP8F,GAAK,sBAA4D,OAAvCjU,EAAa,4BAAkC,OAAR2uD,EAAQ,SACzE7mD,QAAS,EACX,2BAGF,EAAA2qC,KAAA,QAAa,CAAC,WAAM,CAAC,8BAErB6F,EADOhzC,EAAA,UAEPC,QAAQ2zC,GAAG,CAAC5zC,GAERA,aAAiB,EAAAhC,QAAQ,EAAI,AAAsB,UAAtB,OAAOgC,EAAM1B,IAAI,EAChD,EAAA6uC,KAAA,MAAW,CAACntC,EAAM1B,IAAI,2BAG5B,YApE2B2nB,CAAM,kCAwEjC,CACF,oMCpFasiC,EAA6B,SACxCtK,CAAY,EAEZ,IACE,eAAAhwC,QAAA,EAAmD,SAD9Cw7C,EACL,KADmBC,EACnB,KAIE,eAAAtB,UAAA,EAAW,OAFbuB,EAEE,KADQC,EAAA,AACR,KADAC,MAAM,CAMN,eAAAzB,UAAA,EAAW,OAFb0B,EAEE,KADQC,EAAA,AACR,KADAF,MAAM,CAMN,eAAAzB,UAAA,EAAW,OAFbK,EAEE,YADIuB,EAAA,EAAJhgC,EAAE,CAAqCigC,EAAA,EAALC,GAAG,CA4DzC,MAAO,CACLzB,yBAAAA,EACAqB,0BAAAA,EACAH,4BAAAA,EACAF,aAAAA,EACAjB,sBA9D4B,KAAA7uC,WAAA,EAAY,uBAQhC6vC,EACAW,EAaAC,EAAAhlD,wDArBQ,SAAM64C,EAAaqJ,OAAO,CAAC,yBAE3C,GAAI,CAFY,SAGd,2BAKgB,8BADVkC,EAAgBvL,EAAa1tB,SAAS,CAAC,iBAC7B,GAAM,EAAA7nB,UAAA,yBAAmC,CAAC,CACxDlC,MAAOgjD,CACT,WAEA,GAAI,CAJEW,CAAAA,EAAU,WAIA,CAACA,EAAQ9C,kBAAkB,CAIzC,OAHA4C,IACAP,EAAgB,MAET,SAST,GANAA,EAAgBS,GAMZ,CAJEC,CAAAA,EAAmBD,EAAQ9C,kBAAkB,CAACrtC,IAAI,CACtD,SAAC5U,CAAC,SAAKA,EAAEoB,KAAK,GAAKgjD,KAInB,iBAGEY,EAAiB/wD,IAAI,EACvB4kD,EAAav9B,QAAQ,CAAC,eAAgB0pC,EAAiB/wD,IAAI,EAGzD8wD,EAAQhxD,EAAE,EACZ8kD,EAAav9B,QAAQ,CAAC,cAAe,CACnCnhB,MAAO4qD,EAAQhxD,EAAE,CAAG,GACpBqW,MAAO26C,EAAQ9wD,IAAI,EAAI8wD,EAAQhxD,EAAE,CAAG,GAEpC8wC,KAAMkgB,EACNlB,UAAW,EACb,GAGEkB,EAAQ/C,WAAW,EACrBnJ,EAAav9B,QAAQ,CAAC,cAAeypC,EAAQ/C,WAAW,EAG1D2C,IACAC,iCAEA,EAAA7c,KAAA,MAAW,CAAC,0HAEZyc,2BAEJ,GAAG,EAAE,CAQL,CACF,ynBCzFO,IAAMprC,EAAqB,cAAO,EAAAtJ,WAAW,OAMvCuJ,EAA4B,cAAO,EAAAtU,GAAG,OAStCg/C,EAA0B,cAAO,EAAAj0C,WAAW,+KCdnD8nC,EAAe,QAAQ,CAAC,CAC5Bz9C,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GACfy5C,UAAW,SAAS,GAAG9e,QAAQ,EACjC,GAEa2d,EAAuB,EAAAuC,CAAA,OAAQ,CAAC,CAC3ClxD,GAAI,QAAQ,GAAGgxC,QAAQ,GACvBmC,YAAa0Q,EACb6L,sBAAuB7L,EACvBxR,gBAAiBwR,EACjBoI,WAAY,QAAQ,CAAC,CACnB7lD,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GAAG6tC,QAAQ,EAC5B,GACA+J,YAAa,QAAQ,GACrBmC,aAAc,QAAQ,GACtBC,cAAe,QAAQ,GAAGhjD,KAAK,CAAC,CAC9BtI,QAAS,WAAM,CAAC,gBAClB,GACApE,QAAS,SAAS,GAAGqwC,QAAQ,GAAGkT,QAAQ,GACxC0L,MAAO,QACE,CAAC,CACNxpD,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GAAG6tC,QAAQ,EAC5B,GACClT,QAAQ,GACRkT,QAAQ,EACb,GAEawK,EAA0B,EAAAwC,CAAA,OAAQ,CAAC,CAC9ClxD,GAAI,QAAQ,GAAGgxC,QAAQ,GACvBqB,gBAAiBwR,EACjB6L,sBAAuB7L,EACvBoI,WAAY,QAAQ,CAAC,CACnB7lD,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GAAG6tC,QAAQ,EAC5B,GACA+J,YAAa,QAAQ,GACrB2B,MAAO,QACE,CAAC,CACNxpD,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GAAG6tC,QAAQ,EAC5B,GACClT,QAAQ,GACRkT,QAAQ,EACb,8SCtCML,EAAe,QAAW,CAC9B,CACEz9C,MAAO,eAAkB,GACzBiQ,MAAO,QAAW,EACpB,EACA,CACEytC,eAAgB,WAAM,CAAC,iBACzB,GAGIC,EAAmB,QAAW,CAAC,CACnCoN,iBAAkBtN,CACpB,GAIauN,EAAmB,gBAC9B7vD,EAAA,EAAAA,YAAA,CAIQC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACyC,eAAAsT,QAAA,IAAQ,GAAnDm6B,EAA2C,KAAxB6Z,EAAwB,KAC5Ch9B,EAAW,KAAAzL,OAAA,EAA8B,CAC7CtW,SAAU,KAAAg7C,WAAA,EAAYhB,GACtB6C,KAAM,UACR,GAyBA,MAvBA,KAAA18B,SAAA,EAAU,iBAmBRg/B,GAlB+B,yEACC,SAAM,EAAA35C,UAAA,gCACP,CAAC,CAC1BhO,aAAc,CAACA,CACjB,GACCkF,KAAK,CAAC,iBAAM,EAAE,kBAUjBqiD,EARiCK,AANH,SAMyBx4C,GAAG,CAAC,SAACu+B,CAAO,EACjE,MAAO,CACL74B,MAAO64B,EAAQ7hC,KAAK,EAAI6hC,EAAQhvC,IAAI,CACpCkG,MAAO8oC,EAAQlvC,EAAE,CACjB8wC,KAAM,CAAEnkC,UAAWuiC,EAAQviC,SAAS,AAAC,CACvC,CACF,UAGF,iDAGA,EAAAoX,YAAA,cAA0B,CAAC+H,EAC7B,EAAG,CAACA,EAAS,EAGX,UAAC,EAAAG,YAAY,oBAAKH,GAAA,UAChB,UAAC,EAAAvR,KAAK,EAACvE,QAAS,WACd,UAAC,EAAAmgB,eAAe,EACd9f,MAAO7U,EAAE,qBACT6D,QAAS4pC,EACTzzB,WAAU,GACVtb,KAAK,yBAKf,olBCpCA,IAAM4nD,EAAY,CAChB7wB,YAAa,iBACbmyB,kBAAmB,UACnB73C,MAAO,KACT,EAEM83C,EAAa,cAAO,EAAAZ,QAAQ,OAe5B4I,EACJ,CACEC,KAAM,EACN13C,OAAQ,EACR23C,MAAO,EACPjpC,SAAU,EACVkpC,aAAc,CAChB,EAEIC,EAAwB,cAAO,EAAAhhD,IAAI,OAQnCihD,EAAqB,gBAAGr7C,EAAA,EAAAA,KAAA,QAC5B,AAAKA,EAKH,UAACo7C,EAAA,UACC,UAAC,EAAAxzB,aAAa,WACZ,UAAC,EAAAC,eAAe,WAAE7nB,QANf,IAUX,EAEao5B,EAAa,gBAAGnoC,EAAA,EAAAA,IAAA,CACW,eAAAwN,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KAChCzQ,EAAW,KAAAC,WAAA,IACXsgD,EAAS3oD,AAAS,SAATA,EACP9F,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEDktC,EACN,AAAAuhB,CAAAA,EAAS,KAAAzgB,0BAAA,EAA6B,KAAAoB,yBAAA,GACtC/gC,SAAS,GAFH6+B,GAAG,CAIHzjC,EACN,AAAAglD,CAAAA,EAAS,KAAAzgB,0BAAA,EAA6B,KAAAoB,yBAAA,GACtC8V,aAAa,GAFPz7C,IAAI,CAIN0mD,EAAqB1B,GAASoB,CAAO,CAAC3iB,EAAI,EAAI,EAmCpD,MACE,UAAC,EAAAh2B,IAAI,WACH,WAAC,EAAAI,QAAQ,YACP,UAAC44C,EAAA,CAAmBr7C,MAAOpL,MAAAA,EAAA,OAAAA,EAAM/K,IAAI,GACrC,WAAC,EAAA+nD,IAAI,EACHuB,SAAQ,GACRoI,OAAM,GACNz9C,QAAQ,WACRtD,MAAO8gD,EACP1/C,SApBiB,SAACpB,CAAK,EACzBo/C,GACFvgD,EAAS,CACP8F,GAAI,KACJxI,OAAQ,CACN0hC,IAAKzoC,OAAOmlD,IAAI,CAACiG,EAAQ,CAACxgD,EAAM,AAClC,CACF,EAEJ,YAaQ,WAAC,EAAAs3C,OAAO,YACN,UAAC,EAAAC,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,eAC9B,UAAC,EAAA4mD,GAAG,EAACjzC,WAAY,CAAC86C,EAAQ5H,UAAWP,WAClCtmD,EAAE,gBAEL,UAAC,EAAA4mD,GAAG,EAACjzC,WAAY,CAAC86C,EAAQ5H,UAAWP,WAClCtmD,EAAE,eAEL,UAAC,EAAA4mD,GAAG,EAACjzC,WAAY,CAAC86C,EAAQ5H,UAAWP,WAClCtmD,EAAE,cAEL,UAAC,EAAA4mD,GAAG,EAACjzC,WAAY,CAAC86C,EAAQ5H,UAAWP,WAClCtmD,EAAE,qBAGP,WAAC,EAAAgnD,SAAS,YACR,UAACa,EAAA,CAAWl4C,SAAU,aACpB,UAAC,EAAAs9C,QAAQ,EAACnnD,KAAMA,MAElB,UAAC+hD,EAAA,UAAY4G,GAAU,UAAC,EAAA4B,SAAS,OACjC,UAACxI,EAAA,UAAY4G,GAAU,UAAC,EAAA6B,QAAQ,OAChC,UAACzI,EAAA,UAAY4G,GAAU,UAAC,EAAA8B,WAAW,OACnC,UAAC1I,EAAA,UAAY4G,GAAU,UAAC,EAAA+B,eAAe,aAG3C,UArEe,WACnB,IAAMvwC,EAAa,kBAAMtB,EAAe,KAExC,MACE,WAAC,EAAAuB,KAAK,EAAC3B,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,KAAKkH,WAAU,aACnE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,EAAE,aAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WAAExgB,EAAE,4BACd,UAAC,EAAA0gB,WAAW,EAAC5O,QAASmO,EAAY2S,eAAe,kBAC/C,UAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,kBAClC,UAAC,QAAW,EAAC9c,YAAY,YAAYhE,QAASmO,WAC3CjgB,EAAE,qBAOjB,EAiDO,QAIT,msCC7HA,IAAM4lD,EAAgB,cAAO,EAAA32C,IAAI,OAK3Bka,EAAgB,cAAO,EAAAla,IAAI,OAK3Bm5C,EAAiB,cAAO,EAAA54C,GAAG,OAQ3B64C,EAAyB,cAAO,EAAAp5C,IAAI,OAMpCq5C,EAAkC,cAAO,EAAAz1C,IAAI,OActC49C,EAAmB,WAC9B,QAAQzwD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEDktC,EAAQ,EAAAW,2BAAA,UAAqC,GAA7CX,GAAG,CACLlrC,EAAa,KAAA8Z,aAAA,IACX40C,EAAmC,KAAAC,wBAAA,IAAnCD,8BAA8B,CAChCE,EAAoB1jB,AAAQ,YAARA,EACpBh/B,EAAW,KAAAC,WAAA,IACTpO,EAAiB,KAAAutB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CACQ,eAAAuT,QAAA,EAAS,OAA9Bk6B,EAAqB,KAAbqjB,EAAa,KACgB,eAAAv9C,QAAA,EAAS,OAA9CuvB,EAAqC,KAArBiuB,EAAqB,KACJ,gBAAAx9C,QAAA,EAEtC,EAAE,KAFGy9C,GAAiC,MAAnBC,GAAmB,MAQpC,QAAAhtB,cAAA,EAAoE,CACtEG,iBAAkB,GAClBF,SAAW,GAA4C,OAA1C,EAAAkE,yBAAyB,CAAC,kBAA6B,OAAbpoC,GACvDqkC,gBAAiB,CACft4B,oBAAqB,CAAC8kD,CACxB,EACAzhD,IAAK,SAAC1F,CAAI,EACR,OAAOA,EAAK0F,GAAG,CAAC,SAAC8hD,CAAE,EAOjB,OANIA,EAAGvE,kBAAkB,EAAIuE,EAAGvE,kBAAkB,CAACtnD,MAAM,CAAG,GAC1D6rD,CAAAA,EAAGC,aAAa,CAAG,EAAAzL,SAAA,eAAwB,CACzCwL,EAAGvE,kBAAkB,CAACv9C,GAAG,CAAC,SAACgiD,CAAI,SAAKA,EAAKD,aAAa,KAInDD,CACT,EACF,CACF,GApBQG,GAGJ,GAHF3nD,IAAI,CACJ8J,GAEE,GAFFA,SAAS,CACT+xB,GACE,GADFA,OAAO,CAmB6B,gBAAAhyB,QAAA,EAAS,OAAxCoL,GAA+B,MAAlBC,GAAkB,MACQ,gBAAArL,QAAA,EAAkB,OAAzD+9C,GAAuC,MAAtBC,GAAsB,MAExCnM,GAAU,KAAAtmC,OAAA,EAAQ,CACtBumC,KAAM,QACR,GAEMmM,GAA0B,YAC9B,IAAMzH,EAAYtsC,AADe,EAAAA,GAAA,CACX8N,MAAM,CAE5B,MACE,WAACs6B,EAAA,WACC,UAAC,EAAA9xC,IAAI,EACH6e,MAAM,gBACN3e,GAAG,sDACHrN,OAAQ,CAAE5G,aAAAA,CAAa,EACvBykB,MAAO,CAAEic,aAAc,EAAG,EAC1Bj1B,OAAQ,CACNO,YAAa+9C,EAAUtrD,EAAE,AAC3B,WAEA,UAAC,EAAAmwB,UAAU,OAEb,UAAC,EAAA7a,IAAI,EACHE,GAAG,0EACHrN,OAAQ,CAAE2nC,UAAWwb,EAAUtrD,EAAE,CAAEuB,aAAAA,CAAa,EAChDykB,MAAO,CAAEic,aAAc,EAAG,WAE1B,UAAC,EAAAylB,QAAQ,OAEX,UAAC,QAAY,EACXpwC,YAAY,QACZnD,QAAQ,OACRb,QAAS,kBAAM0/C,GAAgB1H,MAAAA,EAAA,OAAAA,EAAWtrD,EAAE,YAE5C,UAAC,EAAA8jB,UAAU,SAInB,EAEMkvC,GAAkB,SAAChzD,CAAE,EACzB,EAAA+jB,YAAA,QAAoB,CAAC,CACnBC,UAAW,iBAAM,+BAAGxiB,EAAE,+BACtB0iB,KAAM,+EAEF,gCAAM,EAAA3U,UAAA,sCAAgD,CAAC,CACrDhO,aAAc,CAACA,EACfgM,YAAa,CAACvN,CAChB,kBAHA,SAKA,EAAAg0C,KAAA,QAAa,CAACxyC,EAAE,sBAEhB,EAAAuiB,YAAA,MAAkB,GAClB+iB,kCAEA,EAAAkN,KAAA,MAAW,CAACxyC,EAAE,mBAAoB,CAAEyxD,OAAQzxD,EAAE,aAAc,6BAEhE,EACF,EACF,EA+CMgqD,GAAY,WAChBrrC,GAAe,CAACD,GAClB,EAEMuB,GAAa,kBAAMtB,GAAe,KAExC,IAAMyL,MAAgB,iBAAOkB,CAAM,MAEvB7hB,EAWAjG,EAEAsR,wDAbS,gCAAM,cACrB,KAAA8zB,sBAAA,EAAuB7oC,GACvB,CACE2J,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBylC,aAAc,OACdjoD,KAAM,CAAEkoD,WAAYrmC,MAAAA,EAAA,OAAAA,CAAQ,CAAC,aAAa,CAAC,EAAE,AAAC,CAChD,EACA,CAAE,eAAgB,qBAAsB,iBAPlC7hB,CAAAA,EAAS,SAATA,IAAI,AAAD,IAWHjG,EAAMmK,OAAOukC,GAAG,CAACC,eAAe,CAAC,IAAIC,KAAK,CAAC3oC,KAIjDqL,AAFMA,CAAAA,EAAOkhB,SAASqc,aAAa,CAAC,MAE/BxkC,IAAI,CAAGrK,EACZsR,EAAKw9B,YAAY,CAAC,WAAY,iBAC9Btc,SAASryB,IAAI,CAAC4uC,WAAW,CAACz9B,GAC1BA,EAAKya,KAAK,wBAGZ+V,uBAGFrlB,WACF,YA3B6BqL,CAAM,mCAmE7BsmC,GAA0B,WAAa,CAG3C,iBAAM,CACJ,CACE/xB,SAAU,KACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAwB,OAAtBnjC,EAAE,qBACb6/B,SAAU,MACZ,EACA,CACEsD,OAAS,GAAoB,OAAlBnjC,EAAE,iBACb6/B,SAAU,eACZ,EACA,CACEsD,OAAS,GAAuB,OAArBnjC,EAAE,oBACb6/B,SAAU,eACZ,EACA,CACEsD,OAAS,GAAyB,OAAvBnjC,EAAE,sBACb6/B,SAAU,uBACZ,EACA,CACEsD,OAAQnjC,EAAE,SACV6/B,SAAU,QACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,QACP,AAAIA,GAASA,EAAMlG,IAAI,CACd,+BAAGkG,EAAMlG,IAAI,GAGf,+BAAE,KACX,CACF,EACA,CACEykC,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,MACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAAC+zC,GAAA,CAAwB/zC,IAAKA,IACnD,EACD,EACD,CAACqlB,EAAe,EAGZgvB,GAAqB,WACzB3jD,EAAS,CACP8F,GAAI,8DACJrN,OAAQ,CACN5G,aAAcA,CAChB,CACF,EACF,EAEA,IAAM+xD,MAAmC,uBAI/BxuD,EAKEE,EAEAsR,EAAA,wDAPS,8BAFjB+7C,EAAU,IAEO,GAAM,EAAA9iD,UAAA,sCAAgD,CAAC,CACtEhO,aAAc,CAACA,CACjB,iBAFMuD,CAAAA,EAAW,WAKTE,EAAMmK,OAAOukC,GAAG,CAACC,eAAe,CAAC,IAAIC,KAAK,CAAC9uC,KAIjDwR,AAFMA,CAAAA,EAAOkhB,SAASqc,aAAa,CAAC,MAE/BxkC,IAAI,CAAGrK,EACZsR,EAAKw9B,YAAY,CAAC,WAAY,iBAC9Btc,SAASryB,IAAI,CAAC4uC,WAAW,CAACz9B,GAC1BA,EAAKya,KAAK,GACV,EAAAijB,KAAA,MAAW,CAACxyC,EAAE,qBAEd,EAAAwyC,KAAA,QAAa,CAACxyC,EAAE,kEAGlB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,uCAEd6wD,EAAU,IACVvrB,4BAEJ,+CAEMysB,GAAoB,SAACntD,CAAK,EAC9BksD,EAAkBlsD,GAEdA,GACFosD,GAAgB,EAAE,CAEtB,EAQA,MACE,+BACGz9C,IAAai6B,EACZ,UAACrkB,EAAA,UACC,UAAC,EAAAC,MAAM,OAGT,iCACE,UAAC,EAAA4xB,YAAY,KACb,UAhOwB,WAC9B,MACE,WAACoN,EAAA,WACC,UAAC,EAAAp1C,MAAM,EAAC8C,YAAY,cAAchE,QAASk4C,YACzC,WAAC3B,EAAA,WACC,UAAC,EAAAwC,QAAQ,EAAC5xC,KAAK,SACf,UAACqvC,EAAA,UACEtoD,EAAE,oBAIT,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,MAAMhE,QAAS+/C,YAChC7xD,EAAE,eAEJ,AAAAgC,CAAAA,MAAAA,EAAA,OAAAA,EAAY+I,cAAc,AAAD,GACxB,WAAC,EAAAiI,MAAM,EAAC8C,YAAY,MAAMhE,QAAS,kBAAMw/C,GAAmB,eAAO,KAC9DtxD,EAAE,mBAGR4wD,GACC,UAAC,EAAA59C,MAAM,EACL8C,YAAa+sB,EAAiB,YAAc,MAC5C/wB,QAAS,kBAAMigD,GAAkB,CAAClvB,aAEjCA,EAAkB,KAAwB,OAApB7iC,EAAE,mBAAsBA,EAAE,YAGpD,AAAA+wD,CAAAA,MAAAA,GAAA,OAAAA,GAAc3rD,MAAM,AAAD,EAAI,GACtB,UAAC,EAAA4N,MAAM,EACL8C,YAAY,MACZhE,QAAS,kBACP4+C,EACEK,GACAzrB,GACAwrB,aAIH9wD,EAAE,YAKb,EAqLS,IAED,WAAC,EAAAkX,IAAI,YACH,UAAC,EAAA8F,KAAK,EACJuiB,QAASqyB,GACTnoD,KAAM2nD,GACNvuB,eAAgBA,EAChBD,aAtBa,SACvBrlB,CAAI,EAEJyzC,GAAgBzzC,EAClB,IAoBU,UAzJa,WACrB,MACE,WAAC,EAAA2C,KAAK,EAAC3B,OAAQG,GAAaD,QAASwB,GAAYhH,KAAK,KAAKkH,WAAU,aACnE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,EAAE,cAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK06B,IAAA,UAChB,UAAC,iBACC,UAAC,EAAA5qC,WAAW,WACV,UAAC,EAAAmL,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,cACxBl7C,KAAK,aACLknB,OAAQ,CAAE,WAAY,CAAC,OAAO,AAAC,aAMzC,UAAC,EAAAlF,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,GAAQvmC,YAAY,CAACwL,aAE7BpqB,EAAE,YAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,YAC3CjgB,EAAE,sBAOjB,EAqHW,IACD,UAAC,EAAAgyD,YAAY,EACXC,aAAcjyD,EAAE,8BAChBue,OAAQ8yC,GACRpxC,WAAY,kBAAMqxC,GAAmB,KACrC59B,QAASo+B,YAOvB,wMCnaM1L,EAAuC,CAC3CC,WAAY,gBACd,EAEMC,EAAsB,CAC1BD,WAAY,iBACZxzB,KAAM,OACR,EAEM0zB,EAAgC,CACpCvwC,MAAO,MACT,EAEa83B,EAAsB,WACjC,IAAQ9tC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDktC,EAAQ,EAAAW,2BAAA,UAAqC,GAA7CX,GAAG,CACLsZ,EAAe,EAAAxZ,sBAAA,QAA8B,CAACE,GAC9Ch/B,EAAW,KAAAC,WAAA,IAQjB,MACE,WAAC,EAAAs4C,IAAI,EACH9zC,QAAQ,WACR+zC,MAAM,SACN5tC,EAAE,OACFzJ,MAAOm3C,EACP/1C,SAZoB,SAACpB,CAAK,EAC5BnB,EAAS,CACP1C,OAAQ,CAAE0hC,IAAK,EAAAF,sBAAsB,CAAC39B,EAAM,EAAI,QAAS,CAC3D,EACF,YAUI,WAAC,EAAAs3C,OAAO,YACN,UAAC,EAAAC,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJzhC,oBAAoB,KACpBC,uBAAuB,cAEtB9kB,EAAE,2BAEL,UAAC,EAAA4mD,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJQ,qBAAqB,KACrBC,wBAAwB,cAEvB/mD,EAAE,6BAGP,WAAC,EAAAgnD,SAAS,YACR,UAAC,EAAAC,QAAQ,oBAAKV,GAAA,UACXrZ,AAAQ,WAARA,GAAoB,UAAC,EAAAujB,gBAAgB,QAExC,UAAC,EAAAxJ,QAAQ,oBAAKV,GAAA,UACXrZ,AAAQ,YAARA,GAAqB,UAAC,EAAAujB,gBAAgB,aAKjD,mMCrEMlxB,EAAU,CACd,CACE4D,OAAQ,WAAM,CAAC,gBACftD,SAAU,cACV7pB,MAAO,KACT,EACA,CACEmtB,OAAQ,WAAM,CAAC,cACftD,SAAU,WACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,SACftD,SAAU,OACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,UACftD,SAAU,UACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,YACftD,SAAU,UACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,OACftD,SAAU,KACZ,EAMA,CACEsD,OAAQ,WAAM,CAAC,YACftD,SAAU,UACZ,EACD,CAEY0wB,EAAc,WACzB,IAWa,EAXuB,IAAAviB,0BAAA,UAAoC,GAAhEM,EAA4B,EAA5BA,SAAS,CAAEvuC,EAAiB,EAAjBA,YAAY,CAEjB,EAAgB,KAAAytD,gBAAA,EAC5B,EAAA1e,YAAA,mBAA+B,CAAC,CAC9B/uC,aAAc,CAACA,EACfgM,YAAa,CAACuiC,CAChB,IAJM7kC,IAAI,CAAE2O,EAAS,AAAT,SAAS,IAAE,CAAX,EAOmB,OAAAo1C,gBAAA,EAC/B,EAAA1e,YAAA,qBAAiC,CAAC,CAChChiC,QAASsL,MAAAA,EAAA,OAAW,OAAX,GAAAA,CAAQ,CAAC,EAAE,AAAD,GAAV,oBAAa5Z,EAAE,AAC1B,MAH+B,EAAzBiL,IAAI,CAAO8J,EAAc,EAAdA,SAAS,CAM5B,MACE,UAAC,EAAAtE,IAAI,EAACm9C,QAAQ,kBACX74C,EAAY,UAAC,EAAA6V,MAAM,KAAM,UAAC,EAAApM,KAAK,EAACuiB,QAASA,EAAS91B,KAR/C,WAAO,EAAE,MAWnB,gQCxDMm/C,EAAgB,CACpBpqD,GAAI,EACJshB,KAAMra,KAAAA,EACN6F,aAAc7F,KAAAA,EACdysD,gBAAiBzsD,KAAAA,EACjB0sD,mBAAoB1sD,KAAAA,EACpB2sD,YAAa3sD,KAAAA,CACf,EAEa4qD,EAAY,WACvB,IAAiD,OAAA/iC,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAAnEvO,EAAyC,EAAzCA,YAAY,CAAagM,EAAgB,EAA3BuiC,SAAS,CAEU,OAAAkf,gBAAA,EACvC,EAAA1e,YAAA,mBAA+B,CAAC,CAC9B/uC,aAAc,CAACA,EACfgM,YAAa,CAACA,CAChB,IAJY,EAA2B,EAAjCtC,IAAI,CAAE2O,EAAS,AAAT,SAAS,IAAE,CAAX,EAAa7E,EAAc,EAAdA,SAAS,CAO9B8+C,EAAe,KAAAtjC,OAAA,EAAQ,WAC3B,OAAO3W,EAAOk6C,IAAI,CAAC,SAACC,CAAC,CAAEC,CAAC,SAAKD,EAAE/zD,EAAE,CAAGg0D,EAAEh0D,EAAE,EAC1C,EAAG,CAAC4Z,EAAO,EAELlK,EAAW,KAAAC,WAAA,IAEXg3C,EAAU,KAAAtmC,OAAA,EAAyB,CACvCumC,KAAM,WACNqN,eAAgB,UAClB,GAEmC,OAAAjP,aAAA,EAAc,CAC/C9kD,KAAM,SACNub,QAASkrC,EAAQlrC,OAAO,AAC1B,GAHQypC,EAA2B,EAA3BA,MAAM,CAAE78C,EAAmB,EAAnBA,MAAM,CAAE88C,EAAW,EAAXA,MAAM,OAK9B,KAAAj7B,SAAA,EAAU,WACRy8B,EAAQvB,KAAK,CAAC,CACZxrC,OAAQi6C,CACV,GAEInrD,MAAMC,OAAO,CAACkrD,IAAiBA,AAAwB,IAAxBA,EAAajtD,MAAM,EACpDyB,EAAO+hD,EAEX,EAAG,CAACyJ,EAAa,EAaf,iCACE,WAAC,EAAA5nC,YAAY,oBAAK06B,GAAA,WAChB,UAAC,EAAAl2C,IAAI,EAAC2R,IAAI,OAAOnI,UAAU,MAAM4yC,SAAS,gBACvC3H,EAAOv0C,GAAG,CAAC,SAAC2L,CAAK,CAAEzL,CAAK,EACvB,IAAkB,EAQL,EARPtC,EAAY,AAAmB,OAAnB,GAAAslD,CAAY,CAAChjD,EAAM,AAAD,GAAlB,oBAAqBtC,SAAS,CAEhD,MACE,UAAC,EAAA2lD,aAAa,EAEZrjD,MAAOA,EACPsjD,MAAO,CAASN,CAAY,CAAChjD,EAAM,CACnCujD,SAAUjP,EACV72C,QAAO,AAAqB,OAAnB,GAAAulD,CAAY,CAAChjD,EAAM,AAAD,GAAlB,oBAAqB7Q,EAAE,CAChCuO,UAAWA,GALN+N,EAAMtc,EAAE,CAQnB,KAEF,UAAC,EAAAgR,GAAG,EAAC0S,GAAI,WACN,CAAC3O,GACA,WAAC,EAAAoN,WAAW,EAACC,IAAI,cACf,UAAC,EAAA5N,MAAM,EACL8C,YAAY,MACZnD,QAAQ,UACR7M,KAAK,QACLgM,QApCK,WACjB5D,EAAS,CACP8F,GAAI,0DACJnM,QAAS,GACTlB,OAAQ,CACN5G,aAAAA,CACF,CACF,EACF,WA8Be,KAAA65C,gBAAA,EAAiB,YAEpB,WAAC,EAAA5mC,MAAM,EACLlN,KAAK,SACL6M,QAAQ,QACRmD,YAAY,MACZhE,QAAS,WACPjL,EAAO+hD,EAAe,CACpBiK,UAAW,EACb,EACF,YACD,KACI,KAAAjZ,gBAAA,EAAiB,qBAK5B,UAAC,EAAAkZ,YAAY,EAACC,kBAAmB,SAEnC,UAAC,EAAAC,gBAAgB,OAGvB,ubC3FA,IAAMnvC,EAAqB,cAAO,EAAAtJ,WAAW,OAMhCm4C,EAAgB,SAACt/C,CAAK,EAOjC,IAAQpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEDqP,EAA+C+D,EAA/C/D,KAAK,CAAEsjD,EAAwCv/C,EAAxCu/C,KAAK,CAAEC,EAAiCx/C,EAAjCw/C,QAAQ,CAAE9lD,EAAuBsG,EAAvBtG,OAAO,CAAEC,EAAcqG,EAAdrG,SAAS,CAClB,OAAAkmD,YAAA,IAAxBC,EAAwB,EAAxBA,QAAQ,CAAEC,EAAc,EAAdA,SAAS,CACnBv9B,EAAc,KAAA1b,cAAA,IAAd0b,SAAS,CACXw9B,EAA2B,WAC3BtmD,GACF,EAAAumD,eAAA,WAA0B,CAAC,CACzBvmD,QAAAA,EACAC,UAAAA,CACF,EAEJ,EAEMumD,EAAuB,WACvBxmD,GACF,EAAAymD,eAAA,SAAwB,CAAC,CACvBzmD,QAASA,EACTslD,YAAax8B,EAAW,UAAe,OAANvmB,EAAM,gBACzC,EAEJ,EAEA,MACE,+BACE,WAAC,EAAA6H,IAAI,EACHsN,MAAO,CAAEgvC,UAAW,MAAO,EAC3B7gD,QAAQ,UACR+xC,UAAW,CACThsC,KAAM,OACN+6C,GAAI,kBACN,YAEA,WAAC,EAAA18C,UAAU,YACR/W,EAAE,SAAS,KAAGqP,EAAQ,KAEzB,WAAC,EAAAiI,QAAQ,YACP,UAAC,EAAAyB,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAW,EACVkB,MAAO/kB,EAAE,OACT6U,MAAO7U,EAAE,iBACT2P,SAAS,OACTjR,KAAO,UAAe,OAAN2Q,EAAM,SACtBuB,KAAM,IACNC,UAAW,IAEb,UAAC,EAAA8jB,eAAe,EACd9f,MAAO7U,EAAE,aACT6D,QAAS,EAAA6vD,cAAc,CACvBh1D,KAAO,UAAe,OAAN2Q,EAAM,mBAExB,UAAC,EAAAslB,eAAe,EACd9f,MAAO7U,EAAE,uBACT6D,QAAS,EAAA8vD,kBAAkB,CAC3Bj1D,KAAO,UAAe,OAAN2Q,EAAM,yBAExB,UAAC,SAAW,EACV0V,MAAO/kB,EAAE,OACT6U,MAAO7U,EAAE,qBACT2P,SAAS,OACTjR,KAAO,UAAe,OAAN2Q,EAAM,oBACtBuB,KAAM,IACNC,UAAW,IAEb,UAAC,SAAK,EACJgE,MAAO7U,EAAE,gBACT2P,SAAS,OACTjR,KAAO,UAAe,OAAN2Q,EAAM,kBAExB,UAAC,EAAAslB,eAAe,EACd9f,MAAO7U,EAAE,YACT2P,SAAS,OACT9L,QAAS,EAAA+vD,eAAe,CACxBl1D,KAAO,UAAe,OAAN2Q,EAAM,wBAK5B,UAAC,EAAA4H,UAAU,EAAC2b,eAAe,WAAWihC,SAAU,WAC9C,WAAC,EAAAlzC,WAAW,YACTgyC,GACC,UAAC,EAAA3/C,MAAM,EAACiG,KAAK,KAAKnH,QAAS,kBAAM8gD,EAASvjD,aACvCrP,EAAE,YAGN,CAAC2yD,GACA,UAAC,EAAA3/C,MAAM,EAACiG,KAAK,KAAKnH,QAAS,kBAAMwhD,cAC9BtzD,EAAE,kBAGN,CAAC2yD,GACA,UAAC,EAAA3/C,MAAM,EAACiG,KAAK,KAAKnH,QAAS,kBAAMshD,cAC9BpzD,EAAE,mBAGP,UAAC,EAAAmT,WAAW,EACV2C,YAAY,MACZhQ,KAAK,SACLmT,KAAK,KACLvI,SAAUwiD,EACV3/C,UAAW2/C,EACXphD,QAAS,kDACP,MAAO,GAAAqhD,EAAUv9B,EAAU,SAAS,CAACvmB,EAAM,CAAEA,KAC/C,YAECrP,EAAE,sBAQnB,uYCtIMuiD,EAAmB,QAAW,CAAC,CACnCuR,kBAAmB,QACV,CAAC,CACNxR,eAAgB,WAAM,CAAC,kBACvByR,mBAAoB,WAAM,CAAC,iBAC7B,GACChjD,GAAG,CAAC,EAAG,CACNxN,QAAS,WAAM,CAAC,iBAClB,GACFkjB,KAAM,YAAe,CAACilC,MAAMlc,QAAQ,GAAGkP,OAAO,EAChD,GAIasV,EAAoB,kBAC/B5iB,EAAA,EAAAA,OAAA,CAIM6iB,EAAW7iB,AAAqB,KAArBA,EAAQ8iB,QAAQ,CACzBl0D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACKkC,EAAc,EAAA8rC,0BAAA,cAAwC,GAA5DvkC,IAAI,CACJqD,EAAY,KAAAqnD,eAAA,IAAZrnD,OAAO,CACuB,eAAAwG,QAAA,EAAwB,SAAvD8gD,EAA+B,KAAlBC,EAAkB,KAEhCC,EAAe,KAAAvlC,OAAA,EAAQ,eACpB,EAAP,MAAO,CAA4B,OAA5B,GAAA7sB,EAAUwqD,kBAAkB,AAAD,GAA3B,oBAA8Bv9C,GAAG,CAAC,SAACgiD,CAAI,SAAKA,EAAKjmD,MAAM,KAAK,EAAE,AACvE,EAAG,CAAChJ,EAAU,EAERohD,EAAe,KAAAzkC,OAAA,EAAoB,CACvCtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAEA,IAAM3jC,KAAe,iBAAO0M,CAAM,MAMxBipC,EAAA,wDAJN,yBAAI,CAACznD,GAAW,CAACskC,EAAQrkC,SAAS,CAChC,UAGe,SAAM,EAAAgB,UAAA,+BAAyC,CAAC,CAC/DjB,QAASA,EACTC,UAAWqkC,EAAQrkC,SAAS,CAC5BlC,YAAa,CACX2pD,QAASlpC,EAAOwoC,iBAAiB,AACnC,CACF,cANMS,EAAW,UAQbjpC,CAAAA,EAAO7E,IAAI,YAAYilC,IAAG,EAA1B,YACF,SAAM,EAAA39C,UAAA,8BAAwC,CAAC,CAC7Cf,UAAW,CAACunD,EACZxnD,UAAW,CAACqkC,EAAQrkC,SAAS,CAC7BD,QAAS,CAACA,EACV3E,SAAU,CACRse,KAAM6E,EAAO7E,IAAI,AACnB,CACF,WAPA,0BAUF,SAAM,EAAA8S,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,EAAAonB,YAAA,iBAA6B,CAAC,CACtChiC,QAASA,CACX,GAAG4a,QAAQ,AACb,kBAJA,SAMA2sC,EAAeE,GAEfjR,EAAaM,KAAK,CAAC,CACjBkQ,kBAAmB,EACrB,gCAEA,EAAAthB,KAAA,MAAW,CAACxyC,EAAE,4CAElB,YAvC4BsrB,CAAM,0CAyClC,AAAI,AAAC8lB,GAAYA,CAAAA,MAAAA,EAAA,OAAAA,EAASqjB,qBAAqB,AAAD,EAK5C,WAAC,EAAAhqC,YAAY,oBAAK64B,GAAA,WAChB,UAAC,EAAAoR,eAAe,EACdC,SAAUvjB,EAAQqjB,qBAAqB,CACvCG,kBAAmB,SAACC,CAAW,QAC7BA,EAAAA,EAAYC,SAAS,EACjBR,EAAa/+B,QAAQ,CAACs/B,EAAYC,SAAS,KAIlDb,GACC,iCACE,UAAC,EAAA9tB,QAAQ,EACPtxB,MAAO7U,EAAE,4BACTtB,KAAK,sBAEP,WAAC,EAAAuQ,IAAI,EAACwJ,UAAU,MAAMmI,IAAK,EAAGyL,GAAI,EAAGuG,eAAe,qBAClD,UAAC,EAAAmiC,kBAAkB,EAEjBC,aAAc,SAACvuC,CAAI,EACjB68B,EAAav9B,QAAQ,CAAC,OAAQU,EAChC,GAHK2tC,GAKP,UAAC,EAAAjhD,WAAW,EACV8F,KAAK,KACLtG,QAAQ,QACRmD,YAAY,MACZhE,QAASwxC,EAAa1kC,YAAY,CAACA,YAElC5e,EAAE,4CAhCN,IAuCX,qOCpHai1D,EAAuB,SAAC7hD,CAAK,EACxC,IAAQ8hD,EAA8B9hD,EAA9B8hD,eAAe,CAAEjB,EAAa7gD,EAAb6gD,QAAQ,CACT,eAAA3gD,QAAA,EAAS,OAA1ByO,EAAiB,KAAXC,EAAW,KAExB,MACE,WAAC,EAAA/S,IAAI,EAACC,cAAc,SAAS0C,KAAK,OAAOgP,IAAK,YAC3CqzC,GACC,UAAC,EAAAvuC,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,gBACxB3pC,aAAcilD,GAAmB,GACjCvvC,SAAU,GACVjnB,KAAK,SAIRw2D,GACC,iCACG9hD,EAAM8hD,eAAe,EACpB,UAAC,EAAAC,YAAY,EAEX3wC,MAAO,CAAExO,MAAO,IAAKtD,OAAQ,MAAO,EACpCuB,IAAKihD,EACLpjD,QAAS,kBAAMkQ,EAAQ,MAHlBkzC,GAOT,UAAC,SAAQ,EACPnzC,KAAMA,EACNY,MAAO,kBAAMX,EAAQ,KACrB3S,MAAO,EACPuT,OAAQ,CACN,CACE3O,IAAKihD,CACP,EACD,CACDryC,UAAW,CAAEC,KAAM,CAAE,EACrBC,WAAY,CAAEC,gBAAiB,GAAMC,qBAAsB,EAAK,EAChEC,OAAQ,CAAEC,KAAM,CAAE,yBAA0B,mBAAoB,CAAE,EAClEC,QAAS,CAAC,SAAQ,CAAC,CACnBC,SAAU,CACRA,SAAU,gBAAGC,EAAA,EAAAA,KAAA,CACX,EAAAnB,SAAA,cAAuB,CAACmB,EAAMrP,GAAG,CACnC,CACF,SAMZ,mZCnCMsuC,EAAmB,QAAW,CAAC,CACnC6S,mBAAoB,QACX,CAAC,CACN9S,eAAgB,WAAM,CAAC,kBACvByR,mBAAoB,WAAM,CAAC,iBAC7B,GACCrV,OAAO,GACVj4B,KAAM,OAAU,CAAC,YAAe,CAACilC,OAAOlc,QAAQ,GAAGkP,OAAO,EAC5D,GAIasU,EAAmB,WAC9B,QA4J+B,EA5JvBhzD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACwC,OAAAstB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAAnEvO,EAAyC,EAAzCA,YAAY,CAAagM,EAAgB,EAA3BuiC,SAAS,CACd+mB,EAAmB,KAAAhnD,SAAA,EAAU,CAAEC,OAAQ,EAAM,GAAtDxB,OAAO,CACgB,OAAAqnD,eAAA,IAAvBrnD,EAAuB,EAAvBA,OAAO,CAAEC,EAAc,EAAdA,SAAS,CACO,eAAAuG,QAAA,EAAS,OAAnCkf,EAA0B,KAAhB8iC,EAAgB,KAC3BhS,EAAe,KAAAzkC,OAAA,EAAoB,CACvCtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAEE,eAAAjvC,QAAA,EAAkB,OADbiiD,EACL,KAD4BC,EAC5B,KAEuC,OAAA/tC,QAAA,EAAS,mBAC7C,EAAAqnB,YAAA,iBAA6B,CAAC,CAC/BhiC,QAASA,CACX,KACAktB,QAASxM,CAAAA,CAAQ1gB,GAAY0gB,CAAAA,CAAQzgB,KAJzBqkC,EAA2B,EAAjC3nC,IAAI,CAAWgsD,EAAkB,EAAlBA,aAAa,CAO9BC,EAAoBloC,CAAAA,CAAQ4jB,EAElC,KAAA1oB,SAAA,EACE,WACE4sC,EAAa9nC,CAAAA,CAAQ1gB,EACvB,EACA,CAACA,EAAQ,EAGX,KAAA4b,SAAA,EACE,WACiC,UAA3B,MAAO,CAAC2sC,GACV,EAAAhC,eAAA,WAA0B,CAACgC,EAE/B,EACA,CAACA,EAAe,EAGlB,KAAA3sC,SAAA,EACE,WACM0oB,IACFkS,EAAaM,KAAK,CAAC,CACjBwR,mBAAoBhkB,EAAQgkB,kBAAkB,EAAI,EACpD,GAEAI,EAAuB,IAE3B,EACA,CAACpkB,EAAQ,EAGX,IAAMukB,EAAc,WAClB,EAAAtC,eAAA,MAAqB,GACrB/P,EAAaM,KAAK,CAAC,CACjBwR,mBAAoB,EACtB,EACF,EAEA,IAAMQ,KAAgB,+EACpB,GAAI,CAACxkB,CAAAA,MAAAA,EAAA,OAAAA,EAASrkC,SAAS,AAAD,GAAK,CAACD,EAC1B,2BAIA,gCAAM,EAAAiB,UAAA,oCAA8C,CAAC,CACnDhB,UAAW,CAACqkC,EAAQrkC,SAAS,CAC7BD,QAAS,CAACA,EACVjC,YAAa,CACXgrD,YAAa,EACf,CACF,WAEA,OARA,SAQA,GAAM,EAAAt8B,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,EAAAonB,YAAA,iBAA6B,CAAC,CACtChiC,QAAAA,CACF,GAAG4a,QAAQ,AACb,kBAJA,SAMA,EAAA8qB,KAAA,QAAa,CAACxyC,EAAE,uCAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAElB,+CAEA,IAAM4e,KAAe,iBAAO0M,CAAM,MAexB,EAKS,EAiBT,EAZEwqC,EAiBO,0DAzCjB,GAAI,CAAChpD,EACH,uDAIIskC,CAAAA,MAAAA,EAAA,OAAAA,EAASrkC,SAAS,AAAD,EAAC,YACpB,SAAM,EAAAgB,UAAA,uBAAiC,CAAC,CACtChB,UAAWqkC,EAAQrkC,SAAS,CAC5BD,QAAAA,EACAjC,YAAa,CACXuqD,mBAAoB9pC,EAAO8pC,kBAAkB,AAC/C,CACF,cANA,UAQI,EAAW,OAAX,GAAA9pC,EAAO7E,IAAI,AAAD,GAAV,mBAAa,CAAC,EAAE,AAAD,YAAailC,IAAG,EAA/B,YACF,SAAM,EAAA39C,UAAA,4BAAsC,CAAC,CAC3CjB,QAAAA,EACAC,UAAWqkC,EAAQrkC,SAAS,CAC5B5E,SAAU,CACRrJ,MAAO,AAAW,OAAX,GAAAwsB,EAAO7E,IAAI,AAAD,GAAV,mBAAa,CAAC,EAAE,AACzB,CACF,WANA,6CASoB,SAAM,EAAA1Y,UAAA,wBAAkC,CAAC,CAC7DjB,QAAAA,EACAjC,YAAa,CACXuqD,mBAAoB9pC,EAAO8pC,kBAAkB,AAC/C,CACF,cALMU,EAAgB,SAOtB,EAAAzC,eAAA,WAA0B,CAAC,CACzBtmD,UAAW+oD,EACXhpD,QAASA,CACX,IAEI,EAAW,OAAX,GAAAwe,EAAO7E,IAAI,AAAD,GAAV,mBAAa,CAAC,EAAE,AAAD,YAAailC,IAAG,EAA/B,YACF,SAAM,EAAA39C,UAAA,4BAAsC,CAAC,CAC3CjB,QAAAA,EACAC,UAAW+oD,EACX3tD,SAAU,CACRrJ,MAAO,AAAW,OAAX,GAAAwsB,EAAO7E,IAAI,AAAD,GAAV,mBAAa,CAAC,EAAE,AACzB,CACF,WANA,0BAUJ,SAAM,EAAA8S,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,EAAAonB,YAAA,iBAA6B,CAAC,CACtChiC,QAAAA,CACF,GAAG4a,QAAQ,AACb,cAJA,SAMK3a,EAAD,aACF,SAAM,EAAAwsB,WAAA,eAA0B,CAC9B,EAAAuV,YAAA,mBAA+B,CAAC,CAC9B/uC,aAAc,CAACA,EACfgM,YAAa,CAACA,CAChB,aAJF,mCAQF,EAAAymC,KAAA,QAAa,CAACxyC,EAAE,yCAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,8CAElB,YAnE4BsrB,CAAM,mCAqElC,GAAI,CAACkH,EACH,OAAO,KAGT,IAAMyhC,EAAW,AAAA7iB,CAAAA,MAAAA,EAAA,OAAAA,EAAS8iB,QAAQ,AAAD,IAAM,GACjC6B,EAAiBvoC,CAAAA,CAAQ4jB,CAAAA,MAAAA,EAAA,OAA8B,OAA9B,GAAAA,EAASqjB,qBAAqB,AAAD,GAA7B,oBAAgCrvD,MAAM,AAAD,EAGpE,MACE,WAAC,EAAAg/C,MAAM,EAAC7lC,OAAQiU,EAAUlO,UAAU,QAAQrL,KAAK,KAAKwF,QAASk3C,YAC7D,UAAC,EAAAtR,aAAa,KACd,WAAC,EAAAC,aAAa,YACZ,UAAC,EAAAE,iBAAiB,KAClB,UAAC,EAAAD,YAAY,WAAEvkD,EAAE,mBAEjB,UAAC,EAAAykD,UAAU,WACT,WAAC,EAAAx1C,IAAI,EAACwJ,UAAU,SAASmI,IAAK,YAC5B,WAAC,EAAA6J,YAAY,oBAAK64B,GAAA,WAChB,UAAC,EAAA2R,oBAAoB,EAEnBhB,SAAUA,EACViB,gBAAiB9jB,MAAAA,EAAA,OAAAA,EAAS8jB,eAAe,EAFpCO,GAIP,UAAC,EAAAtvB,QAAQ,EACPtxB,MAAO7U,EAAE,uBACTtB,KAAK,qBACLua,KAAK,KACLtF,WACE,AACA,CAACsgD,GACD,CAACsB,QAKL,WAAC,EAAAtmD,IAAI,EAACwJ,UAAU,MAAMmI,IAAK,EAAGgS,eAAe,qBAC3C,UAAC,EAAA5f,MAAM,EAACL,QAAQ,UAAUsG,KAAK,KAAKnH,QAAS6jD,WAC1C31D,EAAE,YAEJ01D,GACC,UAAC,EAAAviD,WAAW,EACV8F,KAAK,KACLnD,YAAY,aACZhE,QAAS,WACHyjD,GACFjS,EAAav9B,QAAQ,CACnB,qBACAqrB,MAAAA,EAAA,OAAAA,EAASgkB,kBAAkB,EAI/BI,EAAuB,CAACD,EAC1B,WAECA,EACGv1D,EAAE,2BACFA,EAAE,sBAGTi0D,GACC,UAAC,EAAA9gD,WAAW,EACV8F,KAAK,KACLnD,YAAY,aACZhE,QAASwxC,EAAa1kC,YAAY,CAACA,YAElC5e,EAAE,UAGN,CAACi0D,GACA,UAAC,EAAA9gD,WAAW,EACVrB,QAAS8jD,EACT38C,KAAK,KACLnD,YAAY,sBAEX9V,EAAE,uBAKV+1D,GAAkB3kB,CAAAA,MAAAA,EAAA,OAAAA,EAASqjB,qBAAqB,AAAD,GAC9C,UAAC,EAAAT,iBAAiB,EAAC5iB,QAASA,cAO1C,0KClRM4kB,EAAgB,KAAA9iC,WAAA,EAAmC,CACvDpmB,QAAS,KACTC,UAAW,IACb,GAEasmD,EAAkB,KAAA//B,SAAA,EAAU0iC,EAAe,CACtDC,WAAY,SAAChnC,CAAK,CAAEwF,CAAO,EACzB,MAAO,WACFxF,EACAwF,EAEP,EACAmvB,MAAO,WACL,MAAO,CACL92C,QAAS,KACTC,UAAW,IACb,CACF,CACF,GAEaonD,EAAkB,iBAAM,KAAA9hC,OAAA,EAAQ2jC,gOCxBhCpC,EAAqC,CAChD,CAAEhvD,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,EAAGiQ,MAAO,WAAM,CAAC,YAAa,EACvC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EACzC,CAAEjQ,MAAO,GAAIiQ,MAAO,WAAM,CAAC,aAAc,EAC1C,CAEYqhD,EAAyB,SACpCxb,CAAI,MAEG,EAAP,OAAO,UAAAkZ,EAAgBv0C,IAAI,CAAC,SAACxQ,CAAC,SAAKA,EAAEjK,KAAK,GAAK81C,MAAxC,oBAA+C7lC,KAAK,AAC7D,wSCjBao+C,EAAe,WAC1B,MAAQjzD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHg0C,EAAS,KAAAxa,cAAA,IAEgB,eAAAi0B,UAAA,EAAW,OAAnCyF,EAAwB,KAAZhE,EAAY,KAAZA,MAAM,CACnB5kC,EAAW,KAAApQ,cAAA,IACgC,OAAAoT,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAAxDvC,EAA8B,EAAzCuiC,SAAS,CAAevuC,EAAiB,EAAjBA,YAAY,CAEpCm5C,EAAwB,KAAAd,oBAAA,EAAqB9tB,GAA7C4uB,mBAAmB,CAuE3B,MAAO,CAAEga,SAAAA,EAAUC,SAAS,IArEV,iBAChBjwD,CAAK,CACLmM,CAAK,MAoCK8mD,wDAlCV,GAAI,CAAC,KAAA9/B,KAAA,EAAMnzB,EAAM4c,IAAI,GAAK5c,EAAM4c,IAAI,CAAG,KAAS,EAO9C,OANAwK,EAASyuB,QAAQ,CAAE,UAAe,OAAN1pC,EAAM,SAAQ,CACxC9L,QAASvD,EAAE,uBAAwB,CACjCm3B,KAAMn3B,EAAE,MACV,EACF,GAEA,IAGF,GAAI,CAAC,KAAAq2B,KAAA,EAAMnzB,EAAMgvD,eAAe,GAAKhvD,EAAMgvD,eAAe,CAAG,KAAS,EAOpE,OANA5nC,EAASyuB,QAAQ,CAAE,UAAe,OAAN1pC,EAAM,oBAAmB,CACnD9L,QAASvD,EAAE,uBAAwB,CACjCm3B,KAAMn3B,EAAE,MACV,EACF,GAEA,+CAIAkvD,KAEIhsD,EAAM1E,EAAE,CAAR,YACF,SAAM,EAAAuP,UAAA,2BAAqC,CAAC,CAC1CvP,GAAI0E,EAAM1E,EAAE,CACZuB,aAAcA,EACd8K,YAAa,mBACR,KAAAurD,mBAAA,EAAoBlzD,IAAA,CACvB6I,YAAaA,GAEjB,kBAPA,SAQA,EAAAymC,KAAA,QAAa,CAACxyC,EAAE,6BAShB,OAPMm2D,EAAY,KAAAC,mBAAA,EAAoBlzD,GAElC,CAAC,KAAAmzB,KAAA,EAAMnzB,EAAM1E,EAAE,GAEjB,OAAO23D,EAAU33D,EAAE,CAGrB,GAAM,EAAAuP,UAAA,4BAAsC,CAAC,CAC3ChO,aAAcA,EACd8K,YAAa,mBAAKsrD,GAAA,CAAWpqD,YAAAA,GAC/B,WAHA,SAKA,EAAAymC,KAAA,QAAa,CAACxyC,EAAE,mCAGlB,SAAMg0C,EAAOqiB,cAAc,CAAC,CAC1B3uC,SAAU,EAAAonB,YAAA,mBAA+B,CAAC,CACxC/uC,aAAc,CAACA,EACfgM,YAAa,CAACA,CAChB,GAAG2b,QAAQ,AACb,kBALA,6BAOAwxB,EADO,SACgB,CACrBC,YAAc,UAAe,OAAN9pC,EAAM,KAC7BkpC,aAAc,CAAE,UAAe,OAANlpC,EAAM,UACjC,uBAEA6/C,2BAEJ,YAlEEhsD,CAAK,CACLmM,CAAK,kCAmEsB,CAC/B,uMCnFMkwB,EAAU,CACd,CACE4D,OAAQ,WAAM,CAAC,WACftD,SAAU,WACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,QACftD,SAAU,MACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,gBACftD,SAAU,aACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,cACftD,SAAU,oBACZ,EACD,CAEY2wB,EAAkB,WAC7B,IAWa,EAXuB,IAAAxiB,0BAAA,UAAoC,GAAhEM,EAA4B,EAA5BA,SAAS,CAAEvuC,EAAiB,EAAjBA,YAAY,CAEjB,EAAgB,KAAAytD,gBAAA,EAC5B,EAAA1e,YAAA,mBAA+B,CAAC,CAC9B/uC,aAAc,CAACA,EACfgM,YAAa,CAACuiC,CAChB,IAJM7kC,IAAI,CAAE2O,EAAS,AAAT,SAAS,IAAE,CAAX,EAOc,OAAAo1C,gBAAA,EAC1B,EAAA1e,YAAA,yBAAqC,CAAC,CACpChiC,QAASsL,MAAAA,EAAA,OAAW,OAAX,GAAAA,CAAQ,CAAC,EAAE,AAAD,GAAV,oBAAa5Z,EAAE,AAC1B,IAHMiL,EAAoB,EAApBA,IAAI,CAAE8J,EAAc,EAAdA,SAAS,CAMvB,MACE,UAAC,EAAAtE,IAAI,EAACm9C,QAAQ,kBACX74C,EAAY,UAAC,EAAA6V,MAAM,KAAM,UAAC,EAAApM,KAAK,EAACuiB,QAASA,EAAS91B,KAAMA,KAG/D,8SCnCa6iD,EAAqB,WAChC,IAAQtsD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAW,KAAAzL,OAAA,EAA4B,CAC3CtW,SAAU,KAAAg7C,WAAA,EAAY,EAAAiJ,kBAAkB,EACxCpH,KAAM,UACR,GAEoC,eAAA9xC,QAAA,EAElC,SAFKgjD,EAA6B,KAAjBC,EAAiB,KAIF,OAAAC,iBAAA,IAA1BC,EAA0B,EAA1BA,QAAQ,CAAEC,EAAgB,EAAhBA,WAAW,CAqB7B,MAnBA,KAAAhuC,SAAA,EAAU,WACR,EAAAnG,YAAA,cAA0B,CAAC+H,EAC7B,EAAG,CAACA,EAAS,EAEb,KAAA5B,SAAA,EAAU,WACJ4tC,GAAcA,EAAWzqD,KAAK,EAAIyqD,EAAW53D,IAAI,CACnD4rB,EAASs5B,KAAK,CAAC,CACbplD,GAAI83D,EAAWtqD,UAAU,CACzBH,MAAOyqD,EAAWzqD,KAAK,CACvBnN,KAAM43D,EAAW53D,IAAI,CACrB+tD,YAAa6J,EAAW7J,WAAW,AACrC,GAEAniC,EAASs5B,KAAK,CAAC,CACbllD,KAAM,EACR,EAEJ,EAAG,CAAC43D,EAAW,EAGb,UAAC,EAAA7rC,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAAvR,KAAK,EAACvE,QAAS,YACd,WAAC,EAAAvF,IAAI,EAACm9C,QAAQ,MAAMxrC,IAAK,YACvB,UAAC,SAAK,EACJliB,KAAK,QACL4Q,YAAatP,EAAE,kBACf2P,SAAS,UAEX,UAAC,EAAAqD,MAAM,EACL6f,KAAK,cACLtf,UAAWmjD,EACX/iD,WAAY+iD,EACZ5kD,QAAS,uBACD6kD,wDAAgB,SAAMF,EAASnsC,iBAEjC,CAFEqsC,CAAAA,EAAgB,WAGpB,EAAAnkB,KAAA,QAAa,CAACxyC,EAAE,uBAGlBu2D,EAAcI,SAChB,YAEC32D,EAAE,sBAGP,UAAC,SAAK,EACJtB,KAAK,OACLgS,SAAU8c,CAAAA,CAAQ8oC,EAClBzhD,MAAO7U,EAAE,iBACT2P,SAAS,UAEX,UAAC,SAAK,EACJjR,KAAK,cACLgS,SAAU8c,CAAAA,CAAQ8oC,EAClBzhD,MAAO7U,EAAE,SACT8F,KAAK,MACL6J,SAAS,eAKnB,mOC7EM4vB,EAAU,CACd,CACE4D,OAAQ,WAAM,CAAC,iBACftD,SAAU,MACZ,EACA,CACEsD,OAAQ,QACRtD,SAAU,OACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,SACftD,SAAU,aACZ,EACA,CACEsD,OAAQ,WAAM,CAAC,iBACftD,SAAU,cACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,QACP,AAAIA,GAAS,IAAMA,GAAO2lB,OAAO,GACxB,+BAAG,IAAM3lB,GAAO45C,MAAM,CAAC,gBAGzB,+BAAE,KACX,CACF,EACA,CACErb,OAAQ,WAAM,CAAC,mBACftD,SAAU,gBACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,QACP,AAAIA,GAAS,IAAMA,GAAO2lB,OAAO,GACxB,+BAAG,IAAM3lB,GAAO45C,MAAM,CAAC,gBAGzB,+BAAE,KACX,CACF,EACA,CACEhgD,GAAI,UACJwX,MAAO,GACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,CACP,MAAO,UAAC,EAAAwuC,iBAAiB,EAACxuC,IAAKA,GACjC,CACF,EACD,CAIY8yC,EAAW,WACtB,IAAoC,IAAAtiB,0BAAA,UAAoC,GAAhEM,EAA4B,EAA5BA,SAAS,CAAEvuC,EAAiB,EAAjBA,YAAY,CAEvB0J,EAAS,KAAA+jD,gBAAA,EACf,EAAA1e,YAAA,sBAAkC,CAAC,CACjC/uC,aAAc,CAACA,EACfgM,YAAa,CAACuiC,CAChB,IAJM7kC,IAAI,CAONijD,EAAqB,AAAAjjD,CAAAA,MAAAA,EAAA,OAAAA,EAAMijD,kBAAkB,AAAD,GAAK,EAAE,CAOjDkK,EAAoB,KAAAC,iBAAA,EALf,CACX92D,aAAc,CAACA,EACfgM,YAAa,CAACuiC,CAChB,GAEQsoB,eAAe,CAEvB,MACE,WAAC,EAAA3nD,IAAI,EAACm9C,QAAQ,mBACZ,UAAC,EAAAzrC,WAAW,EAACC,IAAI,IAAIgS,eAAe,oBAClC,WAAC,EAAA5f,MAAM,EAAClB,QAAS8kD,YAAiB,KAAG,WAAM,CAAC,qBAE9C,UAAC,EAAA55C,KAAK,EAACuiB,QAASA,EAAS91B,KAAMijD,MAGrC,4PCzEaV,EAAoB,SAAC54C,CAAK,EAGrC,IAAQoK,EAAQpK,EAARoK,GAAG,CACL+b,EAAc,KAAAC,cAAA,IAElB,IAAAwU,0BAAA,UAAoC,GAD9BjuC,EACN,EADMA,YAAY,CAAagM,EAC/B,EADoBuiC,SAAS,CAgC/B,MACE,UAAC,EAAAr/B,IAAI,EAACm9C,QAAQ,MAAMxrC,IAAI,OAAOgS,eAAe,oBAC5C,UAAC,EAAAtQ,UAAU,EAACxQ,QA/BwB,WACtC,EAAAyQ,YAAA,QAAoB,CAAC,CACnBC,UAAW,iBAAM,+BAAG,WAAM,CAAC,sCAC3BE,KAAM,mFACAlF,EAAImmB,QAAQ,CAAC33B,UAAU,CAAvB,6BAEA,gCAAM,EAAA+B,UAAA,+CAAyD,CAAC,CAC9DhO,aAAc,CAACA,EACfiM,WAAYwR,EAAImmB,QAAQ,CAAC33B,UAAU,AACrC,WAEA,OALA,SAKA,GAAMutB,EAAYu9B,iBAAiB,CACjC,EAAAhoB,YAAA,sBAAkC,CAAC,CACjC/uC,aAAc,CAACA,EACfgM,YAAa,CAACA,CAChB,mBAJF,SAOA,EAAAwW,YAAA,MAAkB,GAElB,EAAAiwB,KAAA,QAAa,CAAC,WAAM,CAAC,kEAErB,EAAAA,KAAA,MAAW,CAAC,WAAM,CAAC,4CAGzB,EACF,EACF,KAOF,8OC1CaqkB,EAAoB,SAACpqC,CAAI,EAIpC,MAAM8M,EAAc,KAAAC,cAAA,IACZx5B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,IAAM+2D,KAAe,iBAAOzrC,CAAM,MAiBvB7gB,EAEClH,wDAjBR,gCAAM,EAAAwK,UAAA,4CAAsD,CAAC,CAC3DhC,YAAa0gB,EAAK1gB,WAAW,CAC7BhM,aAAc0sB,EAAK1sB,YAAY,CAC/B8K,YAAa,CACXgB,MAAOyf,EAAOzf,KAAK,CACnBnN,KAAM4sB,EAAO5sB,IAAI,CACjB+tD,YAAanhC,EAAOmhC,WAAW,AACjC,CACF,WAEA,OAVA,SAUA,GAAMlzB,EAAYu9B,iBAAiB,CACjC,EAAAhoB,YAAA,sBAAkC,CAACriB,mBADrC,SAIA,EAAAlK,YAAA,MAAkB,sBACX9X,CAAAA,EAAA,oBACU,EAAApH,QAAQ,GAGnBE,AAFEA,CAAAA,EAAUkH,EAAE9G,IAAI,AAAD,GAEN,AAAmB,UAAnB,OAAOJ,EACpB,EAAAivC,KAAA,MAAW,CAACjvC,GAEZ,EAAAivC,KAAA,MAAW,CAACxyC,EAAE,6CAItB,YA5B4BsrB,CAAM,mCAyClC,MAAO,CACLsrC,gBAZsB,KAAA53C,WAAA,EAAY,iBAClC,EAAAuD,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,gBACTwiB,UAAW,EAAA8pC,kBAAkB,CAC7B7pC,QAASziB,EAAE,gBACX0iB,IAAI,IAAE,iBAAOgwB,CAAG,iCACd,MAAO,GAAAA,EAAI9zB,YAAY,CAACm4C,OAC1B,YAFarkB,CAAG,kCAGlB,EACF,EAAG,EAAE,CAIL,CACF,iKC1Da8jB,EAAoB,WAC/B,MAAmC,eAAA/I,UAAA,IAAU,GAAtCiJ,EAA4B,YAAbrnC,EAAA,EAAAA,EAAA,CAAIkgC,EAAA,EAAAA,GAAA,CAE1B,MAAO,CACLmH,YAAAA,EACAD,QAAQ,IAAE,iBAAOnT,CAAY,MAOrBuL,EAKEW,EAQAC,EAAAhlD,wDAnBQ,SAAM64C,EAAaqJ,OAAO,CAAC,iBAE3C,GAAI,CAFY,SAGd,UAGIkC,EAAgBvL,EAAa1tB,SAAS,CAAC,0BAK3B,8BAFhBvG,IAEgB,GAAM,EAAAthB,UAAA,yBAAmC,CAAC,CACxDlC,MAAOgjD,CACT,WAEA,GAAI,CAJEW,CAAAA,EAAU,WAIA,CAACA,EAAQ9C,kBAAkB,EAQvC,CAJE+C,CAAAA,EAAmBD,EAAQ9C,kBAAkB,CAACrtC,IAAI,CACtD,SAAC5U,CAAC,SAAKA,EAAEoB,KAAK,GAAKgjD,KAJnB,MAAO,SAWT,MAAO,GAAAY,UAEP,gBAAO,uBAEPF,2BAEJ,YAlCiBjM,CAAY,kCAmC/B,CACF,iMC3CakJ,EAAqB,QAAQ,CAAC,CACzChuD,GAAI,QAAQ,GAAGgxC,QAAQ,GACvB3jC,MAAO,QAAQ,GAAGA,KAAK,CAAC,CACtBtI,QAAS,WAAM,CAAC,gBAClB,GACA7E,KAAM,QAAQ,GAAGqS,GAAG,CAAC,EAAG,CACtBxN,QAAS,WAAM,CAAC,iBAClB,GACAkpD,YAAa,QAAQ,GAAGjd,QAAQ,GAAGkP,OAAO,EAC5C,4RCOaiS,EAA2B,WACtC,MAAQ3wD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHu5B,EAAc,IAAI,EAAAob,WAAW,CAC3B50C,EAAiB,KAAAutB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAA3CvO,YAAY,CAEpB,IAAMi3D,KAAwB,iBAC5B1rC,CAAM,CACNga,CAAO,CACPwrB,CAAiB,MAEXptB,EAMuB,EASpBj5B,EAEClH,wDAjBJmgC,EAASpY,MAAAA,EAAA,OAAAA,EAAQylC,YAAY,CAAC5hD,GAAG,CAAC,SAACqO,CAAG,SAAKA,MAAAA,EAAA,OAAAA,EAAKhf,EAAE,oBAGtD,gCAAM,EAAAuP,UAAA,kCAA4C,CAAC,CACjDhO,aAAc,CAACA,EACf8K,YAAa,CACXqjD,sBAAuB5iC,MAAAA,EAAA,OAAwB,OAAxB,GAAAA,EAAQqkC,gBAAgB,AAAD,GAAvB,oBAA0B96C,KAAK,CACtDoiD,aAAcvzB,CAChB,CACF,kBANA,SAQA,EAAAnhB,YAAA,MAAkB,GAClB+iB,IACAwrB,EAAkB,IAClB,EAAAte,KAAA,QAAa,CAACxyC,EAAE,yCACTyK,CAAAA,EAAA,oBACU,EAAApH,QAAQ,GAGnBE,AAFEA,CAAAA,EAAUkH,EAAE9G,IAAI,AAAD,GAEN,AAAmB,UAAnB,OAAOJ,EACpB,EAAAivC,KAAA,MAAW,CAACjvC,GAEZ,EAAAivC,KAAA,MAAW,CAACxyC,EAAE,6CAItB,YA9BEsrB,CAAM,CACNga,CAAO,CACPwrB,CAAiB,mCA0DnB,MAAO,CACLJ,+BA7BqC,KAAA1xC,WAAA,EACrC,SACE+xC,CAAY,CACZzrB,CAAO,CACPwrB,CAAiB,QAEjB,EAAAvuC,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,0BACTwiB,UAAW,iBACT,UAAC,EAAAuxB,mBAAmB,EAACC,OAAQza,WAC3B,UAAC,EAAAq2B,gBAAgB,EAAC7vD,aAAcA,OAGpC0iB,QAASziB,EAAE,QACX0iB,IAAI,IAAE,iBAAOgwB,CAAG,iCACd,MAAO,GAAAA,EAAI9zB,YAAY,CAAC,kBACtBo4C,EACE,mBAAKtkB,EAAI9c,SAAS,KAAIm7B,aAAAA,IACtBzrB,EACAwrB,SAGN,YARape,CAAG,kCASlB,EACF,EACA,EAAE,CAKJ,CACF,8aC/DA,IAAM7uB,EAAqB,cAAO,EAAAtJ,WAAW,OAsBhC28C,EAAsB,kBACjCx4C,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CAE2B,OAAAk3C,qBAAA,IAAnB5iD,EAAmB,EAAnBA,KAAK,CAAE+iB,EAAY,EAAZA,OAAO,CAEhBgsB,EAAe,KAAAzkC,OAAA,EAAoB,CACvCumC,KAAM,QACR,GAEA,IAAMh7B,KAAgB,iBAAOkB,CAAM,MASpB,IAgBT,EAxBE9sB,EACAmtB,EACAG,EACAjM,EAGApW,EAEAqe,uCAEN,CAVMtpB,EAAK8sB,MAAAA,EAAA,OAAAA,EAAQ9sB,EAAE,CACfmtB,EAAY,AAAAL,CAAAA,MAAAA,EAAA,OAAAA,EAAQK,SAAS,AAAD,GAAK,EACjCG,EAAe,AAAAR,CAAAA,MAAAA,EAAA,OAAAA,EAAQQ,YAAY,AAAD,GAAK,EACvCjM,EAAS,AAAAyL,CAAAA,MAAAA,EAAA,OAAAA,EAAQzL,MAAM,AAAD,GAAK,EAG3BpW,EAAO,CAAEkiB,UAAAA,EAAWG,aAAAA,EAAcP,SAFvB,AAAAD,CAAAA,MAAAA,EAAA,OAAAA,EAAQC,QAAQ,AAAD,GAAK,GAEa1L,OAAAA,EAAQrhB,GAAAA,CAAG,EAIzD,AAFEspB,CAAAA,EAAO,AAAS,OAAT,GAAAwD,EAAO9sB,EAAE,AAAD,GAAR,kBAAe,OAAf,KAAW8wC,IAAI,AAAD,GAAd,oBAAiBxnB,IAAI,AAAD,GAEnBA,EAAKppB,IAAI,GAQvB44B,MAAAA,GAAAA,EAAU,mBACL7tB,GAAA,CACHjL,GAAIspB,EAAKppB,IAAI,CACb6gB,YAAauI,EAAKnpB,WAAW,IAG3B,CAA2B,OAA3B,GAAAmpB,EAAKtI,sBAAsB,AAAD,GAA1B,oBAA6Bpa,MAAM,AAAD,GACpC0iB,EAAKtI,sBAAsB,CAACpY,OAAO,CAAC,SAACy8C,CAAE,EACrC,IAAMuT,EAAwB7iD,EAAM8K,IAAI,CACtC,SAACg4C,CAAG,SAAKA,EAAI74D,EAAE,GAAKqlD,EAAGC,uBAAuB,GAG5CsT,GAAyBA,EAAsB14D,IAAI,EACrD44B,CAAAA,MAAAA,GAAAA,EAAU,CACR94B,GAAI44D,EAAsB14D,IAAI,CAC9BmhB,OAAQgkC,EAAGE,QAAQ,CACnBxkC,YAAa63C,EAAsBz4D,WAAW,CAC9Cq5B,SAAU,EACZ,EAAC,CAEL,GAGF/X,UA9BEqjC,EAAavK,QAAQ,CAAC,KAAM,CAC1Bx1C,QAAS,oBACX,GAEA,MA2BJ,YA3C6B+nB,CAAM,mCA6C7BgsC,EAAe,KAAAvoC,OAAA,EAAQ,WAC3B,OAAOxa,EAAMpF,GAAG,CAAC,SAACohB,CAAC,EACjB,MAAO,CACL3rB,MAAO2rB,EAAE/xB,EAAE,CACXqW,MAAQ,GAAa,OAAX0b,EAAE7xB,IAAI,CAAC,MAAkB,OAAd6xB,EAAE5xB,WAAW,CAAC,KACnC2wC,KAAM,CACJxnB,KAAMyI,CACR,CACF,CACF,EAKF,EAAG,CAAChc,EAAM,EAEV,MACE,WAAC,EAAA2L,KAAK,EACJ3B,OAAQG,EACRD,QAASwB,EACThH,KAAK,KACLwZ,eAAe,SACftS,WAAU,aAEV,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,iBAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK64B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAAvqC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,EAAA8Q,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,gBACxBjqC,SAAS,OACTjR,KAAK,KACLmF,QAASyzD,EACTt9C,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAkC,OAAhC,KAAA+kC,gBAAA,EAAiB,UAAU,OAEnC,OAFwC,KAAAA,gBAAA,EACxC,QAEFjqC,SAAS,OACTjR,KAAK,WAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,wBACxBjqC,SAAS,OACTjR,KAAK,cAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,2BACxBjqC,SAAS,OACTjR,KAAK,iBAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,YACxBjqC,SAAS,OACTjR,KAAK,yBAOjB,UAAC,EAAAgiB,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASwxC,EAAa1kC,YAAY,CAACwL,YAElC,KAAApqB,CAAA,AAAAA,EAAE,UAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3C,KAAAjgB,CAAA,AAAAA,EAAE,sBAOjB,qOC7Kau3D,EAAyB,WACpC,IAAQv3D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC6B,OAAAm3D,qBAAA,IAA9BK,EAA8B,EAA9BA,aAAa,CAAEC,EAAe,EAAfA,UAAU,CAE3Bl4B,EAAU,KAAAxQ,OAAA,EAEd,WACA,MAAO,CACL,CACEoU,OAAQnjC,EAAE,cACV6/B,SAAU,KACV7pB,MAAO,KACT,EACA,CACEmtB,OAAQnjC,EAAE,gBACV6/B,SAAU,cACV7pB,MAAO,KACT,EACA,CACE6pB,SAAU,cACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAc,OAAZnjC,EAAE,WACb6/B,SAAU,SACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQzL,MAAM,GAEhD,EACA,CACEsjB,OAAS,GAA4B,OAA1BnjC,EAAE,yBACb6/B,SAAU,YACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQK,SAAS,GAEnD,EACA,CACEwX,OAAS,GAA+B,OAA7BnjC,EAAE,4BACb6/B,SAAU,eACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQQ,YAAY,GAEtD,EACA,CACEqX,OAAS,GAAgB,OAAdnjC,EAAE,aACb6/B,SAAU,WACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQC,QAAQ,GAElD,EACA,CACE4X,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,CACP,MACE,+BACE,UAAC,EAAA8E,UAAU,EAACxQ,QAAS,kBAAM2lD,MAAAA,EAAA,OAAAA,EAAaj6C,EAAImmB,QAAQ,MAG1D,CACF,EACD,AACH,EAAG,EAAE,EAEL,MACE,WAAC,EAAAn0B,GAAG,EAACiV,UAAU,iBACb,UAAC,EAAAkzC,aAAa,KACd,UAAC,EAAA36C,KAAK,EAACuiB,QAASA,EAAS91B,KAAM+tD,IAC/B,UAAC,EAAAI,iBAAiB,OAGxB,iYC1BMC,EAAU,SACd5oC,CAAK,CACL8jB,CAAM,EAEN,OAAQA,EAAOjtC,IAAI,EACjB,IAAK,UACH,MAAO,mBACFmpB,GAAA,CACHuoC,cAAe,EAAE,CACjBp/C,OAAQ26B,EAAOte,OAAO,CAACrc,MAAM,CAC7B0/C,YAAa/kB,EAAOte,OAAO,CAACsjC,WAAW,CACvCC,eAAgBjlB,EAAOte,OAAO,CAACsjC,WAAW,CAC1CE,UAAWllB,EAAOte,OAAO,CAACwjC,SAAS,CACnClsD,YAAagnC,EAAOte,OAAO,CAAC1oB,WAAW,CACvCmsD,aAAcnlB,EAAOte,OAAO,CAACyjC,YAAY,EAI7C,KAAK,WACH,MAAO,mBACFjpC,GAAA,CACHuoC,cAAgB,QAAGvoC,EAAMuoC,aAAa,SAAvB,CAAyBzkB,EAAOte,OAAO,CAAC,EACvDujC,eAAgB/oC,EAAM+oC,cAAc,CAAC1vD,MAAM,CACzC,SAACioB,CAAC,SAAKA,EAAE7xB,IAAI,GAAKq0C,EAAOte,OAAO,CAACj2B,EAAE,IAKzC,KAAK,cACH,IAAMg5D,EAAgBvoC,EAAMuoC,aAAa,CAAClvD,MAAM,CAC9C,SAACs8B,CAAC,SAAKA,EAAEpmC,EAAE,GAAKu0C,EAAOte,OAAO,CAACj2B,EAAE,GAGnC,MAAO,mBACFywB,GAAA,CACHuoC,cAAAA,EACAQ,eAAgB/oC,EAAM6oC,WAAW,CAACxvD,MAAM,CACtC,SAACs8B,CAAC,QAAK,CAAC4yB,EAAcn4C,IAAI,CAAC,SAAC84C,CAAQ,SAAKA,EAAS35D,EAAE,GAAKomC,EAAElmC,IAAI,MAOvE,CAEA,OAAOuwB,CACT,EAEaghB,EAAc,WACzB,MAAQjwC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IAEIiqD,EAAyB,EAAApoB,gBAAA,UAA0B,GAAhEjkC,WAAW,CACO,eAAAssD,UAAA,EAA2BR,EAAS,CAC5DG,eAAgB,EAAE,CAClBF,YAAa,EAAE,CACf1/C,OAAQ,EAAE,CACVo/C,cAAe,EAAE,CACjBS,UAAW,EAAE,CACbC,aAAc,EAChB,MAPOjpC,EAAmB,KAAZqpC,EAAY,KAUxBvsD,EAOEkjB,EAPFljB,WAAW,CACXksD,EAMEhpC,EANFgpC,SAAS,CACTD,EAKE/oC,EALF+oC,cAAc,CACdR,EAIEvoC,EAJFuoC,aAAa,CACbM,EAGE7oC,EAHF6oC,WAAW,CACX1/C,EAEE6W,EAFF7W,MAAM,CACN8/C,EACEjpC,EADFipC,YAAY,CAGRK,EAAYngD,EAAOhT,MAAM,CAAG,EAE5BozD,EAAgBV,EAAY1yD,MAAM,CAAG,GAAKmzD,EAExCzoB,EAAe,EAAAE,gBAAA,cAA8B,GAA7CF,UAAU,CACV/vC,EAAiB,EAAAiwC,gBAAA,UAA0B,GAA3CjwC,YAAY,CAEdujD,EAAe,KAAAzkC,OAAA,EAAmC,CACtDtW,SAAU,KAAAg7C,WAAA,EAAY,EAAAkV,qBAAqB,CAC7C,GAEA,KAAA/vC,SAAA,EAAU,WACR,GAAI0vC,EAAsB,CACxB,IAAMl2D,EAAY4tC,EAAWzwB,IAAI,CAC/B,SAACooC,CAAE,SAAKA,EAAG7iD,KAAK,GAAKwzD,IAGnBl2D,GACFohD,EAAav9B,QAAQ,CACnB,cAEA7jB,EACA,CACEw2D,YAAa,GACbC,YAAa,EACf,EAGN,CACF,EAAG,CAACP,EAAqB,EAEzB,IAAM3Q,EAAKnE,EAAa+J,KAAK,CAAC,eAExBuL,EAAmB,KAAA7pC,OAAA,EAEvB,WACA,OAAOkpC,EAAU9oD,GAAG,CAAC,SAAC1E,CAAC,EACrB,MAAO,CACL7F,MAAO6F,EAAES,MAAM,CAAI,GAAW,OAATT,EAAES,MAAM,EAAK,GAClC2J,MAAQ,GAAa,OAAXpK,EAAE/L,IAAI,CAAC,MAAY,OAAR+L,EAAEoB,KAAK,CAAC,KAC7ByjC,KAAM7kC,CACR,CACF,EACF,EAAG,CAACwtD,EAAU,EAERY,EAAgB,KAAA9pC,OAAA,EAEpB,WACA,OAAO3W,EAAOjJ,GAAG,CAAC,SAACy1B,CAAC,EAClB,MAAO,CACLhgC,MAAOggC,EAAEpmC,EAAE,CACXqW,MAAO+vB,EAAEwtB,WAAW,CACpB9iB,KAAM1K,CACR,CACF,EACF,EAAG,CAACxsB,EAAO,EAEX,KAAAsQ,SAAA,EACE,iBA+EEowC,GA9E4B,uBAKpB52D,EAmBAwqD,EAwBAqM,EAMFC,wDArDJ,GAAI,CAACvR,EACH,UAKF,GAAI,CAACvlD,CAAAA,MAFCA,CAAAA,EAAYulD,MAAAA,EAAA,OAAAA,EAAInY,IAAI,AAAD,EAEpB,OAAAptC,EAAW1D,EAAE,AAAD,GAAK,CAAC0D,CAAAA,MAAAA,EAAA,OAAAA,EAAWwK,WAAW,AAAD,EAY1C,OAXA4rD,EAAS,CACPxyD,KAAM,UACN2uB,QAAS,CACPrc,OAAQ,EAAE,CACV2/C,YAAa,EAAE,CACfE,UAAW,EAAE,CACblsD,YAAa7J,MAAAA,EAAA,OAAAA,EAAW1D,EAAE,CAC1B05D,aAAc,EAChB,CACF,GAEA,IA8BA,OA3BF5U,EAAartB,UAAU,CAAC,cAMxB3wB,QAAQ0/B,GAAG,CAJL0nB,EAAqBxlD,MAAMC,OAAO,CAACjF,EAAUwqD,kBAAkB,EAChExqD,EAAUwqD,kBAAkB,IAK/B,CAACxlD,MAAMC,OAAO,CAAC8wD,GACfA,EAAU7yD,MAAM,CAChB6yD,AAAqB,IAArBA,EAAU7yD,MAAM,EAiBhB,GAAM,EAAA2I,UAAA,4CAAsD,CAAC,CAC3DhO,aAAc,CAACA,EACf2M,YAAaxK,EAAUwK,WAAW,AACpC,cAJIqsD,EACJ,SAKEC,EAAA,IAEA92D,EAAU1D,EAAE,CAAZ,YAEA,SAAM,EAAAuP,UAAA,qCAA+C,CAAC,CACpDhO,aAAc,CAACA,EACfgM,YAAa7J,EAAU1D,EAAE,AAC3B,WAEFw6D,EALE,iCAQJV,EAAS,CACPxyD,KAAM,UACN2uB,QAAS,CACPrc,OAAQ4gD,EACRjB,YAAagB,EACbd,UAAWvL,EACX3gD,YAAa7J,EAAU1D,EAAE,CACzB05D,aAAc,EAChB,CACF,SACF,gDAGF,EACA,CAACzQ,EAAG,EAiBN,IAAMwR,KAAc,uBAQVC,EACAltD,EACAc,EAEAqsD,EAcC1uD,wDAzBO,SAAM64C,EAAaqJ,OAAO,WAE1C,GAAI,CAFY,SAGd,2BAQuB,6BAJjBuM,EAAsB5V,EAAa1tB,SAAS,CAAC,qBAC7C5pB,EAAas3C,EAAa1tB,SAAS,CAAC,oBACpC9oB,EAAUw2C,EAAa1tB,SAAS,CAAC,iBAEhB,GAAM,EAAA7nB,UAAA,2BAAqC,CAAC,CACjEhC,YAAa,CAACmtD,EACdruD,YAAa,CACX9K,aAAc,CAACA,EACfuM,YAAa,EAAA6pB,cAAA,UAAwB,CACrCrpB,QAAS,CAACA,EACVga,SAAU0wC,EACV4B,eAAgB,CAACptD,CACnB,CACF,kBATMmtD,EAAiB,SAWvBjrD,EAAS,CACP8F,GAAK,sBAAwD,OAAnCjU,EAAa,wBAAqC,OAAfo5D,EAAe,QAC9E,uBACO1uD,EAAA,SACP,EAAA+nC,KAAA,MAAW,CAACxyC,EAAE,qBAEdsF,QAAQ2zC,GAAG,CAACxuC,4BAEhB,+CAEA,MACE,UAAC,EAAA4uD,0BAA0B,EACzBz0D,MAAO,CACL0yB,QAlD6C,SAACxP,CAAI,EACtDwwC,EAAS,CACPxyD,KAAM,WACN2uB,QAAS3M,CACX,EACF,EA8CM2vC,WA5CmD,SAAC3vC,CAAI,EAC5DwwC,EAAS,CACPxyD,KAAM,cACN2uB,QAAS3M,CACX,EACF,EAwCMvT,MAAOyjD,EACPR,cAAAA,EACAyB,YAAAA,CACF,WAEA,UAAC,EAAAxuC,YAAY,oBAAK64B,GAAA,UAEhB,WAAC,EAAA9zC,GAAG,EAAC8pD,cAAe,cAClB,WAAC,EAAAvgD,KAAK,EAACvE,QAAS,YACd,UAAC,EAAAmgB,eAAe,EACd9f,MAAO7U,EAAE,aACTtB,KAAK,cACLsb,WAAU,GACVnW,QAASisC,IAEV8oB,EAAiBxzD,MAAM,CAAG,GACzB,UAAC,EAAAuvB,eAAe,EACd9f,MAAO7U,EAAE,YACTtB,KAAK,aACLsb,WAAU,GACVnW,QAAS+0D,IAGZL,GACC,UAAC,EAAA5jC,eAAe,EACdj2B,KAAK,UACLsb,WAAU,GACVnF,MAAO7U,EAAE,SACT6D,QAASg1D,OAId,CAACX,GAAgBnsD,GAChB,UAAC,EAAAwtD,gBAAgB,EACfxtD,YAAa,CAACA,EACdhM,aAAc,CAACA,IAGlBm4D,GAAgB,CAACK,GAAaxsD,GAC7B,UAAC,EAAAytD,YAAY,EACXz5D,aAAc,CAACA,EACfgM,YAAaA,IAIhBysD,GAAiB,UAAC,EAAAjB,sBAAsB,YAKnD,oNCrXaK,EAAoB,WAC/B,MAAQ53D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC8B,OAAAm3D,qBAAA,IAA/BK,EAA+B,EAA/BA,aAAa,CAAEyB,EAAgB,EAAhBA,WAAW,CACC,eAAA3lD,QAAA,EAAS,OAArCC,EAA4B,KAAjBC,EAAiB,KAE7BimD,EAAWjC,EAAcpyD,MAAM,CAAG,EAExC,IAAM0M,KAAU,yEAIZ,6BAFA0B,EAAc,IAEd,GAAMylD,MAAAA,EAAA,OAAAA,mBAAN,6BAEAzlD,EAAc,2BAElB,sDAEA,AAAKimD,EAKH,UAAC,EAAAjqD,GAAG,EAACkqD,WAAW,OAAO9mC,eAAe,WAAWlY,QAAQ,gBACvD,UAAC,EAAA1H,MAAM,EACL8C,YAAY,UACZvC,UAAWA,EACX7C,SAAU6C,EACVzB,QAASA,WAER9R,EAAE,YAXA,IAeX,iKCzBM25D,EAAqB,KAAAC,aAAA,EAAsC,CAC/DrlD,MAAO,EAAE,CACTijD,cAAe,EAAE,AACnB,GAEaL,EAAwB,iBAAM,KAAA0C,UAAA,EAAWF,IAEzCN,EAA6BM,EAAmBG,QAAQ,qICbxDP,EAAmB,SAACnmD,CAAK,EACpC,IAAQpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAAs9B,KAAK,EAAC75B,OAAO,UAAUye,GAAI,EAAGmK,GAAI,EAAGmE,WAAW,yBAC/C,UAAC,EAAAupC,SAAS,KACT/5D,EAAE,yBAA0B,CAC3Bg6D,KACE,UAAC,EAAAlmD,IAAI,EACHmC,WAAW,SACXgkD,eAAe,YACf9pD,OAAO,SACPtC,KAAO,sBAAwC,OAAnBuF,EAAMrT,YAAY,CAAC,kBAE9CC,EAAE,UAGPk6D,YAAa,oBACf,KAGN,+ICpBaV,EAAe,SAACpmD,CAAK,EAChC,IAAQpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACD04B,EAAQ,KAAAC,OAAA,IAARD,GAAG,CAEX,MACE,WAAC,EAAA4E,KAAK,EAAC75B,OAAO,UAAUye,GAAI,EAAGmK,GAAI,EAAGmE,WAAW,yBAC/C,UAAC,EAAAupC,SAAS,KACTrhC,EAAI,eACD14B,EAAE,oBAAqB,CACrBg6D,KACE,UAAC,EAAAlmD,IAAI,EACHmC,WAAW,SACXgkD,eAAe,YACf9pD,OAAO,SACPtC,KAAO,sBAAkE,OAA7CuF,EAAMrT,YAAY,CAAC,4BAA4C,OAAlBqT,EAAMrH,WAAW,CAAC,8BAE1F/L,EAAE,UAGPk6D,YAAa,oBACf,GACAl6D,EAAE,oCAGZ,iXC3BA,IAAMm6D,EAAmB,cAAO,EAAA3qD,GAAG,OAQtBmoD,EAAgB,WAC3B,IAAQ33D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACuB,eAAAsT,QAAA,EAAS,OAAlCkf,EAAyB,KAAf4nC,EAAe,KAEhC,MACE,WAACD,EAAA,WACC,UAAC,EAAAnnD,MAAM,EAAC8C,YAAY,MAAMhE,QAAS,kBAAMsoD,EAAY,cAClDp6D,EAAE,iBAEJwyB,GACC,UAAC,EAAA0kC,mBAAmB,EAClB3iD,MAAO,EAAE,CACTmK,YAAa8T,EACbvS,WAAY,kBAAMm6C,EAAY,SAKxC,uLC7Ba3B,EAAwB,QAAQ,CAAC,CAC5C1sD,YAAa,QAAQ,CAAC,CACpBnH,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,GACfy6B,KAAM,QAAQ,CACZ,SAAC7lC,CAAI,EACH,MACE,AAEM,UAFN,MAAQA,CAAAA,MAAAA,EAAA,OAAAA,EACN,EACD,AADC,CAGN,EAEJ,GACAuC,WAAY,QAAQ,CAAC,CACnBpH,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,EACjB,GACA/H,QAAS,QAAQ,CAAC,CAChBlI,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,EACjB,EACF,44BCaA,IAAMslD,EAAmB,cAAO,EAAA3qD,GAAG,OAU7B6qD,EAAoB,aAAU,MAYvBzqB,EAAY,WACvB,QAAMgE,EAAS,KAAAqY,SAAA,IACPvzB,EAAQ,KAAAC,OAAA,IAARD,GAAG,CACHl2B,EAAU,EAAAmtC,cAAA,cAA4B,GAAtCntC,KAAK,CACqB,IAAAmtC,cAAA,UAAwB,GAAlD1kC,EAA0B,EAA1BA,OAAO,CAAElL,EAAiB,EAAjBA,YAAY,CACvBiL,EAAUoC,aAAaC,OAAO,CAAC,QACC,eAAAiG,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KAEpC,eAAArL,QAAA,EAAmD,SAD9CsvC,EACL,KADoBmG,EACpB,KACgC,eAAAz1C,QAAA,IAAQ,GAAnCyjB,EAA2B,KAAhBujC,EAAgB,KAC0B,eAAAhnD,QAAA,EAAS,OAA9DinD,EAAqD,KAA7BC,EAA6B,KACpDx6D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDy6D,GAA0B,KAAAC,iBAAA,EAAkBzvD,GAA5CwvD,qBAAqB,CACvBz4D,GAAa,KAAA8Z,aAAA,IACX6+C,GAAoB,KAAAC,cAAA,IAApBD,eAAe,CAMjBE,GAAkB,YACtB,IAAM/Q,EAAYtsC,AADO,EAAAA,GAAA,CACHmmB,QAAQ,CAO9B,MACE,WAAC,EAAA10B,IAAI,EAAC2R,IAAK,EAAG1R,cAAc,gBAC1B,UAAC,EAAA4E,IAAI,EAAChC,QAPU,WAClBi3C,EAAiBe,GACjBnrC,EAAe,CAACD,EAClB,WAKM,UAAC,EAAAwnC,QAAQ,OAEX,UAAC,EAAApyC,IAAI,EACHhC,QAAS,WACH,CAAC,KAAAukB,KAAA,EAAMyzB,EAAUv9C,WAAW,GAC9BilD,GAAgB1H,EAAUv9C,WAAW,CAEzC,WAEA,UAAC,EAAA+V,UAAU,SAInB,EAEMkvC,GAAkB,SAAChzD,CAAE,EACzB87D,EAAa97D,GACbg8D,EAA0B,CAACD,EAC7B,EAEMO,GAAe,WAAa,CAGhC,iBAAM,CACJ,CACE33B,OAAQnjC,EAAE,YACV6/B,SAAU,KACV7pB,MAAO,KACT,EACA,CACEmtB,OAAQnjC,EAAE,gBACV6/B,SAAU,cACV7pB,MAAO,MACPstB,KAAM,gBAAUK,EAAA,EAAPnmB,GAAG,CAAImmB,QAAQ,QACtB,AAAKA,EAAS3L,QAAQ,CAKpB,iCACG2L,EAASpkB,WAAW,CAAE,IACvB,UAAC,EAAA6E,OAAO,EACNvP,MAAO7U,EAAE,0BACTskB,UAAU,MACVD,SAAQ,YAER,UAAC,EAAAE,QAAQ,EAACxU,MAAM,oBAXb,+BAAG4zB,EAASpkB,WAAW,EAelC,CACF,EACA,CACEsgB,SAAU,cACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAc,OAAZnjC,EAAE,WACb6/B,SAAU,SACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQzL,MAAM,GAEhD,EACA,CACEsjB,OAAS,GAA4B,OAA1BnjC,EAAE,yBACb6/B,SAAU,YACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQK,SAAS,GAEnD,EACA,CACEwX,OAAS,GAA+B,OAA7BnjC,EAAE,4BACb6/B,SAAU,eACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQQ,YAAY,GAEtD,EACA,CACEqX,OAAS,GAAgB,OAAdnjC,EAAE,aACb6/B,SAAU,WACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,UAAC,EAAAosC,qBAAqB,EAAC9yD,MAAO0mB,MAAAA,EAAA,OAAAA,EAAQC,QAAQ,GAElD,EACA,CACE4X,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACq9C,GAAA,CAAgBr9C,IAAKA,IAC3C,EACD,EACD,EAAE,EAQJ,IAAMu9C,MAAc,uBAGNtxD,EASDgB,4DAXPjI,EAAMyI,OAAO,CAAb,6BAEiB,gCAAM,cAAS,KAAAg9B,gBAAA,EAAiBzlC,EAAMyI,OAAO,EAAG,CAC/DvB,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBylC,aAAc,OACd/qD,OAAQ,CACNqE,QAAAA,CACF,CACF,kBANQvB,EAAS,SAATA,IAAI,CAQZ,EAAA0Y,SAAA,eAAwB,CAAC1Y,EAAO,oBAAiC,OAAdjH,EAAMyI,OAAO,CAAC,6BAC1D,SACP,EAAAunC,KAAA,MAAW,CAACxyC,EAAE,qBAAsB,CAAEg7D,OAAQ,KAAM,6BAG1D,+CAEA,IAAMC,MAAkB,uBAYb51D,EACa,IAAd0mD,wDAXN,gCAAM,cAAS,KAAAxiB,iBAAA,EAAkBxpC,EAAckL,GAAU,CACvDvB,OAAQ,EAAAuiB,YAAA,OAAmB,CAC3BtlB,OAAQ,CACN4F,YAAawqB,CACf,CACF,kBALA,SAOA,EAAAyb,KAAA,QAAa,CAACxyC,EAAE,uBAEhB4zC,EAAOyY,UAAU,sBAEXN,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,4BAGlB,+CAEA,MACE,iCACE,WAACoO,EAAA,WACC,WAAC,EAAAhnD,WAAW,EAAC2C,YAAY,MAAMhE,QAAS2oD,aACtC,UAAC,EAAAS,SAAS,EAACzrD,GAAI,IACdzP,EAAE,iBAEJ,AAAAgC,CAAAA,MAAAA,GAAA,OAAAA,GAAY+I,cAAc,AAAD,GACxB,WAAC,EAAAoI,WAAW,EAACrB,QAAS6oD,aACpB,UAAC,EAAAn9B,WAAW,EAAC/tB,GAAI,IAChBzP,EAAE,mBAGP,WAAC,EAAAmT,WAAW,EAACgoD,YAAY,OAAOrpD,QAASipD,aACvC,UAAC,EAAAK,YAAY,EAAC3rD,GAAI,IACjBzP,EAAE,kBAEJ04B,EAAI,gCACH,UAAC,EAAA2iC,gBAAgB,EAAC74D,MAAOA,IAE1Bk2B,EAAI,gCACH,UAAC,EAAA4iC,gBAAgB,EAAC94D,MAAOA,IAE3B,UAAC,EAAAwQ,MAAM,EAAC8C,YAAY,MAAMhE,QAnEb,WACjBi3C,EAAiB,MACjBpqC,EAAe,CAACD,EAClB,WAiES1e,EAAE,oBAGP,WAAC,EAAAkX,IAAI,YACFwH,GACC,UAAC,EAAA68C,aAAa,EACZ78C,YAAaA,EACbuB,WA1LS,kBAAMtB,EAAe,KA2L9BikC,cAAeA,IAGnB,UAAC,EAAA5lC,KAAK,EAACuiB,QAASu7B,GAAcrxD,KAAMjH,EAAMskB,QAAQ,EAAI,EAAE,GACxD,UAAC,EAAA7X,IAAI,EAAC2jB,eAAe,oBACnB,WAACynC,EAAA,WACC,UAAC,EAAAxnD,IAAI,EAAC0D,SAAS,cAAMvW,EAAE,eACvB,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,KAAKN,WAAW,eAC5B,KAAAulD,gBAAA,EACCh5D,EAAMi5D,YAAY,EAAI,EACtBj5D,EAAMZ,QAAQ,EAAI,MAClB,WAKP24D,GACC,UAAC,EAAAvI,YAAY,EACXC,aAAcjyD,EAAE,6BAChBue,OAAQg8C,EACRt6C,WAjNsB,kBAAMu6C,EAA0B,KAkNtD9mC,QAASunC,UAMrB,sfCjQA,IAAMp3C,EAAqB,cAAO,EAAAtJ,WAAW,OAYvCquC,EAAgB,CACpBpqD,GAAI,KACJqhB,OAAQ,KACR8L,UAAW,KACXG,aAAc,KACdP,SAAU,IACZ,EAEagwC,EAAgB,kBAC3B78C,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CACA2iC,EAAA,EAAAA,aAAA,CAEkC,IAAAjT,cAAA,UAAwB,GAAlD1kC,EAA0B,EAA1BA,OAAO,CAAElL,EAAiB,EAAjBA,YAAY,CACvB6zC,EAAS,KAAAqY,SAAA,IACP13C,EAAU,EAAAo7B,cAAA,cAA4B,GAAtCp7B,KAAK,CAC2B,eAAAjB,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACR,eAAA5X,QAAA,IAAQ,GAAjCu1C,EAAyB,KAAfC,EAAe,KAE1BhiC,EAAW,KAAAiI,OAAA,EAAQ,WACvB,OAAOxa,EAAMpF,GAAG,CAAC,SAACohB,CAAC,QAAM,CACvB3rB,MAAO2rB,EAAE7xB,IAAI,EAAI6xB,EAAE/xB,EAAE,CACrBqW,MAAQ,GAAqB,OAAnB0b,EAAE7xB,IAAI,EAAI6xB,EAAE/xB,EAAE,CAAC,MAAkB,OAAd+xB,EAAE5xB,WAAW,CAAC,KAC3C2wC,KAAM/e,CACR,GACF,EAAG,CAAChc,EAAM,EAEV,KAAAmU,SAAA,EAAU,WAKR,GAJI,CAACk6B,GACHkG,EAAYF,GAGVhG,EAAe,CACjB,IAAM8Y,EAAgB,EAAE,CAExBj3D,OAAOmlD,IAAI,CAAChH,GAAex7C,OAAO,CAAC,SAAC0T,CAAK,EACvC4gD,CAAa,CAAC5gD,EAAM,CAClBA,AAAU,OAAVA,EACI,CACElW,MAAOg+C,MAAAA,EAAA,OAAAA,EAAepkD,EAAE,CACxBqW,MAAO+tC,MAAAA,EAAA,OAAAA,EAAerjC,WAAW,AACnC,EACAqjC,CAAa,CAAC9nC,EAAM,AAC5B,GAEAguC,EAAY4S,EACd,CACF,EAAG,CAAC9Y,EAAc,EAElB,KAAAl6B,SAAA,EAAU,WACRy8B,EAAQvB,KAAK,CAAC,WACTiF,GAEP,EAAG,CAACA,EAAS,EAEb,IAAM1D,EAAU,KAAAtmC,OAAA,EAAQ,CACtBumC,KAAM,QACR,GAII,OAAAhrC,aAAA,EAAc,CAAE1b,KAAM,KAAMub,QAASkrC,MAAAA,EAAA,OAAAA,EAASlrC,OAAO,AAAC,GAD5C0hD,EAAA,mBACV,EADF7gD,KAAK,GAGP,IAAMsP,KAAgB,iBAAOkB,CAAM,MACtB,EAAL9sB,EACAmtB,EACAG,EACAjM,EAGApW,EA6BGpE,EACa,IAAd0mD,wDApCFvtD,EAAK8sB,MAAAA,EAAA,OAAU,OAAV,GAAAA,EAAQ9sB,EAAE,AAAD,GAAT,oBAAYoG,KAAK,CACtB+mB,EAAY,AAAAL,CAAAA,MAAAA,EAAA,OAAAA,EAAQK,SAAS,AAAD,GAAK,EACjCG,EAAe,AAAAR,CAAAA,MAAAA,EAAA,OAAAA,EAAQQ,YAAY,AAAD,GAAK,EACvCjM,EAAS,AAAAyL,CAAAA,MAAAA,EAAA,OAAAA,EAAQzL,MAAM,AAAD,GAAK,EAG3BpW,EAAO,CACXkiB,UAAAA,EACAG,aAAAA,EACAP,SALe,AAAAD,CAAAA,MAAAA,EAAA,OAAAA,EAAQC,QAAQ,AAAD,GAAK,GAMnC1L,OAAAA,EACArhB,GAAAA,EACAw5B,SAAU4qB,EAAgBA,EAAc5qB,QAAQ,CAAGvyB,KAAAA,CACrD,6CAGEylB,EAAgB,KAEZ03B,EAAe,MAAf,MACF,SAAM,EAAA70C,UAAA,2BAAqC,CAAC,CAC1C9C,QAAS,CAACA,EACVlL,aAAc,CAACA,EACfwM,YAAaq2C,EAAcr2C,WAAW,CACtC1B,YAAapB,CACf,kBALA,sBAOA,SAAM,EAAAsE,UAAA,4BAAsC,CAAC,CAC3C9C,QAAS,CAACA,EACVlL,aAAc,CAACA,EACf8K,YAAapB,CACf,WAJA,iCAOFwW,IACA2zB,EAAOyY,UAAU,sBAEXN,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAEpB,YA7C6BI,CAAM,mCA+CnC,MACE,WAAC,EAAApL,KAAK,EACJ3B,OAAQG,EACRD,QAASwB,EACThH,KAAK,KACLwZ,eAAe,SACftS,WAAU,aAEV,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,iBAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,EAAA8Q,eAAe,UACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,gBACxBjqC,SAAS,OACT9L,QAASijB,EACT7W,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,EAAK,CAC9B7uC,WAAU,IACN2hD,IAEN,UAAC,SAAK,EACJ9mD,MAAQ,GAAkC,OAAhC,KAAA+kC,gBAAA,EAAiB,UAAU,OAEnC,OAFwC,KAAAA,gBAAA,EACxC,QAEFjqC,SAAS,OACTM,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,MAAS,CAClCnqD,KAAK,WAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,wBACxBjqC,SAAS,OACTM,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,SAAY,CACrCnqD,KAAK,cAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,2BACxBjqC,SAAS,OACTM,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,YAAe,CACxCnqD,KAAK,iBAEP,UAAC,SAAK,EACJmW,MAAO,KAAA+kC,gBAAA,EAAiB,YACxBjqC,SAAS,OACTM,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,QAAW,CACpCnqD,KAAK,yBAOjB,UAAC,EAAAgiB,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,EAAQvmC,YAAY,CAACwL,GAC9B1Z,SAAUua,WAET,KAAAjrB,CAAA,AAAAA,EAAE,UAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3C,KAAAjgB,CAAA,AAAAA,EAAE,sBAOjB,6MCzNa47D,EAAa,gBAAGp5D,EAAA,EAAAA,KAAA,CACnBxC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAW,KAAAzL,OAAA,IAkBjB,MAhBA,KAAA6J,SAAA,EAAU,WACR4B,EAAS+iC,KAAK,CAAC,SAACzoD,CAAK,EACnB,EAAA2d,YAAA,cAA0B,CAAC,CACzBs5B,8BAA+Bj3C,EAAMi5C,MAAM,AAC7C,EACF,EACF,EAAG,EAAE,EAEL,KAAAn1B,SAAA,EAAU,WACJ,CAAC,KAAA2N,KAAA,EAAM7zB,EAAMq5C,6BAA6B,GAC5CvxB,EAASs5B,KAAK,CAAC,CACb/F,OAAQ,CAACr7C,EAAMq5C,6BAA6B,AAC9C,EAEJ,EAAG,CAACr5C,EAAM,EAGR,UAAC,EAAAioB,YAAY,oBAAKH,GAAA,UAChB,UAAC,SAAW,EACV5rB,KAAK,SACLmW,MAAO7U,EAAE,UACT+kB,MAAM,IACN/T,IAAK,IACLD,IAAK,GACLH,KAAM,GACNC,UAAW,EACXZ,aACE,AAAC,KAAAomB,KAAA,EAAM7zB,EAAMq5C,6BAA6B,EAEtCp2C,KAAAA,EADAjD,EAAMq5C,6BAA6B,KAMjD,oNCpCawf,EAAmB,gBAAG74D,EAAA,EAAAA,KAAA,CAC3BoxC,EAAS,KAAAqY,SAAA,IACPjsD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACD67D,EAA4B,KAAAC,0BAAA,IAA5BD,uBAAuB,CACvBE,EAA4B,KAAAC,4BAAA,IAA5BD,uBAAuB,CA2B/B,MACE,iCACE,WAAC,EAAA9sD,IAAI,EAAC0b,WAAW,SAASiI,eAAe,0BACvC,UAAC,EAAAqpC,MAAM,EACLnmD,YAAY,MACZ8N,UAAWphB,AAA4B,KAA5BA,EAAMs5C,iBAAiB,CAClCrrC,SA/Ba,WACnBorD,EAAwBr5D,EAAO,WAC7B,EAAA+f,YAAA,MAAkB,GAClBqxB,EAAOyY,UAAU,EACnB,EACF,IA4BM,UAAC,EAAAx5C,IAAI,EAAC4qB,GAAG,gBAAQz9B,EAAE,sBAErB,WAAC,EAAAgT,MAAM,EACL8C,YAAY,MACZhE,QA9BS,iBACb,EAAAyQ,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,mBACTwiB,UAAW,iBAAM,UAAC,EAAAo5C,UAAU,EAACp5D,MAAOA,KACpCkgB,IAAI,IAAE,iBAAOnU,CAAO,wCAClB,AAAKA,EAIE,GAAAwtD,EAAwBv5D,EAAO+L,EAAS,WAC7CqlC,EAAOyY,UAAU,GACjB,EAAA9pC,YAAA,MAAkB,EACpB,IANS,GAAAne,QAAQC,OAAO,KAO1B,YATakK,CAAO,mCAUpBkU,QAASziB,EAAE,OACb,EACF,EAeM2T,WAAYnR,AAA4B,KAA5BA,EAAMs5C,iBAAiB,WACpC,KACI97C,EAAE,mBAAoB,IACxBwC,EAAM06C,sBAAsB,EAC1B,IAAuC,OAApC16C,EAAMq5C,6BAA6B,CAAC,WAIlD,wUC3DaigB,EAA6B,WACxC,IAAQ97D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAmCT,MAAO,CACL67D,wBAnC8B,SAACr5D,CAAK,CAAc05D,CAAO,GACrD,KAAA7lC,KAAA,EAAM7zB,EAAMyI,OAAO,GAIvB,EAAAsX,YAAA,QAAoB,CAAC,CACnBC,UAAW,iBAAM,+BAAGxiB,EAAE,iCACtB0iB,KAAM,uBACEy5C,EAAA,wDAAAA,EAAc35D,AAA4B,KAA5BA,EAAMs5C,iBAAiB,kBAGzC,yBAAI,KAAAzlB,KAAA,EAAM7zB,EAAMyI,OAAO,EACrB,UAGF,SAAM,EAAA8C,UAAA,iCAA2C,CAAC,CAChD9C,QAASzI,EAAMyI,OAAO,CACtBJ,YAAa,CACXixC,kBAAmBqgB,CACrB,CACF,kBALA,SAOAD,MAAAA,GAAAA,iCAEA,EAAA1pB,KAAA,MAAW,CACT2pB,AAAgB,KAAhBA,EACIn8D,EAAE,wCACFA,EAAE,+DAGZ,EACF,EACF,CAIA,CACF,EAEag8D,EAA+B,iBAkB1C,MAAO,CACLD,uBAAuB,IAlBO,iBAC9Bv5D,CAAK,CACL8oB,CAAM,CACN4wC,CAAO,4DAEH15D,CAAAA,EAAMyI,OAAO,EAAI,CAAC,KAAAorB,KAAA,EAAM/K,EAAOuwB,6BAA6B,GAA5D,YACF,SAAM,EAAA9tC,UAAA,mCAA6C,CAAC,CAClD9C,QAASzI,EAAMyI,OAAO,CACtBJ,YAAa,CACXgxC,8BAA+BvwB,EAAOuwB,6BAA6B,AACrE,CACF,WALA,SAOAqgB,MAAAA,GAAAA,iCAEJ,YAdE15D,CAAK,CACL8oB,CAAM,CACN4wC,CAAO,kCAgBT,CACF,6KC5DaZ,EAAmB,SAACloD,CAAK,EACpC,IAAQ5Q,EAAU4Q,EAAV5Q,KAAK,CACLxC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACoC,eAAAsT,QAAA,EAAS,OAA/C8oD,EAAsC,KAAnBC,EAAmB,YAE7C,AAAI75D,EAAM85D,OAAO,CACR,KAIP,iCACE,UAAC,EAAAtpD,MAAM,EAAC8C,YAAY,MAAMhE,QAAS,kBAAMuqD,EAAgB,cACtD75D,EAAM+5D,WAAW,CACdv8D,EAAE,0BACD,KAAiC,OAA7BA,EAAE,8BAEZo8D,GACC,UAAC,EAAAI,oBAAoB,EACnBh6D,MAAOA,EACPic,QAAS,kBAAM49C,EAAgB,SAKzC,0YCEMI,EAAS,QAAQ,CAAC,CACtBzgB,eAAgB,QAAQ,CAAC,CACvBp3C,MAAO,QAAQ,GACfiQ,MAAO,QAAQ,EACjB,GACA/S,SAAU,YAAY,CACpB,SAAC8C,CAAK,QACJ,AAAIA,AAAU,KAAVA,EACKA,EAGF,AAAiB,UAAjB,OAAOA,EAAqB,CAACA,EAAQA,CAC9C,EACA,QAAQ,CAAC,CACP09C,eAAgB,WAAM,CAAC,kBACvByR,mBAAoB,WAAM,CAAC,iBAC7B,GAEJ,GAIM2I,EAAc,CAClBC,OAAQ,SACRC,KAAM,MACR,EAIaJ,EAAuB,SAACppD,CAAK,EACxC,QAAMwgC,EAAS,KAAAqY,SAAA,IACPzpD,EAAmB4Q,EAAnB5Q,KAAK,CAAEic,EAAYrL,EAAZqL,OAAO,CAChBo+C,EAAW,CAAC,KAAAxmC,KAAA,EAAM7zB,EAAMo5C,gBAAgB,EACV,eAAAtoC,QAAA,EAA4B,SAAzDwpD,EAA6B,KAAjBC,EAAiB,KAC9BC,EAAaF,IAAeJ,EAAYC,MAAM,CAC9CzJ,EAAW4J,IAAeJ,EAAYE,IAAI,CAExCh7D,EAAa,EAAA+tC,cAAA,cAA4B,GAAzC/tC,QAAQ,CACV0oB,EAAW,KAAAzL,OAAA,EAAoB,CACnCtW,SAAU,KAAAg7C,WAAA,EAAYkZ,EACxB,GAEwC,eAAAnpD,QAAA,EACtC9Q,EAAMw5C,cAAc,EAAI,EAAAjS,sBAAA,QAA8B,KADjDkzB,EAAiC,KAAnBC,EAAmB,KAGlCC,EAAoBF,IAAiB,EAAAlzB,sBAAA,QAA8B,CAEzE,IAAMqzB,KAAkC,iBAAO9xC,CAAM,MAK7C0wB,EACAp3C,EAwCG6F,wDA7CT,GAAI,CAACjI,EAAMyI,OAAO,CAChB,UAMF,GAHM+wC,EAAiB1wB,EAAO0wB,cAAc,CAACp3C,KAAK,CAC5CA,EAAQ0mB,EAAOxpB,QAAQ,CAG3Bk6C,IAAmB,EAAAjS,sBAAA,OAA6B,EAChD,CAAC,KAAA1T,KAAA,EAAM7zB,EAAMi5D,YAAY,GACzB72D,EAAQpC,EAAMi5D,YAAY,CAM1B,OAJAnxC,EAASyuB,QAAQ,CAAC,WAAY,CAC5Bx1C,QAAS,KAAAvD,CAAA,AAAAA,EAAE,kCACb,GAEA,IAGF,GAAIg8C,IAAmB,EAAAjS,sBAAA,QAA8B,EAAInlC,EAAQ,IAK/D,OAJA0lB,EAASyuB,QAAQ,CAAC,WAAY,CAC5Bx1C,QAAS,KAAAvD,CAAA,AAAAA,EAAE,mBACb,GAEA,IAGF+8D,EAAcL,EAAYE,IAAI,mBAG5B,iCAAM,EAAA7uD,UAAA,MAAgB,CACpB8uD,EAAW,4BAA8B,6BAC1C,CAAC,CACA5xD,QAASzI,EAAMyI,OAAO,CACtBJ,YAAa,CAEXmxC,eAAAA,EACAp3C,MAAAA,CACF,CACF,kBATA,SAWA,EAAA4tC,KAAA,QAAa,CAAC,KAAAxyC,CAAA,AAAAA,EAAE,8BAEhB4zC,EAAOyY,UAAU,GACjB5tC,wBACO,SACP6L,EAASyuB,QAAQ,CAAC,WAAY,CAC5Bx1C,QAAS,KAAAvD,CAAA,AAAAA,EAAE,2BACb,uBAEA+8D,EAAc,6BAElB,YArD+CzxC,CAAM,mCAuDrD,IAAM+xC,KAAiB,+EACrB,GAAI,CAAC76D,EAAMyI,OAAO,CAChB,UAGF8xD,EAAcL,EAAYC,MAAM,mBAG9B,iCAAM,EAAA5uD,UAAA,mCAA6C,CAAC,CAClD9C,QAASzI,EAAMyI,OAAO,AACxB,kBAFA,SAGA,EAAAunC,KAAA,QAAa,CAAC,KAAAxyC,CAAA,AAAAA,EAAE,8BAEhB4zC,EAAOyY,UAAU,GACjB5tC,iCAEA,EAAA+zB,KAAA,MAAW,CAAC,KAAAxyC,CAAA,AAAAA,EAAE,kDAEd+8D,EAAc,6BAElB,+CA6BA,MA3BA,KAAAr0C,SAAA,EAAU,WACR,IAAM40C,EACJ96D,EAAMw5C,cAAc,EAAI,EAAAjS,sBAAA,QAA8B,CAClDl1B,EACJyoD,IAAwB,EAAAvzB,sBAAA,QAA8B,CAClD,KAAA/pC,CAAA,AAAAA,EAAE,WACF,KAAAA,CAAA,AAAAA,EAAE,gBAERsqB,EAASs5B,KAAK,CAAC,CACb9hD,SAAUU,EAAMo5C,gBAAgB,CAChCI,eAAgB,CACdp3C,MAAO04D,EACPzoD,MAAOA,CACT,CACF,EACF,EAAG,CAACrS,EAAM,EAEV,KAAAkmB,SAAA,EAAU,WACR4B,EAAS+iC,KAAK,CAAC,SAACzoD,CAAK,CAAE,CAAP,MAGV,CAFS,oBADU,EAAAlG,IAAA,EAErBw+D,EACE,CAAoB,OAApB,GAAAt4D,EAAMo3C,cAAc,AAAD,GAAnB,oBAAsBp3C,KAAK,AAAD,GAAK,EAAAmlC,sBAAA,QAA8B,CAGnE,EACF,EAAG,EAAE,EAGH,WAAC,EAAA7pB,KAAK,EACJ3B,OAAM,GACNtF,KAAK,KACLwF,QAASA,EACTgU,eAAe,SACftS,WAAU,aAEV,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,uBAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAArb,IAAI,EAAC2R,IAAI,OAAO1R,cAAc,mBAC7B,UAAC,EAAAylB,eAAe,EACdj2B,KAAK,iBACLmW,MAAO,KAAA7U,CAAA,AAAAA,EAAE,6BACT6D,QAAS,CACP,CACEe,MAAO,EAAAmlC,sBAAA,QAA8B,CACrCl1B,MAAO,KAAA7U,CAAA,AAAAA,EAAE,UACX,EACA,CACE4E,MAAO,EAAAmlC,sBAAA,OAA6B,CACpCl1B,MAAO,KAAA7U,CAAA,AAAAA,EAAE,eACX,EACD,GAEH,UAAC,SAAW,EACV2P,SAAS,OACTkF,MAAO,KAAA7U,CAAA,AAAAA,EAAE,qBACTtB,KAAK,WACLsS,IAAKmsD,EAAoB,IAAM13D,KAAAA,EAC/BoL,UAAWssD,EAAoB,EAAI,EACnCvsD,KAAMusD,EAAoB,GAAM,EAChClsD,gBAAe,GACf8T,MAAOo4C,EAAoB,IAAMv7D,YAKzC,UAAC,EAAA8e,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,EAAA5f,MAAM,EAAC8C,YAAY,YAAYhE,QAAS2M,WACtC,KAAAze,CAAA,AAAAA,EAAE,YAEJwC,EAAM+5D,WAAW,EAChB,UAAC,EAAAvpD,MAAM,EACL8C,YAAY,YACZpF,SAAUssD,EACVzpD,UAAWypD,EACXlrD,QAASurD,WAER,KAAAr9D,CAAA,AAAAA,EAAE,8BAGP,UAAC,EAAAgT,MAAM,EACL8C,YAAY,MACZpF,SAAUwiD,EACV3/C,UAAW2/C,EACXphD,QAASwY,EAAS1L,YAAY,CAACw+C,YAE9B,KAAAp9D,CAAA,AAAAA,EACC68D,EACI,2BACA,uCAQpB,wVC1PMU,EAAS,QAAQ,CAAC,CACtB/I,QAAS,QAAQ,GAAGzjD,GAAG,CAAC,EAAG,CACzBxN,QAAS,WAAM,CAAC,iBAClB,EACF,GAIam3D,EAAoB,SAACzvD,CAAO,EACvC,MAAQjL,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEHsqB,EAAW,KAAAzL,OAAA,EAAoB,CACnCtW,SAAU,KAAAg7C,WAAA,EAAYga,EACxB,GAEA,IAAMC,KAAY,iBAAOlyC,CAAM,MAepBjmB,EACa,IAAd0mD,wDAdN,yBAAI,CAAC9gD,EACH,UAGF,SAAM,EAAA8C,UAAA,6CAAuD,CAAC,CAC5D9C,QAAS,CAACA,EACVJ,YAAaygB,EAAOkpC,OAAO,AAC7B,kBAHA,SAKA,EAAAhiB,KAAA,QAAa,CAACxyC,EAAE,kBAEhB,EAAAuiB,YAAA,MAAkB,GAClB+H,EAASs5B,KAAK,sBAERmI,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,4BAGlB,YAtByBzgC,CAAM,mCA2C/B,MAAO,CACLmvC,sBApB4B,WACvBxvD,GAIL,EAAAsX,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,kBACTwiB,UAAW,iBACT,UAAC,EAAAiI,YAAY,oBAAKH,GAAA,UAChB,UAAC,EAAA6b,QAAQ,EAAaznC,KAAK,gBAG/B+jB,QAASziB,EAAE,cACX0iB,KAAM,kDACJ,MAAO,GAAA4H,EAAS1L,YAAY,CAAC4+C,OAC/B,EACF,EACF,CAIA,CACF,kgBC5CA,IAAM35C,EAAqB,cAAO,EAAAtJ,WAAW,OAiBhCkjD,EAAkB,kBAC7B/+C,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CACAqlB,EAAA,EAAAA,OAAA,CACAsd,EAAA,EAAAA,aAAA,CAEwC,eAAAtvC,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACR,eAAA5X,QAAA,IAAQ,GAAjCu1C,EAAyB,KAAfC,EAAe,KAC1B99C,EAAUoC,aAAaC,OAAO,CAAC,QAC/B83C,EAAU,KAAAtmC,OAAA,EAAoB,CAClCumC,KAAM,QACR,GAEA,KAAA18B,SAAA,EAAU,WAGR,GAAIg1C,MAFc9a,EAEd,OAAA8a,AAFc9a,EAEHt2C,WAAW,CAAE,CAC1B,IAAM1H,EAAQ,EAAA+iC,aAAA,KAAkB,CAC9B,SAAClkC,CAAM,QAAiB,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQmB,KAAK,AAAD,IAAM84D,AAJ5B9a,EAIsCt2C,WAAW,GAG7D1H,GACFugD,EAAQp/B,QAAQ,CAAC,cAAenhB,GAGlCkkD,EAXgBlG,EAYlB,CACF,EAAG,CAACA,EAAc,EAElB,KAAAl6B,SAAA,EAAU,WACRy8B,EAAQvB,KAAK,CAAC,WACTiF,GAEP,EAAG,CAACA,EAAS,EAEb,IAEI,OAAAzuC,aAAA,EAAc,CAAE1b,KAAM,cAAeub,QAASkrC,EAAQlrC,OAAO,AAAC,GADpD0jD,EAAA,mBACV,EADF7iD,KAAK,GAGP,IAAMsP,KAAgB,iBAAOkB,CAAM,MAClB,EAAT7nB,EAeG4B,EACa,IAAd0mD,wDAdR,GAFMtoD,EAAS6nB,MAAAA,EAAA,OAAmB,OAAnB,GAAAA,EAAQhf,WAAW,AAAD,GAAlB,oBAAqB1H,KAAK,CAErC,CAACg+C,CAAAA,MAAAA,EAAA,OAAAA,EAAe33C,OAAO,AAAD,GAAK,KAAAorB,KAAA,EAAM5yB,GACnC,UAGFynB,EAAgB,qBAEd,iCAAM,cAAS,KAAAud,mBAAA,EAAoBma,MAAAA,EAAA,OAAAA,EAAe33C,OAAO,EAAG,CAC1DvB,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBtlB,OAAQ,CAAE2F,YAAa7I,EAAQuH,QAAAA,CAAQ,CACzC,kBAHA,SAKAiV,IACAqlB,uBAEMymB,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAEpB,YAzB6BI,CAAM,mCA2BnC,MACE,WAAC,EAAApL,KAAK,EAAC3B,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,KAAKkH,WAAU,aACnE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,gBAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,UAACqP,EAAA,UACC,UAAC,EAAA8Q,eAAe,UACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,UACxB/1C,QAAS,EAAA8jC,aAAa,CACtB13B,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,MAAS,CAClC7uC,WAAU,IACN2jD,eAOhB,UAAC,EAAAj9C,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,EAAQvmC,YAAY,CAACwL,GAC9B1Z,SAAUua,EACV1X,UAAW0X,WAEV,KAAAjrB,CAAA,AAAAA,EAAE,UAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3C,KAAAjgB,CAAA,AAAAA,EAAE,sBAOjB,kzBClHA,IAAM4lD,EAAgB,cAAO,EAAA32C,IAAI,OAK3B2uD,EAAsB,cAAO,EAAApuD,GAAG,OAYzBkgC,EAAe,WAC1B,QA6MIlxC,EACAq/D,EACAp6D,EACAspD,EACAC,EACAyO,EACA75D,EACAk8D,EACAj6D,EArNI60B,EAAQ,KAAAC,OAAA,IAARD,GAAG,CACL1tB,EAAUoC,aAAaC,OAAO,CAAC,QAC7BtN,EAAiB,EAAA0vC,+BAAA,UAAyC,GAA1D1vC,YAAY,CAElB,IAAA0vC,+BAAA,UAAyC,GADnC1jC,EACN,EADMA,WAAW,CAAEO,EACnB,EADmBA,WAAW,CAExBtM,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACyC,eAAAsT,QAAA,EAAS,OAApD8oD,EAA2C,KAAxB2B,EAAwB,KACJ,gBAAAzqD,QAAA,EAAwB,SAA/D0qD,GAAuC,MAAtBC,GAAsB,MAE5C,gBAAA3qD,QAAA,EAAwD,SADnDsvC,GACL,MADoBmG,GACpB,MACI76C,GAAW,KAAAC,WAAA,IACXioC,GAAiB1d,EAAI,kBAMvB,QAAAsL,cAAA,EAAuD,CACzDC,SAAU,EAAAzjC,aAAa,CACvB4jC,gBAAiB,CAAErkC,aAAAA,EAAciL,QAAAA,EAASe,YAAAA,EAAaO,YAAAA,CAAY,CACrE,GANQ+L,GAGJ,GAHF5O,IAAI,CACJ67B,GAEE,GAFFA,OAAO,CACP/xB,GACE,GADFA,SAAS,CAMX,IAAM2qD,MAAiB,iBACrB17D,CAAK,MAGKiH,EAAA,wDAAS,gCAAM,cAAS,KAAAw+B,gBAAA,EAAiBzlC,GAAQ,CACvDkH,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBylC,aAAc,OACd/qD,OAAQ,CACNqE,QAAAA,CACF,CACF,kBANQvB,EAAS,SAATA,IAAI,CAQZ,EAAA0Y,SAAA,eAAwB,CAAC1Y,EAAO,oBAAyB,OAANjH,EAAM,sCAEzD,EAAAgwC,KAAA,MAAW,CAACxyC,EAAE,qBAAsB,CAAEg7D,OAAQ,KAAM,6BAExD,YAfEx4D,CAAK,mCAiBD27D,GAAc,YAClB,IAAMlzD,EAAUuS,AADK,EAAAA,GAAA,CACDmmB,QAAQ,CAAC14B,OAAO,CAEpC,MACE,UAAC,EAAA6I,IAAI,EAAChC,QAAS,kBAAMosD,GAAejzD,aAClC,UAAC,EAAAmwD,YAAY,MAGnB,EAEMgD,GAAY,WAChBL,EAAqB,CAAC3B,EACxB,EAEMiC,GAAsB,gBAAG7gD,EAAA,EAAAA,GAAA,CACvBvS,EAAUuS,EAAImmB,QAAQ,CAAC14B,OAAO,CAEpC,GAAI,CAACA,EACH,OAAO,KAGT,IAAMkrC,EAAiBzd,EAAI,kBACrB4e,EAAuB5e,EAAI,wBAOjC,MACE,WAACktB,EAAA,WACC,UAAC,EAAA9xC,IAAI,EAAChC,QAAS,kBAAMwsD,GAAUrzD,aAC7B,UAAC,EAAAg7C,gBAAgB,OAElB3O,GACC,UAAC,EAAAxjC,IAAI,EAAChC,QAXO,WACjBi3C,GAAiBvrC,EAAImmB,QAAQ,EAC7By6B,IACF,WASQ,UAAC,EAAAlY,QAAQ,OAIZ/P,GACC,UAAC,EAAAriC,IAAI,EAAChC,QAAS,kBAAMmsD,GAAmBhzD,aACtC,UAAC,EAAAqX,UAAU,SAKrB,EAEMg8C,GAAY,SAAC9/D,CAAE,EACnB0P,GAAS,CACP8F,GAAI,oEACJrN,OAAQ,CACN5G,aAAcA,EACdkL,QAASzM,CACX,CACF,EACF,EAEA,IAAM+/D,MAAc,+EAEhB,yBAAI,KAAAloC,KAAA,EAAM2nC,IACR,UAGF,SAAM,EAAAjwD,UAAA,mBAA6B,CAAC,CAClC9C,QAAS+yD,EACX,kBAFA,SAIA14B,kCAEA,EAAAkN,KAAA,MAAW,CACTxyC,EAAE,mBAAoB,CACpByxD,OAAQzxD,EAAE,SAASs5B,WAAW,EAChC,6BAGN,+CAIMklC,GAAsB,WAAa,CAEvC,WACA,MAAO,CACLhgE,GAAI,CACF2kC,OAAS,GAAmB,OAAjBnjC,EAAE,gBACb6/B,SAAU,UACV7pB,MAAO,IACT,EACA6nD,cAAe,CACb16B,OAAS,GAAiB,OAAfnjC,EAAE,cACb6/B,SAAU,gBACV7pB,MAAO,KACT,EACAvS,OAAQ,CACN0/B,OAAS,GAAc,OAAZnjC,EAAE,WACb6/B,SAAU,cACV7pB,MAAO,MACPstB,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,OAAY,UAAC,EAAAwxB,UAAU,EAAC3yB,OAAQmB,IAC3C,EACAmoD,YAAa,CACX5pB,OAAS,GAAkB,OAAhBnjC,EAAE,eACb6/B,SAAU,cACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQyhC,WAAW,AAAD,EACf,IAAMzhC,MAAAA,EAAA,OAAAA,EAAQyhC,WAAW,EAAEvO,MAAM,CAAC,cAClC,KAGV,EACAwO,iBAAkB,CAChB7pB,OAAS,GAAgB,OAAdnjC,EAAE,aACb6/B,SAAU,mBACV7pB,MAAO,MACPstB,KAAM,gBAAUhY,EAAA,EAAP9N,GAAG,CAAI8N,MAAM,OACpB,+BACG,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAQ0hC,gBAAgB,AAAD,EACpB,IAAM1hC,MAAAA,EAAA,OAAAA,EAAQ0hC,gBAAgB,EAAExO,MAAM,CAAC,cACvC,KAGV,EACAid,aAAc,CACZt4B,OAAQ,iBACN,UAAC,EAAA3zB,GAAG,EAACsJ,EAAE,OAAOrG,UAAU,iBACrBzS,EAAE,iBAGP6/B,SAAU,eACV7pB,MAAO,MACPstB,KAAM,gBAKG,EAA6B,EAL7B9lB,EAAA,EAAAA,GAAA,CACP,MACE,UAAC,EAAAhO,GAAG,EACFghB,WAAW,SACX/d,UAAU,iBACT,UAAE+K,MAAAA,EAAA,OAAW,OAAX,GAAAA,EAAK8N,MAAM,AAAD,GAAV,oBAAamwC,YAAY,CAAC,KAAyB,OAAtBj+C,MAAAA,EAAA,OAAW,OAAX,GAAAA,EAAK8N,MAAM,AAAD,GAAV,oBAAa1pB,QAAQ,GAE3D,CACF,EACAA,SAAU,CACRi+B,SAAU,WACVtM,KAAM,EACR,EACAuqC,YAAa,CACX36B,OAAS,GAAmB,OAAjBnjC,EAAE,gBACbxB,GAAI,cACJwX,MAAO,MACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAAC2gD,GAAA,CAAY3gD,IAAKA,IACvC,EACA3Z,QAAS,CACPs/B,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OACP,UAAC6gD,GAAA,CAAoB7gD,IAAKA,IAE9B,CACF,CACF,EAAG,EAAE,EAyCL,MACE,WAAC,EAAA2L,aAAa,EAACyI,QAASre,aACtB,WAACqqD,EAAA,WACC,UAAC,EAAA5iB,YAAY,KACb,UAAC,EAAAz1B,MAAM,EACLtV,aAAc3D,EACdgM,GAAG,QACH7H,SAAU,SAAC4B,CAAK,EACdnE,GAAS,CACP8F,GAAI,KACJxI,OAAQ,CACNc,YAAa+F,EAAMlC,MAAM,CAACvL,KAAK,CAC3B,CAACyN,EAAMlC,MAAM,CAACvL,KAAK,CACnBa,KAAAA,EACJsG,YAAAA,CACF,CACF,EACF,EACAuD,YAAatP,EAAE,UACfgW,MAAM,QACNynB,GAAG,OACHhuB,GAAI,WAEH,EAAAk4B,aAAA,IAAiB,CAAC,SAAC82B,CAAG,SACrB,AAAIA,EAAI75D,KAAK,GAAK,EAAAuxB,cAAA,UAAwB,CACjC,KAIP,UAAC,UAAuBvxB,MAAO65D,EAAI75D,KAAK,UACrC65D,EAAI5pD,KAAK,EADC4pD,EAAI75D,KAAK,CAI1B,KAEDwxC,IACC,WAAC,EAAApjC,MAAM,EACL8C,YAAY,MACZhE,QAAS,WACP5D,GAAS,CACP8F,GAAI,WACJxI,OAAQ,CACNO,YAAaA,MAAAA,EAAAA,EAAetG,KAAAA,CAC9B,CACF,EACF,YACD,KACIzF,EAAE,wBAKX,WAAC,EAAAkX,IAAI,YACH,UAAC,EAAA8F,KAAK,EAACuiB,OAAO,EA1FhB/gC,EASEggE,GATFhgE,EAAE,CACFq/D,EAQEW,GARFX,aAAa,CACbp6D,EAOE+6D,GAPF/6D,MAAM,CACNspD,EAMEyR,GANFzR,WAAW,CACXC,EAKEwR,GALFxR,gBAAgB,CAChByO,EAIE+C,GAJF/C,YAAY,CACZ75D,EAGE48D,GAHF58D,QAAQ,CACRk8D,EAEEU,GAFFV,WAAW,CACXj6D,EACE26D,GADF36D,OAAO,CAGT,AAAK60B,EAAI,iBAaF,CACLl6B,EACAq/D,EACAp6D,EACAspD,EACAC,EACAyO,EACA75D,EACAk8D,EACAj6D,EACD,CAtBQ,CACLrF,EACAq/D,EACAp6D,EACAspD,EACAC,EACAyO,EACA75D,EACAk8D,EACD,EAqEoCr0D,KAAM4O,KACxCuqC,IAAiBwZ,GAChB,UAAC,EAAAqB,eAAe,EACd/+C,YAAa09C,EACbn8C,WApLS,kBAAM89C,EAAqB,KAqLpCz4B,QAASA,GACTsd,cAAeA,KAGlBob,IACC,UAAC,EAAAhM,YAAY,EACXC,aAAcjyD,EAAE,gBAChBue,OAAQ,CAAC,CAACy/C,GACV/9C,WAAY,kBAAMg+C,GAAmB,OACrCvqC,QAAS6qC,UAMrB,sRCvWaG,EAAqB,gBAChCp0C,EAAA,EAAAA,QAAA,CAIQtqB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACyB,eAAAsT,QAAA,IAAQ,GAAnClH,EAA2B,KAAhBuyD,EAAgB,KAEhC,eAAArrD,QAAA,IAAQ,GADHsrD,EACL,KADmBC,EACnB,KAMY,EAAwB,KAAAp3C,QAAA,EACpC,EAAAqnB,YAAA,mBAA+B,IADzBrlC,IAAI,CA8BZ,MA1BA,KAAAif,SAAA,EAAU,WACR,MAAMo2C,KAAoB,6EACpB1yD,EAAW,MAAX,MAEA,SAAM,EAAA2B,UAAA,oCAA8C,CAAC,CACnD3B,UAAAA,CACF,WAUFyyD,EAR2BE,AAJzB,SAI0C5vD,GAAG,CAAC,SAAC6vD,CAAE,QAAM,CACvDp6D,MAAOo6D,EAAGxgE,EAAE,CACZqW,MAAOmqD,EAAGrsC,KAAK,CACf2c,KAAM0vB,CACR,kCAMJ,+CAEI5yD,IACFke,EAAS2L,UAAU,CAAC,eACpB6oC,IAEJ,EAAG,CAAC1yD,EAAU,EAGZ,UAAC,EAAAqe,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAAvR,KAAK,EAACvE,QAAS,YACd,UAAC,EAAAmgB,eAAe,EACd9f,MAAO7U,EAAE,WACT6D,QAnCuB,AAAjB,SAAiB,IAAE,CAAnB,EAoCNmW,WAAU,GACVtb,KAAK,UACL+R,SAAU,mBAAekuD,EAAZ,EAAA/5D,KAAA,KAEdwH,GACC,UAAC,EAAAuoB,eAAe,EACd9f,MAAO7U,EAAE,gBACT6D,QAAS+6D,EACT5kD,WAAU,GACVtb,KAAK,qBAMjB,2SC/DM2jD,EAAe,QAAW,CAC9B,CACEz9C,MAAO,eAAkB,GACzBiQ,MAAO,QAAW,EACpB,EACA,CACEytC,eAAgB,WAAM,CAAC,iBACzB,GAGIC,EAAmB,QAAW,CAAC,CACnCiN,QAASnN,EACT4c,YAAa5c,CACf,GAMauY,EAAiB,WAC5B,MAAQ56D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDiL,EAAY,EAAA0kC,cAAA,UAAwB,GAApC1kC,OAAO,CACTsuB,EAAc,IAAI,EAAAob,WAAW,CAE7BrqB,EAAW,KAAAzL,OAAA,EAAgD,CAC/DtW,SAAU,KAAAg7C,WAAA,EAAYhB,GACtB6C,KAAM,UACR,GAEA,IAAM8Z,KAAc,iBAClB5zC,CAAM,MAOe,EACD,EAMX7gB,EAEClH,wDAZR,6BADA+B,QAAQ0/B,GAAG,CAAC1Z,GACZ,GAAM,EAAAvd,UAAA,wBAAkC,CAAC,CACvC9C,QAAS,CAACA,EACVJ,YAAa,CACXwB,cAAeif,MAAAA,EAAA,OAAmB,OAAnB,GAAAA,EAAQ2zC,WAAW,AAAD,GAAlB,oBAAqBr6D,KAAK,CACzCu6D,aAAc7zC,MAAAA,EAAA,OAAe,OAAf,GAAAA,EAAQkkC,OAAO,AAAD,GAAd,oBAAiB5qD,KAAK,AACtC,CACF,kBANA,SAQA,EAAA2d,YAAA,MAAkB,GAClB,EAAAiwB,KAAA,QAAa,CAACxyC,EAAE,mDACTyK,CAAAA,EAAA,oBACU,EAAApH,QAAQ,GAGnBE,AAFEA,CAAAA,EAAUkH,EAAE9G,IAAI,AAAD,GAEN,AAAmB,UAAnB,OAAOJ,EACpB,EAAAivC,KAAA,MAAW,CAACjvC,GAEZ,EAAAivC,KAAA,MAAW,CAACxyC,EAAE,6CAItB,YAzBEsrB,CAAM,mCA0CR,MAAO,CACLqvC,gBAhBsB,KAAA37C,WAAA,EAAY,WAClC,EAAAuD,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,gBACTwiB,UAAW,iBACT,UAAC,EAAAuxB,mBAAmB,EAACC,OAAQza,WAC3B,UAAC,EAAAmlC,kBAAkB,EAACp0C,SAAUA,OAGlC7H,QAASziB,EAAE,UACX0iB,KAAM,kDACJ,MAAO,GAAA4H,EAAS1L,YAAY,CAACsgD,OAC/B,EACF,EACF,EAAG,EAAE,CAIL,CACF,8HCnFaxH,EAAwB,gBAAG9yD,EAAA,EAAAA,KAAA,CAGtC,MAAO,UAAC,EAAAiO,IAAI,WAFQjO,AAAU,IAAVA,EAAcA,EAAQ,IAG5C,qkBC2BA,IAAMif,EAAqB,cAAO,EAAAtJ,WAAW,OAcvCquC,EAAgB,CACpBpqD,GAAI,KACJq0C,mBAAoB,KACpBkF,SAAU,KACVqnB,cAAe,KACfC,cAAe,IACjB,EAYaC,EAAmB,kBAG9B5gD,EAAA,EAAAA,WAAA,CACAuB,EAAA,EAAAA,UAAA,CACAqlB,EAAA,EAAAA,OAAA,CACAsd,EAAA,EAAAA,aAAA,CAEwC,eAAAtvC,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACR,eAAA5X,QAAA,IAAQ,GAAjCu1C,EAAyB,KAAfC,EAAe,KAC1B2F,EAASjhC,CAAAA,CAAQo1B,EACf5iD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEK,EAA0B,KAAAu/D,yBAAA,IAAhC91D,IAAI,CAEZ,KAAAif,SAAA,EACE,WAKE,GAJI,CAACk6B,GACHkG,EAAYF,GAGVhG,EAAe,OA8CjB72B,GA7CkB,uBACVyzC,EAiBa,EACA,EACA,EACA,EAZX/1D,EAIAg2D,EAqBCp6D,EACa,IAAd0mD,wDAhCR,GAFMyT,EAAa5c,EAAclkD,IAAI,CAEjC,KAAA23B,KAAA,EAAMmpC,GACR,UAGFt0C,EAAgB,qBAED,iCAAM,EAAAnd,UAAA,gCAA0C,CAAC,CAC5DrP,KAAM8gE,CACR,kBAFM/1D,EAAO,SAIPg2D,EAAoC,CACxCjhE,GAAIokD,EAAcpkD,EAAE,CACpBE,KAAMkkD,EAAclkD,IAAI,CACxBq5C,SAAU6K,EAAc7K,QAAQ,CAChClF,mBAAoB+P,EAAcr3C,gBAAgB,CAClDm0D,cAAe,AAAAj2D,CAAAA,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUn7C,IAAI,AAAD,GAAK,GACjCihE,cAAe,AAAAl2D,CAAAA,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUp7C,IAAI,AAAD,GAAK,GACjC0gE,cAAe,AAAA31D,CAAAA,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUrhC,WAAW,AAAD,GAAK,GACxC6mD,cAAe,AAAA51D,CAAAA,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUthC,WAAW,AAAD,GAAK,GACxCye,UAAW2rB,EAAc3rB,SAAS,CAClC0H,cAAe,CACb/5B,MAAOg+C,EAAcjkB,aAAa,CAClC9pB,MAAO7U,EAAE4iD,EAAcjkB,aAAa,CACtC,CACF,EAEA,KAAA4a,eAAA,EAAgBkmB,GAAuBr4D,OAAO,CAAC,SAAC0T,CAAK,EACnDqqC,EAAQp/B,QAAQ,CAACjL,EAAO2kD,CAAqB,CAAC3kD,EAAM,CACtD,GAEAguC,EAAY2W,sBAEN1T,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAEpB,gDAGF,CACF,EACA,CAAC03B,EAAc,EAGjB,KAAAl6B,SAAA,EACE,WACEy8B,EAAQvB,KAAK,CAAC,WACTiF,GAEP,EACA,CAACA,EAAS,EAGZ,IAAM1D,EAAU,KAAAtmC,OAAA,EAAoB,CAClCumC,KAAM,SACN78C,SAAU,KAAAg7C,WAAA,EAAY,EAAAqc,iCAAiC,CACzD,GAEMC,EAAc,CAClB,CACEj7D,MAAO,GACPiQ,MAAO,EACT,EAOD,CAXmB,OAKlB,QAAG,KAAA0kC,eAAA,EAAgB,GAAoBpqC,GAAG,CAAC,SAACgoB,CAAI,EAC9C,MAAO,CACLvyB,MAAOuyB,EACPtiB,MAAO7U,EAAEm3B,EACX,CACF,KAGF,IAAM/M,KAAgB,iBAAOkB,CAAM,MAC3B5hB,EAWe,EAyCZrE,wDApDHqE,EAASk5C,EAAgB,MAAQ,wBAOrC,8BAJA13B,EAAgB,IAEhB5lB,QAAQ0/B,GAAG,CAAC1Z,GAEZ,GAAM,EAAAvd,UAAA,SAAmB,CAAE,GAAS,OAAPrE,EAAO,cAAY,CAAC,CAC/CmB,YAAa,CACXnM,KAAM4sB,EAAO5sB,IAAI,CACjBu4B,UAAW,CAAC,CAAC3L,CAAAA,MAAAA,EAAA,OAAAA,EAAQ2L,SAAS,AAAD,EAC7B0H,cAAerT,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAQqT,aAAa,AAAD,GAApB,oBAAuB/5B,KAAK,CAC3CiuC,mBAAoB,KAAA3d,QAAA,EAAS5J,EAAOunB,kBAAkB,EAClDvnB,EAAOunB,kBAAkB,CAACjuC,KAAK,CAC/B0mB,EAAOunB,kBAAkB,CAC7BqH,UAAW,CACT,CACEpzC,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQo0C,aAAa,AAAD,GAAK,GAChCI,YAAa,IACf,EACA,CACEh5D,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQq0C,aAAa,AAAD,GAAK,GAChCG,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ8zC,aAAa,AAAD,GAAK,GAChCU,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ+zC,aAAa,AAAD,GAAK,GAChCS,YAAa,IACf,EAEJ,CACF,kBA/BA,SAiCIx0C,CAAAA,MAAAA,EAAA,OAAAA,EAAS,QAAW,AAAX,GAAe,AAAmC,UAAnC,MAAOA,CAAAA,MAAAA,EAAA,OAAAA,EAAS,QAAW,CAAC,EAAE,AAAD,GACvD,EAAAvd,UAAA,6BAAuC,CAAC,CACtCrP,KAAM4sB,EAAO5sB,IAAI,CACjByJ,SAAU,CACRrJ,MAAOwsB,MAAAA,EAAA,OAAAA,EAAS,QAAW,CAAC,EAAE,AAChC,CACF,GAGF,EAAAknB,KAAA,QAAa,CAACxyC,EAAE,UAChBigB,IACAqlB,wBACO,SAEP,EAAAkN,KAAA,MAAW,CAACxyC,EAAE,uCAEdkrB,EAAgB,2BAEpB,YA3D6BI,CAAM,mCA6DnC,MACE,WAAC,EAAA84B,MAAM,EAAC7lC,OAAQG,EAAaD,QAASwB,EAAYhH,KAAK,eACrD,UAAC,EAAAorC,aAAa,KACd,WAAC,EAAAC,aAAa,YACZ,UAAC,EAAAC,YAAY,WACVvkD,EAAEyuD,EAAS,gBAAkB,kBAEhC,UAAC,EAAAjK,iBAAiB,KAClB,UAAC,EAAAC,UAAU,WACT,UAAC,EAAAh6B,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJhP,MAAM,KACNlF,SAAS,OACTjR,KAAK,OACLgS,SAAU,CAAC,CAACkyC,EACZ5oC,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAqB,OAAnB7U,EAAE,iBAAiB,SAC7B2P,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAqB,OAAnB7U,EAAE,iBAAiB,SAC7B2P,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO7U,EAAE,wBAET6D,QAvLe,AAAnB,SAAmB,IAAE,CAArB,EAwLInF,KAAK,uBAEP,UAAC,EAAAi2B,eAAe,EACdj2B,KAAK,gBACLmF,QAASg8D,EACThrD,MAAO7U,EAAE,uBACTga,WAAU,KAEZ,UAAC,EAAAuJ,QAAQ,EAAa7kB,KAAK,qBACxBsB,EAAE,oBAEL,UAAC,EAAA0lB,kBAAkB,EACjB7Q,MAAO7U,EAAE,gBACTtB,KAAK,WACLuR,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,QAAW,GAEtC,UAAC,EAAA1iB,QAAQ,EACPtxB,MAAQ,GAA4B,OAA1B7U,EAAE,wBAAwB,SACpCtB,KAAK,kBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA4B,OAA1B7U,EAAE,wBAAwB,SACpCtB,KAAK,gBACLuR,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,aAAgB,eAOrD,UAAC,EAAAlE,YAAY,EAAC/xB,eAAe,kBAC3B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,QAAW,EACV9c,YAAY,MACZhE,QAASqzC,EAAQvmC,YAAY,CAAC,kBAC5BwL,EAAc+6B,EAAQvvB,SAAS,MAEjCllB,SAAUua,WAETjrB,EAAE,UAEL,UAAC,QAAW,EAAC8V,YAAY,YAAYhE,QAASmO,WAC3CjgB,EAAE,sBAOjB,6JCxTau/D,EAA4B,WACvC,MAAO,KAAA93C,QAAA,EAAS,CACdC,SAAU,CAAC,oBAAoB,CAC/BC,QAAS,uBACDle,wDAAO,SAAM,EAAAsE,UAAA,uCAAiD,WASpE,MAAO,GAAA8sB,AAPYpxB,CAAAA,MAFbA,CAAAA,EAAO,UAEM,OAAAA,EAAM0F,GAAG,CAAC,SAACvQ,CAAQ,EACpC,MAAO,CACLgG,MAAOhG,MAAAA,EAAA,OAAAA,EAAUF,IAAI,CACrBmW,MAAOjW,MAAAA,EAAA,OAAAA,EAAUD,WAAW,AAC9B,CACF,EAAC,GAEoB,EAAE,IACzB,EACF,EACF,wQCFMohE,EAAwC,CAC5C,CACEn7D,MAAO,EAAAijC,aAAA,OAAoB,CAC3BhzB,MAAO,WAAM,CAAC,sBAChB,EACA,CACEjQ,MAAO,EAAAijC,aAAA,SAAsB,CAC7BhzB,MAAO,WAAM,CAAC,+BAChB,EACA,CACEjQ,MAAO,EAAAijC,aAAA,gBAA6B,CACpChzB,MAAO,WAAM,CAAC,+BAChB,EACD,CAEYmrD,EAAgC,SAC3C5sD,CAAK,EAEL,IAAQtQ,EAAyBsQ,EAAzBtQ,OAAO,CAAEm9D,EAAgB7sD,EAAhB6sD,WAAW,CACtB3c,EAAe,KAAAzkC,OAAA,IAGfqhD,EAAwB5c,EAAa+J,KAAK,CAAC,eAE3C8S,EAAW,KAAApxC,OAAA,EAAQ,WACvB,OAAQmxC,MAAAA,EAAA,OAAAA,EAAuBt7D,KAAK,EAClC,IAAK,kBACH,OAAO,EAAAw7D,2BAA2B,AAGpC,KAAK,kBACH,OAAO,EAAAC,iCAAiC,AAG1C,KAAK,SACH,OAAO,EAAAC,0BAA0B,AAGnC,SACE,OAAO,EAAApV,QAAQ,AAEnB,CACF,EAAG,CAACgV,EAAsB,EAgB1B,MAdA,KAAAx3C,SAAA,EACE,WACMu3C,GACF3c,EAAav9B,QAAQ,CACnB,cAEAg6C,EAAmB1gD,IAAI,CAAC,SAACkhD,CAAE,SAAKA,EAAG37D,KAAK,GAAKq7D,KAC3CF,CAAkB,CAAC,EAAE,CAG7B,EACA,CAACE,EAAY,EAIb,WAAC,EAAAlnD,KAAK,EAACvE,QAAS,YACb,CAAC1R,CAAAA,MAAAA,EAAA,OAAAA,EAAStE,EAAE,AAAD,GACV,UAAC,EAAAisB,YAAY,oBAAK64B,GAAA,UAChB,UAAC,EAAA3uB,eAAe,EACd9f,MAAO,WAAM,CAAC,gBACdnW,KAAK,cACLgS,SAAU8c,CAAAA,CAAQyyC,EAClBp8D,QAASk8D,OAIdI,IAAa,EAAAjV,QAAQ,CACpB,UAAC,EAAAA,QAAQ,KAET,UAACiV,EAAA,CAASvd,cAAe9/C,MAIjC,4hBC/DA,IAAM+gB,EAAqB,cAAO,EAAAtJ,WAAW,OAUvCimD,EAAY,SAChBl1C,CAAM,EAEN,IAAsB,EAAhBnM,EAAgBmM,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAQnM,aAAa,AAAD,GAApB,oBAAuBhQ,GAAG,CAC9C,SAACrJ,CAAI,SAAiBA,MAAAA,EAAA,OAAAA,EAAMlB,KAAK,GAGnC,MAAO,CACLlG,KAAM4sB,MAAAA,EAAA,OAAAA,EAAQ5sB,IAAI,CAClBqpB,aAAc,EAAAC,cAAA,gBAA8B,CAE5C7I,cAAeA,EACf+6B,UAAW,CACT,CACEpzC,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQo0C,aAAa,AAAD,GAAK,GAChCI,YAAa,IACf,EACA,CACEh5D,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQq0C,aAAa,AAAD,GAAK,GAChCG,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ8zC,aAAa,AAAD,GAAK,GAChCU,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ+zC,aAAa,AAAD,GAAK,GAChCS,YAAa,IACf,EACA,CACEh5D,IAAK,mBACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQm1C,kBAAkB,AAAD,GAAK,GACrCX,YAAa,IACf,EACA,CACEh5D,IAAK,mBACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQo1C,kBAAkB,AAAD,GAAK,GACrCZ,YAAa,IACf,EACA,CACEh5D,IAAK,kBACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQq1C,iBAAiB,AAAD,GAAK,GACpCb,YAAa,IACf,EACA,CACEh5D,IAAK,kBACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQs1C,iBAAiB,AAAD,GAAK,GACpCd,YAAa,IACf,EACD,AACH,CACF,EAEaM,EAA8B,gBAwHf,EAvH1Bxd,EAAA,EAAAA,aAAA,CAEM53C,EAAUoC,aAAaC,OAAO,CAAC,QAE/B83C,EAAU,KAAAtmC,OAAA,EAA6C,CAC3DumC,KAAM,SACN78C,SAAU,KAAAg7C,WAAA,EAAY,EAAAsd,+BAA+B,CACvD,GAEQC,EAAoB,KAAAC,cAAA,IAApBD,eAAe,CAsEvB,MApEA,KAAAp4C,SAAA,EAAU,WACR,EAAAoqB,cAAA,gBAA8B,CAAC,CAC7B3jC,IAAKqxD,EACLld,aAAc6B,CAChB,EACF,EAAG,EAAE,EAEL,KAAAz8B,SAAA,EAAU,WACR,GAAIk6B,EAAe,OAwDjB72B,GAvDkB,uBACVi1C,EAauB,EAgBV,EACA,EAEA,EACA,EACK,EACA,EACD,EACA,EA9Bbv3D,EAMFw3D,EAaAxB,EAkBCp6D,EACa,IAAd0mD,wDA3CR,GAAI,CAFEiV,CAAAA,EAAYpe,MAAAA,EAAA,OAAAA,EAAelkD,IAAI,AAAD,EAGlC,2BAIiB,iCAAM,cAAS,KAAAyqC,sBAAA,EAAuB63B,GAAY,CACjEt3D,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBtlB,OAAQ,CACNqE,QAAAA,CACF,CACF,kBALQvB,EAAS,SAATA,IAAI,CAMNw3D,EAAqBre,MAAAA,EAAA,OAA4B,OAA5B,GAAAA,EAAezjC,aAAa,AAAD,GAA3B,oBAA8BhQ,GAAG,CAC1D,SAACrJ,CAAI,EACH,IAA0B,EAApBo7D,EAAoB,YAAAx5B,cAAA,KAAmB,CAC3C,SAACy5B,CAAc,SAAKA,EAAev8D,KAAK,GAAKkB,MADrB,oBAEvB+O,KAAK,CAER,MAAO,CACLjQ,MAAOkB,EACP+O,MAAOqsD,CACT,CACF,GAGIzB,EAAwB,CAC5B/gE,KAAMkkD,MAAAA,EAAA,OAAAA,EAAelkD,IAAI,CACzByoB,UAAWy7B,MAAAA,EAAA,OAAAA,EAAez7B,SAAS,CACnCu4C,cAAej2D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUn7C,IAAI,CAC7BihE,cAAel2D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUp7C,IAAI,CAC7BygB,cAAe8hD,EACf7B,cAAe31D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUrhC,WAAW,CACpC6mD,cAAe51D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUthC,WAAW,CACpCioD,mBAAoBh3D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAU/4B,gBAAgB,CAC9C4/C,mBAAoBj3D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUh5B,gBAAgB,CAC9C6/C,kBAAmBl3D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAU3yB,eAAe,CAC5C05C,kBAAmBn3D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAU5yB,eAAe,CAC5Ca,aAAc+4C,EAAgBzhD,IAAI,CAChC,SAACq2B,CAAE,SAAKA,EAAG9wC,KAAK,GAAKg+C,EAAc76B,YAAY,EAEnD,EAEAo9B,EAAQvB,KAAK,CAAC6b,sBAER1T,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,6CAIlB,gDAGF,CACF,EAAG,CAACnJ,EAAc,EAGhB,UAAC,EAAAn4B,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJhP,MAAM,KACNlF,SAAS,OACTjR,KAAK,OACLgS,SAAU8c,CAAAA,CAAQo1B,EAClB5oC,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAmC,OAAjC,KAAA+kC,gBAAA,EAAiB,gBAAgB,SAC3CjqC,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAmC,OAAjC,KAAA+kC,gBAAA,EAAiB,gBAAgB,SAC3CjqC,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,iBACxB/1C,QAAS,EAAA6jC,cAAc,CACvB7S,kBAAmB,GACnBD,QAAO,GACP5a,WAAU,GACVtb,KAAK,kBAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,iBACxB/1C,QAASi9D,EACT9mD,WAAU,GACVtb,KAAK,iBAEP,UAAC,EAAAgnB,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,gBACxB3pC,aAAc2yC,MAAAA,EAAA,OAAwB,OAAxB,GAAAA,EAAez7B,SAAS,AAAD,GAAvB,oBAA0B3f,IAAI,CAAC,MAC7Cme,SAAU,GACVjnB,KAAK,cAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAAwC,OAAtC,KAAA+kC,gBAAA,EAAiB,qBAAqB,SAChDl7C,KAAK,uBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAAwC,OAAtC,KAAA+kC,gBAAA,EAAiB,qBAAqB,SAChDl7C,KAAK,uBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA0C,OAAxC,KAAA+kC,gBAAA,EAAiB,uBAAuB,SAClDl7C,KAAK,kBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA0C,OAAxC,KAAA+kC,gBAAA,EAAiB,uBAAuB,SAClDl7C,KAAK,kBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAAuC,OAArC,KAAA+kC,gBAAA,EAAiB,oBAAoB,SAC/Cl7C,KAAK,sBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAAuC,OAArC,KAAA+kC,gBAAA,EAAiB,oBAAoB,SAC/Cl7C,KAAK,+BAOnB,0eC/NA,IAAMmlB,EAAqB,cAAO,EAAAtJ,WAAW,OAUvCimD,EAAY,SAChBl1C,CAAM,EAEN,IAAsB,EAWN,EAXVnM,EAAgBmM,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAQnM,aAAa,AAAD,GAApB,oBAAuBhQ,GAAG,CAC9C,SAACrJ,CAAI,SAAiBA,MAAAA,EAAA,OAAAA,EAAMlB,KAAK,GAGnC,MAAO,CACLlG,KAAM4sB,EAAO5sB,IAAI,CAEjBygB,cAAeA,EACfiiD,iBAAkBl6D,MAAMC,OAAO,CAACmkB,EAAO81C,gBAAgB,EACnD91C,EAAO81C,gBAAgB,CAACjyD,GAAG,CAAC,SAACimB,CAAG,QAAK,CAACA,EAAIxwB,KAAK,GAC/C,EAAE,CACNmjB,aAAc,AAAmB,OAAnB,GAAAuD,EAAOvD,YAAY,AAAD,GAAlB,oBAAqBnjB,KAAK,CACxCs1C,UAAW,CACT,CACEpzC,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQo0C,aAAa,AAAD,GAAK,GAChCI,YAAa,IACf,EACA,CACEh5D,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQq0C,aAAa,AAAD,GAAK,GAChCG,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ8zC,aAAa,AAAD,GAAK,GAChCU,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ+zC,aAAa,AAAD,GAAK,GAChCS,YAAa,IACf,EACD,AACH,CACF,EAEaQ,EAA6B,gBA6Ed,EA5E1B1d,EAAA,EAAAA,aAAA,CAEQ5iD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACKqhE,EAAsB,KAAA55C,QAAA,EAClC,EAAAqnB,YAAA,wBAAoC,IAD9BrlC,IAAI,CAI8B,OAAAs3D,cAAA,IAAlCD,EAAkC,EAAlCA,eAAe,CAAE/4C,EAAiB,EAAjBA,YAAY,CAErCziB,QAAQ0/B,GAAG,CAAC,CAAEjd,aAAAA,CAAa,GAE3B,IAAc8gC,EAAa,KAAAyY,0BAAA,EACzB1e,EACA76B,GAFMte,IAAI,CAKZnE,QAAQ0/B,GAAG,CAAC6jB,GAEZ,IAAM1D,EAAU,KAAAtmC,OAAA,EAA2C,CACzDumC,KAAM,SACN78C,SAAU,KAAAg7C,WAAA,EAAY,EAAAge,6BAA6B,CACrD,GAeA,MAbA,KAAA74C,SAAA,EAAU,WACRy8B,EAAQvB,KAAK,CAAC,WACTiF,GAEP,EAAG,CAACA,EAAS,EAEb,KAAAngC,SAAA,EAAU,WACR,EAAAoqB,cAAA,gBAA8B,CAAC,CAC7BwQ,aAAc6B,EACdh2C,IAAKqxD,CACP,EACF,EAAG,EAAE,EAGH,UAAC,EAAA/1C,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJhP,MAAM,KACNlF,SAAS,OACTjR,KAAK,OACLgS,SAAU8c,CAAAA,CAAQo1B,CAAAA,MAAAA,EAAA,OAAAA,EAAepkD,EAAE,AAAD,EAClCwb,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAoB,OAAlB7U,EAAE,gBAAgB,SAC5B2P,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAoB,OAAlB7U,EAAE,gBAAgB,SAC5B2P,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO7U,EAAE,iBACT6D,QAAS,EAAA6jC,cAAc,CACvB7S,kBAAmB,GACnBn2B,KAAK,gBACLk2B,QAAO,GACP5a,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO7U,EAAE,iBACT6D,QAASi9D,EACT9mD,WAAU,GACVtb,KAAK,iBAEP,UAAC,EAAAgnB,kBAAkB,EACjB7Q,MAAO7U,EAAE,gBACTiQ,aAAc44C,MAAAA,EAAA,OAAmB,OAAnB,GAAAA,EAAU1hC,SAAS,AAAD,GAAlB,oBAAqB3f,IAAI,CAAC,MACxCme,SAAU,GACVjnB,KAAK,eAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA2B,OAAzB7U,EAAE,uBAAuB,SACnCtB,KAAK,kBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA2B,OAAzB7U,EAAE,uBAAuB,SACnCtB,KAAK,kBAEP,UAAC,EAAAi2B,eAAe,EACdj2B,KAAK,mBACLmW,MAAO7U,EAAE,gBACT6D,QAASw9D,EACTzsC,QAAO,cAOrB,+OC5Ja4sC,EAAoB,WAC/B,MACE,OAAAT,cAAA,IADMn0D,EACN,EADMA,UAAU,CAAE9J,EAClB,EADkBA,OAAO,CAAEm9D,EAC3B,EAD2BA,WAAW,CAAEztC,EACxC,EADwCA,QAAQ,CAAErjB,EAClD,EADkDA,GAAG,CAAEm0C,EACvD,EADuDA,YAAY,CAE7DtjD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAGP,OAAAyhE,oBAAA,IADMC,EACN,EADMA,WAAW,CAAEC,EACnB,EADmBA,SAAS,CAG9B,IAAM/iD,KAAe,uBAWb0M,wDAVN,GAAI,CAACg4B,GAAgB,AAAe,YAAf,OAAOn0C,EAC1B,UAGc,SAAMm0C,EAAaqJ,OAAO,WAE1C,GAAI,CAFY,SAGd,UAKF,OAFMrhC,EAASg4B,EAAa1tB,SAAS,GAE9B,GAAA8rC,EAAY,CACjB7E,SAAUrvC,CAAAA,CAAQ1qB,CAAAA,MAAAA,EAAA,OAAAA,EAAStE,EAAE,AAAD,EAC5B8sB,OAAAA,EACAnc,IAAKA,CACP,MACF,+CAiBA,MAfA,KAAAuZ,SAAA,EACE,WACMi5C,GACF,EAAApoC,WAAA,eACiB,CAAC,CACd7R,SAAU,CAAC,oBAAqB9a,EAAW,AAC7C,GACC5H,IAAI,CAAC,WACJ,EAAA8tC,cAAA,MAAoB,EACtB,EAEN,EACA,CAAC6uB,EAAU,EAIX,WAAC,EAAAvd,MAAM,EACLnrC,KAAK,KACLsF,OAAQiU,EACRlO,UAAU,QACV7F,QAAS,kBAAM,EAAAq0B,cAAA,MAAoB,cAEnC,UAAC,EAAAuR,aAAa,KACd,WAAC,EAAAC,aAAa,YACZ,UAAC,EAAAE,iBAAiB,KAClB,UAAC,EAAAD,YAAY,WACIvkD,EAAE,AAAhB8C,CAAAA,MAAAA,EAAA,OAAAA,EAAStE,EAAE,AAAD,EAAM,eAAoB,iBAGvC,UAAC,EAAAimD,UAAU,WACT,UAAC,EAAAub,6BAA6B,EAC5Bl9D,QAASA,EACTm9D,YAAaA,MAIjB,WAAC,EAAAtb,YAAY,YACX,UAAC,EAAA3xC,MAAM,EACLL,QAAQ,UACRlD,GAAI,EACJqC,QAAS,kBAAM,EAAAghC,cAAA,MAAoB,aAElC9yC,EAAE,YAEL,UAAC,EAAAmT,WAAW,EAAC2C,YAAY,OAAOhE,QAAS8M,WACtC5e,EAAE,kBAMf,qhBCvEA,IAAM6jB,EAAqB,cAAO,EAAAtJ,WAAW,OAUvCqnD,EAAU,SACdt2C,CAAM,EAEN,IAAsB,EAOT,EAPPnM,EAAgBmM,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAQnM,aAAa,AAAD,GAApB,oBAAuBhQ,GAAG,CAC9C,SAACrJ,CAAI,SAAiBA,MAAAA,EAAA,OAAAA,EAAMlB,KAAK,GAGnC,MAAO,CACLlG,KAAM4sB,MAAAA,EAAA,OAAAA,EAAQ5sB,IAAI,CAClBqpB,aAAc,EAAAC,cAAA,gBAA8B,CAC5C8C,UAAW,AAAAQ,CAAAA,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAAQR,SAAS,AAAD,GAAhB,oBAAmBlmB,KAAK,AAAD,EAAI,GAEtCua,cAAeA,EACf+6B,UAAW,CACT,CACEpzC,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQo0C,aAAa,AAAD,GAAK,GAChCI,YAAa,IACf,EACA,CACEh5D,IAAK,OACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQq0C,aAAa,AAAD,GAAK,GAChCG,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ8zC,aAAa,AAAD,GAAK,GAChCU,YAAa,IACf,EACA,CACEh5D,IAAK,cACLlC,MAAO,AAAA0mB,CAAAA,MAAAA,EAAA,OAAAA,EAAQ+zC,aAAa,AAAD,GAAK,GAChCS,YAAa,IACf,EACD,AACH,CACF,EAEaO,EAAoC,gBAC/Czd,EAAA,EAAAA,aAAA,CAEM53C,EAAUoC,aAAaC,OAAO,CAAC,QAC7ByzD,EAAoB,KAAAC,cAAA,IAApBD,eAAe,CAEvB,KAAAp4C,SAAA,EAAU,WACR,GAAIk6B,EAAe,OA2DjB72B,GA1DkB,uBAOW,EANrBi1C,EAMAa,EAWuB,EAgBV,EACA,EACA,EACA,EAzBTp4D,EAMFw3D,EAaAxB,EAiBCp6D,EACa,IAAd0mD,wDA9CR,GAAI,CAFEiV,CAAAA,EAAYpe,MAAAA,EAAA,OAAAA,EAAelkD,IAAI,AAAD,EAGlC,UAGImjE,EAAqB,YAAAC,eAAA,KAAoB,CAC7C,SAACh8D,CAAI,SAAiBA,EAAKlB,KAAK,GAAKg+C,CAAAA,MAAAA,EAAA,OAAAA,EAAe93B,SAAS,AAAD,MADnC,oBAExBjW,KAAK,kBAGW,iCAAM,cAAS,KAAAs0B,sBAAA,EAAuB63B,GAAY,CACjEt3D,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBtlB,OAAQ,CACNqE,QAAAA,CACF,CACF,kBALQvB,EAAS,SAATA,IAAI,CAMNw3D,EAAqBre,MAAAA,EAAA,OAA4B,OAA5B,GAAAA,EAAezjC,aAAa,AAAD,GAA3B,oBAA8BhQ,GAAG,CAC1D,SAACrJ,CAAI,EACH,IAA0B,EAApBo7D,EAAoB,YAAAx5B,cAAA,KAAmB,CAC3C,SAACy5B,CAAc,SAAKA,EAAev8D,KAAK,GAAKkB,MADrB,oBAEvB+O,KAAK,CAER,MAAO,CACLjQ,MAAOkB,EACP+O,MAAOqsD,CACT,CACF,GAGIzB,EAA4D,CAChE/gE,KAAMkkD,MAAAA,EAAA,OAAAA,EAAelkD,IAAI,CACzBygB,cAAe8hD,EACfvB,cAAej2D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUn7C,IAAI,CAC7BihE,cAAel2D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUp7C,IAAI,CAC7B0gE,cAAe31D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMowC,EAAE,AAAD,GAAP,oBAAUrhC,WAAW,CACpC6mD,cAAe51D,MAAAA,EAAA,OAAQ,OAAR,GAAAA,EAAMqwC,EAAE,AAAD,GAAP,oBAAUthC,WAAW,CACpCsS,UAAW,CACTlmB,MAAOg+C,MAAAA,EAAA,OAAAA,EAAe93B,SAAS,CAC/BjW,MAAOgtD,CACT,EACA95C,aAAc+4C,EAAgBzhD,IAAI,CAChC,SAACq2B,CAAE,SAAKA,EAAG9wC,KAAK,GAAKg+C,EAAc76B,YAAY,EAEnD,EAEAo9B,EAAQvB,KAAK,CAAC6b,sBAER1T,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,6CAIlB,gDAGF,CACF,EAAG,CAACnJ,EAAc,EAElB,KAAAl6B,SAAA,EAAU,WAER,EAAAoqB,cAAA,gBAA8B,CAAC,CAC7BwQ,aAAc6B,EACdh2C,IAAKyyD,CACP,EACF,EAAG,EAAE,EAEL,IAAMzc,EAAU,KAAAtmC,OAAA,EAA4C,CAC1DumC,KAAM,SACN78C,SAAU,KAAAg7C,WAAA,EAAY,EAAAwe,8BAA8B,CACtD,GAEA,MACE,UAAC,EAAAt3C,YAAY,oBAAK06B,GAAA,UAChB,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJhP,MAAM,KACNlF,SAAS,OACTjR,KAAK,OACLgS,SAAU8c,CAAAA,CAAQo1B,EAClB5oC,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,iBACxB/1C,QAAS,EAAA6jC,cAAc,CACvB7S,kBAAmB,GACnBD,QAAO,GACP5a,WAAU,GACVtb,KAAK,kBAEP,UAAC,SAAK,EACJmW,MAAQ,GAAmC,OAAjC,KAAA+kC,gBAAA,EAAiB,gBAAgB,SAC3CjqC,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAQ,GAAmC,OAAjC,KAAA+kC,gBAAA,EAAiB,gBAAgB,SAC3CjqC,SAAS,OACTjR,KAAK,gBACLsb,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,iBACxB/1C,QAASi9D,EACT9mD,WAAU,GACVtb,KAAK,iBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA0C,OAAxC,KAAA+kC,gBAAA,EAAiB,uBAAuB,SAClDl7C,KAAK,kBAEP,UAAC,EAAAynC,QAAQ,EACPtxB,MAAQ,GAA0C,OAAxC,KAAA+kC,gBAAA,EAAiB,uBAAuB,SAClDl7C,KAAK,kBAEP,UAAC,EAAAi2B,eAAe,EACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,oBACxB/1C,QAAS,EAAAi+D,eAAe,CACxB9nD,WAAU,GACVtb,KAAK,qBAMjB,2PC9Ma+iE,EAAuB,WAGlC,MAAQzhE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MAAO,KAAAmhD,WAAA,EAAY,CACjBC,YAAa,CAAC,sBAAsB,CACpCC,UAAU,IAAE,iBAAO50B,CAAI,MAMA,EADbnB,EAAQuxC,EAAU1tD,EACpB4Y,EACAf,EAaEg7C,EAGE75D,EAeD9C,wDAjCDimB,EAA0BmB,EAA1BnB,MAAM,CAAEuxC,EAAkBpwC,EAAlBowC,QAAQ,CAAE1tD,EAAQsd,EAARtd,GAAG,CACvB4Y,EAAe,AAAmB,OAAnB,GAAAuD,EAAOvD,YAAY,AAAD,GAAlB,oBAAqBnjB,KAAK,CACzCoiB,EAAc7X,EAAImc,8CAGlBuxC,EAAU,MAAV,MACF,SAAM,EAAA9uD,UAAA,oBAA8B,CAAC,CACnClD,YAAa,mBAAKmc,GAAA,CAAae,aAAAA,GACjC,kBAFA,sBAIA,SAAM,EAAAha,UAAA,qBAA+B,CAAC,CACpClD,YAAa,mBAAKmc,GAAA,CAAae,aAAAA,GACjC,WAFA,8BAOEi6C,CAAAA,AAFEA,CAAAA,EAAY12C,EAAO22C,UAAU,EAAI32C,EAAOnE,SAAS,AAAD,GAErC66C,CAAS,CAAC,EAAE,WAAYtW,IAAG,EAAxC,YAKF,OAJMvjD,EAAW,IAAI+5D,SAErBF,EAAU56D,OAAO,CAAC,SAACqf,CAAI,SAAKte,EAAStB,MAAM,CAAC,SAAU4f,KAEtD,GAAM,cACJ,KAAAsiB,mBAAA,EAAoBzd,MAAAA,EAAA,OAAAA,EAAQ5sB,IAAI,EAChC,CACEgL,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAMtB,CACR,EACA,CAAE,eAAgB,qBAAsB,WAN1C,iCAUF,EAAAqqC,KAAA,QAAa,CAACxyC,EAAE,kDACTqF,CAAAA,EAAA,oBACc,EAAAhC,QAAQ,EAAI,AAAsB,UAAtB,OAAOgC,EAAM1B,IAAI,EAChD,EAAA6uC,KAAA,MAAW,CAACntC,EAAM1B,IAAI,2BAG5B,YA3CmB8oB,CAAI,kCA4CzB,EACF,+MC7CM01C,EAAe,KAAAjvC,WAAA,EAmBlB,CACDnL,aAAc,KACdnb,WAAY,KACZ4lB,SAAU,GACV1vB,QAAS,KACTwgD,aAAc,KACd2c,YAAa,KACb9wD,IAAK,IACP,GAEa2jC,EAAiB,KAAAxf,SAAA,EAAU6uC,EAAc,CACpDpgD,KAAM,SACJkN,CAAK,CACLwF,CAAO,EAOP,MAAO,mBACFxF,GAAA,CACHnsB,QAAS2xB,EAAQ3xB,OAAO,CACxBm9D,YAAaxrC,EAAQwrC,WAAW,CAChCl4C,aAAc0M,EAAQ1M,YAAY,CAClCnb,WAAY6nB,EAAQ7nB,UAAU,CAC9B4lB,SAAU,IAEd,EAEA4vC,gBAAiB,SACfnzC,CAAK,CACLwF,CAAO,EAcP,MAAO,WACFxF,EACAwF,EAEP,EAEA9R,MAAO,WACL,MAAO,CACL6P,SAAU,GACV1vB,QAAS,KACTwgD,aAAc,KACd2c,YAAa,KACb9wD,IAAK,KACL4Y,aAAc,KACdnb,WAAY,IACd,CACF,CACF,GAEam0D,EAAiB,WAC5B,IAAc,EAAyB,KAAAt5C,QAAA,EACrC,EAAAqnB,YAAA,oBAAgC,IAD1BrlC,IAAI,CAIZ,MAAO,mBACF,KAAA4oB,OAAA,EAAQ8vC,IAAA,CACXrB,gBAN8B,AAAlB,SAAkB,IAAE,CAApB,GAQhB,4HCtGauB,EAAqB,CAChCC,eAAgB,SAACx/D,CAAO,EACtB,GAAI,CAACA,EACH,OAAO,KAKT,OAFwBA,EAAQilB,YAAY,EAG1C,KAAK,EAAAC,cAAA,gBAA8B,CACjC,OAAO,EAAA6f,aAAA,SAAsB,AAG/B,MAAK,EAAA7f,cAAA,gBAA8B,CACjC,OAAO,EAAA6f,aAAA,gBAA6B,AAGtC,SACE,OAAO,EAAAA,aAAA,OAAoB,AAE/B,CACF,EAEA06B,2BAA4B,SAACtC,CAAW,EACtC,OAAQA,GACN,KAAK,EAAAp4B,aAAA,SAAsB,CACzB,OAAO,WAAM,CAAC,4BAGhB,MAAK,EAAAA,aAAA,gBAA6B,CAChC,OAAO,WAAM,CAAC,kCAGhB,SACE,OAAO,WAAM,CAAC,cAElB,CACF,CACF,+OC3CMwa,EAAe,QAAW,CAC9B,CACEz9C,MAAO,OAAU,CAAC,CAAC,eAAkB,GAAI,QAAW,GAAG,EACvDiQ,MAAO,eAAkB,GAAG6tC,QAAQ,EACtC,EACA,CACEJ,eAAgB,WAAM,CAAC,iBACzB,GAGIkgB,EAAmB,QAAW,CAAC,CACnCr7C,UAAW,OACH,CAAC,OAAU,CAAC,CAAC,QAAW,GAAI,YAAe,CAACukC,MAAM,GACvDlc,QAAQ,GACRkT,QAAQ,GACXuf,WAAY,OAAU,CAAC,YAAe,CAACvW,OAAOlc,QAAQ,GAAGkT,QAAQ,EACnE,GAEa+f,EAAgC,QAAW,CAAC,CACvD/jE,KAAM,QACG,CAAC,CACNq1D,mBAAoB,WAAM,CAAC,iBAC7B,GACChjD,GAAG,CAAC,EAAG,CACNxN,QAAS,WAAM,CAAC,iBAClB,GACFm8D,cAAe,QACN,CAAC,CACN3L,mBAAoB,WAAM,CAAC,iBAC7B,GACChjD,GAAG,CAAC,EAAG,CACNxN,QAAS,WAAM,CAAC,iBAClB,GACFo8D,cAAe,QACN,CAAC,CACN5L,mBAAoB,WAAM,CAAC,iBAC7B,GACChjD,GAAG,CAAC,EAAG,CACNxN,QAAS,WAAM,CAAC,iBAClB,GACF4b,cAAe,OAAU,CAACkjC,EAAc,CACtCC,eAAgB,WAAM,CAAC,iBACzB,GACA8c,cAAe,eAAkB,GAAG5vB,QAAQ,GAAGkT,QAAQ,GACvD2c,cAAe,eAAkB,GAAG7vB,QAAQ,GAAGkT,QAAQ,GACvD36B,aAAcs6B,CAChB,GAEakf,EAAgC,QACpC,CAAC,CACNH,iBAAkB,OAAU,CAAC/e,GAAc7S,QAAQ,EACrD,GACCkzB,KAAK,CAACD,GACNC,KAAK,CAACF,GAEI3B,EAAkC,QACtC,CAAC,CACNJ,mBAAoB,QACX,CAAC,CACN1M,mBAAoB,WAAM,CAAC,iBAC7B,GACCvkB,QAAQ,GACRkT,QAAQ,GACXge,mBAAoB,QACX,CAAC,CACN3M,mBAAoB,WAAM,CAAC,iBAC7B,GACCvkB,QAAQ,GACRkT,QAAQ,GACXie,kBAAmB,QACV,CAAC,CACN5M,mBAAoB,WAAM,CAAC,iBAC7B,GACCvkB,QAAQ,GACRkT,QAAQ,GACXke,kBAAmB,QACV,CAAC,CACN7M,mBAAoB,WAAM,CAAC,iBAC7B,GACCvkB,QAAQ,GACRkT,QAAQ,EACb,GACCggB,KAAK,CAACD,GACNC,KAAK,CAACF,GAEIT,EAAiC,QACrC,CAAC,CACNj3C,UAAWu3B,CACb,GACCqgB,KAAK,CAACD,yLCpFInB,EAA6B,SACxCx+D,CAAO,CACPilB,CAAY,EAEZ,IAAQ+4C,EAAoB,KAAAC,cAAA,IAApBD,eAAe,CAEvB,MAAO,KAAAr5C,QAAA,EAA4C,CACjDC,SAAU,CAAC,eAAgB5kB,MAAAA,EAAA,OAAAA,EAAStE,EAAE,CAAC,CACvCmpB,QAAS,uBAYoB,EAaV,EACA,EAGA,EACA,EAtBXuyB,EAIA+mB,wDAXN,GAAI,CAACn+D,CAAAA,MAAAA,EAAA,OAAAA,EAASpE,IAAI,AAAD,EAEf,MAAO,IACLqpB,aAAc+4C,EAAgBzhD,IAAI,CAAC,SAACq2B,CAAE,SAAK3tB,IAAiB2tB,EAAG9wC,KAAK,EACtE,GAGgB,SAAM,EAAAmJ,UAAA,6BAAuC,CAAC,CAC9DrP,KAAMoE,MAAAA,EAAA,OAAAA,EAASpE,IAAI,AACrB,WA2CA,OA7CMw7C,EAAY,SAIZ+mB,EAAqBn+D,MAAAA,EAAA,OAAsB,OAAtB,GAAAA,EAASqc,aAAa,AAAD,GAArB,oBAAwBhQ,GAAG,CAAC,SAACrJ,CAAI,EAC1D,IAA0B,EAApBo7D,EAAoB,YAAAx5B,cAAA,KAAmB,CAC3C,SAACy5B,CAAc,SAAKA,EAAev8D,KAAK,GAAKkB,MADrB,oBAEvB+O,KAAK,CAER,MAAO,CACLjQ,MAAOkB,EACP+O,MAAOqsD,CACT,CACF,GAgCO,GA9B0D,CAC/DxiE,KAAMoE,EAAQpE,IAAI,CAClBghE,cAAexlB,MAAAA,EAAA,OAAa,OAAb,GAAAA,EAAWL,EAAE,AAAD,GAAZ,oBAAen7C,IAAI,CAClCihE,cAAezlB,MAAAA,EAAA,OAAa,OAAb,GAAAA,EAAWJ,EAAE,AAAD,GAAZ,oBAAep7C,IAAI,CAElCygB,cAAe8hD,GAAsB,EAAE,CACvC7B,cAAellB,MAAAA,EAAA,OAAa,OAAb,GAAAA,EAAWL,EAAE,AAAD,GAAZ,oBAAerhC,WAAW,CACzC6mD,cAAenlB,MAAAA,EAAA,OAAa,OAAb,GAAAA,EAAWJ,EAAE,AAAD,GAAZ,oBAAethC,WAAW,CACzC2O,UAAWrkB,EAAQqkB,SAAS,EAAI,EAAE,CAElCY,aAAc+4C,EAAgBzhD,IAAI,CAAC,SAACq2B,CAAE,SACpC3tB,EACIA,IAAiB2tB,EAAG9wC,KAAK,CACzB8wC,EAAG9wC,KAAK,GAAK9B,EAAQilB,YAAY,GAMvCq5C,iBAAkBl6D,MAAMC,OAAO,CAACrE,EAAQs+D,gBAAgB,EACpDt+D,EAAQs+D,gBAAgB,CAACjyD,GAAG,CAAC,SAAC3Q,CAAE,QAAM,CAAEoG,MAAOpG,EAAIqW,MAAO,IAAK,MAQrE,KAGF,EACF,EACF,yOC/DM0tC,EAAmB,QAAW,CAAC,CACnC97B,KAAM,OAAU,CAAC,YAAe,CAACilC,OAAOlc,QAAQ,GAAGkP,OAAO,EAC5D,GAIajM,EAAgB,WAC3B,IAAMnoB,EAAW,KAAAzL,OAAA,EAA6B,CAC5CtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAMA,MAJA,KAAA75B,SAAA,EAAU,WACR,EAAAnG,YAAA,cAA0B,CAAC+H,EAC7B,EAAG,CAACA,EAAS,EAGX,UAAC,EAAAG,YAAY,oBAAKH,GAAA,UAChB,UAAC,EAAAvR,KAAK,EAACvE,QAAS,WACd,UAAC,EAAAkR,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,cACxBj0B,SAAU,GACVjnB,KAAK,OACLknB,OAAQ,CAAE,WAAY,CAAC,OAAO,AAAC,QAKzC,kSChBaksB,EAAmB,WAC9B,IAAyC,EAAnB,KAAAkP,mBAAA,IAAdv3C,IAAI,CAAJA,EAAA,WAAO,EAAE,GACgC,eAAA6J,QAAA,EAC/C7N,KAAAA,GAAA,GADKk9D,EAA0C,KAApBC,EAAoB,KAG3CC,EAAoB,KAAAniB,4BAAA,IACpBoiB,EAAiB,KAAA/zC,OAAA,EAAQ,iBAC7B,CAAI8zC,GAIG,EAAAvhC,cAAA,eAA6B,CAAC73B,EACvC,EAAG,CAACA,EAAMo5D,EAAkB,EAE1B,OAAA3hB,wBAAA,IADmB6hB,EACnB,EADMrB,WAAW,CAA2BsB,EAC5C,EADiCC,SAAS,CAmC5C,MACE,WAAC,EAAA95C,aAAa,EAACyI,QAASoxC,YACtB,UAAC,EAAAE,SAAS,EACR7zD,MAAOszD,EACPQ,YAAW,GACX1yD,SAAU,SAAC2yD,CAAa,EACO,UAAzB,OAAOA,GACTR,EAAiBQ,EAErB,WAEA,UAAC,EAAAjjC,eAAe,EAACX,UA3CiB,SAACr1B,CAAM,EAC7C,IAAQb,EAAwBa,EAAxBb,MAAM,CAAE+5D,EAAgBl5D,EAAhBk5D,WAAW,CAE3B,GAAKA,GAIL,IAAMC,EAAgB75D,EAAK4V,IAAI,CAC7B,SAACnO,CAAC,CAAE7B,CAAK,SAAKA,IAAUszD,IAM1BI,EAAa,CACXl2C,iBAAkBpjB,EAClB63C,WALiBh4C,EAAO+F,KAAK,CAM7BkyC,SALe8hB,EAAYh0D,KAAK,CAMhCmyC,UAAW,SAAC+hB,CAAa,EACvB,GAAIA,EAAe,CACjB,IAAMC,EAAyBD,EAAcxvC,SAAS,CACpD,SAAC8vB,CAAE,SAAKA,EAAGrlD,EAAE,GAAK8kE,CAAAA,MAAAA,EAAA,OAAAA,EAAe9kE,EAAE,AAAD,IAGhCglE,EAAyB,IAC3BZ,EAAiBY,EAErB,CACF,CACF,GACF,WAcQ,UAAC,EAAA9iC,SAAS,EACRC,YAAY,yBACZ76B,KAAK,+BAEJ,SAAC86B,CAAQ,CAAE6iC,CAAQ,EAClB,MACE,WAAC,yBACK7iC,EAASE,cAAc,GAC3BxS,IAAKsS,EAASC,QAAQ,CACtBrc,MAAO,EAAA8c,cAAA,aAA2B,CAACmiC,EAASC,cAAc,YAEzDj6D,MAAAA,EAAA,OAAAA,EAAM0F,GAAG,CAAC,SAACvQ,CAAQ,CAAEyQ,CAAK,EACzB,MACE,UAAC,EAAA0xB,SAAS,EAERC,YAAapiC,EAASJ,EAAE,CAACiI,QAAQ,GACjC4I,MAAOA,EACPs0D,eAAgB,CAACb,WAEhB,SAACc,CAAY,CAAEC,CAAY,EAC1B,MACE,UAAC,uBACCv1C,IAAKs1C,EAAa/iC,QAAQ,EACtB+iC,EAAaziC,cAAc,GAC/B3c,MAAO,EAAA8c,cAAA,aAA2B,CAChCuiC,EAAaxiC,UAAU,CACvBuiC,EAAaziC,cAAc,CAAC3c,KAAK,WAGnC,UAAC,EAAAs/C,YAAY,EAEXllE,SAAUA,EACV+kE,eAAgB,CAACb,EACjBiB,WACEjB,EACE,UAAC,yBAAQc,EAAaliC,eAAe,YACnC,UAAC,EAAAtT,oBAAoB,QAErB,MARDxvB,EAASF,IAAI,IAa1B,GA7BKE,EAASF,IAAI,CAgCxB,GACCkiC,EAAStxB,WAAW,IAG3B,QAIN,UAAC,EAAA00D,qBAAqB,KACtB,UAAC,EAAAxC,iBAAiB,OAGxB,yLC7HayC,EAAmB,SAAC7wD,CAAK,EACpC,IAAQxU,EAA0BwU,EAA1BxU,QAAQ,CAAEqhE,EAAgB7sD,EAAhB6sD,WAAW,CACvBiE,EAAgB,CAAC,KAAA7tC,KAAA,EAAMz3B,EAAS2M,gBAAgB,EAEtD,MACE,WAAC,EAAA0D,IAAI,YACH,UAAC,EAAA+D,MAAM,EACLiG,KAAK,KACLwkB,GAAI,EACJhuB,GAAI,EACJqC,QAAS,kBACP,EAAAghC,cAAA,KAAmB,CAAC,CAClBhwC,QAAS,KACTm9D,YAAAA,EACAl4C,aAAcnpB,EAASF,IAAI,CAC3BkO,WAAYhO,EAASJ,EAAE,AACzB,aAGD,EAAA6jE,kBAAA,2BAA6C,CAACpC,KAEhD,CAACiE,GACA,UAAC,EAAAlxD,MAAM,EACLiG,KAAK,KACLwkB,GAAI,EACJhuB,GAAI,EACJqC,QAAS,kBACP,EAAA8gC,eAAA,KAAoB,CAAC,CACnBh0C,SAAU,KACVi0C,mBAAoBj0C,EAASF,IAAI,AACnC,aAGD,WAAM,CAAC,wBAKlB,4NCzBaolE,EAAe,SAAC1wD,CAAK,EAChC,IAAQxU,EAAyBwU,EAAzBxU,QAAQ,CAAEmlE,EAAe3wD,EAAf2wD,UAAU,CACtB9D,EAAc,EAAAoC,kBAAA,eAAiC,CAAC,CACpD7jE,GAAI,EACJupB,aAAcnpB,EAASF,IAAI,AAC7B,GAEA,MACE,UAAC,EAAAylE,aAAa,EAAmB9uD,OAAO,iBACrC,gBAAG+uD,EAAA,EAAAA,UAAA,OACF,UAAC,EAAAltD,IAAI,EAACmV,GAAI,WACR,WAAC,EAAA/U,QAAQ,EAACmY,QAAS,EAAGwP,GAAImlC,EAAa,EAAI,YACzC,WAAC,EAAAn1D,IAAI,EAACC,cAAc,MAAMyb,WAAW,mBAClCo5C,EACD,UAAC,EAAAM,eAAe,WACd,WAAC,EAAA70D,GAAG,EAACwF,GAAG,OAAOsvD,KAAK,IAAI7xD,UAAU,OAAOwD,WAAW,gBAClD,UAAC,EAAA0F,KAAK,WAAE/c,EAASJ,EAAE,GAClBI,EAASD,WAAW,EAAIC,EAASF,IAAI,MAG1C,UAAC,EAAAwnD,QAAQ,EACPzoB,GAAI,EACJhuB,GAAI,EACJwS,OAAO,UACPnQ,QAAS,WACP,EAAA8gC,eAAA,KAAoB,CAAC,CACnBh0C,SAAAA,EACAi0C,mBAAoBj0C,EAAS2M,gBAAgB,AAC/C,EACF,IAGF,UAAC,EAAA84D,eAAe,EACdruD,MAAM,cACNqwC,WAAW,kCAEX,UAAC,EAAAke,aAAa,EAACtiD,OAAO,iBAGzBmiD,GACC,iCACE,WAAC,EAAAI,cAAc,EAACvlC,GAAI,YACjBmlC,GACC,UAAC,EAAAK,iBAAiB,EAACl5D,iBAAkB3M,EAASJ,EAAE,GAEjD4lE,GAAc,UAAC,EAAAM,YAAY,EAAC93D,WAAYhO,EAASJ,EAAE,MAErDyhE,GACC,UAAC,EAAAgE,gBAAgB,EACfrlE,SAAUA,EACVqhE,YAAaA,cA1CTrhE,EAASJ,EAAE,CAoDnC,oKC9EawlE,EAAwB,WACnC,IAAwD,OAAAW,kBAAA,IAAhD/lE,EAAgD,EAAhDA,QAAQ,CAAEgmE,EAAsC,EAAtCA,aAAa,CAAE/xB,EAAuB,EAAvBA,kBAAkB,CAE3CnrB,EAAa,KAAAm5B,+BAAA,IAAbn5B,QAAQ,QAEhB,AAAKk9C,EAKH,UAAC,EAAAtF,gBAAgB,EACf5gD,YAAakmD,EACb3kD,WAAY,kBAAM,EAAA2yB,eAAA,MAAqB,IACvCtN,QAAS,WACP,EAAA/L,WAAA,kBAA6B,CAAC,CAC5B7R,SAAUA,CACZ,EACF,EAEAk7B,cAAehkD,GAAY6G,KAAAA,EAC3BotC,mBAAoBA,IAdf,IAiBX,6WCCMgyB,EAAgB,YACpB,IAAM1lD,EAAgB3B,AADC,EAAAA,GAAA,CACG2B,aAAa,CAEjC2lD,EACJ,AAAA3lD,CAAAA,MAAAA,EAAA,OAAAA,EAAehQ,GAAG,CAAC,SAACrJ,CAAI,MACf,EAAP,OAAO,YAAA4hC,cAAA,KAAmB,CACxB,SAACq9B,CAAkB,SAAKA,EAAmBngE,KAAK,GAAKkB,MADhD,oBAEJ+O,KAAK,AACV,EAAC,GAAK,EAAE,CAGJo2C,EAAanvB,AADLgpC,EAAkB1/D,MAAM,CACX,SAE3B,AAAI6lD,EAAa,EAEb,UAAC,EAAA7mC,OAAO,EACNvP,MAAOiwD,EAAkBt9D,IAAI,CAAC,MAC9B8c,UAAU,MACVD,SAAQ,GACR+mC,UAAW,aAEX,WAAC,EAAAn8C,IAAI,EACHC,cAAc,MACdm8C,SAAS,OACTzqC,IAAK,EACL+J,WAAW,SACX1I,OAAO,iBAEN6iD,EAAkB3yD,KAAK,CAAC,EAAG,GAAGhD,GAAG,CAAC,SAACm8C,CAAE,CAAE/6B,CAAC,QACvC,UAAC,EAAAgG,KAAK,EAAChgB,SAAS,iBACb+0C,GAD0B/6B,KAG3B,IACH06B,EAAa,GAAK,WAAC,EAAAp4C,IAAI,EAAC0D,SAAS,kBAAQ,IAAE00C,EAAW,YAO7D,UAAC,EAAAh8C,IAAI,EAACC,cAAc,MAAMm8C,SAAS,OAAOzqC,IAAK,EAAG+J,WAAW,kBAC1Dm6C,EAAkB3yD,KAAK,CAAC,EAAG,GAAGhD,GAAG,CAAC,SAACm8C,CAAE,CAAE/6B,CAAC,QACvC,UAAC,EAAAgG,KAAK,EAAChgB,SAAS,iBACb+0C,GAD0B/6B,MAMrC,EAEMy0C,EAAa,SAACv4C,CAAI,EAItB,IAAMw4C,EAAsB,SAACniE,CAAO,EAClC,EAAAyf,YAAA,QAAoB,CAAC,CACnBoQ,MAAO,WAAM,CAAC,aACdnQ,UAAW,iBAAM,+BAAG,WAAM,CAAC,gCAC3BC,QAAS,WAAM,CAAC,UAChBC,KAAM,+EACJ,GAAI,CAAC5f,EAAQpE,IAAI,CACf,2BAIA,gCAAM,EAAAqP,UAAA,uBAAiC,CAAC,CACtCrP,KAAMoE,EAAQpE,IAAI,AACpB,kBAFA,SAIA,EAAA8zC,KAAA,QAAa,CAAC,WAAM,CAAC,uBAErB,EAAAjwB,YAAA,MAAkB,GAElBkK,EAAKy4C,SAAS,gCAEd,EAAA1yB,KAAA,MAAW,CAAC,WAAM,CAAC,4CAEvB,EACF,EACF,EAmDA,MAAOjT,AAjDyD,CAC9D,CACE/gC,GAAI,eACJ2kC,OAAQ,KACRntB,MAAO,KACPstB,KAAM,iBAAM,UAAC,EAAAlV,oBAAoB,KACnC,EACA,CACE+U,OAAQ1W,EAAK04C,WAAW,CAAG,kBAAM,MAAO,KACxCtlC,SAAU,OACV7pB,MAAO,IACT,EACA,CACEmtB,OAAQ,WAAM,CAAC,gBACftD,SAAU,cACV7pB,MAAO,MACT,EACA,CACEmtB,OAAQ,WAAM,CAAC,iBACftD,SAAU,gBACVzpB,SAAU,IACVktB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACqnD,EAAA,CAAcrnD,IAAKA,EAAImmB,QAAQ,GACrD,EACA,CACEnlC,GAAI,UACJ8kC,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OACP,WAAC,EAAAvO,IAAI,EAACC,cAAc,MAAM0R,IAAK,YAC7B,UAAC,EAAAslC,QAAQ,EACPjkC,OAAO,UACPnQ,QAAS,WACH0L,EAAImmB,QAAQ,CAAC/2B,UAAU,EACzB,EAAAkmC,cAAA,KAAmB,CAAC,CAClBhwC,QAAS0a,EAAImmB,QAAQ,CACrBs8B,YAAa,EAAAoC,kBAAA,eAAiC,CAAC7kD,EAAImmB,QAAQ,EAC3D5b,aAAcvK,EAAImmB,QAAQ,CAAC5b,YAAY,CACvCnb,WAAY,CAAC4Q,EAAImmB,QAAQ,CAAC/2B,UAAU,AACtC,EAEJ,IAEF,UAAC,EAAA0V,UAAU,EACTL,OAAO,UACPnQ,QAAS,kBAAMmzD,EAAoBznD,EAAImmB,QAAQ,QAIvD,EACD,CAEcr7B,MAAM,CAAC,SAAC+mC,CAAC,QACtB,EAAI5iB,EAAK04C,WAAW,EAIb91B,AAAS,iBAATA,EAAE7wC,EAAE,AACb,EACF,EAEakmE,EAAe,SAACtxD,CAAK,EAChC,IAAMgyD,EAAY,KAAAxkB,2BAAA,IAEV5gD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACD6hD,EAA6B,KAAAD,wBAAA,IAA7BC,wBAAwB,CACE,OAAA11B,iBAAA,EAAkB/Y,EAAMxG,UAAU,EAA5D6b,EAA0B,EAA1BA,UAAU,CAAE,EAAc,EAAdhf,IAAI,CAAJA,EAAA,WAAO,EAAE,GAE3B,OAAAy4C,sBAAA,EAAuB9uC,EAAMxG,UAAU,EADzBy4D,EACd,EADMC,MAAM,CAAkCC,EAC9C,EADmCtC,SAAS,QAoB9C,AAAIx5D,AAAgB,IAAhBA,EAAKrE,MAAM,EAAWqjB,EAKxB,iCACE,UAAC,EAAA5V,IAAI,EAACoD,WAAW,MAAMoW,GAAI,WACxBrsB,EAAE,mBAEL,UAAC,EAAAmpB,aAAa,EAACyI,QAASnJ,GAAc88C,WACpC,UAAC,EAAAjmC,cAAc,EACbC,QAASylC,EAAW,CAClBG,YAAa,CAACC,EACdF,UAAW,kBACT,EAAA3rC,WAAA,eAA0B,CAAC,CACzB7R,SAAUm6B,EAAyBzuC,EAAMxG,UAAU,EAAE8a,QAAQ,AAC/D,GACJ,GACAje,KAAMA,EACN+1B,UApCgC,SAACr1B,CAAM,EAC7C,IAAQb,EAAwBa,EAAxBb,MAAM,CAAE+5D,EAAgBl5D,EAAhBk5D,WAAW,CAEtBA,GAOLgC,EAAoB,CAClBljB,eAAgB14C,EAChB63C,WALiBh4C,EAAO+F,KAAK,CAM7BkyC,SALe8hB,EAAYh0D,KAAK,AAMlC,EACF,SAGS,IAuBX,oRCpMao1D,EAAoB,SAACrxD,CAAK,EACrC,IAAQ7H,EAAqB6H,EAArB7H,gBAAgB,CAChBvL,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACwC,eAAAsT,QAAA,EAC/C7N,KAAAA,GAAA,GADKk9D,EAA0C,KAApBC,EAAoB,KAI3C4C,EAA4B,KAAA9kB,4BAAA,IAGhC,OAAAO,sBAAA,EAAuB11C,GADX,EACZ,EADM9B,IAAI,CAAEoxB,EAAa,AAAb,SAAa,IAAE,CAAf,EAAiBpS,EAC7B,EAD6BA,UAAU,CAGnCq6C,EAAiB,KAAA/zC,OAAA,EAAQ,iBAC7B,CAAIy2C,IAIA,CAAC3qC,EAAWz1B,MAAM,EAIf,EAAAk8B,cAAA,eAA6B,CAACzG,EACvC,EAAG,CAACA,EAAY2qC,EAA0B,EAGxC,OAAApjB,2BAAA,EAA4B72C,GADTw3D,EACnB,EADMrB,WAAW,CAA2BsB,EAC5C,EADiCC,SAAS,QAmC5C,AAAIpoC,AAAsB,IAAtBA,EAAWz1B,MAAM,CACZ,KAIP,iCACE,UAAC,EAAAyN,IAAI,EAACoD,WAAW,MAAMoW,GAAI,WACxBrsB,EAAE,oBAEL,UAAC,EAAAkjE,SAAS,EACRC,YAAW,GACX9zD,MAAOszD,EACPlyD,SAAU,SAAC2yD,CAAa,EACO,UAAzB,OAAOA,GACTR,EAAiBQ,EAErB,WAEA,UAAC,EAAAj6C,aAAa,EAACyI,QAASoxC,GAAgBv6C,WACtC,UAAC,EAAA0X,eAAe,EAACX,UAnDe,SAACr1B,CAAM,EAC7C,IAAQb,EAAwBa,EAAxBb,MAAM,CAAE+5D,EAAgBl5D,EAAhBk5D,WAAW,CAE3B,GAAKA,GAIL,IAAMC,EAAgBzoC,EAAWxb,IAAI,CACnC,SAACnO,CAAC,CAAE7B,CAAK,SAAKA,IAAUszD,IAM1BI,EAAa,CACXl2C,iBAAkBgO,EAClBymB,WALiBh4C,EAAO+F,KAAK,CAM7BkyC,SALe8hB,EAAYh0D,KAAK,CAMhCmyC,UAAW,SAAC+hB,CAAa,EACvB,GAAIA,EAAe,CACjB,IAAMC,EAAyBD,EAAcxvC,SAAS,CACpD,SAAC8vB,CAAE,SAAKA,EAAGrlD,EAAE,GAAK8kE,CAAAA,MAAAA,EAAA,OAAAA,EAAe9kE,EAAE,AAAD,IAGhCglE,EAAyB,IAC3BZ,EAAiBY,EAErB,CACF,CACF,GACF,WAsBU,UAAC,EAAA9iC,SAAS,EACRC,YAAY,yBACZ76B,KAAK,8CAEJ,SAAC86B,CAAQ,CAAE6iC,CAAQ,EAClB,MACE,WAAC,yBACK7iC,EAASE,cAAc,GAC3BxS,IAAKsS,EAASC,QAAQ,CACtBrc,MAAO,mBACF,EAAA8c,cAAA,aAA2B,CAACmiC,EAASC,cAAc,IACtDj0C,QAAS,EACTg2C,aAAc,mBAGf5qC,MAAAA,EAAA,OAAAA,EAAY1rB,GAAG,CAAC,SAACvQ,CAAQ,CAAEyQ,CAAK,EAC/B,MACE,UAAC,EAAA0xB,SAAS,EAERC,YAAapiC,EAASJ,EAAE,CAACiI,QAAQ,GACjC4I,MAAOA,EACPs0D,eAAgB,CAACb,WAEhB,SAACc,CAAY,CAAEC,CAAY,EAC1B,MACE,UAAC,uBACCv1C,IAAKs1C,EAAa/iC,QAAQ,EACtB+iC,EAAaziC,cAAc,GAC/B3c,MAAO,EAAA8c,cAAA,aAA2B,CAChCuiC,EAAaxiC,UAAU,CACvBuiC,EAAaziC,cAAc,CAAC3c,KAAK,WAGnC,UAAC,EAAAs/C,YAAY,EAEXllE,SAAUA,EACV+kE,eAAgB,CAACb,EACjBiB,WACEjB,EACE,UAAC,yBAAQc,EAAaliC,eAAe,YACnC,UAAC,EAAAtT,oBAAoB,QAErB,MARDxvB,EAASF,IAAI,IAa1B,GA7BKE,EAASF,IAAI,CAgCxB,GACCkiC,EAAStxB,WAAW,IAG3B,YAOd,yLCjKMo2D,EAAgB,CACpBd,cAAe,GACfhmE,SAAU,KACVi0C,mBAAoB,IACtB,EAEM8yB,EAAgB,KAAAzyC,WAAA,EAInBwyC,GAEU9yB,EAAkB,KAAAtf,SAAA,EAAUqyC,EAAe,CACtD5jD,KAAM,SACJkN,CAAK,CACLwF,CAAO,EAKP,MAAO,mBACFxF,GAAA,CACHrwB,SAAU61B,EAAQ71B,QAAQ,CAC1Bi0C,mBAAoBpe,EAAQoe,kBAAkB,CAC9C+xB,cAAe,IAEnB,EAEAjiD,MAAO,WACL,OAAO+iD,CACT,CACF,GAEaf,EAAqB,WAChC,MAAO,KAAAtyC,OAAA,EAAQszC,EACjB,6HCrCa/F,EAAoC,QAAQ,CAAC,CACxDlhE,KAAM,QAAQ,GAAGqS,GAAG,CAAC,EAAG,CAAExN,QAAS,sBAAuB,GAC1Dm8D,cAAe,QACN,GACN3uD,GAAG,CAAC,EAAG,CAAExN,QAAS,oCAAqC,GAC1Do8D,cAAe,QACN,GACN5uD,GAAG,CAAC,EAAG,CAAExN,QAAS,qCAAsC,GAC3Do7B,cAAe,QAAQ,CAAC,CACtB/5B,MAAO,QAAQ,GACfiQ,MAAO,QAAQ,EACjB,EACF,4nBCGA,IAAM+wD,EAAoB,cAAO,EAAAp2D,GAAG,OAK9Bq2D,EAAgB,cAAO,EAAAr2D,GAAG,OAI1B42B,EAAc,cAAO,EAAA0/B,IAAI,OAWlBC,EAA+B,WAC1C,IAAMC,EAAe,SAACphE,CAAK,EACzB,OAAOA,EAAQ,UAACwhC,EAAA,UAAaxhC,IAAuB,UAAC,EAAA4K,GAAG,WAAC,KAC3D,EAEM+vB,EAAU,KAAAxQ,OAAA,EAAkD,WAChE,MAAO,CACL,CACE8Q,SAAU,cACVsD,OAAQ,cACRntB,MAAO,MACPstB,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAACghE,EAAA,UAAmBhhE,GAC7B,CACF,EACA,CACEi7B,SAAU,OACVsD,OAAQ,OACRG,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAACihE,EAAA,UAAejhE,GACzB,CACF,EACA,CACEi7B,SAAU,SACVsD,OAAQ,SACRntB,MAAO,KACPstB,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAACihE,EAAA,UAAejhE,GACzB,CACF,EACA,CACEi7B,SAAU,MACVsD,OAAQ,MACRG,KAAM,YACJ,OAAO0iC,EADA,EAAAphE,KAAA,CAET,CACF,EACA,CACEi7B,SAAU,cACVsD,OAAQ,eACRntB,MAAO,MACPstB,KAAM,YACJ,OAAO0iC,EADA,EAAAphE,KAAA,CAET,CACF,EACA,CACEi7B,SAAU,cACVsD,OAAQ,eACRG,KAAM,YACJ,OAAO0iC,EADA,EAAAphE,KAAA,CAET,CACF,EACA,CACEi7B,SAAU,WACVsD,OAAQ,WACRG,KAAM,YACJ,OAAO0iC,EADA,EAAAphE,KAAA,CAET,CACF,EACD,AACH,EAAG,EAAE,EAEL,MACE,UAAC,EAAA4K,GAAG,WACF,UAAC,EAAAwN,KAAK,EAACuiB,QAASA,EAAS91B,KAAM,EAAAw8D,eAAe,IAGpD,2FCtGO,IAAMA,EAAkB,CAC7B,CACEvnE,KAAM,wBACN8Z,YAAa,qBACb9O,OAAQ,MACRlG,IAAK,wBACL0iE,YAAa,GACbr7D,YAAa,GACbvH,SAAW,iDAIb,EACA,CACE5E,KAAM,yBACN8Z,YAAa,0BACb9O,OAAQ,MACRlG,IAAK,yCACL0iE,YAAc,iCAGdr7D,YAAa,GACbvH,SAAW,iDAIb,EACA,CACE5E,KAAM,uBACN8Z,YAAa,gCACb9O,OAAQ,OACRlG,IAAK,sCACL0iE,YAAc,iCAGdr7D,YAAa,WACbvH,SAAU,EACZ,EACA,CACE5E,KAAM,iCACN8Z,YAAa,gCACb9O,OAAQ,OACRlG,IAAK,+CACL0iE,YAAc,+BAGdr7D,YAAa,GACbvH,SAAU,EACZ,EACA,CACE5E,KAAM,sBACN8Z,YAAa,iCACb9O,OAAQ,OACRlG,IAAK,oCACL0iE,YAAc,+BAGdr7D,YAAa,GACbvH,SAAU,EACZ,EACA,CACE5E,KAAM,yBACN8Z,YAAa,mCACb9O,OAAQ,OACRlG,IAAK,wBACL0iE,YAAa,GACbr7D,YAAa,GACbvH,SAAU,EACZ,EACA,CACE5E,KAAM,mBACN8Z,YAAa,yBACb9O,OAAQ,OACRlG,IAAK,2BACL0iE,YAAc,0BAGdr7D,YAAc,wDAIdvH,SAAU,EACZ,EACA,CACE5E,KAAM,4BACN8Z,YAAa,oBACb9O,OAAQ,OACRlG,IAAK,iDACL0iE,YAAc,gDAIdr7D,YAAa,GACbvH,SAAU,EACZ,EACA,CACE5E,KAAM,eACN8Z,YAAa,qBACb9O,OAAQ,MACRlG,IAAK,aACL0iE,YAAa,GACbr7D,YAAa,GACbvH,SAAW,iGAMb,EACA,CACE5E,KAAM,2BACN8Z,YAAa,8BACb9O,OAAQ,MACRlG,IAAK,uCACL0iE,YAAc,6BAGdr7D,YAAa,GACbvH,SAAW,4TAeb,EACA,CACE5E,KAAM,mBACN8Z,YAAa,qBACb9O,OAAQ,MACRlG,IAAK,4BACL0iE,YAAc,2BAGdr7D,YAAa,GACbvH,SAAW,gJAMb,EACA,CACE5E,KAAM,oBACN8Z,YAAa,sBACb9O,OAAQ,MACRlG,IAAK,6BACL0iE,YAAc,2BAGdr7D,YAAa,GACbvH,SAAW,6MAWb,EACD,mbClKD,IAAMugB,EAAqB,cAAO,EAAAtJ,WAAW,OAMhC4rD,EAAiB,WAC5B,MAAMhhB,EAAU,KAAAtmC,OAAA,IACwB,eAAAvL,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAExC,IAAMd,KAAgB,iBAAOxlB,CAAK,MASvBS,EACa,IAAd0mD,wDATR7gC,EAAgB,qBAEd,iCAAM,cAAS,EAAAke,aAAa,CAAE,CAC5B1/B,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAM,WACD7E,EAEP,kBALA,4BAOMmnD,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAEpB,YAlB6BtmB,CAAK,mCAoBlC,MACE,UAAC,EAAA6lB,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJlU,SAAS,QACTjR,KAAK,kBACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,sBAE1B,UAAC,SAAK,EACJjqC,SAAS,QACTjR,KAAK,cACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,kBAE1B,UAAC,SAAK,EACJjqC,SAAS,QACTjR,KAAK,qBACLmW,MAAO,KAAA+kC,gBAAA,EAAiB,0BAG1B,UAAC,EAAA5mC,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNzC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAACwL,YAE7B,KAAAwvB,gBAAA,EAAiB,mBAOhC,6RC3DawsB,EAAe,WAC1B,IAAMxyB,EAAS,KAAAqY,SAAA,IACP7Y,EAAc,EAAAF,aAAA,cAA2B,GAAzCE,SAAS,CACTpzC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEP,eAAAsT,QAAA,EAAsE,SADjE+yD,EACL,KADkBC,EAClB,KAEIlK,EAAoBiK,AAAgB,OAAhBA,EAEpBE,EAAkB,SACtBzkE,CAAQ,EAER,EAAAygB,YAAA,QAAoB,CAAC,CACnBC,UAAW,iBAAM,+BAAGxiB,EAAE,+BACtB0iB,KAAM,+EAEF,gCAAM,EAAA3U,UAAA,iCAA2C,CAAC,CAChDnC,WAAY9J,EAAStD,EAAE,AACzB,kBAFA,SAIA,EAAA+jB,YAAA,MAAkB,GAClBqxB,EAAOyY,UAAU,gCAEjB,EAAA7Z,KAAA,MAAW,CACTxyC,EAAE,mBAAoB,CACpByxD,OAAQzxD,EAAE,aAAas5B,WAAW,EACpC,6BAGN,EACF,EACF,EAEMiG,EAAU,KAAAxQ,OAAA,EAAQ,WACtB,MAAO,CACL,CACE8Q,SAAU,WACVsD,OAAQnjC,EAAE,YACVsjC,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,+BAAGA,GACZ,CACF,EACA,CACEi7B,SAAU,SACVsD,OAAQnjC,EAAE,UACVsjC,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,+BAAGA,GACZ,CACF,EACA,CACEi7B,SAAU,qBACVsD,OAAS,GAAgB,OAAdnjC,EAAE,YAAY,QACzBsjC,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,+BAAGA,GACZ,CACF,EACA,CACEpG,GAAI,UACJ2kC,OAAQ,GACRntB,MAAO,OACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,CACP,MACE,WAAC,EAAAvO,IAAI,EAACu3D,UAAU,OAAO72D,SAAS,iBAC9B,UAAC,EAAAu2C,QAAQ,EAACp0C,QAAS,kBAAMw0D,EAAe9oD,EAAImmB,QAAQ,KACpD,UAAC,EAAArhB,UAAU,EAACxQ,QAAS,kBAAMy0D,EAAgB/oD,EAAImmB,QAAQ,OAG7D,CACF,EACD,AACH,EAAG,CAAC0iC,EAAY,EAEV58D,EAAO,KAAAslB,OAAA,EAAQ,WACnB,OAAOqkB,CACT,EAAG,CAACA,EAAU,EAEd,MACE,WAAC,EAAAr6B,KAAK,EAACvE,QAAS,EAAGiE,UAAU,SAAS6gD,cAAe,cACnD,UAAC,EAAArqD,IAAI,EAACC,cAAc,MAAM0jB,eAAe,oBACvC,WAAC,EAAA5f,MAAM,EACL8C,YAAY,MACZhE,QAAS,kBACPw0D,EAAe,CACb9nE,GAAI,CACN,cAEH,KACIwB,EAAE,qBAGT,UAAC,EAAAgd,KAAK,EAACuiB,QAASA,EAAS91B,KAAMA,IAE9B2yD,GACC,UAAC,EAAAqK,iBAAiB,EAChBla,MAAO8Z,EACP1jD,MAAO,WACL2jD,EAAe,KACjB,EACApK,QAAS,WACPtoB,EAAOyY,UAAU,EACnB,MAKV,8SC1FMqa,EAAmB,SAAC9hE,CAAK,QAC7B,AAAIA,AAAU,KAAVA,EACKA,EAGF,AAAiB,UAAjB,OAAOA,EAAqB,CAACA,EAAQA,CAC9C,EAEM29C,EAAmB,QAChB,CAAC,CACN92C,SAAU,YAAY,CAACi7D,EAAkB,QAAQ,GAAGC,IAAI,IACxDj7D,OAAQ,YAAY,CAACg7D,EAAkB,QAAQ,GAAGC,IAAI,IACtDh7D,mBAAoB,YAAY,CAAC+6D,EAAkB,QAAQ,GAAGE,GAAG,CAAC,KACpE,GACCjb,MAAM,CACL,SAAC8Q,CAAM,EACL,OAAOA,EAAOhxD,QAAQ,CAAGgxD,EAAO/wD,MAAM,AACxC,EACA,CACE9D,KAAM,CAAC,WAAW,CAClBrE,QAAS,WAAM,CAAC,uBAClB,GAEDooD,MAAM,CACL,SAAC8Q,CAAM,EACL,OAAOA,EAAO/wD,MAAM,CAAG+wD,EAAOhxD,QAAQ,AACxC,EACA,CACE7D,KAAM,CAAC,SAAS,CAChBrE,QAAS,WAAM,CAAC,uBAClB,GAWSkjE,EAAoB,SAACrzD,CAAK,EACrC,MAAQuP,EAA0BvP,EAA1BuP,KAAK,CAAE4pC,EAAmBn5C,EAAnBm5C,KAAK,CAAE2P,EAAY9oD,EAAZ8oD,OAAO,CACvB5xC,EAAW,KAAAzL,OAAA,EAAoB,CACnCtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAEA,KAAA75B,SAAA,EACE,WACE4B,EAASs5B,KAAK,CAAC,WACV2I,GAEP,EACA,CAACA,EAAM,EAGT,IAAM6Q,KAAkC,iBAAO9xC,CAAM,MAe1C7gB,kFAbH,CAAA8hD,CAAAA,MAAAA,EAAA,OAAAA,EAAO/tD,EAAE,AAAD,GAAK+tD,EAAM/tD,EAAE,CAAG,GAAxB,YACF,SAAM,EAAAuP,UAAA,8BAAwC,CAAC,mBAC1Cud,GAAA,CACH1f,WAAY2gD,EAAM/tD,EAAE,mBAFtB,sBAKA,SAAM,EAAAuP,UAAA,+BAAyC,CAACud,WAAhD,iCAGFhB,EAASs5B,KAAK,GACdjhC,IAEAu5C,MAAAA,GAAAA,iBAEA,GAAIzxD,AADGA,CAAAA,EAAA,oBACU,EAAApH,QAAQ,EAAI,AAAkB,UAAlB,OAAOoH,EAAE9G,IAAI,CACxC2mB,EAASyuB,QAAQ,CAAC,WAAY,CAC5Bx1C,QAASsjE,AA5EjBtjE,AAH0B,qDAG1BA,AA4EqCkH,EAAE9G,IAAI,CA5EnC21B,WAAW,GA6EP,KAAAt5B,CAAA,AAAAA,EAAE,gCACFyK,EAAE9G,IAAI,AACZ,kCAGN,YAxB+C2nB,CAAM,mCA0BrD,MACE,WAAC,EAAApL,KAAK,EAAC3B,OAAM,GAACE,QAASkE,EAAO1J,KAAK,KAAKwZ,eAAe,SAAStS,WAAU,aACxE,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAE,KAAAs5B,gBAAA,EAAiB,cAC/B,UAAC,EAAAr5B,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WACR,UAAC,EAAAiK,YAAY,oBAAKH,GAAA,UAChB,UAAC,iBACC,WAAC,EAAAvR,KAAK,EAACvE,QAAQ,cACb,UAAC,SAAW,EACV9V,KAAK,WACLmS,UAAW,EACXD,KAAM,GACNG,IAAK,EACL8D,MAAO,KAAA7U,CAAA,AAAAA,EAAE,cAEX,UAAC,SAAW,EACVtB,KAAK,SACLmS,UAAW,EACXD,KAAM,GACNG,IAAK,EACL8D,MAAO,KAAA7U,CAAA,AAAAA,EAAE,YAEX,UAAC,SAAW,EACVtB,KAAK,qBACLsS,IAAK,IACLD,IAAK,EACLF,UAAW,EACXD,KAAM,GACNiE,MAAQ,GAAgB,OAAd,KAAA7U,CAAA,AAAAA,EAAE,YAAY,oBAMlC,UAAC,EAAA0gB,WAAW,EAACkS,eAAe,kBAC1B,WAAC,EAAAjS,WAAW,EAACC,IAAI,IAAIgS,eAAe,mBAClC,UAAC,EAAA5f,MAAM,EAAC8C,YAAY,MAAMnD,QAAQ,UAAUb,QAAS6Q,WAClD,KAAA3iB,CAAA,AAAAA,EAAE,YAEL,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,MAAMhE,QAASwY,EAAS1L,YAAY,CAACw+C,YACtD,KAAAp9D,CAAA,AAAAA,EAAE,oBAOjB,ohBCtJA,IAAM6jB,EAAqB,cAAO,EAAAtJ,WAAW,OAOhCusD,EAAU,WACrB,MAAM3hB,EAAU,KAAAtmC,OAAA,IACwB,eAAAvL,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAChClrB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,IAAMoqB,KAAgB,iBAAOxlB,CAAK,MAerBS,EACa,IAAd0mD,4DAfNnnD,CAAAA,MAAAA,EAAA,OAAAA,EAAQ,IAAO,AAAP,EAAO,YACjBsmB,EAAgB,qBAEd,iCAAM,cACJ,EAAAoe,gBAAgB,CAChB,CACE5/B,OAAQ,EAAAuiB,YAAA,KAAiB,CAEzBxiB,KAAM,CAAEk8C,KAAM/gD,MAAAA,EAAA,OAAAA,EAAQ,IAAO,CAAC,EAAE,AAAC,CACnC,EACA,CAAE,eAAgB,qBAAsB,kBAP1C,SAUA,EAAA4tC,KAAA,QAAa,CAACxyC,EAAE,6CAEV+rD,CAAAA,EAAc1mD,MADbA,CAAAA,EAAA,UACa,OAAe,OAAf,GAAAA,EAAO/B,QAAQ,AAAD,GAAd,kBAAqB,OAArB,KAAiBmG,IAAI,AAAD,GAApB,oBAAuBW,MAAM,AAAD,GAG9C,EAAAooC,KAAA,MAAW,CAACuZ,uBAGd7gC,EAAgB,2BAGtB,YAzB6BtmB,CAAK,mCA2BlC,MACE,UAAC,EAAA6lB,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,UAAC,EAAA6B,kBAAkB,EACjB7Q,MAAO,KAAA+kC,gBAAA,EAAiB,eACxBl7C,KAAK,OACLknB,OAAQ,CACN,YAAa,CAAC,OAAO,AACvB,IAEF,UAAC,EAAA5S,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNzC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAACwL,YAE7B,KAAAwvB,gBAAA,EAAiB,mBAOhC,orBCrDA,IAAM2jB,EAAS,QAAQ,CAAC,CACtBwJ,aAAc,OAAO,CAAC,YAAY,CAACrb,OACnCsb,aAAc,QAAQ,GAAGxjE,GAAG,CAAC,uBAC7ByjE,aAAc,OAAO,CAAC,YAAY,CAACvb,OACnCwb,aAAc,QAAQ,GAAG1jE,GAAG,CAAC,sBAC/B,GAEMqgB,EAAqB,cAAO,EAAAtJ,WAAW,OAOvC4sD,EAAc,aAAU,MAWjBC,EAAoB,WAC/B,IAAQpnE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAW,KAAAzL,OAAA,EAAkC,CACjDtW,SAAU,KAAAg7C,WAAA,EAAYga,EACxB,GAEM8J,EAAa,EAAAn0B,aAAA,cAA2B,GAE9C,KAAAxqB,SAAA,EACE,WACE4B,EAASs5B,KAAK,CAAC,CACbsjB,aAAcG,EAAW/oE,QAAQ,CAACgpE,iBAAiB,CACnDN,aAAcK,EAAW/oE,QAAQ,CAACipE,iBAAiB,AACrD,EACF,EACA,CAACF,EAAW,EAGd,IAAMG,EACJ,SAAC/sB,CAAK,CAAkCgtB,CAAM,QAC9C,uBACQC,EACA9iE,wDADQ,SAAM0lB,EAASqiC,OAAO,CAAClS,WAGrC,GAHMitB,EAAQ,SACR9iE,EAAQ0lB,EAASsL,SAAS,CAAC6kB,GAE7B,CAACitB,EACH,UAGF,OAAQ,IACN,KAAKjtB,EAAMllB,QAAQ,CAAC,eAAiB,AAAiB,UAAjB,OAAO3wB,EAC1C,EAAAmJ,UAAA,wDAC2C,CAAC,CACxC/C,QAASy8D,EACTjkE,IAAKoB,CACP,GACCI,IAAI,CAAC,WACJ,EAAAwtC,KAAA,QAAa,CAACxyC,EAAE,uBAClB,GACCiF,KAAK,CAAC,WACL,EAAAutC,KAAA,MAAW,CAACxyC,EAAE,6BAChB,GAEF,KAEF,MAAKy6C,EAAMllB,QAAQ,CAAC,eAAiB3wB,GAASA,CAAK,CAAC,EAAE,WAAYwtC,KAChE,EAAArkC,UAAA,yDAC4C,CAAC,CACzC/C,QAASy8D,EACTt/D,SAAU,CACRw/D,OAAQ/iE,CAAK,CAAC,EAAE,AAClB,CACF,GACCI,IAAI,CAAC,WACJ,EAAAwtC,KAAA,QAAa,CAACxyC,EAAE,uBAClB,GACCiF,KAAK,CAAC,WACL,EAAAutC,KAAA,MAAW,CAACxyC,EAAE,6BAChB,EAGN,aACF,IAEF,MACE,UAAC,EAAAyqB,YAAY,oBAAKH,GAAA,UAChB,UAAC,EAAAvR,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,WAACsjD,EAAA,WACC,UAAC,EAAAzhD,kBAAkB,EACjB7Q,MAAQ,GAAwC,OAAtC,KAAA+kC,gBAAA,EAAiB,qBAAqB,SAChDl7C,KAAK,eACLinB,SAAU,GACVC,OAAQ,CACN,kBAAmB,CAAC,OAAO,AAC7B,IAEF,UAAC,EAAA5S,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNlE,QAAS01D,EAAkB,eAAgB,eAE1C,KAAA5tB,gBAAA,EAAiB,aAItB,WAACutB,EAAA,WACC,WAAC,EAAA33D,GAAG,YACF,WAAC,EAAAmL,SAAS,YACP,KAAAi/B,gBAAA,EAAiB,2BAA2B,WAE/C,UAAC,SAAK,EACJl7C,KAAK,eACLiR,SAAS,YAGb,UAAC,EAAAqD,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNlE,QAAS01D,EAAkB,eAAgB,eAE1C,KAAA5tB,gBAAA,EAAiB,aAItB,WAACutB,EAAA,WACC,UAAC,EAAAzhD,kBAAkB,EACjB7Q,MAAQ,GAAwC,OAAtC,KAAA+kC,gBAAA,EAAiB,qBAAqB,SAChDl7C,KAAK,eACLinB,SAAU,GACVC,OAAQ,CACN,kBAAmB,CAAC,OAAO,AAC7B,IAEF,UAAC,EAAA5S,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNlE,QAAS01D,EAAkB,eAAgB,eAE1C,KAAA5tB,gBAAA,EAAiB,aAItB,WAACutB,EAAA,WACC,WAAC,EAAA33D,GAAG,YACF,WAAC,EAAAmL,SAAS,YACP,KAAAi/B,gBAAA,EAAiB,2BAA2B,WAE/C,UAAC,SAAK,EACJl7C,KAAK,eACLiR,SAAS,YAGb,UAAC,EAAAqD,MAAM,EACL8C,YAAY,MACZE,MAAM,QACNlE,QAAS01D,EAAkB,eAAgB,eAE1C,KAAA5tB,gBAAA,EAAiB,oBAOhC,ssBCjLA,IAAM/1B,EAAqB,cAAO,EAAAtJ,WAAW,OAMvCuJ,EAA4B,cAAO,EAAAtU,GAAG,OAStCg/C,EAA0B,cAAO,EAAAh/C,GAAG,OAS7Bo4D,EAAW,WACtB,MAAMziB,EAAU,KAAAtmC,OAAA,IACwB,eAAAvL,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAChC5sB,EAAa,EAAA40C,aAAA,cAA2B,GAAxC50C,QAAQ,CAEhB,KAAAoqB,SAAA,EACE,WACEy8B,EAAQvB,KAAK,CAAC,WACTtlD,GAEP,EACA,CAACA,EAAS,EAGZ,IAAM8+D,KAAO,iBAAOyK,CAAO,MAIhBp9D,EAECshD,wDAHR,8BADA7gC,EAAgB,IAChB,GAAM28C,iBAAN,4BACOp9D,CAAAA,EAAA,oBACU,EAAApH,QAAQ,EACjB0oD,CAAAA,EAActhD,EAAE9G,IAAI,CAACyG,MAAM,AAAD,GAG9B3F,OAAO6C,OAAO,CAACykD,GAAa3kD,OAAO,CAAC,+BAAE0gE,EAAA,KAAW19D,EAAA,KAC/C+6C,EAAQpM,QAAQ,CAAC+uB,EAAuC,CACtDvkE,QAAS6G,CACX,EACF,uBAIJ8gB,EAAgB,2BAEpB,YAnBoB28C,CAAO,mCAqB3B,MACE,UAAC,EAAAp9C,YAAY,oBAAK06B,GAAA,UAChB,UAAC,iBACC,UAAC,EAAApsC,KAAK,EAACvE,QAAQ,aACb,WAACqP,EAAA,WACC,WAAC2qC,EAAA,WACC,UAAC,EAAA7zC,SAAS,WAAE,KAAAi/B,gBAAA,EAAiB,gBAC7B,WAAC91B,EAAA,WACC,UAAC,SAAK,EAAqBnU,SAAS,QAAQjR,KAAK,cACjD,UAAC,EAAAsU,MAAM,EACL8C,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAAC,gBAAG3S,EAAA,EAAAA,SAAA,QAC/BmxD,EACE,EAAArvD,UAAA,+CAAyD,CACvD,CACE9B,UAAWA,GAAaxG,KAAAA,CAC1B,eAKL,KAAAm0C,gBAAA,EAAiB,gBAIxB,WAAC4U,EAAA,WACC,UAAC,EAAA7zC,SAAS,WAAE,KAAAi/B,gBAAA,EAAiB,oBAC7B,WAAC91B,EAAA,WACC,UAAC,SAAK,EAACnU,SAAS,QAAQjR,KAAK,aAC7B,UAAC,EAAAsU,MAAM,EACL8C,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAAC,gBAAGlW,EAAA,EAAAA,QAAA,QAC/B00D,EACE,EAAArvD,UAAA,8CAAwD,CAAC,CACvDrF,SAAUA,GAAYjD,KAAAA,CACxB,eAIH,KAAAm0C,gBAAA,EAAiB,gBAIxB,WAAC4U,EAAA,WACC,UAAC,EAAA7zC,SAAS,WAAE,KAAAi/B,gBAAA,EAAiB,UAC7B,WAAC91B,EAAA,WACC,UAAC,SAAK,EAACnU,SAAS,QAAQjR,KAAK,SAC7B,UAAC,EAAAsU,MAAM,EACL8C,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAAC,gBAAG1S,EAAA,EAAAA,IAAA,QAC/BkxD,EACE,EAAArvD,UAAA,0CAAoD,CAAC,CACnD7B,KAAMA,GAAQzG,KAAAA,CAChB,eAIH,KAAAm0C,gBAAA,EAAiB,gBAIxB,WAAC4U,EAAA,WACC,UAAC,EAAA7zC,SAAS,WAAE,KAAAi/B,gBAAA,EAAiB,UAC7B,WAAC91B,EAAA,WACC,UAAC,SAAK,EAACnU,SAAS,QAAQjR,KAAK,SAC7B,UAAC,EAAAsU,MAAM,EACL8C,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAAC,gBAAGzS,EAAA,EAAAA,IAAA,QAC/BixD,EACE,EAAArvD,UAAA,0CAAoD,CAAC,CACnD5B,KAAMA,GAAQ1G,KAAAA,CAChB,eAIH,KAAAm0C,gBAAA,EAAiB,yBASpC,6VClJA,IAAM0M,EAAY,CAChB7wB,YAAa,iBACbmyB,kBAAmB,UACnB73C,MAAO,KACT,EAEM83C,EAAa,cAAO,EAAAZ,QAAQ,OAI5B4I,EAA+D,CACnEkY,OAAQ,EACRC,KAAM,EACNriB,KAAM,EACNgiB,OAAQ,EACR7lE,SAAU,EACVL,OAAQ,CACV,EAEa0xC,EAAe,WAC1B,IAAQnzC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACyC,EAAvB,EAAAkzC,aAAA,UAAuB,GAA1ChG,GAAG,CACLh/B,EAAW,KAAAC,WAAA,IAEXgiD,EAAqBN,CAAO,CAH1B,WAAM,WAGyB,EAAI,EAE3C,MACE,+BACE,WAAC,EAAApJ,IAAI,EACHp3C,MAAO8gD,EACPx9C,QAAQ,WACRlC,SAAU,SAACpB,CAAK,EACdnB,EAAS,CACP8F,GAAI,KACJxI,OAAQ,CACN0hC,IAAKzoC,OAAOmlD,IAAI,CAACiG,EAAQ,CAACxgD,EAAM,AAClC,CACF,EACF,YAEA,WAAC,EAAAs3C,OAAO,YACN,UAAC,EAAAC,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,mBAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,qBAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,UAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,uBAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,wBAC9B,UAAC,EAAA4mD,GAAG,EAACC,UAAWP,WAAYtmD,EAAE,oCAEhC,WAAC,EAAAgnD,SAAS,YACR,UAACa,EAAA,UACC,UAAC,EAAA+f,QAAQ,OAEX,UAAC/f,EAAA,UACC,UAAC,EAAAse,cAAc,OAEjB,UAACte,EAAA,UACC,UAAC,EAAAif,OAAO,OAEV,UAACjf,EAAA,UACC,UAAC,EAAAuf,iBAAiB,OAEpB,UAACvf,EAAA,UACC,UAAC,EAAAue,YAAY,OAEf,UAACve,EAAA,UACC,UAAC,EAAAke,4BAA4B,cAMzC,8HChFatyB,EAAU,gBAAG3tC,EAAA,EAAAA,IAAA,CASxB,MARA,KAAA4iB,SAAA,EAAU,WACR,IAAMo/B,EAAU9xB,SAAS6kB,cAAc,CAAC,iBAEpCiN,GACFA,EAAQC,cAAc,CAAC,CAAEzsB,SAAU,QAAS,EAEhD,EAAG,EAAE,EAEE,UAAC,EAAA2sC,YAAY,EAACniE,KAAMA,GAC7B,6gBCaA,IAAM+d,EAAqB,cAAO,EAAAtJ,WAAW,OAQhC0tD,EAAe,kBAAGniE,EAAA,EAAAA,IAAA,CACrB9F,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDkL,EAAW,KAAAoiB,SAAA,EAAU,CAAEhf,OAAQ,EAAM,GAArCpD,MAAM,CACR85C,EAAWl/C,AAAS,SAATA,EACuB,eAAAwN,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACR,eAAA5X,QAAA,IAAQ,GAAjCu1C,EAAyB,KAAfC,EAAe,KAC1B56C,EAAW,KAAAC,WAAA,IAEXg3C,EAAU,KAAAtmC,OAAA,EAAQ,CACtBumC,KAAM,UACR,GAEQlM,EAAwB,KAAAd,oBAAA,EAAqB+M,GAA7CjM,mBAAmB,CAE3B,KAAAxwB,SAAA,EACE,WACEy8B,EAAQvB,KAAK,CAAC,WACTiF,GAEP,EACA,CAACA,EAAS,EAGZ,IAEI,OAAAzuC,aAAA,EAAc,CAAE1b,KAAM,OAAQub,QAASkrC,EAAQlrC,OAAO,AAAC,GAD7CiuD,EAAA,mBACV,EADFptD,KAAK,GAGDqtD,EAAU,WACdj6D,EAAS,CACP8F,GAAI,eACJnM,QAAS,EACX,EACF,EAEA,KAAA6gB,SAAA,EAAU,WACR,GAAI5iB,AAAS,SAATA,EAAiB,OAsBnBimB,GArBkB,uBAGNtiB,EAWDpE,wDAbT6lB,EAAgB,qBAEG,iCAAM,cAAS,KAAAod,cAAA,EAAep9B,kBAE/CzB,AAFQA,CAAAA,EAAS,SAATA,IAAI,AAAD,EAENA,IAAI,CAACmJ,IAAI,CAAG,EAAA40B,KAAA,KAAU,CACzB,SAAC4gC,CAAU,QAAiB,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAYxjE,KAAK,AAAD,IAAM6E,EAAKA,IAAI,CAACmJ,IAAI,GAGlEnO,OAAOmlD,IAAI,CAACngD,GAAMrC,OAAO,CAAC,SAAC0T,CAAK,EAC9BqqC,EAAQp/B,QAAQ,CAACjL,EAAOrR,CAAI,CAACqR,EAAM,CACrC,GAEAguC,EAAYr/C,EAAKA,IAAI,sBACd,6BAGPyhB,EAAgB,2BAEpB,gDAGF,CACF,EAAG,EAAE,EAEL,IAAMd,KAAgB,iBAAOkB,CAAM,MAID,EAH1B5hB,EACAoL,EAEArL,wDAHAC,EAASs7C,EAAW,EAAA/4B,YAAA,IAAgB,CAAG,EAAAA,YAAA,KAAiB,CACxDnX,EAAOkwC,EAAW,EAAAxc,SAAS,CAAG,EAAAD,QAAQ,CAEtC9+B,EAAO,mBAAK6hB,GAAA,CAAQ1Y,KAAM0Y,MAAAA,EAAA,OAAY,OAAZ,GAAAA,EAAQ1Y,IAAI,AAAD,GAAX,oBAAchO,KAAK,GAEnDsmB,EAAgB,qBAEd,iCAAM,cAASpW,EAAM,CACnBpL,OAAQA,EACRD,KAAAA,CACF,WAEA,OALA,SAKA,GAAM0+D,mBAAN,6BAEAjvB,EADO,8BAGPhuB,EAAgB,2BAEpB,YAnB6BI,CAAM,mCAqBnC,MACE,UAAC,EAAAb,YAAY,oBAAK06B,GAAA,UAChB,UAAC,QAAKrmC,SAAUqmC,EAAQvmC,YAAY,CAACwL,YACnC,WAAC,EAAArR,KAAK,EAACvE,QAAQ,cACb,WAACqP,EAAA,WACC,UAAC,SAAK,EACJhP,MAAO,KAAA+kC,gBAAA,EAAiB,aACxBjqC,SAAS,OACTjR,KAAK,OACLuR,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,IAAO,CAChC7uC,WAAU,KAEZ,UAAC,EAAA2a,eAAe,UACd9f,MAAO,KAAA+kC,gBAAA,EAAiB,QACxB/1C,QAAS,EAAA2jC,KAAK,CACdv3B,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,IAAO,CAChC7uC,WAAU,IACNkuD,IAEN,UAAC,SAAK,EACJrzD,MAAO,KAAA+kC,gBAAA,EAAiB,oBACxBjqC,SAAS,OACTjR,KAAK,QACLuR,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,KAAQ,CACjC7uC,WAAU,KAEZ,UAAC,SAAK,EACJnF,MAAO,KAAA+kC,gBAAA,EAAiB,SACxBjqC,SAAS,OACTjR,KAAK,cACLuR,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,WAAc,GAEzC,UAAC,SAAK,EACJh0C,MAAM,YACNlF,SAAS,OACTjR,KAAK,YACLulB,QAASjkB,EAAE,qBACXiQ,aAAc44C,MAAAA,EAAA,OAAAA,EAAW,SAAY,MAGzC,WAAC,EAAAloC,WAAW,EAACC,IAAI,cACf,UAAC,QAAY,EACX9K,YAAY,MACZvC,UAAW0X,EACXnZ,QAASqzC,EAAQvmC,YAAY,CAACwL,YAE7B,KAAAwvB,gBAAA,EAAiB,UAEpB,UAAC,EAAA5mC,MAAM,EACL8C,YAAY,YACZI,WAAW,QACXpE,QAASq2D,WAER,KAAAvuB,gBAAA,EAAiB,sBAOhC,+jBChKA,IAAMgM,EAAgB,cAAO,EAAA32C,IAAI,OAK3B8oB,EAAkB,cAAO,EAAAvoB,GAAG,OAQrB+jC,EAAa,WACxB,MAAQvzC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC6B,eAAAsT,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KACA,eAAArL,QAAA,IAAQ,GAAvC+0D,EAA+B,KAAlBC,EAAkB,KAChCp6D,EAAW,KAAAC,WAAA,IACTuqB,EAAQ,KAAAC,OAAA,IAARD,GAAG,CAMP,OAAAsL,cAAA,EAA6C,CAC/CC,SAAU,QACVG,gBAAiB,CACfl3B,MAAO,CACL,EAAAu6B,IAAA,gBAAoB,CACpB,EAAAA,IAAA,WAAe,CACf,EAAAA,IAAA,eAAmB,CACnB,EAAAA,IAAA,oBAAwB,CACxB,EAAAA,IAAA,sBAA0B,CAC3B,AACH,EACApD,WAAY,CACVkkC,iBAAkB,CAChBC,QAAS,IACX,CACF,CACF,KAhBI,EAHF/+D,IAAI,CACJ8J,EAEE,EAFFA,SAAS,CACT+xB,EACE,EADFA,OAAO,CAmBHmjC,EAAkB,SAACv9D,CAAM,EAC7Bo9D,EAAep9D,GACfyT,EAAe,CAACD,EAClB,EAIMgqD,EAAoB,gBAAGlrD,EAAA,EAAAA,GAAA,CACrBssC,EAAYtsC,EAAI8N,MAAM,QAE5B,AACE9N,EAAImmB,QAAQ,CAAC/wB,IAAI,GAAK,EAAA60B,IAAA,gBAAoB,EACzC/O,EAAI,wBAML,WAACktB,EAAA,WACC,UAAC,EAAA9xC,IAAI,EAAChC,QAAS,kBAAMg7C,EAAShD,MAAAA,EAAA,OAAAA,EAAWtrD,EAAE,YACzC,UAAC,EAAA0nD,QAAQ,OAEX,UAAC,EAAApyC,IAAI,EAAChC,QAAS,kBAAM22D,EAAgB3e,MAAAA,EAAA,OAAAA,EAAWtrD,EAAE,YAChD,UAAC,EAAA8jB,UAAU,UATR,IAaX,EAEMqmD,EAAW,gBACF,EAID,EALMnrD,EAAA,EAAAA,GAAA,CACZ5K,EAAO4K,MAAAA,EAAA,OAAW,OAAX,GAAAA,EAAK8N,MAAM,AAAD,GAAV,oBAAa1Y,IAAI,CAE9B,MACE,UAAC,EAAAC,IAAI,WACFD,EAAO,YAAA40B,KAAA,KAAU,CAAC,SAACohC,CAAQ,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAUhkE,KAAK,AAAD,IAAMgO,MAA7C,oBAAoDiC,KAAK,CAAG,IAG1E,EAEA,IAAMg0D,KAAa,mFACbR,EAAa,MAAb,uBAEA,gCAAM,EAAAt6D,UAAA,uBAAiC,CAAC,CACtCvP,GAAI6pE,CACN,kBAFA,SAIA/iC,IACA,EAAAkN,KAAA,QAAa,CAACxyC,EAAE,2DAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAGpB,+CAEM8oE,EAAoB,WAAa,CAGrC,iBAAM,CACJ,CACE3lC,OAAS,KACTtD,SAAU,KACVtM,KAAM,EACR,EACA,CACE4P,OAAS,GAAiB,OAAfnjC,EAAE,cACb6/B,SAAU,OACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAwB,OAAtBnjC,EAAE,qBACb6/B,SAAU,QACV7pB,MAAO,KACT,EACA,CACEmtB,OAAS,GAAY,OAAVnjC,EAAE,SACb6/B,SAAU,OACV7pB,MAAO,MACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACmrD,EAAA,CAASnrD,IAAKA,IACpC,EACA,CACE2lB,OAAQ,GACR3kC,GAAI,UACJwX,MAAO,KACPstB,KAAM,gBAAG9lB,EAAA,EAAAA,GAAA,OAAU,UAACkrD,EAAA,CAAkBlrD,IAAKA,IAC7C,EACD,EACD,EAAE,EAOEsvC,EAAW,SAACtuD,CAAE,EAClB0P,EAAS,CACP8F,GAAI,4BACJrN,OAAQ,CAAEuE,OAAQ1M,CAAG,CACvB,EACF,EAEA,MACE,UAAC,EAAA2qB,aAAa,EAACyI,QAASre,WACtB,WAAC,EAAA2D,IAAI,YACH,UAAC,EAAA4zC,WAAW,EACVhsC,SAAU+pD,EACVtqD,OAAQG,EACRD,QArGiB,kBAAME,EAAe,OAuGxC,UAAC,EAAA3B,KAAK,EAACuiB,QAASupC,EAAmBr/D,KAjIvC,WAAO,EAAE,KAkIL,UAACsuB,EAAA,UACC,UAAC,EAAA/kB,MAAM,EAAC8C,YAAY,MAAMhE,QArBlB,WACd5D,EAAS,CAAE8F,GAAI,kBAAmB,EACpC,WAoBWhU,EAAE,oBAMf,wJC9KakwC,EAAY,WACvB,IAAQlwC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,UAAC,SAAM,WACL,WAAC,EAAAiP,IAAI,EACHwJ,UAAU,MACVmI,IAAK,EACLmoD,UAAU,SACV35C,SAAS,WACToC,IAAI,MACJC,KAAK,MACLo6B,UAAU,kCAEV,UAAC,EAAA/3C,IAAI,EAACE,GAAG,8BACP,UAAC,EAAAkD,IAAI,WACH,UAAC,EAAAI,QAAQ,WAAEtX,EAAE,uBAGjB,UAAC,EAAA8T,IAAI,EAACE,GAAG,oBACP,UAAC,EAAAkD,IAAI,WACH,UAAC,EAAAI,QAAQ,WAAEtX,EAAE,2BAMzB,kdCWagpE,EAAY,kBAAGpnE,EAAA,EAAAA,QAAA,CAAU2S,EAAA,EAAAA,KAAA,CAAO00D,EAAA,EAAAA,IAAA,CACnCjpE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IACTlD,EAAY,KAAAkd,QAAA,IAAZld,OAAO,CAEiB,IAAAqO,kBAAA,UAA4B,GAApDvZ,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CACnB84B,EAAqB,KAAAC,oBAAA,IAArBD,gBAAgB,CAElBktC,EAAgB,AAAA30D,CAAAA,MAAAA,EAAA,OAAAA,EAAOnP,MAAM,AAAD,IAAM,GAAK,CAAC42B,EAExCmtC,EAAmB,WAKvBj7D,EAAS,CACP8F,GALgB,KAAAwF,YAAA,EAAa,EAAA2wB,oBAAoB,CAAE,CACnD,gBAAiBpqC,CACnB,EAIA,GAEA,EAAA2f,QAAA,cAAsB,EACxB,EAEA,IAAMu5C,KAAc,wBAClBmQ,EACAzU,EAKM1C,EAIAoX,EAWF50C,EAQa,EAEW,EA6BnBpvB,wDA5DT+jE,EAAA,EAAAA,OAAA,CACAzU,EAAA,EAAAA,QAAA,CAKM1C,EAAqBmX,EAAU,iBAAmB,iBAIlDC,EAAc,CAClBtpE,aAAc,CAACA,EACf+M,QAAS,CAAC5J,EACV4jB,SALe,EAAAi4B,KAAA,qBAA0B,CAACxqC,GAM1CjI,YAAa88D,EAAU,EAAAjzC,cAAA,MAAoB,CAAG,EAAAA,cAAA,UAAwB,AACxE,EAEIlrB,GACFxG,OAAOk3C,MAAM,CAAC0tB,EAAa,CAAEp+D,QAAAA,CAAQ,GAGnCwpB,EAA8D,mBAC7D40C,GAAA,CACHC,mBAAoB3U,MAAAA,EAAA,OAAAA,EAAU2U,kBAAkB,GAG9Cr+D,CAAAA,GAAW,CAACm+D,CAAM,GACpB30C,CAAAA,EAAU,mBACLA,GAAA,CACH80C,YAAa5U,MAAAA,EAAA,OAAqB,OAArB,GAAAA,EAAU4U,WAAW,AAAD,GAApB,oBAAuB3kE,KAAK,CACzC4kE,kBAAmB7U,MAAAA,EAAA,OAAAA,EAAU6U,iBAAiB,CAC9CC,uBAAwB9U,MAAAA,EAAA,OAAgC,OAAhC,GAAAA,EAAU8U,sBAAsB,AAAD,GAA/B,oBAAkC7kE,KAAK,+CAKjE,EAAA+jB,UAAA,GAAa,IAET1d,EAAS,MAAT,MACF,SAAM,EAAA8C,UAAA,gBAA0B,CAAC,CAC/BlD,YAAa4pB,CACf,kBAFA,sBAIA,SAAM,EAAA1mB,UAAA,iBAA2B,CAAC,CAChClD,YAAa4pB,CACf,WAFA,iCAKF,EAAAlS,YAAA,UAAsB,CAAC,kBAEvB,EAAAA,YAAA,KAAiB,CAAC,CAChBoQ,MAAO3yB,EAAE,YACTwiB,UAAW,iBAAM,+BAAGxiB,EAAEiyD,MACtBn/B,YAAa9yB,EAAE,YACfuE,SAAU,yDACR,EAAAmb,QAAA,kBAA0B,GAE1BypD,SACF,EACF,uBACO,6BAEP,EAAAxgD,UAAA,IAAc,0BAElB,YAjEM,oCAmEA9I,EAAS,SAACjb,CAAK,EACnB,MAAO,KAAA42D,gBAAA,EAAiB52D,EAAOhD,EAAU,GAC3C,EAEM8nE,EAAkB,iBACtB,EAAAnnD,YAAA,KAAiB,CAAC,CAChB/jB,GAAI,iBACJm0B,MAAO3yB,EAAE,kBACTwiB,UAAWymD,EAAKU,gBAAgB,CAC5B,EAAAC,+BAA+B,CAC/B,EAAAC,8BAA8B,CAClCpnD,QAASziB,EAAE,gBACX0iB,IAAI,IAAE,iBAAOnU,CAAO,iCAClB,MAAO,GAAAA,MAAAA,EAAA,OAAAA,EAASqQ,YAAY,CAAC,SAACvX,CAAC,EAC7B4xD,EAAY,CACVmQ,QAAS,GACTzU,SAAUttD,CACZ,EACF,OACF,YAPakH,CAAO,kCAQtB,EACF,EAEA,MACE,WAAC,EAAA2I,IAAI,EAAClB,MAAM,gBACV,WAAC,EAAA8zD,YAAY,YACX,WAAC,EAAAzP,iBAAiB,YAChB,UAAC,EAAAxnD,IAAI,EAAC0D,SAAS,cAAMvW,EAAE,eACvB,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,cAAMsJ,EAAOopD,EAAKxrB,UAAU,OAE5CwrB,EAAKzrB,mBAAmB,EACvB,WAAC,EAAA6c,iBAAiB,YAChB,WAAC,EAAAxnD,IAAI,EAAC0D,SAAS,eAAMvW,EAAE,qBAAqB,OAC5C,WAAC,EAAA6S,IAAI,EAAC0D,SAAS,eAAK,IAAEsJ,EAAOopD,EAAKrtB,gBAAgB,QAGrDqtB,EAAKc,mBAAmB,EACvB,WAAC,EAAA1P,iBAAiB,YAChB,WAAC,EAAAxnD,IAAI,EAAC0D,SAAS,eAAMvW,EAAE,qBAAqB,OAC5C,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,cAAMsJ,EAAOopD,EAAKt4B,gBAAgB,OAGpDnjB,CAAAA,CAAQy7C,EAAKprB,MAAM,EAClB,WAAC,EAAAwc,iBAAiB,YAChB,UAAC,EAAAxnD,IAAI,EAAC0D,SAAS,cAAMvW,EAAE,gBACvB,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,cAAMsJ,EAAOopD,EAAKprB,MAAM,OAG1CorB,EAAKvrB,MAAM,EACV,WAAC,EAAA2c,iBAAiB,YAChB,UAAC,EAAAxnD,IAAI,EAAC0D,SAAS,cAAMvW,EAAE,aACvB,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,cAAMsJ,EAAOopD,EAAKnrB,GAAG,OAGxC,UAAC,EAAA7lC,OAAO,KACR,WAAC,EAAA+xD,wBAAwB,YACvB,UAAC,EAAAn3D,IAAI,EAAC0D,SAAS,cAAMvW,EAAE,eACvB,UAAC,EAAA6S,IAAI,EAAC0D,SAAS,KAAKN,WAAW,eAC5B4J,EAAOopD,EAAKntC,KAAK,UAIxB,WAAC,EAAAmuC,oBAAoB,YACnB,UAAC,QAAW,EACVj0D,MAAM,OACNF,YAAY,MACZhE,QAAS,WACP43D,GACF,EACAh5D,SAAUw4D,WAETlpE,EAAE,kBAEL,UAAC,QAAW,EACVgW,MAAM,OACNF,YAAY,QACZhE,QAAS,kBAAMmnD,EAAY,CAAEmQ,QAAS,EAAK,IAC3C14D,SAAUw4D,WAETlpE,EAAE,oBAKb,8SC3MMqiD,EAAe,QAAQ,CAC3B,CACEz9C,MAAO,eAAe,GACtBiQ,MAAO,QAAQ,EACjB,EACA,CACEytC,eAAgB,WAAM,CAAC,iBACzB,GAGIib,EAAS,QACN,CAAC,CACNiM,kBAAmB,QACV,GACNz4D,GAAG,CAAC,EAAG,WAAM,CAAC,mBACdC,GAAG,CAAC,IAAK,WAAM,CAAC,sBAAuB,CAAEyxC,EAAG,GAAI,IACnDgnB,uBAAwBpnB,EACxBknB,YAAalnB,CACf,GACCqgB,KAAK,CAAC,EAAAwH,qCAAqC,EAOjCL,EAAiC,WAC5C,IAAQ7pE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EACJ,KAAAzL,OAAA,EAAkD,CAChDtW,SAAU,KAAAg7C,WAAA,EAAYga,EACxB,GAIF,MAFA,KAAA7oC,8BAAA,EAA+BpK,GAG7B,UAAC,EAAAG,YAAY,oBAAKH,GAAA,UAChB,WAAC,EAAAvR,KAAK,EAACvE,QAAS,YACd,UAAC,SAAK,EACJ9V,KAAK,oBACLmW,MAAO7U,EAAE,sBACT2P,SAAS,QACTqK,WAAU,KAEZ,UAAC,EAAA2a,eAAe,EACdj2B,KAAK,yBACLmW,MAAO7U,EAAE,4BACT2P,SAAS,QACTqK,WAAU,GACVnW,QAAS,EAAA02C,yBAAyB,GAEpC,UAAC,EAAA5lB,eAAe,EACdj2B,KAAK,cACLmW,MAAO7U,EAAE,gBACT2P,SAAS,QACTqK,WAAU,GACVnW,QAAS,EAAA82C,aAAa,GAExB,UAAC,EAAAxU,QAAQ,EACPznC,KAAK,qBACLmW,MAAO7U,EAAE,kBAKnB,4RCvEakqE,EAAwC,QAAQ,CAAC,CAC5DZ,mBAAoB,QAAQ,GAAGt4D,GAAG,CAAC,KAAMw+B,QAAQ,EACnD,GAMao6B,EAAkC,WAC7C,IAAQ5pE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHsqB,EAAgD,KAAAzL,OAAA,EAAoB,CACxEtW,SAAU,KAAAg7C,WAAA,EAAY2mB,EACxB,GAIA,MAFA,KAAAx1C,8BAAA,EAA+BpK,GAG7B,UAAC,EAAAG,YAAY,oBAAKH,GAAA,UAChB,UAAC,EAAA6b,QAAQ,EAAaznC,KAAK,qBAAqBmW,MAAO7U,EAAE,eAG/D,ogBCaA,UAAY,CAAC,KAOb,IAAMmqE,EAAkC,gBAYhC,EAPJ,EACA,EA4DY,EAlE2BriD,EAAA,EAAAA,IAAA,CAAMlmB,EAAA,EAAAA,QAAA,CACvC5B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACD8C,EAAYglB,EAAZhlB,OAAO,CACTg5B,EAAQ,KAAA0/B,gBAAA,EAAiB1zC,EAAKgU,KAAK,CAAEl6B,GACrC+R,EACJ,AAAA7Q,CAAAA,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAASlE,QAAQ,AAAD,GAAhB,oBAAmBF,IAAI,AAAD,IAAM,EAAAspB,cAAA,gBAA8B,EAC1D,AAAAllB,CAAAA,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAASlE,QAAQ,AAAD,GAAhB,oBAAmBF,IAAI,AAAD,IAAM,EAAAspB,cAAA,gBAA8B,EAC1DF,EAAKkQ,QAAQ,CAETqG,EAAWvW,MAAAA,EAAA,OAAAA,EAAMnpB,WAAW,CAElC,IAAMkS,EACJ,AAAI,AAAA/N,CAAAA,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAASlE,QAAQ,AAAD,GAAhB,oBAAmBF,IAAI,AAAD,IAAM,EAAAspB,cAAA,gBAA8B,CACrD,EAGFF,EAAKhlB,OAAO,CAAClE,QAAQ,CAACq4B,SAAS,CAAG,EAAI,EAGzCwH,EAAgB,KAAAzf,WAAA,EAAY,WAChC,EAAAU,QAAA,WAAmB,CAACoI,EACtB,EAAG,EAAE,EAEC/G,EAAgB,SAACnc,CAAK,EAC1B,EAAA8a,QAAA,WAAmB,CAAC,CAClBlhB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAAAA,EACA+c,OAAQjb,CACV,EACF,EAEMuyB,EACJ,AAAIr0B,EAAQlE,QAAQ,CAACF,IAAI,GAAK,EAAAspB,cAAA,gBAA8B,CACnDhoB,EAAE,OAGJ8nB,EAAKhlB,OAAO,YAAY,EAAAke,OAAO,CAAG8G,EAAKhlB,OAAO,CAACq0B,IAAI,CAAG1xB,KAAAA,EAG/D,MACE,iCACE,WAAC,EAAAyX,EAAE,YACD,UAAC,EAAAY,EAAE,WAAEugB,IACL,UAAC,EAAAvgB,EAAE,EAACssD,UAAS,GAAC55C,WAAW,kBACtB1tB,MAAAA,EAAA,OAAAA,EAAS+nB,cAAc,GAE1B,UAAC,EAAA/M,EAAE,EAAChF,EAAG,IAAKsxD,UAAS,YACnB,UAAC,OAAI5lD,MAAO,CAAE6lD,WAAY,OAAQr0D,MAAO,aAAc,WACrD,UAAC,EAAAzF,aAAa,EACZC,mBAAoBsX,EAAKoP,SAAS,GAClCzmB,SAAU,SAACwQ,CAAY,SAAaF,EAAcE,IAClDvQ,SAAUiD,EACV9C,UAAWA,EACXD,KAAM9N,aAAmB,EAAAke,OAAO,CAAGle,EAAQs0B,UAAU,CAAG,EACxDzmB,OAAQwmB,QAId,UAAC,EAAArZ,EAAE,EAAChF,EAAG,IAAKsxD,UAAS,GAAC55C,WAAW,kBAC9BsL,IAEH,UAAC,EAAAhe,EAAE,EAAChF,EAAG,GAAIsxD,UAAS,YACjB,CAACtiD,EAAKkQ,QAAQ,EACb,UAAC,EAAAhlB,MAAM,EACLlB,QAAS2sB,EACT/tB,SACE,AAAA5N,CAAAA,MAAAA,EAAA,OAAiB,OAAjB,GAAAA,EAASlE,QAAQ,AAAD,GAAhB,oBAAmBJ,EAAE,AAAD,IAAM,EAAAwpB,cAAA,gBAA8B,UAG1D,UAAC,EAAAuG,IAAI,EAACvZ,GAAI,EAAAs1D,cAAc,UAK/BxiD,GACC,UAAC,EAAAgV,0BAA0B,EACzB/F,UAAWjP,EACX2V,GAAG,UACHhuB,GAAG,UACHsvB,GAAG,OACHlB,GAAG,OACH7nB,MAAM,QACN+mB,YAAa,SAAChnB,CAAQ,QACpB,UAAC,EAAAmH,EAAE,WACD,UAAC,EAAAY,EAAE,EAACysD,QAAS,EAAGvrC,GAAI,EAAGC,GAAI,WACxBlpB,WAQjB,EAEMy0D,EAAa,WACjB,IAAQxqE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAA+6C,iBAAiB,YAChB,UAAC,EAAAG,aAAa,EAACpiC,EAAG,EAAGD,EAAG,EAAG9I,MAAM,aAChC/P,EAAE,eAGT,EA4HA,EA1HuB,WACrB,IAA6C,OAAA8b,aAAA,IAArCla,EAAqC,EAArCA,QAAQ,CAAEouB,EAA2B,EAA3BA,MAAM,CAAEuM,EAAmB,EAAnBA,cAAc,CACR,IAAAjjB,kBAAA,UAA4B,GAApDvZ,EAAwB,EAAxBA,YAAY,CAAEmD,EAAU,EAAVA,KAAK,CACnBytC,EAAqB,EAAAr3B,kBAAA,cAAgC,GAArDq3B,gBAAgB,CACI,OAAAxoB,QAAA,IAApB5T,EAAoB,EAApBA,KAAK,CAAEk2D,EAAa,EAAbA,QAAQ,CACjB3uC,EAAQ,KAAAC,aAAA,IACR3T,EAAW,KAAAC,aAAA,IACTjK,EAAkB,KAAAC,QAAA,IAAlBD,aAAa,CAEf6qD,EAAO,KAAAl6C,OAAA,EAAQ,WACnB,IAAMvsB,EAAQ,IAAI,EAAAutC,UAAU,CAAC,CAC3B9kC,QAAS,AAAAw/D,CAAAA,MAAAA,EAAA,OAAAA,EAAUx/D,OAAO,AAAD,GAAK,EAC9BlL,aAAc,AAAA0qE,CAAAA,MAAAA,EAAA,OAAAA,EAAU1qE,YAAY,AAAD,GAAK,EAGxC+M,QAAS,AAAA29D,CAAAA,MAAAA,EAAA,OAAAA,EAAU39D,OAAO,AAAD,GAAK,EAC9B+uC,8BAA+B4uB,MAAAA,EAAA,OAAAA,EAAU5uB,6BAA6B,CACtEC,kBAAmB2uB,MAAAA,EAAA,OAAAA,EAAU3uB,iBAAiB,AAChD,GAEM4uB,EAAe,IAAI,EAAAxuB,IAAY,CAuBrC,OArBAwuB,EACGC,QAAQ,CAACp2D,GACTq2D,QAAQ,CAACpoE,GACTmoE,QAAQ,CAACp2D,GACTs2D,oBAAoB,CAACl6B,GACrBm6B,SAAS,CAAC96C,GAET5R,GACFssD,EAAaK,YAAY,CAAC,CACxBjlE,KAAMsY,EAAc9S,YAAY,CAEhC9M,GAAI4f,EAAcg0C,WAAW,EAAI,EAEjC1zD,KAAM0f,EAAcg0C,WAAW,EAAI,EACrC,GAGE,CAAC,KAAA/7B,KAAA,EAAMz0B,IACT8oE,EAAaniB,WAAW,CAAC3mD,GAGpB8oE,CACT,EAAG,CAACD,EAAUl2D,EAAO3S,EAAUouB,EAAQ2gB,EAAkBvyB,EAAc,EAE/Dpe,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEHi7C,EAA6B,CACjC,CACEpmC,MAAO,UAAC21D,EAAA,IACR11D,KAAM,KAAA0E,YAAA,EAAa,EAAA6wB,4BAA4B,CAAE,CAC/C,gBAAiBtqC,EACjB,SAAUmD,CACZ,EACF,EACD,CAED,MACE,iCACGklB,GACC,UAAC,EAAA4iD,gBAAgB,WACf,UAAC,EAAA7hD,aAAa,WACZ,UAAC,EAAAC,MAAM,SAIb,UAAC,SAAM,WACL,UAAC,EAAA1P,OAAO,WACN,UAAC,EAAAC,YAAY,WACX,WAAC,EAAAsxD,gBAAgB,YACf,WAAC,EAAAC,oBAAoB,YACnB,UAAC,SAAW,EAAC32D,MAAO0mC,IACnBj7C,EAAE,aACH,UAAC,EAAAmrE,oBAAoB,WACnB,UAAC,EAAAzuC,eAAe,WAAEH,SAGtB,WAAC,EAAA6uC,gBAAgB,YACf,UAAC,EAAAl0D,IAAI,EAAClB,MAAM,eACV,WAAC,EAAAgH,KAAK,EAAClH,YAAY,iBACjB,UAAC,EAAAmH,KAAK,WACJ,UAAC,EAAAC,EAAE,WACA,AAAU,OAAV,EAAAotB,UAAU,EAAV,AAAU,SAAV,EAAAA,UAAU,QAAV,EAAAA,UAAA,IAAe,CAAC,SAAC+gC,CAAU,CAAEh8D,CAAK,EAGjC,MACE,UAAC,EAAAwO,EAAE,EAAkBusD,UAAW,AAHJ,IAAV/6D,WAIfrP,EAAEqrE,IADIA,EAIb,OAGH,AAAA92D,CAAAA,MAAAA,EAAA,OAAAA,EAAOnP,MAAM,AAAD,EAAI,GACf,UAAC,EAAAkY,KAAK,WACH/I,MAAAA,EAAA,OAAAA,EAAOpF,GAAG,CAAC,SAACm8D,CAAQ,QACnB,UAACnB,EAAA,CACCriD,KAAMwjD,EAEN1pE,SAAUA,GAAY,IADjB0pE,EAASC,SAAS,WAQnC,UAAC,EAAAvC,SAAS,EACRltC,MAAOA,EACPl6B,SAAUA,GAAY,GACtB2S,MAAOA,EACP00D,KAAMA,kBASxB,05DC7QO,IAAMj2D,EAAS,gBAAa,MAUtBi4D,EAAmB,aAAU,MAE7BG,EAAmB,aAAU,MAQ7BtB,EAAe,aAAU,MAMzBzP,EAAoB,aAAU,MAO9B2P,EAA2B,cAAO3P,GAAA,KAKlC4P,EAAuB,aAAU,MAMjCiB,EAAuB,cAAO,EAAA3jC,iBAAiB,OAS/C4jC,EAAuB,cAAO,EAAA1uC,aAAa,OAM3Cse,EAAoB,cAAO,EAAAvrC,GAAG,oJC3C9BwiD,EAAe,gBAC1BC,EAAA,EAAAA,YAAA,CACA1zC,EAAA,EAAAA,MAAA,CACA0B,EAAA,EAAAA,UAAA,CACAyT,EAAA,EAAAA,OAAA,CAEQ1zB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAAkgB,KAAK,EAAC3B,OAAQA,EAAQE,QAASwB,EAAYhH,KAAK,KAAKkH,WAAU,aAC9D,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,EAAE,eAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WAAEyxC,IACZ,UAAC,EAAAvxC,WAAW,EAAC5O,QAASmO,WACpB,WAAC,EAAAU,WAAW,EAACC,IAAI,cACf,UAAC,EAAA5N,MAAM,EAAC8C,YAAY,YAAYhE,QAAS4hB,WACtC1zB,EAAE,SAEL,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,QAAQhE,QAASmO,WAClCjgB,EAAE,sBAOjB,6IC7Ba8qD,EAAc,gBACzBhsC,EAAA,EAAAA,QAAA,CACAP,EAAA,EAAAA,MAAA,CACAE,EAAA,EAAAA,OAAA,CAEQze,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAAkgB,KAAK,EAAC3B,OAAQA,EAAQE,QAASA,EAASxF,KAAK,KAAKkH,WAAU,aAC3D,UAAC,EAAAC,YAAY,KACb,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAC,WAAW,WAAEtgB,EAAE,eAChB,UAAC,EAAAugB,gBAAgB,KACjB,UAAC,EAAAC,SAAS,WAAExgB,EAAE,oBACd,UAAC,EAAA0gB,WAAW,EAAC5O,QAAS2M,WACpB,WAAC,EAAAkC,WAAW,EAACC,IAAI,cACf,UAAC,EAAA5N,MAAM,EAAC8C,YAAY,YAAYhE,QAASgN,WACtC9e,EAAE,SAEL,UAAC,EAAAgT,MAAM,EAAC8C,YAAY,QAAQhE,QAAS2M,WAClCze,EAAE,sBAOjB,slFC3CO,IAAMwrE,EAAyB,cAAO,EAAArH,aAAa,OAK7CsH,EAAqB,cAAO,EAAA/lC,SAAS,OAKrCgmC,EAA6B,cAAO,EAAAl8D,GAAG,OAKvCm8D,EAAwB,aAAU,MAKlCC,EAA0B,cAAO,EAAA/4D,IAAI,OAStB,cAAO,EAAArD,GAAG,OAM/B,IAAMq8D,EAAuB,aAAU,MAMjCC,EAAmB,cAAO,EAAA5I,SAAS,OAMnC6I,EAAkB,cAAO,EAAAv8D,GAAG,OAQ5Bw8D,EAAgB,cAAO,EAAAx8D,GAAG,OAI1By8D,EAAqB,cAAO,EAAAz8D,GAAG,OAW/B08D,EAAwB,cAAO,EAAA18D,GAAG,OASlC28D,EAAY,cAAO,EAAA38D,GAAG,OAStB48D,EAA0B,cAAO,EAAA58D,GAAG,4TClDpCsjD,EAAe,SAAC1/C,CAAK,EAChC,QAAQ2/C,EAAsB3/C,EAAtB2/C,iBAAiB,CACnBsZ,EAAW,KAAA3yC,MAAA,EAAyB,MAElC15B,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDkD,EAAU,KAAAopE,eAAA,IAAVppE,KAAK,CAEPqpE,EAAa,AAA0B,UAA1B,MAAOrpE,CAAAA,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,AAAD,EAEL,OAAA2a,QAAA,EAAS,CACzCC,SAAU,CAAC,sBAAuBxkB,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CAAC,CACjDktB,QAASuyC,EACT5kD,QAAS,wDACP,AAAKzkB,CAAAA,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,AAAD,EAIX,KAAAiB,UAAA,qBAA+B,CAAC,CACrCjB,QAAS5J,EAAM4J,OAAO,AACxB,IALS,QAMX,EACF,GAZQ2b,EAA0B,EAA1BA,UAAU,CAAE,EAAc,EAAdhf,IAAI,CAAJA,EAAA,WAAO,EAAE,GAc7B,IAAM+iE,KAAe,iBAAO/hE,CAAC,MAMZ,EAAPgc,EAAA,wDALR,GAAI,CAACssC,EACH,2BAMA,yBAFMtsC,EAAO,AAAqB,OAArB,GAAAhc,EAAEgiE,aAAa,CAACjmD,KAAK,AAAD,GAApB,mBAAuB,CAAC,EAAE,CAEnC,CAACtjB,CAAAA,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,AAAD,GAAK,CAAE2Z,CAAAA,aAAgBilC,IAAG,EAC1C,UAGF,SAAM,EAAA39C,UAAA,qBAA+B,CAAC,CACpCjB,QAAS5J,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CACvB3E,SAAU,CACRse,KAAAA,CACF,CACF,WAEA,OAPA,SAOA,GAAM,EAAA8S,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,CAAC,sBAAuBxkB,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CAClD,kBAFA,SAIA,EAAA0lC,KAAA,QAAa,CAACxyC,EAAE,qDAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAElB,YA3B4ByK,CAAC,mCA6BvBkrD,EAAc,WAClB,EAAApC,eAAA,MAAqB,EACvB,EAEA,IAAMmZ,KAAwB,uBAKd3mE,wDAJd,GAAI,CAAC7C,CAAAA,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,AAAD,EAChB,UAGuB,SAAM,cAAU,UAAwB,OAAf5J,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CAAC,QAAO,CACtEpD,OAAQ,MACRgoD,aAAc,MAChB,kBAHc3rD,EAAW,SAAjB0D,IAAI,CAKZ,EAAA0Y,SAAA,eAAwB,CAACpc,EAAS,eAA4B,OAAd7C,EAAM4J,OAAO,CAAC,eAChE,+CAuBA,MACE,WAAC,EAAAs3C,MAAM,EACLnrC,KAAK,KACLsF,OAAQguD,EACRjoD,UAAU,QACV7F,QAASk3C,YAET,UAAC,EAAAtR,aAAa,KACd,WAAC,EAAAC,aAAa,YACZ,UAAC,EAAAE,iBAAiB,KAClB,UAAC,EAAAD,YAAY,WACVvkD,EAAE,cAAe,CAAEoyD,YAAalvD,MAAAA,EAAA,OAAAA,EAAOkvD,WAAW,AAAC,KAEtD,UAAC,EAAA3N,UAAU,WACT,WAAC,EAAAt7B,aAAa,EACZyI,QAASnJ,EACT/N,QAAQ,OACRxL,cAAc,mBAEb6jD,GACC,iCACE,UAAC,SACCzkC,IAAK+9C,EACLvmE,KAAK,OACL6mE,OAAM,GACNl8D,SAAU+7D,IAEZ,UAAC,EAAAr5D,WAAW,EACVk3D,WAAW,OACXv0D,YAAY,OACZoM,GAAI,EACJmK,GAAI,EACJva,QAAS,eACP,CAAgB,QAAhB,GAAAu6D,EAASrwD,OAAO,AAAD,GAAf,cAAkBuT,KAAK,EACzB,WAECvvB,EAAE,eAKRyJ,EAAKrE,MAAM,CAAG,GACb,UAAC,EAAA8R,IAAI,WACH,UAAC,EAAAI,QAAQ,WACP,UAAC,EAAAyG,cAAc,WACb,WAAC,EAAAf,KAAK,EAACrK,QAAQ,mBACb,UAAC,EAAAsK,KAAK,WACJ,WAAC,EAAAC,EAAE,YACD,UAAC,EAAAW,EAAE,WAAE7d,EAAE,UACP,UAAC,EAAA6d,EAAE,WAAE7d,EAAE,iBAGX,UAAC,EAAAsd,KAAK,WACH7T,EAAK0F,GAAG,CAAC,SAACsX,CAAI,MAzElCA,EA0EqB,MACE,WAAC,EAAAvJ,EAAE,YACD,UAAC,EAAAY,EAAE,WACD,UAAC,EAAAsD,gBAAgB,EACfE,cAAemF,EAAKmmD,OAAO,CAC3BvrD,SAAUoF,EAAKpF,QAAQ,CACvBI,SAAU,GACV1R,MAAM,UACNwG,SAAS,SAGb,UAAC,EAAAuH,EAAE,EAACssD,UAAS,YACX,UAAC,EAAA9nD,UAAU,EACTL,OAAO,UACPnQ,OAAO,EAxFpC2U,EAwFuDA,EAxFF,+EACpD,GAAI,CAACvjB,CAAAA,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,AAAD,EAChB,2BAIA,gCAAM,EAAAiB,UAAA,wBAAkC,CAAC,CACvCjB,QAAS5J,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CACvBG,OAAQwZ,EAAKjoB,EAAE,AACjB,WACA,OAJA,SAIA,GAAM,EAAA+6B,WAAA,eAA0B,CAAC,CAC/B7R,SAAU,CAAC,sBAAuBxkB,MAAAA,EAAA,OAAAA,EAAO4J,OAAO,CAClD,kBAFA,SAIA,EAAA0lC,KAAA,QAAa,CAACxyC,EAAE,qDAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAElB,UAyDiCymB,EAAKpF,QAAQ,CAkB1B,cAQX,CAACoH,GAAchf,AAAgB,IAAhBA,EAAKrE,MAAM,EACzB,UAAC,EAAAyN,IAAI,EAAC9C,MAAM,oBAAY/P,EAAE,4BAKhC,WAAC,EAAA2kD,YAAY,YACX,UAAC,EAAA3xC,MAAM,EACLL,QAAQ,UACRmD,YAAY,MACZrG,GAAI,EACJqC,QAAS6jD,WAER31D,EAAE,YAEL,UAAC,EAAAmT,WAAW,EACVR,QAAQ,UACRmD,YAAY,MACZrG,GAAI,EACJqC,QAAS46D,WAER1sE,EAAE,oCAMf,8JCxOM6sE,EAAgB,KAAA35C,WAAA,EAAmC,CACvDhwB,MAAO,IACT,GAEaqwD,EAAkB,KAAAjgC,SAAA,EAAUu5C,EAAe,CACtDC,SAAU,SAAC57D,CAAC,CAAEhO,CAAK,QAA8C,CAC/DA,MAAAA,CACF,GAEA0gD,MAAO,iBAAO,CACZ1gD,MAAO,IACT,EACF,GAEaopE,EAAkB,iBAAM,KAAAj6C,OAAA,EAAQw6C,8jBC6DvCE,EAAwB,CAAC,EAAE,CAE3BC,EAAyB,gBAC7B9pE,EAAA,EAAAA,KAAA,CACA+pE,EAAA,EAAAA,SAAA,CAEQ7a,EAAgBlvD,EAAhBkvD,WAAW,CACXpyD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,UAAC,EAAA2rE,qBAAqB,WACpB,WAAC,EAAAC,uBAAuB,YACrBqB,EACA7a,GACC,iCAAE,KACGA,EACH,UAAC,EAAAhuC,OAAO,EAACvP,MAAO7U,EAAE,gBAAiBqkB,SAAQ,GAACC,UAAU,eACpD,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,aAOnD,EAEMk7D,EAAe,oBACnBzpE,EAAA,EAAAA,MAAA,CACAjB,EAAA,EAAAA,KAAA,CACAU,EAAA,EAAAA,KAAA,CACAiqE,EAAA,EAAAA,OAAA,CACAC,EAAA,EAAAA,SAAA,CAEMpiE,EAAUoC,aAAaC,OAAO,CAAC,QAC/BumC,EAAS,KAAAqY,SAAA,IACPjsD,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC6B,eAAAsT,QAAA,EAAS,OAAxCoL,EAA+B,KAAlBC,EAAkB,KAE9B5e,EAAiB,EAAA4sC,mBAAA,UAA6B,GAA9C5sC,YAAY,CAEZu+D,EAAc,KAAA+O,kBAAA,EAAmB,CACvCpiE,QAASzI,EACTzC,aAAc,CAACA,EACfmD,MAAAA,CACF,GAJQo7D,SAAS,CAMjB,IAAMgP,KAAU,iBAAO7iE,CAAC,MAIZhB,EASDpE,wDAZToF,EAAE4F,eAAe,oBAGE,gCAAM,cAAS,KAAA43B,gBAAA,EAAiBzlC,GAAQ,CACvDkH,OAAQ,EAAAuiB,YAAA,IAAgB,CACxBylC,aAAc,OACd/qD,OAAQ,CACNqE,QAAAA,CACF,CACF,kBANQvB,EAAS,SAATA,IAAI,CAQZ,EAAA0Y,SAAA,eAAwB,CAAC1Y,EAAO,SAAc,OAANjH,EAAM,6BACvC,kCACX,YAduBiI,CAAC,mCAgBxB,IAAM8zD,KAAc,+EAClB,EAAA51C,UAAA,GAAa,8CAEU,UAAjB,OAAOnmB,EAAP,YACF,SAAM,EAAAuL,UAAA,wBAAkC,CAAC,CACvC9C,QAASzI,CACX,WAFA,SAIAoxC,EAAOyY,UAAU,uDAGnB,EAAA7Z,KAAA,MAAW,CACTxyC,EAAE,mBAAoB,CACpByxD,OAAQzxD,EAAE,SAASs5B,WAAW,EAChC,wBAGF,EAAA3Q,UAAA,IAAc,0BAElB,+CAEM8/C,EAAkB,SAACh+D,CAAC,EACxBA,EAAE4F,eAAe,GAEjBsO,EAAe,CAACD,EAClB,EAIA,MACE,iCACE,UAAC,EAAAytD,SAAS,EAACr6D,QAAS,SAACrH,CAAC,SAAiB6iE,EAAQ7iE,aAC7C,UAAC,EAAA8iE,aAAa,OAEhB,UAAC,EAAAziB,WAAW,EACVhsC,SAAUy/C,EACVhgD,OAAQG,EACRD,QAVmB,kBAAME,EAAe,OAYzClb,IAAW,EAAA0yB,cAAA,MAAoB,EAC9B,iCACGg3C,GACC,UAAC,EAAAhB,SAAS,EAACr6D,QAASwsD,WAClB,UAAC,EAAAkP,UAAU,OAGdJ,GACC,UAAC,EAAAjB,SAAS,EAACr6D,QAAS,SAACrH,CAAC,SAAiBg+D,EAAgBh+D,aACrD,UAAC,EAAAgjE,QAAQ,YAOvB,EAEMC,EAAkB,gBACtB/6C,EAAA,EAAAA,KAAA,CACAlvB,EAAA,EAAAA,MAAA,CACAwH,EAAA,EAAAA,OAAA,CACA/H,EAAA,EAAAA,KAAA,CACA+wD,EAAA,EAAAA,QAAA,CAEA,MACE,UAAC,EAAA+X,aAAa,WACZ,WAAC,EAAAD,eAAe,YACd,WAAC,EAAAE,kBAAkB,YACjB,UAAC,EAAAp5D,IAAI,EAACggB,KAAK,eAAOF,IAClB,UAAC,EAAA9f,IAAI,EAACggB,KAAK,cAAM5nB,IACjB,UAAC,EAAAmrB,UAAU,EAAC3yB,OAAQA,OAEtB,UAAC,EAAAyoE,qBAAqB,WACpB,UAACgB,EAAA,CACCC,QAASlZ,EACTmZ,UAAWnZ,EACXxwD,OAAQA,EACRjB,MAAOyI,EACP/H,MAAOA,UAMnB,EAuLA,EArLmB,WACjB,IAAQnD,EAAiB,EAAA4sC,mBAAA,UAA6B,GAA9C5sC,YAAY,CACZ2wC,EAAe,EAAA/D,mBAAA,cAAiC,GAAhD+D,UAAU,CACV1uC,EAAe,KAAA8Z,aAAA,IAAf9Z,UAAU,CACZomB,EAAW,KAAAC,aAAA,IACuB,OAAAslD,gBAAA,IAAhCC,EAAgC,EAAhCA,aAAa,CAAEC,EAAiB,EAAjBA,YAAY,CACC,eAAAv6D,QAAA,EAElC,EAAE,KAFGw6D,EAA6B,KAAjBC,EAAiB,KAI5B/tE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHkO,EAAW,KAAAC,WAAA,IAIjB,GAFA,KAAA+pC,uBAAA,IAEI,CAACl2C,EACH,OAAO,KAGT,IAAQtD,EAASsD,EAATtD,IAAI,CAENsvE,EAAiBhsE,EAAWq0C,aAAa,CAEzC4iB,EAAc,SAAC/1D,CAAK,EACxB,EAAAwc,QAAA,cAAsB,GACtB,EAAAqxB,QAAA,iBAAyB,CAAC7tC,GAE1BgL,EAAS,CACP8F,GAAK,2CACLrN,OAAQ,CACN5G,aAAcA,EACdmD,MAAOA,EAAM4J,OAAO,AACtB,CACF,EACF,EAEA,MACE,UAAC,SAAM,WACL,UAAC,EAAA4M,OAAO,WACN,WAAC,EAAAC,YAAY,YACX,UAAC,EAAA8xD,kBAAkB,EAACwC,SAAS,gBAAQvvE,IACrC,UAAC,EAAAotE,gBAAgB,EAACoC,aAAcnB,EAAuBoB,cAAa,YACjE/lD,EACC,UAAC,EAAAgB,MAAM,EAACgI,YAAW,KAEnBsf,MAAAA,EAAA,OAAAA,EAAYvhC,GAAG,CAAC,SAACjM,CAAK,CAAEmM,CAAK,EAC3B,IAAQgJ,EAAWnV,EAAXmV,MAAM,CACR+1D,EAAY,CAAC,CAAC/1D,CAAAA,MAAAA,EAAA,OAAAA,EAAQjT,MAAM,AAAD,EAC3B6nE,EAAa,GAAgB,OAAdjtE,EAAE,SAAS,KAAa,OAAVqP,EAAQ,GAErCg/D,EAAe,SAAC1sB,CAAU,EAC9BosB,EAAc,EAAE,EAChB,IAAMvrE,EAAQ6V,MAAAA,EAAA,OAAAA,CAAQ,CAACspC,EAAW,CAGlC76B,AAFiB8mD,EAAcprE,MAAAA,EAAA,OAAAA,EAAOyI,OAAO,EAEpCjG,IAAI,CAAC,SAAUmF,CAAM,EACxBA,GACF4jE,EAAc5jE,EAElB,EACF,EAEA,MACE,UAAC,EAAA0hE,oBAAoB,WACnB,UAAC,EAAA30D,IAAI,WACH,WAAC,EAAAs0D,sBAAsB,YACrB,WAAC,EAAAnH,eAAe,EACd5tD,OAAQ,CAAEd,gBAAiB,SAAU,YAErC,UAAC,EAAA+1D,0BAA0B,EAAC12D,GAAG,gBAC7B,UAACg4D,EAAA,CACCC,UAAWA,EACX/pE,MAAOA,MAGX,UAAC,EAAAqhE,aAAa,QAGhB,WAAC,EAAAC,cAAc,EAACvlC,GAAI,YAClB,UAAC,EAAAtC,gBAAgB,EAACz5B,MAAOA,IAEzB,WAAC,EAAAkpE,uBAAuB,EAACxrD,IAAK,YAC3BotD,GACC,UAAC,EAAAh7D,MAAM,EACLiG,KAAK,KACLnH,QAAS,kBAAMmnD,EAAY/1D,aAE1BlD,EAAE,oBAGNkD,EAAM6J,SAAS,EACd,UAAC,EAAAiG,MAAM,EACL8C,YAAY,MACZnD,QAAQ,UACRsG,KAAK,KACLnH,QAAS,WACP5D,EAAS,CACP8F,GAAK,gBAA+B,OAAhBjU,EAAa,KAA4B,OAAzBmD,EAAM4J,OAAO,CAAC,aAA2B,OAAhB5J,EAAM6J,SAAS,CAC9E,EACF,WAEC/M,EAAE,mBAGP,UAAC,EAAAgT,MAAM,EACLiG,KAAK,KACLtG,QAAQ,UACRmD,YAAY,MACZhE,QAAS,WACP,EAAAyhD,eAAA,SAAwB,CAACrwD,EAC3B,WAEClD,EAAE,iBAGP,UAAC,EAAAkjE,SAAS,EACRzyD,SAAU,SAAC69D,CAAQ,SACjBD,EAAaC,IAEfnL,YAAW,GACXoL,aAAY,YAEXH,GACC/1D,EAAOlJ,GAAG,CAAC,SAAC3M,CAAK,CAAEgsE,CAAQ,EACzB,IAAMC,EAAc,GAClB,OADoBzuE,EAAE,SAAS,KAEhC,OADCwuE,EAAW,GAGb,MACE,WAAC,EAAArK,aAAa,YACZ,WAAC,EAAAE,eAAe,YACd,UAACqJ,EAAA,CACC/6C,MAAO87C,EACPhrE,OAAQjB,MAAAA,EAAA,OAAAA,EAAOiB,MAAM,CACrBwH,QAASzI,MAAAA,EAAA,OAAAA,EAAOyI,OAAO,CAEvB/H,MAAOA,EACP+wD,SAAU+Z,GAFLQ,GAIP,UAAC,EAAAjK,aAAa,QAGhB,UAAC,EAAAC,cAAc,EACbvlC,GAAI,EACJza,MAAO,CACL9J,QAAS,OACTkY,eAAgB,QAClB,WAECi7C,EACC,UAAC,EAAAzkD,MAAM,KAEP,UAAC,EAAAna,IAAI,EAACm9C,QAAQ,kBACZ,UAAC,EAAApvC,KAAK,EACJuiB,QACE,EAAAmvC,2BAA2B,CAE7BjlE,KAAMqkE,UA5BIU,EAmCxB,cArGen/D,EA4G/B,KAGJ,UAAC,EAAAyjD,YAAY,EAACC,kBAAiB,WAKzC,+WCpZA,IAAM4b,EAAqB,cAAO,EAAAn/D,GAAG,OAI/Bo/D,EAAwB,cAAO,EAAAp/D,GAAG,OAK3Bk/D,EAA8B,CACzC,CACEvrC,OACE,UAACyrC,EAAA,UACE,WAAM,CAAC,yBAGZ/uC,SAAU,cACV7pB,MAAO,MACPstB,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAAC+pE,EAAA,UAAoB/pE,GAC9B,CACF,EACA,CACEu+B,OAAQ,UAACyrC,EAAA,UAAuB,WAAM,CAAC,cACvC/uC,SAAU,WACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAAC+pE,EAAA,UAAoB/pE,GAC9B,CACF,EACA,CACEu+B,OACE,UAACyrC,EAAA,UACE,WAAM,CAAC,sBAGZ/uC,SAAU,eACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MACE,UAAC+pE,EAAA,UACE/pE,GAASA,EAAQ,EAAIA,EAAQ,IAGpC,CACF,EACA,CACEu+B,OACE,UAACyrC,EAAA,UAAuB,WAAM,CAAC,oBAEjC/uC,SAAU,YACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MACE,UAAC+pE,EAAA,UACE/pE,GAASA,EAAQ,EAAIA,EAAQ,IAGpC,CACF,EACA,CACEu+B,OAAQ,UAACyrC,EAAA,UAAuB,WAAM,CAAC,YACvC/uC,SAAU,SACVyD,KAAM,gBAAG1+B,EAAA,EAAAA,KAAA,CACP,MAAO,UAAC+pE,EAAA,UAAoB/pE,GAC9B,CACF,EACD,6YCtDD,IAAMiqE,EAA6B,aAAU,MAShClyC,EAAmB,gBAC9Bz5B,EAAA,EAAAA,KAAA,CACA05B,EAAA,EAAAA,kBAAA,CACA9M,EAAA,EAAAA,MAAA,CACAtI,EAAA,EAAAA,oBAAA,CAQElc,EAMEpI,EANFoI,YAAY,CACZ6mD,EAKEjvD,EALFivD,kBAAkB,CAClBC,EAIElvD,EAJFkvD,WAAW,CACXtyC,EAGE5c,EAHF4c,IAAI,CACJoyC,EAEEhvD,EAFFgvD,eAAe,CACf4c,EACE5rE,EADF4rE,YAAY,CAGN9uE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACH+uE,EAA0BnyC,GAAsBw1B,EAEtD,MACE,UAACyc,EAAA,UACC,WAAC,EAAA5/D,IAAI,EACH2R,IAAKkP,EAAS,EAAI,EAClB5gB,cAAe4gB,EAAS,MAAQ,SAChC9Z,MAAM,OACNq1C,SAAS,iBAER0jB,GACC,WAAC,EAAA9/D,IAAI,EAACC,cAAc,MAAMyb,WAAW,SAAS/J,IAAK,YACjD,UAAC,EAAA/N,IAAI,EAAC2d,WAAW,kBAAU4hC,IAC3B,UAAC,EAAAhuC,OAAO,EAACvP,MAAO7U,EAAE,gBAAiBqkB,SAAQ,GAACC,UAAU,eACpD,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,SAI1C,CAAC,KAAAqkB,KAAA,EAAM/qB,IACN,WAAC,EAAA2D,IAAI,EAACC,cAAc,MAAMyb,WAAW,SAAS/J,IAAK,YACjD,UAAC,EAAA/N,IAAI,EAAC2d,WAAW,kBACd,EAAAw+C,qBAAqB,CAACxnD,GAAwBlc,EAAa,GAE9D,UAAC,EAAA8Y,OAAO,EACNvP,KAAK,CAEC7U,EAAE,AADNsL,AAAiB,IAAjBA,EACM,+BACA,aAER+Y,SAAQ,GACRC,UAAU,eAEV,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,SAI3C,WAAC,EAAA/C,IAAI,EAACC,cAAc,MAAMyb,WAAW,SAAS/J,IAAK,YACjD,WAAC,EAAA/N,IAAI,EAAC2d,WAAW,mBAvCN,AAAA1Q,CAAAA,GAAQ,GAAMoyC,CAAAA,GAAmB,GAwC/B,IAAElyD,EAAE,UAEjB,UAAC,EAAAokB,OAAO,EAACvP,MAAO7U,EAAE,cAAeqkB,SAAQ,GAACC,UAAU,eAClD,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,SAGxCmgD,GACC,WAAC,EAAAljD,IAAI,EAACC,cAAc,MAAMyb,WAAW,SAAS/J,IAAK,YACjD,UAAC,EAAA/N,IAAI,EAAC2d,WAAW,kBACd,EAAAy+C,qBAAqB,CAAC9c,EAAmB,GAE5C,UAAC,EAAA/tC,OAAO,EACNvP,MACE,EAAAq6D,0BAA0B,CAAC/c,EAAmB,EAC9CnyD,EAAE,uBAEJqkB,SAAQ,GACRC,UAAU,eAEV,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,SAI1C88D,GACC,WAAC,EAAA7/D,IAAI,EAACC,cAAc,MAAMyb,WAAW,SAAS/J,IAAK,YACjD,UAAC,EAAA/N,IAAI,EAAC2d,WAAW,kBACd,KAAA0lC,sBAAA,EAAuB4Y,KAE1B,UAAC,EAAA1qD,OAAO,EAACvP,MAAO7U,EAAE,YAAaqkB,SAAQ,GAACC,UAAU,eAChD,UAAC,EAAAC,QAAQ,EAACxU,MAAM,YAAYiC,QAAS,aAOnD,iTCvGaq7D,EAAqB,kBAChCpiE,EAAA,EAAAA,OAAA,CACAlL,EAAA,EAAAA,YAAA,CACAmD,EAAA,EAAAA,KAAA,CAMQy2C,EAA2B,KAAAD,2BAAA,IAA3BC,sBAAsB,CACxBzrC,EAAW,KAAAC,WAAA,IA2HjB,MAAO,CACLmwD,SAAS,IA1HO,uBAQVhzD,EAEEm/D,EAIY0E,EAAeriE,EAE3BrD,EAKA2lE,EAIAC,EAKW,EAKXC,EAoBAC,wDAtDR,GAAI,CAACtkE,GAAW,CAAClL,GAAgB,CAACmD,EAAMtB,QAAQ,CAC9C,UAGF,EAAA+mB,UAAA,GAAa,oBAKM,6BAFbrd,EAAepI,EAAMoI,YAAY,CAEpB,GAAM,EAAAyC,UAAA,iBAA2B,CAAC,CACjD9C,QAAS,CAACA,CACZ,WAIa,OAFKkkE,EAA2B1E,AAJvCA,CAAAA,EAAW,UAIT3jD,QAAQ,CAAiBha,EAAY29D,EAAZ39D,OAAO,CAE3B,GAAM,EAAAiB,UAAA,gCAA0C,CAAC,CAC5DhO,aAAc,CAACA,EACf6B,SAAUsB,EAAMtB,QAAQ,AAC1B,WAgCA,GA1BMytE,CAAAA,EAAkBD,MAJlBA,CAAAA,EAAY3lE,AALZA,CAAAA,EAAO,UAKUnB,MAAM,CAC3B,SAACuG,CAAC,SAAKA,EAAEkZ,YAAY,GAAK,EAAAC,cAAA,gBAA8B,IAGlC,OAAAonD,EAAW/vD,IAAI,CAAC,SAACmzC,CAAC,SACxC2c,MAAAA,EAAA,OAAAA,EAAe9vD,IAAI,CAAC,SAACmwD,CAAE,SAAKhd,EAAEjzC,WAAW,GAAKiwD,EAAGhxE,EAAE,OAG9B0I,MAAMC,OAAO,CAACkoE,EAAgBlwD,aAAa,GAChE7T,CAAAA,EAAe,GAAA4T,IAAA,EAAKlO,GAAG,CAAR,QACb,QAAGq+D,EAAgBlwD,aAAa,IAI9BmwD,EAAe7lE,MAAAA,EAAA,OAAAA,EAAMnB,MAAM,CAAC,SAACxF,CAAO,EACxC,GAAI,CAACoE,MAAMC,OAAO,CAACgoE,GACjB,MAAO,EAAE,CAGX,IAAMM,EAAkBN,EAAchgE,GAAG,CACvC,SAACugE,CAAY,SAAKA,EAAalxE,EAAE,SAGnC,EAAKsE,EAAQyc,WAAW,EAIjBkwD,EAAgBl6C,QAAQ,CAACzyB,EAAQyc,WAAW,CACrD,GAEI,CAAC4vD,EACH,iBAGII,EAAA,GAENJ,EAAc/nE,OAAO,CAAC,SAACuoE,CAAe,EACpC,IAAMC,EAAkBN,MAAAA,EAAA,OAAAA,EAAcjwD,IAAI,CACxC,SAACwwD,CAAW,QAAK,AAAAA,CAAAA,MAAAA,EAAA,OAAAA,EAAatwD,WAAW,AAAD,IAAMowD,CAAAA,MAAAA,EAAA,OAAAA,EAAiBnxE,EAAE,AAAD,IAGlE,GAAKoxE,GAIL,IAAMhxE,EACJ+6C,EAAuBi2B,MAAAA,EAAA,OAAAA,EAAiBhjE,UAAU,GAClD,IAAI,EAAArO,QAAQ,CAAC,CACXC,GAAI,AAAAoxE,CAAAA,MAAAA,EAAA,OAAAA,EAAiB7nD,YAAY,AAAD,GAAK,GACrCrpB,KAAMkxE,MAAAA,EAAA,OAAAA,EAAiB7nD,YAAY,CACnCppB,YAAaixE,MAAAA,EAAA,OAAAA,EAAiBE,mBAAmB,AACnD,GAEIhtE,EAAU6sE,EAAgB33C,QAAQ,CACpC,EAAAhX,OAAA,eAAsB,CAAC,mBAAK4uD,GAAA,CAAiBhxE,SAAAA,KAC7C,EAAAqpB,YAAA,+BAA2C,CAAC2nD,EAAiB,CAC3DhxE,SAAAA,CACF,GAEA,EAAAitB,uBAAA,GAA0B,CAAC8jD,GAC7BJ,EAAkBlvE,IAAI,CACpB,EAAAwrB,uBAAA,SAAgC,CAAC,mBAC5B8jD,GAAA,CACH7sE,QAAAA,MAIJysE,EAAkBlvE,IAAI,CACpB,EAAAsf,SAAA,SAAkB,CAAC,mBACdgwD,GAAA,CACH7sE,QAAAA,EACAk1B,SAAU,CAAC,CAAC23C,EAAgB33C,QAAQ,CACpCx5B,GAAIsE,EAAQ8c,YAAY,OAIhC,GAEAta,QAAQ0/B,GAAG,CAACuqC,GAERA,EAAkBnqE,MAAM,CAAG,GAC7B,EAAAsa,QAAA,SAAiB,CAAC6vD,GAGpB,EAAA7vD,QAAA,YAAoB,CAAC+qD,GAErB,EAAA15B,QAAA,iBAAyB,CAAC,mBAAK7tC,GAAA,CAAOoI,aAAAA,KAEtC4C,EAAS,CACP8F,GAAK,2CACLrN,OAAQ,CACN5G,aAAcA,EACdmD,MAAO4J,CACT,CACF,uBAEA,EAAA6b,UAAA,IAAc,0BAElB,8CAIA,CACF,iKCrJaglD,EAAmB,WAC9B,MAAwC,eAAAr6D,QAAA,EAAkB,OAAnDu6D,EAAiC,KAAnBkC,EAAmB,KAwBxC,MAAO,CAAEnC,aAAa,IAtBA,iBACpB3iE,CAAO,wDAEP,GAAI,CAACA,EACH,UAGF8kE,EAAgB,qBAGC,gCAAM,EAAAhiE,UAAA,iBAA2B,CAAC,CAC/C9C,QAAS,CAACA,CACZ,WAIA,MAAO,GAFcoN,AAJN,SAIPyO,QAAQ,gBAIhBipD,EAAgB,2BAEpB,YAnBE9kE,CAAO,mCAqBe4iE,aAAAA,CAAa,CACvC,4TCsEA,EA3EkB,WAChB,MAAQ7tE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC+B,eAAAsT,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KACZ,eAAA5X,QAAA,EAAoB,CAAC,MAA1ClJ,EAAqB,KAAb4lE,EAAa,KACtB9hE,EAAW,KAAAC,WAAA,IACT48B,EAAa,EAAAI,UAAA,UAAoB,GAAjCJ,QAAQ,CACV//B,EAAUoC,aAAaC,OAAO,CAAC,QAEF,OAAAwR,OAAA,IAA3B6E,EAA2B,EAA3BA,QAAQ,CAAE9E,EAAiB,EAAjBA,YAAY,CAE9B,IAAMwL,KAAgB,iBAAOkB,CAAM,MAC3Bzf,EAwBGxG,wDAxBHwG,EAAQyf,EAAOzf,KAAK,CAE1Bqf,EAAgB,qBAGd,iCAAM,cAAS,EAAA+b,KAAK,CAAE,CACpBv9B,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAM,CACJoC,MAAOA,CACT,EACAlF,OAAQ,CACNqE,QAAAA,CACF,CACF,kBARA,SAUAoC,aAAaqqD,UAAU,CAAC,QACxB,EAAA5+B,OAAA,SAAgB,CAACvN,EAAOzf,KAAK,EAE7BqC,EAAS,CACP8F,GAAI,EAAAw2B,iBAAiB,CACrBh/B,OAAQ,CACNu/B,SAAAA,CACF,CACF,uBACO,SACPilC,EAAU,CAAEnkE,MAAO,CAAC,gHAA4B,uBAEhDqf,EAAgB,2BAEpB,YA9B6BI,CAAM,mCAgCnC,MACE,WAAC,EAAApS,UAAU,YACT,WAAC,EAAAnC,UAAU,YACT,UAAC,EAAAk5D,IAAI,EAACh8D,IAAK,EAAAC,iBAAiB,CAAEC,IAAI,SAClC,UAAC,EAAAyZ,gBAAgB,KACjB,UAAC,EAAA5U,OAAO,EAACC,KAAM,CAAEP,KAAM,KAAMutB,GAAI,IAAK,WAAIjmC,EAAE,iBAC5C,UAAC,EAAAgZ,OAAO,EAACC,KAAM,CAAEP,KAAM,IAAK,EAAGzC,WAAW,MAAMwO,UAAU,eACvDzkB,EAAE,mBAGP,UAAC,EAAAsX,QAAQ,WACP,UAAC,QAAKwH,SAAUF,EAAawL,YAC3B,WAAC,EAAArR,KAAK,EAACvE,QAAQ,cACb,WAAC,EAAA+F,WAAW,EAACC,UAAW,CAAC,CAACpQ,EAAO,KAAQ,WACvC,UAAC,EAAA4F,KAAK,UACJlK,KAAK,QACLwJ,YAAatP,EAAE,qBACX0jB,EAAS,QAAS,CAAEsH,SAAU,EAAK,KAExC5gB,EAAO,KAAQ,EACd,UAAC,EAAAoR,gBAAgB,WAAEpR,EAAO,KAAQ,CAAC5C,IAAI,CAAC,UAG5C,UAAC,EAAAwL,MAAM,EAAClN,KAAK,SAASyN,UAAW0X,WAC9BjrB,EAAE,qBAOjB,6HClFA,EAR8C,gBAAG2yB,EAAA,EAAAA,KAAA,CAC/C,MACE,UAAC,SAAM,WACL,UAAC,SAAqB,EAACA,MAAOA,KAGpC,kaCIA,IAAMwoB,EAAqB,cAAO,EAAAxhC,YAAY,OA0D9C,EAtDgB,WACd,IAAQ3Z,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACsC,OAAA2sB,UAAA,IAAvCgZ,EAAuC,EAAvCA,cAAc,CAAEjZ,EAAuB,EAAvBA,OAAO,CAAEnZ,EAAc,EAAdA,SAAS,CAEpC28D,EAA6B,KAAAz2C,mBAAA,EAAoBkM,GAGrD,IAAApe,iCAAA,UAA2C,GADrCxnB,EACN,EADMA,YAAY,CAAEmD,EACpB,EADoBA,KAAK,CAAEmW,EAC3B,EAD2BA,OAAO,CAG9B2hB,EAAetO,EAAQ/nB,GAAG,CAAC0U,GAE3Bb,EAAc,AAAAwiB,CAAAA,MAAAA,EAAA,OAAAA,EAAcxiB,WAAW,AAAD,GAAK,UAEjD,AAAIjF,EACK,UAAC,EAAA6V,MAAM,EAACgI,YAAW,KAJX4J,EA0Bf,WAAC,SAAM,YACL,UAAC,SAAiB,EAACH,WAAYq1C,IAC/B,UAAC,SAAgB,KACjB,UAAC,EAAAt2D,mBAAmB,WAClB,WAACuhC,EAAA,WACC,UAAC,SAAW,EAAC5mC,MAlBZ,CACL,CACEM,MAAO7U,EAAE,qBACT8U,KAAM,KAAA0E,YAAA,EAAa,EAAA6wB,4BAA4B,CAAE,CAC/C,gBAAiBtqC,EACjB,SAAUmD,CACZ,EACF,EAED,CATM,OAQL,QAAG,KAAAitE,wBAAA,EArBUn1C,EAqByBj7B,EAAcmD,OAWhD,UAAC,EAAAwiC,SAAS,WAAE9mC,AAhCHo8B,EAgCYr8B,WAAW,GAChC,UAAC,SAAc,EACbC,SAlCOo8B,EAmCPxiB,YAAaA,YA1Bd,+BAAE,aAiCb,mUCjEA,IAAM43D,EAAyB,cAAO,EAAAt8D,IAAI,OAM7Bu8D,EAAkB,SAACj9D,CAAK,EAGnC,IAAQk9D,EAAsB,KAAAC,4BAAA,IAAtBD,iBAAiB,CAEzB,MACE,UAAC,EAAAv3D,KAAK,EAACvE,QAAS,WACbpB,EAAM3T,WAAW,CAAC0P,GAAG,CAAC,SAACnN,CAAU,CAAEqN,CAAK,EACvC,IAAQyvC,EAAsC98C,EAAtC88C,iBAAiB,CAAE1mC,EAAmBpW,EAAnBoW,MAAM,CAAEC,EAAWrW,EAAXqW,MAAM,CAEzC,GAAI,KAAAge,KAAA,EAAMyoB,GACR,OAAO,KAGT,IAAQH,EAA0CG,EAA1CH,OAAO,CAAEjgD,EAAiCogD,EAAjCpgD,IAAI,CAAEF,EAA2BsgD,EAA3BtgD,EAAE,CAAEogD,EAAuBE,EAAvBF,KAAK,CAAEpmC,EAAgBsmC,EAAhBtmC,WAAW,CAEvCT,EAAY,CACf,GAAqC,OAAnC/V,EAAWwuE,kBAAkB,CAAC,OAAiC,OAA5BxuE,EAAWyuE,gBAAgB,EACjE7xB,EACD,CAED,MACE,UAACwxB,EAAA,CACCp8D,GAAK,gBAAkB,OAAHxV,GAEpBsT,QAAS,kBAAMw+D,EAAkBtuE,aAEjC,UAAC,EAAAuW,cAAc,EACbzZ,MAAO6/C,GAAW,GAClBjgD,KAAMA,GAAQ,GACdqZ,UAAWA,GAAa,EAAE,CAC1BS,YAAaA,EACbJ,OAAQA,EACRC,OAAQA,KATLhJ,EAaX,IAGN,2KCzCM+2C,EAAuC,CAC3CC,WAAY,gBACd,EACMC,EAAsB,CAC1BD,WAAY,iBACZxzB,KAAM,OACR,EAEM0zB,EAAgC,CACpCvwC,MAAO,OACPrG,SAAU,OACZ,EAEa+gE,EAAkB,SAC7Bt9D,CAAK,EAEL,MAEIA,EADF3T,WAAW,CAAIkxE,EAAA,EAAAA,eAAA,CAAiBC,EAAA,EAAAA,kBAAA,CAG1B5wE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAAymD,IAAI,EAAC9zC,QAAQ,WAAW+zC,MAAM,SAAS5tC,EAAE,iBACxC,WAAC,EAAA6tC,OAAO,YACN,UAAC,EAAAC,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJzhC,oBAAoB,KACpBC,uBAAuB,cAEtB9kB,EAAE,0BAEL,UAAC,EAAA4mD,GAAG,kBACFC,UAAWT,GACPE,GAAA,CACJQ,qBAAqB,KACrBC,wBAAwB,cAEvB/mD,EAAE,0BAGP,WAAC,EAAAgnD,SAAS,YACR,UAAC,EAAAC,QAAQ,oBAAKV,GAAA,UACZ,UAAC,EAAA8pB,eAAe,EAAC5wE,YAAamxE,OAEhC,UAAC,EAAA3pB,QAAQ,oBAAKV,GAAA,UACZ,UAAC,EAAA8pB,eAAe,EAAC5wE,YAAakxE,YAKxC,2ZCvDA,IAAME,EAAqB,cAAO,EAAA5hE,IAAI,OAQzB68B,EAAU,WACrB,IAAQ9rC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAC0B,OAAA8wE,mBAAA,IAA3BrxE,EAA2B,EAA3BA,WAAW,CAAE8T,EAAc,EAAdA,SAAS,CAE9B,MACE,UAAC,SAAM,WACL,UAAC,EAAAmG,OAAO,WACN,UAAC,EAAAC,YAAY,WACX,WAACk3D,EAAA,WACC,UAAC,EAAAtpC,iBAAiB,WAAEvnC,EAAE,mBAErBuT,EACC,UAAC,EAAA6V,MAAM,KAEP,UAAC,EAAAsnD,eAAe,EAACjxE,YAAaA,YAO5C,yLClCO,SAAS8wE,UAoCd,MAAO,CACLD,iBAAiB,IApCO,iBAAOtuE,CAAU,MACpC,EAKGyH,EAIAsnE,EASAzgC,EAaCjrC,wDA/BT,GAAI,EAA6B,OAA5B,GAAArD,EAAW88C,iBAAiB,AAAD,GAA3B,oBAA8BtgD,EAAE,AAAD,EAClC,2BAIa,gCAAM,EAAAuP,UAAA,0BAAoC,CAAC,CACtDvP,GAAIwD,EAAW88C,iBAAiB,CAACtgD,EAAE,AACrC,kBAEMuyE,EAAsB,CAC1BzzB,YAAa7zC,AALTA,CAAAA,EAAO,UAKO6zC,WAAW,CAC7BT,gBAAiBpzC,EAAKozC,eAAe,CACrCQ,aAAc5zC,EAAK4zC,YAAY,CAC/BN,iBAAkBtzC,EAAKszC,gBAAgB,CACvCK,YAAa3zC,EAAK2zC,WAAW,CAC7BH,gBAAiBxzC,EAAKwzC,eAAe,AACvC,EAEM3M,EAAwB,IAAI,EAAAE,WAAW,CAAC,SAC5ChyC,GAAIwD,EAAW88C,iBAAiB,CAACtgD,EAAE,EAChCwD,IAGL,EAAAyuC,aAAA,QAAqB,CAAC,CACpBlU,eAAgBv6B,EAAW88C,iBAAiB,CAACpgD,IAAI,CACjDsxB,OAAQ+gD,EACRlgC,gBAAiB7uC,EAAW6uC,eAAe,EAAI,EAC/CjvC,SAAUI,EAAWJ,QAAQ,CAC7B7B,aAAciC,EAAW88C,iBAAiB,CAACtgD,EAAE,CAC7CwD,WAAYsuC,CACd,uBACO,kCACX,YAjCiCtuC,CAAU,kCAqC3C,CACF,2MCvCO,SAAS8uE,IACd,IAAsC,eAAAx9D,QAAA,EAEpC,CAAEs9D,mBAAoB,EAAE,CAAED,gBAAiB,EAAE,AAAC,MAFzClxE,EAA+B,KAAlBuxE,EAAkB,KAIT,eAAAvjB,UAAA,EAAW,OAAjCl6C,EAAsB,KAATg8C,EAAS,KAATA,GAAG,CAqBvB,MAnBA,KAAA7mC,SAAA,EAAU,iBAgBRuoD,GAfa,uBAEH3tE,wDACJ,gCAAM,EAAAyK,UAAA,6CAAuD,kBADzDzK,EACJ,SAEF0tE,EACE,EAAAE,eAAA,sBAAqC,CACnC5tE,EAAS6L,GAAG,CAAC,SAACs4C,CAAE,SAAK,IAAI,EAAA5I,kBAAkB,CAAC4I,2BAIhD8H,2BAEJ,gDAGF,EAAG,EAAE,EAEE,CACL9vD,YAAAA,EACA8T,UAAAA,CACF,CACF,qPCxBa29B,EAAe,WAC1B,IAAQnxC,EAAiB,EAAA8sC,iBAAA,UAA2B,GAA5C9sC,YAAY,CACZqxC,EAAY,EAAAvE,iBAAA,cAA+B,GAA3CuE,OAAO,CACPpxC,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDu8B,EAAmB,KAAAzgB,aAAA,IAAnBygB,cAAc,QAEtB,AAAK6U,EAKH,UAAC,SAAM,WACL,UAAC,EAAA13B,OAAO,WACN,WAAC,EAAAC,YAAY,YACX,UAAC,EAAAnK,GAAG,EAAC0S,GAAI,EAAGub,GAAI,WACd,WAAC,EAAA3pB,IAAI,EAACE,GAAK,gBAA4B,OAAbjU,aACxB,UAAC,EAAA2iC,eAAe,EAACjzB,GAAI,IACpBzP,EAAE,0BAGP,UAAC,EAAAyrE,kBAAkB,EAACwC,SAAS,OAAOjvC,GAAI,EAAG9c,GAAI,EAAGmK,GAAI,WACnDkQ,IAEH,UAAC,EAAAttB,IAAI,EAAC2jB,eAAe,kBACnB,UAAC,EAAA1b,IAAI,EAACtF,KAAM,CAAC,MAAO,MAAM,CAAEu/D,KAAK,OAAO/hD,SAAS,oBAC/C,WAAC,EAAA9X,QAAQ,EAACynB,GAAI,GAAIlB,GAAI,GAAInrB,OAAO,iBAC/B,UAAC,EAAAsG,OAAO,EAACqT,GAAI,EAAGrX,GAAG,KAAKiE,KAAK,cAC1BjZ,EAAE,mBAEL,WAAC,EAAAiP,IAAI,EACH2R,IAAKwwB,EAAQ8jB,eAAe,CAAG,GAAK,EACpCxiD,OAAO,8BAEP,UAAC,OAAI8R,MAAO,CAAEkgC,UAAW,KAAM,WAC5BtT,EAAQ8jB,eAAe,EACtB,UAAC,EAAAkc,iBAAiB,EAChBlc,gBAAiB9jB,EAAQ8jB,eAAe,KAI9C,UAAC,OAAI1wC,MAAO,CAAEkgC,UAAW,KAAM,WAC5BtT,GAAW,UAAC,EAAAigC,uBAAuB,EAACjgC,QAASA,uBAlCvD,IA4CX,+KC1Ca2jB,EAAqB,SAAC3hD,CAAK,EACtC,IAAQpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACHqsE,EAAW,KAAA3yC,MAAA,EAAyB,MACN,eAAApmB,QAAA,EAAsB,SAAnDg+D,EAA6B,KAAjBC,EAAiB,KAEpC,MACE,iCACE,UAAC,SACCjjD,IAAK+9C,EACLvmE,KAAK,OACL0e,MAAO,CAAE9J,QAAS,MAAO,EACzBkL,OAtBN,yNAuBMD,SAAU,GACVlV,SAAU,SAAC4B,CAAK,EACd,IAAa,EAAPoU,EAAO,AAAkB,OAAlB,GAAApU,EAAMlC,MAAM,CAACqW,KAAK,AAAD,GAAjB,oBAAoBsB,IAAI,CAAC,GAElCrB,IACF8qD,EAAc9qD,GAEoB,YAA9B,OAAOrT,EAAM4hD,YAAY,EAC3B5hD,EAAM4hD,YAAY,CAACvuC,GAGzB,IAGD,AAAA6qD,CAAAA,MAAAA,EAAA,OAAAA,EAAY5yE,IAAI,AAAD,EACd,WAAC,EAAA8Q,GAAG,EACFkL,QAAQ,OACRxL,cAAc,MACd0jB,eAAe,aACfjI,WAAW,SACXlb,GAAG,OACHM,MAAM,UACNwG,SAAS,eAET,UAAC,EAAA6L,cAAc,EAAC3S,GAAI,IACnB6hE,EAAW5yE,IAAI,CAChB,UAAC,EAAA4jB,UAAU,EAACmb,GAAI,EAAG3rB,QAAS,kBAAMy/D,EAAc,YAGlD,WAAC,EAAAv+D,MAAM,EACLiG,KAAK,KACLtG,QAAQ,QACRmD,YAAY,MACZrG,GAAG,OACHqC,QAAS,eACP,CAAgB,QAAhB,GAAAu6D,EAASrwD,OAAO,AAAD,GAAf,cAAkBuT,KAAK,EACzB,YAECvvB,EAAE,eAAe,IAAC,UAAC,EAAAoiB,cAAc,EAACqb,GAAI,SAKjD,2VC7DM8kB,EAAmB,QAAW,CAAC,CACnCiS,QAAS,QAAW,GAAGzjD,GAAG,CAAC,EAAG,CAC5BxN,QAAS,WAAM,CAAC,iBAClB,GACAkjB,KAAM,YAAe,CAACilC,MAAMlc,QAAQ,EACtC,GAIagiC,EAAc,WACzB,QAAQxxE,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACoB,IAAA6sC,iBAAA,UAA2B,GAAhD3pC,EAAqB,EAArBA,KAAK,CAAE6J,EAAc,EAAdA,SAAS,CAClB6mC,EAAS,KAAAqY,SAAA,IACuB,eAAA34C,QAAA,EAAwB,SAAvD8gD,EAA+B,KAAlBC,EAAkB,KAEhC/Q,EAAe,KAAAzkC,OAAA,EAAoB,CACvCtW,SAAU,KAAAg7C,WAAA,EAAYhB,EACxB,GAEA,IAAM3jC,KAAe,iBAAO0M,CAAM,MAExBipC,EAAA,wDAAW,gCAAM,EAAAxmD,UAAA,+BAAyC,CAAC,CAC/DjB,QAAS,CAAC5J,EACV6J,UAAW,CAACA,EACZlC,YAAa,CACX2pD,QAASlpC,EAAOkpC,OAAO,AACzB,CACF,cANMD,EAAW,UAQbjpC,CAAAA,EAAO7E,IAAI,YAAYilC,IAAG,EAA1B,YACF,SAAM,EAAA39C,UAAA,8BAAwC,CAAC,CAC7Cf,UAAW,CAACunD,EACZxnD,UAAW,CAACA,EACZD,QAAS,CAAC5J,EACViF,SAAU,CACRse,KAAM6E,EAAO7E,IAAI,AACnB,CACF,WAPA,iCAUF4tC,EAAeE,GAEf3gB,EAAOyY,UAAU,GAEjB/I,EAAaM,KAAK,CAAC,CACjB4Q,QAAS,EACX,GACA,EAAAhiB,KAAA,QAAa,CAACxyC,EAAE,uCAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAElB,YAhC4BsrB,CAAM,mCAkClC,IAAMmmD,KAAiB,+EAEnB,gCAAM,EAAA1jE,UAAA,oCAA8C,CAAC,CACnDhB,UAAW,CAACA,EACZD,QAAS,CAAC5J,EACV2H,YAAa,CACXgrD,YAAa,EACf,CACF,kBANA,SAQAjiB,EAAOyY,UAAU,GAEjB,EAAA7Z,KAAA,QAAa,CAACxyC,EAAE,uCAEhB,EAAAwyC,KAAA,MAAW,CAACxyC,EAAE,4CAElB,+CAEA,MACE,UAAC,EAAAyqB,YAAY,oBAAK64B,GAAA,UAChB,WAAC,EAAAr0C,IAAI,EAACwJ,UAAU,SAASyJ,GAAG,iBAC1B,UAAC,EAAAikB,QAAQ,EACPtxB,MAAQ,GAAkC,OAAhC7U,EAAE,8BAA8B,KAC1CtB,KAAK,YAGP,WAAC,EAAAuQ,IAAI,EAACwJ,UAAU,MAAMmI,IAAK,EAAGgS,eAAe,WAAW1Q,GAAI,YAC1D,UAAC,EAAA6yC,kBAAkB,EAEjBC,aAAc,SAACvuC,CAAI,EACjB68B,EAAav9B,QAAQ,CAAC,OAAQU,EAChC,GAHK2tC,GAKP,UAAC,EAAAjhD,WAAW,EACV8F,KAAK,KACLtG,QAAQ,UACRmD,YAAY,MACZhE,QAASwxC,EAAa1kC,YAAY,CAACA,YAElC5e,EAAE,qBAEL,UAAC,EAAAmT,WAAW,EACV8F,KAAK,KACLtG,QAAQ,QACRmD,YAAY,MACZhE,QAAS2/D,WAERzxE,EAAE,6BAMf,4KCvGa00D,EAAkB,SAACthD,CAAK,EACnC,IAAQuhD,EAAgCvhD,EAAhCuhD,QAAQ,CAAEC,EAAsBxhD,EAAtBwhD,iBAAiB,CAC3B50D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,GAAI,CAACkH,MAAMC,OAAO,CAACwtD,IAAaA,AAAoB,IAApBA,EAASvvD,MAAM,CAC7C,OAAO,KAGT,IAAMssE,EACJ,EAAAjsB,SAAA,0BAAmC,CACjCkP,GAGJ,MACE,WAAC,EAAA1lD,IAAI,EAACC,cAAc,SAASyiE,UAAU,+BACrC,WAAC,EAAA9+D,IAAI,EAACoD,WAAY,IAAKoW,GAAI,YACxBrsB,EAAE,yBAAyB,OAG9B,UAAC,EAAA4xE,YAAY,EAACC,uBAAuB,gBACnC,UAAC,EAAA5iE,IAAI,EAACC,cAAc,SAAS0R,IAAK,WAC/B8wD,EAAeviE,GAAG,CAAC,SAAC0lD,CAAW,CAAExlD,CAAK,QACrC,UAAC,EAAAyiE,WAAW,EAEVjd,YAAaA,EACbD,kBAAmBA,GAFdvlD,WASnB,qLCnCayiE,EAAc,SAAC1+D,CAAK,EAC/B,IAAQpT,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CACDd,EAAS,KAAAkuB,OAAA,IAATluB,IAAI,CACJ21D,EAAmCzhD,EAAnCyhD,WAAW,CAAED,EAAsBxhD,EAAtBwhD,iBAAiB,CAChCmd,EACsC/xE,EAAE,AAA5C,AAA6B,YAA7B,OAAO40D,EAAqC,YAAiB,OACzDod,EAAsB,KAAAjjD,OAAA,EAAQ,iBAClC,AAAI,AAA6B,YAA7B,OAAO6lC,EACFA,EAAkBC,GAGpBA,EAAYC,SAAS,GAAK51D,CAAAA,MAAAA,EAAA,OAAAA,EAAMV,EAAE,AAAD,CAC1C,EAAG,CAACo2D,EAAmB11D,EAAM21D,EAAY,SAEzC,AAAKA,EAKH,WAAC,EAAA5lD,IAAI,EACHC,cAAc,SACdm3C,WAAW,WACX52B,QAAS,EACTjZ,aAAa,eAEb,UAAC,EAAA3D,IAAI,EAAC9C,MAAOiiE,EAAsB,MAAQ,WAAY/7D,WAAY,aAChE+7D,EAAsBD,EAAiB/xE,EAAE,uBAE5C,UAAC,EAAA6S,IAAI,EAAC0D,SAAU,GAAIxG,MAAM,oBACvB8kD,EAAYL,OAAO,GAErBK,EAAYvzC,aAAa,EACxB,UAAC,EAAAF,gBAAgB,EAACE,cAAeuzC,EAAYvzC,aAAa,GAE3DuzC,EAAYod,SAAS,EACpB,UAAC,EAAAp/D,IAAI,EAAC0D,SAAU,GAAIxG,MAAM,WAAWs6D,WAAW,gBAC7C,EAAA5kB,SAAA,OAAgB,CAACoP,EAAYod,SAAS,CAAE,4BArBxC,IA0BX,kKC7CaC,EAAqB,SAAC9+D,CAAK,EACtC,IAAQgiD,EAAwDhiD,EAAxDgiD,kBAAkB,CAAEX,EAAoCrhD,EAApCqhD,qBAAqB,CAAEP,EAAa9gD,EAAb8gD,QAAQ,CACnDl0D,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,MACE,WAAC,EAAAiP,IAAI,EAACC,cAAc,SAAS0R,IAAK,EAAGlO,OAAO,iBACzC0iD,GACC,iCACE,UAAC,EAAAp8C,OAAO,EAAChE,GAAG,KAAKiE,KAAK,KAAKk5D,UAAW,WACnCnyE,EAAE,wCAEL,UAAC,EAAA6S,IAAI,WAAEuiD,OAIX,UAAC,EAAAV,eAAe,EAACC,SAAUF,IAC1B,CAACP,GAAY,UAAC,EAAAsd,WAAW,OAGhC,8ICvBaH,EAA0B,SACrCj+D,CAAK,EAEL,IAAQg+B,EAAYh+B,EAAZg+B,OAAO,CAEf,GAAI,CAACA,EACH,OAAO,KAGT,IAAQgkB,EAAuBhkB,EAAvBgkB,kBAAkB,CAE1B,MACE,UAAC,EAAAnmD,IAAI,EAACC,cAAc,SAASwD,OAAO,gBAClC,UAAC,EAAAw/D,kBAAkB,EACjB9c,mBAAoBA,EACpBX,sBAAuBrjB,EAAQqjB,qBAAqB,CACpDP,SAAU9iB,EAAQ8iB,QAAQ,IAIlC,+UCzBO,IAAMiB,EAAe,sBAAU,yNCYzBic,EAAoB,SAACh+D,CAAK,EACrC,IAQsB,EARd8hD,EAAoB9hD,EAApB8hD,eAAe,CACC,eAAA5hD,QAAA,EAAS,OAA1ByO,EAAiB,KAAXC,EAAW,KAChBhiB,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAET,GAAI,CAACk1D,EACH,OAAO,KAGT,IAAMkd,EAAgB,AAA8B,OAA9B,GAAAld,EAAgBvc,KAAK,CAAC,KAAKlqC,EAAE,CAAC,GAAE,GAAhC,oBAAmC4jE,WAAW,GAC9DhxD,EAAW6zC,EAAgBvc,KAAK,CAAC,KAAKlqC,EAAE,CAAC,IAE/C,MACE,WAAC,EAAAQ,IAAI,EAACC,cAAc,SAAS0C,KAAK,OAAOgP,IAAK,YAC3CxN,EAAM8hD,eAAe,EACpB,UAAC,EAAAC,YAAY,EACXlhD,IAAKb,EAAM8hD,eAAe,CAC1BpjD,QAAS,kBAAMkQ,EAAQ,OAG3B,WAAC,EAAAhP,MAAM,EACLgD,MAAM,cACNiD,KAAK,KACLnH,QAAS,WACHuP,GACF,EAAAc,SAAA,cAAuB,CAAC+yC,EAAiB7zC,EAE7C,YAECrhB,EAAE,iBAAiB,KAAGoyE,KAEzB,UAAC,SAAQ,EACPrwD,KAAMA,EACNY,MAAO,kBAAMX,EAAQ,KACrB3S,MAAO,EACPuT,OAAQ,CACN,CACE3O,IAAKihD,CACP,EACD,CACDryC,UAAW,CAAEC,KAAM,CAAE,EACrBC,WAAY,CAAEC,gBAAiB,GAAMC,qBAAsB,EAAK,EAChEC,OAAQ,CAAEC,KAAM,CAAE,yBAA0B,mBAAoB,CAAE,EAClEC,QAAS,CAAC,SAAQ,CAAC,CACnBC,SAAU,CACRA,SAAU,gBAAGC,EAAA,EAAAA,KAAA,CACX,EAAAnB,SAAA,cAAuB,CAACmB,EAAMrP,GAAG,CACnC,CACF,MAIR,keC2FA,EAtHwD,sBAAGq+D,SAAS,CAC1B,eAAAh/D,QAAA,EAAS,OAA1C2X,EAAiC,KAAnBC,EAAmB,KAClCwb,EAAW,KAAAtZ,OAAA,IACT2d,EAAa,EAAAO,gBAAA,UAA0B,GAAvCP,QAAQ,CACY,eAAAz3B,QAAA,EAAoB,CAAC,MAA1ClJ,EAAqB,KAAb4lE,EAAa,KACtB9hE,EAAW,KAAAC,WAAA,IAETnO,EAAM,KAAAiO,cAAA,IAANjO,CAAC,CAEHmlD,EAAU,KAAAtmC,OAAA,IAEhB,IAAMuL,KAAgB,iBAAOkB,CAAM,MAC3BovB,EACAjU,EAKIh9B,EAQF8oE,EA8BCltE,wDA5CHq1C,EAAQpvB,EAAOovB,IAAI,CAAclzC,IAAI,CAAC,IACtCi/B,EAAYC,EAASD,SAAS,CAEpCvb,EAAgB,qBAGG,iCAAM,cAAS,EAAA8c,WAAW,CAAE,CAC3Ct+B,OAAQ,EAAAuiB,YAAA,KAAiB,CACzBxiB,KAAM,CACJoC,MAAO46B,EACPiU,KAAMA,CACR,CACF,kBANQjxC,EAAS,SAATA,IAAI,CAQN8oE,EAAc,IAAI,EAAA9qC,IAAI,CAAC,CAC3BpP,SAAU5uB,MAAAA,EAAA,OAAAA,EAAM/K,IAAI,CACpBkU,KAAMnJ,MAAAA,EAAA,OAAAA,EAAMmJ,IAAI,CAChBpU,GAAIiL,MAAAA,EAAA,OAAAA,EAAMjL,EAAE,AACd,GAEA4O,aAAa6jB,OAAO,CAAC,QAASxnB,MAAAA,EAAA,OAAAA,EAAMhB,KAAK,EACzC2E,aAAa6jB,OAAO,CAAC,OAAQ7oB,KAAKC,SAAS,CAACkqE,IAE5C,EAAA15C,OAAA,QAAe,CAAC05C,GAChB,EAAA15C,OAAA,cAAqB,CAAC,IACtB,EAAAA,OAAA,SAAgB,CAACpvB,MAAAA,EAAA,OAAAA,EAAMhB,KAAK,EAgB5ByF,EAAS,CACP8F,GAZA,AAAI+2B,EACKA,EAGLwnC,EAAY3/D,IAAI,CACX,KAAAo4B,iBAAA,EAAkBunC,EAAY3/D,IAAI,EAGpC,GAKT,uBACO,SACPo9D,EAAU,CAAEwC,OAAQ,CAAC,iHAAwB,uBAE7CtnD,EAAgB,2BAEpB,YAlD6BI,CAAM,mCAoD7BmnD,EAAY,SAACnnD,CAAM,EAGvB7mB,OAAO6mB,MAAM,CAFMpkB,MAAMV,IAAI,CAAC8kB,IAEJlkB,OAAO,CAAC,SAAC0T,CAAK,CAAEzL,CAAK,EAG7C81C,EAAQp/B,QAAQ,CAFG,QAAa,OAAN1W,GAEEyL,EAC9B,EACF,EAEA,MACE,WAAC,EAAA5B,UAAU,YACT,WAAC,EAAAnC,UAAU,YACT,UAAC,EAAAk5D,IAAI,EAACh8D,IAAK,EAAAC,iBAAiB,CAAEC,IAAI,SAClC,UAAC,EAAAyZ,gBAAgB,KACjB,UAAC,EAAA5U,OAAO,EAACC,KAAM,CAAEP,KAAM,KAAMutB,GAAI,IAAK,WAAIjmC,EAAE,iBAC5C,UAAC,EAAAgZ,OAAO,EAACC,KAAM,CAAEP,KAAM,IAAK,EAAGzC,WAAW,MAAMwO,UAAU,eACvDzkB,EAAE,2BAGP,UAAC,EAAAsX,QAAQ,WACP,UAAC,QAAKwH,SAAUqmC,EAAQvmC,YAAY,CAACwL,YACnC,UAAC,EAAA7P,WAAW,EAACC,UAAW,CAAC,CAACpQ,EAAO,MAAS,UACxC,WAAC,EAAA2O,KAAK,EAACvE,QAAQ,cACb,UAAC,EAAA7C,MAAM,EAAC04D,WAAW,OAAOlP,YAAY,gBACpC,UAAC,EAAAuX,QAAQ,EACP5sE,KAAK,SACL6sE,WAAY,SAACrnD,CAAM,SAAKmnD,EAAUnnD,aAEjC,AAAIpkB,MA5FoC,WAAY,KA4F/BsnB,IAAI,CAAC/oB,KAAAA,GAAW0J,GAAG,CAAC,SAAC+B,CAAC,CAAE7B,CAAK,QACjD,UAAC,EAAAujE,aAAa,YAERztB,EAAQzhC,QAAQ,CAAE,QAAa,OAANrU,KADxBA,SAMZjF,EAAO,MAAS,EACf,UAAC,EAAAoR,gBAAgB,EAACoX,eAAe,kBAC9BxoB,EAAO,MAAS,CAAC5C,IAAI,CAAC,OAG3B,UAAC,EAAAwL,MAAM,EAAClN,KAAK,SAASyN,UAAW0X,WAC9BjrB,EAAE,aAGL,UAAC,EAAAumC,KAAK,EAACC,IAAK,gBAO1B,qoBCxJO,IAAMttB,EAAa,cAAO,EAAAhC,IAAI,OAkBxB+4D,EAAO,cAAO,EAAAl8D,KAAK,0PCL1B2rB,EAAsB,CAC1BoL,WAAY,GACZ5rC,KAAM,KACNunC,UAAW,GACXh+B,MAAO2E,aAAaC,OAAO,CAAC,UAAY,IAC1C,EAEM9L,EAAO,KAAA0xB,YAAA,EAAa,QAEb9yB,EAAQoB,EAAK2xB,WAAW,CAAQwM,EAAc,CAAEhhC,KAAM,MAAO,GA2B1E,KAAAm0E,OAAA,EAAQ,CACNC,MAAO3yE,EACP4yE,QA3B8B,SAACjsE,CAAG,QAAM,CACxCnC,IAAK,WACH,IAAMsqB,EAAQ7hB,aAAaC,OAAO,CAACvG,GAEnC,GAAI,CAACmoB,EACH,OAAOyQ,EAGT,GAAI,CACF,IAAMszC,EAAe5qE,KAAK28B,KAAK,CAAC9V,GAQhC,OANI+jD,EAAa9zE,IAAI,EACnB8zE,CAAAA,EAAa9zE,IAAI,CAAG,IAAI,EAAAuoC,IAAI,CAAC,WACxBurC,EAAa9zE,IAAI,IAIjB8zE,CACT,CAAE,QAAM,CACN,OAAOtzC,CACT,CACF,EACAuzC,IAAK,SAACruE,CAAK,SAAKwI,aAAa6jB,OAAO,CAACnqB,EAAKsB,KAAKC,SAAS,CAACzD,IAC3D,EAKA,GAEO,IAAMi0B,EAAU,KAAAvF,SAAA,EAAUnzB,EAAO,CACtC+yE,SAAU,SAACjkD,CAAK,CAAEwF,CAAO,EACvB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM3sC,SAAS,CAAGhS,CACpB,EACF,EACA4+C,QAAS,SAACpkD,CAAK,CAAEwF,CAAO,EACtB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMl0E,IAAI,CAAGu1B,CACf,EACF,EACA6+C,cAAe,SAACrkD,CAAK,CAAEwF,CAAO,EAC5B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMtoC,UAAU,CAAGrW,CACrB,EACF,EACA8+C,SAAU,SAACtkD,CAAK,CAAEwF,CAAO,EACvB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM3qE,KAAK,CAAGgsB,CAChB,EACF,EAEA++C,OAAQ,kBAAM9zC,EAChB,GAEA,KAAA+zC,MAAA,EAAO,CACLC,MAAO76C,EAAQ26C,MAAM,CACrBrjE,OAAQ5O,EAAKoyE,YAAY,CAAC,eAAgB,CACxCC,QAAS,kDACPtuE,QAAQ0/B,GAAG,CAAC,iBACZ,GAAI,CACF53B,aAAaM,KAAK,GAClBC,OAAOC,QAAQ,CAACC,IAAI,CAAG,QACzB,CAAE,MAAOpD,EAAG,CACVnF,QAAQC,IAAI,CAACkF,EACf,YACF,EACF,EACF,GAEO,IAAM2iB,EAAU,iBAAM,KAAAiF,OAAA,EAAQlyB,2JC9FxB0zE,EAAc,KAAAC,UAAA,EAAW,gBAEzB9iC,EAAiB,SAAC59B,CAAK,EAGlC,MAFA,KAAA2gE,OAAA,EAAQF,GAED,+BAAGzgE,EAAM2C,QAAQ,EAC1B,0TCMM2pB,EAAiC,CACrCiG,eAAgB,EAAE,CAClBjZ,QAAS,IAAIsnD,IACbzgE,UAAW,EACb,EAEa0gE,EAAW,KAAA/gD,WAAA,EAA8BwM,GAAckkB,KAAK,CACvE,EAAAxT,yBAAyB,EAGrB8jC,EAAa,KAAA5gD,SAAA,EAAU2gD,EAAU,CACrCE,iBAAkB,SAChBllD,CAAK,CACLwF,CAAO,EAEP,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMztC,cAAc,CAAGlR,EAAQkR,cAAc,CAC7CytC,EAAM1mD,OAAO,CAAG+H,EAAQ/H,OAAO,CAC/B0mD,EAAM7/D,SAAS,CAAG,EACpB,EACF,CACF,GAEO,IAAM6gE,EAAmB,KAAAT,YAAA,KAC9B,iBAAOlnD,CAAI,MAKH4nD,EAEA3nD,EAaAiZ,wDAnBO,SAAM,EAAApM,WAAA,gBAA2B,CAC5C,EAAAuV,YAAA,2BAAuC,CAACriB,mBAGpC4nD,EAAmB5qE,AAJZ,SAIiB0F,GAAG,CAAC,SAACvQ,CAAQ,SAAK,IAAI,EAAAL,QAAQ,CAACK,KAEvD8tB,EAAU,IAAIsnD,IAEpBK,EAAiBjtE,OAAO,CAAC,SAACsuC,CAAE,EAC1BhpB,EAAQumD,GAAG,CAACv9B,EAAGh3C,IAAI,CAAEg3C,EACvB,GAEA2+B,EAAiBjtE,OAAO,CAAC,SAACsuC,CAAE,EAC1B,GAAIA,EAAGnqC,gBAAgB,EAAImhB,EAAQ/nB,GAAG,CAAC+wC,EAAGnqC,gBAAgB,EAAG,KAE3D,CADAmqC,CAAAA,EAAGxa,MAAM,CAAGxO,EAAQ/nB,GAAG,CAAC+wC,EAAGnqC,gBAAgB,EACZ,OAA/B,GAAAmhB,EAAQ/nB,GAAG,CAAC+wC,EAAGnqC,gBAAgB,IAA/B,cAAkC6gB,IAAI,CAAC/rB,IAAI,CAACq1C,EAC9C,CACF,GAEM/P,EAAkB,QAAGjZ,EAAQpB,MAAM,IAAIhjB,MAAM,CACjD,SAACotC,CAAE,QAAK,CAACA,EAAGnqC,gBAAgB,GAG9B2oE,EAAWC,gBAAgB,CAAC,CAC1BxuC,eAAgBA,EAChBjZ,QAASA,CACX,SACF,YA5BOD,CAAI,oCA+BAE,EAAa,WACxB,IAAMsC,EAAQ,KAAAoD,OAAA,EAAQ4hD,GAEtB,MAAO,mBACFhlD,GAAA,CACHiR,QAASjR,AAAgC,IAAhCA,EAAM0W,cAAc,CAACvgC,MAAM,EAExC,qGC3EO,IAAMgrC,EAA4B,cAAAkkC,WAAA,IAEzClkC,EAA0Bid,KAAK,CAAC,WAC9B/nD,QAAQ0/B,GAAG,CAAC,4BACd,qKCIMuvC,EAAU,KAAArhD,WAAA,EAAyB,CACvC4tC,gBAAiB,EAAE,CACnBpvD,KACGtE,aAAaC,OAAO,CAAC,SACrBmnE,UAAUjpD,QAAQ,AACvB,GAEayF,EAAY,KAAAsC,SAAA,EAAUihD,EAAS,CAC1CE,mBAAoB,SAACxlD,CAAK,CAAEwF,CAAO,EACjC,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMtS,eAAe,CAAGrsC,CAC1B,EACF,EAEAigD,YAAa,SAACzlD,CAAK,CAAEwF,CAAO,EAC1B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM1hE,IAAI,CAAG+iB,CACf,EACF,CACF,GAEa9D,EAAiB,iBAAM,KAAA0B,OAAA,EAAQkiD,gRCZ/BI,EAAuC,CAClDp4C,eAAgB,GAChBvM,OAAQ,CACNstB,YAAa,KACbT,gBAAiB,KACjBQ,aAAc53C,KAAAA,EACds3C,iBAAkBt3C,KAAAA,EAClB23C,YAAa33C,KAAAA,EACbw3C,gBAAiBx3C,KAAAA,CACnB,EACA7D,SAAU,KACVivC,gBAAiB,EACjB9wC,aAAc,EACdiC,WAAY,KACZ+I,eAAgB,IAClB,EAEawlC,EAAc,KAAArd,WAAA,EACzByhD,GACA/wB,KAAK,CAAC,EAAAxT,yBAAyB,EAEpBK,EAAgB,KAAAnd,SAAA,EAAUid,EAAa,CAClDqkC,QAAS,SAAC3lD,CAAK,CAAEwF,CAAO,EACtB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM72C,cAAc,CAAG9H,EAAQ8H,cAAc,CAC7C62C,EAAMpjD,MAAM,CAAGyE,EAAQzE,MAAM,CAC7BojD,EAAMviC,eAAe,CAAGpc,EAAQoc,eAAe,CAC/CuiC,EAAMxxE,QAAQ,CAAG6yB,EAAQ7yB,QAAQ,CACjCwxE,EAAMrzE,YAAY,CAAG00B,EAAQ10B,YAAY,AAC3C,EACF,EAEAwR,OAAQ,SAAC0d,CAAK,CAAEwF,CAAO,EACrB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1B,KAAA75B,eAAA,EAAgB9kB,GAASrtB,OAAO,CAAC,SAACN,CAAG,EAC/BA,GAAO2tB,CAAO,CAAC3tB,EAAI,EAAI2tB,AAAiBhvB,KAAAA,IAAjBgvB,CAAO,CAAC3tB,EAAI,EAErCssE,CAAAA,CAAK,CAACtsE,EAAI,CAAG2tB,CAAO,CAAC3tB,EAAI,AAAD,CAE5B,EACF,EACF,EAEA+tE,QAAS,SAAC5lD,CAAK,CAAEwF,CAAO,EACtB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM72C,cAAc,CAAG9H,CACzB,EACF,EAEAg1B,kBAAmB,SAACx6B,CAAK,CAAEwF,CAAO,EAChC,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMroE,cAAc,CAAG0pB,CACzB,EACF,EAEAqgD,YAAa,SAAC7lD,CAAK,CAAEwF,CAAO,EAC1B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMpxE,UAAU,CAAGyyB,CACrB,EACF,CACF,GAEa3Y,EAAgB,iBAAM,KAAAuW,OAAA,EAAQke,8MC/DrCwkC,EAAS,KAAArS,KAAA,EAAM,CAAC,EAAA5xB,MAAM,CAAE,EAAAP,WAAW,CAAE,EAAAsjC,WAAA,KAAgB,CAAC,EAE5D,KAAAJ,MAAA,EAAO,CACLC,MAAOqB,EACP5kE,OAAQ,EAAAikE,gBAAgB,CACxBY,GAAI,WACF,IAAM9xE,EAAQ,EAAA4tC,MAAA,SAAe,GACvB9uC,EAAa,EAAAuuC,WAAA,SAAoB,GAEvC,MAAO,CACLjlC,aAAcpI,EAAMkb,aAAa,CAAC9S,YAAY,CAC9CvL,aAAciC,EAAWjC,YAAY,CACrC8wC,gBAAiB7uC,EAAW6uC,eAAe,CAC3CjvC,SAAUI,EAAWJ,QAAQ,AAC/B,CACF,EACA0G,OAAQ,WACN,IAAMpF,EAAQ,EAAA4tC,MAAA,SAAe,GACvB9uC,EAAa,EAAAuuC,WAAA,SAAoB,GAEvC,OACE,EAAAsjC,WAAA,gBAA2B,IAC3B,CAAC,KAAAx9C,KAAA,EAAMnzB,EAAMkb,aAAa,CAAC9S,YAAY,GACvC,CAAC,KAAA+qB,KAAA,EAAMr0B,EAAWjC,YAAY,GAC9B,CAAC,KAAAs2B,KAAA,EAAMr0B,EAAW6uC,eAAe,CAErC,CACF,GA6BA,KAAAgiC,OAAA,EAAgB,CACdC,MAAO,EAAAviC,WAAW,CAClBzpC,IAAK,aACLisE,QA9BwC,SAACjsE,CAAG,QAAM,CAClDnC,IAAK,WACH,IAAMsqB,EAAQ7hB,aAAaC,OAAO,CAACvG,GAEnC,GAAI,CAACmoB,EACH,OAAO,EAAA0lD,sBAAsB,CAG/B,GAAI,CAWF,OAVqBvsE,KAAK28B,KAAK,CAAC9V,EAWlC,CAAE,QAAM,CACN,OAAO,EAAA0lD,sBAAsB,AAC/B,CACF,EACA1B,IAAK,SAACruE,CAAK,SAAKwI,aAAa6jB,OAAO,CAACnqB,EAAKsB,KAAKC,SAAS,CAACzD,IAC3D,EAMA,GAEA,KAAAiuE,OAAA,EAAa,CACXC,MAAO,EAAAhiC,MAAM,CACbhqC,IAAK,QACLmuE,KAAM,OACR,GAEA,KAAAC,YAAA,EAAa,CAEXpkC,OAAA,EAAAA,MAAM,CACNqkC,OAAA,EAAAA,MAAM,CACN5kC,YAAA,EAAAA,WAAW,CACX0jC,SAAA,EAAAA,QAAQ,CACRG,iBAAkB,EAAAA,gBAAgB,CAClCgB,aAAA,EAAAA,YAAY,CACZC,mBAAA,EAAAA,kBAAkB,AACpB,wJC5FMC,EAAW,KAAApiD,WAAA,EAAqB,IAEzBvK,EAAa,KAAA2K,SAAA,EAAUgiD,EAAU,CAC5CjmD,GAAI,iBAAM,IACVkgC,IAAK,iBAAM,IACXL,OAAQ,SAACjgC,CAAK,QAAK,CAACA,EACtB,GAEa5G,EAAgB,iBAAM,KAAAgK,OAAA,EAAQijD,0FCIpC,IAAMJ,EAAe,SAC1BK,CAAK,EAoCP,sKCjDaF,EAAqB,EAAAF,MAAA,IAAU,CAAC,gBAAG5gE,EAAA,EAAAA,KAAA,CACxCihE,EAAwBjhE,EAAMjM,MAAM,CACxC,SAACu7C,CAAE,SAAKA,EAAG/gD,OAAO,CAAC2yE,iBAAiB,GAGtC,GAAID,AAAiC,IAAjCA,EAAsBpwE,MAAM,CAC9B,MAAO,EAAE,CAGX,IAAMswE,EAAmBnhE,EAAMpF,GAAG,CAAC,SAAC2Y,CAAI,SAAKA,EAAKhlB,OAAO,CAAC8c,YAAY,KAEtE,OAAO41D,EACJltE,MAAM,CAAC,SAACqtE,CAAe,EACtB,IACE,EAIF,MAAO,CAACC,AAJN,EAAsC,OAAtC,GAAAD,EAAgB7yE,OAAO,CAACw8C,cAAc,AAAD,GAArC,oBAAwCnwC,GAAG,CAAC,SAAC0uB,CAAE,SAC7CA,EAAGje,YAAY,OACZ,EAAE,AAAD,EAEQqV,KAAK,CAAC,SAAC4gD,CAAY,SACjCH,EAAiBngD,QAAQ,CAACsgD,IAE9B,GACC1mE,GAAG,CAAC,SAACwmE,CAAe,MAGA,EAFnB,MAAO,CACLlpE,UAAWkpE,EAAgB7yE,OAAO,CAAC8c,YAAY,GAC/Cge,gBAAiB,AAAsC,OAAtC,GAAA+3C,EAAgB7yE,OAAO,CAACw8C,cAAc,AAAD,GAArC,oBAAwCh3C,MAAM,CAC7D,SAACwtE,CAAG,QAAK,CAACJ,EAAiBngD,QAAQ,CAACugD,EAAIl2D,YAAY,KAExD,CACF,EACJ,GAEaqc,EAAuB,WAClC,IAAMgB,EAAiC,KAAA5K,OAAA,EAAQgjD,GAE/C,MAAO,CACLr5C,iBAAkBiB,AAA0C,IAA1CA,EAA+B73B,MAAM,CACvD63B,+BAAAA,CACF,CACF,6VCVMyC,EAA6B,CACjCnrB,MAAO,EAAE,CACT66D,UAAW,EAAE,CACb3E,SAAU,IACZ,EAEa0K,EAAS,KAAAjiD,WAAA,EAA0BwM,GAAckkB,KAAK,CACjE,EAAAxT,yBAAyB,EA2B3B,KAAAyiC,OAAA,EAAQ,CACNC,MAAOqC,EACPruE,IAAK,QACLisE,QA3Bc,SAEdjsE,CAAG,QACC,CACJnC,IAAK,WACH,IAAMsqB,EAAQ7hB,aAAaC,OAAO,CAACvG,GAEnC,GAAI,CAACmoB,EACH,OAAOyQ,EAGT,GAAI,CACF,IAAMszC,EAAe5qE,KAAK28B,KAAK,CAAC9V,GAEhC,OAAO,EAAA8vB,KAAA,SAAc,CAACi0B,EACxB,CAAE,QAAM,CACN,OAAOtzC,CACT,CACF,EACAuzC,IAAK,SAACruE,CAAK,EACT,OAAOwI,aAAa6jB,OAAO,CAACnqB,EAAKsB,KAAKC,SAAS,CAACzD,GAClD,CACF,EAMA,GAEO,IAAM8a,EAAW,KAAA4T,SAAA,EAAU6hD,EAAQ,CACxC79C,QAAS,SAACrI,CAAK,CAAEwF,CAAO,EACtB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM7+D,KAAK,CAAClU,IAAI,CAACo0B,EACnB,EACF,EAIAshD,cAAe,SAAC9mD,CAAK,CAAEwF,CAAO,EAC5B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM7+D,KAAK,CAAI,QAAG0a,EAAM1a,KAAK,SAAE,QAAGkgB,IAASxrB,MAAM,CAAC,SAAC+sE,CAAG,CAAEluD,CAAI,EAC1D,IAAMmuD,EAAWD,EAAI32D,IAAI,CAAC,SAACgK,CAAE,SAAKA,EAAG7qB,EAAE,GAAKspB,EAAKtpB,EAAE,GAWnD,OATIy3E,GACFA,EAASz+C,SAAS,CAACy+C,EAAS/+C,SAAS,GAAKpP,EAAKoP,SAAS,IACpDpP,EAAKkQ,QAAQ,EACfi+C,CAAAA,EAASj+C,QAAQ,CAAG,EAAG,GAGzBg+C,EAAI31E,IAAI,CAACynB,GAGJkuD,CACT,EAAG,EAAE,CACP,EACF,EAIAve,WAAY,SAACxoC,CAAK,CAAEwF,CAAO,EACzB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1B,IACE,EADIhS,EACJ,CAAsC,OAAtC,GAAA3sC,EAAQ3xB,OAAO,CAAC0c,sBAAsB,AAAD,GAArC,oBAAwCrQ,GAAG,CAAC,SAAC+mE,CAAE,SAC7CA,EAAGt2D,YAAY,OACZ,EAAE,AAETwzD,CAAAA,EAAM7+D,KAAK,CAAG6+D,EAAM7+D,KAAK,CAACjM,MAAM,CAAC,SAACwf,CAAI,EACpC,OAAOA,EAAKtpB,EAAE,GAAKi2B,EAAQj2B,EAAE,EAAI,CAAC4iE,EAAiB7rC,QAAQ,CAACzN,EAAKtpB,EAAE,CACrE,EACF,EACF,EACA23E,mBAAoB,WAAO,EAI3BC,WAAY,SAACnnD,CAAK,CAAEwF,CAAO,EACzB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM7+D,KAAK,CAAG6+D,EAAM7+D,KAAK,CAACpF,GAAG,CAAC,SAAC2Y,CAAI,EAKjC,OAJIA,EAAKtpB,EAAE,GAAKi2B,EAAQj2B,EAAE,EACxBspB,EAAK0P,SAAS,CAAC/C,EAAQ5U,MAAM,EAGxBiI,CACT,EACF,EACF,EACAuuD,SAAU,SAACpnD,CAAK,CAAEwF,CAAO,EACvB,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM7+D,KAAK,CAAGkgB,CAChB,EACF,EACA6hD,cAAe,SAACrnD,CAAK,EACnB,MAAO,KAAAkkD,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM7+D,KAAK,CAAGmrB,EAAanrB,KAAK,AAElC,EACF,EACAgiE,aAAc,WAAO,EACrBC,YAAa,SAACvnD,CAAK,CAAEwF,CAAO,EAC1B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAM3I,QAAQ,CAAGh2C,CACnB,EACF,EACAgiD,kBAAmB,WACjB,OAAO/2C,CACT,CACF,GAEA,KAAA+zC,MAAA,EAAO,CACLC,MAAO,CAACh0D,EAAS4X,OAAO,CAAC,CACzBhvB,OAAQ,SAACyuB,CAAS,EAChB,OAAOA,EAAUj0B,OAAO,CAAClE,QAAQ,CAACF,IAAI,GAAK,EAAAspB,cAAA,gBAA8B,AAC3E,EACA7X,OAAQ,KAAAwjE,YAAA,EAAa,CACnBj1E,KAAM,4CACNk1E,QAAS,SAAC78C,CAAS,EACjB,GAAI7vB,MAAMC,OAAO,CAAC4vB,EAAUj0B,OAAO,CAACqc,aAAa,EAAG,KAEhD,EADF,EAAA4xB,QAAA,mBAA2B,CACzB,GAAA7xB,IAAA,EAAKlO,GAAG,CAAR,QACE,QAAG+lB,EAAUj0B,OAAO,CAACqc,aAAa,GAGxC,CACF,CACF,EACF,GAEA,KAAAs0D,MAAA,EAAO,CACLC,MAAOh0D,EAAS+3C,UAAU,CAC1BnvD,OAAQ,SAACyuB,CAAS,EAChB,OAAOA,EAAUj0B,OAAO,CAAClE,QAAQ,CAACF,IAAI,GAAK,EAAAspB,cAAA,gBAA8B,AAC3E,EACA7X,OAAQ,CACN,KAAAwjE,YAAA,EAAa,CACXj1E,KAAM,+BACNk1E,QAAS,WACP,EAAA7iC,QAAA,0BAAkC,EACpC,CACF,GACA,KAAA4iC,YAAA,EAAa,CACXj1E,KAAM,+CACNk1E,QAAS,WACPl0D,EAAS42D,aAAa,EACxB,CACF,GACD,AACH,GAEA,KAAA7C,MAAA,EAAO,CACLC,MAAO,CAACh0D,EAAS4X,OAAO,CAAC,CACzBhvB,OAAQ,SAACyuB,CAAS,EAChB,OACE7vB,MAAMC,OAAO,CAAC4vB,EAAUj0B,OAAO,CAAC0c,sBAAsB,GACtDuX,EAAUj0B,OAAO,CAAC0c,sBAAsB,CAACpa,MAAM,CAAG,CAEtD,EACA+K,OAAQ,KAAAwjE,YAAA,EAAa,CACnBj1E,KAAM,4EACNk1E,QAAS,SAAC78C,CAAS,EACjB,GAAI7vB,MAAMC,OAAO,CAAC4vB,EAAUj0B,OAAO,CAAC0c,sBAAsB,EAAG,KAEzD,EADFE,EAASq2D,aAAa,CAAC,AACmB,OAAxC,GAAAh/C,EAAUj0B,OAAO,CAAC0c,sBAAsB,AAAD,GAAvC,oBAA0CrQ,GAAG,CAAC,SAACrM,CAAO,EACpD,OAAO,IAAI,EAAA6c,SAAS,CAAC,CACnBnhB,GAAIsE,EAAQ8c,YAAY,GACxB9c,QAASA,EACT+c,OAAQ/c,EAAQihD,QAAQ,CACxB/rB,SAAU,GACVknB,eAAgBnoB,EAAUp4B,WAAW,CAChC,WAAM,CAAE,yBAAyB,CAChCD,KAAMq4B,EAAUp4B,WAAW,AAC7B,GACA8G,KAAAA,CACN,EACF,GAEJ,CACF,CACF,EACF,GAEO,IAAM0iB,EAAW,WACtB,IAIW,EAJL8G,EAAQ,KAAAoD,OAAA,EAAQ8iD,GAEtB,MAAO,mBACFlmD,GAAA,CACHhkB,QAAS,AAAc,OAAd,GAAAgkB,EAAMw7C,QAAQ,AAAD,GAAb,oBAAgBx/D,OAAO,EAEpC,EAEayrE,EAAcvB,EAAOhmE,GAAG,CAAC,SAAC8f,CAAK,EAC1C,OAAOA,EAAM1a,KAAK,CAACtL,MAAM,CAAC,SAAC0tE,CAAW,CAAEC,CAAY,EAClD,OAAOD,EAAcC,EAAa96C,KAAK,AACzC,EAAG,EACL,GAEaC,EAAgB,iBAAM,KAAA1J,OAAA,EAAQqkD,iOCxN9B5lC,EAAS,KAAA5d,WAAA,EANkB,CACtC9U,cAAe,CACb9S,aAAc7F,KAAAA,CAChB,CACF,GAEmEm+C,KAAK,CACtE,EAAAxT,yBAAyB,EAKdW,EAAW,KAAAzd,SAAA,EAAUwd,EAAQ,CACxC+lC,iBAAkB,SAAC5nD,CAAK,CAAEwF,CAAO,EAC/B,MAAO,KAAA0+C,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMh1D,aAAa,CAAGqW,EACtB2+C,EAAM5rD,oBAAoB,CAAGiN,EAAQnpB,YAAY,AACnD,EACF,EACAwrE,mBAAoB,SAClB7nD,CAAK,CACLwF,CAAO,EAEP,MAAO,mBACFxF,GAAA,CACH7Q,cAAe,mBACV6Q,EAAM7Q,aAAa,GACtB9S,aAAcmpB,KAGpB,EACAsiD,0BAA2B,SAAC9nD,CAAK,EAC/B,MAAO,KAAAkkD,OAAA,EAAQlkD,EAAO,SAACmkD,CAAK,EAC1BA,EAAMh1D,aAAa,CAAC9S,YAAY,CAAG8nE,EAAM5rD,oBAAoB,AAC/D,EACF,CACF,GAEanJ,EAAW,iBAAM,KAAAgU,OAAA,EAAQye,sLCjDzBskC,EAAe,EAAA7kC,WAAA,IAAe,CAAC,SAACthB,CAAK,MAG5C,EAFJ,MAAO,CACL3G,WACE,CAAc,OAAd,GAAA2G,EAAMrtB,QAAQ,AAAD,GAAb,oBAAgB03B,WAAW,EAAC,IAAM,MAAQ,WAAM,CAAC,eAAiB,IACtE,CACF,GAEa/Q,EAAiB,iBAG5B,AAFuB,KAAAisB,UAAA,EAAW,EAAAL,QAAA,gBAAwB,EAQnD,KAAA9hB,OAAA,EAAQ+iD,GALN,CACL9sD,WAAY,IACd,CAIJ,seCnBO,IAAM0iD,EAAmB,cAAO,EAAAx7D,GAAG,OAW7B2Z,EAAgB,cAAO,EAAAla,IAAI,ifCZjC,IAAM/Q,EAAe,iBAC1B,UAAC,EAAA84E,MAAM,EACL9zD,OAAQ,KAAAhQ,GAAA,EAAG,0GCFT+jE,EAAe,KAAAC,WAAA,EAAY,CAC/BznD,QAAS,WACT42B,WAAY,6CACZt2C,MAAO,OACPkG,WAAY,IACZM,SAAU,OACV4gE,WAAY,OACZxsD,WAAY,QACd,GAEMysD,EAAiB,KAAAF,WAAA,EAAY,CACjCznD,QAAS,WACT42B,WAAY,OACZt2C,MAAO,kCACPsF,OAAQ,4CACRY,WAAY,IACZM,SAAU,OACV4gE,WAAY,OACZxsD,WAAY,SACZjY,OAAQ,MACV,GAEa2kE,EAAc,KAAAC,iBAAA,EAAkB,CAC3CC,SAAU,CAAEN,aAAAA,EAAcG,eAAAA,CAAe,EACzCI,aAAc,CACZ7kE,QAAS,cACX,CACF,GA4BA,EA1Bc,KAAA8kE,WAAA,EAAY,CACxBv0D,OAAQ,CACN6kD,OAAQ,CACN,IAAK,CACH2P,UAAW,YACb,EACA,QAAS,CACP/hE,gBAAiB,UACjB5F,MAAO,SACT,CACF,CACF,EACA4nE,MAAO,CACL,iBAAkB,OAClB,iBAAkB,QAClB,mBAAoB,QACpB,qBAAsB,MACxB,EACAC,OAAQ,CACNC,WAAY,SACd,EACAC,WAAY,CACV9kE,OAAQqkE,CACV,CACF,4FCjDO,IAAM7b,EAAmB,SAC9B52D,CAAK,CACLhD,CAAQ,MANO6gD,EAOfs1B,EAAA,wDAEIC,EAASpzE,EAEb,GAAImzE,EACF,OAAO,IAAIE,KAAKC,YAAY,CAAC1D,UAAUjpD,QAAQ,CAAE,CAC/C/G,MAAO,WACP5iB,SAAUA,GAAY,KACxB,GAAG48C,MAAM,CAAC,CAACw5B,GAGb,GAjBOzlE,OADQkwC,EAkBHu1B,KAjBSv1B,GAAKA,EAAI,GAAM,EAkBlCu1B,EAASzlE,OAAOylE,EAAO74B,OAAO,CAAC,IAGjC,IAAMg5B,EAAQH,EAAOvxE,QAAQ,GAAGkyC,KAAK,CAAC,KAItC,OAFAw/B,CAAK,CAAC,EAAE,CAAGA,CAAK,CAAC,EAAE,CAACtwE,OAAO,CAAC,wBAAyB,KAE7C,GAAqB,OAAnBswE,EAAM3wE,IAAI,CAAC,KAAK,KAAY,OAAT5F,EAC/B,mFC7BO,IAAMwyB,EAAU,SACrB4gD,CAAE,CACFnxE,CAAO,EAEP,GAAI,CACF,OAAOmxE,GACT,CAAE,MAAOvqE,EAAG,CAKV,OAJI5G,MAAAA,GAAAA,EAASu0E,MAAM,CAIZ,IACT,CACF,+FCRO,SAASjI,EACdvxE,CAAkB,CAClBmB,CAAoB,CACpBmD,CAAa,EAEb,IAAMqR,EAA2B,EAAE,CAiBnC,OAfI3V,EAASs8B,MAAM,EACjB,AAAA3mB,EAAMlU,IAAI,CAAV,MAAAkU,EACE,QAAG47D,EAAyBvxE,EAASs8B,MAAM,CAAEn7B,EAAcmD,KAI/DqR,EAAMlU,IAAI,CAAC,CACTwU,MAAOjW,EAASD,WAAW,CAC3BmW,KAAM,KAAA0E,YAAA,EAAa,EAAAC,gCAAgC,CAAE,CACnD,gBAAiB1Z,EACjB,SAAUmD,EACV,WAAYtE,EAASF,IAAI,AAC3B,EACF,GAEO6V,CACT,2gBCrBa0X,EAAe,CAC1B0wC,OAAQ,SACR0b,MAAO,QACPC,KAAM,OACNC,IAAK,MACLC,IAAK,KACP,EAEaj9D,EAAmB,CAC9B,uCACA,6CACA,2BACA,uCACA,qBACA,2BACA,2BACA,uCACA,mDACA,6CACA,uCACA,6CACD,CAEYF,EAAiB,CAAC,eAAM,eAAM,eAAM,eAAM,eAAM,eAAM,eAAK,CAE3D2zD,EAGT,CACF,EAAG,GACH,EAAG,WAAM,CAAC,oBACV,EAAG,WAAM,CAAC,kBACV,EAAG,WAAM,CAAC,uBACV,EAAG,WAAM,CAAC,yBACV,EAAG,WAAM,CAAC,wBACV,EAAG,WAAM,CAAC,yBACV,EAAG,WAAM,CAAC,yBACV,EAAG,WAAM,CAAC,wBACV,EAAG,WAAM,CAAC,0BACV,GAAI,WAAM,CAAC,yBACX,GAAI,WAAM,CAAC,eACb,EAEaC,EAGT,CACF,EAAG,GACH,EAAG,WAAM,CAAC,kBACV,EAAG,WAAM,CAAC,kBACV,EAAG,WAAM,CAAC,kBACV,EAAG,WAAM,CAAC,iBACZ,EAEaC,EAGT,CACF,EAAG,GACH,EAAG,WAAM,CAAC,8BACV,EAAG,WAAM,CAAC,8BACV,EAAG,WAAM,CAAC,8BACV,EAAG,WAAM,CAAC,6BACZ,EAEaxb,EAAiB,CAC5B,CAAE7+C,MAAO,aAAcjQ,MAAO,CAAE,EAChC,CAAEiQ,MAAO,WAAYjQ,MAAO,CAAE,EAC9B,CAAEiQ,MAAO,gBAAiBjQ,MAAO,CAAE,EACnC,CAAEiQ,MAAO,yBAAqBjQ,MAAO,CAAE,EACvC,CAAEiQ,MAAO,wBAAoBjQ,MAAO,CAAE,EACtC,CAAEiQ,MAAO,yBAAqBjQ,MAAO,CAAE,EACvC,CAAEiQ,MAAO,yBAAqBjQ,MAAO,CAAE,EACvC,CAAEiQ,MAAO,wBAAoBjQ,MAAO,CAAE,EACtC,CAAEiQ,MAAO,0BAAsBjQ,MAAO,CAAE,EACxC,CAAEiQ,MAAO,yBAAqBjQ,MAAO,EAAG,EACxC,CAAEiQ,MAAO,SAAUjQ,MAAO,EAAG,EAC9B,CAEY+uD,EAAqB,CAChC,CAAE9+C,MAAO,GAAIjQ,MAAO,CAAE,EACtB,CAAEiQ,MAAO,MAAOjQ,MAAO,CAAE,EACzB,CAAEiQ,MAAO,MAAOjQ,MAAO,CAAE,EACzB,CAAEiQ,MAAO,MAAOjQ,MAAO,CAAE,EACzB,CAAEiQ,MAAO,MAAOjQ,MAAO,CAAE,EAC1B,CAEYk9D,EAAkB,CAC7B,CAAEl9D,MAAO,OAAQiQ,MAAO,KAAA7U,CAAA,AAAAA,EAAE,qBAAuB,EAAG,EACpD,CAAE4E,MAAO,SAAUiQ,MAAO,KAAA7U,CAAA,AAAAA,EAAE,gBAAkB,EAAG,EACjD,CAAE4E,MAAO,QAASiQ,MAAO,KAAA7U,CAAA,AAAAA,EAAE,UAAY,EAAG,EAC3C,CAEYkU,EACX,4LCnGWuxC,EAAY,CACvBgzB,OAAQ,SAACx9D,CAAI,EACX,OAAOA,aAAgBX,MAAQ,CAAC9H,MAAMyI,EAAKy9D,OAAO,GACpD,EACAl6B,OAAA,SAAOvjC,CAAY,MAAEujC,EAAS,UAAT,6CAAS,mBAC5B,OAAO,IAAMvjC,GAAMujC,MAAM,CAACA,EAC5B,EACAm6B,eAAgB,SAACC,CAAK,EACpB,GAAIA,AAAiB,IAAjBA,EAAMxzE,MAAM,CACd,OAAO,KAGT,IAAIyzE,EAAiC,KAEhC,uBAAL,QAAK,IAAoBD,EAAMtwE,MAAM,CAACklB,QAAQ,CAAR,mBAAjC,4BAA2C,CAA3C,IAAMsrD,EAAN,QACG79D,EAAO,IAAM69D,GAGd79D,EAAKsP,OAAO,IAIb,EAACsuD,GAAc59D,EAAK2wC,OAAO,CAACitB,EAAU,GACxCA,CAAAA,EAAa59D,CAAG,CAEpB,WAXK,0EAaL,OAAO49D,EAAaA,EAAWr6B,MAAM,CAAC,cAAgB,IACxD,EACAu6B,0BAA2B,SACzBC,CAAK,EAEL,OAAOA,EAAM1mB,IAAI,CAAC,SAACC,CAAC,CAAEC,CAAC,EACrB,IAAMymB,EAAQ,IAAM1mB,EAAE0f,SAAS,EACzBiH,EAAQ,IAAM1mB,EAAEyf,SAAS,SAE/B,AAAIgH,EAAMrtB,OAAO,CAACstB,GACT,GACED,EAAM56B,QAAQ,CAAC66B,GACjB,EAEA,CAEX,EACF,CACF,uHC5Ca53C,EAAiB,CAC5BwhC,eAAgB,SAA2CqW,CAAI,EAC7D,MAAO,EA6BT,EACAC,iBAAkB,SAChBD,CAAI,EAQJ,OACE73C,EAAewhC,cAAc,CAACqW,IANvB,CAACE,AAO0BF,EAN/BhqE,GAAG,CAAC,SAAC00C,CAAE,SAAKA,EAAGlC,UAAU,GACzB1sB,KAAK,CAAC,SAAC5L,CAAE,CAAEha,CAAK,CAAEiqE,CAAG,SAAKA,EAAIj2B,OAAO,CAACh6B,KAAQha,GAOrD,EACAkqE,QAAS,SACPJ,CAAI,CACJ73B,CAAU,CACVC,CAAQ,CACRi4B,CAAe,EAEf,GAAIL,AAAgB,IAAhBA,EAAK/zE,MAAM,CACb,OAAO+zE,EAGLK,GACFL,EAAK/xE,OAAO,CAAC,SAACy8C,CAAE,CAAEtzB,CAAC,EACjBszB,EAAGlC,UAAU,CAAGpxB,CAClB,GAGF,IACsB,EADhBkpD,EAAWN,CAAI,CAAC,EAAE,CAACx3B,UAAU,EAAI,EACjC+3B,EAAgB,CAAQ,OAAR,GAAAP,EAAK1qE,EAAE,CAAC,GAAE,GAAV,oBAAakzC,UAAU,AAAD,GAAKw3B,EAAK/zE,MAAM,CAAG,EACzDu0E,EAAqBD,IAAkBP,EAAK/zE,MAAM,CAAG,EACrDw0E,EAAoBt4C,EAAe83C,gBAAgB,CAACD,GAE1D,GAAIQ,GAAsBC,EAAmB,CAC3C,IAAMzvE,EAASjD,MAAMV,IAAI,CAAC2yE,GACnBU,EAAW,QAAA1vE,EAAO6pB,MAAM,CAACstB,EAAY,KAA1B,IAOlB,OALAn3C,EAAO6pB,MAAM,CAACutB,EAAU,EAAGs4B,GAC3B1vE,EAAO/C,OAAO,CAAC,SAAC0gB,CAAI,CAAEzY,CAAK,EACzByY,EAAK65B,UAAU,CAAGtyC,CACpB,GAEOlF,CACT,CAEA,IAAM2vE,EAAmB,WACvB,OAAQ,IACN,KAAKx4B,IAAe63B,EAAK/zE,MAAM,CAAG,EAChC,OAAOs0E,CAGT,MAAKp4B,EAAaC,EAChB,OAAOm4B,EAAgBp4B,CAGzB,SACE,OAAOm4B,EAAWn4B,CAEtB,CACF,IACMy4B,EAAiB,WACrB,OAAQ,IACN,KAAKx4B,AAAa,IAAbA,EACH,OAAOk4B,CAGT,MAAKn4B,EAAaC,EAChB,OAAOm4B,EAAiBp4B,CAAAA,EAAaC,GAAY,EAGnD,SACE,OAAOk4B,EAAWl4B,CAEtB,CACF,IAEMy4B,EAAa9yE,MAAMwyE,EAAgB,GAAGlrD,IAAI,CAAC,MAEjD2qD,EAAKc,OAAO,GAAG7yE,OAAO,CAAC,SAAC0gB,CAAI,CAAEyI,CAAC,SAAMypD,CAAU,CAACN,EAAgBnpD,EAAE,CAAGzI,IAErE,IAAO,EAAW,QAAAkyD,EAAWhmD,MAAM,CAAC8lD,EAAiB,KAAnC,IAUlB,OARAE,EAAWhmD,MAAM,CAAC+lD,EAAe,EAAG,GAEpCC,EAAW5yE,OAAO,CAAC,SAACy8C,CAAE,CAAEtzB,CAAC,EACnBszB,GACFA,CAAAA,EAAGlC,UAAU,CAAGpxB,CAAAA,CAEpB,GAEOypD,EAAW1xE,MAAM,CAACklB,QAC3B,EAEA0sD,aAAc,SAACxW,CAAc,QAA8B,CACzDrd,WAAYqd,EACR,gCACA,cACJj0C,QAAS,wBACTpa,OAAQquD,EAAiB,uBAAyB,yBAClDltD,aAAcktD,EAAiB,yBAA2Bj+D,KAAAA,EAC1DuQ,MAAO,MACT,GAEAmkE,aAAc,SACZ94C,CAAU,CACVne,CAAM,QACa,WAChBA,GAGP,2FC7HO,IAAMguD,EAAkB,CAC7BkJ,sBArB4B,SAAC36E,CAAW,EACxC,IAAgD,EAAAA,EAAYwJ,MAAM,CAChE,SAACkB,CAAM,CAAEnI,CAAU,EAOjB,OANIA,EAAWivC,MAAM,CACnB9mC,EAAOwmE,eAAe,CAACtwE,IAAI,CAAC2B,GAE5BmI,EAAOymE,kBAAkB,CAACvwE,IAAI,CAAC2B,GAG1BmI,CACT,EACA,CACEymE,mBAAoB,EAAE,CACtBD,gBAAiB,EAAE,AACrB,GAGF,MAAO,CAAEC,mBAhBuC,EAAxCA,kBAAkB,CAgBGD,gBAhBmB,EAApBA,eAAe,AAgBE,CAC/C,CAIA,oKCCe,SAAe0J,EAC5BC,CAAgB,SADY,8CAAf,iBACbA,CAAgB,MAChBz2E,EACA+E,iDAxB6B2xE,EAAiBD,EA0B9C,OAHAz2E,EAAA,+BAAsB,CAAE6F,OAAQ,EAAAuiB,YAAA,IAAgB,AAAC,EACjDrjB,EAAA,uBAEO,kBA1BsB2xE,EAJJ,kCAIqBD,EA2BSA,EA1BhD,KAAAE,mBAAA,EAAoBD,GAAW,KAAAptE,mBAAA,EAAoBmtE,IA2BxD,SACE3wE,gBAAiB,GACjBb,QAAS,SACP,OAAU,mBACV,eAAgB,mBAChB,cAAkB,UAAuC,OAA9BsE,aAAaC,OAAO,CAAC,WAC7CzE,IAEF/E,MAGT,EAAC,EAlB6B,gKCvBvB,IAAMse,EAAY,CACvBs4D,eAAgB,SAACC,CAAI,CAAQr5D,CAAQ,EACnC,IAAaq5D,EAAMr5D,EACrB,EAEAs5D,cAAe,SAACn3E,CAAG,CAAU6d,CAAQ,EACnC,IAAMvM,EAAOkhB,SAASqc,aAAa,CAAC,IAEpCv9B,CAAAA,EAAKjH,IAAI,CAAGrK,EACZsR,EAAK3E,MAAM,CAAG,SACd2E,EAAK0P,KAAK,CAAC9J,OAAO,CAAG,OACrB5F,EAAKw9B,YAAY,CAAC,WAAYjxB,GAC9B2U,SAASryB,IAAI,CAAC4uC,WAAW,CAACz9B,GAC1BA,EAAKya,KAAK,EACZ,EAEAqrD,aAAa,IAAE,iBAAOp3E,CAAG,MAWjB6d,EACAkxC,EAOAlnC,WAlBS,aAAf,iBAAyBwvD,CAAiB,MAClCH,8DAAO,SAAMI,MAAMD,EAAW,CAClCz1B,KAAM,MACR,GAAGpgD,IAAI,IAAC,iBAAO+1E,CAAG,iCAChB,MAAO,GAAAA,EAAIL,IAAI,KACjB,YAFeK,CAAG,4CAIlB,OANML,EAAO,SAMN,GAAAxoC,IAAIC,eAAe,CAACuoC,MAC7B,EAAC,EARc,4EAaN,OAHHr5D,EAAW7d,EAAIm1C,KAAK,CAAC,KAAKshC,OAAO,EAAE,CAAC,EAAE,CACtC1nB,EAAIv8B,SAASqc,aAAa,CAAC,KAExB,GAAM2oC,SAbUH,CAAiB,SAA3B,yBAaUr3E,kBAAzB+uD,EAAE1kD,IAAI,CAAG,SACT0kD,EAAElvC,QAAQ,CAAGhC,EAEb2U,SAASryB,IAAI,CAAC4uC,WAAW,CAACggB,GAEpBlnC,EAAe,WACnB8I,WAAW,WACT+d,IAAI+oC,eAAe,CAACz3E,GACpB+uD,EAAE2oB,mBAAmB,CAAC,QAAS7vD,EACjC,EAAG,IACL,EAEAknC,EAAE4oB,gBAAgB,CAAC,QAAS9vD,GAE5BknC,EAAEhjC,KAAK,SACT,YA7BsB/rB,CAAG,kCA8B3B,2HC7Ca4yD,EAAsB,SACjC9qC,CAAM,EAEN,IAAM8vD,EAA2B,CAAC,EAUlC,OARA32E,OAAO6C,OAAO,CAACgkB,GAAQlkB,OAAO,CAAC,+BAAEN,EAAA,KAAKlC,EAAA,KAChC,KAAAswB,QAAA,EAAStwB,GACXw2E,CAAW,CAACt0E,EAAI,CAAGlC,EAAMA,KAAK,CAE9Bw2E,CAAW,CAACt0E,EAAI,CAAGlC,CAEvB,GAEOw2E,CACT,iFCjBO,IAAM/kD,EAAQ,SAAChvB,CAAC,EACrB,OAAOA,MAAAA,CACT,0ICCa6tB,EAAW,SACtBtwB,CAAK,EAEL,MAAO,CAAC,KAAAyxB,KAAA,EAAMzxB,MAAAA,EAAA,OAAAA,EAAOA,KAAK,GAAK,CAAC,KAAAyxB,KAAA,EAAMzxB,MAAAA,EAAA,OAAAA,EAAOiQ,KAAK,CACpD,EAEawgB,EAAmB,SAC9BzwB,CAAK,QAEL,EAAIsC,MAAMC,OAAO,CAACvC,IACTA,EAAMqwB,KAAK,CAAC,SAACG,CAAG,QAAK,CAAC,KAAAiB,KAAA,EAAMjB,EAAIxwB,KAAK,GAIhD,qFCjBO,IAAMwM,EAAY,CACvBiqE,sBAAuB,SAACC,CAAa,EACnC,OAAO/oE,OAAQ,AAAA2M,CAAAA,KAAKq8D,KAAK,CAACD,AAAgB,EAAhBA,GAAqB,GAAGn8B,OAAO,CAAC,GAC5D,CACF,4JCEal3B,EAAe,CAC1BuzD,+BAAgC,SAC9B54E,CAAa,CACb6pB,CAAI,EAKJ,IAKM,EALF7tB,EACF,AAAI6tB,CAAAA,MAAAA,EAAA,OAAAA,EAAM7tB,QAAQ,AAAD,EACR6tB,EAAK7tB,QAAQ,CAGlB6tB,CAAAA,MAAAA,EAAA,OAAoB,OAApB,GAAAA,EAAMgvD,cAAc,AAAD,GAAnB,oBAAsBr2E,MAAM,AAAD,EACtBqnB,EAAKgvD,cAAc,CAACp8D,IAAI,CAAC,SAACyN,CAAG,EAClC,OAAOA,EAAItuB,EAAE,GAAKoE,EAAcgK,UAAU,AAC5C,UAcJ,MAVI,CAAChO,GAGHA,CAAAA,EAAW,IAAI,EAAAL,QAAQ,CAAC,CACtBC,GAAIoE,EAAcgK,UAAU,EAAI,EAChClO,KAAMkE,EAAcmlB,YAAY,CAChCppB,YAAa,WAAM,CAACiE,EAAcmlB,YAAY,CAChD,EAAC,EAGI,IAAI,EAAA/G,OAAO,CAAC,mBACdpe,GAAA,CACHhE,SAAAA,EACAuoB,UAAWvkB,EAAcukB,SAAS,EAAI1hB,KAAAA,IAE1C,CACF,8ICtCa+T,EAAe,SAC1BkiE,CAAK,CACL7zE,CAAO,EAMP,OAJApD,OAAOmlD,IAAI,CAAC/hD,GAAST,OAAO,CAAC,SAACN,CAAG,EAC/B40E,EAAQA,EAAM7zE,OAAO,CAACf,EAAae,CAAO,CAACf,EAAI,CACjD,GAEO40E,CACT,EAEa9hD,EAAmB,SAC9B75B,CAAY,CACZ+M,CAAO,CACPhK,CAAO,EAEP,OAAO0W,EAAa,EAAAC,gCAAgC,CAAE,CACpD,gBAAiB1Z,EACjB,SAAU+M,EACV,WAAYhK,EAAQlE,QAAQ,CAACF,IAAI,AACnC,EACF,4GCvBa66C,EAAkB,SAAmBoiC,CAAG,QACnD,AAAI,KAAAtlD,KAAA,EAAMslD,GACD,EAAE,CAGJl3E,OAAOmlD,IAAI,CAAC+xB,EACrB,oFCRO,IAAM5tD,EAAW,CACtB6tD,qBAAsB,SAACp4E,CAAG,EACxB,IAAMq4E,EAAY,IAAI3pC,IAAI1uC,GAEpB0iE,EAAc,IAAI4V,gBAAgBD,EAAUrwE,MAAM,EAMxD,OAJA06D,EAAY+M,GAAG,CAAC,YAAa34D,KAAKyhE,GAAG,GAAK,IAE1CF,EAAUrwE,MAAM,CAAG06D,EAAYz/D,QAAQ,GAEhCo1E,EAAUp1E,QAAQ,EAC3B,CACF,wICZO,IAAM0G,EAAsB,SAAC3J,CAAG,SAAaA,EAAIqE,OAAO,CAAC,OAAQ,KAE3D2yE,EAAsB,SAACh3E,CAAG,SACrCA,EAAIqE,OAAO,CAAC,cAAe"}