{"version":3,"sources":["styles/theme/foundation.js","styles/theme/typography.js","styles/theme/card.js","styles/theme/input.js","styles/theme/modal.js","styles/theme/colors.js","config/index.ts","services/SentryService.ts","assets/locales/index.ts","utils/graphql.ts","utils/misc.ts","consts/validations.ts","consts/map.ts","consts/table.ts","consts/dates.ts","consts/storage.ts","consts/i18n.ts","consts/external-links.ts","consts/units.ts","consts/file-extensions.ts","assets/images/login-card-weed.png","assets/images/login-card-rice.png","assets/images/cloud-climate.png","assets/images/partially-clouded-with-cirrus-climate.png","assets/images/clear-climate.png","assets/images/settings.png","assets/images/satellite.png","assets/images/dashboard.png","consts/countries.ts","assets/images/ar-flag.png","assets/images/br-flag.png","assets/images/col-flag.png","assets/images/do-flag.png","assets/images/pa-flag.png","assets/images/par-flag.png","assets/images/usa-flag.png","assets/images/ur-flag.png","consts/broadcast-channel.ts","consts/navigation.ts","utils/date.ts","utils/conversion.ts","utils/GeoUtils.ts","types/graphql.ts","types/lot.ts","types/features-flags.ts","types/amplitude.ts","types/selects.ts","utils/lot.ts","utils/CompanyUtils.ts","services/I18NService.ts","services/ApolloService.ts","styles/theme/antd-theme.ts","styles/theme/index.ts","styles/GlobalStyles.ts","styles/mixins/index.ts","contexts/AuthContext/index.tsx","hooks/useQueryParams.ts","api/user.ts","api/company.ts","api/season.ts","hooks/useCurrentUser.ts","hooks/useUser.ts","hooks/useCompanySeasons.ts","hooks/useFeatures.ts","hooks/usePermissions.ts","hooks/useSeason.ts","hooks/useHasCompanyOrFieldsOrLots/api/index.ts","hooks/useHasCompanyOrFieldsOrLots/index.ts","hooks/useUpdateUser.ts","hooks/useLocalStorage.ts","hooks/useAuth/api/index.ts","hooks/useAuth/index.ts","hooks/useIsProdEnv.ts","hooks/useCountries/api/index.ts","hooks/useCountries/index.ts","hooks/useSubregions/api/index.ts","hooks/useSubregions/index.ts","hooks/useUpdateSeason.ts","hooks/useTrackEvent.ts","hooks/useTrackImpression.ts","hooks/useUpdateRiceLot/api/index.ts","hooks/useUpdateRiceLot/index.ts","hooks/useUpdateLot/api/index.ts","hooks/useUpdateLot/index.ts","hooks/useCompanyMilestones.ts","hooks/useUpdateTypeStyles.ts","hooks/useHistoricalSeasons/api/index.ts","hooks/useHistoricalSeasons/index.ts","hooks/useQueryDams/api/index.ts","hooks/useQueryDams/index.ts","hooks/useFormatNumbersWithScale.ts","hooks/useProductionType.ts","hooks/useDeliveryCondition.ts","hooks/useImageUrl.ts","contexts/ActiveCompanyContext/index.tsx","components/Container/index.tsx","components/loaders/Loader/index.tsx","components/loaders/FullScreenLoader/index.tsx","components/modals/Modal/index.tsx","components/modals/ConfirmationModal/index.tsx","components/fields-selects/FieldsSelect/api/index.ts","components/fields-selects/BaseFieldsSelect/index.tsx","components/fields-selects/FieldsSelect/index.tsx","components/UserAvatar/index.tsx","components/CropsSelect/api/index.ts","components/CropsSelect/index.tsx","components/VarietiesSelect/api/index.ts","components/VarietiesSelect/index.tsx","assets/icons/logo-shadow.svg","assets/icons/navbar-dashboard.svg","assets/icons/navbar-settings.svg","assets/icons/navbar-map.svg","assets/icons/map-pin.svg","assets/icons/trash.svg","assets/icons/logo-colored-with-text.svg","assets/icons/camera.svg","assets/icons/drop.svg","assets/icons/chlorophyll.svg","assets/icons/left-arrow.svg","assets/icons/right-arrow.svg","assets/icons/cog-settings.svg","assets/icons/last-update.svg","assets/icons/image.svg","assets/icons/varieties.svg","assets/icons/arrow-clock.svg","assets/icons/grain-humidity.svg","assets/icons/grain-humidity-indicator.svg","assets/icons/rain.svg","assets/icons/sun.svg","assets/icons/rain-drop.svg","assets/icons/polygon.svg","assets/icons/compare-images.svg","assets/icons/tool-pin.svg","assets/icons/hidden-eye.svg","assets/icons/close.svg","assets/icons/cloudy.svg","assets/icons/rain-weather.svg","assets/icons/logo-kuna.svg","assets/icons/search.svg","assets/icons/rice.svg","assets/icons/toolbar-trash.svg","assets/icons/image-file.svg","assets/icons/calendar.svg","assets/icons/upload.svg","assets/icons/rtk.svg","assets/icons/water.svg","assets/icons/weeds.svg","assets/icons/information.svg","assets/icons/dam.svg","assets/icons/share-arrow.svg","assets/icons/satellite.svg","assets/icons/emergence.svg","assets/icons/harvested.svg","components/DeleteButton/index.tsx","components/MapPin/index.tsx","components/InputTitle/index.tsx","components/Button/index.tsx","components/ViewerUserTooltip/index.tsx","components/ListCard/index.tsx","components/Upload/components/SmallUploadBox/index.tsx","components/Upload/components/SmallUploadBoxV2/index.tsx","components/Upload/components/LargeUploadBox/index.tsx","components/Upload/index.tsx","components/FormInput/index.tsx","components/PrivateRoute/index.tsx","components/Header/index.tsx","components/Layout/index.tsx","components/EllipsisTitle/index.tsx","components/EllipsisText/index.tsx","components/ProtectedRoute/index.tsx","components/SeasonSelect/index.tsx","components/CalendarPanel/index.ts","components/TagText/index.tsx","components/GreyCard/index.tsx","components/GreyCardWithTitle/index.tsx","components/DatePicker/index.tsx","components/ProductionTypeSelect/index.tsx","components/AbandonedSizeInput/index.tsx","components/UpdateTypeInformation/components/Content/index.tsx","components/UpdateTypeInformation/index.tsx","components/HistoricalSeasonSelect/index.tsx","components/DeliveryConditionSelect/index.tsx","components/IconText/index.tsx","features/LoginRouter/components/ContentHeader/index.tsx","features/LoginRouter/components/LoginTextCTA/index.tsx","features/LoginRouter/components/FormEmailInput/index.tsx","features/LoginRouter/components/FormPasswordInput/index.tsx","features/LoginRouter/hooks/useFormIconsStyle.ts","features/LoginRouter/components/FeedbackCard/index.tsx","features/LoginRouter/components/index.tsx","features/LoginRouter/features/Login/hooks/useLoginForm.ts","features/LoginRouter/features/Login/api/index.ts","features/LoginRouter/features/Login/components/index.tsx","features/LoginRouter/features/Login/index.tsx","features/LoginRouter/features/Login/hooks/useLogin.ts","features/LoginRouter/features/Login/hooks/useVerifyAccount.ts","features/LoginRouter/features/Signup/components/index.ts","features/LoginRouter/features/Signup/api/index.ts","features/LoginRouter/features/Signup/index.tsx","features/LoginRouter/features/Signup/hooks/useSignupForm.ts","features/LoginRouter/features/Signup/hooks/useSignup.ts","features/LoginRouter/features/VerifyEmail/index.tsx","features/LoginRouter/features/ForgotPassword/api/index.ts","features/LoginRouter/features/ForgotPassword/index.tsx","features/LoginRouter/features/ForgotPassword/hooks/useForgotPasswordForm.ts","features/LoginRouter/features/PasswordChangeRequest/index.tsx","features/LoginRouter/features/PasswordChange/api/index.ts","features/LoginRouter/features/PasswordChange/index.tsx","features/LoginRouter/features/PasswordChange/hooks/useChangePasswordForm.ts","features/LoginRouter/index.tsx","features/MainRouter/components/create-company-modals/components/index.ts","features/MainRouter/components/create-company-modals/CreateCompanyModal/components/CompanyForm/index.tsx","features/MainRouter/hooks/useCreateCompany/api/index.ts","features/MainRouter/hooks/useCreateCompany/index.ts","features/MainRouter/hooks/useCreateCompanyForm.ts","features/MainRouter/hooks/useOrganizationRegions/api/index.ts","features/MainRouter/hooks/useOrganizationRegions/index.ts","features/MainRouter/hooks/useCreateOrganizationCompany.ts","features/MainRouter/hooks/useCreateOrganizationCompanyForm.ts","hooks/useCommercialExecutives.ts","features/MainRouter/components/create-company-modals/CreateCompanyModal/index.tsx","features/MainRouter/components/create-company-modals/CreateClientModal/components/ClientForm/index.tsx","features/MainRouter/components/create-company-modals/CreateClientModal/index.tsx","features/MainRouter/components/CompanyCreationFeedbackModal/api/index.ts","features/MainRouter/components/CompanyCreationFeedbackModal/index.tsx","features/MainRouter/components/Indicator/index.tsx","features/MainRouter/components/AreaTooltip/index.tsx","features/MainRouter/components/index.ts","features/MainRouter/features/SideNavbar/components/AccountSettingsModal/components/ChangePasswordModal/index.tsx","features/MainRouter/features/SideNavbar/components/AccountSettingsModal/components/ChangePasswordModal/hooks/useUpdatePassword.ts","features/MainRouter/features/SideNavbar/components/AccountSettingsModal/components/index.ts","features/MainRouter/features/SideNavbar/components/AccountSettingsModal/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/RoleSelect/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/api/index.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/CompanyUsersTable/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/CompanyUsersTable/hooks/useResendCompanyInvitation.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/InviteUserModal/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/LeaveCompanyModal/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/FarmerInformation/components/UpdateClientForm/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/FarmerInformation/components/index.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/FarmerInformation/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/UpdateCompanyForm/index.tsx","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/components/index.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/hooks/useDeleteCompany/api/index.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/hooks/useCompanySettings.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/hooks/useDeleteCompany/index.ts","features/MainRouter/features/SideNavbar/components/CompanySettingsModal/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/UserSettings/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/PopoverSearchInput/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/OrganizationItem/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/ActionButton/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/VirtualizedListItem/components/index.ts","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/VirtualizedListItem/index.tsx","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/components/index.ts","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/hooks/useListHeight/index.ts","features/MainRouter/features/SideNavbar/components/CompaniesPopoverContent/index.tsx","features/MainRouter/features/SideNavbar/components/index.tsx","features/MainRouter/features/SideNavbar/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useDams/useFeatures.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useDams/api/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useDams/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useDeleteDam.ts","features/MainRouter/features/SettingsRouter/components/DeleteLotConfirmationModal/index.tsx","features/MainRouter/features/SettingsRouter/components/Control/hooks/useEditorStyles.ts","features/MainRouter/features/SettingsRouter/components/Control/index.tsx","features/MainRouter/features/SettingsRouter/components/index.ts","features/MainRouter/features/SettingsRouter/api/index.ts","features/MainRouter/features/SettingsRouter/hooks/useDeleteLot.ts","features/MainRouter/features/SettingsRouter/hooks/useUpdateField/api/index.ts","features/MainRouter/features/SettingsRouter/hooks/useUpdateField/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/FieldCard/api/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/FieldCard/components/DamsList/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/FieldCard/components/DropdownMenu/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/FieldCard/components/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/FieldCard/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useCreateDams.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/hooks/useUpdateDams.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/GeocoderControl/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/CreationFeedbackCard/index.tsx","features/MainRouter/features/SettingsRouter/features/FieldsMap/components/index.ts","features/MainRouter/features/SettingsRouter/features/FieldsMap/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/LotsList/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/DropdownMenu/index.tsx","features/MainRouter/features/DasboardRouter/features/types/index.ts","features/MainRouter/features/DasboardRouter/features/components/TrafficLightBall/index.tsx","features/MainRouter/features/DasboardRouter/features/components/MapImage/index.tsx","features/MainRouter/features/DasboardRouter/features/components/TrafficLights/index.tsx","features/MainRouter/features/DasboardRouter/features/components/LotOrFieldInformation/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/components/Table/components/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/components/Table/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/components/SeasonSelect/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/components/EmptyResults/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/components/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/hooks/useReuseLots/api/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/ReuseLotsModal/hooks/useReuseLots/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/components/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/components/LotsCard/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/GeocoderControl/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/components/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/api/index.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/index.tsx","features/MainRouter/features/SettingsRouter/features/LotsMap/hooks/useCreateLots.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/hooks/useUpdateLots.ts","features/MainRouter/features/SettingsRouter/features/LotsMap/hooks/useLots.ts","features/MainRouter/features/SettingsRouter/features/Settings/api/index.ts","features/MainRouter/features/SettingsRouter/features/Settings/index.tsx","features/MainRouter/features/SettingsRouter/features/Settings/hooks/useFieldsSettings.ts","features/MainRouter/features/SettingsRouter/features/Settings/hooks/useSeasonsSettings.ts","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonForm/components/LastModificationCallout/index.tsx","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonForm/components/index.ts","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonForm/index.tsx","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonLots/components/IrrigationWorkersSelect/hooks/useIrrigationWorkers/api/index.ts","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonLots/components/IrrigationWorkersSelect/index.tsx","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonLots/components/IrrigationWorkersSelect/hooks/useIrrigationWorkers/index.ts","features/MainRouter/features/SettingsRouter/features/Season/components/SeasonLots/index.tsx","features/MainRouter/features/SettingsRouter/features/Season/index.tsx","assets/images/calendar.png","features/MainRouter/features/SettingsRouter/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/InformationCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/LotCard/components/AddPerimeter/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/LotCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/consts/select.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/SortSelect/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/components/EmptyResults/api/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/components/Card/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/components/InvitedUserCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/components/EmptyResults/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/components/OrganizationEmptyResults/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/EmptyResultsCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/CropsAndVarietiesCard/components/Chart/components/RenderActiveBorder/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/CropsAndVarietiesCard/components/Chart/components/RenderActiveShape/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/CropsAndVarietiesCard/components/Chart/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/CropsAndVarietiesCard/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/CropsAndVarietiesCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/Card/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/Weather/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/Weather/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/RiceProductionCard/components/DeliverySelect/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/RiceProductionCard/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/RiceProductionCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/DamCard/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/DamCard/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/components/FieldsAndLotsBody/index.tsx","features/MainRouter/features/DasboardRouter/features/Dashboard/components/index.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/utils/sort.ts","features/MainRouter/features/DasboardRouter/features/Dashboard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/GoBackButton/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/EmergenceDateCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/IrrigationMonitorCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/PendingEmergenceDateTooltip/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/TrafficLight/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Timeline/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Timeline/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Timeline/hooks/useBody.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/LastUpdateCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/types/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/PhytosanitaryTable/api/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/PhytosanitaryTable/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/PhytosanitaryTable/hooks/useUpdateRicePhytosanitary.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/FertilizerTable/api/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/FertilizerTable/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/FertilizerTable/hooks/useUpdateRiceFertilizer.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Comment/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/GrainHumidity/components/Chart/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/GrainHumidity/components/NotAvailableText/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/GrainHumidity/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/GrainHumidity/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Yield/components/Body/components/YieldValues/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Yield/components/Body/components/YieldValues/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Yield/components/Body/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Yield/components/Body/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/Yield/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/ProductionTypeAndAbandonedSizeCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/api/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/TargetYield/components/Chart/components/CustomTooltip/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/TargetYield/components/Chart/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/TargetYield/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/SummaryTab/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/LeftCardsContainer/components/StatisticCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/LeftCardsContainer/components/YieldCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/LeftCardsContainer/components/HarvestDateCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/LeftCardsContainer/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/ChartCardsContainer/components/HistoricIrrigationCard/components/CustomTooltip/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/ChartCardsContainer/components/HistoricIrrigationCard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/components/ChartCardsContainer/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/ReportTab/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/components/index.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/index.tsx","features/MainRouter/features/DasboardRouter/features/LotDashboard/hooks/useCreateRiceFertilizer.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/hooks/useCreateRicePhytosanitary.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/hooks/useDeleteRiceFertilizer.ts","features/MainRouter/features/DasboardRouter/features/LotDashboard/hooks/useDeleteRicePhytosanitary.ts","features/MainRouter/features/DasboardRouter/index.tsx","features/MainRouter/features/Map/components/LotsSelect/index.tsx","features/MainRouter/features/Map/components/MapPopup/index.tsx","features/MainRouter/features/Map/components/Toolbar/components/MeasureAreaDropdown/index.tsx","features/MainRouter/features/Map/components/Toolbar/components/RtkDropdown/components/index.ts","features/MainRouter/features/Map/components/Toolbar/components/RtkDropdown/index.tsx","features/MainRouter/features/Map/components/Toolbar/components/index.tsx","features/MainRouter/features/Map/components/Toolbar/index.tsx","features/MainRouter/contexts/MapContext/index.tsx","features/MainRouter/features/Map/components/AreaSource/index.tsx","features/MainRouter/features/Map/components/UnavailableIcon/index.tsx","features/MainRouter/features/Map/hooks/useLots/api/index.ts","features/MainRouter/features/Map/utils/IndicesUtils.ts","features/MainRouter/features/Map/utils/LotUtils.ts","features/MainRouter/features/Map/hooks/useRtkLots/api/index.ts","features/MainRouter/features/Map/hooks/useLotsFeatures.ts","features/MainRouter/features/Map/hooks/useMap.ts","features/MainRouter/features/Map/hooks/useLots/index.ts","features/MainRouter/features/Map/hooks/useRtkLots/index.ts","features/MainRouter/features/Map/hooks/useDrawingTool.ts","features/MainRouter/features/Map/hooks/useLotMapDateInformation.ts","features/MainRouter/features/Map/components/CompareImagesMap/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/DescriptionCard/components/index.ts","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/DescriptionCard/const/boxColors.ts","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/DescriptionCard/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/DescriptionCard/hooks/useDescriptionCard.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/IndexInformationCard/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/components/index.ts","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/RightBar/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/LeftBar/components/Calendar/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/LeftBar/components/index.ts","features/MainRouter/features/Map/components/TopSplitPanels/components/SatelliteInformationSelect/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/SatelliteSelect/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/components/LeftBar/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/TopBars/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/CompareTopBars/components/CompareCalendar/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/components/CompareTopBars/components/index.ts","features/MainRouter/features/Map/components/TopSplitPanels/components/CompareTopBars/index.tsx","features/MainRouter/features/Map/components/TopSplitPanels/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/InformationPopup/components/LotCard/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/InformationPopup/components/PopupCard/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/InformationPopup/components/DamCard/components/index.ts","features/MainRouter/features/Map/components/DefaultMap/components/InformationPopup/components/DamCard/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/InformationPopup/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/Control/index.tsx","features/MainRouter/features/Map/components/DefaultMap/components/Control/hooks/useEditorStyles.ts","features/MainRouter/features/Map/components/DefaultMap/index.tsx","features/MainRouter/features/Map/components/index.tsx","components/fields-selects/SeasonFieldsSelect/index.tsx","features/MainRouter/features/Map/index.tsx","features/MainRouter/features/Map/hooks/useTools.ts","features/MainRouter/features/InternalMetrics/api/index.ts","features/MainRouter/features/InternalMetrics/index.tsx","features/MainRouter/features/Onboarding/components/CreateCompanyCard/components/CreateCompanyForm/index.tsx","features/MainRouter/features/Onboarding/components/CreateCompanyCard/index.tsx","features/MainRouter/features/Onboarding/components/CreateClientCard/components/CreateClientForm/index.tsx","features/MainRouter/features/Onboarding/components/CreateClientCard/index.tsx","features/MainRouter/features/Onboarding/components/index.ts","features/MainRouter/features/Onboarding/index.tsx","features/MainRouter/features/LotsManagement/components/Table/components/DeliveryMillSelect/api/index.ts","features/MainRouter/features/LotsManagement/components/Table/components/DeliveryMillSelect/index.tsx","features/MainRouter/features/LotsManagement/components/Table/components/InputRender/index.tsx","features/MainRouter/features/LotsManagement/components/Table/components/index.ts","features/MainRouter/features/LotsManagement/components/consts/columns.ts","features/MainRouter/features/LotsManagement/components/Table/hooks/useSeasonLots/api/index.ts","features/MainRouter/features/LotsManagement/components/Table/index.tsx","features/MainRouter/features/LotsManagement/components/Table/hooks/useSeasonLots/index.ts","features/MainRouter/features/LotsManagement/components/ColumnsSelect/index.tsx","features/MainRouter/features/LotsManagement/components/ColumnsSelect/hooks/useLotsManagementColumns/index.ts","features/MainRouter/features/LotsManagement/components/ExportButton/api/index.ts","features/MainRouter/features/LotsManagement/components/ExportButton/index.tsx","features/MainRouter/features/LotsManagement/components/index.ts","features/MainRouter/features/LotsManagement/index.tsx","features/MainRouter/index.tsx","features/App.tsx","hooks/useBrowserLogout.ts","reportWebVitals.ts","index.tsx"],"names":["module","exports","Foundation","smallRadius","borderRadius","height","buttonWidth","borderWidth","Typography","titleWeight","Colors","require","Card","background","grey1","mapCardPadding","Input","small","large","borderColor","grey2","disabledBackgroundColor","disabledColor","grey3","Modal","header","padding","vertical","horizontal","bottom","titleFontSize","body","title","lineHeight","fontSize","white","black","primary","primaryGradient","olive","olive2","olive3","olive4","olive5","errorRed","transparent","trafficLightGreen","trafficLightRed","trafficLightField","trafficLightNeutral","trafficLightYellow","grainHumedityBrown","grainHumedityLightBrown","grainHumedityOrange","grainHumedityYellow","grainHumedityLightGreen","grainHumedityGreen","yieldOrange","yieldRed","yieldYellow","yieldLightGreen","yieldGreen","yellow","blue","inputOrange","new","secondary","baseColor","timelineViolet","timelineLightBlue","config","env","process","version","apiUrl","mapboxToken","sentryDsn","isSentinelImageryOn","amplitudeKey","SentryService","Sentry","dsn","integrations","Integrations","BrowserTracing","tracesSampleRate","environment","release","Locales","accountSettingsEnLocales","accountSettingsEsLocales","commonEnLocales","commonEsLocales","commonEsPaLocales","companySettingsEnLocales","companySettingsEsLocales","dashboardEnLocales","dashboardEsLocales","fieldSettingsEnLocales","fieldSettingsEsLocales","loginEnLocales","loginEsLocales","lotDashboardEnLocales","lotDashboardEsLocales","lotDashboardEsPaLocales","lotSettingsEnLocales","lotSettingsEsLocales","mapEnLocales","mapEsLocales","navbarEnLocales","navbarEsLocales","seasonSettingsEnLocales","seasonSettingsEsLocales","settingsEnLocales","settingsEsLocales","internalMetricsEnLocales","internalMetricsEsLocales","onboardingEsLocales","onboardingEnLocales","lotsManagementEsLocales","lotsManagementEnLocales","GraphQLUtils","errorHandler","error","_clientOptions","message","console","log","notification","getI18n","t","ns","convertGeometryCollectionToPolygon","feature","geometry","type","geometries","map","geometriaPolygon","coordinates","properties","MiscUtils","nanoid","async","text","file","doc","DOMParser","parseFromString","geoJson","kml","transformedFeatures","flatMap","features","newGeoJson","featureCollection","forEach","coordinate","length","pop","normalize","replace","fileName","extension","path","extname","VALIDATIONS","MAP","LATITUDE","LONGITUDE","transitionDuration","DEFAULT","CLOSE","ICONS","ENABLED","SATELLITE_STREET","ES","SIZE","URL","TABLE","DATE_FORMATS","STORAGE_KEYS","LANGUAGE","en","es","LANGUAGE_CODES","LOCALE_CODES","EXTERNAL_LINKS","UNITS","FILE_EXTENSIONS","COUNTRIES","flags","ARGENTINA","BRAZIL","COLOMBIA","DOMINICAN_REPUBLIC","PANAMA","PARAGUAY","UNITED_STATES","URUGUAY","BROADCAST_CHANNEL","NAME","LOGOUT","NAVIGATION","formatToUtc","date","dateTimezone","getTimezoneOffset","dayjs","subtract","format","add","DateUtils","toDate","value","hectareToAcres","Number","toFixed","ConversionUtils","lng","celsiusToFahrenheit","area","withDecimals","options","noUnit","kgPerHaToBuPerAc","kgPerHaToQPerHa","split","word","charAt","toUpperCase","slice","toLowerCase","join","size","GeoUtils","bbox","minX","minY","maxX","maxY","polygonArea","polygon","polygonCenter","centroid","Math","round","booleanPointInPolygon","point","pointOnFeature","longitude","latitude","CountryId","DeliveryCondition","FeatureSet","IndicatorStatus","IrrigationWorkersAccessMode","MilestoneUpdateType","OrganizationCrmModuleFlag","OrganizationGeneralModuleFlag","ProductionType","RiceLotStatus","SeasonMillDeliveryType","SentinelHubProvider","UserCompanyRole","UserOrganizationRole","WeatherType","Indicators","OrganizationFeatures","AmplitudeEventsName","Selects","LotUtils","updateType","MANUAL","CompanyUtils","historicalSeason","companiesRoles","filter","companyRole","company","seasons","some","season","seasonStartDate","startDate","selectedHistoricalSeasonStartRangeDate","startRange","selectedHistoricalSeasonEndRangeDate","endRange","isSeasonStartDateSameOrAfter","isSame","isAfter","isSeasonStartDateSameOrBefore","isBefore","NAMESPACES","COMMON","LOGIN","DASHBOARD","LOT_DASHBOARD","ACCOUNT_SETTINGS","FIELD_SETTINGS","SETTINGS","NAVBAR","COMPANY_SETTINGS","LOT_SETTINGS","SEASON_SETTINGS","INTERNAL_METRICS","ONBOARDING","LOTS_MANAGEMENT","I18NService","i18n","use","LanguageDetector","initReactI18next","init","resources","fallbackLng","interpolation","escapeValue","react","useSuspense","services","formatter","resolvedLanguage","_","unitedStatesLocale","spanishLocale","ApolloService","httpLink","createUploadLink","uri","logoutLink","onError","graphQLErrors","location","pathname","href","window","localStorage","removeItem","authLink","setContext","headers","storedToken","getItem","token","JSON","parse","authorization","ApolloClient","cache","InMemoryCache","link","concat","antdTheme","fontFamily","colorPrimary","contentBg","parseInt","colorBgContainer","colorBgContainerDisabled","colorLink","components","Select","controlHeight","colorTextPlaceholder","colorBorder","Button","colorLinkHover","DatePicker","headerBg","theme","colors","foundation","typography","card","input","GlobalStyles","createGlobalStyle","MixinsStyles","css","Context","createContext","userId","undefined","login","Error","logout","authChannel","AuthContext","Provider","useValue","setUserId","useState","id","name","lastName","email","organizationId","organizationName","toString","setAmplitudeUserId","eventProperties","fullName","track","scope","setUser","BroadcastChannel","useAuthContext","useContext","useQueryParams","search","useLocation","useMemo","URLSearchParams","USER","gql","UPDATE_USER","COMMERCIAL_EXECUTIVES","UPDATE_COMPANY","COMPANY_SEASONS","SEASON","UPDATE_SEASON","useCurrentUser","data","loading","useQuery","variables","skip","user","useUser","useCompanySeasons","companyId","onCompleted","useFeatures","organizationFeatureFlags","organizationRole","organization","featureFlags","organizationFeatures","general","crm","subFarmersManagement","allowedOrganizationRolesCompanyCreation","CRM","COMMERCIAL","ADMIN","SUB_FARMERS_MANAGEMENT","usePermissions","activeCompanyId","ActiveCompanyContext","useActiveCompanyContext","isAnOrganizationUser","userOrganizationRole","role","isFeatureSetGrupoDiana","featureSetId","GRUPO_DIANA","activeCompany","find","isCompanyViewerUser","VIEWER","isCompanyAdminUser","isIrrigationWorkerUser","IRRIGATION_WORKER","satelliteImageryFlag","activeCompanyFieldEntityFlag","includes","FIELD_ENTITY","isCommercialNameEnabled","fieldEntityFlag","hasAnOrganizationCompany","isCommercialUser","isOrganizationAdmin","checkIfUserNotAllowedToCreateCompanyOrSeason","Object","entries","roles","enabled","permissions","satelliteImagery","fieldEntity","companyCreation","seasonCreation","useSeason","fromDate","Date","isSatelliteImageryFlagOn","COMPANY_FIELDS","useHasCompanyOrFieldsOrLots","activeSeasonId","loadingCompanySeasons","hasCompanies","loadingSeason","companyFields","loadingCompanyFields","noCompany","noFields","fields","noLots","seasonFields","seasonField","lots","noCompanyOrFieldsOrLots","useLocalStorage","key","initialValue","storedValue","setStoredValue","item","valueToStore","Function","setItem","stringify","LOGIN_WITH_TOKEN","useAuth","resetActiveCompany","navigate","useNavigate","client","useApolloClient","contextLogin","contextLogout","resetStore","userToken","setUserToken","clearUserToken","clearUserLanguage","clearUserData","useCallback","clearStore","handleLogout","postMessage","tokenLoginMutation","tokenLoginLoading","useMutation","loginWithToken","tokenLogin","useIsProdEnv","useCountries","countries","results","SUBREGIONS","useSubregions","regionId","subregions","useUpdateSeason","updateSeason","useTrackEvent","eventName","baseProps","amplitudeTrack","useTrackImpression","useEffect","handleFocus","addEventListener","removeEventListener","useCustomCompareEffect","prevDeps","nextDeps","prevLotDeps","nextLotDeps","isEqual","UPDATE_RICE_LOT","useUpdateRiceLot","updateRiceLot","update","response","seasonLot","riceLot","__typename","preparationDate","burningDate","plantingDate","emergenceDate","firstIrrigationStartDate","firstIrrigationEndDate","differentiationDate","floweringDate","earAppearanceDate","physiologicalMaturityDate","harvestDate","yield","yieldValue","emergenceUpdateType","plantingUpdateType","floweringUpdateType","harvestUpdateType","preparationUpdateType","burningUpdateType","earAppearanceUpdateType","differentiationUpdateType","estimatedYield","modify","identify","UPDATE_LOT","useUpdateLot","updateLot","lot","variety","previousCrop","productionType","abandonedSize","deliveryCondition","deliveryMill","useCompanyMilestones","activeCompanyMilestones","milestonesTimeline","useUpdateTypeStyles","useTheme","getBallBackground","milestoneType","AUTOMATIC_SENTINEL1","HISTORICAL_SEASONS","useHistoricalSeasons","withRefreshPolicy","onChange","selectedHistoricalSeason","fetchPolicy","historicalSeasonData","historicalSeasons","DAMS","useQueryDams","fieldId","includeCalendar","fromYearMonth","toYearMonth","includeMapUrls","dams","MILLION","useFormatNumbersWithScale","useTranslation","formatNumberWithScale","scale","useProductionType","productionTypeMap","CONVENTIONAL","label","ORGANIC","useDeliveryCondition","deliveryConditionMap","DRY","WET","CUSTOM_API_KEY","useImageUrl","getUrlWithToken","baseUrl","setActiveCompany","setActiveSeason","setIsNewCompany","setSelectedSeasonRangeToFilterOrganizationCompanies","setActiveCompanyId","activeCountryId","setactiveCountryId","setActiveSeasonId","isNewCompany","activeCompanyName","setActiveCompanyName","selectedSeasonRangeToFilterOrganizationCompanies","seasonsData","historicalSeasonsData","countryId","language","appLanguage","country","code","changeLanguage","firstHistoricalSeason","filteredCompanies","firstFilteredCompany","userPrevDep","userNextDep","historicalSeasonsDataPrevDep","historicalSeasonsDataNextDep","getActiveSeason","selectedSeason","currentDate","earliestSeasons","orderBy","activeSeason","styled","Row","Loader","indicator","LoadingOutlined","style","color","spin","LoaderContainer","FullScreenLoader","align","justify","MODAL_WIDTH","medium","children","props","width","closable","maskClosable","BaseModal","Description","ButtonsContainer","Space","attrs","ConfirmationModal","description","onConfirm","onCancel","open","centered","footer","onClick","FIELDS","AntSelect","BaseFieldsSelect","memo","defaultId","className","dropdownClassName","popupMatchSelectWidth","defaultField","field","popupClassName","defaultValue","selectedField","Option","FieldsSelect","Avatar","forwardRef","ref","src","profilePicture","icon","UserOutlined","UserAvatar","CROPS","CropsSelect","placeholder","disabled","allowClear","getAll","withAllCropsOption","supportedCropIds","dataLoading","all","allCropsOption","ALL_CROPS","crops","crop","locales","i18next","filteredCrops","selectedCrop","VARIETIES","VarietiesSelect","cropId","withAllVarietiesOption","supportedVarietiesIds","allVarietiesOption","ALL_VARIETIES","allVarietiesOptions","varieties","filteredVarieties","showSearch","filterOption","option","indexOf","selectedVariety","isNoVarietySelected","NO_VARIETY","assign","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","SvgNavbarDashboard","titleId","svgRef","viewBox","fill","xmlns","d","_g","_defs","SvgNavbarSettings","x","y","filterUnits","colorInterpolationFilters","floodOpacity","result","in","values","dy","stdDeviation","mode","in2","SvgNavbarMap","SvgMapPin","SvgTrash","stroke","strokeWidth","strokeLinecap","strokeLinejoin","SvgLogoColoredWithText","fillRule","clipRule","x1","y1","x2","y2","gradientUnits","stopColor","offset","SvgCamera","SvgDrop","SvgChlorophyll","_line","_line2","SvgLeftArrow","SvgCogSettings","SvgLastUpdate","SvgImage","SvgVarieties","SvgArrowClock","SvgGrainHumidity","SvgGrainHumidityIndicator","SvgRain","clipPath","SvgSun","SvgRainDrop","SvgPolygon","SvgCompareImages","SvgHiddenEye","SvgClose","SvgCloudy","SvgRainWeather","SvgLogoKuna","SvgSearch","SvgRice","SvgToolbarTrash","SvgImageFile","SvgCalendar","SvgUpload","SvgRtk","SvgWater","SvgWeeds","SvgInformation","SvgDam","SvgShareArrow","SvgSatellite","SvgEmergence","SvgHarvested","div","DeleteButton","toolTipText","MapPin","MapPinIcon","Title","AntTitle","InputTitle","level","StyledButton","AntButton","ViewerUserTooltip","placement","iconButton","FlexRow","BaseButton","ActionsCol","Col","TrashButton","SettingsButton","List","AntList","ColContainer","$maxWidth","EmptyList","ListCard","headerSubsection","buttonDescription","onEdit","onDelete","renderItem","disabledButton","isAdminUser","disabledTooltipText","maxWidth","locale","emptyText","pagination","pageSizeOptions","defaultPageSize","showSizeChanger","bordered","dataSource","index","Item","wrap","isDisabled","UploadContainer","Image","img","StyledPlusCircleOutlined","PlusCircleOutlined","SmallUploadBox","image","alt","Text","UploadPicture","PictureBoxText","uploadBoxVariants","v1","v2","Upload","isReadOnly","allowCrop","UploadBox","upload","accept","showUploadList","maxCount","beforeUpload","fileList","isLowerThanMaxMB","maxUploadSize","isValidUpload","reader","FileReader","originFileObj","readAsDataURL","FormItem","Form","FormInput","control","prefixIcon","capitalize","restProps","InputComponent","Password","render","restFieldProps","fieldState","fieldError","validateStatus","help","prefix","event","PrivateRoute","to","Header","AntHeader","Layout","MainHeader","items","Content","BaseContent","BaseLayout","AntText","LayoutContainer","SubTitle","SubTitleContainer","showAppHeader","appHeaderItems","headerImage","headerTitle","actionButton","subtitle","span","EllipsisTitle","overlayInnerStyle","translate","ellipsis","tooltip","TextContainer","EllipsisText","showTooltip","ProtectedRoute","SATELLITE_IMAGERY","SeasonSelect","CalendarPanel","TagContainer","TagText","containerStyle","textStyle","Container","GreyCard","AntSpace","IconContainer","StyledPlusCircle","PlusOutlined","Divider","AntDivider","GreyCardWithTitle","onCreate","subTitle","direction","StyledDatePicker","AntDatePicker","inputReadOnly","ProductionTypeSelect","viewMode","StyledInput","AbandonedSizeInput","lotId","commonT","isUsLanguage","suffix","onBlur","abandonedSizeNumber","currentTarget","newAbandonedSize","updateLotDto","Ball","AutomaticBall","SatelliteBall","information","ball","gutter","UpdateTypeInformation","arrow","content","HistoricalSeasonSelect","seasonName","DeliveryConditionSelect","IconText","letter","ContentHeader","CenteredText","LoginTextCta","FormEmailInput","iconStyle","MailOutlined","FormPasswordInput","UnlockOutlined","useFormIconsStyle","FeedbackCard","showLoginText","BackgroundImage","loginCardRiceImage","StyledCard","Overlay","CardContainer","CardContent","CardImage","CardImageTitle","ContentContainer","VERIFY_ACCOUNT","LoginButton","MainText","LoginErrorText","StyledLink","Link","Login","handleSubmit","validationSchema","yup","shape","required","password","min","minLength","useForm","resolver","yupResolver","useLoginForm","useLogin","loadingVerification","accountVerificationText","isAccountVerified","isVerification","emailToValidate","query","get","verifyAccount","errorPolicy","success","useVerifyAccount","isProdEnv","verification","onLogin","credentials","onKeyUp","e","SignupButton","SIGNUP","Signup","defaultValues","useSignupForm","signup","signupResponse","isVerified","clientOptions","isDuplicatedEmail","extensions","exception","constraint","useSignup","createUserDTO","VerifyEmail","REQUEST_PASSWORD_CHANGE","RecoverPasswordButton","ForgotPassword","useForgotPasswordForm","requestPasswordChange","PasswordChangeRequest","CHANGE_PASSWORD","CreateNewPasswordButton","PasswordChange","useChangePasswordForm","changePassword","context","LoginRouter","bodyStyle","element","ModalBase","FormContainer","AntdInput","CompanyForm","onImageChange","onInputNameBlur","isReadyOnly","isCreateCompanyMode","selectedCompanyCountry","flex","CREATE_COMPANY","useCreateCompany","onSuccess","createCompanyMutation","mutationResult","createCompany","companyLanguage","companyName","cachedCompaniesRoles","newCompanyRole","companyDTO","founderId","useCreateCompanyForm","REGIONS","useOrganizationRegions","regionsOptions","regions","region","useCreateOrganizationCompany","watch","subregion","governmentId","commercialExecutiveId","phoneNumber","useCreateOrganizationCompanyForm","isRegionsLoading","allCommercialExecutives","isCommercialExecutivesLoading","commercialExecutives","useCommercialExecutives","selectedCommercialExecutiveId","selectedRegionId","selectedRegion","commercial","isSubregionsLoading","subregionOptions","commercialExecutivesOptions","commercialExecutive","isCommercialExecutiveSelected","CreateCompanyModal","isFirstCompany","setImage","imageFile","setImageFile","imageResult","logo","ClientForm","organizationCountry","selectedSubregionId","isUpdateMode","onInputGovernmentIdBlur","onSelectSubregionBlur","hideLocationInputs","regionOptions","onInputPhoneNumberBlur","countryIsoCode","getLocalizedNumber","onlyNumbers","val","inputStyle","border","CreateClientModal","isoCode","subregionId","COMPANY","ImageContainer","AntImage","ShopOutlined","AntShopOutlined","CompanyCreationFeedbackModal","preview","Indicator","indicatorStatus","indicatorBackground","GOOD","MEDIUM","BAD","CHLOROPHYLL","TooltipText","TooltipTextContainer","AreaTooltip","drawAreaInformation","draggable","AntLayout","Sider","ButtonContainer","ChangePasswordModal","onSubmit","actualPassword","passwordConfirm","oneOf","useUpdatePassword","InputsCol","AccountSettingsModal","updateUser","useUpdateUser","showChangePasswordModal","setShowChangePasswordModal","setValue","updateUserDTO","RoleSelect","localizeRole","allRoles","newRole","COMPANY_WITH_USERS","LEAVE_COMPANY","CHANGE_USER_ROLE","INVITE_USER","RESEND_COMPANY_INVITATION","StyledRoleSelect","Table","AntTable","scroll","CompanyUsersTable","users","invitations","onUserRoleChange","currentUserId","isAnOrganizationCompany","resendCompanyInvitation","inviteLoadingId","updatedId","setUpdatedId","resend","invitationId","useCompanyResendInvitation","mappedUsers","fullname","mappedInvitations","invitation","isDataSourceBiggerThanMaxTableUsers","columns","strong","invitedUser","InviteUserModal","onInvite","is","keys","LeaveCompanyModal","onLeaveCompany","translationType","UpdateClientForm","updateCompany","cachedSubregion","newSubregion","readFragment","fragment","isOrganizationCompany","updateCompanyDTO","StyledRow","DeleteCompanyButton","FarmerInformation","onDeleteCompanyButtonClick","UpdateCompanyForm","reset","UsersSectionTitle","LeaveCompanyButton","DELETE_COMPANY","useCompanySettings","showLeaveCompanyModal","setShowLeaveCompanyModal","showDeleteCompanyModal","setShowDeleteCompanyModal","leaveCompany","leaveCompanyLoading","leaveCompanyResponse","newActiveCompanyId","newActiveCountryId","newActiveCompanyName","inviteUser","inviteUserLoading","changeUserRole","newUserRole","usersRoles","userRole","cachedData","userCompanyRole","irrigationWorkersAccessMode","deleteCompany","isDeleteCompanyLoading","deleteCompanyResponse","useDeleteCompany","changeIrrigationWorkerAccessMode","CompanySettingsModal","showInviteUserModal","setShowInviteUserModal","modalTitle","userSectionTitle","Group","FIELD","ASSIGNED_LOT","inviteUserDTO","FullWidthRow","UserName","ButtonText","UserSettings","onConfigureAccount","rows","SearchInput","AntInput","PopoverSearchInput","OrganizationLogoContainer","AntLink","DescriptionText","OrganizationItem","TextButton","ActionButton","Icon","primaryTextButton","secondaryTextButtonParts","secondaryTextButtonPart","ListItem","LogoContainer","$isActive","EditButton","VirtualizedListItem","onItemActionClick","isAnActiveCompany","CheckOutlined","stopPropagation","isAdmin","StyledSettingOutlined","SettingOutlined","FixedSizeList","_FixedSizeList","CompaniesPopoverContent","onCreateCompany","setIsFirstCompany","onManageLotsButtonPress","mediumHeight","useMedia","maxHeight","useListHeight","setCompaniesRoles","createCompanyTexts","primaryText","secondaryTexts","actionButtons","filterCompanySeasonsByHistoricalSeasonRange","utc","handleSelectedHistoricalSeason","filteredCompaniesRoles","filteredCompaniesRolesBySelectedSeasonRange","showPopoverSearchInput","onSearchChange","inputValue","companies","filterCompanies","paddingBottom","itemCount","itemSize","actionButtonData","Fragment","FlexCol","FlexStartCol","FlexEndCol","NavRow","RowIconContainer","NavLinkRow","NavLink","ReactNavLink","iconStyles","StyledMapIcon","MapIcon","StyledSettingsIcon","SettingsIcon","StyledDashboardIcon","DashboardIcon","Popover","overlayClassName","SideNavbar","showAccountSettingsModal","setShowAccountSettingsModal","showCompanySettingsModal","setShowCompanySettingsModal","showPopover","setShowPopover","showUserTooltip","setShowUserTooltip","editingCompany","setEditingCompany","showCompanyModal","setShowCompanyModal","onMouseEnter","onMouseLeave","trigger","onOpenChange","visible","overflow","marginBottom","state","goTo","CREATE_DAMS","UPDATE_DAMS","DELETE_DAM","useDams","setDams","showDeleteDamModal","setShowDeleteDamModal","selectedDamToDelete","setSelectedDamToDelete","fieldsMap","useMap","selectedDamIndex","onCreateFeature","onUpdateFeature","onSelectionChange","setMode","setSelectedDamIndex","handleDams","handleSelectedDamToDelete","handleShowDeleteModal","createdFeatureId","prevDams","newDams","createdDamIndex","findIndex","dam","featureId","updatedFeature","updatedDamIndex","damToDelete","deleteDam","loadingDeleteDam","deletedLot","evict","gc","useDeleteDam","action","onChangeDamTransition","zoom","flyTo","center","duration","essential","goToDam","featurePoint","points","damCenter","handleDrawButtonClick","handleDamChange","damIndex","handleSelectedDamChange","damGeometry","onCancelDeleteDam","onConfirmDeleteDam","existingDam","splice","handleDeleteDam","handleDamKml","uploadFile","kmlDams","err","DeleteLotConfirmationModal","lotName","fieldName","Control","mapOptions","onUpdate","styles","layout","paint","useEditorStyles","drawControl","useControl","on","actions","trash","MapboxDraw","off","useDeepCompareEffect","set","changeMode","modeOptions","MapSidebar","$width","LeftSidebar","$isEditMode","SearchBoxContainer","FIELDS_SETTINGS","SEASONS_SETTINGS","DELETE_LOT","useDeleteLot","deleteLot","deletedActiveLot","UPDATE_FIELD","useUpdateField","updateField","updateLoading","CREATE_FIELD","Checkbox","AntCheckbox","DamsList","onSelect","disableDelete","isDataSourceBiggerThanMaxTableDams","refs","reduce","accumulator","React","createRef","handleListScroll","current","scrollIntoView","behavior","block","__","checked","onKeyDown","selectCheckBox","autoFocus","rowKey","showHeader","MenuContainer","Menu","UploaderTextContainer","DropdownMenu","onAddDam","handleKml","StyledItem","FieldCard","markerCoordinates","onDrawButtonClick","onSelectedDamChange","onDamChange","onDeleteDam","damsLoading","showAddDamDropdown","setShowAddDamDropdown","createDams","firstDam","cachedDataDams","readQuery","cachedDams","calendar","writeQuery","useCreateDams","updateDams","useUpdateDams","createField","createLoading","cachedFields","cachedCompanyFields","newField","editDescriptionText","createDescriptionText","prevState","dropdownRender","DownOutlined","markerPoint","createDamDTOs","updateDamDTOs","updateDamsArgs","updateFieldDTO","createFieldDTO","createDamsDTOs","coordinatesGeocoder","matches","match","coordinateFeature","lat","place_name","place_type","coord1","coord2","geocodes","push","GeocoderControl","geocoderOptions","containerRef","onResult","MapboxGeocoder","localGeocoder","marker","getMap","appendChild","onAdd","CreationFeedbackCard","BaseMapSidebar","FieldsMap","viewport","setViewport","useParams","setSelectedField","setMarkerCoordinates","isCreateFieldCompleted","setIsCreateFieldCompleted","setFieldName","setFieldId","prevViewport","geocoderContainerRef","useRef","handleChange","onMove","evt","viewState","damFeatures","seasonId","newFieldName","newFieldId","cursor","mapStyle","lngLat","pointInPolygon","accessToken","displayControlsDefault","controls","onDrag","damName","BaseCropsSelect","InputNumber","AntInputNumber","LotsList","selectedLotIndex","isDataSourceBiggerThanMaxTableLots","commercialName","hide","varietyId","disabledCondition","isPlanetEnabled","column","onAddLot","onReuseButtonClick","onAddLotWithoutPerimeter","filteredData","BallColorsTypes","TrafficLightBall","neutral","BALL_COLORS","LOT","NEUTRAL","ALERT","DANGER","isOnClickDisabled","MapImage","lotCoordinates","lineString","NeutralTrafficLight","TrafficLights","hasEmergenceDate","semaphoreIndicator","good","alert","danger","FieldTitle","AntdSpace","LotOrFieldInformation","lotsOrHaQty","onSettingsClick","isHarvestedLot","StyledTable","ELLIPSIS_TEXT_STYLE","fontWeight","reusableLots","selectedRowKeys","onSelectChange","isLoading","dataIndex","reusableLot","rowSelection","onRow","newSelectedRowKeys","onClickRow","seasonIdToOmit","selectedSeasonId","companySeasons","filteredCompanySeasons","EmptyResults","CancelButton","StyledModal","FieldNameContainer","FieldName","REUSE_LOTS","ReuseLotsModal","setSelectedSeasonId","setSelectedRowKeys","lotsV2","useReuseLots","AddLotButton","ConfirmLotsButton","LotsCard","onSelectLot","onChangeLot","onDeleteLot","onConfirmLots","onDrawMode","handleReuseLots","showReuseLotsModal","setShowReuseModal","showAddLotDropdown","setShowAddLotDropdown","lotMap","FieldsSelectContainer","CREATE_LOTS","UPDATE_LOTS","MAP_LOTS","DELETE_KEYS","LotsMap","locationSeasonId","createLots","loadingCreateLots","firstCreatedLot","createLotDTOs","newLots","cachedSeasonFields","cachedSeasonField","newSeasonField","cachedLots","useCreateLots","updateLots","loadingUpdateLots","cacheLotId","useUpdateLots","setField","existingLots","loadingLots","useLots","deleteLotLoading","selectedLotToDelete","setSelectedLotToDelete","showDeleteLotModal","setShowDeleteLotModal","onChangeLotTransition","setLots","initLotsEffectCalled","goToLot","lotCenter","setSelectedLotIndex","lotIndex","prevLots","isSelected","selectedLot","document","createdLotIndex","createdLot","createdLotId","updatedLotIndex","handleCreatedLot","lotFeatures","lotsWithPlanet","lotToDelete","existedLots","baseLot","filterPrevLots","preselectedLot","setSelectedLotList","firstLot","setLotsWithNewLot","showTooltipCoords","setShowTooltipCoords","onClickLot","lotToFind","layer","polygonLot","interactiveLayerIds","hidden","lotGeometry","rtk","templateLotId","updateLotDTOs","kmlLots","centerAndArea","isNumber","reuseLots","lastLotIndex","existingLot","DELETE_FIELD","DELETE_SEASON","CREATE_SEASON","Settings","showDeleteFieldModal","loadingFields","deleteFieldLoading","lotsToDeleteAndSeasonsQty","onAddField","onEditField","onDeleteField","onConfirmDeleteField","onCancelDeleteField","selectedFieldIdToDelete","setSelectedFieldIdToDelete","setShowDeleteFieldModal","deleteField","filteredFields","updateFieldLoading","lotCount","total","useFieldsSettings","selectedSeasonToDelete","showDeleteSeasonModal","loadingSeasons","deleteSeasonLoading","onAddSeason","onEditSeason","onDeleteSeason","onConfirmDeleteSeason","onCancelDeleteSeason","getNewSeasonName","today","currentYear","year","MID_YEAR_MONTH","FIRST_SEMESTER","SECOND_SEMESTER","month","setSelectedSeasonToDelete","setShowDeleteSeasonModal","createSeason","createSeasonLoading","cachedSeasons","newSeason","deleteSeason","filteredSeasons","seasonDTO","useSeasonsSettings","settingsImage","xl","count","Callout","LastModificationCallout","DatePickerCol","ConfirmButton","StyledSelect","seasonNames","SeasonForm","endDate","nullable","when","endDateSchema","test","createError","TextArea","autoSize","minRows","maxRows","updatedAt","updateSeasonDTO","COMPANY_IRRIGATION_WORKERS","ASSIGN_IRRIGATION_WORKER","UNASSIGNED_VALUE","IrrigationWorkersSelect","selectedValue","assignIrrigationWorker","companyIrrigationWorkers","isAssignIrrigationWorkerLoading","isCompanyIrrigationWorkersLoading","useIrrigationWorkers","filteredIrrigationWorkers","irrigationWorker","irrigationWorkerId","updateLotDTO","SeasonLots","selectedFieldId","setSelectedFieldId","selectedSeasonField","selectedFieldLots","Season","SettingsRouter","CenterCol","TrafficLightContainer","MarginRow","StickyRow","InformationCard","isLotDashboard","trafficLights","balls","trafficLight","MarginCol","AddPerimeter","HeaderRow","DaysText","DaysTextContainer","DataRow","ResponsiveCol","LotCard","daysSinceEmergenceDate","irrigationIndicator","chlorophyllIndicator","isHarvested","IRRIGATION","SELECT","CRITICALITY","NAMES","StyledSpan","SortSelect","storedOrderDashboardLotsBy","COMPANY_USER_INVITED","CenteredRow","buttonText","InvitedUserCard","isOrganizationUser","OrganizationEmptyResults","EmptyResultsCard","RenderActiveBorder","cx","cy","innerRadius","outerRadius","startAngle","endAngle","Sector","RenderActiveShape","payload","percent","totalHa","showCropName","display","flexDirection","alignItems","cropName","textAnchor","getMaxSizeIndex","chartDataObject","selectedMaxValue","maxBy","Chart","varietiesData","cropData","showCropChart","activeCropIndex","setActiveCropIndex","activeVarietiesIndex","setActiveVarietiesIndex","getTotalOFHa","chartObject","defaultCropIndex","defaultVarietyIndex","ResponsiveContainer","PieChart","Pie","activeShape","dataKey","activeIndex","_cropData","StyledCol","CropsAndVarietiesCard","ContainerRow","WeatherContainer","$isToday","DayText","TempMaxText","TempMinText","RainProbText","SponsorText","Weather","days","day","precipProb","cloudCover","dateTime","tempMax","tempMin","DeliverySelect","TOTAL","PARTIAL","NO_DELIVERY","ContainerCard","HeaderCard","SubText","RiceProductionCard","estimated","declared","delivered","millDeliveryType","textAlign","onBlurDeliveredInput","productionToMill","Progress","AntProgress","Box","CenteredCol","DamCard","volume","percentage","areaInfo","volumeInfo","strokeColor","trailColor","BodyContainerRow","WeatherCard","ContainerLotCards","ContainerLotCard","FieldsAndLotsBody","declaredRiceProduction","estimatedRiceProduction","showLotCards","setShowLotCards","reduced","timeout","setTimeout","clearTimeout","seasonLots","handleChartData","weather","indicators","waterSurfaceArea","waterSurfaceVolume","waterSurfacePercentage","daysSinceEmergence","active","chlorophyll","irrigation","semaphore","ScrollColumn","LotIndicatorsWeights","compareLots","lotA","lotB","lotAIrrigation","lotAChlorophyl","lotBIrrigation","lotBChlorophyl","SortUtils","lotsToSort","lotsBySemaphore","groupBy","orderedLotsBySemaphore","mapValues","semaphoreLots","sort","Dashboard","setOrderDashboardLotsBy","DASHBOARD_IMPRESSION","getEstimatedRiceProduction","acc","accLot","getDeclaredRiceProduction","headerItems","dashboardImage","sortedLots","LeftArrowIcon","BaseLeftArrowIcon","GoBackButton","EmergenceDateText","BaseVarietiesSelect","EmergenceDateCard","onVarietyChange","$showText","ProgressText","IrrigationMonitorCard","sufficientWaterPercentage","PendingEmergenceDateTooltip","TrafficLight","$completedDate","$backgroundColor","Timeline","previousCropId","riceLotId","updateRiceLotMutation","bodyData","component","completedDate","showMilestone","ballBackground","updateRiceLotDTO","PREPARATION","BURNING","PLANTING","EMERGENCE","START_IRRIGATION","END_IRRIGATION","DIFFERENTIATION","FLOWERING","EAR_APPEARANCE","PHYSIOLOGICAL_MATURITY","HARVEST","useBody","timelineObject","BoldSubTitle","LastUpdateCard","weatherType","lastUpdate","weatherMap","CLEAR","url","clearImage","CIRRUS","cloudImage","PARTIALLY_CLOUDED","PARTIALLY_CLOUDED_WITH_CIRRUS","CLOUDY","DeleteType","UPDATE_RICE_PHITOSANITARY","BaseDatePicker","IngredientsSelect","PhytosanitaryTable","appliedPhytosanitaries","riceIngredients","riceUnits","updateRicePhytosanitary","useUpdateRicePhytosanitary","suffixIcon","updatePhytosanitaryDTO","newName","brand","newBrand","unit","quantity","newQuantity","dropdownStyle","minWidth","riceUnit","unitId","activeIngredients","riceIngredient","newActiveIngredients","activeIngredient","showModal","PHYTOSANITARY","UPDATE_RICE_FERTILIZER","DoseInput","NutrientsSymbols","symbolsOfNutrientsToFilter","NITROGEN","PHOSPHORUS","POTASSIUM","FertilizerTable","appliedFertilizers","riceNutrients","updateRiceFertilizer","useUpdateRiceFertilizer","filteredRiceNutrients","riceNutrient","symbol","findNutrientIdBySymbol","nutrient","handleNutrientChange","newNutrientValue","grades","newGrades","grade","fertilizerGrades","nutrientId","updateFertilizerDTO","newGrade","nutrientsValues","symbolKey","getNutrientSymbolValue","N","newNitrogenValue","P","newPhosphorusValue","K","newPotassiumValue","optionLabelProp","other","filteredNutrients","filteredNutrient","FERTILIZER","AntTextArea","Comment","comment","newComment","setNewComment","useDebounce","commentValue","setActiveIndex","entry","Cell","NotAvailableText","emergenceDaysActivation","StyledSpace","ChartContainer","GrainHumidity","hasAbsoluteHumidity","grainHumidityStatus","levels","low","one","mediumLow","lowEdge","two","highEdge","three","mediumHigh","four","six","five","high","seven","varietyData","chartData","isAvailable","Border","ContainerNumber","UnitNumber","UnitText","YieldValues","valueInTn","valueInKgPerHa","editMode","onValueChange","newValue","Body","estimatedBySubregion","estimatedByLot","real","inTn","kgPerHa","Yield","lotValue","ProductionTypeAndAbandonedSizeCard","onAbandonedSizeChange","ContainerCol","TablesSpace","RowContainer","YieldCardContainer","CREATE_RICE_FERTILIZER","DELETE_RICE_FERTILIZER","RICE_UNITS_NUTRIENTS_AND_INGREDIENTS","CREATE_RICE_PHYTOSANITARY","DELETE_RICE_PHYTOSANITARY","CustomTooltip","yieldName","targetYieldCurveValues","realYieldCurveValues","maxEmergenceDays","max","realYieldCurveDatafiltered","realYieldCurveData","realYieldCurveValue","yieldValueA","yieldValueB","LineChart","margin","top","right","left","CartesianGrid","XAxis","position","domain","ticks","targetYieldCurveValue","interval","YAxis","angle","Tooltip","Legend","strokeDasharray","Line","dot","activeDot","connectNulls","r","TargetYieldCard","Spacer","HeaderContainer","TargetYield","showIndicator","SummaryTab","lotDashboardData","onCreateRiceFertilizer","onHandleDataToDelete","onCreateRicePhytosanitary","riceUnitsNutrientsAndIngredients","AUTOMATIC_CONVERSION","riceActiveIngredients","grainHumidityLastUpdate","grainHumidity","targetYieldCurve","realYieldCurve","createFertilizerDTO","createPhytosanitaryDTO","varietyName","isGrainHumidityAbsolute","StatisticCard","YieldCard","densitySurfaceYield","HarvestDateCard","daysToHarvestFromEmergence","LeftCardsContainer","formatTick","BREAKAGE_RATES","HistoricIrrigationCard","historicalIrrigationValues","BarChart","tickCount","tickFormatter","tick","Bar","ChartCardsContainer","ReportTab","LotDashboard","setAppliedFertilizers","setAppliedPhytosanitaries","deleteAplicationData","setDeleteAplicationData","seasonLoading","createRiceFertilizer","createFertilizerLoading","cachedLot","newAppliedFertilizer","fertilizer","useCreateRiceFertilizer","createRicePhytosanitary","createPhytosanitaryLoading","firstCreatedRicePhytosanitary","newAppliedRicePhytosanitary","phytosanitary","useCreateRicePhytosanitary","deleteRiceFertilizer","deleteRiceFertilizerLoading","deletedRiceFertilizer","useDeleteRiceFertilizer","deleteRicePhytosanitary","deleteRicePhytosanitaryLoading","deletedRicePhytosanitary","useDeleteRicePhytosanitary","lotEmergenceDate","historicalIrrigation","existingRiceFertilizers","times","existingRicePhytosanitaries","tabItems","defaultActiveKey","DashboardRouter","$position","DatesLoader","satelliteImage","MapPopup","MeasureAreaDropdown","selectedItem","onDrawingOptionSelected","isDrawingToolAvailable","selectedKeys","MenuItem","$disabled","ItemContainer","HeaderText","AntUpload","StyledUploadIcon","UploadIcon","RtkDropdown","showRtk","isRtkLoading","toggleShowRtk","lotIdUpdated","setLotIdUpdated","hasRtk","rtkFile","handleRtkKml","ToolbarContainer","Toolbar","onHandleCompareImages","drawingOption","showDrawingToolDropdown","onDrawingToolDropdownVisibleChange","isShowDamsModeSelected","isDamsToolAvailable","selectedMapIndex","selectedCompareMapIndex","setSelectedCalendarDate","setSelectedMapIndex","setSelectedCompareMapIndex","setSelectedCompareCalendarDate","setDates","dates","newDates","setDamDates","damDates","setSelectedDamCalendarDate","selectedSatellite","setSelectedSatellite","selectedCompareSatellite","setSelectedCompareSatellite","isCalendarOpen","setIsCalendarOpen","isCompareCalendarOpen","setIsCompareCalendaropen","MapContext","selectedCalendarDate","selectedCompareCalendarDate","selectedDamCalendarDate","useMapContext","dashArraySequence","AreaSource","lotImageUrl","mapRef","isCloudy","setIsLoading","frame","step","numberOfTimesStepWasRepeated","animateDashArray","getLayer","isTheLastStepRepetition","setPaintProperty","requestAnimationFrame","onHandleImageChange","sourcedata","cancelAnimationFrame","backgroundColor","beforeId","sizeMap","drop","water","weeds","emergence","harvested","camera","cloudy","satellite","UnavailableIcon","unavailableImage","unavailableIndex","conditions","iconSize","iconProps","INDEX_ICON","realImage","STATUS_ICON","status","LOTS","IndicesUtils","mapIndexAvailability","getCalendarDateByProvider","selectedIndicator","mapUrls","calendarDateData","provider","LotsUtils","calendarDates","isAllOptionsSelected","filteredDates","calendarDate","mapIndexInfo","mapIndex","filterCalendarDatesBySelectedProvider","serializedCalendarDates","info","serializeCalendarDates","orderedByDate","uniqBy","newestDateIndex","lotWaterEmergenceDays","lotGrainHumidityEmergenceDays","lotWeedsEmergenceDays","lotEmergenceDays","greaterThan","lessThan","selectedCropId","selectedVarietyId","filteredLotsWithoutVarietyByCopId","RTK_LOTS","IMAGE_NOT_AVAILABLE","indices","selectedLots","setSelectedLots","isCalendarEmpty","setIsCalendarEmpty","isMaxTimeReached","setIsMaxTimeReached","isDisabledSeason","setIsDisabledSeason","setSelectedCropId","setSelectedVarietyId","INDEX_CHANGE","trackSelectedDateChange","SELECTED_DATE_CHANGE","popupInfo","setPopupInfo","fetchLotsTimer","MAP_IMPRESSION","isOnlyOneLotSelected","isLotsLoading","pollInterval","onLotWithoutCalendar","queryLot","queryRiceLot","calendarV3","unionBy","stateLot","_lots","filteredLots","every","rtkLots","selectedLotsRtkList","setRtkLots","rtkData","rtkLot","useRtkLots","queryDam","queryCalendar","stateDam","grainHumidityHasNotEmergenceDaysActivation","emergenceDaysActivationIndices","calendarDatesIndices","weatherDataForAllLots","isGrainHumidityAvailable","setCompareMapData","onHandleCompareSelectedMapIndexChange","isWaterAvailable","isWeedsAvailable","isEmergenceAvailable","damsCalendar","weatherDataForDams","compareCalendarDateIndices","handleCompareSelectedSatelliteChange","availableSatellites","handleSatelliteChange","getCalendarDateIndices","allCalendarDatesIndices","flat","hasWeaterType","mapUrl","calendarDatesMapIndices","lodashForEach","calendarDatesIndicesBySelectedSatellite","allCalendarDates","damsCalendarIndex","waterSurface","availableMapIndex","availableCompareMapIndex","lotCalendarDatesQty","sortCalendarDates","calendarDateA","calendarDateB","selectedDate","dateA","dateB","targetDate","abs","valueOf","getFirstAvailableDate","availableCalendarDates","firstAvailableDate","firstAvailableDateHasUrls","firstLotAvailableDate","selectedDateIsAvailable","firstDamAvailableDate","calendarLot","sameDate","sameProvider","calendarLotMapurlsByIndex","satelliteProvider","calendarDam","compareCalendarDatesWithoutDuplicates","hasCalendarDates","firstCompareCalendarDateAvailable","firstCompareLotAvailableDate","isLandsatSatelliteAvailable","isSentinelSatelliteAvailable","isPlanetSatelliteAvailable","isComparePlanetSatelliteAvailable","isCompareLandsatSatelliteAvailable","planet","sentinel","landsat","comparePlanet","compareSentinel","compareLandsat","compareIndex","newDate","daysSinceEmergencyDate","useLotsFeatures","interactiveMapLayersIds","onHandleSelectedMapIndexChange","isCompareMap","onSelectedDefaultMapIndexChange","onHandleSelectedDateChange","differenceInDaysUntilToday","diff","handleLotsChange","handleVarietyChange","isNoVarietyOption","lotsOptions","handleCropChange","selectedLotId","onCompareImagesMapClick","drawModeMap","draw","delete","useLotMapDateInformation","getLotMapDateInformation","selectedLotDate","lotDateData","isIndexAvailable","isNil","getHarvestDateIsValid","lotsSelectedDate","CompareImagesMap","onMount","compareMap","useReactMapGl","showIcon","getLotMapDateData","initialViewState","isLotHarvested","showUnavailableIcon","lotRtk","multiLineString","NoItem","BoxContainer","BarIndicator","colorsGradient","Square","BoxSquareContainer","BOX_COLORS","levelOne","levelTwo","levelThree","levelFour","levelFive","levelSix","levelSeven","WATER","WEEDS","DescriptionCard","isHistogramNotAvailable","getSelectedIndexColors","cardContent","isAbsoluteHumidity","checkIfHistogramIsNotAvailable","lotCalendar","colorHistogram","areaColorClassification","colorAreaMap","curr","boxBackground","cardData","useDescriptionCard","IndexInformationCard","informationText","SideBar","RightBar","allLotstooltipMap","partyallyCloudedWithCirrusImage","iconProvider","ALL","SENTINEL2","PLANET","LANDSAT89","isEnabledForLots","isEnabledForDams","isEnabled","isInformationEnabled","overflowY","borderBottom","Calendar","findDateInCalendar","calendarValue","disabledDate","isDateInCalendar","showToday","panelRender","originalPanel","cellRender","originNode","getDateStyleAndInfo","SatelliteInformationSelect","Logo","EmergenceIcon","WaterIcon","showIndex","isNotAvailable","WeedsIcon","DropIcon","ChlorophyllIcon","GrainHumidityIndicatorIcon","tooltipText","CameraIcon","listHeight","overlayStyle","$isCompareMapMode","CompareSelect","SatelliteSelect","isCompareMapMode","isLandsatAvailable","isPlanetAvailable","isSentinelAvailable","isOpen","handleOpen","satelliteSelectText","satelliteSelectTextAbbreviation","isVisible","LeftBar","onHandleMapIndexChange","onHandleCalendarDateChange","onHandleSatelliteChange","TopBars","CompareCalendar","CompareCalendarContainer","CompareTopBars","onHandleCompareMapIndexChange","onHandleCompareCalendarDateChange","onHandleCompareSatelliteChange","TopSplitPanels","isCompareModeSelected","STATUS_MESSAGES","tag","justifyContent","statusKey","CloseIcon","BaseCloseIcon","PopupCard","onClose","InformationPopup","onDeleteFeature","selectionFeatures","deleteAll","DefaultMap","onHandleMove","onHandleClick","onHandleMouseLeave","onHandleMouseEnter","drawMode","onHandleCreateFeature","onHandleUpdateFeature","onHandleDeleteFeature","drawnAreasFeatures","drawnAreas","toolMode","showPopup","popupCoordinates","getDamMapDateData","selectedDamDate","isImageAvailable","imageUrl","zIndex","drawnArea","SeasonFieldsSelect","LotsSelect","MapContainer","MainContainer","SELECT_NEW_UI_CLASSNAME","Map","setCursor","setShowRtk","setToolMode","useTools","defaultFieldId","toInt","defaultLotId","lotTransitionTimer","locationsCoordinates","lotsCenter","prevDates","onDeleteAllFeatures","showDropdown","toggleDropdownVisibility","setDrawnAreas","_setDrawingOption","drawingOptionRef","setDrawingOption","newState","prevDrawnAreas","drawArea","newAreas","updatedAreaIndex","newArea","prevDrawnArea","onDraw","onReset","drawingActionMap","prevMode","useDrawingTool","setPopupCoordinates","setShowPopup","setDamPopupInfo","damCalendarDate","damToFind","bboxLot","resource","getLotPopupInformation","calendarDateInfo","onDefaultMapClick","lotPopupInformation","compareMapRef","remove","isNaN","show","MapboxCompare","LOT_HISTORIC_DATA","AntContent","InternalMetrics","filename","setFilename","getHistoricData","useLazyQuery","yieldUnit","fromTime","toTime","form","lotHistoricData","CreateCompanyForm","FormItemContainer","CreateCompanyCard","CreateClientForm","CreateClientCard","Onboarding","DELIVERY_MILLS","DeliveryMillSelect","mills","InputRender","COLUMNS","SEASON_LOTS","selectedColumns","onFilterLots","isFieldEntityFlagEnabled","filteredLotIds","setFilterLotIds","filteredFieldIds","setFilteredFieldIds","filteredCompanyIds","setFilteredCompanyIds","allcompanyValues","allFieldValues","allLotValues","allCompaniesFilters","allFieldsFilters","allLotsFilters","deliveryMillId","useSeasonLots","fieldFiltersList","lotFilterList","filteredLotsByCompanies","filteredLotsByFields","defaultColumns","fixed","filters","onFilter","record","sorter","compare","a","b","localeCompare","multiple","filteredValue","inputRender","newEstimatedYield","newYield","mill","selectableColumn","___","tableCurrentDataSource","lotsIds","currentDataSource","filteredLot","companiesFilter","fieldsFilter","lotsFilter","lotsTableFilter","fieldsTableFilter","companiesTableFilter","selectedFieldFilters","fieldItem","companiesFields","selectedLotFilters","lotItem","lotCompanies","selectedCompanies","uniq","lotFields","selectedFields","difference","ColumnsSelect","isAnAdminUser","filteredColumns","order","useLotsManagementColumns","toLocaleLowerCase","maxTagCount","SEASON_LOTS_EXPORT","ExportButton","lotIds","getSeasonLotsData","seasonLotsExport","VIEWER_COLUMNS","ADMIN_COLUMNS","ORGANIZATION_DEFAULT_COLUMNS","LotsManagement","setSelectedColumns","setFilteredLotIds","setSelectedHistoricalSeason","md","lg","MainRouter","mapContextValue","APP_OPENING","useUpdateEffect","apolloClient","minIdLength","Router","activeCompanyContextValue","loadingApp","setLoadingApp","loadingUser","authChannelHandler","close","useBrowserLogout","App","authContextValue","ApolloProvider","reportWebVitals","onPerfEntry","then","getCLS","getFID","getFCP","getLCP","getTTFB","extend","container","getElementById","createRoot"],"mappings":"6FAQAA,EAAOC,QAAU,CAAEC,WARA,CACjBC,YAAa,MACbC,aAAc,OACdC,OAAQ,OACRC,YAAa,QACbC,YAAa,S,oi7CCDfP,EAAOC,QAAU,CAAEO,WAJA,CACjBC,YAAa,S,oBCAf,MAAM,OAAEC,GAAWC,EAAQ,IAErBC,EAAO,CACXC,WAAYH,EAAOI,MACnBC,eAAgB,QAGlBf,EAAOC,QAAU,CAAEW,S,oBCPnB,MAAM,OAAEF,GAAWC,EAAQ,IAErBK,EAAQ,CACZX,OAAQ,CACNY,MAAO,OACPC,MAAO,QAETC,YAAaT,EAAOU,MACpBC,wBAAyBX,EAAOU,MAChCE,cAAeZ,EAAOa,OAGxBvB,EAAOC,QAAU,CAAEe,U,kBCQnBhB,EAAOC,QAAU,CAAEuB,MArBL,CACZC,OAAQ,CACNC,QAAS,CACPC,SAAU,OACVC,WAAY,OACZC,OAAQ,QAEVC,cAAe,IAEjBC,KAAM,CACJL,QAAS,CACPC,SAAU,OACVC,WAAY,SAGhBI,MAAO,CACLC,WAAY,OACZC,SAAU,W,iBC6DdlC,EAAOC,QAAU,CAAES,OA9EJ,CACbyB,MAAO,QACPC,MAAO,QACPC,QAAS,UACTC,gBAAiB,oDACjBC,MAAO,UACPC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACRC,OAAQ,UACR7B,MAAO,UACPM,MAAO,UACPG,MAAO,UACPqB,SAAU,UACVC,YAAa,cACbC,kBAAmB,UACnBC,gBAAiB,UACjBC,kBAAmB,UACnBC,oBAAqB,UACrBC,mBAAoB,UACpBC,mBAAoB,UACpBC,wBAAyB,UACzBC,oBAAqB,UACrBC,oBAAqB,UACrBC,wBAAyB,UACzBC,mBAAoB,UACpBC,YAAa,UACbC,SAAU,UACVC,YAAa,UACbC,gBAAiB,UACjBC,WAAY,UACZC,OAAQ,UACRC,KAAM,UACNC,YAAa,UACbC,IAAK,CACH5B,QAAS,CACP,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAEP6B,UAAW,CACT,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAEPC,UAAW,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAEPrB,kBAAmB,UACnBC,gBAAiB,UACjBG,mBAAoB,UACpBkB,eAAgB,UAChBC,kBAAmB,c,+JC1EvB,MAEaC,EAAS,CACpBC,IAHcC,aAIdC,QAASD,SACTE,OAAQF,+BACRG,YAAaH,mGACbI,UAAWJ,6EACXK,qBAAqBL,EACrBM,aAAcN,oCCMHO,EAVA,KACXC,IAAY,CACVC,IAAKX,EAAOM,UACZM,aAAc,CAAC,IAAIC,IAAaC,gBAChCC,iBAAkB,EAClBC,YAAahB,EAAOC,IACpBgB,QAAU,OAAMjB,EAAOG,a,uECsBpB,MAAMe,EAAU,CACrBC,yB,OACAC,yB,OACAC,gB,OACAC,gB,OACAC,kB,OACAC,yB,OACAC,yB,OACAC,mB,OACAC,mB,OACAC,uB,OACAC,uB,OACAC,e,OACAC,e,OACAC,sB,OACAC,sB,OACAC,wB,OACAC,qB,OACAC,qB,OACAC,a,OACAC,a,OACAC,gB,OACAC,gB,OACAC,wB,OACAC,wB,OACAC,kB,OACAC,kB,OACAC,yB,OACAC,yB,OACAC,oB,OACAC,oB,OACAC,wB,OACAC,wB,+BC7CF,MAYaC,EAAe,CAC1BC,aAbmB,CACnBC,EACAC,EACAC,KAEAC,QAAQC,IAAIJ,GACZ3C,IAAwB2C,GACxBK,IAAaL,MAAM,CACjBE,QAAO,OAAEA,QAAF,IAAEA,IAAWI,cAAUC,EAAE,gCAAiC,CAAEC,GAAI,e,iECtB3E,MAIMC,EAAsCC,IAC1C,GAA8B,uBAA1BA,EAAQC,SAASC,KAA+B,CAMlD,OAL0BF,EAAQC,SAASE,WAAWC,KAAIC,IAAgB,CACxEH,KAAMG,EAAiBH,KACvBI,YAAa,IAAID,EAAiBC,iBAGXF,KAAIH,IAAQ,CACnCC,KAAM,UACND,WACAM,WAAY,OAIhB,MAAO,CAACP,IAsCGQ,EAtDM,IAAMC,YAFJ,GAwDRD,EAnCYE,UACvB,MAAMC,QAAaC,EAAKD,OAElBE,GADS,IAAIC,WACAC,gBAAgBJ,EAAM,YAMnCK,EAAUC,cAAIJ,GAEdK,EAAsBC,kBAC1BH,EAAQI,SACRrB,GAGIsB,EAAaC,YAAkBJ,GAWrC,OARAG,EAAWD,SAASG,SAAQvB,GAC1BA,EAAQC,SAASK,YAAY,GAAGiB,SAAQC,IAEZ,IAAtBA,EAAWC,QACbD,EAAWE,WAIVL,GAQIb,EALUG,GAAiBA,EAAKgB,UAAU,OAAOC,QAAQ,mBAAoB,IAK7EpB,EAHc,CAACqB,EAAkBC,IAC5CC,IAAKC,QAAQH,KAAcC,EC5DhBG,EACU,ECDVC,EACK,CAAEC,UAAW,QAASC,WAAY,SADvCF,EAES,CAAEG,mBAAoB,KAF/BH,EAGL,CACJI,QAAS,EACTC,MAAO,GACPC,MAAO,CACLC,QAAS,KACTF,MAAO,KARAL,EAWH,CACNQ,iBAAkB,8DAZTR,EAiBA,CACTS,GAAI,MAlBKT,EAoBI,CACbU,KAAM,UACNC,IAAK,yECtBIC,EACK,ECDLC,EACG,cADHA,EAEL,aAFKA,EAGU,aAHVA,EAIN,SAJMA,EAKK,QALLA,EAMC,UANDA,EAOA,aCPAC,EACC,QADDA,EAEc,uBAFdA,EAGI,aCQJC,EAAyB,CACpCC,GAAI,KACJC,GAAI,KACJ,QAAS,MAGEC,GACP,KADOA,GAEP,KAGOC,GACJ,QCvBIC,GACAnH,kCADAmH,GAEM,iCCFNC,GACI,KCDJC,GACN,OCDQ,QCAA,OAA0B,4CCA1B,wzGCAA,48CCAA,o/CCAA,g0ECAA,woNCAA,4wDCYf,MAaaC,GAAY,CACvBC,MAZE,CACFC,UCfa,i8CDgBbC,OEhBa,6hDFiBbC,SGjBa,i6CHkBbC,mBIlBa,6gDJmBbC,OKnBa,y5CLoBbC,SMpBa,i+CNqBbC,cOrBa,i6DPsBbC,QQtBa,m0DCAFC,GACL,CACJC,KAAM,OACNC,OAAQ,UCHCC,IACD,ECGNC,GAAeC,IACnB,MAAMC,EAAeD,EAAKE,oBAC1B,OAAID,EAAe,EACVE,IAAMH,GAAMI,SAASH,EAAc,UAAUI,OAAO9B,GAEtD4B,IAAMH,GAAMM,IAAIL,EAAc,UAAUI,OAAO9B,IAkB3CgC,GACXR,GADWQ,GAVMP,IACjB,GAAKA,EACL,OAAOG,IAAMJ,GAAYI,IAAMH,GAAMQ,WAAWA,UAQrCD,GALQE,GACdA,EACEN,IAAMM,GAAOJ,OAAO9B,GADR,KCTfmC,GAAkBD,GACjBA,EACEE,QAAgB,OAARF,GAAgBG,WADZ,EAiDRC,GA3DQ,CAACJ,EAAeK,IAC3BA,IACDlC,GALoB6B,IAAmB,IAAW,IAARA,EAAc,IAAIG,gBAMxDG,CAAoBN,GAEnB,GAAEA,EAAMG,gBAsDTC,GAxCM,CAACJ,EAAgDK,IAC1DA,IACDlC,GACK,GAAE8B,GAAeD,EAAMO,WAEvB,GAAEP,EAAMO,KAAKJ,QAAQH,EAAMQ,mBAmC5BJ,GAvBgB,CAACJ,EAAeS,EAA8C,MACzF,MAAM,IAAEJ,EAAF,OAAOK,GAAWD,EACxB,OAAQJ,GACN,KAAKlC,GACH,MARmB,EAAC6B,EAAeU,IACtC,IAAGV,EAAQ,cAAcG,aAAaO,EAAS,GAAK,UAO1CC,CAAiBX,EAAOU,GACjC,KAAKtC,GACH,MAdkB,EAAC4B,EAAeU,IAC9B,IAAGV,EAAQ,KAAKG,aAAaO,EAAS,GAAK,SAaxCE,CAAgBZ,EAAOU,GAChC,QACE,MAAQ,GAAEV,EAAMG,aAAaO,EAAS,GAAK,YAepCN,GAXYJ,GAAkBA,EAAMrD,QAAQ,UAAW,IAWvDyD,GATWJ,GACCA,EAAMa,MAAM,KACK1F,KACtC2F,GAAQA,EAAKC,OAAO,GAAGC,cAAgBF,EAAKG,MAAM,GAAGC,gBAG/BC,KAAK,KAGlBf,GAMXH,GANWG,GA9CWJ,GACjBA,EACEE,QAAQF,EAAQ,QAAQG,WADZ,E,4CCbrB,MAwBMiB,GAAQpG,GAxBiC,KAyBtCuF,aAAKvF,GAiCDqG,GAnDOC,IAClB,MAAMC,EAAOrB,OAAOoB,EAAK,IACnBE,EAAOtB,OAAOoB,EAAK,IACnBG,EAAOvB,OAAOoB,EAAK,IACnBI,EAAOxB,OAAOoB,EAAK,IAEzB,MAAO,CACL,CAACC,EAAMG,GACP,CAACD,EAAMC,GACP,CAACD,EAAMD,GACP,CAACD,EAAMC,KAyCEH,GA3BoBhG,IAC/B,MAAMsG,EAAcC,YAAQvG,GAI5B,MAAO,CAAEwG,cAHaC,aAASH,GAGPpB,KAFRwB,KAAKC,MAAMZ,GAAKO,MAwBrBN,GAhBehG,IAC1B,MAAMsG,EAAcC,YAAQvG,GACtBwG,EAAgBC,aAASH,GAI/B,IAFiBM,aAAsBJ,EAAeF,GAEvC,CACb,MAAMO,EAAQC,aAAeR,IACtBS,EAAWC,GAAYH,EAAMlH,SAASK,YAC7C,MAAO,CAAEgH,WAAUD,aAGrB,MAAOA,EAAWC,GAAYR,EAAc7G,SAASK,YACrD,MAAO,CAAEgH,WAAUD,cCpDd,IAAKE,GAWAC,GAKAC,GAIAC,GAMAC,GAKAC,GAMAC,GAKAC,GAKAC,GAKAC,GAiBAC,GAMAC,GASAC,GAMAC,GAMAC,GCzFAC,GChBAC,GCAAC,GCAAC,I,SJSAlB,K,sBAAAA,E,gBAAAA,E,oBAAAA,E,wCAAAA,E,gBAAAA,E,oBAAAA,E,8BAAAA,E,mBAAAA,Q,cAWAC,K,UAAAA,E,WAAAA,Q,cAKAC,K,2BAAAA,Q,cAIAC,K,UAAAA,E,YAAAA,E,iBAAAA,Q,cAMAC,K,4BAAAA,E,eAAAA,Q,cAKAC,K,4CAAAA,E,0CAAAA,E,iBAAAA,Q,cAMAC,K,4CAAAA,E,uCAAAA,Q,cAKAC,K,4BAAAA,E,uCAAAA,Q,cAKAC,K,4BAAAA,E,mBAAAA,Q,cAKAC,K,kBAAAA,E,kCAAAA,E,gCAAAA,E,sBAAAA,E,gCAAAA,E,sBAAAA,E,kBAAAA,E,8BAAAA,E,gDAAAA,E,oBAAAA,E,0BAAAA,E,wCAAAA,E,oCAAAA,E,iDAAAA,Q,cAiBAC,K,0BAAAA,E,kBAAAA,E,eAAAA,Q,cAMAC,K,sBAAAA,E,kDAAAA,E,gBAAAA,E,sBAAAA,E,sBAAAA,E,mDAAAA,Q,cASAC,K,cAAAA,E,sCAAAA,E,iBAAAA,Q,cAMAC,K,cAAAA,E,wBAAAA,E,aAAAA,Q,cAMAC,K,gBAAAA,E,cAAAA,E,gBAAAA,E,sCAAAA,E,+DAAAA,Q,cCzFAC,K,wBAAAA,E,2BAAAA,Q,cChBAC,K,UAAAA,E,+CAAAA,Q,cCAAC,K,cAAAA,E,4CAAAA,E,4BAAAA,E,4CAAAA,E,iCAAAA,E,2BAAAA,Q,cCAAC,K,wBAAAA,E,8BAAAA,E,uBAAAA,Q,KCEZ,MAGaC,GAHoBC,GAC/BA,IAAef,GAAoBgB,OCyBxBC,GAvBuC,CAClDC,EACAC,IAEA,OAAOA,QAAP,IAAOA,OAAP,EAAOA,EAAgBC,QAAOC,IAAgB,IAAD,EAC3C,iBAAOA,EAAYC,QAAQC,eAA3B,aAAO,EAA6BC,MAAKC,IACvC,MAAMC,EAAkB3E,IAAM0E,EAAOE,WAC/BC,EAAyC7E,IAAMmE,EAAiBW,YAChEC,EAAuC/E,IAAMmE,EAAiBa,UAE9DC,EACJN,EAAgBO,OAAOL,IACvBF,EAAgBQ,QAAQN,GAEpBO,EACJT,EAAgBO,OAAOH,IACvBJ,EAAgBU,SAASN,GAE3B,OAAOE,GAAgCG,QCJvCE,GAAa,CACjBC,OAAQ,SACRC,MAAO,QACPC,UAAW,YACXC,cAAe,gBACfC,iBAAkB,mBAClBC,eAAgB,iBAChBC,SAAU,WACVC,OAAQ,SACRC,iBAAkB,mBAClBC,aAAc,eACdC,gBAAiB,kBACjB1I,IAAK,MACL2I,iBAAkB,mBAClBC,WAAY,aACZC,gBAAiB,mBA+ENC,GA5EA,KAAO,IAAD,MACjBC,IACGC,IAAIC,KACJD,IAAIE,KACJC,KAAK,CACJC,UAAW,CACT,CAAClI,IAAoB,CACnB,CAAC6G,GAAWC,QAAS/M,EAAQI,gBAC7B,CAAC0M,GAAWE,OAAQhN,EAAQa,eAC5B,CAACiM,GAAWG,WAAYjN,EAAQS,mBAChC,CAACqM,GAAWI,eAAgBlN,EAAQe,sBACpC,CAAC+L,GAAWK,kBAAmBnN,EAAQE,yBACvC,CAAC4M,GAAWM,gBAAiBpN,EAAQW,uBACrC,CAACmM,GAAWO,UAAWrN,EAAQ0B,kBAC/B,CAACoL,GAAWQ,QAAStN,EAAQsB,gBAC7B,CAACwL,GAAWS,kBAAmBvN,EAAQO,yBACvC,CAACuM,GAAWU,cAAexN,EAAQkB,qBACnC,CAAC4L,GAAWW,iBAAkBzN,EAAQwB,wBACtC,CAACsL,GAAW/H,KAAM/E,EAAQoB,aAC1B,CAAC0L,GAAWY,kBAAmB1N,EAAQ4B,yBACvC,CAACkL,GAAWa,YAAa3N,EAAQ6B,oBACjC,CAACiL,GAAWc,iBAAkB5N,EAAQ+B,yBAExC,CAACkE,IAAoB,CACnB,CAAC6G,GAAWC,QAAS/M,EAAQG,gBAC7B,CAAC2M,GAAWE,OAAQhN,EAAQY,eAC5B,CAACkM,GAAWG,WAAYjN,EAAQQ,mBAChC,CAACsM,GAAWI,eAAgBlN,EAAQc,sBACpC,CAACgM,GAAWK,kBAAmBnN,EAAQC,yBACvC,CAAC6M,GAAWM,gBAAiBpN,EAAQU,uBACrC,CAACoM,GAAWO,UAAWrN,EAAQyB,kBAC/B,CAACqL,GAAWQ,QAAStN,EAAQqB,gBAC7B,CAACyL,GAAWS,kBAAmBvN,EAAQM,yBACvC,CAACwM,GAAWU,cAAexN,EAAQiB,qBACnC,CAAC6L,GAAWW,iBAAkBzN,EAAQuB,wBACtC,CAACuL,GAAW/H,KAAM/E,EAAQmB,aAC1B,CAAC2L,GAAWY,kBAAmB1N,EAAQ2B,yBACvC,CAACmL,GAAWa,YAAa3N,EAAQ8B,oBACjC,CAACgL,GAAWc,iBAAkB5N,EAAQgC,yBAExC,CAACkE,IAAqB,CACpB,CAAC4G,GAAWC,QAAS/M,EAAQK,kBAC7B,CAACyM,GAAWI,eAAgBlN,EAAQgB,0BAGxCoN,YAAanI,GACboI,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,aAAa,KAInB,UAAAV,IAAKW,SAASC,iBAAd,SAAyB/G,IAAI,QAAQG,GAC5BI,GAA2BJ,EAAOgG,IAAKa,oBAEhD,UAAAb,IAAKW,SAASC,iBAAd,SAAyB/G,IAAI,UAAUG,GAC9BI,GAA6BJ,EAAOgG,IAAKa,oBAElD,UAAAb,IAAKW,SAASC,iBAAd,SAAyB/G,IAAI,kBAAkB,CAACG,EAAO8G,EAAGrG,IACjDL,GAAqCJ,EAAO,CACjDK,IAAK2F,IAAKa,iBACVnG,OAAQD,EAAQC,YAaTqF,GARS,IAChBpL,cAAUkM,mBAAqB1I,GAC1B4I,IAGFC,I,mECrGT,MAkCaC,GAlCa,KACxB,MAEMC,EAAWC,KAAiB,CAAEC,IAAKpQ,EAAOI,SAE1CiQ,EAAaC,cAAQ,EAAGC,oBAJC,kBAMZ,OAAbA,QAAa,IAAbA,OAAA,EAAAA,EAAgB,GAAGhN,UAA4D,WAAtBiN,SAASC,WACpED,SAASE,KAAO,IAChBC,OAAOC,aAAaC,WAAW9J,OAI7B+J,EAAWC,cAAW,CAACjB,GAAKkB,cAChC,MAAMC,EAAcL,aAAaM,QAAQ,SAEnCC,EAAQF,GAAeG,KAAKC,MAAMJ,GACxC,MAAO,CACLD,QAAS,CACPM,cAAeL,EAAe,UAASE,IAAU,MAC9CH,OAWT,OANqB,IAAIO,KAAa,CACpCnB,IAAKpQ,EAAOI,OACZoR,MAAO,IAAIC,KACXC,KAAMrB,EAAWsB,OAAOb,GAAUa,OAAOzB,M,mJC9B7C,MAUa0B,GAAyB,CACpCT,MAXiB,CACjBU,WAAY,QACZC,aAAc1V,UAAO2B,QACrBgU,UAAW3V,UAAO2B,QAClBjC,aAAckW,mBAASpW,cAAWE,cAClCmW,iBAAkB7V,UAAOI,MACzB0V,yBAA0B9V,UAAOU,MACjCqV,UAAW/V,UAAO2B,SAKlBqU,WAAY,CACVC,OAAQ,CACNJ,iBAAkB7V,UAAOyB,MACzByU,cAAeN,mBAASpW,cAAWG,QACnCwW,qBAAsBnW,UAAOa,OAE/BP,MAAO,CACLuV,iBAAkB7V,UAAOyB,MACzByU,cAAeN,mBAASpW,cAAWG,QACnCyW,YAAapW,UAAOU,MACpByV,qBAAsBnW,UAAOa,OAE/BwV,OAAQ,CACNH,cAAeN,mBAASpW,cAAWG,QACnCoW,UAAW/V,UAAO2B,QAClB2U,eAAgBtW,UAAO2B,SAEzB4U,WAAY,CACVL,cAAeN,mBAASpW,cAAWG,QACnCkW,iBAAkB7V,UAAOyB,MACzB0U,qBAAsBnW,UAAOa,OAE/BC,MAAO,CACL6U,UAAW3V,UAAOI,MAClBoW,SAAUxW,UAAOI,MACjBgB,cAAeN,SAAMC,OAAOK,iBClCrBqV,GAAsB,CACjCC,OAAQ1W,UACR2W,WAAYnX,cACZoX,WAAY9W,cACZ+W,KAAM3W,QACN4W,MAAOxW,UCbIyW,GAAeC,IAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAwEvB,EAAGP,WAAa,aAAYA,EAAMC,OAAOhW;;;;;;;;;;;;;;;;;;;;wBAoBxC,EAAG+V,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;qBAC7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;wBAG7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;;wBAO1C,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;;;;;;qBAW7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;;;;;;;;;;cAavC,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBA6BhC,EAAGgT,WAAYA,EAAMC,OAAOjV;;;;wBAI5B,EAAGgV,WAAYA,EAAMC,OAAOhW;;;;;;sBAM9B,EAAG+V,WAAYA,EAAMC,OAAOpT;;;sBAG5B,EAAGmT,WAAYA,EAAMC,OAAOpT;;;;EClKrC2T,GAPMC,IAAI;;;;;ECoBjBC,GAAUC,yBAA+B,CAC7CC,YAAQC,EACRC,MAAO,KACL,MAAM,IAAIC,MACR,gHAGJC,OAAQ,KACN,MAAM,IAAID,MACR,iHAGJE,iBAAaJ,IAwCFK,GAAc,CACzBC,SAAUT,GAAQS,SAClBC,SAvCe,KACf,MAAOR,EAAQS,GAAaC,sBA6B5B,MAAO,CAAEV,SAAQE,MAzBH,EAAGS,KAAIC,OAAMC,WAAUC,QAAOC,iBAAgBC,uBAC1DP,EAAUE,GACV1T,IAAe,CAAE0T,GAAIA,EAAGM,aACxBC,aAAmBP,EAAGM,YAEtB,MAAME,EAAkBJ,EACpB,CACED,QACAM,SAAW,GAAER,KAAQC,IACrBG,mBACAD,kBAEF,CACED,QACAM,SAAW,GAAER,KAAQC,KAG3BQ,aAAMvI,GAAoB2B,MAAO0G,IAQXf,OALkB,KACxCK,OAAUR,GACVhT,KAAsBqU,GAASA,EAAMC,QAAQ,SAGflB,YA3BZ,IAAImB,iBAAiB/M,GAAuBC,QAqChE+M,eAPqB,IACdC,sBAAW5B,K,yBCpEb,MAAM6B,GAAiB,KAC5B,MAAM,OAAEC,GAAWC,eAEnB,OAAOC,oBAAQ,IAAM,IAAIC,gBAAgBH,IAAS,CAACA,K,wBCK9C,MAAMI,GAAOC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoFXC,GAAcD,IAAI;;;;;;;;;;;EAelBE,GAAwBF,IAAI;;;;;;;;;;;;;;EC1G5BG,GAAiBH,IAAI;;;;;;;;;;;;;;ECMrBI,GAAkBJ,IAAI;;;;;;;;;;;;;;;;;;;EA+BtBK,GAASL,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8FbM,GAAgBN,IAAI;;;;;;;;;;;;;;;EClIpBO,GAAiB,KAC5B,MAAM,OAAExC,GAAWM,GAAYmB,kBAEzB,KAAEgB,EAAF,QAAQC,GAAYC,aAA8BX,GAAM,CAC5DY,UAAW,CAAEjC,GAAIX,GACjB6C,MAAO7C,IAGT,MAAO,CAAE8C,KAAI,OAAEL,QAAF,IAAEA,OAAF,EAAEA,EAAMK,KAAMJ,YCPhBK,GAAU,KACrB,MAAM,KAAED,GAASN,KACjB,OAAOM,GCJIE,GAAoB,CAC/BC,EACAC,IAEOP,aAAkDN,GAAiB,CACxEO,UAAW,CAAEK,UAAWA,GACxBJ,MAAOI,EACPC,gBCTSC,GAAc,KAAO,IAAD,IAC/B,MAAML,EAAOC,KAEPK,EAAwB,OAAGN,QAAH,IAAGA,GAAH,UAAGA,EAAMO,wBAAT,iBAAG,EAAwBC,oBAA3B,aAAG,EAAsCC,aAEvE,MAAO,CACLC,qBAAsB,CACpBC,QAAO,OAAEL,QAAF,IAAEA,OAAF,EAAEA,EAA0BK,QACnCC,IAAG,OAAEN,QAAF,IAAEA,OAAF,EAAEA,EAA0BM,IAC/BC,qBAAoB,OAAEP,QAAF,IAAEA,OAAF,EAAEA,EAA0BO,wBCChDC,GAA0C,CAC9C,CAAC/K,GAAqBgL,KAAM,CAACnL,GAAqBoL,WAAYpL,GAAqBqL,OACnF,CAAClL,GAAqBmL,wBAAyB,CAACtL,GAAqBqL,QAG1DE,GAAiB,KAAO,IAAD,wBAGlC,MAAM,KAAEnB,GAASN,MACX,qBAAEgB,GAAyBL,MAC3B,gBAAEe,GAAoBC,GAAqBC,0BAE3CC,KAAwB,OAACvB,QAAD,IAACA,OAAD,EAACA,EAAMO,kBAE/BiB,EAAoB,OAAGxB,QAAH,IAAGA,GAAH,UAAGA,EAAMO,wBAAT,aAAG,EAAwBkB,KAE/CC,GACA,OAAJ1B,QAAI,IAAJA,GAAA,UAAAA,EAAMO,wBAAN,eAAwBC,aAAamB,gBAAiB1M,GAAW2M,YAE7DC,EAAa,OAAG7B,QAAH,IAAGA,GAAH,UAAGA,EAAMzJ,sBAAT,aAAG,EAAsBuL,MAC1CrL,GAAeA,EAAYC,QAAQmH,KAAOuD,IAGtCW,GAAmC,OAAbF,QAAa,IAAbA,OAAA,EAAAA,EAAeJ,QAAS9L,GAAgBqM,OAE9DC,GACJ,iBAACJ,QAAD,IAACA,OAAD,EAACA,EAAeJ,YAAhB,QAAwB9L,GAAgBqM,UAAYrM,GAAgBsL,MAEhEiB,GAAsC,OAAbL,QAAa,IAAbA,OAAA,EAAAA,EAAeJ,QAAS9L,GAAgBwM,kBAEjEC,EAAoB,iBAAGP,QAAH,IAAGA,OAAH,EAAGA,EAAenL,QAAQ0L,4BAA1B,SAAmDb,EAEvEc,EAA4B,OAChCR,QADgC,IAChCA,GADgC,UAChCA,EAAenL,QAAQ8J,oBADS,aAChC,EAAqCC,aAAaE,QAAQzP,MAAMoR,SAC9DhN,GAA8BiN,cAG5BC,KAA2B,OAACX,QAAD,IAACA,GAAD,UAACA,EAAenL,QAAQ8J,oBAAxB,aAAC,EAAqCgC,yBACjEC,EAAe,iBACnBJ,QADmB,IACnBA,IADmB,UAEnB3B,EAAqBC,eAFF,aAEnB,EAA8BzP,MAAMoR,SAAShN,GAA8BiN,qBAFxD,SAKfG,EAAwB,OAAG1C,QAAH,IAAGA,GAAH,UAAGA,EAAMzJ,sBAAT,aAAG,EAAsBK,MACrDF,IAAO,yBAAIA,EAAQA,eAAZ,iBAAI,EAAiB8J,oBAArB,aAAI,EAA+B3C,MAGtC8E,GAAuB,OAAJ3C,QAAI,IAAJA,GAAA,UAAAA,EAAMO,wBAAN,eAAwBkB,QAAS7L,GAAqBoL,WACzE4B,GAA0B,OAAJ5C,QAAI,IAAJA,GAAA,UAAAA,EAAMO,wBAAN,eAAwBkB,QAAS7L,GAAqBqL,MAE5E4B,EAA+C,OAC/CH,GAA6BlB,MAE7BA,IACMsB,OAAOC,QAAQjC,IAAyClK,MAC9D,EAAEpJ,EAASwV,MAAX,aACE,UAAAtC,EAAqBlT,UAArB,eAAuDyV,UACvDD,EAAMV,SAASd,MAsBvB,MAAO,CAAE0B,YAfW,CAClBC,iBAAkBf,EAClBgB,YAAaX,EACbY,iBAAkBR,IAClBS,gBAAiBT,IACjBZ,qBACAV,uBACAG,yBACAiB,mBACAC,sBACAb,sBACAG,yBACAM,6BCjFSe,GAAa1F,IACxB,MAAM2F,EAAWjR,GAAsB,IAAIkR,OACrC,YAAEP,GAAgB/B,KACxB,OAAOtB,aAAsCL,GAAQ,CACnDM,UAAW,CACTjC,GAAIA,EACJ2F,WACAE,yBAA0BR,EAAYC,kBAExCpD,MAAOlC,KCZE8F,GAAiBxE,IAAI;;;;;;;;;;;;;;;ECIrByE,GAA8B,KAAO,IAAD,EAC/C,MAAM,gBAAExC,EAAF,eAAmByC,EAAnB,sBAAmCC,EAAnC,aAA0DC,GAC9D1C,GAAqBC,2BACjB,YAAE4B,GAAgB/B,MAChBxB,KAAM9I,EAAQ+I,QAASoE,GAAkBT,GAAUM,IAEnDlE,KAAMsE,EAAerE,QAASsE,GAAyBrE,aAG7D8D,GAAgB,CAChB7D,UAAW,CAAEjC,GAAIuD,GACjBrB,MAAOqB,IAGH+C,GAAaJ,EACbK,IAAW,OAACH,QAAD,IAACA,GAAD,UAACA,EAAevN,QAAQ2N,cAAxB,aAAC,EAA+BpV,QAC3CqV,GACHH,IACAC,KACD,OAACvN,QAAD,IAACA,OAAD,EAACA,EAAQA,OAAO0N,aAAa3N,MAAK4N,IAAW,eAAK,UAACA,EAAYC,YAAb,aAAC,EAAkBxV,YASvE,MAAO,CAAEyV,wBARuBP,GAAaC,GAAYE,EAQvBH,YAAWC,WAAUE,SAAQ1E,QAL7DkE,GACAE,GACAE,KACG9C,KAAqB6C,IAAmBpN,IAAWqM,EAAYhB,0B,eC7B/D,MCHDyC,GAAkB,CACtBC,EACAC,KAEA,MAAOC,EAAaC,GAAkBnH,qBAAY,KAChD,MAAMoH,EAAO5K,OAAOC,aAAaM,QAAQiK,GACzC,IACE,OAAOI,EAAOnK,KAAKC,MAAMkK,GAAQH,EACjC,MAAO/X,GACP,cAAOkY,QAAP,IAAOA,IAAQH,MAkBnB,MAAO,CAACC,EAdUrS,IAChB,IACE,MAAMwS,EAAexS,aAAiByS,SAAWzS,EAAMqS,GAAerS,EACtEsS,EAAeE,GACf7K,OAAOC,aAAa8K,QAAQP,EAAK/J,KAAKuK,UAAUH,IAChD,MAAOnY,GACPG,QAAQC,IAAIJ,KAIF,KACZsN,OAAOC,aAAaC,WAAWsK,M,cCtB5B,MAAMS,GAAmBlG,IAAI;;;;;;;;;;;;;;;;;;;ECMvBmG,GAAWC,IACtB,MAAMC,EAAWC,eACXC,EAASC,gBAEbvI,MAAOwI,EACPtI,OAAQuI,EAFJ,OAGJ3I,EAHI,YAIJK,GACEC,GAAYmB,kBACV,WAAEmH,GAAezE,GAAqBC,2BAErCyE,EAAWC,EAAcC,GAAkBtB,GAAwBnU,IACnE,CAAC,CAAG0V,GAAqBvB,GAAwBnU,GAElD2V,EAAgBC,wBAAYlY,UAChC+X,IACAJ,IACAK,UACMR,EAAOW,eACZ,CAACH,EAAmBD,EAAgBP,EAAQG,IAEzCS,EAAepY,UACR,OAAXqP,QAAW,IAAXA,KAAagJ,YAAY5U,GAAuBE,cAC1CsU,IACNX,EAAS,SAAU,CAAEpW,SAAS,MAczBoX,GAAsB5G,QAAS6G,IAAuBC,aAC3DrB,GACA,CACEjF,YAAaT,IAAS,IAAD,IACnBiG,EAAa,CACX/H,GAAI8B,EAAKgH,eAAe3G,KAAKnC,GAC7BG,MAAO2B,EAAKgH,eAAe3G,KAAKhC,MAChCF,KAAM6B,EAAKgH,eAAe3G,KAAKlC,KAC/BC,SAAU4B,EAAKgH,eAAe3G,KAAKjC,SACnCE,eAAc,UAAE0B,EAAKgH,eAAe3G,KAAKO,wBAA3B,aAAE,EAA2CC,aAAa3C,GACxEK,iBAAgB,UAAEyB,EAAKgH,eAAe3G,KAAKO,wBAA3B,aAAE,EAA2CC,aAAa1C,OAE5EkI,EAAarG,EAAKgH,eAAe/L,QAEnCb,QApBY7L,UAEI,OAAlBqX,QAAkB,IAAlBA,aACMe,OAuBR,MAAO,CACLpJ,SACA6I,YACAa,WALiB,IAAMJ,IAMvBC,oBACAnJ,OApCapP,UACb4X,UACMQ,KAmCN/I,cACA4I,kBCzESU,GAAe,IAAqB,eAAfpd,EAAOC,ICG5BuH,GAAYkO,IAAI;;;;;;;;;;ECDhB2H,GAAe,KAC1B,MAAM,KAAEnH,EAAF,QAAQC,GAAYC,aAAoB5O,IAE9C,MAAO,CAAE8V,UAAS,OAAEpH,QAAF,IAAEA,OAAF,EAAEA,EAAMoH,UAAUC,QAASpH,YCFlCqH,GAAa9H,IAAI;;;;;;;;;ECDjB+H,GAAiBC,IAC5B,MAAM,KAAExH,EAAF,QAAQC,GAAYC,aAA0CoH,GAAY,CAC9EnH,UAAW,CAAEqH,SAAUA,GACvBpH,MAAOoH,IAGT,MAAO,CAAEC,WAAU,OAAEzH,QAAF,IAAEA,OAAF,EAAEA,EAAMyH,WAAWJ,QAASpH,YCLpCyH,GAAkB,KAC7B,MAAOC,GAAc,QAAE1H,IAAa8G,aAClCjH,GACA,CACE1F,QAASnN,EAAaC,eAI1B,MAAO,CAAEya,eAAc1H,YCLZ2H,GAAiBC,IAC5B,MAAMxH,EAAOC,KA4Bb,MAAO,CAAE1B,MA3BK6H,wBACXrY,IACC,IAAK,IAAD,EACF,MAAM0Z,GAAgB,OAAJzH,QAAI,IAAJA,GAAA,UAAAA,EAAMO,wBAAN,eAAwBC,cACtC,CACExC,MAAOgC,EAAKhC,MACZM,SAAW,GAAE0B,EAAKlC,QAAQkC,EAAKjC,WAC/BG,iBAAkB8B,EAAKO,iBAAiBC,aAAa1C,KACrDG,eAAgB+B,EAAKO,iBAAiBC,aAAa3C,IAErD,CACEG,MAAOgC,EAAKhC,MACZM,SAAW,GAAE0B,EAAKlC,QAAQkC,EAAKjC,YAKrC2J,aAAeF,EAAW,IACrBC,KACA1Z,IAEL,MAAOjB,GACP3C,IAAwB2C,MAG5B,CAAC0a,EAAWxH,MC3BH2H,GAAqB,EAChCH,YACAnJ,kBACAuB,cAMA,MAAM,MAAErB,GAAUgJ,GAAcC,GAEhCI,sBAAU,KAER,MAAMC,EAAc,IAAMtJ,EAAMF,GAGhC,OADAjE,OAAO0N,iBAAiB,QAASD,GAC1B,KACLzN,OAAO2N,oBAAoB,QAASF,MAErC,CAACxJ,EAAiBE,IAErByJ,MACE,KACMpI,GACJrB,EAAMF,KAER,CAACuB,EAASvB,IACV,CAAC4J,EAAUC,KACT,MAAMC,EAAW,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAW,GACzBG,EAAW,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAW,GAI/B,OAFqBG,kBAAQF,EAAaC,IAAgBC,kBAAQJ,EAAS,GAAIC,EAAS,QClCjFI,GAAkBnJ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECCtBoJ,GAAmB,KAC9B,MAAOC,GAAiB9B,aAAmD4B,GAAiB,CAC1FvO,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,MACtB,IAAKA,EAAU,OACf,MAAMC,EAAyB,CAC7B9K,GAAI6K,EAASF,cAAcI,QAAQ/K,GACnCgL,WAAY,qBAER,gBACJC,EADI,YAEJC,EAFI,aAGJC,EAHI,cAIJC,EAJI,yBAKJC,EALI,uBAMJC,EANI,oBAOJC,EAPI,cAQJC,EARI,kBASJC,EATI,0BAUJC,EAVI,YAWJC,EACAC,MAAOC,EAZH,oBAaJC,EAbI,mBAcJC,EAdI,oBAeJC,EAfI,kBAgBJC,EAhBI,sBAiBJC,EAjBI,kBAkBJC,EAlBI,wBAmBJC,EAnBI,0BAoBJC,EApBI,eAqBJC,GACEzB,EAASF,cAAcI,QAE3B3N,EAAMmP,OAAO,CACXvM,GAAI5C,EAAMoP,SAAS1B,GACnBtE,OAAQ,CACNyE,gBAAiB,IAAMA,EACvBC,YAAa,IAAMA,EACnBC,aAAc,IAAMA,EACpBC,cAAe,IAAMA,EACrBC,yBAA0B,IAAMA,EAChCC,uBAAwB,IAAMA,EAC9BC,oBAAqB,IAAMA,EAC3BC,cAAe,IAAMA,EACrBC,kBAAmB,IAAMA,EACzBC,0BAA2B,IAAMA,EACjCC,YAAa,IAAMA,EACnBC,MAAO,IAAMC,EACbC,oBAAqB,IAAMA,EAC3BC,mBAAoB,IAAMA,EAC1BC,oBAAqB,IAAMA,EAC3BC,kBAAmB,IAAMA,EACzBC,sBAAuB,IAAMA,EAC7BC,kBAAmB,IAAMA,EACzBC,wBAAyB,IAAMA,EAC/BC,0BAA2B,IAAMA,EACjCC,eAAgB,IAAMA,QAM9B,MAAO,CAAE3B,kBC/DE8B,GAAanL,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECGjBoL,GAAe,KAC1B,MAAOC,GAAW,QAAE5K,IAAa8G,aAAmD4D,GAAY,CAC9FvQ,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,MACtB,IAAKA,EAAU,OACf,MAAMC,EAAyB,CAC7B9K,GAAI6K,EAAS8B,UAAUC,IAAI5M,GAC3BgL,WAAY,cAGR,QACJ6B,EADI,aAEJC,EAFI,eAGJC,EAHI,cAIJC,EAJI,kBAKJC,EALI,aAMJC,GACErC,EAAS8B,UAAUC,IAEvBxP,EAAMmP,OAAO,CACXvM,GAAI5C,EAAMoP,SAAS1B,GACnBtE,OAAQ,CACNqG,QAAO,IACEA,EAETC,aAAY,IACHA,EAETC,eAAc,IACLA,EAETC,cAAa,IACJA,EAETC,kBAAiB,IACRA,EAETC,aAAY,IACHA,QAOjB,MAAO,CAAEP,YAAW5K,YCjDToL,GAAuB,KAAO,IAAD,IACxC,MAAM,eAAEzU,GAAmB0J,MACrB,gBAAEmB,GAAoBC,GAAqBC,0BAMjD,MAAO,CACL2J,wBAL2B,iBAC3B1U,QAD2B,IAC3BA,GAD2B,UAC3BA,EAAgBuL,MAAKrL,GAAeA,EAAYC,QAAQmH,KAAOuD,WADpC,aAC3B,EAAiF1K,QAC9EwU,0BAFwB,QAEF,KCNhBC,GAAsB,KACjC,MAAM,OAAE5O,GAAW6O,eASnB,MAAO,CAAEC,kBAPkBC,GACrBA,IAAkBlW,GAAoBgB,OAAemG,EAAOnT,IAAIC,UAAU,KACvEiiB,IAAkBlW,GAAoBmW,oBACzChP,EAAOnT,IAAII,kBACX+S,EAAOnT,IAAIG,iBCPNiiB,GAAqBrM,IAAI;;;;;;;;ECSzBsM,GAAuB,EAClCC,oBACAC,WACAC,2BACA7L,WAEA,MAAM,KAAEJ,EAAF,QAAQC,GAAYC,aAA4B2L,GAAoB,CACxEK,YAAaH,EAAoB,yBAAsBvO,EACvDiD,YAAa0L,IACX,IAAKH,EAAU,OAEf,IAAKG,EAAqBC,kBAAkB9c,OAAQ,OAEpD,MAAM,KAAE6O,EAAF,SAAQ3G,EAAR,WAAkBF,GAAe6U,EAAqBC,kBAAkB,GAC9EJ,EAAQ,OAACC,QAAD,IAACA,IAA4B,CAAEzU,WAAU2G,OAAM7G,gBAEzD8C,QAASnN,EAAaC,aACtBkT,SAEF,MAAO,CAAEJ,OAAMC,YC3BJoM,GAAO7M,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECWX8M,GAAe,EAC1BC,UACA9L,cACA+L,kBACAC,gBACAC,cACAtM,WAEA,MAAM,KAAEJ,EAAF,QAAQC,GAAYC,aAA8BmM,GAAM,CAC5DlM,UAAW,CACToM,QAASA,EACTC,kBACAG,iBAAkBF,KAAmBC,EACrCD,cAAeA,EACXja,IAAMia,GAAe/Z,OAAO9B,QAC5B4M,EACJkP,YAAaA,EAAcla,IAAMka,GAAaha,OAAO9B,QAA2B4M,GAElF4C,MAAOmM,GAAWnM,EAClBK,gBAGF,MAAO,CACLmM,KAAI,OAAE5M,QAAF,IAAEA,OAAF,EAAEA,EAAM4M,KAAKvF,QACjBpH,YCtCE4M,GAAU,IAEHC,GAA4B,KACvC,MAAM,EAAEpf,GAAMqf,YAAe,UAgB7B,MAAO,CAAEC,sBAdsBla,GACzBA,GAAS+Z,GACJ,CACL/Z,OAAQA,EAAQ+Z,IAAS5Z,QAAQ,GACjCga,MAAOvf,EAAE,oBAENoF,GAVM,IAWT,CACEA,OAAQA,EAZD,KAYmBG,UAC1Bga,MAAOvf,EAAE,qBAEX,CAAEoF,MAAOA,EAAM0L,WAAYyO,MAAO,MCd7BC,GAAoB,KAC/B,MAAM,EAAExf,GAAMqf,YAAe,UAe7B,MAAO,CAAEI,kBAXL,CACFC,aAAc,CACZC,MAAO3f,EAAE,+BACToF,MAAO8C,GAAewX,cAExBE,QAAS,CACPD,MAAO3f,EAAE,0BACToF,MAAO8C,GAAe0X,YCZfC,GAAuB,KAClC,MAAM,EAAE7f,GAAMqf,YAAe,UAe7B,MAAO,CAAES,qBAXL,CACFC,IAAK,CACHJ,MAAO3f,EAAE,yBACToF,MAAOuC,GAAkBoY,KAE3BC,IAAK,CACHL,MAAO3f,EAAE,yBACToF,MAAOuC,GAAkBqY,QCZzBC,GAAiB,iBAEVC,GAAc,KACzB,MAAOxH,GAAapB,GAAwBnU,GAM5C,MAAO,CAAEgd,gBAJgBC,GAChBA,EAAQnL,SAASgL,IAAkBG,EAAW,GAAEA,oBAA6B1H,MCqBlF/I,GAAUC,yBAAwC,CACtD6G,uBAAuB,EACvB4J,iBAAkB,KAChB,MAAM,IAAIrQ,MACR,oIAGJsQ,gBAAiB,KACf,MAAM,IAAItQ,MACR,mIAGJuQ,gBAAiB,KACf,MAAM,IAAIvQ,MACR,mIAGJyI,WAAY,KACV,MAAM,IAAIzI,MACR,8HAGJwQ,oDAAqD,KACnD,MAAM,IAAIxQ,MACR,uKAGJ0G,cAAc,IAqIH1C,GAAuB,CAClC5D,SAAUT,GAAQS,SAClBC,SApIe,KAAiC,IAAD,EAC/C,MAAO0D,EAAiB0M,GAAsBlQ,uBACvCmQ,EAAiBC,GAAsBpQ,uBACvCiG,EAAgBoK,GAAqBrQ,uBACrCsQ,EAAcN,GAAmBhQ,uBACjCuQ,EAAmBC,GAAwBxQ,uBAEhDyQ,EACAR,GACEjQ,uBAEE,KAAEoC,GAASN,MACX,KAAEjH,GAASiU,eACT/M,KAAM2O,EAAR,QAAqB1O,GAAYM,GAAkBkB,IAEjDzB,KAAM4O,GAA0B9C,GAAqB,CAC3DE,SAAUkC,EACVjC,yBAA0ByC,EAC1BtO,OAAM,OAACC,QAAD,IAACA,OAAD,EAACA,EAAMO,kBACbmL,mBAAmB,IAGfgC,EAAmB,EAAG7P,KAAI2Q,YAAWC,WAAU3Q,WAA+B,IAAD,MACjFgQ,EAAmBjQ,GACnBmQ,EAAmBQ,GACnBJ,EAAqBtQ,GACrB,MAAM4Q,EAAW,iBACf1O,QADe,IACfA,GADe,UACfA,EAAMzJ,sBADS,iBACf,EAAsBuL,MAAKpL,GAAWA,EAAQA,QAAQmH,KAAOA,WAD9C,aACf,EAAkEnH,QAAQiY,QAAQC,YADnE,QAEfH,EAEFhW,EAAKoW,eAAeH,IAGtB1G,MACE,KAAO,IAAD,EACJ,GAAIhI,IAAI,UAAIA,EAAKzJ,sBAAT,aAAI,EAAqBtH,QAAQ,CACvC,GAAI+Q,EAAKO,kBAAoBgO,EAAuB,CAAC,IAAD,EAClD,MAAMO,EAAwBP,EAAsBxC,kBAAkB,GAChEgD,EAAoB1Y,GACxByY,EACA9O,EAAKzJ,gBAGDyY,EAAoB,OAAGD,QAAH,IAAGA,GAAH,UAAGA,EAAoB,UAAvB,aAAG,EAAwBrY,QACrD,GAAIsY,EAMF,YALAtB,EAAiB,CACf7P,GAAImR,EAAqBnR,GACzB2Q,UAAWQ,EAAqBL,QAAQ9Q,GACxCC,KAAMkR,EAAqBlR,OAMjC4P,EAAiB,CACf7P,GAAImC,EAAKzJ,eAAe,GAAGG,QAAQmH,GACnC2Q,UAAWxO,EAAKzJ,eAAe,GAAGG,QAAQiY,QAAQ9Q,GAClDC,KAAMkC,EAAKzJ,eAAe,GAAGG,QAAQoH,UAI3C,CAACkC,EAAMuO,IACP,CAACtG,EAAUC,KACT,MAAM+G,EAAchH,EAAS,GACvBiH,EAAchH,EAAS,GACvBiH,EAA+BlH,EAAS,GACxCmH,EAA+BlH,EAAS,GAI9C,OAF2B,OAAX+G,QAAW,IAAXA,OAAA,EAAAA,EAAapR,OAAb,OAAoBqR,QAApB,IAAoBA,OAApB,EAAoBA,EAAarR,KAE/BwK,kBAAQ8G,EAA8BC,MAI5D,MAAMC,EAAkBjJ,wBAAY,KAClC,MAAMkJ,EAAc,OAAGhB,QAAH,IAAGA,OAAH,EAAGA,EAAa3X,QAAQqQ,QAAQlF,MAAKjL,GAAUA,EAAOgH,KAAOgG,IAEjF,GAAIyL,EAAgB,OAAOA,EAE3B,MAAMC,EAAc,IAAI9L,KAElB+L,EAAe,OAAGlB,QAAH,IAAGA,OAAH,EAAGA,EAAa3X,QAAQqQ,QAAQxQ,QACnDK,GAAU,IAAI4M,KAAK5M,EAAOE,YAAcwY,IAG1C,KAAI,OAACC,QAAD,IAACA,OAAD,EAACA,EAAiBvgB,QAAQ,cAAOqf,QAAP,IAAOA,OAAP,EAAOA,EAAa3X,QAAQqQ,QAAQ,GAIlE,OAFuByI,kBAAQD,EAAiB,YAAa,QAEvC,KACrB,QAAClB,QAAD,IAACA,OAAD,EAACA,EAAa3X,QAAQqQ,QAASnD,IAElC+D,sBAAU,KACR,GAAI0G,EAAa,CAAC,IAAD,EACf,MAAMoB,EAAeL,IAErBpB,EAAiB,iBAACyB,QAAD,IAACA,OAAD,EAACA,EAAc7R,UAAf,aAAqBV,MAEvC,CAACkS,EAAiBf,IAErB,MAOMvK,KAAgB,OAAC/D,QAAD,IAACA,GAAD,UAACA,EAAMzJ,sBAAP,aAAC,EAAsBtH,QAE7C,MAAO,CACL6U,sBAAuBlE,EACvBwB,kBACAsM,mBACA7J,iBACA8J,gBAAiBM,EACjBC,eACAN,kBACAG,kBACAI,oBACArI,WAnBiB,KACjB4H,EAAiB,IACjBO,OAAkB9Q,GAClB6Q,OAAmB7Q,GACnB0Q,OAAoD1Q,IAgBpDkR,mDACAR,sDACA9J,iBAWFzC,wBAP8B,IACvB1C,sBAAW5B,K,uBCxLF2S,aAAOC,KAAK;;0BCAvB,MAAMC,GAAmB,KAC9B,MAAM,OAAEtT,GAAW6O,eACnB,OACE,eAAC,KAAD,CAAM0E,UAAW,eAACC,GAAA,EAAD,CAAiBC,MAAO,CAAE3oB,SAAU,GAAI4oB,MAAO1T,EAAO/U,SAAW0oB,MAAI,OCFpFC,GAAkBR,aAAOC,KAAK;;EAIvBQ,GAA6B,IAEtC,eAACD,GAAD,CAAiBE,MAAM,SAASC,QAAQ,SAAxC,SACE,eAACT,GAAD,M,cCNN,MAAMU,GAA8C,CAClDnqB,MAAO,IACPoqB,OAAQ,IACRnqB,MAAO,KAGIM,GAAyB,EAAG8pB,WAAU5c,UAAS6c,MAC1D,MAAMC,EAAQ9c,EAAO0c,GAAY1c,GAAQ,IACzC,OACE,eAAC,KAAD,CAAU8c,MAAOA,KAAWD,EAAOE,UAAU,EAAOC,cAAY,EAAhE,SACGJ,K,uBCVP,MAAM9pB,GAAQgpB,aAAOmB,GAAW;;EAI1BC,GAAcpB,aAAOC,KAAK;;;;;EAO1BoB,GAAmBrB,aAAOsB,MAAOC,MAAM,CAC3Crd,KAAM,IACL;;;;;;;;;wBASqB,EAAGyI,WAAYA,EAAMC,OAAO7V;aACvC,EAAG4V,WAAYA,EAAMC,OAAOjV;;EAY5B6pB,GAAqC,EAChDhqB,QACAiqB,cACAC,YACAC,WACA1R,cAEA,MAAM,EAAEvS,GAAMqf,YAAe,UAE7B,OACE,eAAC,GAAD,CAAOvlB,MAAK,OAAEA,QAAF,IAAEA,IAAS,IAAKoqB,MAAI,EAACC,UAAQ,EAACF,SAAUA,EAAUG,OAAQ,KAAtE,SACE,uCACE,eAACV,GAAD,UAAcK,IACd,gBAACJ,GAAD,WACE,eAAC,KAAD,CAAQtjB,KAAK,UAAUgkB,QAASJ,EAAhC,SACGjkB,EAAE,gBAEL,eAAC,KAAD,CAAQqkB,QAASL,EAAWzR,QAASA,EAArC,SACGvS,EAAE,0BCtDFskB,GAASxS,IAAI;;;;;;;;;;;;;;gBCC1B,MAAMrD,GAAS6T,aAAOiC,KAAW;;EAcpBC,GAAoCC,iBAC/C,EACEnG,WACAoG,YACAC,YACApS,UACAyE,SACA4N,oBACAC,4BACK,IAAD,EACJ,MAAMC,EAAY,iBAAG9N,QAAH,IAAGA,OAAH,EAAGA,EAAQvC,MAAKsQ,GAASA,EAAMvU,KAAOkU,WAAtC,eAAoD1N,QAApD,IAAoDA,OAApD,EAAoDA,EAAS,GAQ/E,OANAuD,sBAAU,KACJuK,GACFxG,EAASwG,KAEV,CAACA,EAAcxG,IAGhB,eAAC7P,GAAD,CACEoW,sBAAuBA,EACvBG,eAAgBJ,EAChBrS,QAASA,EACToS,UAAWA,EAEXM,aAAY,OAAEH,QAAF,IAAEA,OAAF,EAAEA,EAActU,GAC5B8N,SAAU9N,IACR,MAAM0U,EAAa,OAAGlO,QAAH,IAAGA,OAAH,EAAGA,EAAQvC,MAAKsQ,GAASA,EAAMvU,KAAOA,IACpD0U,GACL5G,EAAS4G,IAVb,gBAaGlO,QAbH,IAaGA,OAbH,EAaGA,EAAQzW,KAAIwkB,GACX,eAACtW,GAAO0W,OAAR,CAA8B/f,MAAO2f,EAAMvU,GAA3C,SACGuU,EAAMtU,MADWsU,EAAMvU,OAd9B,OAKOsU,QALP,IAKOA,OALP,EAKOA,EAActU,OC9Bd4U,GAAgCX,iBAC3C,EAAG3R,YAAWwL,WAAUoG,YAAWC,gBACjC,MAAM,KAAErS,EAAF,QAAQC,GAAYC,aAAkC8R,GAAQ,CAClE7R,UAAW,CAAEK,UAAWA,GACxBJ,MAAOI,IAGT,OACE,eAAC0R,GAAD,CACElG,SAAUA,EACVoG,UAAWA,EACXC,UAAWA,EACXpS,QAASA,EACTyE,OAAM,OAAE1E,QAAF,IAAEA,OAAF,EAAEA,EAAM0E,OAAO2C,a,0BChB7B,MAAM0L,GAA0BC,uBAAW,CAACjC,EAAOkC,KACjD,MAAM,KAAE5S,GAASN,KACjB,OACE,eAAC,KAAD,CAAWmT,IAAG,OAAE7S,QAAF,IAAEA,OAAF,EAAEA,EAAM8S,eAAgBF,IAAKA,KAASlC,EAAO7c,KAAM,GAAIkf,KAAM,eAACC,GAAA,EAAD,SAIlEC,GAAatD,aAAO+C,GAAQ;sBACnB,EAAGpW,WAAYA,EAAMC,OAAO7V;YACtC,EAAGgrB,aAAeA,EAAU,UAAY;sBAC9B,EAAGpV,WAAYA,EAAMC,OAAOjV;EChBrC4rB,GAAQ/T,IAAI;;;;;;;;;;;;;ECyBZgU,GAA+B,EAC1CC,cACAzH,WACAqG,YACApS,UACA0S,eACA7f,QACA4gB,WACApB,oBACAC,wBACAoB,aACAC,SACAC,qBACAC,mBACA/B,cAEA,MAAM,KAAE/R,EAAMC,QAAS8T,GAAgB7T,aAAgCqT,GAAO,CAC5EpT,UAAW,CAAE6T,IAAKJ,MAEd,EAAElmB,GAAMqf,YAAe,UAEvBkH,EAAiBJ,EAAqBvd,GAAQ4d,eAAY1W,EAE1DjK,EAAU8L,oBAAQ,KACtB,IAAKyU,EACH,cAAO9T,QAAP,IAAOA,OAAP,EAAOA,EAAMmU,MAAM9M,QAAQpZ,KAAImmB,IAAI,CACjCthB,MAAOshB,EAAKlW,GACZmP,MAAO+G,EAAKC,QAAQvjB,EAASwjB,IAAQ3a,uBAGzC,MAAM4a,EAAa,OAAGvU,QAAH,IAAGA,OAAH,EAAGA,EAAMmU,MAAM9M,QAAQxQ,QAAOud,GAAI,OAAIN,QAAJ,IAAIA,OAAJ,EAAIA,EAAkBnR,SAASyR,EAAKlW,MAEzF,cAAOqW,QAAP,IAAOA,OAAP,EAAOA,EAAetmB,KAAImmB,IAAI,CAC5BthB,MAAOshB,EAAKlW,GACZmP,MAAO+G,EAAKC,QAAQvjB,EAASwjB,IAAQ3a,yBAEtC,QAACqG,QAAD,IAACA,OAAD,EAACA,EAAMmU,MAAM9M,QAASyM,IAEzB,OACE,gBAAC,KAAD,CACEL,YAAW,OAAEA,QAAF,IAAEA,IAAe/lB,EAAE,eAC9BilB,aAAcA,GAAgBsB,EAC9BnhB,MAAOA,GAASmhB,EAChBhU,QAAS8T,GAAe9T,EACxByT,SAAUA,EACVrB,UAAWA,EACXK,eAAgBJ,EAChBC,sBAAuBA,EACvBoB,WAAYA,EACZ3H,SAAU9N,IACR,MAAMsW,EAAY,OAAGxU,QAAH,IAAGA,OAAH,EAAGA,EAAMmU,MAAM9M,QAAQlF,MAAKiS,GAAQA,EAAKlW,KAAOA,IAE1D,OAAR8N,QAAQ,IAARA,KAAWwI,IAEbzC,QAASA,EAfX,UAiBG8B,GACC,eAAC,KAAOhB,OAAR,CAAe/f,MAAOwD,GAAQ4d,UAA9B,SAA0CxmB,EAAE,qBAlBhD,OAoBG6F,QApBH,IAoBGA,OApBH,EAoBGA,EAAStF,KAAImmB,GACZ,eAAC,KAAOvB,OAAR,CAAgC/f,MAAOshB,EAAKthB,MAA5C,SACGshB,EAAK/G,OADY+G,EAAKthB,aCjFpB2hB,GAAYjV,IAAI;;;;;;;;;;;;;ECmBhBkV,GAAmC,EAC9CC,SACA3I,WACAqG,YACAN,UACAjf,QACA6f,eACAL,oBACAC,wBACAqC,yBACAlB,WACAmB,wBACArU,YACAqO,gBAEA,MAAM,EAAEnhB,GAAMqf,YAAe,WACvB,gBAAEqB,EAAF,gBAAmB3M,GAAoBC,GAAqBC,2BAC5D,KAAE3B,EAAF,QAAQC,GAAYC,aAAwCuU,GAAW,CAC3EtU,UAAW,CACT0O,UAAS,OAAEA,QAAF,IAAEA,IAAaT,EACxBuG,OAAQA,EACRnU,UAAS,OAAEA,QAAF,IAAEA,IAAaiB,GAE1BrB,MAAQgO,IAAoBS,IAAe8F,IAEvCG,EAAqBF,EAAyBte,GAAQye,mBAAgBvX,EACtEsR,EAAWhe,EAASwjB,IAAQ3a,kBAE5BpG,EAAU8L,oBAAQ,KAAO,IAAD,EAC5B,MAAM2V,EAAmB,iBACvBhV,QADuB,IACvBA,OADuB,EACvBA,EAAMiV,UAAU5N,QAAQpZ,KAAI,EAAGiQ,KAAImW,cAAP,CAC1BvhB,MAAOoL,EACPmP,MAAOgH,EAAQvF,cAHM,QAIhB,GAET,IAAK+F,EAAuB,OAAOG,EAEnC,MAAME,EAAiB,OAAGlV,QAAH,IAAGA,OAAH,EAAGA,EAAMiV,UAAU5N,QAAQxQ,QAAOkU,GAAO,OAC9D8J,QAD8D,IAC9DA,OAD8D,EAC9DA,EAAuBlS,SAASoI,EAAQ7M,MAG1C,cAAOgX,QAAP,IAAOA,OAAP,EAAOA,EAAmBjnB,KAAI8c,IAAO,CACnCjY,MAAOiY,EAAQ7M,GACfmP,MAAOtC,EAAQsJ,QAAQvF,SAExB,CAAC9O,EAAM8O,EAAU+F,IAEpB,OACE,gBAAC,KAAD,CACEM,YAAU,EACVC,aAAc,CAACpY,EAAOqY,KACd,OAANA,QAAM,IAANA,OAAA,EAAAA,EAAQtE,MAAMD,SAAS9c,cAAcshB,QAAQtY,EAAMhJ,iBAAkB,EAEvEyf,YAAa/lB,EAAE,kBACfuS,QAASA,EACToS,UAAWA,EACXN,QAASA,EACTjf,MAAOA,GAASgiB,EAChBnC,aAAcA,GAAgBmC,EAC9BpC,eAAgBJ,EAChBC,sBAAuBA,EACvBmB,SAAUA,EACV1H,SAAU9N,IACR,MAAMqX,EAAe,OAAGvV,QAAH,IAAGA,OAAH,EAAGA,EAAMiV,UAAU5N,QAAQlF,MAAK4I,GAAWA,EAAQ7M,KAAOA,IACzEsX,EAAsBtX,IAAO5H,GAAQmf,WAC3CzJ,EAASuJ,EAAiBC,IAjB9B,UAoBGZ,GACC,eAAC,KAAO/B,OAAR,CAAe/f,MAAOwD,GAAQye,cAA9B,SAA8CrnB,EAAE,0BAE5B,OAArBmnB,QAAqB,IAArBA,OAAA,EAAAA,EAAuBlS,cAASnF,KAC/B,eAAC,KAAOqV,OAAR,CAAe/f,MAAOwD,GAAQmf,WAA9B,SAA2C/nB,EAAE,sBAxBjD,OA0BG6F,QA1BH,IA0BGA,OA1BH,EA0BGA,EAAStF,KAAI8c,GACZ,eAAC,KAAO8H,OAAR,CAAmC/f,MAAOiY,EAAQjY,MAAlD,SACGiY,EAAQsC,OADStC,EAAQjY,a,aC5DrB,IC3CX,GAAO,GAAQ,GAAQ,GD2CZ,ICzCf,SAAS,KAA2Q,OAA9P,GAAWqQ,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASO,IAAmB,MAC1B5uB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,gcACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,2CACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,uCACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,m1BACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBJ,IAClC,ICrCXO,GAAIC,GDqCO,ICnCf,SAAS,KAA2Q,OAA9P,GAAWzT,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASgB,IAAkB,MACzBrvB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAMmvB,KAAOA,GAAkB,iBAAoB,IAAK,CAClE9f,OAAQ,mBACM,iBAAoB,OAAQ,CAC1C6f,EAAG,8gBACHF,KAAM,iBACS,iBAAoB,OAAQ,CAC3CE,EAAG,uhBACHF,KAAM,iBACS,iBAAoB,OAAQ,CAC3CE,EAAG,+fACHF,KAAM,mBACFI,KAAUA,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,SAAU,CAChH1Y,GAAI,YACJ4Y,GAAI,EACJC,EAAG,EACH/F,MAAO,GACPnrB,OAAQ,GACRmxB,YAAa,iBACbC,0BAA2B,QACb,iBAAoB,UAAW,CAC7CC,aAAc,EACdC,OAAQ,uBACO,iBAAoB,gBAAiB,CACpDC,GAAI,cACJrpB,KAAM,SACNspB,OAAQ,8CACO,iBAAoB,WAAY,CAC/CC,GAAI,IACW,iBAAoB,iBAAkB,CACrDC,aAAc,IACC,iBAAoB,gBAAiB,CACpDxpB,KAAM,SACNspB,OAAQ,+CACO,iBAAoB,UAAW,CAC9CG,KAAM,SACNC,IAAK,qBACLN,OAAQ,uBACO,iBAAoB,UAAW,CAC9CK,KAAM,SACNJ,GAAI,gBACJK,IAAK,qBACLN,OAAQ,cAIZ,MAAM,GAA0B,cAAiBN,IAClC,ICnEX,GAAO,GAAQ,GDmEJ,ICjEf,SAAS,KAA2Q,OAA9P,GAAW1T,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS6B,IAAa,MACpBlwB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,ypBACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,sLACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,2aACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBkB,IAClC,IClCX,GDkCW,IChCf,SAAS,KAA2Q,OAA9P,GAAWvU,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS8B,IAAU,MACjBnwB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,+5BACHF,KAAM,cAIV,MAAM,GAA0B,cAAiBmB,IAClC,IC5BX,GAAO,GAAQ,GD4BJ,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWxU,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS+B,IAAS,MAChBpwB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACRyqB,MAAO,eACPiG,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,+PACHmB,OAAQ,eACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,iBAAoB,OAAQ,CAChEtB,EAAG,0BACHmB,OAAQ,eACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,WACb,KAAW,GAAsB,iBAAoB,OAAQ,CAChEtB,EAAG,sPACHmB,OAAQ,eACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,YAIpB,MAAM,GAA0B,cAAiBJ,IAClC,IC5CX,GAAO,GAAQ,GD4CJ,IC1Cf,SAAS,KAA2Q,OAA9P,GAAWzU,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASoC,IAAuB,MAC9BzwB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,IACPnrB,OAAQ,IACR0wB,QAAS,cACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,qtEACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChE0B,SAAU,UACVC,SAAU,UACVzB,EAAG,wnBACHF,KAAM,mCACH,KAAU,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,iBAAkB,CACvHtY,GAAI,0BACJka,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,cAAe,kBACD,iBAAoB,OAAQ,CAC1CC,UAAW,YACI,iBAAoB,OAAQ,CAC3CC,OAAQ,EACRD,UAAW,gBAIf,MAAM,GAA0B,cAAiBR,IAClC,IC7CX,GAAO,GD6CI,IC3Cf,SAAS,KAA2Q,OAA9P,GAAW9U,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS8C,IAAU,MACjBnxB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,6yBACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,03BACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBmC,IAClC,IC/BX,GD+BW,IC7Bf,SAAS,KAA2Q,OAA9P,GAAWxV,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS+C,IAAQ,MACfpxB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,gzBACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBoC,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWzV,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASgD,IAAe,MACtBrxB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,6oCACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBqC,IAClC,IC5BXC,GAAOC,GD4BI,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW5V,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASmD,IAAa,MACpBxxB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAMsxB,KAAUA,GAAqB,iBAAoB,OAAQ,CAC3EV,GAAI,EACJC,GAAI,QACJC,GAAI,QACJC,GAAI,EACJV,OAAQ,UACRC,YAAa,EACbC,cAAe,WACZgB,KAAWA,GAAsB,iBAAoB,OAAQ,CAChEX,GAAI,QACJC,GAAI,EACJC,GAAI,EACJC,GAAI,QACJV,OAAQ,UACRC,YAAa,EACbC,cAAe,YAInB,MAAM,GAA0B,cAAiBiB,IAClC,ICAA,ICzCX,GAAO,GDyCI,ICvCf,SAAS,KAA2Q,OAA9P,GAAW7V,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASoD,IAAe,MACtBzxB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,UACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,g0EACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,oyCACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiByC,IAClC,IChCX,GDgCW,IC9Bf,SAAS,KAA2Q,OAA9P,GAAW9V,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASqD,IAAc,MACrB1xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,44BACHF,KAAM,cAIV,MAAM,GAA0B,cAAiB0C,IAClC,IC5BX,GAAO,GD4BI,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW/V,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASsD,IAAS,MAChB3xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,m8BACHF,KAAM,aACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,o4BACHF,KAAM,cAIV,MAAM,GAA0B,cAAiB2C,IAClC,IC/BX,GD+BW,IC7Bf,SAAS,KAA2Q,OAA9P,GAAWhW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASuD,IAAa,MACpB5xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3E0wB,SAAU,UACVC,SAAU,UACVzB,EAAG,8hIACHF,KAAM,cAIV,MAAM,GAA0B,cAAiB4C,IAClC,IC9BX,GAAO,GD8BI,IC5Bf,SAAS,KAA2Q,OAA9P,GAAWjW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASwD,IAAc,MACrB7xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,QACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,4FACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,k5BACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiB6C,IAClC,IChCX,GAAO,GAAQ,GDgCJ,IC9Bf,SAAS,KAA2Q,OAA9P,GAAWlW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASyD,IAAiB,MACxB9xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,IACPnrB,OAAQ,IACR0wB,QAAS,cACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,iZACHmB,OAAQ,UACRC,YAAa,MACV,KAAW,GAAsB,iBAAoB,OAAQ,CAChEpB,EAAG,kNACHmB,OAAQ,UACRC,YAAa,MACV,KAAW,GAAsB,iBAAoB,OAAQ,CAChEpB,EAAG,2MACHmB,OAAQ,UACRC,YAAa,OAIjB,MAAM,GAA0B,cAAiBwB,IAClC,ICrCX,GDqCW,ICnCf,SAAS,KAA2Q,OAA9P,GAAWnW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS0D,IAA0B,MACjC/xB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,87BACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiB+C,IAClC,IC5BX,GAAI,GD4BO,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWpW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS2D,IAAQ,MACfhyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAO,GAAkB,iBAAoB,IAAK,CAClEiyB,SAAU,yBACI,iBAAoB,OAAQ,CAC1CvB,SAAU,UACVC,SAAU,UACVzB,EAAG,iiGACHF,KAAM,cACF,KAAU,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,WAAY,CAClHtY,GAAI,mBACU,iBAAoB,OAAQ,CAC1C8S,MAAO,GACPnrB,OAAQ,GACR2wB,KAAM,cAIV,MAAM,GAA0B,cAAiBgD,IAClC,ICtCX,GDsCW,ICpCf,SAAS,KAA2Q,OAA9P,GAAWrW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS6D,IAAO,MACdlyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3E0wB,SAAU,UACVC,SAAU,UACVzB,EAAG,i5CACHF,KAAM,cAIV,MAAM,GAA0B,cAAiBkD,IAClC,IC9BX,GD8BW,IC5Bf,SAAS,KAA2Q,OAA9P,GAAWvW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS8D,IAAY,MACnBnyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3E0wB,SAAU,UACVC,SAAU,UACVzB,EAAG,8+BACHF,KAAM,cAIV,MAAM,GAA0B,cAAiBmD,IAClC,IC9BX,GD8BW,IC5Bf,SAAS,KAA2Q,OAA9P,GAAWxW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS+D,IAAW,MAClBpyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,wvHACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBoD,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWzW,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASgE,IAAiB,MACxBryB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,wmBACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBqD,IAClC,ICGA,IC/BX,GD+BW,IC7Bf,SAAS,KAA2Q,OAA9P,GAAW1W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASiE,IAAa,MACpBtyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,8jFACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBsD,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW3W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASkE,IAAS,MAChBvyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,waACHF,KAAM,cAIV,MAAM,GAA0B,cAAiBuD,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW5W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASmE,IAAU,MACjBxyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,UACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,68EACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBwD,IAClC,IC7BX,GD6BW,IC3Bf,SAAS,KAA2Q,OAA9P,GAAW7W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASoE,IAAe,MACtBzyB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,koGACHF,KAAM,cAIV,MAAM,GAA0B,cAAiByD,IAClC,IC5BX,GAAO,GD4BI,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW9W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASqE,IAAY,MACnB1yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3E0wB,SAAU,UACVC,SAAU,UACVzB,EAAG,stBACHF,KAAM,iCACH,KAAU,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,iBAAkB,CACvHtY,GAAI,wBACJka,GAAI,EACJC,GAAI,QACJC,GAAI,EACJC,GAAI,QACJC,cAAe,kBACD,iBAAoB,OAAQ,CAC1CC,UAAW,YACI,iBAAoB,OAAQ,CAC3CC,OAAQ,EACRD,UAAW,gBAIf,MAAM,GAA0B,cAAiByB,IAClC,IC1CX,GD0CW,ICxCf,SAAS,KAA2Q,OAA9P,GAAW/W,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASsE,IAAU,MACjB3yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,2mCACHF,KAAM,cAIV,MAAM,GAA0B,cAAiB2D,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWhX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASuE,IAAQ,MACf5yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,+nBACHmB,OAAQ,UACRC,YAAa,QAIjB,MAAM,GAA0B,cAAiBsC,IAClC,IC7BX,GD6BW,IC3Bf,SAAS,KAA2Q,OAA9P,GAAWjX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASwE,IAAgB,MACvB7yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,ulEACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiB6D,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWlX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASyE,IAAa,MACpB9yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,2mFACHF,KAAM,YAIV,MAAM,GAA0B,cAAiB8D,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWnX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS0E,IAAY,MACnB/yB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,wtDACHF,KAAM,YAIV,MAAM,GAA0B,cAAiB+D,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWpX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS2E,IAAU,MACjBhzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,gYACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBgE,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWrX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS4E,IAAO,MACdjzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,q6BACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBiE,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAWtX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS6E,IAAS,MAChBlzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,QACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,ykEACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBkE,IAClC,IC7BX,GD6BW,IC3Bf,SAAS,KAA2Q,OAA9P,GAAWvX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS8E,IAAS,MAChBnzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,QACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,g+FACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBmE,IAClC,IC7BX,GAAI,GD6BO,IC3Bf,SAAS,KAA2Q,OAA9P,GAAWxX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAAS+E,IAAe,MACtBpzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAO,GAAkB,iBAAoB,IAAK,CAClEiyB,SAAU,yBACI,iBAAoB,OAAQ,CAC1C/C,EAAG,oNACHmB,OAAQ,UACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UACD,iBAAoB,OAAQ,CAC3CtB,EAAG,iBACHmB,OAAQ,UACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,UACD,iBAAoB,OAAQ,CAC3CtB,EAAG,sBACHmB,OAAQ,UACRC,YAAa,IACbC,cAAe,QACfC,eAAgB,YACZ,KAAU,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,WAAY,CAClH9Z,GAAI,mBACU,iBAAoB,OAAQ,CAC1C8S,MAAO,GACPnrB,OAAQ,GACR2wB,KAAM,cAIV,MAAM,GAA0B,cAAiBoE,IAClC,ICnDX,GDmDW,ICjDf,SAAS,KAA2Q,OAA9P,GAAWzX,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASgF,IAAO,MACdrzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,61GACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBqE,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW1X,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASiF,IAAc,MACrBtzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,4wBACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBsE,IAClC,IC5BX,GD4BW,IC1Bf,SAAS,KAA2Q,OAA9P,GAAW3X,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASkF,IAAa,MACpBvzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTC,KAAM,OACNlG,MAAO,QACPmG,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,kqCACHF,KAAM,mBAIV,MAAM,GAA0B,cAAiBuE,IAClC,IC7BX,GAAO,GD6BI,IC3Bf,SAAS,KAA2Q,OAA9P,GAAW5X,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASmF,IAAa,MACpBxzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,QACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAU,GAAqB,iBAAoB,OAAQ,CAC3EkvB,EAAG,g5KACHF,KAAM,kBACH,KAAW,GAAsB,iBAAoB,OAAQ,CAChEE,EAAG,4lLACHmB,OAAQ,eACRC,YAAa,OAIjB,MAAM,GAA0B,cAAiBkD,IAClC,ICjCX,GAAI,GDiCO,IC/Bf,SAAS,KAA2Q,OAA9P,GAAW7X,OAAOuS,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUvmB,OAAQsmB,IAAK,CAAE,IAAIE,EAASD,UAAUD,GAAI,IAAK,IAAI3Q,KAAO6Q,EAAc3S,OAAO4S,UAAUC,eAAeC,KAAKH,EAAQ7Q,KAAQ0Q,EAAO1Q,GAAO6Q,EAAO7Q,IAAY,OAAO0Q,GAAkB,GAASO,MAAMC,KAAMN,WAIhT,SAASoF,IAAa,MACpBzzB,EAAK,QACL6uB,KACGtF,GACFuF,GACD,OAAoB,iBAAoB,MAAO,GAAS,CACtDtF,MAAO,GACPnrB,OAAQ,GACR0wB,QAAS,YACTjG,MAAO,QACPkG,KAAM,OACNC,MAAO,6BACPxD,IAAKqD,EACL,kBAAmBD,GAClBtF,GAAQvpB,EAAqB,iBAAoB,QAAS,CAC3D0W,GAAImY,GACH7uB,GAAS,KAAM,KAAO,GAAkB,iBAAoB,IAAK,CAClEiyB,SAAU,wBACI,iBAAoB,OAAQ,CAC1C/C,EAAG,qsEACHF,KAAM,UACS,iBAAoB,OAAQ,CAC3CE,EAAG,maACHF,KAAM,UACS,iBAAoB,OAAQ,CAC3CE,EAAG,2ZACHF,KAAM,UACS,iBAAoB,OAAQ,CAC3CE,EAAG,kDACHF,KAAM,iBACS,iBAAoB,OAAQ,CAC3CE,EAAG,kDACHF,KAAM,mBACF,KAAU,GAAqB,iBAAoB,OAAQ,KAAmB,iBAAoB,WAAY,CAClHtY,GAAI,kBACU,iBAAoB,OAAQ,CAC1C8S,MAAO,QACPnrB,OAAQ,GACR2wB,KAAM,cAIV,MAAM,GAA0B,cAAiByE,IAClC,ICxCR,MAAM1e,GAASyT,KAAOkL,GAAiB;;;sBAGxB,EAAGve,QAAO+W,cAC5BA,EAAW/W,EAAMC,OAAOhW,MAAQ+V,EAAMC,OAAO7V;WACtC,EAAG4V,QAAO+W,cAAgBA,EAAW/W,EAAMC,OAAO7V,MAAQ4V,EAAMC,OAAOjV;;;;;;YAMtE,EAAG+rB,cAAgBA,EAAW,QAAU;EASvCyH,GAAgC,EAAGpJ,UAAS2B,WAAU0H,iBACjEA,EACE,eAAC,KAAD,CAAS5zB,MAAO4zB,EAAhB,SACE,eAAC7e,GAAD,CAAQwV,QAASA,EAAS2B,SAAUA,EAApC,SACE,eAAC,GAAD,QAIJ,eAACnX,GAAD,CAAQwV,QAASA,EAAS2B,SAAUA,EAApC,SACE,eAAC,GAAD,MClCO2H,GAASrL,aAAOsL,GAAY;;;;iBCGzC,MAAQC,MAAOC,IAAax1B,KAEtBu1B,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAO7U;;;;EAM1B0zB,GAA8B,EAAGj0B,WACrC,eAAC+zB,GAAD,CAAOG,MAAO,EAAd,SAAkBl0B,ICbdm0B,GAAe3L,aAAO4L,KAAW;eAC/B,EAAGjf,WAAYA,EAAME,WAAW/W;EAKlCyW,GAA0B,EAAGuU,cAAaC,KACrD,eAAC4K,GAAD,IAAkB5K,EAAlB,SAA0BD,I,0BCP5B,MAAM+K,GAAiD,EAAG/K,eACxD,MAAM,EAAEpjB,GAAMqf,YAAe,UAE7B,OACE,eAAC,KAAD,CAASvlB,MAAOkG,EAAE,2BAA4BouB,UAAU,MAAxD,SACGhL,MCACyK,MAAOC,IAAax1B,KAEtB+1B,GAAc,uHASdC,GAAUhM,aAAOC,KAAK;;;EAKtB1T,GAASyT,aAAOiM,GAAY;;;oBAGd,EAAGvI,cAAeA,GAAY;EAG5CwI,GAAalM,aAAOmM,KAAK;;EAQzBC,GAAcpM,KAAOkL,GAAiB;IACxCa;;;YAGQ,EAAGrI,cAAgBA,EAAW,QAAU;sBAC9B,EAAG/W,QAAO+W,cAC5BA,EAAW/W,EAAMC,OAAOhW,MAAQ+V,EAAMC,OAAO7V;EAG3Cs1B,GAAiBrM,KAAOkL,GAAiB;IAC3Ca;;;YAGQ,EAAGrI,cAAgBA,EAAW,QAAU;sBAC9B,EAAG/W,QAAO+W,cAC5BA,EAAW/W,EAAMC,OAAOhW,MAAQ+V,EAAMC,OAAOjV;;kBAE/B,EAAGgV,WAAYA,EAAMC,OAAOhW;;EAIxC01B,GAAOtM,aAAOuM,KAAS;;;kBAGX,EAAG5f,WAAYA,EAAMC,OAAOhW;qBACzB,EAAG+V,WAAYA,EAAME,WAAWjX;;;;;;;qBAOhC,EAAG+W,WAAa,aAAYA,EAAMC,OAAOhW;;;;;;;;;;EAexD41B,GAAexM,aAAOmM,KAAwB;eACrC,EAAGM,eAAH,OAAmBA,QAAnB,IAAmBA,IAAa;;gBAE/B,EAAG9f,WAAYA,EAAMC,OAAOtW;mBACzB,EAAGqW,WAAYA,EAAME,WAAWjX;;;;;EAO7CwrB,GAAcpB,aAAOwL,GAAU;;;;;;EAQ/BD,GAAQvL,aAAOwL,GAAU;;EAKzBkB,GAAY,IAAM,KAsBXC,GAAW,EACtB3c,OACAxY,QACAiqB,cACAxqB,SACA21B,mBACAC,oBACA5c,UACA8R,UACA+K,SACAC,WACAC,aACAC,iBACAC,cACAC,sBACAC,eAEA,MAAM,OAAExgB,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,UAE7B,OACE,gBAACyP,GAAD,CAAcC,UAAWW,EAAzB,UACE,eAAC,GAAD,CAAO1B,MAAO,EAAd,SAAkBl0B,IAClB,eAAC,GAAD,UAAciqB,IACbmL,EACD,eAACN,GAAD,CACEe,OAAQ,CAAEC,UAAW,eAACZ,GAAD,KACrBa,WAAY,CACVC,gBAAiB,CAAC,IAAK,KAAM,KAAM,MACnCC,gBAAiB,EACjBC,iBAAiB,GAEnBxpB,KAAK,QACLjN,OAAQA,EACRgZ,QAASA,EACT6R,OACEoL,EACE,qCACGD,EACC,eAAC,KAAD,CAASz1B,MAAOkG,EAAE,gCAAlB,SACE,eAACsuB,GAAD,UACE,eAAC,GAAD,CAAQjuB,KAAK,UAAU2lB,UAAQ,EAA/B,SACGmJ,QAKP,eAACb,GAAD,UACE,eAAC,GAAD,CAAQjK,QAASA,EAAShkB,KAAK,UAA/B,SACG8uB,QAMT,eAAChB,GAAD,UACE,eAACG,GAAD,UACE,eAAC,GAAD,CAAQjuB,KAAK,UAAU2lB,UAAQ,EAA/B,SACGmJ,QAMXc,UAAQ,EACRC,WAAY5d,EACZgd,WAAY,CAAC3X,EAAMwY,IACjB,eAACvB,GAAKwB,KAAN,UACE,gBAAC9B,GAAD,CAAStL,MAAM,SAASqN,MAAM,EAA9B,UACGf,EAAW3X,EAAMwY,GAClB,eAAC3B,GAAD,UACE,eAAC,KAAD,CAAOhoB,KAAM,GAAb,SACGgpB,EACC,qCACGD,GAAkB5X,EAAK2Y,WACtB,uCACE,eAAC3B,GAAD,CAAgBtK,QAAS,IAAM+K,EAAOzX,EAAKnH,IAA3C,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAAS1W,MAAK,OAAE21B,QAAF,IAAEA,IAAuBzvB,EAAE,gCAAzC,SACE,eAAC0uB,GAAD,CAAa1I,UAAQ,EAArB,SACE,eAAC,GAAD,CAAWpD,MAAO1T,EAAO7V,eAK/B,uCACE,eAACs1B,GAAD,CAAgBtK,QAAS,IAAM+K,EAAOzX,EAAKnH,IAA3C,SACE,eAAC,GAAD,MAEF,eAACke,GAAD,CAAarK,QAAS,IAAMgL,EAAS1X,EAAKnH,IAA1C,SACE,eAAC,GAAD,CAAWoS,MAAO1T,EAAOjV,eAMjC,uCACE,eAACk0B,GAAD,UACE,eAACQ,GAAD,CAAgB3I,UAAQ,EAAxB,SACE,eAAC,GAAD,QAGJ,eAACmI,GAAD,UACE,eAACO,GAAD,CAAa1I,UAAQ,EAArB,SACE,eAAC,GAAD,CAAWpD,MAAO1T,EAAO7V,8B,mCCxOnD,MAAMk3B,GAAkBjO,aAAOmM,KAAK;;;;;;;sBAOd,EAAGxf,WAAYA,EAAMC,OAAOjV;mBAC/B,EAAGgV,WAAYA,EAAME,WAAWjX;sBAC7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;EAI5Cs3B,GAAQlO,KAAOmO,GAAI;;EAInBC,GAA2BpO,aAAOqO,KAAoB;;WAEjD,EAAG1hB,WAAYA,EAAMC,OAAOhW;EAO1B03B,GAAkC,EAAGC,YAChD,MAAM,EAAE7wB,GAAMqf,YAAe,UAE7B,OACE,eAACkR,GAAD,UACGM,EAAQ,eAACL,GAAD,CAAOhL,IAAKqL,EAAOC,IAAK9wB,EAAE,uBAA2B,eAAC0wB,GAAD,OC9B9DH,GAAkBjO,aAAOmM,KAAK;;;;;;;mBAOjB,EAAGxf,WAAYA,EAAME,WAAWjX;;EAI7Cs4B,GAAQlO,KAAOmO,GAAI;;GCXnB,KAAEM,IAASz4B,KAEXi4B,GAAkBjO,aAAOmM,KAAK;;;;sBAId,EAAGxf,WAAYA,EAAMC,OAAOjV;mBAC/B,EAAGgV,WAAYA,EAAME,WAAWjX;sBAC7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;EAI5C83B,GAAgB1O,KAAOkL,GAAI;;;;;;;EAS3BgD,GAAQlO,KAAOmO,GAAI;;EAInBQ,GAAiB3O,aAAOyO,GAAM;;WAEzB,EAAG9hB,WAAYA,EAAMC,OAAOhW;ECrBjCg4B,GAAwC,CAC5CC,GAAI,CACFp4B,MAAO63B,GACP53B,MDyB2C,EAAG63B,YAChD,MAAM,EAAE7wB,GAAMqf,YAAe,oBAE7B,OACE,eAAC,GAAD,UACGwR,EACC,eAAC,GAAD,CAAOrL,IAAKqL,EAAOC,IAAK9wB,EAAE,0BAE1B,gBAACgxB,GAAD,WACE,eAACC,GAAD,UAAiBjxB,EAAE,gCACnB,eAAC,GAAD,WCjCRoxB,GAAI,CACFr4B,MFO6C,EAAG83B,YAClD,MAAM,EAAE7wB,GAAMqf,YAAe,UAE7B,OACE,eAAC,GAAD,UACGwR,EAAQ,eAAC,GAAD,CAAOrL,IAAKqL,EAAOC,IAAK9wB,EAAE,uBAA2B,eAAC,GAAD,SEEvDqxB,GAA0B,EACrCv3B,QACA+2B,QACAvS,WACAgT,aACA9qB,OAAO,QACP+qB,aAAY,EACZh1B,UAAU,SACL,IAAD,EACJ,MAAM,EAAEyD,GAAMqf,YAAe,UAuBvBmS,EAAS,UAAGN,GAAkB30B,GAASiK,UAA9B,QAAuCoqB,GAEhDa,EACJ,eAAC,KAAD,CAEEhhB,KAAK,OACLihB,OAAO,UACP1L,SAAUsL,EACVK,gBAAgB,EAChBC,SAAU,EACVC,aAAcN,OAAYzhB,EAAY,KAAM,EAC5CwO,SAtBmB,EAAGwT,eACxB,MAAM/wB,EAAO+wB,EAAS,GACtB,IAZqB/wB,KACrB,IAAKA,EAAKyF,KAAM,OAAO,EACvB,MAAMurB,EAAmBhxB,EAAKyF,KAAO,KAAO,KAnCxB,EAyCpB,OALKurB,GACHjyB,IAAaL,MAAM,CACjBE,QAASK,EAAE,uBAAwB,CAAEgyB,cAtCrB,MAyCbD,GAIFE,CAAclxB,GAAO,OAE1B,MAAMmxB,EAAS,IAAIC,WACnBD,EAAOzX,iBAAiB,QAAQ,KAC9B6D,EAAS4T,EAAOzI,OAAkB1oB,EAAKqxB,kBAEzCF,EAAOG,cAActxB,EAAKqxB,gBAM1B,SAUE,eAACZ,EAAD,CAAWX,MAAOA,MAItB,OACE,uCACG/2B,GAAS,eAACi0B,GAAD,CAAYj0B,MAAOA,IAC7B,eAAC,KAAD,UAAMy3B,EAAY,eAAC,KAAD,UAAUE,IAAoBA,Q,kCC9EtD,MAAMa,GAAWhQ,aAAOiQ,KAAKnC,KAAM;;wBAEX,EAAGnhB,WAAYA,EAAMC,OAAOhW;qBAC/B,EAAG+V,WAAYA,EAAME,WAAWjX;;;;;;;;;;;EAwBxCs6B,GAA6B,EACxCC,UACAhiB,OACAiiB,aACA3M,cACAd,eACA5kB,OACAsyB,gBACGC,MAEH,MAAMC,EAA0B,aAATxyB,EAAsBvH,KAAMg6B,SAAWh6B,KAC9D,OACE,eAAC,KAAD,CACE2X,KAAMA,EACNgiB,QAASA,EACTM,OAAQ,EAAGhO,OAASzG,cAAa0U,GAAkBC,YAAcxzB,MAAOyzB,MACtE,eAACZ,GAAD,CAAUa,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAAnE,SACE,eAACkzB,EAAD,CACE5N,aAAcA,EACdc,YAAaA,EACbsN,OAAQX,KACJM,KACAJ,EACJtU,SAAUgV,IAENhV,EADEqU,EACOntB,GAA+B8tB,EAAMrL,OAAO7iB,OAG9CkuB,EAAMrL,OAAO7iB,eCtDvBmuB,GAAgC,EAAGnQ,eAC9C,MAAM,OAAEvT,GAAWoI,KAEnB,OAAKpI,EAEEuT,EAFa,eAAC,KAAD,CAAUoQ,GAAG,SAASzxB,SAAO,K,eCPnD,MAAQ0xB,OAAQC,IAAcC,KAExBC,GAAatR,aAAOoR,GAAW;gBACrB,EAAGzkB,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAW7Cw3B,GAA0B,EAAGI,WAEtC,eAACD,GAAD,UACE,eAAC,KAAD,iBACGC,QADH,IACGA,OADH,EACGA,EAAOtzB,KAAI,CAACoX,EAAMwY,IAEjB,eAAC,KAAD,UAAkBxY,GAARwY,UCjBZ2D,QAASC,IAAgBC,MACzBnG,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAErC47B,GAAkB5R,aAAOyR,GAAa;;;;EAMtCD,GAAUxR,aAAOyR,GAAa;;gBAEpB,EAAG9kB,WAAYA,EAAMC,OAAOjV;;;;;;;;;;;;;;EAgBtCw5B,GAASnR,aAAOC,KAAK;;EAIrBiO,GAAQlO,KAAOmO,GAAI;;;;;EAOnB5C,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAO7U;;;EAKjC85B,GAAW7R,aAAO2R,GAAS;;;;WAItB,EAAGhlB,WAAYA,EAAMC,OAAOzU;EAGjC25B,GAAoB9R,aAAOmM,KAAK;;EAczBkF,GAA6C,EACxDU,gBACAC,iBACAC,cACAC,cACApR,WACAqR,eACA9P,YACA+P,cAEA,gBAACR,GAAD,WACGG,GAAiB,eAAC,GAAD,CAAWR,MAAOS,IACpC,gBAACR,GAAD,CAASnP,UAAWA,EAApB,UACE,gBAAC,GAAD,CAAQ3B,MAAM,SAASC,QAAQ,gBAA/B,UACE,eAAC,KAAD,UACE,gBAAC,KAAD,CAAKD,MAAM,SAAX,UACE,eAAC,GAAD,CAAOwC,IAAK+O,IACZ,eAAC,GAAD,CAAOvG,MAAO,EAAd,SAAkBwG,SAGrBC,GAAgB,eAAC,KAAD,UAAMA,IACtBC,GACC,eAACN,GAAD,CAAmBO,KAAM,GAAzB,SACE,eAACR,GAAD,UAAWO,SAIhBtR,SC/FCyK,MAAOC,IAAax1B,KAEtBu1B,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAO7U;;;EAW1Bu6B,GAAiC,EAAG96B,QAAOk0B,QAAO6G,uBAC7D,uBAAMC,UAAU,KAAhB,SACE,eAAC,GAAD,CAAO9G,MAAOA,EAAO+G,SAAU,CAAEC,QAASl7B,GAAS6oB,MAAOkS,EAA1D,SACG/6B,OCjBCi3B,KAAMkD,IAAY37B,KAEpB28B,GAAgB3S,KAAOqS,IAAK;;EAI5B5D,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAO7U;;;EAW1B66B,GAAgC,EAAGp0B,OAAM+zB,oBAAmBM,eAAc,KACrF,eAACF,GAAD,CAAeH,UAAU,KAAzB,SACE,eAAC,GAAD,CAAMC,SAAU,CAAEC,QAASG,GAAer0B,GAAQ6hB,MAAOkS,EAAzD,SACG/zB,MCfMs0B,GAAqD,EAAGvxB,QAAOuf,eAC1E,MAAM,YAAEvN,GAAgB/B,KAExB,OACG+B,EAAYC,kBACbjS,EAAMoR,SAAShN,GAA8BotB,mBAEtC,eAAC,KAAD,CAAU7B,GAAG,eAEf,qCAAGpQ,KCXN3U,GAAS6T,aAAOiC,KAAW;;;;;;;wBAOT,EAAGtV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAW1Cq5B,GAAgC7Q,iBAAK,EAAGnG,eACnD,MAAM,gBAAEvK,EAAF,eAAmByC,GAAmBxC,GAAqBC,2BAC3D,KAAE3B,EAAF,QAAQC,GAAYM,GAAkBkB,GAEtCzK,EAAO,OAAGgJ,QAAH,IAAGA,OAAH,EAAGA,EAAMhJ,QAAQqQ,QAI9B,OACE,eAAC,GAAD,CACEkL,uBAAuB,EACvBG,eAL4B,yBAM5BzS,QAASA,EAET0S,aAAczO,EACd8H,SAAU9N,GAAM8N,EAAShZ,OAAOkL,IANlC,gBAQGlH,QARH,IAQGA,OARH,EAQGA,EAAS/I,KAAIiJ,GACZ,eAAC,GAAO2b,OAAR,CAA+B/f,MAAOoE,EAAOgH,GAA7C,SACGhH,EAAOiH,MADUjH,EAAOgH,OALxBgG,MCvCE+e,GAAgBjT,KAAOkL,GAAI;sBAClB,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;qBAM3C,EAAGgT,WAAa,aAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAG/D,EAAGgT,WAAYA,EAAMC,OAAOjV;;;;aAI5B,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;aAG1C,EAAGiT,WAAYA,EAAMC,OAAOjV;;;;aAI5B,EAAGgV,WAAYA,EAAMC,OAAOjV;;;;;;;wBAOjB,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;aAGrD,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;GC9B/C80B,KAAMkD,IAAY37B,KAEpBk9B,GAAelT,KAAOkL,GAAI;;;mBAGb,EAAGve,WAAYA,EAAME,WAAWlX;sBAC7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAI1D80B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAOjV;EAQ1Bw7B,GAA2B,EAAG30B,OAAM40B,iBAAgBC,eAE7D,eAACH,GAAD,CAAc7S,MAAO+S,EAArB,SACE,eAAC,GAAD,CAAM/S,MAAOgT,EAAb,SAAyB70B,M,yBCrB/B,MAAM80B,GAAYtT,aAAOC,KAAK;;gBAEd,EAAGtT,WAAYA,EAAMC,OAAOtW;mBACzB,EAAGqW,WAAYA,EAAME,WAAWjX;;;EAKtC29B,GAAwC,EAAGzS,cACtD,eAAC,GAAD,UAAYA,KCNNyK,MAAOC,GAAUiD,KAAnB,IAA4Bz4B,KAE5Bu1B,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAOzU;;;;EAKjCmpB,GAAQtB,aAAOwT,KAAU;;EAIzBC,GAAgBzT,aAAOmM,KAAK;;;;;;sBAMZ,EAAGxf,WAAYA,EAAMC,OAAO/U;;sBAE5B,EAAG8U,WAAYA,EAAMC,OAAOhW;;;EAI5C88B,GAAmB1T,aAAO2T,KAAc;;WAEnC,EAAGhnB,WAAYA,EAAMC,OAAOjV;EAGjCi8B,GAAU5T,aAAO6T,KAAY;;iBAElB,EAAGlnB,WAAa,aAAYA,EAAMC,OAAOhW;;;EAKpDi7B,GAAW7R,aAAOyO,GAAM;WACnB,EAAG9hB,WAAYA,EAAMC,OAAO7U;;;;;;EAY1B+7B,GAAwD,EACnEt8B,QACAspB,WACAiT,WACAC,cAGE,eAACT,GAAD,UACE,gBAACjS,GAAD,CAAO2S,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAAC,KAAD,CAAKwc,MAAM,SAASC,QAAQ,gBAA5B,UACE,eAAC,KAAD,UACE,gBAACW,GAAD,CAAOpd,KAAM,GAAb,UACE,gBAAC,GAAD,CAAOwnB,MAAO,EAAd,cAAmBl0B,EAAnB,OACCw8B,GACC,uCACE,eAACJ,GAAD,CAAS71B,KAAK,aAEd,gBAAC,GAAD,eAAYi2B,EAAZ,eAMPD,GACC,eAACN,GAAD,CAAe1R,QAASgS,EAAxB,SACE,eAACL,GAAD,SAIL5S,O,eC9ET,MAAMoT,GAAmBlU,aAAOmU,KAAe;;EAMlC1nB,GAA8BsU,IACzC,MAAM,EAAErjB,GAAMqf,YAAe,UAE7B,OACE,eAACmX,GAAD,CACEE,eAAa,EACb3Q,YAAa/lB,EAAE,eACfgF,OAAQ9B,KACJmgB,KCRGsT,GAAwC,EAAG3Q,WAAU1H,WAAUlZ,QAAOwxB,eACjF,MAAM,EAAE52B,GAAMqf,YAAe,WACvB,kBAAEI,GAAsBD,KAExB3Z,EAAU4P,OAAOkU,OAAOlK,GAE9B,OACE,eAAC,KAAD,CACEuG,SAAU4Q,GAAY5Q,EACtB1H,SAAUA,EACVlZ,MAAOA,EACP2gB,YAAa/lB,EAAE,yBACf2iB,MAAO,CAAEW,MAAO,QAChBqB,UAAWiS,EAAW,8BAA2B9mB,EANnD,SAQGjK,EAAQtF,KAAIonB,GACX,eAAC,KAAOxC,OAAR,CAAkC/f,MAAOuiB,EAAOviB,MAAhD,SACGuiB,EAAOhI,OADUgI,EAAOviB,YCnB7ByxB,GAAcvU,aAAOxpB,KAAO;;;;;EAarBg+B,GAAsC,EAAGC,QAAOvZ,gBAAec,eAC1E,MAAQte,EAAGg3B,GAAY3X,YAAe,UAEhC4X,EAAerQ,IAAQ3a,mBAAqB1I,GAElD,OACE,eAACszB,GAAD,CACE5R,aAAcgS,EAAezxB,GAA+BgY,GAAiBA,EAC7E0Z,OAAQF,EAAQ,4BAChBG,OAAS7D,IACP,IAAKyD,EAAO,OAEZ,MAAMK,EAAsB9xB,OAAOguB,EAAM+D,cAAcjyB,OACjDkyB,EAAmBL,EACrBzxB,GAA+B4xB,GAC/BA,EACJ9Y,EAAS,CACP7L,UAAW,CAAE8kB,aAAc,CAAE/mB,GAAIumB,EAAOvZ,cAAa,OAAE8Z,QAAF,IAAEA,IAAoB,a,cCpCrF,MAAME,GAAOlV,KAAOkL,GAAI;;;sBAGF,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAG1Dy7B,GAAgBnV,aAAOkV,GAAM;sBACb,EAAGvoB,WAAYA,EAAMC,OAAOnT,IAAIG;EAGhDw7B,GAAgBpV,aAAOkV,GAAM;sBACb,EAAGvoB,WAAYA,EAAMC,OAAOnT,IAAII;EAGhD40B,GAAOzO,aAAOhqB,KAAWy4B,KAAM;WAC1B,EAAG9hB,WAAYA,EAAMC,OAAOtW;;;;EAMjCi1B,GAAQvL,aAAOyO,GAAM;;EAId+C,GAAU,EAAGh6B,YACxB,MAAM,EAAEkG,GAAMqf,YAAe,iBAEvBsY,EAAc,CAClB,CAAE72B,KAAMd,EAAE,+BAAgC43B,KAAM,eAACJ,GAAD,KAChD,CAAE12B,KAAMd,EAAE,kCAAmC43B,KAAM,eAACF,GAAD,KACnD,CACE52B,KAAMd,EAAE,kCACR43B,KAAM,eAACH,GAAD,MAIV,OACE,gBAAC,KAAD,CAAKI,OAAQ,CAAC,EAAG,IAAjB,UACG/9B,GAAS,eAAC,GAAD,UAAQA,IACjB69B,EAAYp3B,KAAI+R,GAEb,gBAAC,KAAD,CAAKulB,OAAQ,GAAI7U,MAAM,SAAvB,UACE,eAAC,KAAD,UAAM1Q,EAAKslB,OACX,eAAC,KAAD,UACE,eAAC,GAAD,UAAOtlB,EAAKxR,kBC1Cbg3B,GAAwB,EACnCh+B,QACA41B,WAAW,QAKX,MAAM,OAAExgB,GAAW6O,eACnB,OACE,eAAC,KAAD,CACEga,OAAO,EACPC,QAAS,IAAM,eAAC,GAAD,CAASl+B,MAAOA,IAC/B+6B,kBAAmB,CACjBl8B,WAAYuW,EAAOnT,IAAIE,UAAU,KACjCyzB,WACAx3B,aAAc,GACdsB,QAAS,IAPb,SAUE,eAAC,GAAD,OCpBAiV,GAAS6T,aAAOiC,KAAW;;;;;;;;;;wBAUT,EAAGtV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;wBAG1C,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAY1Cg8B,GAA0C,EACrD1Z,2BACAD,WACAD,wBAEA,MAAM,KAAE/L,EAAF,QAAQC,GAAY6L,GAAqB,CAC7CE,WACAC,2BACAF,sBAGF,OACE,eAAC,GAAD,CACEwG,uBAAuB,EACvBG,eAtB0B,yBAuB1BzS,QAASA,EACTnN,MAAK,OAAEmZ,QAAF,IAAEA,OAAF,EAAEA,EAA0B9N,KACjC6N,SAAU4Z,IAAe,IAAD,EACtB,MAAMjW,EAAc,OAAG3P,QAAH,IAAGA,GAAH,UAAGA,EAAMoM,yBAAT,aAAG,EAAyBjK,MAAKjL,GAAUA,EAAOiH,OAASynB,IAC/E,IAAKjW,EAAgB,OACrB,MAAM,KAAExR,EAAF,SAAQ3G,EAAR,WAAkBF,GAAeqY,EAEvC3D,EAAS,CACPxU,WACA2G,OACA7G,gBAbN,gBAiBG0I,QAjBH,IAiBGA,OAjBH,EAiBGA,EAAMoM,kBAAkBne,KAAIiJ,GAC3B,eAAC,GAAO2b,OAAR,CAAiC/f,MAAOoE,EAAOiH,KAA/C,SACGjH,EAAOiH,MADUjH,EAAOiH,WCpDtB0nB,GAA2C,EAAGnS,WAAU1H,WAAUlZ,YAC7E,MAAM,EAAEpF,GAAMqf,YAAe,WAEvB,qBAAES,GAAyBD,KAE3Bha,EAAU4P,OAAOkU,OAAO7J,GAE9B,OACE,eAAC,KAAD,CACEkG,SAAUA,EACV1H,SAAUA,EACVlZ,MAAOA,EACP2gB,YAAa/lB,EAAE,4BACf2iB,MAAO,CAAEW,MAAO,QALlB,SAOGzd,EAAQtF,KAAIonB,GACX,eAAC,KAAOxC,OAAR,CAAkC/f,MAAOuiB,EAAOviB,MAAhD,SACGuiB,EAAOhI,OADUgI,EAAOviB,aCxB3B2rB,KAAMkD,IAAY37B,KAEpBy4B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;EAK1Bm+B,GAAyC,EAAGC,YAChD,eAAC,GAAD,UAAOA,I,eCTT,MAAMC,GAAgB,IAC3B,eAAC,KAAD,CAAKrV,QAAQ,SAAb,SACE,eAAC,KAAD,UACE,eAAC,GAAD,SCFE8N,KAAF,IAAWz4B,KAEXigC,GAAejW,aAAOyO,GAAM;;;EAKrByH,GAAyB,KACpC,MAAM,EAAEx4B,GAAMqf,YAAe,SAE7B,OACE,gBAACkZ,GAAD,WACGv4B,EAAE,iCACH,eAAC,KAAD,CAAMwzB,GAAG,SAAT,SAAmBxzB,EAAE,+B,eCFpB,MAAMy4B,GAAkC,EAC7ChG,UACAiG,YACAzT,eACAqM,cAAa,KACVsB,MAEH,MAAM,EAAE5yB,GAAMqf,YAAe,UAC7B,OACE,eAACmT,GAAD,IACMI,EACJ5M,SAAUsL,EAEV7gB,KAAK,QACLsV,YAAa/lB,EAAE,gBACfilB,aAAcA,EACdwN,QAASA,EACTC,WAAY,eAACiG,GAAA,EAAD,CAAchW,MAAO+V,O,eCnBhC,MAAME,GAAqC,EAAGnG,UAASiG,eAAc9F,MAC1E,MAAM,EAAE5yB,GAAMqf,YAAe,UAE7B,OACE,eAACmT,GAAD,IACMI,EAEJniB,KAAK,WACLsV,YAAa/lB,EAAE,mBACfyyB,QAASA,EACTC,WAAY,eAACmG,GAAA,EAAD,CAAgBlW,MAAO+V,IACnCr4B,KAAK,cCvBEy4B,GAAoB,KAC/B,MAAM,OAAE5pB,GAAW6O,eAEnB,MADkB,CAAE6E,MAAO1T,EAAOhW,SCG5B20B,MAAOC,IAAax1B,KAEtBw7B,GAAUxR,aAAOmM,KAAK;;;;;EAOtBZ,GAAQvL,aAAOwL,GAAU;WACpBzK,GAASA,EAAMpU,MAAMC,OAAO7U;;;;;;EAa1B0+B,GAAgC,EAAGj/B,QAAOk/B,iBAAgB,MACrE,MAAMN,EAAYI,KAClB,OACE,gBAAC,GAAD,WACE,gBAAC,KAAD,CAAK7V,QAAQ,SAAb,UACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAO+K,MAAO,EAAd,SAAkBl0B,MAEpB,eAAC,KAAD,UACE,eAAC6+B,GAAA,EAAD,CAAchW,MAAO,CAAE3oB,SAAU,UAAW0+B,UAG/CM,GAAiB,eAACR,GAAD,SCpChB3K,MAAF,GAASkD,KAAMkD,IAAY37B,KAQpB2gC,GAAkB3W,aAAOC,KAAK;IACvC9S;0BACsBypB;;;;;EAObC,GAAa7W,aAAO5pB,KAAM;;;;;EAO1B0gC,GAAU9W,aAAOC,KAAK;;;sBAGbc,GAASA,EAAMpU,MAAMC,OAAOhV;;EAIrCm/B,GAAgB/W,aAAOC,KAAK;;EAI5B+W,GAAchX,aAAOC,KAAK;;;;EAM1BgX,GAAYjX,aAAOC,KAAK;;IAEjC9S;;;EAKS+pB,GAAiBlX,aAAOuL,GAAO;;WAEjCxK,GAASA,EAAMpU,MAAMC,OAAOjV;;EAI1Bw/B,GAAmBnX,KAAOkL,GAAI;;;;;;sBAMrBnK,GAASA,EAAMpU,MAAMC,OAAOjV;EAGrC65B,GAAUxR,aAAOmM,KAAK;;;;;;EAgBtB8J,GAAejW,cAJM,EAAG7iB,WAAUmzB,KACtC,eAAC,GAAD,IAAaA,KAG8B;;;WAGzCvP,GAAUA,EAAM5jB,MAAQ4jB,EAAMpU,MAAMC,OAAOxU,cAAWoV;wBC5E1D,MCPM4pB,GAAiB5nB,IAAI;;;;;;EAQrBxH,GAAQwH,IAAI;;;;;;;;;;;;;;;;;;;ECPZ6nB,GAAcrX,aAAOzT,KAAQ;;EAI7B+qB,GAAWtX,aAAOiW,GAAc;;EAIhC3U,GAAQtB,aAAOwT,KAAU;;;;EAMzB+D,GAAiBvX,aAAOiW,GAAc;;;EAKtCuB,GAAaxX,aAAOyX,KAAM;;;ECd1BC,GAAkB,KAC7B,MAAMtB,EAAYI,MACZ,EAAE94B,GAAMqf,YAAe,UAEvB,QAAEoT,EAAF,aAAWwH,GHHS,MAC1B,MAAM,EAAEj6B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1CzpB,MAAOwpB,OAAaxpB,MAAM3Q,EAAE,sBAAsBq6B,SAASr6B,EAAE,yBAC7Ds6B,SAAUH,OAEPI,IACCn4B,EACApC,EAAE,wBAAyB,CAAEw6B,UAAWp4B,KAEzCi4B,SAASr6B,EAAE,2BAGhB,OAAOy6B,aAAc,CAAEC,SAAUC,aAAYT,MGXXU,IAC3B7qB,GAAO,QAAEwC,EAAF,MAAW9S,ICRH,MACtB,MAAO,CAAEkZ,GAAgBrB,GAAgBnU,IAEnC,MAAE4M,GAAUI,GAAYmB,iBAC9B,OAAO+H,aAAmC/O,GAAO,CAC/CyI,YAAaT,IAAS,IAAD,IACnBvC,EAAM,CACJS,GAAI8B,EAAKvC,MAAM4C,KAAKnC,GACpBG,MAAO2B,EAAKvC,MAAM4C,KAAKhC,MACvBF,KAAM6B,EAAKvC,MAAM4C,KAAKlC,KACtBC,SAAU4B,EAAKvC,MAAM4C,KAAKjC,SAC1BE,eAAc,UAAE0B,EAAKvC,MAAM4C,KAAKO,wBAAlB,aAAE,EAAkCC,aAAa3C,GAC/DK,iBAAgB,UAAEyB,EAAKvC,MAAM4C,KAAKO,wBAAlB,aAAE,EAAkCC,aAAa1C,OAEnEkI,EAAarG,EAAKvC,MAAMxC,QAE1Bb,QAASjN,GAASG,QAAQC,IAAIJ,MDRIo7B,IAElCtoB,QAASuoB,EADL,wBAEJC,EAFI,kBAGJC,EAHI,eAIJC,EAJI,gBAKJC,GEd4B,MAC9B,MAAMC,EAAQ3pB,KACRjE,EAAQ4tB,EAAMC,IAAI,SAClBF,EAAkBC,EAAMC,IAAI,UAC5B,EAAEp7B,GAAMqf,YAAe,UAEtBgc,GAAe,QAAE9oB,EAAF,KAAWD,IAAU+G,aACzCqgB,GACA,CACE4B,YAAa,QAIjB/gB,sBAAU,KACJhN,GACF8tB,EAAc,CAAE5oB,UAAW,CAAElF,aAE9B,CAACA,EAAO8tB,IAEX,MAAML,KAAqB,OAAC1oB,QAAD,IAACA,OAAD,EAACA,EAAM+oB,cAAcE,SAMhD,MAAO,CACLhpB,UACAyoB,oBACAD,wBANE/6B,EAD4Bg7B,EAC1B,iCACA,uCAMJC,iBAAkB1tB,EAClB2tB,oBFfEM,GACEC,EAAYjiB,KAEZkiB,EAAeZ,EAAsB,eAACtY,GAAD,IAAauY,EAElDY,EAAU1B,GAAa2B,GAAe7rB,EAAM,CAAE0C,UAAWmpB,MAQ/D,OACE,wCACIH,GACA,gBAAC7B,GAAD,WACG55B,EAAE,qCACH,eAAC85B,GAAD,CAAYtG,GAAG,SAAf,SAAyBxzB,EAAE,uCAC1BA,EAAE,wCAGP,gBAAC,GAAD,CAAOu2B,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAACiyB,GAAD,CACEhG,QAASA,EACTiG,UAAWA,EACXzT,aAAc+V,GAAqBE,EAAkBA,OAAkBprB,IAEzE,eAAC8oB,GAAD,CAAmBnG,QAASA,EAASiG,UAAWA,EAAWmD,QArBnCC,IACd,UAAVA,EAAEvkB,KACJokB,OAoBE,eAAChC,GAAD,CAAapnB,QAASA,EAASlS,KAAK,UAAUgkB,QAASsX,EAAvD,SACG37B,EAAE,8BAGNP,GACC,gBAACo6B,GAAD,CAAgBp6B,OAAK,EAArB,UACGO,EAAE,6BADL,IACmC,wBAChCA,EAAE,6BAEH,oBAAG8M,KAAK,uBAAR,8BAGJ,eAAC,GAAD,CAAcrN,MAAOw7B,IAAmBD,EAAxC,SACGC,GAAkBS,IAErB,eAAC,GAAD,UACE,eAAC,KAAD,CAAMlI,GAAG,kBAAT,SAA4BxzB,EAAE,oCGjEzB+7B,GAAezZ,aAAOzT,KAAQ;;EAI9B+U,GAAQtB,aAAOwT,KAAU;;;;;ECHzBkG,GAASlqB,IAAI;;;;;;;;;;;;;;;;;;;;ECObmqB,GAAmB,KAC9B,MAAMvD,EAAYI,MACV94B,EAAGg3B,GAAY3X,YAAe,WAChC,EAAErf,EAAF,KAAKoL,GAASiU,YAAe,SAE7B8b,EAAQ3pB,KACRjE,EAAQ4tB,EAAMC,IAAI,SAClBzqB,EAAQwqB,EAAMC,IAAI,UAClB,QAAE3I,EAAF,aAAWwH,GCLWiC,KAC5B,MAAM,EAAEl8B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1C3pB,KAAM0pB,OAAaE,SAASr6B,EAAE,yBAC9B0Q,SAAUypB,OAAaE,SAASr6B,EAAE,yBAClC2Q,MAAOwpB,OAAaxpB,MAAM3Q,EAAE,sBAAsBq6B,SAASr6B,EAAE,yBAC7Ds6B,SAAUH,OAEPI,IACCn4B,EACApC,EAAE,wBAAyB,CAAEw6B,UAAWp4B,KAEzCi4B,SAASr6B,EAAE,2BAGhB,OAAOy6B,aAAc,CAAEC,SAAUC,aAAYT,GAAmBgC,mBDX9BC,CAAc,CAAExrB,MAAK,OAAEA,QAAF,IAAEA,IAAS,MAC3DyrB,GAAQ,QAAE7pB,IEPM,MACvB,MAAO,CAAEoG,GAAgBrB,GAAgBnU,GACnCgV,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,UAEvB,MAAEtP,GAAUI,GAAYmB,iBAC9B,OAAO+H,aAAqC2iB,GAAQ,CAClDjpB,YAAa,EAAGqpB,OAAQC,MAAsB,IAAD,EACN,IAArC,iBAAIA,EAAe1pB,YAAnB,aAAI,EAAqB2pB,aACvBvsB,EAAM,CACJS,GAAI6rB,EAAe1pB,KAAKnC,GACxBG,MAAO0rB,EAAe1pB,KAAKhC,MAC3BF,KAAM4rB,EAAe1pB,KAAKlC,KAC1BC,SAAU2rB,EAAe1pB,KAAKjC,SAC9BE,eAAc,UAAEyrB,EAAe1pB,KAAKO,wBAAtB,aAAE,EAAsCC,aAAa3C,GACnEK,iBAAgB,UAAEwrB,EAAe1pB,KAAKO,wBAAtB,aAAE,EAAsCC,aAAa1C,OAEhEkI,EAAa0jB,EAAe9uB,QAG9B4K,EAAS,wBAElBzL,QAAS,CAACjN,EAAO88B,KAAmB,IAAD,MACjC,MAAMC,EAzBmB,wBA4BvB,UAAA/8B,EAAMkN,qBAAN,mBAAsB,UAAtB,mBAA0B8vB,WAAWC,iBAArC,eAAgDC,YAElDp9B,EAAaC,aACXC,EACA88B,EACAC,EAAoBx8B,EAAE,mCAAgC8P,OFxB9B8sB,GAC9B,OACE,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAOrG,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAACgsB,GAAD,CAEE/hB,KAAK,OACLsV,YAAaiR,EAAQ,oBACrBvE,QAASA,EACTC,WAAY,eAAC/M,GAAA,EAAD,CAAchD,MAAO+V,IACjClyB,KAAK,QACLmsB,YAAU,IAEZ,eAACH,GAAD,CAEE/hB,KAAK,WACLsV,YAAaiR,EAAQ,mBACrBvE,QAASA,EACTjsB,KAAK,QACLmsB,YAAU,EACVD,WAAY,eAAC/M,GAAA,EAAD,CAAchD,MAAO+V,MAEnC,eAACD,GAAD,CAAgBhG,QAASA,EAASiG,UAAWA,EAAWlyB,KAAK,QAAQ8qB,aAAc3gB,IACnF,eAACioB,GAAD,CAAmBnG,QAASA,EAASiG,UAAWA,EAAWlyB,KAAK,UAChE,eAACu1B,GAAD,CACExpB,QAASA,EACTlS,KAAK,UACLgkB,QAAS4V,GAAa4C,GACpBT,EAAO,CAAE3pB,UAAW,CAAEoqB,gBAAetvB,QAAOoiB,OAAQvkB,EAAKgW,cAJ7D,SAOGphB,EAAE,8BAGP,eAACw4B,GAAD,QGlDOsE,GAAwB,KACnC,MAAM,EAAE98B,GAAMqf,YAAe,SAC7B,OAAO,eAAC0Z,GAAD,CAAcj/B,MAAOkG,EAAE,yBAA0Bg5B,eAAe,KCC5D+D,GAA0BjrB,IAAI;;;;;;ECQrCkrB,GAAwB1a,aAAOzT,KAAQ;;EAIvC+U,GAAQtB,aAAOwT,KAAU;;;;EAMlBmH,GAA2B,KACtC,MAAMvE,EAAYI,MACZ,EAAE94B,EAAF,KAAKoL,GAASiU,YAAe,SAE7BlH,EAAWC,gBAEX,QAAEqa,EAAF,aAAWwH,GC1BkB,MACnC,MAAM,EAAEj6B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1CzpB,MAAOwpB,OAAaxpB,MAAM3Q,EAAE,sBAAsBq6B,SAASr6B,EAAE,2BAG/D,OAAOy6B,aAAQ,CAAEC,SAAUC,aAAYT,MDmBLgD,IAE3BC,GAAuB,QAAE5qB,IAAa8G,aAG3C0jB,GAAyB,CACzBhqB,YAAa,IAAMoF,EAAS,kCAC5BmjB,YAAa,QAGf,OACE,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAO/E,UAAU,WAAW/vB,KAAK,QAAjC,UACE,eAACiyB,GAAD,CAAgBhG,QAASA,EAASiG,UAAWA,IAC7C,eAACsE,GAAD,CACEzqB,QAASA,EACTlS,KAAK,UACLgkB,QAAS4V,GAAa,EAAGtpB,WACvBwsB,EAAsB,CAAE1qB,UAAW,CAAE9B,QAAOgf,OAAQvkB,EAAKgW,cAJ7D,SAOGphB,EAAE,sCAGP,eAACw4B,GAAD,QEnDO4E,GAAkC,KAC7C,MAAM,EAAEp9B,GAAMqf,YAAe,SAE7B,OAAO,eAAC0Z,GAAD,CAAcj/B,MAAOkG,EAAE,sCCHnBq9B,GAAkBvrB,IAAI;;;;;;;;;;;;;ECU7BwrB,GAA0Bhb,aAAOzT,KAAQ;;EAIzC+U,GAAQtB,aAAOwT,KAAU;;;;EAMlByH,GAA2B,KAAO,IAAD,EAC5C,MAAM7E,EAAYI,MACZ,EAAE94B,GAAMqf,YAAe,SAEvBlH,EAAWC,eAEX7K,EAAK,UADGiE,KACM4pB,IAAI,gBAAb,QAAyB,IAE9B,QAAE3I,EAAF,aAAWwH,GCrBkB,MACnC,MAAM,EAAEj6B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1CE,SAAUH,OAEPI,IACCn4B,EACApC,EAAE,wBAAyB,CAAEw6B,UAAWp4B,KAEzCi4B,SAASr6B,EAAE,2BAGhB,OAAOy6B,aAAc,CAAEC,SAAUC,aAAYT,MDQXsD,IAE3BC,GAAgB,QAAElrB,EAAF,MAAW9S,IAAW4Z,aAC3CgkB,GACA,CACEtqB,YAAa,IAAMoF,EAAS,UAC5BzL,QAASnN,EAAaC,aACtBk+B,QAAS,CACPtwB,QAAS,CACPM,cAAgB,UAASH,QAMjC,OACE,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAOgpB,UAAU,WAAW/vB,KAAK,QAAjC,UACE,eAACoyB,GAAD,CAAmBnG,QAASA,EAASiG,UAAWA,IAChD,eAAC4E,GAAD,CACE/qB,QAASA,EACTlS,KAAK,UACLgkB,QAAS4V,GAAa,EAAGK,cACvBmD,EAAe,CAAEhrB,UAAW,CAAElF,QAAO+sB,gBAJzC,SAOGt6B,EAAE,mCAEJP,GAAS,eAAC,GAAD,CAAcA,OAAK,EAAnB,SAAqBO,EAAE,qCAEnC,eAACw4B,GAAD,QErCOmF,GAAwB,KACnC,MAAM,EAAE39B,GAAMqf,YAAe,UAEvB,OAAExP,GAAWoI,KAEnB,OAAIpI,EAAe,eAAC,KAAD,CAAU2jB,GAAG,OAAOzxB,SAAO,IAG5C,gBAACk3B,GAAD,WACE,eAACG,GAAD,IACA,gBAACC,GAAD,WACE,eAACD,GAAD,IACA,eAACD,GAAD,CAAYyE,UAAW,CAAEpkC,QAAS,EAAGrB,OAAQ,QAA7C,SACE,gBAACmhC,GAAD,WACE,eAACC,GAAD,UACE,eAACC,GAAD,UAAiBx5B,EAAE,2BAErB,gBAACy5B,GAAD,WACE,eAACnB,GAAD,IACA,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOnI,OAAK,EAAC0N,QAAS,eAAC7D,GAAD,MACtB,eAAC,KAAD,CAAO93B,KAAK,SAAS27B,QAAS,eAAC5B,GAAD,MAC9B,eAAC,KAAD,CAAO/5B,KAAK,eAAe27B,QAAS,eAACf,GAAD,MACpC,eAAC,KAAD,CAAO56B,KAAK,kBAAkB27B,QAAS,eAACZ,GAAD,MACvC,eAAC,KAAD,CAAO/6B,KAAK,0BAA0B27B,QAAS,eAACT,GAAD,MAC/C,eAAC,KAAD,CAAOl7B,KAAK,kBAAkB27B,QAAS,eAACN,GAAD,iBAK/C,eAACnE,GAAD,OAEF,eAACA,GAAD,Q,yBCpDN,MAAQvL,MAAF,IAAYv1B,KAELgB,GAAQgpB,aAAOwb,GAAW;;;EAK1Bpa,GAAcpB,aAAOuL,GAAO;;;;ECFnCkQ,GAAgBzb,aAAOC,KAAK;;;EAK5BiO,GAAQlO,KAAOmO,GAAI;;;;;EAOnBhiB,GAAS6T,aAAOiC,KAAW;;;;;;;;;EAW3BzrB,GAAQwpB,aAAO0b,KAAW;;EAcnBC,GAA+B,EAC1CpN,QACAqN,gBACAzL,UACA0L,kBACAC,cACAC,sBACAC,6BAEA,MAAM,EAAEt+B,GAAMqf,YAAe,qBACvB,UAAE3F,EAAF,QAAanH,GAAYkH,KAE/B,OACE,gBAACskB,GAAD,CAAelG,OAAQ,GAAvB,UACE,eAAC,KAAD,UACE,eAACxG,GAAD,CACEv3B,MAAOkG,EAAE,eACT6wB,MAAOA,EACPvS,SAAU4f,EACV5M,WAAY8M,EACZ53B,KAAK,YAGT,gBAAC,KAAD,CAAK+3B,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,wBACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC7G,GAAD,CACEktB,SAAUoY,EACV53B,KAAK,QACL2wB,OAAQ,KACS,OAAfgH,QAAe,IAAfA,OACAhH,QAEEnE,EACJ1U,SAAUgV,GAAShV,EAAS9Y,GAA+B8tB,EAAMrL,OAAO7iB,iBAMlF,gBAAC,KAAD,CAAKm5B,KAAK,QAAV,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,oBACrB,eAAC,KAAD,CAEEyQ,KAAK,UACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,UAAWqY,GAAuBD,EAClC53B,KAAK,QACL+L,QAASA,EACT4kB,OAAQ,KACNA,QAEEnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BrO,aAAcqZ,EAThB,gBAWG5kB,QAXH,IAWGA,OAXH,EAWGA,EAAWnZ,KAAI+gB,GACd,gBAAC,GAAO6D,OAAR,CAAgC/f,MAAOkc,EAAQ9Q,GAA/C,UACE,eAAC,GAAD,CAAOgV,IAAK5hB,GAAUC,MAAMyd,EAAQ9Q,MACnC8Q,EAAQ7Q,OAFS6Q,EAAQ9Q,mBClHjCguB,GAAiB1sB,IAAI;;;;;;;;;;;;;;;;;ECMrB2sB,GAAoBC,IAC/B,MAAM,iBAAEre,GAAqBrM,GAAqBC,0BAC5CtB,EAAOC,MAEN+rB,EAAuBC,GAAkBvlB,aAG9CmlB,GAAgB,CAChBzrB,YAAaT,IACX,MAAMQ,EAAYR,EAAKusB,cAAcx1B,QAAQmH,GACvC2Q,EAAY7O,EAAKusB,cAAcx1B,QAAQiY,QAAQ9Q,GAC/CsuB,EAAkBxsB,EAAKusB,cAAcx1B,QAAQiY,QAAQC,KACrDwd,EAAczsB,EAAKusB,cAAcx1B,QAAQoH,KAC/C4P,EAAiB,CAAE7P,GAAIsC,EAAWqO,YAAWC,SAAU0d,EAAiBruB,KAAMsuB,IAC9EL,KAEFtjB,OAAQ,CAACxN,GAAS0E,KAAM+I,MACjBA,GAELzN,EAAMmP,OAAqB,CAEzBvM,GAAI5C,EAAMoP,SAASrK,GACnBqE,OAAQ,CACN9N,eAAe81B,GACb,MAAMC,EAAiB,CACrB7qB,KAAM9L,GAAgBsL,MACtBvK,QAASgS,EAASwjB,cAAcx1B,QAChCmS,WAAY,eAEd,OAAKwjB,EACE,IAAIA,EAAsBC,GADC,CAACA,QAM3CvyB,QAASnN,EAAaC,eAOxB,MAAO,CAAEq/B,cAJa,CAACK,EAAgCC,KACrDR,EAAsB,CAAElsB,UAAW,CAAEysB,aAAYC,mBAGxBP,ICvChBQ,GAAuB,KAClC,MAAM,EAAEp/B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1C2E,YAAa5E,OAAaE,SAASr6B,EAAE,yBACrCshB,QAAS6Y,OAAaE,SAASr6B,EAAE,2BAGnC,OAAOy6B,aAAkB,CAAEC,SAAUC,aAAYT,MChBtCmF,GAAUvtB,IAAI;;;;;;;;;ECDdwtB,GAAyB,KACpC,MAAM,KAAEhtB,EAAF,QAAQC,GAAYC,aAAkB6sB,IAO5C,MAAO,CACL9sB,UACAgtB,eAPkB,OAAGjtB,QAAH,IAAGA,OAAH,EAAGA,EAAMktB,QAAQ7lB,QAAQpZ,KAAIk/B,IAAM,CACrDr6B,MAAOq6B,EAAOjvB,GACdmP,MAAO8f,EAAOhvB,SAMd+uB,QAAO,OAAEltB,QAAF,IAAEA,OAAF,EAAEA,EAAMktB,QAAQ7lB,UCJd+lB,GAA+B,EAAGhB,gBAAwB,IAAD,EACpE,MAAM/rB,EAAOC,MACP,YAAEiD,GAAgB/B,MAClB,qBAAET,GAAyBL,MAC3B,cAAE6rB,EAAF,QAAiBtsB,GAAYksB,GAAiBC,IAC9C,QAAEjM,EAAF,aAAWwH,EAAX,MAAyB0F,GCCe,MAAO,IAAD,IACpD,MAAM,EAAE3/B,GAAMqf,YAAe,WACvB,YAAExJ,GAAgB/B,MAClB,qBAAET,GAAyBL,KAE3BknB,EAAmBC,OAAaC,MAAM,CAC1C2E,YAAa5E,OAAaE,SAASr6B,EAAE,yBACrCshB,QAAS6Y,OAAaE,SAASr6B,EAAE,yBACjCy/B,QAAQ,UAAApsB,EAAqBG,4BAArB,eAA2CoC,SAC/CukB,OAAaE,SAASr6B,EAAE,yBACxBm6B,OACJyF,UAAWzF,OAAaE,SAASr6B,EAAE,yBACnC6/B,aAAchqB,EAAYxB,uBACtB8lB,OAAaE,SAASr6B,EAAE,yBACxBm6B,OACJ2F,uBAAuB,UAAAzsB,EAAqBE,WAArB,eAA0BqC,SAC7CukB,OAAaE,SAASr6B,EAAE,yBACxBm6B,OACJ4F,YAAa5F,SAGf,OAAOM,aAAQ,CAAEC,SAAUC,aAAsBT,MDtBR8F,IACnC,eAAET,EAAgBhtB,QAAS0tB,GAAqBX,MAE9ChtB,KAAM4tB,EAAyB3tB,QAAS4tB,GEfX,GACrCrmB,WACApH,WAKA,MAAM,KAAEJ,EAAF,QAAQC,GAAYC,aAA+BR,GAAuB,CAC9ES,UAAW,CAAEqH,YACbpH,SAGF,MAAO,CACLH,UACAD,KAAI,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAM8tB,qBAAqBzmB,UFEjC0mB,CAAwB,CACtB3tB,KAAMmD,EAAYP,mBAGhBgrB,EAAgCX,IAAQG,sBACxCS,EAAmBZ,IAAQF,OAE3Be,EAAiB7uB,oBAAQ,KAAO,IAAD,EACD,EAOC,IAPnC,OAAIkE,EAAYP,iBACd,OAAO3C,QAAP,IAAOA,GAAP,UAAOA,EAAM6sB,eAAb,aAAO,EAAgB,GAAGhvB,GAExBqF,EAAYN,sBAAZ,UAAmClC,EAAqBG,4BAAxD,aAAmC,EAA2CoC,SACzE2qB,EAGLD,EACF,OAAOJ,QAAP,IAAOA,GAAP,UAAOA,EAAyBzrB,MAC9BgsB,GAAcA,EAAWjwB,KAAO8vB,WADlC,iBAAO,EAEJd,eAFH,aAAO,EAEM,GAAGhvB,QAHlB,IAMC,CACD0vB,EADC,UAED7sB,EAAqBG,4BAFpB,aAED,EAA2CoC,QAC3CC,EAAYP,iBACZO,EAAYN,oBACZ+qB,EACAC,EANC,OAOD5tB,QAPC,IAODA,OAPC,EAODA,EAAM6sB,WAGF,WAAEzlB,EAAYxH,QAASmuB,GAAwB7mB,GAAc2mB,GAE7DG,EAAgB,OAAG5mB,QAAH,IAAGA,OAAH,EAAGA,EAAYxZ,KAAIq/B,IAChC,CAAEjgB,MAAOigB,EAAUnvB,KAAMrL,MAAOw6B,EAAUpvB,OAG7CowB,EAA8BjvB,oBAAQ,KAC1C,MAAMkvB,EAAsBhrB,EAAYP,iBACpC,CAAE9E,GAAImC,EAAKnC,GAAIS,SAAW,GAAE0B,EAAKlC,QAAQkC,EAAKjC,iBAC9CZ,EAEJ,GAAI+F,EAAYP,kBAAoBurB,EAAqB,CAEvD,MADgB,CAAC,CAAEz7B,MAAK,OAAEy7B,QAAF,IAAEA,OAAF,EAAEA,EAAqBrwB,GAAImP,MAAK,OAAEkhB,QAAF,IAAEA,OAAF,EAAEA,EAAqB5vB,WAIjF,cAAOivB,QAAP,IAAOA,OAAP,EAAOA,EAAyB3/B,KAAIkgC,IAAU,CAC5C9gB,MAAQ,GAAE8gB,EAAWhwB,QAAQgwB,EAAW/vB,WACxCtL,MAAOq7B,EAAWjwB,SAEnB,CAAC0vB,EAAyBrqB,EAAYP,iBAAkB3C,EAAKnC,GAAImC,EAAKjC,SAAUiC,EAAKlC,OAExF,MAAO,CACLkC,OACAkD,cACAtD,UACAkgB,UACAoM,gBACA5E,eACA2G,8BACArB,iBACAiB,iBACAG,mBACAR,gCACAF,mBACAS,sBACAI,gCAAiCR,IGrExBS,GAAsC,EAAGrC,YAAWza,WAAU+c,qBACzE,MAAM,EAAEhhC,GAAMqf,YAAe,qBACtBwR,EAAOoQ,GAAY1wB,uBACnB2wB,EAAWC,GAAgB5wB,uBAE5B,QAAEkiB,EAAF,aAAWwH,GAAiBmF,KAE5BzsB,EAAOC,MACP,cAAEisB,EAAF,QAAiBtsB,GAAYksB,GAAiBC,GAEpD,OACE,gBAAC,GAAD,CACE5kC,MAAwBkG,EAAjBghC,EAAmB,0BAA+B,yBACzD9c,MAAI,EACJE,OAAQ,KACRH,SAAUA,EACVE,UAAQ,EALV,UAOE,eAAC,GAAD,CAAa6J,MAAO,EAApB,SACoBhuB,EAAjBghC,EAAmB,2BAAgC,4BAEtD,eAAC/C,GAAD,CACEpN,MAAOA,EACPqN,cAAe,CAACkD,EAAargC,KAC3BkgC,EAASG,GACTD,EAAapgC,IAEf0xB,QAASA,EACT4L,qBAAmB,IAErB,eAAC,KAAD,CAAKpb,QAAQ,MAAb,SACE,eAAC,GAAD,CACE5iB,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GAAa,EAAG8E,cAAazd,aACpCud,EACE,CAAEpuB,KAAMsuB,EAAazd,QAASA,EAAsB+f,KAAMH,GAC1DvuB,EAAKnC,MANX,SAUGxQ,EAAE,0B,yBChDb,MAAM+9B,GAAgBzb,aAAOC,KAAK;;;EAK5BiO,GAAQlO,KAAOmO,GAAI;;;;;EAOnBhiB,GAAS6T,aAAOiC,KAAW;;;;;;EAQ3B+J,GAAUhM,aAAOC,KAAK;;EAkCf+e,GAA8B,EACzC7O,UACA8O,sBACAhB,mBACAI,mBACAa,sBACAC,eACAtD,kBACAuD,0BACAC,wBACAC,qBACAhB,8BACAd,wBACA+B,gBACA1B,gCACAF,mBACAS,sBACAI,gCACAgB,yBACAC,qBACK,IAAD,IACJ,MAAM,EAAE/hC,GAAMqf,YAAe,qBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,UAAE3F,EAAF,QAAanH,GAAYkH,MACzB,qBAAEpG,GAAyBL,MAC3B,YAAE6C,GAAgB/B,MAClB,OAAE5E,EAAF,WAAUC,GAAe4O,eAEzBikB,EAAsB58B,IAC1B,IAAKA,EAAO,MAAO,GACnB,MAAM68B,EAAcz8B,GAAgCJ,GACpD,IAAK68B,EAAa,MAAO,GAIzB,OAHwBjL,EAAQ,+BAAgC,CAC9DkL,IAAKD,KAKT,OACE,uCACE,gBAAC,GAAD,CAAepK,OAAQ,GAAvB,UACE,eAAC,GAAD,UACE,gBAAC,KAAD,CAAK0G,KAAM,EAAX,UACE,gBAAC,KAAD,CAAKA,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,qBACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACL2wB,OAAQ,KACS,OAAfgH,QAAe,IAAfA,OACAhH,QAEEnE,EACJ1U,SAAUgV,GACRhV,EAAS9Y,GAA+B8tB,EAAMrL,OAAO7iB,iBAOjE,gBAAC,KAAD,CAAKm5B,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,wBACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE2e,SAAUA,EACV6Y,OAAQ,KACgB,OAAtB2K,QAAsB,IAAtBA,OACA3K,KAEF7V,QAASygB,EACTI,WAAY,CACVC,OAAS,aAAYlzB,EAAOhW,QAC5BoqB,MAAO,OACPnrB,OAAQ,OACRD,aAAciX,EAAWjX,iBAEvB86B,iBASjB,UAAA3f,EAAqBE,WAArB,eAA0BqC,UACzB,gBAAC,KAAD,CAAK+e,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,gBACrB,eAAC,KAAD,CAEEyQ,KAAK,eACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,SAAQ/xB,WAAU4tB,GACrCC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACEU,KAAK,OACLmG,KAAK,QACL2wB,OAAQ,KACiB,OAAvBuK,QAAuB,IAAvBA,OACAvK,KAEF/xB,MAAO48B,EAAmB58B,MACtB4tB,EACJ1U,SAAUgV,GAAShV,EAAS0jB,EAAmB1O,EAAMrL,OAAO7iB,qBASxEq8B,IAAD,UAAiBpuB,EAAqBE,WAAtC,aAAiB,EAA0BqC,UAC1C,eAAC,KAAD,UACE,gBAAC,KAAD,CAAK2oB,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,gCACrB,eAAC,KAAD,CAEEyQ,KAAK,wBACLgiB,QAASA,EACTxN,aAAc6a,EACd/M,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,SAAUnQ,EAAYP,iBACtB/C,QAAS4tB,EACT35B,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAAS+6B,cASrBgB,GACA,gBAAC,KAAD,CAAK/J,OAAQ,GAAb,UACE,gBAAC,KAAD,CAAKlD,KAAM,EAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,oBACrB,eAAC,KAAD,CAEEyQ,KAAK,UACLgiB,QAASA,EACTxN,aAAcsc,EACdxO,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,UAAQ,EACRxf,KAAK,QACL+L,QAASA,EACT4kB,OAAQ,KACNA,QAEEnE,EACJ5tB,MAAOm8B,EART,gBAUG7nB,QAVH,IAUGA,OAVH,EAUGA,EAAWnZ,KAAI+gB,GACd,gBAAC,GAAO6D,OAAR,CAAgC/f,MAAOkc,EAAQ9Q,GAA/C,UACE,eAAC,GAAD,CAAOgV,IAAK5hB,GAAUC,MAAMyd,EAAQ9Q,MACnC8Q,EAAQ7Q,OAFS6Q,EAAQ9Q,eAUxC,gBAAC,KAAD,CAAKmkB,KAAM,EAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,mBACrB,eAAC,KAAD,CAEEyQ,KAAK,SACLgiB,QAASA,EACTxN,aAAcsb,EACdxN,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,OAFf,aAIN,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,WAEInQ,EAAYN,sBAAZ,UACAlC,EAAqBG,4BADrB,aACA,EAA2CoC,UAG/CrD,QAAS0tB,EACTz5B,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAASg8B,EACTz8B,MAAOm7B,YAMjB,gBAAC,KAAD,CAAK5L,KAAM,EAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,sBACrB,eAAC,KAAD,CAEEyQ,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,OAFf,eAIN,eAAC,KAAK9C,KAAN,CACE+C,eAAgBD,GAAc,QAC9BE,MACE,UAAA/f,EAAqBE,WAArB,eAA0BqC,SACtBkrB,IAA6B,OAAI5N,QAAJ,IAAIA,OAAJ,EAAIA,EAAYvzB,SADjD,OAEIuzB,QAFJ,IAEIA,OAFJ,EAEIA,EAAYvzB,QALpB,SAQE,eAAC,GAAD,CACE6G,KAAK,QACL+L,QAASmuB,EACTvJ,OAAQ,KACe,OAArBwK,QAAqB,IAArBA,OACAxK,KAEFnR,UAAU,UAAA3S,EAAqBE,WAArB,eAA0BqC,WAAYkrB,KAC5C9N,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAAS86B,EACT1b,aAAcuc,mBClTrBa,GAAqC,EAAG3D,YAAWza,eAAgB,IAAD,MAC7E,MAAM,EAAEjkB,GAAMqf,YAAe,qBACvB,cACJwf,EADI,QAEJtsB,EAFI,QAGJkgB,EAHI,aAIJwH,EAJI,eAKJuG,EALI,iBAMJG,EANI,4BAOJC,EAPI,YAQJ/qB,EARI,KASJlD,EATI,eAUJ4sB,EAVI,8BAWJY,EAXI,iBAYJF,EAZI,oBAaJS,EAbI,8BAcJI,GACEpB,GAA6B,CAAEhB,cAEnC,OACE,gBAAC,GAAD,CACE5kC,MAAOkG,EAAE,kCACTkkB,MAAI,EACJE,OAAQ,KACRH,SAAUA,EACVE,UAAQ,EALV,UAOE,eAAC,GAAD,CAAa6J,MAAO,EAApB,SAAwBhuB,EAAE,qCAC1B,eAACshC,GAAD,CACE7O,QAASA,EACT8N,iBAAkBC,EAClBG,iBAAgB,OAAEA,QAAF,IAAEA,IAAoB,GACtCb,sBAAuBjqB,EAAYP,iBAAmB3C,EAAKnC,QAAKV,EAChE8wB,4BAA2B,OAAEA,QAAF,IAAEA,IAA+B,GAC5DW,oBAAmB,oBAAE5uB,EAAKO,wBAAP,aAAE,EAAuBC,aAAamO,QAAQ9Q,UAA9C,QAAoD,GACvEuxB,eAAc,UAAEpvB,EAAKO,wBAAP,aAAE,EAAuBC,aAAamO,QAAQghB,QAAQh8B,cACpEu7B,cAAa,OAAEtC,QAAF,IAAEA,IAAkB,GACjCY,8BAA+BA,EAC/BF,iBAAkBA,EAClBS,oBAAqBA,EACrBI,8BAA+BA,IAEjC,eAAC,KAAD,CAAK7d,QAAQ,MAAb,SACE,eAAC,GAAD,CACE5iB,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GACP,EACE8E,cACAzd,UACAue,eACAD,YACAE,wBACAC,kBANF,aAQElB,EACE,CACEpuB,KAAMsuB,EACNzd,QAASA,EACT1Q,eAAc,UAAE+B,EAAKO,wBAAP,aAAE,EAAuBC,aAAa3C,GACpDqvB,aAAcA,EACVr6B,GAAgCq6B,QAChC/vB,EACJyyB,YAAa3C,EACbG,YAAaA,EAAe,IAAGA,SAAgBjwB,GAEjD+F,EAAYN,qBAAuBuqB,EAC/BA,EACAntB,EAAKnC,OAzBjB,SA6BGxQ,EAAE,gC,0BCpFN,MAAMwiC,GAAU1wB,IAAI;;;;;;;;GCMnB+b,MAAF,IAAYv1B,KAQZmqC,GAAiBngB,aAAOmM,KAAK;;mBAEhB,EAAGxf,WAAYA,EAAME,WAAWjX;;EAI7Cs4B,GAAQlO,aAAOogB,KAAU;mBACZ,EAAGzzB,WAAYA,EAAME,WAAWjX;;EAG7CyqC,GAAergB,aAAOsgB,KAAiB;;EAIvClf,GAAcpB,aAAOuL,GAAO;WACvB,EAAG5e,WAAYA,EAAMC,OAAO7U;;;;EAM1BwoC,GAAgD,EAC3D/vB,YACA4rB,YACAza,eAEA,MAAM,EAAEjkB,GAAMqf,YAAe,qBACvB,KAAE/M,EAAF,QAAQC,GAAYC,aAAoCgwB,GAAS,CACrE/vB,UAAW,CAAEjC,GAAIsC,KAGnB,OACE,eAACxZ,GAAD,CAAOQ,MAAK,OAAEwY,QAAF,IAAEA,OAAF,EAAEA,EAAMjJ,QAAQoH,KAAMyT,MAAI,EAACD,SAAUA,EAAUE,UAAQ,EAACC,OAAQ,KAA5E,UACI9R,GAAQC,EACR,eAAC,KAAD,IAEAD,GACE,uCACE,gBAAC,KAAD,CAAKulB,OAAQ,GAAIxH,MAAM,EAAvB,UACE,eAAC,KAAD,CAAKkO,KAAM,EAAX,SACE,eAACkE,GAAD,UACGnwB,EAAKjJ,QAAQg4B,KACZ,eAAC,GAAD,CAAO7b,IAAKlT,EAAKjJ,QAAQg4B,KAAMyB,SAAS,IAExC,eAAC,GAAD,QAIN,eAAC,KAAD,CAAKvE,KAAM,EAAX,SACE,eAAC,GAAD,CAAavQ,MAAO,EAApB,SAAwBhuB,EAAE,wBAG9B,eAAC,KAAD,CAAKijB,QAAQ,MAAb,SACE,eAAC,GAAD,CAAQ5iB,KAAK,UAAUgkB,QAASqa,EAAhC,SACG1+B,EAAE,0BChEb+1B,GAAgBzT,KAAOkL,GAAe;;;;;;;sBAOtB,EAAG70B,gBAAiBA;EAO7BoqC,GAA6B,EAAG1iC,OAAM2iC,sBACjD,MAAM,OAAE9zB,GAAW6O,eAEbklB,EAAsB,CAC1B,CAACp7B,GAAgBq7B,MAAOh0B,EAAOnT,IAAInB,kBACnC,CAACiN,GAAgBs7B,QAASj0B,EAAOnT,IAAIf,mBACrC,CAAC6M,GAAgBu7B,KAAMl0B,EAAOnT,IAAIlB,iBAQpC,OACE,eAAC,GAAD,CAAelC,YANe8pB,EAMoBugB,EAL7CvgB,EACEwgB,EAAoBxgB,GADJvT,EAAOhW,OAK9B,SACGmH,IAASoI,GAAW46B,YACnB,eAAC,GAAD,CAAiBzgB,MAAM,UAEvB,eAAC,GAAD,CAAUA,MAAM,YAVUH,QCxB1BsO,KAAMkD,IAAY37B,KAEbgrC,GAAchhB,aAAO2R,GAAS;WAChC,EAAGhlB,WAAYA,EAAMC,OAAO7U;;;EAKjCkpC,GAAuBjhB,KAAOkL,GAAI;sBAClB,EAAGve,WAAYA,EAAMC,OAAOjV;;mBAE/B,EAAGgV,WAAYA,EAAME,WAAWjX;EAMtCsrC,GAA+B,EAAGC,0BAC7C,MAAQzjC,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,eAAC,KAAD,CAEE5X,SAAUg8B,EAAoBx8B,cAAc7G,SAASK,YAAY,GACjE+G,UAAWi8B,EAAoBx8B,cAAc7G,SAASK,YAAY,GAClEijC,WAAW,EAJb,SAME,eAACH,GAAD,UACE,eAACD,GAAD,UACGtM,EAAQ,qBAAsB,CAAEkL,IAAK,CAAEv8B,KAAM89B,EAAoB99B,aAPjE89B,EAAoBtjC,QAAQqQ,KCrB1BmjB,GAASrR,aAAOqhB,KAAW;;EAI3B7P,GAAUxR,aAAOqhB,KAAU7P,QAAS;;EAIpC8P,GAAQthB,aAAOqhB,KAAUC,MAAO;sBACvB,EAAG30B,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;GCRxD80B,KAAMkD,IAAY37B,KAEpBy4B,GAAOzO,aAAO2R,GAAS;;WAElB,EAAGhlB,WAAYA,EAAMC,OAAOxU;EAGjCmpC,GAAkBvhB,aAAOC,KAAK;;;;EAavBuhB,GAAuC,EAAG7f,WAAU8f,WAAUtkC,QAAO8S,cAChF,MAAM,QAAEkgB,EAAF,aAAWwH,GCjBc,MAC/B,MAAM,EAAEj6B,GAAMqf,YAAe,UAEvB6a,EAAmBC,OAAaC,MAAM,CAC1C4J,eAAgB7J,OAEbI,IACCn4B,EACApC,EAAE,wBAAyB,CAAEw6B,UAAWp4B,KAEzCi4B,SAASr6B,EAAE,yBACds6B,SAAUH,OAEPI,IACCn4B,EACApC,EAAE,wBAAyB,CAAEw6B,UAAWp4B,KAEzCi4B,SAASr6B,EAAE,yBACdikC,gBAAiB9J,OAEd+J,MAAM,CAAC/J,KAAQ,aAAcn6B,EAAE,8BAC/Bq6B,SAASr6B,EAAE,2BAEhB,OAAOy6B,aAAc,CAAEC,SAAUC,aAAYT,MDNXiK,IAC5B,EAAEnkC,GAAMqf,YAAe,oBAE7B,OACE,gBAAC/lB,GAAD,CACEQ,MAAOkG,EAAE,6BACTkkB,MAAI,EACJC,UAAQ,EACRC,OAAQ,KACRH,SAAUA,EACVzd,KAAK,QANP,UAQE,gBAAC,KAAD,CAAKqxB,OAAQ,CAAC,EAAG,IAAjB,UACE,gBAAC,KAAD,CAAKlD,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,gDACrB,eAACwyB,GAAD,CAEE/hB,KAAK,iBACLsV,YAAa/lB,EAAE,8CACfyyB,QAASA,EACTpyB,KAAK,gBAGT,gBAAC,KAAD,CAAKs0B,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,4CACrB,eAACwyB,GAAD,CAEE/hB,KAAK,WACLsV,YAAa/lB,EAAE,0CACfyyB,QAASA,EACTpyB,KAAK,gBAGT,gBAAC,KAAD,CAAKs0B,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,+CACrB,eAACwyB,GAAD,CAEE/hB,KAAK,kBACLsV,YAAa/lB,EAAE,6CACfyyB,QAASA,EACTpyB,KAAK,gBAGRZ,GAAS,eAAC,GAAD,UAAOO,EAAE,sCAErB,eAAC6jC,GAAD,UACE,eAAC,GAAD,CAAQxjC,KAAK,UAAUkS,QAASA,EAAS8R,QAAS4V,EAAa8J,GAA/D,SACG/jC,EAAE,yBExEL6tB,MAAF,IAAYv1B,KAELorB,GAAcpB,aAAOuL,GAAO;;;;;EAO5BuW,GAAY9hB,aAAOmM,KAAK;;;;;EAOxB9K,GAAmBrB,aAAOsB,MAAOC,MAAM,CAClDrd,KAAM,IACL;;;;ECDG0zB,GAAmBC,OAAaC,MAAM,CAC1C3U,eAAgB0U,OAChB1pB,KAAM0pB,OAAaE,WACnB3pB,SAAUypB,OAAaE,aAGZgK,GAAwC,EAAGpgB,eAAgB,IAAD,EACrE,MAAMtR,EAAOC,MACP,EAAE5S,GAAMqf,YAAe,qBACrBrf,EAAGg3B,GAAY3X,YAAe,WAEhC,WAAEilB,EAAF,QAAc/xB,EAAd,MAAuB9S,GnK5BDsT,KAC5B,MAAOuxB,GAAY,QAAE/xB,EAAF,MAAW9S,IAAW4Z,aACvCtH,GACA,CACErF,QAASnN,EAAaC,aACtBuT,gBAIJ,MAAO,CAAEuxB,aAAY/xB,UAAS9S,UmKmBS8kC,CAActgB,IAE9CugB,EAAyBC,GAA8Bl0B,qBAAS,IAChEsgB,EAAOoQ,GAAY1wB,uBAEpB,aAAE0pB,EAAF,SAAgByK,EAAhB,QAA0BjS,GAAYgI,aAAQ,CAClDC,SAAUC,aAAsBT,IAChCgC,cAAe,CAAEzrB,KAAMkC,EAAKlC,KAAMC,SAAUiC,EAAKjC,YAGnD,OACE,uCACE,gBAACpX,GAAD,CAAOQ,MAAOkG,EAAE,SAAUkkB,MAAI,EAACC,UAAQ,EAACC,OAAQ,KAAMH,SAAUA,EAAhE,UACE,eAAC,GAAD,CAAa+J,MAAO,EAApB,SAAwBhuB,EAAE,cAC1B,gBAAC,KAAD,CAAK63B,OAAQ,GAAb,UACE,eAAC,KAAD,UACE,eAACxG,GAAD,CACEv3B,MAAOkG,EAAE,wBACTuxB,WAAS,EACT/qB,KAAK,QACLqqB,MAAK,iBAAEA,QAAF,IAAEA,IAASle,EAAK8S,sBAAhB,aAAkC3V,EACvCwO,SAAU,CAAC8iB,EAAargC,KACtBkgC,EAASG,GACTsD,EAAS,iBAAkB3jC,QAIjC,gBAACqjC,GAAD,WACE,gBAAC,KAAD,CAAKvM,OAAQ,GAAb,UACE,gBAAC,KAAD,CAAKlD,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOk9B,EAAQ,sBAC3B,eAACxE,GAAD,CACEC,QAASA,EACTxN,aAActS,EAAKlC,KAEnBA,KAAK,OACLsV,YAAaiR,EAAQ,oBACrBrE,YAAU,OAGd,gBAAC,KAAD,CAAKgC,KAAM,GAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOk9B,EAAQ,qBAC3B,eAACxE,GAAD,CACEC,QAASA,EACTxN,aAActS,EAAKjC,SAEnBD,KAAK,WACLsV,YAAaiR,EAAQ,mBACrBrE,YAAU,UAIhB,gBAAC,KAAD,WACE,eAAC5E,GAAD,CAAYj0B,MAAOk9B,EAAQ,kBAC3B,eAAC,KAAD,CAAOxwB,KAAK,QAAQwf,UAAQ,EAAC1C,MAAM,OAAOle,MAAOuN,EAAKhC,iBAI5D,gBAAC,GAAD,WACE,eAAC,GAAD,CAAQtQ,KAAK,UAAUgkB,QAAS,IAAMogB,GAA2B,GAAjE,SACGzkC,EAAE,4BAEL,eAAC,GAAD,CACEuS,QAASA,EACTlS,KAAK,UACLgkB,QAAS4V,GAAa,EAAGxU,iBAAgBhV,OAAMC,cAC7C4zB,EAAW,CACT7xB,UAAW,CACTjC,GAAImC,EAAKnC,GACTm0B,cAAe,CACblf,iBACAhV,OACAC,iBAVV,SAgBG1Q,EAAE,wBAIRwkC,GACC,eAACV,GAAD,CACE7f,SAAU,IAAMwgB,GAA2B,GAC3ChlC,MAAOA,EACP8S,QAASA,EACTwxB,SAAU,EAAGzJ,WAAU0J,oBACrBM,EAAW,CACT7xB,UAAW,CACTjC,GAAImC,EAAKnC,GACTm0B,cAAe,CACbrK,WACA0J,2B,yBCnHX,MAAMY,GAA8B,EAAGtmB,cAAasU,MACzD,MAAM,EAAE5yB,GAAMqf,YAAe,WACvB,YAAExJ,GAAgB/B,KAElB+wB,EAAgBzwB,GAA0BpU,EAAG,SAAQoU,KAErDuB,EAAQhE,oBAAQ,KACpB,MAAMmzB,EAAWrvB,OAAOkU,OAAOrhB,IAC/B,OAAIuN,EAAYC,iBACPgvB,EAGFA,EAAS37B,QAAOiL,GAAQA,IAAS9L,GAAgBwM,sBACvD,CAACe,EAAYC,mBAEhB,OACE,eAAC,KAAD,CACEwI,SAAUymB,IACRzmB,EAASymB,OAEPnS,EAJN,SAMGjd,EAAMpV,KAAI6T,GACT,eAAC,KAAO+Q,OAAR,CAA0B/f,MAAOgP,EAAjC,SACGywB,EAAazwB,IADIA,QCff4wB,GAAqBlzB,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CzBmzB,GAAgBnzB,IAAI;;;;;;;;;;;;;;;;;;;;;EAuBpBozB,GAAmBpzB,IAAI;;;;;;;;;;;;;;;;EAkBvBqzB,GAAcrzB,IAAI;;;;;;;;;;;;;;;;;;;;;EAuBlBszB,GAA4BtzB,IAAI;;;;;;GClHrCif,KAAF,IAAWz4B,KAEX+sC,GAAmB/iB,aAAOsiB,GAAY;;EAItC/1B,GAASyT,aAAOiM,MAAY1K,MAAM,CACtCxjB,KAAM,WACL;;;;;;EAQGilC,GAAQhjB,aAAOijB,KAAU;;sBAET,EAAGC,YAAaA,GAAU;;;wBAGxB,EAAGv2B,WAAYA,EAAMC,OAAOhW;;;;;;;;;;qBAU/B,EAAG+V,WAAa,aAAYA,EAAMC,OAAOhW;;;;;;;;;EAgCjDusC,GAAqC,EAChDC,QACAC,cACArU,aACAsU,mBACAC,gBACAC,0BACA5xB,2BAEA,MAAM,EAAElU,GAAMqf,YAAe,qBACvB,wBAAE0mB,EAAF,gBAA2BC,GC5EO,MACxC,MAAOC,EAAWC,GAAgB31B,uBAE3B41B,GAAU9sB,aACf+rB,GACA,CACE14B,QAASjN,IACPymC,OAAap2B,GACbvQ,EAAaC,aAAaC,IAE5BsT,YAAa,KACXmzB,OAAap2B,MAanB,MAAO,CAAEi2B,wBARuBhtB,wBAC7BqtB,IACCF,EAAaE,GACbD,EAAO,CAAE1zB,UAAW,CAAEjC,GAAI41B,OAE5B,CAACD,IAG+BH,gBAAiBC,IDoDEI,GAE/CC,EAA2BZ,EAAMnlC,KAAI,EAAGoS,OAAMyB,WAAT,cAAqB,CAC9D5D,GAAImC,EAAKnC,GACT+G,IAAK5E,EAAKnC,GAAGM,WACby1B,SAAW,GAAE5zB,EAAKlC,QAAQkC,EAAKjC,WAC/BC,MAAOgC,EAAKhC,MACZ8U,eAAc,UAAE9S,EAAK8S,sBAAP,aAAyB3V,EACvCsE,OACAlB,iBAAgB,UAAEP,EAAKO,wBAAP,aAA2BpD,MAEvC02B,EAAiCb,EAAYplC,KAAIkmC,IAAU,CAC/DlvB,IAAKkvB,EAAW91B,MAChBA,MAAO81B,EAAW91B,MAClByD,KAAMqyB,EAAWryB,KACjBgyB,aAAcK,EAAWj2B,OAGrBk2B,EACJJ,EAAY1kC,OAAS4kC,EAAkB5kC,OAASqB,EAC5C0jC,EAAkC,CACtC,CACE7sC,MAAOkG,EAAE,qBACTsjB,MAAOojB,EAAsC,WAAQ52B,EACrDijB,OAASpgB,IAAD,aAAqB,eAACiT,GAAD,CAAYJ,IAAG,UAAE7S,EAAK8S,sBAAP,QAAyB,SAEvE,CACEsN,OAASpgB,IAAD,aAAqB,eAAC,GAAD,CAAMi0B,QAAM,EAAZ,mBAAcj0B,EAAK4zB,gBAAnB,QAA+BvmC,EAAE,2BAC9DsjB,MAAOojB,EAAsC,WAAQ52B,GAEvD,CACEijB,OAASpgB,GAAoB,eAAC,GAAD,UAAOA,EAAKhC,QACzC2S,MAAOojB,EAAsC,WAAQ52B,GAEvD,CACEhW,MAAOkG,EAAE,mBACTsjB,MAAO,MACPyP,OAAS8T,IAAD,aACN,eAACxB,GAAD,CACEpgB,aAAc4hB,EAAYzyB,KAC1B4R,SACEsL,IACCuV,EAAYr2B,IACbq1B,IAAkBgB,EAAYr2B,KAC5B0D,IAAD,UAAyB2yB,EAAY3zB,wBAArC,aAAyB,EAA8BkB,OAAQ0xB,EAElExnB,SAAUymB,GAAWa,EAAiBiB,EAAYr2B,GAAKu0B,OAI7D,CACEzhB,MAAO,MACPyP,OAAS8T,GAEL,sCACIvV,GAAcuV,EAAYT,cAC1B,eAAC,GAAD,CACE1gB,KAAM,eAAC,GAAD,CAAgB9C,MAAM,UAC5BrQ,QAASyzB,IAAoBa,EAAYT,aACzC/hB,QAAS,IAAM0hB,EAAwBc,EAAYT,oBASjE,OACE,eAACd,GAAD,CACEpV,WAAY,IAAIoW,KAAgBE,GAChCG,QAASA,EACT9W,YAAY,EACZ2V,OAAQkB,EAAsC,CAAErd,EAAG,UAAQvZ,KEpJ3Du1B,GAAmB/iB,aAAOsiB,GAAY;;EAItClhB,GAAcpB,aAAOC,KAAK;;;;;;EAQ1BjpB,GAAQgpB,aAAOwb,GAAW;;EAUnBgJ,GAAmC,EAC9ChB,0BACAiB,WACA9iB,eAEA,MAAQjkB,EAAGg3B,GAAY3X,YAAe,UAEhC6a,EAAmBC,OAAaC,MAAM,CAC1CzpB,MAAOwpB,OAEJxpB,MAAMqmB,EAAQ,sBACdqD,SAASrD,EAAQ,yBACpB5iB,KAAM+lB,OAEH6M,GAAG,IAAIvxB,OAAOwxB,KAAK3+B,MACnB+xB,SAASrD,EAAQ,4BAGhB,QAAEvE,EAAF,aAAWwH,GAAiBQ,aAAQ,CACxCC,SAAUC,aAAYT,GACtBgC,cAAe,CAAE9nB,KAAM9L,GAAgBqM,WAGnC,EAAE3U,GAAMqf,YAAe,oBAE7B,OACE,gBAAC,GAAD,CAAOvlB,MAAOkG,EAAE,wBAAyBkkB,MAAI,EAACD,SAAUA,EAAUE,UAAQ,EAACC,OAAQ,KAAnF,UACE,eAAC,GAAD,UAEMpkB,EADH8lC,EACK,mCACA,gCAER,gBAAC,KAAD,CAAKjO,OAAQ,GAAb,UACE,gBAAC,KAAD,CAAK0G,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,iCACrB,eAAC,KAAD,CAEEyQ,KAAK,QACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CAAO2e,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,UAAY4tB,WAKpE,gBAAC,KAAD,CAAK2B,KAAM,EAAX,UACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,gCACrB,eAAC,KAAD,CAEEyQ,KAAK,OACLgiB,QAASA,EACTM,OAAQ,EAAGhO,OAASzG,WAAUlZ,YAC5B,eAAC,GAAD,CAAkB6f,aAAc7f,EAAOkZ,SAAUlK,GAAQkK,EAASlK,aAK1E,eAAC,KAAD,CAAK6O,QAAQ,MAAb,SACE,eAAC,GAAD,CAAQ5iB,KAAK,UAAUgkB,QAAS4V,GAAa,EAAGtpB,QAAOyD,UAAW2yB,EAASp2B,EAAOyD,KAAlF,SACGpU,EAAE,0BC3FP1G,GAAQgpB,aAAOwb,GAAW;;EAI1Bpa,GAAcpB,aAAOC,KAAK;;;;;EAO1BoB,GAAmBrB,aAAOsB,MAAOC,MAAM,CAC3Crd,KAAM,IACL;;;;;;;;;wBASqB,EAAGyI,WAAYA,EAAMC,OAAO7V;aACvC,EAAG4V,WAAYA,EAAMC,OAAOjV;;EAW5BitC,GAAqC,EAChDjjB,WACAkjB,iBACA50B,UACAuzB,8BAEA,MAAM,EAAE9lC,GAAMqf,YAAe,qBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEhC+nB,EAAkBtB,EAA0B,mBAAqB,oBAEvE,OACE,eAAC,GAAD,CAAOhsC,MAAOkG,EAAG,GAAEonC,WAA0BljB,MAAI,EAACC,UAAQ,EAACF,SAAUA,EAAUG,OAAQ,KAAvF,SACE,uCACE,eAAC,GAAD,UAAcpkB,EAAG,GAAEonC,mBACnB,gBAAC,GAAD,WACE,eAAC,KAAD,CAAQ/mC,KAAK,UAAUgkB,QAASJ,EAAhC,SACG+S,EAAQ,gBAEX,eAAC,KAAD,CAAQ3S,QAAS8iB,EAAgB50B,QAASA,EAA1C,SACGykB,EAAQ,0BCpCRqQ,GAAoC,EAAGv0B,YAAWR,WAAY,IAAD,gBACxE,MAAMK,EAAOC,MACP,YAAEiD,GAAgB/B,MAChB9T,EAAGg3B,GAAY3X,YAAe,WAC/BioB,GAAiBjuB,aAAmDpH,GAAgB,CACzFvF,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAK4I,IAAa5I,EAAW,OAE7B,MAAMpJ,EAAuB,CAAEmH,GAAIiC,EAAUjC,GAAIgL,WAAY,WAC7D5N,EAAMmP,OAAO,CACXvM,GAAI5C,EAAMoP,SAAS3T,GACnB2N,OAAQ,CACN4oB,UAAU2H,GACR,MAAMC,EAAe55B,EAAMoP,SAAS,CAClCxM,GAAI6K,EAASisB,cAAcj+B,QAAQk5B,YACnC/mB,WAAY,cAEd,GAAIgsB,EAAc,CAShB,OARY55B,EAAM65B,aAAa,CAC7Bj3B,GAAIg3B,EACJE,SAAU51B,IAAI;;;;oBAQlB,OAAOy1B,UAMX,eAAEhI,GAAmBD,KAErBpF,EAAmBC,OAAaC,MAAM,CAC1C2E,YAAa5E,OAAaE,SAASrD,EAAQ,yBAC3C6I,aAAchqB,EAAYxB,uBACtB8lB,OAAaE,SAASrD,EAAQ,yBAC9BmD,OACJ7Y,QAAS6Y,OAAaE,SAASrD,EAAQ,yBACvC4I,UAAWzF,OAAaE,SAASrD,EAAQ,yBACzCyI,OAAQtF,OACR4F,YAAa5F,UAGT,QAAE1H,EAAF,aAAWwH,EAAX,MAAyB0F,GAAUlF,aAAQ,CAC/CC,SAAUC,aAAsBT,GAChCgC,cAAe,CACb6C,YAAazsB,EAAKysB,YAClBzd,QAAShP,EAAKgP,QACdue,aAAcvtB,EAAKutB,aACnBD,UAAS,UAAEttB,EAAKstB,iBAAP,aAAE,EAAgBpvB,GAC3BivB,OAAM,UAAEntB,EAAKstB,iBAAP,iBAAE,EAAgBH,cAAlB,aAAE,EAAwBjvB,GAChCuvB,YAAaztB,EAAKytB,eAIhBS,EAAiBb,IAAQF,QAEzB,WAAE1lB,GAAeF,GAAc2mB,GAE/BG,EAAgB,OAAG5mB,QAAH,IAAGA,OAAH,EAAGA,EAAYxZ,KAAIq/B,IAChC,CAAEjgB,MAAOigB,EAAUnvB,KAAMrL,MAAOw6B,EAAUpvB,OAG7CuxB,EAAkBzvB,EAAKytB,aAAN,OACnBptB,QADmB,IACnBA,GADmB,UACnBA,EAAMO,wBADa,WAEnBpD,EADA,EAAwBqD,aAAamO,QAAQghB,QAAQh8B,cAGzD,OACE,eAACg7B,GAAD,CACEG,cAAY,EACZhP,QAASA,EACTmP,mBAAoBtvB,EAAKq1B,wBAA0B9xB,EAAY3B,qBAC/D2tB,cAAa,OAAEtC,QAAF,IAAEA,IAAkB,GACjCoB,iBAAgB,OAAEA,QAAF,IAAEA,IAAoB,GACtCa,oBAAmB,iBAAElvB,QAAF,IAAEA,GAAF,UAAEA,EAAMstB,iBAAR,aAAE,EAAiBpvB,UAAnB,aAAyBV,EAC5CywB,iBAAkBC,EAClBe,oBAAmB,iBAAE5uB,QAAF,IAAEA,GAAF,UAAEA,EAAMO,wBAAR,aAAE,EAAwBC,aAAamO,QAAQ9Q,UAA/C,QAAqD,GACxEuxB,eAAgBA,EAChB5D,gBAAiBlE,GAAa,EAAG8E,kBAC/BuI,EAAc,CAAE70B,UAAW,CAAEjC,GAAIsC,EAAW80B,iBAAkB,CAAEn3B,KAAMsuB,SAExE2C,wBAAyBzH,GAAa,EAAG4F,mBACvCyH,EAAc,CACZ70B,UAAW,CACTjC,GAAIsC,EACJ80B,iBAAkB,CAChB/H,aAAcA,EACVr6B,GAAgCq6B,QAChC/vB,SAKZ6xB,sBAAuB1H,GAAa,EAAG2F,gBACrC0H,EAAc,CACZ70B,UAAW,CAAEjC,GAAIsC,EAAW80B,iBAAkB,CAAErF,YAAa3C,SAGjEkC,uBAAwB7H,GAAa,EAAG8F,kBACtCuH,EAAc,CACZ70B,UAAW,CACTjC,GAAIsC,EACJ80B,iBAAkB,CAAE7H,aAAwB,OAAXA,QAAW,IAAXA,OAAA,EAAAA,EAAan+B,QAAU,IAAGm+B,SAAgBjwB,YC5H1E+3B,GAAYvlB,aAAOC,KAAK;;EAIxBulB,GAAsBxlB,aAAOzT,GAAQ;;sBAE5B,EAAGI,WAAYA,EAAMC,OAAO7V;WACvC,EAAG4V,WAAYA,EAAMC,OAAOjV;ECH1B8tC,GAAsD,EACjEz1B,OACAQ,YACAk1B,6BACA1W,iBAEA,MAAM,EAAEtxB,GAAMqf,YAAe,oBAE7B,OACE,uCACE,eAACgoB,GAAD,CAAkBv0B,UAAWA,EAAWR,KAAMA,IAC9C,eAAC,GAAD,UACE,eAAC,KAAD,CAAKqiB,KAAM,EAAX,SACE,eAACmT,GAAD,CAAqBzjB,QAAS2jB,EAA4BhiB,SAAUsL,EAApE,SACGtxB,EAAE,mCCHFioC,GAAqC,EAAGn1B,YAAWR,OAAMgf,iBAAkB,IAAD,EACrF,MAAOT,EAAOoQ,GAAY1wB,uBAClBvQ,EAAGg3B,GAAY3X,YAAe,WAE/BioB,GAAiBjuB,aAAmDpH,GAAgB,CACzFvF,QAASnN,EAAaC,eAGlB06B,EAAmBC,OAAaC,MAAM,CAC1C2E,YAAa5E,OAAaE,SAASrD,EAAQ,yBAC3C1V,QAAS6Y,OAAaE,SAASrD,EAAQ,4BAGnC,QAAEvE,EAAF,aAAWwH,EAAX,MAAyBiO,GAAUzN,aAAQ,CAC/CC,SAAUC,aAAsBT,GAChCgC,cAAe,CACb6C,YAAW,UAAEzsB,EAAKysB,mBAAP,QAAsB,GACjCzd,QAAShP,EAAK6O,aAQlB,OAJA5G,sBAAU,KACR2tB,EAAM,CAAEnJ,YAAazsB,EAAKysB,YAAazd,QAAShP,EAAK6O,cACpD,CAAC+mB,EAAO51B,IAGT,eAAC2rB,GAAD,CACEI,qBAAqB,EACrBxN,MAAK,OAAEA,QAAF,IAAEA,IAASve,EAAK+uB,KACrBnD,cAAe,CAACkD,EAAargC,KAC3BkgC,EAASG,GACTkG,EAAc,CAAE70B,UAAW,CAAEjC,GAAIsC,EAAW80B,iBAAkB,CAAEvG,KAAMtgC,OAExE0xB,QAASA,EACT0L,gBAAiBlE,GAAa,EAAG8E,kBAC/BuI,EAAc,CAAE70B,UAAW,CAAEjC,GAAIsC,EAAW80B,iBAAkB,CAAEn3B,KAAMsuB,SAExEX,YAAa9M,EACbgN,uBAAwBhsB,EAAK6O,cCvD3B0M,MAAF,IAAYv1B,KAQL6vC,GAAoB7lB,aAAOuL,GAAO;;EAIlClK,GAAmBrB,aAAOsB,MAAOC,MAAM,CAClDrd,KAAM,SACL,GAEUynB,GAAe3L,aAAOzT,GAAQ;;EAI9Bu5B,GAAqB9lB,aAAO2L,GAAc;sBACjC,EAAGhf,WAAYA,EAAMC,OAAO7V;WACvC,EAAG4V,WAAYA,EAAMC,OAAOjV;;wBAEf,EAAGgV,WAAYA,EAAMC,OAAO7V;aACvC,EAAG4V,WAAYA,EAAMC,OAAOjV;oBACrB,EAAGgV,WAAYA,EAAMC,OAAO7V;;EAInCu8B,GAAYtT,aAAOsB,MAAOC,MAAM,CAC3C0S,UAAW,WACX/vB,KAAM,IACL;;EClCU6hC,GAAiBv2B,IAAI;;;;;;;;;;;;;;;;;;;;;EC2BrBw2B,GAAqB,EAAGx1B,YAAWmR,eAAuB,IAAD,MACpE,MAAM,iBAAE5D,GAAqBrM,GAAqBC,2BAC3Cs0B,EAAuBC,GAA4Bj4B,qBAAS,IAC5Dk4B,EAAwBC,GAA6Bn4B,qBAAS,IAE/D,YAAEsF,GAAgB/B,KAElBnB,EAAOC,MAEP,KAAEN,GAASE,aAAsDwyB,GAAoB,CACzFvyB,UAAW,CAAEjC,GAAIsC,KAGbzJ,EAAO,OAAGiJ,QAAH,IAAGA,OAAH,EAAGA,EAAMjJ,SAEfs/B,GAAgBp2B,QAASq2B,IAAyBvvB,aAGvD4rB,GAAe,CACflyB,YAAa81B,IAAyB,IAAD,MACnCL,GAAyB,GACzBvkB,IACA,MAAM6kB,GACJ,UAAAD,EAAqBF,aAAah2B,KAAKzJ,sBAAvC,eAAuDtH,SACvDinC,EAAqBF,aAAah2B,KAAKzJ,eAAe,GAAGG,QAAQmH,GAC7Du4B,GAAqB,UAAAF,EAAqBF,aAAah2B,KAAKzJ,sBAAvC,eAAuDtH,QAC9EinC,EAAqBF,aAAah2B,KAAKzJ,eAAe,GAAGG,QAAQiY,QAAQ9Q,QACzEV,EACEk5B,GAAuB,UAAAH,EAAqBF,aAAah2B,KAAKzJ,sBAAvC,eAAuDtH,QAChFinC,EAAqBF,aAAah2B,KAAKzJ,eAAe,GAAGG,QAAQoH,UACjEX,EAEJuQ,EAAiB,CACf7P,GAAIs4B,EACJ3nB,UAAW4nB,EACXt4B,KAAMu4B,KAGVt8B,QAASnN,EAAaC,gBAGjBypC,GAAc12B,QAAS22B,IAAuB7vB,aACnD8rB,GACA,CACEz4B,QAASnN,EAAaC,gBAInB2pC,GAAkB9vB,aAAqD6rB,GAAkB,CAC9F9pB,OAAQ,CAACxN,GAAS0E,KAAM+I,MAAgB,IAAD,EACrC,IAAKA,EAAU,OACf,MAAM+tB,EAAW,UAAG/tB,EAAS8tB,eAAe9/B,QAAQggC,kBAAnC,aAAG,EAA4C50B,MAC9D60B,GAAYA,EAAS32B,KAAKnC,KAAOmC,EAAKnC,KAEnC44B,GAELx7B,EAAMmP,OAAqB,CAEzBvM,GAAI5C,EAAMoP,SAASrK,GACnBqE,OAAQ,CACN9N,eAAeqgC,GACb,MAAMvK,EAAuBuK,EACvBtK,EAAiB,CACrB7qB,KAAMg1B,EAAYh1B,KAClB/K,QAASgS,EAAS8tB,eAAe9/B,QACjCmS,WAAY,eAEd,OAAKwjB,EACE,IAAIA,EAAsBC,GADC,CAACA,QAM3CvyB,QAASnN,EAAaC,gBAGjB8nC,GAAiBjuB,aAAmDpH,GAAgB,CACzFvF,QAASnN,EAAaC,eAOlBsmC,KAA2B,OAACz8B,QAAD,IAACA,GAAD,UAACA,EAAS8J,oBAAV,aAAC,EAAuB3C,IAEnDg5B,EAAe,OAAGngC,QAAH,IAAGA,GAAH,UAAGA,EAASggC,kBAAZ,iBAAG,EAAqB50B,MAAK60B,GAAYA,EAAS32B,KAAKnC,KAAOmC,EAAKnC,YAAnE,aAAG,EAAqE4D,KAEvFq1B,EAA2B,OAAGpgC,QAAH,IAAGA,OAAH,EAAGA,EAASogC,4BAWvCnY,EAAa3f,oBAAQ,KAEtBkE,EAAYN,sBACb,OAACi0B,QAAD,IAACA,IAAmBlhC,GAAgBqM,UAAYrM,GAAgBsL,OAEjE,CAACiC,EAAYN,oBAAqBi0B,KAO/B,cAAEE,EAAen3B,QAASo3B,GCpIF,GAAG52B,kBACjC,MAAM,iBAAEsN,GAAqBrM,GAAqBC,2BAE3Cy1B,GAAe,QAAEn3B,IAAa8G,aACnCgvB,GACA,CACEt1B,YAAa,EAAG22B,cAAeE,MAA6B,IAAD,MACzD72B,IACA,MAAM+1B,GAAqB,UAAAc,EAAsBj3B,KAAKzJ,sBAA3B,eAA2CtH,QAClEgoC,EAAsBj3B,KAAKzJ,eAAe,GAAGG,QAAQmH,QACrDV,EACEi5B,GAAqB,UAAAa,EAAsBj3B,KAAKzJ,sBAA3B,eAA2CtH,QAClEgoC,EAAsBj3B,KAAKzJ,eAAe,GAAGG,QAAQiY,QAAQ9Q,QAC7DV,EACEk5B,GAAuB,UAAAY,EAAsBj3B,KAAKzJ,sBAA3B,eAA2CtH,QACpEgoC,EAAsBj3B,KAAKzJ,eAAe,GAAGG,QAAQoH,UACrDX,EAEJuQ,EAAiB,CACf7P,GAAIs4B,EACJ3nB,UAAW4nB,EACXt4B,KAAMu4B,OAMd,MAAO,CAAEU,gBAAen3B,YDyGmCs3B,CAAiB,CAC1E92B,YANgC,KAChC21B,GAA0B,GAC1BzkB,OAOF,MAAO,CACL5a,UACAk/B,wBACAI,eACAC,sBACAJ,2BACAS,aACAC,oBACAtD,iBA3CuB,CAAC/1B,EAAgBuE,KACxC+0B,EAAe,CAAE12B,UAAW,CAAE5C,SAAQuE,OAAMtB,gBA2C5C22B,8BACAnY,aACAwY,iCApCuC,EAAG7hB,QAAU7iB,aACpDkiC,EAAc,CACZ70B,UAAW,CACTjC,GAAIsC,EACJ80B,iBAAkB,CAAE6B,4BAA6BrkC,OAiCrD0gC,0BACA0D,kBACAf,yBACAiB,gBACAhB,4BACAiB,4BE7II9b,MAAF,GAASkD,KAAT,IAAkBz4B,KAMXyxC,GAAwC,EAAGv5B,KAAIyT,eAAgB,IAAD,kBACzE,MAAO+lB,EAAqBC,GAA0B15B,qBAAS,IAEzD,EAAEvQ,GAAMqf,YAAe,qBACvB,YAAExJ,GAAgB/B,KAElBnB,EAAOC,MAEP,QACJvJ,EADI,gBAEJmgC,EAFI,wBAGJ1D,EAHI,sBAIJyC,EAJI,yBAKJC,EALI,aAMJG,EANI,oBAOJC,EAPI,WAQJK,EARI,kBASJC,EATI,iBAUJtD,EAVI,4BAWJ6D,EAXI,iCAYJK,EAZI,WAaJxY,EAbI,cAcJoY,EAdI,0BAeJhB,EAfI,uBAgBJD,EAhBI,uBAiBJkB,GACErB,GAAmB,CACrBx1B,UAAWtC,EACXyT,aAKIimB,EAFmBpE,EAEc,wBAAyB,yBAC1DhsC,EAHmBgsC,EAGS,mBAAoB,oBAChDqE,EAJmBrE,EAKpB,8BACD,+BAEJ,OACE,gBAACxsC,GAAD,CAAOQ,MAAOkG,EAAEkqC,GAAahmB,MAAI,EAACC,UAAQ,EAACC,OAAQ,KAAMH,SAAUA,EAAUzd,KAAK,QAAlF,UACE,eAAC,GAAD,CAAOwnB,MAAO,EAAd,SAAkBhuB,EAAElG,KACnBgsC,EACC,eAACiC,GAAD,CACEj1B,UAAWtC,EACX8B,KAAM,CACJq1B,yBAAwB,OAACt+B,QAAD,IAACA,GAAD,UAACA,EAAS8J,oBAAV,aAAC,EAAuB3C,IAChDuuB,YAAW,OAAE11B,QAAF,IAAEA,OAAF,EAAEA,EAASoH,KACtB6Q,QAAO,oBAAE3O,EAAKO,wBAAP,aAAE,EAAuBC,aAAamO,QAAQ9Q,UAA9C,QAAoD,GAC3DqvB,aAAY,iBAAEx2B,QAAF,IAAEA,OAAF,EAAEA,EAASw2B,oBAAX,aAA2B/vB,EACvC8vB,UAAS,iBAAEv2B,QAAF,IAAEA,OAAF,EAAEA,EAASu2B,iBAAX,aAAwB9vB,EACjCiwB,YAAW,iBAAE12B,QAAF,IAAEA,OAAF,EAAEA,EAAS02B,mBAAX,aAA0BjwB,GAEvCk4B,2BAA4B,IAAMU,GAA0B,GAC5DpX,WAAYA,IAGd,eAAC2W,GAAD,CACEn1B,UAAWtC,EACX8B,KAAM,CACJysB,YAAW,OAAE11B,QAAF,IAAEA,OAAF,EAAEA,EAASoH,KACtB0Q,UAAS,OAAE9X,QAAF,IAAEA,OAAF,EAAEA,EAASiY,QAAQ9Q,GAC5B6wB,KAAI,iBAAEh4B,QAAF,IAAEA,OAAF,EAAEA,EAASg4B,YAAX,aAAmBvxB,GAEzBwhB,WAAYA,IAGhB,gBAAC,GAAD,WACE,eAAC6W,GAAD,CAAmBna,MAAO,EAA1B,SAA8BhuB,EAAEmqC,KAChC,gBAAC,GAAD,WACE,eAAC,GAAD,CACE9pC,KAAK,UACLkS,QAAS22B,EACTljB,SAAUsL,EACVjN,QAAS,IAAM4lB,GAAuB,GAJxC,SAMGjqC,EAAE,uBAEJwpC,GACC,eAACpB,GAAD,CAAoB/jB,QAAS,IAAMmkB,GAAyB,GAA5D,SACGxoC,EAAE,6BAIR6V,EAAYC,kBAAoBD,EAAYjB,oBAC3C,gBAAC,KAAD,CAAOpO,KAAM,GAAb,UACE,eAAC,GAAD,UAAOxG,EAAE,sCACT,gBAAC,KAAMoqC,MAAP,CACE9rB,SAAUwrB,EACV1kC,MAAOqkC,EAFT,UAIE,eAAC,KAAD,CAAOrkC,MAAO0C,GAA4BuiC,MAA1C,SACGrqC,EAAE,sCAEL,eAAC,KAAD,CAAOoF,MAAO0C,GAA4BwiC,aAA1C,SACGtqC,EAAE,kDAKX,eAACylC,GAAD,CACEC,MAAK,iBAAEr8B,QAAF,IAAEA,OAAF,EAAEA,EAASggC,kBAAX,QAAyB,GAC9B1D,YAAW,iBAAEt8B,QAAF,IAAEA,OAAF,EAAEA,EAASs8B,mBAAX,QAA0B,GACrCrU,WAAYA,EACZsU,iBAAkBA,EAClBC,cAAelzB,EAAKnC,GACpBs1B,wBAAyBA,EACzB5xB,qBAAsB2B,EAAY3B,0BAGrC81B,GACC,eAAClD,GAAD,CACEC,SAAU,CAACp2B,EAAOyD,KAChB61B,GAAuB,GACvBhB,EAAW,CAAEx2B,UAAW,CAAE83B,cAAe,CAAE55B,QAAOmC,UAAWtC,EAAI4D,YAEnE6P,SAAU,IAAMgmB,GAAuB,GACvCnE,wBAAyBA,IAG5ByC,GACC,eAACrB,GAAD,CACEC,eAAgB,IAAMwB,EAAa,CAAEl2B,UAAW,CAAEK,UAAWtC,EAAIX,OAAQ8C,EAAKnC,MAC9EyT,SAAU,IAAMukB,GAAyB,GACzCj2B,QAASq2B,EACT9C,wBAAyBA,IAG5B2C,GACC,eAAC3kB,GAAD,CACEE,UAAW,IAAM0lB,EAAc,CAAEj3B,UAAW,CAAEjC,QAC9CyT,SAAU,IAAMykB,GAA0B,GAC1Cn2B,QAASo3B,EACT7vC,MAAOkG,EAAE,4BACT+jB,YAAa/jB,EAAE,wC,yBC3JzB,MAAQ6tB,MAAOC,IAAax1B,KAEtBkyC,GAAeloB,aAAOC,KAAK;;;EAI3BkoB,GAAWnoB,aAAOwL,GAAU;;;WAGvB,EAAG7e,WAAYA,EAAMC,OAAOjV;EAEjC4U,GAASyT,aAAO4L,KAAW;;;WAGtB,EAAGjf,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;;;;;aAOxC,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAGjD0uC,GAAapoB,KAAOqS,IAAK;WACpB,EAAG1lB,WAAYA,EAAMC,OAAOjV;;EAU1B0wC,GAAgC,EAAGl6B,OAAMC,WAAUk6B,yBAC9D,MAAM,OAAE36B,GAAWgI,MACb,EAAEjY,GAAMqf,YAAe,UAE7B,OACE,eAACmrB,GAAD,CAAcna,MAAM,EAApB,SACE,eAAC,KAAD,CAAKkO,KAAM,EAAX,SACE,gBAAC,KAAD,CAAO/3B,KAAK,SAAZ,UACE,eAACof,GAAD,IACA,gBAAC,KAAD,WACE,eAAC,KAAD,CAAK+O,KAAM,GAAX,SACE,gBAAC8V,GAAD,CAAUzc,MAAO,EAAG+G,SAAU,CAAE8V,KAAM,EAAG7V,SAAS,GAAlD,UACGvkB,EADH,IACUC,OAGZ,eAAC,KAAD,UACE,gBAAC,GAAD,CAAQrQ,KAAK,OAAOgkB,QAASumB,EAA7B,UACG5qC,EAAE,yCACH,eAAC0qC,GAAD,UAAa1qC,EAAE,gDAGnB,eAAC,GAAD,CAAQK,KAAK,OAAOgkB,QAASpU,EAA7B,SACGjQ,EAAE,gDCzDX8qC,GAAcxoB,aAAOyoB,KAAU;;;;;sBAKf,EAAG97B,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;wBAKxC,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;aACrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAG1C,EAAGgT,WAAYA,EAAMC,OAAO7V;;EAO5B2xC,GAAsC,EAAG1sB,eACpD,MAAM,EAAEte,GAAMqf,YAAe,UAC7B,OACE,eAACyrB,GAAD,CACEzX,OAAQ,eAAC,GAAD,IACRtN,YAAa/lB,EAAE,iBACfse,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,UC3BzC6lC,GAA4B3oB,aAAO+C,MAAQxB,MAAM,CACrDrd,KAAM,GACN4zB,MAAO,UACN;sBACmB,EAAGnrB,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;sBAC1C,EAAGgT,WAAYA,EAAMC,OAAOjV;mBAC/B,EAAGgV,WAAYA,EAAME,WAAWjX;;;;GAM3C64B,KAAF,GAAQgJ,KAAMmR,IAAY5yC,KAE1B6yC,GAAkB7oB,aAAOyO,GAAM;;WAE1B,EAAG9hB,WAAYA,EAAMC,OAAOjV;;;EAK1B8/B,GAAOzX,aAAO4oB,GAAS;WACzB,EAAGj8B,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;aAExC,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAQ1CovC,GAAoC,EAAG36B,OAAM4wB,WACxD,MAAM,EAAErhC,GAAMqf,YAAe,UAC7B,OACE,gBAAC,KAAD,CAAO7Y,KAAM,GAAb,UACE,eAACykC,GAAD,CAA2BzlB,IAAK6b,IAChC,gBAAC8J,GAAD,WACGnrC,EAAE,gCACH,eAAC+5B,GAAD,CAAM9R,OAAO,SAASnb,KAAMrJ,GAA5B,SACGzD,EAAE,kCAEJA,EAAE,+BAAgC,CAAE6Q,iBAAkBJ,WC7CzD+5B,GAAeloB,aAAOC,KAAK;;;EAK3BwT,GAAgBzT,aAAOmM,KAAK;;;;;;;EAS5B5f,GAASyT,aAAOmM,KAAK;;;;;;;;WAQhB,EAAGxf,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;;;aAKxC,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAIjDqvC,GAAa/oB,KAAOqS,IAAK;WACpB,EAAG1lB,WAAYA,EAAMC,OAAOjV;EAQ1BqxC,GAAgC,EAC3CC,OACAlnB,UACAmnB,oBACAC,8BAGE,eAAC,GAAD,CAAcpb,MAAM,EAAOhM,QAASA,EAApC,SACE,eAAC,KAAD,CAAKka,KAAM,EAAX,SACE,gBAAC,KAAD,CAAO/3B,KAAK,SAAZ,UACE,eAAC,GAAD,UACE,eAAC+kC,EAAD,MAEF,eAAC,KAAD,CAAK5W,KAAM,GAAX,SACE,gBAAC,GAAD,WACG6W,EACAC,EAAyBlrC,KAAImrC,GAC5B,eAACL,GAAD,UAA2CK,GAA1BA,iB,cC1D1B,MAAMC,GAAWrpB,aAAOsM,KAAKwB,KAAM;;;;;;EAQ7Boa,GAAeloB,aAAOC,KAAK;;;EAS3BqpB,GAAgBtpB,aAAOmM,KAAkB;;;;;;sBAMhC,EAAGxf,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWjX;YACvC,EAAG2zC,YAAW58B,WACtB48B,EACK,aAAY58B,EAAMC,OAAOnT,IAAIC,UAAU,OACvC,aAAYiT,EAAMC,OAAOnT,IAAIE,UAAU;;EAInCu0B,GAAQlO,KAAOmO,GAAI;;;EAKnBqb,GAAaxpB,KAAOqS,IAAK;;;;WAI3B,EAAG1lB,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;;;aAKxC,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAI1C45B,GAAYtT,KAAOkL,GAAI;;EC9BvBue,GAAuC,EAAGz5B,OAAMqQ,YAAa,IAAD,EACvE,MAAM,EAAE3iB,GAAMqf,YAAe,WACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,OAAEnQ,GAAW6O,gBACb,gBAAEhK,EAAF,iBAAmBsM,EAAnB,gBAAqCC,GACzCtM,GAAqBC,2BAEjB,kBAAE+3B,EAAF,YAAqB5iC,GAAgBkJ,EAE3C,IAAKlJ,EAAa,OAAO,KAEzB,MAAM,QAAEC,EAAF,KAAW+K,GAAShL,EAEpB6iC,EAAoB5iC,EAAQmH,KAAOuD,EAEzC,OACE,sBAAK4O,MAAOA,EAAZ,SACE,eAAC,GAAD,UACE,eAACgpB,GAAD,CACEtnB,QAAS,KACHtQ,IAAoB1K,EAAQmH,KAChC8P,OAAgBxQ,GAChBuQ,EAAiB,CACf7P,GAAInH,EAAQmH,GACZ2Q,UAAW9X,EAAQiY,QAAQ9Q,GAC3BC,KAAMpH,EAAQoH,SAPpB,SAWE,eAAC,GAAD,CAAc4f,MAAM,EAApB,SACE,eAAC,KAAD,UACE,gBAAC,KAAD,WACE,eAACub,GAAD,CAAeC,UAAWI,EAA1B,UACG,UAAA5iC,EAAQ8J,oBAAR,eAAsB3C,IACrBy7B,GACE,eAACC,GAAA,EAAD,CAAevpB,MAAO,CAAE3oB,SAAU,OAAQ4oB,MAAO,WAEjDvZ,EAAQg4B,KACV,eAAC,GAAD,CAAO7b,IAAKnc,EAAQg4B,KAAMvQ,IAAKkG,EAAQ,uBAEvC,eAAC2L,GAAA,EAAD,CAAchgB,MAAO,CAAEC,MAAO,aAGlC,gBAAC,KAAD,WACE,eAAC,KAAD,UACE,eAACgS,GAAD,CACE5G,MAAO,EACPl0B,MAAOuP,EAAQoH,KACfokB,kBAAmB,CACjBjS,MAAO1T,EAAOjV,MACdqpB,MAAO,QACPtpB,SAAU,YAIhB,eAAC,KAAD,CAAK26B,KAAM,GAAX,SACE,eAACmX,GAAD,CACEznB,QAASyX,IACPA,EAAEqQ,kBACFH,EAAkB,CAChBx7B,GAAInH,EAAQmH,GACZ47B,QAASh4B,IAAS9L,GAAgBsL,SALxC,SASG5T,EAAE,6DAjDGqJ,EAAQmH,MC7B5BugB,KAAMkD,IAAY37B,KASb49B,IAPO5T,aAAO2R,GAAS;;;;WAIzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;EAGhBqoB,KAAOkL,GAAI;;YAEtB,EAAGve,WAAa,aAAYA,EAAMC,OAAO7V;;GAIxCu8B,GAAYtT,KAAOkL,GAAI;;EAIvBkD,GAA2BpO,aAAOqO,KAAoB;;WAExD,EAAG1hB,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;EAGxCqwC,GAAwB/pB,aAAOgqB,KAAiB;;WAElD,EAAGr9B,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;2BC/B9C,MC8BDuwC,GAAgBC,KASTC,GAA2C,EACtDT,oBACAU,kBACAC,oBACA/B,qBACAgC,8BACK,IAAD,QACJ,MAAMj6B,EAAOC,MACP,YAAEiD,GAAgB/B,MAClB,EAAE9T,GAAMqf,YAAe,UACvBlnB,EDjDqB,MAC3B,MAAM00C,EAAeC,KAAS,uBACxBC,EAAYD,KAAS,wBACrB,YAAEj3B,GAAgB/B,KASxB,OAPenC,oBAAQ,IACjBo7B,EAAkB,IAClBF,EAAqB,IAElBh3B,EAAY3B,qBAAuB,GAAK,KAC9C,CAAC64B,EAAWF,EAAch3B,EAAY3B,wBCuC1B84B,IAER9jC,EAAgB+jC,GAAqB18B,uBACtC,oDACJiQ,EADI,iDAEJQ,GACEhN,GAAqBC,0BAEnBi5B,EAAqB,CACzBC,YAAat3B,EAAY3B,qBACrBlU,EAAE,uCACFA,EAAE,wCACNotC,eAAgBv3B,EAAY3B,qBACxB,CAAClU,EAAE,uCAAwCA,EAAE,wCAC7C,CAACA,EAAE,wCAAyCA,EAAE,0CAG9CqtC,EAAgB,CACpB,CACE58B,KAAM,gBACN4T,QAAUyX,IACR6Q,GAAkB,GAClB7Q,EAAEqQ,kBACFO,KAEFnB,KAAM7a,GACN8a,kBAAmB0B,EAAmBC,YACtC1B,yBAA0ByB,EAAmBE,eAC7CpnB,UAAWnQ,EAAYG,iBAEzB,CACEvF,KAAM,aACN4T,QAAUyX,IACRA,EAAEqQ,kBACFS,KAEFrB,KAAMc,GACNb,kBAAmBxrC,EAAE,wCACrByrC,yBAA0B,CACxBzrC,EAAE,wCACFA,EAAE,2CAKFstC,EAA8Cv0B,wBACjD9P,IAAwC,IAAD,EACtC,iBAAO0J,EAAKzJ,sBAAZ,aAAO,EAAqBC,QAAOC,IAAgB,IAAD,EAChD,iBAAOA,EAAYC,QAAQC,eAA3B,aAAO,EAA6BC,MAAKC,IACvC,MAAMC,EAAkB3E,IAAMyoC,IAAI/jC,EAAOE,WACnCC,EAAyC7E,IAAMyoC,IAAItkC,EAAiBW,YACpEC,EAAuC/E,IAAMyoC,IAAItkC,EAAiBa,UAElEC,EACJN,EAAgBO,OAAOL,IACvBF,EAAgBQ,QAAQN,GAEpBO,EACJT,EAAgBO,OAAOH,IACvBJ,EAAgBU,SAASN,GAE3B,OAAOE,GAAgCG,UAI7C,CAACyI,EAAKzJ,iBAGFskC,EAAiCz0B,wBACpC9P,IACC,MAAMwkC,EAAyBH,EAA4CrkC,GAC3EgkC,EAAkBQ,GAClBjtB,EAAoDvX,KAEtD,CACEqkC,EACA9sB,IAIEktB,EAA8C/7B,oBAAQ,IACrDqP,EAEEssB,EACLtsB,GAH4D,IAK7D,CACDssB,EACAtsB,IAGI2sB,EAAyBh8B,oBAAQ,KAAO,IAAD,EACJ,IAAvC,OAAKkE,EAAY3B,yBAIf,OAAC8M,QAAD,IAACA,OAAD,EAACA,EAAkDpX,cAClDoX,EAAiDlX,YAG7C,iBAAC4jC,QAAD,IAACA,OAAD,EAACA,EAA6C9rC,cAA9C,QAAwD,GAzHvC,GAkHf,iBAAC+Q,QAAD,IAACA,GAAD,UAACA,EAAMzJ,sBAAP,aAAC,EAAsBtH,cAAvB,QAAiC,GAlHlB,IA0HvB,CACD8rC,EACA73B,EACAmL,EACArO,IAGF4H,sBAAU,KAAO,IAAD,EACd,IAAI,UAAA5H,EAAKzJ,sBAAL,eAAqBtH,UAAWiU,EAAY3B,qBAC9C+4B,EAAkBt6B,EAAKzJ,oBAClB,CACL,IAAK8X,EAAkD,OACvDwsB,EAA+BxsB,MAEhC,CACDrO,EAAKzJ,eACL2M,EAAY3B,qBACZs5B,EACAxsB,IAGF,MAAM4sB,EAAiB70B,wBACpB3T,IACC,MAAMyoC,EAAaltC,EAAwByE,GAAOkB,cAC5CwnC,EAAaj4B,EAAY3B,qBAE3Bw5B,EADA/6B,EAAKzJ,eAEH6kC,EAAe,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAW3kC,QAAO,EAAGE,aACvB1I,EAAwB0I,EAAQoH,MAAMnK,cACvC2O,SAAS44B,KAE9BZ,EAAkBc,KAEpB,CACEL,EACA73B,EAAY3B,qBACZvB,EAAKzJ,iBAIT,OACE,uCACG2M,EAAY3B,sBACX,eAAC,GAAD,CAAWyO,MAAO,CAAEqrB,cAAe,QAAnC,SACE,eAAC/V,GAAD,CACE3Z,SAAUkvB,EACVjvB,yBAA0ByC,MAI/B2sB,GACC,eAAC,GAAD,CAAWhrB,MAAO,CAAEqrB,cAAe,QAAnC,SACE,eAAChD,GAAD,CAAoB1sB,SAAUsvB,MAGlC,eAACrB,GAAD,CACEp0C,OAAQA,EACR81C,UAAS,iBAAE/kC,QAAF,IAAEA,OAAF,EAAEA,EAAgBtH,cAAlB,QAA4B,EACrCssC,SAAU,GACV5qB,MAAO,IAJT,SAMGD,GACC,eAAC0oB,GAAD,IACM1oB,EACJ/Q,KAAM,CAAElJ,YAAW,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAiBma,EAAM8M,OAAQ6b,yBAK1D,eAAC,GAAD,IAEA,eAAC,GAAD,UACGqB,EAAc9sC,KAAI4tC,GAEf,eAAC,KAAMC,SAAP,WACID,EAAiBnoB,UACjB,eAACslB,GAAD,CACEjnB,QAAS8pB,EAAiB9pB,QAC1BknB,KAAM4C,EAAiB5C,KACvBC,kBAAmB2C,EAAiB3C,kBACpCC,yBAA0B0C,EAAiB1C,4BAN5B0C,EAAiB19B,UAc3CoF,EAAY3B,sBACX,uCACE,eAAC,GAAD,IACA,eAAC,GAAD,UACE,eAACk3B,GAAD,CACE36B,KAAI,oBAAEkC,EAAKO,wBAAP,aAAE,EAAuBC,aAAa1C,YAAtC,QAA8C,GAClD4wB,KAAI,UAAE1uB,EAAKO,wBAAP,aAAE,EAAuBC,aAAakuB,YAKlD,eAAC,GAAD,IACA,eAAC,GAAD,UACE,eAACsJ,GAAD,CACEl6B,KAAMkC,EAAKlC,KACXC,SAAUiC,EAAKjC,SACfk6B,mBAAoBA,UCxPjByD,GAAU/rB,KAAOkL,GAAI;;;;;;EAQrB8gB,GAAehsB,aAAO+rB,GAAS;;;EAK/BE,GAAajsB,aAAO+rB,GAAS;;;EAK7BG,GAASlsB,aAAOC,KAAK;;;EAKrBksB,GAAmBnsB,aAAOC,KAAK;;;;EAM/BmsB,GAAapsB,aAAOksB,IAAQ3qB,MAAM,CAC7CZ,QAAS,SACR,GAEU0rB,GAAUrsB,aAAOssB,KAAc;;WAEjC,EAAG3/B,WAAYA,EAAMC,OAAOjV;;;;;;;;aAQ1B,EAAGgV,WAAYA,EAAMC,OAAOjV;;;aAG5B,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;;aAG1C,EAAGiT,WAAYA,EAAMC,OAAOnT,IAAIC,UAAU;;EAIjD6yC,GAAan/B,IAAI;;;;;;;EASVo/B,GAAgBxsB,aAAOysB,GAAS;IACzCF;;EAISG,GAAqB1sB,aAAO2sB,GAAc;IACnDJ;EAGSK,GAAsB5sB,aAAO6sB,GAAe;IACrDN;EAQSO,GAAU9sB,cAL6C,EAClEqC,eACGiO,KACC,eAAC,KAAD,IAAgBA,EAAWyc,iBAAkB1qB,KAEL;;;;;;;;;;;;;;;EC1DjC2qB,GAAuB,KAClC,MAAMn3B,EAAWC,gBAEX,YAAEvC,IADU2D,KACM1F,OAEjBy7B,EAA0BC,GAA+Bj/B,qBAAS,IAClEk/B,EAA0BC,GAA+Bn/B,qBAAS,IAClEo/B,EAAaC,GAAkBr/B,qBAAS,IACxCs/B,EAAiBC,GAAsBv/B,qBAAS,IAChDw/B,EAAgBC,GAAqBz/B,uBACrC0/B,EAAkBC,GAAuB3/B,qBAAS,IAClDywB,EAAgB2L,GAAqBp8B,qBAAkB,IACxD,aAAEsQ,EAAF,gBAAgBN,EAAhB,gBAAiCxM,GACrCC,GAAqBC,2BAEjB,wBAAEoD,GAA4Bd,MAC9B,EAAEvW,GAAMqf,YAAe,UAE7B,OACE,gBAACgvB,GAAD,WACE,gBAACC,GAAD,WACE,eAACE,GAAD,CAAQvrB,QAAQ,SAAhB,SACE,eAAC,GAAD,MAEF,eAAC,KAAD,CAASmL,UAAU,QAAQt0B,MAAOkG,EAAE,mBAApC,SACE,eAAC0uC,GAAD,UACE,eAACC,GAAD,CAASnb,GAAG,aAAZ,SACE,eAAC0b,GAAD,UAIL73B,EACC,qCACGxB,EAAYC,kBACX,eAAC,KAAD,CAASsY,UAAU,QAAQt0B,MAAOkG,EAAE,cAApC,SACE,eAACwuC,GAAD,CAAQvrB,QAAQ,SAAhB,SACE,eAACwrB,GAAD,UACE,eAACK,GAAD,CAAelsB,MAAM,kBAO/B,qCACG/M,EAAYC,kBACX,eAAC,KAAD,CAASsY,UAAU,QAAQt0B,MAAOkG,EAAE,aAApC,SACE,eAAC0uC,GAAD,UACE,eAACC,GAAD,CAASnb,GAAG,OAAZ,SACE,eAACsb,GAAD,eAQd,gBAACP,GAAD,YAEG,EASA14B,EAAYjB,oBACX,eAAC,KAAD,CAASwZ,UAAU,QAAQt0B,MAAOkG,EAAE,kBAApC,SACE,eAAC0uC,GAAD,UACE,eAACC,GAAD,CAASnb,GAAG,YAAZ,SACE,eAACwb,GAAD,UAMR,eAAC,KAAD,CAAS5gB,UAAU,QAAQt0B,MAAOkG,EAAE,cAAekkB,KAAM2rB,EAAzD,SACE,eAAC,KAAD,CACE5sB,QAAQ,SACRktB,aAAc,IAAML,GAAmB,GACvCM,aAAc,IAAMN,GAAmB,GAHzC,SAKE,eAACV,GAAD,CACEiB,QAAQ,QACRnsB,KAAMyrB,EACNW,aAAcC,IACRA,GACFT,GAAmB,GAErBF,EAAeW,IAEjBniB,UAAU,QACV4J,QACE,eAACyU,GAAD,CACEC,gBAAiB,KACfwD,GAAoB,GACpBN,GAAe,IAEjBjD,kBAAmBA,EACnBX,kBAAmB3iC,IACjB2mC,EAAkB3mC,GAClBumC,GAAe,GACfF,GAA4B,IAE9B9E,mBAAoB,KAClB4E,GAA4B,GAC5BI,GAAe,IAEjBhD,wBAAyB,KACvBgD,GAAe,GACfz3B,EAAS,uBAIf0c,kBAAmB,CACjB2b,SAAU,SACVC,aAAc,OACd93C,WAAYsW,GAAMC,OAAOnT,IAAIE,UAAU,MAnC3C,SAsCE,eAAC2pB,GAAD,UAIL6pB,GAA4BM,GAC3B,eAAChG,GAAD,CACEv5B,GAAIu/B,EAAev/B,GACnByT,SAAU,IAAMyrB,GAA4B,KAG/CO,GACCp6B,EAAYG,kBACVH,EAAY3B,qBAUZ,eAACmuB,GAAD,CACE3D,UAAW,KACTwR,GAAoB,GACfr6B,EAAYE,YAGVoC,EAAS,oBAFPA,EAAS,iBAAkB,CAAEu4B,MAAO,CAAEC,KAAM,WAIvD1sB,SAAU,IAAMisB,GAAoB,KAjBtC,eAACnP,GAAD,CACEC,eAAgBA,EAChBtC,UAAW,KACTwR,GAAoB,GACpB3vB,GAAgB,IAElB0D,SAAU,IAAMisB,GAAoB,MAczCrvB,GAAgB9M,IAAoB8B,EAAY3B,sBAC/C,eAAC2uB,GAAD,CACE/vB,UAAWiB,EACX2qB,UAAW,KACTne,GAAgB,GAChBpI,EAAS,aAAc,CAAEpW,SAAS,KAEpCkiB,SAAU,IAAM1D,GAAgB,KAGnCgvB,GACC,eAAClL,GAAD,CAAsBpgB,SAAU,IAAMurB,GAA4B,Y,cCjMrE,MCEMoB,GAAc9+B,IAAI;;;;;;;;;;;;;;;;;;EAoBlB++B,GAAc/+B,IAAI;;;;;;;;;;;;;;;;;EAmBlBg/B,GAAah/B,IAAI;;;;;;EC5BjBi/B,GAAWlyB,IACtB,MAAOK,EAAM8xB,GAAWzgC,oBAAgB,KACjC0gC,EAAoBC,GAAyB3gC,qBAAS,IACtD4gC,EAAqBC,GAA0B7gC,uBAChD,EAAEvQ,GAAMqf,YAAe,mBACvB,YAAExJ,GAAgB/B,MAElB,UAAEu9B,GAAcC,gBAChB,iBACJC,EADI,gBAEJC,EAFI,gBAGJC,EAHI,SAIJpiB,EAJI,kBAKJqiB,EALI,KAMJ5nB,EANI,QAOJ6nB,EAPI,oBAQJC,GF7BuB,GACzBC,aACAC,4BACAC,4BAMA,MAAOjoB,EAAM6nB,GAAWphC,oBAMtB,CACAuZ,KAAM,mBAEDynB,EAAkBK,GAAuBrhC,sBAoFhD,MAAO,CACLihC,gBAnFsBz4B,wBACtB,EAAGxX,eAAwC,IAAD,EACxC,IAAKA,EAAU,OAEf,MACMywC,EAAgB,UADCzwC,EAAS,GACQiP,UAAlB,aAAG,EAAmBM,WACvCkhC,IAELH,GAAWI,IACT,MAAMC,EAAU,IAAID,GACdE,EAAkBF,EAASG,WAAUC,IAAQA,EAAIlyC,UAEvD,OAAyB,IAArBgyC,EAA+BF,GACnCC,EAAQC,GAAmB,IACtBD,EAAQC,GACXE,IAAK,IAAKH,EAAQC,GAAiBE,IAAK7hC,GAAIwhC,GAC5C7xC,QAASoB,EAAS,IAEb2wC,MAETP,EAAQ,CACN7nB,KAAM,gBACNjkB,QAAS,CAAEysC,UAAWN,EAAiBlhC,iBAG3C,CAAC+gC,IA2DDJ,gBAxDsB14B,wBACtB,EAAGxX,eACD,IAAKA,EAAU,OACf,MAAMgxC,EAAiBhxC,EAAS,GAEhCswC,GAAWI,IACT,MAAMC,EAAU,IAAID,GAEdO,EAAkBN,EAAQE,WAAU,EAAGC,SAAUA,EAAI7hC,KAAO+hC,EAAe/hC,KAOjF,OALA0hC,EAAQM,GAAmB,IACtBN,EAAQM,GACXryC,QAASoyC,GAGJL,OAGX,CAACL,IAuCDxiB,SApCetW,wBACd+iB,IACC+V,GAAWI,IACT,MAAM9hB,EAAQ8hB,EAASG,WAAU,EAAGC,UAAH,aAAaA,EAAI7hC,MAAJ,UAAWsrB,EAAEv6B,gBAAb,aAAW,EAAa,GAAGiP,OACnEiiC,EAAcR,EAAS9hB,GAG7B,OAFA2hB,EAA0BW,GAC1BV,GAAsB,GACfE,EAAS9oC,QAAOkpC,GAAOA,EAAIA,IAAI7hC,KAAOiiC,EAAYJ,IAAI7hC,UAGjE,CAACqhC,EAAYC,EAA2BC,IA2BxCL,kBAxBwB34B,wBACvB+iB,IAA+B,IAAD,IAC7B,OAAI,UAACA,EAAEv6B,gBAAH,aAAC,EAAYK,UAAU,UAACk6B,EAAEv6B,gBAAH,aAAC,EAAa,GAAGiP,KAK5CmhC,EAAQ,CACN7nB,KAAM,gBACNjkB,QAAS,CAAEysC,UAAWxW,EAAEv6B,SAAS,GAAGiP,GAAGM,cAElC+gC,GAAWI,IAChB,MAAM9hB,EAAQ8hB,EAASG,WAAU,EAAGC,UAAH,aAAaA,EAAI7hC,MAAJ,UAAWsrB,EAAEv6B,gBAAb,aAAW,EAAa,GAAGiP,OAEzE,OADAohC,EAAoBzhB,GACb8hB,OAXPN,EAAQ,CAAE7nB,KAAM,kBACT8nB,OAAoB9hC,MAa/B,CAAC+hC,IAQD/nB,OACA6nB,UACAJ,mBACAK,wBEhFE5+B,CAAY,CACd6+B,WAAYb,EACZe,sBAAuBb,EACvBY,0BAA2BV,KAGvB,UAAEsB,EAAWngC,QAASogC,GCpCD5/B,KAC3B,MAAO2/B,GAAW,QAAEngC,IAAa8G,aAA2Cy3B,GAAY,CACtF/9B,cACArG,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,KAAa,OAAC4I,QAAD,IAACA,OAAD,EAACA,EAAUq3B,UAAUnX,SAAS,OAEhD,MAAMqX,EAA0B,CAAEpiC,GAAIiC,EAAUjC,GAAIgL,WAAY,OAEhE5N,EAAMilC,MAAM,CAAEriC,GAAI5C,EAAMoP,SAAS41B,KACjChlC,EAAMklC,QAIV,MAAO,CAAEJ,YAAWngC,YDsB6BwgC,IAc3C,QAAExgC,GAAYqM,GAAa,CAC/BC,UACA9L,YAdmBT,IACnB,MAAM4/B,EAAU5/B,EAAK4M,KAAKvF,QAAQpZ,KAAI8xC,IAAG,CACvCA,IAAK,CACH7hC,GAAI6hC,EAAI7hC,GAAGM,WACXkiC,OAAQ,SACRviC,KAAM4hC,EAAI5hC,MAEZtQ,QAAS6G,YAAQqrC,EAAI1sC,KAAKlF,iBAE5BuwC,EAAQkB,IAMRpzB,iBAAiB,EACjBpM,MAAOmD,EAAYC,mBAGfm9B,EAAwBl6B,wBAC5B,EAAGvR,YAAWC,WAAUyrC,WACjBzrC,GAAaD,IACT,OAAT6pC,QAAS,IAATA,KAAW8B,MAAM,CACfC,OAAQ,CAAC5rC,EAAWC,GACpB4rC,SAAUhxC,EAAuBG,mBACjC0wC,OACAI,WAAW,OAGf,CAACjC,IAGGkC,EAAUx6B,wBACbs5B,IACC,GAAIA,EAAK,CACP,MAAMmB,EAAeC,YAAOpB,EAAI5xC,YAAY,IACtCizC,EAAYN,aAAOI,GACnBhsC,EAAYksC,EAAUtzC,SAASK,YAAY,GAC3CgH,EAAWisC,EAAUtzC,SAASK,YAAY,GAC5C4wC,GAAW4B,EAAsB,CAAEzrC,YAAWC,WAAUyrC,KAAM7wC,EAASK,WAG/E,CAAC2uC,EAAW4B,IAwBRU,EAAwB56B,wBAAY,KACdmG,EAAK3V,MAAK8oC,IAAQA,EAAIlyC,YAEhD6wC,GAAQiB,GAAY,IACfA,EACH,CACEI,IAAK,CACH7hC,GAAI7P,IACJqyC,OAAQ,UAEV7yC,aAAS2P,MAGb6hC,EAAQ,CAAE7nB,KAAM,iBAChB8nB,EAAoB1yB,EAAKtd,WACxB,CAACsd,EAAMyyB,EAASC,IA+EnB,MAAO,CACLr/B,UACA2M,OACAsyB,kBACAC,kBACApiB,WACAqiB,oBACA5nB,OACAynB,mBACAN,qBACAC,wBACA0C,gBAhHsB,CAACvB,EAAiBwB,IACxC7C,GAAQiB,IACN,MAAMC,EAAU,IAAID,GAEpB,OADAC,EAAQ2B,GAAUxB,IAAMA,EACjBH,KA6GT4B,wBA/H+BD,IAAsB,IAAD,EACpD,MAAMxB,EAAMnzB,EAAK20B,GAGjB,IAAKxB,EAAIlyC,QAEP,YADAwxC,EAAQ,CAAE7nB,KAAM,iBAGlB,MAAMiqB,EAAW,UAAG1B,EAAIlyC,eAAP,aAAG,EAAaC,SAC7B2zC,GAAaR,EAAQQ,GACzBnC,EAAoBiC,GACpBlC,EAAQ,CAAE7nB,KAAM,mBAqHhB6pB,wBACAK,kBA3FwB,KACxB,IAAK7C,EAAqB,OAC1BQ,EAAQ,CAAE7nB,KAAM,kBACI5K,EAAKzK,MAAK,EAAG49B,SAAUA,EAAI7hC,KAAO2gC,EAAoBkB,IAAI7hC,OAKxD,IAAhB0O,EAAKtd,QAAiBsd,EAAK,GAAG/e,QAGhC6wC,GAAQiB,GAAY,IAAIA,EAAUd,KAFlCH,EAAQ,CAACG,KAMbC,OAAuBthC,GACvBohC,GAAsB,IA4EtB+C,mBAzEyBpzC,UACzB,IAAKswC,EAAqB,OAC1B,MAAM0C,EAAW30B,EAAKkzB,WAAU,EAAGC,SAAUA,EAAI7hC,KAAO2gC,EAAoBkB,IAAI7hC,KAEzC,WAAnC2gC,EAAoBkB,IAAIW,cACpBN,EAAU,CAAEjgC,UAAW,CAAEjC,GAAIlL,OAAO6rC,EAAoBkB,IAAI7hC,OACpE,MAAM0jC,EAAch1B,EAAKzK,MAAK,EAAG49B,SAAUA,EAAI7hC,KAAO2gC,EAAoBkB,IAAI7hC,KAC9EwgC,GAAQiB,IACN,MAAMC,EAAU,IAAID,GAIpB,OAHAC,EAAQiC,OAAON,EAAU,GAGjBK,EAAyBhC,EAAXD,KAExBb,OAAuBthC,GACvBohC,GAAsB,IA2DtByB,mBACAyB,gBAzDuBP,IACvB,MAAMpB,EAAcvzB,EAAK20B,GACzBzC,EAAuBqB,GACvBvB,GAAsB,IAuDtBC,sBACAQ,UACA0C,aAtDmBxzC,OAASE,KAAMuzC,MAClC,IACE,MAAMvzC,EAAOuzC,EAGPC,SAFgB5zC,EAA2BI,IAElBQ,SAAShB,KAAIJ,IAAO,CACjDA,QAAS,CACPC,SAAUD,EAAQC,SAClBM,WAAY,GACZL,KAAM,WAERgyC,IAAK,IACA5rC,GAAiCtG,EAAQC,SAASK,aACrD+P,GAAI7P,IACJ8P,KAAMtQ,EAAQO,WAAW+P,MAAQjL,GAA+BrF,EAAQO,WAAW+P,MACnFuiC,OAAQ,cAGZrB,EAAQ,CAAE7nB,KAAM,kBAEhBknB,GAAQiB,IAAa,IAAD,EAClB,MACMC,EAAU,IADGD,EAAS9oC,QAAOkpC,QAAuBviC,IAAhBuiC,EAAIlyC,aACXo0C,GAGnC,OAFA3C,EAAoBM,EAAQtwC,OAAS,GACrC2xC,EAAO,UAACrB,EAAQA,EAAQtwC,OAAS,GAAGzB,eAA7B,aAAC,EAAqCC,UACtC8xC,KAET,MAAOsC,GACP10C,IAAaL,MAAM,CACjBE,QAASK,EAAE,4BE7LNy0C,GAA8C,EACzDC,UACAC,eACG/hB,MAEH,MAAM,EAAE5yB,GAAMqf,YAAe,gBAE7B,OACE,eAACyE,GAAD,CACEC,YAAa/jB,EAAE,yBAA0B,CACvC00C,UACAC,iBAEE/hB,K,8CCrBH,MCqBMgiB,GAA2B,EACtCC,aACAxe,WACAye,WACAzlB,WACAqiB,oBACA5nB,OACAvoB,eAEA,MAAMwzC,ED9BuB,MAC7B,MAAM,OAAE7lC,GAAW6O,eAoHnB,MAlHe,CAGb,CACEvN,GAAI,eACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,cAAe,CAAC,KAAM,OAAQ,WAC9D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAe,GAAE/lC,EAAO/U,UACxB,aAAc,IAIlB,CACEqW,GAAI,uBACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D8rC,MAAO,CACL,aAAe,GAAE/lC,EAAO/U,UACxB,qBAAuB,GAAE+U,EAAO/U,UAChC,eAAgB,KAIpB,CACEqW,GAAI,2BACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,aACzD8rC,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAKpB,CACEzkC,GAAI,gCACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAe,GAAE/lC,EAAO/U,UACxB,aAAc,IAIlB,CACEqW,GAAI,8CACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,OAAQ,UAAW,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,WACnF8rC,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACEzkC,GAAI,yCACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,OAAQ,UAAW,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,WACnF8rC,MAAO,CACL,gBAAiB,EACjB,eAAiB,GAAE/lC,EAAO/U,YAK9B,CACEqW,GAAI,sBACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,cAAe,CAAC,KAAM,OAAQ,WAC9D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAc,OACd,aAAc,IAIlB,CACEzkC,GAAI,8BACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D8rC,MAAO,CACL,aAAc,OACd,qBAAsB,OACtB,eAAgB,KAIpB,CACEzkC,GAAI,gCACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAc,OACd,aAAc,MClFLC,GA4BTC,EA3BUC,cACd,EAAG70C,UACDA,EAAI80C,GAAG,cAAehf,GACtB91B,EAAI80C,GAAG,cAAeP,GACtBv0C,EAAI80C,GAAG,cAAehmB,GACtB9uB,EAAI80C,GAAG,uBAAwB3D,GAC/BnxC,EAAI80C,GAAG,mBAAmB,MACxBC,QAAS,CACPC,OAAO,OAIJ,IAAIC,KAAW,IAAKX,EAAYE,cAEzC,EAAGx0C,UACDA,EAAIk1C,IAAI,cAAepf,GACvB91B,EAAIk1C,IAAI,cAAeX,GACvBv0C,EAAIk1C,IAAI,cAAepmB,GACvB9uB,EAAIk1C,IAAI,uBAAwB/D,GAChCnxC,EAAIk1C,IAAI,mBAAmB,MACzBH,QAAS,CACPC,OAAO,UAgCf,OAxBAG,MAAqB,KACnBP,EAAYQ,IAAI,CACdt1C,KAAM,oBACNkB,SAAQ,OAAEA,QAAF,IAAEA,IAAY,OAEvB,CAACA,EAAUuoB,IAEdvP,sBAAU,KACR,OAAQuP,EAAKA,MAUX,QACEqrB,EAAYS,WAAW9rB,EAAKA,YAN9B,IAAK,gBAAiB,CACpB,MAAM+rB,EAAc,IAAK/rB,EAAKjkB,QAASysC,UAAWxoB,EAAKjkB,QAAQysC,WAC/D6C,EAAYS,WAAW9rB,EAAKA,KAAM+rB,GAClC,UAMH,CAACV,EAAarrB,IAEV,OCnFD+D,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAU9Bw9C,GAAaxzB,aAAOC,KAAkB;WACxC,EAAGwzB,YAAaA,GAAU;;;;;;;;;;EAWxBC,GAAc1zB,aAAOC,KAAK;;;;;;;;;EAe1B4W,GAAa7W,aAAO5pB,KAAa;sBACxB,EAAGuW,WAAYA,EAAMC,OAAOtW;aACrC,EAAGqW,WAAYA,EAAMI,KAAKxW;;;;;MAKjCwqB,GACAA,EAAM4yB,YAAe,mCAAqC;;;EAKnDpoB,GAAQvL,aAAOwL,GAAU;;EAIzBiD,GAAOzO,aAAO2R,GAAS;;;;WAIzB,EAAGhlB,WAAYA,EAAMC,OAAO7U;EAG1B67C,GAAqB5zB,aAAOC,KAAK;;;;;;qBAMzB,EAAGtT,WAAYA,EAAME,WAAWjX;;;;;0BCvD9C,MAAMi+C,GAAkBrkC,IAAI;;;;;;;;;;;EAatBskC,GAAmBtkC,IAAI;;;;;;;;;EAWvBukC,GAAavkC,IAAI;;;;;;ECjCjBwkC,GAAgBvjC,IAC3B,MAAOwjC,GAAW,QAAEhkC,IAAa8G,aAA2Cg9B,GAAY,CACtFtjC,cACArG,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,KAAa,OAAC4I,QAAD,IAACA,OAAD,EAACA,EAAUk7B,UAAUhb,SAAS,OAEhD,MAAMqX,EAA0B,CAAEpiC,GAAIiC,EAAUjC,GAAIgL,WAAY,SAC1Dg7B,EAAgC,CAAEhmC,GAAIiC,EAAUjC,GAAIgL,WAAY,aAEtE5N,EAAMilC,MAAM,CAAEriC,GAAI5C,EAAMoP,SAAS41B,KACjChlC,EAAMilC,MAAM,CAAEriC,GAAI5C,EAAMoP,SAASw5B,KACjC5oC,EAAMklC,QAIV,MAAO,CAAEyD,YAAWhkC,YClBTkkC,GAAe3kC,IAAI;;;;;;;;;;;;;;;ECKnB4kC,GAAiB,EAAGhY,aAAqB,MACpD,MAAOiY,GAAepkC,QAASqkC,IAAmBv9B,aAChDo9B,GACA,CACE1jC,YAAcT,IACH,OAATosB,QAAS,IAATA,KAAYpsB,EAAKqkC,YAAY5xB,MAAMtU,OAErC/D,QAASnN,EAAaC,eAI1B,MAAO,CAAEm3C,cAAaC,kBChBXC,GAAe/kC,IAAI;;;;;;;;;;;gBCahC,MAAQif,KAAF,IAAWz4B,KAEXm7B,GAASnR,aAAOC,KAAK;sBACL,EAAGtT,WAAYA,EAAMC,OAAOhW;mBAC/B,EAAG+V,WAAYA,EAAME,WAAWjX;;;;;EAO7CotC,GAAQhjB,aAAOijB,KAAe;;wBAEZ,EAAGt2B,WAAYA,EAAMC,OAAOtW;;;;;;EAQ9CE,GAAQwpB,aAAOyoB,KAAU;;EAIzB+L,GAAWx0B,aAAOy0B,KAAa;;;;EAgBxBC,GAA4B,EACvC93B,OACAqyB,mBACA0F,WACA34B,WACA+Q,WACA9c,UACA2kC,oBAEA,MAAM,EAAEl3C,GAAMqf,YAAe,mBACrBrf,EAAGg3B,GAAY3X,YAAe,UAChC83B,IAAuCj4B,EAAKtd,OAU5Cw1C,EAAOzlC,oBACX,IACEuN,EAAKm4B,QAAO,CAACC,EAAyBprC,EAAGikB,KAEvCmnB,EAAYnnB,GAASonB,KAAMC,YACpBF,IACN,KACL,CAACp4B,IAGGu4B,EAAmB1+B,wBACtBoX,IACC,IAAKinB,EAAKjnB,GAAQ,OAClB,MAAM5K,EAAM6xB,EAAKjnB,GAAOunB,QAEZ,OAARnyB,GAEJA,EAAIoyB,eAAe,CACjBC,SAAU,SACVC,MAAO,aAGX,CAACT,IAGH78B,sBAAU,UACiBzK,IAArByhC,IAAwD,IAAtBA,GAAgD,OAArBA,GAEjEkG,EAAiBlG,KAChB,CAACkG,EAAkBlG,IAEtB,MAAM5K,EAAU,CACd,CACE5T,OAAQ,CAAC7mB,EAAQ4rC,EAAS3nB,IACxB,sBAAK5K,IAAK6xB,EAAKjnB,GAAf,SACE,eAAC2mB,GAAD,CAAUiB,QAAS5nB,IAAUohB,EAAkBltB,QAAS,IAAM4yB,EAAS9mB,OAG3E7M,MAAO,QAGT,CACEyP,OAAQ,EAAGsf,OAAYyF,EAAS3nB,IAC9B,sBAAK5K,IAAK6xB,EAAKjnB,GAAf,SACE,eAAC,GAAD,CACE6nB,UAAWlc,IACK,cAAVA,EAAEvkB,KACJukB,EAAEqQ,mBAGNpmB,YAAaiR,EAAQ,eACrB5xB,MAAOitC,EAAI5hC,KACX4T,QAAS,IA5DK8L,KAClBA,IAAUohB,GAAkB0F,EAAS9mB,IA2DlB8nB,CAAe9nB,GAC9B7R,SAAUgV,GACRhV,EAAS,IAAK+zB,EAAK5hC,KAAMjL,GAA+B8tB,EAAMrL,OAAO7iB,QAAU+qB,GAEjF+nB,UAAW/nB,IAAUohB,OAK7B,CACExe,OAAQ,CAAC7mB,EAAQ4rC,EAAS3nB,IACxB,eAAC1C,GAAD,CACEzH,SAAUkxB,GAAiB/mB,IAAUjR,EAAKtd,OAAS,EACnDyiB,QAAS,IAAMgL,EAASc,KAG5B7M,MAAO,SAIX,OACE,eAAC,KAAD,UACE,gBAAC,KAAD,CAAKib,KAAM,EAAX,UACE,eAAC,GAAD,UACE,eAAC,GAAD,CAAMqI,QAAM,EAAZ,SAAc5mC,EAAE,oBAEfkf,EAAKtd,QACN,eAAC,GAAD,CACE4E,KAAK,QACL2xC,OAAQ,EAAG9F,SAAUA,EAAI7hC,GACzB0f,WAAYhR,EACZ2Q,YAAY,EACZuoB,YAAY,EACZzR,QAASA,EACTnB,OAAQ2R,EAAqC,CAAE9tB,EAAG,SAAOvZ,EACzDyC,QAASA,U,cCjKrB,MAAM8lC,GAAgB/1B,aAAOg2B,KAAM;mBAChB,EAAGrpC,WAAYA,EAAME,WAAWjX;;;;;;0BAMzB,EAAG+W,WAAYA,EAAMC,OAAOtW;;iBAErC,EAAGqW,WAAYA,EAAMC,OAAO/U;;;;;;;;;;;EAavCo+C,GAAwBj2B,KAAOkL,GAAI,GAO5BgrB,GAAgC,EAAGC,WAAUC,gBACxD,MAAM,EAAE14C,GAAMqf,YAAe,kBAEvB6Q,EAAa,CACjB,CACE3Y,IAAK,OACLoI,MAAO,eAAC,KAAD,UAAM3f,EAAE,uBACfqkB,QAASo0B,GAEX,CACElhC,IAAK,MACLoI,MACE,eAAC,KAAD,CACEkS,aAAc,KAAM,EACpBvT,SAAUo6B,EACV/mB,gBAAgB,EAChBD,OAAO,OAJT,SAME,eAAC6mB,GAAD,UAAwBv4C,EAAE,uBAMlC,OAAO,eAACq4C,GAAD,CAAexkB,MAAO3D,MCpDvBa,KAAMkD,IAAY37B,KAEby4B,GAAOzO,aAAO2R,GAAS;;;EAIvB4T,GAAYvlB,aAAOC,KAAK;;sBAEf,EAAGtT,WAAYA,EAAMC,OAAOhW;mBAC/B,EAAG+V,WAAYA,EAAME,WAAWjX;;;EAKtCygD,GAAar2B,aAAOiQ,KAAKnC,KAAM;;EC6B/BwoB,GAA6B,EACxC7zB,QACA8zB,oBACAna,YACAxf,OACAqyB,mBACAuH,oBACAC,sBACAC,cACAC,cACAC,cACA7E,mBACK,IAAD,EACJ,MAAM,gBAAEtgC,GAAoBC,GAAqBC,2BAC3C,EAAEjU,GAAMqf,YAAe,mBACrBrf,EAAGg3B,GAAY3X,YAAe,UAChC6a,EAAmBC,OAAaC,MAAM,CAC1Cua,UAAWxa,OAAaE,SAASrD,EAAQ,4BAEpCmiB,EAAoBC,GAAyB7oC,qBAAS,IAEvD,WAAE8oC,GC/DmB,MAC3B,MAAOA,GAAY,QAAE9mC,IAAa8G,aAA6Cu3B,GAAa,CAC1FlkC,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBAAiB,IAAD,IACpD,IAAKA,IAAc4I,EAAU,OAE7B,MAAMi+B,EAAQ,UAAGj+B,EAASg+B,WAAW1/B,eAAvB,aAAG,EAA8B,GAEzCkF,EAAO,OAAGy6B,QAAH,IAAGA,OAAH,EAAGA,EAAUz6B,QAE1B,IAAKA,EAAS,OAEd,MAAM06B,EAAiB3rC,EAAM4rC,UAA+B,CAC1Dre,MAAOxc,GACPlM,UAAW,CAAEoM,UAASC,iBAAiB,EAAOG,gBAAgB,KAE1Dw6B,EAAU,iBAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAgBr6B,KAAKvF,eAAxB,QAAmC,GAE7Cu4B,EAAU72B,EAASg+B,WAAW1/B,QAAQpZ,KAAI8xC,IAAG,IAC9CA,EACHqH,SAAU,OAGZ9rC,EAAM+rC,WAAgC,CACpCxe,MAAOxc,GACPlM,UAAW,CAAEoM,UAASC,iBAAiB,EAAOG,gBAAgB,GAC9D3M,KAAM,CACJ4M,KAAM,IACJ,OAAGq6B,QAAH,IAAGA,OAAH,EAAGA,EAAgBr6B,KACnBvF,QAAS,IAAI8/B,KAAevH,GAC5B12B,WAAY,cAOtB,MAAO,CAAE69B,aAAY9mC,YD0BEqnC,IACjB,WAAEC,GEjEmB,MAC3B,MAAOA,GAAY,QAAEtnC,IAAa8G,aAA6Cw3B,GAAa,CAC1FnkC,QAASnN,EAAaC,eAGxB,MAAO,CAAEq6C,aAAYtnC,YF4DEunC,IAEjB,YAAEjkC,GAAgB/B,MAElB,QAAE2e,EAAF,aAAWwH,EAAX,MAAyBiO,GAAUzN,aAAQ,CAC/CC,SAAUC,aAAsBT,GAChCgC,cAAe,CAAEyY,UAAS,iBAAE5vB,QAAF,IAAEA,OAAF,EAAEA,EAAOtU,YAAT,QAAiB,MAG7C8J,sBAAU,KACJwK,GAAOmjB,EAAM,CAAEyM,UAAW5vB,EAAMtU,SACnC,CAACsU,EAAOmjB,IAEX,MAAO6R,GAAexnC,QAASynC,IAAmB3gC,aAChDw9B,GACA,CACE9jC,YAAcT,IACZosB,EAAUpsB,EAAKynC,YAAYh1B,MAAMtU,KAAM6B,EAAKynC,YAAYh1B,MAAMvU,KAEhE4K,OAAQ,CAACxN,GAAS0E,KAAM+I,MACtB,IAAKA,IAAatH,EAAiB,OAEnC,MAAMkmC,EAAersC,EAAM4rC,UAA2C,CACpEre,MAAOgb,GACP1jC,UAAW,CAAEK,UAAWiB,KAGpBmmC,EAAsBtsC,EAAM4rC,UAAiD,CACjFre,MAAO7kB,GACP7D,UAAW,CAAEjC,GAAIuD,KAGbomC,EAAW9+B,EAAS0+B,YAAYh1B,MAChC/N,EAA2BijC,EAC7B,IAAKA,EAAajjC,OAAQ2C,QAAS,IAAIsgC,EAAajjC,OAAO2C,QAASwgC,IACpE,CAAExgC,QAAS,CAACwgC,GAAW3+B,WAAY,UAQvC,GANA5N,EAAM+rC,WAA4C,CAChDxe,MAAOgb,GACP7jC,KAAM,CAAE0E,UACRvE,UAAW,CAAEK,UAAWiB,MAGrBmmC,EAAqB,OAE1B,MAAMtjC,EAAgB,CACpBvN,QAAS,IACJ6wC,EAAoB7wC,QACvB2N,OAAQ,IAAIkjC,EAAoB7wC,QAAQ2N,OAASmjC,KAIrDvsC,EAAM+rC,WAAkD,CACtDxe,MAAO7kB,GACPhE,KAAM,IAAKsE,GACXnE,UAAW,CAAEjC,GAAIuD,MAGrBrH,QAASnN,EAAaC,gBAIpB,YAAEm3C,EAAF,cAAeC,GAAkBF,GAAe,CAAEhY,cAElD0b,EAAsBvkC,EAAYC,iBACpC9V,EAAE,iCACFA,EAAE,yBAEAq6C,EAAwBxkC,EAAYC,iBACtC9V,EAAE,mCACFA,EAAE,2BAEN,OACE,gBAAC,GAAD,CAAYi2C,cAAelxB,EAA3B,UACE,eAAC,GAAD,CAAOiJ,MAAO,EAAd,SAAkBjJ,EAAQA,EAAMtU,KAAOzQ,EAAE,uBACzC,gBAAC,KAAD,CAAOu2B,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAAC,GAAD,UAAOue,EAAQq1B,EAAsBC,IACrC,eAAC,KAAD,CAAKr3B,MAAM,SAAX,SACE,gBAAC,KAAD,CAAKub,KAAM,EAAX,UACE,eAACxQ,GAAD,CAAYj0B,MAAOkG,EAAE,qBACrB,eAAC,KAAD,CAEEyQ,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAACylB,GAAD,CAAYxlB,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAArE,SACE,eAAC,KAAD,CACE6G,KAAK,QACL8X,SAAUgV,GAAShV,EAAS9Y,GAA+B8tB,EAAMrL,OAAO7iB,WACpE4tB,aAOhB,gBAAC,KAAD,WACE,eAACjF,GAAD,CAAYj0B,MAAOkG,EAAE,wBACrB,gBAAC,GAAD,WACE,gBAAC,KAAD,CAAK20B,KAAM,GAAX,UACGqC,EAAQ,uBADX,KACqC6hB,EAAkB,GAAGtzC,QAAQ,MAElE,gBAAC,KAAD,CAAKovB,KAAM,GAAX,UACGqC,EAAQ,wBADX,KACsC6hB,EAAkB,GAAGtzC,QAAQ,YAItEsQ,EAAYC,kBACX,uCACE,eAAC,KAAD,UACE,eAAC,KAAD,CAAKyoB,KAAM,EAAX,SACE,eAAC,KAAD,CACE+R,aAAc,IAAM8I,GAAsBkB,IAAcA,IACxDC,eAAgB,IACd,eAAC/B,GAAD,CACEC,SAAU,KACRW,GAAsB,GACtBN,KAEFJ,UAAWt3C,IACTg4C,GAAsB,GACtB/E,EAAajzC,MAInBivC,QAAS,CAAC,SACVnsB,KAAMi1B,EAfR,SAiBE,gBAAC,GAAD,CAAQ94C,KAAK,UAAb,UACGL,EAAE,oBADL,IAC0B,eAACw6C,GAAA,EAAD,aAKhC,eAACxD,GAAD,CACE93B,KAAMA,EACN+3B,SAAU8B,EACVz6B,SAAU06B,EACV3pB,SAAU4pB,EACV/B,eAAe,EACf3F,iBAAkBA,EAClBh/B,QAAS2mC,OAKf,eAAC,KAAD,CAAKj2B,QAAQ,MAAb,SACE,eAAC,GAAD,CACE5iB,KAAK,UACLkS,QAASynC,GAAiBpD,EAC1B5wB,WAAY9G,EAAKtd,QAAUsd,EAAK3V,MAAK,EAAG8oC,MAAKlyC,cAAekyC,EAAI5hC,OAAStQ,IACzEkkB,QAAS4V,GAAa,EAAG0a,gBACvB,IAAK5gC,EAAiB,OACtB,MAAM0mC,EAAcnzC,YAAMuxC,GAC1B,GAAI9zB,EAAO,CACT,MAAM21B,EAAgBx7B,EACnB/V,QAAO,EAAGkpC,SAAyB,WAAfA,EAAIW,SACxBzyC,KAAI,EAAG8xC,MAAKlyC,cAAR,CACHsQ,KAAM4hC,EAAI5hC,KACV9K,KAAMxF,EAASC,SACfye,QAASkG,EAAMvU,OAEbmqC,EAAgBz7B,EACnB/V,QAAO,EAAGkpC,SAAyB,WAAfA,EAAIW,SACxBzyC,KAAI,EAAG8xC,MAAKlyC,cAAR,CACHqQ,GAAIlL,OAAO+sC,EAAI7hC,IACfC,KAAM4hC,EAAI5hC,KACV9K,KAAMxF,EAASC,aAmBnB,OAhBIs6C,EAAc94C,QAChBy3C,EAAW,CAAE5mC,UAAW,CAAEioC,mBAExBC,EAAc/4C,QAChBi4C,EAAW,CAAEpnC,UAAW,CAAEmoC,eAAgBD,UAG5ChE,EAAY,CACVlkC,UAAW,CACTjC,GAAIuU,EAAMvU,GACVqqC,eAAgB,CACdpqC,KAAMkkC,EACN/nC,SAAU6tC,EAAYr6C,aAO9B25C,EAAY,CACVtnC,UAAW,CACTqoC,eAAgB,CACdrqC,KAAMkkC,EACN/nC,SAAU6tC,EAAYr6C,SACtB0S,UAAWiB,EACXgnC,eAAgB77B,EAAK3e,KAAI,EAAG8xC,MAAKlyC,cAAR,CACvBsQ,KAAM4hC,EAAI5hC,KACV9K,KAAMxF,EAASC,oBAlD3B,SAyDWJ,EAAR+kB,EAAU,uBAA4B,qC,yBG/QnD,MAAMi2B,GAAuB7f,IAE3B,MAAM8f,EAAU9f,EAAM+f,MAAM,kEAC5B,IAAKD,EACH,MAAO,GAGT,SAASE,EAAkB11C,EAAa21C,GACtC,MAAO,CACLhI,OAAQ,CAAC3tC,EAAK21C,GACdh7C,SAAU,CACRC,KAAM,QACNI,YAAa,CAACgF,EAAK21C,IAErBC,WAAa,YAAWD,eAAiB31C,IACzC61C,WAAY,CAAC,cACb56C,WAAY,GACZL,KAAM,WAIV,MAAMk7C,EAASj2C,OAAO21C,EAAQ,IACxBO,EAASl2C,OAAO21C,EAAQ,IACxBQ,EAAW,GAkBjB,OAhBIF,GAAU,IAAMA,EAAS,KAE3BE,EAASC,KAAKP,EAAkBI,EAAQC,KAGtCA,GAAU,IAAMA,EAAS,KAE3BC,EAASC,KAAKP,EAAkBK,EAAQD,IAGlB,IAApBE,EAAS75C,SAEX65C,EAASC,KAAKP,EAAkBK,EAAQD,IACxCE,EAASC,KAAKP,EAAkBI,EAAQC,KAGnCC,GAGIE,GAAkD,EAC7DC,kBACAC,eACAC,eAEA,MAAM,UAAEzK,GAAcC,eAiBtB,OAfA/2B,sBAAU,KACR,IAAK82B,IAAcwK,EAAc,OACjC,MAAMppB,EAAU,IAAIspB,KAAe,IAC9BH,EACHI,cAAehB,GACfiB,QAAQ,IAEVxpB,EAAQ4iB,GAAG,SAAUyG,GAErB,MAAMv7C,EAAM8wC,EAAU6K,SAEtBL,EAAanE,QAAQyE,YAAY1pB,EAAQ2pB,MAAM77C,MAE9C,CAAC8wC,EAAWwK,IAER,MC5DIQ,GAAwC,EAAGh4B,UAASswB,gBAC/D,MAAM,EAAE30C,GAAMqf,YAAe,kBAE7B,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UAAQs1B,IACR,gBAAC,KAAD,CAAOpe,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAAC,GAAD,WAAOxG,EAAE,qBAAT,OACA,eAAC,KAAD,CAAKijB,QAAQ,MAAb,SACE,eAAC,GAAD,CAAQoB,QAASA,EAAShkB,KAAK,UAA/B,SACGL,EAAE,sCCZFolB,GAAe9C,aAAOkC,GAAkB;;;;;EAMxCoR,GAAYtT,KAAOkL,GAAI;;;;;EAOvBwoB,GAAc1zB,KAAOkL,GAAI;;;;;;EAQzBsoB,GAAaxzB,aAAOg6B,GAAgB;;ECDpCC,GAAsB,KAAO,IAAD,EACvC,MAAM,gBAAExoC,EAAF,eAAmByC,GAAmBxC,GAAqBC,2BAC3D,EAAEjU,GAAMqf,YAAe,kBACvB1M,EAAOC,MAEN4pC,EAAUC,GAAelsC,oBAAS,CACvC9I,SAAUpF,EAAmBC,SAC7BkF,UAAWnF,EAAmBE,UAC9B2wC,KAAM7wC,EAASI,WACZJ,IAGC8V,EAAWC,gBACX,GAAE5H,GAAOksC,gBAERx3B,EAAey3B,GAAoBpsC,uBAEnCsoC,EAAmB+D,GAAwBrsC,oBAAmB,CACnElO,EAAmBE,UACnBF,EAAmBC,YAGdu6C,EAAwBC,GAA6BvsC,qBAAS,IAC9DokC,EAAWoI,GAAgBxsC,uBAC3BsO,EAASm+B,GAAczsC,uBACxB,KACJ2O,EADI,gBAEJsyB,EAFI,gBAGJC,EAHI,SAIJpiB,EAJI,kBAKJqiB,EALI,KAMJ5nB,EANI,iBAOJynB,EAPI,sBAQJoC,EARI,gBASJC,EATI,wBAUJE,EAVI,mBAWJ7C,EAXI,kBAYJ+C,EAZI,mBAaJC,EAbI,iBAcJtB,EAdI,gBAeJyB,EAfI,oBAgBJjD,EAhBI,QAiBJ5+B,EAjBI,aAkBJ8hC,GACEtD,GAAO,iBAAC7rB,QAAD,IAACA,OAAD,EAACA,EAAe1U,UAAhB,QAAsBqO,GAEjCtE,sBAAU,KAAO,IAAD,MACd,GAAI2K,EAAe,CACjB,MAAO1d,EAAWC,GAAYyd,EAActY,SAASnM,YAGrD,OAFAm8C,EAAqB13B,EAActY,SAASnM,kBAC5Cg8C,GAAYQ,IAAY,IAAUA,EAAcz1C,YAAWC,eAI7D,MAAM+M,EAAa,OAAG7B,QAAH,IAAGA,GAAH,UAAGA,EAAMzJ,sBAAT,iBAAG,EAAsBuL,MAC1CpL,GAAWA,EAAQA,QAAQmH,KAAOuD,WADjB,aAAG,EAEnB1K,QACH,UAAImL,QAAJ,IAAIA,GAAJ,UAAIA,EAAeorB,iBAAnB,aAAI,EAA0BpvB,GAAI,CAChC,MAAM/I,EAAW+M,EAAcorB,UAAUhzB,SAASnM,YAAY,GACxD+G,EAAYgN,EAAcorB,UAAUhzB,SAASnM,YAAY,GAC/Dm8C,EAAqBpoC,EAAcorB,UAAUhzB,SAASnM,aACtDg8C,GAAYQ,IAAY,IAAUA,EAAcz1C,YAAWC,kBAE5D,CAACsM,EAAiBmR,EAAlB,OAAiCvS,QAAjC,IAAiCA,OAAjC,EAAiCA,EAAMzJ,iBAE1C,MAAMg0C,EAAuBC,kBAAuB,MA2B9CC,EAAerkC,wBAAaohC,IAChCwC,EAAiBxC,KAChB,IAEGkD,EAAStkC,wBACZukC,GACCb,EAAY,CACVj6C,mBAAoBH,EAAuBG,sBACxC86C,EAAIC,aAEX,IAGIzB,EAAW/iC,wBAAY,EAAG0Q,aAAkC,IAAD,EAC/D,MAAM7c,EACJ6c,IACCA,EAAO2pB,QAAqC,WAA1B,UAAA3pB,EAAOrpB,gBAAP,eAAiBC,OAAoBopB,EAAOrpB,SAASK,aAEtEmM,GACFgwC,EAAqB,CAAChwC,EAAS,GAAIA,EAAS,OAE7C,IAcG4wC,EAAc7rC,oBAAQ,IACFuN,EAAK/V,QAAO,EAAGhJ,eAAgBA,IAIhCI,KAAI,EAAGJ,UAASkyC,UAC9B,IAAKlyC,EAASqQ,GAAI6hC,EAAI7hC,QAE9B,CAAC0O,IAEJ,OACE,uCACE,eAAC,GAAD,UACE,eAACg3B,GAAD,CAAoB3wB,IAAK23B,EAAsB1sC,GAAG,yBAEpD,eAAC,GAAD,UACE,eAAC,KAAD,CAAK+tB,KAAM,EAAX,SACGse,EACC,eAACR,GAAD,CAAsBh4B,QA9BM,KAAO,IAAD,EAC1Cy4B,GAA0B,GAC1B3kC,EAAS,iBAAkB,CACzBpW,SAAS,EACT2uC,MAAO,CACL7xB,QAAO,iBAAEqG,QAAF,IAAEA,OAAF,EAAEA,EAAe1U,UAAjB,QAAuBqO,EAC9B4+B,SAAUjnC,EACVm6B,KAAM,iBAuB4DgE,UAAWA,IAEzE,uCACGnkC,GACC,eAAC,KAAD,CAAKyS,QAAQ,MAAb,SACE,eAAC,GAAD,CACEnQ,UAAWiB,EACXuK,SAAU8+B,EACV14B,UAAWpf,OAAOkL,OAIxB,eAACooC,GAAD,CACE7zB,MAAOG,EACP2zB,kBAAmBA,EACnBna,UA7FI,CAACgf,EAAsBC,KACnCntC,EACF2H,EAAS1T,KAIXs4C,EAAaW,GACbV,EAAWW,GACXb,GAA0B,KAsFd59B,KAAMA,EACNqyB,iBAAkBA,EAClBuH,kBAAmBnF,EACnBoF,oBAAqBjF,EACrBkF,YAAapF,EACbqF,YAAa7E,EACb8E,YAAa3mC,EACb8hC,aAAcA,WAMxB,eAAC,GAAD,UACE,gBAAC,KAAD,IACMmI,EACJa,OAAQA,EACR7sC,GAAG,YACHotC,OAAuB,kBAAX,OAAJ9zB,QAAI,IAAJA,OAAA,EAAAA,EAAMA,MAA0B,YAAc,OACtD+zB,SAAUx7C,EAAWQ,iBACrBwhB,QAvGgBiP,IACtB,MAAM,IAAE8nB,EAAF,IAAO31C,GAAQ6tB,EAAMwqB,OAO3B,GANyB5+B,EAAK3V,MAAK8oC,IACjC,IAAKA,EAAIlyC,QAAS,OAAO,EACzB,MAAMM,EAAc6G,YAAM,CAAC7B,EAAK21C,IAChC,OAAO2C,aAAet9C,EAAa4xC,EAAIlyC,aAGF,kBAAX,OAAJ2pB,QAAI,IAAJA,OAAA,EAAAA,EAAMA,OAA0C,mBAAX,OAAJA,QAAI,IAAJA,OAAA,EAAAA,EAAMA,MAA0B,OAEzF,MAAM,OAAEg0B,GAAWxqB,EACnBspB,EAAqB,CAACkB,EAAOr4C,IAAKq4C,EAAO1C,OAsFrC,WAQIyB,GACA,eAAClB,GAAD,CACEC,gBAAiB,CACfoC,YAAa5hD,EAAOK,YACpB2kB,SAAU/e,EAAcS,GACxBijB,YAAa/lB,EAAE,wBAEjB67C,aAAcqB,EACdpB,SAAUA,IAGd,eAAClH,GAAD,CACEC,WAAY,CACVoJ,wBAAwB,EACxBC,SAAU,CACRl3C,SAAS,EACTuuC,OAAO,IAGXlf,SAAUmb,EACVsD,SAAUrD,EACVpiB,SAAUA,EACVqiB,kBAAmBA,EACnBnwC,SAAUi8C,EACV1zB,KAAMA,IAER,eAAC,KAAD,CACEriB,SAAUoxC,EAAkB,GAC5BrxC,UAAWqxC,EAAkB,GAC7BnV,WAAYmZ,EACZsB,OAAQ7qB,IACN,MAAM,OAAEwqB,GAAWxqB,EACnBspB,EAAqB,CAACkB,EAAOr4C,IAAKq4C,EAAO1C,OAN7C,SASE,eAACztB,GAAD,WAILsjB,GACC,eAAC,GAAD,CACEltB,YAAa/jB,EAAE,yBAA0B,CACvCo+C,QAAO,OAAEjN,QAAF,IAAEA,OAAF,EAAEA,EAAqBkB,IAAI5hC,KAClCkkC,UAAS,OAAEzvB,QAAF,IAAEA,OAAF,EAAEA,EAAezU,OAE5BuT,UAAWiwB,EACXhwB,SAAU+vB,EACVzhC,QAASogC,Q,eCjPnB,MAAQ5hB,KAAF,IAAWz4B,KAEXm7B,GAASnR,aAAOC,KAAK;sBACL,EAAGtT,WAAYA,EAAMC,OAAOhW;mBAC/B,EAAG+V,WAAYA,EAAME,WAAWjX;;;;;EAO7CotC,GAAQhjB,aAAOijB,KAAe;;wBAEZ,EAAGt2B,WAAYA,EAAMC,OAAOtW;;;;;;EAS9CktB,GAAcxD,aAAO+7B,GAAiB;;EAItCvlD,GAAQwpB,aAAOyoB,KAAU;;EAIzBuT,GAAch8B,aAAOi8B,KAAgB;;;;;;;;;EAWrCzH,GAAWx0B,aAAOy0B,KAAa;;;;EAgBxByH,GAA4B,EACvCpnC,OACAqnC,mBACAxH,WACA34B,WACA+Q,WACA9c,UACA2kC,oBACK,IAAD,EACJ,MAAM,EAAEl3C,GAAMqf,YAAe,iBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,YAAExJ,GAAgB/B,MAClB,qBAAET,GAAyBL,KAC3B0rC,EAAqCtnC,EAAKxV,OAASqB,EAEnDg1C,EAAkB9nB,IAClBA,IAAUsuB,GAAkBxH,EAAS9mB,IAOrCinB,EAAOzlC,oBACX,IACEyF,EAAKigC,QAAO,CAACC,EAAyBprC,EAAGikB,KAEvCmnB,EAAYnnB,GAASonB,KAAMC,YACpBF,IACN,KACL,CAAClgC,IAGGqgC,EAAmB1+B,wBACtBoX,IACC,IAAKinB,EAAKjnB,GAAQ,OAClB,MAAM5K,EAAM6xB,EAAKjnB,GAAOunB,QAEZ,OAARnyB,GAEJA,EAAIoyB,eAAe,CACjBC,SAAU,SACVC,MAAO,aAGX,CAACT,IAGH78B,sBAAU,UACiBzK,IAArB2uC,IAAwD,IAAtBA,GAAgD,OAArBA,GAEjEhH,EAAiBgH,KAChB,CAAChH,EAAkBgH,IAEtB,MAAM9X,EAAU,CACd,CACE5T,OAAQ,CAAC7mB,EAAQ4rC,EAAS3nB,IACxB,sBAAK5K,IAAK6xB,EAAKjnB,GAAf,SACE,eAAC,GAAD,CAAU4nB,QAAS5nB,IAAUsuB,EAAkBp6B,QAAS,IAAM4yB,EAAS9mB,OAG3E7M,MAAO,QAET,CACEyP,OAAQ,EAAG3V,OAAY06B,EAAS3nB,KAAxB,aACN,eAAC,GAAD,CACE6nB,UAAWlc,IACK,cAAVA,EAAEvkB,KACJukB,EAAEqQ,mBAGNpmB,YAAaiR,EAAQ,yBACrB5xB,MAAK,UAAEgY,EAAIuhC,sBAAN,aAAwB7uC,EAC7BuU,QAAS,IAAM4zB,EAAe9nB,GAC9B7R,SAAUgV,GACRhV,EACE,IAAKlB,EAAKuhC,eAAgBn5C,GAA+B8tB,EAAMrL,OAAO7iB,QACtE+qB,GAGJ+nB,UAAW/nB,IAAUsuB,KAGzBn7B,MAAO,OACPs7B,MAAO/oC,EAAYV,yBAErB,CACE4d,OAAQ,EAAG3V,OAAY06B,EAAS3nB,IAC9B,sBAAK5K,IAAK6xB,EAAKjnB,GAAf,SACE,eAAC,GAAD,CACE6nB,UAAWlc,IACK,cAAVA,EAAEvkB,KACJukB,EAAEqQ,mBAGNpmB,YAAaiR,EAAQ,eACrB5xB,MAAOgY,EAAI3M,KACX4T,QAAS,IAAM4zB,EAAe9nB,GAC9B7R,SAAUgV,GACRhV,EAAS,IAAKlB,EAAK3M,KAAMjL,GAA+B8tB,EAAMrL,OAAO7iB,QAAU+qB,GAEjF+nB,UAAW/nB,IAAUsuB,OAK7B,CACE1rB,OAAQ,EAAG3V,MAAKjd,WAAgB23C,EAAS3nB,IACvC,eAACmuB,GAAD,CACEtG,UAAWlc,IACK,cAAVA,EAAEvkB,KACJukB,EAAEqQ,mBAGNpmB,YAAaiR,EAAQ,eACrB5xB,MAAOgY,EAAI5W,KAAO4W,EAAI5W,KAAKjB,QAAQ,QAAKuK,EACxCuU,QAAS,IAAM4zB,EAAe9nB,GAC9B7R,SAAUgV,GAAShV,EAAS,IAAKlB,EAAK5W,KAAMlB,OAAOguB,IAAUnD,GAC7D+nB,UAAW/nB,IAAUsuB,EACrBz4B,WAAY7lB,KAAaid,EAAIzX,KAC7BtF,KAAK,SACL69C,UAAU,IAGdU,OAAM,UAACvrC,EAAqBE,WAAtB,aAAC,EAA0BqC,SACjC0N,MAAO,QAET,CACEyP,OAAQ,EAAG3V,OAAY06B,EAAS3nB,IAE5B,sBAAKxN,MAAO,CAAEW,MAAO,SAArB,SACE,eAAC,GAAD,CACEle,MAAOgY,EAAI6J,OACX3I,SAAUoI,IACRpI,EAAS,IAAKlB,EAAK6J,OAAM,OAAEP,QAAF,IAAEA,OAAF,EAAEA,EAAMlW,GAAIquC,eAAW/uC,GAAaqgB,IAE/D9L,QAAS,IAAM4zB,EAAe9nB,OAKtC7M,MAAO,SAET,CACEyP,OAAQ,CAAC7mB,EAAQ4rC,EAAS3nB,KACxB,MAAM2uB,EAAoB5H,GAAiB/mB,IAAUsuB,EAErD,OAAOrnC,EAAK+Y,GAAO/S,IAAI2hC,gBACrB,eAACtxB,GAAD,CAAczH,UAAQ,EAAC0H,YAAasJ,EAAQ,+BAE5C,eAACvJ,GAAD,CACEzH,SAAU84B,EACVz6B,QAAS,KAAOy6B,GAAqBzvB,EAASc,MAIpD7M,MAAO,SAIX,OACE,eAAC,KAAD,UACE,gBAAC,KAAD,CAAKib,KAAM,EAAX,UACE,eAAC,GAAD,UACE,eAAC,GAAD,CAAMqI,QAAM,EAAZ,SAAc5mC,EAAE,kBAElB,eAAC,GAAD,CACEwG,KAAK,QACL2xC,OAAQ,EAAG/6B,SAAUA,EAAI5M,GACzB0f,WAAY9Y,EACZuvB,QAASA,EAAQx9B,QAAO61C,IAAWA,EAAOJ,OAC1C/uB,YAAY,EACZuoB,YAAY,EACZ5S,OAAQkZ,EAAqC,CAAEr1B,EAAG,UAAQvZ,EAC1DyC,QAASA,UCpPb8lC,GAAgB/1B,aAAOg2B,KAAM;mBAChB,EAAGrpC,WAAYA,EAAME,WAAWjX;;;;;;0BAMzB,EAAG+W,WAAYA,EAAMC,OAAOtW;;iBAErC,EAAGqW,WAAYA,EAAMC,OAAO/U;;;;;;;;;;;EAavCo+C,GAAwBj2B,KAAOkL,GAAI,GAS5BgrB,GAAgC,EAC3CyG,WACAvG,YACAwG,qBACAC,+BACK,IAAD,EACJ,MAAM,EAAEn/C,GAAMqf,YAAe,iBACvB,qBAAEhM,GAAyBL,KAkC3BosC,EAhCa,CACjB,CACE7nC,IAAK,OACLoI,MAAO,eAAC,KAAD,UAAM3f,EAAE,yBACfqkB,QAAS46B,GAEX,CACE1nC,IAAK,mBACLoI,MAAO,eAAC,KAAD,UAAM3f,EAAE,8BACfqkB,QAAS86B,EACTn5B,WAAU,UAAC3S,EAAqBE,WAAtB,aAAC,EAA0BqC,UAEvC,CACE2B,IAAK,MACLoI,MACE,eAAC,KAAD,CACEkS,aAAc,KAAM,EACpBvT,SAAUo6B,EACV/mB,gBAAgB,EAChBD,OAAO,OAJT,SAME,eAAC,GAAD,UAAwB1xB,EAAE,8BAIhC,CACEuX,IAAK,QACLoI,MAAO,eAAC,KAAD,UAAM3f,EAAE,uBACfqkB,QAAS66B,IAImB/1C,QAAOwe,IAAWA,EAAO3B,WAEzD,OAAO,eAAC,GAAD,CAAe6N,MAAOurB,KCpExB,IAAKC,I,SAAAA,K,cAAAA,E,UAAAA,E,kBAAAA,E,YAAAA,E,cAAAA,E,iBAAAA,Q,KCJZ,MAAM7nB,GAAOlV,KAAOkL,GAAe;WACxB,EAAGhnB,UAAqB,UAATA,EAAmB,OAAS;YAC1C,EAAGA,UAAqB,UAATA,EAAmB,OAAS;;sBAEjC,EAAG7N,gBAAiBA;YAC9B,EAAG6N,UAAqB,UAATA,EAAmB,QAAU;EAQ3C84C,GAAoC,EAC/Cj/C,OAAOg/C,GAAgBE,QACvB/4C,OAAO,YAEP,MAAM,OAAE0I,GAAW6O,eAKbyhC,EAA0B,CAC9BnV,MAAOn7B,EAAOnT,IAAIE,UAAU,KAC5BwjD,IAAKvwC,EAAOtW,MACZ8mD,QAASxwC,EAAOnU,oBAChBmoC,KAAMh0B,EAAOnT,IAAInB,kBACjB+kD,MAAOzwC,EAAOnT,IAAIf,mBAClB4kD,OAAQ1wC,EAAOnT,IAAIlB,iBAGrB,OAAO,eAAC,GAAD,CAAMlC,WAAY6mD,EAAYn/C,GAAOmG,KAAMA,KC1B9CgqB,GAAQlO,KAAOmO,GAAc;;YAEvB,EAAGovB,wBAAyBA,GAAqB;mBAC1C,EAAG5wC,WAAYA,EAAME,WAAWjX;WACxC,EAAGorB,QAAQ,WAAcA;YACxB,EAAGnrB,SAAS,UAAaA;EASxB2nD,GAA4B,EACvCC,iBACAz8B,QACAnrB,SACA0mB,UACAkY,QACA8oB,wBAEA,MAAM1nC,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,iBAM7B,OAAK0gC,EAGH,eAAC,GAAD,CACEz8B,MAAOA,EACPnrB,OAAQA,EACR0nD,kBAAmBA,EACnBx7B,QAAS,KACHw7B,GAEJ1nC,EAAS,CACPtL,SAAU,OACV4E,OAAQoN,GAAWkY,EAAS,YAAWlY,WAAiBkY,SAAUjnB,KAGtE0V,KAnBiB/kB,EAmBA+M,KAAKuK,UAAUioC,YAAWD,GAAgB3/C,SAASK,aAlB9D,GAAE4B,EAAkBW,oOAAoOvC,gBAA0B4B,EAAkBU,iDAAiD3G,EAAOK,eAmBlWq0B,IAAK9wB,EAAE,mBAhBiB,KAJPS,OChCjBw/C,GAAsB,EAAGz5C,UAE3B,uCACE,eAAC84C,GAAD,CAAkB94C,KAAMA,IACxB,eAAC84C,GAAD,CAAkB94C,KAAMA,IACxB,eAAC84C,GAAD,CAAkB94C,KAAMA,OAWjB05C,GAAiC,EAAGC,mBAAkBC,qBAAoB55C,UAChF25C,EAGH,uCACE,eAACb,GAAD,CACE94C,KAAMA,EACNnG,KACE+/C,IAAuBv4C,GAAgBq7B,KACnCmc,GAAgBgB,KAChBhB,GAAgBE,UAGxB,eAACD,GAAD,CACE94C,KAAMA,EACNnG,KACE+/C,IAAuBv4C,GAAgBs7B,OACnCkc,GAAgBiB,MAChBjB,GAAgBE,UAGxB,eAACD,GAAD,CACE94C,KAAMA,EACNnG,KACE+/C,IAAuBv4C,GAAgBu7B,IACnCic,GAAgBkB,OAChBlB,GAAgBE,aAzBE,eAACU,GAAD,CAAqBz5C,KAAMA,KCfnDqnB,MAAOC,IAAax1B,KAEtBu1B,GAAQvL,aAAOwL,GAAU;;;;EAMzB0yB,GAAal+B,aAAOuL,GAAO;WACtB,EAAG5e,WAAYA,EAAMC,OAAO7U;;;;EAMjCupB,GAAQtB,aAAOm+B,KAAW;;;;gBAIhB,EAAGxxC,WAAYA,EAAMC,OAAOjV;;;EAK/B87B,GAAgBzT,KAAOkL,GAAI;;;;EAc3B0I,GAAU5T,aAAO6T,KAAY;;iBAEzB,EAAGlnB,WAAa,aAAYA,EAAMC,OAAOhW;EAE7CwnD,GAAyC,EACpDjwC,OACAkwC,cACAC,kBACAjC,iBACAkC,qBAEA,MAAM,OAAE3xC,GAAW6O,gBACb,YAAElI,GAAgB/B,MAClB,EAAE9T,GAAMqf,YAAe,UAE7B,OACE,gBAAC,GAAD,CAAO7Y,KAAM,GAAb,UACE,eAAC,GAAD,CAAOwnB,MAAO,EAAd,SAAkBvd,IACjBowC,GACC,eAACprB,GAAD,CAASC,eAAgB,CAAEl8B,QAAS,WAAasH,KAAMd,EAAE,oBAG1D6V,EAAYV,yBAA2BwpC,GACtC,uCACE,eAAC,GAAD,CAASt+C,KAAK,aACd,eAACmgD,GAAD,UAAa7B,OAGjB,eAAC,GAAD,CAASt+C,KAAK,aACd,eAACmgD,GAAD,UAAaG,IACb,eAAC,GAAD,CAAStgD,KAAK,aACd,eAAC,GAAD,CAAegkB,QAASu8B,EAAxB,SACE,eAAC,GAAD,CAAiBh+B,MAAO1T,EAAOzU,OAAQtC,OAAQ,GAAImrB,MAAO,WC5ErDw9B,GAAcx+B,aAAOijB,KAAU;;;;;;;kBAO1B,EAAGt2B,WAAYA,EAAMC,OAAOvU;;;;;;;;;;;;;kBAa5B,EAAGsU,WAAYA,EAAMC,OAAOtW;;;;;eAK/B,EAAGqW,WAAYA,EAAMC,OAAOhV;;;EChBrC6mD,GAAsB,CAAEz9B,MAAO,OAAQ09B,WAAY,KAS5C1b,GAAyB,EACpC2b,eACAC,kBACAC,iBACAC,gBACK,IAAD,EACJ,MAAM,EAAEphD,GAAMqf,YAAe,UACvB+B,EAAWhe,EAASwjB,IAAQ3a,kBAW5B06B,EAAiC,CACrC,CACE5T,OAAQ,EAAGgtB,oBAEP,eAACD,GAAD,CAAUx8B,MAAM,QAAQnrB,OAAO,OAAO4nD,eAAgBA,EAAgBF,mBAAiB,KAI7F,CACE9sB,OAAQ,EAAGtiB,UACT,eAACykB,GAAD,CAAcp0B,KAAM2P,EAAMokB,kBAAmBksB,MAGjD,CACEM,UAAW,OACX/9B,MAAO,QAET,CACEyP,OAAQ,EAAGrM,UACT,eAACwO,GAAD,CAAcp0B,KAAM4lB,EAAMmO,kBAAmBksB,MAGjD,CACEhuB,OAAQ,EAAG1V,aACT,eAAC6X,GAAD,CAAcp0B,KAAMuc,EAASwX,kBAAmBksB,OAKhD7wB,EAAU,iBACd+wB,QADc,IACdA,OADc,EACdA,EAAc1gD,KAAI+gD,IAAgB,IAAD,MAC/B,MAAO,CACL9wC,GAAI8wC,EAAY9wC,GAChBC,KAAM6wC,EAAY7wC,KAClB9K,KAAM3F,EAAE,qBAAsB,CAAEkiC,IAAK,CAAEv8B,KAAM27C,EAAY96C,QACzDkgB,KAAM46B,EAAY56B,KAAKC,QAAQvF,GAC/B/D,QAAO,oBAAEikC,EAAYjkC,eAAd,aAAE,EAAqBsJ,QAAQvF,UAA/B,QAA4C,IACnD2+B,eAAc,UAAEuB,EAAY37C,YAAd,aAAE,EAAkBlF,YAAY,cARpC,QAUR,GAEF8gD,EAAe,CACnBL,kBACA5iC,SAAU6iC,GAUZ,OACE,eAACL,GAAD,CACEvuC,QAAS6uC,EACTG,aAAcA,EACd5a,QAASA,EACTyR,YAAY,EACZloB,WAAYA,EACZsV,OAAQ,CAAEnc,EAAG,KACbwG,YAAY,EACZsoB,OAAQ,EAAG3nC,QAASA,EACpBgxC,MAAO,EAAGhxC,SACD,CACL6T,QAAS,IAnBG7T,KAClB,MAAMixC,EAAqBP,EAAgBjsC,SAASzE,GAChD0wC,EAAgB/3C,QAAOgvC,GAAUA,IAAW3nC,IAC5C,IAAI0wC,EAAiB1wC,GACzB2wC,EAAeM,IAeMC,CAAWlxC,GAC1BmS,MAAO,CAAEi7B,OAAQ,gBChGrBnvC,GAAS6T,aAAOiC,KAAW;;;;;EAcpB+Q,GAAgC7Q,iBAC3C,EAAGnG,WAAUqjC,iBAAgBC,mBAAkBtxB,iBAC7C,MAAM,EAAEtwB,GAAMqf,YAAe,iBAUvB,gBAAEtL,GAAoBC,GAAqBC,2BAC3C,KAAE3B,EAAF,QAAQC,GAAYM,GAAkBkB,GATvB8tC,IACnB,MAAMC,EAAsB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAgBv4C,QAAQqQ,QAAQxQ,QAC7DK,GAAUA,EAAOgH,KAAOmxC,GAAkBn4C,EAAO0N,aAAatV,SAE3DkgD,EAAuBlgD,QAC5B0c,EAASwjC,EAAuB,GAAGtxC,OAM/BlH,EAAO,OAAGgJ,QAAH,IAAGA,OAAH,EAAGA,EAAMhJ,QAAQqQ,QAAQxQ,QAAOK,GAAUA,EAAOgH,KAAOmxC,IAErE,OACE,eAAC,GAAD,CACEpvC,QAASA,EACTnN,MAAOw8C,EACPtjC,SAAU9N,GAAM8N,EAAShZ,OAAOkL,IAChCwV,SAAUsK,EACVvK,YAAauK,EAAatwB,EAAE,+CAA4C8P,EAL1E,gBAOGxG,QAPH,IAOGA,OAPH,EAOGA,EAAS/I,KAAIiJ,GACZ,eAAC,GAAO2b,OAAR,CAA+B/f,MAAOoE,EAAOgH,GAA7C,SACGhH,EAAOiH,MADUjH,EAAOgH,YC9C7BugB,KAAF,IAAWz4B,KAEX28B,GAAgB3S,KAAOkL,GAAI;;;;;EAO3B9J,GAAcpB,aAAOyO,GAAM;WACtB,EAAG9hB,WAAYA,EAAMC,OAAOzU;;;;EAU1BsnD,GAAgC,EAAGh+B,iBAE5C,eAAC,GAAD,UACE,eAAC,GAAD,UAAcA,OCjBZgN,KAAF,IAAWz4B,KAEJ0pD,GAAe1/B,aAAOzT,GAAQ;YAC/B,EAAGI,WAAa,aAAYA,EAAMC,OAAO/U;;;cAGvC,EAAG8U,WAAa,aAAYA,EAAMC,OAAO/U;;EAI1C8nD,GAAc3/B,aAAOhpB,GAAO;;;;EAK5BoqB,GAAcpB,aAAOyO,GAAM;WAC7B,EAAG9hB,WAAYA,EAAMC,OAAOzU;;;;;EAO1BynD,GAAqB5/B,KAAOkL,GAAI;mBAC1B,EAAGve,WAAYA,EAAME,WAAWjX;;mBAEhC,EAAG+W,WAAa,aAAYA,EAAMC,OAAOhW;gBAC5C,EAAG+V,WAAYA,EAAMC,OAAOhW;;;;;;EAQ/BipD,GAAY7/B,aAAOyO,GAAM;WAC3B,EAAG9hB,WAAYA,EAAMC,OAAOzU;;;;;ECpC1B2nD,GAAatwC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECkBjBuwC,GAAkC,EAC7C1N,YACAjW,YACAza,WACApF,UACA4+B,eAEA,MAAM,EAAEz9C,GAAMqf,YAAe,iBACtBuiC,EAAkBU,GAAuB/xC,uBACzC2wC,EAAiBqB,GAAsBhyC,oBAAsB,KAC9D,QAAEgC,EAAF,aAAW0uC,GC5BS,GAAGxD,WAAU5+B,cACvC,MAAM,KAAEvM,EAAF,QAAQC,GAAYC,aAAwC4vC,GAAY,CAC5E3vC,UAAW,CACTgrC,SAAUA,EACV5+B,QAASA,GAEXnM,MAAOmM,IAAY4+B,IAGrB,MAAO,CAAEwD,aAAY,OAAE3uC,QAAF,IAAEA,OAAF,EAAEA,EAAMkwC,OAAO7oC,QAASpH,YDmBXkwC,CAAa,CAAE5jC,UAAS4+B,SAAUmE,IAOpE,OACE,eAACK,GAAD,CAAanoD,MAAOkG,EAAE,wBAAyBkkB,MAAI,EAACD,SAAUA,EAAUE,UAAQ,EAACC,OAAQ,KAAzF,SACE,gBAAC,KAAD,CAAKyT,OAAQ,CAAC,EAAG,IAAjB,UACE,eAAC,KAAD,CAAKlD,KAAM,GAAX,SACE,eAAC,GAAD,UAAc30B,EAAE,kCAElB,gBAAC,KAAD,CAAK63B,OAAQ,GAAb,UACE,eAAC,KAAD,UACE,eAACqqB,GAAD,UACE,eAACC,GAAD,UAAYxN,QAGhB,eAAC,KAAD,UACE,eAAC,GAAD,CACEr2B,SAnBY9N,IACtB8xC,EAAoB9xC,GACpB+xC,EAAmB,KAkBTZ,eAAgBlE,EAChBmE,iBAAkBA,EAClBtxB,YAAa/d,IAAYqvC,SAI/B,eAAC,KAAD,CAAKjtB,KAAM,GAAX,SACIpiB,GAAYqvC,EAGZ,eAAC,GAAD,CACEX,aAAcA,EACdG,UAAW7uC,EACX4uC,eAAgBoB,EAChBrB,gBAAiBA,IANnB,eAACa,GAAD,CAAch+B,YAAa/jB,EAAE,uCAUjC,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,gBAAC,KAAD,CAAK1R,QAAQ,MAAM4U,OAAQ,CAAC,GAAI,IAAhC,UACE,eAACmqB,GAAD,CAAc3hD,KAAK,OAAOgkB,QAASJ,EAAnC,SACGjkB,EAAE,mCAEL,eAAC,GAAD,CACEK,KAAK,UACL2lB,UAAWk7B,EAAgBt/C,OAC3ByiB,QAAS,KACP,MAAMjN,EAAI,OAAG6pC,QAAH,IAAGA,OAAH,EAAGA,EAAc93C,QAAOm4C,GAChCJ,EAAgBjsC,SAASqsC,EAAY9wC,OAEnC,OAAC4G,QAAD,IAACA,OAAD,EAACA,EAAMxV,SACX88B,EAAUtnB,IARd,SAWGpX,EAAE,gDEpFT6tB,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAE9B6gC,GAAa7W,aAAO5pB,KAAM;aAC1B,EAAGuW,WAAYA,EAAMI,KAAKxW;;;;;;;;;EAW1B6pD,GAAepgC,aAAOzT,IAAQgV,MAAM,CAC/CxjB,KAAM,WACL;;;EAKUsiD,GAAoBrgC,aAAOzT,IAAQgV,MAAM,CACpDxjB,KAAM,WACL;;EAIUwtB,GAAQvL,aAAOwL,GAAU;;EAGzBiD,GAAOzO,aAAO2R,GAAS;;;EAKvB+tB,GAAe1/B,aAAOzT,GAAQ;YAC/B,EAAGI,WAAa,aAAYA,EAAMC,OAAO/U;WAC1C,EAAG8U,WAAYA,EAAMC,OAAO/U;;;cAGzB,EAAG8U,WAAa,aAAYA,EAAMC,OAAO/U;;ECR1CyoD,GAA4B,EACvC79B,QACA3N,OACAqnC,mBACAoE,cACA5D,WACA6D,cACAC,cACAC,gBACAzwC,UACAmmC,YACAuK,aACAxF,WACAyF,kBACA/D,+BAEA,MAAOgE,EAAoBC,GAAqB7yC,qBAAS,IAClD8yC,EAAoBC,GAAyB/yC,qBAAS,IAEvD,EAAEvQ,GAAMqf,YAAe,gBACvBlH,EAAWC,eAEjB,IAAK2M,EAAO,OAAO,KAOnB,OACE,uCACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAOiJ,MAAO,EAAd,SAAkBjJ,EAAMtU,OACxB,eAAC,GAAD,UAAOzQ,EAAE,iBACT,eAAC,KAAD,CAAKijB,QAAQ,gBAAb,SACE,eAAC,KAAD,CACEqtB,aAAc,IAAMgT,GAAsBhJ,IAAcA,IACxDC,eAAgB,IACd,eAAC,GAAD,CACE7B,UAAW33C,IACTuiD,GAAsB,GACtB5K,EAAU33C,IAEZk+C,SAAU,KACRqE,GAAsB,GACtBrE,KAEFC,mBAAoB,KAClBoE,GAAsB,GACtBF,GAAkB,IAEpBjE,yBAA0B,KACxBmE,GAAsB,GACtBnE,OAIN9O,QAAS,CAAC,SACVnsB,KAAMm/B,EAvBR,SAyBE,gBAACX,GAAD,WACG1iD,EAAE,kBACH,eAACw6C,GAAA,EAAD,WAIN,eAACgE,GAAD,CACEpnC,KAAMA,EACNqnC,iBAAkBA,EAClBxH,SAAU4L,EACVvkC,SAAUwkC,EACVzzB,SAAU0zB,EACVxwC,QAASA,EACT2kC,cAAe+L,IAEjB,gBAAC,KAAD,CAAKhgC,QAAQ,MAAb,UACE,eAAC,GAAD,CAAcoB,QAAS,IAAMlM,EAAS1T,IAAtC,SACGzE,EAAE,oBAEL,eAAC2iD,GAAD,CACE38B,UAAW5O,EAAKxV,QAAUwV,EAAK7N,MAAK,EAAG6T,UAAWA,EAAI3M,OAAS2M,EAAI6J,SAAW7J,EAAI5W,OAClF6d,QAAS2+B,EAFX,SAIGhjD,EAAE,mCAIRmjD,GACC,eAACd,GAAD,CACE1N,UAAW5vB,EAAMtU,KACjBwT,SAAU,IAAMm/B,GAAkB,GAClC3F,SAAUA,EACV5+B,QAASkG,EAAMvU,GACfkuB,UArEoBuiB,IAC1BmC,GAAkB,GAClBF,EAAgBjC,UC5DdjG,GAAuB7f,IAE3B,MAAM8f,EAAU9f,EAAM+f,MAAM,kEAC5B,IAAKD,EACH,MAAO,GAGT,SAASE,EAAkB11C,EAAa21C,GACtC,MAAO,CACLhI,OAAQ,CAAC3tC,EAAK21C,GACdh7C,SAAU,CACRC,KAAM,QACNI,YAAa,CAACgF,EAAK21C,IAErBC,WAAa,YAAWD,eAAiB31C,IACzC61C,WAAY,CAAC,cACb56C,WAAY,GACZL,KAAM,WAIV,MAAMk7C,EAASj2C,OAAO21C,EAAQ,IACxBO,EAASl2C,OAAO21C,EAAQ,IACxBQ,EAAW,GAkBjB,OAhBIF,GAAU,IAAMA,EAAS,KAE3BE,EAASC,KAAKP,EAAkBI,EAAQC,KAGtCA,GAAU,IAAMA,EAAS,KAE3BC,EAASC,KAAKP,EAAkBK,EAAQD,IAGlB,IAApBE,EAAS75C,SAEX65C,EAASC,KAAKP,EAAkBK,EAAQD,IACxCE,EAASC,KAAKP,EAAkBI,EAAQC,KAGnCC,GAGIE,GAAkD,EAC7DC,kBACAC,eACAC,eAEA,MAAM,OAAEyH,GAAWjS,eAgBnB,OAdA/2B,sBAAU,KACR,IAAKgpC,IAAW1H,EAAc,OAC9B,MAAMppB,EAAU,IAAIspB,KAAe,IAC9BH,EACHI,cAAehB,KAEjBvoB,EAAQ4iB,GAAG,SAAUyG,GAErB,MAAMv7C,EAAMgjD,EAAOrH,SAEnBL,EAAanE,QAAQyE,YAAY1pB,EAAQ2pB,MAAM77C,MAE9C,CAACgjD,EAAQ1H,IAEL,MClEI2H,GAAwBlhC,aAAOC,KAAK;;EAIpCqT,GAAYtT,KAAOkL,GAAI;;;;;GAM5BuD,KAAMkD,IAAY37B,KAEbgrC,GAAchhB,aAAO2R,GAAS;WAChC,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;;EAK1BspC,GAAuBjhB,KAAOkL,GAAI;;;mBAG5B,EAAGve,WAAYA,EAAME,WAAWjX;;ECpBtCurD,GAAc3xC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoClB4xC,GAAc5xC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgClB6xC,GAAW7xC,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECvBtB8xC,GAAc,CAAC,YAAa,MAAO,SAAU,UAEtCC,GAAoB,KAAO,IAAD,EACrC,MAAM,OAAE30C,GAAW6O,eACb5F,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,iBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,YAAExJ,GAAgB/B,MAClB,qBAAET,GAAyBL,MAC3B,eAAEwD,EAAF,gBAAkBzC,GAAoBC,GAAqBC,2BAE3D,QACJ4K,EACA4+B,SAAUqG,EAFN,MAGJ/sB,EAHI,KAIJ4Z,GACEj/B,eAAcg/B,MAEZ+M,EAAQ,OAAGqG,QAAH,IAAGA,IAAoBttC,GAE/B,WAAEutC,EAAYxxC,QAASyxC,GC1DF,MAC3B,MAAOD,GAAY,QAAExxC,IAAa8G,aAA6CoqC,GAAa,CAC1FroC,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,EAAW,OAChB,IAAK4I,EAAU,OAEf,MAAM4oC,EAAkBxxC,EAAUyxC,cAAc,IAC1C,SAAEzG,EAAF,QAAY5+B,GAAYolC,EAExBz6C,EAAsB,CAAEgH,GAAIitC,EAAUjiC,WAAY,UAClD2oC,EAAU9oC,EAAS0oC,WAAWpqC,QACpC/L,EAAMmP,OAAsB,CAC1BvM,GAAI5C,EAAMoP,SAASxT,GACnBwN,OAAQ,CACNE,aAAaqyB,GACX,MAAM6a,EAAqB7a,EACrB8a,EAAiB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAoB3vC,MAC5C0C,IAAW,aAAI,UAAAA,EAAY4N,aAAZ,eAAmBvU,MAAOqO,KAErCylC,EAAiBD,EACnB,CACEt/B,MAAOs/B,EAAkBt/B,MACzB3N,KAAM,IAAIitC,EAAkBjtC,QAAS+sC,GACrC3oC,WAAY,eAEd,CACEuJ,MAAO,CAAEvU,GAAIqO,GACbzH,KAAM+sC,EACN3oC,WAAY,eAGlB,OAAO4oC,EACF,IACIA,EAAmBj7C,QAAOgO,IAAW,aAAI,UAAAA,EAAY4N,aAAZ,eAAmBvU,MAAOqO,KACtEylC,GAED,CAACA,OAKZ,MAAMC,EAAa32C,EAAM4rC,UAAqC,CAC5Dre,MAAOwoB,GACPlxC,UAAW,CAAEoM,UAAS4+B,cAGxB7vC,EAAM+rC,WAAsC,CAC1Cxe,MAAOwoB,GACPlxC,UAAW,CAAEoM,UAAS4+B,YACtBnrC,KAAM,CACJkwC,OAAQ,IACN,OAAG+B,QAAH,IAAGA,OAAH,EAAGA,EAAY/B,OACf7oC,SAAmB,OAAV4qC,QAAU,IAAVA,OAAA,EAAAA,EAAY/B,OAAO7oC,SACxB,IAAI4qC,EAAW/B,OAAO7oC,WAAYwqC,GAClCA,EACJ3oC,WAAY,cAKpB9O,QAASnN,EAAaC,eAGxB,MAAO,CAAEukD,aAAYxxC,YDL8BiyC,IAC7C,WAAEC,EAAYlyC,QAASmyC,GEnEF,MAC3B,MAAOD,GAAY,QAAElyC,IAAa8G,aAA6CqqC,GAAa,CAC1Fh3C,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,WACXA,GAELA,EAAKmyC,WAAW9qC,QAAQjY,SAAQ0b,IAE9B,MAAMunC,EAAa/2C,EAAMoP,SAASI,GAClCxP,EAAMilC,MAAM,CAAEriC,GAAIm0C,EAAYhQ,UAAW,YACzC,MAAMr5B,EAAyB,CAC7B9K,GAAI4M,EAAI5M,GACRgL,WAAY,cAER,QAAE6B,EAAF,KAAWqJ,GAAStJ,EAC1BxP,EAAMmP,OAAO,CACXvM,GAAI5C,EAAMoP,SAAS1B,GACnBtE,OAAQ,CACNqG,QAAO,IACEA,EAETqJ,KAAI,IACKA,WAQnB,MAAO,CAAE+9B,aAAYlyC,YFqC8BqyC,IAE5C7/B,EAAO8/B,GAAYt0C,uBAElB6G,KAAM0tC,EAAR,YAAsBC,GGzEP,EAAClmC,EAAkB4+B,KACxC,MAAM,KAAEnrC,EAAF,QAAQC,GAAYC,aAAoCmxC,GAAU,CACtElxC,UAAW,CAAEoM,QAASA,EAAU4+B,SAAUA,GAC1C/qC,MAAOmM,IAAY4+B,IAErB,MAAO,CAAErmC,KAAI,OAAE9E,QAAF,IAAEA,OAAF,EAAEA,EAAMkwC,OAAO7oC,QAASorC,YAAaxyC,IHoENyyC,CAAO,OAACjgC,QAAD,IAACA,OAAD,EAACA,EAAOvU,GAAIitC,IACzD,UAAElH,EAAWhkC,QAAS0yC,GAAqB3O,MAE1C4O,EAAqBC,GAA0B50C,uBAC/C60C,EAAoBC,GAAyB90C,qBAAS,IAEvD,OAAEgzC,GAAWjS,eAEbgU,EAAwBvsC,wBAC5B,EAAGvR,YAAWC,WAAUyrC,WACjBzrC,GAAaD,IACZ,OAAN+7C,QAAM,IAANA,KAAQpQ,MAAM,CACZC,OAAQ,CAAC5rC,EAAWC,GACpB4rC,SAAUhxC,EAAuBG,mBACjC0wC,OACAI,WAAW,OAGf,CAACiQ,KAGI/G,EAAUC,GAAelsC,oBAAS,CACvC9I,SAAUpF,EAAmBC,SAC7BkF,UAAWnF,EAAmBE,UAC9B2wC,KAAM7wC,EAASI,WAEV2U,EAAMmuC,GAAWh1C,oBAAgB,KACjCuZ,EAAM6nB,GAAWphC,oBAMtB,CACAuZ,KAAM,kBAEF07B,EAAuBrI,mBAAO,GAE9BsI,EAAU1sC,wBACbqE,IACC,GAAIA,EAAK,CACP,MAAMo2B,EAAeC,YAAOr2B,EAAI3c,YAAY,IACtCilD,EAAYtS,aAAOI,GACnBhsC,EAAYk+C,EAAUtlD,SAASK,YAAY,GAC3CgH,EAAWi+C,EAAUtlD,SAASK,YAAY,GAC5C8iD,GAAQ+B,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,WAG5E,CAAC6gD,EAAQ+B,IAGLK,EAAuBC,IAC3BL,GAAQM,GACNA,EAAStlD,KAAI,CAAC6c,EAAK+S,KAAN,IACR/S,EACHA,IAAK,IAAKA,EAAIA,IAAK0oC,WAAY31B,IAAUy1B,UAKzC5N,EAAYj/B,wBACfua,IACC,IAAKswB,GAAY3uC,SAASqe,EAAM/b,MAAsB,iBAAduS,EAAKA,KAAyB,OAEtE,MAAM20B,EAAmBrnC,EAAKg7B,WAAUh1B,GAAOA,EAAIA,IAAI0oC,aACjDC,GAAoC,IAAtBtH,EAA0BrnC,EAAKqnC,QAAoB3uC,GACvE,OAAIi2C,QAAJ,IAAIA,OAAJ,EAAIA,EAAa3oC,IAAI5W,QAGrBmrC,EAAQ,CAAE7nB,KAAM,kBAChBy7B,GAAQM,IACN,MAAM1B,EAAU,IAAI0B,GAEpB,OADA1B,EAAQhQ,OAAOsK,EAAkB,GAC1B0F,QAGX,CAAC/sC,EAAM0S,EAAKA,OAGdvP,sBAAU,KACRyrC,SAASvrC,iBAAiB,UAAWu9B,GAC9B,KACLgO,SAAStrC,oBAAoB,UAAWs9B,MAEzC,CAACA,IAEJ,MAAMxG,EAAkBz4B,wBAAY,EAAGxX,eACrC,IAAKA,EAAU,OAEf,MACMywC,EADiBzwC,EAAS,GACQiP,GACnCwhC,GAELuT,GAAQM,IAAa,IAAD,EAClB,MAAM1B,EAAU,IAAI0B,GACdI,EAAkBJ,EAASzT,WAAUh1B,GAAOA,EAAIA,IAAI0oC,aACpDI,GAAkC,IAArBD,EAAyB9B,EAAQ8B,QAAmBn2C,EAEvE,IAAKo2C,EAAY,OAAOL,EAExB,MAAM,cAAE5+C,EAAF,KAAiBtB,GAASc,GAC9BlF,EAAS,GAAGnB,SAASK,aAKjB0lD,EAAY,UAAGD,EAAW9oC,IAAI5M,GAAGM,kBAArB,QAAmCkhC,EAUrD,OATAmS,EAAQ8B,GAAmB,IACtBC,EACH9oC,IAAK,IAAK8oC,EAAW9oC,IAAK5M,GAAI21C,EAAcl/C,gBAAetB,OAAMa,KAAMb,GACvExF,QAAS,IAAKoB,EAAS,GAAIiP,GAAI21C,IAEjCxU,EAAQ,CACN7nB,KAAM,gBACNjkB,QAAS,CAAEysC,UAAW6T,KAEjBhC,OAER,IAEG1S,GAAkB14B,wBAAY,EAAGxX,eACrC,IAAKA,EAAU,OACf,MAAMgxC,EAAiBhxC,EAAS,GAEhCgkD,GAAQM,IACN,MAAM1B,EAAU,IAAI0B,IACd,cAAE5+C,EAAF,KAAiBtB,GAASc,GAC9B8rC,EAAenyC,SAASK,aAEpB2lD,EAAkBjC,EAAQ/R,WAAUh1B,GAAOA,EAAIA,IAAI5M,KAAO+hC,EAAe/hC,KAa/E,OAZK2zC,EAAQiC,GAAiBhpC,IAAI2hC,kBAChCoF,EAAQiC,GAAmB,IACtBjC,EAAQiC,GACXhpC,IAAK,IACA+mC,EAAQiC,GAAiBhpC,IAC5BnW,gBACAtB,OACAa,KAAMb,GAERxF,QAASoyC,IAGN4R,OAER,IAuBGkC,GAAmB,KACvBd,GAAQM,GAQC,IAPSA,EAAStlD,KAAI6c,IACpB,IACFA,EACHA,IAAK,IAAKA,EAAIA,IAAK0oC,YAAY,OAMjC,CACE1oC,IAAK,CAAE5M,GAAI7P,IAAwBmlD,YAAY,GAC/C3lD,aAAS2P,EACTkjC,OAAQ,cA2GVsT,GAAc30C,oBAAQ,IACFyF,EAAKjO,QAC3B,EAAGhJ,UAASid,WAAYjd,IAAYid,EAAI2hC,kBAInBx+C,KAAI,EAAGJ,UAASid,UAC9B,IAAKjd,EAASqQ,GAAI4M,EAAI5M,GAAGM,gBAEjC,CAACsG,IAEEmvC,GAAiB50C,oBACrB,WACEmzC,QADF,IACEA,OADF,EACEA,EACI37C,QAAOiU,GAAOA,EAAI7B,QAAQwjC,mBAAqB3hC,EAAIzX,OACpDpF,KAAI6c,IAAG,CACN5M,GAAI4M,EAAI5M,GAAGM,WACX3Q,QAAS6G,YAAQoW,EAAIzX,KAAMlF,aAC3BkF,KAAMyX,EAAIzX,UAEhB,CAACm/C,IA2CG1H,GAAerkC,wBAAaohC,IAE5BqL,EAAqB9N,SACvB6N,GAAQM,GAAYA,EAAS18C,QAAOiU,GAAsB,WAAfA,EAAI41B,WAEjD6R,EAAS1K,KACR,IAEGkD,GAAStkC,wBAAaukC,GAA8Bb,EAAYa,EAAIC,YAAY,IAEhFluB,GAAWtW,wBAAa+iB,IAC5BypB,GAAQM,IACN,MAAM11B,EAAQ01B,EAASzT,WAAU,EAAGh1B,UAAH,aAAaA,EAAI5M,MAAJ,UAAWsrB,EAAEv6B,gBAAb,aAAW,EAAa,GAAGiP,OACnEg2C,EAAcX,EAAS11B,GAG7B,OAFAg1B,EAAuBqB,GACvBnB,GAAsB,GACfQ,EAAS18C,QAAOiU,GAAOA,EAAIA,IAAI5M,KAAOg2C,EAAYppC,IAAI5M,UAE9D,IAEGkhC,GAAoB34B,wBAAa+iB,IAA+B,IAAD,GACnE,UAAIA,EAAEv6B,gBAAN,aAAI,EAAYK,SACd2jD,GAAQM,IACN,MAAM11B,EAAQ01B,EAASzT,WAAU,EAAGh1B,UAAH,aAAaA,EAAI5M,MAAJ,UAAWsrB,EAAEv6B,gBAAb,aAAW,EAAa,GAAGiP,OACnEu1C,EAAcF,EAAS11B,GAG7B,OAFA,OAAI41B,QAAJ,IAAIA,OAAJ,EAAIA,EAAa3oC,IAAI2hC,kBAAiBpN,EAAQ,CAAE7nB,KAAM,kBACtD67B,EAAoBx1B,GACb01B,OAGV,IAoDHtrC,sBAAU,KACR,IAAIwqC,GAAgBhgC,GAAUw+B,EAA9B,CACA,UAAIuB,QAAJ,IAAIA,OAAJ,EAAIA,EAAcljD,OAAQ,CACxB,MAAM6kD,EAAqB3B,EAAavkD,KAAI6c,IAAQ,IAAD,IACjD,MAAMspC,EAAe,CACnBtpC,IAAK,CACH5M,GAAI4M,EAAI5M,GAAGM,WACXL,KAAM2M,EAAI3M,KACVkuC,eAAgBvhC,EAAIuhC,eACpB13B,OAAQ7J,EAAIsJ,KAAKlW,GACjBquC,UAAS,UAAEzhC,EAAIC,eAAN,aAAE,EAAa7M,GACxBuuC,gBAAiB3hC,EAAI7B,QAAQwjC,gBAC7Bv4C,KAAM4W,EAAI5W,MAEZwsC,OAAQ,UAGV,KAAI,UAAC51B,EAAIzX,YAAL,aAAC,EAAUlF,aAAa,OAAOimD,EAEnC,MAAMvmD,EAAU6G,YAAQoW,EAAIzX,KAAKlF,cAC3B,cAAEwG,EAAF,KAAiBtB,GAASc,GAC9BtG,EAAQC,SAASK,aAGnB,MAAO,IACFimD,EACHtpC,IAAK,IACAspC,EAAQtpC,IACXnW,gBACAtB,QAEFxF,cAIJ,GAAK42B,GAAUyuB,EAAqB9N,QAE7B,GAAI3gB,IAAUyuB,EAAqB9N,QArElB+O,KAQ1B,GAPAlB,GAAQM,IAEN,MAAMc,EAAiBd,EAAS18C,QAC9BiU,GAAOA,EAAIjd,SAAWid,EAAIA,IAAI3M,MAAuB,WAAf2M,EAAI41B,SAE5C,MAAO,IAAIyT,KAAgBE,MAEzB7B,EAAc,CAChB,MAAMc,EAAWd,EAAa1S,WAAUh1B,GAAOA,EAAI5M,KAAOumB,IAC1D4uB,EAAoBC,GACpB,MAAMgB,EAAiB9B,EAAac,GACpC,IAAKgB,EAAeh6C,SAAU,CAC5B,MAAMnF,EAAQ,OAAGsd,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GACvC+G,EAAS,OAAGud,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GAG9C,OAFA6kD,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,aAC5DivC,EAAQ,CAAE7nB,KAAM,iBAGlB,MAAMi2B,EAAiB6G,EAAeh6C,SAASnM,YACzC+yC,EAAelsC,YAAMy4C,GACrB2F,EAAYtS,aAAOI,GACnBhsC,EAAYk+C,EAAUtlD,SAASK,YAAY,GAC3CgH,EAAWi+C,EAAUtlD,SAASK,YAAY,GAChD6kD,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,QAE5D,MAAM,gBAAEq8C,GAAoB6H,EAAerrC,QACvCwb,IAAUgoB,GACZpN,EAAQ,CAAE7nB,KAAM,gBAAiBjkB,QAAS,CAAEysC,UAAWvb,EAAMjmB,gBA0C7D+1C,CAAmBJ,OACd,CACLlB,GAAQM,IAEN,MAAMc,EAAiBd,EAAS18C,QAC9BiU,GAAOA,EAAIjd,SAAWid,EAAIA,IAAI3M,MAAuB,WAAf2M,EAAI41B,SAE5C,MAAO,IAAIyT,KAAgBE,MAG7BhB,EAAoB,GACpB,MAAMmB,EAAWL,EAAY,GAC7B,GAAIK,GAAYA,EAAS3mD,QAAS,CAChCslD,EAAQqB,EAAS3mD,QAAQC,UACzB,MAAM,gBAAE2+C,GAAoB+H,EAAS1pC,IAChC2hC,GACHpN,EAAQ,CAAE7nB,KAAM,gBAAiBjkB,QAAS,CAAEysC,UAAWwU,EAAS1pC,IAAI5M,GAAGM,mBAxGtD21C,KACzB,MAAMtC,EAAiB,IAClBsC,EACH,CACErpC,IAAK,CAAE5M,GAAI7P,KACXR,aAAS2P,EACTkjC,OAAQ,WAGZuS,EAAQpB,GACRwB,EAAoBxB,EAAQviD,OAAS,GACrC+vC,EAAQ,CAAE7nB,KAAM,iBAChB,MAAMriB,EAAQ,OAAGsd,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GACvC+G,EAAS,OAAGud,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GAE1C8iD,GAAQ+B,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,SAuEpEqkD,CAAkBN,OAqBf,CACLlB,EAAQ,CACN,CACEnoC,IAAK,CAAE5M,GAAI7P,KACXR,aAAS2P,EACTkjC,OAAQ,YAGZ2S,EAAoB,GACpBhU,EAAQ,CAAE7nB,KAAM,iBAChB,MAAMriB,EAAWsd,EAAMnY,SAASnM,YAAY,GACtC+G,EAAYud,EAAMnY,SAASnM,YAAY,GAC7C6kD,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,QAE9D8iD,EAAqB9N,SAAU,KAE9B,CAACoN,EAAc//B,EAAOggC,EAAahuB,EAAOwsB,IAE7C,MAAOyD,GAAmBC,IAAwB12C,sBAE5C22C,GAAanuC,wBAChBua,IACC,GAAI0zB,GAEF,YADAC,QAAqBn3C,GAGvB,MAAM,SAAEvO,GAAa+xB,EACfnzB,EAAO,OAAGoB,QAAH,IAAGA,OAAH,EAAGA,EAAW,GAC3B,IAAKpB,EAAS,OAEd,MAAMid,EAAG,OAAGmpC,SAAH,IAAGA,QAAH,EAAGA,GAAgB9xC,MAAK0yC,GAAaA,EAAU32C,KAAOrQ,EAAQinD,MAAM52C,KAE7E,IAAK4M,EAAK,OAEV,MAAMiqC,EAAargD,YAAQoW,EAAIzX,KAAMlF,aAC/BwG,EAAgBC,aAASmgD,GAE/BJ,GAAqB,CACnBx/C,SAAUR,EAAc7G,SAASK,YAAY,GAAK,KAClD+G,UAAWP,EAAc7G,SAASK,YAAY,OAGlD,CAAC8lD,GAAgBS,KAGbM,GAAsB31C,oBAAQ,WAAM40C,SAAN,IAAMA,QAAN,EAAMA,GAAgBhmD,KAAI6c,GAAOA,EAAI5M,MAAK,CAAC+1C,KAEzErJ,GAAuBC,kBAAuB,MAE9CrB,GAAW/iC,wBAAY,EAAG0Q,aAAkC,IAAD,EAC/D,MAAM7c,EACJ6c,IACCA,EAAO2pB,QAAqC,WAA1B,UAAA3pB,EAAOrpB,gBAAP,eAAiBC,OAAoBopB,EAAOrpB,SAASK,aAEtEmM,GACF6vC,EAAY,CAAEj1C,UAAWoF,EAAS,GAAInF,SAAUmF,EAAS,GAAIsmC,KAAM7wC,EAASI,YAE7E,IAmDH,OACE,uCACE,eAACuzC,GAAD,UACE,eAAC,KAAD,CAAKzX,KAAM,EAAX,SACE,eAAC2X,GAAD,CAAoB3wB,IAAK23B,GAAsB1sC,GAAG,2BAGtD,eAACslC,GAAD,CAAYC,QAAQ,UAAA1iC,EAAqBE,WAArB,eAA0BqC,SAAU,aAAU9F,EAAlE,SACE,gBAAC,KAAD,CAAKyuB,KAAM,EAAX,UACE,eAACilB,GAAD,CAAuBvgC,QAAQ,MAAMskC,QAAS1xC,EAAYE,YAA1D,SACE,eAACqP,GAAD,CAActS,UAAWiB,EAAiBuK,SAAU8+B,GAAc14B,UAAW7F,MAE/E,eAAC+jC,GAAD,CACExrC,KAAMA,EACNqnC,iBAAkBrnC,EAAKg7B,WAAU,EAAGh1B,SAAUA,EAAI0oC,aAClD/gC,MAAOA,EACP89B,YApdW+C,IAAsB,IAAD,EACxC,MAAMxoC,EAAMhG,EAAKwuC,GAIjB,GADAD,EAAoBC,IACfxoC,EAAIjd,QAEP,YADAwxC,EAAQ,CAAE7nB,KAAM,iBAIlB,MAAM09B,EAAW,UAAGpqC,EAAIjd,eAAP,aAAG,EAAaC,SAC7BonD,GAAa/B,EAAQ+B,GAEpBpqC,EAAIA,IAAI2hC,gBAKbpN,EAAQ,CAAE7nB,KAAM,kBAJd6nB,EAAQ,CAAE7nB,KAAM,gBAAiBjkB,QAAS,CAAEysC,UAAWl1B,EAAIA,IAAI5M,GAAGM,eAuc5DmuC,SA5aO,KACfoH,KACA1U,EAAQ,CAAE7nB,KAAM,kBA2aRg5B,YAnaU,CAAC1lC,EAAiBwoC,IACpCL,GAAQM,IACN,MAAM1B,EAAU,IAAI0B,GAEpB,OADA1B,EAAQyB,GAAUxoC,IAAMA,EACjB+mC,KAgaDpB,YA7ZW6C,IACnB,MAAMY,EAAcpvC,EAAKwuC,GACzBT,EAAuBqB,GACvBnB,GAAsB,IA2ZdrC,cAnXYniD,UACpB,IAAKkkB,IAAU04B,EAAU,OAEzB,MAAMyG,EAAgB9sC,EACnBjO,QAAO,EAAG6pC,YAAwB,WAAXA,IACvBzyC,KAAI,EAAG6c,MAAKjd,cAAR,YAAuB,CAC1BsQ,KAAM2M,EAAI3M,KACVkuC,eAAc,UAAEvhC,EAAIuhC,sBAAN,aAAwB7uC,EACtCnK,KAAI,OAAExF,QAAF,IAAEA,OAAF,EAAEA,EAASC,SACf6mB,OAAQ7J,EAAI6J,OACZw2B,WACA5+B,QAASkG,EAAMvU,GACfi3C,IAAKrqC,EAAIqqC,IACTC,cAAetqC,EAAIsqC,cACnBlhD,KAAM4W,EAAI5W,SAERmhD,EAAgBvwC,EACnBjO,QAAO,EAAG6pC,YAAwB,WAAXA,IACvBzyC,KAAI,EAAG6c,MAAKjd,cAAR,cAAuB,CAC1BqQ,GAAIlL,OAAO8X,EAAI5M,IACfC,KAAM2M,EAAI3M,KACVkuC,eAAc,UAAEvhC,EAAIuhC,sBAAN,aAAwB7uC,EACtCmX,OAAQ7J,EAAI6J,OACZ43B,UAAS,UAAEzhC,EAAIyhC,iBAAN,QAAmB,KAC5Bl5C,KAAOyX,EAAI2hC,iBAAL,OAAuB5+C,QAAvB,IAAuBA,OAAoB2P,EAApB3P,EAASC,SACtCoG,KAAM4W,EAAI5W,SAGV09C,EAActiD,cACVmiD,EAAW,CAAEtxC,UAAW,CAAEyxC,mBAE9ByD,SACIlD,EAAW,CAAEhyC,UAAW,CAAEk1C,mBAGhCxvC,EADEw4B,GAIKlsC,KA8UD8N,QAASwyC,GAAeE,GAAoBjB,GAAqBU,EACjEhM,UArTQ73C,OAASE,KAAMuzC,MAC/B,IACE,MAAMvzC,EAAOuzC,EAGPsT,SAFgBjnD,EAA2BI,IAElBQ,SAAShB,KAAIJ,IAC1C,MAAM0nD,EAAgBphD,GAAiCtG,EAAQC,SAASK,aACxE,MAAO,CACLuyC,OAAQ,SACR7yC,QAAS,CACPC,SAAUD,EAAQC,SAClBM,WAAY,GACZL,KAAM,WAER+c,IAAK,IACAyqC,EACHrhD,KAAMqhD,EAAcliD,KACpB6K,GAAI7P,IACJ8P,KACEtQ,EAAQO,WAAW+P,MAAQjL,GAA+BrF,EAAQO,WAAW+P,WAIrFkhC,EAAQ,CAAE7nB,KAAM,kBAEhBy7B,GAAQM,IAAa,IAAD,EAElB,MACM1B,EAAU,IADG0B,EAAS18C,QAAOiU,GAAO0qC,mBAAS1qC,EAAIA,IAAI5W,WACxBohD,GAGnC,OAFAjC,EAAoBxB,EAAQviD,OAAS,GACrC6jD,EAAO,UAACtB,EAAQA,EAAQviD,OAAS,GAAGzB,eAA7B,aAAC,EAAqCC,UACtC+jD,KAET,MAAO3P,GACP10C,IAAaL,MAAM,CACjBE,QAASK,EAAE,0BAmRPijD,WAA0B,iBAAdn5B,EAAKA,KACjB2zB,SAAUA,EACVyF,gBA1EejC,IACvB,MAAM8G,EAAmB9G,EAAa1gD,KAAI6c,IAAQ,IAAD,EAC/C,MAAMspC,EAAe,CACnBtpC,IAAK,CACH5M,GAAI7P,IACJ8P,KAAM2M,EAAI3M,KACVwW,OAAQ7J,EAAIsJ,KAAKlW,GACjBmuC,eAAgBvhC,EAAIuhC,eACpB+I,cAAetqC,EAAI5M,GACnBhK,KAAM4W,EAAI5W,MAEZwsC,OAAQ,UAGV,KAAI,UAAC51B,EAAIzX,YAAL,aAAC,EAAUlF,aAAa,OAAOimD,EAEnC,MAAMvmD,EAAU6G,YAAQoW,EAAIzX,KAAKlF,cAC3B,cAAEwG,EAAF,KAAiBtB,GAASc,GAAiCtG,EAAQC,SAASK,aAElF,MAAO,IACFimD,EACHtpC,IAAK,IACAspC,EAAQtpC,IACXnW,gBACAtB,QAEFxF,cAIJwxC,EAAQ,CAAE7nB,KAAM,kBAEhBy7B,GAAQM,IAAa,IAAD,EAElB,MACM1B,EAAU,IADG0B,EAAS18C,QAAOiU,GAAO0qC,mBAAS1qC,EAAIA,IAAI5W,WACxBuhD,GAC7BC,EAAe7D,EAAQviD,OAAS,EAEtC,GADA+jD,EAAoBqC,GACpB,UAAI7D,EAAQ6D,GAAc7nD,eAA1B,aAAI,EAA+BC,SAAU,CAAC,IAAD,EAC3CqlD,EAAO,UAACtB,EAAQ6D,GAAc7nD,eAAvB,aAAC,EAA+BC,cAClC,CACL,MAAMqH,EAAQ,OAAGsd,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GACvC+G,EAAS,OAAGud,QAAH,IAAGA,OAAH,EAAGA,EAAOnY,SAASnM,YAAY,GAC9C6kD,EAAsB,CAAE99C,YAAWC,WAAUyrC,KAAM7wC,EAASK,QAE9D,OAAOyhD,MA8BDhF,yBAhbuB,KAC/BkH,KACA1U,EAAQ,CAAE7nB,KAAM,0BAkbd,eAAC,GAAD,UACE,gBAAC,KAAD,IACM0yB,EACJqB,SAAUx7C,EAAWQ,iBACrBw6C,OAAQA,GACRO,OAAsB,iBAAd9zB,EAAKA,KAA0B,YAAc,OACrDtZ,GAAG,SACH6T,QAAS6iC,GACTI,oBAAqBN,QAAoBl3C,EAAYw3C,GAPvD,UASE,eAAC,GAAD,CACE1L,gBAAiB,CACfoC,YAAa5hD,EAAOK,YACpB2kB,SAAU/e,EAAcS,GACxBijB,YAAa/lB,EAAE,uBACfi8C,QAAQ,GAEVJ,aAAcqB,GACdpB,SAAUA,KAEZ,eAAClH,GAAD,CACEC,WAAY,CACVoJ,wBAAwB,EACxBC,SAAU,CACRl3C,SAAS,EACTuuC,OAAO,IAGXlf,SAAUmb,EACVsD,SAAUrD,GACVpiB,SAAUA,GACVqiB,kBAAmBA,GACnBnwC,SAAU+kD,GACVx8B,KAAMA,IAEP1S,EAAK7W,KACJ,EAAGJ,UAASid,KAAOzX,OAAMsB,oBACvB9G,GACAwF,GACAsB,GACE,eAACu8B,GAAD,CACEC,oBAAqB,CACnB99B,OACAxF,UACA8G,qBA3CZ,OAgDGs/C,SAhDH,IAgDGA,QAhDH,EAgDGA,GAAgBhmD,KAAI,EAAGiQ,KAAIrQ,aAC1B,gBAAC,KAAD,CAAiBE,KAAK,UAAUmQ,GAAIA,EAAI8B,KAAMtL,YAAQ7G,EAAQC,SAASK,aAAvE,UACE,eAAC,KAAD,CACE+P,GAAIA,EACJnQ,KAAK,OACL40C,MAAO,CACL,aAAc/lC,EAAOtT,OACrB,eAAgB,MAGpB,eAAC,KAAD,CACE4U,GAAK,OAAMA,IACXnQ,KAAK,OACL40C,MAAO,CACL,aAAc/lC,EAAOtT,OACrB,aAAc,OAdP4U,KAmBdw2C,IACC,eAAC,KAAD,CAAQx/C,UAAWw/C,GAAkBx/C,UAAWC,SAAUu/C,GAAkBv/C,SAA5E,SACE,eAAC,GAAD,UACE,eAAC,GAAD,UAAcuvB,EAAQ,wCAM/BouB,GAAsBF,GAAuBngC,GAC5C,eAAC0vB,GAAD,CACEC,QAASwQ,EAAoB9nC,IAAI3M,KACjCkkC,UAAW5vB,EAAMtU,KACjBuT,UApfmBnjB,UACzB,IAAKqkD,EAAqB,OAC1B,MAAMU,EAAWxuC,EAAKg7B,WAAUh1B,GAAOA,EAAIA,IAAI5M,KAAO00C,EAAoB9nC,IAAI5M,KAC9E,GAAmC,WAA/B00C,EAAoBlS,aAChBuD,EAAU,CAAE9jC,UAAW,CAAEjC,GAAIlL,OAAO4/C,EAAoB9nC,IAAI5M,WAC7D,CACL,MAAMy3C,EAAc7wC,EAAK3C,MAAK2I,GAAOA,EAAIA,IAAI5M,KAAO00C,EAAoB9nC,IAAI5M,KAC5E+0C,GAAQM,IACN,MAAM1B,EAAU,IAAI0B,GAIpB,OAHA1B,EAAQhQ,OAAOyR,EAAU,GAGjBqC,EAAyB9D,EAAX0B,KAG1BV,OAAuBr1C,GACvBu1C,GAAsB,IAqehBphC,SAlekB,KACxB,IAAKihC,EAAqB,OAC1BvT,EAAQ,CAAE7nB,KAAM,kBACI1S,EAAK3C,MAAK2I,GAAOA,EAAIA,IAAI5M,KAAO00C,EAAoB9nC,IAAI5M,OAItD,IAAhB4G,EAAKxV,QAAiBwV,EAAK,GAAGjX,QAGhColD,GAAQM,GAAY,IAAIA,EAAUX,KAFlCK,EAAQ,CAACL,KAMbC,OAAuBr1C,GACvBu1C,GAAsB,IAodhB9yC,QAAS0yC,QI1wBNiD,GAAep2C,IAAI;;;;;;EAQnBq2C,GAAgBr2C,IAAI;;;;;;EAQpBs2C,GAAgBt2C,IAAI;;;;;;;;;;;;;ECXpBu2C,GAAqB,KAAO,IAAD,IACtC,MAAM,gBAAEt0C,GAAoBC,GAAqBC,0BAE3CtB,EAAOC,MACP,YAAEiD,GAAgB/B,MAClB,EAAE9T,GAAMqf,YAAe,aAEvB,qBACJipC,EADI,OAEJtxC,EAFI,cAGJuxC,EAHI,mBAIJC,EAJI,0BAKJC,EALI,WAMJC,EANI,YAOJC,EAPI,cAQJC,EARI,qBASJC,EATI,oBAUJC,EAVI,YAWJnS,GCtB6B,MAC/B,MAAMx+B,EAAWC,gBAEX,gBAAErE,GAAoBC,GAAqBC,2BACzC3B,KAAMuvC,GAAmBhvC,GAAkBkB,IAE5Cg1C,EAAyBC,GAA8Bz4C,uBACvD+3C,EAAsBW,GAA2B14C,qBAAS,IAE3D,KAAE+B,EAAMC,QAASg2C,GAAkB/1C,aACvC2jC,GACA,CACE1jC,UAAW,CAAEK,UAAWiB,GACxBrB,MAAOqB,KAIJm1C,GAAe32C,QAASi2C,IAAwBnvC,aAGrD6uC,GAAc,CACd9sC,OAAQva,UACN,MAAMo5C,EAAersC,EAAM4rC,UAAkB,CAC3Cre,MAAOgb,GACP1jC,UAAW,CAAEK,UAAWiB,KAG1B,IAAKkmC,EAAc,OAEnB,MAAMkP,EAAiBlP,EAAajjC,OAAO2C,QAAQxQ,QACjD4b,GAASA,EAAMvU,KAAOu4C,IAGxBn7C,EAAM+rC,WAAW,CACfxe,MAAOgb,GACP7jC,KAAM,CAAE0E,OAAQ,IAAKijC,EAAajjC,OAAQ2C,QAASwvC,IACnD12C,UAAW,CAAEK,UAAWiB,MAG5BhB,YAAa,KACXi2C,OAA2Bl5C,GAC3Bm5C,GAAwB,IAE1Bv8C,QAASnN,EAAaC,gBAGlB,YAAEm3C,EAAaC,cAAewS,GAAuB1S,KAqBrD+R,EAA4B92C,oBAAQ,KAAO,IAAD,EAC9C,MAAMrI,EAAO,OAAGu4C,QAAH,IAAGA,OAAH,EAAGA,EAAgBv4C,QAAQqQ,QAkBxC,OAjBe,iBAAGrQ,QAAH,IAAGA,OAAH,EAAGA,EAAS+tC,QACzB,CAACC,EAAa9tC,KACZ,MAAM0N,EAAe1N,EAAO0N,aAAa/N,QACvCgO,IAAW,aAAI,UAAAA,EAAY4N,aAAZ,eAAmBvU,MAAOu4C,KAErCM,EAAWnyC,EAAamgC,QAC5B,CAACiS,EAAOnyC,IAAgBmyC,EAAQnyC,EAAYC,KAAKxV,QACjD,GAEF,MAAO,CACLwV,KAAMkgC,EAAYlgC,KAAOiyC,EACzB//C,QAAS4N,EAAatV,OAAS01C,EAAYhuC,QAAU,EAAIguC,EAAYhuC,WAGzE,CAAE8N,KAAM,EAAG9N,QAAS,WAdP,QAeV,CAAE8N,KAAM,EAAG9N,QAAS,KAGxB,QAACu4C,QAAD,IAACA,OAAD,EAACA,EAAgBv4C,QAAQqQ,QAASovC,IAErC,MAAO,CACLT,qBAAsBA,KAA0BS,EAChD/xC,OAAM,OAAE1E,QAAF,IAAEA,OAAF,EAAEA,EAAM0E,OAAO2C,QACrB4uC,gBACAC,qBACAC,4BACAC,WA/CiB,IAAMvwC,EAAU,UAgDjCwwC,YA9CmBn4C,GAAe2H,EAAU,UAAS3H,KA+CrDo4C,cA7CqBp4C,IACrBw4C,EAA2Bx4C,GAC3By4C,GAAwB,IA4CxBJ,qBAzC2B,KACtBE,GACLG,EAAY,CAAEz2C,UAAW,CAAEjC,GAAIu4C,MAwC/BD,oBArC0B,KAC1BE,OAA2Bl5C,GAC3Bm5C,GAAwB,IAoCxBtS,cACAyS,uBD9EEG,IAEE,uBACJC,EADI,sBAEJC,EAFI,QAGJngD,EAHI,eAIJogD,EAJI,oBAKJC,EALI,YAMJC,EANI,aAOJC,EAPI,eAQJC,EARI,sBASJC,EATI,qBAUJC,GExB8B,MAChC,MAAM7xC,EAAWC,gBACX,YAAEvC,GAAgB/B,KAElBm2C,EAAmB,KACvB,MAAMC,EAAQplD,MACRqlD,EAAcD,EAAME,OAE1B,GAAIv0C,EAAYxB,uBAAwB,CACtC,MAAMg2C,EAAiB,EACjBC,EAAiB,IACjBC,EAAkB,IAExB,MAAQ,GAAEJ,KADOD,EAAMM,SAAWH,EAAiBE,EAAkBD,IAIvE,OAAOH,EAAYr5C,aAGf,gBAAEiD,GAAoBC,GAAqBC,2BAE1Cu1C,EAAwBiB,GAA6Bl6C,uBACrDk5C,EAAuBiB,GAA4Bn6C,qBAAS,IAE3D+B,KAAM2O,EAAa1O,QAASm3C,GAAmBl3C,aAGrD4jC,GAAkB,CAClB3jC,UAAW,CAAEK,UAAWiB,GACxBrB,MAAOqB,KAGF42C,GAAgBp4C,QAASq4C,IAAyBvxC,aAGvD+uC,GAAe,CACfhtC,OAAQ,CAACxN,GAAS0E,KAAM+I,MACtB,IAAKA,IAAatH,EAAiB,OAEnC,MAAM82C,EAAgBj9C,EAAM4rC,UAA6C,CACvEre,MAAOib,GACP3jC,UAAW,CAAEK,UAAWiB,KAGpB+2C,EAAYzvC,EAASsvC,aAAanhD,OAClCF,EAA8BuhD,EAChC,IAAKA,EAAcvhD,QAASqQ,QAAS,IAAIkxC,EAAcvhD,QAAQqQ,QAASmxC,IACxE,CAAEnxC,QAAS,CAACmxC,GAAYtvC,WAAY,WAExC5N,EAAM+rC,WAA8C,CAClDxe,MAAOib,GACP9jC,KAAM,CAAEhJ,WACRmJ,UAAW,CAAEK,UAAWiB,MAG5BhB,YAAaT,GAAQ6F,EAAU,UAAS7F,EAAKq4C,aAAanhD,OAAOgH,MACjE9D,QAASnN,EAAaC,gBAGjBurD,GAAgBx4C,QAASo3C,IAAyBtwC,aAGvD8uC,GAAe,CACf/sC,OAAQva,UACN,MAAMgqD,EAAgBj9C,EAAM4rC,UAAmB,CAC7Cre,MAAOib,GACP3jC,UAAW,CAAEK,UAAWiB,KAG1B,IAAK82C,EAAe,OAEpB,MAAMG,EAAkBH,EAAcvhD,QAAQqQ,QAAQxQ,QACpDK,GAAUA,EAAOgH,MAAP,OAAcg5C,QAAd,IAAcA,OAAd,EAAcA,EAAwBh5C,MAGlD5C,EAAM+rC,WAAW,CACfxe,MAAOib,GACP9jC,KAAM,CAAEhJ,QAAS,IAAKuhD,EAAelxC,QAASqxC,IAC9Cv4C,UAAW,CAAEK,UAAWiB,MAG5BhB,YAAa,KACX03C,OAA0B36C,GAC1B46C,GAAyB,IAE3Bh+C,QAASnN,EAAaC,eAmClB8J,EAAUqI,oBAAQ,KAClB,OAACsP,QAAD,IAACA,OAAD,EAACA,EAAa3X,QAAQqQ,QAAQ/X,QAC9Bqf,EAAY3X,QAAQqQ,QAAQ/X,OA5HQ,EA6HtC,OAAOqf,QAAP,IAAOA,OAAP,EAAOA,EAAa3X,QAAQqQ,QAE9B,OAAOsH,QAAP,IAAOA,OAAP,EAAOA,EAAa3X,QAAQqQ,QAAQpZ,KAAIiJ,IAC/B,IACFA,EACH8mB,YAAY,MAPiC,IAUhD,CAACrP,IAEJ,MAAO,CACLuoC,yBACAC,sBAAuBA,KAA2BD,EAClDlgD,UACAogD,iBACAkB,sBACAjB,sBACAC,YApDkB,KACb71C,GACL42C,EAAa,CACXl4C,UAAW,CACTw4C,UAAW,CACTn4C,UAAWiB,EACXtD,KAAMw5C,IACNvgD,UAAW5E,MAAQE,OAAO9B,QA8ChC2mD,aAxCoBr5C,GAAe2H,EAAU,UAAS3H,KAyCtDs5C,eAvCsBt5C,IACtB,MAAMyR,EAAc,OAAGhB,QAAH,IAAGA,OAAH,EAAGA,EAAa3X,QAAQqQ,QAAQlF,MAAKjL,GAAUA,EAAOgH,KAAOA,IAC5EyR,IACLwoC,EAA0BxoC,GAC1ByoC,GAAyB,KAoCzBX,sBAjC4B,KACvBP,GACLuB,EAAa,CAAEt4C,UAAW,CAAEjC,GAAIg5C,EAAuBh5C,OAgCvDw5C,qBA7B2B,KAC3BS,OAA0B36C,GAC1B46C,GAAyB,MF5FvBQ,GAEEplB,EAAuB,OAAGnzB,QAAH,IAAGA,GAAH,UAAGA,EAAMzJ,sBAAT,iBAAG,EAAsBuL,MACpDpL,GAAWA,EAAQA,QAAQmH,KAAOuD,WADP,aAAG,EAE7B1K,QAAQ8J,aAEX,OACE,gBAACwgB,GAAD,CACEa,YAAax0B,EAAE,QAAS,CAAE09B,QAAS7nB,EAAYE,aAAe,oBAC9Dwe,YAAa42B,GAFf,UAIE,gBAAC,KAAD,CAAKtzB,OAAQ,CAAC,GAAI,IAAlB,UACGhiB,EAAYE,aACX,eAAC,KAAD,CAAKq1C,GAAI,GAAI7sB,KAAM,EAAnB,SACE,eAAC,KAAD,UACE,eAACtP,GAAD,CACES,SAAS,QACTpd,KAAI,OAAE0E,QAAF,IAAEA,IAAU,GAChBld,MAAOkG,EAAE,sBACT+jB,YAAa/jB,EAAE,4BACfzG,OACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAKo7B,KAAM,EAAX,SAAe30B,EAAE,yBACjB,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,gBAAC,KAAD,CAAKkD,OAAQ,EAAb,UACE,eAAC,KAAD,CAAKlD,KAAMmR,EAA0B,GAAK,GAA1C,SACG9lC,EAAE,iCAEJ8lC,GACC,eAAC,KAAD,CAAKnR,KAAM,GAAX,SAAgB30B,EAAE,4CAM5BmvB,kBAAmBnvB,EAAE,2BACrBuS,QAASg2C,EACTlkC,QAASqkC,EACTt5B,OAAQu5B,EACRt5B,SAAUu5B,EACVt5B,WAAY3X,GACV,uCACE,eAAC,KAAD,CAAKgd,KAAM,EAAX,SAAehd,EAAKlH,OACpB,eAAC,KAAD,CAAKkkB,KAAM,GAAX,SACE,gBAAC,KAAD,CAAKkD,OAAQ,EAAb,UACE,eAAC,KAAD,CAAKlD,KAAMmR,EAA0B,GAAK,GAA1C,SACE,eAACnP,GAAD,CACEvxB,MAAOuS,EAAK4F,eACZe,SAAUf,IACRo5B,EAAY,CACVlkC,UAAW,CAAEjC,GAAImH,EAAKnH,GAAIqqC,eAAgB,CAAEt9B,0BAKnDuoB,GACC,eAAC,KAAD,CAAKnR,KAAM,GAAX,SACE,eAACwD,GAAD,CACE/yB,MAAOuS,EAAK8F,kBACZa,SAAUb,IACRk5B,EAAY,CACVlkC,UAAW,CACTjC,GAAImH,EAAKnH,GACTqqC,eAAgB,CACdp9B,qCAYtB+R,YAAa3Z,EAAYjB,yBAKjC,eAAC,KAAD,CAAKw2C,GAAI,GAAI7sB,KAAM,EAAnB,SACE,eAAC,KAAD,UACE,eAACtP,GAAD,CACES,SAAS,QACTpd,KAAI,OAAEhJ,QAAF,IAAEA,IAAW,GACjBxP,MAC4BkG,EAA1B8lC,EAA4B,4BAAiC,uBAE/D/hB,YAEM/jB,EADJ8lC,EACM,kCACA,6BAERvsC,OAAQyG,EAAE,wBACVmvB,kBAAmBnvB,EAAE,4BACrByvB,oBAAqBzvB,EAAE,qCACvBuS,QAASm3C,EACTrlC,QAASulC,EACTx6B,OAAQy6B,EACRx6B,SAAUy6B,EACVx6B,WAAY3X,GAAQ,eAAC,KAAD,UAAMA,EAAKlH,OAC/B+e,YAAa3Z,EAAYjB,mBACzB2a,gBAAiB1Z,EAAYI,wBAKpCqyC,GACC,eAACxkC,GAAD,CACEC,YAAa/jB,EAAE,sCAAuC,CACpDqrD,MAAO5C,EAA0BrxC,KACjC9N,QAASm/C,EAA0Bn/C,UAErC0a,UAAW6kC,EACX5kC,SAAU6kC,EACVv2C,QAASi2C,IAGZiB,GACC,eAAC3lC,GAAD,CACEC,YAAa/jB,EAAE,uCAAwC,CACrDk4B,WAAYsxB,EAAwB/4C,OAEtCuT,UAAW+lC,EACX9lC,SAAU+lC,EACVz3C,QAASo3C,SGtKX97B,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAErCgzD,GAAUhpC,aAAOC,MAAKsB,MAAM,CAChCgU,OAAQ,IACP;;;;sBAImB,EAAG5oB,WAAYA,EAAMC,OAAOtW;mBAC/B,EAAGqW,WAAYA,EAAME,WAAWjX;EAG7C21B,GAAQvL,aAAOwL,GAAU;;EAIzBiD,GAAOzO,aAAO2R,GAAS;;EAQhBs3B,GAA2C,EAAG5mD,WACzD,MAAM,EAAE3E,GAAMqf,YAAe,mBAE7B,OACE,gBAACisC,GAAD,WACE,eAAC,KAAD,UACE,eAAC,GAAD,MAEF,gBAAC,KAAD,CAAK/sB,KAAM,EAAX,UACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAOvQ,MAAO,EAAd,SAAkBhuB,EAAE,gCAEtB,gBAAC,KAAD,CAAKijB,QAAQ,gBAAb,UACE,eAAC,GAAD,UAAOne,IAAMH,GAAMK,OAAO9B,KAC1B,eAAC,GAAD,UAAQ,GAAE4B,IAAMH,GAAMK,OAAO9B,oBCzC1B0gB,GAAQtB,aAAOwT,KAAU;;EAIzB01B,GAAgBlpC,aAAOmM,KAAK;;;;;;EAQ5Bg9B,GAAgBnpC,aAAOzT,KAAQ;;;EAK/B68C,GAAeppC,aAAO7T,KAAQ;;;;;;;;GCFnCof,MAAF,IAAYv1B,KAaZqzD,GAAc,KAClB,MAAMxB,EAAcrlD,MAAQslD,OAE5B,MAAO,CAACD,EAAc,EAAGA,EAAaA,EAAaA,EAAc,GAAG5pD,KAAI,CAAC6pD,EAAMj6B,KAC7E,MAAM1f,EAAO0f,EAAQ,IAAM,EAAK,GAAEi6B,MAAY,GAAEA,MAChD,MAAO,CAAEzqC,MAAOlP,EAAMrL,MAAOqL,OAIpBm7C,GAA8B,EAAGpiD,aAAc,IAAD,EACzD,MAAM,EAAExJ,GAAMqf,YAAe,oBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,aAAEpF,EAAF,QAAgB1H,GAAYyH,MAC5B,YAAEnE,GAAgB/B,KAElBomB,EAAmBC,OAAaC,MAAM,CAC1C3pB,KAAM0pB,OAAaE,SAASrD,EAAQ,yBACpCttB,UAAWywB,OAAmBE,SAASrD,EAAQ,yBAC/C60B,QAAS1xB,OAEN2xB,WACAC,KAAK,aAAa,CAACpnD,EAAMqnD,KACxB,MAAMtiD,EAAY/E,EAClB,OAAOqnD,EAAcC,KAAK,CACxBx7C,KAAM,gBACNw7C,KAAI,CAACJ,EAASnuB,KACRmuB,IAAWA,EAAQ1hD,SAAST,IACvBg0B,EAAQwuB,YAAY,CACzBhqD,KAAMw7B,EAAQx7B,KACdvC,QAASq3B,EAAQ,kCAO7BjT,YAAaoW,UAET,QAAE1H,EAAF,aAAWwH,GAAiBQ,aAAQ,CACxCC,SAAUC,aAAsBT,GAChCgC,cAAe,CACbzrB,KAAMjH,EAAOiH,KACb/G,UAAW5E,IAAM0E,EAAOE,WACxBmiD,QAASriD,EAAOqiD,QAAU/mD,IAAM0E,EAAOqiD,SAAW,KAClD9nC,YAAW,UAAEva,EAAOua,mBAAT,QAAwB,MAIvC,OACE,gBAAC,GAAD,CAAOwS,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAAC,GAAD,CAAOwnB,MAAO,EAAd,SAAkBhuB,EAAE,sBACpB,gBAAC,KAAD,WACE,eAAC+tB,GAAD,CAAYj0B,MAAOkG,EAAE,kCACrB,eAAC,KAAD,CAEEyQ,KAAK,OACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACGkW,EAAYxB,uBACX,eAACq3C,GAAD,CACEllD,KAAK,WACDwsB,EACJ1U,SAAU7N,GAAQ6N,EAAS7N,GAC3B5K,QAAS8lD,OAGX,eAAC,KAAD,CACEnlD,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAOrD,gBAAC,KAAD,CAAKyyB,OAAQ,GAAb,UACE,gBAAC2zB,GAAD,WACE,eAACz9B,GAAD,CAAYj0B,MAAOkG,EAAE,iCACrB,eAAC,KAAD,CAEEyQ,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAUlZ,WAAU4tB,GAC7BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACLuf,YAAaiR,EAAQ,qBACrBhyB,OAAQ9B,EACR+iB,YAAY,EACZ7gB,MAAOA,EAAQN,IAAMM,QAAS0K,KAC1BkjB,EACJ1U,SAAU3Z,IACJA,GAAM2Z,EAAS3Z,aAO/B,gBAAC6mD,GAAD,WACE,eAACz9B,GAAD,CAAYj0B,MAAOkG,EAAE,+BACrB,eAAC,KAAD,CAEEyQ,KAAK,UACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAUlZ,WAAU4tB,GAC7BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACLxB,OAAQ9B,EACR6iB,YAAaiR,EAAQ,qBACrB5xB,MAAOA,EAAQN,IAAMM,QAAS0K,KAC1BkjB,EACJ1U,SAAU3Z,IAEN2Z,EADE3Z,GAIK,mBAQvB,gBAAC,KAAD,WACE,eAACopB,GAAD,CAAYj0B,MAAOkG,EAAE,mCACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAMwsD,SAAP,CACEC,SAAU,CAAEC,QAAS,EAAGC,QAAS,MAC7Bt5B,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,eAACmmD,GAAD,CAAyB5mD,KAAM,IAAIyR,KAAK5M,EAAO+iD,aAC/C,eAACd,GAAD,CACEprD,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GAAauyB,GACpBvyC,EAAa,CACXxH,UAAW,CACTjC,GAAIhH,EAAOgH,GACXg8C,gBAAiB,IACZA,EACHzoC,YAAayoC,EAAgBzoC,aAAe,KAC5Cra,UAAW5E,IAAM0nD,EAAgB9iD,WAAW1E,OAAO9B,GACnD2oD,QACEW,EAAgBX,SAChB/mD,IAAM0nD,EAAgBX,SAAS7mD,OAAO9B,SAblD,SAmBGlD,EAAE,sCCvMEysD,GAA6B36C,IAAI;;;;;;;;;;;;;;EAgBjC46C,GAA2B56C,IAAI;;;;;;;;;;;;;ECjBtCrD,GAAS6T,aAAOiC,KAAW;;EAI3BooC,GAAmB,6BAQZC,GAA2C,EAAGC,gBAAe/5C,YAAWikB,YACnF,MAAM,EAAE/2B,GAAMqf,YAAe,WAEvB,uBACJytC,EADI,yBAEJC,EAFI,gCAGJC,EAHI,kCAIJC,GChBiCn6C,KACnC,MAAOg6C,GAA0Bv6C,QAASy6C,IAAqC3zC,aAG7EqzC,GAA0B,CAC1BhgD,QAASnN,EAAaC,gBAGlB,KAAE8S,EAAMC,QAAS06C,GAAsCz6C,aAG3Di6C,GAA4B,CAC5Bh6C,UAAW,CAAEjC,GAAIsC,GACjBJ,MAAOI,IAGT,MAAO,CACLg6C,yBACAE,kCACAC,oCACAF,yBAAwB,OAAEz6C,QAAF,IAAEA,OAAF,EAAEA,EAAMjJ,QAAQggC,aDHtC6jB,CAAqBp6C,GAEnBjN,EAAU8L,oBAAQ,KACtB,IAAKo7C,EAA0B,MAAO,GAEtC,MAAMI,EAA4BJ,EAAyB5jD,QACzDikD,GAAoBA,EAAiBh5C,OAAS9L,GAAgBwM,oBAGhE,cAAOq4C,QAAP,IAAOA,OAAP,EAAOA,EAA2B5sD,KAAI6sD,IAAgB,CACpDhoD,MAAOgoD,EAAiBz6C,KAAKnC,GAC7BmP,MAAQ,GAAEytC,EAAiBz6C,KAAKlC,QAAQ28C,EAAiBz6C,KAAKjC,iBAE/D,CAACq8C,IAEJ,OACE,gBAAC,GAAD,CACE3nD,MAAK,OAAEynD,QAAF,IAAEA,IAAiBF,GACxBp6C,QAASy6C,GAAmCC,EAC5C3uC,SAAU9N,IACR,MAAM68C,EAAqBvF,mBAASt3C,GAAMA,EAAK,KAC/Cs8C,EAAuB,CAAEr6C,UAAW,CAAE66C,aAAc,CAAE98C,GAAIumB,EAAOs2B,0BALrE,UAQE,eAAC,GAAOloC,OAAR,CAAe/f,MAAOunD,GAAtB,SACG3sD,EAAE,uCATP,OAWG6F,QAXH,IAWGA,OAXH,EAWGA,EAAStF,KAAI,EAAG6E,QAAOua,WACtB,eAAC,GAAOwF,OAAR,CAA2B/f,MAAOA,EAAlC,SACGua,GADiBva,SEzCtBo+C,GAAwBlhC,aAAOC,KAAK;;EAQ7BgrC,GAA8B,EAAG/jD,aAC5C,MAAM,gBAAEuK,GAAoBC,GAAqBC,0BAC3CkE,EAAWC,gBACX,YAAEvC,GAAgB/B,MAClB,EAAE9T,GAAMqf,YAAe,oBACrBrf,EAAGg3B,GAAY3X,YAAe,WAE/BmuC,EAAiBC,GAAsBl9C,uBACvC20C,EAAqBC,GAA0B50C,uBAC/C60C,EAAoBC,GAAyB90C,qBAAS,IAEvD,UAAEgmC,EAAWhkC,QAAS0yC,GAAqB3O,IAAa,KAC5D6O,OAAuBr1C,GACvBu1C,GAAsB,MAGlBqI,EAAsBlkD,EAAO0N,aAAazC,MAC9C0C,IAAW,aAAI,UAAAA,EAAY4N,aAAZ,eAAmBvU,MAAOg9C,KAoBrCpQ,EAAerkC,wBAAaohC,IAChCsT,EAAmBtT,EAAS3pC,MAC3B,IAEGm9C,EAAiB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAqBt2C,KAAK7W,KAAI6c,IAAG,IACtDA,EACHkT,WAAYlT,EAAI7B,QAAQwjC,oBAG1B,OACE,uCACE,eAAC9vB,GAAD,CACE3c,KAAI,OAAEq7C,QAAF,IAAEA,IAAqB,GAC3Bn+B,YAAa3Z,EAAYjB,mBACzB9a,MAAOkG,EAAE,iBAAkB,CAAE09B,QAAS7nB,EAAYE,aAAe,oBACjEgO,YAAa/jB,EAAE,uBAAwB,CACrC09B,QAAS7nB,EAAYE,aAAe,oBAEtCxc,OACE,qCACGsc,EAAY3B,qBACX,gBAAC,KAAD,WACE,eAAC,KAAD,CAAKygB,KAAM,EAAX,SAAe30B,EAAE,4BAChB6V,EAAYV,yBACX,eAAC,KAAD,CAAKwf,KAAM,EAAX,SAAe30B,EAAE,mCAElB6V,EAAYC,kBAAoB,eAAC,KAAD,UAAM9V,EAAE,wCAG3C,gBAAC,KAAD,WACE,eAAC,KAAD,CAAK20B,KAAM,EAAX,SAAe30B,EAAE,8BACjB,eAAC,KAAD,CAAK20B,KAAM,EAAX,SAAe30B,EAAE,4BAChB6V,EAAYC,kBAAoB,eAAC,KAAD,UAAM9V,EAAE,0CAKjDkvB,iBAGE,eAAC,GAAD,CAAuBq4B,QAAS1xC,EAAYE,YAA5C,SACE,eAACqP,GAAD,CAActS,UAAWiB,EAAiBuK,SAAU8+B,MAGxDjuB,kBAAmBnvB,EAAE,oCACrBqkB,QAAS,IACPlM,EAAS,iBAAkB,CACzBu4B,MAAO,CAAE+M,SAAUj0C,EAAOgH,GAAIqO,QAAS2uC,KAG3Cp+B,OAAQ5e,GACN2H,EAAU,iBAAiB,CACzBu4B,MAAO,CACL+M,SAAUj0C,EAAOgH,GACjBqO,QAAS2uC,EACTz2B,MAAOvmB,KAIb6e,SA5Ee7e,IACnB,MAAMu1C,EAAW,OAAG2H,QAAH,IAAGA,OAAH,EAAGA,EAAqBt2C,KAAK3C,MAAK2I,GAAOA,EAAI5M,KAAOA,IAChEu1C,IACLZ,EAAuBY,GACvBV,GAAsB,KAyElB/1B,WAAY3X,IAAI,iBACd,qCACG9B,EAAY3B,qBACX,uCACE,eAAC,KAAD,CAAKygB,KAAM,EAAX,SAAehd,EAAKlH,OACnBoF,EAAYV,yBAA2B,eAAC,KAAD,CAAKwf,KAAM,EAAX,SAAehd,EAAKgnC,iBAC3D9oC,EAAYC,kBAAoBD,EAAYjB,oBAC3C,eAAC,KAAD,UACE,eAACg4C,GAAD,CACE71B,MAAOpf,EAAKnH,GACZq8C,cAAa,UAAEl1C,EAAKy1C,wBAAP,aAAE,EAAuB58C,GACtCsC,UAAWiB,SAMnB,uCACE,eAAC,KAAD,CAAK4gB,KAAM,EAAX,gBAAe+4B,QAAf,IAAeA,GAAf,UAAeA,EAAqB3oC,aAApC,aAAe,EAA4BtU,OAC3C,eAAC,KAAD,CAAKkkB,KAAM,EAAX,SAAehd,EAAKlH,OACnBoF,EAAYC,kBACX,eAAC,KAAD,UACE,eAAC82C,GAAD,CACE71B,MAAOpf,EAAKnH,GACZq8C,cAAa,UAAEl1C,EAAKy1C,wBAAP,aAAE,EAAuB58C,GACtCsC,UAAWiB,YAQzB0b,oBAAqBuH,EAAQ,+BAE9BouB,GAAsBF,GAAuBwI,GAC5C,eAACjZ,GAAD,CACEC,QAASwQ,EAAoBz0C,KAC7BkkC,UAAW+Y,EAAoB3oC,MAAOtU,KACtCuT,UA7GmB,KACpBkhC,GACL3O,EAAU,CAAE9jC,UAAW,CAAEjC,GAAI00C,EAAoB10C,OA4G3CyT,SAzGkB,KACxBkhC,OAAuBr1C,GACvBu1C,GAAsB,IAwGhB9yC,QAAS0yC,QCxJN2I,GAAmB,KAC9B,MAAM,GAAEp9C,GAAOksC,eACTvkC,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,mBAExB7O,GAAI2H,EAAS1T,IAElB,MAAM,KAAE6N,GAAS4D,GAAU5Q,OAAOkL,IAElC,OAAI,OAAC8B,QAAD,IAACA,OAAD,EAACA,EAAM9I,QAGT,eAACmqB,GAAD,CAAQa,YAAc,GAAEx0B,EAAE,YAAYsS,EAAK9I,OAAOiH,OAAQ8jB,YCvB/C,62DDuBX,SACE,gBAAC,KAAD,CAAKsD,OAAQ,GAAIxH,MAAM,EAAvB,UACE,eAAC,KAAD,CAAKkO,KAAM,EAAX,SACE,eAACqtB,GAAD,CAAYpiD,OAAQ8I,EAAK9I,WAE3B,eAAC,KAAD,CAAK+0B,KAAM,EAAX,SACE,eAACgvB,GAAD,CAAY/jD,OAAQ8I,EAAK9I,gBATP,MEhBfqkD,GAA2B,IAEpC,gBAAC,KAAD,WACE,eAAC,KAAD,CAAO19B,OAAK,EAAC0N,QAAS,eAACwqB,GAAD,MACtB,eAAC,KAAD,CAAOnmD,KAAK,cAAc27B,QAAS,eAAC0e,GAAD,MACnC,eAAC,KAAD,CAAOr6C,KAAK,OAAO27B,QAAS,eAACgmB,GAAD,MAC5B,eAAC,KAAD,CAAO3hD,KAAK,aAAa27B,QAAS,eAAC+vB,GAAD,UCChC//B,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAErCw2B,GAAexM,aAAOmM,KAAK;;;gBAGjB,EAAGxf,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBACvC,EAAGgT,WAAYA,EAAME,WAAWjX;;;;;;;;;;;;;;;;;EAmB7C21B,GAAQvL,aAAOwL,GAAU;;;;WAIpB,EAAG7e,WAAYA,EAAMC,OAAOtW;EAGjCu7B,GAAW7R,aAAO2R,GAAS;;;;;WAKtB,EAAGhlB,WAAYA,EAAMC,OAAOtW;EAGjCk1D,GAAYxrC,aAAOmM,KAAK;;;EAKxBs/B,GAAwBzrC,aAAOmM,KAAK;;;;;;;;EAUpCsH,GAAgBzT,KAAOkL,GAAI;;;;;;;sBAOX,EAAGve,WAAYA,EAAMC,OAAOjV;EAG5C+zD,GAAY1rC,aAAOC,KAAK;;EAIxB0rC,GAAY3rC,aAAOC,KAAK;;;EAQjB2rC,GAAmC,EAAGC,qBACjD,MAAM,EAAEnuD,GAAMqf,YAAe,cACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,YAAExJ,GAAgB/B,KAElBs6C,EAAgB,CACpB,CACE39C,KAAMzQ,EAAE,4BACRquD,MAAO,CACL,eAAC/O,GAAD,CAAkBj/C,KAAMg/C,GAAgBgB,OACxC,eAACf,GAAD,IACA,eAACA,GAAD,MAGJ,CACE7uC,KAAMzQ,EAAE,+BACRquD,MAAO,CACL,eAAC/O,GAAD,IACA,eAACA,GAAD,CAAkBj/C,KAAMg/C,GAAgBiB,QACxC,eAAChB,GAAD,MAGJ,CACE7uC,KAAMzQ,EAAE,iCACRquD,MAAO,CACL,eAAC/O,GAAD,IACA,eAACA,GAAD,IACA,eAACA,GAAD,CAAkBj/C,KAAMg/C,GAAgBkB,YAK9C,OACE,eAAC0N,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAOjgC,MAAO,EAAd,SAAkBhuB,EAAE,4BAClBmuD,GACA,gBAACH,GAAD,WACE,eAACF,GAAD,CAAWn5B,KAAM,EAAjB,SACE,eAAC2qB,GAAD,CAAkBj/C,KAAMg/C,GAAgBt6B,UAE1C,eAAC,KAAD,CAAK4P,KAAM,GAAX,SACE,eAAC,GAAD,UACG9e,EAAYE,YAAc/V,EAAE,yBAA2BA,EAAE,8BAG9D,eAAC8tD,GAAD,CAAWn5B,KAAM,EAAjB,SACE,eAAC2qB,GAAD,CAAkBj/C,KAAMg/C,GAAgBjiC,QAE1C,eAAC,KAAD,CAAKuX,KAAM,GAAX,SACE,eAAC,GAAD,UAAW30B,EAAE,8BAIlB6V,EAAYC,kBACX,uCACE,eAAC,GAAD,CAAOkY,MAAO,EAAd,SAAkBhuB,EAAE,iCACpB,eAACguD,GAAD,CAAWn2B,OAAQ,CAAC,EAAG,GAAvB,SACGu2B,EAAc7tD,KAAI+tD,GAEf,gBAAC,KAAMlgB,SAAP,WACE,eAAC,KAAD,CAAKzZ,KAAM,GAAX,SACE,eAACo5B,GAAD,UACGO,EAAaD,MAAM9tD,KAAI,CAACq3B,EAAMzH,IAEtB,eAAC,KAAMie,SAAP,UAAuCxW,GAAjB,QAAOzH,WAI1C,eAAC29B,GAAD,CAAWn5B,KAAM,GAAjB,SACE,eAAC,GAAD,UAAW25B,EAAa79C,WAVP69C,EAAa79C,cAkB1C09C,GACA,uCACE,eAAC,GAAD,CAAOngC,MAAO,EAAd,SAAkBgJ,EAAQ,+CAC1B,eAACg3B,GAAD,UACE,eAAC,KAAD,CAAKr5B,KAAM,GAAX,SACE,eAAC,GAAD,UAAW30B,EAAE,+CAKpB6V,EAAYC,kBACX,uCACE,eAAC,GAAD,CAAOkY,MAAO,EAAd,SAAkBhuB,EAAE,oCACpB,gBAAC,KAAD,CAAK63B,OAAQ,CAAC,EAAG,IAAjB,UACE,eAAC,KAAD,CAAKlD,KAAM,EAAX,SACE,eAAC,GAAD,UACE,eAAC,GAAD,QAGJ,eAACm5B,GAAD,CAAWn5B,KAAM,GAAjB,SACE,eAAC,GAAD,UAAW30B,EAAE,sCAEf,eAAC,KAAD,CAAK20B,KAAM,EAAX,SACE,eAAC,GAAD,UACE,eAAC,GAAD,QAGJ,eAACm5B,GAAD,CAAWn5B,KAAM,GAAjB,SACE,eAAC,GAAD,UAAW30B,EAAE,yDCxLrB+wB,KAAMkD,IAAY37B,KAEpBy9B,GAAgBzT,aAAOC,KAAK;mBACf,EAAGtT,WAAYA,EAAME,WAAWjX;sBAC7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;;;;;;;;;;;EAc5C88B,GAAmB1T,aAAOqO,KAAoB;;WAEzC,EAAG1hB,WAAYA,EAAMC,OAAOnT,IAAI5B,QAAQ;EAG7C42B,GAAOzO,aAAO2R,GAAS;;;WAGlB,EAAGhlB,WAAYA,EAAMC,OAAOnT,IAAI5B,QAAQ;EAG7Co0D,GAAYjsC,aAAOmM,KAAK;;EASjB+/B,GAAgC,EAAGz3B,QAAOlY,cACrD,MAAM1G,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,cACvB,eAAE7I,GAAmBxC,GAAqBC,0BAchD,OACE,gBAAC,GAAD,CAAeoQ,QAbWiP,IAC1BA,EAAM6Y,kBAMN,OAAOh0B,EAAS,iBAAkB,CAChCu4B,MANkC,CAClC+M,SAAUjnC,EACVugB,QACAlY,cAQF,UACE,eAAC,KAAD,UACE,eAAC,GAAD,MAEF,eAAC0vC,GAAD,UACE,eAAC,GAAD,UAAOvuD,EAAE,yBC1DT+wB,KAAMkD,IAAY37B,KAEpBy4B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAO7U;;;EAKjC67B,GAAU5T,aAAO6T,KAAY;;iBAElB,EAAGlnB,WAAa,aAAYA,EAAMC,OAAOhW;;EAIpD2uC,GAAYvlB,aAAOC,KAAK;YAClB,EAAGtT,WAAa,aAAYA,EAAMC,OAAOhW;;;;;;EAQ/C08B,GAAYtT,aAAOC,KAAK;;sBAER,EAAGtT,WAAYA,EAAMC,OAAOtW;;mBAE/B,EAAGqW,WAAYA,EAAME,WAAWjX;;;;EAM7Cu2D,GAAYnsC,aAAOC,KAAK;;;EAKxBioB,GAAeloB,aAAOC,KAAK;;EAI3BmsC,GAAWpsC,aAAO2R,GAAS;;WAEtB,EAAGhlB,WAAYA,EAAMC,OAAOzU;;;EAKjCk0D,GAAoBrsC,aAAOmM,KAAK;gBACtB,EAAGxf,WAAYA,EAAMC,OAAOhW;;;;;;;EAStC60D,GAAwBzrC,KAAOkL,GAAI;;;;;YAK7B,EAAGve,WAAa,aAAYA,EAAMC,OAAOhW;;;;EAM/C01D,GAAUtsC,aAAOkoB,GAAc;;EAI/BqkB,GAAgBvsC,aAAOmM,KAAK;;EAoBrBqgC,GAA2B,EACtCr+C,OACAkuC,iBACAoQ,yBACA1xC,UACA7W,OACAu5C,iBACAvvC,KACAw+C,sBACAC,uBACA7O,qBACA8O,cACAxoC,OACA7H,cAEA,MAAM1G,EAAWC,gBACTpY,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,gBAAC,GAAD,CAAW4D,QAAQ,eAAeoB,QAAS,IAAMlM,EAAU,QAAO3H,KAAlE,UACE,gBAACi+C,GAAD,CAAWxrC,QAAQ,gBAAnB,UACE,eAAC,KAAD,CAAK0R,KAAMgqB,EAAiB,GAAK,GAAIh8B,MAAO,CAAEW,MAAO,QAArD,SACE,eAACsR,GAAD,CAAe5G,MAAO,EAAG6G,kBAAmB,CAAEvR,MAAO,OAASxpB,MAAO2W,MAEtEkuC,GACC,uCACE,eAAC,GAAD,CAASt+C,KAAK,aACd,eAAC,KAAD,CAAKs0B,KAAM,EAAX,SACE,eAACC,GAAD,CACE5G,MAAO,EACP6G,kBAAmB,CAAEvR,MAAO,OAC5BxpB,MAAO6kD,SAKf,eAACkQ,GAAD,UACGK,EACC,eAACz5B,GAAD,CAAS30B,KAAMk2B,EAAQ,kBAAmBrB,UAAW,CAAE37B,SAAU,UAEjE,eAAC,GAAD,UACE,eAACkmD,GAAD,CACEC,mBAAoB4O,EACpB3O,mBAAoBA,WAM9B,gBAAC,GAAD,CAAcp9B,MAAM,SAASqN,MAAM,EAAnC,UACE,eAACw+B,GAAD,UACE,eAAC35B,GAAD,CACEp0B,KAAM4lB,EACNmO,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,YAIb,eAAC,GAAD,CAASjjB,KAAK,aACd,eAACwuD,GAAD,UACE,eAAC35B,GAAD,CACEp0B,KAAI,OAAEuc,QAAF,IAAEA,IAAW,IACjBwX,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,YAIb,eAAC,GAAD,CAASjjB,KAAK,aACd,eAAC,KAAD,CAAKk+B,KAAK,WAAV,SACE,eAAC,GAAD,UAAOvH,EAAQ,qBAAsB,CAAEkL,IAAK,CAAEv8B,KAAMa,EAAMZ,aAAc,YAG5E,gBAACgpD,GAAD,CAASv+B,MAAM,EAAOwH,OAAQ,CAAC,EAAG,GAAI5U,QAAQ,gBAA9C,UACE,eAAC,KAAD,CAAKsb,KAAK,SAAV,SACE,gBAAC,KAAD,CAAOhI,UAAU,WAAW/vB,KAAM,EAAlC,UACE,gBAAC,GAAD,CAAWwc,MAAM,SAASC,QAAQ,eAAeoN,MAAM,EAAvD,UACE,eAACs+B,GAAD,UACE,eAACD,GAAD,UAAWK,MAEb,eAAC,KAAD,UACE,eAAC,GAAD,UAAO/3B,EAAQ,oDAGnB,gBAAC,KAAD,CAAK/T,QAAQ,QAAQ4U,OAAQ,EAAGxH,MAAM,EAAtC,UACE,eAAC,KAAD,UACE,eAAC0S,GAAD,CAAW1iC,KAAMoI,GAAW0mD,WAAYnsB,gBAAiBgsB,MAE3D,eAAC,KAAD,UACE,eAACjsB,GAAD,CAAW1iC,KAAMoI,GAAW46B,YAAaL,gBAAiBisB,cAKlE,eAAC,KAAD,UACGlP,EACC,eAACD,GAAD,CAAUC,eAAgBA,EAAgBz8B,MAAM,QAAQnrB,OAAO,SAE/D,eAACq2D,GAAD,CAAc3vC,QAASA,EAASkY,MAAOvmB,aC9MtC4+C,GACH,CACNC,YAAa,cACbC,MAAO,SCMLC,GAAajtC,KAAOqS,IAAK;;;;;;WAMpB,EAAG1lB,WAAYA,EAAMC,OAAOzU;EAGjCgU,GAAS6T,aAAOiC,KAAW;;;EASpBirC,GAA8B,EAAGlxC,eAC5C,MAAM,EAAEte,GAAMqf,YAAe,cACtBowC,GAA8Bn4C,GAAwBnU,GAEvDmP,EAAO,CACX,CAAEqN,MAAO3f,EAAE,0BAA2BoF,MAAOgqD,GAAcC,aAC3D,CAAE1vC,MAAO3f,EAAE,wBAAyBoF,MAAOgqD,GAAcE,QAG3D,OACE,gBAAC,KAAD,CAAO9oD,KAAM,GAAb,UACE,eAAC+oD,GAAD,UAAavvD,EAAE,wBACf,eAAC,GAAD,CACEilB,aAAY,OAAEwqC,QAAF,IAAEA,IAA8BL,GAAcC,YAC1DxpD,QAASyM,EACTgM,SAAUA,QCtCLoxC,GAAuB59C,IAAI;;;;;;;GCChC+b,MAAOC,IAAax1B,KAEtBq3D,GAAcrtC,aAAOC,KAAK;;;gBAGhB,EAAGtT,WAAYA,EAAMC,OAAOjV;;EAItC60B,GAAexM,aAAOmM,KAAK;;gBAEjB,EAAGxf,WAAYA,EAAMC,OAAOtW;;mBAEzB,EAAGqW,WAAYA,EAAME,WAAWjX;;;;;EAO7CwrB,GAAcpB,aAAOwL,GAAU;;;;;EAO/BD,GAAQvL,aAAOwL,GAAU;;EASlBp1B,GAAwB,EAAGoB,QAAOiqB,cAAaM,UAASurC,gBAEjE,eAACD,GAAD,CAAa1sC,QAAQ,SAASD,MAAM,SAApC,SACE,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAOgL,MAAO,EAAd,UAAkBl0B,EAAlB,OACA,eAAC,GAAD,CAAak0B,MAAO,EAApB,SAAwBjK,IACxB,eAAC,KAAD,CAAKd,QAAQ,MAAb,SACE,eAAC,GAAD,CAAQ5iB,KAAK,UAAUgkB,QAASA,EAAhC,SACGurC,YC9CL7+B,KAAF,IAAWz4B,KAEXq3D,GAAcrtC,aAAOsB,KAAO;;;;;;EAQ5BqR,GAAgB3S,KAAOkL,GAAI;;;EAK3B9J,GAAcpB,aAAOyO,GAAM;WACtB,EAAG9hB,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;EAM/C4xB,GAAQvL,aAAOyO,GAAM;;;;;EAYd8+B,GAAmC,EAAG/1D,QAAOiqB,iBAEtD,gBAAC,GAAD,CAAavd,KAAM,GAAnB,UACE,gBAAC,GAAD,eAAS1M,KACT,eAAC,GAAD,UACE,eAAC,GAAD,UAAciqB,SCzBTg+B,GAAgC,EAC3ChrC,WACAyY,cACAsgC,qBACAp7C,0BACK,IAAD,EACJ,MAAMyD,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,aACvB,eAAE7I,EAAF,gBAAkBzC,GAAoBC,GAAqBC,2BAC3D,KAAE3B,GAASE,aAA0Dk9C,GAAsB,CAC/Fj9C,UAAW,CAAEjC,GAAIuD,GACjBrB,MAAOqB,IAGT,OAAKyb,EAYEzY,EACL,eAACre,GAAD,CACEoB,MAAOkG,EAAE,2BACT+jB,YAEM/jB,EADJ8vD,EACM,sCACA,iCAERzrC,QAAS,IAAMlM,EAAS,oBACxBy3C,WAAY5vD,EAAE,kCAGhB,eAACtH,GAAD,CACEoB,MAAOkG,EAAE,yBACT+jB,YAEM/jB,EADJ8vD,EACM,oCACA,+BAERzrC,QAAS,IAEAlM,EAAS,iBAAkB,CAChCu4B,MAFkC,CAAE+M,SAAUjnC,EAAgBm6B,KAAM,UAKxEif,WAAY5vD,EAAE,gCAnCd,eAAC6vD,GAAD,CACE/1D,MAAO4a,EAAmB,iBAAGpC,QAAH,IAAGA,OAAH,EAAGA,EAAMjJ,QAAQoH,YAAjB,QAAyB,GAAKzQ,EAAE,gCAC1D+jB,YAEM/jB,EADJ0U,EACM,8BACA,yCC3BHq7C,GAA4C,EAAG/5C,sBAC1D,MAAMmC,EAAWC,gBACX,eAAE5B,GAAmBxC,GAAqBC,2BAC1C,EAAEjU,GAAMqf,YAAe,YAE7B,OAAKrJ,EAGH,eAACtd,GAAD,CACEoB,MAAOkG,EAAE,+BACT+jB,YAAa/jB,EAAE,qCACfqkB,QAAS,IAEAlM,EAAS,iBAAkB,CAChCu4B,MAFkC,CAAE+M,SAAUjnC,EAAgBm6B,KAAM,UAKxEif,WAAY5vD,EAAE,sCAZW,MCNlBgwD,GAAoC,EAC/Cj5C,WACA+4C,qBACA95C,kBACAwZ,cACApa,kBACAV,yBAEOo7C,IAAuB16C,EAC5B,eAAC26C,GAAD,CAA0B/5C,gBAAiBA,IAE3C,eAAC,GAAD,CACEe,SAAUA,EACVyY,YAAaA,EACbsgC,mBAAoBA,EACpBp7C,oBAAqBA,I,wDCbpB,MAAMu7C,GAAsC,EACjDC,KACAC,KACAC,cACAC,cACAC,aACAC,WACAznC,UAGE,6BACE,eAAC0nC,GAAA,EAAD,CACEN,GAAIA,EACJC,GAAIA,EACJC,YAAaA,EACbC,YAAaA,EACbC,WAAYA,EACZC,SAAUA,EACVznC,KAAMA,MCRD2nC,GAAqC,EAChDP,KACAC,KACAC,cACAC,cACAC,aACAC,WACAG,UACAC,UACAC,UACA9nC,OACAO,IAAI,GACJwnC,mBAEA,MAAM,OAAE3hD,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,cACrBrf,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,+BACE,gCAAe+J,EAAG,GAAIC,EAAGA,EAAG/F,MAAM,MAAMnrB,OAAO,KAA/C,SACE,uBACEwqB,MAAO,CACLmuC,QAAS,OACTC,cAAe,SACfC,WAAY,UAJhB,UAOGH,GACC,eAAC37B,GAAD,CACEp0B,KAAM4vD,EAAQO,SACdp8B,kBAAmB,CACjBmsB,WAAY,IACZtxB,SAAU,OACV9M,MAAO1T,EAAOjV,MACdF,WAAY,UAIlB,eAACm7B,GAAD,CACEp0B,KAAM4vD,EAAQjgD,KACdokB,kBAAmB,CACjBmsB,WAAY,IACZtxB,SAAU,OACV9M,MAAO1T,EAAOjV,MACdF,WAAY,eAKpB,uBAAMqvB,EAAG8mC,EAAI7mC,EAAG8mC,EAAIvmC,GAAI,GAAIsnC,WAAW,SAASpoC,KAAM5Z,EAAOjV,MAA7D,SACI,IAAa,IAAV02D,GAAeprD,eAEtB,eAAC0qD,GAAD,CACEC,GAAIA,EACJC,GAAIA,EACJC,YAAaA,EACbC,YAAaA,EACbC,WAAYA,EACZC,SAAUA,EACVznC,KAAMA,IAER,uBACEM,EAAG8mC,EACH7mC,EAAG8mC,EACHvmC,GAAI,IACJsnC,WAAW,SACXpoC,KAAM5Z,EAAOjV,MACbkwB,OAAQjb,EAAOjV,MACf0oB,MAAO,CAAE3oB,SAAU,OAAQgnD,WAAY,KAPzC,SASGhhD,EAAE,sCAAuC,CACxCwG,KAAMwwB,EAAQ,qBAAsB,CAAEkL,IAAK,CAAEv8B,KAAMirD,aCtFvDO,GAAmBC,IACvB,MAAMC,EAAmBC,gBAAMF,EAAiB,QAE1CjhC,EAAQihC,EAAgBhf,WAAU9/B,GAAQA,EAAK7B,QAAL,OAAc4gD,QAAd,IAAcA,OAAd,EAAcA,EAAkB5gD,QAChF,IAAe,IAAX0f,EAEJ,OAAOA,GAYIohC,GAAyB9sC,iBAAK,EAAG+sC,gBAAeC,WAAUC,oBACrE,MAAOC,EAAiBC,GAAsBrhD,uBACvCshD,EAAsBC,GAA2BvhD,uBAClD,OAAErB,GAAW6O,eAYbg0C,EAAgBC,GAAD,OACnBA,QADmB,IACnBA,OADmB,EACnBA,EAAa3a,QAAO,CAACC,GAAe9wC,UAClB8wC,EAAc9wC,GAE7B,GAgBL,OAdA+T,sBAAU,KACR,GAAIm3C,EAAe,CACjB,MAAMO,EAAmBd,GAAgBM,GACzC,GAAgC,kBAArBQ,EAA+B,OAE1C,YADAL,EAAmBK,GAIrB,MAAMC,EAAsBf,GAAgBK,GACT,kBAAxBU,GAEXJ,EAAwB,CAACI,MACxB,CAACT,EAAUC,EAAeF,IAG3B,eAACW,GAAA,EAAD,CAAqB7uC,MAAM,OAAOnrB,OAAO,OAAzC,SACE,gBAACi6D,GAAA,EAAD,CAAU9uC,MAAO,IAAKnrB,OAAQ,IAA9B,UACGu5D,GACC,eAACW,GAAA,EAAD,CACEC,YAAajvC,GACX,eAACotC,GAAD,IACMptC,EACJutC,QAASmB,EAAaP,GACtB1oC,KAAM5Z,EAAOnT,IAAIC,UAAU,KAC3B60D,cAAY,IAGhBv+C,KAAMm/C,EACNc,QAAQ,OACRC,YAAab,EACbzB,GAAG,MACHC,GAAG,MACHhgB,aAhDoB,CAACsiB,EAA6BtiC,KAC1D2hC,OAAwBhiD,GACxB8hD,EAAmBzhC,IA+CXrH,KAAM5Z,EAAOnT,IAAIE,UAAU,KAC3Bo0D,YAAa,GACbD,YAAa,GACbjmC,OAAQjb,EAAOnT,IAAIE,UAAU,OAGjC,eAACo2D,GAAA,EAAD,CACE//C,KAAMk/C,EACNc,YAAajvC,QACavT,IAApB6hD,EACK,eAAC1B,GAAD,IAAwB5sC,EAAOyF,KAAM5Z,EAAOnT,IAAI5B,QAAQ,OAE/D,eAACs2D,GAAD,IACMptC,EACJutC,QAASmB,EAAaP,GACtB1oC,KAAM5Z,EAAOnT,IAAI5B,QAAQ,KACzBkvB,EAAGqoC,EAAgB,GAAK,IACxBb,aAAca,IAIpBc,YAAaX,EACb1hB,aAlE2B,CAACjkC,EAAqBikB,KACvDyhC,OAAmB9hD,GACnBgiD,EAAwB,CAAC3hC,KAiEnB+/B,GAAG,MACHC,GAAG,MACHE,YAAaqB,EAAgB,GAAK,GAClCtB,YAAasB,EAAgB,GAAK,GAClC5oC,KAAM5Z,EAAOnT,IAAIE,UAAU,KAC3Bs2D,QAAQ,OACRpoC,OAAQjb,EAAOnT,IAAIE,UAAU,gBCxG/B4xB,MAAOC,IAAax1B,KAEfu1B,GAAQvL,aAAOwL,GAAU;;;;WAI3B,EAAG7e,WAAYA,EAAMC,OAAOtW;EAG1By1C,GAAU/rB,aAAOmM,KAAK;;EAGtBikC,GAAYpwC,aAAOmM,KAAK;;;ECTxBkkC,GAAyC,EACpDnB,gBACAC,WACAC,oBAEA,MAAM,EAAE1xD,GAAMqf,YAAe,aAC7B,OACE,uCACE,eAAC,GAAD,UACE,eAAC,GAAD,MAEF,eAAC,KAAD,UACE,eAAC,GAAD,CAAO2O,MAAO,EAAd,SAEMhuB,EADH0xD,EACK,8BACA,4CAGV,eAACgB,GAAD,UACE,eAACnB,GAAD,CAAOC,cAAeA,EAAeC,SAAUA,EAAUC,cAAeA,UCnB1EkB,GAAetwC,aAAOC,KAAe;sBACrB,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWjX;YACvC,EAAGC,SAAS,WAAcA;;;EAOzBO,GAA0C,EAAG0qB,WAAUjrB,YAEhE,eAACy6D,GAAD,CAAc/6B,OAAQ,GAAI1/B,OAAQA,EAAlC,SACGirB,KClBCyK,MAAOC,GAAUiD,KAAMkD,GAAS8F,KAAMmR,IAAY5yC,KAE7Cu1B,GAAQvL,aAAOwL,GAAU;;;;WAI3B,EAAG7e,WAAYA,EAAMC,OAAOtW;EAG1By1C,GAAU/rB,aAAOmM,KAAK;;EAGtBikC,GAAYpwC,aAAOmM,KAAK;;;;EAKxByH,GAAU5T,aAAO6T,KAAY;;;EAW7B08B,GAAmBvwC,aAAOsB,MAAOC,MAAM,CAClDrd,KAAM,GACN+vB,UAAW,YACH;;MAEJ,EAAGtnB,QAAO6jD,cAAgBA,EAAW7jD,EAAMC,OAAOtW,MAAQ;;mBAE7C,EAAGqW,WAAYA,EAAME,WAAWjX;;EAItC66D,GAAUzwC,aAAO2R,GAAS;;;;;;WAM5B,EAAGhlB,WAAYA,EAAMC,OAAOtW;;EAI1Bo6D,GAAc1wC,aAAOywC,GAAS;;EAI9BE,GAAc3wC,aAAOywC,GAAS;;WAEhC,EAAG9jD,WAAYA,EAAMC,OAAOhW;EAG1Bg6D,GAAe5wC,aAAOywC,GAAS;;WAEjC,EAAG9jD,WAAYA,EAAMC,OAAOjV;;EAI1Bk5D,GAAc7wC,aAAO4oB,GAAS;;;;WAIhC,EAAGj8B,WAAYA,EAAMC,OAAOjV;;aAE1B,EAAGgV,WAAYA,EAAMC,OAAOjV;;;EC1C5Bm5D,GAA2B,EAAGC,WACzC,MAAM,EAAErzD,GAAMqf,YAAe,cACrBrf,EAAGg3B,GAAY3X,YAAe,UACtC,OACE,uCACE,eAAC,KAAD,CAAKkf,KAAM,EAAX,SACE,gBAAC,KAAD,CAAK1G,OAAQ,GAAb,UACE,eAAC,GAAD,UACE,eAAC,GAAD,MAEF,eAAC,KAAD,UACE,eAAC,GAAD,CAAO7J,MAAO,EAAd,SAAkBhuB,EAAE,8BAI1B,gBAAC,GAAD,WACE,eAAC,KAAD,CAAKqwB,MAAM,EAAOwH,OAAQ,GAA1B,gBACGw7B,QADH,IACGA,OADH,EACGA,EAAM9yD,KAAI,CAAC+yD,EAAKnjC,KAAW,IAAD,EAvBbojC,EAA2BC,EAwBvC,OACE,eAAC,KAAD,UACE,gBAACX,GAAD,CAAkBC,SAAoB,IAAV3iC,EAA5B,WA1BQojC,EA2BUD,EAAIC,WA3BaC,EA2BDF,EAAIE,WA1BhDD,GAAcA,EAAa,GAAW,eAAC,GAAD,IACtCC,GAAcA,EAAa,GAAW,eAAC,GAAD,IACnC,eAAC,GAAD,KAyBS,eAACT,GAAD,UACa,IAAV5iC,EACGnwB,EAAE,qBACFg3B,EAAQ,iBAAkB,CACxBkL,IAAKp9B,IAAMwuD,EAAIG,cAGvB,eAAC,GAAD,CAASpzD,KAAK,eACd,gBAAC,KAAD,WACE,eAAC,KAAD,CAAKs0B,KAAM,GAAX,SACE,eAACq+B,GAAD,UACGh8B,EAAQ,uBAAwB,CAC/BkL,IAAKoxB,EAAII,cAIf,eAAC,KAAD,CAAK/+B,KAAM,GAAX,SACE,eAACs+B,GAAD,UACGj8B,EAAQ,uBAAwB,CAC/BkL,IAAKoxB,EAAIK,iBAKjB,eAAC,GAAD,CAAStzD,KAAK,eACd,gBAAC,KAAD,CAAKgwB,MAAM,EAAOrN,MAAM,SAAxB,UACE,gBAACkwC,GAAD,yBAAgBI,EAAIC,kBAApB,aAAgB,EAAgBhuD,UAAhC,OACA,eAAC,GAAD,WA9BI+tD,EAAIG,eAqCpB,eAAC,KAAD,CAAKxwC,QAAQ,MAAMD,MAAM,SAAzB,SACE,eAACmwC,GAAD,CAAalrC,OAAO,SAASnb,KAAMrJ,GAAnC,SACGzD,EAAE,mCCnFTyO,GAAS6T,aAAOiC,KAAW;;;WAGtB,EAAGtV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAQxC23D,GAAkC,EAAGt1C,WAAUlZ,YAC1D,MAAM,EAAEpF,GAAMqf,YAAe,aAEvB/M,EAAO,CACX,CAAEqN,MAAO3f,EAAE,wBAAyBoF,MAAOgD,GAAuByrD,OAClE,CAAEl0C,MAAO3f,EAAE,0BAA2BoF,MAAOgD,GAAuB0rD,SACpE,CAAEn0C,MAAO3f,EAAE,6BAA8BoF,MAAOgD,GAAuB2rD,cAGzE,OACE,eAAC,GAAD,CACE3uD,MAAOA,EACPS,QAASyM,EACTgM,SAAUA,EACVyH,YAAa/lB,EAAE,iCC1BRg0D,GAAgB1xC,aAAOC,KAAK;sBACnB,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWjX;;;;EAKtC+7D,GAAa3xC,aAAOmM,KAAK;;;;EAMzBoZ,GAAYvlB,aAAOC,KAAK;;;EAQxBiV,GAAOlV,KAAOkL,GAAc;;;;sBAInB,EAAGve,QAAOgmC,WAC5BA,EAAQhmC,EAAMC,OAAOnT,IAAIC,UAAU,KAAOiT,EAAMC,OAAOnT,IAAIE,UAAU;;GAIjE4xB,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAE9Bu1B,GAAQvL,aAAOwL,GAAU;;;;WAI3B,EAAG7e,WAAYA,EAAMC,OAAOtW;EAG1Bm4B,GAAOzO,aAAO2R,GAAS;WACzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;EAI1Bi6D,GAAU5xC,aAAOyO,GAAM;WACzB,EAAG9hB,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAGxCnD,GAAQwpB,aAAOyoB,KAAU;;;;ECzBzBopB,GAAsC,EACjD1W,WACA2W,YACAC,WACAC,YACAC,uBAEA,MAAM,EAAEv0D,GAAMqf,YAAe,cAEvB,aAAEpF,GAAiBD,KAwBzB,OACE,eAACg6C,GAAD,UACE,gBAAC,KAAD,CAAOz9B,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAACytD,GAAD,WACE,eAAC,GAAD,IACA,eAAC,GAAD,CAAOjmC,MAAO,EAAd,SAAkBhuB,EAAE,6BAEtB,gBAAC,KAAD,CAAOu2B,UAAU,WAAW/vB,KAAM,EAAlC,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAMyuC,QAASmf,IACf,eAAC,GAAD,UAAOp0D,EAAE,8BACT,gBAACk0D,GAAD,WACiB,IAAdE,EAAkB,IAAlB,OAAwBA,QAAxB,IAAwBA,OAAxB,EAAwBA,EAAW7uD,UADtC,IACkDvF,EAAE,6BAGtD,gBAAC,GAAD,WACE,eAAC,GAAD,CAAMi1C,QAASof,IACf,eAAC,GAAD,UAAOr0D,EAAE,6BACT,gBAACk0D,GAAD,WACgB,IAAbG,EAAiB,IAAjB,OAAuBA,QAAvB,IAAuBA,OAAvB,EAAuBA,EAAU9uD,UADpC,IACgDvF,EAAE,6BAGpD,gBAAC,GAAD,WACE,eAAC,GAAD,CAAMi1C,QAASqf,IACf,eAAC,GAAD,UAAOt0D,EAAE,8BACT,eAAC,GAAD,CACEK,KAAK,SACLk6B,IAAK,EACL5X,MAAO,CAAE6xC,UAAW,UACpBzuC,YAAauuC,OAAYxkD,EAAY,IACrCmV,aAAcqvC,EACdn9B,OAAQ2E,IAAK24B,OA1CKrvD,EA0CgBE,OAAOw2B,EAAE7T,OAAO7iB,YAzC5D6U,EAAa,CACXxH,UAAW,CACTjC,GAAIitC,EACJ+O,gBAAiB,CACfkI,iBAAkBtvD,EAAQ1B,OALJ0B,SA4CpB,eAAC8uD,GAAD,UAAUl0D,EAAE,+BAGhB,eAAC4zD,GAAD,CAAgBxuD,MAAOmvD,EAAkBj2C,SA1DjBlZ,IAC5B6U,EAAa,CACXxH,UAAW,CACTjC,GAAIitC,EACJ+O,gBAAiB,CACf+H,iBAAkBnvD,e,cCzC5B,MAAQyoB,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAE9Bu1B,GAAQvL,aAAOwL,GAAU;;;;;;WAM3B,EAAG7e,WAAYA,EAAMC,OAAOtW;EAG1Bu7B,GAAW7R,aAAO2R,GAAS;;;;;WAK7B,EAAGhlB,WAAYA,EAAMC,OAAOtW;EAG1Bm4B,GAAOzO,aAAO6R,GAAU;;EAIxBwgC,GAAWryC,aAAOsyC,KAAa;;;;aAI/B,EAAG3lD,WAAYA,EAAMC,OAAOjV;;EAI5B46D,GAAMvyC,aAAOmM,KAAK;;;;;;;gBAOf,EAAGxf,WAAYA,EAAMC,OAAOhW;EAG/B2uC,GAAYvlB,aAAOC,KAAK;;;;EAKxByrC,GAAY1rC,aAAOC,KAAK;;EAIxBuyC,GAAcxyC,aAAOmM,KAAK;;;EC7B1BsmC,GAA2B,EAAGpvD,OAAMqvD,SAAQC,aAAYxkD,WACnE,MAAM,EAAEzQ,GAAMqf,YAAe,cACvB,OAAEnQ,GAAW6O,gBACb,sBAAEuB,GAA0BF,KAE5B81C,EAAWvvD,EAAO2Z,EAAsB3Z,QAAQmK,EAChDqlD,EAAaH,EAAS11C,EAAsB01C,QAAUllD,EAE5D,OACE,uCACE,eAAC,KAAD,UACE,gBAAC,GAAD,CAAOke,MAAO,EAAd,cAAoB,GAAEhuB,EAAE,sBAAsByQ,IAA9C,SAEF,eAAC,KAAD,CAAKkkB,KAAM,GAAX,SACE,gBAAC,KAAD,WACE,eAACmgC,GAAD,CAAangC,KAAM,GAAnB,SACE,eAACggC,GAAD,CACEt0D,KAAK,SACLswD,QAASsE,EACTzuD,KAAM,GACN6jB,cAAc,SACd+qC,YAAalmD,EAAO/U,QACpBk7D,WAAYnmD,EAAOhW,MACnB8L,OAAQ2rD,GAAYsE,EAAc,GAAEtE,MAAc,QAGtD,gBAAC,KAAD,CAAKh8B,KAAM,GAAX,UACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAKA,KAAM,GAAX,SACE,gBAAC,GAAD,eAAY30B,EAAE,gBAAd,SAGF,gBAAC,GAAD,CAAWqwB,MAAM,EAAOwH,OAAQ,GAAI7U,MAAM,SAA1C,UACE,eAAC6xC,GAAD,CAAKt2B,KAAM,EAAX,SAAe22B,EAAWA,EAAS9vD,MAAQ,MAC3C,eAAC,KAAD,CAAKuvB,KAAK,OAAV,SACE,eAAC,GAAD,UAAOugC,GAAa,IAAGA,EAAS31C,qBAItC,gBAAC,GAAD,WACE,eAAC,KAAD,CAAKoV,KAAM,GAAX,SACE,gBAAC,GAAD,eAAY30B,EAAE,kBAAd,SAEF,gBAAC,GAAD,CAAWqwB,MAAM,EAAOrN,MAAM,SAAS6U,OAAQ,GAA/C,UACE,eAACg9B,GAAD,CAAKt2B,KAAM,EAAX,SAAe42B,EAAaA,EAAW/vD,MAAQ,MAC/C,eAAC,KAAD,CAAKm5B,KAAK,OAAV,SACE,eAAC,GAAD,UAAO42B,GAAe,IAAGA,EAAW51C,iCC5DzC+1C,GAAmBhzC,aAAOC,KAAK;;;;EAM/BgzC,GAAcjzC,aAAOC,KAAK;sBACjB,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWjX;;;;EAMtCs9D,GAAoBlzC,KAAOkL,GAAI;;;;EAM/BioC,GAAmBnzC,KAAOkL,GAAI;;;ECa9BkoC,GAAqC,EAChDt+C,OACA2N,QACA4wC,yBACAC,0BACAnY,WACAiX,mBACAH,mBACAr1C,WACK,IAAD,IACJ,MAAM/G,EAAWC,gBACX,YAAEvC,GAAgB/B,MAClB,EAAE9T,GAAMqf,YAAe,cACtBw2C,EAAcC,GAAmBvlD,qBAAS,GAC3C6Q,EAAWhe,EAASwjB,IAAQ3a,kBAwB5BwlD,EAAW9/C,oBAAQ,KACvB,MAAMokD,EAAO,OAAG3+C,QAAH,IAAGA,OAAH,EAAGA,EAAMigC,QAAO,CAACC,GAA2B5wB,OAAMlgB,WAAY,IAAD,EACxE,MAAM+Q,EAAMmP,EAAKlW,GAWjB,OATA8mC,EAAY//B,GAAZ,UAAmB+/B,EAAY//B,UAA/B,QAAuC,CACrC9G,KAAMiW,EAAKC,QAAQvF,GACnBhc,MAAO,EACPoB,KAAM,GAGR8wC,EAAY//B,GAAKnS,OAAS,EAE1BkyC,EAAY//B,GAAK/Q,MAAQA,EAClB8wC,IACN,IACG7tB,EAAShU,OAAOkU,OAAOosC,GAAW,IACxC,OAAO3zC,kBAAQqH,EAAQ,UACtB,CAACrS,EAAMgK,IAaV,OAXA7G,sBAAU,KAIR,MAAMy7C,EAAUC,YAAW,KACzBH,GAAgB,KACf,GAEH,MAAO,IAAMI,aAAaF,KACzB,IAEEjxC,EAEH,iCACE,eAAC27B,GAAD,CACEjwC,KAAMsU,EAAMtU,KACZkwC,YAAa3gD,EAAE,YAAa,CAAEqrD,MAAOj0C,EAAKxV,SAC1Cg/C,gBAAiB,IACf/qC,EAAYE,YAAcoC,EAAU,oBAAmB4M,EAAMvU,MAAQ2H,EAAS,eAGlF,gBAACm9C,GAAD,CAAiCz9B,OAAQ,CAAC,EAAG,IAA7C,UACE,eAAC,KAAD,UACE,gBAAC,KAAD,CAAOrxB,KAAM,GAAb,UACE,eAAC,GAAD,UACE,eAACmsD,GAAD,CACEnB,cAnEW2E,KAA8B,IAAD,EACpD,MAAMJ,EAAO,iBACXI,QADW,IACXA,OADW,EACXA,EAAY9e,QAAO,CAACC,GAA2Bj6B,UAAS7W,OAAMkgB,WAAY,IAAD,IACvE,MAAMnP,EAAO,GAAEmP,EAAKlW,MAAR,OAAc6M,QAAd,IAAcA,OAAd,EAAcA,EAASsJ,QAAQrjB,KAY3C,OAVAg0C,EAAY//B,GAAZ,UAAmB+/B,EAAY//B,UAA/B,QAAuC,CACrC9G,KAAI,iBAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAASsJ,QAAQvF,UAAnB,QAAgCphB,EAAE,mCACtCoF,MAAO,EACPoB,KAAM,EACNyqD,SAAUvqC,EAAKC,QAAQvF,IAGzBk2B,EAAY//B,GAAKnS,OAAS,EAE1BkyC,EAAY//B,GAAK/Q,MAAQA,EAClB8wC,IACN,WAfQ,QAeD,GACN7tB,EAAShU,OAAOkU,OAAOosC,GAAW,IAExC,OAAO3zC,kBAAQqH,EAAQ,aAgDI2sC,CAAgBh/C,GAC/Bq6C,SAAUA,EACVC,cAAeD,EAAS7vD,OAtGlB,MAyGTiU,EAAYxB,wBACX,eAAC8/C,GAAD,CACE1W,SAAUA,EACV2W,UAAWwB,EAA0BlyD,GACrC2wD,SAAUsB,EAAyBjyD,GACnC4wD,UAAWI,EAAmBA,EAAmBhxD,QAAsBoM,EACvEykD,iBAAgB,OAAEA,QAAF,IAAEA,SAAoBzkD,KAGxC+F,EAAYxB,wBACZ,eAACkhD,GAAD,UACE,eAACnC,GAAD,CAASC,KAAI,oBAAEtuC,EAAMsxC,eAAR,aAAE,EAAehD,YAAjB,aAAyBvjD,WAK9C,gBAAC0lD,GAAD,WACGt2C,EAAK3e,KAAI8xC,IAAG,uBACX,eAAC,KAAMjE,SAAP,UACE,eAAC,GAAD,CAAMj2C,OAAO,QAAb,SACE,eAAC48D,GAAD,CACEpvD,KAAI,oBAAE0sC,EAAIikB,kBAAN,aAAE,EAAgBC,wBAAlB,aAAsCzmD,EAC1CklD,OAAM,oBAAE3iB,EAAIikB,kBAAN,aAAE,EAAgBE,0BAAlB,aAAwC1mD,EAC9CmlD,WAAU,oBAAE5iB,EAAIikB,kBAAN,aAAE,EAAgBG,8BAAlB,aAA4C3mD,EACtDW,KAAM4hC,EAAI5hC,UANK4hC,EAAI7hC,OAW1B4G,EAAK7W,KAAI6c,IAAQ,IAAD,gBACf,MAAM,WAAEk5C,GAAel5C,EAAI7B,QAErB2zC,KAAe,OAAC9xC,QAAD,IAACA,OAAD,EAACA,EAAK7B,QAAQ2zC,aAE7BwH,EAAkB,oBAAGt5C,EAAI7B,QAAQm7C,0BAAf,aAAG,EAAgC5lD,kBAAnC,QAAiD,IAEzE,OACE,eAAC2kD,GAAD,UACE,eAAC,KAAD,CAAUljD,SAAUsjD,EAAcc,QAAM,EAAxC,SACE,eAAC7H,GAAD,CACEr+C,KAAM2M,EAAI3M,KACVkuC,eAAc,UAAEvhC,EAAIuhC,sBAAN,aAAwB7uC,EACtCU,GAAI4M,EAAI5M,GACRu+C,uBAAwB2H,EACxBlwD,KAAM4W,EAAI5W,KACV6W,QAAO,UAAED,EAAIC,eAAN,aAAE,EAAasJ,QAAQvF,GAC9B2+B,eAAc,UAAE3iC,EAAIzX,YAAN,aAAE,EAAUlF,YAAY,GACtCwuD,qBAAoB,iBAAEqH,QAAF,IAAEA,OAAF,EAAEA,EAAYM,mBAAd,aAA6B9mD,EACjDk/C,oBAAmB,iBAAEsH,QAAF,IAAEA,OAAF,EAAEA,EAAYO,kBAAd,aAA4B/mD,EAC/CswC,mBAAkB,iBAAEkW,QAAF,IAAEA,OAAF,EAAEA,EAAYQ,iBAAd,aAA2BhnD,EAC7Co/C,YAAaA,EACbxoC,KAAMtJ,EAAIsJ,KAAKC,QAAQvF,GACvBvC,QAASkG,EAAMvU,QAfE4M,EAAI5M,YA/CZuU,EAAMvU,OAVd,MCpGRmjB,GAASrR,aAAO0R,GAAY;;;EAK5B+iC,GAAez0C,aAAOmM,KAAK;;;;EAM3BmkC,GAAetwC,KAAOkL,GAAI;;;;;;;ECjBjCwpC,GAAuB,CAC3BH,WAAY,CACVzzB,IAAK,EACLD,OAAQ,EACRD,KAAM,GAER0zB,YAAa,CACXxzB,IAAK,EACLD,OAAQ,EACRD,KAAM,IAOJ+zB,GAAc,CAACC,EAAiBC,KAAqB,IAAD,QACxD,MAAMC,EAAc,UAAGF,EAAK37C,QAAQ+6C,kBAAhB,aAAG,EAAyBO,WAC1CQ,EAAc,UAAGH,EAAK37C,QAAQ+6C,kBAAhB,aAAG,EAAyBM,YAC1CU,EAAc,UAAGH,EAAK57C,QAAQ+6C,kBAAhB,aAAG,EAAyBO,WAC1CU,EAAc,UAAGJ,EAAK57C,QAAQ+6C,kBAAhB,aAAG,EAAyBM,YAgBhD,OAd6BQ,EACzBJ,GAAqBH,WAAWO,GATf,IAWSC,EAC1BL,GAAqBJ,YAAYS,GAZhB,KAeQC,EACzBN,GAAqBH,WAAWS,GAhBf,IAkBSC,EAC1BP,GAAqBJ,YAAYW,GAnBhB,KA+CVC,GApBkBpgD,IAAuB,IAAD,QACnD,MAAMqgD,EAAa,IAAIrgD,GAEjBsgD,EAAkBxrD,IAAEyrD,QACxBF,GACAr6C,IAAG,mCAAIA,EAAI7B,QAAQ+6C,kBAAhB,aAAI,EAAwBQ,iBAA5B,QAjCqB,SAoCpBc,EAAyB1rD,IAAE2rD,UAAUH,GAAiBI,GAC1DA,EAAcC,KAAKd,MAGrB,MAAO,IACL,UAAIW,EAAuB/vD,GAAgBu7B,YAA3C,QAAmD,MACnD,UAAIw0B,EAAuB/vD,GAAgBs7B,eAA3C,QAAsD,MACtD,UAAIy0B,EAAuB/vD,GAAgBq7B,aAA3C,QAAoD,MACpD,UAAI00B,EAAsB,WAA1B,QAAmD,KClC1CI,GAAsB,KACjC,MAAM,eAAExhD,EAAF,gBAAkB8J,EAAlB,gBAAmCvM,EAAnC,kBAAoD+M,GACxD9M,GAAqBC,2BACjB,KAAE3B,EAAF,QAAQC,GAAY2D,GAAUM,IAC7Bi5C,EAA4BwI,GAA2B3gD,GAC5DnU,EACAisD,GAAcC,cAEV,EAAErvD,GAAMqf,YAAe,cACvB,YAAExJ,GAAgB/B,MAClB,SAAEiD,EAAF,OAAYE,GAAWV,KAE7B+D,GAAmB,CACjBH,UAAWxR,GAAoBuvD,qBAC/BlnD,gBAAiB,CACf+C,kBACA+M,qBAEFvO,SAAUwB,GAAmBxB,IAG/B,MAAM4lD,EAA6Bp/C,wBACjC,mCACEzG,QADF,IACEA,OADF,EACEA,EAAM9I,OAAO0N,aAAamgC,QACxB,CAAC+gB,GAAOhhD,UACNghD,EACAhhD,EAAKigC,QAAO,CAACghB,GAAU98C,cAAX,aAAyB88C,GAAM,UAAI98C,EAAQuB,eAAe1X,aAA3B,QAAoC,KAAI,IACrF,UALJ,QAMO,IAEP,QAACkN,QAAD,IAACA,OAAD,EAACA,EAAM9I,OAAO0N,eAGVohD,EAA4Bv/C,wBAChC,mCACEzG,QADF,IACEA,OADF,EACEA,EAAM9I,OAAO0N,aAAamgC,QACxB,CAAC+gB,GAAOhhD,UACNghD,EAAMhhD,EAAKigC,QAAO,CAACghB,GAAU98C,cAAX,aAAyB88C,GAAM,UAAI98C,EAAQa,aAAZ,QAAqB,KAAI,IAC5E,UAJJ,QAKO,IAEP,QAAC9J,QAAD,IAACA,OAAD,EAACA,EAAM9I,OAAO0N,eAKVqhD,EAAc,CAAC,eAACjjC,GAAD,CAAchX,SAFLm/B,GAAsBn9B,EAAgBm9B,MAIpE,OACE,eAAC,GAAD,CACEppB,eAAa,EACbC,eAAgBikC,EAChB/jC,YAAa3e,EAAYE,YAAc/V,EAAE,wBAA0BA,EAAE,eACrEu0B,YAAaikC,GACb/jC,cACE5e,EAAYC,kBAAqBiB,GAAaE,OAE1CnH,EADF,eAAC0/C,GAAD,CAAYlxC,SAAUlZ,GAAS6yD,EAAwB7yD,KAP7D,SAWGmN,EACC,eAACwQ,GAAD,IAEA,eAAC,GAAD,UACGhM,GAAYE,EACX,eAAC+4C,GAAD,CACEj5C,SAAUA,EACVf,gBAAiBH,EAAYG,gBAC7B85C,mBAAoBj6C,EAAY3B,qBAChCsb,YAAa3Z,EAAYjB,mBACzBQ,gBAAiBS,EAAYE,YAC7BrB,oBAAqBmB,EAAYnB,sBAGnC,uCACE,eAACqiD,GAAD,iBACGzkD,QADH,IACGA,OADH,EACGA,EAAM9I,OAAO0N,aACX/N,QAAO,EAAG4b,WAAYA,IACtBxkB,KAAI4W,IACH,MAAM4N,EAAQ5N,EAAY4N,OACpB,KAAE7F,GAAS6F,GACX,KAAE3N,GAASD,EACXshD,EACJhJ,IAA+BL,GAAcC,YACzCmI,GAAgCpgD,GAChCA,GACA,iBAAEs9C,EAAF,GAAoBlkD,EAApB,iBAAwB+jD,GAAqBjiD,EAAK9I,OACxD,OACE,eAAC,KAAM4kC,SAAP,UACE,eAACsnB,GAAD,CACEC,uBAAwB2C,IACxB1C,wBAAyBuC,IACzB1a,SAAUjtC,EACVkkD,iBAAgB,OAAEA,QAAF,IAAEA,SAAoB5kD,EACtCykD,iBAAgB,OAAEA,QAAF,IAAEA,SAAoBzkD,EACtCiV,MAAOA,EACP3N,KAAMqhD,EACNv5C,KAAI,OAAEA,QAAF,IAAEA,IAAQ,MATG6F,EAAMvU,SAenC,eAAC09C,GAAD,Y,cC3Hd,MAAMr/C,GAASyT,aAAOiM,KAAY;sBACZ,EAAGtf,WAAYA,EAAMC,OAAOhW;WACvC,EAAG+V,WAAYA,EAAMC,OAAOzU;;;;;;;;;wBASf,EAAGwU,WAAYA,EAAMC,OAAOhW;aACvC,EAAG+V,WAAYA,EAAMC,OAAOzU;oBACrB,EAAGwU,WAAYA,EAAMC,OAAOhW;;EAI1Cw/D,GAAgBp2C,aAAOq2C,GAAmB;;;;;EAOnCC,GAAe,KAC1B,MAAMzgD,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,kBACvB,YAAExJ,GAAgB/B,KAExB,OACE,eAAC,GAAD,CAAQ4R,KAAM,eAACgzC,GAAD,CAAep1C,MAAO,EAAGnrB,OAAQ,IAAOksB,QAAS,IAAMlM,EAAS,cAA9E,SACGtC,EAAYE,YAAc/V,EAAE,oBAAsBA,EAAE,oCCjCnD+wB,KAAMkD,IAAY37B,KAEpBuvC,GAAYvlB,aAAOC,KAAK;YAClB,EAAGtT,WAAa,aAAYA,EAAMC,OAAOhW;;;EAI/C08B,GAAYtT,aAAOC,KAAK;;gBAEd,EAAGtT,WAAYA,EAAMC,OAAOtW;mBACzB,EAAGqW,WAAYA,EAAME,WAAWjX;;;;;;;EAW7C22D,GAAgBvsC,aAAOmM,KAAe;eAC7B,EAAGM,eAAgBA;EAG5B++B,GAAYxrC,aAAOmM,KAAK;;;;EAMxBigC,GAAWpsC,aAAO2R,GAAS;;WAEtB,EAAGhlB,WAAYA,EAAMC,OAAOzU;;;EAKjCk0D,GAAoBrsC,aAAOmM,KAAK;gBACtB,EAAGxf,WAAYA,EAAMC,OAAOhW;;;;;;;EAStC2/D,GAAoBv2C,aAAO2R,GAAS;;;EAKpCjN,GAAkB1E,aAAOw2C,GAAqB;;EAiBvCC,GAAqC,EAChDla,YACAkQ,yBACAroC,OACAO,SACA+xC,kBACAjiC,YAEA,MAAM,OAAE7nB,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,iBAE7B,OACE,gBAAC,GAAD,CAAW4D,QAAQ,gBAAnB,UACE,eAAC,GAAD,UACE,eAAC,GAAD,CAAe8L,UAAU,OAAzB,SACE,eAACmG,GAAD,CACEp0B,KAAM4lB,EACNmO,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPvpB,WAAY,OACZC,SAAU,OACV4oB,MAAO1T,EAAOzU,cAKtB,eAAC,GAAD,UACE,eAAC,KAAD,CAAKk6B,KAAM,GAAX,SACE,eAAC,GAAD,CACE1N,OAAQA,EACRhC,aAAc45B,EACdvgC,SAAUjB,IACH0Z,GAAU1Z,GACf27C,EAAgB,CACdvmD,UAAW,CACT8kB,aAAc,CAAE/mB,GAAIumB,EAAO8nB,UAAWxhC,EAAQ7M,cAO1D,eAAC,KAAD,UACE,gBAAC,GAAD,CAAWqnB,OAAQ,EAAG7U,MAAM,SAASC,QAAQ,SAA7C,UACE,eAAC,GAAD,UACE,eAAC,GAAD,UAAW8rC,MAEb,eAAC,GAAD,CAAehgC,UAAU,QAAzB,SACE,eAAC8pC,GAAD,UAAoB74D,EAAE,sDCrH1B+wB,KAAMkD,IAAY37B,KAEpBs9B,GAAYtT,aAAOsB,KAAO;sBACV,EAAG3U,WAAYA,EAAMC,OAAOtW;;mBAE/B,EAAGqW,WAAYA,EAAME,WAAWjX;;EAQ7Cy8D,GAAWryC,aAAOsyC,KAA4B;;;;eAIrC,EAAGqE,aAAY,KAAYA,EAAY,SAAW;aACpD,EAAGhqD,WAAYA,EAAMC,OAAOzU;;EAInCs2B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAOzU;;;EAKjCy+D,GAAe52C,aAAO2R,GAAS;WAC1B,EAAGhlB,WAAYA,EAAMC,OAAOzU;;;EAIjCi4D,GAAYpwC,aAAOmM,KAAK;;;;EAejB0qC,GAAyC,EACpDC,4BACApK,sBACA7O,mBACA+O,kBAEA,MAAM,OAAEhgD,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,iBAE7B,OACE,gBAAC,GAAD,CAAW7Y,KAAM,GAAI+vB,UAAU,WAA/B,UACE,gBAAC,KAAD,CAAKtT,QAAQ,gBAAb,UACE,eAAC,KAAD,UACE,eAAC,GAAD,UAAOjjB,EAAE,4BAEX,eAAC,KAAD,UACE,eAAC+iC,GAAD,CAAW1iC,KAAMoI,GAAW0mD,WAAYnsB,gBAAiBgsB,SAG7D,gBAAC,KAAD,CAAKn3B,OAAQ,GAAIxH,MAAM,EAAvB,UACE,eAAC,KAAD,UACE,eAAC,GAAD,CACEhwB,KAAK,SACLswD,QAASyI,EACT5yD,KAAM,GACN6jB,cAAc,SACd+qC,YAnCS,UAoCTC,WAAYnmD,EAAOhW,MACnB+/D,UAAW9Y,EACXn7C,OAAQ2rD,GAAYzB,EAAc,IAAO,GAAEyB,UAG/C,eAAC,GAAD,UACGxQ,EACC,qCACE,eAAC+Y,GAAD,UAAel5D,EAAE,mCAGnB,qCACE,eAACk5D,GAAD,UAAel5D,EAAE,oDCvFlBq5D,GAAkE,EAC7ElZ,mBACA/8B,eAEA,MAAM,EAAEpjB,GAAMqf,YAAe,iBAE7B,OAAI8gC,EAAyB,qCAAG/8B,IACzB,eAAC,KAAD,CAAStpB,MAAOkG,EAAE,+BAAlB,SAAmDojB,KCNtD2qC,GAAwBzrC,aAAOmM,KAAK;;;;;;YAM9B,EAAGxf,WAAa,aAAYA,EAAMC,OAAOnU;;;;EAM/C66B,GAAYtT,aAAOC,KAAK;mBACX,EAAGtT,WAAYA,EAAME,WAAWjX;;sBAE7B,EAAG+W,WAAYA,EAAMC,OAAOtW;;;;;;;EAcrC0gE,GAAgC,EAAGnZ,mBAAkBC,wBAE9D,eAAC,GAAD,UACE,eAACiZ,GAAD,CAA6BlZ,iBAAkBA,EAA/C,SACE,eAAC,GAAD,UACE,eAACD,GAAD,CACE15C,KAAK,QACL25C,iBAAkBA,EAClBC,mBAAoBA,WCzCxBvyB,MAAOC,IAAax1B,KAEfu1B,GAAQvL,aAAOwL,GAAU;;;WAG3B,EAAG7e,WAAYA,EAAMC,OAAOzU;;EAI1BmpB,GAAQtB,aAAOwT,KAAU;sBAChB,EAAG7mB,WAAYA,EAAMC,OAAOtW;;;mBAG/B,EAAGqW,WAAYA,EAAME,WAAWjX;EAGtCg+B,GAAU5T,aAAOmM,KAAK;;;gBAGnB,EAAGxf,WAAYA,EAAMC,OAAO7U;;EAO/Bm9B,GAAOlV,KAAOkL,GAAe;;;;sBAIpB,EAAGve,QAAOsqD,iBAAgBC,sBAC5CD,EAAiBC,EAAmBvqD,EAAMC,OAAO7V;YACzC,EAAG4V,WAAa,aAAYA,EAAMC,OAAO7U;EAGxCg0C,GAAU/rB,aAAOmM,KAAK;;;;;EAOtBu/B,GAAY1rC,aAAOC,KAAK;;;EASxBuD,IAJSxD,aAAOiC,KAAW;;EAIbjC,aAAO+7B,GAAiB;;GCpBtCob,GAA4B,EACvC1iC,QACA2iC,iBACAC,YACAh+C,eACAC,gBACAC,2BACAC,yBACAE,gBACAG,cACAJ,sBACAG,4BACAT,kBACAC,cACAO,oBACA29C,wBACAt9C,sBACAC,qBACAC,sBACAC,oBACAC,wBACAC,oBACAC,0BACAC,gCAEA,MAAM,EAAE7c,GAAMqf,YAAe,kBAEvB,SAAEw6C,GChBa,GACrBF,YACAh+C,eACAC,gBACAO,cACAV,kBACAC,cACAO,oBACA8a,QACAhb,sBACAD,yBACAD,2BACAG,gBACAE,4BACAw9C,iBACAE,wBACAt9C,sBACAC,qBACAC,sBACAC,oBACAC,wBACAC,oBACAC,0BACAC,gCAEA,MAAM,EAAE7c,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,OAAEnQ,GAAW6O,gBACb,YAAElI,GAAgB/B,MAClB,wBAAE8J,GAA4BD,MAE9B,UAAER,EAAF,QAAa5K,GAAY2K,MAEzB,kBAAEc,GAAsBF,KA0R9B,MAAO,CACL+7C,SAzRoC,CACpC,CACE//D,MAAOkG,EAAE,yBACT85D,UACE,eAAC,GAAD,CACEvnD,QAASA,EACTwT,YAAa/lB,EAAE,uBACfilB,aAAcy0C,EACdxzC,QAAM,EACN5H,SAAUlZ,GACR+X,EAAU,CACR1K,UAAW,CACT8kB,aAAc,CAAE/mB,GAAIumB,EAAO2iC,eAAc,OAAEt0D,QAAF,IAAEA,OAAF,EAAEA,EAAOoL,SAM5DupD,gBAAiBL,EACjBM,eAAe,EACfC,eAAgB/qD,EAAOnT,IAAIC,UAAU,MAEvC,CACElC,MAAOkG,EAAE,wBACT85D,UACE,eAAC/qD,GAAD,CACEkX,YAAY,EACZhB,aAAcxJ,EAAkB3W,IAAM2W,QAAmB3L,EACzDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBz+C,gBAAiBvW,GAAsBE,EAAQA,EAAMD,SAAW,YAO5E40D,gBAAiBt+C,EACjBu+C,cAAep8C,EAAwB3I,SAAS9M,GAAcgyD,aAC9DF,eAAgBj8C,EAAkBtB,IAEpC,CACE5iB,MAAOkG,EAAE,oBACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiC8T,GAC7CsI,aAAcvJ,EAAc5W,IAAM4W,QAAe5L,EACjDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBx+C,YAAaxW,GAAsBE,EAAQA,EAAMD,SAAW,YAOxE40D,gBAAiBr+C,EACjBs+C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAciyD,SAC/DH,eAAgBj8C,EAAkBrB,IAEpC,CACE7iB,MAAOkG,EAAE,qBACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiC0T,GAC7C0I,aAActJ,EAAe7W,IAAM6W,QAAgB7L,EACnDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBv+C,aAAczW,GAAsBE,EAAQA,EAAMD,SAAW,YAOzE40D,gBAAiBp+C,EACjBq+C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAckyD,UAC/DJ,eAAgBj8C,EAAkBzB,IAEpC,CACEziB,MAAOkG,EAAE,sBACT85D,UAAWjkD,EAAYjB,mBACrB,eAAC7F,GAAD,CACEkX,WAAYpd,GAAiCyT,GAC7C2I,aAAcrJ,EAAgB9W,IAAM8W,QAAiB9L,EACrDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBt+C,cAAe1W,GAAsBE,EAAQA,EAAMD,SAAW,YAOxE,eAAC,KAAD,CAASrL,MAAOk9B,EAAQ,2BAAxB,SACE,eAACjoB,GAAD,CACEiX,UAAQ,EACRf,aAAcrJ,EAAgB9W,IAAM8W,QAAiB9L,EACrDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBt+C,cAAe1W,GAAsBE,EAAQA,EAAMD,SAAW,cAQ5E40D,gBAAiBn+C,EACjBo+C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcmyD,WAC/DL,eAAgBj8C,EAAkB1B,IAEpC,CACExiB,MAAOkG,EAAE,8BACT85D,UACE,eAAC/qD,GAAD,CACEkW,aAAcpJ,EAA2B/W,IAAM+W,QAA4B/L,EAC3EwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBr+C,yBAA0B3W,GAAsBE,EAAQA,EAAMD,SAAW,YAOrF40D,gBAAiBl+C,EACjBm+C,cAAep8C,EAAwB3I,SAAS9M,GAAcoyD,kBAC9DN,eAAgB/qD,EAAOnT,IAAIC,UAAU,MAEvC,CACElC,MAAOkG,EAAE,gCACT85D,UACE,eAAC/qD,GAAD,CACEkW,aAAcnJ,EAAyBhX,IAAMgX,QAA0BhM,EACvEwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBp+C,uBAAwB5W,GAAsBE,EAAQA,EAAMD,SAAW,YAOnF40D,gBAAiBj+C,EACjBk+C,cAAep8C,EAAwB3I,SAAS9M,GAAcqyD,gBAC9DP,eAAgB/qD,EAAOnT,IAAIC,UAAU,MAEvC,CACElC,MAAOkG,EAAE,8BACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiCgU,GAC7CoI,aAAclJ,EAAsBjX,IAAMiX,QAAuBjM,EACjEwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBn+C,oBAAqB7W,GAAsBE,EAAQA,EAAMD,SAAW,YAOhF40D,gBAAiBh+C,EACjBi+C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcsyD,iBAC/DR,eAAgBj8C,EAAkBnB,IAEpC,CACE/iB,MAAOkG,EAAE,sBACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiC2T,GAC7CyI,aAAcjJ,EAAgBlX,IAAMkX,QAAiBlM,EACrDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBl+C,cAAe9W,GAAsBE,EAAQA,EAAMD,SAAW,YAO1E40D,gBAAiB/9C,EACjBg+C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcuyD,WAC/DT,eAAgBj8C,EAAkBxB,IAEpC,CACE1iB,MAAOkG,EAAE,0BACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiC+T,GAC7CqI,aAAchJ,EAAoBnX,IAAMmX,QAAqBnM,EAC7DwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBj+C,kBAAmB/W,GAAsBE,EAAQA,EAAMD,SAAW,YAO9E40D,gBAAiB99C,EACjB+9C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcwyD,gBAC/DV,eAAgBj8C,EAAkBpB,IAEpC,CACE9iB,MAAOkG,EAAE,uBACT85D,UACE,eAAC/qD,GAAD,CACEkW,aAAc/I,EAA4BpX,IAAMoX,QAA6BpM,EAC7EwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBh+C,0BAA2BhX,GAAsBE,EAAQA,EAAMD,SAAW,YAOtF40D,gBAAiB79C,EACjB89C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcyyD,wBAC/DX,eAAgB/qD,EAAOnT,IAAIC,UAAU,MAEvC,CACElC,MAAOkG,EAAE,oBACT85D,UACE,eAAC/qD,GAAD,CACEkX,WAAYpd,GAAiC4T,GAC7CwI,aAAc9I,EAAcrX,IAAMqX,QAAerM,EACjDwO,SAAUlZ,GACRw0D,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChB/9C,YAAajX,GAAsBE,EAAQA,EAAMD,SAAW,YAOxE40D,gBAAiB59C,EACjB69C,cAAa,OAAEp8C,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAc0yD,SAC/DZ,eAAgBj8C,EAAkBvB,KAKbtT,QAAOwO,GAAQA,EAAKqiD,kBD5SxBc,CAAQ,CAC3B/jC,QACA2iC,iBACAC,YACAh+C,eACAC,gBACAC,2BACAC,yBACAE,gBACAG,cACAJ,sBACAG,4BACAT,kBACAC,cACAO,oBACA29C,wBACAt9C,sBACAC,qBACAC,sBACAC,oBACAC,wBACAC,oBACAC,0BACAC,8BAGF,OACE,gBAAC,GAAD,CAAO0Z,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAAC,KAAD,CAAKyc,QAAQ,gBAAb,UACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAO+K,MAAO,EAAd,SAAkBhuB,EAAE,sBAEtB,eAAC,GAAD,UACE,eAAC83B,GAAD,CAAuBpI,SAAU,WAGrC,eAAC,KAAD,UACGmqC,EAASt5D,KAAIw6D,GAEV,eAAC,KAAD,CAAKpmC,KAAM,GAAX,SACE,gBAAC,KAAD,CAAKkD,OAAQ,CAAC,GAAI,GAAlB,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,CACE0hC,eAAgBwB,EAAehB,cAC/BP,iBAAkBuB,EAAed,iBAEnC,eAAC,GAAD,OAEF,gBAAC,GAAD,WACE,eAAC,KAAD,UACE,eAAClsC,GAAD,CAAYj0B,MAAOihE,EAAejhE,UAEpC,eAAC,KAAD,CAAKykC,KAAM,EAAX,SAAew8B,EAAejB,mBAbhBiB,EAAejhE,gBE9FvCi3B,KAAMkD,IAAY37B,KAEpBw2B,GAAexM,aAAOmM,KAAK;;;gBAGjB,EAAGxf,WAAYA,EAAMC,OAAO/U;mBACzB,EAAG8U,WAAYA,EAAME,WAAWjX;;;;;EAO7Ci8B,GAAW7R,aAAO2R,GAAS;;;;;WAKtB,EAAGhlB,WAAYA,EAAMC,OAAOtW;EAEjCoiE,GAAe14C,aAAO6R,GAAU;;EAIhC4B,GAAgBzT,KAAOkL,GAAI;;;;;;;;EAU3BgD,GAAQlO,KAAOmO,GAAI;;;;EAWZwqC,GAAkC,EAAGC,cAAaC,iBAC7D,MAAM,EAAEn7D,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEhC+7C,EAAa,CACjBC,MAAO,CACLC,IAAKC,GACLzhE,MAAOk9B,EAAQ,4BACfl2B,KAAMd,EAAE,kCAEVw7D,OAAQ,CACNF,IAAKG,GACL3hE,MAAOk9B,EAAQ,6BACfl2B,KAAMd,EAAE,mCAEV07D,kBAAmB,CACjBJ,IAAKG,GACL3hE,MAAOk9B,EAAQ,6BACfl2B,KAAMd,EAAE,oCAEV27D,8BAA+B,CAC7BL,IAAKG,GACL3hE,MAAOk9B,EAAQ,6BACfl2B,KAAMd,EAAE,sDAEV47D,OAAQ,CACNN,IAAKG,GACL3hE,MAAOk9B,EAAQ,6BACfl2B,KAAMd,EAAE,uDAIZ,OACE,eAAC,GAAD,UACE,gBAAC,KAAD,CAAOu2B,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAAC,GAAD,UAAWxG,EAAE,0BACb,gBAAC,KAAD,CAAKgjB,MAAM,SAAX,UACE,eAAC,GAAD,UACE,eAAC,GAAD,MAEF,eAACg4C,GAAD,UACGG,EAAan7D,EAAE,sBAAuB,CAAE2E,KAAM,IAAIyR,KAAK+kD,KAAiB,SAG7E,eAAC,KAAD,UACGD,GACC,gBAAC,KAAD,CAAKrjC,OAAQ,CAAC,GAAI,IAAK7U,MAAM,SAA7B,UACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAOwC,IAAK41C,EAAWF,GAAaI,QAEtC,eAAC,KAAD,UACE,eAACN,GAAD,UAAeI,EAAWF,GAAaphE,eAK9CohE,GAAe,eAAC,GAAD,UAAWE,EAAWF,GAAap6D,aC7GpD,IAAK+6D,I,SAAAA,K,8BAAAA,E,yBAAAA,Q,KCOL,MAAMC,GAA4BhqD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECevC8R,GAAQtB,aAAOwT,KAAU;;EAGzB/mB,GAAauT,aAAOy5C,KAAgB;;EAIpCrQ,GAAeppC,aAAO7T,KAAQ;;EAG9ButD,GAAoB15C,aAAO7T,KAAQ;;EAInCooB,GAAcvU,aAAOxpB,KAAO;;;;EAM5B41B,GAAcpM,KAAOkL,GAAI;;;;;;;;sBAQT,EAAGve,WAAYA,EAAMC,OAAO7V;EAG5CisC,GAAQhjB,aAAOijB,KAAkC;;;;;;;;;;qBAUlC,EAAGt2B,WAAa,aAAYA,EAAMC,OAAO7V;kBAC5C,EAAG4V,WAAYA,EAAMC,OAAOvU;;;;;;;;kBAQ5B,EAAGsU,WAAYA,EAAMC,OAAOhW;;;;;qCAKT,EAAG+V,WAAYA,EAAME,WAAWjX;sCAC/B,EAAG+W,WAAYA,EAAME,WAAWjX;;;;;;;EAgBzD+jE,GAAsC,EACjDC,yBACAC,kBACAC,YACA/sC,eAEA,MAAM,EAAErvB,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,OAAEnQ,GAAW6O,eACbqD,EAAWhe,EAASwjB,IAAQ3a,mBAE5B,wBAAEowD,GC/FgC,MACxC,MAAOA,GAAyB,QAAE9pD,IAAa8G,aAG7CyiD,GAA2B,CAC3BpvD,QAASnN,EAAaC,eAGxB,MAAO,CAAE68D,0BAAyB9pD,YDuFE+pD,GAE9B31B,EAA+C,CACnD,CACE7sC,MAAOkG,EAAE,mCACT+yB,OAAQ,EAAGpuB,OAAM6L,QACf,eAAC,GAAD,CACE+rD,WAAY,KACZx2C,YAAaiR,EAAQ,eACrBhyB,OAAQ9B,EACR+hB,aAActgB,EAAOG,IAAMH,QAAQmL,EACnCwO,SAAUlZ,GACRi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CACtB73D,KAAMO,GAAsBE,EAAQA,EAAMD,SAAW,YAOjEme,MAAO,SAET,CACExpB,MAAOkG,EAAE,sCACTsjB,MAAO,OACPyP,OAAQ,EAAGtiB,OAAMD,QACf,eAAC,KAAD,CACEuV,YAAa/lB,EAAE,sCACfilB,aAAY,OAAExU,QAAF,IAAEA,SAAQX,EACtBqnB,OAAS7D,IACP,MAAMmpC,EAAUnpC,EAAM+D,cAAcjyB,MACpCi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAE/rD,KAAMgsD,UAO5C,CACE3iE,MAAOkG,EAAE,oCACTsjB,MAAO,OACPyP,OAAQ,EAAG2pC,QAAOlsD,QAChB,eAAC,KAAD,CACEuV,YAAa/lB,EAAE,oCACfilB,aAAY,OAAEy3C,QAAF,IAAEA,SAAS5sD,EACvBqnB,OAAS7D,IACP,MAAMqpC,EAAWrpC,EAAM+D,cAAcjyB,MACrCi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAEE,MAAOC,UAO7C,CACE7iE,MAAOkG,EAAE,mCACTsjB,MAAO,QACPyP,OAAQ,EAAG6pC,OAAMC,WAAUrsD,QACzB,gBAAC,GAAD,CAAOhK,KAAM,EAAb,UACE,eAAC,GAAD,CACEye,aAAY,OAAE43C,QAAF,IAAEA,SAAY/sD,EAC1BqnB,OAAS7D,IACP,MAAMwpC,EAAcx3D,OAAOguB,EAAM+D,cAAcjyB,OAC/Ci3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAEK,SAAUC,SAK5C,eAAC,GAAD,CACE/2C,YAAaiR,EAAQ,8BACrB/R,aAAY,OAAE23C,QAAF,IAAEA,OAAF,EAAEA,EAAMpsD,GACpBusD,cAAe,CACbC,SAAU,QAEZn3D,QAASu2D,EAAU77D,KAAI08D,IAAQ,CAC7Bt9C,MAAOs9C,EAASt2C,QAAQvF,GACxBhc,MAAO63D,EAASzsD,OAElB8N,SAAUlZ,GACRi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAEU,OAAQ53D,OAAOF,aAQvD,CACEtL,MAAOkG,EAAE,wCAAyC,CAAEqrD,MAAO,IAC3D/nC,MAAO,QACPyP,OAAQ,EAAGoqC,oBAAmB3sD,QAE1B,gBAAC,GAAD,CAAOhK,KAAM,EAAb,UACE,eAACw1D,GAAD,CACEj2C,YAAa/lB,EAAE,wCAAyC,CAAEqrD,MAAO,IACjE0R,cAAe,CACbC,SAAU,SAEZn3D,QAASs2D,EAAgB57D,KAAI68D,IAAc,CACzCz9C,MAAOy9C,EAAez2C,QAAQvF,GAC9Bhc,MAAOg4D,EAAe5sD,OAExByU,cAA+B,OAAjBk4C,QAAiB,IAAjBA,OAAA,EAAAA,EAAoB,IAAKA,EAAkB,GAAG3sD,QAAKV,EACjEwO,SAAUlZ,IAAU,IAAD,EACjB,MAAMi4D,EAAoB,iBACxBF,QADwB,IACxBA,OADwB,EACxBA,EAAmB58D,KAAI+8D,GAAoBA,EAAiB9sD,YADpC,QAC2C,GACrE6sD,EAAqB,GAAK/3D,OAAOF,GACjCi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAEW,kBAAmBE,SAKpDr9D,EAAE,qCACH,eAACg8D,GAAD,CACEj2C,YAAa/lB,EAAE,wCAAyC,CAAEqrD,MAAO,IACjE0R,cAAe,CACbC,SAAU,SAEZn3D,QAASs2D,EAAgB57D,KAAI68D,IAAc,CACzCz9C,MAAOy9C,EAAez2C,QAAQvF,GAC9Bhc,MAAOg4D,EAAe5sD,OAExByU,cAA+B,OAAjBk4C,QAAiB,IAAjBA,OAAA,EAAAA,EAAoB,IAAKA,EAAkB,GAAG3sD,QAAKV,EACjEwO,SAAUlZ,IAAU,IAAD,EACjB,MAAMi4D,EAAoB,iBACxBF,QADwB,IACxBA,OADwB,EACxBA,EAAmB58D,KAAI+8D,GAAoBA,EAAiB9sD,YADpC,QAC2C,GACjE6sD,EAAqBz7D,QAAU,EAAGy7D,EAAqB,GAAK/3D,OAAOF,GAClEi4D,EAAqB,GAAK/3D,OAAOF,GACtCi3D,EAAwB,CACtB5pD,UAAW,CACTjC,KACAgsD,uBAAwB,CAAEW,kBAAmBE,SAKrD,eAAC,GAAD,CACEh5C,QAAS,IAAMgL,EAAS,CAAEkuC,WAAW,EAAM/sD,KAAInQ,KAAMw7D,GAAW2B,gBADlE,SAGE,eAAC,GAAD,CAAW56C,MAAO1T,EAAOjV,eAQrC,OACE,eAAC,GAAD,CACE41B,YAAY,EACZ8W,QAASA,EACTzW,WAAYgsC,EACZ/jB,OAAQ,EAAG3nC,QAASA,EACpBg1B,OAAQ,CAAEnc,EAAG,QE7QNo0C,GAAyB3rD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECiBpC8R,GAAQtB,aAAOwT,KAAU;;EAGzBrnB,GAAS6T,aAAOiC,KAAW;;EAG3BmK,GAAcpM,KAAOkL,GAAI;;;;;;;;sBAQT,EAAGve,WAAYA,EAAMC,OAAO7V;EAG5C0V,GAAauT,aAAOy5C,KAAgB;;EAIpCllC,GAAcvU,aAAOxpB,KAAO;;;;EAM5B4kE,GAAYp7C,aAAOuU,GAAa;;EAIhCyO,GAAQhjB,aAAOijB,KAA6B;;;;;;;;;;qBAU7B,EAAGt2B,WAAa,aAAYA,EAAMC,OAAO7V;kBAC5C,EAAG4V,WAAYA,EAAMC,OAAOvU;;;;;;;;kBAQ5B,EAAGsU,WAAYA,EAAMC,OAAOhW;;;;;qCAKT,EAAG+V,WAAYA,EAAME,WAAWjX;sCAC/B,EAAG+W,WAAYA,EAAME,WAAWjX;;;;;;;MAgB3DylE,I,SAAAA,K,aAAAA,E,eAAAA,E,eAAAA,Q,KAMX,MAAMC,GAA6B,CACjCD,GAAiBE,SACjBF,GAAiBG,WACjBH,GAAiBI,WAGNC,GAAmC,EAC9CC,qBACA5uC,WACA+sC,YACA8B,oBAEA,MAAM,EAAEl+D,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,OAAEnQ,GAAW6O,eACbqD,EAAWhe,EAASwjB,IAAQ3a,mBAE5B,qBAAEkyD,GCjH6B,MACrC,MAAOA,GAAsB,QAAE5rD,IAAa8G,aAG1CokD,GAAwB,CACxB/wD,QAASnN,EAAaC,eAGxB,MAAO,CAAE2+D,uBAAsB5rD,YDyGE6rD,IAE3B,OAAEj5C,GAAW1W,GAGb4vD,EAAwBH,EAAc/0D,QAC1Cm1D,IAAiBV,GAA2Br0D,MAAKg1D,GAAUA,IAAWD,EAAaC,WAM/EC,EAA0BD,IAAD,uBAC7BL,EAAczpD,MAAKgqD,GAAYA,EAASF,SAAWA,WADtB,aAC7B,EAA4D/tD,IAExDkuD,EAAuB,CAC3BluD,EACAmuD,EACAJ,EACApuC,EACAyuC,KAEA,GAAIzuC,GAAS,EAAG,CACd,MAAM0uC,EAAY,IAAID,GAEtBC,EAAU1uC,GAAS,IAAK0uC,EAAU1uC,GAAQ2uC,MAAOH,GAEjD,MAAMI,EAAmBF,EAAUt+D,KAAIu+D,IAAK,YAAK,CAC/CA,MAAOA,EAAMA,MACbE,WAAU,UAAEF,EAAML,gBAAR,aAAE,EAAgBjuD,OAG9B2tD,EAAqB,CACnB1rD,UAAW,CAAEjC,KAAIyuD,oBAAqB,CAAEF,2BAErC,CAAC,IAAD,EACL,MAAMG,EAAW,CACfF,WAAU,UAAER,EAAuBD,UAAzB,QAAoC,KAC9CO,MAAOH,GAEHI,EAAmBH,EAAOr+D,KAAIu+D,IAAK,YAAK,CAC5CA,MAAOA,EAAMA,MACbE,WAAU,UAAEF,EAAML,gBAAR,aAAE,EAAgBjuD,OAG9B2tD,EAAqB,CACnB1rD,UAAW,CACTjC,KACAyuD,oBAAqB,CAAEF,iBAAkB,IAAIA,EAAkBG,SAqBjEv4B,EAA0C,CAC9C,CACE7sC,MAAOkG,EAAE,+BACT+yB,OAAQ,EAAGpuB,OAAM6L,QACf,eAAC,GAAD,CACE+rD,WAAY,KACZx2C,YAAaiR,EAAQ,eACrBhyB,OAAQ9B,EACR+hB,aAActgB,EAAOG,IAAMH,QAAQmL,EACnCwO,SAAUlZ,GACR+4D,EAAqB,CACnB1rD,UAAW,CACTjC,KACAyuD,oBAAqB,CAAEt6D,KAAMO,GAAsBE,EAAQA,EAAMD,SAAW,YAMtFme,MAAO,SAET,CACExpB,MAAOkG,EAAE,kCACTsjB,MAAO,OACPyP,OAAQ,EAAGtiB,OAAMD,QACf,eAAC,KAAD,CACEuV,YAAa/lB,EAAE,kCACfilB,aAAY,OAAExU,QAAF,IAAEA,SAAQX,EACtBqnB,OAAS7D,IACP,MAAMmpC,EAAUnpC,EAAM+D,cAAcjyB,MACpC+4D,EAAqB,CAAE1rD,UAAW,CAAEjC,KAAIyuD,oBAAqB,CAAExuD,KAAMgsD,UAK7E,CACE3iE,MAAOkG,EAAE,gCACTsjB,MAAO,OACPyP,OAAQ,EAAG2pC,QAAOlsD,QAChB,eAAC,KAAD,CACEuV,YAAa/lB,EAAE,gCACfilB,aAAY,OAAEy3C,QAAF,IAAEA,SAAS5sD,EACvBqnB,OAAS7D,IACP,MAAMqpC,EAAWrpC,EAAM+D,cAAcjyB,MACrC+4D,EAAqB,CAAE1rD,UAAW,CAAEjC,KAAIyuD,oBAAqB,CAAEvC,MAAOC,UAK9E,CACE7iE,MAAOkG,EAAE,+BACTsjB,MAAO,QACPyP,OAAQ,EAAG6pC,OAAMC,WAAUrsD,QACzB,gBAAC,GAAD,CAAOhK,KAAM,EAAb,UACE,eAACk3D,GAAD,CACEz4C,aAAY,OAAE43C,QAAF,IAAEA,SAAY/sD,EAC1BqnB,OAAS7D,IACP,MAAMwpC,EAAcx3D,OAAOguB,EAAM+D,cAAcjyB,OAC/C+4D,EAAqB,CACnB1rD,UAAW,CAAEjC,KAAIyuD,oBAAqB,CAAEpC,SAAUC,SAIxD,eAAC,GAAD,CACE73C,aAAY,OAAE23C,QAAF,IAAEA,OAAF,EAAEA,EAAMpsD,GACpB3K,QAASu2D,EAAU77D,KAAI08D,IAAQ,CAC7Bt9C,MAAOs9C,EAASt2C,QAAQvF,GACxBhc,MAAO63D,EAASzsD,OAElBusD,cAAe,CACbC,SAAU,QAEZj3C,YAAaiR,EAAQ,8BACrB1Y,SAAUlZ,GACR+4D,EAAqB,CACnB1rD,UAAW,CACTjC,KACAyuD,oBAAqB,CAAE/B,OAAQ53D,OAAOF,aAQpD,CACEtL,MAAOkG,EAAE,gCACTsjB,MAAO,QACPyP,OAAQ,EAAG6rC,SAAQpuD,SACjB,MAAM2uD,EAxGoBP,IAC9BA,EAAOvnB,QAAO,CAACC,GAA2BwnB,QAAOL,cAC1CA,GAKLnnB,EAJYsmB,GAA2Br0D,MAAK61D,IAAqB,OAARX,QAAQ,IAARA,OAAA,EAAAA,EAAUF,UAAWa,IAAlE,OACRX,QADQ,IACRA,OADQ,EACRA,EAAUF,OACV,SAEe,CACjBO,MAAK,OAAEA,QAAF,IAAEA,SAAShvD,EAChByuD,OAAQE,EAASF,OACjBS,WAAYP,EAASjuD,IAEhB8mC,GAVe,IAWrB,IA2FyB+nB,CAAsB,OAACT,QAAD,IAACA,IAAU,IACzD,OACE,gBAAC,KAAD,CAAK/mC,OAAQ,CAAC,EAAG,GAAIxH,MAAM,EAA3B,UACE,eAAC,KAAD,UACE,gBAAC,GAAD,CAAO7pB,KAAM,EAAb,UACGm3D,GAAiBE,SAClB,eAAC,GAAD,CACE54C,aAAck6C,EAAgBG,EAAIH,EAAgBG,EAAER,WAAQhvD,EAC5DqnB,OAAS7D,IACP,MAAMisC,EAAmBj6D,OAAOguB,EAAM+D,cAAcjyB,OAC9C+qB,EAAK,OAAGyuC,QAAH,IAAGA,OAAH,EAAGA,EAAQxsB,WACpB0sB,IAAK,aAAI,UAAAA,EAAML,gBAAN,eAAgBF,UAAWZ,GAAiBE,iBAEzC/tD,IAAVqgB,GAAwByuC,GAE5BF,EACEluD,EACA+uD,EACA5B,GAAiBE,SACjB1tC,EACAyuC,WAMV,eAAC,KAAD,UACE,gBAAC,GAAD,CAAOp4D,KAAM,EAAb,UACGm3D,GAAiBG,WAClB,eAAC,GAAD,CACE74C,aAAck6C,EAAgBK,EAAIL,EAAgBK,EAAEV,WAAQhvD,EAC5DqnB,OAAS7D,IACP,MAAMmsC,EAAqBn6D,OAAOguB,EAAM+D,cAAcjyB,OAChD+qB,EAAK,OAAGyuC,QAAH,IAAGA,OAAH,EAAGA,EAAQxsB,WACpB0sB,IAAK,aAAI,UAAAA,EAAML,gBAAN,eAAgBF,UAAWZ,GAAiBG,mBAEzChuD,IAAVqgB,GAAwByuC,GAE5BF,EACEluD,EACAivD,EACA9B,GAAiBG,WACjB3tC,EACAyuC,WAOV,eAAC,KAAD,UACE,gBAAC,GAAD,CAAOp4D,KAAM,EAAb,UACGm3D,GAAiBI,UAClB,eAAC,GAAD,CACE94C,aAAck6C,EAAgBO,EAAIP,EAAgBO,EAAEZ,WAAQhvD,EAC5DqnB,OAAS7D,IACP,MAAMqsC,EAAoBr6D,OAAOguB,EAAM+D,cAAcjyB,OAE/C+qB,EAAK,OAAGyuC,QAAH,IAAGA,OAAH,EAAGA,EAAQxsB,WACpB0sB,IAAK,aAAI,UAAAA,EAAML,gBAAN,eAAgBF,UAAWZ,GAAiBI,kBAGzCjuD,IAAVqgB,GAAwByuC,GAE5BF,EACEluD,EACAmvD,EACAhC,GAAiBI,UACjB5tC,EACAyuC,WAMV,eAAC,KAAD,UACE,gBAAC,GAAD,CAAOp4D,KAAM,EAAb,UACE,eAAC,GAAD,CACEuf,YAAaiR,EAAQ,gBACrB4oC,gBAAgB,QAChB35C,YAAU,EACVhB,aAAck6C,EAAgBU,MAAQV,EAAgBU,MAAMtB,YAASzuD,EACrEitD,cAAe,CACbC,SAAU,SAEZ1+C,SAAUlZ,IACR,MAAM06D,EAAiB,OAAGlB,QAAH,IAAGA,OAAH,EAAGA,EAAQz1D,QAAOm1D,GACvCV,GAA2Br0D,MACzBg1D,IAAM,aAAIA,KAAM,UAAKD,EAAaG,gBAAlB,aAAK,EAAuBF,aAGhDJ,EAAqB,CACnB1rD,UAAW,CACTjC,KACAyuD,oBAAqB,CACnBF,iBAAkB,IACZe,EACAA,EAAkBv/D,KAAIw/D,IAAgB,YAAK,CACzCjB,MAAOiB,EAAiBjB,MACxBE,WAAU,UAAEe,EAAiBtB,gBAAnB,aAAE,EAA2BjuD,OAEzC,GACJ,CACEwuD,WAAY15D,OAAOF,GACnB05D,MAAOK,EAAgBU,MAAQV,EAAgBU,MAAMf,MAAQ,SA3B3E,gBAmCGT,QAnCH,IAmCGA,OAnCH,EAmCGA,EAAuB99D,KAAI+9D,GAExB,eAACn5C,EAAD,CAEE/f,MAAOk5D,EAAa9tD,GACpBmP,MAAO2+C,EAAaC,OAHtB,SAKE,sBAAK55C,UAAU,yBAAf,SACG25C,EAAa33C,QAAQvF,MALnBk9C,EAAa9tD,QAY1B,eAAC,GAAD,CACEyU,aAAck6C,EAAgBU,MAAQV,EAAgBU,MAAMf,WAAQhvD,EACpEqnB,OAAS7D,IACP,MAAMqrC,EAAmBr5D,OAAOguB,EAAM+D,cAAcjyB,OACpD,IAAK+5D,EAAgBU,MAAO,OAC5B,MAAM1vC,EAAK,OAAGyuC,QAAH,IAAGA,OAAH,EAAGA,EAAQxsB,WACpB0sB,IAAK,aAAI,UAAAA,EAAML,gBAAN,eAAgBF,UAAWY,EAAgBU,MAAMtB,eAE9CzuD,IAAVqgB,GAAwByuC,GAE5BF,EACEluD,EACAmuD,EACAQ,EAAgBU,MAAMtB,OACtBpuC,EACAyuC,WAMV,eAAC,KAAD,UACE,eAAC,GAAD,CACEv6C,QAAS,IAAMgL,EAAS,CAAEkuC,WAAW,EAAM/sD,KAAInQ,KAAMw7D,GAAWmE,aADlE,SAGE,eAAC,GAAD,CAAWp9C,MAAO1T,EAAOjV,kBASvC,OACE,eAAC,GAAD,CACE41B,YAAY,EACZ8W,QAASA,EACTzW,WAAY+tC,EACZ9lB,OAAQ,EAAG3nC,QAASA,EACpBg1B,OAAQ,CAAEnc,EAAG,Q,yBEpbnB,MAAQ8iC,SAAU8T,IAAgBnnE,KAM5BqzD,GAAW7pC,aAAO29C,GAA4B;YACxC,EAAG9nE,YAAaA;EASf+nE,GAA2B,EACtCC,UACAvG,wBACAD,YACAxhE,SAAS,YAET,MAAM,EAAE6H,GAAMqf,YAAe,kBACtB+gD,EAAYC,GAAiB9vD,sBAepC,OAbA+vD,MACE,KACOF,GAAezG,GACpBC,EAAsB,CACpBnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAAEiG,QAASC,QAInC,IACA,CAACA,IAGD,eAACjU,GAAD,CACEC,UAAQ,EACRnnC,aAAck7C,EACdhoE,OAAQA,EACR4tB,YAAa/lB,EAAE,4BACfse,SAAWgV,IACT,MAAMitC,EAAejtC,EAAM+D,cAAcjyB,MACzCi7D,EAAcE,O,cClDtB,MAAM9P,GAAqBptC,IAUzB,MAAM,GAAE6sC,EAAF,GAAMC,EAAN,YAAUC,EAAV,YAAuBC,EAAvB,WAAoCC,EAApC,SAAgDC,EAAhD,QAA0DG,EAA1D,QAAmEC,GAAYttC,GAC/E,OAAEnU,GAAW6O,eAEnB,OACE,+BACE,uBAAMqL,EAAG8mC,EAAI7mC,EAAG8mC,EAAIvmC,GAAI,EAAGsnC,WAAW,SAASpoC,KAAM5Z,EAAO7U,MAA5D,SACI,IAAa,IAAVs2D,GAAeprD,eAEtB,eAACirD,GAAA,EAAD,CACEN,GAAIA,EACJC,GAAIA,EACJC,YAAaA,EACbC,YAAaA,EACbC,WAAYA,EACZC,SAAUA,EACVznC,KAAM4nC,EAAQ9tC,QAEhB,eAAC4tC,GAAA,EAAD,CACEN,GAAIA,EACJC,GAAIA,EACJG,WAAYA,EACZC,SAAUA,EACVH,YAAaC,EAAc,EAC3BA,YAAaA,EAAc,GAC3BvnC,KAAM4nC,EAAQ9tC,YAUT2uC,GAAyB9sC,iBAAK,EAAGnS,WAC5C,MAAOkgD,EAAagO,GAAkBjwD,oBAAiB,IACjD,OAAErB,GAAW6O,eAKnB,OACE,eAACo0C,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,UACE,eAACC,GAAA,EAAD,CACEG,YAAaA,EACbF,YAAajvC,GAAS,eAAC,GAAD,IAAuBA,IAC7C/Q,KAAMA,EACN89C,YAAa,GACbC,YAAa,GACbvnC,KAAM5Z,EAAO1U,OACb+3D,QAAQ,QACRpiB,aAfW,CAACjkC,EAAYikB,KAC9BqwC,EAAerwC,IAMX,SAUG7d,EAAK/R,KAAIkgE,GACR,eAACC,GAAA,EAAD,CAAuB53C,KAAM23C,EAAM79C,MAAOuH,OAAQs2C,EAAM79C,OAA7C69C,EAAMhwD,iBClEhB8+C,GAAajtC,KAAOqS,IAAK;;;;;;WAM3B,EAAG1lB,WAAYA,EAAMC,OAAO7U;EAO1BsmE,GAAoC,EAAGC,8BAClD,MAAM,EAAE5gE,GAAMqf,YAAe,iBAC7B,OACE,qCACIuhD,EAGA,eAAC,GAAD,UACG5gE,EAAE,mCAAoC,CAAEqzD,KAAMuN,MAHjD,eAAC,GAAD,UAAa5gE,EAAE,6CCXVw3B,GAAOlV,KAAOkL,GAAe;;;;sBAIpB,EAAG5K,WAAYA;EAGxBi+C,GAAcv+C,aAAOsB,KAAO;;;;;;;;;;aAU5B,EAAG3U,WAAYA,EAAMC,OAAO7U;;EAI5ByzD,GAAYxrC,aAAOmM,KAAK;;;EAKxBqyC,GAAiBx+C,aAAOmM,KAAK;;;ECpB7BsyC,GAAiC,EAAGzuD,OAAM0uD,sBAAqB9R,kBAAmB,IAAD,kBAC5F,MAAM,EAAElvD,GAAMqf,YAAe,kBACvB,OAAEnQ,GAAW6O,eAEbkjD,EAAsBtvD,oBAAQ,KAAO,IAAD,4BACxC,MAAMuvD,EAAM,OAAG5uD,QAAH,IAAGA,OAAH,EAAGA,EAAM4uD,OAoBrB,MAAO,CAAEC,IAnBA,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAAQE,IAmBNC,UAjBI,CAChBC,QAAO,OAAEJ,QAAF,IAAEA,GAAF,UAAEA,EAAQK,WAAV,aAAE,EAAaD,QACtBE,SAAQ,OAAEN,QAAF,IAAEA,GAAF,UAAEA,EAAQO,aAAV,aAAE,EAAeD,SACzBvM,YAAY,iBAACiM,QAAD,IAACA,GAAD,UAACA,EAAQK,WAAT,aAAC,EAAatM,kBAAd,QAA4B,IAA5B,iBAAkCiM,QAAlC,IAAkCA,GAAlC,UAAkCA,EAAQO,aAA1C,aAAkC,EAAexM,kBAAjD,QAA+D,IAcpDyM,WAXN,CACjBJ,QAAO,OAAEJ,QAAF,IAAEA,GAAF,UAAEA,EAAQS,YAAV,aAAE,EAAcL,QACvBE,SAAQ,OAAEN,QAAF,IAAEA,GAAF,UAAEA,EAAQU,WAAV,aAAE,EAAaJ,SACvBvM,YACE,iBAACiM,QAAD,IAACA,GAAD,UAACA,EAAQS,YAAT,aAAC,EAAc1M,kBAAf,QAA6B,IAA7B,iBACCiM,QADD,IACCA,GADD,UACCA,EAAQW,YADT,aACC,EAAc5M,kBADf,QAC6B,IAD7B,iBAECiM,QAFD,IAECA,GAFD,UAECA,EAAQU,WAFT,aAEC,EAAa3M,kBAFd,QAE4B,IAKK6M,KAF3B,OAAGZ,QAAH,IAAGA,OAAH,EAAGA,EAAQa,SAGpB,QAACzvD,QAAD,IAACA,OAAD,EAACA,EAAM4uD,SAEJc,EAAc,CAClB,CACEp/C,MAAO1T,EAAOjU,mBACdmK,MAAO47D,EACF,IAAD,UAAIC,EAAoBE,WAAxB,aAAI,EAAyBK,YAC7BxhE,EAAE,iCAER,CACE4iB,MAAO1T,EAAOhU,wBACdkK,MAAO47D,EACF,GAAD,UAAGC,EAAoBI,iBAAvB,aAAG,EAA+BC,WAAWthE,EAAE,2BAA/C,UACEihE,EAAoBI,iBADtB,aACE,EAA+BG,YAEjCxhE,EAAE,oCAER,CACE4iB,MAAO1T,EAAO9T,oBACdgK,MAAO47D,EACF,GAAD,UAAGC,EAAoBS,kBAAvB,aAAG,EAAgCJ,WAAWthE,EAAE,2BAAhD,UACEihE,EAAoBS,kBADtB,aACE,EAAgCF,YAElCxhE,EAAE,iCAER,CACE4iB,MAAO1T,EAAO7T,wBACd+J,MAAO47D,EACF,KAAD,UAAKC,EAAoBa,YAAzB,aAAK,EAA0BR,WAC/BthE,EAAE,oCAIJiiE,EAAY,CAChB,CAAExxD,KAAM,MAAOrL,MAAK,UAAE67D,EAAoBE,WAAtB,aAAE,EAAyBlM,WAAYryC,MAAO1T,EAAOjU,oBACzE,CACEwV,KAAM,YACNrL,MAAO67D,EAAoBI,UAAUpM,WACrCryC,MAAO1T,EAAOhU,yBAEhB,CACEuV,KAAM,aACNrL,MAAO67D,EAAoBS,WAAWzM,WACtCryC,MAAO1T,EAAO9T,qBAEhB,CACEqV,KAAM,OACNrL,MAAK,UAAE67D,EAAoBa,YAAtB,aAAE,EAA0B7M,WACjCryC,MAAO1T,EAAO7T,0BAIlB,OACE,gBAAC,KAAD,CAAKg1B,MAAM,EAAOwH,OAAQ,GAA1B,UACE,eAACipC,GAAD,WACO,OAAJxuD,QAAI,IAAJA,OAAA,EAAAA,EAAM4vD,aAAc,eAAC,GAAD,CAAO5vD,KAAM2vD,IAAgB,eAAC,GAAD,OAElD/S,GACA,eAAC,GAAD,WACO,OAAJ58C,QAAI,IAAJA,OAAA,EAAAA,EAAM4vD,aACL,eAACrB,GAAD,CAAar6D,KAAM,GAAI+vB,UAAU,WAAjC,SACGyrC,EAAYzhE,KAAI8c,GAEb,gBAACwjD,GAAD,CAAar6D,KAAM,EAAnB,UACE,eAAC,GAAD,CAAMoc,MAAOvF,EAAQuF,QACrB,gCAAOvF,EAAQjY,UAFUiY,EAAQuF,WAQzC,eAAC+9C,GAAD,CACEC,wBAAuB,iBAAEtuD,QAAF,IAAEA,OAAF,EAAEA,EAAMsuD,+BAAR,aAAmC9wD,WC/GhEihB,KAAMkD,IAAY37B,KAEb6pE,GAAS7/C,KAAOkL,GAAI;;;;sBAIX,EAAGve,WAAYA,EAAMC,OAAOhW;;;EAIrCJ,GAAQwpB,aAAOyoB,KAAU;;;;EAMzBq3B,GAAkB9/C,KAAOkL,GAAI;gBAC1B,EAAGve,WAAYA,EAAMC,OAAOnU;;;;;;;;;EAW/BsnE,GAAa//C,aAAO2R,GAAS;;;;;WAK/B,EAAGhlB,WAAYA,EAAMC,OAAOzU;EAE1B6nE,GAAWhgD,aAAO2R,GAAS;;;;;;;WAO7B,EAAGhlB,WAAYA,EAAMC,OAAO7U;EAG1BwzB,GAAQvL,aAAO2R,GAAS;;;;;;;WAO1B,EAAGhlB,WAAYA,EAAMC,OAAOzU;ECzC1B8nE,GAA+B,EAC1CzoE,QACA0oE,YACAC,iBACAC,WACAz9C,eACA09C,oBAEA,MAAQ3iE,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,gBAAC,KAAD,CAAKwY,OAAQ,CAAC,EAAG,IAAK7U,MAAM,SAA5B,UACE,eAAC,KAAD,CAAK2R,KAAM,GAAX,SACE,eAAC,GAAD,UAAQ76B,MAEV,eAAC,KAAD,UACE,gBAAC,KAAD,CAAO0M,KAAM,GAAb,UACGk8D,EACC,gBAACP,GAAD,WACE,eAAC,GAAD,CACEl9C,aAAcA,EACdkS,OAAS7D,IACP,MAAMsvC,EAAWtvC,EAAM+D,cAAcjyB,MACxB,OAAbu9D,QAAa,IAAbA,KAAgBr9D,OAAOs9D,OAG3B,eAACN,GAAD,UAAWtrC,EAAQ,+BAGrB,gBAACmrC,GAAD,WACE,eAACC,GAAD,UACE,eAACC,GAAD,UAAaI,MAEf,eAACH,GAAD,UAAWtrC,EAAQ,+BAIvB,gBAACmrC,GAAD,WACE,eAACC,GAAD,UACE,eAACC,GAAD,UAAaG,MAEf,eAACF,GAAD,UAAWtrC,EAAQ,6CClDvBjG,KAAMkD,IAAY37B,KAQby4B,IANgBzO,aAAOmM,KAAK;;;;EAMrBnM,aAAO2R,GAAS;WACzB,EAAGhlB,WAAYA,EAAMC,OAAO7U;;;;;;GAQ1B46B,GAAgB3S,aAAOC,KAAK;;ECC5BsgD,GAAwB,EACnClJ,YACAC,wBACAvlD,yBACAH,uBACA4uD,uBACAC,iBACAC,OACAx8D,WAEA,MAAM,EAAExG,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,uCACE,gBAAC,KAAD,CAAKgR,MAAM,EAAX,UACGnc,GACC,eAAC,KAAD,CAAKygB,KAAM,EAAX,SACE,eAAC4tC,GAAD,CACEzoE,MAAOkG,EAAE,iCACTwiE,UAAWM,EAAqBG,KAAOH,EAAqBG,KAAK19D,UAAY,IAC7Ek9D,eACEK,EAAqBI,QACjBlsC,EAAQ,+BAAgC,CACtCkL,IAAK4gC,EAAqBI,QAC1Bp9D,QAAQ,IAEV,QAKZ,eAAC,KAAD,CAAK6uB,KAAM,EAAX,SACE,eAAC4tC,GAAD,CACEG,UAAQ,EACR5oE,MAAOkG,EAAE,2BACTwiE,UAAWO,EAAeE,KAAOF,EAAeE,KAAK19D,UAAY,IACjE0f,aAAc89C,EAAeG,QAAU/7D,KAAKC,MAAM27D,EAAeG,cAAWpzD,EAC5E6yD,cAAev9D,GACRu0D,EAKEC,EAAsB,CAC3BnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAAEp9C,eAAgBxX,OAAOF,GAASoB,MAP/C1G,IAAaL,MAAM,CACxBE,QAASq3B,EAAQ,uCAY3B,eAAC,KAAD,CAAKrC,KAAM,EAAX,SACE,eAAC4tC,GAAD,CACEG,UAAQ,EACR5oE,MAAgCkG,EAAzBqU,EAA2B,qBAA0B,kBAC5D4Q,aAAc+9C,EAAKE,QAAU/7D,KAAKC,MAAM47D,EAAKE,cAAWpzD,EACxD0yD,UAAWQ,EAAKC,KAAOD,EAAKC,KAAK19D,UAAY,IAC7Co9D,cAAev9D,GACRu0D,EAIEC,EAAsB,CAC3BnnD,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAAE99C,MAAO9W,OAAOF,GAASoB,MANtC1G,IAAaL,MAAM,CACxBE,QAASq3B,EAAQ,2CAY3B3iB,GACA,eAAC,GAAD,UACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAMuyB,QAAM,EAAZ,SAAc5mC,EAAE,yBACfA,EAAE,+CCrFFmjE,GAAyB,EACpCrmD,iBACAtW,OACA6V,aACAs9C,YACAC,4BAEA,MAAM,YAAE/jD,GAAgB/B,KAExB,OACE,eAAC+uD,GAAD,CACEC,qBAAsB,CACpBG,MAAoB,OAAdnmD,QAAc,IAAdA,OAAA,EAAAA,EAAgB1X,QAAsB,OAAd0X,QAAc,IAAdA,OAAA,EAAAA,EAAgB1X,OAAQ,SAAO0K,EAC7DozD,SAAuB,OAAdpmD,QAAc,IAAdA,OAAA,EAAAA,EAAgB1X,OAAQ0X,EAAe1X,MAAQoB,OAAOsJ,GAEjEizD,eAAgB,CACdE,MAAoB,OAAdnmD,QAAc,IAAdA,OAAA,EAAAA,EAAgBsmD,WAAyB,OAAdtmD,QAAc,IAAdA,OAAA,EAAAA,EAAgBsmD,UAAW,SAAOtzD,EACnEozD,SAAuB,OAAdpmD,QAAc,IAAdA,OAAA,EAAAA,EAAgBsmD,UAAWtmD,EAAesmD,SAAW58D,OAAOsJ,GAEvEkzD,KAAM,CACJC,KAAM5mD,EAAaA,EAAa,SAAOvM,EACvCozD,QAAS7mD,EAAaA,EAAa7V,OAAOsJ,GAE5C6pD,UAAWA,EACXC,sBAAuBA,EACvBvlD,uBAAwBwB,EAAYxB,uBACpCH,qBAAsB2B,EAAY3B,qBAClC1N,KAAMA,MClCJqnB,MAAOC,IAAax1B,KAEtBu1B,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAOzU;;;;EAa1B4oE,GAAsD,EACjE9lD,iBACA+lD,wBACAvsC,QACAvZ,oBAEA,MAAM,EAAExd,GAAMqf,YAAe,iBAC7B,OACE,gBAAC,KAAD,CAAKwY,OAAQ,CAAC,EAAG,IAAK5U,QAAQ,SAASD,MAAM,SAA7C,UACE,gBAAC,KAAD,CAAK2R,KAAM,GAAX,UACE,gBAAC,GAAD,CAAO3G,MAAO,EAAd,cAAmBhuB,EAAE,4BAArB,OACA,eAAC22B,GAAD,CAAsBC,UAAQ,EAACxxB,MAAOmY,OAExC,gBAAC,KAAD,CAAKoX,KAAM,GAAX,UACE,gBAAC,GAAD,CAAO3G,MAAO,EAAd,cAAmBhuB,EAAE,gCAArB,OACA,eAAC82B,GAAD,CACExY,SAAUglD,EACV9lD,cAAeA,EACfuZ,MAAOA,WC5BJwsC,GAAejhD,aAAOmM,KAAK;;EAI3BikC,GAAYpwC,aAAOmM,KAAK;;EAIxB+0C,GAAclhD,aAAOsB,MAAOC,MAAM,CAC7C0S,UAAW,WACX/vB,KAAM,IACL;;;;;EAMUi9D,GAAenhD,aAAOC,KAAK;;EAI3BmhD,GAAqBphD,aAAOmM,KAAK;;;ECKjCjkB,GAAgBsH,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8KpB6xD,GAAyB7xD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC7B8xD,GAAyB9xD,IAAI;;;;;;EAQ7B+xD,GAAuC/xD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqC3CgyD,GAA4BhyD,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BhCiyD,GAA4BjyD,IAAI;;;;;;8EC/T7C,MAAQif,KAAMkD,IAAY37B,KAEpBs9B,GAAYtT,KAAOkL,GAAI;sBACP,EAAGve,WAAYA,EAAMC,OAAOjV;mBAC/B,EAAGgV,WAAYA,EAAME,WAAWjX;sBAC7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;;;EAM5Ci7B,GAAW7R,aAAO2R,GAAS;;;;;WAKtB,EAAGhlB,WAAYA,EAAMC,OAAO7U;EAc1B2pE,GAAwC,EAAGrN,SAAQjG,UAAS/wC,YACvE,MAAM,EAAE3f,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEtC,OAAIs3C,GAAUjG,GAAWA,EAAQ9uD,QANb,SAMuB8uD,EAAQ,GAAGjgD,KAElD,gBAAC,GAAD,WACE,eAAC,GAAD,UAAY,GAAEumB,EAAQ,iDAAiDrX,MACvE,eAAC,GAAD,UACG3f,EAAE,2CAA4C,CAAEoF,MAAOsrD,EAAQ,GAAGtrD,UAErE,eAAC,GAAD,UACGpF,EAAE,oCAAqC,CAAE2E,KAAM+rD,EAAQ,GAAGA,QAAQ/rD,YAMpE,MCzBI4sD,GAAyB9sC,iBACpC,EAAGw/C,YAAWC,yBAAwBC,uBAAsBvoD,oBAC1D,MAAM,OAAE1M,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,iBAEvB+kD,EAAmBj9D,KAAKk9D,OACxBH,EACAA,EAAuB3jE,KAAI,EAAGm2D,wBAAyBA,IACvD,IAGA4N,EAA6BJ,EAAsB,OACrDC,QADqD,IACrDA,OADqD,EACrDA,EAAsBh7D,QACpB,EAAGutD,wBAAyBA,GAAsB0N,IAEpDD,EAEEI,EAAkB,OAAGD,QAAH,IAAGA,OAAH,EAAGA,EAA4B/jE,KAAIikE,IAClD,CACLxB,KAAM19D,OAAOk/D,EAAoB5N,YAAYrxD,QAAQ,IACrDmxD,mBAAoB8N,EAAoB9N,mBACxC/xD,KACEiX,GAAiB9W,IAAM8W,GAAe3W,IAAIu/D,EAAoB9N,mBAAoB,WAIlFpkD,EAAO,IAAC,OAAI4xD,QAAJ,IAAIA,IAA0B,MAAK,OAAIK,QAAJ,IAAIA,IAAsB,IAAKxM,MAC9E,CAAC0M,EAAaC,IAAgBD,EAAY/N,mBAAqBgO,EAAYhO,qBAG7E,OACE,eAACvE,GAAA,EAAD,CAAqB7uC,MAAM,OAAOnrB,OAAO,OAAzC,SACE,gBAACwsE,GAAA,EAAD,CACErhD,MAAO,IACPnrB,OAAQ,IACRma,KAAMA,EACNsyD,OAAQ,CACNC,IAAK,EACLC,MAAO,GACPC,KAAM,GACNprE,OAAQ,GARZ,UAWE,eAACqrE,GAAA,EAAD,IACA,eAACC,GAAA,EAAD,CACE1S,QAAQ,qBACR5yC,MAAO,CACLva,MAAOpF,EAAE,+BACTklE,SAAU,oBACVl6C,QAAS,GAEX3qB,KAAK,SACL8kE,OAAQ,CAAC,UAAW,WACpBC,MAAK,OAAElB,QAAF,IAAEA,OAAF,EAAEA,EAAwB3jE,KAC7B8kE,GAAyBA,EAAsB3O,qBAEjD4O,SAAS,kBAGX,eAACC,GAAA,EAAD,CACE5lD,MAAO,CAAEva,MAAOpF,EAAE,+BAAgCwlE,OAAQ,GAAIN,SAAU,YAE1E,eAACO,GAAA,EAAD,CACEztC,QAAS,EAAG04B,UAASiG,SAAQh3C,WAC3B,eAACqkD,GAAD,CAAetT,QAASA,EAASiG,OAAQA,EAAQh3C,MAAOA,MAG5D,eAAC+lD,GAAA,EAAD,CACEhV,QAAS,CACP,CACEtrD,MAAOpF,EAAE,qCAAsC,CAC7C09B,SAAUumC,GAAa,UACvB7+D,MAAO6+D,IAET5jE,KAAM,YACNmQ,GAAI,OACJoS,MAAO1T,EAAO/U,QACdu2D,QAAS,CAAEiV,gBAAiB,QAE9B,CACEvgE,MAAOpF,EAAE,oCACTK,KAAM,OACNmQ,GAAI,OACJoS,MAAO1T,EAAO7U,MACdq2D,QAAS,CAAEiV,gBAAiB,WAIlC,eAACC,GAAA,EAAD,CACEvlE,KAAK,WACLwlE,KAAK,EACLC,WAAW,EACXvT,QAAQ,cACRwT,cAAY,EACZ57C,OAAQjb,EAAO/U,QACfiwB,YAAa,MAEZxO,GACD,eAACgqD,GAAA,EAAD,CACEvlE,KAAK,WACLkyD,QAAQ,OACRwT,cAAY,EACZ57C,OAAQjb,EAAO7U,MACf+vB,YAAa,EACby7C,IAAK,CAAEG,EAAG,EAAGl9C,KAAM5Z,EAAO7U,MAAO+vB,YAAa,GAC9C07C,UAAW,CAAEE,EAAG,EAAGl9C,KAAM5Z,EAAO7U,MAAO+vB,YAAa,cC5H1DyD,MAAOC,GAAUiD,KAAMkD,IAAY37B,KAErC2tE,GAAkB3jD,aAAOC,KAAK;gBACpB,EAAGtT,WAAYA,EAAMC,OAAOtW;mBACzB,EAAGqW,WAAYA,EAAME,WAAWjX;;;EAI7CguE,GAAS5jD,aAAOsB,MAAOC,MAAM,CACjC0S,UAAW,WACX/vB,KAAM,IACL;;EAGG2/D,GAAkB7jD,aAAOC,KAAK;;EAO9Bu+C,GAAiBx+C,aAAOC,KAAqB;gBACnC,EAAGtT,WAAYA,EAAMC,OAAOjV;mBACzB,EAAGgV,WAAYA,EAAME,WAAWjX;;YAEvC,EAAGC,SAAS,WAAcA;sBAChB,EAAG8W,WAAYA,EAAMC,OAAOhW;;EAG5Cg9B,GAAU5T,aAAO6T,KAAY;;iBAElB,EAAGlnB,WAAa,aAAYA,EAAMC,OAAOhW;;EAIpD20B,GAAQvL,aAAOwL,GAAU;WACpB,EAAG7e,WAAYA,EAAMC,OAAO7U;;;EAIjC02B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAO7U;;;EAkB1B+rE,GAA+B,EAC1CxqD,gBACAuoD,uBACAF,YACAC,yBACAjV,uBACAoX,gBACAluE,aAEA,MAAM,EAAE6H,GAAMqf,YAAe,iBAE7B,OACE,eAACg6C,GAAD,CAA6BlZ,mBAAoBvkC,EAAjD,SACE,eAACqqD,GAAD,UACE,gBAACC,GAAD,WACE,gBAACC,GAAD,CAAiBljD,QAAQ,gBAAgBoN,MAAM,EAA/C,UACE,gBAAC,KAAD,CAAKwH,OAAQ,CAAC,GAAI,IAAlB,UACE,eAAC,GAAD,CAAO7J,MAAO,EAAd,SAAkBhuB,EAAE,2BACpB,eAAC,GAAD,CAASK,KAAK,aACd,eAAC,GAAD,UAAOL,EAAE,oCAEVqmE,GACC,eAAC,KAAD,UACE,eAACtjC,GAAD,CAAW1iC,KAAMoI,GAAW46B,YAAaL,gBAAiBisB,SAIhE,eAAC,GAAD,CAAgB92D,OAAQA,EAAxB,SACE,eAAC,GAAD,CACEyjB,cAAeA,EACfqoD,UAAWA,EACXC,uBAAwBA,EACxBC,qBAAsBA,cCvCvBmC,GAA8B,EACzCC,mBACA1nD,UACAkY,QACAyvC,yBACAvI,qBACAwI,uBACAC,4BACAxK,yBACAx7C,sBACK,IAAD,4HACJ,MAAM,EAAE1gB,IAAMqf,YAAe,kBAEvB,YAAExJ,IAAgB/B,MAClB,cAAEqH,IAAkBD,MACpB,UAAEiC,IAAcD,MAEd5K,KAAMq0D,IAAqCn0D,aAGjDqxD,GAAsC,CACtCpxD,UAAW,CAAE0O,UAAWT,GACxBhO,MAAOgO,IAGH9E,IACY,OAAhB2qD,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBnpD,IAAI7B,QAAQe,uBAAwBvU,GAAoB6+D,qBAA1E,OACIL,QADJ,IACIA,OADJ,EACIA,EAAkBnpD,IAAI7B,QAAQK,mBAC9B9L,EAEAssD,GAAS,OAAGuK,SAAH,IAAGA,QAAH,EAAGA,GAAkCvK,UAAUziD,QACxDukD,GAAa,OAAGyI,SAAH,IAAGA,QAAH,EAAGA,GAAkCzI,cAAcvkD,QAChEktD,GAAqB,OAAGF,SAAH,IAAGA,QAAH,EAAGA,GAAkCE,sBAAsBltD,QAChFmtD,GAAuB,OAC3BP,QAD2B,IAC3BA,GAD2B,UAC3BA,EAAkBnpD,IAAI7B,QAAQ+6C,kBADH,iBAC3B,EAA0CyQ,qBADf,aAC3B,EAAyD5L,WAErDjM,MAAe,OAACqX,QAAD,IAACA,OAAD,EAACA,EAAkBnpD,IAAI7B,QAAQ2zC,aAE9CwH,GAAkB,iBAAG6P,QAAH,IAAGA,GAAH,UAAGA,EAAkBnpD,IAAI7B,QAAQm7C,0BAAjC,aAAG,EAAkD5lD,kBAArD,QAAmE,IAG3F,OACE,gBAAC,KAAD,CAAK+mB,OAAQ,CAAC,EAAG,IAAjB,UACE,eAAC,KAAD,CAAKlD,KAAM,GAAX,SACE,gBAAC,KAAD,CAAKkD,OAAQ,GAAIxH,MAAM,EAAvB,UACE,eAACkzC,GAAD,UACE,gBAAC,KAAD,CAAOhtC,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAAC,KAAD,CAAKqxB,OAAQ,CAAC,GAAI,IAAKxH,MAAM,EAA7B,UACGxa,GAAYC,kBACX,eAAC,KAAD,UACE,eAACwjD,GAAD,CACEnZ,mBAAoBvkC,GACpBwkC,mBAAkB,iBAChBmmB,QADgB,IAChBA,GADgB,UAChBA,EAAkBnpD,IAAI7B,QAAQ+6C,kBADd,aAChB,EAA0CQ,iBAD1B,aACuChnD,MAK/D,eAAC,KAAD,UACE,eAACipD,GAAD,CACEla,UAAS,OAAE0nB,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAIC,eAAxB,aAAE,EAA+B7M,GAC1CkW,KAAI,iBACF6/C,QADE,IACFA,OADE,EACFA,EAAkBnpD,IAAIsJ,KAAKC,QACzBvjB,EAASwjB,IAAQ3a,0BAFjB,QAGG,IAEPgb,OAAM,OAAEs/C,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAIsJ,KAAKlW,GACnCu+C,uBAAwB2H,GACxB3/B,MAAK,OAAEwvC,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5M,GAC7BwoD,gBAAiB77C,OAGpBtH,GAAYC,kBACX,eAAC,KAAD,UACE,eAACqjD,GAAD,CACEC,0BAAyB,UACvB9zD,OAAM,OACJihE,QADI,IACJA,GADI,UACJA,EAAkBnpD,IAAI7B,QAAQ+6C,kBAD1B,iBACJ,EAA0C8C,iCADtC,aACJ,EAAqE7zD,kBAFhD,QAGlB,EAEPypD,oBAAmB,iBACjBuX,QADiB,IACjBA,GADiB,UACjBA,EAAkBnpD,IAAI7B,QAAQ+6C,kBADb,aACjB,EAA0CO,kBADzB,aACuC/mD,EAE1DqwC,mBAAoBvkC,GACpBszC,YAAaA,OAInB,eAAC,KAAD,UACE,eAACpP,GAAD,CACEjhC,QAASA,EACTkY,MAAK,OAAEwvC,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5M,GAC7BuvC,eAAc,OAAEwmB,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAIzX,YAAxB,aAAE,EAA4BlF,YAAY,GACxD6iB,MAAM,QACNnrB,OAAO,eAIZ0d,GAAYC,kBACX,eAAC,KAAD,UACE,eAACswD,GAAD,CACExqD,cAAa,OAAEA,SAAF,IAAEA,WAAiB9L,EAChCm0D,UAAS,OAAEsC,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAI7B,QAAQyrD,wBAAhC,aAAE,EAAgDv2D,KAC3DyzD,uBAAsB,OAAEqC,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAI7B,QAAQyrD,wBAAhC,aAAE,EAAgDr9C,OACxEw6C,qBAAoB,OAAEoC,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAI7B,QAAQ0rD,sBAAhC,aAAE,EAA8Ct9C,OACpEslC,qBAAoB,iBAClBsX,QADkB,IAClBA,GADkB,UAClBA,EAAkBnpD,IAAI7B,QAAQ+6C,kBADZ,aAClB,EAA0CM,mBADxB,aACuC9mD,EAE3Du2D,eAAa,WAMtBxwD,GAAYC,kBACX,eAAC,KAAD,CAAKyxC,QAAS1xC,GAAYC,iBAA1B,SACE,gBAAC,KAAD,CAAOygB,UAAU,WAAW/vB,KAAM,GAAlC,UACE,eAACy0D,GAAD,CACEC,YAAW,OAAEqL,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAI7B,QAAQ+6C,kBAAhC,aAAE,EAA0C4E,YACvDC,WAAU,OAAEoL,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAI7B,QAAQ+6C,kBAAhC,aAAE,EAA0C6E,aAExD,eAACjN,GAAD,CAAiBC,gBAAc,cAMzC,eAAC,KAAD,CAAKx5B,KAAM,GAAX,SACE,gBAAC,KAAD,CAAO4B,UAAU,WAAW/vB,KAAM,GAAlC,UACE,gBAAC,KAAD,CAAKqxB,OAAQ,GAAIxH,MAAM,EAAvB,UACE,eAAC,KAAD,WACmB,OAAhBk2C,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBnpD,IAAI7B,QAAQ/K,KAC7B,eAACipD,GAAD,CACE1iC,MAAOA,EACP2iC,eAAc,OAAE6M,QAAF,IAAEA,GAAF,UAAEA,EAAkBnpD,IAAIE,oBAAxB,aAAE,EAAoC9M,GACpDmpD,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,GACzCoL,cAAa,iBAAE2qD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQK,qBAAhC,aAAiD9L,EAC9D6L,aAAY,iBAAE4qD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQI,oBAAhC,aAAgD7L,EAC5D+L,yBAAwB,iBACtB0qD,QADsB,IACtBA,OADsB,EACtBA,EAAkBnpD,IAAI7B,QAAQM,gCADR,aACoC/L,EAE5DgM,uBAAsB,iBACpByqD,QADoB,IACpBA,OADoB,EACpBA,EAAkBnpD,IAAI7B,QAAQO,8BADV,aACoChM,EAE1DkM,cAAa,iBAAEuqD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQS,qBAAhC,aAAiDlM,EAC9DqM,YAAW,iBAAEoqD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQY,mBAAhC,aAA+CrM,EAC1DiM,oBAAmB,iBACjBwqD,QADiB,IACjBA,OADiB,EACjBA,EAAkBnpD,IAAI7B,QAAQQ,2BADb,aACoCjM,EAEvDoM,0BAAyB,iBACvBqqD,QADuB,IACvBA,OADuB,EACvBA,EAAkBnpD,IAAI7B,QAAQW,iCADP,aACoCpM,EAE7D2L,gBAAe,iBAAE8qD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQE,uBAAhC,aAAmD3L,EAClE4L,YAAW,iBAAE6qD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQG,mBAAhC,aAA+C5L,EAC1DmM,kBAAiB,iBAAEsqD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQU,yBAAhC,aAAqDnM,EACtE8pD,sBAAuBz+C,GACvBmB,oBAAmB,UACjBiqD,EAAiBnpD,IAAI7B,QAAQe,2BADZ,aACmCxM,EAEtDyM,mBAAkB,UAAEgqD,EAAiBnpD,IAAI7B,QAAQgB,0BAA/B,aAAqDzM,EACvE0M,oBAAmB,UACjB+pD,EAAiBnpD,IAAI7B,QAAQiB,2BADZ,aACmC1M,EAEtD2M,kBAAiB,UAAE8pD,EAAiBnpD,IAAI7B,QAAQkB,yBAA/B,aAAoD3M,EACrE4M,sBAAqB,UACnB6pD,EAAiBnpD,IAAI7B,QAAQmB,6BADV,aACmC5M,EAExD6M,kBAAiB,UAAE4pD,EAAiBnpD,IAAI7B,QAAQoB,yBAA/B,aAAoD7M,EACrE8M,wBAAuB,UACrB2pD,EAAiBnpD,IAAI7B,QAAQqB,+BADR,aACmC9M,EAE1D+M,0BAAyB,UACvB0pD,EAAiBnpD,IAAI7B,QAAQsB,iCADN,aACmC/M,MAMjE+F,GAAYC,iBACX,eAAC,GAAD,CAAWyoB,KAAM,EAAjB,SACE,gBAACilC,GAAD,WACE,eAACptC,GAAD,CACEt8B,MAAOkG,GAAE,0BACTq2B,SAAU,KACJ,OAACkwC,QAAD,IAACA,OAAD,EAACA,EAAkBnpD,IAAI7B,QAAQ/K,IAC5Bg2D,EAAuB,CAC5B/zD,UAAW,CACTy0D,oBAAqB,CAAEvN,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,OAHtBjR,EAAaC,aAH/D,SAWE,eAACw+D,GAAD,CACEC,mBAAoBA,EACpB5uC,SAAUo3C,EACVvI,cAAa,OAAEA,SAAF,IAAEA,MAAiB,GAChC9B,UAAS,OAAEA,SAAF,IAAEA,MAAa,OAG5B,eAAChmC,GAAD,CACEC,SAAU,KACJ,OAACkwC,QAAD,IAACA,OAAD,EAACA,EAAkBnpD,IAAI7B,QAAQ/K,IAC5Bk2D,EAA0B,CAC/Bj0D,UAAW,CACT00D,uBAAwB,CAAExN,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,OAHzBjR,EAAaC,aAO7D1F,MAAOkG,GAAE,8BATX,SAWE,eAACi8D,GAAD,CACEC,uBAAwBA,EACxBC,gBAAe,OAAE0K,SAAF,IAAEA,MAAyB,GAC1CzK,UAAS,OAAEA,SAAF,IAAEA,MAAa,GACxB/sC,SAAUo3C,WAMlB,gBAAClD,GAAD,WACE,gBAACE,GAAD,CAAc5rC,OAAQ,CAAC,GAAI,IAA3B,UACE,eAAC,KAAD,CAAKlD,KAAM,EAAX,SACE,eAACkB,GAAD,UACE,eAACwtC,GAAD,CACEC,sBAAuBnmD,GACvB4Z,MAAK,OAAEwvC,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5M,GAC7BgN,cAAa,kBAAE+oD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAII,qBAAxB,eAAyC1N,EACtDyN,eAAc,kBACZgpD,QADY,IACZA,OADY,EACZA,EAAkBnpD,IAAIG,sBADV,UAC4BrV,GAAewX,mBAK/D,eAAC,KAAD,CAAKiV,KAAM,GAAX,SACE,eAACyB,GAAD,CAAmBt8B,MAAOkG,GAAE,sBAA5B,SACE,eAACkgE,GAAD,CACEtG,sBAAuBz+C,GACvBglD,QAAO,kBAAEoG,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ4kD,eAAhC,eAA2CrwD,EAClD6pD,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,YAMjD,eAACizD,GAAD,UACE,eAACC,GAAD,UACE,eAACttC,GAAD,CACEt8B,MAAOkG,GAAE,mBACTs2B,SAAUt2B,GAAE,sBAFd,SAIE,eAACmjE,GAAD,CACErmD,eAAc,OAAEypD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQuB,eAC9CtW,KAAI,kBAAE+/D,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5W,YAAxB,UAAgC,EACpC6V,WAAU,kBAAEkqD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQa,aAAhC,eAAyCtM,EACnDs3D,YAAW,OAAEb,QAAF,IAAEA,GAAF,WAAEA,EAAkBnpD,IAAIC,eAAxB,cAAE,GAA+B5M,KAC5CmL,cAAa,OAAEA,SAAF,IAAEA,WAAiB9L,EAChC8pD,sBAAuBz+C,GACvBw+C,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,iBAQtDqF,GAAYC,kBACX,uCACE,eAACsgB,GAAD,CAAmBt8B,MAAOkG,GAAE,mBAAoBs2B,SAAUt2B,GAAE,sBAA5D,SACE,eAACmjE,GAAD,CACErmD,eAAc,OAAEypD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQuB,eAC9CtW,KAAI,kBAAE+/D,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5W,YAAxB,UAAgC,EACpC6V,WAAU,kBAAEkqD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQa,aAAhC,eAAyCtM,EACnDs3D,YAAW,OAAEb,QAAF,IAAEA,GAAF,WAAEA,EAAkBnpD,IAAIC,eAAxB,cAAE,GAA+B5M,KAC5CmL,cAAa,OAAEA,SAAF,IAAEA,WAAiB9L,EAChC8pD,sBAAuBz+C,GACvBw+C,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,OAG7C,gBAAC,KAAD,CAAKqnB,OAAQ,GAAb,UACE,eAAC,KAAD,CAAK0G,KAAK,YAAV,SACE,eAACnI,GAAD,CACEt8B,MAAOkG,GAAE,2BACTs2B,SACEwwC,GACI9mE,GAAE,sBAAuB,CAAE2E,KAAM,IAAIyR,KAAK0wD,MAC1C,IALR,SAQE,eAAC/F,GAAD,CACEzuD,KAAI,OAAEi0D,QAAF,IAAEA,GAAF,WAAEA,EAAkBnpD,IAAI7B,QAAQ+6C,kBAAhC,cAAE,GAA0CyQ,cAChD/F,uBACG,OAACuF,QAAD,IAACA,GAAD,WAACA,EAAkBnpD,IAAIC,eAAvB,cAAC,GAA+B5M,QAAjC,OACA81D,QADA,IACAA,OADA,EACAA,EAAkBnpD,IAAIC,QAAQgqD,yBAEhCnY,YAAaA,SAInB,eAAC,KAAD,CAAK3wB,KAAK,YAAV,SACE,eAAC1I,GAAD,UACE,eAACwtC,GAAD,CACEC,sBAAuBnmD,GACvB4Z,MAAK,OAAEwvC,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI5M,GAC7BgN,cAAa,kBAAE+oD,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAII,qBAAxB,eAAyC1N,EACtDyN,eAAc,kBACZgpD,QADY,IACZA,OADY,EACZA,EAAkBnpD,IAAIG,sBADV,UAC4BrV,GAAewX,mBAK/D,eAAC,KAAD,CAAK6e,KAAK,IAAV,SACE,eAACnI,GAAD,CAAmBt8B,MAAOkG,GAAE,sBAA5B,SACE,eAACkgE,GAAD,CACEtG,sBAAuBz+C,GACvBglD,QAAO,kBAAEoG,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ4kD,eAAhC,eAA2CrwD,EAClD6pD,UAAS,OAAE4M,QAAF,IAAEA,OAAF,EAAEA,EAAkBnpD,IAAI7B,QAAQ/K,wB,eCjXxD,MAAM82D,GAAiC,EAAGxtE,QAAOsL,WAEpD,eAACywB,GAAD,UACE,eAAC,KAAD,CAAW/7B,MAAOA,EAAOsL,MAAOA,MCJzBmiE,GAA6B,EAAGC,0BAC3C,MAAM,EAAExnE,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEtC,OACE,eAACioD,GAAD,CACExtE,MAAOkG,EAAE,kCACToF,MACEoiE,EACIxwC,EAAQ,+BAAgC,CACtCkL,IAAKslC,IAEP,OCZCC,GAAmC,EAAGC,iCACjD,MAAM,EAAE1nE,GAAMqf,YAAe,iBAE7B,OACE,eAACioD,GAAD,CACExtE,MAAOkG,EAAE,wCACToF,MACEsiE,GAA8BA,EAA6B,EACtD1nE,EAAE,uCAAwC,CACzCqzD,KAAMqU,IAER,OCNCC,GAAsC,EACjDD,6BACAF,sBACA3oD,UACAkY,QACAgpB,oBAGE,gBAAC,KAAD,CAAKloB,OAAQ,CAAC,EAAG,IAAjB,UACE,eAAC,KAAD,CAAK0G,KAAM,EAAX,SACE,eAACuhB,GAAD,CACEjhC,QAASA,EACTkY,MAAOA,EACPgpB,eAAgBA,EAChBz8B,MAAM,OACNnrB,OAAO,YAGX,eAAC,KAAD,CAAKomC,KAAM,EAAX,SACE,eAACkpC,GAAD,CAAiBC,2BAA4BA,MAE/C,eAAC,KAAD,CAAKnpC,KAAM,EAAX,SACE,eAACgpC,GAAD,CAAWC,oBAAqBA,S,yBC5BxC,MAAQz2C,KAAMkD,IAAY37B,KAEpBs9B,GAAYtT,KAAOkL,GAAI;sBACP,EAAGve,WAAYA,EAAMC,OAAOjV;mBAC/B,EAAGgV,WAAYA,EAAME,WAAWjX;sBAC7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;;;EAM5Ci7B,GAAW7R,aAAO2R,GAAS;;;;;WAKtB,EAAGhlB,WAAYA,EAAMC,OAAO7U;EAU1B2pE,GAAwC,EAAGtT,UAAS/wC,YAC/D,MAAM,EAAE3f,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,UAEtC,cAAIqxC,QAAJ,IAAIA,OAAJ,EAAIA,EAAS9uD,QAET,gBAAC,GAAD,WACE,eAAC,GAAD,UAAY,GAAEo1B,EAAQ,iDAAiDrX,MACvE,eAAC,GAAD,UACG3f,EAAE,mDAAoD,CACrDoF,MAAOsrD,EAAQ,GAAGtrD,MAAMG,cAG5B,eAAC,GAAD,UACGvF,EAAE,kDAAmD,CACpDoF,MAAON,IAAM4rD,EAAQ,GAAGA,QAAQ/rD,aAOnC,MCvCHm8D,GAAiBx+C,aAAOmM,KAAK;gBACnB,EAAGxf,WAAYA,EAAMC,OAAOjV;mBACzB,EAAGgV,WAAYA,EAAME,WAAWjX;;;sBAG7B,EAAG+W,WAAYA,EAAMC,OAAOhW;;EAI5C0uE,GAAcxiE,GAAmB,GAAEA,KACnCyiE,GAAiB,CAAC,EAAG,GAAI,GAAI,KAEtBC,GAA0C,EACrDhuE,QACAiuE,6BACAzxC,eAEA,MAAM,OAAEpnB,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,iBAE7B,OACE,eAAC+W,GAAD,CAAmBt8B,MAAOA,EAAOw8B,SAAUA,EAA3C,SACE,eAAC,GAAD,CAAgB3B,KAAM,GAAtB,SACE,eAACw9B,GAAA,EAAD,CAAqB7uC,MAAM,OAAOnrB,OAAO,OAAzC,SACE,gBAAC6vE,GAAA,EAAD,CACE1kD,MAAO,IACPnrB,OAAQ,IACRma,KAAMy1D,EACNnD,OAAQ,CACNC,IAAK,EACLC,MAAO,GACPC,KAAM,GACNprE,OAAQ,IARZ,UAWE,eAACsrE,GAAA,EAAD,CACE1S,QAAQ,qBACR+S,SAAU,EACV2C,UAAWF,EAA2BnmE,OACtC+d,MAAO,CACLva,MAAOpF,EAAE,6CACTklE,SAAU,oBACVl6C,QAAS,KAGb,eAACy6C,GAAA,EAAD,CACEztC,QAAS,EAAG04B,UAAS/wC,WAAY,eAAC,GAAD,CAAe+wC,QAASA,EAAS/wC,MAAOA,MAG3E,eAAC4lD,GAAA,EAAD,CACEH,MAAOyC,GACPK,cAAeN,GACftC,SAAU,EACV6C,KAAM,CAAEnuE,SAAU,MAEpB,eAACgrE,GAAA,EAAD,CAAeW,gBAAgB,MAAMlsE,UAAU,IAE/C,eAAC2uE,GAAA,EAAD,CAAK7V,QAAQ,aAAazpC,KAAM5Z,EAAOrT,iBCpDtCwsE,GAAuC,EAClDN,6BACA5nB,mBACAvkC,gBACAqoD,YACAC,yBACAC,2BAEA,MAAM,EAAEnkE,GAAMqf,YAAe,iBAE7B,OACE,gBAAC,KAAD,CAAKwY,OAAQ,CAAC,EAAG,IAAjB,UACE,eAACwhC,GAAD,CAA6BlZ,iBAAkBA,EAA/C,SACE,eAAC,KAAD,CAAKxrB,KAAM,GAAX,SACE,eAACmzC,GAAD,CACEhuE,MAAOkG,EAAE,wBACTs2B,SAAW,GAAEt2B,EAAE,8BAA8BA,EAAE,iCAC/C+nE,2BAA4BA,QAIlC,eAAC,KAAD,CAAKpzC,KAAM,GAAX,SACE,eAACyxC,GAAD,CACExqD,cAAeA,EACfqoD,UAAWA,EACXC,uBAAwBA,EACxBC,qBAAsBA,EACtBhsE,OAAO,gBCzBJmwE,GAA6B,EACxCZ,6BACAF,sBACAO,6BACA5nB,mBACAvkC,gBACAqoD,YACAC,yBACAC,uBACAtlD,UACAkY,QACAgpB,oBAGE,gBAAC,KAAD,CAAK1vB,MAAM,EAAOwH,OAAQ,GAA1B,UACE,eAAC,KAAD,CAAK0G,KAAK,QAAV,SACE,eAACopC,GAAD,CACED,2BAA4BA,EAC5BF,oBAAqBA,EACrB3oD,QAASA,EACTkY,MAAOA,EACPgpB,eAAgBA,MAGpB,eAAC,KAAD,CAAKxhB,KAAK,OAAV,SACE,eAAC8pC,GAAD,CACEloB,iBAAkBA,EAClB4nB,2BAA4BA,EAC5BnsD,cAAeA,EACfqoD,UAAWA,EACXC,uBAAwBA,EACxBC,qBAAsBA,SC7CnBxwC,GAASrR,aAAO0R,GAAY;;;;;;;;;EAW5B4B,GAAYtT,aAAOsB,MAAOC,MAAM,CAC3C0S,UAAW,WACX/vB,KAAM,IACL;;;;;;;ECUU+hE,GAAyB,KAAO,IAAD,YAC1C,MAAM,EAAEvoE,GAAMqf,YAAe,kBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,YAAExJ,GAAgB/B,MAEjBmqD,EAAoBuK,GAAyBj4D,oBAA8B,KAC3E2rD,EAAwBuM,GAA6Bl4D,oBAAmC,KACxFm4D,EAAsBC,GAA2Bp4D,uBACjDsO,EAASm+B,GAAczsC,uBACxB,GAAEC,GAAOksC,eACTvkC,EAAWC,gBACX,eAAE5B,EAAF,gBAAkBkK,GAAoB1M,GAAqBC,0BAE5DzD,GAAI2H,EAAS1T,IAElB,MAAQ6N,KAAM9I,EAAQ+I,QAASq2D,GAAkB1yD,GAAUM,IACrD,KAAElE,EAAF,QAAQC,GAAYC,aAAkDhI,GAAe,CACzFiI,UAAW,CAAEjC,GAAIlL,OAAOkL,GAAK6F,yBAA0BR,EAAYC,qBAG/D,qBAAE+yD,EAAsBt2D,QAASu2D,GCvCF,MACrC,MAAOD,GAAsB,QAAEt2D,IAAa8G,aAG1CsqD,GAAwB,CACxBvoD,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,EAAW,OAChB,IAAK4I,EAAU,OAEf,MAAM4oC,EAAkBxxC,EAAUy0D,qBAC5B,UAAEvN,GAAc1V,EAEhB8kB,EAAYn7D,EAAM4rC,UAA+C,CACrEre,MAAO3wB,GACPiI,UAAW,CAAEjC,GAAImpD,EAAWtjD,0BAA0B,KAGlD2yD,EAAuB3tD,EAASwtD,qBAAqBI,WAC3Dr7D,EAAM+rC,WAAgD,CACpDxe,MAAO3wB,GACPiI,UAAW,CAAEjC,GAAImpD,EAAWtjD,0BAA0B,GACtD/D,KAAM,CACJ8K,IAAK,IACH,OAAG2rD,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IACd7B,QAAS,IACP,OAAGwtD,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IAAI7B,QAClB0iD,oBAA6B,OAAT8K,QAAS,IAATA,OAAA,EAAAA,EAAW3rD,IAAI7B,QAAQ0iD,oBACvC,IAAC,OAAG8K,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IAAI7B,QAAQ0iD,mBAAoB+K,GAC/C,CAACA,GAELxtD,WAAY,WAEdA,WAAY,aAKpB9O,QAASnN,EAAaC,eAGxB,MAAO,CAAEqpE,uBAAsBt2D,YDDoC22D,IAC7D,wBAAEC,EAAyB52D,QAAS62D,GExCF,MACxC,MAAOD,GAAyB,QAAE52D,IAAa8G,aAG7CyqD,GAA2B,CAC3B1oD,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,EAAW,OAChB,IAAK4I,EAAU,OAEf,MAAMguD,EAAgC52D,EAAU00D,wBAC1C,UAAExN,GAAc0P,EAEhBN,EAAYn7D,EAAM4rC,UAA+C,CACrEre,MAAO3wB,GACPiI,UAAW,CAAEjC,GAAImpD,EAAWtjD,0BAA0B,KAGlDizD,EAA8BjuD,EAAS8tD,wBAAwBI,cACrE37D,EAAM+rC,WAAgD,CACpDxe,MAAO3wB,GACPiI,UAAW,CAAEjC,GAAImpD,EAAWtjD,0BAA0B,GACtD/D,KAAM,CACJ8K,IAAK,IACH,OAAG2rD,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IACd7B,QAAS,IACP,OAAGwtD,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IAAI7B,QAClB2gD,wBAAiC,OAAT6M,QAAS,IAATA,OAAA,EAAAA,EAAW3rD,IAAI7B,QAAQ2gD,wBAC3C,IAAC,OAAG6M,QAAH,IAAGA,OAAH,EAAGA,EAAW3rD,IAAI7B,QAAQ2gD,uBAAwBoN,GACnD,CAACA,GACL9tD,WAAY,WAEdA,WAAY,aAKpB9O,QAASnN,EAAaC,eAGxB,MAAO,CAAE2pE,0BAAyB52D,YFEhCi3D,IACI,qBAAEC,EAAsBl3D,QAASm3D,GGlDD32D,KACtC,MAAO02D,GAAsB,QAAEl3D,IAAa8G,aAG1CuqD,GAAwB,CACxB7wD,cACArG,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,KAAa,OAAC4I,QAAD,IAACA,OAAD,EAACA,EAAUouD,qBAAqBluC,SAAS,OAE3D,MAAMouC,EAAqC,CACzCn5D,GAAIiC,EAAUjC,GACdgL,WAAY,yBAGd5N,EAAMilC,MAAM,CAAEriC,GAAI5C,EAAMoP,SAAS2sD,KACjC/7D,EAAMklC,QAIV,MAAO,CAAE22B,uBAAsBl3D,YH8BwCq3D,EACrE,IAAMjB,EAAwB,CAAEpL,WAAW,EAAO/sD,QAAIV,EAAWzP,UAAMyP,OAEnE,wBAAE+5D,EAAyBt3D,QAASu3D,GIjDD/2D,KACzC,MAAO82D,GAAyB,QAAEt3D,IAAa8G,aAG7C0qD,GAA2B,CAC3BhxD,cACArG,QAASnN,EAAaC,aACtB4b,OAAQ,CAACxN,GAAS0E,KAAM+I,IAAc5I,gBACpC,IAAKA,KAAa,OAAC4I,QAAD,IAACA,OAAD,EAACA,EAAUwuD,wBAAwBtuC,SAAS,OAE9D,MAAMwuC,EAAwC,CAC5Cv5D,GAAIiC,EAAUjC,GACdgL,WAAY,4BAGd5N,EAAMilC,MAAM,CAAEriC,GAAI5C,EAAMoP,SAAS+sD,KACjCn8D,EAAMklC,QAIV,MAAO,CAAE+2B,0BAAyBt3D,YJ8BhCy3D,EAA2B,IACzBrB,EAAwB,CAAEpL,WAAW,EAAO/sD,QAAIV,EAAWzP,UAAMyP,MAG/Dm6D,GACA,OAAJ33D,QAAI,IAAJA,OAAA,EAAAA,EAAM8K,IAAI7B,QAAQK,iBACd,OAAJtJ,QAAI,IAAJA,OAAA,EAAAA,EAAM8K,IAAI7B,QAAQe,uBAAwBvU,GAAoB6+D,qBAD9D,OAEIt0D,QAFJ,IAEIA,OAFJ,EAEIA,EAAM8K,IAAI7B,QAAQK,mBAClB9L,EAEAo/C,KAAe,OAAC58C,QAAD,IAACA,OAAD,EAACA,EAAM8K,IAAI7B,QAAQ2zC,aAElC6Y,EAA6Bp2D,oBAAQ,KAAO,IAAD,EAC/C,OAAKs4D,IAAoB,OAAC33D,QAAD,IAACA,GAAD,UAACA,EAAM8K,IAAI7B,QAAQ2uD,4BAAnB,aAAC,EAAwCvgD,QAE3DrX,EAAK8K,IAAI7B,QAAQ2uD,qBAAqBvgD,OAFoC,KAGhF,QAACrX,QAAD,IAACA,GAAD,UAACA,EAAM8K,IAAI7B,QAAQ2uD,4BAAnB,aAAC,EAAwCvgD,OAAQsgD,IAiDpD,GA/CA1vD,sBAAU,KAAO,IAAD,EACd,MAAMe,EAAS,OAAG9R,QAAH,IAAGA,OAAH,EAAGA,EAAQA,OAAO0N,aAAazC,MAAK0C,GACjDA,EAAYC,KAAK7N,MAAK6T,GAAOA,EAAI5M,KAAOlL,OAAOkL,OAG5Co4D,GAAkBttD,GAAWnD,EAAS,aAAc,CAAEpW,SAAS,IACpEi7C,EAAU,OAAC1hC,QAAD,IAACA,GAAD,UAACA,EAAWyJ,aAAZ,aAAC,EAAkBvU,MAC5B,CAACA,EAAI2H,EAAL,OAAe3O,QAAf,IAAeA,OAAf,EAAeA,EAAQA,OAAO0N,aAAc0xD,IAE/CruD,sBAAU,KACR,MAAM4vD,EAAuB,OAAG73D,QAAH,IAAGA,OAAH,EAAGA,EAAM8K,IAAI7B,QAAQ0iD,oBAC9C,OAAC3rD,QAAD,IAACA,OAAD,EAACA,EAAM8K,IAAI7B,UAAY1F,EAAYC,oBAEnC,OAACq0D,QAAD,IAACA,OAAD,EAACA,EAAyBvoE,SAAWknE,GACvCsB,gBA7DsC,GA6DK,KACzCvB,EAAqB,CACnBp2D,UAAW,CAAEy0D,oBAAqB,CAAEvN,UAAS,OAAErnD,QAAF,IAAEA,OAAF,EAAEA,EAAM8K,IAAI7B,QAAQ/K,UAGlE25D,GACL3B,EAAsB2B,MACrB,CACDrB,EACAD,EAFC,OAGDv2D,QAHC,IAGDA,OAHC,EAGDA,EAAM8K,IAAI7B,QACV1F,EAAYC,mBAGdyE,sBAAU,KACR,MAAM8vD,EAA2B,OAAG/3D,QAAH,IAAGA,OAAH,EAAGA,EAAM8K,IAAI7B,QAAQ2gD,wBAClD,OAAC5pD,QAAD,IAACA,OAAD,EAACA,EAAM8K,IAAI7B,UAAY1F,EAAYC,oBAEnC,OAACu0D,QAAD,IAACA,OAAD,EAACA,EAA6BzoE,SAAWwnE,GAC3CgB,gBAhFsC,GAgFK,KACzCjB,EAAwB,CACtB12D,UAAW,CAAE00D,uBAAwB,CAAExN,UAAS,OAAErnD,QAAF,IAAEA,OAAF,EAAEA,EAAM8K,IAAI7B,QAAQ/K,UAGrE65D,GACL5B,EAA0B4B,MACzB,CACDjB,EACAD,EAFC,OAGD72D,QAHC,IAGDA,OAHC,EAGDA,EAAM8K,IAAI7B,QACV1F,EAAYC,mBAGVvD,GAAWq2D,EAAe,OAAO,eAAC7lD,GAAD,IAErC,MA+CMunD,EA/CQ,CACZ,CACE/yD,IAAK,IACLoI,MAAO3f,EAAE,uBACTuwC,SAAS,EACTntB,SACE,eAACkjD,GAAD,CACEC,iBAAkBj0D,EAClBuM,QAASA,EACTkY,MAAOzxB,OAAOkL,GACdg2D,uBAAwBqC,EACxB5K,mBAAoBA,EACpBwI,qBAAsBkC,EACtBjC,0BAA2ByC,EAC3BjN,uBAAwBA,EACxBx7C,gBAAiBA,KAIvB,CACEnJ,IAAK,IACLoI,MAAO3f,EAAE,wBACTuwC,QAAS16B,EAAYC,iBACrBsN,SACE,eAACklD,GAAD,CACEZ,2BACExY,IAAW,OAAI58C,QAAJ,IAAIA,OAAJ,EAAIA,EAAM8K,IAAI7B,QAAQm7C,oBAAjC,OACIpkD,QADJ,IACIA,OADJ,EACIA,EAAM8K,IAAI7B,QAAQm7C,wBAClB5mD,EAEN03D,qBACM,OAAJl1D,QAAI,IAAJA,OAAA,EAAAA,EAAM8K,IAAI7B,QAAQa,QAAY,OAAJ9J,QAAI,IAAJA,OAAA,EAAAA,EAAM8K,IAAI7B,QAAQa,QAAlB,OAA0B9J,QAA1B,IAA0BA,OAA1B,EAA0BA,EAAM8K,IAAI5W,WAAOsJ,EAEvEi4D,2BAA4BA,EAC5B5nB,mBAAoB8pB,EACpBhG,UAAS,OAAE3xD,QAAF,IAAEA,GAAF,UAAEA,EAAM8K,IAAI7B,QAAQyrD,wBAApB,aAAE,EAAoCv2D,KAC/CyzD,uBAAsB,OAAE5xD,QAAF,IAAEA,GAAF,UAAEA,EAAM8K,IAAI7B,QAAQyrD,wBAApB,aAAE,EAAoCr9C,OAC5Dw6C,qBAAoB,OAAE7xD,QAAF,IAAEA,GAAF,UAAEA,EAAM8K,IAAI7B,QAAQ0rD,sBAApB,aAAE,EAAkCt9C,OACxD/N,cAAa,OAAEquD,QAAF,IAAEA,SAAoBn6D,EACnCinB,MAAK,OAAEzkB,QAAF,IAAEA,OAAF,EAAEA,EAAM8K,IAAI5M,GACjBqO,QAASA,EACTkhC,eAAc,OAAEztC,QAAF,IAAEA,GAAF,UAAEA,EAAM8K,IAAIzX,YAAZ,aAAE,EAAgBlF,YAAY,OAM7B0I,QAAOwO,GAAQA,EAAK44B,UAE3C,OACE,gBAAC,GAAD,CACE/b,YAAax0B,EAAE,eACfu0B,YAAaikC,GACb/jC,aAAc,eAACmkC,GAAD,IAHhB,UAKE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAKjkC,KAAM,GAAX,SACE,eAAC+rB,GAAD,CACEjwC,KAAI,iBAAE6B,QAAF,IAAEA,OAAF,EAAEA,EAAM8K,IAAI3M,YAAZ,QAAoB,GACxBkuC,gBACM,OAAJrsC,QAAI,IAAJA,OAAA,EAAAA,EAAM8K,IAAIuhC,gBAAkB,YAAD,OAAYrsC,QAAZ,IAAYA,OAAZ,EAAYA,EAAM8K,IAAIuhC,sBAAmB7uC,EAEtE6wC,YAAa3pB,EAAQ,qBAAsB,CACzCkL,IAAK,CAAEv8B,KAAI,OAAE2M,QAAF,IAAEA,OAAF,EAAEA,EAAM8K,IAAI5W,KAAMZ,aAAc,KAE7Ci7C,eAAgBqO,EAChBtO,gBAAiB,KACf,MAAMlQ,EAA8B,CAClC+M,SAAUjnC,EACVugB,MAAOzxB,OAAOkL,GACdqO,WAEF,OAAO1G,EAAS,iBAAkB,CAChCu4B,eAKR,eAAC,KAAD,CAAM65B,iBAAiB,IAAI12C,MAAOy2C,QAEf,OAApB5B,QAAoB,IAApBA,OAAA,EAAAA,EAAsBnL,YACrB,eAACz5C,GAAD,CACEC,YAAa/jB,EAAE,mCACflG,MAAOkG,EAAE,4BACTgkB,UAAW,KACT,GAAI0kD,EAAqBl4D,GAAI,CAC3B,GAAIk4D,EAAqBroE,OAASw7D,GAAWmE,WAE3C,YADAyJ,EAAqB,CAAEh3D,UAAW,CAAEjC,GAAIk4D,EAAqBl4D,MAG/Dq5D,EAAwB,CAAEp3D,UAAW,CAAEjC,GAAIk4D,EAAqBl4D,QAGpEyT,SAAU,IACR0kD,EAAwB,CAAEpL,WAAW,EAAO/sD,QAAIV,EAAWzP,UAAMyP,IAEnEyC,QAASm3D,GAA+BI,QK3NrCU,GAA4B,IAErC,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOr6C,OAAK,EAAC0N,QAAS,eAACm6B,GAAD,MACtB,eAAC,KAAD,CAAO91D,KAAK,WAAW27B,QAAS,eAAC0qC,GAAD,MAChC,eAAC,KAAD,CAAOrmE,KAAK,IAAI27B,QAAS,eAAC,KAAD,CAAUrK,GAAG,oB,0CCF5C,MAAM/kB,GAAS6T,aAAOiC,KAAW;;GCAzBwM,KAAMkD,IAAY37B,KAEpBy4B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;EAKjCu2B,GAAQlO,KAAOmO,GAAI;;;EAKnBiiC,GAAYpwC,aAAOmM,KAAK;;EAUxBmH,GAAYtT,aAAOC,KAAqB;sBACxB,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;YAKpD,EAAGwuE,eAA+B,WAAdA,EAAyB,YAAS36D;SACzD,EAAG26D,eAA+B,QAAdA,EAAsB,YAAS36D;;;;mBAIzC,EAAGb,WAAYA,EAAME,WAAWlX;EAG7CyyE,GAAwB,KAC5B,MAAM,EAAE1qE,GAAMqf,YAAe,OAE7B,OACE,uCACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAOmG,IAAKmlD,GAAgB75C,IAAK9wB,EAAE,qCAErC,eAAC,GAAD,CAAW20B,KAAM,GAAjB,SACE,eAAC,GAAD,UAAO30B,EAAE,wBAEX,eAAC,KAAD,UACE,eAACwiB,GAAD,UAYKooD,GAA4B,EAAG1F,WAAU7kE,OAAMS,UAExD,eAAC,GAAD,CAAWmiB,QAAQ,eAAeD,MAAM,SAASynD,UAAS,OAAEvF,QAAF,IAAEA,IAAY,SAAxE,SACY,gBAAT7kE,EACC,eAACqqE,GAAD,IAEA,eAAC,GAAD,CAAW/1C,KAAM,GAAjB,SACE,eAAC,GAAD,UAAO7zB,QCpEXu3C,GAAgB/1B,aAAOg2B,KAAM;;mBAEhB,EAAGrpC,WAAYA,EAAME,WAAWlX;;sBAE7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;;;;;aAUnD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;wBAG/B,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;aACrD,EAAGgT,WAAYA,EAAMC,OAAOjV;;;;wBAIjB,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;aACrD,EAAGgT,WAAYA,EAAMC,OAAOjV;;;;;;;;EAgB5B4wE,GAAuC,EAClDC,eACAC,0BACAC,6BAEA,MAAM,EAAEhrE,GAAMqf,YAAe,OAEvB6Q,EAAa,CACjB,CACE3Y,IAAK,OACLoI,MAAO3f,EAAE,cACT0lB,KAAM,eAAC,GAAD,KAER,CACEnO,IAAK,OACLoI,MAAO3f,EAAE,cACT0lB,KAAM,eAAC,GAAD,IACNM,SAAUglD,GAEZ,CACEzzD,IAAK,SACLoI,MAAO3f,EAAE,gBACT0lB,KAAM,eAAC,GAAD,IACNM,SAAUglD,GAEZ,CACEzzD,IAAK,aACLoI,MAAO3f,EAAE,mBACT0lB,KAAM,eAAC,GAAD,IACNM,SAAUglD,IAId,OACE,eAAC,GAAD,CACEC,aAAcH,EAAe,CAACA,GAAgB,GAC9CzmD,QAASyX,GAAKivC,EAAwBjvC,EAAEvkB,KACxCsc,MAAO3D,KC9EA0F,GAAYtT,KAAOkL,GAAI;sBACd,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;mBAE7C,EAAGgT,WAAYA,EAAME,WAAWlX;EAGtC48D,GAAMvyC,KAAOkL,GAAI;;;;EAUjB09C,GAAW5oD,KAAOkL,GAAmB;;wBAE1B,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;cACpD,EAAGkvE,eAAiBA,EAAY,cAAgB;;;;aAIjD,EAAGl8D,QAAO48B,eACjBA,EAAY58B,EAAMC,OAAOjV,MAAQgV,EAAMC,OAAOnT,IAAIE,UAAU;;EAGrD2yB,GAAOtM,aAAOuM,KAAS;;;;;;EAOvBu8C,GAAgB9oD,aAAOuyC,GAAK;;;;;;wBAMjB,EAAG5lD,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAOrD0vC,GAAWrpB,aAAOuM,KAAQuB,KAAqB;;;;;;;aAO/C,EAAGnhB,QAAO48B,eACjBA,EAAY58B,EAAMC,OAAOjV,MAAQgV,EAAMC,OAAOnT,IAAIE,UAAU;;EAGrDovE,GAAa/oD,aAAOhqB,KAAWy4B,KAAM;WACvC,EAAG9hB,WAAYA,EAAMC,OAAOjV;;;EAI1B82B,GAAOzO,aAAOhqB,KAAWy4B,KAAM;;;EAI/BM,GAAS/O,aAAOgpD,KAAW;;EAI3BC,GAAmBjpD,aAAOkpD,GAAY;;EC7CtCC,GAA+B,EAAGr0D,OAAMs0D,UAASC,eAAcC,oBAC1E,MAAM,EAAE5rE,GAAMqf,YAAe,QAEvB,UAAElC,EAAW5K,QAAS6uC,GAAclkC,MAEnC2uD,EAAcC,GAAmBv7D,sBAyBxC,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,eAAC86D,GAAD,UAAarrE,EAAE,4BAEjB,eAACkrE,GAAD,CAAUr/B,WAAY6/B,EAASP,UAAWQ,EAA1C,SACE,gBAACP,GAAD,CAAe/mD,QAASsnD,OAAe77D,EAAY,IAAM87D,IAAzD,UACE,eAAC,GAAD,IACA,eAAC,GAAD,UAAO5rE,EAAE,yBACR2rE,GAAgB,eAACnpD,GAAD,SAGrB,eAAC,GAAD,UACGpL,EAAK7W,KAAI6c,GACR,eAACguD,GAAD,UACE,gBAAC,GAAD,CAAUv/B,UAAWzuB,EAAI2uD,OAAzB,UACE,eAAC,GAAD,UAAO3uD,EAAI3M,OACX,eAAC,GAAD,CACEohB,aAAc,KAAM,EACpBvT,SAAU,EAAGvd,UA1CNF,QACnByzC,aACAvd,YAKA,IACE,MAAMh2B,EAAOuzC,EACb,IAAK3zC,EAA6BI,EAAK0P,KAAM9M,IAC3C,MAAM,IAAIqM,MAGZ87D,EAAgB/0C,GAChB5Z,EAAU,CAAE1K,UAAW,CAAE8kB,aAAc,CAAE/mB,GAAIumB,EAAOi1C,QAASjrE,MAC7D6qE,GAAc,GACd,MAAOp3B,GACP10C,IAAaL,MAAM,CACjBE,QAASK,EAAE,gCAyBDisE,CAAa,CAAEl1C,MAAO3Z,EAAI5M,GAAI8jC,WAAYvzC,IAE5C4wB,gBAAgB,EAChBD,OAAO,OANT,SAQGm6C,IAAiBzuD,EAAI5M,IAAM4wC,EAC1B,eAAC5+B,GAAD,IAEA,eAAC+oD,GAAD,CAAkB3oD,MAAM,gBAdZxF,EAAI5M,YCjErBulB,GAAgBzT,aAAOmM,KAAY;;;;;;;WAOrC,EAAGod,YAAW58B,WACrB48B,EAAY58B,EAAMC,OAAOjV,MAAQgV,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWlX;sBAC7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAGnDiwE,GAAmB5pD,aAAOC,KAAK;;;;;;;;;;;ECG/B4pD,GAA2B,EACtCC,wBACAC,gBACAtB,0BACAuB,0BACAC,qCACAziD,OACAkhD,yBACA5zD,OACAs0D,UACAC,eACAC,gBACAY,yBACA36B,aACA46B,0BAEA,MAAM,EAAEzsE,GAAMqf,YAAe,OAC7B,OACE,eAAC6sD,GAAD,UACE,gBAAC,KAAD,CAAO1lE,KAAM,GAAb,UACE,eAAC,KAAD,CACE4nB,UAAU,WACVmsB,eAAgB,IACd,eAACswB,GAAD,CACEC,aAAcuB,EACdtB,wBAAyBA,EACzBC,uBAAwBA,IAG5B36B,QAAS,CAAC,SACVC,aAAci8B,EACdroD,KAAMooD,EAXR,SAaE,eAAC,GAAD,CACEzgC,UAAoB,SAAT/hB,GAAqC,SAAlBuiD,EAC9BhoD,QAAS,IAAM0mD,EAAwB,SAFzC,SAIE,eAAC,GAAD,QAIJ,eAAC,GAAD,CAAe1mD,QAAS+nD,EAAuBvgC,UAAoB,YAAT/hB,EAA1D,SACE,eAAC,GAAD,MAGF,eAAC,KAAD,CACEumB,QAAS,CAAC,SACVjiB,UAAU,WACVmsB,eAAgB,IACd,eAACkxB,GAAD,CACEr0D,KAAMA,EACNw0D,cAAeA,EACfF,QAASA,EACTC,aAAcA,IARpB,SAYE,eAAC,GAAD,CAAe9/B,UAAW6/B,EAA1B,SACE,eAAC,GAAD,QAGHe,EACC,eAAC,GAAD,CAAe5gC,UAAW2gC,EAAwBnoD,QAASwtB,EAA3D,SACE,eAAC,GAAD,MAGF,eAAC,KAAD,CAAS/3C,MAAOkG,EAAE,oBAAlB,SACE,eAAC,GAAD,UACE,eAAC,GAAD,cChER2P,GAAUC,yBAA8B,CAC5C88D,iBAAkB,aAClBC,wBAAyB,aACzBC,wBAAyB,KACvB,MAAM,IAAI58D,MACR,iIAGJ68D,oBAAqB,KACnB,MAAM,IAAI78D,MACR,6HAGJ88D,2BAA4B,KAC1B,MAAM,IAAI98D,MACR,oIAGJ+8D,+BAAgC,KAC9B,MAAM,IAAI/8D,MACR,wIAGJg9D,SAAU,KACR,MAAM,IAAIh9D,MACR,kHAGJi9D,MAAO,CACLluD,mBAAejP,EACfkP,iBAAalP,EACbo9D,UAAU,GAEZC,YAAa,KACX,MAAM,IAAIn9D,MACR,qHAGJo9D,SAAU,CACRruD,mBAAejP,EACfkP,iBAAalP,GAEfu9D,2BAA4B,KAC1B,MAAM,IAAIr9D,MACR,oIAGJs9D,kBAAmB,MACnBC,qBAAsB,KACpB,MAAM,IAAIv9D,MACR,8HAGJw9D,yBAA0B,MAC1BC,4BAA6B,KAC3B,MAAM,IAAIz9D,MACR,qIAGJ09D,gBAAgB,EAChBC,kBAAmB,KACjB,MAAM,IAAI39D,MACR,2HAGJ49D,uBAAuB,EACvBC,yBAA0B,KACxB,MAAM,IAAI79D,MACR,oIAwDO89D,GAAa,CACxB19D,SAAUT,GAAQS,SAClBC,SArDe,KACf,MAAO09D,EAAsBnB,GAA2Br8D,uBACjDm8D,EAAkBG,GAAuBt8D,oBAAmB,eAC5Do8D,EAAyBG,GAA8Bv8D,oBAAmB,eAC1Ey9D,EAA6BjB,GAAkCx8D,uBAC/D08D,EAAOD,GAAYz8D,oBAAoB,CAC5CwO,mBAAejP,EACfkP,iBAAalP,EACbo9D,UAAU,KAELE,EAAUD,GAAe58D,oBAAoB,CAClDwO,mBAAejP,EACfkP,iBAAalP,KAERm+D,EAAyBZ,GAA8B98D,uBACvD+8D,EAAmBC,GAAwBh9D,oBAA6B,QACxEi9D,EAA0BC,GAC/Bl9D,oBAA6B,QACxBm9D,EAAgBC,GAAqBp9D,qBAAS,IAC9Cq9D,EAAuBC,GAA4Bt9D,qBAAS,GAEnE,MAAO,CACLw9D,uBACAnB,0BACAF,mBACAG,sBACAF,0BACAG,6BACAkB,8BACAjB,iCACAE,QACAD,WACAI,WACAD,cACAc,0BACAZ,6BACAC,oBACAC,uBACAC,2BACAC,8BACAC,iBACAC,oBACAC,wBACAC,6BAWFK,cAPoB,IACb38D,sBAAW5B,KCvIdw+D,GAAoB,CACxB,CAAC,EAAG,EAAG,GACP,CAAC,GAAK,EAAG,KACT,CAAC,EAAG,EAAG,GACP,CAAC,IAAK,EAAG,KACT,CAAC,EAAG,EAAG,GACP,CAAC,IAAK,EAAG,IACT,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,GAAK,EAAG,KACZ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,IAAK,EAAG,KACZ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,IAAK,EAAG,KACZ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,IAAK,EAAG,KAMDC,GAA8B,EAAGC,cAAat3C,QAAOpxB,OAAM2oE,SAAQC,eAC9E,MAAOntB,EAAWotB,GAAgBj+D,qBAAS,IACrC,OAAErB,GAAW6O,eAEb0wD,EAAQtxB,kBAAO,GACfuxB,EAAOvxB,kBAAO,GACdwxB,EAA+BxxB,kBAAO,GACtC5qC,EAAU4qC,mBAAO,GAEjByxB,EAAmB71D,wBAAY,KACnC,MAAMxY,EAAM+tE,EAAOpyB,SACbkL,EAAQ7mD,EAAIsuE,SAAU,iBAAgB93C,KAE5C,IAAKxkB,EAAQmlC,UAAY42B,IAAWlnB,EAAO,OAE3C,MAAM0nB,EAjBa,IAiBaH,EAA6Bj3B,QAE7Di3B,EAA6Bj3B,QAAWo3B,EAEpC,EADAH,EAA6Bj3B,QAAU,EAGvCo3B,IACFvuE,EAAIwuE,iBACD,iBAAgBh4C,IACjB,iBACAo3C,GAAkBO,EAAKh3B,UAEzBg3B,EAAKh3B,QAAUg3B,EAAKh3B,QAAU,EAAIy2B,GAAkBvsE,OAAS8sE,EAAKh3B,QAAU,EAAI,GAGlFs3B,sBAAsBJ,KACrB,CAAC73C,EAAOu3C,IAELW,EAAsBl2D,wBACzBm2D,IACC,GAA+B,UAA3BA,EAAW9mD,OAAO/nB,KAAkB,CACvB6uE,EAAW9mD,OACfkzC,MAAQ+S,IACjBG,GAAa,GACbj8D,EAAQmlC,SAAU,EAClBg3B,EAAKh3B,QAAU,EACfi3B,EAA6Bj3B,QAAU,EACvCy3B,qBAAqBV,EAAM/2B,aAIjC,CAAC22B,IAGH9zD,sBAAU,KACR,GAAK+zD,GAAWlyE,EAAOO,oBAQvB,OAPI0xE,IACFG,GAAa,GACbj8D,EAAQmlC,SAAU,EAClB+2B,EAAM/2B,QAAUs3B,sBAAsBJ,IAExCN,EAAOj5B,GAAG,aAAc45B,GAEjB,KACLX,EAAO74B,IAAI,aAAcw5B,MAE1B,CAACL,EAAkBP,EAAaC,EAAQW,IAE3C,MAAMG,EAAkBz9D,oBAAQ,IAC1B48D,EAAiBr/D,EAAOjV,MAErBmnD,IAAcitB,EAAcn/D,EAAOnT,IAAIE,UAAU,KAAO,eAC9D,CAACiT,EAAOnT,IAAIE,UAAWiT,EAAOjV,MAAOs0E,EAAUntB,EAAWitB,IAE7D,OACE,qCACE,gBAAC,KAAD,CAAQhuE,KAAK,UAAUmQ,GAAIumB,EAAOzkB,KAAM3M,EAAxC,UACE,eAAC,KAAD,CACE0pE,SAAS,gBACT7+D,GAAIumB,EACJ12B,KAAK,OACL40C,MAAO,CACL,aAAcm6B,EACd,eAAgBhuB,EAAY,GAAM,KAGtC,eAAC,KAAD,CACEiuB,SAAS,gBACT7+D,GAAK,YAAWumB,IAChB12B,KAAK,OACL40C,MAAO,CACL,aAAc/lC,EAAOnT,IAAIE,UAAU,KACnC,aAAc,EACd,eAAgB,KAIpB,eAAC,KAAD,CACEozE,SAAS,gBACT7+D,GAAK,iBAAgBumB,IACrB12B,KAAK,OACL40C,MAAO,CACL,aAAcmM,EAAYlyC,EAAOnT,IAAIE,UAAU,KAAO,cACtD,aAAc,EACd,eAAgB,GAChB,iBAAkB,YCvHxBqzE,GAAU,CACdv2E,MAAO,CACLw2E,KAAM,CAAEjsD,MAAO,GAAInrB,OAAQ,IAC3Bq3E,MAAO,CAAElsD,MAAO,GAAInrB,OAAQ,IAC5Bs3E,MAAO,CAAEnsD,MAAO,GAAInrB,OAAQ,IAC5Bu3E,UAAW,CAAEpsD,MAAO,GAAInrB,OAAQ,IAChCy+D,YAAa,CAAEtzC,MAAO,GAAInrB,OAAQ,IAClCw3E,UAAW,CAAErsD,MAAO,GAAInrB,OAAQ,IAChC4uE,cAAe,CAAEzjD,MAAO,GAAInrB,OAAQ,IACpCy3E,OAAQ,CAAEtsD,MAAO,GAAInrB,OAAQ,IAC7B03E,OAAQ,CAAEvsD,MAAO,GAAInrB,OAAQ,IAC7B23E,UAAW,CAAExsD,MAAO,GAAInrB,OAAQ,KAElCgrB,OAAQ,CACNosD,KAAM,CAAEjsD,MAAO,GAAInrB,OAAQ,IAC3Bq3E,MAAO,CAAElsD,MAAO,GAAInrB,OAAQ,IAC5Bs3E,MAAO,CAAEnsD,MAAO,GAAInrB,OAAQ,IAC5Bu3E,UAAW,CAAEpsD,MAAO,GAAInrB,OAAQ,IAChCy+D,YAAa,CAAEtzC,MAAO,GAAInrB,OAAQ,IAClCw3E,UAAW,CAAErsD,MAAO,GAAInrB,OAAQ,IAChC4uE,cAAe,CAAEzjD,MAAO,GAAInrB,OAAQ,IACpCy3E,OAAQ,CAAEtsD,MAAO,GAAInrB,OAAQ,IAC7B03E,OAAQ,CAAEvsD,MAAO,GAAInrB,OAAQ,IAC7B23E,UAAW,CAAExsD,MAAO,GAAInrB,OAAQ,MAevB43E,GAAmC,EAC9CtoE,WACAD,YACAwoE,mBACAxpE,OAAO,QACP0oD,cACAqf,WACA0B,mBACAvD,uBAEA,MAAM,OAAEx9D,GAAW6O,eAEbmyD,EAAyC,CAC7ChhB,YAAW,OAAEA,QAAF,IAAEA,KACb8gB,iBAAgB,OAAEA,QAAF,IAAEA,KAClBC,iBAAgB,OAAEA,QAAF,IAAEA,KAClB1B,SAAQ,OAAEA,QAAF,IAAEA,MAEN4B,EAAWb,GAAQ9oE,GACnB4pE,EAAY,CAAExtD,MAAO1T,EAAOhV,OAE5Bm2E,EAAa,CACjBxZ,WAAY,eAAC,GAAD,IAAcuZ,KAAeD,EAASZ,OAClD3Y,YAAa,eAAC,GAAD,IAAqBwZ,KAAeD,EAASvZ,cAC1D0Z,UAAW,eAAC,GAAD,IAAgBF,KAAeD,EAASP,SACnD7I,cAAe,eAAC,GAAD,IAAgCqJ,KAAeD,EAASpJ,gBACvEyI,MAAO,eAAC,GAAD,IAAeY,KAAeD,EAASX,QAC9CC,MAAO,eAAC,GAAD,IAAeW,KAAeD,EAASV,QAC9CC,UAAW,eAAC,GAAD,IAAmBU,KAAeD,EAAST,aAGlDa,EAAc,CAClBrhB,YAAa,eAAC,GAAD,IAAmBkhB,KAAeD,EAASR,YACxDK,iBAAkB,eAAC,GAAD,IAAmBI,KAAeD,EAASL,YAC7DG,iBAAkBvD,EAAmB2D,EAAW3D,GAAoB,KACpE6B,SAAU,eAAC,GAAD,IAAgB6B,KAAeD,EAASN,UAI9CW,EAAU/6D,OAAOwxB,KAAKipC,GAA4Bz7D,MAAK8C,GAAO24D,EAAW34D,KAE/E,OAAKi5D,EAGH,eAAC,KAAD,CAAQ/oE,SAAUA,EAAUD,UAAWA,EAAWk8B,WAAW,EAA7D,SACG6sC,EAAYC,KAJG,MC5DTC,GAAO3+D,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ECpBX4+D,GALa,EAAGhE,mBAAkBiE,0BACxCA,EAAqBjE,GACnBA,EAD6C,aCkEhDkE,GAA4B,CAChCtD,EACAuD,EACAC,KAC8B,IAAD,IAG7B,MAFmD,QAAtBxD,EAGP,OAChBwD,QADgB,IAChBA,GADgB,UAChBA,EAAUD,UADM,aAChB,EAA+B,GADf,OAEhBC,QAFgB,IAEhBA,GAFgB,UAEhBA,EAAUD,UAFM,aAEhB,EAA8Bp8D,MAC5Bs8D,GAAoBA,EAAiBC,WAAa1D,KAwG/C2D,GA9IwB,CACnCC,EACA5D,KAEA,MAAM6D,EAA6C,QAAtB7D,EAEvB8D,EAtBsC,EAC5CF,EACA5D,EACA6D,IAEIA,EAA6BD,EAC1BA,EACJ3wE,KAAI8wE,IAAY,CACf1sE,KAAM0sE,EAAa1sE,KACnB2sE,aAAcD,EAAaC,aAAanoE,QACtCooE,GAAYA,EAASP,WAAa1D,QAGrCnkE,QAAOkoE,KAAkBA,EAAaC,aAAa1vE,SAShC4vE,CACpBN,EACA5D,EACA6D,GAEIM,EAhDuB,EAC7BP,EACA5D,EACA6D,IAEOD,EAAc3wE,KAAI8wE,GACnBF,EACK,IACFE,EACHC,aAAcD,EAAaC,aAAa,IAGrC,IACFD,EACHC,aAAc,IACTD,EAAaC,aAAanoE,QAAOuoE,GAAQA,EAAKV,WAAa1D,IAAmB,OAiCvDqE,CAC9BP,EACA9D,EACA6D,GAGIS,EAAgBxvD,kBACpBqvD,EACA,CAAC,OAAQ,4BACT,CAAC,OAAQ,SAIX,OAFuCI,iBAAOD,EAAe,SAwHlDX,GAzBQI,MACf,OAACA,QAAD,IAACA,OAAD,EAACA,EAAc1sE,SAEV0sE,EAAaC,aAAahW,IAsBxB2V,GAhF8B75D,GAClCA,EAAKigC,QACV,CAACupB,EAAyBxjD,KAAc,IAAD,gBACrC,IAAKA,EAAI7B,QAAQm+B,SAAS93C,OAAQ,OAAOg/D,EAEzC,MAAMkR,EAAkB10D,EAAI7B,QAAQm+B,SAAS93C,OAAS,EAChDmwE,EAAqB,UACzB30D,EAAI7B,QAAQm+B,SAASo4B,GAAiBhB,eADb,iBACzB,EAA+CtB,aADtB,aACzB,EAAuD,GAAG5O,wBACtDoR,EAA6B,UACjC50D,EAAI7B,QAAQm+B,SAASo4B,GAAiBhB,eADL,iBACjC,EAA+C/J,qBADd,aACjC,EAA+D,GAAGnG,wBAC9DqR,EAAqB,UACzB70D,EAAI7B,QAAQm+B,SAASo4B,GAAiBhB,eADb,iBACzB,EAA+CrB,aADtB,aACzB,EAAuD,GAAG7O,wBACtDsR,EAAgB,UACpB90D,EAAI7B,QAAQm+B,SAASo4B,GAAiBhB,eADlB,iBACpB,EAA+CpB,iBAD3B,aACpB,EAA2D,GAAG9O,wBAEhE,OACGmR,GACAC,GACAC,GACAC,GAKDC,aAAYJ,EAAuBnR,EAAwB4O,QAC3DuC,IAGAnR,EAAwB4O,MAAQuC,IAIW,IAA1CnR,EAAwBmG,eACvBqL,aAASJ,EAA+BpR,EAAwBmG,iBAClEiL,IAGApR,EAAwBmG,cAAgBiL,GAGtCC,IAEFrR,EAAwB6O,MAAQwC,GAE9BC,IAEFtR,EAAwB8O,UAAYwC,GAG/BtR,GA5BEA,IA8BX,CAAE4O,MAAO,EAAGzI,cAAe,EAAG0I,MAAO,EAAGC,UAAW,IA6B1CuB,GAKXL,GALWK,GAnBkB,CAC7B75D,EACAi7D,EACAC,KAEA,IAAKD,IAAmBC,EAAmB,OAAOl7D,EAElD,GAAIk7D,EAAmB,CACrB,MAAMC,EAAoCn7D,EAAKjO,QAC7CiU,GAAOA,EAAIsJ,KAAKlW,KAAO6hE,IAAmBj1D,EAAIC,UAEhD,OAAIi1D,IAAsB1pE,GAAQmf,WAAmBwqD,EAE9Cn7D,EAAKjO,QAAOiU,IAAG,aAAI,UAAAA,EAAIC,eAAJ,eAAa7M,MAAO8hE,KAGhD,OAAOl7D,EAAKjO,QAAOiU,GAAOA,EAAIsJ,KAAKlW,KAAO6hE,KCrL/BG,GAAW1gE,IAAI;;;;;;;;;;;ECYtB2gE,GAAsB,sBACtBC,GAAU,CACd,YACA,cACA,QACA,gBACA,aACA,QACA,aCOWphC,GAAS,EAAGmM,WAAU5+B,UAAS81B,YAAW63B,6BAAqC,IAAD,EACzF,MAAM,EAAExsE,GAAMqf,YAAe,WACtBszD,EAAcC,GAAmBriE,oBAAgB,KACjDsiE,EAAiBC,GAAsBviE,qBAAS,IAChDwiE,EAAkBC,GAAuBziE,qBAAS,IAClD0iE,EAAkBC,GAAuB3iE,qBAAS,IAClD8hE,EAAgBc,GAAqB5iE,uBACrC+hE,EAAmBc,GAAwB7iE,uBAC3C2O,EAAM8xB,GAAWzgC,oBAAgB,KAClC,MAAEW,GAAUgJ,GAAcvR,GAAoB0qE,eAC5CniE,MAAOoiE,GAA4Bp5D,GAAcvR,GAAoB4qE,uBACtEC,EAAWC,GAAgBljE,sBAE5BmjE,EAAqDv2B,kBAAO,OAE5D,iBACJuvB,EADI,oBAEJG,EAFI,qBAGJkB,EAHI,wBAIJpB,EAJI,wBAKJC,EALI,4BAMJoB,EANI,+BAOJjB,EAPI,MAQJE,EARI,SASJD,EATI,SAUJI,EAVI,YAWJD,EAXI,wBAYJc,EAZI,2BAaJZ,EAbI,kBAcJC,EAdI,qBAeJC,EAfI,yBAgBJC,EAhBI,yBAiBJK,EAjBI,kBAkBJF,GACEG,GAAWI,gBAEf3zD,sBAAU,KACRq4D,EAAgB,IAChBrF,EAAqB,OACrBX,OAAwB98D,GACxBk9D,EAAS,CACPjuD,mBAAejP,EACfkP,iBAAalP,EACbo9D,UAAU,IAEZC,EAAY,CACVpuD,mBAAejP,EACfkP,iBAAalP,MAGd,CAAC+O,EAAS4+B,IAEb,MAAM,gBAAE1pC,EAAF,kBAAmB+M,GAAsB9M,GAAqBC,0BAEpEqG,GAAmB,CACjBH,UAAWxR,GAAoBgrE,eAC/B3iE,gBAAiB,CACf+C,kBACA+M,qBAEFvO,SAAUwB,IAGZ,MAAM6/D,EAjEsB,IAiECjB,EAAa/wE,QAMpC,KACJwV,EADI,QAEJmuC,EACAhzC,QAASshE,IChFU,GACrBp2B,WACA5+B,UACAi1D,eACA/0D,gBACAC,cACA2zD,eACAC,kBACAO,oBACAY,uBACAzB,oBACAD,qBAEA,MAAM,EAAEryE,GAAMqf,YAAe,WACtBjI,EAAMmuC,GAAWh1C,oBAAgB,KAElC,KAAE+B,EAAF,QAAQC,GAAYC,aAA8Bi+D,GAAM,CAC5Dh+D,UAAW,CACTgrC,SAAUA,EACV5+B,QAASA,EACTI,iBAAkBF,KAAmBC,EACrCD,cAAeA,EACXja,IAAMia,GAAe/Z,OAAO9B,QAC5B4M,EACJkP,YAAaA,EAAcla,IAAMka,GAAaha,OAAO9B,QAA2B4M,GAElFgkE,aAAY,OAAEA,QAAF,IAAEA,IAAgB,EAC9BpnE,QAASjN,IACP3C,IAAwB2C,GAExBK,IAAaL,MAAM,CACjB4zC,SAAU,EACV1zC,QAASK,EAAE,uCAGf0S,MAAOmM,IAAY4+B,IAwDrB,OAhDAljC,sBAAU,KACR,MAAM4pC,EAAO,OAAG7xC,QAAH,IAAGA,OAAH,EAAGA,EAAMkwC,OAAO7oC,QAAQpZ,KAAIyzE,IAAa,IAAD,IACnD,MAAQz4D,QAAS04D,KAAiB72D,GAAQ42D,GACpC,WAAEE,KAAe34D,GAAY04D,EAEnC,MAAO,IACF72D,EACH7B,QAAS,IACJA,EACHm+B,SAAUy6B,kBACRD,EADe,oBAEf98D,EAAK3C,MAAK2/D,IAAoB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAU5jE,MAAO4M,EAAI5M,YAF5B,aAEf,EAAgD+K,QAAQm+B,gBAFzC,QAEqD,GACpE,aAMR,KAAI,OAACyK,QAAD,IAACA,OAAD,EAACA,EAASviD,QAAQ,QAEK,OAAG0Q,QAAH,IAAGA,OAAH,EAAGA,EAAMkwC,OAAO7oC,QAAQpQ,MAAK6T,IAAQA,EAAI7B,QAAQ24D,eAEjDH,IAE3BxuB,EAAQpB,GACR,MAAM4B,EACoB,IAAxB4sB,EAAa/wE,QAAgBuiD,EAAQ1vC,MAAK2I,GAAOA,EAAI5M,KAAOmiE,EAAa,GAAGniE,KAE9E,GAAKu1C,EAAL,CAjCyBsuB,MA+CzBzB,EAAgB,CAAC7sB,IACjBotB,EAAkBptB,EAAYr/B,KAAKlW,QAfnC,CACE,MAAM8jE,EAAerD,GACnB9sB,EACAkuB,EACAC,GAEFM,EAAgB0B,GAEhB,MACMrtD,GA1CiBotD,EAyCqBC,GAxCxB/zE,KAAI6c,GAAOA,EAAIsJ,KAAKlW,KAC3B+jE,OAAMryC,GAAOA,IAAQmyC,EAAM,GAAG3tD,KAAKlW,MAwCZ8jE,EAAa1yE,OAAS0yE,EAAa,GAAG5tD,KAAKlW,QAAKV,EACpFqjE,EAAkBlsD,MAQnB,CAAC3U,IAEG,CAAE8E,OAAMmuC,UAAShzC,YDVpByyC,CAAQ,CACVvH,WACA1+B,cAAekuD,EAAMluD,cACrBC,YAAaiuD,EAAMjuD,YACnBH,UACAi1D,aACGb,IAAoBJ,GAAoBE,EAA8C,EAlF5D,IAmF7BH,kBACAO,oBACAR,eACAoB,qBAlB2B,KAC3Bb,GAAoB,IAkBpBZ,oBACAD,oBAGI,QACJmC,GACAjiE,QAASo5D,GAFL,oBAGJ8I,IE/GsB,GAAGh3B,WAAU5+B,UAAS8zD,eAAcjgE,WAC5D,MAAM,EAAE1S,GAAMqf,YAAe,WACtBm1D,EAASE,GAAcnkE,uBAExB,KAAE+B,EAAF,QAAQC,GAAYC,aAAyCggE,GAAU,CAC3E//D,UAAW,CACTgrC,SAAUA,EACV5+B,QAASA,GAEXnS,QAASjN,IACP3C,IAAwB2C,GACxBK,IAAaL,MAAM,CACjB4zC,SAAU,EACV1zC,QAASK,EAAE,uCAGf0S,KAAMA,IAASmM,IAAY4+B,IAG7BljC,sBAAU,KACR,IAAIhI,IACJ,OAAID,QAAJ,IAAIA,OAAJ,EAAIA,EAAMkwC,OAAO7oC,QAAQ/X,QAAQ,CAC/B,MAAM+yE,EAAUriE,EAAKkwC,OAAO7oC,QAAQxQ,QAAOyrE,GAAUA,EAAOntB,MAC5DitB,EACEC,EAAQp0E,KAAIq0E,IAAM,YAAK,CACrBpkE,GAAIokE,EAAOpkE,GACXi3C,IAAG,UAAEmtB,EAAOntB,WAAT,aAAE,EAAYhnD,oBAItB,CAAC8R,EAASD,IAEb,MAAMmiE,EAAsB9iE,oBAC1B,IACEghE,EAAapyE,KAAI6c,IAAQ,IAAD,EACtB,MAAO,CACL5M,GAAI4M,EAAI5M,GACRC,KAAM2M,EAAI3M,KACVs7D,UAAS,OAACyI,QAAD,IAACA,GAAD,UAACA,EAAS//D,MAAKmgE,GAAUA,EAAOpkE,KAAO4M,EAAI5M,YAA3C,aAAC,EAA+Ci3C,UAG/D,CAAC+sB,EAAS7B,IAGZ,MAAO,CAAE6B,UAASjiE,UAASkiE,wBFoEvBI,CAAW,CACbniE,KAAMmhE,GACNp2B,WACA5+B,UACA8zD,kBAqBMpgE,QAAS2mC,IAAgBt6B,GAAa,CAC5CC,UACAC,iBAAiB,EACjBC,cAAequD,EAASruD,cACxBC,YAAaouD,EAASpuD,YACtBjM,YAvBuBT,IAAgB,IAAD,IACtC,IAAKA,EAAM,OACX,MAAM4/B,EAAc,iBAClB5/B,QADkB,IAClBA,GADkB,UAClBA,EAAM4M,KAAKvF,eADO,aAClB,EAAoBpZ,KAAIu0E,IAAa,IAAD,IAClC,MAAQp7B,SAAUq7B,KAAkB1iC,GAAQyiC,EAM5C,MAAO,IACFziC,EACHqH,SAPqBy6B,kBACrBY,EAD4B,oBAE5B71D,EAAKzK,MAAKugE,IAAoB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUxkE,MAAOskE,EAAStkE,YAFpB,aAE5B,EAAqDkpC,gBAFzB,QAEqC,GACjE,mBANc,QAYZ,GACR1I,EAAQkB,MAWV33B,sBAAU,KACRgrC,EAAQ,IACRutB,GAAmB,GACnBE,GAAoB,GACpBU,EAAeh8B,QAAUue,YAAW,KAClC+c,GAAoB,KAtIW,OAyIhC,CAACv1B,IAEJ,MAAM,2CACJw3B,GADI,+BAEJC,GAFI,qBAGJC,GAHI,sBAIJC,GAJI,yBAKJC,GALI,kBAMJC,GANI,sCAOJC,GAPI,iBAQJC,GARI,iBASJC,GATI,qBAUJC,GAVI,aAWJC,GAXI,mBAYJC,GAZI,2BAaJC,GAbI,qCAcJC,GAdI,oBAeJC,GAfI,sBAgBJC,IDnJ2B,GAC7BrD,eACAzzD,OACAstD,yBACAiH,eACAD,gBAEA,MAAM,iBACJ9G,EADI,oBAEJG,EAFI,qBAGJkB,EAHI,wBAIJnB,EAJI,wBAKJD,EALI,2BAMJG,EANI,4BAOJkB,EAPI,SAQJhB,EARI,+BASJD,EATI,YAUJI,EAVI,wBAWJc,EAXI,2BAYJZ,EAZI,kBAaJC,EAbI,4BAcJG,EAdI,qBAeJF,EAfI,yBAgBJC,GACEM,GAAWI,gBAETgH,EAAiCvjE,oBACrC,IAAMs/D,GAA4C0B,IAClD,CAACA,IAGGsD,EAAyBl9D,wBAC5B+2D,IACC,MAEMoG,EAFmBvD,EAAapyE,KAAI6c,GAAOA,EAAI7B,QAAQm+B,WAAUy8B,OAEtB9+B,QAC/C,CAAC5tB,EAAsD4nD,KACrDqB,GAAQhxE,SAAQ6vE,IAAa,IAAD,MAC1B,MAAM6E,EAAa,UAAG/E,EAAaP,eAAhB,iBAAG,EAAuBS,UAA1B,aAAG,EAAkChoE,MACtD8sE,GAAUA,EAAOnb,eAEf,UAAAmW,EAAaP,eAAb,eAAuBS,KAAa6E,IAEtC3sD,EAAO8nD,GAAY,IACd9nD,EAAO8nD,GACV,CACE5sE,KAAM0sE,EAAa1sE,KACnB2sE,aAAcD,EAAaP,QAAQS,SAMpC9nD,IAET,CACE6mD,UAAW,GACX1Z,YAAa,GACb4Y,MAAO,GACPzI,cAAe,GACflQ,WAAY,GACZ4Y,MAAO,GACPC,UAAW,KAIT4G,EAA0B,CAC9BhG,UAAW,GACX1Z,YAAa,GACb4Y,MAAO,GACPzI,cAAe,GACflQ,WAAY,GACZ4Y,MAAO,GACPC,UAAW,IAUb,OAPA6G,kBAAcL,GAAyB,CAACx8B,EAAUvpB,KAEhDmmD,EADiBnmD,GACmB8gD,GAClCv3B,EACAo2B,MAGGwG,IAET,CAAC3D,IAGG6D,EAA0C7kE,oBAAQ,IACtBskE,EAAuB3I,IAEtD,CAAC2I,EAAwB3I,IAEtB4I,EAA0BvkE,oBAAQ,IACNskE,EAAuB,QAEtD,CAACA,IAEEJ,EAA6BlkE,oBAAQ,IACTskE,EAAuBzI,IAEtD,CAACyI,EAAwBzI,IAEtBmI,EAAehkE,oBAAQ,KAAO,IAAD,EACjC,MAAM8kE,EAAgB,OAAGv3D,QAAH,IAAGA,OAAH,EAAGA,EAAM3e,KAAI8xC,GAAOA,EAAIqH,WAAUy8B,OAClDO,EAAiB,iBACrBD,QADqB,IACrBA,OADqB,EACrBA,EAAkBl2E,KAAI8wE,IACb,CACL1sE,KAAM0sE,EAAa1sE,KACnB2sE,aAAc,CAAC,IAAKD,EAAaP,QAAQ6F,0BAJxB,QAMf,GACR,OAAO1F,GAAuCyF,EAAmB,SAChE,CAACx3D,IAEEm2D,EAA2B1jE,oBAAQ,MACJukE,EAAwBnP,cACvBnlE,QACnC,CAACs0E,IAEEV,EAAmB7jE,oBAAQ,MACJukE,EAAwB1G,MACvB5tE,QAC3B,CAACs0E,IAEET,EAAmB9jE,oBAAQ,MACJukE,EAAwBzG,MACvB7tE,QAC3B,CAACs0E,IAEER,EAAuB/jE,oBAAQ,MACJukE,EAAwBxG,UACvB9tE,QAC/B,CAACs0E,IAEJ37D,sBAAU,KACR,MAAMo2D,EAAuB,CAC3B9Z,YAAY,EACZD,aAAa,EACb0Z,WAAW,EACXvJ,cAAesO,EACf7F,MAAOgG,EACP/F,MAAOgG,EACP/F,UAAWgG,GAGPkB,EAAoBlG,GAA+B,CACvDhE,mBACAiE,yBAEF9D,EAAoB+J,GAEpB,MAAMC,EAA2BnG,GAA+B,CAC9DhE,iBAAkBC,EAClBgE,yBAGF7D,EAA2B+J,KAC1B,CACDxB,EACAG,EACAC,EACAC,EACA/I,EACAD,EACAI,EACAD,IAGF,MAAMoI,EAA6CtjE,oBACjD,KACGghE,EAAa4B,OAAMn3D,IAAQ,IAAD,MACzB,MAAM05D,EAAsB15D,EAAI7B,QAAQm+B,SAAS93C,OACjD,OAAKk1E,IACL,UAAO15D,EAAI7B,QAAQm+B,SAASo9B,EAAsB,UAAlD,iBAAO,EAA+ChG,eAAtD,iBAAO,EAAwD/J,qBAA/D,aAAO,EAAwE,GAC5EnG,6BAEP,CAAC+R,IAEGoE,EAAoBh+D,wBACxB,CAACi+D,EAAkCC,EAAkCC,KACnE,MAAMC,EAAQ,IAAI/gE,KAAK4gE,EAAcryE,MAC/ByyE,EAAQ,IAAIhhE,KAAK6gE,EAActyE,MAC/B0yE,EAAa,IAAIjhE,KAAK8gE,GAK5B,OAHc/vE,KAAKmwE,IAAID,EAAWE,UAAYJ,EAAMI,WACtCpwE,KAAKmwE,IAAID,EAAWE,UAAYH,EAAMG,aAItD,IAGIC,EAAwBz+D,wBAC5B,CAAC2gC,EAA+Bw9B,KAC9B,MAAMO,EAAyB/9B,EAASvwC,QACtCkoE,GAAgBA,EAAaC,aAAapP,cAE5C,GAAKxoB,EAAS93C,OAEd,OAAKs1E,EAEeO,EAAuB1f,MAAK,CAACif,EAAeC,IAC9DF,EAAkBC,EAAeC,EAAeC,KAG/B,GANOO,EAAuB,KAQnD,CAACV,IAGHx8D,sBAAU,KACR,GAAIiyD,EAAwB,OAC5B,MAAM0E,EAAgBsF,EAAwC9J,GACxDgL,EAAqBF,EAAsBtG,EAAenD,GAChE,IAAK2J,EAAoB,OAEzB,MAAMC,EAA4B1G,GAAsByG,GAExD,GAAIA,IAAuBC,EAA2B,CACpD,MAAMC,EAAwB1yE,GAAoBwyE,EAAmB/yE,MAEjEizE,GACF5K,GAAS1yB,IAAS,IACbA,EACHv7B,cAAe64D,EACf54D,YAAa44D,MAKnB,MAAMC,EAA0B3G,EAAc3nE,MAC5C8nE,GACEA,EAAa1sE,OAASopE,GAAwBsD,EAAaC,aAAapP,cAEvE6L,GAAyB8J,GAC5BjL,EAAuB,OAAC8K,QAAD,IAACA,OAAD,EAACA,EAAoB/yE,QAE7C,CACD6xE,EACAgB,EACAzJ,EACA4E,EACAjG,EACAM,EACAJ,EACAJ,IAGFjyD,sBAAU,KACR,MAAMm9D,EAAqBF,EAAsB7B,EAAc1H,GAEzD0J,EAA4B1G,GAAsByG,GAExD,GAAIA,IAAuBC,EAA2B,CACpD,MAAMG,EAAwB5yE,GAAoBwyE,EAAmB/yE,MAEjEmzE,GACF3K,GAAY7yB,IAAS,IAChBA,EACHv7B,cAAe+4D,EACf94D,YAAa84D,MAKnB,MAAMD,EAA0BlC,EAAapsE,MAC3C8nE,GACEA,EAAa1sE,OAASspE,GAA2BoD,EAAaC,aAAapP,cAE1E+L,GAA4B4J,GAC/BxK,EAA0B,OAACqK,QAAD,IAACA,OAAD,EAACA,EAAoB/yE,QAEhD,CACDgxE,EACA6B,EACAvJ,EACAd,EACAE,IAGF,MAAM+H,EAAwBzjE,oBAAQ,IAC7BghE,EAAat7B,QAA0B,CAAC5tB,EAAQrM,KACrDo5D,EAAwC9J,GAAkBhrE,SAAQg4C,IAAa,IAAD,MAC5E,MAAMniC,EAAMmiC,EAAS/0C,KAErB8kB,EAAOlS,GAAP,UAAckS,EAAOlS,UAArB,QAA6B,GAC7B,MAAMwgE,EAAc36D,EAAI7B,QAAQm+B,SAASjlC,MAAK9P,IAC5C,MAAMwsE,EAA6C,QAAtB7D,EACvB0K,EAAWrzE,EAAKA,OAAS+0C,EAAS/0C,KAClCszE,EAAev+B,EAAS43B,aAAaN,WAAa1D,EACxD,OAAO6D,EAAuB6G,EAAWA,GAAYC,KAGjDC,EAA4BjH,GAChC3D,EACAZ,EAFgC,OAGhCqL,QAHgC,IAGhCA,OAHgC,EAGhCA,EAAajH,SAGkB,IAAD,EAAhC,IAAKoH,EAIH,YAFAzuD,EAAOlS,GAAO,IAAIkS,EAAOlS,GAAM,CAAE9G,KAAI,UAAE2M,EAAI3M,YAAN,QAAc,GAAIyqD,YAAauX,MAKtE,MAGMvX,GAFHgd,EAA0Bhd,aAAgBgd,EAA0BhW,cAEhC,UAEnCgW,EAA0Bhd,mBAFS,QACnCuX,GAGE0F,EAAoBD,EAA0BlH,SAGpDvnD,EAAOlS,GAAO,IAAIkS,EAAOlS,GAAM,CAAE9G,KAAI,UAAE2M,EAAI3M,YAAN,QAAc,GAAIyqD,cAAaid,yBAG/D1uD,IACN,KACF,CAAC+sD,EAAyC7D,EAAcjG,EAAkBY,IAEvEsI,EAAqBjkE,oBAAQ,KAAO,IAAD,EACvC,wBACEuN,QADF,IACEA,OADF,EACEA,EAAMm4B,QAA0B,CAAC5tB,EAAQ4oB,KACvCsjC,EAAaj0E,SAAQg4C,IAAa,IAAD,YAC/B,MAAMniC,EAAMmiC,EAAS/0C,KAErB8kB,EAAOlS,GAAP,UAAckS,EAAOlS,UAArB,QAA6B,GAC7B,MAAM6gE,EAAc/lC,EAAIqH,SAASjlC,MAAK9P,GAAQA,EAAKA,OAAS+0C,EAAS/0C,OAClD,IAAD,EAAlB,IAAKyzE,EAOH,YALA3uD,EAAOlS,GAAO,IACTkS,EAAOlS,GACV,CAAE9G,KAAI,UAAE4hC,EAAI5hC,YAAN,QAAc,GAAIyqD,YAAauX,MAMzC,MAIMvX,IAHJ,OAACkd,QAAD,IAACA,GAAD,UAACA,EAAatH,QAAQ6F,oBAAtB,aAAC,EAAmCzb,eACpC,OAACkd,QAAD,IAACA,GAAD,UAACA,EAAatH,QAAQ6F,oBAAtB,aAAC,EAAmCzU,eAEC,iBAEnCkW,QAFmC,IAEnCA,GAFmC,UAEnCA,EAAatH,QAAQ6F,oBAFc,aAEnC,EAAmCzb,mBAFA,QACnCuX,GAIJhpD,EAAOlS,GAAO,IAAIkS,EAAOlS,GAAM,CAAE9G,KAAI,UAAE4hC,EAAI5hC,YAAN,QAAc,GAAIyqD,mBAGlDzxC,IACN,WA9BL,QA8BY,KAEX,CAACvK,EAAMy2D,IAEJJ,EAAwCx8D,wBAC3CoX,IACC,MAAMkoD,EAAwCxC,EAA2B1lD,GACnEmoD,IAAqBD,EAAsCz2E,OAE5D02E,GACH7K,EAA4B,OAG9B,MAAMyD,EAAgBoH,EAClBD,EACAnC,EAAwB/lD,GAGtBooD,EAAoCf,EACxCtG,EACAlD,GAOF,IAJyCiD,GACvCsH,GAGqC,CACrC,MAAMC,EAA+BtzE,GAAA,OACnCqzE,QADmC,IACnCA,OADmC,EACnCA,EAAmC5zE,MAGjC6zE,GACFxL,GAAS1yB,IAAS,IACbA,EACHv7B,cAAey5D,EACfx5D,YAAaw5D,MAKnBzL,EAA8B,OAACwL,QAAD,IAACA,OAAD,EAACA,EAAmC5zE,MAClEmoE,EAA2B38C,KAE7B,CACE+lD,EACAL,EACA2B,EACAxJ,EACAhB,EACAD,EACAD,EACAW,IAsFEsI,EAAsBpkE,oBAAQ,KAClC,MAAM8mE,EAA8BvC,EAAwBxJ,GAAkBnjE,MAC5E8nE,GAAuD,cAAvCA,EAAaC,aAAaN,WAGtC0H,EAA+BxC,EAAwBxJ,GAAkBnjE,MAC7E8nE,GAAuD,cAAvCA,EAAaC,aAAaN,WAGtC2H,EAA6BzC,EAAwBxJ,GAAkBnjE,MAC3E8nE,GAAuD,WAAvCA,EAAaC,aAAaN,WAGtC4H,EAAoC1C,EAAwBvJ,GAAyBpjE,MACzF8nE,GAAuD,WAAvCA,EAAaC,aAAaN,WAGtC6H,EAAqC3C,EACzCvJ,GACApjE,MAAK8nE,GAAuD,cAAvCA,EAAaC,aAAaN,WAMjD,MAAO,CACL8H,OAAQH,EACRI,SAAUL,EACVM,QAASP,EACTQ,cAAeL,EACfM,gBAT0ChD,EAC1CvJ,GACApjE,MAAK8nE,GAAuD,cAAvCA,EAAaC,aAAaN,WAQ/CmI,eAAgBN,KAEjB,CAAC3C,EAAyBvJ,EAAyBD,IAEtD,MAAO,CACLuI,6CACAC,iCACAC,qBAAsBqB,EACtBpB,wBACAC,2BACAG,mBACAC,mBACAC,uBACAJ,kBApDwB,KACxB,MACM8D,EAD4C,eAArB1M,EACe,cAAgB,aAC5De,EAA4BH,GAE5BiI,EAAsC6D,IAgDtC7D,wCACAI,eACAC,qBACAC,6BACAC,qCA5F4ChG,IAC5CrC,EAA4BqC,GAE5B,MACMuI,EADkBpC,EAAuBnG,GACenD,GAE9D,IAAK0L,EAAsCz2E,OACzC,OAGF,MAAM22E,EAAoCf,EACxCa,EACArK,GAMF,IAJyCiD,GACvCsH,GAGqC,CACrC,MAAMC,EAA+BtzE,GAAA,OACnCqzE,QADmC,IACnCA,OADmC,EACnCA,EAAmC5zE,MAGjC6zE,GACFxL,GAAS1yB,IAAS,IACbA,EACHv7B,cAAey5D,EACfx5D,YAAaw5D,MAKnBzL,EAA8B,OAACwL,QAAD,IAACA,OAAD,EAACA,EAAmC5zE,OA6DlEoxE,sBACAC,sBArI6BlG,IAC7BvC,EAAqBuC,GACrB,MACMoB,EADkB+E,EAAuBnG,GACTpD,GAEtC,IAAKwE,EAActvE,OAAQ,OAE3B,MAAM81E,EAAqBF,EAAsBtG,EAAenD,GAC1D3wD,EAAG,OAAGu1D,QAAH,IAAGA,OAAH,EAAGA,EAAcl+D,MAAK0yC,GAAaA,EAAU32C,KAAOlL,OAAM,OAACkuE,QAAD,IAACA,OAAD,EAACA,EAAWhjE,MAE/E,IAAK4M,EAAK,OAEV,MAAMi8D,EAAUj8D,EAAI7B,QAAQm+B,SAASjlC,MACnC48D,GAAgBA,EAAa1sE,QAAb,OAAsB+yE,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAoB/yE,QAGtDqqD,EAAsBiiB,GAC1BnB,EACA,aAF0B,OAG1BuJ,QAH0B,IAG1BA,OAH0B,EAG1BA,EAASvI,SAGL7hB,EAAuBgiB,GAC3BnB,EACA,cAF2B,OAG3BuJ,QAH2B,IAG3BA,OAH2B,EAG3BA,EAASvI,SAEX2C,GAAan5B,IAAc,IAAD,EAQxB,MAPgB,IACXA,EACH0U,oBAAmB,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAqBvsC,UAC1CwsC,qBAAoB,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAsBxsC,UAC5C62D,uBAAsB,iBAAED,QAAF,IAAEA,OAAF,EAAEA,EAAS3iB,0BAAX,aAAiC5mD,SCvSzDypE,CAAgB,CAAE5G,eAAczzD,OAAMstD,yBAAwBgH,YAAWC,iBAE7El5D,sBAAU,MACJs5D,IAAkBz8D,EAAKxV,QACvBuzE,GAAqBzI,GAAkB9qE,SACzCkxE,GAAmB,GACnBE,GAAoB,MAErB,CAACmC,GAAsB/9D,EAAMy8D,GAAenH,IAE/CnyD,sBAAU,KACJs5D,MACAZ,GAAoBF,IAAqBF,IAC3C3c,aAAawd,EAAeh8B,SAE1Bu7B,GACAF,GAAoBF,GACtB/yE,IAAaL,MAAM,CACjB4zC,SAAU,GACV1zC,QAASK,EAAE,yCAGd,CAAC6yE,EAAiBE,EAAkBc,GAAe7zE,EAAGizE,IAEzD,MAAMuG,GAAuB,UAC3B7nE,oBACE,IACE66D,EAAsB,OAClBttD,QADkB,IAClBA,OADkB,EAClBA,EAAM3e,KAAI8xC,GAAOA,EAAI7hC,GAAGM,aACxB6hE,EAAapyE,KAAI6c,GAAOA,EAAI5M,GAAGM,cACrC,CAAC6hE,EAAczzD,EAAMstD,WANI,QAOtB,GASDiN,GAAiC,CAACtpD,EAAiBupD,KACvDxoE,EAAM,CACJif,QACAtR,UACA81B,YACA5gC,kBACA+M,oBACA44D,iBAGKA,EACHnE,GAAsCplD,GAlBHA,KAClCglD,GAAqBhlD,GAAOvuB,QAC/B2rE,EAAqB,OAEvBV,EAAoB18C,IAehBwpD,CAAgCxpD,IAGtCxV,MACE,KACMvD,EAAKxV,QACPsP,EAAM,CACJif,MAAOu8C,EACP7tD,UACA81B,YACA5gC,kBACA+M,oBACA44D,cAAc,MAGpB,CAACtiE,EAAMyH,IACP,CAACjE,EAAUC,KACT,MAAMC,EAAW,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAW,GACzBG,EAAW,OAAGF,QAAH,IAAGA,OAAH,EAAGA,EAAW,GAK/B,OAFEG,kBAAO,OAACF,QAAD,IAACA,OAAD,EAACA,EAAalZ,OAAd,OAAsBmZ,QAAtB,IAAsBA,OAAtB,EAAsBA,EAAanZ,SAAWoZ,kBAAQJ,EAAS,GAAIC,EAAS,OAMzF,MAAM++D,GAA6B,CAACF,EAAuB/0E,KACrDA,GACF2uE,EAAwB,CACtB4D,aAAcvyE,EACdk1E,2BAA4B/0E,MAAQg1E,KAAKh1E,IAAMH,IAC/C+vC,QACEi+B,EAAa/wE,OA/OO,EA+O0B,kBAAoB+wE,EAAa,GAAGliE,KACpF0f,MAAOupD,EAAe/M,EAA0BD,EAChD7tD,UACA81B,YACA5gC,kBACA+M,oBACA44D,iBAIAlN,EACKa,EAA2B1oE,GAG7B+0E,EAAe3M,EAA+BpoE,GAAQioE,EAAwBjoE,IAgBjFo1E,GAAmBhhE,wBAAaorC,IACpC,GA9Q0B,IA8QtBA,EAAQviD,OAIV,OAHAgxE,EAAgBzuB,QAChBgvB,EAAkBhvB,EAAQ,GAAGz9B,KAAKlW,IAKpCoiE,EAAgBzuB,KACf,IAEG61B,GAAsBjhE,wBAC1B,CAACsE,EAAmByK,KAClB,MAAMmyD,EAAoBnyD,EAAsBlf,GAAQmf,gBAAajY,EAC/D+uC,EAAYxhC,EAAUA,EAAQ7M,GAAKypE,EACnC3F,EAAerD,GAAiC75D,EAAMi7D,EAAgBxzB,GAE5E+zB,EAAgB0B,GAChBlB,EAAqBv0B,KAEvB,CAACznC,EAAMi7D,IAGH6H,GAAcvoE,oBAClB,IAAMs/D,GAAiC75D,EAAMi7D,EAAgBC,IAC7D,CAACl7D,EAAMi7D,EAAgBC,IAazB,MAAO,CACLO,kBACAsC,wBACAlI,QACAD,SAdyBE,IACrBV,EACFW,EAAYD,GAGdF,EAASE,IAUTa,qBAAsBvB,EAAyByB,EAA0BF,EACzEnB,wBAA0BjoE,GAAkBi1E,IAA2B,EAAOj1E,GAC9EqpE,8BACAjB,+BAAiCpoE,GAAkBi1E,IAA2B,EAAMj1E,GACpFgoE,0BACAG,2BAA6BrqD,GAC3Bg3D,GAA+Bh3D,GAAW,GAC5CrL,OACAy8D,iBACAW,WACA7I,gBACA8I,uBACA9B,eACAC,kBACAwC,yBACA1I,mBACAG,oBAAsBpqD,GAAwBg3D,GAA+Bh3D,GAAW,GACxFwyD,8CACAC,kCACAI,qBACAkE,2BACAnE,4BACAG,oBACAC,oBACAC,wBACArD,iBACA8H,iBAlFwBzzD,IAExB,GADA0sD,OAAqBtjE,IAChB4W,EAGH,OAFAksD,EAAgBx7D,QAChB+7D,OAAkBrjE,GAGpB,MAAMwkE,EAAel9D,EAAKjO,QAAOiU,GAAOA,EAAIsJ,KAAKlW,MAAT,OAAgBkW,QAAhB,IAAgBA,OAAhB,EAAgBA,EAAMlW,MAE9DoiE,EAAgB0B,GAChBnB,EAAiB,OAACzsD,QAAD,IAACA,OAAD,EAACA,EAAMlW,KAyExBupE,oBACAK,cAAexG,EAAuBjB,EAAa,GAAGniE,QAAKV,EAC3DmjE,mBACAX,oBACA0H,uBACAE,eACA9G,uBACAD,oBACAj0D,OACAg6B,eACAy8B,gBACAC,sBACAzI,cACAG,oBACAC,uBACAC,2BACAqI,8BACAC,wCACAC,uBACAvC,YACAC,eACAuC,yBACAqE,wBAxD8B,IAAMxM,GAAyB,GAyD7DF,sBGpYE2M,GAAmE,CACvEC,KAAM,eACN37B,KAAM,gBACN47B,OAAQ,gBACR,aAAc,gBACdtyC,MAAO,iBCHIuyC,GAA2B,KACtC,MAAM,gBAAEt6D,GAAoBD,KA4C5B,MAAO,CAAEw6D,yBA1CwB3hE,wBAC/B,EACEqE,MACAsvD,mBACAwK,eACA5J,wBAOA,MAAMqN,EAAkBv9D,EAAI7B,QAAQm+B,SAASjlC,MAAK9P,GAAQA,EAAKA,OAASuyE,IAElE0D,EAAc3J,GAClB3D,EACAZ,EAFkB,OAGlBiO,QAHkB,IAGlBA,OAHkB,EAGlBA,EAAiB7J,SAGnB,IAAK8J,EAAa,OAElB,MAAMx6D,GAAqB,OAAXw6D,QAAW,IAAXA,OAAA,EAAAA,EAAa1Y,aAAc0Y,EAAYtf,SAAMxrD,EAG7D,MAAO,CACLwrD,IAHUl7C,EAAUD,EAAgBC,QAAWtQ,EAI/CoyD,YAAa0Y,EAAY1Y,YACzBhH,YAAa0f,EAAY1f,YACzB2f,kBAAmBC,gBAAMF,EAAY1f,aACrCqT,UAAqB,OAAXqM,QAAW,IAAXA,OAAA,EAAAA,EAAa1f,eAAgB1yD,GAAYozD,UAGvD,CAACz7C,IASgC46D,sBANLhiE,wBAAY,CAACoD,EAAsB6+D,OAC1D7+D,IAAgB6+D,IAEdl2E,IAAMqX,GAAahS,SAAS6wE,IAClC,MCxBQC,GAAoC,EAC/C7jE,OACAolC,WACA0+B,UACAxP,UACA8I,UACAnwD,cAEA,MAAM,OAAEnV,GAAW6O,gBACb,wBAAE4uD,EAAF,4BAA2BqB,EAA3B,yBAAwDR,GAC5DM,GAAWI,iBACP,WAAEiN,GAAeC,eACjBC,EAAW7+B,EAAStJ,KAAO7wC,EAASM,MAAMC,QAC1CutE,EAAW3zB,EAAStJ,KAAO7wC,EAASM,MAAMD,MAAQ,SAAW,SAE7D,yBAAEg4E,EAAF,sBAA4BK,GAA0BN,KAG5DlgE,qBAAU2gE,EAAS,CAACC,IAEpB,MAAMG,EAAoBviE,wBACxB,CAACqE,EAAUzY,KACT,MAAMi2E,EAAcF,EAAyB,CAC3Ct9D,MACAsvD,iBAAkBC,EAClBuK,aAAcvyE,EACd2oE,kBAAmBE,IAGrB,MAAO,CACLe,SAAQ,OAAEqM,QAAF,IAAEA,OAAF,EAAEA,EAAarM,SACvBF,YAAW,OAAEuM,QAAF,IAAEA,OAAF,EAAEA,EAAatf,IAC1B0U,kBAAmB4K,EACnB3K,mBAAkB,OAAC2K,QAAD,IAACA,OAAD,EAACA,EAAaC,qBAGpC,CAACH,EAA0B/N,EAAyBa,IAGtD,OACE,eAAC,KAAD,CACE7qD,MAAO,CACLW,MAAO,OACPnrB,OAAQ,OACR+sE,SAAU,WACVL,IAAK,EACLlrE,OAAQ,EACRorE,KAAM,GAERlnB,SAAUx7C,EAAWQ,iBACrB2N,GAAG,aACH+qE,iBAAkB,IAAK/+B,GACvBn4B,QAASA,EAZX,SAcG2pD,GACC52D,EAAK7W,KAAI6c,IAAQ,IAAD,MACd,MAAM,SAAEmxD,EAAF,YAAYF,EAAZ,iBAAyB2B,EAAzB,iBAA2CC,GAAqBqL,EACpEl+D,EACA4wD,GAEIwN,EAAiBT,EAAqB,UAC1C39D,EAAI7B,QAAQY,mBAD8B,aACfrM,EAC3Bk+D,IAEI,SAAEvmE,EAAF,UAAYD,GAAcf,GAA4B2W,EAAIzX,KAAKlF,aAC/DyuD,EAAW,UACd9xC,EAAI7B,QAAQ2zC,aAAessB,GAAkBxL,SAD/B,SAEXyL,EACJJ,IAAa9M,GAAYyB,GAAoBC,GAAoB/gB,GAE7DzH,EAAG,OAAG+sB,QAAH,IAAGA,GAAH,UAAGA,EAAS//D,MAAKmgE,GAAUA,EAAOpkE,KAAO4M,EAAI5M,YAA7C,aAAG,EAA+Ci3C,IAErDi0B,EAASj0B,EAAMk0B,YAAgBl0B,QAAO33C,EAE5C,OACE,eAAC,KAAMs+B,SAAP,UACE,uCACG+sC,GACC,eAAC/M,GAAD,CACEC,YAAaA,EACbt3C,MAAO3Z,EAAI5M,GAAGM,WACdnL,KAAMqB,YAAQoW,EAAIzX,KAAKlF,aACvB6tE,OAAQ6M,EACR5M,SAAUA,IAGbnyE,EAAOO,qBAAuB0xE,GAC7B,eAAC,KAAD,CACEhuE,KAAK,QACLmQ,GAAK,SAAQ4M,EAAI5M,GAAGM,aACpBwqD,IAAK+S,EACL5tE,YAAagG,GAAoBC,aAAK0W,EAAIzX,OAJ5C,SAME,eAAC,KAAD,CACE0pE,SAAUjyD,EAAI5M,GAAGM,WACjBzQ,KAAK,SACLmQ,GAAK,SAAQ4M,EAAI5M,GAAGM,aACpBmkC,MAAO,OAIZy2B,GAAWgQ,GACV,eAAC,KAAD,CAEEr7E,KAAK,UACLmQ,GAAK,OAAM4M,EAAI5M,GAAGM,aAClBwB,KAAMopE,EAJR,SAME,eAAC,KAAD,CACErM,SAAUjyD,EAAI5M,GAAGM,WACjBN,GAAK,mBAAkB4M,EAAI5M,KAC3BnQ,KAAK,OACL40C,MAAO,CACL,aAAc/lC,EAAOjV,MACrB,aAAc,QAXZ,eAAcmjB,EAAI5M,GAAGM,cAgB9B2qE,GACC,eAAC1L,GAAD,CACEtoE,SAAUA,EACVD,UAAWA,EACXwoE,iBAAkBA,EAClBzB,SAAUA,EACV0B,iBAAkBA,EAClB/gB,YAAaA,EACbwd,iBAAkBC,EAClBnmE,KAAM2pE,QArDO/yD,EAAI5M,UCrGxB8d,GAAUhM,aAAOC,KAAK;;;EAKtBq5D,GAASt5D,KAAOkL,GAAI;;;sBAGX,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAGnDoyC,GAAU/rB,aAAOmM,KAAK;;;;;;WAMxB,EAAGxf,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAOxC4/E,GAAev5D,aAAO+rB,GAA4B;;qBAE1C,EAAGprB,aAAH,OAAiBA,QAAjB,IAAiBA,IAAW;kBAC/B,EAAGhU,WAAa,aAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAE5DvD,GAAO4pB,KAAOkL,GAAI;sBACT,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;EAOtC6jF,GAAex5D,KAAOkL,GAAuB;gBAC1C,EAAGuuD,oBAAsB,2BAA0BA;;;;EAStDC,GAAS15D,KAAOkL,GAAiB;;;sBAGxB,EAAG5K,WAAYA;EAGxBq5D,GAAqB35D,aAAOmM,KAAK;;;;ECvDjCytD,GAAa,CACxB/sB,WAAY,CACVgtB,SAAU,UACVC,SAAU,UACVC,WAAY,UACZC,UAAW,UACXC,UAAW,WAEbl5C,YAAa,CACX84C,SAAU,UACVC,SAAU,UACVC,WAAY,UACZC,UAAW,UACXC,UAAW,UACXC,SAAU,UACVC,WAAY,WAEdC,MAAO,CACLP,SAAU,UACVC,SAAU,UACVC,WAAY,UACZC,UAAW,UACXC,UAAW,UACXC,SAAU,WAEZG,MAAO,CACLN,WAAY7jF,UAAOuD,IAAIlB,gBACvBuhF,SAAU5jF,UAAOuD,IAAIf,mBACrBmhF,SAAU3jF,UAAOuD,IAAInB,mBAEvB0/D,UAAW,CACT6hB,SAAU,UACVC,SAAU,UACVC,WAAY,UACZC,UAAW,UACXC,UAAW,YCfFK,GAAmC,EAAGlQ,mBAAkBt1D,WACnE,MAAM,EAAEpX,GAAMqf,YAAe,WAEvB,wBAAEw9D,EAAF,uBAA2BC,EAA3B,YAAmDC,GCSzB,GAAG3lE,OAAMs1D,uBAA+B,IAAD,gDACvE,MAAM,EAAE1sE,GAAMqf,YAAe,QACvB,OAAEnQ,GAAW6O,gBAEb,qBAAEgwD,EAAF,kBAAwBT,GAAsBQ,GAAWI,gBAEzD8O,EAAqBrrE,oBAAQ,IACCyF,EAAKm9D,OAAMn3D,IACtCA,EAAIC,SAEFD,EAAIC,QAAQgqD,2BAIpB,CAACjwD,IAEE6lE,EAAiClkE,wBACpCmkE,GAC0B,cAArBxQ,GAEGwQ,EAAY3zE,MAAK8nE,IAAiB,IAAD,QACtC,OACEA,EAAa1sE,OAASopE,IAAtB,UACAsD,EAAaP,eADb,iBACA,EAAuBpE,UADvB,aACA,EAA2C,GAAGxK,gBAC9C,UAACmP,EAAaP,eAAd,iBAAC,EAAuBpE,UAAxB,aAAC,EAA2C,GAAGyQ,oBAIrD,CAACpP,EAAsBrB,IAGnBmQ,EAA0BlrE,oBAC9B,IAAMyF,EAAK7N,MAAK6T,GAAO6/D,EAA+B7/D,EAAI7B,QAAQm+B,aAClE,CAACujC,EAAgC7lE,IAG7B+lE,EAAiBxrE,oBAAQ,KAC7B,MAAMqpE,EAAmB5jE,EAAK7W,KAC5B6c,IAAG,uBACDA,EAAI7B,QAAQm+B,SAASjlC,MAAK48D,GAAgBA,EAAa1sE,OAASopE,WAD/D,aACD,EACI+C,WAEFsM,EACJ36D,GAEOu4D,EAAiB3jC,QAAO,CAACgmC,EAA4BC,KAC1D,MAAMjM,EAAeJ,GAAoC3D,EAAmB7qD,EAAW66D,GAEvF,GAAIA,EAAM,CAAC,IAAD,EACR,KAAI,OAACjM,QAAD,IAACA,OAAD,EAACA,EAAcnP,aAAa,OAAOmb,EAEvC,UAAAhM,EAAa8L,sBAAb,SAA6Bz7E,SAASssB,IACpC,MAAMpL,EAAQoL,EAAMpL,MAAMxc,cAE1Bi3E,EAAaz6D,GAASy6D,EAAaz6D,GAE9By6D,EAAaz6D,IAAUoL,EAAMroB,KAE7B03E,EAAaz6D,GAASoL,EAAMroB,QAGrC,OAAO03E,IACN,IAEL,MAAO,CACLxmB,WAAYumB,EAAwB,cACpCxmB,YAAawmB,EAAwB,eACrCrW,cAAeqW,EAAwB,iBACvC5N,MAAO4N,EAAwB,YAEhC,CAAChmE,EAAM22D,EAAsBT,IAE1ByP,EAAgC,CACpClmB,WAAY,CACV,CACE0mB,cAAerB,GAAW/sB,WAAWgtB,SACrCxkE,KAAM,qCAAG3X,EAAE,4CACX2F,KAAI,UAAEw3E,EAAetmB,WAAWqlB,GAAW/sB,WAAWgtB,iBAAlD,QAA+D,GAErE,CACEoB,cAAerB,GAAW/sB,WAAWitB,SACrCz2E,KAAI,UAAEw3E,EAAetmB,WAAWqlB,GAAW/sB,WAAWitB,iBAAlD,QAA+D,EAEnEzkE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW/sB,WAAWktB,WACrC12E,KAAI,UAAEw3E,EAAetmB,WAAWqlB,GAAW/sB,WAAWktB,mBAAlD,QAAiE,EACrE1kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW/sB,WAAWmtB,UACrC32E,KAAI,UAAEw3E,EAAetmB,WAAWqlB,GAAW/sB,WAAWmtB,kBAAlD,QAAgE,EACpE3kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW/sB,WAAWotB,UACrC52E,KAAI,UAAEw3E,EAAetmB,WAAWqlB,GAAW/sB,WAAWotB,kBAAlD,QAAgE,EACpE5kE,KAAM,qCAAG3X,EAAE,+CAIf42D,YAAa,CACX,CACE2mB,cAAerB,GAAW74C,YAAY84C,SACtCx2E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAY84C,iBAApD,QAAiE,EACrExkE,KAAM,qCAAG3X,EAAE,8CAEb,CACEu9E,cAAerB,GAAW74C,YAAY+4C,SACtCz2E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAY+4C,iBAApD,QAAiE,EACrEzkE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW74C,YAAYg5C,WACtC12E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAYg5C,mBAApD,QAAmE,EACvE1kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW74C,YAAYi5C,UACtC32E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAYi5C,kBAApD,QAAkE,EACtE3kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW74C,YAAYk5C,UACtC52E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAYk5C,kBAApD,QAAkE,EACtE5kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW74C,YAAYm5C,SACtC72E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAYm5C,iBAApD,QAAiE,EACrE7kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW74C,YAAYo5C,WACtC92E,KAAI,UAAEw3E,EAAevmB,YAAYslB,GAAW74C,YAAYo5C,mBAApD,QAAmE,EACvE9kE,KAAM,qCAAG3X,EAAE,8CAGf+mE,cAAe,CACb,CACEwW,cAAeruE,EAAO5T,mBACtBqK,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAO5T,2BAAtC,QAA6D,EACjEqc,KAAMqlE,EACJ,qCAAGh9E,EAAE,4CAEL,qCAAGA,EAAE,0CAGT,CACEu9E,cAAeruE,EAAO7T,wBACtBsK,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAO7T,gCAAtC,QAAkE,EACtEsc,KAAMqlE,EAAqB,qCAAGh9E,EAAE,6CAAiD,eAAC47E,GAAD,KAEnF,CACE2B,cAAeruE,EAAO9T,oBACtBuK,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAO9T,4BAAtC,QAA8D,EAClEuc,KAAMqlE,EAAqB,qCAAGh9E,EAAE,6CAAiD,eAAC47E,GAAD,KAEnF,CACE2B,cAAeruE,EAAO/T,oBACtBwK,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAO/T,4BAAtC,QAA8D,EAClEwc,KAAMqlE,EACJ,qCAAGh9E,EAAE,8CAEL,eAAC47E,GAAD,KAGJ,CACE2B,cAAeruE,EAAOhU,wBACtByK,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAOhU,gCAAtC,QAAkE,EACtEyc,KAAMqlE,EAAqB,qCAAGh9E,EAAE,4CAAgD,eAAC47E,GAAD,KAElF,CACE2B,cAAeruE,EAAOjU,mBACtB0K,KAAI,UAAEw3E,EAAepW,cAAc73D,EAAOjU,2BAAtC,QAA6D,EACjE0c,KAAMqlE,EACJ,qCAAGh9E,EAAE,4CAEL,qCAAGA,EAAE,yCAIXwvE,MAAO,CACL,CACE+N,cAAerB,GAAWQ,MAAMP,SAEhCxkE,KAAM,qCAAG3X,EAAE,yCACX2F,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAMP,iBAAxC,QAAqD,GAE3D,CACEoB,cAAerB,GAAWQ,MAAMN,SAEhCz2E,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAMN,iBAAxC,QAAqD,EACzDzkE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAWQ,MAAML,WAEhC12E,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAML,mBAAxC,QAAuD,EAC3D1kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAWQ,MAAMJ,UAEhC32E,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAMJ,kBAAxC,QAAsD,EAC1D3kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAWQ,MAAMH,UAEhC52E,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAMH,kBAAxC,QAAsD,EAC1D5kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAWQ,MAAMF,SAEhC72E,KAAI,UAAEw3E,EAAe3N,MAAM0M,GAAWQ,MAAMF,iBAAxC,QAAqD,EACzD7kE,KAAM,qCAAG3X,EAAE,qCAGfyvE,MAAO,CACL,CACE8N,cAAerB,GAAWS,MAAMN,WAChC1kE,KAAM,qCAAG3X,EAAE,uCAGb,CACEu9E,cAAerB,GAAWS,MAAMP,SAChCzkE,KAAM,qCAAG3X,EAAE,qCAEb,CACEu9E,cAAerB,GAAWS,MAAMR,SAChCxkE,KAAM,qCAAG3X,EAAE,sCAGf0vE,UAAW,CACT,CACE6N,cAAerB,GAAW5hB,UAAU6hB,SACpCxkE,KAAM,qCAAG3X,EAAE,qCAEb,CACEu9E,cAAerB,GAAW5hB,UAAU8hB,SACpCzkE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW5hB,UAAU+hB,WACpC1kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW5hB,UAAUgiB,UACpC3kE,KAAM,eAACikE,GAAD,KAER,CACE2B,cAAerB,GAAW5hB,UAAUiiB,UACpC5kE,KAAM,qCAAG3X,EAAE,sCAgBjB,MAAO,CAAE68E,0BAAyBC,uBAXH,IACJ,cAArBpQ,EAAyC,GAEpCqQ,EAAYrQ,GAChBnsE,KAAIi9E,GAAYA,EAASD,cAAczsE,aACvCvK,KAAK,KAM8Cw2E,gBDxReU,CAAmB,CAC1FrmE,OACAs1D,qBAGF,OACE,qCACwB,cAArBA,GACC,gBAAC,GAAD,WACwB,UAArBA,EACC,eAACuP,GAAD,UACGc,EAAYrQ,GAAkBnsE,KAAIi9E,GACjC,eAACxB,GAAD,CAAQp5D,MAAO46D,EAASD,oBAI5B,eAAC,KAAD,UACE,eAACzB,GAAD,CAAcC,eAAgBe,QAGlC,eAAC,KAAD,CAAKnoD,KAAM,GAAX,SACGooD,EAAYrQ,GAAkBnsE,KAAIi9E,GAE/B,eAAC,KAAMpvC,SAAP,UACE,gBAAC,GAAD,WACE,eAACytC,GAAD,CAAclnD,KAAMkoD,EAA0B,EAAI,EAAlD,UACIA,GACA,eAAC,GAAD,UACG78E,EAAE,qBAAsB,CAAEkiC,IAAK,CAAEv8B,KAAM63E,EAAS73E,YAIvD,gBAAC,GAAD,CAASgvB,KAAM,GAAf,cAAqB6oD,EAAS7lE,KAA9B,WATiB6lE,EAASD,0BEzCtCxsD,KAAMkD,IAAY37B,KAEpBI,GAAO4pB,KAAOkL,GAAI;sBACF,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;EAM7C84B,GAAOzO,aAAO2R,GAAS;WAClB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;;;EAW1ByjF,GAAwC,EACnDhR,mBACAwI,qCAEA,MAAM,EAAEl1E,GAAMqf,YAAe,OAEvBs+D,EAAkB,CACtBnO,MAAOxvE,EAAE,+BAAgC,CACvCqzD,KAAM6hB,EAA+B1F,QAEvCzI,cAAe/mE,EAAE,uCAAwC,CACvDqzD,KAAM6hB,EAA+BnO,gBAEvC0I,MAAOzvE,EAAE,+BAAgC,CACvCqzD,KAAM6hB,EAA+BzF,QAEvCC,UAAW1vE,EAAE,mCAAoC,CAC/CqzD,KAAM6hB,EAA+BxF,aAIzC,OACE,eAAC,GAAD,UACE,eAAC,GAAD,UAAOiO,EAAgBjR,SC9CrB37C,KAAMkD,IAAY37B,KAEbslF,GAAUt7D,aAAOC,KAAK;;;;;;;;;;;EAatBmwC,GAAYpwC,aAAOsB,KAAO;;;EAK1B4M,GAAQlO,KAAOmO,GAAI;;;;EAMnBM,GAAOzO,aAAO2R,GAAS;;WAEzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;;ECM1B4jF,GAA4B,EACvCzI,wBACArH,uBACA4E,eACAuC,iCACAxI,mBACAF,yBACAoJ,yBAEA,MAAM,EAAE51E,GAAMqf,YAAe,QACvB,OAAEnQ,EAAF,WAAUC,GAAe4O,eAEzB+/D,EAAoB,CACxBziB,MAAO,CACLC,IAAKC,GACLz6D,KAAMd,EAAE,oCAEVw7D,OAAQ,CAAEF,IAAKyiB,GAAiCj9E,KAAMd,EAAE,qCACxD07D,kBAAmB,CAAEJ,IAAKG,GAAY36D,KAAMd,EAAE,+CAC9C27D,8BAA+B,CAC7BL,IAAKyiB,GACLj9E,KAAMd,EAAE,yDAEV47D,OAAQ,CAAEN,IAAKG,GAAY36D,KAAMd,EAAE,qCACnCyyE,oBAAqB,CACnBnX,IAAKqP,GACL7pE,KAAMd,EAAE,iDAINg+E,EAA6D,CACjEC,IAAK,eAAC,GAAD,CAAer7D,MAAO1T,EAAOjV,QAClCikF,UAAW,eAAC9lD,GAAD,CAAUC,OAAQr4B,EAAE,0CAC/Bm+E,OAAQ,eAAC/lD,GAAD,CAAUC,OAAQr4B,EAAE,wCAC5Bo+E,UAAW,eAAChmD,GAAD,CAAUC,OAAQr4B,EAAE,0CAG3Bq+E,EACJtQ,IAAyBvB,GAA0B4I,EAAsBrH,GACrEuQ,EACJ9R,GAA0BuB,GAAwB6H,EAAmB7H,GACjE79C,EAAas8C,EAAyBoJ,EAAqBR,EAC3DmJ,EAAYF,GAAoBC,EAIhCE,EAFyB,CAAC,QAAS,gBAAiB,QAAS,aAG1CvpE,SAASy3D,MAC9BwI,EAA+BxI,KAChCF,EAEH,OACE,eAACoR,GAAD,UACE,eAAC,GAAD,CAAWrnD,UAAU,WAArB,SACE,uCACGgoD,GACC,eAAC,KAAD,CACE57D,MAAO,CACLysD,gBAAiBlgE,EAAOnT,IAAIE,UAAU,KACtCzC,QAAS,YACTuzC,UAAW,QACX0xC,UAAW,SACXvmF,aAAciX,EAAWlX,aAE3Bi4B,WAAYA,EAAW69C,GACvBz+C,WAAY3X,GACV,eAAC,KAAKyY,KAAN,CAAWzN,MAAO,CAAEnpB,QAAS,MAAOklF,aAAe,aAAYxvE,EAAOtW,SAAtE,SACE,gBAAC,KAAD,WACE,eAACs8B,GAAD,CACEp0B,KAAM6W,EAAKlH,KACXokB,kBAAmB,CACjBmsB,WAAY,SACZhnD,SAAU,OACVD,WAAY,OACZupB,MAAO,QACPV,MAAO,WAGVjL,EAAKwgE,mBAAqB6F,EAAarmE,EAAKwgE,mBAC7C,eAAC,GAAD,CAAO3yD,IAAKs4D,EAAkBnmE,EAAKujD,aAAaI,MAChD,eAAC,GAAD,UAAOwiB,EAAkBnmE,EAAKujD,aAAap6D,gBAMlD6xE,EAAa/wE,SAAW4qE,GACzB,eAACoQ,GAAD,CAAiBlQ,iBAAkBA,EAAkBt1D,KAAMu7D,IAE5D6L,GACC,eAACd,GAAD,CACEhR,iBAAkBA,EAClBwI,+BAAgCA,YCzHxCt/C,GAAYtT,KAAOkL,GAAI;;;;EAMvBze,GAAauT,aAAOy5C,KAAgB;;;;aAI7B,EAAG9sD,WAAYA,EAAMC,OAAOjV;;;;;;aAM5B,EAAGgV,WAAYA,EAAMC,OAAOjV;;;;;;;wBAOjB,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;qBAE7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;;EAexC0mF,GAA4B,EACvCzN,gBACA5yD,WACA2G,eACA+nD,WACAR,6BAEA,MAAM,OAAEt9D,GAAW6O,eAEb6gE,EAAqB7lE,wBACxBpU,GACCusE,EAAcz8D,MACZ48D,GACEvsE,IAAMusE,EAAa1sE,MAAMK,OAAO9B,KAAuByB,EAAKK,OAAO9B,MAEzE,CAACguE,IA2BG2N,EAAgBltE,oBACpB,IAAOsT,EAAengB,IAAMmgB,QAAgBnV,GAC5C,CAACmV,IAGH,OACE,eAAC,GAAD,UACE,eAAC,GAAD,CACEyR,eAAa,EACbooD,aAjCgBpnC,IACpB,MAAMqnC,EAAmBH,EAAmBlnC,GAE5C,OAAKqnC,IAAqBA,EAAiBzN,aAAapP,aA+BpDl9D,OAAQ9B,EACRkC,MAAOy5E,EACP54D,YAAY,EACZ+4D,WAAW,EACXziB,WAAY,eAAC,GAAD,IACZ0iB,YAAaC,GACJ,eAAC3pD,GAAD,UAAgB2pD,IAEzB5gE,SAAU3Z,IACR,IAAKA,EAAM,OACX,MAAM0sE,EAAeuN,EAAmBj6E,GAIxC,IAFmBssE,GAAsBI,KAErB7E,EAAwB,CAC1C,MAAMztD,EAAgB,IAAI3I,KAAKzR,EAAKQ,UAC9B6Z,EAAc,IAAI5I,KAAKzR,EAAKQ,UAClC6nE,EAAS,CAAEjuD,gBAAeC,cAAakuD,UAAU,IAEnD5uD,EAASxZ,IAAMH,GAAMK,OAAO9B,KAE9Bi8E,WAAY,CAACznC,EAASg6B,KACpB,GAAkB,SAAdA,EAAKrxE,KAAiB,OAAOqxE,EAAK0N,WACtC,MAAMz8D,EAjDehe,KAC3B,MAAMo6E,EAAmBH,EAAmBj6E,GAE5C,OAAKo6E,IAAoB,OAACA,QAAD,IAACA,OAAD,EAACA,EAAkBzN,aAAapP,aAGlD,CACLv/C,MAAO,CACLyf,OAAS,aAAYlzB,EAAOjV,QAC5B/B,aAAc,OACdk3E,gBAAiB,eAEnB2P,oBARO,CAAEp8D,MAAO,CAAEyf,OAAQ,IAAKlqC,aAAc,KAAO6mF,qBA6ClCM,CAAoB3nC,GAClC,OACE,sBAAK/yB,UAAU,wBAAwBhC,MAAOA,EAAMA,MAApD,SACGA,EAAMo8D,mBAAqBp8D,EAAMo8D,iBAAiBzN,aAAapP,YAC9D,eAAC,GAAD,IAEAxqB,EAAQ/yC,eC/HXixB,GAAYtT,aAAOC,KAAK;;;;;;;;;;;ECcxB9T,GAAS6T,aAAOiC,KAAwB;WAC1C,EAAGwxB,YAAaA,GAAU;;wBAEb,EAAG9mC,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;qBAE7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;;;;;;;aAUxC,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAO1C4kE,GAAcv+C,aAAOsB,KAAO;;GAIjCmN,KAAMkD,IAAY37B,KAEby4B,GAAOzO,aAAO2R,GAAS;WACzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;EAG1B87B,GAAgBzT,aAAOmM,KAAK;;;;;;EAoB5B6wD,GAA8C,EACzDrK,6CACA32D,WACAouD,mBACAz8C,WACA3M,QACAkyD,mBACAH,2BACAI,mBACAC,2BAEA,MAAM,OAAExmE,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,OAEvB6Q,EAAa,CACjB,CACEqvD,KAAMC,GACN1lF,MAAOkG,EAAE,wBACTuxE,SAAU,YACVvrD,UAAW0vD,GAGb,CACE6J,KAAME,GACN3lF,MAAOkG,EAAE,oBACTuxE,SAAU,QACVmO,WAAW,EACXC,gBAAiBnK,GAEnB,CACE+J,KAAMK,GACN9lF,MAAOkG,EAAE,oBACTuxE,SAAU,QACVvrD,UAAWyvD,GAEb,CACE8J,KAAMM,GACN/lF,MAAOkG,EAAE,yBACTuxE,SAAU,cAEZ,CACEgO,KAAMO,GACNhmF,MAAOkG,EAAE,0BACTuxE,SAAU,eAEZ,CACEgO,KAAMQ,GACNjmF,MAAOkG,EAAE,4BACTuxE,SAAU,gBACVvrD,UAAWqvD,EACX2K,YAAahgF,EAAE,kDAAmD,CAChE09B,QACEu3C,GACA,gDAGN,CACEsK,KAAMU,GACNnmF,MAAOkG,EAAE,wBACTuxE,SAAU,cAId,OACE,eAAC,GAAD,CACEjzD,SAAUA,EACVlZ,MAAOsnE,EACPz8C,SAAUA,EACVjL,eAAe,yBACf+wB,OAAQzyB,EACR48D,WAAY,IANd,SAQGhwD,EAAW3vB,KAAI+R,IACd,MAAM,KAAEitE,EAAF,MAAQzlF,EAAR,SAAeksB,EAAf,SAAyBurD,EAAzB,YAAmCyO,EAAnC,eAAgDL,GAAmBrtE,EAEzE,OACGqtE,GACC,eAAC,GAAOx6D,OAAR,CAA8B/f,MAAOmsE,EAAUvrD,SAAUA,EAAzD,SACGA,EACC,eAAC,KAAD,CAASlsB,MAAOkmF,EAAa5xD,UAAU,OAAO+xD,aAAc,CAAEzwD,SAAU,SAAxE,SACE,gBAAC,KAAD,CAAOlpB,KAAM,GAAb,UACE,eAAC,GAAD,UACE,eAAC+4E,EAAD,CAAM38D,MAAO1T,EAAOjV,UAEtB,eAAC,GAAD,UAAOH,SAIX,gBAAC,GAAD,CAAa0M,KAAM,GAAnB,UACE,eAAC,GAAD,UACE,eAAC+4E,EAAD,CAAM38D,MAAO1T,EAAOjV,UAEtB,eAAC,GAAD,UAAOH,QAfOy3E,SCtInB9iE,GAAS6T,aAAOiC,KAAwB;gBACrC,EAAG67D,uBAAwBA,GAAqB;WACrD,EAAGrqC,YAAaA,GAAU;;mBAElB,EAAGqqC,uBAAwBA,GAAqB;wBAC3C,EAAGnxE,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;qBAE7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;;;;;;;aAUxC,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAO1C4kE,GAAcv+C,aAAOsB,KAAO;;GAIjCmN,KAAMkD,IAAY37B,KAEby4B,GAAOzO,aAAO2R,GAAS;WACzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;;EAG1B87B,GAAgBzT,aAAOmM,KAAK;;;;;;EAQnC4xD,GAAgB/9D,aAAOC,KAAK;;;sBAGZ,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;mBAC7C,EAAGgT,WAAYA,EAAME,WAAWlX;;;;;;;;EAuBtCqoF,GAAmC,EAC9Ch9D,QACAhF,WACAgvD,oBACAzoD,wBACA07D,mBACAC,qBACAC,oBACAC,sBACAC,SACAC,iBAEA,MAAM,OAAE1xE,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,OAEvBwhE,EAAsB,CAC1B3C,UAAWl+E,EAAE,4BACbm+E,OAAQn+E,EAAE,0BACVo+E,UAAWp+E,EAAE,4BAGT8gF,EAAkC,CACtC5C,UAAWl+E,EAAE,wCACbm+E,OAAQn+E,EAAE,sCACVo+E,UAAWp+E,EAAE,wCAGTkwB,EAAa,CACjB,CACEqb,KAAM,eAAC,GAAD,CAAe3oB,MAAO1T,EAAOjV,QACnCH,MAAOkG,EAAE,uBACToF,MAAO,MACP27E,WAAW,GAEb,CACEx1C,KAAM,eAACnT,GAAD,CAAUC,OAAQr4B,EAAE,0CAC1BlG,MAAO+mF,EAAoB3C,UAC3B94E,MAAO,YACP27E,UAAWL,GAEb,CACEn1C,KAAM,eAACnT,GAAD,CAAUC,OAAQr4B,EAAE,wCAC1BlG,MAAO+mF,EAAoB1C,OAC3B/4E,MAAO,SACP27E,UAAWN,GAEb,CACEl1C,KAAM,eAACnT,GAAD,CAAUC,OAAQr4B,EAAE,yCAC1BlG,MAAO+mF,EAAoBzC,UAC3Bh5E,MAAO,YACP27E,UAAWP,IASf,OACE,uCACGD,GACC,eAACF,GAAD,CAAeh8D,QAAS,WAAMu8D,QAAN,IAAMA,OAAN,EAAMA,GAAatmC,IAAcA,IAAzD,SACyB,QAAtBgzB,EACC,eAAC,GAAD,IAEA,eAACl1C,GAAD,CAAUC,OAAQyoD,EAAgCxT,OAIxD,eAAC,GAAD,CACEhvD,SAjBgBlZ,IACpBkZ,EAASlZ,GACC,OAAVw7E,QAAU,IAAVA,MAAa,IAgBTx7E,MAAOkoE,EACPppD,KAAMq8D,EAAmBI,OAAS7wE,EAClCkV,eAAe,yBACf+wB,OAAQzyB,EACR88D,kBAAiB,OAAEG,QAAF,IAAEA,KACnBL,WAAY,IACZr7D,sBAAuBA,EARzB,SAUGqL,EAAW3vB,KAAI+R,IACd,MAAM,KAAEi5B,EAAF,MAAQzxC,EAAR,UAAeinF,EAAf,MAA0B37E,GAAUkN,EAE1C,OACEyuE,GACE,eAAC,GAAO57D,OAAR,CAA2B/f,MAAOA,EAAlC,SACE,gBAAC,GAAD,CAAaoB,KAAM,GAAnB,UACE,eAAC,GAAD,UAAgB+kC,IAChB,eAAC,GAAD,UAAOzxC,QAHSsL,YCvIrB47E,GAA2B,EACtC/L,6CACAgM,yBACAvU,mBACA8I,mBACAH,2BACAI,mBACAC,uBACAwL,6BACAlU,WACAmI,uBACApH,uBACAvB,yBACAmJ,eACAwL,0BACA7T,oBACAyI,yBAGE,eAAC,GAAD,UACE,gBAAC,KAAD,CAAOx/C,UAAU,WAAW/vB,KAAM,GAAlC,WACIgmE,GACA,uCACE,eAAC8S,GAAD,CACEh8D,MAAM,QACN2xD,2CACEA,EAEF32D,SAAU2iE,EACVvU,iBAAkBA,EAClB8I,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,IAExB,eAAC4K,GAAD,CACEh9D,MAAM,QACNhF,SAAU6iE,EACV7T,kBAAmBA,EACnBmT,kBAAmB1K,EAAoB+C,OACvC0H,mBAAoBzK,EAAoBiD,QACxC0H,oBAAqB3K,EAAoBgD,cAK/C,eAAC4F,GAAD,CACEzN,cACE1E,EAAyBmJ,EAAeR,EAAqBzI,GAE/DznD,aAAc8oD,EACdzvD,SAAU4iE,EACVlU,SAAUA,EACVR,uBAAwBA,SClDrB4U,GAA2B,EACtCjM,uBACAF,6CACAI,2BACAG,mBACAC,mBACAC,uBACAhJ,mBACAwU,6BACAlU,WACAe,uBACAkT,yBACA7L,wBACAzC,eACAuC,iCACA1I,yBACAmJ,eACAC,qBACAuL,0BACA7T,oBACAyI,yBAGE,uCACE,eAACiL,GAAD,CACE/L,2CAA4CA,EAC5CgM,uBAAwBA,EACxBvU,iBAAkBA,EAClB8I,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,EACtBwL,2BAA4BA,EAC5BlU,SAAUA,EACVmI,qBAAsBA,EACtBpH,qBAAsBA,EACtBvB,uBAAwBA,EACxBmJ,aAAcA,EACdwL,wBAAyBA,EACzB7T,kBAAmBA,EACnByI,oBAAqBA,IAEvB,eAAC8H,GAAD,CACEzI,sBAAuBA,EACvBrH,qBAAsBA,EACtB4E,aAAcA,EACduC,+BAAgCA,EAChCxI,iBAAkBA,EAClBF,uBAAwBA,EACxBoJ,mBAAoBA,OC1EtB1/C,GAAU5T,aAAO6T,KAAY;;iBAElB,EAAGlnB,WAAa,aAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAGlE25B,GAAYtT,KAAOkL,GAAI;;;EAKvBze,GAAauT,aAAOy5C,KAAgB;;;;;;;;aAQ7B,EAAG9sD,WAAYA,EAAMC,OAAOjV;;EAW5BonF,GAAsD,EACjEj+D,WACA8tD,gBACA5yD,WACA2G,eACA+nD,eAEA,MAAM,OAAE99D,GAAW6O,eAEb6gE,EAAqB7lE,wBACxBpU,GACCusE,EAAcz8D,MACZ48D,GACEvsE,IAAMusE,EAAa1sE,MAAMK,OAAO9B,KAAuByB,EAAKK,OAAO9B,MAEzE,CAACguE,IA0BH,OACE,gBAAC,GAAD,WACG9tD,EACD,eAAC,GAAD,CAAS/iB,KAAK,aACd,eAAC,GAAD,CACEy+E,aA5BgBpnC,IACpB,MAAMqnC,EAAmBH,EAAmBlnC,GAE5C,OAAKqnC,IAAqBA,EAAiBzN,aAAapP,aA0BpDl9D,OAAQ9B,EACRkC,MAAO6f,EAAengB,IAAMmgB,QAAgBnV,EAC5CmW,YAAY,EACZF,YAAY,GACZkK,UAAU,EACV+uD,WAAW,EACXziB,WAAY,KACZ0iB,YAAaC,GACJ,eAAC3pD,GAAD,UAAgB2pD,IAEzB5gE,SAAU3Z,IACR,IAAKA,EAAM,OACX,MAAM0sE,EAAeuN,EAAmBj6E,GAIxC,IAFmBssE,GAAsBI,GAExB,CACf,MAAMtyD,EAAgB,IAAI3I,KAAKzR,EAAKQ,UAC9B6Z,EAAc,IAAI5I,KAAKzR,EAAKQ,UAClC6nE,EAAS,CAAEjuD,gBAAeC,cAAakuD,UAAU,IAEnD5uD,EAASxZ,IAAMH,GAAMK,OAAO9B,KAE9Bi8E,WAAYznC,IACV,MAAM/0B,EA7Cehe,KAC3B,MAAMo6E,EAAmBH,EAAmBj6E,GAE5C,OAAKo6E,IAAoB,OAACA,QAAD,IAACA,OAAD,EAACA,EAAkBzN,aAAapP,aAGlD,CACLv/C,MAAO,CACLyf,OAAS,aAAYlzB,EAAO5U,SAC5BpC,aAAc,OACdk3E,gBAAiB,eAEnB2P,oBARO,CAAEp8D,MAAO,CAAEyf,OAAQ,IAAKlqC,aAAc,KAAO6mF,qBAyClCM,CAAoB3nC,GAClC,OACE,sBAAK/yB,UAAU,wBAAwBhC,MAAOA,EAAMA,MAApD,SACGA,EAAMo8D,mBAAqBp8D,EAAMo8D,iBAAiBzN,aAAapP,YAC9D,eAAC,GAAD,IAEAxqB,EAAQ/yC,gBC7GX28E,GAA2Bh/D,aAAOC,KAAoC;;;;;mBAKhE,EAAGtT,WAAYA,EAAME,WAAWlX;gBACnC,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;UAChD,EAAGipE,cACTA,EAAY,2CAA6C;;ECehDqc,GAAkC,EAC7CpM,uBACAxI,0BACAqB,8BACAhB,WACAiI,6CACAuM,gCACAhM,mBACAC,mBACAJ,2BACAK,uBACAhJ,mBACAwU,6BACAnT,uBACAkT,yBACAQ,oCACAN,0BACA7T,oBACAoU,iCACAlU,2BACAqI,6BACAE,0BAEA,MAAM,eAAErI,EAAF,kBAAkBC,EAAlB,sBAAqCC,EAArC,yBAA4DC,GAChEC,GAAWI,gBACb,OACE,uCACE,eAACoT,GAAD,UACE,gBAACD,GAAD,CACEnQ,cAAe2E,EAA2BlJ,GAC1CruD,SAAUmjE,EACVx8D,aAAc+oD,EACdhB,SAAUA,EAJZ,UAME,eAACsS,GAAD,CACErK,2CAA4CA,EAC5C32D,SAAUkjE,EACV9U,iBAAkBC,EAClB18C,UAAU,EACVulD,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,EACtBpyD,MAAM,UAER,eAACg9D,GAAD,CACEhiE,SAAUojE,EACVpU,kBAAmBE,EACnBlqD,MAAM,MACNuB,uBAAuB,EACvB07D,kBAAgB,EAChBE,kBAAmB1K,EAAoBkD,cACvCuH,mBAAoBzK,EAAoBoD,eACxCuH,oBAAqB3K,EAAoBmD,gBACzCyH,OAAQ/S,EACRgT,WAAY/S,SAIlB,eAACyT,GAAD,CAA0Bpc,SAAS,QAAnC,SACE,gBAACmc,GAAD,CACEnQ,cAAeiE,EAAqBzI,GACpCpuD,SAAU4iE,EACVj8D,aAAc8oD,EACdf,SAAUA,EAJZ,UAME,eAACsS,GAAD,CACErK,2CAA4CA,EAC5C32D,SAAU2iE,EACVvU,iBAAkBA,EAClBz8C,UAAU,EACVulD,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,EACtBpyD,MAAM,UAER,eAACg9D,GAAD,CACEhiE,SAAU6iE,EACV7T,kBAAmBA,EACnBhqD,MAAM,MACNuB,uBAAuB,EACvB07D,kBAAgB,EAChBE,kBAAmB1K,EAAoB+C,OACvC0H,mBAAoBzK,EAAoBiD,QACxC0H,oBAAqB3K,EAAoBgD,SACzC4H,OAAQjT,EACRkT,WAAYjT,aCzEXgU,GAAkC,EAC7CxM,uBACAnH,8BACArB,0BACA6U,gCACAC,oCACArM,wBACA6L,yBACAhM,6CACAC,iCACAG,2BACAG,mBACAC,mBACAC,uBACAhJ,mBACAwU,6BACAlU,WACAe,uBACA4E,eACAiP,wBACApV,yBACAmJ,eACAC,qBACAuL,0BACA7T,oBACAoU,iCACAlU,2BACAqI,6BACAE,yBAGE,qCACG6L,EACC,eAACL,GAAD,CACEpM,qBAAsBA,EACtBxI,wBAAyBA,EACzBqB,4BAA6BA,EAC7BiH,2CAA4CA,EAC5CO,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,EACtBhJ,iBAAkBA,EAClBqB,qBAAsBA,EACtByT,8BAA+BA,EAC/BP,uBAAwBA,EACxBC,2BAA4BA,EAC5BO,kCAAmCA,EACnCzU,SAAUA,EACVmU,wBAAyBA,EACzB7T,kBAAmBA,EACnBoU,+BAAgCA,EAChClU,yBAA0BA,EAC1BqI,2BAA4BA,EAC5BE,oBAAqBA,IAGvB,eAACqL,GAAD,CACEnM,2CAA4CA,EAC5CvI,iBAAkBA,EAClB8I,iBAAkBA,EAClBH,yBAA0BA,EAC1BI,iBAAkBA,EAClBC,qBAAsBA,EACtBP,qBAAsBA,EACtBpH,qBAAsBA,EACtBqH,sBAAuBA,EACvBzC,aAAcA,EACduC,+BAAgCA,EAChC+L,uBAAwBA,EACxBC,2BAA4BA,EAC5BlU,SAAUA,EACVR,uBAAwBA,EACxBmJ,aAAcA,EACdC,mBAAoBA,EACpBuL,wBAAyBA,EACzB7T,kBAAmBA,EACnByI,oBAAqBA,MC7GzBngD,GAAYtT,aAAOC,KAAK;;EAIxBkR,GAASnR,KAAOkL,GAAI;;;;sBAIJ,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAG1D4mE,GAAOvgD,aAAOsB,MAAOC,MAAM,CAC/B0S,UAAW,WACX/vB,KAAM,GACL;;;EAKGgkC,GAAeloB,aAAOC,KAAK;;sBAEX,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;GAIxD80B,KAAMkD,IAAY37B,KAEpBy4B,GAAOzO,aAAO2R,GAAS;;;;;WAKlB,EAAGhlB,WAAYA,EAAMC,OAAOjV;EAGjCy0D,GAAWpsC,aAAOyO,GAAM;;mBAEX,EAAG9hB,WAAYA,EAAME,WAAWlX;;sBAE7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAG1D85B,GAAgBzT,KAAOkL,GAAI;;;;;;;gBAOjB,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAO7C6yD,GAA2B,EAAGx8C,WAAY,IAAD,IACpD,MAAM,OAAEpD,GAAW6O,eACb5F,EAAWC,gBACTpY,EAAGg3B,GAAY3X,YAAe,WAChC,EAAErf,GAAMqf,YAAe,OAEvB6vC,IAAgB58C,EAAK48C,YACrBqf,IAAaj8D,EAAKi8D,SAClByB,IAAqB19D,EAAK09D,iBAC1BC,IAAqB39D,EAAK29D,iBAE1B4R,EAAkB,CACtB7R,iBAAkBhwE,EAAE,6BACpBiwE,iBAAkBjwE,EAAE,6BACpBuuE,SAAUvuE,EAAE,qBACZkvD,YAAal4B,EAAQ,mBAKjBk5C,EAAyC,CAC7ChhB,cACA8gB,mBACAC,mBACA1B,YAGIuT,EAAOrsE,OAAOwxB,KAAKipC,GAA4Bz7D,MAAK8C,GAAO24D,EAAW34D,KAK5E,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,eAACqd,GAAD,CACE96B,MAAOwY,EAAK7B,KACZokB,kBAAmB,CACjBmsB,WAAY,IACZhnD,SAAU,OACV4oB,MAAO1T,EAAOjV,MACdgU,WAAY,QACZqV,MAAO,YAIb,gBAAC,GAAD,WACE,gBAAC,GAAD,CAAcX,MAAO,CAAEo/D,eAAgB,gBAAiB/wB,WAAY,UAApE,UACE,gBAAC,GAAD,YAnB2BqC,EAoBE/gD,EAAKgnE,uBApBmBxxB,mBAASuL,GAAQA,EAAO,KAoBlB,IACxDr8B,EAAQ,gDAEX,eAAC,GAAD,CAAe3S,QAAS,IAAMlM,EAAU,mBAAkB7F,EAAK9B,MAA/D,SACE,eAAC,GAAD,CAAeoS,MAAO1T,EAAOjV,MAAOqpB,MAAO,GAAInrB,OAAQ,UAG3D,gBAAC,GAAD,WACE,eAAC,KAAD,CAAKw8B,KAAM,GAAX,SACE,eAAC,GAAD,UAAO30B,EAAE,qBAEX,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACO,GAAD,CACEp0B,KAAMk2B,EAAQ,qBAAsB,CAAEkL,IAAK,CAAEv8B,KAAM2M,EAAK9L,KAAMZ,aAAc,KAC5EivB,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPtpB,SAAU,OACV4oB,MAAO1T,EAAOnT,IAAIE,UAAU,KAC5BgS,WAAY,gBAKpB,gBAAC,GAAD,WACE,eAAC,KAAD,CAAK0mB,KAAM,GAAX,SACE,eAAC,GAAD,UAAO30B,EAAE,qBAEX,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACO,GAAD,CACEp0B,KAAI,UAAEwR,EAAKoU,YAAP,QAAe,IACnBmO,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPtpB,SAAU,OACV4oB,MAAO1T,EAAOnT,IAAIE,UAAU,KAC5BgS,WAAY,gBAKpB,gBAAC,GAAD,WACE,eAAC,KAAD,CAAK0mB,KAAM,GAAX,SACE,eAAC,GAAD,UAAO30B,EAAE,wBAEX,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACO,GAAD,CACEp0B,KAAI,UAAEwR,EAAK+K,eAAP,QAAkB,IACtBwX,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPtpB,SAAU,OACV4oB,MAAO1T,EAAOnT,IAAIE,UAAU,KAC5BgS,WAAY,gBAKnB6zE,EACC,eAACrsD,GAAD,CAAS30B,MA9EMkhF,EA8EcF,EA9EmBD,EAAgBG,MAgFhE,gBAAC,KAAD,CAAOzrD,UAAU,WAAW/vB,KAAM,EAAlC,UACE,eAAC,GAAD,UAAOxG,EAAE,+BACT,gBAAC,KAAD,CAAK63B,OAAQ,EAAb,UACE,eAAC,KAAD,UACE,eAACkL,GAAD,CACE1iC,KAAMoI,GAAW0mD,WACjBnsB,gBAAiB1wB,EAAK08C,wBAG1B,eAAC,KAAD,UACE,eAACjsB,GAAD,CACE1iC,KAAMoI,GAAW46B,YACjBL,gBAAiB1wB,EAAK28C,qCA5Ff+yB,MADY3uB,GC7F/Bz9B,GAAYtT,KAAOkL,GAAI;mBACV,EAAGve,WAAYA,EAAME,WAAWlX;sBAC7B,EAAGgX,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAI1D85B,GAAgBzT,KAAOkL,GAAI;;;EAK3By0D,GAAY3/D,aAAO4/D,GAAe;;EAQ3BC,GAAgD,EAAG/+D,WAAUg/D,aAEtE,gBAAC,GAAD,WACGA,GACC,eAAC,GAAD,UACE,eAACH,GAAD,CAAW59D,QAAS+9D,MAGvBh/D,KC7BMwS,GAAYtT,aAAOC,KAAK;;EAIxBkR,GAASnR,KAAOkL,GAAI;;;;sBAIX,EAAGve,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;EAGnD4mE,GAAOvgD,aAAOsB,MAAOC,MAAM,CACtC0S,UAAW,WACX/vB,KAAM,GACL;;;EAKUgkC,GAAeloB,aAAOC,KAAK;;sBAElB,EAAGtT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;GAIxD80B,KAAMkD,IAAY37B,KAEby4B,GAAOzO,aAAO2R,GAAS;;;;;WAKzB,EAAGhlB,WAAYA,EAAMC,OAAOjV;ECrB1B86D,GAA2B,EAAGziD,WACzC,MAAM,OAAEpD,GAAW6O,gBACb,EAAE/d,GAAMqf,YAAe,QACvB,sBAAEC,GAA0BF,KAE5B81C,EAAW5iD,EAAK3M,KAAO2Z,EAAsBhN,EAAK3M,WAAQmK,EAC1DqlD,EAAa7iD,EAAK0iD,OAAS11C,EAAsBhN,EAAK0iD,aAAUllD,EAEhEy+D,IAAaj8D,EAAKi8D,SAClByB,IAAqB19D,EAAK09D,iBAE1B6R,EAAkB,CACtB7R,iBAAkBhwE,EAAE,6BACpBuuE,SAAUvuE,EAAE,sBAKRkwE,EAAyC,CAC7CF,mBACAzB,YAGIuT,EAAOrsE,OAAOwxB,KAAKipC,GAA4Bz7D,MAAK8C,GAAO24D,EAAW34D,KAI5E,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,UACE,eAACqd,GAAD,CACE96B,MAAQ,GAAEkG,EAAE,qBAAqBsS,EAAK7B,OACtCokB,kBAAmB,CACjBmsB,WAAY,IACZhnD,SAAU,OACV4oB,MAAO1T,EAAOjV,MACdgU,WAAY,QACZqV,MAAO,YAIb,gBAAC,GAAD,WACE,gBAAC,GAAD,WACE,eAAC,KAAD,CAAKqR,KAAM,GAAX,SACE,eAAC,GAAD,UAAO30B,EAAE,qBAEX,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACO,GAAD,CACEp0B,KAAMo0D,EAAY,GAAEA,EAAS9vD,UAAU8vD,EAAS31C,WAAa,IAC7DsV,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPtpB,SAAU,OACV4oB,MAAO1T,EAAOnT,IAAIE,UAAU,KAC5BgS,WAAY,gBAMpB,gBAAC,GAAD,WACE,eAAC,KAAD,CAAK0mB,KAAM,GAAX,SACE,eAAC,GAAD,UAAO30B,EAAE,uBAEX,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACO,GAAD,CACEp0B,KAAMq0D,EAAc,GAAEA,EAAW/vD,UAAU+vD,EAAW51C,WAAa,IACnEsV,kBAAmB,CACjBmsB,WAAY,IACZ19B,MAAO,OACPtpB,SAAU,OACV4oB,MAAO1T,EAAOnT,IAAIE,UAAU,KAC5BgS,WAAY,gBAMpB,eAAC,GAAD,UACE,eAAC,KAAD,CAAK0mB,KAAM,GAAX,SACE,eAAC,GAAD,UACGriB,EAAK2iD,WAAaj1D,EAAE,sBAAuB,CAAEoF,MAAOkN,EAAK2iD,aAAgB,UAI/E6sB,GACC,eAAC,GAAD,UACE,eAAC,KAAD,CAAKntD,KAAM,GAAX,SACE,eAACc,GAAD,CAAS30B,MA/DEkhF,EA+DkBF,EA/DeD,EAAgBG,gBAAjDA,OC3BZK,GAAoC,EAC/C/vE,OACA7R,cACA+rE,6BAEI,OAAC/rE,QAAD,IAACA,OAAD,EAACA,EAAagH,WAAahH,EAAY+G,UAGzC,eAAC,KAAD,CAAQC,SAAUhH,EAAYgH,SAAUD,UAAW/G,EAAY+G,UAAWk8B,WAAW,EAArF,SACE,eAACy+C,GAAD,UACG3V,EAAyB,eAAC,GAAD,CAASl6D,KAAMA,IAAW,eAAC,GAAD,CAASA,KAAMA,QALZ,KCGlDsiC,GAA2B,EACtCC,aACAxe,WACAye,WACAwtC,kBACAx4D,OACAvoB,WACA8qE,oBAEA,MAAMt3B,EC3BuB,MAC7B,MAAM,OAAE7lC,GAAW6O,eA0EnB,MAxEe,CAGb,CACEvN,GAAI,eACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,cAAe,CAAC,KAAM,OAAQ,WAC9D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAe,GAAE/lC,EAAOjV,QACxB,aAAc,IAIlB,CACEuW,GAAI,uBACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D8rC,MAAO,CACL,eAAgB,IAIpB,CACEzkC,GAAI,2BACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,aACzD8rC,MAAO,CACL,gBAAiB,EACjB,eAAgB,YAKpB,CACEzkC,GAAI,gCACJnQ,KAAM,OACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,QAAS,WAAY,CAAC,KAAM,OAAQ,WAC3D6rC,OAAQ,CACN,WAAY,QACZ,YAAa,SAEfC,MAAO,CACL,aAAe,GAAE/lC,EAAOjV,QACxB,aAAc,IAIlB,CACEuW,GAAI,8CACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,OAAQ,UAAW,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,WACnF8rC,MAAO,CACL,gBAAiB,EACjB,eAAgB,SAIpB,CACEzkC,GAAI,yCACJnQ,KAAM,SACN8I,OAAQ,CAAC,MAAO,CAAC,KAAM,OAAQ,UAAW,CAAC,KAAM,QAAS,SAAU,CAAC,KAAM,OAAQ,WACnF8rC,MAAO,CACL,gBAAiB,EACjB,eAAiB,GAAE/lC,EAAO/U,cD3CjB+6C,GAETxD,EAAoB34B,wBACxB,EAAGxX,SAAUghF,MACuB,KAAb,OAAjBA,QAAiB,IAAjBA,OAAA,EAAAA,EAAmB3gF,SAAgB2gF,EAAkB,GAAG/xE,IAC1D8xE,EAAgBC,EAAkB,GAAG/xE,MAGzC,CAAC8xE,IAgBGntC,EAbUC,cACd,EAAG70C,UACDA,EAAI80C,GAAG,cAAehf,GACtB91B,EAAI80C,GAAG,cAAeP,GACtBv0C,EAAI80C,GAAG,uBAAwB3D,GACxB,IAAI8D,KAAW,IAAKX,EAAYE,cAEzC,EAAGx0C,UACDA,EAAIk1C,IAAI,cAAepf,GACvB91B,EAAIk1C,IAAI,cAAeX,GACvBv0C,EAAIk1C,IAAI,uBAAwB/D,MAsCpC,OAjCAgE,MAAqB,KAGG,WAAlB22B,GACFl3B,EAAYS,WAAW,iBAGH,SAAlBy2B,IAIA,OAAC9qE,QAAD,IAACA,OAAD,EAACA,EAAUK,QAIfuzC,EAAYQ,IAAI,CACdt1C,KAAM,oBACNkB,SAAQ,OAAEA,QAAF,IAAEA,IAAY,KATtB4zC,EAAYqtC,cAWb,CAACjhF,EAAU8qE,IAEd9xD,sBAAU,KAOJ46B,EAAYS,WAAW9rB,KAG1B,CAACqrB,EAAarrB,IAEV,ME1BI24D,GAA8B,EACzCC,eACAlP,YACAgG,0BACAoI,wBACAplC,WACAmmC,gBACAC,qBACAC,qBACAC,WACAllC,SACAmlC,wBACAC,wBACAC,wBACAC,qBACA7W,gBACA0B,uBACA4E,eACA6B,UACA9H,mBACAyW,aACAC,WACA1X,UACA2X,YACAC,mBACApkE,OACAstD,yBACAc,wBAEA,MAAM,OAAEp+D,GAAW6O,gBACb,IAAExd,GAAQ+wC,gBACV,yBAAEopC,EAAF,sBAA4BK,GAA0BN,MACtD,gBAAEt6D,GAAoBD,KACtBm7D,EAAW7+B,EAAStJ,KAAO7wC,EAASM,MAAMC,QAC1CutE,EAAW3zB,EAAStJ,KAAO7wC,EAASM,MAAMD,MAAQ,SAAW,QAE7D44E,EAAoBviE,wBACxB,CAACqE,EAAUzY,KACT,MAAMi2E,EAAcF,EAAyB,CAC3Ct9D,MACAsvD,mBACAwK,aAAcvyE,EACd2oE,sBAGF,MAAO,CACLiB,SAAQ,OAAEqM,QAAF,IAAEA,OAAF,EAAEA,EAAarM,SACvBF,YAAW,OAAEuM,QAAF,IAAEA,OAAF,EAAEA,EAAatf,IAC1B0U,kBAAmB4K,EACnB3K,mBAAkB,OAAC2K,QAAD,IAACA,OAAD,EAACA,EAAaC,qBAGpC,CAACH,EAA0BhO,EAAkBY,IAGzCiW,EAAoBxqE,wBACxB,CAACs5B,EAAU6kC,KAA2B,IAAD,QACnC,MAAMsM,EAAkBnxC,EAAIqH,SAASjlC,MAAK9P,GAAQA,EAAKA,OAASuyE,IAC1DuM,GACW,OAAfD,QAAe,IAAfA,GAAA,UAAAA,EAAiB1S,QAAQ6F,oBAAzB,eAAuCzU,eAAvC,OACAshB,QADA,IACAA,GADA,UACAA,EAAiB1S,eADjB,iBACA,EAA0B6F,oBAD1B,aACA,EAAwCrb,KAEpCooB,EAAWD,EACbtjE,EAAgBqjE,EAAiB1S,QAAS6F,aAAcrb,UACxDxrD,EAEEorD,EAAW,OAAGsoB,QAAH,IAAGA,GAAH,UAAGA,EAAiB1S,QAAQ6F,oBAA5B,aAAG,EAAuCzb,YAI3D,MAAO,CACLwoB,WACAnV,SALerT,IAAgB1yD,GAAYozD,OAM3CoU,kBALwByT,GAAoB3I,gBAAM5f,MAQtD,CAAC/6C,IAGH,OACE,gBAAC,KAAD,CACEk9B,OAAQqlC,EACRp7B,oBAAqBksB,OAAY1jE,EAAY0pE,EAC7C37B,SAAUx7C,EAAWQ,qBACf++E,GAAyBplC,EAC/BhsC,GAAG,MACH6T,QAASs+D,EACTxyC,aAAc0yC,EACdzyC,aAAcwyC,EACdhlC,OAAqB,iBAAbklC,EAA8B,YAAcllC,EACpDj7B,MAAO,CACLW,MAAO,OACPnrB,OAAQ,OACR+sE,SAAU,WACVL,IAAK,EACLlrE,OAAQ,EACRorE,KAAM,EACN4e,OAAQ,GAjBZ,UAoBE,eAAC,GAAD,CACE9uC,WAAY,CAAEoJ,wBAAwB,GACtC5nB,SAAU0sD,EACVjuC,SAAUkuC,EACVV,gBAAiBW,EACjB1hF,SAAU2hF,EACVp5D,KAAMg5D,EACNzW,cAAeA,IAGhBG,EACGjsE,GACA2e,EAAK3e,KAAI8xC,IACP,MAAM,SAAEqxC,EAAF,SAAYnV,EAAZ,iBAAsByB,GAAqBuT,EAC/ClxC,EACA07B,IAGI,SAAEtmE,EAAF,UAAYD,GAAcf,GAA4B4rC,EAAI1sC,KAAKlF,aAErE,OACE,gBAAC,KAAM2tC,SAAP,WACE,eAACggC,GAAD,CACEC,YAAaqV,EACb3sD,MAAOsb,EAAI7hC,GAAGM,WACdnL,KAAMqB,YAAQqrC,EAAI1sC,KAAKlF,aACvB6tE,OAAQ/tE,EACRguE,SAAUA,IAEXnyE,EAAOO,qBAAuB+mF,GAC7B,eAAC,KAAD,CACErjF,KAAK,QACLi7D,IAAKooB,EACLjjF,YAAagG,GAAoBC,aAAK2rC,EAAI1sC,OAH5C,SAKE,eAAC,KAAD,CACEtF,KAAK,SACLgvE,SAAUh9B,EAAI7hC,GAAGM,WACjBN,GAAK,aAAY6hC,EAAI7hC,GAAGM,aACxBmkC,MAAO,QAIXs5B,GAAYyB,IAAqBqL,GACjC,eAACtL,GAAD,CACEtoE,SAAUA,EACVD,UAAWA,EACXwoE,iBAAkBA,EAClBzB,SAAUA,EACV/nE,KAAM2pE,MA5BS99B,EAAI7hC,OAkC7Bu9D,GACA4E,EAAapyE,KAAI6c,IAAQ,IAAD,MACtB,MAAM,SAAEmxD,EAAF,YAAYF,EAAZ,iBAAyB2B,EAAzB,iBAA2CC,GAAqBqL,EACpEl+D,EACA2wD,GAEIyN,EAAiBT,EAAqB,UAC1C39D,EAAI7B,QAAQY,mBAD8B,aACfrM,EAC3Bi+D,GAEItmB,EAAG,OAAG+sB,QAAH,IAAGA,GAAH,UAAGA,EAAS//D,MAAKmgE,GAAUA,EAAOpkE,KAAO4M,EAAI5M,YAA7C,aAAG,EAA+Ci3C,IAErDi0B,EAASj0B,EAAMk0B,YAAgBl0B,QAAO33C,GAEtC,SAAErI,EAAF,UAAYD,GAAcf,GAA4B2W,EAAIzX,KAAKlF,aAE/DyuD,EAAW,UACd9xC,EAAI7B,QAAQ2zC,aAAessB,GAAkBxL,SAD/B,SAEXyL,EACJJ,IAAa9M,GAAYyB,GAAoBC,GAAoB/gB,GAEnE,OACE,gBAAC,KAAM9gB,SAAP,WACG7tC,GACC,eAAC6tE,GAAD,CACEC,YAAaA,EACbt3C,MAAO3Z,EAAI5M,GAAGM,WACdnL,KAAMqB,YAAQoW,EAAIzX,KAAKlF,aACvB6tE,OAAQ/tE,EACRguE,SAAUA,IAIbnyE,EAAOO,qBAAuB0xE,GAC7B,eAAC,KAAD,CACEhuE,KAAK,QACLi7D,IAAK+S,EACL5tE,YAAagG,GAAoBC,aAAK0W,EAAIzX,OAH5C,SAKE,eAAC,KAAD,CACEtF,KAAK,SACLgvE,SAAUjyD,EAAI5M,GAAGM,WACjBN,GAAK,SAAQ4M,EAAI5M,GAAGM,aACpBmkC,MAAO,QAIXkuC,EAAWvhF,QAAuB,SAAbwhF,GAAuB1X,GAAWgQ,GACvD,eAAC,KAAD,CAEEr7E,KAAK,UACLmQ,GAAK,OAAM4M,EAAI5M,GAAGM,aAClBwB,KAAMopE,EAJR,SAME,eAAC,KAAD,CACErM,SAAS,gBACT7+D,GAAK,WAAU4M,EAAI5M,KACnBnQ,KAAK,OACL40C,MAAO,CACL,aAAc/lC,EAAOjV,MACrB,aAAc,QAXZ,OAAMmjB,EAAI5M,GAAGM,cAgBtB2qE,GACC,eAAC1L,GAAD,CACEtoE,SAAUA,EACVD,UAAWA,EACXwoE,iBAAkBA,EAClBzB,SAAUA,EACV0B,iBAAkBA,EAClB/gB,YAAaA,EACbwd,iBAAkBA,EAClBlmE,KAAM2pE,MApDS/yD,EAAI5M,OA0DhC6yE,GAAa7P,GACZ,eAAC6O,GAAD,CACE/vE,KAAMkhE,EACNhH,uBAAwBA,EACxB/rE,YAAa,CACXgH,SAAQ,OAAE67E,QAAF,IAAEA,OAAF,EAAEA,EAAmB,GAC7B97E,UAAS,OAAE87E,QAAF,IAAEA,OAAF,EAAEA,EAAmB,MAIjB,SAAlBjX,IAAA,OACC8W,QADD,IACCA,OADD,EACCA,EAAY5iF,KAAIqjF,GAAa,eAACpgD,GAAD,CAAaC,oBAAqBmgD,WCpS1DC,GAAqBvhE,cCFiB,EACjDhE,WACAoG,YACAC,YACAC,oBACAC,4BAEA,MAAM,eAAErO,GAAmBxC,GAAqBC,2BAC1C,KAAE3B,EAAF,QAAQC,GAAY2D,GAAUM,GAE9BQ,EAAM,OAAG1E,QAAH,IAAGA,OAAH,EAAGA,EAAM9I,OAAO0N,aAAa/N,QAAO,EAAG4b,WAAYA,IAAOxkB,KAAI,EAAGwkB,WAAYA,IAEzF,OACE,eAACP,GAAD,CACEI,kBAAmBA,EACnBC,sBAAuBA,EACvBvG,SAAUA,EACVoG,UAAWA,EACXC,UAAWA,EACXpS,QAASA,EACTyE,OAAQA,MDlBmD;;;;;;;;;;;wBAWzC,EAAG/H,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAO1C6nF,GAAaxhE,c9CXiB,EACzCzD,UACA6F,YACApG,WACAqG,YACApS,UACA6E,OACAwN,oBACAC,wBACAzf,QACA4gB,eACK,IAAD,EACJ,MAAM,EAAEhmB,GAAMqf,YAAe,OAEvBmmC,EAAuBrI,mBAAO,GAEpC5iC,sBAAU,KACR,MAAMwrC,EAAc3uC,EAAK3C,MAAK2I,GAAOA,EAAI5M,KAAOkU,IAE3CqhC,IAAeP,EAAqB9N,UACzCp5B,EAAS,CAACynC,IACVP,EAAqB9N,SAAU,KAC9B,CAACp5B,EAAUlH,EAAMsN,IAEpB,MAAMO,EAEH1S,IAAY6E,EAAKxV,SAAYid,OAC1B/O,EACAsH,EAAKxV,OA9BQ,EA8Bb,OACAwD,QADA,IACAA,IAAS,WADT,UAEAgS,EAAK,UAFL,aAEA,EAAS5G,GAEf,OACE,gBAAC,GAAD,CACEwU,eAAgBJ,EAChBC,sBAAuBA,EACvBtS,QAASA,EACToS,UAAWA,EACXM,aAAcA,EACd7f,MAAK,OAAEA,QAAF,IAAEA,IAAS,WAEhB4gB,SAAUA,EACV1H,SAAU9N,IACR,MAAMu1C,EAAc3uC,EAAK3C,MAAK2I,GAAOA,EAAI5M,KAAOA,IAMhD8N,EALKynC,EAKI,CAACA,GAJC3uC,IAZf,WAmBIA,EAAKxV,OAtDQ,GAsDiB2Q,IAC9B,eAAC,GAAO4S,OAAR,CAAe/f,MAAM,WAArB,SAAiCpF,EAAE,wBAGpCoX,EAAK7W,KAAI6c,GACR,eAAC,GAAO+H,OAAR,CAA4B/f,MAAOgY,EAAI5M,GAAvC,SACG4M,EAAI3M,MADa2M,EAAI5M,QAjBpB,GAAEqO,KAAWoG,O8C7BwB;;;;;;;;;;;wBAWzB,EAAGhW,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAO1C6pB,GAAcxD,aAAO+7B,GAAiB;;;;;;;;;;;wBAW3B,EAAGpvC,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAG1C,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;wBAC/B,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EAOrD8nF,GAAezhE,KAAOkL,GAAI;;;;;;;EAQ1Bw2D,GAAgB1hE,KAAOkL,GAAI;;;;EAK3BoI,GAAYtT,KAAOkL,GAAI;;;EAKvBxG,GAAkB1E,aAAOw2C,GAA4C;;;;;;;;aAQrE,EAAG7pD,QAAO+W,cACjBA,EAAW/W,EAAMC,OAAO7V,MAAQ4V,EAAMC,OAAOjV;;;wBAG3B,EAAGgV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAG1C,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;wBAC/B,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;EEjF5DgoF,GAA0B,yBAEnBC,GAAgB,KAAO,IAAD,IACjC,MAAM/rE,EAAWC,gBACX,EAAEpY,GAAMqf,YAAe,QACvB,OAAEpI,EAAF,SAAUF,EAAV,QAAoBxE,GAAYgE,KACtCgE,sBAAU,KACJhI,IACAwE,GAAYE,IAAQkB,EAAS,aAAc,CAAEpW,SAAS,MACzD,CAACwQ,EAAS4F,EAAUpB,EAAUE,IAEjC,MAAM,eAAET,EAAF,gBAAkB8J,GAAoBtM,GAAqBC,2BAC3D,IAAE1T,EAAF,WAAO46E,GAAeC,gBACrBx9B,EAAQumC,GAAa5zE,oBAAiB,SACtCm7D,EAAS0Y,GAAc7zE,qBAAS,IAEhCwU,EAAO8/B,GAAYt0C,uBAEpB,YAAE8zE,EAAF,SAAejB,EAAf,sBAAyBxB,EAAzB,uBAAgDpV,GCrDhC,MACtB,MAAO4W,EAAUiB,GAAe9zE,oBAAmB,MAInD,MAAO,CACL6yE,WACAiB,cACAzC,sBANyC,YAAbwB,EAO5B5W,uBAN0C,cAAb4W,IDkDkDkB,IAE3E,gBACJzR,EADI,qBAEJsC,EAFI,MAGJlI,EAHI,SAIJD,EAJI,qBAKJe,EALI,wBAMJnB,EANI,4BAOJoB,EAPI,+BAQJjB,EARI,wBASJJ,EATI,2BAUJG,EAVI,KAWJ11D,EAXI,cAYJy8D,EAZI,QAaJW,EAbI,aAcJ7I,EAdI,oBAeJ8I,EAfI,aAgBJ9B,EAhBI,sBAiBJyC,EAjBI,iBAkBJ1I,EAlBI,oBAmBJG,EAnBI,2CAoBJoI,EApBI,+BAqBJC,EArBI,kBAsBJI,EAtBI,wBAuBJkE,EAvBI,yBAwBJnE,EAxBI,iBAyBJG,EAzBI,iBA0BJC,GA1BI,qBA2BJC,GA3BI,eA4BJrD,GA5BI,cA6BJ+H,GA7BI,iBA8BJD,GA9BI,iBA+BJJ,GA/BI,iBAgCJ9G,GAhCI,kBAiCJX,GAjCI,oBAkCJ0H,GAlCI,YAmCJE,GAnCI,qBAoCJ9G,GApCI,kBAqCJD,GArCI,KAsCJj0D,GAtCI,aAuCJy2D,GAvCI,mBAwCJC,GAxCI,kBAyCJtI,GAzCI,yBA0CJE,GA1CI,qCA2CJsI,GA3CI,2BA4CJD,GA5CI,oBA6CJE,GA7CI,UA8CJvC,GA9CI,aA+CJC,GA/CI,sBAgDJuC,GAhDI,wBAiDJqE,GAjDI,kBAkDJ1M,IACEr8B,GAAO,CACTmM,SAAUjnC,EACVqI,QAAO,OAAEkG,QAAF,IAAEA,OAAF,EAAEA,EAAOvU,GAChBmkC,UAAS,OAAE5vB,QAAF,IAAEA,OAAF,EAAEA,EAAOtU,KAClB+7D,2BAEIrxC,GAAQ3pB,KACR+yE,GAAiBC,mBAAK,UAACrpD,GAAMC,IAAI,kBAAX,QAAyB,IAC/CqpD,GAAeD,mBAAK,UAACrpD,GAAMC,IAAI,gBAAX,QAAuB,KAE1CohB,GAAUC,IAAelsC,oBAAS,CACvC9I,SAAUpF,EAAmBC,SAC7BkF,UAAWnF,EAAmBE,UAC9B2wC,KAAM7wC,EAASI,WAEX,yBAAEi4E,IAA6BD,KAC/Bn1B,GAAwBvsC,wBAC5B,EAAGvR,YAAWC,WAAUyrC,WACjB1rC,GAAcC,IAChB,OAAHlH,QAAG,IAAHA,KAAK4yC,MAAM,CACTC,OAAQ,CAAC5rC,EAAWC,GACpB4rC,SAAUhxC,EAAuBG,mBACjC0wC,OACAI,WAAW,OAGf,CAAC/yC,IAGGmkF,GAAyDvnC,kBAAO,MAEtE5iC,sBAAU,IACD,IAAOmqE,GAAmBhtC,QAAUwe,aAAawuB,GAAmBhtC,cAAW5nC,GACrF,IAEHyK,sBAAU,KACR,GAAIo4D,EAAa/wE,OAAQ,CACvB,MAAM+iF,EAAuBhS,EAAapyE,KAAI6c,GAAOA,EAAIxQ,SAASnM,cAC5Dc,EAAWkyC,YAAOkxC,GAClBC,EAAaxxC,aAAO7xC,GAEpBkG,EAAYwlE,EAAMC,SAAgD1wB,GAAS/0C,SAA9Cm9E,EAAWxkF,SAASK,YAAY,GAC7D+G,EAAaylE,EAAMC,SAAgD1wB,GAASh1C,UAA9Co9E,EAAWxkF,SAASK,YAAY,GAC9DyyC,EACJsJ,GAAStJ,OAAS7wC,EAASI,SAAYwqE,EAAMC,SAA4B1wB,GAAStJ,KAA1B7wC,EAASK,MAC/DnC,IAEFmkF,GAAmBhtC,QAAUue,YAAW,KACtC3Q,GAAsB,CAAE99C,YAAWC,WAAUyrC,WAC5C,IAEL85B,GAAS6X,IAAS,IACbA,EACH3X,UAAU,MAEZuG,QAAa3jE,GAGf,MAAO,IAAO40E,GAAmBhtC,QAAUwe,aAAawuB,GAAmBhtC,cAAW5nC,IAErF,CAAC6iE,EAAcpyE,IAElB,MAAM,WACJ4iF,GADI,SAEJL,GAFI,gBAGJtxC,GAHI,gBAIJC,GAJI,oBAKJqzC,GALI,gBAMJxC,GANI,mBAOJY,GAPI,cAQJ7W,GARI,wBASJtB,GATI,aAUJga,GAVI,yBAWJC,I9BvK0B,EAC5B5B,EACAiB,KAEA,MAAOlB,EAAY8B,GAAiB10E,oBAAqB,KAClD87D,EAAe6Y,GAAqB30E,oBAA+B,MAEpE40E,EAAmBhoC,kBAAOkvB,GAE1B+Y,EACJz9D,IAEA,GAAsB,oBAAXA,EAAuB,CAChC,MAAM09D,EAAW19D,EAAOw9D,EAAiBztC,SACzCytC,EAAiBztC,QAAU2tC,EAC3BH,EAAkBG,QAElBF,EAAiBztC,QAAU/vB,EAC3Bu9D,EAAkBv9D,IAIhB6pB,EAAkBz4B,wBACtB,EAAGxX,eACD,KAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAUK,QAAQ,OACvB,MACMowC,EADiBzwC,EAAS,GACQiP,GACnCwhC,IACLizC,GAAcK,IACZ,GAAIA,EAAe7wE,MAAK8wE,IAAQ,aAAI,UAAAA,EAASplF,eAAT,eAAkBqQ,MAAOwhC,KAC3D,OAAOszC,EAET,MAAM,cAAEr+E,EAAF,KAAiBtB,GAASc,GAC9BlF,EAAS,GAAGnB,SAASK,aAGvB,MAAO,IAAI6kF,EAAgB,CAAEnlF,QAASoB,EAAS,GAAI0F,gBAAetB,YAEpEy/E,EAAiB,MACjBf,EAAY,SAEd,CAACA,IAGG5yC,EAAkB14B,wBAAY,EAAGxX,eACrC,KAAI,OAACA,QAAD,IAACA,OAAD,EAACA,EAAUK,QAAQ,OACvB,MAAM2wC,EAAiBhxC,EAAS,GAEhC0jF,GAAcK,IACZ,MAAME,EAAW,IAAIF,GACfG,EAAmBD,EAASpzC,WAChCszC,GAAWA,EAAQvlF,QAAQqQ,KAAO+hC,EAAe/hC,MAE7C,cAAEvJ,EAAF,KAAiBtB,GAASc,GAC9B8rC,EAAenyC,SAASK,aAS1B,OANA+kF,EAASC,GAAoB,IACxBD,EAASC,GACZtlF,QAASoyC,EACTtrC,gBACAtB,QAEK6/E,OAER,IAEGlD,EAAkBvpE,wBAAau5B,IACF,WAA7B6yC,EAAiBztC,UACnButC,GAAcK,GACZA,EAAen8E,QAAOw8E,GAAiBA,EAAcxlF,QAAQqQ,KAAO8hC,MAEtE8yC,EAAiB,SAElB,IAEGN,EAAsB/rE,wBAAY,KACtCksE,EAAc,IACdG,EAAiB,MACjBf,EAAY,QACX,CAACA,IAEEuB,EAAS7sE,wBAAY,KACzBqsE,GAAiB9qC,GAA4B,SAAdA,EAAuB,KAAO,WAC5D,IASGurC,EAAU9sE,wBAAY,KAC1BqsE,GAAiB9qC,GACG,SAAdA,GAAsC,WAAdA,GAC1B+pC,EAAY,MACL,MAEF/pC,MAER,CAAC+pC,IAEEyB,EAA0E,CAC9EvL,KAAMqL,EACNhnC,KAnBa,KACbwmC,GAAiB9qC,GAA4B,SAAdA,EAAuB,KAAO,SAC7D+pC,EAAY,OAkBZ7J,OAfe,IAAM4K,GAAiB9qC,GAA4B,WAAdA,EAAyB,SAAW,OAgBxF,aAAcwqC,EACd58C,MAAO29C,GAcH3C,EAAqBC,EAAW5iF,KAAI,EAAGJ,aAAcA,IACrD2iF,EAAqBzW,EAAgBiO,GAAYjO,GAAiB,gBAExE9xD,sBAAU,KACS,YAAb6oE,GAA0BD,EAAWvhF,QAAQqjF,EAAc,MAC9D,CAAC9B,EAAWvhF,OAAQwhF,IAEvB,MAAMprC,EAAYj/B,wBACfua,IACkB,iBAAbwvD,IACc,cAAdxvD,EAAM/b,KAAqC,WAAd+b,EAAM/b,MACrC6tE,EAAiB,MACjBQ,KAEgB,QAAdtyD,EAAM/b,KAA+B,WAAd+b,EAAM/b,KAC/B6tE,EAAiB,SAGrB,CAACtC,EAAU8C,IAUb,OAPArrE,sBAAU,KACRyrC,SAASvrC,iBAAiB,UAAWu9B,GAC9B,KACLgO,SAAStrC,oBAAoB,UAAWs9B,MAEzC,CAACA,IAEG,CACLmrC,aACAL,WACAtxC,kBACAC,kBACAqzC,sBACAxC,kBACAY,qBACA7W,gBACA0Y,aAA2B,SAAb3B,EACd4B,yBA3C+B,KACT,SAAlB3Y,GAA8C,WAAlBA,GAChCgY,GAAY0B,GAA0B,SAAbA,EAAsB,KAAO,UA0CtDhb,wBAlD+BpjD,IAC1BA,IAELqrB,EADe8yC,EAAiBn+D,S8BuD9Bq+D,CAAe5C,EAAUiB,IAEtBf,GAAkB2C,IAAuB11E,sBAE1C6sC,GAAerkC,wBAClBohC,IACC0K,EAAS1K,GACT2qC,KACA1R,QAAqBtjE,GACrBqjE,QAAkBrjE,KAEpB,CAACg1E,GAAqB1R,GAAsBD,KAGxC91B,GAAStkC,wBAAaukC,GAA8Bb,GAAYa,EAAIC,YAAY,KAG/E8lC,GAAW6C,IAAgB31E,qBAAS,GAErC4/B,GAAep3B,wBAAY,KAC/BmtE,GAA+B,SAAlB7Z,IAA8C,WAAlBA,IACzC8X,EAAU,aACT,CAAC9X,KAEEj8B,GAAer3B,wBAAY,IAAMorE,EAAU,SAAS,IAEpDgC,GAAkBptE,wBACtB,CAACvI,EAAY41E,KAA8B,IAAD,gBACxC,MAAM/zC,EAAG,OAAGnzB,SAAH,IAAGA,QAAH,EAAGA,GAAMzK,MAAK4xE,GAAaA,EAAU71E,KAAOlL,OAAOkL,KACtD6gE,EAAY,OAAGh/B,QAAH,IAAGA,OAAH,EAAGA,EAAKqH,SAASjlC,MACjC9P,GAAQA,EAAKA,QAAL,OAAeyhF,QAAf,IAAeA,IAAmBrY,KAE5C,IAAKsD,IAAiBh/B,EAAK,OAE3B,MAAMi0C,EAAU7/E,GAAoBC,aAAK2rC,EAAI1sC,OACvC0hD,EAAargD,YAAQqrC,EAAI1sC,KAAKlF,aAC9BwG,EAAgBC,aAASmgD,GAC/B4+B,GAAoB,CAACh/E,EAAc7G,SAASK,YAAY,GAAI6lF,EAAQ,GAAG,GAAK,OAC5EnC,EAAU,QAEV,MAAMV,EAAgB,OAAGpS,QAAH,IAAGA,GAAH,UAAGA,EAAcP,QAAQ6F,oBAAzB,aAAG,EAAoCzU,YACvDhH,EAAW,OAAGmW,QAAH,IAAGA,GAAH,UAAGA,EAAcP,QAAQ6F,oBAAzB,aAAG,EAAoCzb,YAClDqT,EAAWrT,IAAgB1yD,GAAYozD,OACvCoU,GAAoByT,GAAoB3I,gBAAM5f,GAEpDuY,GAAa,CACXhjE,KAAM4hC,EAAI5hC,KACVD,GAAI6hC,EAAI7hC,GACR7K,KAAI,oBAAE0rE,EAAaP,QAAQ6F,oBAAvB,aAAE,EAAmChxE,YAArC,aAA6CmK,EACjDklD,OAAM,oBAAEqc,EAAaP,QAAQ6F,oBAAvB,aAAE,EAAmC3hB,cAArC,aAA+CllD,EACrDmlD,WAAU,oBAAEoc,EAAaP,QAAQ6F,oBAAvB,aAAE,EAAmC1hB,kBAArC,aAAmDnlD,EAC7Dy2E,SAAU,MACVhY,WACAyB,uBAGJ,CAAC9wD,GAAM6uD,EAAsB0F,KAGzB+S,GAAyBztE,wBAC5Bge,IAAmB,IAAD,EACjB,MAAM3Z,EAAG,OAAGu1D,QAAH,IAAGA,OAAH,EAAGA,EAAcl+D,MAAK0yC,GAAaA,EAAU32C,KAAOlL,OAAOyxB,KACpE,IAAK3Z,EAAK,OAEV,MAAM8xC,IAAgB9xC,EAAI7B,QAAQ2zC,YAE5Bu3B,EAAmBrpE,EAAI7B,QAAQm+B,SAASjlC,MAC5C48D,GAAgBA,EAAa1sE,OAASopE,IAGlC/e,EAAsBiiB,GAC1B3D,GACA,aAF0B,OAG1BmZ,QAH0B,IAG1BA,OAH0B,EAG1BA,EAAkB3V,SAGd7hB,EAAuBgiB,GAC3B3D,GACA,cAF2B,OAG3BmZ,QAH2B,IAG3BA,OAH2B,EAG3BA,EAAkB3V,SAGd8J,EAAcF,GAAyB,CAC3Ct9D,MACA85D,aAAcnJ,EACdrB,mBACAY,uBAEF,MAAO,CACLpe,cACAF,oBAAmB,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAqBvsC,UAC1CwsC,qBAAoB,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAsBxsC,UAC5Cm4D,cACAx9D,MACAs5C,mBAAkB,iBAAE+vB,QAAF,IAAEA,OAAF,EAAEA,EAAkB/vB,0BAApB,aAA0C5mD,KAGhE,CACE4qE,GACA3M,EACA4E,EACAjG,EACAY,KAIEoZ,GAAoB3tE,wBACvBua,IAA+B,IAAD,EAE7B,GADAq6C,IAAkB,GACd6F,GAEF,YADAC,QAAa3jE,GAIf,MAAM,SAAEvO,GAAa+xB,EAEfnzB,EAAO,OAAGoB,QAAH,IAAGA,OAAH,EAAGA,EAAW,GAC3B,IAAKpB,EAAS,OAEd,MAAM,GAAEqQ,GAAOrQ,EAAQinD,MAEvB,GAAIolB,EAEF,YADA2Z,GAAgB31E,GAIlB,MAAMm2E,EAAsBH,GAAuBlhF,OAAOkL,IAE1D,IAAKm2E,EAAqB,OAE1B,MAAM,qBACJ13B,EADI,oBAEJD,EAFI,YAGJE,EAHI,IAIJ9xC,EAJI,YAKJw9D,EALI,mBAMJlkB,GACEiwB,EAEElD,IAAqB7I,EAErB0L,EAAU7/E,GAAoBC,aAAK0W,EAAIzX,OACvC0hD,EAAargD,YAAQoW,EAAIzX,KAAKlF,aAC9BwG,EAAgBC,aAASmgD,GAC/B4+B,GAAoB,CAACh/E,EAAc7G,SAASK,YAAY,GAAI6lF,EAAQ,GAAG,GAAK,OAC5EnC,EAAU,QACV,MAAM/iE,EAAWhe,EAASwjB,IAAQ3a,kBAClCwnE,GAAa,CACXhjE,KAAM2M,EAAI3M,KACV6oE,uBAAwB5iB,EACxBr5C,QAAO,UAAED,EAAIC,eAAN,aAAE,EAAasJ,QAAQvF,GAC9B5a,KAAM4W,EAAI5W,KACVwoD,sBACAC,uBACAC,cACA1+C,GAAI4M,EAAI5M,GACRkW,KAAMtJ,EAAIsJ,KAAKC,QAAQvF,GACvBmlE,SAAU,MACVhY,SAAQ,OAAEqM,QAAF,IAAEA,OAAF,EAAEA,EAAarM,SACvByB,kBAAmByT,EACnBxT,mBAAkB,OAAC2K,QAAD,IAACA,OAAD,EAACA,EAAaC,sBAGpC,CACElN,GACA6F,GACAhH,EACAiH,GACA0S,GACAK,KAIEI,GAAgBzpC,oBAYtB5iC,sBAAU,KACqB,IAAD,EAAvBqnE,IACH,UAAAgF,GAAclvC,eAAd,SAAuBmvC,YAExB,CAACjF,IAEJ,MAWMrpB,GAAc,CAClB,eAACjjC,GAAD,CAAchX,SANY9N,IAC1Bq0C,OAAS/0C,GACTwQ,EAAgB9P,MAKhB,eAAC,GAAD,CACEkU,UAAWpf,OAAOwhF,MAAMvC,SAAkBz0E,EAAYy0E,GACtDjmE,SAAU8+B,GACVx4B,kBAAmBq/D,GACnBp/D,uBAAuB,IAEzB,eAAC,GAAD,CACED,kBAAmBq/D,GACnBp/D,uBAAuB,EACvBzf,MAAOitE,GACPlsD,oBAAkB,EAClB7H,SAAU67D,GACV/zD,iBAAkBhP,EAAK7W,KAAI6c,GAAOA,EAAIsJ,KAAKlW,KAC3CwV,SAAUwmD,IAEZ,eAAC,GAAD,CACE5nD,kBAAmBq/D,GACnBp/D,uBAAuB,EACvBzf,MAAOktE,GACPprD,wBAAsB,EACtB5I,SAAU07D,GACVh0D,UAAWqsD,IAAkB7F,EAC7BvlD,OAAQorD,GACRlrD,sBAAuB/P,EACpBjO,QAAOiU,IACDi1D,IACEj1D,EAAIsJ,KAAKlW,KAAO6hE,KAExB9xE,KAAI6c,IAAG,uBAAIA,EAAIC,eAAR,aAAI,EAAa7M,QAE7B,eAAC,GAAD,CACEqO,QAAO,OAAEkG,QAAF,IAAEA,OAAF,EAAEA,EAAOvU,GAChBkU,UAAWpf,OAAOwhF,MAAMrC,SAAgB30E,EAAY20E,GACpDnmE,SAAUy7D,GACV3iE,KAAM8iE,GACN3nE,QAASshE,EACTjvD,kBAAmBq/D,GACnBp/D,uBAAuB,EACvBzf,MAAOg1E,GACPp0D,SAAUwmD,KAsCd,OACE,gBAACwX,GAAD,WACE,eAACvwD,GAAD,CAAQI,MAAO0kC,KACf,gBAAC,GAAD,YACI0a,IAAoBY,GAAiBhB,IACrC,eAACjI,GAAD,CACEvqE,KAAM4yE,GAAmB,OAAS,cAClC/N,SAAU0c,EAAwB,MAAQ,SAC1C9gF,KAAMd,EAAE,yBAIZ,eAAC2hF,GAAD,CACExM,qBAAsBA,EACtBnH,4BAA6BA,EAC7BrB,wBAAyBA,EACzB6U,8BAA+B1U,EAC/BsI,sBAAuBA,EACvB6L,uBAAwBpU,EACxBoI,2CAA4CA,EAC5CC,+BAAgCA,EAChCG,yBAA0BA,EAC1BG,iBAAkBA,EAClBC,iBAAkBA,GAClBC,qBAAsBA,GACtB+L,kCAAmC1U,EACnCL,iBAAkBA,EAClBM,SAAUA,EACVkU,2BA9D4Bv8E,IAGlC,GAFAioE,EAAwBjoE,KAEpB,OAAC6uE,SAAD,IAACA,QAAD,EAACA,GAAWhjE,IAAI,OAEpB,GAA2B,QAAvBgjE,GAAU+S,SAEZ,YADAJ,GAAgB3S,GAAUhjE,GAAGM,WAAYnM,GAI3C,MAAMgiF,EAAsBH,GAAuBlhF,OAAOkuE,GAAUhjE,KAEpE,IAAKm2E,EAAqB,OAE1B,MAAM,qBAAE13B,EAAF,oBAAwBD,EAAxB,YAA6C4rB,EAA7C,mBAA0DlkB,GAC9DiwB,EAEIlD,IAAqB7I,EAE3BnH,IAAan5B,IACK,IACXA,EACH0U,sBACAC,uBACAqqB,uBAAwB5iB,EACxB6X,SAAQ,OAAEqM,QAAF,IAAEA,OAAF,EAAEA,EAAarM,SACvByB,kBAAmByT,EACnBxT,mBAAkB,OAAC2K,QAAD,IAACA,OAAD,EAACA,EAAaC,uBAoC9B9M,qBAAsBA,EACtB4E,aAAcA,EACdiP,sBAAuBA,EACvBpV,uBAAwBA,EACxBmJ,aAAcA,GACdC,mBAAoBA,GACpBuL,wBAAyBnL,GACzB1I,kBAAmBA,GACnBoU,+BAAgC5L,GAChCtI,yBAA0BA,GAC1BqI,2BAA4BA,GAC5BE,oBAAqBA,KAEvB,eAAC5J,GAAD,CACEriD,KAAMs5D,EACNhX,sBAtJsB,KAC5BiY,GAAY0B,GAA0B,YAAbA,EAAyB,KAAO,aAsJnD1Z,cAAeA,GACfC,wBAAyByY,GACzBxY,mCAAoCyY,GACpCja,wBAAyBA,GACzBC,wBAAyBmY,GAAWvhF,OACpCwV,KAAMq9D,EACN/I,QAASA,EACTC,aAAcA,EACdC,cAAgBmb,GACP3C,IAAP2C,GAAqCzsC,KAAcA,IAErDkyB,uBAAwBA,EACxB36B,WA/JW,KACjBq0C,IAAa,GACbzS,QAAa3jE,GACbu0E,GAAY0B,GAA0B,cAAbA,EAA2B,KAAO,eA6JrDtZ,uBAAsB,OAACvtD,SAAD,IAACA,QAAD,EAACA,GAAMtd,UAG/B,gBAACmiF,GAAD,CAAcvzE,GAAG,uBAAjB,UACE,eAACiyE,GAAD,CACEC,aAAcrlC,GACdm2B,UAAWA,GACXgG,wBAAyBA,EACzBoI,sBAAuBA,EACvBplC,SAAUA,GACVmmC,cAAe+D,GACf9D,mBAAoBxyC,GACpByyC,mBAAoB1yC,GACpB2yC,SAAUA,GACVllC,OAAQA,EACRmlC,sBAAuBvxC,GACvBwxC,sBAAuBvxC,GACvBwxC,sBAAuBX,GACvBY,mBAAoBA,GACpB7W,cAAeA,GACf0B,qBAAsBA,EACtB4E,aAAcA,EACd6B,QAASA,EACT9H,iBAAkBA,EAClByW,WAAYA,GACZC,SAAUA,EACV1X,QAASA,EACT2X,UAAWA,GACXC,iBAAkBA,GAClBpkE,KAAI,OAAEA,SAAF,IAAEA,MAAQ,GACdstD,uBAAwBA,EACxBc,kBAAmBA,KAEpBsU,GACC,eAAC3G,GAAD,CACE7jE,KAAMu7D,EACNn2B,SAAUA,GACV0+B,QAzLe,KACpB36E,GAAQ46E,IACb7F,IACAsR,GAAclvC,QAAU,IAAIsvC,KAAc7L,EAAY56E,EAAK,2BAuLjDmrE,SAAUyX,GAAWvhF,QAAuB,SAAbwhF,GAAuB1X,EACtD8I,QAASA,EACTnwD,QAASg2D,e,eE9iBhB,MAAM4M,GAAoBn1E,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;GCyB7BgiB,QAASozD,IAAevzD,MACxB9F,MAAF,GAASkD,KAAT,GAAegJ,KAAf,IAAwBzhC,KAExBw7B,GAAUxR,aAAO4kE,GAAY;;;EAkBtBC,GAA4B,KACvC,MAAM,EAAEnnF,GAAMqf,YAAe,qBACrBrf,EAAGg3B,GAAY3X,YAAe,WAE/B+nE,EAAUC,GAAe92E,oBAAS,KAElC+2E,GAAiB,QAAE/0E,EAAF,KAAWD,IAAUi1E,aAG3CN,GAAmB,CACnBv6E,QAASnN,EAAaC,eAGlB06B,EAA+CC,OAAaC,MAAM,CACtE2E,YAAa5E,OAAaE,SAASrD,EAAQ,yBAC3C2d,UAAWxa,OAAaE,SAASrD,EAAQ,yBACzC0d,QAASva,OAAaE,SAASrD,EAAQ,yBACvCowC,YAAajtC,OAAaE,SAASrD,EAAQ,yBAC3C5a,MAAO+d,OAAaE,SAASrD,EAAQ,yBACrCwwD,UAAWrtD,OAAaE,SAASrD,EAAQ,yBACzCywD,SAAUttD,OAAWE,SAASrD,EAAQ,yBACtC0wD,OAAQvtD,OAELE,SAASrD,EAAQ,yBACjBuD,IAAIJ,KAAQ,YAAanD,EAAQ,4BACpCpb,cAAeue,OAAWE,SAASrD,EAAQ,yBAC3CrxB,KAAMw0B,OAAaE,SAASrD,EAAQ,4BAKhC,QAAEvE,EAAF,aAAWwH,EAAX,SAAyByK,GAAajK,aAAQ,CAClDC,SAAUC,aAAsBT,KA0BlC,OACE,gBAAC,GAAD,WACE,eAAC,GAAD,CAAOlM,MAAO,EAAd,SAAkBhuB,EAAE,WACpB,gBAAC,KAAD,WACE,eAAC,KAAD,CAEEyQ,KAAK,OACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,IACMqzB,EACJnB,aAAc,KAAM,EACpBvT,SAAUozD,GAvCN7wE,QACdE,KAAMuzC,GACRh2B,KAEA,MAAMvd,EAAOuzC,EACPnzC,QAAgBR,EAA2BI,GAEjD,GAAII,EAAQI,SAASK,OAAS,EAI5B,YAHA9B,IAAaL,MAAM,CACjBE,QAASK,EAAE,kBAKf,MAAMG,EAAUgB,EAAQI,SAAS,GAEjC8lF,EAAYtmF,EAAK0P,MACbtQ,EAAQO,WAAW+P,MACrBi0B,EAAS,UAAWvkC,EAAQO,WAAW+P,MAEzC6N,EAASnd,EAAQI,SAAS,KAmBIm3C,CAAUg5B,EAAMpzD,GAClCqT,gBAAgB,EAChBD,OAAO,OALT,SAOE,eAAC,KAAD,CAAQrxB,KAAK,UAAb,SAAwBL,EAAE,2BAKlC,eAAC,GAAD,UAAOonF,OAET,gBAAC,KAAD,WACE,eAACr5D,GAAD,CAAYj0B,MAAOkG,EAAE,wBACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,WACE,eAAC2oB,GAAD,CAAYj0B,MAAOkG,EAAE,sBACrB,eAAC,KAAD,CAEEyQ,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,WACE,eAAC2oB,GAAD,CAAYj0B,MAAOkG,EAAE,oBACrB,eAAC,KAAD,CAEEyQ,KAAK,UACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,WACE,eAAC2oB,GAAD,CAAYj0B,MAAOkG,EAAE,wBACrB,eAAC,KAAD,CAEEyQ,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,WACE,eAAC2oB,GAAD,CAAYj0B,MAAOkG,EAAE,kBACrB,eAAC,KAAD,CAEEyQ,KAAK,QACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,WACE,eAAC2oB,GAAD,CAAYj0B,MAAOkG,EAAE,sBACrB,eAAC,KAAD,CAEEyQ,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,cAAa0U,GACtBC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,WACDwsB,EACJ1U,SAAUgV,GAAShV,EAASgV,EAAMrL,OAAO7iB,gBAMnD,gBAAC,KAAD,CAAKyyB,OAAQ,GAAb,UACE,eAAC9J,GAAD,CAAYj0B,MAAOkG,EAAE,qBACrB,eAAC,KAAD,CAEEyQ,KAAK,WACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAUlZ,WAAU4tB,GAC7BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACLuf,YAAaiR,EAAQ,qBACrB5xB,MAAOA,EAAQN,IAAMM,QAAS0K,EAC9BmW,YAAY,KACR+M,EACJ1U,SAAU3Z,IACJA,GAAM2Z,EAAS3Z,UAM7B,eAACopB,GAAD,CAAYj0B,MAAOkG,EAAE,mBACrB,eAAC,KAAD,CAEEyQ,KAAK,SACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAUlZ,WAAU4tB,GAC7BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACLpB,MAAOA,EAAQN,IAAMM,QAAS0K,EAC9BiW,YAAaiR,EAAQ,wBACjBhE,EACJ1U,SAAU3Z,IAEN2Z,EADE3Z,GAIK,gBAOrB,gBAAC,KAAD,WACE,eAACopB,GAAD,CAAYj0B,MAAOkG,EAAE,0BACrB,eAAC,KAAD,CAEEyQ,KAAK,gBACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAUlZ,WAAU4tB,GAC7BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,KAAD,CACE6G,KAAK,QACLpB,MAAOA,EAAQN,IAAMM,QAAS0K,EAC9BiW,YAAaiR,EAAQ,wBACjBhE,EACJ1U,SAAU3Z,IAEN2Z,EADE3Z,GAIK,gBAOrB,eAAC,KAAD,CACEtE,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GAAa0tD,GACpBL,EAAgB,CACd70E,UAAW,CACTssB,YAAa4oD,EAAK5oD,YAClB4V,UAAWgzC,EAAKhzC,UAChBD,QAASizC,EAAKjzC,QACd0yB,YAAaugB,EAAKvgB,YAClBhrD,MAAOurE,EAAKvrE,MACZorE,UAAWG,EAAKH,UAChBC,SAAU3iF,IAAM6iF,EAAKF,UAAUziF,OAAO9B,GACtCwkF,OAAQ5iF,IAAM6iF,EAAKD,QAAQ1iF,OAAO9B,GAClC0Y,cAAe9W,IAAM6iF,EAAK/rE,eAAe5W,OAAO9B,GAChDyC,KAAMgiF,EAAKhiF,KAAKvF,cAfxB,SAoBGJ,EAAE,wBAEA,OAAJsS,QAAI,IAAJA,OAAA,EAAAA,EAAMs1E,gBAAgBtsB,MACrB,eAAC,KAAD,UACE,eAAC,GAAD,CAAMxuD,KAAMwF,EAAKs1E,gBAAgBtsB,IAAjC,SAAuCt7D,EAAE,wBCnVtC6nF,GAAqC,EAChDh3D,QACA4B,UACAyL,gBACAC,sBAEA,MAAM,EAAEn+B,GAAMqf,YAAe,qBACvB,UAAE3F,EAAF,QAAanH,GAAYkH,KAE/B,OACE,gBAAC,GAAD,WACE,eAAC4X,GAAD,CAAQ7qB,KAAK,QAAQjK,QAAQ,KAAKs0B,MAAOA,EAAOvS,SAAU4f,IAC1D,eAAC4pD,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEomB,YAAa/lB,EAAE,sBACfwG,KAAK,QACL2wB,OAAQ,KACS,OAAfgH,QAAe,IAAfA,OACAhH,QAEEnE,EACJ1U,SAAUgV,GAAShV,EAAS9Y,GAA+B8tB,EAAMrL,OAAO7iB,gBAMlF,eAAC0iF,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,UACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEomB,YAAa/lB,EAAE,kBACfwG,KAAK,QACL+L,QAASA,EACT4kB,OAAQ,KACS,OAAfgH,QAAe,IAAfA,OACAhH,QAEEnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BtO,eAAe,yBAVjB,gBAYGtL,QAZH,IAYGA,OAZH,EAYGA,EAAWnZ,KAAI+gB,GACd,gBAAC,GAAO6D,OAAR,CAAgC/f,MAAOkc,EAAQ9Q,GAA/C,UACE,eAAC,GAAD,CAAOgV,IAAK5hB,GAAUC,MAAMyd,EAAQ9Q,MACnC8Q,EAAQ7Q,OAFS6Q,EAAQ9Q,kBChEjCu3E,GAAoB,KAC/B,MAAM,EAAE/nF,GAAMqf,YAAe,cACvBlH,EAAWC,gBACX,gBAAEmI,GAAoBvM,GAAqBC,0BAC3CtB,EAAOC,MAENie,EAAOoQ,GAAY1wB,uBACnB2wB,EAAWC,GAAgB5wB,uBAC5B,QAAEkiB,EAAF,aAAWwH,GAAiBmF,MAO5B,cAAEP,EAAF,QAAiBtsB,GAAYksB,IALjB,KAChBtmB,EAAS,aAAc,CAAEpW,SAAS,IAClCwe,GAAgB,MAKlB,OACE,gBAAC,KAAD,CAAOgW,UAAU,WAAW/vB,KAAM,GAAImc,MAAO,CAAEW,MAAO,QAAtD,UACE,eAACukE,GAAD,CACEp1D,QAASA,EACT5B,MAAOA,EACPqN,cAAe,CAACkD,EAAargC,KAC3BkgC,EAASG,GACTD,EAAapgC,MAIjB,eAAC,GAAD,CACE4hB,MAAO,CAAEW,MAAO,QAChBjjB,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GAAa,EAAG8E,cAAazd,aACpCud,EACE,CAAEpuB,KAAMsuB,EAAazd,QAASA,EAAsB+f,KAAMH,GAC1DvuB,EAAKnC,MAPX,SAWGxQ,EAAE,iCCfEgoF,GAAoC,EAC/Cv1D,UACAkO,mBACAY,sBACAf,iBACAI,8BACAiB,gBACA1B,gCACAF,mBACAS,0BACK,IAAD,IACJ,MAAM,EAAE1gC,GAAMqf,YAAe,qBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,UAAE3F,EAAF,QAAanH,GAAYkH,MACzB,KAAE9G,GAASN,MACX,qBAAEgB,GAAyBL,MAC3B,YAAE6C,GAAgB/B,KAElBkuB,EAAsB58B,IAC1B,IAAKA,EAAO,MAAO,GACnB,MAAM68B,EAAcz8B,GAAgCJ,GACpD,IAAK68B,EAAa,MAAO,GAIzB,OAHwBjL,EAAQ,+BAAgC,CAC9DkL,IAAKD,KAKT,OACE,gBAAC,KAAD,CAAO1L,UAAU,WAAW/vB,KAAM,GAAImc,MAAO,CAAEW,MAAO,QAAtD,UACE,gBAAC,GAAD,WACE,eAACwkE,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,cACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEomB,YAAa/lB,EAAE,mBACfwG,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAAS9Y,GAA+B8tB,EAAMrL,OAAO7iB,iBAMjF,UAAAiO,EAAqBE,WAArB,eAA0BqC,UACzB,eAACkyE,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,eACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,SAAQ/xB,WAAU4tB,GACrCC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEomB,YAAa/lB,EAAE,cACfK,KAAK,OACLmG,KAAK,QACL2wB,OAAQA,EACR/xB,MAAO48B,EAAmB58B,MACtB4tB,EACJ1U,SAAUgV,GAAShV,EAAS0jB,EAAmB1O,EAAMrL,OAAO7iB,oBAQzE,UAAAiO,EAAqBE,WAArB,eAA0BqC,UACzB,eAAC,GAAD,UACE,eAACkyE,GAAD,UACE,eAAC,KAAD,CAEEr3E,KAAK,wBACLgiB,QAASA,EACTxN,aAAcpP,EAAYP,iBAAZ,OAA+B3C,QAA/B,IAA+BA,OAA/B,EAA+BA,EAAMnC,QAAKV,EACxDijB,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACE4S,QAAS4tB,EACTna,SAAUnQ,EAAYP,iBACtByQ,YAAa/lB,EAAE,8BACfwG,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAAS+6B,YASvB,gBAAC,GAAD,WACE,eAACknD,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,UACLgiB,QAASA,EACTxN,aAAcsc,EACdxO,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,UAAQ,EACRD,YAAa/lB,EAAE,kBACfwG,KAAK,QACL+L,QAASA,EACT4kB,OAAQA,KACJnE,EACJ5tB,MAAOm8B,EACPjjB,SAAUgV,GAAShV,EAASgV,GAC5BtO,eAAe,yBATjB,gBAWGtL,QAXH,IAWGA,OAXH,EAWGA,EAAWnZ,KAAI+gB,GACd,gBAAC,GAAO6D,OAAR,CAAgC/f,MAAOkc,EAAQ9Q,GAA/C,UACE,eAAC,GAAD,CAAOgV,IAAK5hB,GAAUC,MAAMyd,EAAQ9Q,MACnC8Q,EAAQ7Q,OAFS6Q,EAAQ9Q,cAUxC,eAACs3E,GAAD,UACE,eAAC,KAAD,CAEEr3E,KAAK,SACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,OAFf,aAIN,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,WAEInQ,EAAYN,sBAAZ,UACAlC,EAAqBG,4BADrB,aACA,EAA2CoC,UAG/CrD,QAAS0tB,EACTla,YAAa/lB,EAAE,iBACfwG,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAASg8B,EACT5c,aAAcub,EACdp7B,MAAOo7B,EACPxb,eAAe,kCAMzB,eAAC8iE,GAAD,UACE,eAAC,KAAD,CACEr3E,KAAK,YACLgiB,QAASA,EACTM,OAAQ,EACNhO,OAASzG,WAAU6Y,YAAWnE,GAC9BC,YAAcxzB,MAAOyzB,MAErB,eAAC,KAAK9C,KAAN,CAAW+C,eAAgBD,GAAc,QAASE,KAAI,OAAEF,QAAF,IAAEA,OAAF,EAAEA,EAAYvzB,QAApE,SACE,eAAC,GAAD,CACEqmB,UAAWwa,EACXjuB,QAASmuB,EACT3a,YAAa/lB,EAAE,oBACfwG,KAAK,QACL2wB,OAAQA,KACJnE,EACJ1U,SAAUgV,GAAShV,EAASgV,GAC5BztB,QAAS86B,EACT3b,eAAe,wCCvNpBijE,GAAmB,KAAO,IAAD,IACpC,MAAM,EAAEjoF,GAAMqf,YAAe,cACvBlH,EAAWC,gBAMX,cACJymB,EADI,QAEJtsB,EAFI,QAGJkgB,EAHI,aAIJwH,EAJI,eAKJuG,EALI,iBAMJG,EANI,4BAOJC,EAPI,YAQJ/qB,EARI,KASJlD,EATI,eAUJ4sB,EAVI,8BAWJY,EAXI,iBAYJF,EAZI,oBAaJS,GACEhB,GAA6B,CAAEhB,UAlBjB,KAChBvmB,EAAS,aAAc,CAAEpW,SAAS,OAmBpC,OACE,gBAAC,KAAD,CAAOw0B,UAAU,WAAW/vB,KAAM,GAAImc,MAAO,CAAEW,MAAO,QAAtD,UACE,eAAC0kE,GAAD,CACEv1D,QAASA,EACT8O,oBAAmB,oBAAE5uB,EAAKO,wBAAP,aAAE,EAAuBC,aAAamO,QAAQ9Q,UAA9C,QAAoD,GACvEgwB,eAAgBA,EAChBG,iBAAgB,OAAEA,QAAF,IAAEA,IAAoB,GACtCC,4BAA6BA,EAC7BiB,cAAa,OAAEtC,QAAF,IAAEA,IAAkB,GACjCY,8BAA+BA,EAC/BF,iBAAkBA,EAClBS,oBAAqBA,IAEvB,eAAC,GAAD,CACE/d,MAAO,CAAEW,MAAO,QAChBjjB,KAAK,UACLkS,QAASA,EACT8R,QAAS4V,GACP,EAAG8E,cAAazd,UAASue,eAAcD,YAAWE,4BAAlD,aACEjB,EACE,CACEpuB,KAAMsuB,EACNzd,QAASA,EACT1Q,eAAc,UAAE+B,EAAKO,wBAAP,aAAE,EAAuBC,aAAa3C,GACpDqvB,aAAcA,EACVr6B,GAAgCq6B,QAChC/vB,EACJyyB,YAAa3C,GAEf/pB,EAAYN,qBAAuBuqB,EAC/BA,EACAntB,EAAKnC,OAlBjB,SAsBGxQ,EAAE,gCC1DE2zB,GAASrR,aAAOqhB,KAAW;;;;sBAIlB,EAAG10B,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;;;;;;EASnD25B,GAAYtT,aAAOsB,KAAO;;GAG/BiK,MAAOC,IAAax1B,KAEfu1B,GAAQvL,aAAOwL,GAAU;WAC3B,EAAG7e,WAAYA,EAAMC,OAAOjV;;EAG1BypB,GAAcpB,aAAOuL,GAAO;;;EAI5BkQ,GAAgBzb,KAAOkL,GAAI;;;;;;;;;EAU3Bs6D,GAAoBxlE,KAAOkL,GAAI;;;EAI/B10B,GAAQwpB,aAAOyoB,KAAU;;;WAG3B,EAAG97B,WAAYA,EAAMC,OAAOjV;;;;;mBAKpB,EAAGgV,WAAa,aAAYA,EAAMC,OAAOjV;;;EAI/CwU,GAAS6T,aAAOiC,KAAW;;;;;;;;;;;;wBAYhB,EAAGtV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAG1Cu0B,GAAQlO,KAAOmO,GAAI;;;;;ECnEnBy3D,GAAa,KACxB,MAAM,EAAEloF,GAAMqf,YAAe,eAEvB,YAAExJ,GAAgB/B,MAClB,OAAE7D,GAAWgI,KAEbmvB,EAAkBvxB,EAAY3B,qBAAuB,cAAgB,eAE3E,OACE,eAAC,GAAD,UACE,gBAAC,GAAD,CAAWqiB,UAAU,WAAW/vB,KAAM,GAAtC,UACE,eAAC,GAAD,CAAyBoc,MAAM,UAC/B,iCACE,eAAC,GAAD,CAAOoL,MAAO,EAAd,SAAkBhuB,EAAG,GAAEonC,aACvB,eAAC,GAAD,CAAapZ,MAAO,EAApB,SAAwBhuB,EAAG,GAAEonC,sBAE9BvxB,EAAY3B,qBAAuB,eAAC+zE,GAAD,IAAuB,eAACF,GAAD,IAC3D,eAAC,KAAD,CAAK9kE,QAAQ,MAAb,SACE,eAAC,KAAD,CAAQ5iB,KAAK,OAAOgkB,QAASpU,EAA7B,SACGjQ,EAAE,8BC9BFmoF,GAAiBr2E,IAAI;;;;;;;;;;ECSrBs2E,GAAsC,EAAGpiE,WAAU1H,WAAUlZ,YACxE,MAAM,EAAEpF,GAAMqf,YAAe,WAEvB,KAAE/M,EAAF,QAAQC,GAAYC,aAAwB21E,IAE5CtiF,EAAU8L,oBAAQ,KAAO,IAAD,IAC5B,wBACEW,QADF,IACEA,GADF,UACEA,EAAMa,aAAak1E,aADrB,aACE,EAA0B9nF,KAAImd,IACrB,CAAEiC,MAAOjC,EAAajN,KAAMrL,MAAOsY,EAAalN,cAF3D,QAGQ,KAEP,CAAC8B,IAEJ,OACE,eAAC,KAAD,CACE0T,SAAUA,EACV1H,SAAUA,EACVlZ,MAAOA,EACP2gB,YAAa/lB,EAAE,uBACf2iB,MAAO,CAAEW,MAAO,QAChB2C,YAAU,EACV1T,QAASA,EACT1M,QAASA,KC5BT2xB,GAAOlV,KAAOkL,GAAe;;;;sBAIb,EAAGgsC,sBAAuBA;EAG1C3iC,GAAcvU,aAAOxpB,KAAO;;EAQrBwvF,GAAuE,EAClFruB,oBACG52C,KAGD,eAAC,GAAD,IACMA,EACJ7c,KAAK,QACL6sB,OAAQhQ,EAAMje,OAAS,eAAC,GAAD,CAAMo0D,iBAAkBS,MCjBxCpjC,GAAcvU,aAAOxpB,KAAO;;;;;;EAQ5BiW,GAAauT,aAAOy5C,IAAgBl4C,MAAM,CACrD7e,OAAQ9B,GACP;;;EAIU49C,GAAcx+B,aAAOijB,KAAU;;;;;;;;;;qBAUvB,EAAGt2B,WAAa,aAAYA,EAAMC,OAAO7V;kBAC5C,EAAG4V,WAAYA,EAAMC,OAAOvU;;;;;;;;kBAQ5B,EAAGsU,WAAYA,EAAMC,OAAOhW;;;;;qCAKT,EAAG+V,WAAYA,EAAME,WAAWjX;sCAC/B,EAAG+W,WAAYA,EAAME,WAAWjX;;;;;;;;;kBASpD,EAAG+W,WAAYA,EAAMC,OAAOtW;;;;;eAK/B,EAAGqW,WAAYA,EAAMC,OAAOhV;;;EAK9B8sB,GAAkB1E,aAAOw2C,GAAqB;;EAG9ChzC,GAAcxD,aAAO+7B,GAAiB;;EC1EtCkqC,GACF,eADEA,GAEC,aAFDA,GAGD,WAHCA,GAIE,cAJFA,GAKK,YALLA,GAMG,UANHA,GAOkB,mBAPlBA,GAQgB,iBARhBA,GASW,kBATXA,GAUK,YAVLA,GAWkB,yBAXlBA,GAYJ,QAZIA,GAaO,cAbPA,GAcG,UAdHA,GAeU,iBAfVA,GAgBI,WAhBJA,GAiBF,UAjBEA,GAkBI,YAlBJA,GAmBL,OAnBKA,GAoBM,kBApBNA,GAqBK,iBArBLA,GAsBS,qBAtBTA,GAuBI,gBAvBJA,GAwBM,kBCfNC,GAAc12E,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EC+BlBwzB,GAAyB,EACpCmjD,kBACAC,eACAnqE,2BACArK,uBACAy0E,+BAEA,MAAOC,EAAgBC,GAAmBt4E,uBACnCu4E,EAAkBC,GAAuBx4E,uBACzCy4E,EAAoBC,GAAyB14E,uBAE9C,EAAEvQ,GAAMqf,YAAe,oBACrBrf,EAAGg3B,GAAY3X,YAAe,WAChC,cAAElE,GAAkBD,MACpB,OAAEhM,GAAW6O,gBACb,UAAEZ,GAAcD,MAChB,WAAEgT,EAAF,iBAAcg5D,EAAd,eAAgCC,EAAhC,aAAgDC,GC7C3B,GAAGx/E,aAAYE,eAAuB,IAAD,EAChE,MAAM,KAAEwI,EAAF,QAAQC,GAAYC,aAA0Cg2E,GAAa,CAC/EhqE,YAAa,oBACb/L,UAAW,CACT3I,SAAUA,EACVF,WAAYA,GAEd8I,MAAO9I,IAAeE,IAGlBu/E,EAAiC,GACjCC,EAAkC,GAClCC,EAA8B,GAE9Br5D,EAAsB,iBAC1B5d,QAD0B,IAC1BA,OAD0B,EAC1BA,EAAM6jD,WAAWx8C,QAAQpZ,KAAI+a,IAAc,IAAD,sDAaxC,OAZA+tE,EAAoB3tC,KAAK,CAAEt2C,MAAOkW,EAAUjS,QAAQmH,GAAI1P,KAAMwa,EAAUjS,QAAQoH,OAChF64E,EAAiB5tC,KAAK,CACpBt2C,MAAOkW,EAAUyJ,MAAMvU,GACvB1P,KAAMwa,EAAUyJ,MAAMtU,KACtBqC,UAAWwI,EAAUjS,QAAQmH,KAE/B+4E,EAAe7tC,KAAK,CAClBt2C,MAAOkW,EAAU9K,GACjB1P,KAAMwa,EAAU7K,KAChBqC,UAAWwI,EAAUjS,QAAQmH,GAC7BqO,QAASvD,EAAUyJ,MAAMvU,KAEpB,CACLuuB,YAAazjB,EAAUjS,QAAQoH,KAC/BqC,UAAWwI,EAAUjS,QAAQmH,GAC7BmkC,UAAWr5B,EAAUyJ,MAAMtU,KAC3BoO,QAASvD,EAAUyJ,MAAMvU,GACzB0nB,WAAY5c,EAAU9R,OAAOiH,KAC7BgtC,SAAUniC,EAAU9R,OAAOgH,GAC3BkkC,QAASp5B,EAAU7K,KACnBouC,UAAS,UAAEvjC,EAAU+B,eAAZ,aAAE,EAAmB7M,GAC9BmL,aAAY,UAAEL,EAAUC,QAAQI,oBAApB,aAAoC7L,EAChD8L,cAAa,UAAEN,EAAUC,QAAQK,qBAApB,aAAqC9L,EAClDqM,YAAW,UAAEb,EAAUC,QAAQY,mBAApB,aAAmCrM,EAC9C2L,gBAAe,UAAEH,EAAUC,QAAQE,uBAApB,aAAuC3L,EACtD4L,YAAW,UAAEJ,EAAUC,QAAQG,mBAApB,aAAmC5L,EAC9CmM,kBAAiB,UAAEX,EAAUC,QAAQU,yBAApB,aAAyCnM,EAC1DiM,oBAAmB,UAAET,EAAUC,QAAQQ,2BAApB,aAA2CjM,EAC9DgM,uBAAsB,UAAER,EAAUC,QAAQO,8BAApB,aAA8ChM,EACpE+L,yBAAwB,UAAEP,EAAUC,QAAQM,gCAApB,aAAgD/L,EACxEkM,cAAa,UAAEV,EAAUC,QAAQS,qBAApB,aAAqClM,EAClDoM,0BAAyB,UAAEZ,EAAUC,QAAQW,iCAApB,aAAiDpM,EAC1EgN,eAAc,UAAExB,EAAUC,QAAQuB,eAAesmD,gBAAnC,aAA+CtzD,EAC7DsM,MAAK,UAAEd,EAAUC,QAAQa,aAApB,aAA6BtM,EAClC6pD,UAAWr+C,EAAUC,QAAQ/K,GAC7BumB,MAAOzb,EAAU9K,GACjByW,OAAQ3L,EAAUoL,KAAKlW,GACvBkpD,eAAc,UAAEp+C,EAAUgC,oBAAZ,aAAE,EAAwB9M,GACxC+M,eAAc,UAAEjC,EAAUiC,sBAAZ,aAA8BzN,EAC5C0N,cAAa,UAAElC,EAAUkC,qBAAZ,aAA6B1N,EAC1C2N,kBAAiB,UAAEnC,EAAUmC,yBAAZ,aAAiC3N,EAClD05E,eAAc,UAAEluE,EAAUoC,oBAAZ,aAAE,EAAwBlN,GACxC8L,oBAAmB,UAAEhB,EAAUC,QAAQe,2BAApB,aAA2CxM,EAC9DyM,mBAAkB,UAAEjB,EAAUC,QAAQgB,0BAApB,aAA0CzM,EAC5D0M,oBAAmB,UAAElB,EAAUC,QAAQiB,2BAApB,aAA2C1M,EAC9D2M,kBAAiB,UAAEnB,EAAUC,QAAQkB,yBAApB,aAAyC3M,EAC1D4M,sBAAqB,UAAEpB,EAAUC,QAAQmB,6BAApB,aAA6C5M,EAClE6M,kBAAiB,UAAErB,EAAUC,QAAQoB,yBAApB,aAAyC7M,EAC1D8M,wBAAuB,UAAEtB,EAAUC,QAAQqB,+BAApB,aAA+C9M,EACtE+M,0BAAyB,UAAEvB,EAAUC,QAAQsB,iCAApB,aAAiD/M,EAC1EtJ,KAAM8U,EAAU9U,KAChB2a,UAAW7F,EAAUjS,QAAQiY,QAAQ9Q,cArDf,QAuDpB,GAEF04E,EAAmBrX,iBAAOwX,EAAqB,SAC/CF,EAAiBtX,iBAAOyX,EAAkB,SAC1CF,EAAevX,iBAAO0X,EAAgB,SAE5C,MAAO,CACLpzB,WAAU,OAAE7jD,QAAF,IAAEA,OAAF,EAAEA,EAAM6jD,WAAWx8C,QAC7BpH,UACA2d,aACAg5D,mBACAC,iBACAC,iBDpCqEK,CAAc,CACnF3/E,SAAQ,OAAEyU,QAAF,IAAEA,OAAF,EAAEA,EAA0BzU,SACpCF,WAAU,OAAE2U,QAAF,IAAEA,OAAF,EAAEA,EAA0B3U,aAGlC8/E,EAAmB/3E,oBAAQ,KAC/B,KAAI,OAACq3E,QAAD,IAACA,OAAD,EAACA,EAAoBpnF,QAAQ,OAAOunF,EAIxC,OAHkCA,EAAehgF,QAAO4b,GACtDikE,EAAmB/zE,SAAS8P,EAAMjS,eAGnC,CAACq2E,EAAgBH,IAEdW,EAAgBh4E,oBAAQ,KAC5B,KAAI,OAACm3E,QAAD,IAACA,OAAD,EAACA,EAAkBlnF,UAAWonF,EAAoB,OAAOI,EAE7D,MAAMQ,EAA0BR,EAAajgF,QAAOiU,GAAG,OACrD4rE,QADqD,IACrDA,OADqD,EACrDA,EAAoB/zE,SAASmI,EAAItK,aAE7B+2E,EAAuBT,EAAajgF,QAAOiU,GAAG,OAAI0rE,QAAJ,IAAIA,OAAJ,EAAIA,EAAkB7zE,SAASmI,EAAIyB,WAEvF,OAAuB,OAAhBiqE,QAAgB,IAAhBA,OAAA,EAAAA,EAAkBlnF,QAASioF,EAAuBD,IACxD,CAACd,EAAkBE,EAAoBI,KAEpC,kBAAEprE,GAAsBF,MAExB,kBAAE2B,GAAsBD,MACxB,qBAAEM,GAAyBD,KAE3BiqE,EAAyC,CAC7C,CACEvyE,IAAKgxE,GACLzuF,MAA8BkG,EAAvBkU,EAAyB,2BAAgC,6BAChE61E,MAAO,OACPh3D,OAAQ,EAAGgM,iBACT,eAAC7J,GAAD,CAAcp0B,KAAMi+B,EAAalK,kBAAmB,CAAEvR,MAAO,UAE/DA,MAAO,QACP0mE,QAASd,EACTe,SAAU,CAAC7kF,EAAO8kF,IAAWA,EAAOp3E,YAAc1N,EAClD+kF,OAAQ,CACNC,QAAS,CAACC,EAAGC,IAAMD,EAAEtrD,YAAYwrD,cAAcD,EAAEvrD,aACjDyrD,SAAU,GAEZC,cAAa,OAAEzB,QAAF,IAAEA,IAAsB,IAEvC,CACEzxE,IAAKgxE,GACLzuF,MAAOkG,EAAE,yBACT+pF,MAAO,OACPh3D,OAAQ,EAAG2hB,aACT,eAACxf,GAAD,CAAcp0B,KAAM4zC,EAAS7f,kBAAmB,CAAEvR,MAAO,UAE3DA,MAAO,QACP0mE,QAASL,EACTM,SAAU,CAAC7kF,EAAO8kF,IAAWA,EAAOnzD,QAAU3xB,EAC9C+kF,OAAQ,CACNC,QAAS,CAACC,EAAGC,IAAMD,EAAE31C,QAAQ61C,cAAcD,EAAE51C,SAC7C81C,SAAU,GAEZC,cAAa,OAAE7B,QAAF,IAAEA,IAAkB,KAwb/BjiD,EApb4C,CAChD,CACEpvB,IAAKgxE,GACLzuF,MAAOkG,EAAE,2BACT+yB,OAAQ,EAAG4hB,eACT,eAACzf,GAAD,CAAcp0B,KAAM6zC,EAAW9f,kBAAmB,CAAEvR,MAAO,UAE7D0mE,QAASN,EACTO,SAAU,CAAC7kF,EAAO8kF,IAAWA,EAAOrrE,UAAYzZ,EAChD+kF,OAAQ,CACNC,QAAS,CAACC,EAAGC,IAAMD,EAAE11C,UAAU41C,cAAcD,EAAE31C,WAC/C61C,SAAU,GAEZlnE,MAAO,QACPs7B,MAAO+pC,EACP8B,cAAa,OAAE3B,QAAF,IAAEA,IAAoB,IAErC,CACEvxE,IAAKgxE,GACLzuF,MAAOkG,EAAE,4BACT+yB,OAAQ,EAAGmF,gBACT,eAAChD,GAAD,CAAcp0B,KAAMo3B,EAAYrD,kBAAmB,CAAEvR,MAAO,UAE9D6mE,OAAQ,CACNC,QAAS,CAACC,EAAGC,IAAMD,EAAEnyD,WAAWqyD,cAAcD,EAAEpyD,YAChDsyD,SAAU,GAEZlnE,MAAO,SAET,CACE/L,IAAKgxE,GACLzuF,MAAOkG,EAAE,8BACTsjB,MAAO,QACPyP,OAAQ,EAAGgE,QAAO2iC,oBAChB,eAAC,GAAD,CACEz0C,aAAcy0C,EACdxzC,QAAM,EACN5H,SAAUlZ,GACR+X,EAAU,CACR1K,UAAW,CACT8kB,aAAc,CAAE/mB,GAAIumB,EAAO2iC,eAAc,OAAEt0D,QAAF,IAAEA,OAAF,EAAEA,EAAOoL,UAO9D,CACE+G,IAAKgxE,GACLzuF,MAAOkG,EAAE,6BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAWl+C,kBAAiBiB,2BACrC,eAAC,GAAD,CACEuJ,YAAY,EACZhB,aAAcxJ,EAAkB3W,IAAM2W,QAAmB3L,EACzD46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBtB,KAE5D4B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBz+C,gBAAiBvW,GAAsBE,EAAQA,EAAMD,SAAW,aAQ9E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,yBACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAWj+C,cAAaiB,uBACjC,eAAC,GAAD,CACEsJ,WAAYpd,GAAiC8T,GAC7CsI,aAAcvJ,EAAc5W,IAAM4W,QAAe5L,EACjD46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBrB,KAE5D2B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBx+C,YAAaxW,GAAsBE,EAAQA,EAAMD,SAAW,aAQ1E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,0BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAWh+C,eAAcY,wBAClC,eAAC,GAAD,CACE0J,WAAYpd,GAAiC0T,GAC7C0I,aAActJ,EAAe7W,IAAM6W,QAAgB7L,EACnD46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBzB,KAE5D+B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBv+C,aAAczW,GAAsBE,EAAQA,EAAMD,SAAW,aAQ3E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,2BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW/9C,gBAAeU,yBACnC,eAAC,GAAD,CACE2J,WAAYpd,GAAiCyT,GAC7CouE,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkB1B,KAE5D2I,aAAcrJ,EAAgB9W,IAAM8W,QAAiB9L,EACrDwO,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBt+C,cAAe1W,GAAsBE,EAAQA,EAAMD,SAAW,aAQ5E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,mCACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW99C,8BACpB,eAAC,GAAD,CACEoJ,aAAcpJ,EAA2B/W,IAAM+W,QAA4B/L,EAC3E46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgB/qD,EAAOnT,IAAIC,UAAU,OAE/DsiB,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBr+C,yBAA0B3W,GAAsBE,EAAQA,EAAMD,SAAW,aAQvF,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,qCACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW79C,4BACpB,eAAC,GAAD,CACE4uE,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgB/qD,EAAOnT,IAAIC,UAAU,OAE/DipB,aAAcnJ,EAAyBhX,IAAMgX,QAA0BhM,EACvEwO,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBp+C,uBAAwB5W,GAAsBE,EAAQA,EAAMD,SAAW,aAQrF,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,mCACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW59C,sBAAqBc,+BACzC,eAAC,GAAD,CACEoJ,WAAYpd,GAAiCgU,GAC7CoI,aAAclJ,EAAsBjX,IAAMiX,QAAuBjM,EACjE46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBnB,KAE5DyB,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBn+C,oBAAqB7W,GAAsBE,EAAQA,EAAMD,SAAW,aAQlF,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,2BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW39C,gBAAeQ,yBACnC,eAAC,GAAD,CACEyJ,WAAYpd,GAAiC2T,GAC7CyI,aAAcjJ,EAAgBlX,IAAMkX,QAAiBlM,EACrD46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBxB,KAE5D8B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBl+C,cAAe9W,GAAsBE,EAAQA,EAAMD,SAAW,aAQ5E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,4BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAWz9C,+BACpB,eAAC,GAAD,CACE+I,aAAc/I,EAA4BpX,IAAMoX,QAA6BpM,EAC7E46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgB/qD,EAAOnT,IAAIC,UAAU,OAE/DsiB,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBh+C,0BAA2BhX,GAAsBE,EAAQA,EAAMD,SAAW,aAQxF,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,+BACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAW19C,oBAAmBW,6BACvC,eAAC,GAAD,CACEqJ,WAAYpd,GAAiC+T,GAC7CqI,aAAchJ,EAAoBnX,IAAMmX,QAAqBnM,EAC7D46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBpB,KAE5D0B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChBj+C,kBAAmB/W,GAAsBE,EAAQA,EAAMD,SAAW,aAQhF,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,yBACTsjB,MAAO,QACPyP,OAAQ,EAAG4mC,YAAWx9C,cAAaM,uBACjC,eAAC,GAAD,CACEwJ,WAAYpd,GAAiC4T,GAC7CwI,aAAc9I,EAAcrX,IAAMqX,QAAerM,EACjD46E,YAAarnE,GACX,eAACilE,GAAD,IAAiBjlE,EAAO42C,eAAgBj8C,EAAkBvB,KAE5D6B,SAAUlZ,GACR+V,EAAc,CACZ1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAChB/9C,YAAajX,GAAsBE,EAAQA,EAAMD,SAAW,aAQ1E,CACEoS,IAAKgxE,GACLzuF,MAAOkG,EAAE,sBACTsjB,MAAO,QACPyP,OAAQ,EAAGgE,QAAO9P,YAEd,eAAC,KAAD,CAASntB,MAAOkG,EAAE,eAAlB,SACE,eAAC,KAAD,UACE,eAAC,GAAD,CAAaoF,MAAO6hB,EAAoBjB,UAAQ,GAAf+Q,QAM3C,CACExf,IAAKgxE,GACLzuF,MAAOkG,EAAE,yBACTsjB,MAAO,QACPyP,OAAQ,EAAGgE,QAAO9P,SAAQ43B,YAAW/rC,YAAWqO,eAC9C,eAAC,GAAD,CACE8F,OAAQA,EACRhC,aAAc45B,EACd/rC,UAAWA,EACXqO,UAAWA,EACX7C,SAAUjB,IACHA,GACLF,EAAU,CACR1K,UAAW,CACT8kB,aAAc,CAAE/mB,GAAIumB,EAAO8nB,UAAWxhC,EAAQ7M,WAO1D,CACE+G,IAAKgxE,GACLzuF,MAAOkG,EAAE,gCACTsjB,MAAO,QACPyP,OAAQ,EAAGjW,iBAAgB68C,YAAWnzD,UAElC,eAAC,GAAD,CACEye,aAAcnI,EAAiB3V,KAAKC,MAAM0V,EAAiBtW,QAAQsJ,EACnEonB,OAAQF,EAAQ,0BAChBG,OAAS7D,IACP,MAAMq3D,EAAoBr3D,EAAM+D,cAAcjyB,MAC9C,OAAO+V,EAAc,CACnB1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAAEp9C,eAAgBxX,OAAOqlF,GAAqBnkF,UAQ9E,CACE+Q,IAAKgxE,GACLzuF,MAAOkG,EAAE,uBACTsjB,MAAO,QACPyP,OAAQ,EAAG3W,MAAOC,EAAYs9C,YAAWnzD,UACvC,eAAC,GAAD,CACEye,aAAc5I,EAAalV,KAAKC,MAAMiV,EAAa7V,QAAQsJ,EAC3DonB,OAAQF,EAAQ,0BAChBG,OAAS7D,IACP,MAAMs3D,EAAWt3D,EAAM+D,cAAcjyB,MACrC,OAAO+V,EAAc,CACnB1I,UAAW,CACTjC,GAAImpD,EACJO,iBAAkB,CAAE99C,MAAO9W,OAAOslF,GAAYpkF,UAO1D,CACE+Q,IAAKgxE,GACLzuF,MAAOkG,EAAE,gCACTsjB,MAAO,QACPyP,OAAQ,EAAGxV,oBACT,eAAC2X,GAAD,CACEp0B,KAAMyc,EAAiBkC,EAAkBlC,GAAgBoC,MAAQ,GACjEkV,kBAAmB,CAAEvR,MAAO,WAIlC,CACE/L,IAAKgxE,GACLzuF,MAAOkG,EAAE,+BACTsjB,MAAO,QACPyP,OAAQ,EAAGgE,QAAOvZ,mBAEd,eAACsZ,GAAD,CAAoBtZ,cAAeA,EAAec,SAAUnB,EAAW4Z,MAAOA,KAIpF,CACExf,IAAKgxE,GACLzuF,MAAOkG,EAAE,mCACTsjB,MAAO,QACPyP,OAAQ,EAAGtV,uBACT,eAACyX,GAAD,CACEp0B,KAAM2c,EAAoBqC,EAAqBrC,GAAmBkC,MAAQ,GAC1EkV,kBAAmB,CAAEvR,MAAO,WAIlC,CACE/L,IAAKgxE,GACLzuF,MAAOkG,EAAE,8BACTsjB,MAAO,QACPyP,OAAQ,EAAGgE,QAAOyyD,oBAEd,eAACpB,GAAD,CACEhjF,MAAOokF,EACPlrE,SAAUusE,IACR1tE,EAAU,CACR1K,UAAW,CAAE8kB,aAAc,CAAE/mB,GAAIumB,EAAOyyD,eAAc,OAAEqB,QAAF,IAAEA,IAAQ,cAS5C1hF,QAAO2hF,GAChCrC,EAAgBxzE,SAAS61E,EAAiBvzE,OAAmBuzE,EAAiBlsC,OAiFvF,OACE,eAAC,GAAD,CACEjY,QAAS,IAAImjD,EAAe3gF,QAAO61C,IAAWA,EAAOJ,UAAUjY,GAC/DzW,WAAYA,EACZioB,OAAQ/6B,GAAOA,EAAI2Z,MACnByO,OAAQ,CAAEpc,EAAG,MACb9K,SA9EmD,CACrDpS,EACA89E,EACAe,EACAC,KAEA,MAAMC,EAAUD,EAAuBE,kBAAkB3qF,KAAI4qF,GAAeA,EAAYp0D,SAEtF,eAAgBq0D,EAChB,aAAcC,EACd,WAAYC,GACVtB,EAEEuB,EAAkBD,QAAwCx7E,EAC1D07E,EAAoBH,QAA4Cv7E,EAChE27E,EAAuBL,QAAkDt7E,EAI/E,GAFA44E,EAAauC,GAGXA,EAAQrpF,SAAWsuB,EAAWtuB,SACX,OAAlBonF,QAAkB,IAAlBA,OAAA,EAAAA,EAAoBpnF,UAAW6pF,EAGhC,OA7BFxC,OAAsBn5E,GACtBi5E,OAAoBj5E,QACpB+4E,OAAgB/4E,GA8BhB,MAAM47E,EAAsC,GAC3B,OAAjBF,QAAiB,IAAjBA,KAAmB9pF,SAAQmd,IACzB,MAAM8sE,EAAYxC,EAAe10E,MAAKsQ,GAASlG,IAAYkG,EAAM3f,QAC7DumF,GAAWD,EAAqBhwC,KAAKiwC,MAG3C,MAAMC,EAAkB/Z,iBAAO6Z,EAAsB,aAAanrF,KAChE,EAAGuS,eAAgBA,IAGf+4E,EAAkC,GACzB,OAAfN,QAAe,IAAfA,KAAiB7pF,SAAQq1B,IACvB,MAAM+0D,EAAU1C,EAAa30E,MAAK2I,GAAO2Z,IAAU3Z,EAAIhY,QACnD0mF,GAASD,EAAmBnwC,KAAKowC,MAGvC,MAAMC,EAAela,iBAAOga,EAAoB,aAAatrF,KAAI,EAAGuS,eAAgBA,IAE9Ek5E,EAAoBC,eAAK,IAC1BL,KACH,OAAIH,QAAJ,IAAIA,IAAwB,MACzBM,IAGCG,EAAYra,iBAAOga,EAAoB,WAAWtrF,KAAI,EAAGse,aAAcA,IACvEstE,EAAiBF,eAAK,IAAIC,KAAW,OAAIV,QAAJ,IAAIA,IAAqB,KAEpE,OAAIY,qBAAWpD,EAAD,OAAqByC,QAArB,IAAqBA,IAAwB,IAAI7pF,QAC7DmnF,OAAoBj5E,GACpB+4E,OAAgB/4E,QAChBm5E,EAAsBwC,IAIpBW,qBAAWtD,EAAD,OAAmB0C,QAAnB,IAAmBA,IAAqB,IAAI5pF,QACxDmnF,EAAoBoD,QACpBtD,OAAgB/4E,KAIlBm5E,EAAsB+C,GACtBjD,EAAoBoD,QACpBtD,EAAgB0C,KAUd17D,WAAY,CACVC,gBAAiB,CAAC,IAAK,KAAM,MAC7BC,gBAAiB,GACjBC,iBAAiB,ME1nBnBvhB,GAAS6T,aAAOiC,KAAW;;;;;;;;;wBAST,EAAGtV,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;wBAG1C,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;;aAGrD,EAAGgT,WAAYA,EAAMC,OAAOnT,IAAIE,UAAU;;EAM1CowF,GAAiC,EAC5CtmE,cACAzH,WACAmqE,kBACA6D,oBAEA,MAAM,QAAE3lD,GCjC+B2lD,KACvC,MAAM,EAAEtsF,GAAMqf,YAAe,oBAEvB,wBAAEzB,GAA4BD,MAC9B,YAAE9H,GAAgB/B,KA+HlBy4E,EA7Ha,CACjB,CACE5sE,MAAO3f,EAAE,2BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,UAAWC,EAAYE,aAEzB,CACE4J,MAAO3f,EAAE,4BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,SAAS,GAEX,CACE+J,MAAO3f,EAAE,8BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,SAAS,GAEX,CACE+J,MAAO3f,EAAE,6BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAAO,OAAEgI,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAcgyD,cAE3D,CACEx6C,MAAO3f,EAAE,yBACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAAO,OAAEgI,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAciyD,UAE3D,CACEz6C,MAAO3f,EAAE,0BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAAO,OAAEgI,QAAF,IAAEA,OAAF,EAAEA,EAAyB3I,SAAS9M,GAAckyD,WAE3D,CACE16C,MAAO3f,EAAE,2BACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAAS02E,IAAa,OAAI1uE,QAAJ,IAAIA,OAAJ,EAAIA,EAAyB3I,SAAS9M,GAAcmyD,aAE5E,CACE36C,MAAO3f,EAAE,mCACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcoyD,mBAE1D,CACE56C,MAAO3f,EAAE,qCACToF,MAAOmjF,GACPiE,MAAO,EACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcqyD,iBAE1D,CACE76C,MAAO3f,EAAE,mCACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcsyD,kBAE1D,CACE96C,MAAO3f,EAAE,2BACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcuyD,YAE1D,CACE/6C,MAAO3f,EAAE,+BACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcwyD,iBAE1D,CACEh7C,MAAO3f,EAAE,4BACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASgI,EAAwB3I,SAAS9M,GAAcyyD,yBAE1D,CACEj7C,MAAO3f,EAAE,yBACToF,MAAOmjF,GACPiE,MAAO,GACP52E,SAAS,GAEX,CACE+J,MAAO3f,EAAE,sBACToF,MAAOmjF,GACPiE,MAAO,GACP52E,SAAS,GAEX,CAAE+J,MAAO3f,EAAE,yBAA0BoF,MAAOmjF,GAAiBiE,MAAO,GAAI52E,SAAS,GACjF,CACE+J,MAAO3f,EAAE,gCACToF,MAAOmjF,GACPiE,MAAO,GACP52E,SAAS,GAEX,CAAE+J,MAAO3f,EAAE,uBAAwBoF,MAAOmjF,GAAeiE,MAAO,GAAI52E,SAAS,GAC7E,CACE+J,MAAO3f,EAAE,gCACToF,MAAOmjF,GACPiE,MAAO,GACP52E,SAAS,GAEX,CACE+J,MAAO3f,EAAE,+BACToF,MAAOmjF,GACPiE,MAAO,GACP52E,SAAS,GAEX,CACE+J,MAAO3f,EAAE,mCACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASC,EAAY3B,sBAEvB,CACEyL,MAAO3f,EAAE,8BACToF,MAAOmjF,GACPiE,MAAO,GACP52E,QAASC,EAAY3B,uBAIU/K,QAAO61C,GAAUA,EAAOppC,UAI3D,MAAO,CAAE+wB,QAFOvkB,kBAAQmqE,EAAiB,WDpGrBE,CAAyBH,GAE7C,OACE,eAAC,GAAD,CACEvmE,YAAaA,EACblB,uBAAuB,EACvBvG,SAAUA,EACVlZ,MAAOqjF,EACPzjE,eAhB0B,yBAiB1B0C,aAAc,CAACpY,EAAOqY,KAAY,IAAD,IAC/B,QAAKA,IACL,oBACEA,EAAOhI,aADT,aACE,EAAc7O,WAAW47E,oBAAoBz3E,SAAS3F,EAAMo9E,4BAD9D,WAIF5iE,KAAK,WACLo2D,WAAY,IACZyM,YAAY,aACZ9mF,QAAS8gC,KEvDFimD,GAAqB96E,IAAI;;;;;;ECMhCjD,GAASyT,aAAO4L,KAAW;;EASpB2+D,GAAgC,EAAGC,SAAQvuE,+BACtD,MAAM,EAAEve,GAAMqf,YAAe,oBAEtB0tE,GAAmB,QAAEx6E,IAAag1E,aAGvCqF,GAAoB,CACpBlgF,QAASnN,EAAaC,aACtBuT,YAAasI,GAAYtO,OAAOmX,KAAK7I,EAAS2xE,iBAAiB1xB,OAGjE,OACE,eAAC,GAAD,CACEj7D,KAAK,UACLkS,QAASA,EACT8R,QAAS,KACP,KAAI,OAAC9F,QAAD,IAACA,OAAD,EAACA,EAA0BzU,YAAayU,EAAyB3U,WAAY,OACjF,MAAM,SAAEE,EAAF,WAAYF,GAAe2U,EACjCwuE,EAAkB,CAChBt6E,UAAW,CACTw4E,QAAS6B,EACThjF,WACAF,iBAVR,SAeG5J,EAAE,iBCvCI6nC,GAAYvlB,aAAOC,KAAK;;EAIxB8rB,GAAU/rB,aAAOmM,KAAK;;;ECO7Bw+D,GAAiB,CACrB1E,GACAA,GACAA,GACAA,GACAA,GACAA,IAGI2E,GAAgB,CAAC3E,MAA2B0E,IAE5CE,GAA+B,CACnC5E,GACAA,GACAA,GACAA,IAGW6E,GAA2B,KACtC,MAAM,EAAEptF,GAAMqf,YAAe,oBACvB,YAAExJ,GAAgB/B,MAClB,qBAAEI,EAAF,YAAwB6B,EAAxB,mBAAqCnB,EAArC,oBAAyDW,GAAwBM,EACjFy2E,EAAgB13E,GAAsBW,GACrCkzE,EAAiB4E,GAAsB98E,oBAC5C+7E,EAAgBY,GAAgBD,KAE3BrE,EAAgB0E,GAAqB/8E,uBACrCgO,EAA0BgvE,GAA+Bh9E,sBAYhE,OAVAgK,sBAAU,KACR,GAAIrG,EAAsB,CACxB,MAAMyyB,EAAU5wB,EACZ0yE,EACAA,EAAgBt/E,QAAO61C,GAAUA,IAAWupC,KAChD8E,EAAmB,IAAI1mD,KAAYwmD,QAGpC,CAACj5E,IAGF,eAACyf,GAAD,CACEa,YAAax0B,EAAE,eACf00B,SAAU10B,EAAE,kBACZu0B,YAAa42B,GAHf,SAKE,gBAAC,KAAD,CAAKtzB,OAAQ,CAAC,EAAG,IAAKlV,MAAO,CAAEqrB,cAAe,QAA9C,UACE,eAAC,KAAD,CAAKrZ,KAAM,GAAX,SACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAK64D,GAAI,CAAE74D,KAAM,GAAK84D,GAAI,CAAE94D,KAAM,GAAlC,SACE,gBAAC,KAAD,CAAKkD,OAAQ,CAAC,EAAG,GAAjB,UACE,eAAC,KAAD,CAAKlD,KAAM,GAAX,SACE,eAAC5G,GAAD,CAAYj0B,MAAOkG,EAAE,qBAEvB,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAACsD,GAAD,CACE3Z,SAAUivE,EACVhvE,yBAA0BA,EAC1BF,mBAAiB,WAKzB,eAAC,KAAD,CAAKmvE,GAAI,CAAE74D,KAAM,GAAK84D,GAAI,CAAE94D,KAAM,GAAlC,SACE,gBAAC,KAAD,CAAKkD,OAAQ,CAAC,EAAG,GAAjB,UACE,eAAC,KAAD,CAAKlD,KAAM,GAAX,SACE,gBAAC,KAAD,CAAKkD,OAAQ,GAAb,UACE,eAAC,KAAD,UACE,eAAC9J,GAAD,CAAYj0B,MAAOkG,EAAE,sBAEvB,eAAC,GAAD,UACE,eAAC83B,GAAD,CAAuBh+B,MAAOkG,EAAE,uCAItC,eAAC,KAAD,CAAK20B,KAAM,GAAX,SACE,eAAC03D,GAAD,CACE/tE,SAAU+uE,EACV5E,gBAAiBA,EACjB1iE,YAAa/lB,EAAE,6BACfssF,cAAeA,WAMvB,eAAC,KAAD,CAAK/tD,KAAK,OAAV,SACE,eAAC,GAAD,CAAWtb,QAAQ,MAAMD,MAAM,SAA/B,SACE,eAAC6pE,GAAD,CACEC,OAAQlE,EACRrqE,yBAA0BA,aAMpC,eAAC,KAAD,CAAKoW,KAAM,GAAX,SACE,eAACkB,GAAD,UACE,eAAC,GAAD,CACE4yD,gBAAiBA,EACjBC,aAAc4E,EACd/uE,yBAA0BA,EAC1BrK,qBAAsBA,EACtBy0E,yBAA0B5yE,cCnG3B23E,GAAuB,KAClC,MAAM,gBAAE35E,GAAoBC,GAAqBC,2BAC3C,UAAE6C,EAAF,QAAavE,GAAYgE,KACzBo3E,EAAkB7f,GAAWz9D,WAE7B8H,EAAWC,eACXxL,EAAW8E,eAgBjB,OAdA4I,GAAmB,CACjBH,UAAWxR,GAAoBilF,cAGjCC,MAAgB,KACd,MAAM3rF,EAAO0K,EAASC,SAAS5G,MAAM,KAAK,GAE1CkS,EAAU,IAAGjW,OACZ,CAAC6R,IAEJwG,sBAAU,KACJzD,GAAWqB,EAAS,cAAe,CAAEpW,SAAS,MACjD,CAACoW,EAAUrB,IAEPvE,EACL,eAACwQ,GAAD,IAEA,gBAAC,GAAD,YACIjM,GACA,eAAC8sB,GAAD,CAAOtgB,MAAM,OAAb,SACE,eAACgsB,GAAD,MAGJ,eAAC,GAAD,UACE,gBAAC,KAAD,WACGx4B,GAAa,eAAC,KAAD,CAAO5U,KAAK,aAAa27B,QAAS,eAACqqD,GAAD,MAChD,eAAC,KAAD,CAAOhmF,KAAK,cAAc27B,QAAS,eAAC2sC,GAAD,MACnC,eAAC,KAAD,CACEr6C,OAAK,EACLjuB,KAAK,MACL27B,QACE,eAACzI,GAAD,CAAgBvxB,MAAO,CAACoE,GAA8BotB,mBAAtD,SACE,eAACy4C,GAAW19D,SAAZ,CAAqBhL,MAAOuoF,EAA5B,SACE,eAACzJ,GAAD,UAKR,eAAC,KAAD,CAAOhiF,KAAK,aAAa27B,QAAS,eAACgwB,GAAD,MAClC,eAAC,KAAD,CAAO3rD,KAAK,mBAAmB27B,QAAS,eAACspD,GAAD,MACxC,eAAC,KAAD,CAAOjlF,KAAK,kBAAkB27B,QAAS,eAACuvD,GAAD,MACvC,eAAC,KAAD,CAAOlrF,KAAK,IAAI27B,QAAS,eAAC,KAAD,CAAUrK,GAAG,OAAOzxB,SAAO,eCnDxD+rF,GAAezhF,KACrBb,aAAKpP,EAAOQ,kBAAekT,EAAW,CAAEi+E,YAAa,IAErD,MAAMC,GAAmB,KACvB,MAAMC,EAA4Bj6E,GAAqB3D,YACjD,UAAEqI,EAAF,WAAaa,EAAb,OAAyB1J,GAAWoI,GAAQg2E,EAA0Bx1E,aACrEy1E,EAAYC,GAAiB59E,sBAAWmI,IACvCnG,QAAS67E,GAAgB/7E,KCfH,GAAG6F,yBACjC,MAAM,YAAEhI,EAAF,cAAe4I,GAAkBb,KACjCE,EAAWC,eAEXi2E,EAAqBt1E,wBACzBlY,UACMi7B,EAAExpB,OAAShO,GAAuBE,SACpC0T,UACMY,IACNX,EAAS,SAAU,CAAEpW,SAAS,OAGlC,CAAC+W,EAAeX,EAAUD,IAG5BqC,sBAAU,IACD,KACM,OAAXrK,QAAW,IAAXA,KAAao+E,UAEd,CAACp+E,IAEJqK,sBAAU,KACG,OAAXrK,QAAW,IAAXA,KAAauK,iBAAiB,UAAW4zE,GAElC,KACM,OAAXn+E,QAAW,IAAXA,KAAawK,oBAAoB,UAAW2zE,MAE7C,CAACn+E,EAAam+E,KDXjBE,CAAiB,CACfr2E,mBAAoB+1E,EAA0Bx1E,aAEhD,MAAMkX,EAASxkB,KAgBf,OAdAoP,sBAAU,KACR,GAAI7B,IAAc7I,EAAQ,CACDhP,iBACf0Y,IACN40E,GAAc,IAGhB70E,MAGD,IAIC40E,GAAcE,EAAoB,eAACrrE,GAAD,IAGpC,eAAC,KAAD,CAAgB9T,MAAOjB,GAAW2hB,OAAQA,EAA1C,SACE,gBAAC,KAAD,WACE,eAAC,KAAD,CAAOztB,KAAK,UAAU27B,QAAS,eAACF,GAAD,MAC/B,eAAC,KAAD,CACEz7B,KAAK,KACL27B,QACE,eAAC7pB,GAAqB5D,SAAtB,CAA+BhL,MAAO6oF,EAAtC,SACE,eAAC16D,GAAD,UACE,eAACm6D,GAAD,gBAUHc,GAAgB,KAC3B,MAAMC,EAAmBt+E,GAAYE,WAErC,OACE,eAACq+E,GAAA,EAAD,CAAgBr2E,OAAQy1E,GAAxB,SACE,gBAAC,KAAD,CAAe7+E,MAAOA,GAAtB,UACE,eAACM,GAAD,IACA,eAACY,GAAYC,SAAb,CAAsBhL,MAAOqpF,EAA7B,SACE,eAAC,KAAD,UACE,eAAC,KAAD,UACE,eAACT,GAAD,gBE/DCW,OAZUC,IACnBA,GAAeA,aAAuB/2E,UACxC,+BAAqBg3E,MAAK,EAAGC,SAAQC,SAAQC,SAAQC,SAAQC,cAC3DJ,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAOL,GACPM,EAAQN,O,OCMd/xF,IACAsO,KAEArG,IAAMqqF,OAAO5hD,KAEb,MAAM6hD,GAAYppC,SAASqpC,eAAe,QAC7BC,qBAAWF,IACnBr8D,OAAO,eAACy7D,GAAD,KAKZG,O","file":"static/js/main.8d66dd5f.chunk.js","sourcesContent":["const Foundation = {\n smallRadius: '4px',\n borderRadius: '11px',\n height: '38px',\n buttonWidth: '143px',\n borderWidth: '2px',\n}\n\nmodule.exports = { Foundation }\n","const Typography = {\n titleWeight: '500',\n}\n\nmodule.exports = { Typography }\n","/* eslint-disable @typescript-eslint/no-var-requires */\nconst { Colors } = require('./colors')\n\nconst Card = {\n background: Colors.grey1,\n mapCardPadding: '30px',\n}\n\nmodule.exports = { Card }\n","/* eslint-disable @typescript-eslint/no-var-requires */\nconst { Colors } = require('./colors')\n\nconst Input = {\n height: {\n small: '32px',\n large: '55px',\n },\n borderColor: Colors.grey2,\n disabledBackgroundColor: Colors.grey2,\n disabledColor: Colors.grey3,\n}\n\nmodule.exports = { Input }\n","const Modal = {\n header: {\n padding: {\n vertical: '30px',\n horizontal: '48px',\n bottom: '22px',\n },\n titleFontSize: 24,\n },\n body: {\n padding: {\n vertical: '30px',\n horizontal: '48px',\n },\n },\n title: {\n lineHeight: '44px',\n fontSize: '24px',\n },\n}\n\nmodule.exports = { Modal }\n","const Colors = {\n white: 'white',\n black: 'black',\n primary: '#FF7C33',\n primaryGradient: 'linear-gradient(270deg, #FF9533 0%, #FF7C33 100%)',\n olive: '#546154',\n olive2: '#BBC0BB',\n olive3: '#768176',\n olive4: '#444E45',\n olive5: '#242825',\n grey1: '#F6F6F6',\n grey2: '#DDDFDD',\n grey3: '#999898',\n errorRed: '#FF4D4F',\n transparent: 'transparent',\n trafficLightGreen: '#80E152',\n trafficLightRed: '#FF8970',\n trafficLightField: '#98A098',\n trafficLightNeutral: '#DFDFDF',\n trafficLightYellow: '#FFE070',\n grainHumedityBrown: '#834124',\n grainHumedityLightBrown: '#C2854C',\n grainHumedityOrange: '#FFB84F',\n grainHumedityYellow: '#FAFF00',\n grainHumedityLightGreen: '#43D341',\n grainHumedityGreen: '#0E7115',\n yieldOrange: '#FF7C33',\n yieldRed: '#EA3E27',\n yieldYellow: '#FAFF00',\n yieldLightGreen: '#43D341',\n yieldGreen: '#0E7115',\n yellow: '#FAFF00',\n blue: '#0E2BFF',\n inputOrange: '#FF9A5C',\n new: {\n primary: {\n 100: '#FFB085',\n 200: '#FFA370',\n 300: '#FF965C',\n 400: '#FF8947',\n 500: '#FF7C33',\n 600: '#E6702E',\n 700: '#CC6329',\n 800: '#B35724',\n 900: '#994A1F',\n },\n secondary: {\n 100: '#80F8CD',\n 200: '#66F7C3',\n 300: '#4CF6B9',\n 400: '#33F5AF',\n 500: '#00F29B',\n 600: '#00DA8C',\n 700: '#00C27C',\n 800: '#00A96D',\n 900: '#00915D',\n },\n baseColor: {\n 50: '#F4F4F5',\n 100: '#E9EAEB',\n 200: '#D3D4D6',\n 300: '#BDBFC2',\n 400: '#A7AAAE',\n 500: '#7C7F85',\n 600: '#666A71',\n 700: '#50555D',\n 800: '#3A3F48',\n 850: '#2F353E',\n 900: '#242A34',\n },\n trafficLightGreen: '#00C27C',\n trafficLightRed: '#EA5642',\n trafficLightYellow: '#F2AE00',\n timelineViolet: '#C684FA',\n timelineLightBlue: '#84CFFA',\n },\n}\n\nmodule.exports = { Colors }\n","const APP_ENV = process.env.REACT_APP_ENV\n\nexport const config = {\n env: APP_ENV,\n version: process.env.REACT_APP_VERSION,\n apiUrl: process.env.REACT_APP_API_URL,\n mapboxToken: process.env.REACT_APP_MAPBOX_ACCESS_TOKEN!,\n sentryDsn: process.env.REACT_APP_SENTRY_DSN,\n isSentinelImageryOn: process.env.REACT_APP_SENTINEL_IMAGERY_ON === 'true',\n amplitudeKey: process.env.REACT_APP_AMPLITUDE_KEY,\n}\n","import * as Sentry from '@sentry/react'\nimport { Integrations } from '@sentry/tracing'\n\nimport { config } from 'config'\n\nconst init = () => {\n Sentry.init({\n dsn: config.sentryDsn,\n integrations: [new Integrations.BrowserTracing()],\n tracesSampleRate: 1.0,\n environment: config.env,\n release: `web@${config.version}`,\n })\n}\n\nexport const SentryService = {\n init,\n}\n","import accountSettingsEnLocales from './en/account-settings.json'\nimport accountSettingsEsLocales from './es/account-settings.json'\nimport commonEnLocales from './en/common.json'\nimport commonEsLocales from './es/common.json'\nimport commonEsPaLocales from './es-pa/common.json'\nimport companySettingsEnLocales from './en/company-settings.json'\nimport companySettingsEsLocales from './es/company-settings.json'\nimport dashboardEnLocales from './en/dashboard.json'\nimport dashboardEsLocales from './es/dashboard.json'\nimport fieldSettingsEnLocales from './en/field-settings.json'\nimport fieldSettingsEsLocales from './es/field-settings.json'\nimport loginEnLocales from './en/login.json'\nimport loginEsLocales from './es/login.json'\nimport lotDashboardEnLocales from './en/lot-dashboard.json'\nimport lotDashboardEsLocales from './es/lot-dashboard.json'\nimport lotDashboardEsPaLocales from './es-pa/lot-dashboard.json'\nimport lotSettingsEnLocales from './en/lot-settings.json'\nimport lotSettingsEsLocales from './es/lot-settings.json'\nimport mapEnLocales from './en/map.json'\nimport mapEsLocales from './es/map.json'\nimport navbarEnLocales from './en/navbar.json'\nimport navbarEsLocales from './es/navbar.json'\nimport seasonSettingsEnLocales from './en/season-settings.json'\nimport seasonSettingsEsLocales from './es/season-settings.json'\nimport settingsEnLocales from './en/settings.json'\nimport settingsEsLocales from './es/settings.json'\nimport internalMetricsEnLocales from './en/internal-metrics.json'\nimport internalMetricsEsLocales from './es/internal-metrics.json'\nimport onboardingEsLocales from './es/onboarding.json'\nimport onboardingEnLocales from './en/onboarding.json'\nimport lotsManagementEsLocales from './es/lots-management.json'\nimport lotsManagementEnLocales from './en/lots-management.json'\n\nexport const Locales = {\n accountSettingsEnLocales,\n accountSettingsEsLocales,\n commonEnLocales,\n commonEsLocales,\n commonEsPaLocales,\n companySettingsEnLocales,\n companySettingsEsLocales,\n dashboardEnLocales,\n dashboardEsLocales,\n fieldSettingsEnLocales,\n fieldSettingsEsLocales,\n loginEnLocales,\n loginEsLocales,\n lotDashboardEnLocales,\n lotDashboardEsLocales,\n lotDashboardEsPaLocales,\n lotSettingsEnLocales,\n lotSettingsEsLocales,\n mapEnLocales,\n mapEsLocales,\n navbarEnLocales,\n navbarEsLocales,\n seasonSettingsEnLocales,\n seasonSettingsEsLocales,\n settingsEnLocales,\n settingsEsLocales,\n internalMetricsEnLocales,\n internalMetricsEsLocales,\n onboardingEsLocales,\n onboardingEnLocales,\n lotsManagementEsLocales,\n lotsManagementEnLocales,\n}\n","import {\n ApolloCache,\n ApolloError,\n BaseMutationOptions,\n DefaultContext,\n OperationVariables,\n} from '@apollo/client'\nimport { notification } from 'antd'\nimport * as Sentry from '@sentry/react'\nimport { getI18n } from 'react-i18next'\n\ntype ErrorClientOptions = BaseMutationOptions<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n OperationVariables,\n DefaultContext,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ApolloCache\n>\n\nconst errorHandler = (\n error: ApolloError,\n _clientOptions?: ErrorClientOptions,\n message?: string,\n) => {\n console.log(error)\n Sentry.captureException(error)\n notification.error({\n message: message ?? getI18n().t('messages.genericErrorTryAgain', { ns: 'common' }),\n })\n}\n\nexport const GraphQLUtils = {\n errorHandler,\n}\n","import { nanoid } from 'nanoid'\nimport { kml, Response } from '@tmcw/togeojson'\nimport path from 'path'\nimport { Feature, GeometryCollection, Polygon, featureCollection } from '@turf/helpers'\nimport { flatMap } from 'lodash'\n\nconst NANO_ID_SIZE = 5\n\nconst generateId = () => nanoid(NANO_ID_SIZE)\n\nconst convertGeometryCollectionToPolygon = (feature: Feature) => {\n if (feature.geometry.type === 'GeometryCollection') {\n const polygonGeometries = feature.geometry.geometries.map(geometriaPolygon => ({\n type: geometriaPolygon.type,\n coordinates: [...geometriaPolygon.coordinates],\n }))\n\n return polygonGeometries.map(geometry => ({\n type: 'Feature',\n geometry,\n properties: {},\n }))\n }\n\n return [feature]\n}\n\nconst kmlFileToGeoJson = async (file: File) => {\n const text = await file.text()\n const parser = new DOMParser()\n const doc = parser.parseFromString(text, 'text/xml')\n\n // The library doesn't support networklinks (https://github.com/placemark/togeojson#why-doesnt-togeojson-support-networklinks)\n // in this cases the uploaded KML will be without features. One of the differences with this kind of documents is\n // that They have the \"xsi:schemaLocation\" property inside of Document markup \n // We can try delete this property manually and maybe the document works.\n const geoJson = kml(doc)\n\n const transformedFeatures = flatMap(\n geoJson.features,\n convertGeometryCollectionToPolygon,\n ) as unknown as Feature[]\n\n const newGeoJson = featureCollection(transformedFeatures) as unknown as Response\n\n // this workaround is to remove the z-axis, which is set to 0 by default.\n newGeoJson.features.forEach(feature =>\n feature.geometry.coordinates[0].forEach(coordinate => {\n // If we have z-axis we remove it\n if (coordinate.length === 3) {\n coordinate.pop()\n }\n }),\n )\n return newGeoJson\n}\n\nconst removeAccents = (text: string) => text.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '')\n\nconst checkFileExtension = (fileName: string, extension: string) =>\n path.extname(fileName) === extension\n\nexport const MiscUtils = {\n generateId,\n kmlFileToGeoJson,\n removeAccents,\n checkFileExtension,\n}\n","export const VALIDATIONS = {\n PASSWORD_MIN_LENGTH: 8,\n}\n","export const MAP = {\n DEFAULT_CENTER: { LATITUDE: -31.3922, LONGITUDE: -58.0169 },\n DEFAULT_TRANSITION: { transitionDuration: 2000 },\n ZOOM: {\n DEFAULT: 8,\n CLOSE: 14,\n ICONS: {\n ENABLED: 12.5,\n CLOSE: 14,\n },\n },\n STYLES: {\n SATELLITE_STREET: 'mapbox://styles/mapbox/satellite-streets-v11?optimize=true',\n },\n COUNTRIES: {\n AR: 'ar',\n },\n LANGUAGES: {\n ES: 'es',\n },\n STATIC_IMAGES: {\n SIZE: '512x400',\n URL: 'https://api.mapbox.com/styles/v1/mapbox/satellite-streets-v11/static/',\n },\n}\n","export const TABLE = {\n MAX_TABLE_DATA: 3,\n}\n","export const DATE_FORMATS = {\n STRING_MONTH: 'DD MMM YYYY',\n DATE: 'YYYY MM DD',\n DATE_WITH_SEPARATOR: 'YYYY-MM-DD',\n DAY: 'DD MMM',\n HOURS_AND_SECS: 'HH:mm',\n YEAR_MONTH: 'YYYY-MM',\n FULL_DATE: 'DD-MM-YYYY',\n}\n","export const STORAGE_KEYS = {\n USER_TOKEN: 'token',\n ORDER_DASHBOARD_LOTS_BY: 'orderDashboardLotsBy',\n USER_LANGUAGE: 'i18nextLng',\n}\n","import { Language, Locale, LocaleLanguage } from 'types/i18n'\n/**\n * Locale format lng-REGION (es-AR)\n * Language => 2 letters, ISO 639-1\n * REGION => optional, 2 letters, uppercase, ISO 3166-1 alpha-2\n */\n\ntype LanguageCode = {\n [K in LocaleLanguage]: Language\n}\n\nexport const LANGUAGE: LanguageCode = {\n en: 'en',\n es: 'es',\n 'es-PA': 'es',\n}\n\nexport const LANGUAGE_CODES = {\n ES: 'es',\n US: 'en',\n}\n\nexport const LOCALE_CODES: { ES_PA: Locale } = {\n ES_PA: 'es-PA',\n}\n","export const EXTERNAL_LINKS = {\n AGROSALES: process.env.REACT_APP_AGROSALES_URL,\n WEATHER_SPONSOR: 'https://www.visualcrossing.com',\n}\n","export const UNITS = {\n KG_TONS_RATIO: 1 / 1000,\n}\n","export const FILE_EXTENSIONS = {\n KML: '.kml',\n}\n","export default __webpack_public_path__ + \"static/media/login-card-weed.76671d1c.png\";","export default __webpack_public_path__ + \"static/media/login-card-rice.054c4df9.png\";","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADEAAAAxCAYAAABznEEcAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAlpSURBVHgB7VhbiF5XFV5773P5z3+ZS2JiKCUiMpRY24k1xTqa1EIkooYaEUUFA+qDVEF88zFB+iw+9Ml6V7ChRQ0tYnqZ2HhjGpx2GGIgWIJorYaZZC7/5Zyzz96utfc++5x/mIn/lPZF/jVz+G/n7L2+tb71rXUOwNjGNraxjW1sOxuDt8i01uz5haszjBUPhkKcwI3eKwI+CcpserPQ+q9KFc9yLS4898wvrp05c0bBG7S3BMSF3y3OBEn0aBKHH282omYjDiEMAuAMt8NDawVFoSDLC+gPUtlPs/NKy7PH3nfPErwBe9NBPPvHl7+UNOJvd1rJHe1mAxAEBAiA/Adt/ilLoJQCiUCkLKA3SGF9s/d6P8u/+eEjdz/BGNO72TOAN9F+c+nl77Zbydf3TLZ5BwE04ggzIIBz7gDgH74qhSAwG2GhQQoJgeAgBD/ANro/eeHPS21c6vHd7LvrTBDX5/909VgY61NxGLwnjuMInVjt9lN0TX9y31SHNZPYAIgwA4JbClEmTHgJBCLRymajwCPDbKRpBl08Vm6u571e9pnjc/f+alSfdgVifnFxSsvoR40wOJnEEZ9oJ4DUgRAjmRcFbHT76LSAvZNtiMKAomuzAGDpVAXCZUSZrEhVQJZhfSCItc0u3FhdvzHQ6r6PPTD7j1H8GplOBKDIw/lWFBwmrk90mjDRSiAOQxMKKlRyPM1yE2mOGaCj7jwzRU35oO+1+cwQI9dEJ42ZE4DBoSzuG2x0H8UTT4/iGx/lpPn5+Uae8u+1ovAwRR85D9OdFhYtZiEUhvdRFJjPE83EgOGYBcaZd57V0bjacG+NEe3oGlIxUjPM4Mlfv/DSXaP4NxKILNozFwfhKaIOqg60MBMhOmqdtM6RfAqkjggIFKdYmz9w0S8PgGEOD2cKHBBBoKYLpU/ACDYSCGD6s0kjFCSXjQglUwjjtN2/UkNDIVYCM1oEVcgr2/oNdxlz+mvWD0SAxV/cCyPY/6yJc+eWI4D8oSSODWXIP4lFTPQIkdB1mlCkjQo53+tqbz77U21N0CsVNwnCgGoJ60ppWytTnYSycfTFxStfyRrsl8cPHVrZyccd1eny5cthj7UPdVrRSdznbDuJRYBpDpAqIUYpjkI8AteJSTatdJo8uBpgt9G+LJdwa6MLvX5WKVlZO7hWoakRSmyEGWz2B+uDQfrzTOqzxx+4598jgfjDlVffwQbp2VY7+fxUuxXarisM57ULK0WWaECbCyejJedJVoejPrw+9hT4z+oaUjM0wTD05A64W4cCQoqXI5BBmsNGbwDr3f6VNM++evz9s5duC2L+peVPY5P6zvRk+849qECJUyBbA2UVaL8R2+Ik4ZCYum53gL1DGucoWySdRMeVW5tGhtvN2MgzBcAAMCLg1qDD9A+asQoHRCKQPmavl3V76RdOfHD2yW1BPLfwykfjIHpqst1svm26A53EqhBF20cJylrVvvsSr+m7FClyc23DzEREERon6FRphj1pHKIeg+sjoNDTh23xRLuOXrj5ihpplkmzxiZmZHVtY1UqePCh+9+9TOf7wr7w+7/cwSH4GWp9cwI3acaWQpYazO9hOe/eOVS4F3bb1GyAs5NpWiU9qCOTU+RQjuMFSXQ5T+1UMppkmRltAwGUcW58oXUSpHYrT/asbWz+4No1fXRmhqVeYoMgPB2HYm8L554EoySQp6NY2YUZKtXeqQ7Q9aHJgq0hU7B40OeO6/CCuz7Cho+hTNSkmX4ps0bZpVpCf+97dWXpFP1uQJASaQZfJgqYTUS9fbhGtQMI7SQR+4h33I4c3MxRtFbgwERYW6Wv9tZi2HG7m6Orm3rrPHO3IwZIHGGYNTt9bnk5MnRayeBdUcgOlvwnU87x0kldi0oFD7xKlQ6VElkSnWKuaE4yIsCrc8AOgENrWTQuE8rQtHC9w2dGWyFxinh032a834AQLJ7FzULuFreFRcrADE2Yck3MFURZ4O5kD83XDR8aLICbIa86YTjq2qOoq54H4EZ2+13FCudKK5W9dwb2+mI/OVtugDMLcOM4ATEo6d/wWNdar33vHND1mA5ThZeZJAfq12551Q6IKqwQKKdQ5I8qAYF22bF7KpYngU2r67jlReh5OUZXvgkTUXubqWuDXeVAKVi8xOJ4PzSwbuO80uUtaz0Tyr/ajChzN0gjD4Gi7wqiaMELmwnBXjMSSI0Fj8DIamF2JZEyTiIfeH00AF1xVftxz0adipttqR8H1M5W7qaoNt3Wv1O1u77qvXVcSntfTnKN2UmZlK/bPqHEK5IV2EtklGNTCV1voEVpISp2hSAE3eyQa5xVBQi15gd25OCuhmiN6gmHbWD1utjqfL15egC1bFAzJQAZdnA6MDN/u3PvwesGRJzeuN4Pp65kWX544BSKdCOkmQYbjakTrA9ekFPcxJx8UY5D5fTKTBGrmvPgx4khyulKwDSA7/i6zG7NeXP76hhC4wd17hRnKRpdEOhvZ2cPdH3Gn760+EjI4bFm0jB3aGZCFcIPeCbCNSrpmo5XDbyaXpkHMUyn7QZCT0kGFQD3bKpwWSD60NhBI3sPB0icEG42O/zwR44c+bsfO+460P7+1X+uPcJ4djctKmXoR+R6A2O150dQk7vyiQYBtaLASw/9QKd0qVwwNItVYGoyW9YAZkC6VwJBGRjkOBpK+BYBoOs8iJmZmfT8i5e/iKm6iBt27Kwj3QhunfJNrezgvpMzlyXnHLcOGkmGYdUpzY8bQ8SyZtWyqoUSiAGR5yAz+cTB6eCHfi3YYs88v3BMCf5TjP5BA8BlgtXGZAbbzTkVfcoB0dOGChYs1/WW7JVOVDdRdnVVPmgrnLRKU9hUPD/en8ivzc3N9XcEQXZufuFAg7HH8OdP0TzEdjhTAwwpjOV23cnKqUqVqqt9MDy97CMcUxyuH5WSW0j1Lx7wbyxefPqprQ+ftwVR2vmLC/djDj6nGJ9DhX077t/CK0J0lp5LmnHIyqMyAqSsRoK2mkrnoJhRr9fmjkT7dGlLJO3rv1IycIrMmMTFbyGAa3j+k2wjf/zhhz+0sZ2ftwXhY4ZLXlhaag5u8HbUkolWgSik5EpIjvdreEaG0kePWwKV84wFUvBMKxFjRWWcRaEuYgxuyBXnKJQBDjGB1kXEcZ7G1YNCajP34/27QuR5ros+U2yVN8Lrn/jA7Gu7fcA8trGNbWxjG9v/nf0XRm6+MOszjgsAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPZSURBVHgBxVTdbxRVFD/3zkxnurvt7irdbBtRPqIVo4TWCFoCItgXYozGJ940EY3xyeiLJBpigiY+wAMP/gWaaGKCEgh+YDQIDRWijSUtukoTLFJhO7vb/ZiZ++U5M9tNwdSghHCTOzN37rm/c36/85sBuB3j3GdPD50585ID/2Pwf9vsy1zY13/5xONws8ClIxtfnvxkW5Gepw4UV7E/px/V5bldnf1DD46Ujm8fuQFcsJcu0rze32eXLvz6fm5Pdvj5LZaXr2aYGJo9dPY9een4Azk+91Q5UGtuBJgtXcx+dN8KWa19mtv8+kNerpgHUEDTKAX+9LGL0cxXH97zysKb/xmYhn9y1y+Z4qp7gUtcJVNrG+ajtTBXX3NYZ+73jYG5SETfP7Z+8DAwZpYFLn0xUuiJZt9oTPz1SHHnE9ucjAvM1tgBBXVRhItyN2RzayHd7caHpFTQiiK4Ml87X/GbO0e3rP/9euBEY8OHbWArmXYsbQVwWWwEwYYg5XpQVf1QKNwNvekUcJ4Q1EaDJ1zosq1BY9jRr09PbX5y07oyLDemDw6u/nnsQGWy9Ifxa3UThJHxq3VTqzdNJKQRMpmREKYZhGYe987PXDJfjk3suR7rGrv9tuFjR2SfyQ6syEKm2wPL4pBC+l1dyIf9U0Ni4Dox6d3LAp86NXlHXy7zam/Ggwg1DIUEY6gvBkGuRRW4X1loAjIBjhlXDxRW/jg9c+TE2amHlyaGb8fPvVC4s3f/QCGfcx0nfqu1AYtzUFpDGAlsmAbHtuJDrSCEVMrrrJXSEGAzr1Zq4mq1sXfr0Lp32bGxieFCvmccs1ppot9uENUaCQULVBW+sxBESYmScMhmuvEd78TFyUMJjVYAV/yaKM9XttquZe3L96TxnNUJZIsa4iXbk0qo4bNUNhCjRXckUiV32ieG2BPHt613EM/aYGEVCr8upS0E5G1kVDae0KmOYxytCYggNVZKkkmUgrxNlUOcDO2rtfIipEgNY0yAwS6TG9Cs8UEKs0ziAEqoCNSYGJD2SV+BRQlsNloxbjpialtK+UMjCEcd246DbExgY4VUk2nrQuuOpu1qY3CMpyolAlNhrTCCRjPAu/jJDqXaX67URwm023XjTlNxpq022YkjAxQBSVAyHUtikiwxAwIm57SCCPxa00jBX4u78Pk342+7nrvXc2xGMrB2Exf/LrytN4EqnSSMtWeJYykheTsIompLiLee27HpYMf5R787vV0z50X8Wd2F59MYi9IahlSRtSEc+vxchMRPjaHZtcuTjBIvVaPNSaWjD57dMTIOt3L8Dcj6/fNiMeV6AAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAP3SURBVHgBrZVvbBNlHMd/z/V6vbvSPytjjK1iZS6OzQ3cENyUCPgH0ReoZGbGhAgGEkzINPDC6Ju9MhqjvmCGoE6Nf7JkhBfOZfLCxak4FGqyTmXo6Aq2HWm7ri3X3rW9u+fxObst7SykJn7Tp+09z+/3ud/v+zy5A6hQ3/btYL3Dh8VK49lKA9t6nE8THF5N/56sJJ6BCsVzyZesotw71N1tgv+q386+4Co3Hx5svkc530KUiRYyP9L6cLmYaz8cqSq+LrHCEvvdo8w+OaHm9Y8zsuejde0nYsZ89Gc5oPkSLocDQCXCck6Yem5ruXGUY9I98zNXjtOpsaU1tPLOsm/bRbOqbJH+gteJL/QmbmvoFeqdTzD8qibEAKPLmT+VYGo0PHbllLur5oitAb2GHPar5rt/2kBhpGzFhrBfGlTU7Fg+rg3Ydnt8QuN2D2I30d2wLQZIHeKdkx38Ov1FaTq2PX2ZcERgtOoiaNmKvYc7zLa62G31u53nxcaHagDVQUkOWvwiIVBmv1u4Phx5NHrZdKnrdEi5JdhQ4qvmAXt73UFkMqB4RS1Fmfg6JC/Ofe3aO/34yuUSK6ZeWV/FRWWNtTN7QcnQ1dlFCCmCk+UfQjBYqtmd3mdt1bWtduJ+NRwvAce+39W+CtKHcsFEZ9yXO2Yi+mosZQBZzEAYetQRMj6URQotUiDolKzqYALCO+rF+213CG9kzm25IIPlxJoHfvSyoS+6NgvZ7CesHbeqgH/VieoEWQNsVGnBQCwsIAonDPqnTETovEbBeR2Ikgcto1JLtDpGx1kLkP0oR+4LDXQ9z7qfm5ikGW3zH27aSjK4OxchM2o8RwEsECOZDjDTxhbBgGndeQ2QQoFZFXRJg1wKT+VT6Bs2oL8s+Llz7r5xrezmRd+unRbd5iZippXSAZypUDUptE+yFGzAdR2UmBYen4jf/sxp0G+6eUtKB+V+i43rBw4BMVEXWaZwCnRcsIH6y9CbYI1AOqydXAk19K+H0Nx7jRuRIHilOfV9wwakqrTtHECGDqN9WjGDC3AppH/J28WzM281dcKtjpshsVY8xlu0XbJff0zyqwt8DXPUbAMrgwquGQcinyY5eV4/hTlh0OaxDgkiZ+zTvmJOiceje/ZYHjweD4KSFW9cks7UyoEDv0yJax21bA9fhZoZFphcEvwLC8znIw2JUO+au97h6vn9jIOzZsG6tmrneLIsOPLZtkd4Fm+0Z9VP0YHJ5aBAn2eH4NT3UVtRLsWMevqujS6tBfs6Xa5W/alECiLugxdGyoJvpsS7m53sehxCLLFq0fwG56E/AvB/KXnm3g+k4a1DlcZX/M6LXNX6rTznqjT+b+cExNqVon3hAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,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\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATHSURBVHgBbVZNaB1VFP7unZk3eQktff60CVSwIKUFu2ipba2404UIRWxXQnQlupBWXKubuqgoqLWUijE1kRYt6KLi0oWgi7pRBBeiC0OKkDQkzd/Lm7l/fufeSdq8ZB4392fu/b57zvnOmSjwufHrn8P7Sv17VhSwQaPINZwDWjlQWYUiAwL3Se85qC3ALag9UHLNuICMO6RvaY/aGEAXTxw79Nh0jubJy4E9eVFCQaPkaR9UBAkEKVSzh3NO4UnQIjCxCMg9BJZ3yrKf/gdh9zBMPlTIGb1O0MoV2jw1yGsPljkGWqltzONakeZs7eZ9KeMix1AcZ+he/hSlmNo8kWAIg1BKrqCgtIpjzaY0e52lpjJk2b15lq2vc41jOZP/N43u9zeJqDYINlyUca0gh+XLTGhJ1so2uyZv7DUhjZ24j5aLywodsHL5Y4RWiVxemvsIVtkso2fpS6cCPA8azhVJJKiuafFhL+9dQ2BkHALqqSksfPsddo6+DGN9vwVdBnOIYAHy80TlkC1EYO1VmkctJVIhkf1imghhZewz7vHYMfoKKoStLqrkOraxgD9Hucr5eEOVoL3IleiVR2Nlc72ZOSx/eRV4/gWYkUdQ93r0eR9BQZBcRRGyZxw4lpgIkMyFgu5GYLAykkjMgkoSDmOXEKzBjldfjziWZ12/BbX4LRcLPLQTwOQK41RyfOP/EBOKjgrRYLj5eax8cw3qyaeh9h9A7UyKQWuLiiQbCc5fITeQRCNJEMsEW2KhE4lYEpVForXJq3B376Jz9hwUFzTPCtZavwWOvvBsQfukEhKoTQFFkvf6nGO7sITuV+MoDhxEefwEepXlPh+xtgTZi0SJIhs0k00CKI4SFTEEsY8cIcmT0sfKjeswd+bQfvs8nLWUuedennHbEIjERG/iexVSi4iN+wVYNyTxDyueGb+CfN+jGHjm2ehDFaLWmlZtE2Q2J4ohuEcKdKyUKvnG65QPFS1d+foazOws2u+8h5rRczTZsASLxCsTNopFImAqFzspz+bK2fICls6cQtbZhez4Uxg8eRLYfxDF8O6YhKZboZr4AhgZwY7TL5KAZ8nsaWZBL1jG0fb6XFTx9iEjP6XS++Qj1LdvQ1OHYfxzrI5didaUjx9C++hR9HqU4tS/KF97A5YlvqbPBVzkKTIWb+iijyBvEq37049YvT6J8vARPDhBNywuw/79F+pbt9D95WdUkxNRRipneX5pNMoyb847guuYqAF+i4rE9JkZrJx/F7rzANofXKRFfN3poE0JlsdOYNe5NxFMjaXf/kCxOE8XdqgLHyUcYv2SCIQo92oTQZcKaXssXroIe2cWD114H609D8fbqEamErRYrfkxGThyGGX8ZPpGXSHtCT6WGL212K3CMP+7P9xE5/QZFM+dohJcLG5eKmlTk7xO9ce6JNnaSW1K32SRqHVJolGR/TIVs7K9e5GffYtJYyKwj/Um5YOMVSxGKrpTMt0RWDeZbaW0i0USibBNolXU8c4LH2JNtWBiyvNQk9F5k3Pxn4CQ/puQSisWuCzEPVJdDS1o0UU9LrTuJ7CD2lpTz4Xde+DrtVhNbUzfVPPl2yyGyFxuV1t+r7MUXFaISFTELxzJJNVkscmD/wHZYr2NEgr22gAAAABJRU5ErkJggg==\"","import {\n arFlagImage,\n usaFlagImage,\n colFlagImage,\n parFlagImage,\n urFlagImage,\n brFlagImage,\n doFlagImage,\n paFlagImage,\n} from 'assets/images'\nimport { CountryId } from 'types'\n\nconst flags: {\n [key in CountryId]: string\n} = {\n ARGENTINA: arFlagImage,\n BRAZIL: brFlagImage,\n COLOMBIA: colFlagImage,\n DOMINICAN_REPUBLIC: doFlagImage,\n PANAMA: paFlagImage,\n PARAGUAY: parFlagImage,\n UNITED_STATES: usaFlagImage,\n URUGUAY: urFlagImage,\n}\n\nexport const COUNTRIES = {\n flags,\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPRSURBVHgB7VQ7bxxVFP7ua2Z3dr27fmCbJAThBOhCCsAgKGgiEZGWBv4BBR3UFhUNUiQ6/gHUIBSlwEICBKEhFEGKQ5QAwonxZr2Ped0X5971YkdCEAEFinJWRzM7997znfm+7wzwIP7vwfDvg7370cVOU/vloqwyJAm8yfcu3Pju582NDfOPgDY2PpOrp8UTzpgXAXHKseQxz9izlbFLZaVR1hpa12DWQik+Utx90b8zeuf8W69/JUOB194+/+YjR1bOtZvJl2kibwrBtzlTzHG2KMCOeSGPCSFOe56eKiFbNknhmIDzAtp5VL5CYUuUmqGqPIz2UFrONRV/eWfwyycEMQXa2e0z1T16piOzMw1IKCkgpQRnlDKh5hW4kGCUnPNDpBEhzNOF2uEirrGwTv/pTakRwFodt8rZGes9CmLUgEPRY8lCKihHVyHiYcGoEON3ER5uGWfU1BSY/ZHTfXTqMJCIC3ExnAgHY4cidhiez7oNRX2oQI1liaRkSKhMgyewJsVkUqI/LlHUHiPSze43FIFWOhKthoDx1Alm3Uw7w35micBDnQbWlpuYUw6rCx3MZ4Fe0qgijYoiZriv6xqkKYFZfK228eEM6PmTPTzz9MOwqo29KlBBdKkEaaKw1Gni6GKGZpqgGvyKwbWLgDPoLb9ClHbhghB/Ep7euKE4epm6W6Owf6GlsDqfkDVVzIRmIphCBrqcw+D6NyivfwxjOdKFRzG/tk40c9xLSNxjeO9giwm6PRAlLbi6JH+I2Pl/ChR0W3jyBdz+foTWkccxf2J9qqH38bpHlh0MNQzpkwiHNmluD9EagSaFI1HZ3yEB3eOwa+fwYwFculrg9nCIYV5jOKkwnkyiGUoyg9Ea860UK10Jt5sfAF240sd2egsrSxprq3NYmGtGjYwvMa4ZRmTVIWVOWVsfJ8BjHAtYS5S6YGIfewkuDAMwKulzZAx2f5ocAAU5d0Y1xj7HjYGmL0MwRHAemUIqCPpSxIyzFYzhMSMl3sd0++mjblG78GU4TF38O1uMGy2lmB704TCPBRz9wpzFGn5aWNcVSqItn4widWGGHG1I0iYcDTGcPQDS2hCvFT2ztDh1kiMwRwDOmkiLd5rGx0BXVHR4B+O9Psp8tFOV+Vadl1fLfHKrMrow1iju0ZPN1nOdTvcpIfwBUJWPL9288u3nWXtuvdnupY2sFekDgVlTw+raOl1ftrq4XOvqB2+qzSJhW5sfvPfbX9gHL736RjtpZFn00uGFk2fPpovt4ydkaTvBDCJFLqt051ph+1ufvl/hQdzX8Tt89OWQs55WvgAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQXSURBVHgB7VVLaFxlFP7ueyYz3pnMJJ2kJjVEKxWVFGt9gIKLBFtI6UJcaMGg+FpoXCnZVEKxC0XcCUYFQak7F2KbKggGQQsRxVZRbNM0Dc1kmkzGmUxyn//Dc2cmj4kpim5EeuD85/7n3v985/WfC1yn/zop+JckpVRGvnzdLuVFjqssHukcJip7LuPK6Ogo+0dAdFBf2pu8lQV4IFD5nS54L1PEPQ7z2pZ9F47vgYUhNKEgacSqcdX8plRePjb58tgZPTKw65VDw72d3YNtMftbKxabjWtaQSqGIlWeFVC6mCa7uCb7flZknyOriRUzhKMweJIjkCFc4cHlHrzQhe/74IzBDMwb0kb8AJaqpwiiDjS7kFcWU2IgrdkDScRhGRZ0TYXUFXBNgVBJqpQmkk+kSrA1jg8qWfjQIGRdX8tNJIklCQ6BkFgVvJYNfS0tPg9RZKso03EdBjGtCq0qPUuN7Oh4NVvEULpcM/pYqox3ym34bMXGfBgBbeXmwqwDQd30Ut3wLmJLA0barqKfnBsbvx+Fko2OzAqeffAsjnSW8NZVGyc8q7mgSnP560Dapt5Qmz1LaQJv5/LIlm0c/aQfjJm17y7md2CumMbRx8fxZnseg5Tm4SsZXPK3gKmNOJpg1Q28iNp0jg87LmOfwfHxmQG09qRw2x05ZDtaYJoqpuezOJ9vp0oA+y0Hn3ZO43BiGduRup1SEtKBRBUnd17EHsPHbKULWi6DBDUJFQyde1vw0NBN2H1XKyorsfVztiowmKwgo/E/2dS3KrIUxUutBTyVrUKlRoh8mTyXwtwvKzBMHVI4cH8McU4uYl//TvT2aOtZeK2Uw3uLCXAeUNf+RUQVrtVSITfp0kkXGrW564RkRCAe12GZGsoXZpCLXcJMaOJQvhcfVTOEJ/G3Usfou2OlDryweCPmeT3gu3fPUJt7SLfG6ELSZSSQZELg+YOf4/sghiOFXTgfWNE8ajYW7cU1gOpKiS9WbTwy34P3l7PI2C6eeXgCCW0OdouPrsw0hg+P4ytVx3OFbrp/+gZIJOUm2aC6y2u1q6GvvZVYIgNvlNpx0s1gpLOI40+eAuMGDCr2iWorjhc7wOnmy5rRyPvtQTaA1jxBI1S5IRXiC4GJp+e7sT8e4MVMEZNeC8Z+z0KJQAIaNI4PsepBusQ066hjAGpGqYktQIxCYqLhUcMzISCpMaQiCZ5mFpf4wVUwlM9ALLvEs2BOsCC8cCp0/anA8Qo8CD3BQ4NOp2XMuo+lE31KA6K+euw7+evC1yJp3cuTMQtxKqxh1DA5ORAwwbRQ/iQDcZY2v1G6JmKmMVV4d6KIa1D0I7IevT3pxlIt0b55IB28xTJN82YpdFs3dKiW4cR9tph2d5SmTp/2cZ3+1/QHulXaPMxBvjcAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAO5SURBVHgB7VRNixxVFD3vq6p7prszzmSGMTOShIkighoQoogLNxEDbvwDuhUXbt0Gt/4DV8H/IAqCiYKKJKIMIokzksTEseOM0+npj6pX78v7qru6ewQD0U0Iuc3t9+rdqnvOe/e8CzyyB90Y/r+xK5+/37IhWxnqMKdMgb7W3e+u3bh9/vwl+5+ALl58VR5xLzxl4V5JuHku4fqk4O6Md8OjzvRhzRC6sDCWA7zRC6z+db+3+8G5t7/8VsYEFz585r2V1RNvpMnRb5hKfxOct5lMGAtuKRFsXQiznkh3Oiav127P19QAicghuQZCAZ3nyFmGPNCa1TDMQoq0GUTr9d875hOCGAF1OzfZxmrnbCM9cpbLeQhRg5QSiqKJckiVp3konfHpMTCaBO/pfdoAueAj9yzGHFgwcBSPJifnQsxk6EDhAIorKCEJbDxycsrGaeScjYDGaCEw0BI5rZPHOI8nF0nw6bGXQPE5BiNbPnFWsquYxkSiZMrKnVTmeQWCiaMaaSJmgTBG5lUiXrGcJuHVOj8skNnE7B4Sk7Mf/JuXBDgO7WT0TaC/UQ26eQ0HfY5CM9SlQ0L1tOEfQIr7wwxnk01mo6TtfhOXr6/hansJP+8sY2vnMezsc/QGUX0ZCnJrHJabBq+dbqPpb9K310dA71x4E2ee5Xj56bs4tqix2AgQJASDGga2gb2sha3dVVxrH6PLmFLNplS980RBl2ucCDNBMVq7WyT47KcN8LxBb31R1cjgyq3j+OHOBkmVlJaokeLIpZKl1EVUH6liFuR+TOK+LYz/SVHBY97nWC66qGcd+GyATBcY0I7+5AsokJDO3BRo3Q6w7x0FyGKBQ5UwlD+6ekgo6YoZ4KTt4km9hxO6g+Omgwa1HWRDDHONXFOHoC5hbQGvarix9AQ2Kd/HFdBbf32Px4e/oldfRidtwqTUHZRCgy5Oi45qhRVYCxkW6VLHuxTGEilp+IB8zJumiLKy9CyJ2CkiFJiZ7ihay+VYy9tIzB5kTu1HjTtDrI+KNRII5K4ECWVSR8kMtZiBN+g7g6GzKJwr21KNYmkYgU+ANPHQIWCuPKZQ3l8/9vgcKBZ7lqVxGBw61pJr9JzdzZ3bzmyxNdD5HWt9Zo1RzIWFWpAvLeR4nqtkCnQAd/lHN/yq6dWLLaXSeWqGyit4m6Ogi0WbdwXHJpHZLIK9mgdc0p5vf/THL3u4h71bX27MmdZcWfrZwDmcSlcb+xuBq1aUNB3wkAuxe2tB7X+6va3xyB5q+xvH/rOfbMVrjwAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQKSURBVHgB7VVLbxtVFP7unbE9fieNTZrQJGqIQAWUSIkIG8QGlRYJCakLNqhixRaxK7tWEb8B0Q27ColsKG+pQilVGxQhoCRqlYcJSaxAEqd2HI8973s580hsI4F4bBDqGR9fz5xzz3fud84ZAw/lvy4M/17YjUuXcg2d98O1kjEHcIWoO83t8quzs94/Apqbm1Pz+fzjUsrnrMXlcff2d6eZLaddo1Vw9RbspgHHdeApHDyTarCEdqdeeTDz+vxH36h+gOGpV94cPT3ycuFEdl7TtE1NVXYl50wK9AmGU66HU57ExKHFJsaKxXQymYSxuI7a/TKE5cA2TRgtA8I04Nk2PM8Fi8ezSi5zvuaanxFECLT1yw6rtNhZyvZsJqVB0+JQFQWScaKBQUiQMlw4n0CxWARjDJ4AFJt4EgKc7Apxw+k592mSEsx3cF0IunxRj2ixHBcPDpo4aFqIqTGoqgo1Fq2kiqJCckarEgD5Qf2L+98EEjwLnqBLj0TtqGlkicxRoOMrCE7ccx789r18MHnsdxSl+553ASk4Dt5eI+Aw3Sg4Q6NRR6m0jF6jidhAEanRIeSGB+Dk0jCFC9O0YOzvw1ndhLWxDbG90QZ6YfIM9sw4Vss1+JQSxaBPWBv6SmkJ9Bd6sHzvR9z49BqGWk3YZwZx5eP3yC4ouBlo3DAQp1WjhlCCGjPUFxaAixdDoAvnnsHU1BQKhT5Uak1U6wY41eWRvjyGBwrIZVNEmYKZq++gsrGFFgGvrHyJy/Iy/lQoCSQSv68RqC0FThbyGKLg8XgcsagZ/FNRabB+WMZkvgd3WlX05gsBndI//l8QFX9DxtKDWNJv49yTT8HJj+CDzxdQO2xi9edtLK1sQq83IIWDXEbD+BPDmB4fhXA62nv//Vkcbh9Am3wafGQIal8v1YhmpWlC6FSPWgNeeQevjT6PwTfeppqlcPXDr3Hl3et0Wg+mZVGNDJgG1coy4dKo3Lr7E7KfzINZtTaQc38dlbVrsGhWfMoSPT2IxYk2eh1w2hTMU0zFozNvIZlIhnQxGXWNbHcPojWgU4YjwHkbSISnIxMPgngNHZwCMxpcRjXyd4RbZdBlobMMfGVkOQbsvA97tw0EdASSoUl0JCr87PwERBtI0otQEm1+TYRjkRqQpHDtMHPR3SghdaQWbUwhnF1BDn5wX70oU5eC1vUG6ltbqFarWL33A/TdtT3hWSXbsdYc09r1XMcUnhODx05IVZ12RHaCxTqo07n77feufisrrGfzMp5IS6oVqedyOORnB3nKJeXmV4vKr6Vl27Zv7u5tlXbuXt/HH4hLmup/Md3M6Gn/vuv/6CWMJU5m9McUruWCFCRrcUWrlHuc6helkoWH8r+W3wDObQtLmnL0ggAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAO1SURBVHgB7VQ9bBxFFP5mdnZv927Pv4ltYaPgGBKIlBgpEiBCGxEQDbQpoEQuqFxQWnTUtAghi45ICCGIQAjzIxtClMKkQJYOiBwjO7Y53+V+9vZvhjezd74726QgTRTlSW9n9s3M+957880DHsmDLgz3KUop9u277w/U6tVxJKFnky1hsro6MbSxsLCQ/C+gpaUlMeh5p8qffPGSJdOzVhidZJF6Lg2CY3G9gagRIE5ipBYH9/M15rnL1XL5vTd/+OxnoR0sLi6+MzY29ppt2yuMsXXHcbZYJqOWZU2RfYpsszTOesIpyLXbEHECHsaQUYwoaCEIAshWC2kYIk0TMMcpWgP+pT3Z+pIgMqBarcZmZmYu+r5/kXMOcg7FLDi2jULeBYGAQIyyVoTq9h6YEKYcLFXgNFr0p0dORqa0XVINU0guTTX0GqSUoOgh6LCby8FyXKzcivBHhaEW830gHYAOhNNe47CjyEZtN/O28g4AiclIH9ZAxgk5+/xGGR+s/IMcAXz01mlMjvJsjVR75MZRdr1KZ2IAWPvSu2C9wvdZoTezbPnyhQmcGPFw9rE8zk35fYGwttPeyHHU/ACS6P3pgFWCBJ++/TRiySHbdpMN7kFTSRej70XKI5fFQYN2WnSFfiAo5CxY7LBrRvR1T5+Ee+4U+PERqGPDkJPHEQqGoNZA4+9NJGt/IfxzA/yXa12gj5fvoJTu4vxTAs88PoiJIRuCMmhGErfuNLG+l+BuBJR2ItzcbOGrX6+AtTPURAqJ0preKdFbFDzkRwfBnz2jHzMmfn8ReH05A7q+3sCNcBPWtQaViJjnapY5FLkgcggiBQELyo5bNLf2QXol3tiELBbMXAN0F+RRpaM3Qbw15abNup1Yh332OdKzsLSO3Q+vQI6PgJ8/A/7EZD/YISB1yGV3NAezsQ+IShdX76L6zU+IvRzGL10w5VQHshY9YXYd7iv6/tUB1ZKmKcSJSQy88TLiApU770GSrSNSyv/KSGaqtNIBxc2cmnQbmJnDGkCrJkJdUm+7/CoSIsROuWyCyufzptOkbdAMKI2pLxGtnLZj2ZOBTDM8+khqpDF16NVVhe3tHVQqle1ms1kixpXq9foWgbbIsU1vbsjzvBeGh4dnO00gA0pq19XWbz/KnP986hVzcIg91NsUo8gldec0TiwV31RJuGojWvvu69HvLdctzc/P7+IeMjc3509PT+f1vP81PvlKzimOzCjHHtARcIim5/CdIf92uXT1aohH8lDLv17jsYrijw4NAAAAAElFTkSuQmCC\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAPqSURBVHgB7VVLbxxFEP66p+dhr3ezsb224yAlGJyQg5MYo4RIHMIjEo9cEEpOSPwBxDVXxJVfQP4BB4SQQCggYQcEEUJBOMJAyDoPbEeO7Xh3vY959HQ31bMb7/qA5MAFRSmp1NPdNfV9XV1VDTyW/7sw/HdhX1+4UDBhONKITb9diGOndv32L8vvz82l/wpo9vRpoaZOHQJLX4BUR0USP8mkOqHCaFjWG0haLSQyhRIOeK6/zvq87xub9Q/eufz5FWEdfDg5/d7oxMGzfmnoB8f3/xLCWWWGM8PMkGfwhKNJVXqcS3nUu3s35zZDOFEMFicwSYI4ioBWCB1HSKMEqUrBfC8vCvlX76vkC4JoA20sL7OR2tYZUdhzxh3IgcAghAu76WoNoUw2OjTn9gdjOuFgMNrAoSln7fDYkcOAKQWTSiimMtsMyLFbsQQqNWCrCS4EHNeFY8fsW4A7VsmSsQ5EW3RnxgiMKZ0B8AdrmZXTBcL2Bo2swypT1mHI2ut2n07D+wK4oyX0HTkEsX8fMFaCLOaRpAoh3VPcbCC9s4L6j1fhrywBtzpAg2+fQ7G6BffmEsy9NTAKByOqnE7lDhYRjI4gPz2F3OFJ1IsDWCP6J15+MWOlKaRxHCMMQ3BSRt+C7o0/N429b51FZX4eOP9dG6jv+BGMzsxgcHgIruvBSVK4nge/kIfn05wcCgrhn7/+hto3n2CcwK/Mapx66RXsVnjvxFCMiSKFxgcPPHvVtNa+TEZg1Z+/wme8ho/NEIori3gY4bs1tCFan7+FkfxhjC3dxmZhHx5GxG4N7YlKb55H/tIscs8ew8wbr6MVKywsVlFequB+pYFmvQkpIwTCYGJ/Ac9MFHYCXSvXsafUwMmhvVmWPXCcZRothAmdZq2Jmj+JhakxLFyvYvHdy1irxkjoPtPUJkOEiAo3pkKWMoGgUhgfDjASrHaBPvr0Bi5ekjhw4CYOjuWR7w/gBT6U4dioK9SaKZohZSLncPjOaNtESW392iLOCrmtjDKzGaW4U211gQAFJhhWiPVqRcJ1qCvY1KZME1SsNuMcW7AdJ6bTGZD515m2gXRbYXqA0QuEbSbbhtA9a+Qcuod019aoBFq2SJswMiSNibdtEz6ZOR0/20DUzakRQnSZWdbGUL/SlOQ2WpTmOtMIKtmCiklla12nYVlG0Y0kbt1TKgm1VC75Lho3eD6VxWNM9J4oiX4y+vdvdZQ7yby8n3p9FHyXMsEQuRQJvQXcpNegE6t/KKPnpOuV61cvbuAfxD5EfuncQFgIsjdq53v09Gu+l3hPGa4Ltntz5bdMEK+Py3CzXP4yxmN5pOVvrAbtXv+F+VsAAAAASUVORK5CYII=\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAU5SURBVHgB7ZVJbNz1Fcc//30Wz3js8Thx7Dge4jiFECd1EM7SolQINUVIReqithI9tOqBIvVQUeXQS+ACNw7AASQOCHHggIQQCCE2BwUsAnIgELLYjmN78Bovs/33hWcbyeLCAS4I8aSRRjP///t83/e99/vBz/FjD4UfHspbp0/nEyfuTJIogw+xF1c/uvFp5czISPi9QO+dPKlrR44NxFHyKz0IBg0vKCtRdGfUsDvCRoPA9fB9n1BRUFtz9SRtfdBcXnv0z2dfG9U3Euy99+H/DN1evi9B/dCyjJm0Zi4kRqwkgVZUdb3Hj+jZ1dFy+Pz41cHfTl/KZtoKZPb3Y3XvQuvaQdKzE8/QcBo2XiAgFaIbs7ng0rVTy2OfvC6ILdBkZUnRW7vuKXd33HNtzqWvU2Ny1mPwlgJ2oGBZFqOVkBMHjzHwv78RXLxMNLeAN/IB9swc7uoK9uKSgJq4G6AEjJ4uzCODsKdn041NkGUYKHHC1HyTYiHL5XmXYj5HZT1C03Qix6c1m8J94z1uPvcY2q4dmP1lrFsHyPz+FEm3VJTL4sYxnt3Eu7lKXJnD++Iq8ZdfbIOCKEI4olwnURVRlWCLXznTRFc1eUhhzQ5I3X0XXX98EDWbIVpYIrg8jj9dofnuORozFZxafasiTVzYt5fUyeNkyt3w2stboFhmI1BU2lIGyzWfX/QUuDhTo721hVAUOEHMjoIkvzLO2v9fJbwxS+L5aO0F1HIvem832dv2oYlg3XVxV1aIrk5RfeIZ1r6a2a5IVWNKWYOmE7K7PcNnM2sc3FNkoeayb1cbS/WAtqyF4raQOf5rjP4+jMEDEIaEK6vYC4sEGzatrZMQi7U7yZwYRhcRxdFReOCBLRCGytyqTUcxjaJrlEtZVhu+JE+xVHXRdZ2Pr6/Q25sncevYr7+D//hThNOzwhKYaeCX2vFVFbsh9lXmQQQoxXZqfV3bFZUkuS69qToBc9PryChTWXE5WE6z7kS4tsy3/BZduIDf424qzv7lfqzDB1Dke6AJoF7DXl0j4wVEKXNzQb1PPsUaObsNeuRfw/Tt3idWweWvGjQC0AYsMpbB/q4ct5U72L2zQGf7b1BlIb3zY0Tzi9SefQHv6iSOAJob470xDPJ/ZGqYt/Rh3nEItVjcBi0//Ci9hw9xYOgww0ODWPk8hqmi+x7K8hx8/j7J7ByL8qFaRSt1oMt+GAf2Y951lHShlRax2YlCnHoDX3pFrYF9dhTn0pfboPw//0o6X8Q/f4H62Oc0bRdDjhEz14JVKmHJ3qSGDpL6+58wy3tQ21uJllcJpqbxZV9sead+fQpnvSrjLdZlxI3hO8jef4p85MDbr26BvHNjJPfeTf6hf5Ad2IuRTmFohvRNRZPzS5UE0fgU9siHNF56hWByhrhWQ8nloKtzc2GNX95OHMXEMgyO2Np4c4TwuRdZMdiuiJ4dOOc+YvHp5zFiWdy2NkxTR/U8dNkvS6yxRIB1636M4SHSf7gPTUbcHb+OfX2auiSuToiQptgmFakiNHviCG3HHiQ/fgUeGv3mZBB16tE76ThzmlQqhbpWlYlXMQRgSjMV2yaQpjdknNdHRdDYZ9yUpawl8bIThhNO6I83PG8xCCMnCAJDi5JC2tCOtqbTh0hnt6+J/6Y7jys6j+XQh9vkBG1pLWxWFIkVruPIFZNEvqZeFLcv+nF0xVOVkYwXTZyZv3aT74h/l0otnWo+c2Zxculb99Hv+vut3oXGXtVM8roUqyaKrWjaclQwVp+cmPD4OX7S8TUn+WoReBbiCQAAAABJRU5ErkJggg==\"","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAATxSURBVHgB7VVLbBtVFD0zY8/Y438cOz+njeOWlgJtA1WhgmUiEGIBEhs27MoiUtlAhcSqYsWuQpXYIDZZgBArKpWuUEMkqNx20SakakjaOB8nduyMPzOe/4c7k1ZpNixgg1Cf9PSe3zy/c+85574HPGv/9cbg3zfmzp07Sdu286qqiuFwGIqidMrl8ualS5fsfwR048aNUCqVes7zvDc4jjsZiUSKLMuepUP6HdeBaViwLBOOY8N2XNl13d90Xf9icnLyZsg/YGZm5uN8Pv8ORfM7wzDrPM/XaGRoY5bmBVr3+2lBEE5Go9FYp+diuSKjWutiu6Hg4VoT1e0WlF6PwAw60cXRsb7E6ecH3oJZv0YLe0CdTocplUpTHOtOhfkodrbXMVY6hkhEpB7BrfkGVqtdLCy1ILU1itoFyzLwPEA3bUR44HipHyyTJjAVO00CX+9ga6cHo1cN2Ag9ocU0TezWFiEYZYSddaj9n0MUjwVA12YrWNtSkE2JOD6ew2A+hvFDaZw8nkMyzoPnXOiGDpVADNOAYxN1LrBSkTA7V8a92aeAlM42Ir2raDVWMFaIwqh+DTV2Eel0Bh99MIFUPIKBXALxGB/sJ53Q6hgUvYqtehdr1SbaLZn0sWhvCLmsiNGhJM69XMDlJxmRoBCECMCHIfAMReeBcSVkGA6kE04cyUJWHaystXHvwQ4auxoq1Q52aFR7BizHhK4Z0HUNBnXTssCxHAZzInhm9yB1nufAcPqJighiUQ9iOkcfe/DtevHLORK/TVqEQB4JtEkmBRw9nEaJup8By1rwbAsaAcmyhs2aEgSzuPjoIFA8NYyh0c/QWPkemrkBJv42CoMTwbehXAwjAwkcGkkH2R0bz0KM7v3Vz9gkXQxym6ZplJVOczMIyG8LC0m8P3t5D4jj/M4hRGOu+C4c10Ym00drbKDFp+fP0DwU7PEPqGx2sPRIQr2podaQsbq+SxZvoN3twSJTRAUWp17Ik3H6oHWk/Yy++W4eE0s8zp0poTCUIm77oNsCpI02ak2K1HDRlHTSp4lGy4/aDuztc2hYTlCkmYRAnYOshMggXcze3MDdxTo0eWMfyCErzt3aQHm+tRd5KIwQdV8fQQjTb18DDulklJyUQLGQwpHDGZQOpWhNIAMRhWQITVMpCDKHXyrkyO26gp9/sfbtPf3hBNL94zAdHkurXcg9GyECyabjGKEMRwZSGB1OIt8fJ7MIQcE2WyrWt2T88WeDRglrRF+7qwR6Rci5r7w4hOJoEm++XsS3Xz0G+uHqfUxN9mHipTGcPVVATBQCIFIOhu1BIWsvr7Vw/dcKUUgA2zLVkA6PjOC6XmAAjbo/6mQIm9xXvkt1KXAQ8JS97y9L2GwvYOanR4H/k0kxoM22GbBkAJ++EDmFZVgwVHMFom/iRIHcKJKBXMQjHij5gD5F1SCRjs22jYZkoHy7uw/0yfnTcMLDaMscqg2dRjvQJENXzuhwGrk+kWgTURyOI5NkIUm7aDbpJmg/bHRVdaWqacuyLNfpGtMcxwnTBZCmy/e1wUzm1HtTo7j+42Mgej9uM8zy3FAm8+qJwxkhkchSFjxsy6ZbokOU1B1lx5wvV9R5qpUHdOAsvT8r9N408Tdteno6XiwWRX9+4D26cOGCQM9Cieol6VNHNaTGYrFGrVaTrly5YuBZ+1+3vwDdxG4MF2nJ2QAAAABJRU5ErkJggg==\"","export const BROADCAST_CHANNEL = {\n AUTH: {\n NAME: 'auth',\n LOGOUT: 'logout',\n },\n}\n","export const NAVIGATION = {\n GO_BACK: -1,\n}\n","import dayjs from 'dayjs'\n\nimport { DATE_FORMATS } from 'consts'\n\nconst formatToUtc = (date: Date) => {\n const dateTimezone = date.getTimezoneOffset()\n if (dateTimezone < 0)\n return dayjs(date).subtract(dateTimezone, 'minute').format(DATE_FORMATS.DATE_WITH_SEPARATOR)\n\n return dayjs(date).add(dateTimezone, 'minute').format(DATE_FORMATS.DATE_WITH_SEPARATOR)\n}\n\nconst formatToUtcAndSubtractOneDay = (date: Date) => {\n const subTractOneDay = dayjs(date).subtract(1, 'day').toDate()\n return formatToUtc(subTractOneDay)\n}\n\nconst parseDate = (date?: string) => {\n if (!date) return undefined\n return dayjs(formatToUtc(dayjs(date).toDate())).toDate()\n}\n\nconst formatValue = (value: Date | null) => {\n if (!value) return null\n return dayjs(value).format(DATE_FORMATS.DATE_WITH_SEPARATOR)\n}\n\nexport const DateUtils = {\n formatToUtc,\n formatToUtcAndSubtractOneDay,\n parseDate,\n formatValue,\n}\n","import { LOCALE_CODES, LANGUAGE_CODES } from 'consts'\n\nconst celsiusToFahrenheit = (value: number) => `${(value * 1.8 + 32).toFixed()}°`\n\n// Value system unit is celsius\nconst formatDegree = (value: number, lng?: string) => {\n switch (lng) {\n case LANGUAGE_CODES.US:\n return celsiusToFahrenheit(value)\n default:\n return `${value.toFixed()}°`\n }\n}\n\nconst hectareToAcres = (value?: number) => {\n if (!value) return 0\n return Number((value * 2.4711).toFixed())\n}\nconst acresTohectare = (value?: number) => {\n if (!value) return 0\n return Number((value / 2.4711).toFixed())\n}\n\n// Value system unit is hectares\nconst formatArea = (value: { area: number; withDecimals?: number }, lng?: string) => {\n switch (lng) {\n case LANGUAGE_CODES.US:\n return `${hectareToAcres(value.area)} ac`\n default:\n return `${value.area.toFixed(value.withDecimals)} ha`\n }\n}\n\nconst kgPerHaToQPerHa = (value: number, noUnit?: boolean) => {\n return `${(value / 100).toFixed()} ${noUnit ? '' : 'q/ha'}`\n}\n// 1 bushel of rice = 20.4117 kg & 1 hectare = 2.47105 acre\nconst kgPerHaToBuPerAc = (value: number, noUnit?: boolean) =>\n `${(value / 50.438331285).toFixed()} ${noUnit ? '' : 'bu/ac'}`\n\n// Value system unit is kg/ha\nconst formatSurfaceDensity = (value: number, options: { lng?: string; noUnit?: boolean } = {}) => {\n const { lng, noUnit } = options\n switch (lng) {\n case LANGUAGE_CODES.US:\n return kgPerHaToBuPerAc(value, noUnit)\n case LOCALE_CODES.ES_PA:\n return kgPerHaToQPerHa(value, noUnit)\n default:\n return `${value.toFixed()} ${noUnit ? '' : 'kg/ha'}`\n }\n}\n\nconst keepOnlyNumbers = (value: string) => value.replace(/[^0-9]/g, '')\n\nconst autoCapitalize = (value: string): string => {\n const splittedString = value.split(' ')\n const capitalizedWords = splittedString.map(\n word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase(),\n )\n\n return capitalizedWords.join(' ')\n}\n\nexport const ConversionUtils = {\n formatDegree,\n formatArea,\n formatSurfaceDensity,\n keepOnlyNumbers,\n autoCapitalize,\n hectareToAcres,\n acresTohectare,\n}\n","import { BBox, Feature, Position, polygon } from '@turf/helpers'\nimport area from '@turf/area'\nimport centroid from '@turf/centroid'\nimport booleanPointInPolygon from '@turf/boolean-point-in-polygon'\nimport pointOnFeature from '@turf/point-on-feature'\n\nconst SQUARE_METERS_HECTARES_CONVERSION_RATE = 1 / 10000\n\n/**\n * Converts a bbox to coordinates\n * TopLeft, TopRight, BottomRight, BottomLeft\n * @param {turf.BBox} bbox\n */\nconst bboxCoords = (bbox: BBox) => {\n const minX = Number(bbox[0])\n const minY = Number(bbox[1])\n const maxX = Number(bbox[2])\n const maxY = Number(bbox[3])\n\n return [\n [minX, maxY],\n [maxX, maxY],\n [maxX, minY],\n [minX, minY],\n ]\n}\n\n/**\n * Returns the size of a geometry in hectares\n */\nconst size = (geometry: Feature) => {\n return area(geometry) * SQUARE_METERS_HECTARES_CONVERSION_RATE\n}\n\n/**\n * Returns the center and area of a polygon\n */\nconst getPolygonCenterAndArea = (coordinates: Position[][]) => {\n const polygonArea = polygon(coordinates)\n const polygonCenter = centroid(polygonArea)\n const lotArea = Math.round(size(polygonArea))\n\n return { polygonCenter, area: lotArea }\n}\n\n/**\n * Calculates the geographic centroid of a polygon and returns it as latitude/longitude\n */\nconst getPolygonCentroid = (coordinates: Position[][]) => {\n const polygonArea = polygon(coordinates)\n const polygonCenter = centroid(polygonArea)\n\n const isInside = booleanPointInPolygon(polygonCenter, polygonArea)\n\n if (!isInside) {\n const point = pointOnFeature(polygonArea)\n const [longitude, latitude] = point.geometry.coordinates\n return { latitude, longitude }\n }\n\n const [longitude, latitude] = polygonCenter.geometry.coordinates\n return { latitude, longitude }\n}\n\nexport const GeoUtils = {\n bboxCoords,\n size,\n getPolygonCenterAndArea,\n getPolygonCentroid,\n}\n","/* tslint:disable */\n/* eslint-disable */\n// @generated\n// This file was automatically generated and should not be edited.\n\n//==============================================================\n// START Enums and Input Objects\n//==============================================================\n\nexport enum CountryId {\n ARGENTINA = \"ARGENTINA\",\n BRAZIL = \"BRAZIL\",\n COLOMBIA = \"COLOMBIA\",\n DOMINICAN_REPUBLIC = \"DOMINICAN_REPUBLIC\",\n PANAMA = \"PANAMA\",\n PARAGUAY = \"PARAGUAY\",\n UNITED_STATES = \"UNITED_STATES\",\n URUGUAY = \"URUGUAY\",\n}\n\nexport enum DeliveryCondition {\n DRY = \"DRY\",\n WET = \"WET\",\n}\n\nexport enum FeatureSet {\n GRUPO_DIANA = \"GRUPO_DIANA\",\n}\n\nexport enum IndicatorStatus {\n BAD = \"BAD\",\n GOOD = \"GOOD\",\n MEDIUM = \"MEDIUM\",\n}\n\nexport enum IrrigationWorkersAccessMode {\n ASSIGNED_LOT = \"ASSIGNED_LOT\",\n FIELD = \"FIELD\",\n}\n\nexport enum MilestoneUpdateType {\n AUTOMATIC_CONVERSION = \"AUTOMATIC_CONVERSION\",\n AUTOMATIC_SENTINEL1 = \"AUTOMATIC_SENTINEL1\",\n MANUAL = \"MANUAL\",\n}\n\nexport enum OrganizationCrmModuleFlag {\n AUTOMATED_MILESTONES = \"AUTOMATED_MILESTONES\",\n COMMERCIAL_AGENDA = \"COMMERCIAL_AGENDA\",\n}\n\nexport enum OrganizationGeneralModuleFlag {\n FIELD_ENTITY = \"FIELD_ENTITY\",\n SATELLITE_IMAGERY = \"SATELLITE_IMAGERY\",\n}\n\nexport enum ProductionType {\n CONVENTIONAL = \"CONVENTIONAL\",\n ORGANIC = \"ORGANIC\",\n}\n\nexport enum RiceLotStatus {\n BURNING = \"BURNING\",\n DIFFERENTIATION = \"DIFFERENTIATION\",\n EAR_APPEARANCE = \"EAR_APPEARANCE\",\n EMERGENCE = \"EMERGENCE\",\n END_IRRIGATION = \"END_IRRIGATION\",\n FLOWERING = \"FLOWERING\",\n HARVEST = \"HARVEST\",\n INITIAL_FLOOD = \"INITIAL_FLOOD\",\n PHYSIOLOGICAL_MATURITY = \"PHYSIOLOGICAL_MATURITY\",\n PLANTING = \"PLANTING\",\n PREPARATION = \"PREPARATION\",\n PRE_EAR_APPEARANCE = \"PRE_EAR_APPEARANCE\",\n START_IRRIGATION = \"START_IRRIGATION\",\n VEGETATIVE_STATE_THREE = \"VEGETATIVE_STATE_THREE\",\n}\n\nexport enum SeasonMillDeliveryType {\n NO_DELIVERY = \"NO_DELIVERY\",\n PARTIAL = \"PARTIAL\",\n TOTAL = \"TOTAL\",\n}\n\nexport enum SentinelHubProvider {\n LANDSAT89 = \"LANDSAT89\",\n LANDSAT89_PLANET_FUSION = \"LANDSAT89_PLANET_FUSION\",\n PLANET = \"PLANET\",\n SENTINEL1 = \"SENTINEL1\",\n SENTINEL2 = \"SENTINEL2\",\n SENTINEL2_PLANET_FUSION = \"SENTINEL2_PLANET_FUSION\",\n}\n\nexport enum UserCompanyRole {\n ADMIN = \"ADMIN\",\n IRRIGATION_WORKER = \"IRRIGATION_WORKER\",\n VIEWER = \"VIEWER\",\n}\n\nexport enum UserOrganizationRole {\n ADMIN = \"ADMIN\",\n COMMERCIAL = \"COMMERCIAL\",\n MILL = \"MILL\",\n}\n\nexport enum WeatherType {\n CIRRUS = \"CIRRUS\",\n CLEAR = \"CLEAR\",\n CLOUDY = \"CLOUDY\",\n PARTIALLY_CLOUDED = \"PARTIALLY_CLOUDED\",\n PARTIALLY_CLOUDED_WITH_CIRRUS = \"PARTIALLY_CLOUDED_WITH_CIRRUS\",\n}\n\nexport interface CreateCompanyInput {\n name: string;\n logo?: Upload | null;\n country: CountryId;\n subregionId?: number | null;\n organizationId?: number | null;\n governmentId?: string | null;\n phoneNumber?: string | null;\n}\n\nexport interface CreateDamDTO {\n name: string;\n area: PolygonInput;\n}\n\nexport interface CreateDamInput {\n name: string;\n area: PolygonInput;\n fieldId: number;\n}\n\nexport interface CreateFieldInput {\n name: string;\n location: PointInput;\n directions?: string | null;\n companyId: number;\n productionType?: ProductionType | null;\n deliveryCondition?: DeliveryCondition | null;\n createDamsDTOs?: CreateDamDTO[] | null;\n}\n\nexport interface CreateLotInput {\n name: string;\n commercialName?: string | null;\n area?: PolygonInput | null;\n size?: number | null;\n seasonId: number;\n fieldId: number;\n previousCropId?: number | null;\n cropId: number;\n varietyId?: number | null;\n rtk?: MultiLineStringInput | null;\n templateLotId?: number | null;\n}\n\nexport interface CreateRiceAppliedFertilizerInput {\n name?: string | null;\n brand?: string | null;\n date?: DateTime | null;\n quantity?: number | null;\n unitId?: number | null;\n riceLotId: number;\n fertilizerGrades?: FertilizerGradeInput[] | null;\n}\n\nexport interface CreateRiceAppliedPhytosanitaryInput {\n name?: string | null;\n brand?: string | null;\n date?: DateTime | null;\n quantity?: number | null;\n unitId?: number | null;\n riceLotId: number;\n activeIngredients?: number[] | null;\n}\n\nexport interface CreateSeasonInput {\n name: string;\n startDate: DateTime;\n endDate?: DateTime | null;\n description?: string | null;\n companyId: number;\n productionToMill?: number | null;\n millDeliveryType?: string | null;\n}\n\nexport interface CreateUserInput {\n email: string;\n password: string;\n name: string;\n lastName: string;\n profilePicture?: Upload | null;\n}\n\nexport interface FertilizerGradeInput {\n grade?: number | null;\n nutrientId?: number | null;\n}\n\nexport interface InviteUserInput {\n email: string;\n role: UserCompanyRole;\n companyId: number;\n}\n\nexport interface MultiLineStringInput {\n type: string;\n coordinates: number[][][];\n}\n\nexport interface PointInput {\n type: string;\n coordinates: number[];\n}\n\nexport interface PolygonInput {\n type: string;\n coordinates: number[][][];\n}\n\nexport interface UpdateCompanyInput {\n name?: string | null;\n logo?: Upload | null;\n subregionId?: number | null;\n organizationId?: number | null;\n governmentId?: string | null;\n phoneNumber?: string | null;\n irrigationWorkersAccessMode?: IrrigationWorkersAccessMode | null;\n}\n\nexport interface UpdateDamInput {\n id: number;\n name?: string | null;\n area?: PolygonInput | null;\n}\n\nexport interface UpdateFieldInput {\n name?: string | null;\n location?: PointInput | null;\n directions?: string | null;\n productionType?: ProductionType | null;\n deliveryCondition?: DeliveryCondition | null;\n createDamsDTOs?: CreateDamDTO[] | null;\n}\n\nexport interface UpdateLotInput {\n name?: string | null;\n commercialName?: string | null;\n area?: PolygonInput | null;\n size?: number | null;\n previousCropId?: number | null;\n cropId?: number | null;\n varietyId?: number | null;\n rtk?: MultiLineStringInput | null;\n id: number;\n rtkFile?: Upload | null;\n irrigationWorkerId?: number | null;\n abandonedSize?: number | null;\n deliveryMillId?: number | null;\n}\n\nexport interface UpdateRiceAppliedFertilizerInput {\n name?: string | null;\n brand?: string | null;\n date?: DateTime | null;\n quantity?: number | null;\n unitId?: number | null;\n fertilizerGrades?: FertilizerGradeInput[] | null;\n}\n\nexport interface UpdateRiceAppliedPhytosanitaryInput {\n name?: string | null;\n brand?: string | null;\n date?: DateTime | null;\n quantity?: number | null;\n unitId?: number | null;\n activeIngredients?: number[] | null;\n}\n\nexport interface UpdateRiceLotInput {\n plantingDate?: DateTime | null;\n emergenceDate?: DateTime | null;\n firstIrrigationStartDate?: DateTime | null;\n firstIrrigationEndDate?: DateTime | null;\n differentiationDate?: DateTime | null;\n floweringDate?: DateTime | null;\n physiologicalMaturityDate?: DateTime | null;\n harvestDate?: DateTime | null;\n yield?: number | null;\n comment?: string | null;\n preparationDate?: DateTime | null;\n burningDate?: DateTime | null;\n earAppearanceDate?: DateTime | null;\n estimatedYield?: number | null;\n}\n\nexport interface UpdateSeasonInput {\n name?: string | null;\n startDate?: DateTime | null;\n endDate?: DateTime | null;\n description?: string | null;\n companyId?: number | null;\n productionToMill?: number | null;\n millDeliveryType?: string | null;\n}\n\nexport interface UpdateUserInput {\n password?: string | null;\n name?: string | null;\n lastName?: string | null;\n profilePicture?: Upload | null;\n isVerified?: boolean | null;\n actualPassword?: string | null;\n}\n\n//==============================================================\n// END Enums and Input Objects\n//==============================================================\n","import { CalendarDate, Lot } from 'features/MainRouter/features/Map/hooks/useLots/api'\n\nimport { IndicatorStatus, SentinelHubProvider, WeatherType } from './graphql'\nimport { SatelliteProviders } from './selects'\n\nexport type { Lot, CalendarDate }\n\nexport type MapIndex =\n | 'irrigation'\n | 'chlorophyll'\n | 'realImage'\n | 'grainHumidity'\n | 'water'\n | 'weeds'\n | 'emergence'\n\nexport enum Indicators {\n IRRIGATION = 'IRRIGATION',\n CHLOROPHYLL = 'CHLOROPHYLL',\n}\n\ninterface ColorHistogram {\n color: string\n area: number\n}\n\nexport interface MapIndexInfo {\n url?: string\n isAvailable: boolean\n weatherType?: WeatherType\n provider: SentinelHubProvider\n emergenceDaysActivation?: number\n colorHistogram?: ColorHistogram[]\n indicator?: IndicatorStatus\n}\n\nexport interface CalendarDateIndex {\n date: string\n mapIndexInfo: MapIndexInfo\n}\n\nexport type CalendarDatesMapIndices = {\n [index in MapIndex]: CalendarDateIndex[]\n}\n\nexport type CalendarDateIndexWithMultipleProviders = Omit & {\n mapIndexInfo: MapIndexInfo[]\n}\n\nexport type CalendarDatesMapIndicesWithMultipleProviders = {\n [index in MapIndex]: CalendarDateIndexWithMultipleProviders[]\n}\n\nexport interface WeatherDataObject {\n [key: string]: {\n name: string\n weatherType: WeatherType | 'IMAGE_NOT_AVAILABLE'\n satelliteProvider?: SatelliteProviders\n }[]\n}\n\nexport interface DateState {\n toYearMonth?: Date\n fromYearMonth?: Date\n newDates?: boolean\n}\n\nexport type EmergenceDaysActivationIndex = Extract<\n MapIndex,\n 'water' | 'grainHumidity' | 'weeds' | 'emergence'\n>\n\nexport type EmergenceDaysActivationIndices = {\n [key in EmergenceDaysActivationIndex]: number\n}\n","export enum OrganizationFeatures {\n CRM = 'crm',\n SUB_FARMERS_MANAGEMENT = 'subFarmersManagement',\n}\n","export enum AmplitudeEventsName {\n LOGIN = 'Login',\n DASHBOARD_IMPRESSION = 'Impression:Dashboard',\n INDEX_CHANGE = 'Index change',\n SELECTED_DATE_CHANGE = 'Selected date change',\n MAP_IMPRESSION = 'Impression: Map',\n APP_OPENING = 'App opening',\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Properties = Record\n","export enum Selects {\n NO_VARIETY = 'NO_VARIETY',\n ALL_VARIETIES = 'ALL_VARIETIES',\n ALL_CROPS = 'ALL_CROPS',\n}\n\nexport type SatelliteProviders = 'ALL' | 'SENTINEL2' | 'PLANET' | 'LANDSAT89'\n","import { MilestoneUpdateType } from 'types'\n\nconst checkIfAllowedClearDate = (updateType?: MilestoneUpdateType) =>\n updateType === MilestoneUpdateType.MANUAL\n\nexport const LotUtils = {\n checkIfAllowedClearDate,\n}\n","import dayjs from 'dayjs'\n\nimport { UserUserCompanyRole } from 'api/user'\nimport { HistoricalSeason } from 'types'\n\nconst filterCompanySeasonsByHistoricalSeasonRange = (\n historicalSeason: HistoricalSeason,\n companiesRoles?: UserUserCompanyRole[],\n) => {\n return companiesRoles?.filter(companyRole => {\n return companyRole.company.seasons?.some(season => {\n const seasonStartDate = dayjs(season.startDate)\n const selectedHistoricalSeasonStartRangeDate = dayjs(historicalSeason.startRange)\n const selectedHistoricalSeasonEndRangeDate = dayjs(historicalSeason.endRange)\n\n const isSeasonStartDateSameOrAfter =\n seasonStartDate.isSame(selectedHistoricalSeasonStartRangeDate) ||\n seasonStartDate.isAfter(selectedHistoricalSeasonStartRangeDate)\n\n const isSeasonStartDateSameOrBefore =\n seasonStartDate.isSame(selectedHistoricalSeasonEndRangeDate) ||\n seasonStartDate.isBefore(selectedHistoricalSeasonEndRangeDate)\n\n return isSeasonStartDateSameOrAfter && isSeasonStartDateSameOrBefore\n })\n })\n}\n\nexport const CompanyUtils = { filterCompanySeasonsByHistoricalSeasonRange }\n","import i18n from 'i18next'\nimport { initReactI18next, getI18n } from 'react-i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport spanishLocale from 'antd/locale/es_ES'\nimport unitedStatesLocale from 'antd/locale/en_US'\nimport 'dayjs/locale/es'\n\nimport { Locales } from 'assets/locales'\nimport { ConversionUtils } from 'utils'\nimport { LANGUAGE_CODES, LOCALE_CODES } from 'consts'\n\n/**\n * This should match the json files under /public/locales/{lng}\n * Add a new json file for each page or group of related page and subpages\n * All translations for each group should be within that json except for common ones that should\n * go in commmon.json file\n * If json represents multiple pages/subpages, we can group under a key each page/subpage\n * Add the new namespace to the file to get typed translations\n */\nconst NAMESPACES = {\n COMMON: 'common',\n LOGIN: 'login',\n DASHBOARD: 'dashboard',\n LOT_DASHBOARD: 'lot-dashboard',\n ACCOUNT_SETTINGS: 'account-settings',\n FIELD_SETTINGS: 'field-settings',\n SETTINGS: 'settings',\n NAVBAR: 'navbar',\n COMPANY_SETTINGS: 'company-settings',\n LOT_SETTINGS: 'lot-settings',\n SEASON_SETTINGS: 'season-settings',\n MAP: 'map',\n INTERNAL_METRICS: 'internal-metrics',\n ONBOARDING: 'onboarding',\n LOTS_MANAGEMENT: 'lots-management',\n}\n\nconst init = () => {\n i18n\n .use(LanguageDetector)\n .use(initReactI18next)\n .init({\n resources: {\n [LANGUAGE_CODES.ES]: {\n [NAMESPACES.COMMON]: Locales.commonEsLocales,\n [NAMESPACES.LOGIN]: Locales.loginEsLocales,\n [NAMESPACES.DASHBOARD]: Locales.dashboardEsLocales,\n [NAMESPACES.LOT_DASHBOARD]: Locales.lotDashboardEsLocales,\n [NAMESPACES.ACCOUNT_SETTINGS]: Locales.accountSettingsEsLocales,\n [NAMESPACES.FIELD_SETTINGS]: Locales.fieldSettingsEsLocales,\n [NAMESPACES.SETTINGS]: Locales.settingsEsLocales,\n [NAMESPACES.NAVBAR]: Locales.navbarEsLocales,\n [NAMESPACES.COMPANY_SETTINGS]: Locales.companySettingsEsLocales,\n [NAMESPACES.LOT_SETTINGS]: Locales.lotSettingsEsLocales,\n [NAMESPACES.SEASON_SETTINGS]: Locales.seasonSettingsEsLocales,\n [NAMESPACES.MAP]: Locales.mapEsLocales,\n [NAMESPACES.INTERNAL_METRICS]: Locales.internalMetricsEsLocales,\n [NAMESPACES.ONBOARDING]: Locales.onboardingEsLocales,\n [NAMESPACES.LOTS_MANAGEMENT]: Locales.lotsManagementEsLocales,\n },\n [LANGUAGE_CODES.US]: {\n [NAMESPACES.COMMON]: Locales.commonEnLocales,\n [NAMESPACES.LOGIN]: Locales.loginEnLocales,\n [NAMESPACES.DASHBOARD]: Locales.dashboardEnLocales,\n [NAMESPACES.LOT_DASHBOARD]: Locales.lotDashboardEnLocales,\n [NAMESPACES.ACCOUNT_SETTINGS]: Locales.accountSettingsEnLocales,\n [NAMESPACES.FIELD_SETTINGS]: Locales.fieldSettingsEnLocales,\n [NAMESPACES.SETTINGS]: Locales.settingsEnLocales,\n [NAMESPACES.NAVBAR]: Locales.navbarEnLocales,\n [NAMESPACES.COMPANY_SETTINGS]: Locales.companySettingsEnLocales,\n [NAMESPACES.LOT_SETTINGS]: Locales.lotSettingsEnLocales,\n [NAMESPACES.SEASON_SETTINGS]: Locales.seasonSettingsEnLocales,\n [NAMESPACES.MAP]: Locales.mapEnLocales,\n [NAMESPACES.INTERNAL_METRICS]: Locales.internalMetricsEnLocales,\n [NAMESPACES.ONBOARDING]: Locales.onboardingEnLocales,\n [NAMESPACES.LOTS_MANAGEMENT]: Locales.lotsManagementEnLocales,\n },\n [LOCALE_CODES.ES_PA]: {\n [NAMESPACES.COMMON]: Locales.commonEsPaLocales,\n [NAMESPACES.LOT_DASHBOARD]: Locales.lotDashboardEsPaLocales,\n },\n },\n fallbackLng: LANGUAGE_CODES.ES,\n interpolation: {\n escapeValue: false,\n },\n react: {\n useSuspense: false,\n },\n })\n\n i18n.services.formatter?.add('area', value => {\n return ConversionUtils.formatArea(value, i18n.resolvedLanguage)\n })\n i18n.services.formatter?.add('degree', value => {\n return ConversionUtils.formatDegree(value, i18n.resolvedLanguage)\n })\n i18n.services.formatter?.add('surfaceDensity', (value, _, options) => {\n return ConversionUtils.formatSurfaceDensity(value, {\n lng: i18n.resolvedLanguage,\n noUnit: options.noUnit,\n })\n })\n}\n\nconst getAntdLocale = () => {\n if (getI18n().resolvedLanguage === LANGUAGE_CODES.US) {\n return unitedStatesLocale\n }\n\n return spanishLocale\n}\n\nexport const I18NService = {\n init,\n getAntdLocale,\n NAMESPACES,\n}\n","/* eslint-disable no-restricted-globals */\nimport { createUploadLink } from 'apollo-upload-client'\nimport { ApolloClient, ApolloLink, InMemoryCache } from '@apollo/client'\nimport { onError } from '@apollo/client/link/error'\nimport { setContext } from '@apollo/client/link/context'\n\nimport { config } from 'config'\nimport { STORAGE_KEYS } from 'consts'\n\nconst buildApolloClient = () => {\n const UNAUTHORIZED_ERROR_MSG = 'Unauthorized'\n\n const httpLink = createUploadLink({ uri: config.apiUrl }) as unknown as ApolloLink\n\n const logoutLink = onError(({ graphQLErrors }) => {\n // We don't have react router context so we need to use location directly\n if (graphQLErrors?.[0].message === UNAUTHORIZED_ERROR_MSG && location.pathname !== '/login') {\n location.href = '/'\n window.localStorage.removeItem(STORAGE_KEYS.USER_TOKEN)\n }\n })\n\n const authLink = setContext((_, { headers }) => {\n const storedToken = localStorage.getItem('token')\n // Workaround to delete \" character from the beginning and end of the token\n const token = storedToken && JSON.parse(storedToken)\n return {\n headers: {\n authorization: storedToken ? `Bearer ${token}` : '',\n ...headers,\n },\n }\n })\n\n const apolloClient = new ApolloClient({\n uri: config.apiUrl,\n cache: new InMemoryCache(),\n link: logoutLink.concat(authLink).concat(httpLink),\n })\n\n return apolloClient\n}\n\nexport const ApolloService = {\n buildApolloClient,\n}\n","import { parseInt } from 'lodash'\nimport { ThemeConfig } from 'antd'\n\nimport { Colors } from './colors'\nimport { Foundation } from './foundation'\nimport { Modal } from './modal'\n\nconst themeToken = {\n fontFamily: 'Inter',\n colorPrimary: Colors.primary,\n contentBg: Colors.primary,\n borderRadius: parseInt(Foundation.borderRadius),\n colorBgContainer: Colors.grey1,\n colorBgContainerDisabled: Colors.grey2,\n colorLink: Colors.primary,\n}\n\nexport const antdTheme: ThemeConfig = {\n token: themeToken,\n components: {\n Select: {\n colorBgContainer: Colors.white,\n controlHeight: parseInt(Foundation.height),\n colorTextPlaceholder: Colors.grey3,\n },\n Input: {\n colorBgContainer: Colors.white,\n controlHeight: parseInt(Foundation.height),\n colorBorder: Colors.grey2,\n colorTextPlaceholder: Colors.grey3,\n },\n Button: {\n controlHeight: parseInt(Foundation.height),\n colorLink: Colors.primary,\n colorLinkHover: Colors.primary,\n },\n DatePicker: {\n controlHeight: parseInt(Foundation.height),\n colorBgContainer: Colors.white,\n colorTextPlaceholder: Colors.grey3,\n },\n Modal: {\n contentBg: Colors.grey1,\n headerBg: Colors.grey1,\n titleFontSize: Modal.header.titleFontSize,\n },\n },\n}\n","import { DefaultTheme } from 'styled-components'\n\nimport { Colors } from './colors'\nimport { Typography } from './typography'\nimport { Foundation } from './foundation'\nimport { Card } from './card'\nimport { Input } from './input'\n\nexport { antdTheme } from './antd-theme'\n\nexport const theme: DefaultTheme = {\n colors: Colors,\n foundation: Foundation,\n typography: Typography,\n card: Card,\n input: Input,\n}\n","import { createGlobalStyle } from 'styled-components'\n\nexport const GlobalStyles = createGlobalStyle`\n body #root {\n height: 100%;\n overflow: hidden;\n }\n\n ::-webkit-scrollbar {\n background-color: transparent;\n width: 12px;\n height: 12px;\n }\n\n ::-webkit-scrollbar-track {\n background-color: transparent;\n }\n\n ::-webkit-scrollbar-track:hover {\n background-color: transparent;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: #babac0;\n border-radius: 16px;\n border: 3px solid transparent;\n background-clip: padding-box;\n }\n\n ::-webkit-scrollbar-thumb:hover {\n background-color: #a0a0a5;\n }\n\n ::-webkit-scrollbar-button {\n display: none;\n }\n\n .ant-row {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n\n .ant-col:first-child {\n padding-left: 0 !important;\n }\n\n .ant-col:last-child {\n padding-right: 0 !important;\n }\n\n .ant-upload.ant-upload-select {\n display: block;\n }\n \n .ant-table-thead > tr > th {\n &:before {\n width: 0px !important\n }\n &:first-child {\n border-bottom-left-radius: 11px\n }\n &:last-child {\n border-bottom-right-radius: 11px\n }\n }\n\n .ant-table-tbody > tr {\n &:last-child {\n >td {\n border-bottom: 0\n }\n }\n \n > td {\n border-bottom: ${({ theme }) => `5px solid ${theme.colors.grey2}`};\n &:first-child {\n border-bottom-left-radius: 2px\n }\n &:last-child {\n border-bottom-right-radius: 2px;\n }\n }\n }\n\n .ant-select-selector {\n align-items: center;\n border-width: 2px !important;\n }\n\n .ant-select-item .anticon-check {\n color: white !important;\n } \n\n .custom-select-dropdown {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n }\n .custom-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-disabled) {\n background-color: ${({ theme }) => theme.colors.new.baseColor[700]} !important;\n }\n .custom-select-dropdown .ant-select-item-option-content { \n color: white;\n font-weight: 600 !important;\n }\n .custom-select-dropdown .ant-select-item-option-selected {\n background-color: ${({ theme }) => theme.colors.new.baseColor[700]} !important;\n }\n .custom-select-dropdown .ant-select-item {\n padding: 9px 11px !important;\n margin: 3px 0px !important;\n border-radius: 0;\n }\n .ant-select-dropdown {\n padding: 0;\n }\n .ant-picker-panel-container {\n border-radius: ${({ theme }) => theme.foundation.smallRadius}\n }\n\n .ant-select-multiple .ant-select-selection-item {\n border: none;\n }\n\n .ant-select-selection-item-remove > * {\n display: none;\n }\n\n .custom-disabled-select .ant-select-selector {\n background-color: white !important;\n color: ${({ theme }) => theme.colors.new.baseColor[900]} !important;\n }\n\n .custom-disabled-select .ant-select-arrow {\n display: none !important\n }\n\n .ant-modal-content {\n padding: 0 !important;\n }\n\n .ant-modal-header {\n padding: 30px 48px 22px;\n }\n \n .ant-modal-body {\n padding: 0 48px 30px;\n }\n\n .ant-picker {\n border-width: 2px !important;\n }\n \n .ant-input {\n border-width: 2px !important;\n }\n \n .ant-input-number {\n border-width: 2px !important;\n background-color: ${({ theme }) => theme.colors.white};\n }\n\n .ant-input-number-disabled {\n background-color: ${({ theme }) => theme.colors.grey2} !important;\n }\n\n .react-tel-input { \n .form-control:focus { \n box-shadow: none;\n border-color: ${({ theme }) => theme.colors.inputOrange} !important;\n }\n .form-control:hover { \n border-color: ${({ theme }) => theme.colors.inputOrange} !important;\n }\n }\n\n`\n","import { css } from 'styled-components'\n\nconst coverImage = css`\n width: 100%;\n height: 100%;\n background-repeat: no-repeat;\n background-size: cover;\n`\n\nexport const MixinsStyles = {\n coverImage,\n}\n","import { useContext, useState, createContext } from 'react'\nimport * as Sentry from '@sentry/react'\nimport { setUserId as setAmplitudeUserId, track } from '@amplitude/analytics-browser'\n\nimport { AmplitudeEventsName } from 'types'\nimport { BROADCAST_CHANNEL } from 'consts'\n\ninterface Login {\n id: number\n name: string\n lastName: string\n email: string\n organizationId?: number\n organizationName?: string\n}\ninterface AuthContextType {\n userId?: number\n login: (auth: Login) => void\n logout: () => void\n authChannel?: BroadcastChannel\n}\n\nconst Context = createContext({\n userId: undefined,\n login: () => {\n throw new Error(\n 'Attempted to use default login function for AuthContext, make sure to pass a custom function implementation',\n )\n },\n logout: () => {\n throw new Error(\n 'Attempted to use default logout function for AuthContext, make sure to pass a custom function implementation',\n )\n },\n authChannel: undefined,\n})\n\nconst useValue = (): AuthContextType => {\n const [userId, setUserId] = useState()\n\n const authChannel = new BroadcastChannel(BROADCAST_CHANNEL.AUTH.NAME)\n\n const login = ({ id, name, lastName, email, organizationId, organizationName }: Login) => {\n setUserId(id)\n Sentry.setUser({ id: id.toString() })\n setAmplitudeUserId(id.toString())\n\n const eventProperties = organizationId\n ? {\n email,\n fullName: `${name} ${lastName}`,\n organizationName,\n organizationId,\n }\n : {\n email,\n fullName: `${name} ${lastName}`,\n }\n\n track(AmplitudeEventsName.LOGIN, eventProperties)\n }\n\n const logout: AuthContextType['logout'] = () => {\n setUserId(undefined)\n Sentry.configureScope(scope => scope.setUser(null))\n }\n\n return { userId, login, logout, authChannel }\n}\n\nconst useAuthContext = () => {\n return useContext(Context)\n}\n\nexport const AuthContext = {\n Provider: Context.Provider,\n useValue,\n useAuthContext,\n}\n","import { useMemo } from 'react'\nimport { useLocation } from 'react-router-dom'\n\nexport const useQueryParams = () => {\n const { search } = useLocation()\n\n return useMemo(() => new URLSearchParams(search), [search])\n}\n","import { gql } from '@apollo/client'\n\nexport type {\n User,\n UserVariables,\n // eslint-disable-next-line camelcase\n User_user_companiesRoles as UserUserCompanyRole,\n} from './types/User'\n\nexport type { UpdateUser, UpdateUserVariables } from './types/UpdateUser'\n\nexport const USER = gql`\n query User($id: Int!) {\n user(id: $id) {\n id\n email\n name\n lastName\n profilePicture\n isOnboarded\n companiesRoles {\n role\n company {\n id\n name\n logo\n satelliteImageryFlag\n phoneNumber\n seasons {\n id\n startDate\n }\n organization {\n id\n featureFlags {\n general {\n flags\n }\n }\n isCommercialNameEnabled\n }\n subregion {\n id\n location {\n coordinates\n }\n }\n country {\n id\n lng\n code\n isoCode\n }\n milestonesTimeline\n }\n }\n organizationRole {\n role\n organization {\n id\n name\n logo\n featureSetId\n featureFlags {\n general {\n flags\n }\n crm {\n enabled\n flags\n }\n subFarmersManagement {\n enabled\n }\n }\n country {\n id\n lng\n code\n isoCode\n }\n }\n }\n regions {\n id\n name\n location {\n type\n coordinates\n }\n }\n }\n }\n`\n\nexport const UPDATE_USER = gql`\n mutation UpdateUser($id: Int!, $updateUserDTO: UpdateUserInput!) {\n updateUser(id: $id, updateUserDTO: $updateUserDTO) {\n user {\n id\n name\n lastName\n profilePicture\n }\n }\n }\n`\n\nexport type { CommercialExecutives } from './types/CommercialExecutives'\n\nexport const COMMERCIAL_EXECUTIVES = gql`\n query CommercialExecutives {\n commercialExecutives {\n results {\n id\n name\n lastName\n regions {\n id\n name\n }\n }\n }\n }\n`\n","import { gql } from '@apollo/client'\n\nexport type { UpdateCompany, UpdateCompanyVariables } from './types/UpdateCompany'\n\nexport const UPDATE_COMPANY = gql`\n mutation UpdateCompany($id: Int!, $updateCompanyDTO: UpdateCompanyInput!) {\n updateCompany(id: $id, updateCompanyDTO: $updateCompanyDTO) {\n company {\n id\n name\n logo\n governmentId\n subregionId\n irrigationWorkersAccessMode\n phoneNumber\n }\n }\n }\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n CompanySeasons,\n CompanySeasonsVariables,\n CompanySeasons_seasons_results as CompanySeason,\n CompanySeasons_seasons_results_seasonFields as SeasonField,\n} from './types/CompanySeasons'\n\nexport const COMPANY_SEASONS = gql`\n query CompanySeasons($companyId: Int!) {\n seasons(companyId: $companyId) {\n results {\n id\n name\n startDate\n seasonFields {\n lots {\n id\n }\n field {\n id\n name\n }\n }\n }\n }\n }\n`\n\nexport type {\n Season as SeasonData,\n SeasonVariables,\n Season_season as Season,\n Season_season_seasonFields_lots as SeasonLot,\n Season_season_seasonFields_field_weather_days as WeatherDay,\n Season_season_seasonFields as SeasonFields,\n Season_season_seasonFields_field_dams as SeasonFieldDam,\n} from './types/Season'\n\nexport const SEASON = gql`\n query Season($id: Int!, $fromDate: DateTime!, $isSatelliteImageryFlagOn: Boolean!) {\n season(id: $id) {\n id\n name\n startDate\n endDate\n description\n productionToMill\n millDeliveryType\n seasonFields {\n lots {\n id\n name\n size\n commercialName\n riceLot {\n id\n emergenceDate\n emergenceUpdateType\n isPlanetEnabled\n yield\n harvestDate\n harvestUpdateType\n isHarvested\n daysSinceEmergence\n indicators @include(if: $isSatelliteImageryFlagOn) {\n irrigation\n chlorophyll\n semaphore\n }\n estimatedYield {\n value\n }\n }\n location {\n coordinates\n }\n area {\n coordinates\n }\n variety {\n locales {\n es\n en\n }\n id\n }\n crop {\n id\n locales {\n es\n en\n }\n }\n irrigationWorker {\n id\n }\n }\n field {\n id\n name\n directions\n location {\n type\n coordinates\n }\n dams {\n id\n name\n indicators {\n waterSurfaceArea\n waterSurfaceVolume\n waterSurfacePercentage\n }\n }\n weather(fromDate: $fromDate) @include(if: $isSatelliteImageryFlagOn) {\n days {\n dateTime\n tempMax\n tempMin\n precipProb\n cloudCover\n }\n }\n }\n }\n updatedAt\n }\n }\n`\n\nexport type { UpdateSeason, UpdateSeasonVariables } from './types/UpdateSeason'\n\nexport const UPDATE_SEASON = gql`\n mutation UpdateSeason($id: Int!, $updateSeasonDTO: UpdateSeasonInput!) {\n updateSeason(id: $id, updateSeasonDTO: $updateSeasonDTO) {\n season {\n id\n name\n startDate\n endDate\n description\n updatedAt\n productionToMill\n millDeliveryType\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { USER, User, UserVariables } from 'api'\nimport { AuthContext } from 'contexts'\n\nexport const useCurrentUser = () => {\n const { userId } = AuthContext.useAuthContext()\n\n const { data, loading } = useQuery(USER, {\n variables: { id: userId! },\n skip: !userId,\n })\n\n return { user: data?.user, loading }\n}\n","import { useCurrentUser } from './useCurrentUser'\n\n/**\n * This hook return the logged in user\n * ! Use only when the user is already logged in. For all the other cases use useCurrentUser\n */\nexport const useUser = () => {\n const { user } = useCurrentUser()\n return user!\n}\n","import { useQuery } from '@apollo/client'\n\nimport { CompanySeasons, CompanySeasonsVariables, COMPANY_SEASONS } from 'api'\n\nexport const useCompanySeasons = (\n companyId?: number,\n onCompleted?: (companySeasons: CompanySeasons) => void,\n) => {\n return useQuery(COMPANY_SEASONS, {\n variables: { companyId: companyId! },\n skip: !companyId,\n onCompleted,\n })\n}\n","import { useUser } from './useUser'\n\nexport const useFeatures = () => {\n const user = useUser()\n\n const organizationFeatureFlags = user?.organizationRole?.organization?.featureFlags\n\n return {\n organizationFeatures: {\n general: organizationFeatureFlags?.general,\n crm: organizationFeatureFlags?.crm,\n subFarmersManagement: organizationFeatureFlags?.subFarmersManagement,\n },\n }\n}\n","import { ActiveCompanyContext } from 'contexts'\nimport {\n FeatureSet,\n OrganizationFeatures,\n OrganizationGeneralModuleFlag,\n UserCompanyRole,\n UserOrganizationRole,\n} from 'types'\n\nimport { useCurrentUser } from './useCurrentUser'\nimport { useFeatures } from './useFeatures'\n\nconst allowedOrganizationRolesCompanyCreation = {\n [OrganizationFeatures.CRM]: [UserOrganizationRole.COMMERCIAL, UserOrganizationRole.ADMIN],\n [OrganizationFeatures.SUB_FARMERS_MANAGEMENT]: [UserOrganizationRole.ADMIN],\n}\n\nexport const usePermissions = () => {\n // TODO: analyze why user can be undefined if this is used when user is already logged in\n // we should use useUser hook\n const { user } = useCurrentUser()\n const { organizationFeatures } = useFeatures()\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const isAnOrganizationUser = !!user?.organizationRole\n\n const userOrganizationRole = user?.organizationRole?.role\n\n const isFeatureSetGrupoDiana =\n user?.organizationRole?.organization.featureSetId === FeatureSet.GRUPO_DIANA\n\n const activeCompany = user?.companiesRoles?.find(\n companyRole => companyRole.company.id === activeCompanyId,\n )\n\n const isCompanyViewerUser = activeCompany?.role === UserCompanyRole.VIEWER\n\n const isCompanyAdminUser =\n (activeCompany?.role ?? UserCompanyRole.VIEWER) === UserCompanyRole.ADMIN\n\n const isIrrigationWorkerUser = activeCompany?.role === UserCompanyRole.IRRIGATION_WORKER\n\n const satelliteImageryFlag = activeCompany?.company.satelliteImageryFlag ?? !isAnOrganizationUser\n\n const activeCompanyFieldEntityFlag =\n activeCompany?.company.organization?.featureFlags.general.flags.includes(\n OrganizationGeneralModuleFlag.FIELD_ENTITY,\n )\n\n const isCommercialNameEnabled = !!activeCompany?.company.organization?.isCommercialNameEnabled\n const fieldEntityFlag =\n activeCompanyFieldEntityFlag ??\n organizationFeatures.general?.flags.includes(OrganizationGeneralModuleFlag.FIELD_ENTITY) ??\n true\n\n const hasAnOrganizationCompany = user?.companiesRoles?.some(\n company => company.company?.organization?.id,\n )\n\n const isCommercialUser = user?.organizationRole?.role === UserOrganizationRole.COMMERCIAL\n const isOrganizationAdmin = user?.organizationRole?.role === UserOrganizationRole.ADMIN\n\n const checkIfUserNotAllowedToCreateCompanyOrSeason = () => {\n if (hasAnOrganizationCompany && !userOrganizationRole) return true\n\n if (userOrganizationRole) {\n return !Object.entries(allowedOrganizationRolesCompanyCreation).some(\n ([feature, roles]) =>\n organizationFeatures[feature as OrganizationFeatures]?.enabled &&\n roles.includes(userOrganizationRole),\n )\n }\n\n return false\n }\n\n const permissions = {\n satelliteImagery: satelliteImageryFlag,\n fieldEntity: fieldEntityFlag,\n companyCreation: !checkIfUserNotAllowedToCreateCompanyOrSeason(),\n seasonCreation: !checkIfUserNotAllowedToCreateCompanyOrSeason(),\n isCompanyAdminUser,\n isAnOrganizationUser,\n isFeatureSetGrupoDiana,\n isCommercialUser,\n isOrganizationAdmin,\n isCompanyViewerUser,\n isIrrigationWorkerUser,\n isCommercialNameEnabled,\n }\n\n return { permissions }\n}\n","import { useQuery } from '@apollo/client'\n\nimport { SeasonData, SEASON, SeasonVariables } from 'api'\nimport { DateUtils } from 'utils'\n\nimport { usePermissions } from './usePermissions'\n\nexport const useSeason = (id?: number) => {\n const fromDate = DateUtils.formatToUtc(new Date())\n const { permissions } = usePermissions()\n return useQuery(SEASON, {\n variables: {\n id: id!,\n fromDate,\n isSatelliteImageryFlagOn: permissions.satelliteImagery,\n },\n skip: !id,\n })\n}\n","import { gql } from '@apollo/client'\n\nexport type { CompanyFields, CompanyFieldsVariables } from './types/CompanyFields'\n\nexport const COMPANY_FIELDS = gql`\n query CompanyFields($id: Int!) {\n company(id: $id) {\n id\n usersRoles {\n role\n user {\n id\n }\n }\n fields {\n id\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { CompanyFields, CompanyFieldsVariables, COMPANY_FIELDS } from './api'\nimport { useSeason } from '../useSeason'\nimport { usePermissions } from '../usePermissions'\n\nexport const useHasCompanyOrFieldsOrLots = () => {\n const { activeCompanyId, activeSeasonId, loadingCompanySeasons, hasCompanies } =\n ActiveCompanyContext.useActiveCompanyContext()\n const { permissions } = usePermissions()\n const { data: season, loading: loadingSeason } = useSeason(activeSeasonId)\n\n const { data: companyFields, loading: loadingCompanyFields } = useQuery<\n CompanyFields,\n CompanyFieldsVariables\n >(COMPANY_FIELDS, {\n variables: { id: activeCompanyId! },\n skip: !activeCompanyId,\n })\n\n const noCompany = !hasCompanies\n const noFields = !companyFields?.company.fields?.length\n const noLots =\n !noCompany &&\n !noFields &&\n !season?.season.seasonFields.some(seasonField => !!seasonField.lots?.length)\n const noCompanyOrFieldsOrLots = noCompany || noFields || noLots\n\n const loading =\n loadingCompanySeasons ||\n loadingSeason ||\n loadingCompanyFields ||\n (!!activeCompanyId && (!companyFields || (!season && !permissions.isIrrigationWorkerUser)))\n\n return { noCompanyOrFieldsOrLots, noCompany, noFields, noLots, loading }\n}\n","import { useMutation } from '@apollo/client'\n\nimport { UPDATE_USER, UpdateUser, UpdateUserVariables } from 'api'\nimport { GraphQLUtils } from 'utils'\n\nexport const useUpdateUser = (onCompleted?: () => void) => {\n const [updateUser, { loading, error }] = useMutation(\n UPDATE_USER,\n {\n onError: GraphQLUtils.errorHandler,\n onCompleted,\n },\n )\n\n return { updateUser, loading, error }\n}\n","import { useState } from 'react'\n\nconst useLocalStorage = (\n key: string,\n initialValue?: T,\n): [T, (value: T | ((val: T) => T)) => void, () => void] => {\n const [storedValue, setStoredValue] = useState(() => {\n const item = window.localStorage.getItem(key)\n try {\n return item ? JSON.parse(item) : initialValue\n } catch (error) {\n return item ?? initialValue\n }\n })\n\n const setValue = (value: T | ((val: T) => T)) => {\n try {\n const valueToStore = value instanceof Function ? value(storedValue) : value\n setStoredValue(valueToStore)\n window.localStorage.setItem(key, JSON.stringify(valueToStore))\n } catch (error) {\n console.log(error)\n }\n }\n\n const clear = () => {\n window.localStorage.removeItem(key)\n }\n\n return [storedValue, setValue, clear]\n}\n\nexport { useLocalStorage }\n","import { gql } from '@apollo/client'\n\nexport type { LoginWithToken } from './types/LoginWithToken'\n\nexport const LOGIN_WITH_TOKEN = gql`\n mutation LoginWithToken {\n loginWithToken {\n success\n token\n user {\n id\n name\n lastName\n email\n organizationRole {\n organization {\n id\n name\n }\n }\n }\n }\n }\n`\n","import { useNavigate } from 'react-router-dom'\nimport { useMutation, useApolloClient } from '@apollo/client'\nimport { useCallback } from 'react'\n\nimport { BROADCAST_CHANNEL, STORAGE_KEYS } from 'consts'\nimport { ActiveCompanyContext, AuthContext } from 'contexts'\n\nimport { useLocalStorage } from '../useLocalStorage'\nimport { LoginWithToken, LOGIN_WITH_TOKEN } from './api'\n\nexport const useAuth = (resetActiveCompany?: () => void) => {\n const navigate = useNavigate()\n const client = useApolloClient()\n const {\n login: contextLogin,\n logout: contextLogout,\n userId,\n authChannel,\n } = AuthContext.useAuthContext()\n const { resetStore } = ActiveCompanyContext.useActiveCompanyContext()\n\n const [userToken, setUserToken, clearUserToken] = useLocalStorage(STORAGE_KEYS.USER_TOKEN)\n const [, , clearUserLanguage] = useLocalStorage(STORAGE_KEYS.USER_LANGUAGE)\n\n const clearUserData = useCallback(async () => {\n clearUserToken()\n contextLogout()\n clearUserLanguage()\n await client.clearStore()\n }, [clearUserLanguage, clearUserToken, client, contextLogout])\n\n const handleLogout = async () => {\n authChannel?.postMessage(BROADCAST_CHANNEL.AUTH.LOGOUT)\n await clearUserData()\n navigate('/login', { replace: true })\n }\n\n const logout = async () => {\n resetStore()\n await handleLogout()\n }\n\n const onError = async () => {\n // We need to call resetActiveCompany because tokenLoginMutation is being called outside of CompanyContextProvider.\n resetActiveCompany?.()\n await handleLogout()\n }\n\n const [tokenLoginMutation, { loading: tokenLoginLoading }] = useMutation(\n LOGIN_WITH_TOKEN,\n {\n onCompleted: data => {\n contextLogin({\n id: data.loginWithToken.user.id,\n email: data.loginWithToken.user.email,\n name: data.loginWithToken.user.name,\n lastName: data.loginWithToken.user.lastName,\n organizationId: data.loginWithToken.user.organizationRole?.organization.id,\n organizationName: data.loginWithToken.user.organizationRole?.organization.name,\n })\n setUserToken(data.loginWithToken.token)\n },\n onError,\n },\n )\n\n const tokenLogin = () => tokenLoginMutation()\n\n return {\n userId,\n userToken,\n tokenLogin,\n tokenLoginLoading,\n logout,\n authChannel,\n clearUserData,\n }\n}\n","import { config } from 'config'\n\nexport const useIsProdEnv = () => config.env === 'production'\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { Countries } from './types/Countries'\n\nexport const COUNTRIES = gql`\n query Countries {\n countries {\n results {\n id\n name\n code\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { COUNTRIES, Countries } from './api'\n\nexport const useCountries = () => {\n const { data, loading } = useQuery(COUNTRIES)\n\n return { countries: data?.countries.results, loading }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { Subregions, SubregionsVariables } from './types/Subregions'\n\nexport const SUBREGIONS = gql`\n query Subregions($regionId: Int!) {\n subregions(regionId: $regionId) {\n results {\n id\n name\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { SUBREGIONS, Subregions, SubregionsVariables } from './api'\n\nexport const useSubregions = (regionId?: number) => {\n const { data, loading } = useQuery(SUBREGIONS, {\n variables: { regionId: regionId! },\n skip: !regionId,\n })\n\n return { subregions: data?.subregions.results, loading }\n}\n","import { useMutation } from '@apollo/client'\n\nimport { UpdateSeason, UpdateSeasonVariables, UPDATE_SEASON } from 'api'\nimport { GraphQLUtils } from 'utils'\n\nexport const useUpdateSeason = () => {\n const [updateSeason, { loading }] = useMutation(\n UPDATE_SEASON,\n {\n onError: GraphQLUtils.errorHandler,\n },\n )\n\n return { updateSeason, loading }\n}\n","import { track as amplitudeTrack } from '@amplitude/analytics-browser'\nimport { useCallback } from 'react'\nimport * as Sentry from '@sentry/react'\n\nimport { AmplitudeEventsName, Properties } from 'types'\n\nimport { useUser } from './useUser'\n\nexport const useTrackEvent = (eventName: AmplitudeEventsName) => {\n const user = useUser()\n const track = useCallback(\n (properties?: Properties) => {\n try {\n const baseProps = user?.organizationRole?.organization\n ? {\n email: user.email,\n fullName: `${user.name} ${user.lastName}`,\n organizationName: user.organizationRole.organization.name,\n organizationId: user.organizationRole.organization.id,\n }\n : {\n email: user.email,\n fullName: `${user.name} ${user.lastName}`,\n }\n\n // If we identify some generic property that is valid for all events, we can iclude inside the properties object\n // e.g. { ...properties, companyId: id }\n amplitudeTrack(eventName, {\n ...baseProps,\n ...properties,\n })\n } catch (error) {\n Sentry.captureException(error)\n }\n },\n [eventName, user],\n )\n return { track }\n}\n","import { useEffect } from 'react'\nimport useCustomCompareEffect from 'react-use/lib/useCustomCompareEffect'\nimport { isEqual } from 'lodash'\n\nimport { AmplitudeEventsName, Properties } from 'types'\n\nimport { useTrackEvent } from './useTrackEvent'\n\nexport const useTrackImpression = ({\n eventName,\n eventProperties,\n loading,\n}: {\n eventName: AmplitudeEventsName\n eventProperties?: Properties\n loading?: boolean\n}) => {\n const { track } = useTrackEvent(eventName)\n\n useEffect(() => {\n // It is tracking when user returns to the tab\n const handleFocus = () => track(eventProperties)\n\n window.addEventListener('focus', handleFocus)\n return () => {\n window.removeEventListener('focus', handleFocus)\n }\n }, [eventProperties, track])\n\n useCustomCompareEffect(\n () => {\n if (loading) return\n track(eventProperties)\n },\n [loading, eventProperties],\n (prevDeps, nextDeps) => {\n const prevLotDeps = prevDeps?.[0]\n const nextLotDeps = nextDeps?.[0]\n\n const areDepsEqual = isEqual(prevLotDeps, nextLotDeps) && isEqual(prevDeps[1], nextDeps[1])\n\n return areDepsEqual\n },\n )\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { UpdateRiceLot, UpdateRiceLotVariables } from './types/UpdateRiceLot'\n\nexport const UPDATE_RICE_LOT = gql`\n mutation UpdateRiceLot($id: Int!, $updateRiceLotDTO: UpdateRiceLotInput!) {\n updateRiceLot(id: $id, updateRiceLotDTO: $updateRiceLotDTO) {\n code\n riceLot {\n id\n plantingDate\n emergenceDate\n firstIrrigationStartDate\n firstIrrigationEndDate\n floweringDate\n harvestDate\n preparationDate\n burningDate\n earAppearanceDate\n yield\n physiologicalMaturityDate\n differentiationDate\n comment\n emergenceUpdateType\n plantingUpdateType\n floweringUpdateType\n harvestUpdateType\n preparationUpdateType\n burningUpdateType\n earAppearanceUpdateType\n differentiationUpdateType\n daysSinceEmergence\n isHarvested\n historicalIrrigation {\n values {\n date\n percentage\n daysSinceEmergence\n }\n }\n indicators {\n semaphore\n sufficientWaterPercentage\n irrigation\n chlorophyll\n weatherType\n lastUpdate\n grainHumidity {\n isAvailable\n lastUpdate\n emergenceDaysActivation\n levels {\n one {\n lowEdge\n highEdge\n percentage\n }\n two {\n lowEdge\n highEdge\n percentage\n }\n three {\n lowEdge\n highEdge\n percentage\n }\n four {\n lowEdge\n highEdge\n percentage\n }\n five {\n lowEdge\n highEdge\n percentage\n }\n six {\n lowEdge\n highEdge\n percentage\n }\n seven {\n lowEdge\n highEdge\n percentage\n }\n }\n }\n }\n targetYieldCurve {\n id\n yield\n values {\n daysSinceEmergence\n chlorophyll\n }\n }\n realYieldCurve {\n values {\n daysSinceEmergence\n chlorophyll\n }\n }\n estimatedYield {\n isAvailable\n value\n }\n }\n }\n }\n`\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UpdateRiceLot, UpdateRiceLotVariables, UPDATE_RICE_LOT } from './api'\n\nexport const useUpdateRiceLot = () => {\n const [updateRiceLot] = useMutation(UPDATE_RICE_LOT, {\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }) => {\n if (!response) return\n const seasonLot: StoreObject = {\n id: response.updateRiceLot.riceLot.id,\n __typename: 'SeasonLotRiceLot',\n }\n const {\n preparationDate,\n burningDate,\n plantingDate,\n emergenceDate,\n firstIrrigationStartDate,\n firstIrrigationEndDate,\n differentiationDate,\n floweringDate,\n earAppearanceDate,\n physiologicalMaturityDate,\n harvestDate,\n yield: yieldValue,\n emergenceUpdateType,\n plantingUpdateType,\n floweringUpdateType,\n harvestUpdateType,\n preparationUpdateType,\n burningUpdateType,\n earAppearanceUpdateType,\n differentiationUpdateType,\n estimatedYield,\n } = response.updateRiceLot.riceLot\n\n cache.modify({\n id: cache.identify(seasonLot),\n fields: {\n preparationDate: () => preparationDate,\n burningDate: () => burningDate,\n plantingDate: () => plantingDate,\n emergenceDate: () => emergenceDate,\n firstIrrigationStartDate: () => firstIrrigationStartDate,\n firstIrrigationEndDate: () => firstIrrigationEndDate,\n differentiationDate: () => differentiationDate,\n floweringDate: () => floweringDate,\n earAppearanceDate: () => earAppearanceDate,\n physiologicalMaturityDate: () => physiologicalMaturityDate,\n harvestDate: () => harvestDate,\n yield: () => yieldValue,\n emergenceUpdateType: () => emergenceUpdateType,\n plantingUpdateType: () => plantingUpdateType,\n floweringUpdateType: () => floweringUpdateType,\n harvestUpdateType: () => harvestUpdateType,\n preparationUpdateType: () => preparationUpdateType,\n burningUpdateType: () => burningUpdateType,\n earAppearanceUpdateType: () => earAppearanceUpdateType,\n differentiationUpdateType: () => differentiationUpdateType,\n estimatedYield: () => estimatedYield,\n },\n })\n },\n })\n\n return { updateRiceLot }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { UpdateLotById, UpdateLotByIdVariables } from './types/UpdateLotById'\n\nexport const UPDATE_LOT = gql`\n mutation UpdateLotById($updateLotDto: UpdateLotInput!) {\n updateLot(updateLotDTO: $updateLotDto) {\n lot {\n id\n name\n commercialName\n area {\n type\n coordinates\n }\n rtk {\n coordinates\n }\n location {\n type\n coordinates\n }\n size\n crop {\n id\n }\n previousCrop {\n id\n }\n variety {\n id\n name\n locales {\n es\n en\n }\n }\n productionType\n abandonedSize\n deliveryCondition\n deliveryMill {\n id\n }\n }\n }\n }\n`\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UpdateLotById, UpdateLotByIdVariables, UPDATE_LOT } from './api'\n\nexport type { UpdateLotById, UpdateLotByIdVariables, UPDATE_LOT } from './api'\n\nexport const useUpdateLot = () => {\n const [updateLot, { loading }] = useMutation(UPDATE_LOT, {\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }) => {\n if (!response) return\n const seasonLot: StoreObject = {\n id: response.updateLot.lot.id,\n __typename: 'SeasonLot',\n }\n\n const {\n variety,\n previousCrop,\n productionType,\n abandonedSize,\n deliveryCondition,\n deliveryMill,\n } = response.updateLot.lot\n\n cache.modify({\n id: cache.identify(seasonLot),\n fields: {\n variety() {\n return variety\n },\n previousCrop() {\n return previousCrop\n },\n productionType() {\n return productionType\n },\n abandonedSize() {\n return abandonedSize\n },\n deliveryCondition() {\n return deliveryCondition\n },\n deliveryMill() {\n return deliveryMill\n },\n },\n })\n },\n })\n\n return { updateLot, loading }\n}\n","import { ActiveCompanyContext } from 'contexts'\n\nimport { useUser } from './useUser'\n\nexport const useCompanyMilestones = () => {\n const { companiesRoles } = useUser()\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const activeCompanyMilestones =\n companiesRoles?.find(companyRole => companyRole.company.id === activeCompanyId)?.company\n .milestonesTimeline ?? []\n\n return {\n activeCompanyMilestones,\n }\n}\n","import { useTheme } from 'styled-components'\n\nimport { MilestoneUpdateType } from 'types'\n\nexport const useUpdateTypeStyles = () => {\n const { colors } = useTheme()\n\n const getBallBackground = (milestoneType?: MilestoneUpdateType) => {\n if (milestoneType === MilestoneUpdateType.MANUAL) return colors.new.secondary[600]\n return milestoneType === MilestoneUpdateType.AUTOMATIC_SENTINEL1\n ? colors.new.timelineLightBlue\n : colors.new.timelineViolet\n }\n\n return { getBallBackground }\n}\n","import { gql } from '@apollo/client'\n\nexport type { HistoricalSeasons } from './types/HistoricalSeasons'\n\nexport const HISTORICAL_SEASONS = gql`\n query HistoricalSeasons {\n historicalSeasons {\n name\n endRange\n startRange\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { HistoricalSeason } from 'types'\nimport { GraphQLUtils } from 'utils'\n\nimport { HISTORICAL_SEASONS, HistoricalSeasons } from './api'\n\ninterface Props {\n selectedHistoricalSeason?: HistoricalSeason\n onChange?: (historicalSeason: HistoricalSeason) => void\n withRefreshPolicy?: boolean\n skip?: boolean\n}\nexport const useHistoricalSeasons = ({\n withRefreshPolicy,\n onChange,\n selectedHistoricalSeason,\n skip,\n}: Props) => {\n const { data, loading } = useQuery(HISTORICAL_SEASONS, {\n fetchPolicy: withRefreshPolicy ? 'cache-and-network' : undefined,\n onCompleted: historicalSeasonData => {\n if (!onChange) return\n\n if (!historicalSeasonData.historicalSeasons.length) return\n\n const { name, endRange, startRange } = historicalSeasonData.historicalSeasons[0]\n onChange(selectedHistoricalSeason ?? { endRange, name, startRange })\n },\n onError: GraphQLUtils.errorHandler,\n skip,\n })\n return { data, loading }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { DamsVariables, Dams, Dams_dams_results as Dam } from './types/Dams'\n\nexport const DAMS = gql`\n query Dams(\n $fieldId: Int!\n $includeCalendar: Boolean!\n $toYearMonth: String\n $fromYearMonth: String\n $includeMapUrls: Boolean!\n ) {\n dams(fieldId: $fieldId) {\n results {\n id\n name\n area {\n type\n coordinates\n }\n location {\n coordinates\n type\n }\n calendar(fromYearMonth: $fromYearMonth, toYearMonth: $toYearMonth)\n @include(if: $includeCalendar) {\n date\n mapUrls {\n waterSurface {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n area\n volume\n percentage\n }\n }\n }\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\nimport dayjs from 'dayjs'\n\nimport { DATE_FORMATS } from 'consts'\n\nimport { DAMS, Dams, DamsVariables } from './api'\n\ninterface Props {\n fieldId?: number\n onCompleted?: (dams: Dams) => void\n includeCalendar: boolean\n fromYearMonth?: Date\n toYearMonth?: Date\n skip?: boolean\n}\n\nexport const useQueryDams = ({\n fieldId,\n onCompleted,\n includeCalendar,\n fromYearMonth,\n toYearMonth,\n skip,\n}: Props) => {\n const { data, loading } = useQuery(DAMS, {\n variables: {\n fieldId: fieldId!,\n includeCalendar,\n includeMapUrls: !!fromYearMonth && !!toYearMonth,\n fromYearMonth: fromYearMonth\n ? dayjs(fromYearMonth).format(DATE_FORMATS.YEAR_MONTH)\n : undefined,\n toYearMonth: toYearMonth ? dayjs(toYearMonth).format(DATE_FORMATS.YEAR_MONTH) : undefined,\n },\n skip: !fieldId || skip,\n onCompleted,\n })\n\n return {\n dams: data?.dams.results,\n loading,\n }\n}\n","import { useTranslation } from 'react-i18next'\n\nconst MILLION = 1000000\nconst THOUSAND = 1000\nexport const useFormatNumbersWithScale = () => {\n const { t } = useTranslation('common')\n\n const formatNumberWithScale = (value: number) => {\n if (value >= MILLION)\n return {\n value: (value / MILLION).toFixed(1),\n scale: t('scales.millions'),\n }\n return value >= THOUSAND\n ? {\n value: (value / THOUSAND).toFixed(),\n scale: t('scales.thousands'),\n }\n : { value: value.toString(), scale: '' }\n }\n\n return { formatNumberWithScale }\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { ProductionType } from 'types'\n\nexport const useProductionType = () => {\n const { t } = useTranslation('common')\n\n const productionTypeMap: {\n [key in ProductionType]: { label: string; value: ProductionType }\n } = {\n CONVENTIONAL: {\n label: t('productionType.conventional'),\n value: ProductionType.CONVENTIONAL,\n },\n ORGANIC: {\n label: t('productionType.organic'),\n value: ProductionType.ORGANIC,\n },\n }\n\n return { productionTypeMap }\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { DeliveryCondition } from 'types'\n\nexport const useDeliveryCondition = () => {\n const { t } = useTranslation('common')\n\n const deliveryConditionMap: {\n [key in DeliveryCondition]: { label: string; value: DeliveryCondition }\n } = {\n DRY: {\n label: t('deliveryCondition.dry'),\n value: DeliveryCondition.DRY,\n },\n WET: {\n label: t('deliveryCondition.wet'),\n value: DeliveryCondition.WET,\n },\n }\n\n return { deliveryConditionMap }\n}\n","import { STORAGE_KEYS } from 'consts'\n\nimport { useLocalStorage } from './useLocalStorage'\n\nconst CUSTOM_API_KEY = 'custom_api_key'\n\nexport const useImageUrl = () => {\n const [userToken] = useLocalStorage(STORAGE_KEYS.USER_TOKEN)\n\n const getUrlWithToken = (baseUrl: string) => {\n return baseUrl.includes(CUSTOM_API_KEY) ? baseUrl : `${baseUrl}&${CUSTOM_API_KEY}=${userToken}`\n }\n\n return { getUrlWithToken }\n}\n","import { useState, createContext, useContext, useEffect, useCallback } from 'react'\nimport useCustomCompareEffect from 'react-use/lib/useCustomCompareEffect'\nimport { useTranslation } from 'react-i18next'\nimport { isEqual, orderBy } from 'lodash'\n\nimport { useCurrentUser, useCompanySeasons, useHistoricalSeasons } from 'hooks'\nimport { CountryId, HistoricalSeason } from 'types'\nimport { CompanyUtils } from 'utils'\nimport { User } from 'api'\nimport { HistoricalSeasons } from 'hooks/useHistoricalSeasons/api'\n\ntype ActiveCompanyType = { id?: number; countryId?: CountryId; language?: string; name?: string }\n\ninterface ActiveCompanyContextType {\n loadingCompanySeasons: boolean\n activeCompanyId?: number\n setActiveCompany: (company: ActiveCompanyType) => void\n activeSeasonId?: number\n setActiveSeason: (id?: number) => void\n isNewCompany?: boolean\n setIsNewCompany: (isNewCompany: boolean) => void\n activeCountryId?: CountryId\n activeCompanyName?: string\n resetStore: () => void\n selectedSeasonRangeToFilterOrganizationCompanies?: HistoricalSeason\n setSelectedSeasonRangeToFilterOrganizationCompanies: (\n selectedHistoricalSeason?: HistoricalSeason,\n ) => void\n hasCompanies: boolean\n}\n\nconst Context = createContext({\n loadingCompanySeasons: false,\n setActiveCompany: () => {\n throw new Error(\n 'Attempted to use default setActiveCompany function for ActiveCompanyContext, make sure to pass a custom function implementation',\n )\n },\n setActiveSeason: () => {\n throw new Error(\n 'Attempted to use default setActiveSeason function for ActiveCompanyContext, make sure to pass a custom function implementation',\n )\n },\n setIsNewCompany: () => {\n throw new Error(\n 'Attempted to use default setIsNewCompany function for ActiveCompanyContext, make sure to pass a custom function implementation',\n )\n },\n resetStore: () => {\n throw new Error(\n 'Attempted to use default resetStore function for ActiveCompanyContext, make sure to pass a custom function implementation',\n )\n },\n setSelectedSeasonRangeToFilterOrganizationCompanies: () => {\n throw new Error(\n 'Attempted to use default setSelectedSeasonRangeToFilterOrganizationCompanies function for ActiveCompanyContext, make sure to pass a custom function implementation',\n )\n },\n hasCompanies: true,\n})\n\nconst useValue = (): ActiveCompanyContextType => {\n const [activeCompanyId, setActiveCompanyId] = useState()\n const [activeCountryId, setactiveCountryId] = useState()\n const [activeSeasonId, setActiveSeasonId] = useState()\n const [isNewCompany, setIsNewCompany] = useState()\n const [activeCompanyName, setActiveCompanyName] = useState()\n const [\n selectedSeasonRangeToFilterOrganizationCompanies,\n setSelectedSeasonRangeToFilterOrganizationCompanies,\n ] = useState()\n\n const { user } = useCurrentUser()\n const { i18n } = useTranslation()\n const { data: seasonsData, loading } = useCompanySeasons(activeCompanyId)\n\n const { data: historicalSeasonsData } = useHistoricalSeasons({\n onChange: setSelectedSeasonRangeToFilterOrganizationCompanies,\n selectedHistoricalSeason: selectedSeasonRangeToFilterOrganizationCompanies,\n skip: !user?.organizationRole,\n withRefreshPolicy: true,\n })\n\n const setActiveCompany = ({ id, countryId, language, name }: ActiveCompanyType) => {\n setActiveCompanyId(id)\n setactiveCountryId(countryId)\n setActiveCompanyName(name)\n const appLanguage =\n user?.companiesRoles?.find(company => company.company.id === id)?.company.country.code ??\n language\n\n i18n.changeLanguage(appLanguage)\n }\n\n useCustomCompareEffect(\n () => {\n if (user && user.companiesRoles?.length) {\n if (user.organizationRole && historicalSeasonsData) {\n const firstHistoricalSeason = historicalSeasonsData.historicalSeasons[0]\n const filteredCompanies = CompanyUtils.filterCompanySeasonsByHistoricalSeasonRange(\n firstHistoricalSeason,\n user.companiesRoles,\n )\n\n const firstFilteredCompany = filteredCompanies?.[0]?.company\n if (firstFilteredCompany) {\n setActiveCompany({\n id: firstFilteredCompany.id,\n countryId: firstFilteredCompany.country.id,\n name: firstFilteredCompany.name,\n })\n return\n }\n }\n\n setActiveCompany({\n id: user.companiesRoles[0].company.id,\n countryId: user.companiesRoles[0].company.country.id,\n name: user.companiesRoles[0].company.name,\n })\n }\n },\n [user, historicalSeasonsData],\n (prevDeps, nextDeps) => {\n const userPrevDep = prevDeps[0] as User['user'] | undefined\n const userNextDep = nextDeps[0] as User['user'] | undefined\n const historicalSeasonsDataPrevDep = prevDeps[1] as HistoricalSeasons | undefined\n const historicalSeasonsDataNextDep = nextDeps[1] as HistoricalSeasons | undefined\n\n const equalId = userPrevDep?.id === userNextDep?.id\n\n return equalId && isEqual(historicalSeasonsDataPrevDep, historicalSeasonsDataNextDep)\n },\n )\n\n const getActiveSeason = useCallback(() => {\n const selectedSeason = seasonsData?.seasons.results.find(season => season.id === activeSeasonId)\n\n if (selectedSeason) return selectedSeason\n\n const currentDate = new Date()\n\n const earliestSeasons = seasonsData?.seasons.results.filter(\n season => new Date(season.startDate) <= currentDate,\n )\n // This is for case there are no seasons with a start date before or equal to the current one\n if (!earliestSeasons?.length) return seasonsData?.seasons.results[0]\n\n const orderedSeasons = orderBy(earliestSeasons, 'startDate', 'desc')\n\n return orderedSeasons[0]\n }, [seasonsData?.seasons.results, activeSeasonId])\n\n useEffect(() => {\n if (seasonsData) {\n const activeSeason = getActiveSeason()\n\n setActiveSeasonId(activeSeason?.id ?? undefined)\n }\n }, [getActiveSeason, seasonsData])\n\n const resetStore = () => {\n setActiveCompany({})\n setActiveSeasonId(undefined)\n setactiveCountryId(undefined)\n setSelectedSeasonRangeToFilterOrganizationCompanies(undefined)\n }\n\n const hasCompanies = !!user?.companiesRoles?.length\n\n return {\n loadingCompanySeasons: loading,\n activeCompanyId,\n setActiveCompany,\n activeSeasonId,\n setActiveSeason: setActiveSeasonId,\n isNewCompany,\n setIsNewCompany,\n activeCountryId,\n activeCompanyName,\n resetStore,\n selectedSeasonRangeToFilterOrganizationCompanies,\n setSelectedSeasonRangeToFilterOrganizationCompanies,\n hasCompanies,\n }\n}\n\nconst useActiveCompanyContext = () => {\n return useContext(Context)\n}\n\nexport const ActiveCompanyContext = {\n Provider: Context.Provider,\n useValue,\n useActiveCompanyContext,\n}\n","import React, { ComponentProps } from 'react'\nimport { Row } from 'antd'\nimport styled from 'styled-components'\n\nconst StyledRow = styled(Row)`\n width: 75%;\n`\n\ntype Props = ComponentProps\n\nexport const Container: React.FC = ({ children }) => {children}\n","import { Spin } from 'antd'\nimport { LoadingOutlined } from '@ant-design/icons'\nimport { useTheme } from 'styled-components'\n\nexport const Loader: React.FC = () => {\n const { colors } = useTheme()\n return (\n } />\n )\n}\n","import { Row } from 'antd'\nimport styled from 'styled-components'\n\nimport { Loader } from '../Loader'\n\nconst LoaderContainer = styled(Row)`\n height: 100%;\n`\n\nexport const FullScreenLoader: React.FC = () => {\n return (\n \n \n \n )\n}\n","import { Modal as AntModal, ModalProps } from 'antd'\n\ntype ModalSize = 'small' | 'medium' | 'large'\n\ntype Props = ModalProps & { size?: ModalSize }\n\nconst MODAL_WIDTH: { [key in ModalSize]: number } = {\n small: 500,\n medium: 750,\n large: 900,\n}\n\nexport const Modal: React.FC = ({ children, size, ...props }) => {\n const width = size ? MODAL_WIDTH[size] : 750\n return (\n \n {children}\n \n )\n}\n","import { Row, Button, Space } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal as BaseModal } from '../Modal'\n\nconst Modal = styled(BaseModal)`\n width: 450px !important;\n`\n\nconst Description = styled(Row)`\n padding-right: 10px;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n`\n\nconst ButtonsContainer = styled(Space).attrs({\n size: 20,\n})`\n width: 100%;\n justify-content: flex-end;\n margin-top: 22px;\n & button {\n width: 114px;\n }\n\n & div:last-child > button {\n background-color: ${({ theme }) => theme.colors.grey3};\n color: ${({ theme }) => theme.colors.white};\n }\n`\n\ninterface Props {\n title?: string\n description?: string\n onConfirm: () => void\n onCancel: () => void\n loading: boolean\n}\n\nexport const ConfirmationModal: React.FC = ({\n title,\n description,\n onConfirm,\n onCancel,\n loading,\n}) => {\n const { t } = useTranslation('common')\n\n return (\n \n <>\n {description}\n \n \n \n \n \n \n )\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { Fields, FieldsVariables, Fields_fields_results as Field } from './types/Fields'\n\nexport const FIELDS = gql`\n query Fields($companyId: Int!) {\n fields(companyId: $companyId) {\n results {\n id\n name\n directions\n location {\n type\n coordinates\n }\n }\n }\n }\n`\n","import { useEffect, memo } from 'react'\nimport { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\n\nimport { SelectField } from '../types'\n\nconst Select = styled(AntSelect)`\n min-width: 206px;\n` as typeof AntSelect\n\ninterface Props {\n onChange: (field: SelectField) => void\n defaultId?: number\n className?: string\n loading: boolean\n fields?: SelectField[]\n dropdownClassName?: string\n popupMatchSelectWidth?: boolean\n}\n\nexport const BaseFieldsSelect: React.FC = memo(\n ({\n onChange,\n defaultId,\n className,\n loading,\n fields,\n dropdownClassName,\n popupMatchSelectWidth,\n }) => {\n const defaultField = fields?.find(field => field.id === defaultId) ?? fields?.[0]\n\n useEffect(() => {\n if (defaultField) {\n onChange(defaultField)\n }\n }, [defaultField, onChange])\n\n return (\n {\n const selectedField = fields?.find(field => field.id === id)\n if (!selectedField) return\n onChange(selectedField)\n }}\n >\n {fields?.map(field => (\n \n {field.name}\n \n ))}\n \n )\n },\n)\n","import { memo } from 'react'\nimport { useQuery } from '@apollo/client'\n\nimport { FIELDS, Fields, FieldsVariables } from './api'\nimport { BaseFieldsSelect } from '../BaseFieldsSelect'\nimport { SelectField } from '../types'\n\ninterface Props {\n companyId?: number\n onChange: (field: SelectField) => void\n defaultId?: number\n className?: string\n}\n\nexport const FieldsSelect: React.FC = memo(\n ({ companyId, onChange, defaultId, className }) => {\n const { data, loading } = useQuery(FIELDS, {\n variables: { companyId: companyId! },\n skip: !companyId,\n })\n\n return (\n \n )\n },\n)\n","import { UserOutlined } from '@ant-design/icons'\nimport { Avatar as AntAvatar } from 'antd'\nimport { ComponentProps, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { useCurrentUser } from 'hooks'\n\ntype Props = ComponentProps & {\n onClick?: () => void\n}\n\nconst Avatar: React.FC = forwardRef((props, ref) => {\n const { user } = useCurrentUser()\n return (\n } />\n )\n})\n\nexport const UserAvatar = styled(Avatar)`\n background-color: ${({ theme }) => theme.colors.grey3};\n cursor: ${({ onClick }) => (onClick ? 'pointer' : 'unset')};\n border: 2px solid ${({ theme }) => theme.colors.white};\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { Crops, Crops_crops_results as Crop, CropsVariables } from './types/Crops'\n\nexport const CROPS = gql`\n query Crops($all: Boolean) {\n crops(all: $all) {\n results {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\nimport { Select } from 'antd'\nimport i18next from 'i18next'\nimport { useTranslation } from 'react-i18next'\nimport { useMemo } from 'react'\n\nimport { LocaleLanguage, Selects } from 'types'\nimport { LANGUAGE } from 'consts'\n\nimport { Crop, CROPS, Crops, CropsVariables } from './api'\n\nexport type { Crop }\n\ninterface Props {\n placeholder?: string\n onChange?: (crop?: Crop) => void\n className?: string\n loading?: boolean\n defaultValue?: number\n value?: number\n disabled?: boolean\n dropdownClassName?: string\n popupMatchSelectWidth?: boolean\n allowClear?: boolean\n getAll?: boolean\n withAllCropsOption?: boolean\n supportedCropIds?: number[]\n onClick?: () => void\n}\n\nexport const CropsSelect: React.FC = ({\n placeholder,\n onChange,\n className,\n loading,\n defaultValue,\n value,\n disabled,\n dropdownClassName,\n popupMatchSelectWidth,\n allowClear,\n getAll,\n withAllCropsOption,\n supportedCropIds,\n onClick,\n}) => {\n const { data, loading: dataLoading } = useQuery(CROPS, {\n variables: { all: getAll },\n })\n const { t } = useTranslation('common')\n\n const allCropsOption = withAllCropsOption ? Selects.ALL_CROPS : undefined\n\n const options = useMemo(() => {\n if (!supportedCropIds)\n return data?.crops.results.map(crop => ({\n value: crop.id,\n label: crop.locales[LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]],\n }))\n\n const filteredCrops = data?.crops.results.filter(crop => supportedCropIds?.includes(crop.id))\n\n return filteredCrops?.map(crop => ({\n value: crop.id,\n label: crop.locales[LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]],\n }))\n }, [data?.crops.results, supportedCropIds])\n\n return (\n {\n const selectedCrop = data?.crops.results.find(crop => crop.id === id)\n\n onChange?.(selectedCrop)\n }}\n onClick={onClick}\n >\n {withAllCropsOption && (\n {t('inputs.allCrops')}\n )}\n {options?.map(crop => (\n \n {crop.label}\n \n ))}\n \n )\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n Varieties,\n VarietiesVariables,\n Varieties_varieties_results as Variety,\n} from './types/Varieties'\n\nexport const VARIETIES = gql`\n query Varieties($countryId: CountryId!, $cropId: Int!, $companyId: Int) {\n varieties(countryId: $countryId, cropId: $cropId, companyId: $companyId) {\n results {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\nimport { Select } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\nimport { useMemo } from 'react'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { CountryId, LocaleLanguage, Selects } from 'types'\nimport { LANGUAGE } from 'consts'\n\nimport { Varieties, VARIETIES, VarietiesVariables, Variety } from './api'\n\ninterface Props {\n cropId?: number\n companyId?: number\n onChange: (variety?: Variety, isNoVarietySelected?: boolean) => void\n className?: string\n onClick?: () => void\n value?: number | Selects.NO_VARIETY\n defaultValue?: number\n dropdownClassName?: string\n popupMatchSelectWidth?: boolean\n withAllVarietiesOption?: boolean\n disabled?: boolean\n supportedVarietiesIds?: (number | undefined)[]\n countryId?: CountryId\n}\n\nexport const VarietiesSelect: React.FC = ({\n cropId,\n onChange,\n className,\n onClick,\n value,\n defaultValue,\n dropdownClassName,\n popupMatchSelectWidth,\n withAllVarietiesOption,\n disabled,\n supportedVarietiesIds,\n companyId,\n countryId,\n}) => {\n const { t } = useTranslation('common')\n const { activeCountryId, activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data, loading } = useQuery(VARIETIES, {\n variables: {\n countryId: countryId ?? activeCountryId!,\n cropId: cropId!,\n companyId: companyId ?? activeCompanyId,\n },\n skip: (!activeCountryId && !countryId) || !cropId,\n })\n const allVarietiesOption = withAllVarietiesOption ? Selects.ALL_VARIETIES : undefined\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n\n const options = useMemo(() => {\n const allVarietiesOptions =\n data?.varieties.results.map(({ id, locales }) => ({\n value: id,\n label: locales[language],\n })) ?? []\n\n if (!supportedVarietiesIds) return allVarietiesOptions\n\n const filteredVarieties = data?.varieties.results.filter(variety =>\n supportedVarietiesIds?.includes(variety.id),\n )\n\n return filteredVarieties?.map(variety => ({\n value: variety.id,\n label: variety.locales[language],\n }))\n }, [data, language, supportedVarietiesIds])\n\n return (\n \n option?.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0\n }\n placeholder={t('inputs.variety')}\n loading={loading}\n className={className}\n onClick={onClick}\n value={value || allVarietiesOption}\n defaultValue={defaultValue || allVarietiesOption}\n popupClassName={dropdownClassName}\n popupMatchSelectWidth={popupMatchSelectWidth}\n disabled={disabled}\n onChange={id => {\n const selectedVariety = data?.varieties.results.find(variety => variety.id === id)\n const isNoVarietySelected = id === Selects.NO_VARIETY\n onChange(selectedVariety, isNoVarietySelected)\n }}\n >\n {withAllVarietiesOption && (\n {t('inputs.allVarieties')}\n )}\n {supportedVarietiesIds?.includes(undefined) && (\n {t('inputs.noVariety')}\n )}\n {options?.map(variety => (\n \n {variety.label}\n \n ))}\n \n )\n}\n","var _path, _path2, _path3, _path4, _path5, _path6;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLogoShadow({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 144,\n height: 120,\n viewBox: \"0 0 144 120\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M90 66L72 0L54 66L72 102L90 66Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100 68L75 101L115 92L144 60L100 68Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44 68L69 101L29 92L0 60L44 68Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M101 102L74 104L97 118L118 114L101 102Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M43 102L70 104L47 118L26 114L43 102Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M64 120L72 106L80 120H64Z\",\n fill: \"white\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoShadow);\nexport default __webpack_public_path__ + \"static/media/logo-shadow.c0dd5a5e.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgNavbarDashboard({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.7039 17.3631L21.4866 18.551C21.6594 18.6663 21.8698 18.711 22.0746 18.6759C22.2793 18.6409 22.4629 18.5287 22.5875 18.3625L25.025 15.1125L23.725 14.1375L21.7482 16.7732L19.9509 15.574C19.7755 15.4568 19.5613 15.4124 19.3537 15.4503C19.1461 15.4882 18.9613 15.6054 18.8386 15.7771L16.25 19.4017V13H14.625V21.125C14.6254 21.5558 14.7968 21.9689 15.1014 22.2736C15.4061 22.5782 15.8192 22.7496 16.25 22.75H24.375V21.125H17.0162L19.7039 17.3631Z\",\n fill: \"currentcolor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.625 17.0625H13V18.6875H1.625V17.0625Z\",\n fill: \"currentcolor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.625 21.125H13V22.75H1.625V21.125Z\",\n fill: \"currentcolor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.9375 13V8.9375H9.75C10.6116 8.93643 11.4376 8.59367 12.0469 7.98441C12.6562 7.37515 12.9989 6.54912 13 5.6875V3.25H10.5625C9.73048 3.25136 8.93104 3.57353 8.33056 4.14944C7.90982 3.3855 7.29194 2.74835 6.54128 2.30435C5.79062 1.86036 4.93464 1.62576 4.0625 1.625H1.625V4.0625C1.62651 5.35497 2.1406 6.59407 3.05452 7.50798C3.96843 8.4219 5.20753 8.93599 6.5 8.9375H7.3125V13H1.625V14.625H13V13H8.9375ZM10.5625 4.875H11.375V5.6875C11.3746 6.11834 11.2032 6.53142 10.8986 6.83607C10.5939 7.14073 10.1808 7.31207 9.75 7.3125H8.9375V6.5C8.93793 6.06916 9.10927 5.65608 9.41393 5.35143C9.71858 5.04677 10.1317 4.87543 10.5625 4.875ZM6.5 7.3125C5.63838 7.31143 4.81235 6.96867 4.20309 6.35941C3.59383 5.75015 3.25108 4.92412 3.25 4.0625V3.25H4.0625C4.92412 3.25108 5.75015 3.59383 6.35941 4.20309C6.96867 4.81235 7.31143 5.63838 7.3125 6.5V7.3125H6.5Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNavbarDashboard);\nexport default __webpack_public_path__ + \"static/media/navbar-dashboard.4e8e74f4.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgNavbarSettings({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n filter: \"url(#filter0_d)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.75 11.3791H24.9375V1.62906H23.3125V11.3791H22.5C22.0692 11.3795 21.6561 11.5508 21.3514 11.8555C21.0468 12.1601 20.8754 12.5732 20.875 13.0041V14.6291C20.8754 15.0599 21.0468 15.473 21.3514 15.7776C21.6561 16.0823 22.0692 16.2536 22.5 16.2541H23.3125V24.3791H24.9375V16.2541H25.75C26.1808 16.2534 26.5937 16.082 26.8983 15.7774C27.2029 15.4728 27.3744 15.0598 27.375 14.6291V13.0041C27.3746 12.5732 27.2032 12.1601 26.8986 11.8555C26.5939 11.5508 26.1808 11.3795 25.75 11.3791ZM25.75 14.6291H22.5V13.0041H25.75V14.6291Z\",\n fill: \"currentcolor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.625 4.87906H16.8125V1.62906H15.1875V4.87906H14.375C13.9442 4.87949 13.5311 5.05083 13.2264 5.35549C12.9218 5.66014 12.7504 6.07321 12.75 6.50406V8.12906C12.7504 8.5599 12.9218 8.97298 13.2264 9.27763C13.5311 9.58229 13.9442 9.75363 14.375 9.75406H15.1875V24.3791H16.8125V9.75406H17.625C18.0558 9.75363 18.4689 9.58229 18.7736 9.27763C19.0782 8.97298 19.2496 8.5599 19.25 8.12906V6.50406C19.2496 6.07321 19.0782 5.66014 18.7736 5.35549C18.4689 5.05083 18.0558 4.87949 17.625 4.87906ZM17.625 8.12906H14.375V6.50406H17.625V8.12906Z\",\n fill: \"currentcolor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.5 16.2541H8.6875V1.62906H7.0625V16.2541H6.25C5.81916 16.2545 5.40608 16.4258 5.10143 16.7305C4.79677 17.0351 4.62543 17.4482 4.625 17.8791V19.5041C4.62543 19.9349 4.79677 20.348 5.10143 20.6526C5.40608 20.9573 5.81916 21.1286 6.25 21.1291H7.0625V24.3791H8.6875V21.1291H9.5C9.93084 21.1286 10.3439 20.9573 10.6486 20.6526C10.9532 20.348 11.1246 19.9349 11.125 19.5041V17.8791C11.1246 17.4482 10.9532 17.0351 10.6486 16.7305C10.3439 16.4258 9.93084 16.2545 9.5 16.2541ZM9.5 19.5041H6.25V17.8791H9.5V19.5041Z\",\n fill: \"currentcolor\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"filter\", {\n id: \"filter0_d\",\n x: -1,\n y: 0,\n width: 34,\n height: 34,\n filterUnits: \"userSpaceOnUse\",\n colorInterpolationFilters: \"sRGB\"\n }, /*#__PURE__*/React.createElement(\"feFlood\", {\n floodOpacity: 0,\n result: \"BackgroundImageFix\"\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n in: \"SourceAlpha\",\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0\"\n }), /*#__PURE__*/React.createElement(\"feOffset\", {\n dy: 4\n }), /*#__PURE__*/React.createElement(\"feGaussianBlur\", {\n stdDeviation: 2\n }), /*#__PURE__*/React.createElement(\"feColorMatrix\", {\n type: \"matrix\",\n values: \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.25 0\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in2: \"BackgroundImageFix\",\n result: \"effect1_dropShadow\"\n }), /*#__PURE__*/React.createElement(\"feBlend\", {\n mode: \"normal\",\n in: \"SourceGraphic\",\n in2: \"effect1_dropShadow\",\n result: \"shape\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNavbarSettings);\nexport default __webpack_public_path__ + \"static/media/navbar-settings.3991f907.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgNavbarMap({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 19.5L8.05185 12.5125C7.24193 11.5562 6.72036 10.3896 6.54788 9.14834C6.37539 7.90711 6.55909 6.64242 7.07759 5.50156C7.59608 4.3607 8.42803 3.39063 9.47654 2.70432C10.525 2.01801 11.747 1.6437 13 1.625C14.7369 1.64216 16.3962 2.34698 17.6145 3.58509C18.8328 4.82319 19.5108 6.49366 19.5 8.23063C19.5006 9.74588 18.9848 11.2161 18.0375 12.3988L13 19.5ZM13 3.25C11.6934 3.265 10.4461 3.79793 9.53207 4.73176C8.61805 5.66559 8.11197 6.92398 8.12498 8.23063C8.13042 9.42323 8.55949 10.5751 9.3356 11.4806L13 16.6725L16.7619 11.375C17.4769 10.4824 17.8692 9.3743 17.875 8.23063C17.888 6.92398 17.3819 5.66559 16.4679 4.73176C15.5539 3.79793 14.3066 3.265 13 3.25Z\",\n fill: \"currentcolor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13 8.9375C13.8975 8.9375 14.625 8.20996 14.625 7.3125C14.625 6.41504 13.8975 5.6875 13 5.6875C12.1025 5.6875 11.375 6.41504 11.375 7.3125C11.375 8.20996 12.1025 8.9375 13 8.9375Z\",\n fill: \"currentcolor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.75 9.75H21.125V11.375H22.75V22.75H3.25V11.375H4.875V9.75H3.25C2.81902 9.75 2.4057 9.92121 2.10095 10.226C1.7962 10.5307 1.625 10.944 1.625 11.375V22.75C1.625 23.181 1.7962 23.5943 2.10095 23.899C2.4057 24.2038 2.81902 24.375 3.25 24.375H22.75C23.181 24.375 23.5943 24.2038 23.899 23.899C24.2038 23.5943 24.375 23.181 24.375 22.75V11.375C24.375 10.944 24.2038 10.5307 23.899 10.226C23.5943 9.92121 23.181 9.75 22.75 9.75Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgNavbarMap);\nexport default __webpack_public_path__ + \"static/media/navbar-map.912d327c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgMapPin({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 39,\n height: 49,\n viewBox: \"0 0 39 49\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5 0.4375C14.4876 0.443413 9.68212 2.43722 6.13779 5.98154C2.59346 9.52587 0.599661 14.3313 0.593747 19.3438C0.587744 23.4399 1.92575 27.4249 4.4025 30.6875C4.4025 30.6875 4.91812 31.3664 5.00234 31.4644L19.5 48.5625L34.0045 31.4558C34.0802 31.3647 34.5975 30.6875 34.5975 30.6875L34.5992 30.6823C37.0747 27.4212 38.4121 23.438 38.4062 19.3438C38.4003 14.3313 36.4065 9.52587 32.8622 5.98154C29.3179 2.43722 24.5124 0.443413 19.5 0.4375ZM19.5 26.2188C18.1403 26.2188 16.811 25.8155 15.6805 25.0601C14.5499 24.3047 13.6687 23.2309 13.1483 21.9747C12.628 20.7185 12.4918 19.3361 12.7571 18.0025C13.0224 16.6689 13.6772 15.4439 14.6386 14.4824C15.6001 13.5209 16.8251 12.8661 18.1588 12.6009C19.4924 12.3356 20.8747 12.4717 22.1309 12.9921C23.3872 13.5124 24.4609 14.3936 25.2164 15.5242C25.9718 16.6548 26.375 17.984 26.375 19.3438C26.3727 21.1664 25.6477 22.9138 24.3588 24.2026C23.07 25.4914 21.3227 26.2165 19.5 26.2188Z\",\n fill: \"#FF7C33\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMapPin);\nexport default __webpack_public_path__ + \"static/media/map-pin.3c1d1623.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgTrash({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 40,\n height: 27,\n color: \"currentColor\",\n viewBox: \"0 0 25 27\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.1301 10.6517C20.1301 10.6517 19.5644 18.2286 19.2363 21.4202C19.0801 22.9446 18.2082 23.8379 16.7801 23.866C14.0624 23.9189 11.3415 23.9222 8.62486 23.8604C7.2509 23.83 6.39361 22.9255 6.24049 21.4281C5.91028 18.2084 5.34778 10.6517 5.34778 10.6517\",\n stroke: \"currentColor\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.571 7.01966H3.90643\",\n stroke: \"currentColor\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.1673 7.01966C17.3496 7.01966 16.6454 6.39529 16.485 5.53016L16.2319 4.16216C16.0756 3.53104 15.5465 3.09454 14.9433 3.09454H10.534C9.93083 3.09454 9.40166 3.53104 9.24541 4.16216L8.99229 5.53016C8.83187 6.39529 8.12771 7.01966 7.31 7.01966\",\n stroke: \"currentColor\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgTrash);\nexport default __webpack_public_path__ + \"static/media/trash.53390e3a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLogoColoredWithText({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 198,\n height: 143,\n viewBox: \"0 0 198 100\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M63.0288 71.5996V31.2796H71.3808V49.3084L89.0064 31.2796H99.2016L79.6176 50.4604L100.123 71.5996H88.9488L71.3808 52.8796V71.5996H63.0288ZM111.889 72.1756C109.585 72.1756 107.531 71.6764 105.726 70.678C103.96 69.6412 102.558 68.2204 101.521 66.4156C100.523 64.6108 100.024 62.5372 100.024 60.1948V41.59H107.915V59.0428C107.915 60.9628 108.472 62.4988 109.585 63.6508C110.737 64.8028 112.273 65.3788 114.193 65.3788C115.499 65.3788 116.67 65.1292 117.707 64.63C118.782 64.0924 119.665 63.3436 120.357 62.3836V41.59H128.248V71.5996H120.357V69.1804C118.053 71.1772 115.23 72.1756 111.889 72.1756ZM134.398 71.5996V41.59H142.289V44.0668C144.555 42.0316 147.358 41.014 150.699 41.014C153.041 41.014 155.096 41.5324 156.862 42.5692C158.667 43.5676 160.068 44.9692 161.067 46.774C162.065 48.5404 162.564 50.614 162.564 52.9948V71.5996H154.673V54.1468C154.673 52.1884 154.116 50.6524 153.003 49.5388C151.889 48.3868 150.372 47.8108 148.452 47.8108C147.108 47.8108 145.918 48.0796 144.881 48.6172C143.844 49.1164 142.98 49.846 142.289 50.806V71.5996H134.398ZM178.103 72.118C175.953 72.118 174.052 71.734 172.401 70.966C170.75 70.1596 169.463 69.0652 168.542 67.6828C167.62 66.3004 167.159 64.7068 167.159 62.902C167.159 60.022 168.234 57.7948 170.385 56.2204C172.574 54.6076 175.569 53.8012 179.37 53.8012C181.982 53.8012 184.439 54.2044 186.743 55.0108V52.822C186.743 51.094 186.206 49.7884 185.13 48.9052C184.055 48.022 182.481 47.5804 180.407 47.5804C179.14 47.5804 177.777 47.7916 176.318 48.214C174.858 48.598 173.169 49.2124 171.249 50.0572L168.369 44.2396C170.75 43.1644 173.015 42.358 175.166 41.8204C177.354 41.2828 179.543 41.014 181.732 41.014C185.764 41.014 188.894 41.9932 191.121 43.9516C193.386 45.8716 194.519 48.598 194.519 52.1308V71.5996H186.743V69.4684C185.514 70.39 184.19 71.062 182.769 71.4844C181.348 71.9068 179.793 72.118 178.103 72.118ZM174.647 62.7292C174.647 63.8812 175.146 64.8028 176.145 65.494C177.143 66.1468 178.468 66.4732 180.119 66.4732C181.425 66.4732 182.634 66.3196 183.748 66.0124C184.862 65.6668 185.86 65.1676 186.743 64.5148V60.1372C185.783 59.7532 184.785 59.4652 183.748 59.2732C182.711 59.0812 181.598 58.9852 180.407 58.9852C178.602 58.9852 177.182 59.3308 176.145 60.022C175.146 60.6748 174.647 61.5772 174.647 62.7292Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M41.4 0.682096V7.59747L20.7 24.1575L5.4 11.9175V17.5183C5.4 23.2598 8.0099 28.69 12.4933 32.2767L18 36.6821V27.8999H23.4V36.6821L41.4 22.2821V39.1183C41.4 46.5002 38.0444 53.4819 32.2801 58.0934L23.4 65.1975V79.8821L41.4 65.4821V72.3975L23.4 86.7975V99.8999H18V86.7975L9.11991 79.6934C3.35558 75.082 0 68.1003 0 60.7183V43.8821L18 58.2821V43.5975L9.11992 36.4934C3.35558 31.882 0 24.9002 0 17.5183V0.682114L20.7 17.2421L41.4 0.682096ZM5.4 55.1175L5.4 60.7183C5.4 66.4598 8.0099 71.89 12.4933 75.4767L18 79.8821V65.1975L5.4 55.1175ZM28.9067 53.8767L23.4 58.2821V43.5975L36 33.5175V39.1183C36 44.8598 33.3901 50.29 28.9067 53.8767Z\",\n fill: \"url(#paint0_linear_3845_5662)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_3845_5662\",\n x1: 20.7,\n y1: 0.682129,\n x2: 20.7,\n y2: 99.8998,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#00F29B\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF7C33\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoColoredWithText);\nexport default __webpack_public_path__ + \"static/media/logo-colored-with-text.f91df5e1.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgCamera({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.75 19.5H2.25C2.05109 19.5 1.86032 19.421 1.71967 19.2803C1.57902 19.1397 1.5 18.9489 1.5 18.75V6C1.5 5.80109 1.57902 5.61032 1.71967 5.46967C1.86032 5.32902 2.05109 5.25 2.25 5.25H7.095L8.3775 3.3375C8.44544 3.23433 8.53781 3.14954 8.64641 3.09066C8.75501 3.03178 8.87647 3.00064 9 3H15C15.1235 3.00064 15.245 3.03178 15.3536 3.09066C15.4622 3.14954 15.5546 3.23433 15.6225 3.3375L16.905 5.25H21.75C21.9489 5.25 22.1397 5.32902 22.2803 5.46967C22.421 5.61032 22.5 5.80109 22.5 6V18.75C22.5 18.9489 22.421 19.1397 22.2803 19.2803C22.1397 19.421 21.9489 19.5 21.75 19.5ZM3 18H21V6.75H16.5C16.3765 6.74936 16.255 6.71822 16.1464 6.65934C16.0378 6.60046 15.9454 6.51567 15.8775 6.4125L14.595 4.5H9.405L8.1225 6.4125C8.05456 6.51567 7.96219 6.60046 7.85359 6.65934C7.74499 6.71822 7.62353 6.74936 7.5 6.75H3V18Z\",\n fill: \"currentcolor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 16.5C11.11 16.5 10.24 16.2361 9.49994 15.7416C8.75991 15.2471 8.18314 14.5443 7.84254 13.7221C7.50195 12.8998 7.41283 11.995 7.58647 11.1221C7.7601 10.2492 8.18869 9.44736 8.81802 8.81802C9.44736 8.18869 10.2492 7.7601 11.1221 7.58647C11.995 7.41283 12.8998 7.50195 13.7221 7.84254C14.5443 8.18314 15.2471 8.75991 15.7416 9.49994C16.2361 10.24 16.5 11.11 16.5 12C16.5 13.1935 16.0259 14.3381 15.182 15.182C14.3381 16.0259 13.1935 16.5 12 16.5ZM12 9C11.4067 9 10.8266 9.17595 10.3333 9.50559C9.83994 9.83524 9.45543 10.3038 9.22836 10.852C9.0013 11.4001 8.94189 12.0033 9.05765 12.5853C9.1734 13.1672 9.45912 13.7018 9.87868 14.1213C10.2982 14.5409 10.8328 14.8266 11.4147 14.9424C11.9967 15.0581 12.5999 14.9987 13.1481 14.7716C13.6962 14.5446 14.1648 14.1601 14.4944 13.6667C14.8241 13.1734 15 12.5933 15 12C15 11.2044 14.6839 10.4413 14.1213 9.87868C13.5587 9.31607 12.7957 9 12 9Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCamera);\nexport default __webpack_public_path__ + \"static/media/camera.fe111ec8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgDrop({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 14,\n height: 19,\n viewBox: \"0 0 14 19\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.75 18.7501C4.96048 18.7478 3.24491 18.0359 1.97953 16.7705C0.714148 15.5052 0.00226243 13.7896 0 12.0001C0.0403467 10.6843 0.426858 9.40234 1.12057 8.28352L6.1146 0.327599C6.18673 0.226296 6.28203 0.143708 6.39256 0.0867205C6.50309 0.0297334 6.62564 0 6.75 0C6.87436 0 6.99691 0.0297334 7.10744 0.0867205C7.21797 0.143708 7.31327 0.226296 7.3854 0.327599L12.3571 8.2449C13.0626 9.37391 13.4569 10.6695 13.5 12.0001C13.4977 13.7896 12.7859 15.5052 11.5205 16.7705C10.2551 18.0359 8.53952 18.7478 6.75 18.7501ZM6.75 2.1363L2.41372 9.04222C1.85492 9.93093 1.5398 10.951 1.5 12.0001C1.5 13.3925 2.05312 14.7278 3.03769 15.7124C4.02226 16.697 5.35761 17.2501 6.75 17.2501C8.14239 17.2501 9.47774 16.697 10.4623 15.7124C11.4469 14.7278 12 13.3925 12 12.0001C11.9573 10.9363 11.6344 9.90259 11.064 9.0036L6.75 2.1363Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDrop);\nexport default __webpack_public_path__ + \"static/media/drop.3301ce09.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgChlorophyll({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 22,\n viewBox: \"0 0 17 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.25 0C12.5878 0.00274688 10.9651 0.507081 9.59416 1.44704C8.22323 2.387 7.16789 3.71882 6.56617 5.2683C6.08413 4.56903 5.43949 3.99727 4.68767 3.60216C3.93584 3.20705 3.09932 3.00041 2.25 3H0V5.25C0.0015484 6.64191 0.555169 7.97637 1.5394 8.9606C2.52363 9.94483 3.85809 10.4985 5.25 10.5H6V17.287C4.2773 17.4554 2.66718 18.2191 1.44675 19.4465L2.50725 20.5071C3.13464 19.8798 3.89333 19.3995 4.72869 19.1006C5.56405 18.8018 6.45528 18.692 7.33819 18.779C8.2211 18.8661 9.07373 19.1478 9.83465 19.604C10.5956 20.0602 11.2459 20.6794 11.7387 21.4172L12.9849 20.5826C12.3701 19.6638 11.5593 18.8926 10.611 18.3244C9.66262 17.7562 8.60018 17.4052 7.5 17.2965V10.5H8.25C10.4373 10.4975 12.5343 9.62753 14.0809 8.08089C15.6275 6.53425 16.4975 4.43727 16.5 2.25V0H14.25ZM5.25 9C4.25579 8.99887 3.30262 8.60342 2.5996 7.9004C1.89658 7.19738 1.50113 6.24421 1.5 5.25V4.5H2.25C3.24423 4.50107 4.19744 4.8965 4.90047 5.59953C5.6035 6.30256 5.99893 7.25577 6 8.25V9H5.25ZM15 2.25C14.998 4.0396 14.2862 5.75534 13.0208 7.02078C11.7553 8.28622 10.0396 8.99801 8.25 9H7.5V8.25C7.50199 6.4604 8.21378 4.74466 9.47922 3.47922C10.7447 2.21378 12.4604 1.50199 14.25 1.5H15V2.25Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgChlorophyll);\nexport default __webpack_public_path__ + \"static/media/chlorophyll.db202756.svg\";\nexport { ForwardRef as ReactComponent };","var _line, _line2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLeftArrow({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 18,\n viewBox: \"0 0 11 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n x1: 9,\n y1: 1.41421,\n x2: 1.41421,\n y2: 9,\n stroke: \"#546154\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 1.41421,\n y1: 9,\n x2: 9,\n y2: 16.5858,\n stroke: \"#546154\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLeftArrow);\nexport default __webpack_public_path__ + \"static/media/left-arrow.abac114e.svg\";\nexport { ForwardRef as ReactComponent };","var _line, _line2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRightArrow({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 11,\n height: 18,\n viewBox: \"0 0 11 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n x1: 2,\n y1: 16.5858,\n x2: 9.58579,\n y2: 9,\n stroke: \"#546154\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })), _line2 || (_line2 = /*#__PURE__*/React.createElement(\"line\", {\n x1: 9.58579,\n y1: 9,\n x2: 2,\n y2: 1.41421,\n stroke: \"#546154\",\n strokeWidth: 2,\n strokeLinecap: \"round\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRightArrow);\nexport default __webpack_public_path__ + \"static/media/right-arrow.1fe3682a.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgCogSettings({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 27,\n viewBox: \"0 0 27 27\",\n color: \"#999898\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.4375 14.1175V13.5V12.8744L23.9975 11.5094C24.2851 11.2559 24.4738 10.909 24.5303 10.5298C24.5868 10.1507 24.5074 9.76378 24.3063 9.43749L22.3888 6.18749C22.2463 5.94071 22.0414 5.73573 21.7947 5.59312C21.548 5.45051 21.2681 5.37529 20.9831 5.37499C20.8065 5.37364 20.6309 5.40108 20.4631 5.45624L18.4888 6.12249C18.1479 5.89598 17.7923 5.6924 17.4244 5.51312L17.01 3.46562C16.9357 3.09155 16.7322 2.75553 16.4351 2.51638C16.138 2.27723 15.7663 2.15019 15.385 2.15749H11.5825C11.2012 2.15019 10.8295 2.27723 10.5324 2.51638C10.2353 2.75553 10.0318 3.09155 9.95751 3.46562L9.54313 5.51312C9.17258 5.69236 8.81429 5.89593 8.47063 6.12249L6.53688 5.42374C6.36731 5.37956 6.19171 5.3631 6.01688 5.37499C5.73192 5.37529 5.45204 5.45051 5.20533 5.59312C4.95861 5.73573 4.75374 5.94071 4.61126 6.18749L2.69376 9.43749C2.50411 9.7633 2.43364 10.1449 2.49441 10.517C2.55518 10.889 2.74342 11.2283 3.02688 11.4769L4.56251 12.8825V14.1256L3.02688 15.4906C2.73541 15.7409 2.54203 16.0863 2.48104 16.4656C2.42006 16.8449 2.49542 17.2335 2.69376 17.5625L4.61126 20.8125C4.75374 21.0593 4.95861 21.2643 5.20533 21.4069C5.45204 21.5495 5.73192 21.6247 6.01688 21.625C6.19348 21.6263 6.36912 21.5989 6.53688 21.5437L8.51126 20.8775C8.85213 21.104 9.20771 21.3076 9.57563 21.4869L9.99001 23.5344C10.0643 23.9084 10.2678 24.2445 10.5649 24.4836C10.862 24.7228 11.2337 24.8498 11.615 24.8425H15.45C15.8313 24.8498 16.203 24.7228 16.5001 24.4836C16.7972 24.2445 17.0007 23.9084 17.075 23.5344L17.4894 21.4869C17.8599 21.3076 18.2182 21.1041 18.5619 20.8775L20.5281 21.5437C20.6959 21.5989 20.8715 21.6263 21.0481 21.625C21.3331 21.6247 21.613 21.5495 21.8597 21.4069C22.1064 21.2643 22.3113 21.0593 22.4538 20.8125L24.3063 17.5625C24.4959 17.2367 24.5664 16.8551 24.5056 16.483C24.4448 16.111 24.2566 15.7716 23.9731 15.5231L22.4375 14.1175ZM20.9831 20L18.1963 19.0575C17.5439 19.6101 16.7983 20.042 15.9944 20.3331L15.4175 23.25H11.5825L11.0056 20.3656C10.2081 20.0663 9.46653 19.6351 8.81188 19.09L6.01688 20L4.09938 16.75L6.30938 14.8C6.15915 13.9589 6.15915 13.0979 6.30938 12.2569L4.09938 10.25L6.01688 6.99999L8.80376 7.94249C9.45614 7.38991 10.2017 6.95795 11.0056 6.66687L11.5825 3.74999H15.4175L15.9944 6.63437C16.7919 6.93371 17.5335 7.36492 18.1881 7.90999L20.9831 6.99999L22.9006 10.25L20.6906 12.2C20.8409 13.041 20.8409 13.9021 20.6906 14.7431L22.9006 16.75L20.9831 20Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M13.5 18.375C12.5358 18.375 11.5933 18.0891 10.7916 17.5534C9.98991 17.0177 9.36507 16.2564 8.99609 15.3656C8.62711 14.4748 8.53057 13.4946 8.71867 12.5489C8.90678 11.6033 9.37108 10.7346 10.0529 10.0529C10.7346 9.37108 11.6033 8.90678 12.5489 8.71867C13.4946 8.53057 14.4748 8.62711 15.3656 8.99609C16.2564 9.36507 17.0177 9.98991 17.5534 10.7916C18.0891 11.5933 18.375 12.5358 18.375 13.5C18.3815 14.142 18.2599 14.7789 18.0172 15.3733C17.7745 15.9677 17.4157 16.5077 16.9617 16.9617C16.5077 17.4157 15.9677 17.7745 15.3733 18.0172C14.7789 18.2599 14.142 18.3815 13.5 18.375ZM13.5 10.25C13.0705 10.24 12.6434 10.3172 12.2445 10.477C11.8457 10.6368 11.4834 10.8758 11.1796 11.1796C10.8758 11.4834 10.6368 11.8457 10.477 12.2445C10.3172 12.6434 10.24 13.0705 10.25 13.5C10.24 13.9295 10.3172 14.3566 10.477 14.7555C10.6368 15.1543 10.8758 15.5166 11.1796 15.8204C11.4834 16.1242 11.8457 16.3632 12.2445 16.523C12.6434 16.6828 13.0705 16.76 13.5 16.75C13.9295 16.76 14.3566 16.6828 14.7555 16.523C15.1543 16.3632 15.5166 16.1242 15.8204 15.8204C16.1242 15.5166 16.3632 15.1543 16.523 14.7555C16.6828 14.3566 16.76 13.9295 16.75 13.5C16.76 13.0705 16.6828 12.6434 16.523 12.2445C16.3632 11.8457 16.1242 11.4834 15.8204 11.1796C15.5166 10.8758 15.1543 10.6368 14.7555 10.477C14.3566 10.3172 13.9295 10.24 13.5 10.25Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCogSettings);\nexport default __webpack_public_path__ + \"static/media/cog-settings.e8d62fd0.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLastUpdate({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 31,\n height: 31,\n viewBox: \"0 0 31 31\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.5 0.1875C13.4601 0.187789 11.441 0.597413 9.56228 1.39211C7.68356 2.18682 5.9834 3.35044 4.5625 4.81406V0.1875H2.375V8.9375H11.125V6.75H5.74375C7.79566 4.46985 10.5814 2.98042 13.6171 2.54038C16.6529 2.10034 19.7469 2.73749 22.3617 4.34117C24.9766 5.94485 26.9472 8.41375 27.9313 11.3191C28.9153 14.2244 28.8507 17.3827 27.7485 20.2453C26.6464 23.108 24.5765 25.4942 21.8982 26.9895C19.2198 28.4848 16.1024 28.9948 13.0872 28.4309C10.072 27.867 7.34953 26.2649 5.39265 23.9027C3.43577 21.5405 2.36808 18.5675 2.375 15.5H0.1875C0.1875 18.5285 1.08556 21.489 2.76812 24.0072C4.45068 26.5253 6.84217 28.4879 9.64016 29.6469C12.4382 30.8059 15.517 31.1091 18.4873 30.5183C21.4577 29.9274 24.1861 28.4691 26.3276 26.3276C28.4691 24.1861 29.9274 21.4577 30.5183 18.4873C31.1091 15.517 30.8059 12.4382 29.6469 9.64016C28.4879 6.84217 26.5253 4.45068 24.0072 2.76812C21.489 1.08556 18.5285 0.1875 15.5 0.1875Z\",\n fill: \"#FF7C33\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLastUpdate);\nexport default __webpack_public_path__ + \"static/media/last-update.1faf7552.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgImage({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 37,\n height: 37,\n viewBox: \"0 0 37 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M21.9688 16.1875C22.6548 16.1875 23.3255 15.9841 23.8959 15.6029C24.4663 15.2218 24.9109 14.68 25.1735 14.0462C25.436 13.4124 25.5047 12.7149 25.3708 12.042C25.237 11.3692 24.9066 10.7511 24.4215 10.266C23.9364 9.78086 23.3183 9.4505 22.6455 9.31665C21.9726 9.18281 21.2751 9.2515 20.6413 9.51404C20.0075 9.77659 19.4657 10.2212 19.0846 10.7916C18.7034 11.3621 18.5 12.0327 18.5 12.7188C18.5 13.6387 18.8655 14.521 19.516 15.1715C20.1665 15.822 21.0488 16.1875 21.9688 16.1875ZM21.9688 11.5625C22.1974 11.5625 22.421 11.6303 22.6111 11.7574C22.8013 11.8844 22.9495 12.065 23.037 12.2763C23.1245 12.4876 23.1474 12.72 23.1028 12.9443C23.0582 13.1686 22.948 13.3746 22.7863 13.5363C22.6246 13.698 22.4186 13.8082 22.1943 13.8528C21.97 13.8974 21.7376 13.8745 21.5263 13.787C21.315 13.6995 21.1344 13.5513 21.0074 13.3611C20.8803 13.171 20.8125 12.9474 20.8125 12.7188C20.8125 12.4121 20.9343 12.118 21.1512 11.9012C21.368 11.6843 21.6621 11.5625 21.9688 11.5625Z\",\n fill: \"#DDDFDD\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.0625 4.625H6.9375C6.32419 4.625 5.73599 4.86864 5.30232 5.30232C4.86864 5.73599 4.625 6.32419 4.625 6.9375V30.0625C4.625 30.6758 4.86864 31.264 5.30232 31.6977C5.73599 32.1314 6.32419 32.375 6.9375 32.375H30.0625C30.6758 32.375 31.264 32.1314 31.6977 31.6977C32.1314 31.264 32.375 30.6758 32.375 30.0625V6.9375C32.375 6.32419 32.1314 5.73599 31.6977 5.30232C31.264 4.86864 30.6758 4.625 30.0625 4.625ZM30.0625 30.0625H6.9375V23.125L12.7188 17.3438L19.1822 23.8072C19.6155 24.2379 20.2016 24.4796 20.8125 24.4796C21.4234 24.4796 22.0095 24.2379 22.4428 23.8072L24.2812 21.9688L30.0625 27.75V30.0625ZM30.0625 24.4778L25.9116 20.3269C25.4783 19.8962 24.8922 19.6544 24.2812 19.6544C23.6703 19.6544 23.0842 19.8962 22.6509 20.3269L20.8125 22.1653L14.3491 15.7019C13.9158 15.2712 13.3297 15.0294 12.7188 15.0294C12.1078 15.0294 11.5217 15.2712 11.0884 15.7019L6.9375 19.8528V6.9375H30.0625V24.4778Z\",\n fill: \"#DDDFDD\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgImage);\nexport default __webpack_public_path__ + \"static/media/image.e8c3f4ca.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgVarieties({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 22,\n viewBox: \"0 0 22 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20 21.5H2C1.6023 21.4996 1.22101 21.3414 0.9398 21.0602C0.658586 20.779 0.500417 20.3977 0.5 20V2C0.500417 1.6023 0.658586 1.22101 0.9398 0.9398C1.22101 0.658586 1.6023 0.500417 2 0.5H20C20.3977 0.500417 20.779 0.658586 21.0602 0.9398C21.3414 1.22101 21.4996 1.6023 21.5 2V20C21.4996 20.3977 21.3414 20.779 21.0602 21.0602C20.779 21.3414 20.3977 21.4996 20 21.5ZM2 2V20H20V2H2ZM12.125 8.75C11.6058 8.75 11.0983 8.59605 10.6666 8.30761C10.235 8.01917 9.8985 7.6092 9.69982 7.12954C9.50114 6.64989 9.44915 6.12209 9.55044 5.61289C9.65173 5.10369 9.90173 4.63596 10.2688 4.26885C10.636 3.90173 11.1037 3.65173 11.6129 3.55044C12.1221 3.44915 12.6499 3.50114 13.1295 3.69982C13.6092 3.8985 14.0192 4.23495 14.3076 4.66663C14.596 5.09831 14.75 5.60583 14.75 6.125C14.7492 6.82094 14.4724 7.48815 13.9803 7.98026C13.4882 8.47236 12.8209 8.74919 12.125 8.75ZM12.125 5C11.9025 5 11.685 5.06598 11.5 5.1896C11.315 5.31321 11.1708 5.48892 11.0856 5.69448C11.0005 5.90005 10.9782 6.12625 11.0216 6.34448C11.065 6.56271 11.1722 6.76316 11.3295 6.9205C11.4868 7.07783 11.6873 7.18498 11.9055 7.22838C12.1238 7.27179 12.35 7.24951 12.5555 7.16437C12.7611 7.07922 12.9368 6.93502 13.0604 6.75002C13.184 6.56501 13.25 6.34751 13.25 6.125C13.2497 5.82674 13.131 5.54078 12.9201 5.32988C12.7092 5.11897 12.4233 5.00034 12.125 5ZM8.41663 18.0576C8.84831 18.346 9.35583 18.5 9.875 18.5C10.5709 18.4992 11.2382 18.2224 11.7303 17.7303C12.2224 17.2381 12.4992 16.5709 12.5 15.875C12.5 15.3558 12.346 14.8483 12.0576 14.4166C11.7692 13.985 11.3592 13.6485 10.8795 13.4498C10.3999 13.2511 9.87209 13.1992 9.36289 13.3004C8.85369 13.4017 8.38596 13.6517 8.01885 14.0188C7.65173 14.386 7.40173 14.8537 7.30044 15.3629C7.19915 15.8721 7.25114 16.3999 7.44982 16.8795C7.6485 17.3592 7.98495 17.7692 8.41663 18.0576ZM9.24999 14.9396C9.43499 14.816 9.6525 14.75 9.875 14.75C10.1733 14.7503 10.4592 14.869 10.6701 15.0799C10.881 15.2908 10.9997 15.5767 11 15.875C11 16.0975 10.934 16.315 10.8104 16.5C10.6868 16.685 10.5111 16.8292 10.3055 16.9144C10.1 16.9995 9.87375 17.0218 9.65553 16.9784C9.4373 16.935 9.23684 16.8278 9.07951 16.6705C8.92217 16.5132 8.81503 16.3127 8.77162 16.0945C8.72821 15.8762 8.75049 15.65 8.83564 15.4445C8.92079 15.2389 9.06498 15.0632 9.24999 14.9396ZM6.125 12.5C5.60583 12.5 5.09831 12.346 4.66663 12.0576C4.23495 11.7692 3.8985 11.3592 3.69982 10.8795C3.50114 10.3999 3.44915 9.87209 3.55044 9.36289C3.65173 8.85369 3.90173 8.38596 4.26885 8.01885C4.63596 7.65173 5.10369 7.40173 5.61289 7.30044C6.12209 7.19915 6.64989 7.25114 7.12954 7.44982C7.6092 7.6485 8.01917 7.98495 8.30761 8.41663C8.59605 8.84831 8.75 9.35583 8.75 9.875C8.74919 10.5709 8.47236 11.2382 7.98026 11.7303C7.48815 12.2224 6.82094 12.4992 6.125 12.5ZM6.125 8.75C5.9025 8.75 5.68499 8.81598 5.49998 8.9396C5.31498 9.06321 5.17078 9.23892 5.08564 9.44448C5.00049 9.65005 4.97821 9.87625 5.02162 10.0945C5.06503 10.3127 5.17217 10.5132 5.32951 10.6705C5.48684 10.8278 5.6873 10.935 5.90552 10.9784C6.12375 11.0218 6.34995 10.9995 6.55552 10.9144C6.76109 10.8292 6.93679 10.685 7.0604 10.5C7.18402 10.315 7.25 10.0975 7.25 9.875C7.24966 9.57674 7.13103 9.29078 6.92012 9.07988C6.70922 8.86897 6.42327 8.75034 6.125 8.75ZM14.4166 14.3076C14.8483 14.596 15.3558 14.75 15.875 14.75C16.5709 14.7492 17.2381 14.4724 17.7303 13.9803C18.2224 13.4882 18.4992 12.8209 18.5 12.125C18.5 11.6058 18.346 11.0983 18.0576 10.6666C17.7692 10.235 17.3592 9.8985 16.8795 9.69982C16.3999 9.50114 15.8721 9.44915 15.3629 9.55044C14.8537 9.65173 14.386 9.90173 14.0188 10.2688C13.6517 10.636 13.4017 11.1037 13.3004 11.6129C13.1992 12.1221 13.2511 12.6499 13.4498 13.1295C13.6485 13.6092 13.985 14.0192 14.4166 14.3076ZM15.25 11.1896C15.435 11.066 15.6525 11 15.875 11C16.1733 11.0003 16.4592 11.119 16.6701 11.3299C16.881 11.5408 16.9997 11.8267 17 12.125C17 12.3475 16.934 12.565 16.8104 12.75C16.6868 12.935 16.5111 13.0792 16.3055 13.1644C16.1 13.2495 15.8738 13.2718 15.6555 13.2284C15.4373 13.185 15.2368 13.0778 15.0795 12.9205C14.9222 12.7632 14.815 12.5627 14.7716 12.3445C14.7282 12.1262 14.7505 11.9001 14.8356 11.6945C14.9208 11.4889 15.065 11.3132 15.25 11.1896Z\",\n fill: \"#F6F6F6\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgVarieties);\nexport default __webpack_public_path__ + \"static/media/varieties.ed8ae8ce.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgArrowClock({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 35,\n height: 35,\n viewBox: \"0 0 35 35\",\n color: \"white\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5203 24.0625L16.4062 17.9484V7.65625H18.5938V17.0406L24.0625 22.5203L22.5203 24.0625Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5 2.1875C15.4601 2.18779 13.441 2.59741 11.5623 3.39211C9.68356 4.18682 7.9834 5.35044 6.5625 6.81406V2.1875H4.375V10.9375H13.125V8.75H7.74375C9.79566 6.46985 12.5814 4.98042 15.6171 4.54038C18.6529 4.10034 21.7469 4.73749 24.3617 6.34117C26.9766 7.94485 28.9472 10.4138 29.9313 13.3191C30.9153 16.2244 30.8507 19.3827 29.7485 22.2453C28.6464 25.108 26.5765 27.4942 23.8982 28.9895C21.2198 30.4848 18.1024 30.9948 15.0872 30.4309C12.072 29.867 9.34953 28.2649 7.39265 25.9027C5.43577 23.5405 4.36808 20.5675 4.375 17.5H2.1875C2.1875 20.5285 3.08556 23.489 4.76812 26.0072C6.45068 28.5253 8.84217 30.4879 11.6402 31.6469C14.4382 32.8059 17.517 33.1091 20.4873 32.5183C23.4577 31.9274 26.1861 30.4691 28.3276 28.3276C30.4691 26.1861 31.9274 23.4577 32.5183 20.4873C33.1091 17.517 32.8059 14.4382 31.6469 11.6402C30.4879 8.84217 28.5253 6.45068 26.0072 4.76812C23.489 3.08556 20.5285 2.1875 17.5 2.1875V2.1875Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowClock);\nexport default __webpack_public_path__ + \"static/media/arrow-clock.6fd0fced.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgGrainHumidity({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 126,\n height: 126,\n viewBox: \"0 0 126 126\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27.2762 23.8488C33.8541 17.8468 41.8383 13.5988 50.4914 11.4972C59.1446 9.39563 68.1877 9.50812 76.7859 11.8243C85.3841 14.1405 93.2601 18.5858 99.6866 24.7496C106.113 30.9135 110.883 38.5972 113.556 47.0912C116.229 55.5853 116.719 64.6159 114.98 73.3492C113.241 82.0825 109.33 90.2369 103.607 97.0594C97.8849 103.882 90.5357 109.153 82.2384 112.385C73.9411 115.617 64.9631 116.707 56.1334 115.553\",\n stroke: \"#999898\",\n strokeWidth: 20\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M100.477 25.5233C110.075 35.1214 115.624 48.0362 115.982 61.6053C116.339 75.1743 111.476 88.3632 102.397 98.453C93.3167 108.543 80.7118 114.764 67.1803 115.835C53.6489 116.905 40.2224 112.744 29.6689 104.207\",\n stroke: \"#999898\",\n strokeWidth: 20\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M94.1979 105.845C83.225 113.835 69.6047 117.31 56.145 115.555C42.6853 113.799 30.4121 106.946 21.8558 96.409C13.2995 85.8716 9.11228 72.453 10.1573 58.9196C11.2023 45.3861 17.4 32.7695 27.4726 23.6706\",\n stroke: \"#999898\",\n strokeWidth: 20\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGrainHumidity);\nexport default __webpack_public_path__ + \"static/media/grain-humidity.548d9870.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgGrainHumidityIndicator({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.25 12C16.9972 12 16.7475 12.015 16.5 12.0375V12C16.5 6.08625 14.283 1.5 12.375 1.5C10.467 1.5 8.25 6.08625 8.25 12V15.75H4.5V18C4.50139 19.193 4.97594 20.3368 5.81955 21.1804C6.66317 22.0241 7.80695 22.4986 9 22.5H11.25C13.4373 22.4976 15.5343 21.6277 17.081 20.081C18.6277 18.5343 19.4976 16.4373 19.5 14.25V12H17.25ZM9.75 12H11.25V10.5H9.80475C9.86766 9.49049 10.0093 8.48744 10.2285 7.5H12V6H10.65C11.2575 4.1955 12.0112 3.171 12.375 3.0105C12.87 3.2295 14.088 5.03775 14.6738 8.25H13.5V9.75H14.883C14.9606 10.4975 14.9997 11.2485 15 12V12.3195C13.086 12.8668 11.4328 14.0845 10.3425 15.75H9.75V12ZM9 21C8.20466 20.999 7.44217 20.6826 6.87978 20.1202C6.31738 19.5578 6.00099 18.7953 6 18V17.25H9.573C9.19529 18.2051 9.0009 19.2229 9 20.25V21ZM18 14.25C17.998 16.0396 17.2862 17.7553 16.0208 19.0208C14.7553 20.2862 13.0396 20.998 11.25 21H10.5V20.25C10.502 18.4604 11.2138 16.7447 12.4792 15.4792C13.7447 14.2138 15.4604 13.502 17.25 13.5H18V14.25Z\",\n fill: \"currentcolor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgGrainHumidityIndicator);\nexport default __webpack_public_path__ + \"static/media/grain-humidity-indicator.3bac1380.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRain({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_2550_4768)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16.2491 3.00621C17.4507 3.98065 18.2809 5.33851 18.6005 6.85223C19.784 7.09355 20.8358 7.76583 21.5517 8.73866C22.2676 9.71149 22.5968 10.9155 22.4753 12.1173C22.3537 13.319 21.7902 14.4328 20.894 15.2426C19.9978 16.0525 18.8328 16.5006 17.6249 16.5001H17.2499V15.0001H17.6249C18.4966 15.0004 19.3346 14.6633 19.9632 14.0594C20.5918 13.4555 20.9622 12.6317 20.9968 11.7607C21.0313 10.8897 20.7274 10.0391 20.1486 9.38732C19.5698 8.73551 18.7612 8.33305 17.8922 8.26433L17.2807 8.2164L17.2067 7.6074C17.051 6.33621 16.4356 5.16592 15.4765 4.31717C14.5174 3.46843 13.281 2.99989 12.0003 2.99989C10.7196 2.99989 9.48316 3.46843 8.52409 4.31717C7.56503 5.16592 6.94961 6.33621 6.79388 7.6074L6.71955 8.2164L6.10793 8.26433C5.23898 8.33305 4.43037 8.73548 3.85161 9.38727C3.27284 10.0391 2.96886 10.8896 3.00339 11.7606C3.03791 12.6315 3.40826 13.4553 4.0368 14.0593C4.66534 14.6632 5.50327 15.0004 6.37493 15.0001H6.74993V15.0076C6.86589 15.0046 6.98091 15.0291 7.08555 15.0792C7.17365 15.1233 7.2522 15.1842 7.31672 15.2587C7.38125 15.3331 7.43048 15.4195 7.46161 15.5129C7.49275 15.6064 7.50516 15.7051 7.49816 15.8033C7.49116 15.9016 7.46487 15.9975 7.4208 16.0856L5.9208 19.0856C5.87769 19.1752 5.81717 19.2554 5.74278 19.3214C5.66839 19.3874 5.5816 19.438 5.48748 19.4702C5.39336 19.5023 5.29377 19.5154 5.19453 19.5088C5.09529 19.5021 4.99836 19.4757 4.9094 19.4312C4.82044 19.3867 4.74122 19.325 4.67635 19.2496C4.61149 19.1742 4.56226 19.0866 4.53156 18.992C4.50085 18.8974 4.48926 18.7976 4.49748 18.6985C4.5057 18.5994 4.53356 18.5029 4.57943 18.4146L5.57258 16.4283C4.44972 16.2419 3.42762 15.6681 2.68383 14.8066C1.94003 13.945 1.52153 12.8501 1.50103 11.7121C1.48053 10.574 1.85933 9.46476 2.57161 8.57696C3.28389 7.68916 4.28466 7.07891 5.40007 6.85223C5.71966 5.33851 6.54985 3.98065 7.7515 3.00621C8.95314 2.03178 10.4532 1.5 12.0003 1.5C13.5474 1.5 15.0475 2.03178 16.2491 3.00621ZM10.5989 22.1281L11.9009 22.8721L15.5429 16.5001H11.0422L13.4009 12.3721L12.0989 11.6281L8.45766 18.0001H12.9569L10.5989 22.1281ZM18.3749 20.25C18.9962 20.25 19.4999 19.7463 19.4999 19.125C19.4999 18.5037 18.9962 18 18.3749 18C17.7536 18 17.2499 18.5037 17.2499 19.125C17.2499 19.7463 17.7536 20.25 18.3749 20.25ZM16.1249 23.25C16.7462 23.25 17.2499 22.7463 17.2499 22.125C17.2499 21.5037 16.7462 21 16.1249 21C15.5036 21 14.9999 21.5037 14.9999 22.125C14.9999 22.7463 15.5036 23.25 16.1249 23.25ZM6.74993 24.0001C6.62207 24.0001 6.49633 23.9674 6.38465 23.9051C6.27298 23.8429 6.17907 23.7531 6.11186 23.6443C6.04465 23.5356 6.00636 23.4114 6.00063 23.2837C5.9949 23.1559 6.02192 23.0289 6.07913 22.9145L7.57913 19.9141C7.62319 19.8261 7.68417 19.7475 7.75858 19.683C7.833 19.6185 7.9194 19.5692 8.01284 19.5381C8.10629 19.507 8.20495 19.4945 8.3032 19.5015C8.40144 19.5085 8.49735 19.5348 8.58544 19.5789C8.67353 19.6229 8.75208 19.6839 8.8166 19.7583C8.88113 19.8327 8.93036 19.9191 8.9615 20.0126C8.99263 20.106 9.00506 20.2047 8.99806 20.3029C8.99106 20.4012 8.96479 20.4971 8.92073 20.5852L7.42073 23.5852C7.35861 23.7099 7.26292 23.8148 7.1444 23.8881C7.02589 23.9614 6.88928 24.0002 6.74993 24.0001Z\",\n fill: \"#F6F6F6\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_2550_4768\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRain);\nexport default __webpack_public_path__ + \"static/media/rain.a919e24b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgSun({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M11.25 1.50366H12.75V5.25366H11.25V1.50366ZM5.10572 4.04882L4.04517 5.10938L6.67454 7.73875L7.7351 6.6782L5.10572 4.04882ZM12 9.00366C12.5933 9.00366 13.1734 9.17961 13.6667 9.50925C14.1601 9.8389 14.5446 10.3074 14.7716 10.8556C14.9987 11.4038 15.0581 12.007 14.9424 12.5889C14.8266 13.1709 14.5409 13.7054 14.1213 14.125C13.7018 14.5445 13.1672 14.8303 12.5853 14.946C12.0033 15.0618 11.4001 15.0024 10.852 14.7753C10.3038 14.5482 9.83524 14.1637 9.50559 13.6704C9.17595 13.177 9 12.597 9 12.0037C9.0009 11.2083 9.31725 10.4457 9.87967 9.88333C10.4421 9.32091 11.2046 9.00456 12 9.00366ZM12 7.50366C11.11 7.50366 10.24 7.76758 9.49994 8.26205C8.75991 8.75652 8.18314 9.45932 7.84254 10.2816C7.50195 11.1039 7.41283 12.0087 7.58647 12.8816C7.7601 13.7545 8.18868 14.5563 8.81802 15.1856C9.44736 15.815 10.2492 16.2436 11.1221 16.4172C11.995 16.5908 12.8998 16.5017 13.7221 16.1611C14.5443 15.8205 15.2471 15.2437 15.7416 14.5037C16.2361 13.7637 16.5 12.8937 16.5 12.0037C16.5 10.8102 16.0259 9.6656 15.182 8.82168C14.3381 7.97777 13.1935 7.50366 12 7.50366ZM1.5 11.2537H5.25V12.7537H1.5V11.2537ZM6.67454 16.2686L4.04517 18.8979L5.10572 19.9585L7.7351 17.3291L6.67454 16.2686ZM11.25 18.7537H12.75V22.5037H11.25V18.7537ZM17.3254 16.2685L16.2649 17.3291L18.8943 19.9585L19.9548 18.8979L17.3254 16.2685ZM18.75 11.2537H22.5V12.7537H18.75V11.2537ZM18.8943 4.04885L16.2649 6.67822L17.3255 7.73878L19.9549 5.1094L18.8943 4.04885Z\",\n fill: \"#DDDFDD\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSun);\nexport default __webpack_public_path__ + \"static/media/sun.df73b6c5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRainDrop({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M3.61476 9.51027C4.24745 10.143 5.10524 10.4989 6 10.5C6.89476 10.4989 7.75255 10.143 8.38524 9.51027C9.01793 8.87758 9.37387 8.0198 9.375 7.12504C9.35344 6.45973 9.15629 5.81196 8.80354 5.24745L6.3177 1.2888C6.28164 1.23815 6.23399 1.19685 6.17872 1.16836C6.12346 1.13987 6.06218 1.125 6 1.125C5.93782 1.125 5.87654 1.13987 5.82128 1.16836C5.76601 1.19685 5.71836 1.23815 5.6823 1.2888L3.18529 5.26676C2.83843 5.82617 2.64517 6.46713 2.625 7.12504C2.62613 8.0198 2.98207 8.87758 3.61476 9.51027ZM3.83186 5.64611L6 2.19315L8.157 5.6268C8.44219 6.0763 8.60363 6.59313 8.625 7.12504C8.625 7.82123 8.34844 8.48891 7.85616 8.98119C7.36387 9.47348 6.69619 9.75004 6 9.75004C5.30381 9.75004 4.63613 9.47348 4.14384 8.98119C3.65156 8.48891 3.375 7.82123 3.375 7.12504C3.3949 6.60052 3.55246 6.09047 3.83186 5.64611ZM6 8.25V9C6.48945 8.97577 6.95242 8.77045 7.29894 8.42394C7.64545 8.07742 7.85077 7.61445 7.875 7.125H7.125C7.09991 7.41495 6.97332 7.68674 6.76753 7.89253C6.56174 8.09832 6.28995 8.22491 6 8.25Z\",\n fill: \"#FFFFFF\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRainDrop);\nexport default __webpack_public_path__ + \"static/media/rain-drop.19e372c0.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgPolygon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.75 2.74995C17.748 2.10167 17.4938 1.47959 17.0412 1.01547C16.5886 0.551351 15.9731 0.281633 15.325 0.263435C14.677 0.245238 14.0473 0.479991 13.5694 0.91798C13.0914 1.35597 12.8027 1.9628 12.7644 2.60995L4.99124 4.16433C4.8095 3.78659 4.53547 3.46076 4.19448 3.21696C3.85349 2.97315 3.45654 2.81923 3.04033 2.76943C2.62411 2.71963 2.20206 2.77555 1.81318 2.93202C1.42429 3.0885 1.08113 3.34048 0.815398 3.66467C0.549668 3.98887 0.369948 4.37482 0.292849 4.78685C0.21575 5.19888 0.243759 5.6237 0.374289 6.02204C0.504819 6.42039 0.733656 6.7794 1.03965 7.0659C1.34565 7.3524 1.71892 7.55714 2.12499 7.6612V12.8387C1.69873 12.9481 1.30901 13.1684 0.995378 13.4771C0.68175 13.7858 0.45538 14.172 0.339245 14.5965C0.22311 15.021 0.221344 15.4686 0.334126 15.894C0.446909 16.3194 0.670225 16.7074 0.981408 17.0185C1.29259 17.3297 1.68056 17.553 2.10594 17.6658C2.53133 17.7786 2.97897 17.7768 3.40345 17.6607C3.82793 17.5446 4.21413 17.3182 4.52285 17.0046C4.83157 16.6909 5.05181 16.3012 5.16124 15.875H10.3387C10.4426 16.2813 10.6473 16.6549 10.9338 16.9611C11.2204 17.2674 11.5795 17.4965 11.978 17.6272C12.3765 17.7579 12.8016 17.786 13.2138 17.7089C13.6261 17.6318 14.0122 17.452 14.3366 17.1862C14.661 16.9203 14.9131 16.5769 15.0696 16.1878C15.2261 15.7987 15.2819 15.3764 15.232 14.96C15.1821 14.5436 15.0279 14.1465 14.7838 13.8054C14.5398 13.4644 14.2136 13.1903 13.8356 13.0087L15.39 5.23558C16.0263 5.2008 16.6252 4.92397 17.064 4.46183C17.5028 3.99968 17.7482 3.38722 17.75 2.74995V2.74995ZM15.25 1.49995C15.4972 1.49995 15.7389 1.57326 15.9445 1.71062C16.15 1.84797 16.3102 2.04319 16.4048 2.2716C16.4994 2.50001 16.5242 2.75134 16.476 2.99382C16.4277 3.23629 16.3087 3.45902 16.1339 3.63384C15.9591 3.80865 15.7363 3.9277 15.4939 3.97594C15.2514 4.02417 15 3.99941 14.7716 3.9048C14.5432 3.81019 14.348 3.64998 14.2107 3.44442C14.0733 3.23885 14 2.99718 14 2.74995C14.0003 2.41853 14.1321 2.10078 14.3665 1.86644C14.6008 1.63209 14.9186 1.50028 15.25 1.49995V1.49995ZM1.49999 5.24995C1.49999 5.00273 1.5733 4.76105 1.71065 4.55549C1.848 4.34993 2.04322 4.18971 2.27163 4.0951C2.50004 4.00049 2.75137 3.97574 2.99385 4.02397C3.23633 4.0722 3.45905 4.19125 3.63387 4.36607C3.80869 4.54089 3.92774 4.76361 3.97597 5.00609C4.0242 5.24857 3.99945 5.4999 3.90484 5.72831C3.81023 5.95672 3.65001 6.15194 3.44445 6.28929C3.23889 6.42664 2.99721 6.49995 2.74999 6.49995C2.41857 6.49962 2.10082 6.36782 1.86647 6.13347C1.63212 5.89912 1.50032 5.58137 1.49999 5.24995ZM2.74999 16.5C2.50276 16.5 2.26109 16.4266 2.05552 16.2893C1.84996 16.1519 1.68975 15.9567 1.59514 15.7283C1.50053 15.4999 1.47577 15.2486 1.524 15.0061C1.57224 14.7636 1.69129 14.5409 1.8661 14.3661C2.04092 14.1913 2.26365 14.0722 2.50612 14.024C2.7486 13.9757 2.99993 14.0005 3.22834 14.0951C3.45675 14.1897 3.65197 14.3499 3.78932 14.5555C3.92668 14.7611 3.99999 15.0027 3.99999 15.25C3.99966 15.5814 3.86785 15.8991 3.6335 16.1335C3.39916 16.3678 3.08141 16.4996 2.74999 16.5V16.5ZM10.3387 14.625H5.16124C5.04928 14.1953 4.82473 13.8032 4.51074 13.4892C4.19675 13.1752 3.80469 12.9507 3.37499 12.8387V7.6612C3.88564 7.52838 4.34095 7.23688 4.67533 6.82871C5.00971 6.42054 5.20589 5.91676 5.23561 5.38995L13.0087 3.83558C13.2537 4.33946 13.6606 4.7466 14.1644 4.99183L12.61 12.7643C12.0832 12.7941 11.5794 12.9902 11.1712 13.3246C10.7631 13.659 10.4716 14.1143 10.3387 14.625V14.625ZM12.75 16.5C12.5028 16.5 12.2611 16.4266 12.0555 16.2893C11.85 16.1519 11.6897 15.9567 11.5951 15.7283C11.5005 15.4999 11.4758 15.2486 11.524 15.0061C11.5722 14.7636 11.6913 14.5409 11.8661 14.3661C12.0409 14.1913 12.2636 14.0722 12.5061 14.024C12.7486 13.9757 12.9999 14.0005 13.2283 14.0951C13.4567 14.1897 13.652 14.3499 13.7893 14.5555C13.9267 14.7611 14 15.0027 14 15.25C13.9997 15.5814 13.8679 15.8991 13.6335 16.1335C13.3992 16.3678 13.0814 16.4996 12.75 16.5V16.5Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgPolygon);\nexport default __webpack_public_path__ + \"static/media/polygon.117a22ae.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgCompareImages({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 22,\n viewBox: \"0 0 20 22\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.5 11C19.4965 8.63705 18.6004 6.36137 16.9887 4.62283C15.377 2.88429 13.1671 1.80943 10.7958 1.61071V0H9.21323V1.61071C6.83896 1.80377 4.62472 2.87664 3.01044 4.61617C1.39617 6.3557 0.5 8.63457 0.5 11C0.5 13.3654 1.39617 15.6443 3.01044 17.3838C4.62472 19.1234 6.83896 20.1962 9.21323 20.3893V22H10.7958V20.3893C13.1671 20.1906 15.377 19.1157 16.9887 17.3772C18.6004 15.6386 19.4965 13.363 19.5 11ZM10.0045 18.8571V3.14286C12.1032 3.14286 14.1158 3.97066 15.5998 5.44416C17.0837 6.91766 17.9174 8.91616 17.9174 11C17.9174 13.0838 17.0837 15.0823 15.5998 16.5558C14.1158 18.0293 12.1032 18.8571 10.0045 18.8571Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCompareImages);\nexport default __webpack_public_path__ + \"static/media/compare-images.fd51f260.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgToolPin({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 28,\n viewBox: \"0 0 22 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 16C10.0111 16 9.0444 15.7068 8.22215 15.1574C7.39991 14.6079 6.75904 13.8271 6.3806 12.9134C6.00217 11.9998 5.90315 10.9945 6.09608 10.0246C6.289 9.05465 6.76521 8.16373 7.46447 7.46447C8.16373 6.76521 9.05465 6.289 10.0246 6.09608C10.9945 5.90315 11.9998 6.00217 12.9134 6.3806C13.8271 6.75904 14.6079 7.39991 15.1574 8.22215C15.7068 9.0444 16 10.0111 16 11C15.9984 12.3256 15.4711 13.5964 14.5338 14.5338C13.5964 15.4711 12.3256 15.9984 11 16V16ZM11 8C10.4067 8 9.82664 8.17595 9.33329 8.50559C8.83994 8.83524 8.45543 9.30377 8.22836 9.85195C8.0013 10.4001 7.94189 11.0033 8.05765 11.5853C8.1734 12.1672 8.45912 12.7018 8.87868 13.1213C9.29824 13.5409 9.83279 13.8266 10.4147 13.9424C10.9967 14.0581 11.5999 13.9987 12.1481 13.7716C12.6962 13.5446 13.1648 13.1601 13.4944 12.6667C13.8241 12.1734 14 11.5933 14 11C13.9992 10.2046 13.6829 9.442 13.1204 8.87956C12.558 8.31712 11.7954 8.0008 11 8V8Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11 28L2.56401 18.051C2.44679 17.9016 2.33079 17.7513 2.21601 17.6C0.774992 15.7018 -0.00348119 13.3832 1.17029e-05 11C1.17029e-05 8.08262 1.15894 5.28473 3.22184 3.22183C5.28474 1.15893 8.08263 0 11 0C13.9174 0 16.7153 1.15893 18.7782 3.22183C20.8411 5.28473 22 8.08262 22 11C22.0035 13.3821 21.2254 15.6996 19.785 17.597L19.784 17.6C19.784 17.6 19.484 17.994 19.439 18.047L11 28ZM3.81201 16.395C3.81401 16.395 4.04601 16.703 4.09901 16.769L11 24.908L17.91 16.758C17.954 16.703 18.188 16.393 18.189 16.392C19.3662 14.8411 20.0023 12.947 20 11C20 8.61305 19.0518 6.32387 17.364 4.63604C15.6761 2.94821 13.387 2 11 2C8.61306 2 6.32388 2.94821 4.63605 4.63604C2.94822 6.32387 2.00001 8.61305 2.00001 11C1.99791 12.9482 2.63479 14.8434 3.81301 16.395H3.81201Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgToolPin);\nexport default __webpack_public_path__ + \"static/media/tool-pin.7255eaf5.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgHiddenEye({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.11668 4.06674C8.40898 4.02193 8.70429 3.99965 9.00001 4.00007C11.65 4.00007 14.1417 5.90841 15.5917 9.00007C15.3699 9.47057 15.1194 9.92698 14.8417 10.3667C14.7535 10.5032 14.7071 10.6626 14.7083 10.8251C14.7102 11.0069 14.7715 11.1832 14.8829 11.327C14.9943 11.4707 15.1497 11.5741 15.3253 11.6213C15.5009 11.6685 15.6872 11.657 15.8557 11.5885C16.0241 11.5199 16.1656 11.3982 16.2583 11.2417C16.6466 10.6317 16.9839 9.99062 17.2667 9.32507C17.3114 9.22109 17.3344 9.10909 17.3344 8.99591C17.3344 8.88272 17.3114 8.77072 17.2667 8.66674C15.5833 4.75841 12.4167 2.33341 9.00001 2.33341C8.6089 2.33144 8.21842 2.36491 7.83335 2.43341C7.72391 2.45201 7.61921 2.49199 7.52523 2.55105C7.43124 2.61012 7.34981 2.68712 7.28558 2.77766C7.22136 2.86819 7.17559 2.9705 7.1509 3.07872C7.12621 3.18694 7.12307 3.29897 7.14168 3.40841C7.16028 3.51784 7.20026 3.62254 7.25933 3.71653C7.31839 3.81051 7.39539 3.89194 7.48593 3.95617C7.57647 4.0204 7.67877 4.06616 7.78699 4.09085C7.89522 4.11554 8.00724 4.11868 8.11668 4.10007V4.06674ZM2.09168 0.908406C2.01398 0.830708 1.92174 0.769074 1.82022 0.727023C1.7187 0.684973 1.60989 0.66333 1.50001 0.66333C1.39013 0.66333 1.28132 0.684973 1.1798 0.727023C1.07829 0.769074 0.986044 0.830708 0.908345 0.908406C0.751426 1.06533 0.663269 1.27816 0.663269 1.50007C0.663269 1.72199 0.751426 1.93482 0.908345 2.09174L3.49168 4.66674C2.31299 5.80135 1.37489 7.16173 0.733345 8.66674C0.687459 8.77188 0.663775 8.88536 0.663775 9.00007C0.663775 9.11479 0.687459 9.22827 0.733345 9.33341C2.41668 13.2417 5.58334 15.6667 9.00001 15.6667C10.4976 15.6564 11.9598 15.2105 13.2083 14.3834L15.9083 17.0917C15.9858 17.1698 16.078 17.2318 16.1795 17.2741C16.2811 17.3165 16.39 17.3382 16.5 17.3382C16.61 17.3382 16.7189 17.3165 16.8205 17.2741C16.922 17.2318 17.0142 17.1698 17.0917 17.0917C17.1698 17.0143 17.2318 16.9221 17.2741 16.8206C17.3164 16.719 17.3382 16.6101 17.3382 16.5001C17.3382 16.3901 17.3164 16.2811 17.2741 16.1796C17.2318 16.078 17.1698 15.9859 17.0917 15.9084L2.09168 0.908406ZM7.39168 8.56674L9.43334 10.6084C9.2925 10.6488 9.14652 10.6684 9.00001 10.6667C8.55798 10.6667 8.13406 10.4911 7.8215 10.1786C7.50894 9.86602 7.33334 9.4421 7.33334 9.00007C7.33164 8.85356 7.35129 8.70758 7.39168 8.56674ZM9.00001 14.0001C6.35001 14.0001 3.85835 12.0917 2.41668 9.00007C2.95509 7.81153 3.71924 6.73889 4.66668 5.84174L6.14168 7.33341C5.79522 7.96574 5.66313 8.69336 5.76523 9.40712C5.86733 10.1209 6.19811 10.7823 6.70795 11.2921C7.21779 11.802 7.8792 12.1328 8.59296 12.2349C9.30672 12.337 10.0343 12.2049 10.6667 11.8584L11.9917 13.1667C11.0843 13.7008 10.0529 13.9881 9.00001 14.0001Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHiddenEye);\nexport default __webpack_public_path__ + \"static/media/hidden-eye.375184ca.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgClose({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 15,\n viewBox: \"0 0 15 15\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.49996 0.991699C3.87393 0.991699 0.991699 3.87393 0.991699 7.49996C0.991699 11.126 3.87393 14.0082 7.49996 14.0082C11.126 14.0082 14.0082 11.126 14.0082 7.49996C14.0082 3.87393 11.126 0.991699 7.49996 0.991699ZM10.0103 10.7541L7.49996 8.24377L4.98963 10.7541L4.24583 10.0103L6.75616 7.49996L4.24583 4.98963L4.98963 4.24583L7.49996 6.75616L10.0103 4.24583L10.7541 4.98963L8.24377 7.49996L10.7541 10.0103L10.0103 10.7541Z\",\n fill: \"#999898\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgClose);\nexport default __webpack_public_path__ + \"static/media/close.6d5cfa4b.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgCloudy({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n color: \"#DDDFDD\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5001 11.625C22.4947 10.5034 22.1045 9.41756 21.3948 8.54897C20.6851 7.68039 19.6989 7.08164 18.6008 6.85276C18.2812 5.3391 17.4511 3.98128 16.2495 3.00689C15.0479 2.03249 13.5479 1.50073 12.0008 1.50073C10.4538 1.50073 8.95378 2.03249 7.75218 3.00689C6.55057 3.98128 5.72041 5.3391 5.40083 6.85276C4.3025 7.08134 3.31591 7.67996 2.60592 8.54857C1.89593 9.41718 1.50557 10.5032 1.50008 11.625C1.50044 12.8323 1.95198 13.9959 2.76608 14.8875C2.1511 15.5211 1.73672 16.3221 1.57484 17.1901C1.41296 18.0581 1.51077 18.9546 1.85602 19.7673C2.20127 20.58 2.77863 21.2728 3.51577 21.7589C4.25292 22.245 5.1171 22.5028 6.00008 22.5H14.2501C14.9777 22.503 15.6952 22.3289 16.3405 21.9925C16.9858 21.6562 17.5394 21.1678 17.9537 20.5695C18.3679 19.9713 18.6303 19.2812 18.7181 18.5588C18.8059 17.8364 18.7165 17.1036 18.4576 16.4235C19.588 16.2268 20.6129 15.638 21.3523 14.7606C22.0916 13.8831 22.498 12.7732 22.5001 11.6258V11.625ZM14.2501 21H6.00008C5.2488 21.0013 4.5245 20.7201 3.97084 20.2123C3.41718 19.7045 3.07461 19.0071 3.01108 18.2585C2.94755 17.5099 3.1677 16.7648 3.62786 16.1709C4.08803 15.5771 4.75459 15.1779 5.49533 15.0525L5.99258 14.9685L6.10208 14.4765C6.30561 13.5611 6.81521 12.7424 7.54675 12.1556C8.27829 11.5689 9.18805 11.2491 10.1258 11.2491C11.0636 11.2491 11.9734 11.5689 12.7049 12.1556C13.4365 12.7424 13.946 13.5611 14.1496 14.4765L14.2583 14.9685L14.7556 15.0533C15.4954 15.1796 16.1609 15.5792 16.6201 16.1729C17.0794 16.7666 17.2989 17.511 17.2354 18.2589C17.1718 19.0068 16.8297 19.7035 16.2768 20.2112C15.724 20.7188 15.0007 21.0003 14.2501 21ZM17.6251 15H17.5838C17.0229 14.3722 16.296 13.9156 15.4868 13.683C15.1279 12.5421 14.4143 11.5454 13.45 10.8378C12.4857 10.1303 11.3208 9.74879 10.1247 9.74879C8.92864 9.74879 7.76375 10.1303 6.7994 10.8378C5.83506 11.5454 5.12154 12.5421 4.76258 13.683C4.49595 13.7606 4.23709 13.8628 3.98933 13.9883C3.67674 13.679 3.42841 13.311 3.25863 12.9055C3.08885 12.4999 3.00098 12.0647 3.00008 11.625C3.00394 10.7776 3.32524 9.96243 3.90059 9.34029C4.47595 8.71815 5.26357 8.33422 6.10808 8.26426L6.72008 8.21626L6.79433 7.60726C6.95088 6.33677 7.56661 5.16738 8.52553 4.31937C9.48445 3.47136 10.7204 3.00327 12.0005 3.00327C13.2806 3.00327 14.5165 3.47136 15.4754 4.31937C16.4343 5.16738 17.05 6.33677 17.2066 7.60726L17.2808 8.21626L17.8921 8.26426C18.7628 8.33055 19.5739 8.732 20.1547 9.38414C20.7355 10.0363 21.0407 10.8883 21.0061 11.7609C20.9716 12.6335 20.5999 13.4586 19.9693 14.0627C19.3387 14.6669 18.4984 15.0028 17.6251 15Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCloudy);\nexport default __webpack_public_path__ + \"static/media/cloudy.1ea4e575.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRainWeather({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6249 16.5H6.37489C5.1722 16.4924 4.01477 16.0405 3.12513 15.2311C2.2355 14.4217 1.67646 13.3121 1.55549 12.1154C1.43453 10.9188 1.76018 9.71973 2.46983 8.74868C3.17949 7.77764 4.22305 7.10321 5.39989 6.85504C5.72367 5.34493 6.55552 3.99152 7.75663 3.02065C8.95774 2.04977 10.4555 1.52014 11.9999 1.52014C13.5443 1.52014 15.042 2.04977 16.2432 3.02065C17.4443 3.99152 18.2761 5.34493 18.5999 6.85504C19.7767 7.10321 20.8203 7.77764 21.53 8.74868C22.2396 9.71973 22.5653 10.9188 22.4443 12.1154C22.3233 13.3121 21.7643 14.4217 20.8747 15.2311C19.985 16.0405 18.8276 16.4924 17.6249 16.5ZM11.9999 3.00004C10.7201 3.00132 9.48486 3.47002 8.52636 4.31803C7.56786 5.16604 6.95212 6.33496 6.79489 7.60504L6.74989 8.25004H6.10489C5.20979 8.28585 4.36557 8.67577 3.75795 9.33402C3.15033 9.99227 2.82909 10.8649 2.86489 11.76C2.9007 12.6551 3.29062 13.4994 3.94887 14.107C4.60712 14.7146 5.47979 15.0358 6.37489 15H17.6249C18.52 15.0358 19.3927 14.7146 20.0509 14.107C20.7092 13.4994 21.0991 12.6551 21.1349 11.76C21.1707 10.8649 20.8495 9.99227 20.2418 9.33402C19.6342 8.67577 18.79 8.28585 17.8949 8.25004H17.2499L17.1749 7.63504C17.0251 6.36463 16.4166 5.19262 15.4637 4.33916C14.5108 3.4857 13.2791 3.00952 11.9999 3.00004ZM10.4999 22.5C10.3822 22.5015 10.2661 22.4731 10.1624 22.4175C9.98575 22.3276 9.85188 22.1714 9.79005 21.9831C9.72821 21.7948 9.74343 21.5897 9.83239 21.4125L11.3324 18.4125C11.372 18.3173 11.4309 18.2313 11.5053 18.1599C11.5797 18.0885 11.668 18.0331 11.7647 17.9974C11.8615 17.9616 11.9646 17.9462 12.0675 17.9521C12.1705 17.958 12.2711 17.985 12.3632 18.0315C12.4552 18.0781 12.5367 18.1431 12.6024 18.2225C12.6682 18.302 12.7169 18.3941 12.7455 18.4932C12.774 18.5923 12.7818 18.6963 12.7684 18.7985C12.7549 18.9008 12.7206 18.9992 12.6674 19.0875L11.1674 22.0875C11.1051 22.2112 11.0097 22.3152 10.8919 22.3881C10.7741 22.4609 10.6384 22.4996 10.4999 22.5ZM14.9999 22.5C14.8822 22.5015 14.7661 22.4731 14.6624 22.4175C14.4858 22.3276 14.3519 22.1714 14.29 21.9831C14.2282 21.7948 14.2434 21.5897 14.3324 21.4125L15.8324 18.4125C15.872 18.3173 15.9309 18.2313 16.0053 18.1599C16.0797 18.0885 16.168 18.0331 16.2647 17.9974C16.3615 17.9616 16.4646 17.9462 16.5675 17.9521C16.6705 17.958 16.7711 17.985 16.8632 18.0315C16.9552 18.0781 17.0367 18.1431 17.1024 18.2225C17.1682 18.302 17.2169 18.3941 17.2455 18.4932C17.274 18.5923 17.2818 18.6963 17.2684 18.7985C17.2549 18.9008 17.2206 18.9992 17.1674 19.0875L15.6674 22.0875C15.6051 22.2112 15.5097 22.3152 15.3919 22.3881C15.2741 22.4609 15.1384 22.4996 14.9999 22.5ZM5.99989 22.5C5.88224 22.5015 5.76613 22.4731 5.66239 22.4175C5.48575 22.3276 5.35188 22.1714 5.29005 21.9831C5.22821 21.7948 5.24344 21.5897 5.33239 21.4125L6.83239 18.4125C6.87204 18.3173 6.9309 18.2313 7.00529 18.1599C7.07968 18.0885 7.168 18.0331 7.26474 17.9974C7.36148 17.9616 7.46455 17.9462 7.56752 17.9521C7.67049 17.958 7.77114 17.985 7.86318 18.0315C7.95522 18.0781 8.03667 18.1431 8.10244 18.2225C8.16822 18.302 8.2169 18.3941 8.24545 18.4932C8.274 18.5923 8.28181 18.6963 8.26837 18.7985C8.25494 18.9008 8.22057 18.9992 8.16739 19.0875L6.66739 22.0875C6.60507 22.2112 6.50971 22.3152 6.39189 22.3881C6.27407 22.4609 6.13839 22.4996 5.99989 22.5Z\",\n fill: \"#DDDFDD\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRainWeather);\nexport default __webpack_public_path__ + \"static/media/rain-weather.9b021110.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgLogoKuna({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 40,\n viewBox: \"0 0 16 40\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M16 0.827155V3.49976L8 9.89974L2.08697 5.16932V7.33388C2.08697 9.55282 3.09562 11.6515 4.82832 13.0376L6.95652 14.7402V11.3465H9.04348V14.7402L16 9.17496V15.6817C16 18.5346 14.7031 21.2329 12.4754 23.0151L9.04348 25.7606V31.4358L16 25.8706V28.5432L9.04348 34.1084V39.1726H6.95652V34.1084L3.52461 31.3629C1.29685 29.5807 1.14441e-05 26.8824 1.14441e-05 24.0295V17.5228L6.95652 23.088V17.4128L3.52461 14.6672C1.29685 12.885 1.14441e-05 10.1868 1.14441e-05 7.33388V0.827148L8 7.22714L16 0.827155ZM2.08697 21.8649V24.0295C2.08697 26.2484 3.09562 28.3471 4.82832 29.7332L6.95652 31.4358V25.7606L2.08697 21.8649ZM11.1717 21.3854L9.04348 23.088V17.4128L13.913 13.5171L13.913 15.6817C13.913 17.9006 12.9044 19.9993 11.1717 21.3854Z\",\n fill: \"url(#paint0_linear_25_1875)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_25_1875\",\n x1: 8,\n y1: 0.827148,\n x2: 8,\n y2: 39.1726,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#00F29B\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#FF7C33\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoKuna);\nexport default __webpack_public_path__ + \"static/media/logo-kuna.d4f93c9d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgSearch({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.477 19.477C19.7658 19.1881 19.7658 18.7198 19.477 18.431L17.0797 16.0336C15.5695 14.5235 15.5924 12.1024 16.0832 10.0238C16.2693 9.23573 16.3386 8.41764 16.2825 7.59562C16.1396 5.50288 15.1954 3.54579 13.6464 2.13146C12.0973 0.717125 10.0626 -0.0455437 7.96554 0.00210549C5.86847 0.0497547 3.87051 0.904053 2.38728 2.38728C0.904053 3.87051 0.0497547 5.86847 0.00210549 7.96554C-0.0455437 10.0626 0.717125 12.0973 2.13146 13.6464C3.54579 15.1954 5.50288 16.1396 7.59562 16.2825C8.41764 16.3386 9.23573 16.2693 10.0238 16.0832C12.1024 15.5924 14.5235 15.5695 16.0336 17.0797L18.431 19.477C18.7198 19.7658 19.1881 19.7658 19.477 19.477ZM1.50598 8.16382C1.50598 6.84703 1.89645 5.5598 2.62803 4.46492C3.3596 3.37004 4.39941 2.51669 5.61598 2.01277C6.83254 1.50886 8.17121 1.37701 9.46271 1.6339C10.7542 1.8908 11.9405 2.5249 12.8716 3.45601C13.8028 4.38713 14.4369 5.57345 14.6937 6.86494C14.9506 8.15644 14.8188 9.49511 14.3149 10.7117C13.811 11.9282 12.9576 12.9681 11.8627 13.6996C10.7678 14.4312 9.48062 14.8217 8.16382 14.8217C6.39865 14.8197 4.70634 14.1176 3.45818 12.8695C2.21001 11.6213 1.50793 9.92899 1.50598 8.16382Z\",\n fill: \"#E9EAEC\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSearch);\nexport default __webpack_public_path__ + \"static/media/search.c2b2f760.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRice({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 20,\n viewBox: \"0 0 18 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M3.01997 4.95931C1.9519 3.89124 2.5052 2.06381 3.98635 1.76758L4.53416 1.65802C7.4822 1.06841 10.5178 1.06841 13.4658 1.65802L14.0136 1.76758C15.4948 2.06381 16.0481 3.89124 14.98 4.95931C14.4305 5.50886 14.3452 6.36991 14.7763 7.01656L15.3284 7.84466C15.9527 8.78116 16.3504 9.85015 16.49 10.967L17.1619 16.3419C17.2098 16.7252 17.1713 17.1145 17.0491 17.4809C16.697 18.5374 15.7083 19.25 14.5947 19.25H3.40531C2.29171 19.25 1.30304 18.5374 0.950886 17.4809C0.82872 17.1145 0.790181 16.7252 0.838098 16.3419L1.50996 10.967C1.64957 9.85015 2.04728 8.78116 2.67161 7.84466L3.22368 7.01656C3.65478 6.36991 3.56952 5.50886 3.01997 4.95931Z\",\n stroke: \"#DDDFDD\",\n strokeWidth: 1.5\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRice);\nexport default __webpack_public_path__ + \"static/media/rice.a87a9ea7.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgToolbarTrash({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 18,\n viewBox: \"0 0 16 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.33333 14.0001C6.55435 14.0001 6.76631 13.9123 6.92259 13.756C7.07887 13.5997 7.16667 13.3878 7.16667 13.1667V8.16675C7.16667 7.94573 7.07887 7.73377 6.92259 7.57749C6.76631 7.42121 6.55435 7.33342 6.33333 7.33342C6.11232 7.33342 5.90036 7.42121 5.74408 7.57749C5.5878 7.73377 5.5 7.94573 5.5 8.16675V13.1667C5.5 13.3878 5.5878 13.5997 5.74408 13.756C5.90036 13.9123 6.11232 14.0001 6.33333 14.0001ZM14.6667 4.00008H11.3333V3.16675C11.3333 2.50371 11.0699 1.86782 10.6011 1.39898C10.1323 0.93014 9.49637 0.666748 8.83333 0.666748H7.16667C6.50363 0.666748 5.86774 0.93014 5.3989 1.39898C4.93006 1.86782 4.66667 2.50371 4.66667 3.16675V4.00008H1.33333C1.11232 4.00008 0.900358 4.08788 0.744078 4.24416C0.587797 4.40044 0.5 4.6124 0.5 4.83342C0.5 5.05443 0.587797 5.26639 0.744078 5.42267C0.900358 5.57895 1.11232 5.66675 1.33333 5.66675H2.16667V14.8334C2.16667 15.4965 2.43006 16.1323 2.8989 16.6012C3.36774 17.07 4.00363 17.3334 4.66667 17.3334H11.3333C11.9964 17.3334 12.6323 17.07 13.1011 16.6012C13.5699 16.1323 13.8333 15.4965 13.8333 14.8334V5.66675H14.6667C14.8877 5.66675 15.0996 5.57895 15.2559 5.42267C15.4122 5.26639 15.5 5.05443 15.5 4.83342C15.5 4.6124 15.4122 4.40044 15.2559 4.24416C15.0996 4.08788 14.8877 4.00008 14.6667 4.00008ZM6.33333 3.16675C6.33333 2.94573 6.42113 2.73377 6.57741 2.57749C6.73369 2.42121 6.94565 2.33341 7.16667 2.33341H8.83333C9.05435 2.33341 9.26631 2.42121 9.42259 2.57749C9.57887 2.73377 9.66667 2.94573 9.66667 3.16675V4.00008H6.33333V3.16675ZM12.1667 14.8334C12.1667 15.0544 12.0789 15.2664 11.9226 15.4227C11.7663 15.579 11.5543 15.6667 11.3333 15.6667H4.66667C4.44565 15.6667 4.23369 15.579 4.07741 15.4227C3.92113 15.2664 3.83333 15.0544 3.83333 14.8334V5.66675H12.1667V14.8334ZM9.66667 14.0001C9.88768 14.0001 10.0996 13.9123 10.2559 13.756C10.4122 13.5997 10.5 13.3878 10.5 13.1667V8.16675C10.5 7.94573 10.4122 7.73377 10.2559 7.57749C10.0996 7.42121 9.88768 7.33342 9.66667 7.33342C9.44565 7.33342 9.23369 7.42121 9.07741 7.57749C8.92113 7.73377 8.83333 7.94573 8.83333 8.16675V13.1667C8.83333 13.3878 8.92113 13.5997 9.07741 13.756C9.23369 13.9123 9.44565 14.0001 9.66667 14.0001Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgToolbarTrash);\nexport default __webpack_public_path__ + \"static/media/toolbar-trash.1231c38a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgImageFile({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 37,\n height: 37,\n viewBox: \"0 0 37 37\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.4583 21.2083C29.0053 21.2083 28.5707 21.3883 28.2504 21.7086C27.93 22.029 27.75 22.4635 27.75 22.9166V23.5658L25.2217 21.0374C24.3289 20.1518 23.1223 19.6548 21.8648 19.6548C20.6072 19.6548 19.4007 20.1518 18.5079 21.0374L17.3121 22.2333L13.0754 17.9966C12.1702 17.1349 10.9683 16.6543 9.71855 16.6543C8.46879 16.6543 7.26689 17.1349 6.36167 17.9966L3.83334 20.5249V10.9583C3.83334 10.5052 4.01332 10.0707 4.3337 9.7503C4.65407 9.42993 5.08859 9.24994 5.54167 9.24994H17.5C17.9531 9.24994 18.3876 9.06996 18.708 8.74958C19.0284 8.42921 19.2083 7.99469 19.2083 7.54161C19.2083 7.08853 19.0284 6.65401 18.708 6.33364C18.3876 6.01326 17.9531 5.83328 17.5 5.83328H5.54167C4.18244 5.83328 2.87887 6.37323 1.91775 7.33436C0.956626 8.29548 0.416672 9.59904 0.416672 10.9583V31.4583C0.416672 32.8175 0.956626 34.1211 1.91775 35.0822C2.87887 36.0433 4.18244 36.5833 5.54167 36.5833H26.0417C27.4009 36.5833 28.7045 36.0433 29.6656 35.0822C30.6267 34.1211 31.1667 32.8175 31.1667 31.4583V22.9166C31.1667 22.4635 30.9867 22.029 30.6663 21.7086C30.3459 21.3883 29.9114 21.2083 29.4583 21.2083ZM5.54167 33.1666C5.08859 33.1666 4.65407 32.9866 4.3337 32.6663C4.01332 32.3459 3.83334 31.9114 3.83334 31.4583V25.3595L8.78751 20.4054C9.03848 20.1662 9.37187 20.0328 9.71855 20.0328C10.0652 20.0328 10.3986 20.1662 10.6496 20.4054L16.065 25.8208L23.4108 33.1666H5.54167ZM27.75 31.4583C27.7475 31.7853 27.6397 32.1028 27.4425 32.3637L19.7379 24.6249L20.9338 23.4291C21.0562 23.3041 21.2024 23.2048 21.3638 23.137C21.5251 23.0692 21.6983 23.0343 21.8733 23.0343C22.0483 23.0343 22.2216 23.0692 22.3829 23.137C22.5443 23.2048 22.6904 23.3041 22.8129 23.4291L27.75 28.4004V31.4583ZM35.7963 6.32869L30.6713 1.20369C30.5088 1.04817 30.3172 0.926252 30.1075 0.844945C29.6916 0.674081 29.2251 0.674081 28.8092 0.844945C28.5995 0.926252 28.4079 1.04817 28.2454 1.20369L23.1204 6.32869C22.7987 6.65038 22.618 7.08668 22.618 7.54161C22.618 7.99654 22.7987 8.43284 23.1204 8.75453C23.4421 9.07621 23.8784 9.25693 24.3333 9.25693C24.7883 9.25693 25.2246 9.07621 25.5463 8.75453L27.75 6.53369V16.0833C27.75 16.5364 27.93 16.9709 28.2504 17.2913C28.5707 17.6116 29.0053 17.7916 29.4583 17.7916C29.9114 17.7916 30.3459 17.6116 30.6663 17.2913C30.9867 16.9709 31.1667 16.5364 31.1667 16.0833V6.53369L33.3704 8.75453C33.5292 8.91465 33.7182 9.04174 33.9263 9.12847C34.1345 9.2152 34.3578 9.25985 34.5833 9.25985C34.8089 9.25985 35.0321 9.2152 35.2403 9.12847C35.4485 9.04174 35.6374 8.91465 35.7963 8.75453C35.9564 8.59572 36.0835 8.40677 36.1702 8.1986C36.2569 7.99042 36.3016 7.76713 36.3016 7.54161C36.3016 7.31609 36.2569 7.0928 36.1702 6.88463C36.0835 6.67645 35.9564 6.48751 35.7963 6.32869Z\",\n fill: \"white\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgImageFile);\nexport default __webpack_public_path__ + \"static/media/image-file.97857eb3.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgCalendar({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.8333 2.33366H13.1667V1.50033C13.1667 1.27931 13.0789 1.06735 12.9226 0.91107C12.7663 0.75479 12.5543 0.666992 12.3333 0.666992C12.1123 0.666992 11.9004 0.75479 11.7441 0.91107C11.5878 1.06735 11.5 1.27931 11.5 1.50033V2.33366H6.5V1.50033C6.5 1.27931 6.4122 1.06735 6.25592 0.91107C6.09964 0.75479 5.88768 0.666992 5.66667 0.666992C5.44565 0.666992 5.23369 0.75479 5.07741 0.91107C4.92113 1.06735 4.83333 1.27931 4.83333 1.50033V2.33366H3.16667C2.50363 2.33366 1.86774 2.59705 1.3989 3.06589C0.930059 3.53473 0.666667 4.17062 0.666667 4.83366V14.8337C0.666667 15.4967 0.930059 16.1326 1.3989 16.6014C1.86774 17.0703 2.50363 17.3337 3.16667 17.3337H14.8333C15.4964 17.3337 16.1323 17.0703 16.6011 16.6014C17.0699 16.1326 17.3333 15.4967 17.3333 14.8337V4.83366C17.3333 4.17062 17.0699 3.53473 16.6011 3.06589C16.1323 2.59705 15.4964 2.33366 14.8333 2.33366ZM15.6667 14.8337C15.6667 15.0547 15.5789 15.2666 15.4226 15.4229C15.2663 15.5792 15.0543 15.667 14.8333 15.667H3.16667C2.94565 15.667 2.73369 15.5792 2.57741 15.4229C2.42113 15.2666 2.33333 15.0547 2.33333 14.8337V9.00033H15.6667V14.8337ZM15.6667 7.33366H2.33333V4.83366C2.33333 4.61265 2.42113 4.40068 2.57741 4.2444C2.73369 4.08812 2.94565 4.00033 3.16667 4.00033H4.83333V4.83366C4.83333 5.05467 4.92113 5.26663 5.07741 5.42291C5.23369 5.5792 5.44565 5.66699 5.66667 5.66699C5.88768 5.66699 6.09964 5.5792 6.25592 5.42291C6.4122 5.26663 6.5 5.05467 6.5 4.83366V4.00033H11.5V4.83366C11.5 5.05467 11.5878 5.26663 11.7441 5.42291C11.9004 5.5792 12.1123 5.66699 12.3333 5.66699C12.5543 5.66699 12.7663 5.5792 12.9226 5.42291C13.0789 5.26663 13.1667 5.05467 13.1667 4.83366V4.00033H14.8333C15.0543 4.00033 15.2663 4.08812 15.4226 4.2444C15.5789 4.40068 15.6667 4.61265 15.6667 4.83366V7.33366Z\",\n fill: \"white\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgCalendar);\nexport default __webpack_public_path__ + \"static/media/calendar.b706a5bf.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgUpload({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 20C4.47717 20 0 15.5228 0 10C0 4.47717 4.47717 0 10 0C15.5228 0 20 4.47717 20 10C20 15.5228 15.5228 20 10 20ZM10 2.17392C5.67718 2.17392 2.17392 5.67827 2.17392 10C2.17392 14.3218 5.67718 17.8261 10 17.8261C14.3228 17.8261 17.8261 14.3218 17.8261 10C17.8261 5.67827 14.3228 2.17392 10 2.17392ZM11.9565 14.1848H8.04347V9.73913H5.59783L10 5.59783L14.4022 9.73913H11.9565V14.1848Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgUpload);\nexport default __webpack_public_path__ + \"static/media/upload.9f3f778f.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgRtk({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 10,\n viewBox: \"0 0 26 10\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.932528 10V0.545454H4.47798C5.20431 0.545454 5.81368 0.671638 6.30611 0.924005C6.80161 1.17637 7.17554 1.5303 7.42791 1.98579C7.68336 2.43821 7.81108 2.96603 7.81108 3.56925C7.81108 4.17554 7.68182 4.70182 7.4233 5.14808C7.16785 5.59126 6.79084 5.93442 6.29226 6.17756C5.79368 6.41761 5.18123 6.53764 4.4549 6.53764H1.92969V5.11577H4.22408C4.64879 5.11577 4.99657 5.05729 5.2674 4.94034C5.53823 4.82031 5.73828 4.64642 5.86754 4.41868C5.99988 4.18785 6.06605 3.90471 6.06605 3.56925C6.06605 3.23378 5.99988 2.94756 5.86754 2.71058C5.7352 2.47053 5.53362 2.28894 5.26278 2.16584C4.99195 2.03965 4.64264 1.97656 4.21484 1.97656H2.64524V10H0.932528ZM5.81676 5.71591L8.15732 10H6.24609L3.94709 5.71591H5.81676ZM8.97212 1.98118V0.545454H16.5154V1.98118H13.5932V10H11.8944V1.98118H8.97212ZM17.9696 10V0.545454H19.6824V4.88956H19.7978L23.4863 0.545454H25.5776L21.9213 4.788L25.6099 10H23.551L20.7303 5.94673L19.6824 7.18395V10H17.9696Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgRtk);\nexport default __webpack_public_path__ + \"static/media/rtk.58cd8ca9.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWater({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 12,\n viewBox: \"0 0 18 12\",\n color: \"white\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.5656 9.99683C16.8937 9.92183 16.25 9.6687 15.7563 9.2812C15.3156 8.93433 14.6875 8.92808 14.25 9.2812C13.0656 10.2312 10.9 10.2312 9.69687 9.23433C9.275 8.88433 8.66563 8.94995 8.2375 9.29058C7.05 10.2312 4.89687 10.2281 3.7 9.23745C3.27813 8.88745 2.65938 8.95933 2.22813 9.29995C1.74375 9.6812 1.10313 9.92808 0.425 9.99995C0.178125 10.025 0 10.2437 0 10.4906V11.4968C0 11.7812 0.2375 12.0218 0.521875 11.9968C1.42188 11.9187 2.275 11.6406 3.00312 11.1875C4.76875 12.2687 7.28438 12.2531 9.00313 11.1875C10.7688 12.2687 13.2844 12.2531 15.0031 11.1875C15.7312 11.6312 16.5938 11.9156 17.475 11.9937C17.7594 12.0187 17.9969 11.7781 17.9969 11.4937V10.5062C18 10.2562 17.8187 10.025 17.5656 9.99683ZM17.5656 5.49683C16.8937 5.42183 16.25 5.1687 15.7563 4.7812C15.3156 4.43433 14.6875 4.42808 14.25 4.7812C13.0656 5.7312 10.9 5.7312 9.69687 4.73433C9.275 4.38433 8.66563 4.44995 8.2375 4.79058C7.05 5.7312 4.89687 5.72808 3.7 4.73745C3.27813 4.38745 2.65938 4.45933 2.22813 4.79995C1.74375 5.1812 1.10313 5.42808 0.425 5.49995C0.178125 5.52495 0 5.7437 0 5.99058V6.99683C0 7.2812 0.2375 7.52183 0.521875 7.49683C1.42188 7.4187 2.275 7.14058 3.00312 6.68745C4.76875 7.7687 7.28438 7.75308 9.00313 6.68745C10.7688 7.7687 13.2844 7.75308 15.0031 6.68745C15.7312 7.1312 16.5938 7.41558 17.475 7.4937C17.7594 7.5187 17.9969 7.27808 17.9969 6.9937V6.0062C18 5.7562 17.8187 5.52495 17.5656 5.49683ZM17.5656 0.996829C16.8937 0.918704 16.25 0.668704 15.7563 0.281204C15.3156 -0.0656714 14.6875 -0.0719214 14.25 0.281204C13.0656 1.2312 10.9 1.2312 9.69687 0.234329C9.275 -0.115671 8.66563 -0.0500463 8.2375 0.290579C7.05 1.2312 4.89687 1.22808 3.7 0.237454C3.27813 -0.112546 2.65938 -0.0406715 2.22813 0.299954C1.74375 0.681203 1.10313 0.928079 0.425 0.999954C0.178125 1.02495 0 1.2437 0 1.49058V2.49683C0 2.7812 0.2375 3.02183 0.521875 2.99683C1.42188 2.9187 2.275 2.64058 3.00312 2.18745C4.76875 3.2687 7.28438 3.25308 9.00313 2.18745C10.7688 3.2687 13.2844 3.25308 15.0031 2.18745C15.7312 2.6312 16.5938 2.91558 17.475 2.9937C17.7594 3.0187 17.9969 2.77808 17.9969 2.4937V1.5062C18 1.2562 17.8187 1.02495 17.5656 0.996829Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWater);\nexport default __webpack_public_path__ + \"static/media/water.4f2f890a.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgWeeds({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 20,\n viewBox: \"0 0 24 20\",\n color: \"white\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.6316 0.0604412C17.4434 0.139684 16.2052 1.41748 15.5465 2.20001C14.1796 3.8344 13.1989 5.32516 12.3025 7.14775C11.728 8.32649 11.4209 9.0694 11.0346 10.2531C10.7771 11.0406 10.6731 11.2733 10.6731 11.0653C10.6731 10.9217 10.158 9.45075 9.87073 8.78709C9.22192 7.25176 8.45921 6.00863 7.42409 4.7655C6.93873 4.18604 6.10668 3.36389 5.84914 3.2054C5.41825 2.94291 4.82888 3.25988 4.82888 3.75515C4.82888 3.84925 4.9626 4.39405 5.12604 4.96856C5.80456 7.331 6.27507 9.44085 6.73567 12.15C6.75548 12.2738 6.73072 12.254 6.59699 12.0311C5.70056 10.5255 4.05131 8.4404 3.66004 8.31163C3.22916 8.16801 2.74875 8.50479 2.74875 8.94558C2.74875 9.02482 2.8478 9.37151 2.96667 9.71325C3.92749 12.4075 4.52181 15.2454 4.75954 18.2071L4.78926 18.6132H2.6695C0.742905 18.6132 0.529939 18.6232 0.376405 18.7024C0.118865 18.8312 0 19.0243 0 19.3066C0 19.5889 0.118865 19.7821 0.376405 19.9109C0.534891 19.995 1.17874 20 11.7131 20C22.2475 20 22.8914 19.995 23.0499 19.9109C23.3074 19.7821 23.4263 19.5889 23.4263 19.3066C23.4263 19.0243 23.3074 18.8312 23.0499 18.7024C22.8963 18.6232 22.6635 18.6132 20.415 18.6132H17.9486L17.9783 18.3012C18.1219 16.8947 18.2903 15.8695 18.5726 14.7254C18.9738 13.091 19.6622 11.209 20.4249 9.65382C20.7023 9.08426 20.7369 8.87624 20.5785 8.62365C20.4051 8.34135 20.0535 8.19772 19.7811 8.30668C19.474 8.42059 17.9189 9.84697 17.0472 10.8127C16.5569 11.3575 15.8486 12.2639 15.5317 12.7542C15.4376 12.8978 15.3534 13.0068 15.3435 13.0018C15.3137 12.9721 15.6208 11.3526 15.8536 10.2927C16.4281 7.70245 17.3344 4.51291 18.32 1.64035C18.4736 1.19956 18.5974 0.758771 18.5974 0.659717C18.5974 0.174353 18.0873 -0.137667 17.6316 0.0604412ZM15.9229 4.60206C14.4074 9.634 13.5753 14.0518 13.4614 17.6326L13.4317 18.6132H12.2233H11.0098L11.0445 18.0536C11.1733 15.7555 11.3863 14.2152 11.8171 12.4719C12.4659 9.86183 13.5357 7.40034 14.9423 5.3004C15.3484 4.68626 16.1854 3.55705 16.2102 3.58181C16.2201 3.58676 16.0913 4.04736 15.9229 4.60206ZM7.3399 6.95955C8.12242 8.17791 8.61274 9.19321 9.09811 10.6394C9.39032 11.5111 9.7271 12.8533 9.88558 13.7646L9.9995 14.4381L9.89054 15.3494C9.76177 16.4142 9.68252 17.3949 9.68252 17.8902C9.68252 18.0833 9.66767 18.326 9.65281 18.43L9.61814 18.6132H9.13278H8.65236L8.62265 18.3012C8.60779 18.1328 8.58303 17.5237 8.57312 16.9541C8.50378 14.2796 8.03823 10.996 7.22599 7.54397C7.10712 7.02393 6.99321 6.56333 6.97835 6.51381C6.92387 6.34046 7.00311 6.43952 7.3399 6.95955ZM17.8297 12.3481C17.2057 14.1657 16.8144 16.0676 16.5866 18.3508L16.5618 18.6132H15.6951H14.8333L14.863 18.3755C15.1305 16.1121 15.9923 14.2202 17.6762 12.1896C17.8396 11.9915 17.9783 11.838 17.9832 11.8429C17.9932 11.8479 17.9189 12.0757 17.8297 12.3481ZM5.73522 13.3535C6.49794 14.8343 6.93873 16.236 7.13189 17.7713C7.2458 18.7073 7.29532 18.6132 6.68614 18.6132C6.30478 18.6132 6.16611 18.5984 6.16611 18.5489C6.16611 18.326 5.99772 16.6767 5.91352 16.0378C5.79961 15.1662 5.57674 13.9329 5.39349 13.1752C5.3291 12.8929 5.27462 12.6353 5.27462 12.6056C5.27958 12.5016 5.40339 12.7047 5.73522 13.3535Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgWeeds);\nexport default __webpack_public_path__ + \"static/media/weeds.1c5d16e4.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgInformation({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_5951_2228)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.99999 18.3337C14.6024 18.3337 18.3333 14.6027 18.3333 10.0003C18.3333 5.39795 14.6024 1.66699 9.99999 1.66699C5.39762 1.66699 1.66666 5.39795 1.66666 10.0003C1.66666 14.6027 5.39762 18.3337 9.99999 18.3337Z\",\n stroke: \"#999898\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 13.3333V10\",\n stroke: \"#999898\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 6.66699H10.0083\",\n stroke: \"#999898\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_5951_2228\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 20,\n height: 20,\n fill: \"white\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgInformation);\nexport default __webpack_public_path__ + \"static/media/information.a72e575c.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgDam({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5866 12.6666C18.5866 12.8434 18.5164 13.013 18.3914 13.138C18.2664 13.263 18.0968 13.3333 17.92 13.3333C17.5746 13.3625 17.2542 13.5251 17.0266 13.7866C16.6648 14.1716 16.2032 14.4485 15.6933 14.5866C15.292 14.7058 14.8673 14.7231 14.4575 14.6369C14.0478 14.5508 13.666 14.364 13.3466 14.0933L12.8266 13.6266C12.7323 13.5303 12.6199 13.4535 12.4958 13.4006C12.3718 13.3478 12.2385 13.3199 12.1037 13.3185C11.9689 13.3171 11.8351 13.3423 11.71 13.3927C11.5849 13.443 11.4709 13.5175 11.3746 13.6119L11.36 13.6266C11.1733 13.7866 11 13.9599 10.8 14.1199C10.33 14.4935 9.74309 14.689 9.14294 14.6719C8.5428 14.6549 7.96798 14.4263 7.51998 14.0266L7.06665 13.5866L6.93331 13.5066L7.33331 15.1333L7.98665 17.7999C8.01853 17.9012 8.02577 18.0086 8.00776 18.1132C7.98976 18.2179 7.94702 18.3167 7.88311 18.4015C7.8192 18.4862 7.73597 18.5545 7.64034 18.6006C7.54471 18.6468 7.43945 18.6694 7.33331 18.6666H1.99998C1.82317 18.6666 1.6536 18.5964 1.52858 18.4713C1.40355 18.3463 1.33331 18.1767 1.33331 17.9999V1.99993C1.33331 1.82311 1.40355 1.65355 1.52858 1.52852C1.6536 1.4035 1.82317 1.33326 1.99998 1.33326H3.46665C3.61848 1.33258 3.76601 1.38375 3.88481 1.4783C4.00361 1.57286 4.08658 1.70514 4.11998 1.85326L5.33331 6.74659V6.93326C5.76238 6.72814 6.24094 6.64931 6.71312 6.70597C7.18531 6.76263 7.63163 6.95245 7.99998 7.25326C8.21331 7.42659 8.41331 7.62659 8.62665 7.79993C8.80999 7.96391 9.04734 8.05457 9.29331 8.05457C9.53929 8.05457 9.77664 7.96391 9.95998 7.79993C10.1733 7.62659 10.3733 7.42659 10.5866 7.25326C11.0436 6.86783 11.6222 6.65642 12.22 6.65642C12.8178 6.65642 13.3963 6.86783 13.8533 7.25326C14.0533 7.42659 14.24 7.61326 14.44 7.77326C14.6233 7.93724 14.8607 8.0279 15.1066 8.0279C15.3526 8.0279 15.59 7.93724 15.7733 7.77326L16.4 7.22659C16.8218 6.87036 17.3546 6.67233 17.9066 6.66659C18.0835 6.66659 18.253 6.73683 18.3781 6.86185C18.5031 6.98688 18.5733 7.15645 18.5733 7.33326C18.5733 7.51007 18.5031 7.67964 18.3781 7.80466C18.253 7.92969 18.0835 7.99993 17.9066 7.99993C17.5613 8.02917 17.2408 8.19178 17.0133 8.45326C16.6515 8.83822 16.1899 9.11517 15.68 9.25326C15.2786 9.37244 14.8539 9.38974 14.4442 9.30361C14.0345 9.21747 13.6527 9.03062 13.3333 8.75993L12.8933 8.30659C12.7989 8.21028 12.6865 8.1335 12.5625 8.08063C12.4384 8.02777 12.3052 7.99986 12.1704 7.9985C12.0355 7.99713 11.9017 8.02235 11.7766 8.07269C11.6516 8.12304 11.5376 8.19754 11.4413 8.29193L11.4266 8.30659C11.24 8.46659 11.0666 8.63993 10.8666 8.79993C10.3966 9.1735 9.80976 9.36901 9.20961 9.35193C8.60947 9.33486 8.03465 9.10629 7.58665 8.70659L7.06665 8.25326C6.88331 8.08927 6.64596 7.99861 6.39998 7.99861C6.154 7.99861 5.91665 8.08927 5.73331 8.25326L5.65331 8.31993L6.57331 11.9999C7.09678 12.0386 7.5953 12.239 7.99998 12.5733C8.21331 12.7466 8.41331 12.9466 8.62665 13.1199C8.80999 13.2839 9.04734 13.3746 9.29331 13.3746C9.53929 13.3746 9.77664 13.2839 9.95998 13.1199C10.1733 12.9466 10.3733 12.7466 10.5866 12.5733C11.0436 12.1878 11.6222 11.9764 12.22 11.9764C12.8178 11.9764 13.3963 12.1878 13.8533 12.5733C14.0533 12.7466 14.24 12.9333 14.44 13.0933C14.6233 13.2572 14.8607 13.3479 15.1066 13.3479C15.3526 13.3479 15.59 13.2572 15.7733 13.0933L16.4 12.5466C16.8236 12.1952 17.3562 12.0019 17.9066 11.9999C17.9953 11.9982 18.0834 12.0141 18.1659 12.0468C18.2483 12.0795 18.3234 12.1283 18.3867 12.1904C18.45 12.2525 18.5003 12.3266 18.5347 12.4084C18.569 12.4901 18.5867 12.5779 18.5866 12.6666Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDam);\nexport default __webpack_public_path__ + \"static/media/dam.6ab897c8.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgShareArrow({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.8153 0.194146C15.7252 0.1046 15.6114 0.042601 15.4872 0.0154398C15.3631 -0.0117214 15.2337 -0.00291591 15.1144 0.0408209L0.430735 5.37388C0.3041 5.42185 0.195075 5.50717 0.118139 5.6185C0.0412041 5.72983 0 5.86191 0 5.99718C0 6.13246 0.0412041 6.26453 0.118139 6.37586C0.195075 6.48719 0.3041 6.57251 0.430735 6.62048L6.83817 9.18035L9.40114 15.58C9.4493 15.7009 9.53184 15.8052 9.63858 15.8798C9.74532 15.9544 9.8716 15.9962 10.0018 16C10.1367 15.9972 10.2676 15.9537 10.3772 15.8752C10.4868 15.7966 10.57 15.6868 10.6159 15.56L15.9554 0.894111C16.0009 0.776167 16.0119 0.647743 15.987 0.523812C15.9622 0.39988 15.9026 0.285548 15.8153 0.194146ZM10.0018 13.4668L8.13968 8.80037L11.3367 5.6072L10.3956 4.66725L7.17189 7.88708L2.5265 6.00051L14.2267 1.78073L10.0018 13.4668Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgShareArrow);\nexport default __webpack_public_path__ + \"static/media/share-arrow.0bb7440d.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgSatellite({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 15,\n height: 16,\n viewBox: \"0 0 15 16\",\n fill: \"none\",\n color: \"white\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.66666 15.1203V14.4537C10.9667 14.4537 12.0673 14.0032 12.9687 13.1023C13.87 12.201 14.3207 11.1003 14.3207 9.80033H14.9873C14.9873 10.5394 14.8482 11.2323 14.57 11.879C14.2918 12.5257 13.9131 13.0885 13.434 13.5677C12.9549 14.0468 12.392 14.4254 11.7453 14.7037C11.0987 14.9819 10.4058 15.1203 9.66666 15.1203ZM9.66666 12.865V12.1983C10.3333 12.1983 10.8995 11.9654 11.3653 11.4997C11.8311 11.0339 12.064 10.4677 12.064 9.80099H12.7307C12.7307 10.6463 12.4313 11.3683 11.8327 11.967C11.234 12.5657 10.512 12.865 9.66666 12.865ZM8.29866 10.541L6.61799 8.86366L5.67666 9.80499L7.36999 11.4817L4.08466 14.7677L0.291992 10.979L3.58199 7.69299L5.25866 9.38633L6.19999 8.44633L4.52332 6.75633L6.62533 4.65366L8.30266 6.33366L9.24333 5.39233L7.56666 3.69899L10.8487 0.416992L14.6373 4.20566L11.3553 7.48766L9.66199 5.81033L8.72066 6.75166L10.41 8.42833L8.29866 10.541ZM1.24333 10.9957L4.08466 13.837L5.04133 12.8803L2.19999 10.039L1.24333 10.9957ZM5.46333 12.4457L6.41933 11.4897L3.57799 8.64833L2.62199 9.60499L5.46333 12.4457ZM8.50132 3.69966L11.342 6.54099L12.2987 5.58433L9.45799 2.74299L8.50132 3.69966ZM12.7333 5.16166L13.69 4.20566L10.8487 1.36433L9.89199 2.32099L12.7333 5.16166Z\",\n fill: \"currentColor\"\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgSatellite);\nexport default __webpack_public_path__ + \"static/media/satellite.9ae83501.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgEmergence({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 30,\n viewBox: \"0 0 17 30\",\n color: \"white\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.8506 10.3762L7.96345 9.81251C8.04306 9.41454 8.1101 8.39922 8.1101 7.55777C8.1101 5.88325 8.50501 4.47017 9.29522 3.33511C10.0856 2.19991 11.265 1.35206 12.818 0.797176C13.3157 0.619369 14.0796 0.468618 14.5248 0.462522L7.8506 10.3762ZM7.8506 10.3762L6.90133 9.65149C6.21958 9.1311 5.72025 8.81945 5.10441 8.6417C4.49213 8.46499 3.77307 8.42322 2.6577 8.42322C2.09741 8.42322 1.65489 8.43695 1.31634 8.48125C0.981515 8.5251 0.727657 8.60102 0.563037 8.74191C0.388388 8.89133 0.332785 9.09614 0.353101 9.3437C0.372931 9.58531 0.465775 9.88335 0.603872 10.245C1.30587 12.0829 2.33153 13.4396 3.57686 14.2321C4.82454 15.026 6.2838 15.2476 7.83583 14.8295C7.99195 14.7875 8.10387 14.7633 8.19191 14.7595C8.27551 14.7559 8.3302 14.7712 8.37745 14.8039C8.42885 14.8395 8.48274 14.9036 8.54781 15.0202C8.61254 15.1363 8.68247 15.2934 8.77097 15.5051C8.96931 15.9798 9.09964 16.661 9.14366 17.3369C9.18774 18.0139 9.14395 18.6674 9.00618 19.0884C8.90268 19.4046 8.72666 19.5941 8.52583 19.6699C8.32564 19.7456 8.07474 19.7181 7.80001 19.5464C7.6222 19.4354 7.43626 19.3884 7.24489 19.4185C7.05583 19.4482 6.87531 19.5511 6.70178 19.7133C6.35753 20.0348 6.01351 20.6154 5.65284 21.4486C5.10518 22.7132 4.98141 24.2229 5.21014 25.581C5.43844 26.9366 6.02176 28.1612 6.91005 28.8381C7.48449 29.2758 8.37231 29.5072 9.23885 29.5355C10.1042 29.5638 10.9803 29.3907 11.5276 28.9857C12.6335 28.1672 13.2818 26.6969 13.44 25.109C13.5984 23.5192 13.2682 21.7905 12.392 20.4386C12.0816 19.9595 11.8168 19.6492 11.5347 19.5187C11.2347 19.3801 10.9428 19.4544 10.6186 19.6568C10.4744 19.7468 10.3597 19.794 10.2763 19.8098C10.1914 19.826 10.1608 19.8067 10.1518 19.7978C10.1415 19.7875 10.121 19.7532 10.1338 19.6621C10.1462 19.5736 10.1879 19.4523 10.2696 19.2997C10.492 18.884 10.5688 18.2274 10.5259 17.4895C10.4828 16.7467 10.3174 15.903 10.0382 15.1004C9.68735 14.0911 9.43691 13.159 9.29505 12.3548C9.15283 11.5488 9.12105 10.8785 9.20199 10.3894C9.27347 9.95795 9.31726 9.7937 9.48306 9.67791C9.57203 9.61583 9.70333 9.56339 9.91241 9.50887C10.1204 9.45464 10.3937 9.4011 10.7606 9.33141C11.6559 9.16139 12.702 8.75235 13.2935 8.33674C15.0732 7.08614 15.9954 4.37027 15.5917 1.6773C15.5516 1.4103 15.5178 1.20049 15.4776 1.03862C15.4378 0.877992 15.3884 0.749638 15.3083 0.655605C15.224 0.55662 15.1163 0.50758 14.9869 0.48382C14.8625 0.460981 14.7089 0.45997 14.5248 0.462522L7.8506 10.3762ZM5.1126 10.1302C5.61102 10.3519 5.9553 10.5504 6.26706 10.8261C6.5801 11.103 6.86568 11.4624 7.24016 12.0142C7.45224 12.3269 7.60558 12.5757 7.70187 12.7761C7.79954 12.9794 7.83041 13.1167 7.81881 13.2119C7.80866 13.2953 7.7636 13.3631 7.65197 13.4258C7.53456 13.4917 7.35526 13.5444 7.10049 13.5922C5.17168 13.9542 3.23082 12.8381 2.31696 10.8113C2.21982 10.5959 2.14733 10.4261 2.09742 10.2892C2.04717 10.1513 2.02236 10.0534 2.01631 9.98027C2.01051 9.91029 2.02224 9.86818 2.04195 9.83564C2.0636 9.79981 2.10219 9.76335 2.17217 9.71777C2.24878 9.66793 2.39965 9.631 2.62043 9.62016C2.83561 9.6096 3.09904 9.62437 3.38471 9.66216C3.95656 9.73785 4.60416 9.90389 5.1126 10.1302ZM9.65978 22.2995C9.53551 22.6722 9.44337 22.9482 9.36953 23.1413C9.3326 23.238 9.30145 23.3106 9.27445 23.3628C9.26608 23.3789 9.25864 23.392 9.25218 23.4026C9.24976 23.3986 9.24728 23.3943 9.24462 23.3895C9.19668 23.3038 9.13985 23.1562 9.0581 22.9417C8.78631 22.2284 8.65212 21.7434 8.64076 21.428C8.6351 21.2716 8.66043 21.1709 8.70122 21.1064C8.73958 21.0457 8.80033 21.0033 8.89933 20.981C9.00803 20.9565 9.15474 20.9528 9.30399 20.97C9.45335 20.9872 9.5943 21.024 9.69278 21.0722C9.78883 21.1193 9.84289 21.1528 9.87526 21.1879C9.90156 21.2165 9.9187 21.2517 9.91997 21.3201C9.92141 21.3946 9.90364 21.501 9.85974 21.6631C9.8163 21.8236 9.74989 22.0293 9.65978 22.2995ZM8.66706 28.1862C7.23445 27.7136 6.36508 26.2536 6.39237 24.2628C6.40056 23.6748 6.52362 23.0011 6.68683 22.4829C6.76858 22.2234 6.85858 22.0088 6.94576 21.8652C6.98966 21.7929 7.02918 21.7447 7.06178 21.7172C7.07256 21.7081 7.0811 21.7025 7.08756 21.699C7.0987 21.7135 7.11306 21.7347 7.13049 21.764C7.1733 21.8359 7.22672 21.9423 7.28868 22.0793C7.41226 22.3523 7.56485 22.7356 7.72858 23.1813C8.05599 24.0721 8.42516 25.2045 8.69199 26.186C8.71783 26.2811 8.74685 26.3651 8.7862 26.4306C8.82733 26.499 8.88462 26.555 8.96741 26.5781C9.04535 26.5998 9.12728 26.5867 9.2073 26.5606C9.2883 26.5343 9.38135 26.49 9.48814 26.4328C9.64414 26.3493 9.78393 26.2239 9.88535 26.0887C9.98487 25.9559 10.0578 25.7996 10.0578 25.6526C10.0578 25.5812 10.0757 25.4584 10.1117 25.2908C10.1471 25.1258 10.1982 24.9253 10.2606 24.7025C10.3852 24.2569 10.5537 23.7263 10.7284 23.2199C10.9032 22.7133 11.0834 22.2331 11.2314 21.8881C11.3057 21.7148 11.3704 21.5793 11.4209 21.492C11.4242 21.4864 11.4273 21.4811 11.4304 21.476C11.4352 21.4835 11.4403 21.4916 11.4456 21.5002C11.4858 21.565 11.5342 21.6541 11.5877 21.762C11.6945 21.9774 11.8182 22.2611 11.9325 22.5604C12.4904 24.0214 12.2526 25.6299 11.5781 26.7727C10.9023 27.9177 9.81289 28.5644 8.66706 28.1862ZM14.265 2.22883C14.3553 3.93437 14.0518 5.30598 13.4142 6.2841C12.7789 7.25847 11.8054 7.8531 10.5282 7.99716C10.2134 8.0327 9.97928 8.0342 9.80851 7.99491C9.64408 7.957 9.54508 7.88333 9.48439 7.76524C9.41943 7.63883 9.39076 7.44712 9.40697 7.15895C9.42306 6.87308 9.4822 6.50726 9.5786 6.04283C9.77095 5.11678 10.1011 4.46263 10.7249 3.77068C11.3958 3.02656 12.3034 2.42961 13.0452 2.13803C13.4182 1.99138 13.7356 1.92748 13.9546 1.95006C14.0627 1.96121 14.1368 1.99238 14.1839 2.03461C14.2285 2.07467 14.26 2.13451 14.265 2.22883Z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.8506 10.3762L7.96345 9.81251C8.04306 9.41454 8.1101 8.39922 8.1101 7.55777C8.1101 5.88325 8.50501 4.47017 9.29522 3.33511C10.0856 2.19991 11.265 1.35206 12.818 0.797176C13.3157 0.619369 14.0796 0.468618 14.5248 0.462522M7.8506 10.3762L14.5248 0.462522M7.8506 10.3762L6.90133 9.65149C6.21958 9.1311 5.72025 8.81945 5.10441 8.6417C4.49213 8.46499 3.77307 8.42322 2.6577 8.42322C2.09741 8.42322 1.65489 8.43695 1.31634 8.48125C0.981515 8.5251 0.727657 8.60102 0.563037 8.74191C0.388388 8.89133 0.332785 9.09614 0.353101 9.3437C0.372931 9.58531 0.465775 9.88335 0.603872 10.245M14.5248 0.462522C14.7089 0.45997 14.8625 0.460981 14.9869 0.48382C15.1163 0.50758 15.224 0.55662 15.3083 0.655605C15.3884 0.749638 15.4378 0.877992 15.4776 1.03862C15.5178 1.20049 15.5516 1.4103 15.5917 1.6773C15.9954 4.37027 15.0732 7.08614 13.2935 8.33674M0.603872 10.245L0.71159 10.2038M0.603872 10.245C1.30587 12.0829 2.33153 13.4396 3.57686 14.2321C4.82454 15.026 6.2838 15.2476 7.83583 14.8295C7.99195 14.7875 8.10387 14.7633 8.19191 14.7595C8.27551 14.7559 8.3302 14.7712 8.37745 14.8039C8.42885 14.8395 8.48274 14.9036 8.54781 15.0202C8.61254 15.1363 8.68247 15.2934 8.77097 15.5051C8.96931 15.9798 9.09964 16.661 9.14366 17.3369C9.18774 18.0139 9.14395 18.6674 9.00618 19.0884C8.90268 19.4046 8.72666 19.5941 8.52583 19.6699C8.32564 19.7456 8.07474 19.7181 7.80001 19.5464C7.6222 19.4354 7.43626 19.3884 7.24489 19.4185C7.05583 19.4482 6.87531 19.5511 6.70178 19.7133C6.35753 20.0348 6.01351 20.6154 5.65284 21.4486C5.10518 22.7132 4.98141 24.2229 5.21014 25.581C5.43844 26.9366 6.02176 28.1612 6.91005 28.8381C7.48449 29.2758 8.37231 29.5072 9.23885 29.5355C10.1042 29.5638 10.9803 29.3907 11.5276 28.9857M11.5276 28.9857L11.459 28.893M11.5276 28.9857C12.6335 28.1672 13.2818 26.6969 13.44 25.109C13.5984 23.5192 13.2682 21.7905 12.392 20.4386C12.0816 19.9595 11.8168 19.6492 11.5347 19.5187C11.2347 19.3801 10.9428 19.4544 10.6186 19.6568C10.4744 19.7468 10.3597 19.794 10.2763 19.8098C10.1914 19.826 10.1608 19.8067 10.1518 19.7978C10.1415 19.7875 10.121 19.7532 10.1338 19.6621C10.1462 19.5736 10.1879 19.4523 10.2696 19.2997C10.492 18.884 10.5688 18.2274 10.5259 17.4895C10.4828 16.7467 10.3174 15.903 10.0382 15.1004C9.68735 14.0911 9.43691 13.159 9.29505 12.3548C9.15283 11.5488 9.12105 10.8785 9.20199 10.3894C9.27347 9.95795 9.31726 9.7937 9.48306 9.67791C9.57203 9.61583 9.70333 9.56339 9.91241 9.50887C10.1204 9.45464 10.3937 9.4011 10.7606 9.33141C11.6559 9.16139 12.702 8.75235 13.2935 8.33674M13.2935 8.33674L13.2272 8.24235M9.65978 22.2995L9.76928 22.3359M9.65978 22.2995C9.53551 22.6722 9.44337 22.9482 9.36953 23.1413C9.3326 23.238 9.30145 23.3106 9.27445 23.3628C9.26608 23.3789 9.25864 23.392 9.25218 23.4026C9.24976 23.3986 9.24728 23.3943 9.24462 23.3895C9.19668 23.3038 9.13985 23.1562 9.0581 22.9417C8.78631 22.2284 8.65212 21.7434 8.64076 21.428C8.6351 21.2716 8.66043 21.1709 8.70122 21.1064C8.73958 21.0457 8.80033 21.0033 8.89933 20.981C9.00803 20.9565 9.15474 20.9528 9.30399 20.97C9.45335 20.9872 9.5943 21.024 9.69278 21.0722C9.78883 21.1193 9.84289 21.1528 9.87526 21.1879C9.90156 21.2165 9.9187 21.2517 9.91997 21.3201C9.92141 21.3946 9.90364 21.501 9.85974 21.6631C9.8163 21.8236 9.74989 22.0293 9.65978 22.2995ZM8.69199 26.186C8.42516 25.2045 8.05599 24.0721 7.72858 23.1813C7.56485 22.7356 7.41226 22.3523 7.28868 22.0793C7.22672 21.9423 7.1733 21.8359 7.13049 21.764C7.11306 21.7347 7.0987 21.7135 7.08756 21.699C7.0811 21.7025 7.07256 21.7081 7.06178 21.7172C7.02918 21.7447 6.98966 21.7929 6.94576 21.8652C6.85858 22.0088 6.76858 22.2234 6.68683 22.4829C6.52362 23.0011 6.40056 23.6748 6.39237 24.2628C6.36508 26.2536 7.23445 27.7136 8.66706 28.1862C9.81289 28.5644 10.9023 27.9177 11.5781 26.7727C12.2526 25.6299 12.4904 24.0214 11.9325 22.5604C11.8182 22.2611 11.6945 21.9774 11.5877 21.762C11.5342 21.6541 11.4858 21.565 11.4456 21.5002C11.4403 21.4916 11.4352 21.4835 11.4304 21.476C11.4273 21.4811 11.4242 21.4864 11.4209 21.492C11.3704 21.5793 11.3057 21.7148 11.2314 21.8881C11.0834 22.2331 10.9032 22.7133 10.7284 23.2199C10.5537 23.7263 10.3852 24.2569 10.2606 24.7025C10.1982 24.9253 10.1471 25.1258 10.1117 25.2908C10.0757 25.4584 10.0578 25.5812 10.0578 25.6526C10.0578 25.7996 9.98487 25.9559 9.88535 26.0887C9.78393 26.2239 9.64414 26.3493 9.48814 26.4328C9.38135 26.49 9.2883 26.5343 9.2073 26.5606C9.12728 26.5867 9.04535 26.5998 8.96741 26.5781C8.88462 26.555 8.82733 26.499 8.7862 26.4306C8.74685 26.3651 8.71783 26.2811 8.69199 26.186ZM8.69199 26.186L8.80333 26.1557M5.1126 10.1302C5.61102 10.3519 5.9553 10.5504 6.26706 10.8261C6.5801 11.103 6.86568 11.4624 7.24016 12.0142C7.45224 12.3269 7.60558 12.5757 7.70187 12.7761C7.79954 12.9794 7.83041 13.1167 7.81881 13.2119C7.80866 13.2953 7.7636 13.3631 7.65197 13.4258C7.53456 13.4917 7.35526 13.5444 7.10049 13.5922C5.17168 13.9542 3.23082 12.8381 2.31696 10.8113C2.21982 10.5959 2.14733 10.4261 2.09742 10.2892C2.04717 10.1513 2.02236 10.0534 2.01631 9.98027C2.01051 9.91029 2.02224 9.86818 2.04195 9.83564C2.0636 9.79981 2.10219 9.76335 2.17217 9.71777C2.24878 9.66793 2.39965 9.631 2.62043 9.62016C2.83561 9.6096 3.09904 9.62437 3.38471 9.66216C3.95656 9.73785 4.60416 9.90389 5.1126 10.1302ZM14.265 2.22883C14.3553 3.93437 14.0518 5.30598 13.4142 6.2841C12.7789 7.25847 11.8054 7.8531 10.5282 7.99716C10.2134 8.0327 9.97928 8.0342 9.80851 7.99491C9.64408 7.957 9.54508 7.88333 9.48439 7.76524C9.41943 7.63883 9.39076 7.44712 9.40697 7.15895C9.42306 6.87308 9.4822 6.50726 9.5786 6.04283C9.77095 5.11678 10.1011 4.46263 10.7249 3.77068C11.3958 3.02656 12.3034 2.42961 13.0452 2.13803C13.4182 1.99138 13.7356 1.92748 13.9546 1.95006C14.0627 1.96121 14.1368 1.99238 14.1839 2.03461C14.2285 2.07467 14.26 2.13451 14.265 2.22883Z\",\n stroke: \"currentColor\",\n strokeWidth: 0.4\n })));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgEmergence);\nexport default __webpack_public_path__ + \"static/media/emergence.33ba6d74.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport * as React from \"react\";\n\nfunction SvgHarvested({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 50,\n height: 32,\n viewBox: \"0 0 50 32\",\n color: \"black\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_958_1285)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M48.9384 25.8645L45.9543 24.7987L42.8593 17.889L42.6545 17.65L41.5287 16.9207L41.2269 16.8315H38.1426V16.1765L42.3184 4.19416H43.5831L44.1382 3.63905V0.555109L43.5831 0H28.411L27.8559 0.555109V1.02589C27.2006 0.391537 26.3089 0 25.327 0H20.6398L20.0847 0.555109V2.27651H5.50436L5.29198 2.31879L4.20165 2.77034L3.95758 2.96725L0 8.68355L0.456446 9.55464H4.08695L4.54883 9.30745L6.44017 6.47069H9.37801C8.74366 7.12599 8.3521 8.01765 8.3521 8.99953V15.424H7.36486L6.80975 15.9791V20.7128L6.93611 21.0653L10.5982 25.5194C10.499 25.9211 10.4454 26.3405 10.4454 26.7723C10.4454 29.6549 12.7905 32 15.673 32C18.2846 32 20.4551 30.075 20.84 27.5694H28.6366C29.302 30.1155 31.6214 32 34.3732 32C37.6422 32 40.3017 29.3405 40.3017 26.0714C40.3017 24.2328 39.4604 22.587 38.1426 21.4988V20.4089H40.0682L43.0156 26.9889V31.4449L43.5707 32H48.7517L49.3068 31.4449V26.3872L48.9384 25.8645ZM28.966 1.11024H43.028V3.08397H28.966V1.11024ZM21.1949 1.11024H25.327C26.7214 1.11024 27.8558 2.24468 27.8558 3.63907V5.36048H25.4266H21.1949V1.11024ZM20.6398 6.47069H25.9817H27.7806V15.424H9.4623V8.99953C9.4623 7.60514 10.5967 6.47069 11.9911 6.47069H20.6398ZM6.14308 5.36048L5.68121 5.60766L3.78989 8.44442H1.51595L4.77746 3.73357L5.61484 3.38675H20.0847V5.36048H11.9911H6.14308ZM15.673 30.8898C13.4027 30.8898 11.5556 29.0427 11.5556 26.7723C11.5556 24.502 13.4027 22.6548 15.673 22.6548C17.9433 22.6548 19.7905 24.502 19.7905 26.7723C19.7905 29.0427 17.9434 30.8898 15.673 30.8898ZM28.4586 26.4592H20.8905C20.7279 23.7219 18.4504 21.5446 15.673 21.5446C13.6737 21.5446 11.9338 22.6733 11.0547 24.3265L7.91997 20.5139V16.5342H37.0324V20.7751C36.232 20.3716 35.3291 20.1429 34.3732 20.1429C31.1041 20.1429 28.4446 22.8024 28.4446 26.0714C28.4446 26.2018 28.4503 26.3308 28.4586 26.4592ZM39.1915 26.0714C39.1915 28.7283 37.03 30.8898 34.3732 30.8898C31.7163 30.8898 29.5548 28.7283 29.5548 26.0714C29.5548 23.4146 31.7163 21.2531 34.3732 21.2531C37.03 21.2531 39.1915 23.4146 39.1915 26.0714ZM37.2292 15.424H28.8908V5.99088L28.9661 5.91559V4.19418H41.1427L37.2292 15.424ZM40.9344 19.6269L40.4278 19.2987H38.1426V17.9418H41.0628L41.9132 18.4926L44.8983 25.1571L43.7682 25.9535L40.9344 19.6269ZM48.1966 30.8898H44.1258V27.0596L45.7598 25.9081L48.1966 26.7785V30.8898Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.6731 24.5469C14.4454 24.5469 13.4467 25.5457 13.4467 26.7733C13.4467 28.001 14.4454 28.9998 15.6731 28.9998C16.9008 28.9998 17.8996 28.001 17.8996 26.7733C17.8996 25.5457 16.9008 24.5469 15.6731 24.5469ZM15.6731 27.8896C15.0576 27.8896 14.5569 27.3889 14.5569 26.7733C14.5569 26.1578 15.0577 25.6571 15.6731 25.6571C16.2886 25.6571 16.7894 26.1578 16.7894 26.7733C16.7894 27.3889 16.2886 27.8896 15.6731 27.8896Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.3733 23.5938C33.0074 23.5938 31.8961 24.705 31.8961 26.0709C31.8961 27.4368 33.0074 28.548 34.3733 28.548C35.7391 28.548 36.8504 27.4368 36.8504 26.0709C36.8504 24.705 35.7391 23.5938 34.3733 23.5938ZM34.3733 27.4378C33.6195 27.4378 33.0063 26.8246 33.0063 26.0709C33.0063 25.3171 33.6195 24.704 34.3733 24.704C35.127 24.704 35.7402 25.3171 35.7402 26.0709C35.7402 26.8246 35.127 27.4378 34.3733 27.4378Z\",\n fill: \"black\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.906 8.65625H11.5333V9.76647H17.906V8.65625Z\",\n fill: \"currentColor\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.906 11.7148H11.5333V12.8251H17.906V11.7148Z\",\n fill: \"currentColor\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_958_1285\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 49.3068,\n height: 32,\n fill: \"white\"\n })))));\n}\n\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgHarvested);\nexport default __webpack_public_path__ + \"static/media/harvested.df4e91b1.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components'\nimport { Tooltip } from 'antd'\n\nimport { TrashIcon } from 'assets/icons'\n\ninterface ButtonProps {\n disabled: boolean\n}\n\nexport const Button = styled.div`\n width: 40px;\n height: 40px;\n background-color: ${({ theme, disabled }) =>\n disabled ? theme.colors.grey2 : theme.colors.grey3};\n color: ${({ theme, disabled }) => (disabled ? theme.colors.grey3 : theme.colors.white)};\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n border: none;\n cursor: ${({ disabled }) => (disabled ? 'unset' : 'pointer')};\n`\n\ninterface Props {\n onClick?: () => void\n disabled: boolean\n toolTipText?: string\n}\n\nexport const DeleteButton: React.FC = ({ onClick, disabled, toolTipText }) =>\n toolTipText ? (\n \n \n \n ) : (\n \n )\n","import styled from 'styled-components'\n\nimport { MapPinIcon } from 'assets/icons'\n\nexport const MapPin = styled(MapPinIcon)`\n width: 55px;\n height: 55px;\n transform: translate(5%, -35%) !important;\n`\n","import { Typography } from 'antd'\nimport styled from 'styled-components'\n\ninterface Props {\n title: string\n}\n\nconst { Title: AntTitle } = Typography\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive} !important;\n font-size: 13px !important;\n font-weight: normal !important;\n margin-bottom: 0 !important;\n`\n\nexport const InputTitle: React.FC = ({ title }) => {\n return {title}\n}\n","import { ComponentProps } from 'react'\nimport styled from 'styled-components'\nimport { Button as AntButton } from 'antd'\n\nexport const StyledButton = styled(AntButton)`\n min-width: ${({ theme }) => theme.foundation.buttonWidth};\n`\n\ntype Props = ComponentProps\n\nexport const Button: React.FC = ({ children, ...props }) => (\n {children}\n)\n","import React, { PropsWithChildren } from 'react'\nimport { Tooltip } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nconst ViewerUserTooltip: React.FC = ({ children }) => {\n const { t } = useTranslation('common')\n\n return (\n \n {children}\n \n )\n}\n\nexport { ViewerUserTooltip }\n","import { Typography, Row, Col, List as AntList, Space, Tooltip } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { TrashIcon, CogSettingsIcon } from 'assets/icons'\n\nimport { Button as BaseButton } from '../Button'\nimport { ViewerUserTooltip } from '../ViewerUserTooltip'\n\nconst { Title: AntTitle } = Typography\n\nconst iconButton = `\nwidth: 45px;\nheight: 45px;\ndisplay: flex;\njustify-content: center;\nalign-items: center;\nborder-radius: 50%;\n`\n\nconst FlexRow = styled(Row)`\n flex-grow: 1;\n height: 100%;\n`\n\nconst Button = styled(BaseButton)`\n flex-grow: 1;\n height: 55px !important;\n pointer-events: ${({ disabled }) => disabled && 'none'};\n`\n\nconst ActionsCol = styled(Col)`\n margin-left: auto;\n`\n\ninterface ButtonProps {\n disabled?: boolean\n}\n\nconst TrashButton = styled.div`\n ${iconButton}\n width: 40px;\n height: 40px;\n cursor: ${({ disabled }) => (disabled ? 'unset' : 'pointer')};\n background-color: ${({ theme, disabled }) =>\n disabled ? theme.colors.grey2 : theme.colors.grey3};\n`\n\nconst SettingsButton = styled.div`\n ${iconButton}\n width: 40px;\n height: 40px;\n cursor: ${({ disabled }) => (disabled ? 'unset' : 'pointer')};\n background-color: ${({ theme, disabled }) =>\n disabled ? theme.colors.grey2 : theme.colors.white};\n border: 2px solid;\n border-color: ${({ theme }) => theme.colors.grey2};\n color: red;\n`\n\nconst List = styled(AntList)`\n border: 0;\n & .ant-list-header {\n background: ${({ theme }) => theme.colors.grey2};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n }\n & .ant-list-footer {\n padding: 16px 0 !important;\n }\n\n & .ant-list-item {\n border-bottom: ${({ theme }) => `5px solid ${theme.colors.grey2}`};\n padding: 10px 24px !important;\n\n border-bottom-left-radius: 2px;\n\n border-bottom-right-radius: 2px;\n &:last-child {\n border-bottom: 0 !important;\n }\n }\n` as typeof AntList\n\ninterface ColContainerProps {\n $maxWidth?: string\n}\nconst ColContainer = styled(Col)`\n max-width: ${({ $maxWidth }) => $maxWidth ?? '704px'};\n flex: 1;\n background: ${({ theme }) => theme.colors.grey1};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n\n &.ant-col:first-child {\n padding: 30px !important;\n }\n`\n\nconst Description = styled(AntTitle)`\n font-weight: 400 !important;\n font-style: normal !important;\n line-height: 24px !important;\n margin-bottom: 22px !important;\n font-size: 13px !important;\n`\n\nconst Title = styled(AntTitle)`\n margin-bottom: 0 !important;\n`\n\n// TODO Create a proper empty list component\nconst EmptyList = () => null\n\ninterface Props {\n data: T[]\n title: string\n description: string\n header: React.ReactNode\n headerSubsection?: React.ReactNode\n buttonDescription: string\n loading?: boolean\n onClick: () => void\n onEdit: (id: number) => void\n onDelete: (id: number) => void\n renderItem: (item: T, index: number) => React.ReactNode\n isAdminUser: boolean\n disabledButton?: boolean\n disabledTooltipText?: string\n maxWidth?: string\n}\n\n// TODO We should probably convert this to a Table. Components using this need to tweak\n// renderItem and header prop for columns to be aligned\nexport const ListCard = ({\n data,\n title,\n description,\n header,\n headerSubsection,\n buttonDescription,\n loading,\n onClick,\n onEdit,\n onDelete,\n renderItem,\n disabledButton,\n isAdminUser,\n disabledTooltipText,\n maxWidth,\n}: Props) => {\n const { colors } = useTheme()\n const { t } = useTranslation('common')\n\n return (\n \n {title}\n {description}\n {headerSubsection}\n }}\n pagination={{\n pageSizeOptions: ['5', '10', '20', '50'],\n defaultPageSize: 5,\n showSizeChanger: true,\n }}\n size=\"large\"\n header={header}\n loading={loading}\n footer={\n isAdminUser ? (\n <>\n {disabledButton ? (\n \n \n \n \n \n ) : (\n \n \n \n )}\n \n ) : (\n \n \n \n \n \n )\n }\n bordered\n dataSource={data}\n renderItem={(item, index) => (\n \n \n {renderItem(item, index)}\n \n \n {isAdminUser ? (\n <>\n {disabledButton || item.isDisabled ? (\n <>\n onEdit(item.id)}>\n \n \n \n \n \n \n \n \n ) : (\n <>\n onEdit(item.id)}>\n \n \n onDelete(item.id)}>\n \n \n \n )}\n \n ) : (\n <>\n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n )}\n />\n \n )\n}\n","import { Col } from 'antd'\nimport { PlusCircleOutlined } from '@ant-design/icons'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nconst UploadContainer = styled(Col)`\n width: 55px;\n height: 55px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n overflow: hidden;\n`\n\nconst Image = styled.img`\n width: 100%;\n`\n\nconst StyledPlusCircleOutlined = styled(PlusCircleOutlined)`\n font-size: 30px;\n color: ${({ theme }) => theme.colors.grey2};\n`\n\ninterface Props {\n image?: string\n}\n\nexport const SmallUploadBox: React.FC = ({ image }) => {\n const { t } = useTranslation('common')\n\n return (\n \n {image ? {t('misc.logoImageAlt')} : }\n \n )\n}\n","import { Col } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { ImageFileIcon } from 'assets/icons'\n\nconst UploadContainer = styled(Col)`\n width: 35px;\n height: 35px;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n overflow: hidden;\n`\n\nconst Image = styled.img`\n width: 100%;\n`\n\ninterface Props {\n image?: string\n}\n\nexport const SmallUploadBoxV2: React.FC = ({ image }) => {\n const { t } = useTranslation('common')\n\n return (\n \n {image ? {t('misc.logoImageAlt')} : }\n \n )\n}\n","import { Col, Typography } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { ImageIcon } from 'assets/icons'\n\nconst { Text } = Typography\n\nconst UploadContainer = styled(Col)`\n width: 156px;\n height: 156px;\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n overflow: hidden;\n`\n\nconst UploadPicture = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n align-items: center;\n padding: 21px 32px;\n`\n\nconst Image = styled.img`\n width: 100%;\n`\n\nconst PictureBoxText = styled(Text)`\n font-size: 13px;\n color: ${({ theme }) => theme.colors.grey2};\n`\n\ninterface Props {\n image?: string\n}\n\nexport const LargeUploadBox: React.FC = ({ image }) => {\n const { t } = useTranslation('account-settings')\n\n return (\n \n {image ? (\n {t('profilePicture.title')}\n ) : (\n \n {t('profilePicture.description')}\n \n \n )}\n \n )\n}\n","import React from 'react'\nimport { Row, Upload as AntUpload, notification } from 'antd'\nimport { UploadChangeParam, UploadFile } from 'antd/lib/upload/interface'\nimport ImgCrop from 'antd-img-crop'\nimport { useTranslation } from 'react-i18next'\n\nimport { InputTitle } from '../InputTitle'\nimport { LargeUploadBox, SmallUploadBoxV2, SmallUploadBox } from './components'\nimport { UploadVariantsType, UploadVariantSizeType } from './types'\n\nconst MAX_UPLOAD_SIZE = 4 // In MB\n\nconst uploadBoxVariants: UploadVariantsType = {\n v1: {\n small: SmallUploadBox,\n large: LargeUploadBox,\n },\n v2: {\n small: SmallUploadBoxV2,\n },\n}\n\ninterface Props {\n title?: string\n image?: string\n onChange: (image: string, file: File) => void\n isReadOnly?: boolean\n size?: keyof UploadVariantSizeType\n version?: keyof UploadVariantsType\n allowCrop?: boolean\n}\n\nexport const Upload: React.FC = ({\n title,\n image,\n onChange,\n isReadOnly,\n size = 'large',\n allowCrop = false,\n version = 'v1',\n}) => {\n const { t } = useTranslation('common')\n\n const isValidUpload = (file: UploadFile) => {\n if (!file.size) return false\n const isLowerThanMaxMB = file.size / 1024 / 1024 < MAX_UPLOAD_SIZE\n if (!isLowerThanMaxMB) {\n notification.error({\n message: t('messages.validUpload', { maxUploadSize: MAX_UPLOAD_SIZE }),\n })\n }\n return isLowerThanMaxMB\n }\n const onUploadChange = ({ fileList }: UploadChangeParam) => {\n const file = fileList[0]\n if (!isValidUpload(file)) return\n\n const reader = new FileReader()\n reader.addEventListener('load', () => {\n onChange(reader.result as string, file.originFileObj!)\n })\n reader.readAsDataURL(file.originFileObj!)\n }\n\n const UploadBox = uploadBoxVariants[version][size] ?? SmallUploadBox\n\n const upload = (\n false}\n onChange={onUploadChange}\n >\n \n \n )\n\n return (\n <>\n {title && }\n {allowCrop ? {upload} : upload}\n \n )\n}\n","import { Control, Controller } from 'react-hook-form'\nimport { Form, Input, InputProps } from 'antd'\nimport styled from 'styled-components'\n\nimport { ConversionUtils } from 'utils'\n\nconst FormItem = styled(Form.Item)`\n .ant-input-affix-wrapper {\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n .ant-input {\n padding: inherit;\n min-height: 36px;\n }\n }\n .ant-form-item-explain {\n line-height: 14px;\n font-size: 12px;\n min-height: 14px;\n }\n`\n\ninterface Props extends InputProps {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n control: Control\n name: string\n placeholder: string\n defaultValue?: string\n prefixIcon?: React.ReactNode\n type?: 'password'\n capitalize?: boolean\n}\n\nexport const FormInput: React.FC = ({\n control,\n name,\n prefixIcon,\n placeholder,\n defaultValue,\n type,\n capitalize,\n ...restProps\n}) => {\n const InputComponent = type === 'password' ? Input.Password : Input\n return (\n (\n \n {\n if (capitalize) {\n onChange(ConversionUtils.autoCapitalize(event.target.value))\n return\n }\n onChange(event.target.value)\n }}\n />\n \n )}\n />\n )\n}\n","import { Navigate } from 'react-router-dom'\n\nimport { useAuth } from 'hooks'\n\ninterface Props {\n children: React.ReactElement\n}\nexport const PrivateRoute: React.FC = ({ children }) => {\n const { userId } = useAuth()\n\n if (!userId) return \n\n return children\n}\n","import { Col, Layout, Row } from 'antd'\nimport styled from 'styled-components'\n\nconst { Header: AntHeader } = Layout\n\nconst MainHeader = styled(AntHeader)`\n background: ${({ theme }) => theme.colors.new.baseColor[850]};\n height: 48px;\n display: flex;\n align-items: center;\n padding: 0px 24px;\n`\n\ninterface Props {\n items?: JSX.Element[]\n}\n\nexport const Header: React.FC = ({ items }) => {\n return (\n \n \n {items?.map((item, index) => (\n // eslint-disable-next-line react/no-array-index-key\n {item}\n ))}\n \n \n )\n}\n","import { Layout as BaseLayout, Row, Typography, Col } from 'antd'\nimport styled from 'styled-components'\nimport { PropsWithChildren } from 'react'\n\nimport { Header as AppHeader } from '../Header'\n\nconst { Content: BaseContent } = BaseLayout\nconst { Title: AntTitle, Text: AntText } = Typography\n\nconst LayoutContainer = styled(BaseContent)`\n height: 100%;\n display: flex;\n flex-direction: column;\n`\n\nconst Content = styled(BaseContent)`\n padding: 50px 30px 0 30px;\n background: ${({ theme }) => theme.colors.white};\n height: 100%;\n overflow-y: auto;\n @media (min-width: 1300px) {\n padding-right: 70px;\n padding-left: 70px;\n }\n @media (min-width: 1600px) {\n padding-right: 120px;\n padding-left: 120px;\n }\n @media (max-height: 900px) {\n padding-top: 25px;\n }\n`\n\nconst Header = styled(Row)`\n margin-bottom: 40px;\n`\n\nconst Image = styled.img`\n background-position: center;\n width: 24px;\n height: 24px;\n margin-right: 10px;\n`\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive};\n margin-bottom: 0px !important;\n line-height: 44px;\n`\n\nconst SubTitle = styled(AntText)`\n line-height: 24px;\n font-size: 13px !important;\n margin-top: 10px !important;\n color: ${({ theme }) => theme.colors.olive5};\n`\n\nconst SubTitleContainer = styled(Col)`\n margin-top: 5px !important;\n`\n\ninterface Props {\n showAppHeader?: boolean\n appHeaderItems?: JSX.Element[]\n headerTitle: string\n headerImage: string\n actionButton?: JSX.Element\n className?: string\n subtitle?: string\n}\n\nexport const Layout: React.FC> = ({\n showAppHeader,\n appHeaderItems,\n headerImage,\n headerTitle,\n children,\n actionButton,\n className,\n subtitle,\n}) => (\n \n {showAppHeader && }\n \n
\n \n \n \n {headerTitle}\n \n \n {actionButton && {actionButton}}\n {subtitle && (\n \n {subtitle}\n \n )}\n
\n {children}\n
\n
\n)\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\n\nconst { Title: AntTitle } = Typography\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive};\n font-weight: 500 !important;\n margin-bottom: 0 !important;\n`\n\ninterface Props {\n title: string\n level?: 5 | 1 | 2 | 3 | 4\n overlayInnerStyle?: React.CSSProperties\n}\n\nexport const EllipsisTitle: React.FC = ({ title, level, overlayInnerStyle }) => (\n \n \n {title}\n \n \n)\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\n\nconst { Text: AntText } = Typography\n\nconst TextContainer = styled.span`\n overflow: hidden;\n`\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive};\n font-weight: 500;\n font-size: 14px;\n`\n\ninterface Props {\n text: string\n overlayInnerStyle?: React.CSSProperties\n showTooltip?: boolean\n}\n\nexport const EllipsisText: React.FC = ({ text, overlayInnerStyle, showTooltip = true }) => (\n \n \n {text}\n \n \n)\n","import { Navigate } from 'react-router-dom'\nimport { PropsWithChildren } from 'react'\n\nimport { OrganizationCrmModuleFlag, OrganizationGeneralModuleFlag } from 'types'\nimport { usePermissions } from 'hooks'\n\ninterface Props {\n flags: (OrganizationGeneralModuleFlag | OrganizationCrmModuleFlag)[]\n}\nexport const ProtectedRoute: React.FC> = ({ flags, children }) => {\n const { permissions } = usePermissions()\n\n if (\n !permissions.satelliteImagery &&\n flags.includes(OrganizationGeneralModuleFlag.SATELLITE_IMAGERY)\n )\n return \n\n return <>{children}\n}\n","import { memo } from 'react'\nimport { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\n\nimport { useCompanySeasons } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\n\nconst Select = styled(AntSelect)`\n min-width: 100px;\n .ant-select-selector {\n font-size: 13px;\n color: white !important;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n` as typeof AntSelect\n\ninterface Props {\n onChange: (seasonId?: number) => void\n}\n\nexport const SeasonSelect: React.FC = memo(({ onChange }) => {\n const { activeCompanyId, activeSeasonId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data, loading } = useCompanySeasons(activeCompanyId)\n\n const seasons = data?.seasons.results\n\n const SELECT_NEW_UI_CLASSNAME = 'custom-select-dropdown'\n\n return (\n onChange(Number(id))}\n >\n {seasons?.map(season => (\n \n {season.name}\n \n ))}\n \n )\n})\n","import styled from 'styled-components'\n\nexport const CalendarPanel = styled.div`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n box-shadow: none;\n .ant-picker-panel {\n border: none !important;\n }\n .ant-picker-header {\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.new.baseColor[400]}`};\n }\n .ant-picker-header > * {\n color: ${({ theme }) => theme.colors.white} !important;\n }\n .ant-picker-header:hover,\n .ant-picker-header button:hover {\n color: ${({ theme }) => theme.colors.new.secondary[600]} !important;\n }\n .ant-picker-content thead tr > th {\n color: ${({ theme }) => theme.colors.white};\n }\n .ant-picker-cell {\n background-color: transparent;\n color: ${({ theme }) => theme.colors.white} !important;\n &:before {\n background-color: transparent;\n }\n }\n .ant-picker-cell div:hover,\n .ant-picker-cell-selected div {\n background-color: ${({ theme }) => theme.colors.new.secondary[600]} !important;\n }\n .ant-picker-cell-disabled div {\n color: ${({ theme }) => theme.colors.new.baseColor[600]} !important;\n }\n .ant-picker-cell-disabled.ant-picker-cell-today .ant-picker-cell-inner::before {\n border: 0px;\n }\n`\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\n\nconst { Text: AntText } = Typography\n\nconst TagContainer = styled.div`\n display: flex;\n justify-content: center;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n background-color: ${({ theme }) => theme.colors.new.baseColor[600]};\n padding: 2px 6px;\n`\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n`\n\ninterface Props {\n text: string\n containerStyle?: React.CSSProperties\n textStyle?: React.CSSProperties\n}\nexport const TagText: React.FC = ({ text, containerStyle, textStyle }) => {\n return (\n \n {text}\n \n )\n}\n","import { Row } from 'antd'\nimport { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nconst Container = styled(Row)`\n padding: 25px;\n background: ${({ theme }) => theme.colors.grey1};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n display: flex;\n height: 100%;\n`\n\nexport const GreyCard: React.FC = ({ children }) => (\n {children}\n)\n","import { PlusOutlined } from '@ant-design/icons'\nimport { Row, Typography, Space as AntSpace, Col, Divider as AntDivider } from 'antd'\nimport styled from 'styled-components'\nimport { PropsWithChildren } from 'react'\n\nimport { GreyCard } from '../GreyCard'\n\nconst { Title: AntTitle, Text } = Typography\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive5};\n font-weight: 600;\n line-height: 26px;\n margin-bottom: 0 !important;\n`\nconst Space = styled(AntSpace)`\n width: 100%;\n`\n\nconst IconContainer = styled(Col)`\n width: 38px;\n height: 38px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ theme }) => theme.colors.primary};\n border-radius: 50%;\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n overflow: hidden;\n cursor: pointer;\n`\nconst StyledPlusCircle = styled(PlusOutlined)`\n font-size: 30px;\n color: ${({ theme }) => theme.colors.white};\n`\n\nconst Divider = styled(AntDivider)`\n height: 24px !important;\n border-left: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n width: 2px !important;\n margin: 0;\n`\n\nconst SubTitle = styled(Text)`\n color: ${({ theme }) => theme.colors.olive};\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 12px;\n letter-spacing: 0em;\n`\ninterface Props {\n title: string\n subTitle?: string\n onCreate?: () => void\n}\nexport const GreyCardWithTitle: React.FC> = ({\n title,\n children,\n onCreate,\n subTitle,\n}) => {\n return (\n \n \n \n \n \n {title} \n {subTitle && (\n <>\n \n\n {subTitle} \n \n )}\n \n \n\n {onCreate && (\n \n \n \n )}\n \n {children}\n \n \n )\n}\n","import styled from 'styled-components'\nimport { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { DatePicker as AntDatePicker } from 'antd'\n\nimport { DATE_FORMATS } from 'consts'\n\nconst StyledDatePicker = styled(AntDatePicker)`\n width: 143px;\n`\n\ntype Props = ComponentProps\n\nexport const DatePicker: React.FC = props => {\n const { t } = useTranslation('common')\n\n return (\n \n )\n}\n","import { Select } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { useProductionType } from 'hooks'\nimport { ProductionType } from 'types'\n\ninterface Props {\n disabled?: boolean\n onChange?: (productionType: ProductionType) => void\n value: ProductionType\n viewMode?: boolean\n}\n\nexport const ProductionTypeSelect: React.FC = ({ disabled, onChange, value, viewMode }) => {\n const { t } = useTranslation('common')\n const { productionTypeMap } = useProductionType()\n\n const options = Object.values(productionTypeMap)\n\n return (\n \n {options.map(option => (\n \n {option.label}\n \n ))}\n \n )\n}\n","import { Input } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\n\nimport { UpdateLotByIdVariables } from 'hooks/useUpdateLot'\nimport { LANGUAGE_CODES } from 'consts'\nimport { ConversionUtils } from 'utils'\n\nconst StyledInput = styled(Input)`\n width: 100%;\n > .ant-input {\n border-radius: 0;\n }\n`\n\ninterface Props {\n lotId?: number\n abandonedSize?: number\n onChange: ({ variables }: { variables: UpdateLotByIdVariables }) => void\n}\n\nexport const AbandonedSizeInput: React.FC = ({ lotId, abandonedSize, onChange }) => {\n const { t: commonT } = useTranslation('common')\n\n const isUsLanguage = i18next.resolvedLanguage === LANGUAGE_CODES.US\n\n return (\n ) => {\n if (!lotId) return\n\n const abandonedSizeNumber = Number(event.currentTarget.value)\n const newAbandonedSize = isUsLanguage\n ? ConversionUtils.acresTohectare(abandonedSizeNumber)\n : abandonedSizeNumber\n onChange({\n variables: { updateLotDto: { id: lotId, abandonedSize: newAbandonedSize ?? null } },\n })\n }}\n />\n )\n}\n","import { Row, Col, Typography } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\n\nconst Ball = styled.div`\n width: 12px;\n height: 12px;\n background-color: ${({ theme }) => theme.colors.new.secondary[600]};\n border-radius: 50%;\n`\nconst AutomaticBall = styled(Ball)`\n background-color: ${({ theme }) => theme.colors.new.timelineViolet};\n`\n\nconst SatelliteBall = styled(Ball)`\n background-color: ${({ theme }) => theme.colors.new.timelineLightBlue};\n`\n\nconst Text = styled(Typography.Text)`\n color: ${({ theme }) => theme.colors.grey1};\n font-size: 14px;\n font-weight: 600;\n line-height: 24px;\n`\n\nconst Title = styled(Text)`\n font-weight: 700;\n`\n\nexport const Content = ({ title }: { title?: string }) => {\n const { t } = useTranslation('lot-dashboard')\n\n const information = [\n { text: t('timeline.information.manual'), ball: },\n { text: t('timeline.information.satellite'), ball: },\n {\n text: t('timeline.information.estimated'),\n ball: ,\n },\n ]\n\n return (\n \n {title && {title}}\n {information.map(data => {\n return (\n \n {data.ball}\n \n {data.text}\n \n \n )\n })}\n \n )\n}\n","import { Popover } from 'antd'\nimport { useTheme } from 'styled-components'\n\nimport { InformationIcon } from 'assets/icons'\n\nimport { Content } from './components'\n\nexport const UpdateTypeInformation = ({\n title,\n maxWidth = 230,\n}: {\n title?: string\n maxWidth?: number\n}) => {\n const { colors } = useTheme()\n return (\n }\n overlayInnerStyle={{\n background: colors.new.baseColor[500],\n maxWidth,\n borderRadius: 16,\n padding: 16,\n }}\n >\n \n \n )\n}\n","import { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\n\nimport { HistoricalSeason } from 'types'\nimport { useHistoricalSeasons } from 'hooks'\n\nconst Select = styled(AntSelect)`\n min-width: 220px;\n\n .ant-select-selector {\n height: 38px;\n font-size: 13px;\n font-weight: 600;\n color: white !important;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-selection-item {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n` as typeof AntSelect\n\nconst SELECT_NEW_UI_CLASSNAME = 'custom-select-dropdown'\n\ninterface Props {\n selectedHistoricalSeason?: HistoricalSeason\n onChange: (historicalSeason: HistoricalSeason) => void\n withRefreshPolicy?: boolean\n}\n\nexport const HistoricalSeasonSelect: React.FC = ({\n selectedHistoricalSeason,\n onChange,\n withRefreshPolicy,\n}) => {\n const { data, loading } = useHistoricalSeasons({\n onChange,\n selectedHistoricalSeason,\n withRefreshPolicy,\n })\n\n return (\n {\n const selectedSeason = data?.historicalSeasons?.find(season => season.name === seasonName)\n if (!selectedSeason) return\n const { name, endRange, startRange } = selectedSeason\n\n onChange({\n endRange,\n name,\n startRange,\n })\n }}\n >\n {data?.historicalSeasons.map(season => (\n \n {season.name}\n \n ))}\n \n )\n}\n","import { Select } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { useDeliveryCondition } from 'hooks'\nimport { DeliveryCondition } from 'types'\n\ninterface Props {\n disabled?: boolean\n onChange: (productionType: DeliveryCondition) => void\n value: DeliveryCondition\n}\n\nexport const DeliveryConditionSelect: React.FC = ({ disabled, onChange, value }) => {\n const { t } = useTranslation('common')\n\n const { deliveryConditionMap } = useDeliveryCondition()\n\n const options = Object.values(deliveryConditionMap)\n\n return (\n \n {options.map(option => (\n \n {option.label}\n \n ))}\n \n )\n}\n","import { Typography } from 'antd'\nimport React from 'react'\nimport styled from 'styled-components'\n\nconst { Text: AntText } = Typography\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n font-size: 16px !important;\n font-weight: 600 !important;\n`\n\nexport const IconText: React.FC<{ letter: string }> = ({ letter }) => {\n return {letter}\n}\n","import { Col, Row } from 'antd'\n\nimport { LogoColoredWithTextIcon } from 'assets/icons'\n\nexport const ContentHeader = () => (\n \n \n \n \n \n)\n","import { Typography } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\n\nconst { Text } = Typography\n\nconst CenteredText = styled(Text)`\n width: 100%;\n text-align: center;\n`\n\nexport const LoginTextCta: React.FC = () => {\n const { t } = useTranslation('login')\n\n return (\n \n {t('loginPage.haveAccountQuestion')}\n {t('loginPage.loginButton')}\n \n )\n}\n","import { Control } from 'react-hook-form'\nimport { MailOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\n\nimport { FormInput } from 'components'\n\ninterface Props {\n // TODO Fix type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n control: Control\n iconStyle: React.CSSProperties\n defaultValue?: string\n size?: 'small' | 'middle' | 'large'\n isReadOnly?: boolean\n}\n\nexport const FormEmailInput: React.FC = ({\n control,\n iconStyle,\n defaultValue,\n isReadOnly = false,\n ...restProps\n}) => {\n const { t } = useTranslation('common')\n return (\n }\n />\n )\n}\n","import { Control } from 'react-hook-form'\nimport { UnlockOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\n\nimport { FormInput } from 'components'\n\ninterface Props extends Pick, 'onKeyUp'> {\n // TODO Fix type\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n control: Control\n iconStyle: React.CSSProperties\n size?: 'small' | 'middle' | 'large'\n}\n\nexport const FormPasswordInput: React.FC = ({ control, iconStyle, ...restProps }) => {\n const { t } = useTranslation('common')\n\n return (\n }\n type=\"password\"\n />\n )\n}\n","import { useTheme } from 'styled-components'\n\nexport const useFormIconsStyle = () => {\n const { colors } = useTheme()\n const iconStyle = { color: colors.grey2 }\n return iconStyle\n}\n","import { Row, Col, Typography } from 'antd'\nimport { MailOutlined } from '@ant-design/icons'\nimport styled from 'styled-components'\n\nimport { useFormIconsStyle } from '../../hooks'\nimport { LoginTextCta } from '../LoginTextCTA'\n\nconst { Title: AntTitle } = Typography\n\nconst Content = styled(Col)`\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n`\n\nconst Title = styled(AntTitle)`\n color: ${props => props.theme.colors.olive} !important;\n text-align: center;\n margin-bottom: 30px !important;\n margin-top: 20px !important;\n font-weight: 600;\n line-height: 40px;\n`\n\ninterface Props {\n title: string\n showLoginText?: boolean\n}\n\nexport const FeedbackCard: React.FC = ({ title, showLoginText = true }) => {\n const iconStyle = useFormIconsStyle()\n return (\n \n \n \n {title}\n \n \n \n \n \n {showLoginText && }\n \n )\n}\n","import { Card, Row, Col, Typography } from 'antd'\nimport styled from 'styled-components'\n\nimport { loginCardRiceImage } from 'assets/images'\nimport { MixinsStyles } from 'styles'\n\nconst { Title, Text: AntText } = Typography\n\nexport { ContentHeader } from './ContentHeader'\nexport { LoginTextCta } from './LoginTextCTA'\nexport { FormEmailInput } from './FormEmailInput'\nexport { FormPasswordInput } from './FormPasswordInput'\nexport { FeedbackCard } from './FeedbackCard'\n\nexport const BackgroundImage = styled(Row)`\n ${MixinsStyles.coverImage}\n background-image: url(${loginCardRiceImage});\n background-position: center;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`\n\nexport const StyledCard = styled(Card)`\n width: 988px;\n height: 550px;\n border: none;\n background-color: transparent;\n`\n\nexport const Overlay = styled(Row)`\n flex: 1;\n width: 100%;\n background-color: ${props => props.theme.colors.black};\n opacity: 0.3;\n`\n\nexport const CardContainer = styled(Row)`\n width: 100%;\n`\n\nexport const CardContent = styled(Row)`\n width: 100%;\n height: 100%;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.5), 5px 5px 50px rgba(0, 0, 0, 0.5);\n`\n\nexport const CardImage = styled(Row)`\n flex: 1;\n ${MixinsStyles.coverImage}\n padding: 0 0 21px 40px;\n align-items: flex-end;\n`\n\nexport const CardImageTitle = styled(Title)`\n width: 70%;\n color: ${props => props.theme.colors.white} !important;\n font-size: 48px !important;\n`\n\nexport const ContentContainer = styled.div`\n width: 400px;\n display: flex;\n padding: 20px 46px;\n flex-direction: column;\n justify-content: space-between;\n background-color: ${props => props.theme.colors.white};\n`\n\nexport const Content = styled(Col)`\n width: 100%;\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\n\ninterface TextProps extends React.ComponentProps {\n error?: boolean\n}\n\nconst Text: React.FC = ({ error, ...restProps }) => {\n return \n}\n\nexport const CenteredText = styled(Text)`\n width: 100%;\n text-align: center;\n color: ${props => (props.error ? props.theme.colors.errorRed : undefined)};\n`\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { VALIDATIONS } from 'consts'\n\ninterface Form {\n email: string\n password: string\n}\n\nexport const useLoginForm = () => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n email: yup.string().email(t('validations.email')).required(t('validations.required')),\n password: yup\n .string()\n .min(\n VALIDATIONS.PASSWORD_MIN_LENGTH,\n t('validations.minLength', { minLength: VALIDATIONS.PASSWORD_MIN_LENGTH }),\n )\n .required(t('validations.required')),\n })\n\n return useForm
({ resolver: yupResolver(validationSchema) })\n}\n","import { gql } from '@apollo/client'\n\nexport type { VerifyAccount, VerifyAccountVariables } from './types/VerifyAccount'\nexport type { Login, LoginVariables } from './types/Login'\n\nexport const VERIFY_ACCOUNT = gql`\n mutation VerifyAccount($token: String!) {\n verifyAccount(token: $token) {\n success\n }\n }\n`\n\nexport const LOGIN = gql`\n mutation Login($email: String!, $password: String!) {\n login(email: $email, password: $password) {\n success\n token\n user {\n id\n name\n lastName\n email\n organizationRole {\n organization {\n id\n name\n }\n }\n }\n }\n }\n`\n","import { Button, Space as AntSpace } from 'antd'\nimport { Link } from 'react-router-dom'\nimport styled from 'styled-components'\n\nimport { CenteredText } from '../../../components'\n\nexport const LoginButton = styled(Button)`\n width: 100%;\n`\n\nexport const MainText = styled(CenteredText)`\n margin-bottom: 8px;\n`\n\nexport const Space = styled(AntSpace)`\n & .ant-form-item {\n margin-bottom: 0 !important;\n }\n`\n\nexport const LoginErrorText = styled(CenteredText)`\n margin-top: 10px;\n font-size: 14px;\n`\n\nexport const StyledLink = styled(Link)`\n font-size: 20px;\n font-weight: 700;\n` as typeof Link\n","import { Link } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { Loader } from 'components'\nimport { useIsProdEnv } from 'hooks'\n\nimport { FormEmailInput, FormPasswordInput, CenteredText } from '../../components'\nimport { useLogin, useLoginForm, useVerifyAccount } from './hooks'\nimport { LoginButton, MainText, Space, StyledLink, LoginErrorText } from './components'\nimport { useFormIconsStyle } from '../../hooks'\n\nexport const Login: React.FC = () => {\n const iconStyle = useFormIconsStyle()\n const { t } = useTranslation('login')\n\n const { control, handleSubmit } = useLoginForm()\n const [login, { loading, error }] = useLogin()\n const {\n loading: loadingVerification,\n accountVerificationText,\n isAccountVerified,\n isVerification,\n emailToValidate,\n } = useVerifyAccount()\n const isProdEnv = useIsProdEnv()\n\n const verification = loadingVerification ? : accountVerificationText\n\n const onLogin = handleSubmit(credentials => login({ variables: credentials }))\n\n const onPasswordInputKeyUp = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n onLogin()\n }\n }\n\n return (\n <>\n {!isProdEnv && (\n \n {t('loginPage.createAccountText.part1')}\n {t('loginPage.createAccountText.part2')}\n {t('loginPage.createAccountText.part3')}\n \n )}\n \n \n \n \n {t('loginPage.loginButton')}\n \n \n {error && (\n \n {t('loginPage.errorText.part1')}
\n {t('loginPage.errorText.part2')}\n {/* eslint-disable-next-line i18next/no-literal-string */}\n info@kuna.app\n
\n )}\n \n {isVerification && verification}\n \n \n {t('loginPage.forgotPassword')}\n \n \n )\n}\n","import { useMutation } from '@apollo/client'\n\nimport { AuthContext } from 'contexts'\nimport { STORAGE_KEYS } from 'consts'\nimport { useLocalStorage } from 'hooks'\n\nimport { LOGIN, Login, LoginVariables } from '../api'\n\nexport const useLogin = () => {\n const [, setUserToken] = useLocalStorage(STORAGE_KEYS.USER_TOKEN)\n\n const { login } = AuthContext.useAuthContext()\n return useMutation(LOGIN, {\n onCompleted: data => {\n login({\n id: data.login.user.id,\n email: data.login.user.email,\n name: data.login.user.name,\n lastName: data.login.user.lastName,\n organizationId: data.login.user.organizationRole?.organization.id,\n organizationName: data.login.user.organizationRole?.organization.name,\n })\n setUserToken(data.login.token)\n },\n onError: error => console.log(error),\n })\n}\n","import { useMutation } from '@apollo/client'\nimport { useEffect } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { useQueryParams } from 'hooks'\n\nimport { VerifyAccount, VERIFY_ACCOUNT, VerifyAccountVariables } from '../api'\n\nexport const useVerifyAccount = () => {\n const query = useQueryParams()\n const token = query.get('token')\n const emailToValidate = query.get('email')\n const { t } = useTranslation('login')\n\n const [verifyAccount, { loading, data }] = useMutation(\n VERIFY_ACCOUNT,\n {\n errorPolicy: 'all',\n },\n )\n\n useEffect(() => {\n if (token) {\n verifyAccount({ variables: { token } })\n }\n }, [token, verifyAccount])\n\n const isAccountVerified = !!data?.verifyAccount.success\n\n const accountVerificationText = isAccountVerified\n ? t('verifyEmailPage.validatedEmail')\n : t('verifyEmailPage.validatedEmailError')\n\n return {\n loading,\n isAccountVerified,\n accountVerificationText,\n isVerification: !!token,\n emailToValidate,\n }\n}\n","import { Button, Space as AntSpace } from 'antd'\nimport styled from 'styled-components'\n\nexport const SignupButton = styled(Button)`\n width: 100%;\n`\n\nexport const Space = styled(AntSpace)`\n margin-top: 20px;\n & .ant-form-item {\n margin-bottom: 0 !important;\n }\n`\n","import { gql } from '@apollo/client'\n\nexport type { SignUp, SignUpVariables } from './types/SignUp'\n\nexport const SIGNUP = gql`\n mutation SignUp($createUserDTO: CreateUserInput!, $token: String, $locale: String) {\n signup(createUserDTO: $createUserDTO, token: $token, locale: $locale) {\n success\n user {\n id\n isVerified\n name\n lastName\n email\n organizationRole {\n organization {\n id\n name\n }\n }\n }\n token\n }\n }\n`\n","import { UserOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\n\nimport { FormInput } from 'components'\nimport { useQueryParams } from 'hooks'\n\nimport { LoginTextCta, Content, FormEmailInput, FormPasswordInput } from '../../components'\nimport { SignupButton, Space } from './components'\nimport { useSignup, useSignupForm } from './hooks'\nimport { useFormIconsStyle } from '../../hooks'\n\nexport const Signup: React.FC = () => {\n const iconStyle = useFormIconsStyle()\n const { t: commonT } = useTranslation('common')\n const { t, i18n } = useTranslation('login')\n\n const query = useQueryParams()\n const token = query.get('token')\n const email = query.get('email')\n const { control, handleSubmit } = useSignupForm({ email: email ?? '' })\n const [signup, { loading }] = useSignup()\n return (\n \n \n }\n size=\"small\"\n capitalize\n />\n }\n />\n \n \n \n signup({ variables: { createUserDTO, token, locale: i18n.language } }),\n )}\n >\n {t('signupPage.buttonText')}\n \n \n \n \n )\n}\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { VALIDATIONS } from 'consts'\n\ninterface Form {\n name: string\n lastName: string\n email: string\n password: string\n}\n\nexport const useSignupForm = (defaultValues: Partial) => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n name: yup.string().required(t('validations.required')),\n lastName: yup.string().required(t('validations.required')),\n email: yup.string().email(t('validations.email')).required(t('validations.required')),\n password: yup\n .string()\n .min(\n VALIDATIONS.PASSWORD_MIN_LENGTH,\n t('validations.minLength', { minLength: VALIDATIONS.PASSWORD_MIN_LENGTH }),\n )\n .required(t('validations.required')),\n })\n\n return useForm({ resolver: yupResolver(validationSchema), defaultValues })\n}\n","import { useMutation } from '@apollo/client'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { AuthContext } from 'contexts'\nimport { STORAGE_KEYS } from 'consts'\nimport { useLocalStorage } from 'hooks'\nimport { GraphQLUtils } from 'utils'\n\nimport { SIGNUP, SignUp, SignUpVariables } from '../api'\n\nconst DUPLICATED_EMAIL_ERROR = 'users_email_unique'\n\nexport const useSignup = () => {\n const [, setUserToken] = useLocalStorage(STORAGE_KEYS.USER_TOKEN)\n const navigate = useNavigate()\n const { t } = useTranslation('login')\n\n const { login } = AuthContext.useAuthContext()\n return useMutation(SIGNUP, {\n onCompleted: ({ signup: signupResponse }) => {\n if (signupResponse.user?.isVerified) {\n login({\n id: signupResponse.user.id,\n email: signupResponse.user.email,\n name: signupResponse.user.name,\n lastName: signupResponse.user.lastName,\n organizationId: signupResponse.user.organizationRole?.organization.id,\n organizationName: signupResponse.user.organizationRole?.organization.name,\n })\n return setUserToken(signupResponse.token)\n }\n\n return navigate('/login/verify-email')\n },\n onError: (error, clientOptions) => {\n const isDuplicatedEmail =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n error.graphQLErrors?.[0]?.extensions.exception?.constraint === DUPLICATED_EMAIL_ERROR\n\n GraphQLUtils.errorHandler(\n error,\n clientOptions,\n isDuplicatedEmail ? t('signupPage.duplicatedEmail') : undefined,\n )\n },\n })\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { FeedbackCard } from '../../components'\n\nexport const VerifyEmail: React.FC = () => {\n const { t } = useTranslation('login')\n return \n}\n","import { gql } from '@apollo/client'\n\nexport type {\n RequestPasswordChange,\n RequestPasswordChangeVariables,\n} from './types/RequestPasswordChange'\n\nexport const REQUEST_PASSWORD_CHANGE = gql`\n mutation RequestPasswordChange($email: String!, $locale: String) {\n requestPasswordChange(email: $email, locale: $locale) {\n success\n }\n }\n`\n","import { Button, Space as AntSpace } from 'antd'\nimport styled from 'styled-components'\nimport { useMutation } from '@apollo/client'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { Content, FormEmailInput, LoginTextCta } from '../../components'\nimport { useForgotPasswordForm } from './hooks'\nimport {\n RequestPasswordChange,\n RequestPasswordChangeVariables,\n REQUEST_PASSWORD_CHANGE,\n} from './api'\nimport { useFormIconsStyle } from '../../hooks'\n\nconst RecoverPasswordButton = styled(Button)`\n width: 100%;\n`\n\nconst Space = styled(AntSpace)`\n display: flex;\n justify-content: center;\n flex-grow: 1;\n`\n\nexport const ForgotPassword: React.FC = () => {\n const iconStyle = useFormIconsStyle()\n const { t, i18n } = useTranslation('login')\n\n const navigate = useNavigate()\n\n const { control, handleSubmit } = useForgotPasswordForm()\n\n const [requestPasswordChange, { loading }] = useMutation<\n RequestPasswordChange,\n RequestPasswordChangeVariables\n >(REQUEST_PASSWORD_CHANGE, {\n onCompleted: () => navigate('/login/password-change-request'),\n errorPolicy: 'all',\n })\n\n return (\n \n \n \n \n requestPasswordChange({ variables: { email, locale: i18n.language } }),\n )}\n >\n {t('forgotPasswordPage.buttonText')}\n \n \n \n \n )\n}\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nexport const useForgotPasswordForm = () => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n email: yup.string().email(t('validations.email')).required(t('validations.required')),\n })\n\n return useForm({ resolver: yupResolver(validationSchema) })\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { FeedbackCard } from '../../components'\n\nexport const PasswordChangeRequest: React.FC = () => {\n const { t } = useTranslation('login')\n\n return \n}\n","import { gql } from '@apollo/client'\n\nexport type { ChangePassword, ChangePasswordVariables } from './types/ChangePassword'\n\nexport const CHANGE_PASSWORD = gql`\n mutation ChangePassword($token: String!, $password: String!) {\n validatePasswordChange(token: $token, password: $password) {\n success\n token\n user {\n id\n email\n name\n lastName\n }\n }\n }\n`\n","import { useMutation } from '@apollo/client'\nimport { Button, Space as AntSpace } from 'antd'\nimport styled from 'styled-components'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { GraphQLUtils } from 'utils'\nimport { useQueryParams } from 'hooks'\n\nimport { CenteredText, Content, FormPasswordInput, LoginTextCta } from '../../components'\nimport { useChangePasswordForm } from './hooks'\nimport { ChangePassword, ChangePasswordVariables, CHANGE_PASSWORD } from './api'\nimport { useFormIconsStyle } from '../../hooks'\n\nconst CreateNewPasswordButton = styled(Button)`\n width: 100%;\n`\n\nconst Space = styled(AntSpace)`\n display: flex;\n justify-content: center;\n flex-grow: 1;\n`\n\nexport const PasswordChange: React.FC = () => {\n const iconStyle = useFormIconsStyle()\n const { t } = useTranslation('login')\n\n const navigate = useNavigate()\n const query = useQueryParams()\n const token = query.get('token') ?? ''\n\n const { control, handleSubmit } = useChangePasswordForm()\n\n const [changePassword, { loading, error }] = useMutation(\n CHANGE_PASSWORD,\n {\n onCompleted: () => navigate('/login'),\n onError: GraphQLUtils.errorHandler,\n context: {\n headers: {\n authorization: `Bearer ${token}`,\n },\n },\n },\n )\n\n return (\n \n \n \n \n changePassword({ variables: { token, password } }),\n )}\n >\n {t('passwordChangePage.buttonText')}\n \n {error && {t('passwordChangePage.errorText')}}\n \n \n \n )\n}\n","import { yupResolver } from '@hookform/resolvers/yup'\nimport { useForm } from 'react-hook-form'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { VALIDATIONS } from 'consts'\n\ninterface Form {\n password: string\n}\n\nexport const useChangePasswordForm = () => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n password: yup\n .string()\n .min(\n VALIDATIONS.PASSWORD_MIN_LENGTH,\n t('validations.minLength', { minLength: VALIDATIONS.PASSWORD_MIN_LENGTH }),\n )\n .required(t('validations.required')),\n })\n\n return useForm({ resolver: yupResolver(validationSchema) })\n}\n","import { Route, Navigate, Routes } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { useAuth } from 'hooks'\n\nimport {\n BackgroundImage,\n StyledCard,\n CardImage,\n ContentContainer,\n CardContent,\n CardImageTitle,\n ContentHeader,\n Overlay,\n CardContainer,\n} from './components'\nimport {\n Login,\n Signup,\n VerifyEmail,\n ForgotPassword,\n PasswordChangeRequest,\n PasswordChange,\n} from './features'\n\nexport const LoginRouter: React.FC = () => {\n const { t } = useTranslation('login')\n\n const { userId } = useAuth()\n\n if (userId) return \n\n return (\n \n \n \n \n \n \n \n {t('loginPage.heroTitle')}\n \n \n \n \n } />\n } />\n } />\n } />\n } />\n } />\n \n \n \n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\n\nimport { Modal as ModalBase } from 'components'\n\nconst { Title } = Typography\n\nexport const Modal = styled(ModalBase)`\n width: 700px !important;\n height: 340px !important;\n`\n\nexport const Description = styled(Title)`\n font-weight: 400 !important;\n font-style: normal !important;\n line-height: 26px !important;\n`\n","import { Control, Controller } from 'react-hook-form'\nimport { Row, Col, Form, Input as AntdInput, Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { InputTitle, Upload } from 'components'\nimport { useCountries } from 'hooks'\nimport { ConversionUtils } from 'utils'\nimport { COUNTRIES } from 'consts'\n\nconst FormContainer = styled(Row)`\n margin-top: 22px;\n flex-flow: row;\n`\n\nconst Image = styled.img`\n background-position: center;\n width: 26px;\n height: 26px;\n margin-right: 13px;\n`\n\nconst Select = styled(AntSelect)`\n max-width: 187px;\n & .ant-select-selector {\n height: 55px !important;\n }\n & .ant-select-selection-item {\n display: flex;\n align-items: center;\n }\n` as typeof AntSelect\n\nconst Input = styled(AntdInput)`\n height: 55px !important;\n`\n\ninterface Props {\n image?: string\n onImageChange: (imageResult: string, file: File) => void\n control: Control<{ companyName: string; country: string }>\n onInputNameBlur?: () => void\n isReadyOnly?: boolean\n isCreateCompanyMode: boolean\n selectedCompanyCountry?: string\n}\n\nexport const CompanyForm: React.FC = ({\n image,\n onImageChange,\n control,\n onInputNameBlur,\n isReadyOnly,\n isCreateCompanyMode,\n selectedCompanyCountry,\n}) => {\n const { t } = useTranslation('company-settings')\n const { countries, loading } = useCountries()\n\n return (\n \n \n \n \n \n \n (\n \n {\n onInputNameBlur?.()\n onBlur()\n }}\n {...restFieldProps}\n onChange={event => onChange(ConversionUtils.autoCapitalize(event.target.value))}\n />\n \n )}\n />\n \n \n \n (\n \n {\n onBlur()\n }}\n {...restFieldProps}\n onChange={event => onChange(event)}\n defaultValue={selectedCompanyCountry}\n >\n {countries?.map(country => (\n \n \n {country.name}\n \n ))}\n \n \n )}\n />\n \n \n )\n}\n","import { gql } from '@apollo/client'\n\nexport type { CreateCompany, CreateCompanyVariables } from './types/CreateCompany'\n\nexport const CREATE_COMPANY = gql`\n mutation CreateCompany($companyDTO: CreateCompanyInput!, $founderId: Int!) {\n createCompany(createCompanyDTO: $companyDTO, founderId: $founderId) {\n company {\n id\n name\n logo\n phoneNumber\n country {\n id\n lng\n code\n isoCode\n }\n }\n }\n }\n`\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { CreateCompanyInput, UserCompanyRole } from 'types'\nimport { GraphQLUtils } from 'utils'\nimport { useUser } from 'hooks'\nimport { User, UserUserCompanyRole } from 'api/user'\n\nimport { CreateCompany, CreateCompanyVariables, CREATE_COMPANY } from './api'\n\nexport const useCreateCompany = (onSuccess: () => void) => {\n const { setActiveCompany } = ActiveCompanyContext.useActiveCompanyContext()\n const user = useUser()\n\n const [createCompanyMutation, mutationResult] = useMutation<\n CreateCompany,\n CreateCompanyVariables\n >(CREATE_COMPANY, {\n onCompleted: data => {\n const companyId = data.createCompany.company.id\n const countryId = data.createCompany.company.country.id\n const companyLanguage = data.createCompany.company.country.code\n const companyName = data.createCompany.company.name\n setActiveCompany({ id: companyId, countryId, language: companyLanguage, name: companyName })\n onSuccess()\n },\n update: (cache, { data: response }) => {\n if (!response) return\n\n cache.modify({\n // Workaraound because of this: https://github.com/apollographql/apollo-client/issues/7577\n id: cache.identify(user as unknown as StoreObject),\n fields: {\n companiesRoles(cachedCompaniesRoles) {\n const newCompanyRole = {\n role: UserCompanyRole.ADMIN,\n company: response.createCompany.company,\n __typename: 'CompanyRole',\n }\n if (!cachedCompaniesRoles) return [newCompanyRole] as UserUserCompanyRole[]\n return [...cachedCompaniesRoles, newCompanyRole] as UserUserCompanyRole[]\n },\n },\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n const createCompany = (companyDTO: CreateCompanyInput, founderId: number) => {\n createCompanyMutation({ variables: { companyDTO, founderId } })\n }\n\n return { createCompany, ...mutationResult }\n}\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\ninterface FormType {\n companyName: string\n country: string\n governmentId?: string\n region?: number\n subregion?: number\n}\n\nexport const useCreateCompanyForm = () => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n companyName: yup.string().required(t('validations.required')),\n country: yup.string().required(t('validations.required')),\n })\n\n return useForm({ resolver: yupResolver(validationSchema) })\n}\n","import { gql } from '@apollo/client'\n\n// eslint-disable-next-line camelcase\nexport type { Regions, Regions_regions_results as Region } from './types/Regions'\n\nexport const REGIONS = gql`\n query Regions {\n regions {\n results {\n id\n name\n }\n }\n }\n`\n","import { useQuery } from '@apollo/client'\n\nimport { REGIONS, Regions } from './api'\n\nexport const useOrganizationRegions = () => {\n const { data, loading } = useQuery(REGIONS)\n\n const regionsOptions = data?.regions.results.map(region => ({\n value: region.id,\n label: region.name,\n }))\n\n return {\n loading,\n regionsOptions,\n regions: data?.regions.results,\n }\n}\n","import { useMemo } from 'react'\n\nimport { useUser, useSubregions, usePermissions, useCommercialExecutives, useFeatures } from 'hooks'\n\nimport { useCreateOrganizationCompanyForm } from './useCreateOrganizationCompanyForm'\nimport { useOrganizationRegions } from './useOrganizationRegions'\nimport { useCreateCompany } from './useCreateCompany'\n\ninterface Props {\n onSuccess: () => void\n}\nexport const useCreateOrganizationCompany = ({ onSuccess }: Props) => {\n const user = useUser()\n const { permissions } = usePermissions()\n const { organizationFeatures } = useFeatures()\n const { createCompany, loading } = useCreateCompany(onSuccess)\n const { control, handleSubmit, watch } = useCreateOrganizationCompanyForm()\n const { regionsOptions, loading: isRegionsLoading } = useOrganizationRegions()\n\n const { data: allCommercialExecutives, loading: isCommercialExecutivesLoading } =\n useCommercialExecutives({\n skip: permissions.isCommercialUser,\n })\n\n const selectedCommercialExecutiveId = watch().commercialExecutiveId\n const selectedRegionId = watch().region\n\n const selectedRegion = useMemo(() => {\n if (permissions.isCommercialUser) {\n return user?.regions?.[0].id\n }\n if (permissions.isOrganizationAdmin && organizationFeatures.subFarmersManagement?.enabled) {\n return selectedRegionId\n }\n\n if (selectedCommercialExecutiveId) {\n return allCommercialExecutives?.find(\n commercial => commercial.id === selectedCommercialExecutiveId,\n )?.regions?.[0].id\n }\n return undefined\n }, [\n allCommercialExecutives,\n organizationFeatures.subFarmersManagement?.enabled,\n permissions.isCommercialUser,\n permissions.isOrganizationAdmin,\n selectedCommercialExecutiveId,\n selectedRegionId,\n user?.regions,\n ])\n\n const { subregions, loading: isSubregionsLoading } = useSubregions(selectedRegion)\n\n const subregionOptions = subregions?.map(subregion => {\n return { label: subregion.name, value: subregion.id }\n })\n\n const commercialExecutivesOptions = useMemo(() => {\n const commercialExecutive = permissions.isCommercialUser\n ? { id: user.id, fullName: `${user.name} ${user.lastName}` }\n : undefined\n\n if (permissions.isCommercialUser && commercialExecutive) {\n const options = [{ value: commercialExecutive?.id, label: commercialExecutive?.fullName }]\n return options\n }\n\n return allCommercialExecutives?.map(commercial => ({\n label: `${commercial.name} ${commercial.lastName}`,\n value: commercial.id,\n }))\n }, [allCommercialExecutives, permissions.isCommercialUser, user.id, user.lastName, user.name])\n\n return {\n user,\n permissions,\n loading,\n control,\n createCompany,\n handleSubmit,\n commercialExecutivesOptions,\n regionsOptions,\n selectedRegion,\n subregionOptions,\n isCommercialExecutivesLoading,\n isRegionsLoading,\n isSubregionsLoading,\n isCommercialExecutiveSelected: !!selectedCommercialExecutiveId,\n }\n}\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { useFeatures, usePermissions } from 'hooks'\n\ninterface FormType {\n companyName: string\n commercialExecutiveId?: number\n country: string\n governmentId?: string\n subregion: number\n region?: number\n phoneNumber?: string\n}\n\nexport const useCreateOrganizationCompanyForm = () => {\n const { t } = useTranslation('common')\n const { permissions } = usePermissions()\n const { organizationFeatures } = useFeatures()\n\n const validationSchema = yup.object().shape({\n companyName: yup.string().required(t('validations.required')),\n country: yup.string().required(t('validations.required')),\n region: organizationFeatures.subFarmersManagement?.enabled\n ? yup.number().required(t('validations.required'))\n : yup.number(),\n subregion: yup.number().required(t('validations.required')),\n governmentId: permissions.isFeatureSetGrupoDiana\n ? yup.string().required(t('validations.required'))\n : yup.string(),\n commercialExecutiveId: organizationFeatures.crm?.enabled\n ? yup.number().required(t('validations.required'))\n : yup.number(),\n phoneNumber: yup.string(),\n })\n\n return useForm({ resolver: yupResolver(validationSchema) })\n}\n","import { useQuery } from '@apollo/client'\n\nimport { CommercialExecutives, COMMERCIAL_EXECUTIVES } from 'api'\n\nexport const useCommercialExecutives = ({\n regionId,\n skip,\n}: {\n regionId?: number\n skip?: boolean\n}) => {\n const { data, loading } = useQuery(COMMERCIAL_EXECUTIVES, {\n variables: { regionId },\n skip,\n })\n\n return {\n loading,\n data: data?.commercialExecutives.results,\n }\n}\n","import { useState } from 'react'\nimport { Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { useUser } from 'hooks'\nimport { Button } from 'components'\nimport { CountryId } from 'types'\n\nimport { Modal, Description } from '../components'\nimport { CompanyForm } from './components'\nimport { useCreateCompany, useCreateCompanyForm } from '../../../hooks'\n\ninterface Props {\n isFirstCompany?: boolean\n onSuccess: () => void\n onCancel: () => void\n}\n\nexport const CreateCompanyModal: React.FC = ({ onSuccess, onCancel, isFirstCompany }) => {\n const { t } = useTranslation('company-settings')\n const [image, setImage] = useState()\n const [imageFile, setImageFile] = useState()\n\n const { control, handleSubmit } = useCreateCompanyForm()\n\n const user = useUser()\n const { createCompany, loading } = useCreateCompany(onSuccess)\n\n return (\n \n \n {isFirstCompany ? t('firstCompany.description') : t('newCompany.description')}\n \n {\n setImage(imageResult)\n setImageFile(file)\n }}\n control={control}\n isCreateCompanyMode\n />\n \n \n createCompany(\n { name: companyName, country: country as CountryId, logo: imageFile! },\n user.id,\n ),\n )}\n >\n {t('buttons.create')}\n \n \n \n )\n}\n","import { Control, Controller } from 'react-hook-form'\nimport { Row, Col, Form, Input, Select as AntSelect } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport PhoneInput from 'react-phone-input-2'\n\nimport { InputTitle } from 'components'\nimport { useCountries, useFeatures, usePermissions } from 'hooks'\nimport { ConversionUtils } from 'utils'\nimport { COUNTRIES } from 'consts'\n\nconst FormContainer = styled(Row)`\n margin-top: 22px;\n flex-flow: row;\n`\n\nconst Image = styled.img`\n background-position: center;\n width: 26px;\n height: 26px;\n margin-right: 13px;\n`\n\nconst Select = styled(AntSelect)`\n width: 100% !important;\n & .ant-select-selector {\n height: 55px !important;\n align-items: center;\n }\n` as typeof AntSelect\n\nconst FlexRow = styled(Row)`\n flex: 1;\n`\n\ninterface Props {\n control: Control<{\n companyName: string\n country: string\n governmentId?: string\n subregion: number\n commercialExecutiveId?: number\n region?: number\n phoneNumber?: string\n }>\n hideLocationInputs?: boolean\n organizationCountry: string\n selectedRegionId?: number\n commercialExecutiveId?: number\n subregionOptions: { label: string; value: number }[]\n commercialExecutivesOptions?: { label: string; value: number }[]\n regionOptions?: { label: string; value: number }[]\n selectedSubregionId?: number\n isUpdateMode?: boolean\n isCommercialExecutivesLoading?: boolean\n isRegionsLoading?: boolean\n isSubregionsLoading?: boolean\n onInputNameBlur?: () => void\n onInputGovernmentIdBlur?: () => void\n onSelectSubregionBlur?: () => void\n isCommercialExecutiveSelected?: boolean\n onInputPhoneNumberBlur?: () => void\n countryIsoCode?: string\n}\n\nexport const ClientForm: React.FC = ({\n control,\n organizationCountry,\n selectedRegionId,\n subregionOptions,\n selectedSubregionId,\n isUpdateMode,\n onInputNameBlur,\n onInputGovernmentIdBlur,\n onSelectSubregionBlur,\n hideLocationInputs,\n commercialExecutivesOptions,\n commercialExecutiveId,\n regionOptions,\n isCommercialExecutivesLoading,\n isRegionsLoading,\n isSubregionsLoading,\n isCommercialExecutiveSelected,\n onInputPhoneNumberBlur,\n countryIsoCode,\n}) => {\n const { t } = useTranslation('company-settings')\n const { t: commonT } = useTranslation('common')\n const { countries, loading } = useCountries()\n const { organizationFeatures } = useFeatures()\n const { permissions } = usePermissions()\n const { colors, foundation } = useTheme()\n\n const getLocalizedNumber = (value?: string) => {\n if (!value) return ''\n const onlyNumbers = ConversionUtils.keepOnlyNumbers(value)\n if (!onlyNumbers) return ''\n const localizedNumber = commonT('systemsFormat.localizeNumber', {\n val: onlyNumbers,\n })\n return localizedNumber\n }\n\n return (\n <>\n \n \n \n \n \n (\n \n {\n onInputNameBlur?.()\n onBlur()\n }}\n {...restFieldProps}\n onChange={event =>\n onChange(ConversionUtils.autoCapitalize(event.target.value))\n }\n />\n \n )}\n />\n \n \n \n (\n \n {\n onInputPhoneNumberBlur?.()\n onBlur()\n }}\n country={countryIsoCode}\n inputStyle={{\n border: `2px solid ${colors.grey2}`,\n width: '100%',\n height: '42px',\n borderRadius: foundation.borderRadius,\n }}\n {...restFieldProps}\n />\n \n )}\n />\n \n \n \n\n {organizationFeatures.crm?.enabled && (\n \n \n (\n \n {\n onInputGovernmentIdBlur?.()\n onBlur()\n }}\n value={getLocalizedNumber(value)}\n {...restFieldProps}\n onChange={event => onChange(getLocalizedNumber(event.target.value))}\n />\n \n )}\n />\n \n )}\n \n\n {!isUpdateMode && organizationFeatures.crm?.enabled && (\n \n \n \n (\n \n onChange(event)}\n options={commercialExecutivesOptions}\n />\n \n )}\n />\n \n \n )}\n\n {!hideLocationInputs && (\n \n \n \n (\n \n {\n onBlur()\n }}\n {...restFieldProps}\n value={organizationCountry}\n >\n {countries?.map(country => (\n \n \n {country.name}\n \n ))}\n \n \n )}\n />\n \n \n \n (\n \n onChange(event)}\n options={regionOptions}\n value={selectedRegionId}\n />\n \n )}\n />\n \n \n \n (\n \n {\n onSelectSubregionBlur?.()\n onBlur()\n }}\n disabled={organizationFeatures.crm?.enabled && !isCommercialExecutiveSelected}\n {...restFieldProps}\n onChange={event => onChange(event)}\n options={subregionOptions}\n defaultValue={selectedSubregionId}\n />\n \n )}\n />\n \n \n )}\n \n )\n}\n","import { Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { Button } from 'components'\nimport { ConversionUtils } from 'utils'\nimport { CountryId } from 'types'\n\nimport { Modal, Description } from '../components'\nimport { ClientForm } from './components'\nimport { useCreateOrganizationCompany } from '../../../hooks'\n\ninterface Props {\n onSuccess: () => void\n onCancel: () => void\n}\n\nexport const CreateClientModal: React.FC = ({ onSuccess, onCancel }) => {\n const { t } = useTranslation('company-settings')\n const {\n createCompany,\n loading,\n control,\n handleSubmit,\n selectedRegion,\n subregionOptions,\n commercialExecutivesOptions,\n permissions,\n user,\n regionsOptions,\n isCommercialExecutivesLoading,\n isRegionsLoading,\n isSubregionsLoading,\n isCommercialExecutiveSelected,\n } = useCreateOrganizationCompany({ onSuccess })\n\n return (\n \n {t('newCompany.agrosalesDescription')}\n \n \n \n createCompany(\n {\n name: companyName,\n country: country as CountryId,\n organizationId: user.organizationRole?.organization.id,\n governmentId: governmentId\n ? ConversionUtils.keepOnlyNumbers(governmentId)\n : undefined,\n subregionId: subregion,\n phoneNumber: phoneNumber ? `+${phoneNumber}` : undefined,\n },\n permissions.isOrganizationAdmin && commercialExecutiveId\n ? commercialExecutiveId\n : user.id,\n ),\n )}\n >\n {t('buttons.createClient')}\n \n \n \n )\n}\n","import { gql } from '@apollo/client'\n\nexport type { Company, CompanyVariables } from './types/Company'\n\nexport const COMPANY = gql`\n query Company($id: Int!) {\n company(id: $id) {\n id\n name\n logo\n }\n }\n`\n","import { useQuery } from '@apollo/client'\nimport { Spin, Row, Col, Image as AntImage, Typography } from 'antd'\nimport styled from 'styled-components'\nimport { ShopOutlined as AntShopOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal, Button } from 'components'\n\nimport { Company, CompanyVariables, COMPANY } from './api'\n\nconst { Title } = Typography\n\ninterface Props {\n companyId: number\n onSuccess: () => void\n onCancel: () => void\n}\n\nconst ImageContainer = styled(Col)`\n width: 156px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n overflow: hidden;\n`\n\nconst Image = styled(AntImage)`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: 156px;\n`\nconst ShopOutlined = styled(AntShopOutlined)`\n font-size: 156px;\n`\n\nconst Description = styled(Title)`\n color: ${({ theme }) => theme.colors.olive} !important;\n font-style: normal !important;\n font-weight: 400 !important;\n line-height: 35px !important;\n`\n\nexport const CompanyCreationFeedbackModal: React.FC = ({\n companyId,\n onSuccess,\n onCancel,\n}) => {\n const { t } = useTranslation('company-settings')\n const { data, loading } = useQuery(COMPANY, {\n variables: { id: companyId },\n })\n\n return (\n \n {!data && loading ? (\n \n ) : (\n data && (\n <>\n \n \n \n {data.company.logo ? (\n \n ) : (\n \n )}\n \n \n \n {t('feedbackModal')}\n \n \n \n \n \n \n )\n )}\n \n )\n}\n","import styled, { useTheme } from 'styled-components'\n\nimport { ChlorophyllIcon, DropIcon } from 'assets/icons'\nimport { IndicatorStatus, Indicators } from 'types'\n\ninterface IconProps {\n background: string\n}\nconst IconContainer = styled.div`\n width: 36px;\n height: 36px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${({ background }) => background};\n`\ninterface Props {\n type: Indicators\n indicatorStatus?: IndicatorStatus\n}\n\nexport const Indicator: React.FC = ({ type, indicatorStatus }) => {\n const { colors } = useTheme()\n\n const indicatorBackground = {\n [IndicatorStatus.GOOD]: colors.new.trafficLightGreen,\n [IndicatorStatus.MEDIUM]: colors.new.trafficLightYellow,\n [IndicatorStatus.BAD]: colors.new.trafficLightRed,\n }\n\n const getIndicatorBackground = (indicator?: IndicatorStatus) => {\n if (!indicator) return colors.grey2\n return indicatorBackground[indicator]\n }\n\n return (\n \n {type === Indicators.CHLOROPHYLL ? (\n \n ) : (\n \n )}\n \n )\n}\n","import { Marker } from 'react-map-gl'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\nimport { Typography } from 'antd'\n\nimport { DrawArea } from 'features/MainRouter/features/Map/types'\n\nconst { Text: AntText } = Typography\n\nexport const TooltipText = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive} !important;\n font-family: Inter;\n font-size: 12px;\n`\n\nconst TooltipTextContainer = styled.div`\n background-color: ${({ theme }) => theme.colors.white};\n padding: 0 10px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n`\n\ninterface Props {\n drawAreaInformation: DrawArea\n}\nexport const AreaTooltip: React.FC = ({ drawAreaInformation }) => {\n const { t: commonT } = useTranslation('common')\n\n return (\n \n \n \n {commonT('systemsFormat.area', { val: { area: drawAreaInformation.area } })}\n \n \n \n )\n}\n","import { Layout as AntLayout } from 'antd'\nimport styled from 'styled-components'\n\nexport { CreateCompanyModal, CreateClientModal } from './create-company-modals'\nexport { CompanyCreationFeedbackModal } from './CompanyCreationFeedbackModal'\nexport { Indicator } from './Indicator'\nexport { AreaTooltip } from './AreaTooltip'\n\nexport const Layout = styled(AntLayout)`\n height: 100%;\n`\n\nexport const Content = styled(AntLayout.Content)`\n position: relative;\n`\n\nexport const Sider = styled(AntLayout.Sider)`\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]} !important;\n`\n","import { Row, Col, Typography } from 'antd'\nimport styled from 'styled-components'\nimport { ApolloError } from '@apollo/client'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal, Button, InputTitle, FormInput } from 'components'\n\nimport { useUpdatePassword, Form } from './hooks'\n\nconst { Text: AntText } = Typography\n\nconst Text = styled(AntText)`\n width: 100%;\n color: ${({ theme }) => theme.colors.errorRed};\n`\n\nconst ButtonContainer = styled(Row)`\n width: 100%;\n margin-top: 22px;\n justify-content: flex-end;\n`\n\ninterface Props {\n onCancel: () => void\n onSubmit: (form: Form) => void\n error?: ApolloError\n loading: boolean\n}\n\nexport const ChangePasswordModal: React.FC = ({ onCancel, onSubmit, error, loading }) => {\n const { control, handleSubmit } = useUpdatePassword()\n const { t } = useTranslation('account-settings')\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {error && {t('changePasswordModal.errorText')}}\n \n \n \n \n \n )\n}\n","import { useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { VALIDATIONS } from 'consts'\n\nexport interface Form {\n actualPassword: string\n password: string\n passwordConfirm: string\n}\n\nexport const useUpdatePassword = () => {\n const { t } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n actualPassword: yup\n .string()\n .min(\n VALIDATIONS.PASSWORD_MIN_LENGTH,\n t('validations.minLength', { minLength: VALIDATIONS.PASSWORD_MIN_LENGTH }),\n )\n .required(t('validations.required')),\n password: yup\n .string()\n .min(\n VALIDATIONS.PASSWORD_MIN_LENGTH,\n t('validations.minLength', { minLength: VALIDATIONS.PASSWORD_MIN_LENGTH }),\n )\n .required(t('validations.required')),\n passwordConfirm: yup\n .string()\n .oneOf([yup.ref('password')], t('validations.equalPassword'))\n .required(t('validations.required')),\n })\n return useForm({ resolver: yupResolver(validationSchema) })\n}\n","import { Typography, Space, Col } from 'antd'\nimport styled from 'styled-components'\n\nexport { ChangePasswordModal } from './ChangePasswordModal'\n\nconst { Title } = Typography\n\nexport const Description = styled(Title)`\n font-weight: 400 !important;\n font-style: normal !important;\n line-height: 26px !important;\n margin-bottom: 22px !important;\n`\n\nexport const InputsCol = styled(Col)`\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n`\n\nexport const ButtonsContainer = styled(Space).attrs({\n size: 20,\n})`\n width: 100%;\n margin-top: 22px;\n justify-content: flex-end;\n`\n","import { Row, Col, Input } from 'antd'\nimport { useState } from 'react'\nimport { useForm } from 'react-hook-form'\nimport * as yup from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal, Button, Upload, InputTitle, FormInput } from 'components'\nimport { useUser, useUpdateUser } from 'hooks'\n\nimport { Description, InputsCol, ButtonsContainer, ChangePasswordModal } from './components'\n\ninterface Props {\n onCancel: () => void\n}\n\ninterface FormType {\n profilePicture?: File\n name: string\n lastName: string\n}\n\nconst validationSchema = yup.object().shape({\n profilePicture: yup.mixed() as yup.MixedSchema,\n name: yup.string().required(),\n lastName: yup.string().required(),\n})\n\nexport const AccountSettingsModal: React.FC = ({ onCancel }) => {\n const user = useUser()\n const { t } = useTranslation('account-settings')\n const { t: commonT } = useTranslation('common')\n\n const { updateUser, loading, error } = useUpdateUser(onCancel)\n\n const [showChangePasswordModal, setShowChangePasswordModal] = useState(false)\n const [image, setImage] = useState()\n\n const { handleSubmit, setValue, control } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: { name: user.name, lastName: user.lastName },\n })\n\n return (\n <>\n \n {t('editText')}\n \n \n {\n setImage(imageResult)\n setValue('profilePicture', file)\n }}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n updateUser({\n variables: {\n id: user.id,\n updateUserDTO: {\n profilePicture,\n name,\n lastName,\n },\n },\n }),\n )}\n >\n {t('buttons.save')}\n \n \n \n {showChangePasswordModal && (\n setShowChangePasswordModal(false)}\n error={error}\n loading={loading}\n onSubmit={({ password, actualPassword }) =>\n updateUser({\n variables: {\n id: user.id,\n updateUserDTO: {\n password,\n actualPassword,\n },\n },\n })\n }\n />\n )}\n \n )\n}\n","import { Select } from 'antd'\nimport { useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { usePermissions } from 'hooks'\nimport { UserCompanyRole } from 'types'\n\ntype Props = Omit, 'onChange'> & {\n onChange: (role: UserCompanyRole) => void\n}\n\nexport const RoleSelect: React.FC = ({ onChange, ...restProps }) => {\n const { t } = useTranslation('common')\n const { permissions } = usePermissions()\n\n const localizeRole = (role: UserCompanyRole) => t(`roles.${role}`)\n\n const roles = useMemo(() => {\n const allRoles = Object.values(UserCompanyRole)\n if (permissions.satelliteImagery) {\n return allRoles\n }\n\n return allRoles.filter(role => role !== UserCompanyRole.IRRIGATION_WORKER)\n }, [permissions.satelliteImagery])\n\n return (\n {\n onChange(newRole as UserCompanyRole)\n }}\n {...restProps}\n >\n {roles.map(role => (\n \n {localizeRole(role)}\n \n ))}\n \n )\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n CompanyWithUsers,\n CompanyWithUsersVariables,\n CompanyWithUsers_company_usersRoles as UserRole,\n CompanyWithUsers_company_invitations as Invitation,\n CompanyWithUsers_company_subregion as Subregion,\n CompanyWithUsers_company_usersRoles_user_organizationRole as CompanyUserOrganizationRole,\n} from './types/CompanyWithUsers'\nexport type { LeaveCompany, LeaveCompanyVariables } from './types/LeaveCompany'\nexport type { ChangeUserRole, ChangeUserRoleVariables } from './types/ChangeUserRole'\nexport type { InviteUser, InviteUserVariables } from './types/InviteUser'\nexport type {\n ResendCompanyInvitation,\n ResendCompanyInvitationVariables,\n} from './types/ResendCompanyInvitation'\n\nexport const COMPANY_WITH_USERS = gql`\n query CompanyWithUsers($id: Int!) {\n company(id: $id) {\n id\n name\n logo\n governmentId\n irrigationWorkersAccessMode\n phoneNumber\n subregion {\n id\n region {\n id\n name\n }\n }\n organization {\n id\n }\n country {\n id\n }\n usersRoles {\n role\n user {\n id\n email\n name\n lastName\n isVerified\n profilePicture\n organizationRole {\n role\n }\n }\n }\n invitations {\n id\n email\n role\n }\n }\n }\n`\n\nexport const LEAVE_COMPANY = gql`\n mutation LeaveCompany($companyId: Int!, $userId: Int!) {\n leaveCompany(companyId: $companyId, userId: $userId) {\n user {\n id\n email\n companiesRoles {\n role\n company {\n id\n name\n country {\n id\n lng\n code\n }\n }\n }\n }\n }\n }\n`\n\nexport const CHANGE_USER_ROLE = gql`\n mutation ChangeUserRole($userId: Int!, $companyId: Int!, $role: UserCompanyRole!) {\n changeUserRole(userId: $userId, companyId: $companyId, role: $role) {\n company {\n id\n name\n usersRoles {\n role\n user {\n id\n email\n }\n }\n }\n }\n }\n`\n\nexport const INVITE_USER = gql`\n mutation InviteUser($inviteUserDTO: InviteUserInput!) {\n inviteUser(inviteUserDTO: $inviteUserDTO) {\n company {\n id\n name\n usersRoles {\n role\n user {\n id\n email\n }\n }\n invitations {\n id\n email\n role\n }\n }\n }\n }\n`\n\nexport const RESEND_COMPANY_INVITATION = gql`\n mutation ResendCompanyInvitation($id: Int!) {\n resendInvitation(id: $id) {\n success\n }\n }\n`\n","import { Table as AntTable, Button as BaseButton, Typography } from 'antd'\nimport { ColumnsType } from 'antd/lib/table'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { UserAvatar } from 'components'\nimport { TABLE } from 'consts'\nimport { UserCompanyRole } from 'types'\nimport { ShareArrowIcon } from 'assets/icons'\n\nimport { Invitation, UserRole, CompanyUserOrganizationRole } from '../../api'\nimport { RoleSelect } from '../RoleSelect'\nimport { useCompanyResendInvitation } from './hooks'\n\nconst { Text } = Typography\n\nconst StyledRoleSelect = styled(RoleSelect)`\n width: 100%;\n`\n\nconst Button = styled(BaseButton).attrs({\n type: 'primary',\n})`\n width: 40px !important;\n height: 40px !important;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nconst Table = styled(AntTable)`\n & .ant-table-header {\n padding-bottom: ${({ scroll }) => scroll && '16px '};\n }\n .ant-table-thead .ant-table-cell {\n background-color: ${({ theme }) => theme.colors.grey2};\n &:before {\n width: 0px !important;\n }\n }\n & .ant-table-cell-scrollbar {\n box-shadow: none;\n }\n\n .ant-table-tbody .ant-table-cell {\n border-bottom: ${({ theme }) => `5px solid ${theme.colors.grey2}`};\n }\n .ant-table-row {\n &:last-child {\n .ant-table-cell {\n border-bottom: 0 !important;\n }\n }\n }\n` as typeof AntTable\n\ninterface TableUser {\n key: string\n id?: number\n fullname?: string\n email: string\n role: UserCompanyRole\n profilePicture?: string\n organizationRole?: CompanyUserOrganizationRole\n invitationId?: number\n}\n\ninterface Props {\n users: UserRole[]\n invitations: Invitation[]\n isReadOnly?: boolean\n onUserRoleChange: (userId: number, role: UserCompanyRole) => void\n currentUserId: number\n isAnOrganizationCompany: boolean\n isAnOrganizationUser: boolean\n}\n\nexport const CompanyUsersTable: React.FC = ({\n users,\n invitations,\n isReadOnly,\n onUserRoleChange,\n currentUserId,\n isAnOrganizationCompany,\n isAnOrganizationUser,\n}) => {\n const { t } = useTranslation('company-settings')\n const { resendCompanyInvitation, inviteLoadingId } = useCompanyResendInvitation()\n\n const mappedUsers: TableUser[] = users.map(({ user, role }) => ({\n id: user.id,\n key: user.id.toString(),\n fullname: `${user.name} ${user.lastName}`,\n email: user.email,\n profilePicture: user.profilePicture ?? undefined,\n role,\n organizationRole: user.organizationRole ?? undefined,\n }))\n const mappedInvitations: TableUser[] = invitations.map(invitation => ({\n key: invitation.email,\n email: invitation.email,\n role: invitation.role,\n invitationId: invitation.id,\n }))\n\n const isDataSourceBiggerThanMaxTableUsers =\n mappedUsers.length + mappedInvitations.length > TABLE.MAX_TABLE_DATA\n const columns: ColumnsType = [\n {\n title: t('usersTable.member'),\n width: isDataSourceBiggerThanMaxTableUsers ? '16%' : undefined,\n render: (user: TableUser) => ,\n },\n {\n render: (user: TableUser) => {user.fullname ?? t('usersTable.guestUser')},\n width: isDataSourceBiggerThanMaxTableUsers ? '25%' : undefined,\n },\n {\n render: (user: TableUser) => {user.email},\n width: isDataSourceBiggerThanMaxTableUsers ? '40%' : undefined,\n },\n {\n title: t('usersTable.role'),\n width: '30%',\n render: (invitedUser: TableUser) => (\n onUserRoleChange(invitedUser.id!, newRole)}\n />\n ),\n },\n {\n width: '10%',\n render: (invitedUser: TableUser) => {\n return (\n <>\n {!isReadOnly && invitedUser.invitationId && (\n }\n loading={inviteLoadingId === invitedUser.invitationId}\n onClick={() => resendCompanyInvitation(invitedUser.invitationId!)}\n />\n )}\n \n )\n },\n },\n ]\n\n return (\n \n )\n}\n","import { useMutation } from '@apollo/client'\nimport { useCallback, useState } from 'react'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n RESEND_COMPANY_INVITATION,\n ResendCompanyInvitation,\n ResendCompanyInvitationVariables,\n} from '../../../api'\n\nexport const useCompanyResendInvitation = () => {\n const [updatedId, setUpdatedId] = useState()\n\n const [resend] = useMutation(\n RESEND_COMPANY_INVITATION,\n {\n onError: error => {\n setUpdatedId(undefined)\n GraphQLUtils.errorHandler(error)\n },\n onCompleted: () => {\n setUpdatedId(undefined)\n },\n },\n )\n\n const resendCompanyInvitation = useCallback(\n (invitationId: number) => {\n setUpdatedId(invitationId)\n resend({ variables: { id: invitationId } })\n },\n [resend],\n )\n\n return { resendCompanyInvitation, inviteLoadingId: updatedId }\n}\n","import { yupResolver } from '@hookform/resolvers/yup'\nimport { Row, Col, Form, Input } from 'antd'\nimport { useForm, Controller } from 'react-hook-form'\nimport * as yup from 'yup'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal as ModalBase, InputTitle, Button } from 'components'\nimport { UserCompanyRole } from 'types'\n\nimport { RoleSelect } from '../RoleSelect'\n\nconst StyledRoleSelect = styled(RoleSelect)`\n width: 100%;\n`\n\nconst Description = styled(Row)`\n margin-bottom: 10px;\n font-size: 16px;\n line-height: 26px;\n font-weight: 400;\n font-style: normal;\n`\n\nconst Modal = styled(ModalBase)`\n width: 600px !important;\n`\n\ninterface Props {\n isAnOrganizationCompany?: boolean\n onInvite: (email: string, role: UserCompanyRole) => void\n onCancel: () => void\n}\n\nexport const InviteUserModal: React.FC = ({\n isAnOrganizationCompany,\n onInvite,\n onCancel,\n}) => {\n const { t: commonT } = useTranslation('common')\n\n const validationSchema = yup.object().shape({\n email: yup\n .string()\n .email(commonT('validations.email'))\n .required(commonT('validations.required')),\n role: yup\n .string()\n .is([...Object.keys(UserCompanyRole)])\n .required(commonT('validations.required')),\n })\n\n const { control, handleSubmit } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: { role: UserCompanyRole.VIEWER },\n })\n\n const { t } = useTranslation('company-settings')\n\n return (\n \n \n {isAnOrganizationCompany\n ? t('newMemberModal.descriptionClient')\n : t('newMemberModal.description')}\n \n \n \n \n (\n \n onChange(event.target.value)} {...restFieldProps} />\n \n )}\n />\n \n \n \n (\n onChange(role)} />\n )}\n />\n \n \n \n \n \n \n )\n}\n","import { Row, Button, Space } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Modal as ModalBase } from 'components'\n\nconst Modal = styled(ModalBase)`\n width: 450px !important;\n`\n\nconst Description = styled(Row)`\n padding-right: 10px;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n`\n\nconst ButtonsContainer = styled(Space).attrs({\n size: 20,\n})`\n width: 100%;\n justify-content: flex-end;\n margin-top: 22px;\n & button {\n width: 114px;\n }\n\n & div:last-child > button {\n background-color: ${({ theme }) => theme.colors.grey3};\n color: ${({ theme }) => theme.colors.white};\n }\n`\n\ninterface Props {\n onLeaveCompany: () => void\n onCancel: () => void\n loading: boolean\n isAnOrganizationCompany?: boolean\n}\n\nexport const LeaveCompanyModal: React.FC = ({\n onCancel,\n onLeaveCompany,\n loading,\n isAnOrganizationCompany,\n}) => {\n const { t } = useTranslation('company-settings')\n const { t: commonT } = useTranslation('common')\n\n const translationType = isAnOrganizationCompany ? 'leaveFarmerModal' : 'leaveCompanyModal'\n\n return (\n \n <>\n {t(`${translationType}.description`)}\n \n \n \n \n \n \n )\n}\n","import React from 'react'\nimport { useForm } from 'react-hook-form'\nimport { gql, StoreObject, useMutation } from '@apollo/client'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport { useTranslation } from 'react-i18next'\n\nimport { ClientForm } from 'features/MainRouter/components/create-company-modals/CreateClientModal/components'\nimport { usePermissions, useSubregions, useUser } from 'hooks'\nimport { UpdateCompany, UpdateCompanyVariables, UPDATE_COMPANY } from 'api'\nimport { ConversionUtils, GraphQLUtils } from 'utils'\nimport { useOrganizationRegions } from 'features/MainRouter/hooks'\n\nimport { Props } from '../../types'\n\ninterface FormType {\n companyName: string\n country: string\n governmentId?: string\n subregion: number\n region?: number\n phoneNumber?: string\n}\n\nexport const UpdateClientForm: React.FC = ({ companyId, data }) => {\n const user = useUser()\n const { permissions } = usePermissions()\n const { t: commonT } = useTranslation('common')\n const [updateCompany] = useMutation(UPDATE_COMPANY, {\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!response || !variables) return\n\n const company: StoreObject = { id: variables.id, __typename: 'Company' }\n cache.modify({\n id: cache.identify(company),\n fields: {\n subregion(cachedSubregion) {\n const newSubregion = cache.identify({\n id: response.updateCompany.company.subregionId,\n __typename: 'Subregion',\n })\n if (newSubregion) {\n const ref = cache.readFragment({\n id: newSubregion,\n fragment: gql`\n fragment Subregion on Subregion {\n id\n }\n `,\n })\n return ref\n }\n return cachedSubregion\n },\n },\n })\n },\n })\n const { regionsOptions } = useOrganizationRegions()\n\n const validationSchema = yup.object().shape({\n companyName: yup.string().required(commonT('validations.required')),\n governmentId: permissions.isFeatureSetGrupoDiana\n ? yup.string().required(commonT('validations.required'))\n : yup.string(),\n country: yup.string().required(commonT('validations.required')),\n subregion: yup.number().required(commonT('validations.required')),\n region: yup.number(),\n phoneNumber: yup.string(),\n })\n\n const { control, handleSubmit, watch } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: {\n companyName: data.companyName,\n country: data.country,\n governmentId: data.governmentId,\n subregion: data.subregion?.id,\n region: data.subregion?.region?.id,\n phoneNumber: data.phoneNumber,\n },\n })\n\n const selectedRegion = watch().region\n\n const { subregions } = useSubregions(selectedRegion)\n\n const subregionOptions = subregions?.map(subregion => {\n return { label: subregion.name, value: subregion.id }\n })\n\n const countryIsoCode = !data.phoneNumber\n ? user?.organizationRole?.organization.country.isoCode.toLowerCase()\n : undefined\n\n return (\n {\n updateCompany({ variables: { id: companyId, updateCompanyDTO: { name: companyName } } })\n })}\n onInputGovernmentIdBlur={handleSubmit(({ governmentId }) => {\n updateCompany({\n variables: {\n id: companyId,\n updateCompanyDTO: {\n governmentId: governmentId\n ? ConversionUtils.keepOnlyNumbers(governmentId)\n : undefined,\n },\n },\n })\n })}\n onSelectSubregionBlur={handleSubmit(({ subregion }) => {\n updateCompany({\n variables: { id: companyId, updateCompanyDTO: { subregionId: subregion } },\n })\n })}\n onInputPhoneNumberBlur={handleSubmit(({ phoneNumber }) => {\n updateCompany({\n variables: {\n id: companyId,\n updateCompanyDTO: { phoneNumber: phoneNumber?.length ? `+${phoneNumber}` : undefined },\n },\n })\n })}\n />\n )\n}\n","import { Row } from 'antd'\nimport styled from 'styled-components'\n\nimport { Button } from 'components'\n\nexport { UpdateClientForm } from './UpdateClientForm'\n\nexport const StyledRow = styled(Row)`\n margin: 6px 0 30px 0;\n`\n\nexport const DeleteCompanyButton = styled(Button)`\n width: 100%;\n background-color: ${({ theme }) => theme.colors.grey3};\n color: ${({ theme }) => theme.colors.white};\n`\n","import { Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { UpdateClientForm, StyledRow, DeleteCompanyButton } from './components'\nimport { Props } from './types'\n\ninterface FarmerInformationProps extends Props {\n onDeleteCompanyButtonClick: () => void\n isReadOnly: boolean\n}\n\nexport const FarmerInformation: React.FC = ({\n data,\n companyId,\n onDeleteCompanyButtonClick,\n isReadOnly,\n}) => {\n const { t } = useTranslation('company-settings')\n\n return (\n <>\n \n \n \n \n {t('buttons.deleteCompany')}\n \n \n \n \n )\n}\n","import React, { useEffect, useState } from 'react'\nimport { useMutation } from '@apollo/client'\nimport * as yup from 'yup'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { useTranslation } from 'react-i18next'\nimport { useForm } from 'react-hook-form'\n\nimport { CompanyForm } from 'features/MainRouter/components/create-company-modals/CreateCompanyModal/components'\nimport { UpdateCompany, UpdateCompanyVariables, UPDATE_COMPANY } from 'api'\nimport { GraphQLUtils } from 'utils'\n\ninterface FormType {\n companyName: string\n country: string\n}\n\ninterface Props {\n companyId: number\n data: { companyName?: string; logo?: string; countryId?: string }\n isReadOnly: boolean\n}\n\nexport const UpdateCompanyForm: React.FC = ({ companyId, data, isReadOnly }) => {\n const [image, setImage] = useState()\n const { t: commonT } = useTranslation('common')\n\n const [updateCompany] = useMutation(UPDATE_COMPANY, {\n onError: GraphQLUtils.errorHandler,\n })\n\n const validationSchema = yup.object().shape({\n companyName: yup.string().required(commonT('validations.required')),\n country: yup.string().required(commonT('validations.required')),\n })\n\n const { control, handleSubmit, reset } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: {\n companyName: data.companyName ?? '',\n country: data.countryId!,\n },\n })\n\n useEffect(() => {\n reset({ companyName: data.companyName, country: data.countryId })\n }, [reset, data])\n\n return (\n {\n setImage(imageResult)\n updateCompany({ variables: { id: companyId, updateCompanyDTO: { logo: file } } })\n }}\n control={control}\n onInputNameBlur={handleSubmit(({ companyName }) => {\n updateCompany({ variables: { id: companyId, updateCompanyDTO: { name: companyName } } })\n })}\n isReadyOnly={isReadOnly}\n selectedCompanyCountry={data.countryId}\n />\n )\n}\n","import { Space, Typography } from 'antd'\nimport styled from 'styled-components'\n\nimport { Button } from 'components'\n\nconst { Title } = Typography\n\nexport { CompanyUsersTable } from './CompanyUsersTable'\nexport { InviteUserModal } from './InviteUserModal'\nexport { LeaveCompanyModal } from './LeaveCompanyModal'\nexport { FarmerInformation } from './FarmerInformation'\nexport { UpdateCompanyForm } from './UpdateCompanyForm'\n\nexport const UsersSectionTitle = styled(Title)`\n margin-bottom: 0px !important;\n`\n\nexport const ButtonsContainer = styled(Space).attrs({\n size: 'large',\n})``\n\nexport const StyledButton = styled(Button)`\n width: 100%;\n`\n\nexport const LeaveCompanyButton = styled(StyledButton)`\n background-color: ${({ theme }) => theme.colors.grey3};\n color: ${({ theme }) => theme.colors.white};\n &:hover {\n background-color: ${({ theme }) => theme.colors.grey3} !important;\n color: ${({ theme }) => theme.colors.white} !important;\n border-color: ${({ theme }) => theme.colors.grey3} !important;\n }\n`\n\nexport const Container = styled(Space).attrs({\n direction: 'vertical',\n size: 20,\n})`\n width: 100%;\n`\n","import { gql } from '@apollo/client'\n\nexport type { DeleteCompany, DeleteCompanyVariables } from './types/DeleteCompany'\n\nexport const DELETE_COMPANY = gql`\n mutation DeleteCompany($id: Int!) {\n deleteCompany(id: $id) {\n user {\n id\n email\n companiesRoles {\n role\n company {\n id\n name\n country {\n id\n lng\n code\n }\n }\n }\n }\n }\n }\n`\n","import { StoreObject, useMutation, useQuery } from '@apollo/client'\nimport { useMemo, useState } from 'react'\nimport { RadioChangeEvent } from 'antd'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { GraphQLUtils } from 'utils'\nimport { UserUserCompanyRole } from 'api/user'\nimport { usePermissions, useUser } from 'hooks'\nimport { UPDATE_COMPANY, UpdateCompany, UpdateCompanyVariables, User } from 'api'\nimport { IrrigationWorkersAccessMode, UserCompanyRole } from 'types'\n\nimport {\n CHANGE_USER_ROLE,\n COMPANY_WITH_USERS,\n ChangeUserRole,\n ChangeUserRoleVariables,\n CompanyWithUsers,\n CompanyWithUsersVariables,\n INVITE_USER,\n InviteUser,\n InviteUserVariables,\n LEAVE_COMPANY,\n LeaveCompany,\n LeaveCompanyVariables,\n} from '../api'\nimport { useDeleteCompany } from './useDeleteCompany'\n\ninterface Props {\n companyId: number\n onCancel: () => void\n}\nexport const useCompanySettings = ({ companyId, onCancel }: Props) => {\n const { setActiveCompany } = ActiveCompanyContext.useActiveCompanyContext()\n const [showLeaveCompanyModal, setShowLeaveCompanyModal] = useState(false)\n const [showDeleteCompanyModal, setShowDeleteCompanyModal] = useState(false)\n\n const { permissions } = usePermissions()\n\n const user = useUser()\n\n const { data } = useQuery(COMPANY_WITH_USERS, {\n variables: { id: companyId },\n })\n\n const company = data?.company\n\n const [leaveCompany, { loading: leaveCompanyLoading }] = useMutation<\n LeaveCompany,\n LeaveCompanyVariables\n >(LEAVE_COMPANY, {\n onCompleted: leaveCompanyResponse => {\n setShowLeaveCompanyModal(false)\n onCancel()\n const newActiveCompanyId =\n leaveCompanyResponse.leaveCompany.user.companiesRoles?.length &&\n leaveCompanyResponse.leaveCompany.user.companiesRoles[0].company.id\n const newActiveCountryId = leaveCompanyResponse.leaveCompany.user.companiesRoles?.length\n ? leaveCompanyResponse.leaveCompany.user.companiesRoles[0].company.country.id\n : undefined\n const newActiveCompanyName = leaveCompanyResponse.leaveCompany.user.companiesRoles?.length\n ? leaveCompanyResponse.leaveCompany.user.companiesRoles[0].company.name\n : undefined\n\n setActiveCompany({\n id: newActiveCompanyId,\n countryId: newActiveCountryId,\n name: newActiveCompanyName,\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n const [inviteUser, { loading: inviteUserLoading }] = useMutation(\n INVITE_USER,\n {\n onError: GraphQLUtils.errorHandler,\n },\n )\n\n const [changeUserRole] = useMutation(CHANGE_USER_ROLE, {\n update: (cache, { data: response }) => {\n if (!response) return\n const newUserRole = response.changeUserRole.company.usersRoles?.find(\n userRole => userRole.user.id === user.id,\n )\n if (!newUserRole) return\n\n cache.modify({\n // Workaraound because of this: https://github.com/apollographql/apollo-client/issues/7577\n id: cache.identify(user as unknown as StoreObject),\n fields: {\n companiesRoles(cachedData) {\n const cachedCompaniesRoles = cachedData as UserUserCompanyRole[] | undefined\n const newCompanyRole = {\n role: newUserRole.role,\n company: response.changeUserRole.company,\n __typename: 'CompanyRole',\n } as unknown as UserUserCompanyRole\n if (!cachedCompaniesRoles) return [newCompanyRole]\n return [...cachedCompaniesRoles, newCompanyRole]\n },\n },\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n const [updateCompany] = useMutation(UPDATE_COMPANY, {\n onError: GraphQLUtils.errorHandler,\n })\n\n const onUserRoleChange = (userId: number, role: UserCompanyRole) => {\n changeUserRole({ variables: { userId, role, companyId } })\n }\n\n const isAnOrganizationCompany = !!company?.organization?.id\n\n const userCompanyRole = company?.usersRoles?.find(userRole => userRole.user.id === user.id)?.role\n\n const irrigationWorkersAccessMode = company?.irrigationWorkersAccessMode\n\n const changeIrrigationWorkerAccessMode = ({ target: { value } }: RadioChangeEvent) => {\n updateCompany({\n variables: {\n id: companyId,\n updateCompanyDTO: { irrigationWorkersAccessMode: value as IrrigationWorkersAccessMode },\n },\n })\n }\n\n const isReadOnly = useMemo(() => {\n return (\n !permissions.isOrganizationAdmin &&\n (userCompanyRole ?? UserCompanyRole.VIEWER) !== UserCompanyRole.ADMIN\n )\n }, [permissions.isOrganizationAdmin, userCompanyRole])\n\n const onDeletionCompanyComplete = () => {\n setShowDeleteCompanyModal(false)\n onCancel()\n }\n\n const { deleteCompany, loading: isDeleteCompanyLoading } = useDeleteCompany({\n onCompleted: onDeletionCompanyComplete,\n })\n\n return {\n company,\n showLeaveCompanyModal,\n leaveCompany,\n leaveCompanyLoading,\n setShowLeaveCompanyModal,\n inviteUser,\n inviteUserLoading,\n onUserRoleChange,\n irrigationWorkersAccessMode,\n isReadOnly,\n changeIrrigationWorkerAccessMode,\n isAnOrganizationCompany,\n userCompanyRole,\n showDeleteCompanyModal,\n deleteCompany,\n setShowDeleteCompanyModal,\n isDeleteCompanyLoading,\n }\n}\n","import { useMutation } from '@apollo/client'\n\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { DELETE_COMPANY, DeleteCompany, DeleteCompanyVariables } from './api'\n\ninterface Props {\n onCompleted: () => void\n}\n\nexport const useDeleteCompany = ({ onCompleted }: Props) => {\n const { setActiveCompany } = ActiveCompanyContext.useActiveCompanyContext()\n\n const [deleteCompany, { loading }] = useMutation(\n DELETE_COMPANY,\n {\n onCompleted: ({ deleteCompany: deleteCompanyResponse }) => {\n onCompleted()\n const newActiveCompanyId = deleteCompanyResponse.user.companiesRoles?.length\n ? deleteCompanyResponse.user.companiesRoles[0].company.id\n : undefined\n const newActiveCountryId = deleteCompanyResponse.user.companiesRoles?.length\n ? deleteCompanyResponse.user.companiesRoles[0].company.country.id\n : undefined\n const newActiveCompanyName = deleteCompanyResponse.user.companiesRoles?.length\n ? deleteCompanyResponse.user.companiesRoles[0].company.name\n : undefined\n\n setActiveCompany({\n id: newActiveCompanyId,\n countryId: newActiveCountryId,\n name: newActiveCompanyName,\n })\n },\n },\n )\n\n return { deleteCompany, loading }\n}\n","import { Radio, Space, Typography } from 'antd'\nimport { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { ConfirmationModal, Modal } from 'components'\nimport { usePermissions, useUser } from 'hooks'\nimport { IrrigationWorkersAccessMode } from 'types'\n\nimport {\n CompanyUsersTable,\n ButtonsContainer,\n UsersSectionTitle,\n InviteUserModal,\n LeaveCompanyModal,\n StyledButton,\n FarmerInformation,\n UpdateCompanyForm,\n LeaveCompanyButton,\n Container,\n} from './components'\nimport { useCompanySettings } from './hooks'\n\nconst { Title, Text } = Typography\ninterface Props {\n id: number\n onCancel: () => void\n}\n\nexport const CompanySettingsModal: React.FC = ({ id, onCancel }) => {\n const [showInviteUserModal, setShowInviteUserModal] = useState(false)\n\n const { t } = useTranslation('company-settings')\n const { permissions } = usePermissions()\n\n const user = useUser()\n\n const {\n company,\n userCompanyRole,\n isAnOrganizationCompany,\n showLeaveCompanyModal,\n setShowLeaveCompanyModal,\n leaveCompany,\n leaveCompanyLoading,\n inviteUser,\n inviteUserLoading,\n onUserRoleChange,\n irrigationWorkersAccessMode,\n changeIrrigationWorkerAccessMode,\n isReadOnly,\n deleteCompany,\n setShowDeleteCompanyModal,\n showDeleteCompanyModal,\n isDeleteCompanyLoading,\n } = useCompanySettings({\n companyId: id,\n onCancel,\n })\n\n const isClientSettings = isAnOrganizationCompany\n\n const modalTitle = isClientSettings ? `editClient.modalTitle` : 'editCompany.modalTitle'\n const title = isClientSettings ? `editClient.title` : 'editCompany.title'\n const userSectionTitle = isClientSettings\n ? `editClient.userSectionTitle`\n : 'editCompany.userSectionTitle'\n\n return (\n \n {t(title)}\n {isAnOrganizationCompany ? (\n setShowDeleteCompanyModal(true)}\n isReadOnly={isReadOnly}\n />\n ) : (\n \n )}\n \n {t(userSectionTitle)}\n \n setShowInviteUserModal(true)}\n >\n {t('buttons.addMember')}\n \n {userCompanyRole && (\n setShowLeaveCompanyModal(true)}>\n {t('buttons.leaveCompany')}\n \n )}\n \n {permissions.satelliteImagery && permissions.isCompanyAdminUser && (\n \n {t('irrigationWorkerAccessMode.title')}\n \n \n {t('irrigationWorkerAccessMode.field')}\n \n \n {t('irrigationWorkerAccessMode.assignedLot')}\n \n \n \n )}\n \n \n {showInviteUserModal && (\n {\n setShowInviteUserModal(false)\n inviteUser({ variables: { inviteUserDTO: { email, companyId: id, role } } })\n }}\n onCancel={() => setShowInviteUserModal(false)}\n isAnOrganizationCompany={isAnOrganizationCompany}\n />\n )}\n {showLeaveCompanyModal && (\n leaveCompany({ variables: { companyId: id, userId: user.id } })}\n onCancel={() => setShowLeaveCompanyModal(false)}\n loading={leaveCompanyLoading}\n isAnOrganizationCompany={isAnOrganizationCompany}\n />\n )}\n {showDeleteCompanyModal && (\n deleteCompany({ variables: { id } })}\n onCancel={() => setShowDeleteCompanyModal(false)}\n loading={isDeleteCompanyLoading}\n title={t('deleteCompanyModal.title')}\n description={t('deleteCompanyModal.description')}\n />\n )}\n \n )\n}\n","import { Col, Row, Space, Typography, Button as AntButton } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { UserAvatar } from 'components'\nimport { useAuth } from 'hooks'\n\nconst { Title: AntTitle } = Typography\n\nconst FullWidthRow = styled(Row)`\n flex: 1;\n padding-bottom: 30px;\n`\nconst UserName = styled(AntTitle)`\n margin-bottom: 0 !important;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.white} !important;\n`\nconst Button = styled(AntButton)`\n padding: 0;\n height: 20px !important;\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n & span {\n font-size: 13px;\n font-style: normal;\n line-height: 24px;\n }\n &:hover {\n color: ${({ theme }) => theme.colors.new.secondary[400]} !important;\n }\n`\nconst ButtonText = styled.span`\n color: ${({ theme }) => theme.colors.white};\n margin-left: 5px;\n`\n\ninterface Props {\n name: string\n lastName: string\n onConfigureAccount: () => void\n}\n\nexport const UserSettings: React.FC = ({ name, lastName, onConfigureAccount }) => {\n const { logout } = useAuth()\n const { t } = useTranslation('navbar')\n\n return (\n \n \n \n \n \n \n \n {name} {lastName}\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { Input as AntInput } from 'antd'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\n\nimport { SearchIcon } from 'assets/icons'\n\nconst SearchInput = styled(AntInput)`\n width: 100%;\n height: 40px;\n border: none;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]} !important;\n .ant-input-prefix {\n margin-right: 14px;\n }\n .ant-input {\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]} !important;\n color: ${({ theme }) => theme.colors.new.baseColor[200]} !important;\n }\n ::placeholder {\n color: ${({ theme }) => theme.colors.grey3} !important;\n }\n`\n\ninterface Props {\n onChange: (value: string) => void\n}\nexport const PopoverSearchInput: React.FC = ({ onChange }) => {\n const { t } = useTranslation('common')\n return (\n }\n placeholder={t('inputs.search')}\n onChange={event => onChange(event.target.value)}\n />\n )\n}\n","import { Avatar, Space, Typography } from 'antd'\nimport React from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { EXTERNAL_LINKS } from 'consts'\n\nconst OrganizationLogoContainer = styled(Avatar).attrs({\n size: 48,\n shape: 'square',\n})`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border: 4px solid ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n svg {\n margin-top: 5px;\n }\n`\n\nconst { Text, Link: AntLink } = Typography\n\nconst DescriptionText = styled(Text)`\n font-size: 13px !important;\n color: ${({ theme }) => theme.colors.white} !important;\n font-weight: 400 !important;\n line-height: 24px !important;\n`\n\nexport const Link = styled(AntLink)`\n color: ${({ theme }) => theme.colors.new.secondary[600]} !important;\n &:hover {\n color: ${({ theme }) => theme.colors.new.secondary[400]} !important;\n }\n`\n\ninterface Props {\n name?: string\n logo?: string | null\n}\nexport const OrganizationItem: React.FC = ({ name, logo }) => {\n const { t } = useTranslation('navbar')\n return (\n \n \n \n {t('user.menu.organization.part1')}\n \n {t('user.menu.organization.part2')}\n \n {t('user.menu.organization.part3', { organizationName: name })}\n \n \n )\n}\n","import { Col, Row, Space } from 'antd'\nimport styled from 'styled-components'\nimport { ComponentType } from 'react'\n\nconst FullWidthRow = styled(Row)`\n flex: 1;\n cursor: pointer;\n`\n\nconst IconContainer = styled(Col)`\n width: 48px;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n`\n\nconst Button = styled(Col)`\n padding: 0;\n display: flex;\n column-gap: 4px;\n flex-wrap: wrap;\n align-items: center !important;\n min-height: 100%;\n font-size: 13px;\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n & span {\n font-style: normal;\n }\n &:hover {\n color: ${({ theme }) => theme.colors.new.secondary[400]};\n }\n`\n\nconst TextButton = styled.span`\n color: ${({ theme }) => theme.colors.white};\n`\ninterface Props {\n Icon: ComponentType\n onClick?: (e: React.MouseEvent) => void\n primaryTextButton: string\n secondaryTextButtonParts: string[]\n}\nexport const ActionButton: React.FC = ({\n Icon,\n onClick,\n primaryTextButton,\n secondaryTextButtonParts,\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { Col, Row, List } from 'antd'\nimport styled from 'styled-components'\n\nexport const ListItem = styled(List.Item)`\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n cursor: pointer;\n border-bottom: 0 !important;\n`\n\nexport const FullWidthRow = styled(Row)`\n flex: 1;\n width: 100%;\n`\n\ninterface UploadProps {\n $isActive?: boolean\n}\n\nexport const LogoContainer = styled(Col)`\n width: 48px;\n height: 48px;\n display: flex;\n justify-content: center;\n align-items: center;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: ${({ $isActive, theme }) =>\n $isActive\n ? `4px solid ${theme.colors.new.secondary[800]}`\n : `2px solid ${theme.colors.new.baseColor[200]}`};\n overflow: hidden;\n`\n\nexport const Image = styled.img`\n width: 100%;\n height: 100%;\n`\n\nexport const EditButton = styled.span`\n padding: 0;\n display: flex;\n align-items: center;\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n max-height: 26px;\n font-size: 12px;\n font-style: normal;\n &:hover {\n color: ${({ theme }) => theme.colors.new.secondary[400]};\n }\n`\n\nexport const Container = styled.div`\n padding: 0 30px;\n`\n","/* eslint-disable no-nested-ternary */\nimport { Col, Row, Space } from 'antd'\nimport { ShopOutlined, CheckOutlined } from '@ant-design/icons'\nimport { useTranslation } from 'react-i18next'\nimport { useTheme } from 'styled-components'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { EllipsisTitle } from 'components'\nimport { UserUserCompanyRole } from 'api/user'\nimport { UserCompanyRole } from 'types'\n\nimport { Container, EditButton, FullWidthRow, Image, ListItem, LogoContainer } from './components'\n\ninterface Data {\n onItemActionClick: (company: { id: number; isAdmin: boolean }) => void\n companyRole?: UserUserCompanyRole\n}\n\ninterface Props {\n data: Data\n style: React.CSSProperties\n}\n\nexport const VirtualizedListItem: React.FC = ({ data, style }) => {\n const { t } = useTranslation('navbar')\n const { t: commonT } = useTranslation('common')\n const { colors } = useTheme()\n const { activeCompanyId, setActiveCompany, setActiveSeason } =\n ActiveCompanyContext.useActiveCompanyContext()\n\n const { onItemActionClick, companyRole } = data\n\n if (!companyRole) return null\n\n const { company, role } = companyRole\n\n const isAnActiveCompany = company.id === activeCompanyId\n\n return (\n
\n \n {\n if (activeCompanyId === company.id) return\n setActiveSeason(undefined)\n setActiveCompany({\n id: company.id,\n countryId: company.country.id,\n name: company.name,\n })\n }}\n >\n \n \n \n \n {company.organization?.id ? (\n isAnActiveCompany && (\n \n )\n ) : company.logo ? (\n {commonT('misc.logoImageAlt')}\n ) : (\n \n )}\n \n \n \n \n \n \n {\n e.stopPropagation()\n onItemActionClick({\n id: company.id,\n isAdmin: role === UserCompanyRole.ADMIN,\n })\n }}\n >\n {t('user.menu.companies.settingsButtonText')}\n \n \n \n \n \n \n \n \n
\n )\n}\n","import { PlusCircleOutlined, SettingOutlined } from '@ant-design/icons'\nimport { Typography } from 'antd'\nimport styled from 'styled-components'\n\nexport { UserSettings } from './UserSettings'\nexport { PopoverSearchInput } from './PopoverSearchInput'\nexport { OrganizationItem } from './OrganizationItem'\nexport { ActionButton } from './ActionButton'\nexport { VirtualizedListItem } from './VirtualizedListItem'\n\nconst { Text: AntText } = Typography\n\nexport const Text = styled(AntText)`\n font-weight: normal;\n font-size: 13px;\n line-height: 24px;\n color: ${({ theme }) => theme.colors.white};\n`\n\nexport const Divider = styled.div`\n height: 1px;\n border: ${({ theme }) => `1px solid ${theme.colors.grey3}`};\n margin: 15px 0;\n`\n\nexport const Container = styled.div`\n padding: 0 30px;\n`\n\nexport const StyledPlusCircleOutlined = styled(PlusCircleOutlined)`\n font-size: 24px;\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n`\n\nexport const StyledSettingOutlined = styled(SettingOutlined)`\n font-size: 24px;\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n`\n","import { useMemo } from 'react'\nimport useMedia from 'react-use/lib/useMedia'\n\nimport { usePermissions } from 'hooks'\n\nexport const useListHeight = () => {\n const mediumHeight = useMedia('(min-height: 700px)')\n const maxHeight = useMedia('(min-height: 900px)')\n const { permissions } = usePermissions()\n\n const height = useMemo(() => {\n if (maxHeight) return 250\n if (mediumHeight) return 200\n\n return permissions.isAnOrganizationUser ? 90 : 170\n }, [maxHeight, mediumHeight, permissions.isAnOrganizationUser])\n\n return height\n}\n","import React, {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect,\n useState,\n ComponentType,\n useMemo,\n} from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { FixedSizeList as _FixedSizeList, FixedSizeListProps } from 'react-window'\nimport dayjs from 'dayjs'\n\nimport { usePermissions, useUser } from 'hooks'\nimport { UserUserCompanyRole as UserCompanyRoleType } from 'api/user'\nimport { MiscUtils } from 'utils'\nimport { HistoricalSeasonSelect } from 'components'\nimport { HistoricalSeason } from 'types'\nimport { ActiveCompanyContext } from 'contexts'\n\nimport {\n Divider,\n Container,\n UserSettings,\n PopoverSearchInput,\n OrganizationItem,\n ActionButton,\n StyledPlusCircleOutlined,\n StyledSettingOutlined,\n VirtualizedListItem,\n} from './components'\nimport { useListHeight } from './hooks'\n\nconst MAX_COMPANIES_ROLES = 3\n\nconst FixedSizeList = _FixedSizeList as ComponentType\ninterface Props {\n onItemActionClick: (company: { id: number; isAdmin: boolean }) => void\n onCreateCompany: () => void\n setIsFirstCompany: Dispatch>\n onConfigureAccount: () => void\n onManageLotsButtonPress: () => void\n}\n\nexport const CompaniesPopoverContent: React.FC = ({\n onItemActionClick,\n onCreateCompany,\n setIsFirstCompany,\n onConfigureAccount,\n onManageLotsButtonPress,\n}) => {\n const user = useUser()\n const { permissions } = usePermissions()\n const { t } = useTranslation('navbar')\n const height = useListHeight()\n\n const [companiesRoles, setCompaniesRoles] = useState()\n const {\n setSelectedSeasonRangeToFilterOrganizationCompanies,\n selectedSeasonRangeToFilterOrganizationCompanies,\n } = ActiveCompanyContext.useActiveCompanyContext()\n\n const createCompanyTexts = {\n primaryText: permissions.isAnOrganizationUser\n ? t('user.menu.companies.newClient.part1')\n : t('user.menu.companies.newCompany.part1'),\n secondaryTexts: permissions.isAnOrganizationUser\n ? [t('user.menu.companies.newClient.part2'), t('user.menu.companies.newClient.part3')]\n : [t('user.menu.companies.newCompany.part2'), t('user.menu.companies.newCompany.part3')],\n }\n\n const actionButtons = [\n {\n name: 'createCompany',\n onClick: (e: React.MouseEvent) => {\n setIsFirstCompany(false)\n e.stopPropagation()\n onCreateCompany()\n },\n Icon: StyledPlusCircleOutlined,\n primaryTextButton: createCompanyTexts.primaryText,\n secondaryTextButtonParts: createCompanyTexts.secondaryTexts,\n disabled: !permissions.companyCreation,\n },\n {\n name: 'manageLots',\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n onManageLotsButtonPress()\n },\n Icon: StyledSettingOutlined,\n primaryTextButton: t('user.menu.companies.manageLots.part1'),\n secondaryTextButtonParts: [\n t('user.menu.companies.manageLots.part2'),\n t('user.menu.companies.manageLots.part3'),\n ],\n },\n ]\n\n const filterCompanySeasonsByHistoricalSeasonRange = useCallback(\n (historicalSeason: HistoricalSeason) => {\n return user.companiesRoles?.filter(companyRole => {\n return companyRole.company.seasons?.some(season => {\n const seasonStartDate = dayjs.utc(season.startDate)\n const selectedHistoricalSeasonStartRangeDate = dayjs.utc(historicalSeason.startRange)\n const selectedHistoricalSeasonEndRangeDate = dayjs.utc(historicalSeason.endRange)\n\n const isSeasonStartDateSameOrAfter =\n seasonStartDate.isSame(selectedHistoricalSeasonStartRangeDate) ||\n seasonStartDate.isAfter(selectedHistoricalSeasonStartRangeDate)\n\n const isSeasonStartDateSameOrBefore =\n seasonStartDate.isSame(selectedHistoricalSeasonEndRangeDate) ||\n seasonStartDate.isBefore(selectedHistoricalSeasonEndRangeDate)\n\n return isSeasonStartDateSameOrAfter && isSeasonStartDateSameOrBefore\n })\n })\n },\n [user.companiesRoles],\n )\n\n const handleSelectedHistoricalSeason = useCallback(\n (historicalSeason: HistoricalSeason) => {\n const filteredCompaniesRoles = filterCompanySeasonsByHistoricalSeasonRange(historicalSeason)\n setCompaniesRoles(filteredCompaniesRoles)\n setSelectedSeasonRangeToFilterOrganizationCompanies(historicalSeason)\n },\n [\n filterCompanySeasonsByHistoricalSeasonRange,\n setSelectedSeasonRangeToFilterOrganizationCompanies,\n ],\n )\n\n const filteredCompaniesRolesBySelectedSeasonRange = useMemo(() => {\n if (!selectedSeasonRangeToFilterOrganizationCompanies) return []\n\n return filterCompanySeasonsByHistoricalSeasonRange(\n selectedSeasonRangeToFilterOrganizationCompanies,\n )\n }, [\n filterCompanySeasonsByHistoricalSeasonRange,\n selectedSeasonRangeToFilterOrganizationCompanies,\n ])\n\n const showPopoverSearchInput = useMemo(() => {\n if (!permissions.isAnOrganizationUser) {\n return (user?.companiesRoles?.length ?? 0) > MAX_COMPANIES_ROLES\n }\n if (\n !selectedSeasonRangeToFilterOrganizationCompanies?.startRange ||\n !selectedSeasonRangeToFilterOrganizationCompanies.endRange\n )\n return false\n return (filteredCompaniesRolesBySelectedSeasonRange?.length ?? 0) > MAX_COMPANIES_ROLES\n }, [\n filteredCompaniesRolesBySelectedSeasonRange,\n permissions,\n selectedSeasonRangeToFilterOrganizationCompanies,\n user,\n ])\n\n useEffect(() => {\n if (user.companiesRoles?.length && !permissions.isAnOrganizationUser) {\n setCompaniesRoles(user.companiesRoles)\n } else {\n if (!selectedSeasonRangeToFilterOrganizationCompanies) return\n handleSelectedHistoricalSeason(selectedSeasonRangeToFilterOrganizationCompanies)\n }\n }, [\n user.companiesRoles,\n permissions.isAnOrganizationUser,\n handleSelectedHistoricalSeason,\n selectedSeasonRangeToFilterOrganizationCompanies,\n ])\n\n const onSearchChange = useCallback(\n (value: string) => {\n const inputValue = MiscUtils.removeAccents(value).toLowerCase()\n const companies = !permissions.isAnOrganizationUser\n ? user.companiesRoles\n : filteredCompaniesRolesBySelectedSeasonRange\n const filterCompanies = companies?.filter(({ company }) => {\n const companyName = MiscUtils.removeAccents(company.name).toLowerCase()\n return companyName.includes(inputValue)\n })\n setCompaniesRoles(filterCompanies)\n },\n [\n filteredCompaniesRolesBySelectedSeasonRange,\n permissions.isAnOrganizationUser,\n user.companiesRoles,\n ],\n )\n\n return (\n <>\n {permissions.isAnOrganizationUser && (\n \n \n \n )}\n {showPopoverSearchInput && (\n \n \n \n )}\n \n {props => (\n \n )}\n \n\n \n\n \n {actionButtons.map(actionButtonData => {\n return (\n \n {!actionButtonData.disabled && (\n \n )}\n \n )\n })}\n \n\n {permissions.isAnOrganizationUser && (\n <>\n \n \n \n \n \n )}\n \n \n \n \n \n )\n}\n","import { Popover as AntPopover, Row } from 'antd'\nimport { ComponentProps } from 'react'\nimport { NavLink as ReactNavLink } from 'react-router-dom'\nimport styled, { css } from 'styled-components'\n\nimport { MapIcon, SettingsIcon, DashboardIcon } from 'assets/icons'\n\nexport { AccountSettingsModal } from './AccountSettingsModal'\nexport { CompanySettingsModal } from './CompanySettingsModal'\nexport { CompaniesPopoverContent } from './CompaniesPopoverContent'\n\nexport const FlexCol = styled.div`\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: 25px 0;\n`\n\nexport const FlexStartCol = styled(FlexCol)`\n justify-content: flex-start;\n padding: 0;\n`\n\nexport const FlexEndCol = styled(FlexCol)`\n justify-content: flex-end;\n padding: 0;\n`\n\nexport const NavRow = styled(Row)`\n position: relative;\n margin-bottom: 50px;\n`\n\nexport const RowIconContainer = styled(Row)`\n height: 55px;\n display: flex;\n align-items: center;\n`\n\nexport const NavLinkRow = styled(NavRow).attrs({\n justify: 'start',\n})``\n\nexport const NavLink = styled(ReactNavLink)`\n cursor: pointer;\n color: ${({ theme }) => theme.colors.white};\n border-radius: 0px 11px 11px 0px;\n height: 55px;\n width: 90%;\n display: flex;\n justify-content: center;\n align-items: center;\n & svg {\n color: ${({ theme }) => theme.colors.white};\n }\n &.active svg {\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n }\n &:hover svg {\n color: ${({ theme }) => theme.colors.new.secondary[600]};\n }\n`\n\nconst iconStyles = css`\n position: absolute;\n margin-left: auto;\n margin-right: auto;\n left: 0;\n right: 0;\n text-align: center;\n`\n\nexport const StyledMapIcon = styled(MapIcon)`\n ${iconStyles};\n width: 100%;\n`\n\nexport const StyledSettingsIcon = styled(SettingsIcon)`\n ${iconStyles}\n`\n\nexport const StyledDashboardIcon = styled(DashboardIcon)`\n ${iconStyles}\n`\n\nconst PopoverAdapter: React.FC> = ({\n className,\n ...restProps\n}) => \n\nexport const Popover = styled(PopoverAdapter)`\n padding-left: 20px;\n max-width: 290px;\n @media (max-height: 601px) {\n max-width: 320px;\n }\n .ant-popover-inner-content {\n padding-top: 30px;\n }\n .ant-popover-arrow {\n display: none !important;\n }\n .ant-popover-inner {\n padding: 0;\n }\n`\n","import { Row, Tooltip } from 'antd'\nimport { useState } from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { UserAvatar } from 'components'\nimport { theme } from 'styles'\nimport { useHasCompanyOrFieldsOrLots, usePermissions, useIsProdEnv } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\nimport { LogoKunaIcon } from 'assets/icons'\n\nimport {\n CompaniesPopoverContent,\n Popover,\n FlexCol,\n FlexStartCol,\n FlexEndCol,\n CompanySettingsModal,\n NavLink,\n NavLinkRow,\n NavRow,\n StyledMapIcon,\n StyledSettingsIcon,\n AccountSettingsModal,\n RowIconContainer,\n StyledDashboardIcon,\n} from './components'\nimport {\n CreateCompanyModal,\n CompanyCreationFeedbackModal,\n CreateClientModal,\n} from '../../components'\n\nexport const SideNavbar: React.FC = () => {\n const navigate = useNavigate()\n const isProdEnv = useIsProdEnv()\n const { permissions } = usePermissions()\n\n const [showAccountSettingsModal, setShowAccountSettingsModal] = useState(false)\n const [showCompanySettingsModal, setShowCompanySettingsModal] = useState(false)\n const [showPopover, setShowPopover] = useState(false)\n const [showUserTooltip, setShowUserTooltip] = useState(false)\n const [editingCompany, setEditingCompany] = useState<{ id: number; isAdmin: boolean }>()\n const [showCompanyModal, setShowCompanyModal] = useState(false)\n const [isFirstCompany, setIsFirstCompany] = useState(false)\n const { isNewCompany, setIsNewCompany, activeCompanyId } =\n ActiveCompanyContext.useActiveCompanyContext()\n\n const { noCompanyOrFieldsOrLots } = useHasCompanyOrFieldsOrLots()\n const { t } = useTranslation('navbar')\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {noCompanyOrFieldsOrLots ? (\n <>\n {permissions.satelliteImagery && (\n \n \n \n \n \n \n \n )}\n \n ) : (\n <>\n {permissions.satelliteImagery && (\n \n \n \n \n \n \n \n )}\n \n )}\n \n \n {/* TODO: turn this back on after Diana's demo */}\n {false && !isProdEnv && (\n \n \n \n \n \n \n \n )}\n {permissions.isCompanyAdminUser && (\n \n \n \n \n \n \n \n )}\n\n \n setShowUserTooltip(true)}\n onMouseLeave={() => setShowUserTooltip(false)}\n >\n {\n if (visible) {\n setShowUserTooltip(false)\n }\n setShowPopover(visible)\n }}\n placement=\"right\"\n content={\n {\n setShowCompanyModal(true)\n setShowPopover(false)\n }}\n setIsFirstCompany={setIsFirstCompany}\n onItemActionClick={company => {\n setEditingCompany(company)\n setShowPopover(false)\n setShowCompanySettingsModal(true)\n }}\n onConfigureAccount={() => {\n setShowAccountSettingsModal(true)\n setShowPopover(false)\n }}\n onManageLotsButtonPress={() => {\n setShowPopover(false)\n navigate('/lots-management')\n }}\n />\n }\n overlayInnerStyle={{\n overflow: 'hidden',\n marginBottom: '20px',\n background: theme.colors.new.baseColor[850],\n }}\n >\n \n \n \n \n {showCompanySettingsModal && editingCompany && (\n setShowCompanySettingsModal(false)}\n />\n )}\n {showCompanyModal &&\n permissions.companyCreation &&\n (!permissions.isAnOrganizationUser ? (\n {\n setShowCompanyModal(false)\n setIsNewCompany(true)\n }}\n onCancel={() => setShowCompanyModal(false)}\n />\n ) : (\n {\n setShowCompanyModal(false)\n if (!permissions.fieldEntity)\n return navigate('/settings/lots', { state: { goTo: '/map' } })\n\n return navigate('/settings/fields')\n }}\n onCancel={() => setShowCompanyModal(false)}\n />\n ))}\n {isNewCompany && activeCompanyId && !permissions.isAnOrganizationUser && (\n {\n setIsNewCompany(false)\n navigate('/dashboard', { replace: true })\n }}\n onCancel={() => setIsNewCompany(false)}\n />\n )}\n {showAccountSettingsModal && (\n setShowAccountSettingsModal(false)} />\n )}\n \n \n )\n}\n","import { Dispatch, SetStateAction, useCallback, useState } from 'react'\n\nimport { DrawMode, Features } from 'types'\n\nimport { Dam } from './types'\n\nexport const useFeatures = ({\n handleDams,\n handleSelectedDamToDelete,\n handleShowDeleteModal,\n}: {\n handleDams: Dispatch>\n handleSelectedDamToDelete: (damToDelete: Dam) => void\n handleShowDeleteModal: (value: boolean) => void\n}) => {\n const [mode, setMode] = useState<\n | {\n mode: Extract\n options: { featureId: string }\n }\n | { mode: Exclude }\n >({\n mode: 'simple_select',\n })\n const [selectedDamIndex, setSelectedDamIndex] = useState()\n\n const onCreateFeature = useCallback(\n ({ features }: { features: Features }) => {\n if (!features) return\n\n const createdFeature = features[0]\n const createdFeatureId = createdFeature.id?.toString()\n if (!createdFeatureId) return\n\n handleDams(prevDams => {\n const newDams = [...prevDams]\n const createdDamIndex = prevDams.findIndex(dam => !dam.feature)\n // Workaround for show again dam on the map when user delete last dam and cancels deletion\n if (createdDamIndex === -1) return prevDams\n newDams[createdDamIndex] = {\n ...newDams[createdDamIndex],\n dam: { ...newDams[createdDamIndex].dam, id: createdFeatureId },\n feature: features[0],\n }\n return newDams\n })\n setMode({\n mode: 'direct_select',\n options: { featureId: createdFeatureId.toString() },\n })\n },\n [handleDams],\n )\n\n const onUpdateFeature = useCallback(\n ({ features }: { features: Features }) => {\n if (!features) return\n const updatedFeature = features[0]\n\n handleDams(prevDams => {\n const newDams = [...prevDams]\n\n const updatedDamIndex = newDams.findIndex(({ dam }) => dam.id === updatedFeature.id)\n\n newDams[updatedDamIndex] = {\n ...newDams[updatedDamIndex],\n feature: updatedFeature,\n }\n\n return newDams\n })\n },\n [handleDams],\n )\n\n const onDelete = useCallback(\n (e: { features: Features }) => {\n handleDams(prevDams => {\n const index = prevDams.findIndex(({ dam }) => dam.id === e.features?.[0].id)\n const damToDelete = prevDams[index]\n handleSelectedDamToDelete(damToDelete)\n handleShowDeleteModal(true)\n return prevDams.filter(dam => dam.dam.id !== damToDelete.dam.id)\n })\n },\n [handleDams, handleSelectedDamToDelete, handleShowDeleteModal],\n )\n\n const onSelectionChange = useCallback(\n (e: { features: Features }) => {\n if (!e.features?.length || !e.features?.[0].id) {\n setMode({ mode: 'simple_select' })\n return setSelectedDamIndex(undefined)\n }\n\n setMode({\n mode: 'direct_select',\n options: { featureId: e.features[0].id.toString() },\n })\n return handleDams(prevDams => {\n const index = prevDams.findIndex(({ dam }) => dam.id === e.features?.[0].id)\n setSelectedDamIndex(index)\n return prevDams\n })\n },\n [handleDams],\n )\n\n return {\n onCreateFeature,\n onUpdateFeature,\n onDelete,\n onSelectionChange,\n mode,\n setMode,\n selectedDamIndex,\n setSelectedDamIndex,\n }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { Dams, Dam } from 'hooks/useQueryDams/api'\nexport type { UpdateDams, UpdateDamsVariables } from './types/UpdateDams'\nexport type { CreateDams, CreateDamsVariables } from './types/CreateDams'\nexport type { DeleteDam, DeleteDamVariables } from './types/DeleteDam'\n\nexport const CREATE_DAMS = gql`\n mutation CreateDams($createDamDTOs: [CreateDamInput!]!) {\n createDams(createDamDTOs: $createDamDTOs) {\n results {\n id\n name\n area {\n type\n coordinates\n }\n location {\n type\n coordinates\n }\n fieldId\n }\n }\n }\n`\n\nexport const UPDATE_DAMS = gql`\n mutation UpdateDams($updateDamsArgs: [UpdateDamInput!]!) {\n updateDams(updateDamsArgs: $updateDamsArgs) {\n results {\n id\n name\n area {\n type\n coordinates\n }\n location {\n type\n coordinates\n }\n }\n }\n }\n`\n\nexport const DELETE_DAM = gql`\n mutation DeleteDam($id: Int!) {\n deleteDam(id: $id) {\n success\n }\n }\n`\n","import { useCallback, useState } from 'react'\nimport { Polygon, points, polygon } from '@turf/helpers'\nimport center from '@turf/center'\nimport { useMap } from 'react-map-gl'\nimport { UploadChangeParam } from 'antd/lib/upload'\nimport { UploadFile } from 'antd/lib/upload/interface'\nimport { notification } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { MAP } from 'consts'\nimport { ConversionUtils, GeoUtils, MiscUtils } from 'utils'\nimport { Action } from 'types'\nimport { usePermissions, useQueryDams } from 'hooks'\n\nimport { Dams } from './api'\nimport { useFeatures } from './useFeatures'\nimport { Dam } from './types'\nimport { useDeleteDam } from '../useDeleteDam'\n\nexport const useDams = (fieldId?: number) => {\n const [dams, setDams] = useState([])\n const [showDeleteDamModal, setShowDeleteDamModal] = useState(false)\n const [selectedDamToDelete, setSelectedDamToDelete] = useState()\n const { t } = useTranslation('field-settings')\n const { permissions } = usePermissions()\n\n const { fieldsMap } = useMap()\n const {\n selectedDamIndex,\n onCreateFeature,\n onUpdateFeature,\n onDelete,\n onSelectionChange,\n mode,\n setMode,\n setSelectedDamIndex,\n } = useFeatures({\n handleDams: setDams,\n handleShowDeleteModal: setShowDeleteDamModal,\n handleSelectedDamToDelete: setSelectedDamToDelete,\n })\n\n const { deleteDam, loading: loadingDeleteDam } = useDeleteDam()\n\n const onCompleted = (data: Dams) => {\n const newDams = data.dams.results.map(dam => ({\n dam: {\n id: dam.id.toString(),\n action: 'update' as Action,\n name: dam.name,\n },\n feature: polygon(dam.area.coordinates),\n }))\n setDams(newDams)\n }\n\n const { loading } = useQueryDams({\n fieldId,\n onCompleted,\n includeCalendar: false,\n skip: !permissions.satelliteImagery,\n })\n\n const onChangeDamTransition = useCallback(\n ({ longitude, latitude, zoom }: { longitude?: number; latitude?: number; zoom?: number }) => {\n if (!latitude || !longitude) return\n fieldsMap?.flyTo({\n center: [longitude, latitude],\n duration: MAP.DEFAULT_TRANSITION.transitionDuration,\n zoom,\n essential: true,\n })\n },\n [fieldsMap],\n )\n\n const goToDam = useCallback(\n (dam?: Polygon) => {\n if (dam) {\n const featurePoint = points(dam.coordinates[0])\n const damCenter = center(featurePoint)\n const longitude = damCenter.geometry.coordinates[0]\n const latitude = damCenter.geometry.coordinates[1]\n if (fieldsMap) onChangeDamTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n }\n },\n [fieldsMap, onChangeDamTransition],\n )\n\n const handleSelectedDamChange = (damIndex: number) => {\n const dam = dams[damIndex]\n // This is for the edge case when a user creates a dam, selects from the card another dam\n // before drawing the recently created one and then comes back to that freshly created dam\n if (!dam.feature) {\n setMode({ mode: 'draw_polygon' })\n return\n }\n const damGeometry = dam.feature?.geometry\n if (damGeometry) goToDam(damGeometry)\n setSelectedDamIndex(damIndex)\n setMode({ mode: 'simple_select' })\n }\n\n const handleDamChange = (dam: Dam['dam'], damIndex: number) =>\n setDams(prevDams => {\n const newDams = [...prevDams]\n newDams[damIndex].dam = dam\n return newDams\n })\n\n const handleDrawButtonClick = useCallback(() => {\n const damWithoutFeature = dams.some(dam => !dam.feature)\n if (damWithoutFeature) return\n setDams(prevDams => [\n ...prevDams,\n {\n dam: {\n id: MiscUtils.generateId(),\n action: 'create',\n },\n feature: undefined,\n },\n ])\n setMode({ mode: 'draw_polygon' })\n setSelectedDamIndex(dams.length)\n }, [dams, setMode, setSelectedDamIndex])\n\n const onCancelDeleteDam = () => {\n if (!selectedDamToDelete) return\n setMode({ mode: 'simple_select' })\n const existingDam = dams.find(({ dam }) => dam.id === selectedDamToDelete.dam.id)\n\n // Workaround for when a user deletes a dam by pressing 'backspace', we need to set that dam again in the state\n if (!existingDam) {\n // It covers the case when user has only one dam and is deleting by bakspace, to no add a new empty dam\n if (dams.length === 1 && !dams[0].feature) {\n setDams([selectedDamToDelete])\n } else {\n setDams(prevDams => [...prevDams, selectedDamToDelete])\n }\n }\n\n setSelectedDamToDelete(undefined)\n setShowDeleteDamModal(false)\n }\n\n const onConfirmDeleteDam = async () => {\n if (!selectedDamToDelete) return\n const damIndex = dams.findIndex(({ dam }) => dam.id === selectedDamToDelete.dam.id)\n\n if (selectedDamToDelete.dam.action === 'update')\n await deleteDam({ variables: { id: Number(selectedDamToDelete.dam.id) } })\n const existingDam = dams.find(({ dam }) => dam.id === selectedDamToDelete.dam.id)\n setDams(prevDams => {\n const newDams = [...prevDams]\n newDams.splice(damIndex, 1)\n // Workaround for when a user deletes a dam by pressing 'backspace', the dam has already been filtered from state\n // in the onDelete function\n return !existingDam ? prevDams : newDams\n })\n setSelectedDamToDelete(undefined)\n setShowDeleteDamModal(false)\n }\n\n const handleDeleteDam = (damIndex: number) => {\n const damToDelete = dams[damIndex]\n setSelectedDamToDelete(damToDelete)\n setShowDeleteDamModal(true)\n }\n\n const handleDamKml = async ({ file: uploadFile }: UploadChangeParam) => {\n try {\n const file = uploadFile as unknown as File\n const geoJson = await MiscUtils.kmlFileToGeoJson(file)\n\n const kmlDams: Dam[] = geoJson.features.map(feature => ({\n feature: {\n geometry: feature.geometry,\n properties: {},\n type: 'Feature',\n },\n dam: {\n ...GeoUtils.getPolygonCenterAndArea(feature.geometry.coordinates),\n id: MiscUtils.generateId(),\n name: feature.properties.name && ConversionUtils.autoCapitalize(feature.properties.name),\n action: 'create',\n },\n }))\n setMode({ mode: 'simple_select' })\n\n setDams(prevDams => {\n const filterDams = prevDams.filter(dam => dam.feature !== undefined)\n const newDams = [...filterDams, ...kmlDams]\n setSelectedDamIndex(newDams.length - 1)\n goToDam(newDams[newDams.length - 1].feature?.geometry)\n return newDams\n })\n } catch (err) {\n notification.error({\n message: t('uploadKMLErrorText'),\n })\n }\n }\n\n return {\n loading,\n dams,\n onCreateFeature,\n onUpdateFeature,\n onDelete,\n onSelectionChange,\n mode,\n selectedDamIndex,\n showDeleteDamModal,\n setShowDeleteDamModal,\n handleDamChange,\n handleSelectedDamChange,\n handleDrawButtonClick,\n onCancelDeleteDam,\n onConfirmDeleteDam,\n loadingDeleteDam,\n handleDeleteDam,\n selectedDamToDelete,\n setMode,\n handleDamKml,\n }\n}\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { DeleteDam, DeleteDamVariables, DELETE_DAM } from './useDams/api'\n\nexport const useDeleteDam = (onCompleted?: (data: DeleteDam) => void) => {\n const [deleteDam, { loading }] = useMutation(DELETE_DAM, {\n onCompleted,\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!variables || !response?.deleteDam.success) return\n\n const deletedLot: StoreObject = { id: variables.id, __typename: 'Dam' }\n\n cache.evict({ id: cache.identify(deletedLot) })\n cache.gc()\n },\n })\n\n return { deleteDam, loading }\n}\n","import { ComponentProps } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { ConfirmationModal } from 'components'\n\ntype Props = Omit, 'description'> & {\n lotName: string\n fieldName: string\n}\n\nexport const DeleteLotConfirmationModal: React.FC = ({\n lotName,\n fieldName,\n ...restProps\n}) => {\n const { t } = useTranslation('lot-settings')\n\n return (\n \n )\n}\n","import { useTheme } from 'styled-components'\n\nexport const useEditorStyles = () => {\n const { colors } = useTheme()\n\n const styles = [\n // ACTIVE (being drawn)\n // line stroke\n {\n id: 'gl-draw-line',\n type: 'line',\n filter: ['all', ['==', '$type', 'LineString'], ['!=', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': `${colors.primary}`,\n 'line-width': 2,\n },\n },\n // polygon fill\n {\n id: 'gl-draw-polygon-fill',\n type: 'fill',\n filter: ['all', ['==', '$type', 'Polygon'], ['!=', 'mode', 'static']],\n paint: {\n 'fill-color': `${colors.primary}`,\n 'fill-outline-color': `${colors.primary}`,\n 'fill-opacity': 0.4,\n },\n },\n // polygon mid points\n {\n id: 'gl-draw-polygon-midpoint',\n type: 'circle',\n filter: ['all', ['==', '$type', 'Point'], ['==', 'meta', 'midpoint']],\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#fbb03b',\n },\n },\n // polygon outline stroke\n // This doesn't style the first edge of the polygon, which uses the line stroke styling instead\n {\n id: 'gl-draw-polygon-stroke-active',\n type: 'line',\n filter: ['all', ['==', '$type', 'Polygon'], ['!=', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': `${colors.primary}`,\n 'line-width': 2,\n },\n },\n // vertex point halos\n {\n id: 'gl-draw-polygon-and-line-vertex-halo-active',\n type: 'circle',\n filter: ['all', ['==', 'meta', 'vertex'], ['==', '$type', 'Point'], ['!=', 'mode', 'static']],\n paint: {\n 'circle-radius': 5,\n 'circle-color': '#FFF',\n },\n },\n // vertex points\n {\n id: 'gl-draw-polygon-and-line-vertex-active',\n type: 'circle',\n filter: ['all', ['==', 'meta', 'vertex'], ['==', '$type', 'Point'], ['!=', 'mode', 'static']],\n paint: {\n 'circle-radius': 3,\n 'circle-color': `${colors.primary}`,\n },\n },\n // INACTIVE (static, already drawn)\n // line stroke\n {\n id: 'gl-draw-line-static',\n type: 'line',\n filter: ['all', ['==', '$type', 'LineString'], ['==', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': '#000',\n 'line-width': 3,\n },\n },\n // polygon fill\n {\n id: 'gl-draw-polygon-fill-static',\n type: 'fill',\n filter: ['all', ['==', '$type', 'Polygon'], ['==', 'mode', 'static']],\n paint: {\n 'fill-color': '#000',\n 'fill-outline-color': '#000',\n 'fill-opacity': 0.1,\n },\n },\n // polygon outline\n {\n id: 'gl-draw-polygon-stroke-static',\n type: 'line',\n filter: ['all', ['==', '$type', 'Polygon'], ['==', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': '#000',\n 'line-width': 3,\n },\n },\n ]\n\n return styles\n}\n","import MapboxDraw from '@mapbox/mapbox-gl-draw'\nimport useDeepCompareEffect from 'react-use/lib/useDeepCompareEffect'\nimport { useControl } from 'react-map-gl'\nimport { useEffect } from 'react'\n\nimport { DrawMode, Features } from 'types'\n\nimport { useEditorStyles } from './hooks'\n\ninterface Props {\n mapOptions: ConstructorParameters[0]\n mode:\n | {\n mode: Exclude\n }\n | { mode: 'direct_select'; options: { featureId: string } }\n features: Features\n onCreate: (evt: { features: Features }) => void\n onUpdate: (evt: { features: Features; action: string }) => void\n onDelete: (evt: { features: Features }) => void\n onSelectionChange: (evt: { features: Features }) => void\n}\n\nexport const Control: React.FC = ({\n mapOptions,\n onCreate,\n onUpdate,\n onDelete,\n onSelectionChange,\n mode,\n features,\n}) => {\n const styles = useEditorStyles()\n const control = useControl(\n ({ map }) => {\n map.on('draw.create', onCreate)\n map.on('draw.update', onUpdate)\n map.on('draw.delete', onDelete)\n map.on('draw.selectionchange', onSelectionChange)\n map.on('draw.actionable', () => ({\n actions: {\n trash: false,\n },\n }))\n\n return new MapboxDraw({ ...mapOptions, styles })\n },\n ({ map }) => {\n map.off('draw.create', onCreate)\n map.off('draw.update', onUpdate)\n map.off('draw.delete', onDelete)\n map.off('draw.selectionchange', onSelectionChange)\n map.off('draw.actionable', () => ({\n actions: {\n trash: false,\n },\n }))\n },\n )\n\n const drawControl = control as MapboxDraw\n\n useDeepCompareEffect(() => {\n drawControl.set({\n type: 'FeatureCollection',\n features: features ?? [],\n })\n }, [features, mode])\n\n useEffect(() => {\n switch (mode.mode) {\n case 'simple_select': {\n drawControl.changeMode(mode.mode)\n break\n }\n case 'direct_select': {\n const modeOptions = { ...mode.options, featureId: mode.options.featureId }\n drawControl.changeMode(mode.mode, modeOptions)\n break\n }\n default: {\n drawControl.changeMode(mode.mode)\n }\n }\n }, [drawControl, mode])\n\n return null\n}\n","import { Row, Card, Typography } from 'antd'\nimport styled from 'styled-components'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nexport { Layout } from 'components'\nexport { DeleteLotConfirmationModal } from './DeleteLotConfirmationModal'\nexport { Control } from './Control'\n\ninterface StyledProps {\n $width?: string\n}\n\nexport const MapSidebar = styled(Row)`\n width: ${({ $width }) => $width || '450px'};\n position: absolute;\n flex-direction: column;\n top: 15px;\n right: 15px;\n z-index: 10;\n @media (max-height: 735px) {\n top: 25px;\n height: calc(100vh - 25px);\n }\n`\nexport const LeftSidebar = styled(Row)`\n width: 300px;\n position: absolute;\n top: 15px;\n left: 15px;\n z-index: 10;\n @media (max-height: 735px) {\n top: 25px;\n }\n`\n\ninterface Props {\n $isEditMode?: boolean\n}\n\nexport const StyledCard = styled(Card)`\n background-color: ${({ theme }) => theme.colors.grey1};\n padding: ${({ theme }) => theme.card.mapCardPadding};\n & .ant-card-body {\n padding: 0;\n }\n @media (max-height: 735px) {\n ${props =>\n props.$isEditMode ? `max-height: calc(100vh - 135px);` : `max-height: calc(100vh - 90px)`};\n }\n overflow-y: auto;\n`\n\nexport const Title = styled(AntTitle)`\n margin-bottom: 22px !important;\n`\n\nexport const Text = styled(AntText)`\n font-size: 24px;\n font-style: normal;\n font-weight: 400;\n color: ${({ theme }) => theme.colors.olive};\n`\n\nexport const SearchBoxContainer = styled(Row)`\n margin-bottom: 30px;\n\n & .mapboxgl-ctrl-geocoder {\n max-width: 100%;\n width: 100%;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n }\n @media (max-height: 735px) {\n margin-bottom: 15px;\n }\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n FieldsSettings as Fields,\n FieldsSettingsVariables,\n FieldsSettings_fields_results as Field,\n} from './types/FieldsSettings'\nexport type {\n SeasonsSettings as Seasons,\n SeasonsSettingsVariables,\n SeasonsSettings_seasons_results as Season,\n} from './types/SeasonsSettings'\nexport type { DeleteLot, DeleteLotVariables } from './types/DeleteLot'\n\nexport const FIELDS_SETTINGS = gql`\n query FieldsSettings($companyId: Int!) {\n fields(companyId: $companyId) {\n results {\n id\n name\n productionType\n deliveryCondition\n }\n }\n }\n`\n\nexport const SEASONS_SETTINGS = gql`\n query SeasonsSettings($companyId: Int!) {\n seasons(companyId: $companyId) {\n results {\n id\n name\n }\n }\n }\n`\n\nexport const DELETE_LOT = gql`\n mutation DeleteLot($id: Int!) {\n deleteLot(id: $id) {\n success\n }\n }\n`\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { DeleteLot, DeleteLotVariables, DELETE_LOT } from '../api'\n\nexport const useDeleteLot = (onCompleted?: (data: DeleteLot) => void) => {\n const [deleteLot, { loading }] = useMutation(DELETE_LOT, {\n onCompleted,\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!variables || !response?.deleteLot.success) return\n\n const deletedLot: StoreObject = { id: variables.id, __typename: 'LotV2' }\n const deletedActiveLot: StoreObject = { id: variables.id, __typename: 'ActiveLot' }\n\n cache.evict({ id: cache.identify(deletedLot) })\n cache.evict({ id: cache.identify(deletedActiveLot) })\n cache.gc()\n },\n })\n\n return { deleteLot, loading }\n}\n","import { gql } from '@apollo/client'\n\nexport type { UpdateField, UpdateFieldVariables } from './types/UpdateField'\n\nexport const UPDATE_FIELD = gql`\n mutation UpdateField($id: Int!, $updateFieldDTO: UpdateFieldInput!) {\n updateField(id: $id, updateFieldDTO: $updateFieldDTO) {\n field {\n id\n name\n directions\n location {\n coordinates\n }\n productionType\n deliveryCondition\n }\n }\n }\n`\n","import { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UPDATE_FIELD, UpdateField, UpdateFieldVariables } from './api'\n\ninterface Props {\n onSuccess?: (fieldName: string, fieldId?: number) => void\n}\nexport const useUpdateField = ({ onSuccess }: Props = {}) => {\n const [updateField, { loading: updateLoading }] = useMutation(\n UPDATE_FIELD,\n {\n onCompleted: (data: UpdateField) => {\n onSuccess?.(data.updateField.field.name)\n },\n onError: GraphQLUtils.errorHandler,\n },\n )\n\n return { updateField, updateLoading }\n}\n","import { gql } from '@apollo/client'\n\nexport type { CreateField, CreateFieldVariables } from './types/CreateField'\n\nexport const CREATE_FIELD = gql`\n mutation CreateField($createFieldDTO: CreateFieldInput!) {\n createField(createFieldDTO: $createFieldDTO) {\n field {\n id\n name\n productionType\n deliveryCondition\n }\n }\n }\n`\n","import {\n Col,\n Row,\n Typography,\n Table as AntTable,\n Checkbox as AntCheckbox,\n Input as AntInput,\n} from 'antd'\nimport styled from 'styled-components'\nimport React, { useCallback, useEffect, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DeleteButton } from 'components'\nimport { ConversionUtils } from 'utils'\n\nimport { Dam } from '../../../../hooks/useDams/types'\n\nconst { Text } = Typography\n\nconst Header = styled(Row)`\n background-color: ${({ theme }) => theme.colors.grey2};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: 45px;\n padding: 0 17px;\n margin-bottom: 12px;\n align-items: center;\n`\n\nconst Table = styled(AntTable)`\n & .ant-table {\n background-color: ${({ theme }) => theme.colors.grey1};\n }\n & .ant-table-cell {\n padding: 12px 2px !important;\n border-bottom: unset;\n }\n` as unknown as typeof AntTable\n\nconst Input = styled(AntInput)`\n padding: 6px 9px;\n`\n\nconst Checkbox = styled(AntCheckbox)`\n .ant-checkbox-inner {\n border-radius: 100%;\n }\n`\n\ninterface Props {\n dams: Dam[]\n selectedDamIndex?: number\n onSelect: (damIndex: number) => void\n onChange: (dam: Dam['dam'], damIndex: number) => void\n onDelete: (damIndex: number) => void\n loading?: boolean\n disableDelete: boolean\n}\n\nexport const DamsList: React.FC = ({\n dams,\n selectedDamIndex,\n onSelect,\n onChange,\n onDelete,\n loading,\n disableDelete,\n}) => {\n const { t } = useTranslation('field-settings')\n const { t: commonT } = useTranslation('common')\n const isDataSourceBiggerThanMaxTableDams = !!dams.length\n\n const selectCheckBox = (index: number) => {\n if (index !== selectedDamIndex) onSelect(index)\n }\n\n type DataObject = {\n [key: number]: { current: HTMLDivElement | null }\n }\n\n const refs = useMemo(\n () =>\n dams.reduce((accumulator: DataObject, _, index) => {\n // eslint-disable-next-line no-param-reassign\n accumulator[index] = React.createRef()\n return accumulator\n }, {}),\n [dams],\n )\n\n const handleListScroll = useCallback(\n (index: number) => {\n if (!refs[index]) return\n const ref = refs[index].current\n\n if (ref === null) return\n\n ref.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n },\n [refs],\n )\n\n useEffect(() => {\n if (selectedDamIndex === undefined || selectedDamIndex === -1 || selectedDamIndex === null)\n return\n handleListScroll(selectedDamIndex)\n }, [handleListScroll, selectedDamIndex])\n\n const columns = [\n {\n render: (_: Dam, __: Dam, index: number) => (\n
\n onSelect(index)} />\n
\n ),\n width: '22px',\n },\n\n {\n render: ({ dam }: Dam, __: Dam, index: number) => (\n
\n {\n if (e.key === 'Backspace') {\n e.stopPropagation()\n }\n }}\n placeholder={commonT('inputs.name')}\n value={dam.name}\n onClick={() => selectCheckBox(index)}\n onChange={event =>\n onChange({ ...dam, name: ConversionUtils.autoCapitalize(event.target.value) }, index)\n }\n autoFocus={index === selectedDamIndex}\n />\n
\n ),\n },\n {\n render: (_: Dam, __: Dam, index: number) => (\n onDelete(index)}\n />\n ),\n width: '42px',\n },\n ]\n\n return (\n \n \n
\n {t('tableTitle')}\n
\n {!!dams.length && (\n dam.id}\n dataSource={dams}\n pagination={false}\n showHeader={false}\n columns={columns}\n scroll={isDataSourceBiggerThanMaxTableDams ? { y: 85 } : undefined}\n loading={loading}\n />\n )}\n \n
\n )\n}\n","import styled from 'styled-components'\nimport { Col, Menu, Upload } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { UploadChangeParam, UploadFile } from 'antd/lib/upload/interface'\n\nconst MenuContainer = styled(Menu)`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: none;\n .ant-dropdown-menu-item-active,\n .ant-dropdown-menu-item-selected {\n background-color: transparent !important;\n &:hover {\n background-color: ${({ theme }) => theme.colors.grey1} !important;\n span {\n color: ${({ theme }) => theme.colors.primary} !important;\n }\n }\n }\n .ant-dropdown-menu-item {\n display: flex;\n padding: 0 15px;\n align-items: center;\n margin: 0 !important;\n height: 52px !important;\n }\n`\n\nconst UploaderTextContainer = styled.div``\n\ninterface Props {\n onAddDam: () => void\n handleKml: (file: UploadChangeParam) => void\n}\n\nexport const DropdownMenu: React.FC = ({ onAddDam, handleKml }) => {\n const { t } = useTranslation('field-settings')\n\n const dataSource = [\n {\n key: 'draw',\n label: {t('drawDamButtonText')},\n onClick: onAddDam,\n },\n {\n key: 'kml',\n label: (\n false}\n onChange={handleKml}\n showUploadList={false}\n accept=\".kml\"\n >\n {t('uploadKMLText')}\n \n ),\n },\n ]\n\n return \n}\n","import { Form, Row, Typography } from 'antd'\nimport styled from 'styled-components'\n\nexport { DamsList } from './DamsList'\nexport { DropdownMenu } from './DropdownMenu'\n\nconst { Text: AntText } = Typography\n\nexport const Text = styled(AntText)`\n font-size: 16px;\n font-style: normal;\n`\nexport const StyledRow = styled(Row)`\n font-size: 13px;\n background-color: ${({ theme }) => theme.colors.grey2};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 14px;\n width: 100%;\n`\n\nexport const StyledItem = styled(Form.Item)`\n margin-bottom: 0px !important;\n`\n","import { useEffect, useState } from 'react'\nimport { Input, Row, Col, Space, Dropdown } from 'antd'\nimport * as yup from 'yup'\nimport { useForm, Controller } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { useMutation } from '@apollo/client'\nimport { point } from '@turf/helpers'\nimport { useTranslation } from 'react-i18next'\nimport { DownOutlined } from '@ant-design/icons'\nimport { UploadChangeParam } from 'antd/lib/upload'\nimport { UploadFile } from 'antd/lib/upload/interface'\n\nimport { ConversionUtils, GraphQLUtils } from 'utils'\nimport { ActiveCompanyContext } from 'contexts'\nimport { InputTitle, Button } from 'components'\nimport type { SelectField } from 'components/fields-selects/types'\nimport {\n COMPANY_FIELDS,\n CompanyFields,\n CompanyFieldsVariables,\n} from 'hooks/useHasCompanyOrFieldsOrLots/api'\nimport { useUpdateField } from 'features/MainRouter/features/SettingsRouter/hooks'\nimport { usePermissions } from 'hooks'\n\nimport { StyledCard, Title } from '../../../../components'\nimport { CreateField, CreateFieldVariables, CREATE_FIELD } from './api'\nimport { Fields, FieldsSettingsVariables, FIELDS_SETTINGS } from '../../../../api'\nimport { DamsList, DropdownMenu, StyledItem, StyledRow, Text } from './components'\nimport { Dam } from '../../hooks/useDams/types'\nimport { useCreateDams, useUpdateDams } from '../../hooks'\n\ninterface FormType {\n fieldName: string\n}\n\ninterface Props {\n field?: SelectField\n markerCoordinates: number[]\n onSuccess: (fieldName: string, fieldId?: number) => void\n dams: Dam[]\n selectedDamIndex?: number\n onDrawButtonClick: () => void\n onSelectedDamChange: (index: number) => void\n onDamChange: (dam: Dam['dam'], damIndex: number) => void\n onDeleteDam: (damIndex: number) => void\n damsLoading: boolean\n handleDamKml: (file: UploadChangeParam) => void\n}\n\nexport const FieldCard: React.FC = ({\n field,\n markerCoordinates,\n onSuccess,\n dams,\n selectedDamIndex,\n onDrawButtonClick,\n onSelectedDamChange,\n onDamChange,\n onDeleteDam,\n damsLoading,\n handleDamKml,\n}) => {\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { t } = useTranslation('field-settings')\n const { t: commonT } = useTranslation('common')\n const validationSchema = yup.object().shape({\n fieldName: yup.string().required(commonT('validations.required')),\n })\n const [showAddDamDropdown, setShowAddDamDropdown] = useState(false)\n\n const { createDams } = useCreateDams()\n const { updateDams } = useUpdateDams()\n\n const { permissions } = usePermissions()\n\n const { control, handleSubmit, reset } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: { fieldName: field?.name ?? '' },\n })\n\n useEffect(() => {\n if (field) reset({ fieldName: field.name })\n }, [field, reset])\n\n const [createField, { loading: createLoading }] = useMutation(\n CREATE_FIELD,\n {\n onCompleted: (data: CreateField) => {\n onSuccess(data.createField.field.name, data.createField.field.id)\n },\n update: (cache, { data: response }) => {\n if (!response || !activeCompanyId) return\n\n const cachedFields = cache.readQuery({\n query: FIELDS_SETTINGS,\n variables: { companyId: activeCompanyId },\n })\n\n const cachedCompanyFields = cache.readQuery({\n query: COMPANY_FIELDS,\n variables: { id: activeCompanyId },\n })\n\n const newField = response.createField.field\n const fields: Fields['fields'] = cachedFields\n ? { ...cachedFields.fields, results: [...cachedFields.fields.results, newField] }\n : { results: [newField], __typename: 'Fields' }\n\n cache.writeQuery({\n query: FIELDS_SETTINGS,\n data: { fields },\n variables: { companyId: activeCompanyId },\n })\n\n if (!cachedCompanyFields) return\n\n const companyFields = {\n company: {\n ...cachedCompanyFields.company,\n fields: [...cachedCompanyFields.company.fields!, newField],\n },\n }\n\n cache.writeQuery({\n query: COMPANY_FIELDS,\n data: { ...companyFields },\n variables: { id: activeCompanyId },\n })\n },\n onError: GraphQLUtils.errorHandler,\n },\n )\n\n const { updateField, updateLoading } = useUpdateField({ onSuccess })\n\n const editDescriptionText = permissions.satelliteImagery\n ? t('editField.descriptionWithDams')\n : t('editField.description')\n\n const createDescriptionText = permissions.satelliteImagery\n ? t('createField.descriptionWithDams')\n : t('createField.description')\n\n return (\n \n {field ? field.name : t('createField.title')}\n \n {field ? editDescriptionText : createDescriptionText}\n \n \n \n (\n \n onChange(ConversionUtils.autoCapitalize(event.target.value))}\n {...restFieldProps}\n />\n \n )}\n />\n \n \n \n \n \n \n {commonT('vocabulary.latitude')}: {markerCoordinates[1].toFixed(6)}\n \n \n {commonT('vocabulary.longitude')}: {markerCoordinates[0].toFixed(6)}\n \n \n \n {permissions.satelliteImagery && (\n <>\n \n \n setShowAddDamDropdown(prevState => !prevState)}\n dropdownRender={() => (\n {\n setShowAddDamDropdown(false)\n onDrawButtonClick()\n }}\n handleKml={kml => {\n setShowAddDamDropdown(false)\n handleDamKml(kml)\n }}\n />\n )}\n trigger={['click']}\n open={showAddDamDropdown}\n >\n \n \n \n \n \n \n )}\n\n \n !dam.name || !feature)}\n onClick={handleSubmit(({ fieldName }) => {\n if (!activeCompanyId) return\n const markerPoint = point(markerCoordinates)\n if (field) {\n const createDamDTOs = dams\n .filter(({ dam }) => dam.action === 'create')\n .map(({ dam, feature }) => ({\n name: dam.name!,\n area: feature!.geometry,\n fieldId: field.id,\n }))\n const updateDamDTOs = dams\n .filter(({ dam }) => dam.action === 'update')\n .map(({ dam, feature }) => ({\n id: Number(dam.id),\n name: dam.name!,\n area: feature!.geometry,\n }))\n\n if (createDamDTOs.length) {\n createDams({ variables: { createDamDTOs } })\n }\n if (updateDamDTOs.length) {\n updateDams({ variables: { updateDamsArgs: updateDamDTOs } })\n }\n\n updateField({\n variables: {\n id: field.id,\n updateFieldDTO: {\n name: fieldName,\n location: markerPoint.geometry,\n },\n },\n })\n return\n }\n\n createField({\n variables: {\n createFieldDTO: {\n name: fieldName,\n location: markerPoint.geometry,\n companyId: activeCompanyId,\n createDamsDTOs: dams.map(({ dam, feature }) => ({\n name: dam.name!,\n area: feature!.geometry,\n })),\n },\n },\n })\n })}\n >\n {field ? t('editField.buttonText') : t('createField.buttonText')}\n \n \n \n \n )\n}\n","import { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\nimport { DAMS, DamsVariables } from 'hooks/useQueryDams/api'\n\nimport { CREATE_DAMS, CreateDams, CreateDamsVariables, Dams } from './useDams/api'\n\nexport const useCreateDams = () => {\n const [createDams, { loading }] = useMutation(CREATE_DAMS, {\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!variables || !response) return\n\n const firstDam = response.createDams.results?.[0]\n\n const fieldId = firstDam?.fieldId\n\n if (!fieldId) return\n\n const cachedDataDams = cache.readQuery({\n query: DAMS,\n variables: { fieldId, includeCalendar: false, includeMapUrls: false },\n })\n const cachedDams = cachedDataDams?.dams.results ?? []\n\n const newDams = response.createDams.results.map(dam => ({\n ...dam,\n calendar: [],\n }))\n\n cache.writeQuery({\n query: DAMS,\n variables: { fieldId, includeCalendar: false, includeMapUrls: false },\n data: {\n dams: {\n ...cachedDataDams?.dams,\n results: [...cachedDams, ...newDams],\n __typename: 'Dams',\n },\n },\n })\n },\n })\n\n return { createDams, loading }\n}\n","import { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UPDATE_DAMS, UpdateDams, UpdateDamsVariables } from './useDams/api'\n\nexport const useUpdateDams = () => {\n const [updateDams, { loading }] = useMutation(UPDATE_DAMS, {\n onError: GraphQLUtils.errorHandler,\n })\n\n return { updateDams, loading }\n}\n","import { useMap } from 'react-map-gl'\nimport { useEffect } from 'react'\nimport MapboxGeocoder, { Result } from '@mapbox/mapbox-gl-geocoder'\nimport { Map } from 'mapbox-gl'\n\nimport { GeocoderControlProps } from './types'\n\nconst coordinatesGeocoder = (query: string) => {\n // https://docs.mapbox.com/mapbox-gl-js/example/mapbox-gl-geocoder-accept-coordinates/\n const matches = query.match(/^[ ]*(?:Lat: )?(-?\\d+\\.?\\d*)[, ]+(?:Lng: )?(-?\\d+\\.?\\d*)[ ]*$/i)\n if (!matches) {\n return []\n }\n\n function coordinateFeature(lng: number, lat: number) {\n return {\n center: [lng, lat],\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n place_name: `Latitud: ${lat} Longitud: ${lng}`,\n place_type: ['coordinate'],\n properties: {},\n type: 'Feature',\n }\n }\n\n const coord1 = Number(matches[1])\n const coord2 = Number(matches[2])\n const geocodes = []\n\n if (coord1 < -90 || coord1 > 90) {\n // must be lng, lat\n geocodes.push(coordinateFeature(coord1, coord2))\n }\n\n if (coord2 < -90 || coord2 > 90) {\n // must be lat, lng\n geocodes.push(coordinateFeature(coord2, coord1))\n }\n\n if (geocodes.length === 0) {\n // else could be either lng, lat or lat, lng\n geocodes.push(coordinateFeature(coord2, coord1))\n geocodes.push(coordinateFeature(coord1, coord2))\n }\n\n return geocodes as Result[]\n}\n\nexport const GeocoderControl: React.FC = ({\n geocoderOptions,\n containerRef,\n onResult,\n}) => {\n const { fieldsMap } = useMap()\n\n useEffect(() => {\n if (!fieldsMap || !containerRef) return\n const control = new MapboxGeocoder({\n ...geocoderOptions,\n localGeocoder: coordinatesGeocoder,\n marker: false,\n })\n control.on('result', onResult)\n\n const map = fieldsMap.getMap() as Map\n\n containerRef.current.appendChild(control.onAdd(map))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fieldsMap, containerRef])\n\n return null\n}\n","import React from 'react'\nimport { Space, Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { Button } from 'components'\n\nimport { StyledCard, Title, Text } from '../../../../components'\n\ninterface Props {\n fieldName?: string\n onClick: () => void\n}\n\nexport const CreationFeedbackCard: React.FC = ({ onClick, fieldName }) => {\n const { t } = useTranslation('field-settings')\n\n return (\n \n {fieldName}\n \n {t('feedbackCard.text')} \n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\n\nimport { FieldsSelect as BaseFieldsSelect } from 'components'\n\nimport { MapSidebar as BaseMapSidebar } from '../../../components'\n\nexport { FieldCard } from './FieldCard'\nexport { GeocoderControl } from './GeocoderControl'\nexport { CreationFeedbackCard } from './CreationFeedbackCard'\nexport { Control } from '../../../components/Control'\n\nexport const FieldsSelect = styled(BaseFieldsSelect)`\n margin-bottom: 30px;\n @media (max-height: 735px) {\n margin-bottom: 15px;\n }\n`\nexport const Container = styled.div`\n height: 100%;\n .mapboxgl-ctrl-top-right {\n display: none;\n }\n`\n\nexport const LeftSidebar = styled.div`\n width: 300px;\n position: absolute;\n top: 25px;\n left: 50px;\n z-index: 10;\n`\n\nexport const MapSidebar = styled(BaseMapSidebar)`\n top: 25px;\n`\n","import React, { useRef, useState, useCallback, useEffect, useMemo } from 'react'\nimport { Col, Row } from 'antd'\nimport ReactMapGL, { MapLayerMouseEvent, Marker, ViewStateChangeEvent } from 'react-map-gl'\nimport { useNavigate, useParams } from 'react-router-dom'\nimport { Result } from '@mapbox/mapbox-gl-geocoder'\nimport { useTranslation } from 'react-i18next'\nimport pointInPolygon from '@turf/boolean-point-in-polygon'\nimport { point } from '@turf/helpers'\n\nimport { config } from 'config'\nimport { MAP, NAVIGATION } from 'consts'\nimport { MapPin, ConfirmationModal as DeleteDamConfirmationModal } from 'components'\nimport { ActiveCompanyContext } from 'contexts'\nimport type { SelectField } from 'components/fields-selects/types'\nimport { LotsMapLocationState, MandatoryFeature } from 'types'\nimport { useUser } from 'hooks'\n\nimport { useDams } from './hooks'\nimport {\n Control,\n CreationFeedbackCard,\n FieldCard,\n FieldsSelect,\n GeocoderControl,\n Container,\n LeftSidebar,\n MapSidebar,\n} from './components'\nimport { SearchBoxContainer } from '../../components'\nimport { Dam } from './hooks/useDams/types'\n\nexport const FieldsMap: React.FC = () => {\n const { activeCompanyId, activeSeasonId } = ActiveCompanyContext.useActiveCompanyContext()\n const { t } = useTranslation('field-settings')\n const user = useUser()\n\n const [viewport, setViewport] = useState({\n latitude: MAP.DEFAULT_CENTER.LATITUDE,\n longitude: MAP.DEFAULT_CENTER.LONGITUDE,\n zoom: MAP.ZOOM.DEFAULT,\n ...MAP.DEFAULT_TRANSITION,\n })\n\n const navigate = useNavigate()\n const { id } = useParams<{ id?: string }>()\n\n const [selectedField, setSelectedField] = useState()\n\n const [markerCoordinates, setMarkerCoordinates] = useState([\n MAP.DEFAULT_CENTER.LONGITUDE,\n MAP.DEFAULT_CENTER.LATITUDE,\n ])\n\n const [isCreateFieldCompleted, setIsCreateFieldCompleted] = useState(false)\n const [fieldName, setFieldName] = useState()\n const [fieldId, setFieldId] = useState()\n const {\n dams,\n onCreateFeature,\n onUpdateFeature,\n onDelete,\n onSelectionChange,\n mode,\n selectedDamIndex,\n handleDrawButtonClick,\n handleDamChange,\n handleSelectedDamChange,\n showDeleteDamModal,\n onCancelDeleteDam,\n onConfirmDeleteDam,\n loadingDeleteDam,\n handleDeleteDam,\n selectedDamToDelete,\n loading,\n handleDamKml,\n } = useDams(selectedField?.id ?? fieldId)\n\n useEffect(() => {\n if (selectedField) {\n const [longitude, latitude] = selectedField.location.coordinates\n setMarkerCoordinates(selectedField.location.coordinates)\n setViewport(prevViewport => ({ ...prevViewport, longitude, latitude }))\n return\n }\n\n const activeCompany = user?.companiesRoles?.find(\n company => company.company.id === activeCompanyId,\n )?.company\n if (activeCompany?.subregion?.id) {\n const latitude = activeCompany.subregion.location.coordinates[1]\n const longitude = activeCompany.subregion.location.coordinates[0]\n setMarkerCoordinates(activeCompany.subregion.location.coordinates)\n setViewport(prevViewport => ({ ...prevViewport, longitude, latitude }))\n }\n }, [activeCompanyId, selectedField, user?.companiesRoles])\n\n const geocoderContainerRef = useRef(null)\n\n const onSuccess = (newFieldName: string, newFieldId?: number) => {\n if (id) {\n navigate(NAVIGATION.GO_BACK)\n return\n }\n\n setFieldName(newFieldName)\n setFieldId(newFieldId)\n setIsCreateFieldCompleted(true)\n }\n\n const onHandleMarker = (event: MapLayerMouseEvent) => {\n const { lat, lng } = event.lngLat\n const isPointInPolygon = dams.some(dam => {\n if (!dam.feature) return false\n const coordinates = point([lng, lat])\n return pointInPolygon(coordinates, dam.feature)\n })\n\n if (isPointInPolygon || mode?.mode === 'draw_polygon' || mode?.mode === 'direct_select') return\n\n const { lngLat } = event\n setMarkerCoordinates([lngLat.lng, lngLat.lat])\n }\n\n const handleChange = useCallback((newField: SelectField) => {\n setSelectedField(newField)\n }, [])\n\n const onMove = useCallback(\n (evt: ViewStateChangeEvent) =>\n setViewport({\n transitionDuration: MAP.DEFAULT_TRANSITION.transitionDuration,\n ...evt.viewState,\n }),\n [],\n )\n\n const onResult = useCallback(({ result }: { result: Result }) => {\n const location =\n result &&\n (result.center || (result.geometry?.type === 'Point' && result.geometry.coordinates))\n\n if (location) {\n setMarkerCoordinates([location[0], location[1]])\n }\n }, [])\n\n const onCreationFeedbackButtonClick = () => {\n setIsCreateFieldCompleted(false)\n navigate('/settings/lots', {\n replace: true,\n state: {\n fieldId: selectedField?.id ?? fieldId,\n seasonId: activeSeasonId,\n goTo: '/dashboard',\n } as LotsMapLocationState,\n })\n }\n\n const damFeatures = useMemo(() => {\n const damsWithFeature = dams.filter(({ feature }) => !!feature) as (Omit & {\n feature: MandatoryFeature\n })[]\n\n return damsWithFeature.map(({ feature, dam }) => {\n return { ...feature, id: dam.id }\n })\n }, [dams])\n\n return (\n <>\n \n \n \n \n \n {isCreateFieldCompleted ? (\n \n ) : (\n <>\n {id && (\n \n \n \n )}\n \n \n )}\n \n \n \n \n {!isCreateFieldCompleted && (\n \n )}\n \n {\n const { lngLat } = event\n setMarkerCoordinates([lngLat.lng, lngLat.lat])\n }}\n >\n \n \n \n \n {showDeleteDamModal && (\n \n )}\n \n )\n}\n","import {\n Col,\n Row,\n Typography,\n Table as AntTable,\n Checkbox as AntCheckbox,\n Input as AntInput,\n InputNumber as AntInputNumber,\n} from 'antd'\nimport styled from 'styled-components'\nimport React, { useEffect, useCallback, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { DeleteButton, CropsSelect as BaseCropsSelect } from 'components'\nimport { TABLE } from 'consts'\nimport { useFeatures, usePermissions } from 'hooks'\nimport { ConversionUtils } from 'utils'\n\nimport { Lot } from '../../../../types'\n\nconst { Text } = Typography\n\nconst Header = styled(Row)`\n background-color: ${({ theme }) => theme.colors.grey2};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: 45px;\n padding: 0 17px;\n margin-bottom: 12px;\n align-items: center;\n`\n\nconst Table = styled(AntTable)`\n & .ant-table {\n background-color: ${({ theme }) => theme.colors.grey1};\n }\n & .ant-table-cell {\n padding: 12px 2px !important;\n border-bottom: unset;\n }\n` as unknown as typeof AntTable\n// Workaraound to avoid losing generic typing after styling the component\n\nconst CropsSelect = styled(BaseCropsSelect)`\n width: 100%;\n`\n\nconst Input = styled(AntInput)`\n padding: 6px 9px;\n`\n\nconst InputNumber = styled(AntInputNumber)`\n width: 60px;\n height: 38px;\n .ant-input-number-input-wrap {\n height: 100%;\n }\n & input {\n height: 100%;\n }\n`\n\nconst Checkbox = styled(AntCheckbox)`\n .ant-checkbox-inner {\n border-radius: 100%;\n }\n`\n\ninterface Props {\n lots: Lot[]\n selectedLotIndex?: number\n onSelect: (lotIndex: number) => void\n onChange: (lot: Lot['lot'], lotIndex: number) => void\n onDelete: (lotIndex: number) => void\n loading?: boolean\n disableDelete: boolean\n}\n\nexport const LotsList: React.FC = ({\n lots,\n selectedLotIndex,\n onSelect,\n onChange,\n onDelete,\n loading,\n disableDelete,\n}) => {\n const { t } = useTranslation('lot-settings')\n const { t: commonT } = useTranslation('common')\n const { permissions } = usePermissions()\n const { organizationFeatures } = useFeatures()\n const isDataSourceBiggerThanMaxTableLots = lots.length > TABLE.MAX_TABLE_DATA\n\n const selectCheckBox = (index: number) => {\n if (index !== selectedLotIndex) onSelect(index)\n }\n\n type DataObject = {\n [key: number]: { current: HTMLDivElement | null }\n }\n\n const refs = useMemo(\n () =>\n lots.reduce((accumulator: DataObject, _, index) => {\n // eslint-disable-next-line no-param-reassign\n accumulator[index] = React.createRef()\n return accumulator\n }, {}),\n [lots],\n )\n\n const handleListScroll = useCallback(\n (index: number) => {\n if (!refs[index]) return\n const ref = refs[index].current\n\n if (ref === null) return\n\n ref.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n })\n },\n [refs],\n )\n\n useEffect(() => {\n if (selectedLotIndex === undefined || selectedLotIndex === -1 || selectedLotIndex === null)\n return\n handleListScroll(selectedLotIndex)\n }, [handleListScroll, selectedLotIndex])\n\n const columns = [\n {\n render: (_: Lot, __: Lot, index: number) => (\n
\n onSelect(index)} />\n
\n ),\n width: '22px',\n },\n {\n render: ({ lot }: Lot, __: Lot, index: number) => (\n {\n if (e.key === 'Backspace') {\n e.stopPropagation()\n }\n }}\n placeholder={commonT('inputs.commercialName')}\n value={lot.commercialName ?? undefined}\n onClick={() => selectCheckBox(index)}\n onChange={event =>\n onChange(\n { ...lot, commercialName: ConversionUtils.autoCapitalize(event.target.value) },\n index,\n )\n }\n autoFocus={index === selectedLotIndex}\n />\n ),\n width: '65px',\n hide: !permissions.isCommercialNameEnabled,\n },\n {\n render: ({ lot }: Lot, __: Lot, index: number) => (\n
\n {\n if (e.key === 'Backspace') {\n e.stopPropagation()\n }\n }}\n placeholder={commonT('inputs.name')}\n value={lot.name}\n onClick={() => selectCheckBox(index)}\n onChange={event =>\n onChange({ ...lot, name: ConversionUtils.autoCapitalize(event.target.value) }, index)\n }\n autoFocus={index === selectedLotIndex}\n />\n
\n ),\n },\n {\n render: ({ lot, feature }: Lot, __: Lot, index: number) => (\n {\n if (e.key === 'Backspace') {\n e.stopPropagation()\n }\n }}\n placeholder={commonT('inputs.size')}\n value={lot.size ? lot.size.toFixed(0) : undefined}\n onClick={() => selectCheckBox(index)}\n onChange={event => onChange({ ...lot, size: Number(event) }, index)}\n autoFocus={index === selectedLotIndex}\n disabled={!!feature || !!lot.area}\n type=\"number\"\n controls={false}\n />\n ),\n hide: !organizationFeatures.crm?.enabled,\n width: '65px',\n },\n {\n render: ({ lot }: Lot, __: Lot, index: number) => {\n return (\n
\n {\n onChange({ ...lot, cropId: crop?.id, varietyId: undefined }, index)\n }}\n onClick={() => selectCheckBox(index)}\n />\n
\n )\n },\n width: '125px',\n },\n {\n render: (_: Lot, __: Lot, index: number) => {\n const disabledCondition = disableDelete && index !== selectedLotIndex\n\n return lots[index].lot.isPlanetEnabled ? (\n \n ) : (\n !disabledCondition && onDelete(index)}\n />\n )\n },\n width: '42px',\n },\n ]\n\n return (\n \n \n
\n {t('tableTitle')}\n
\n lot.id}\n dataSource={lots}\n columns={columns.filter(column => !column.hide)}\n pagination={false}\n showHeader={false}\n scroll={isDataSourceBiggerThanMaxTableLots ? { y: 200 } : undefined}\n loading={loading}\n />\n \n
\n )\n}\n","import styled from 'styled-components'\nimport { Col, Menu, Upload } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { UploadChangeParam, UploadFile } from 'antd/lib/upload/interface'\n\nimport { useFeatures } from 'hooks'\n\nconst MenuContainer = styled(Menu)`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: none;\n .ant-dropdown-menu-item-active,\n .ant-dropdown-menu-item-selected {\n background-color: transparent !important;\n &:hover {\n background-color: ${({ theme }) => theme.colors.grey1} !important;\n span {\n color: ${({ theme }) => theme.colors.primary} !important;\n }\n }\n }\n .ant-dropdown-menu-item {\n display: flex;\n padding: 0 15px;\n align-items: center;\n margin: 0 !important;\n height: 52px !important;\n }\n`\n\nconst UploaderTextContainer = styled.div``\n\ninterface Props {\n onAddLot: () => void\n handleKml: (file: UploadChangeParam) => void\n onReuseButtonClick: () => void\n onAddLotWithoutPerimeter: () => void\n}\n\nexport const DropdownMenu: React.FC = ({\n onAddLot,\n handleKml,\n onReuseButtonClick,\n onAddLotWithoutPerimeter,\n}) => {\n const { t } = useTranslation('lot-settings')\n const { organizationFeatures } = useFeatures()\n\n const dataSource = [\n {\n key: 'draw',\n label: {t('buttons.drawLotText')},\n onClick: onAddLot,\n },\n {\n key: 'withoutPerimeter',\n label: {t('buttons.withoutPerimeter')},\n onClick: onAddLotWithoutPerimeter,\n disabled: !organizationFeatures.crm?.enabled,\n },\n {\n key: 'kml',\n label: (\n false}\n onChange={handleKml}\n showUploadList={false}\n accept=\".kml\"\n >\n {t('buttons.uploadKMLText')}\n \n ),\n },\n {\n key: 'reuse',\n label: {t('buttons.reuseLots')},\n onClick: onReuseButtonClick,\n },\n ]\n\n const filteredData = dataSource.filter(option => !option.disabled)\n\n return \n}\n","export interface ChartDataObject {\n name: string\n value: number\n size: number\n cropName: string\n}\n\nexport interface Props {\n varietiesData: ChartDataObject[]\n cropData: ChartDataObject[]\n showCropChart: boolean\n}\n\nexport enum BallColorsTypes {\n field = 'FIELD',\n lot = 'LOT',\n neutral = 'NEUTRAL',\n good = 'GOOD',\n alert = 'ALERT',\n danger = 'DANGER',\n}\n","import styled, { useTheme } from 'styled-components'\n\nimport { BallColorsTypes } from '../../types'\n\ninterface BallProps {\n background: string\n size: 'small' | 'large'\n}\n\nconst Ball = styled.div`\n width: ${({ size }) => (size === 'large' ? '18px' : '12px')};\n height: ${({ size }) => (size === 'large' ? '18px' : '12px')};\n border-radius: 50%;\n background-color: ${({ background }) => background};\n margin: ${({ size }) => (size === 'large' ? 'unset' : '2px')};\n`\n\ninterface Props {\n type?: string\n size?: 'small' | 'large'\n}\n\nexport const TrafficLightBall: React.FC = ({\n type = BallColorsTypes.neutral,\n size = 'small',\n}) => {\n const { colors } = useTheme()\n\n interface BallColors {\n [key: string]: string\n }\n const BALL_COLORS: BallColors = {\n FIELD: colors.new.baseColor[850],\n LOT: colors.grey1,\n NEUTRAL: colors.trafficLightNeutral,\n GOOD: colors.new.trafficLightGreen,\n ALERT: colors.new.trafficLightYellow,\n DANGER: colors.new.trafficLightRed,\n }\n\n return \n}\n","import { lineString } from '@turf/helpers'\nimport styled from 'styled-components'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { MAP } from 'consts'\nimport { config } from 'config'\n\ninterface ImgProps {\n width?: string\n height?: string\n isOnClickDisabled?: boolean\n}\n\nconst Image = styled.img`\n background-position: center;\n cursor: ${({ isOnClickDisabled }) => !isOnClickDisabled && 'pointer'};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n width: ${({ width = '150px' }) => width};\n height: ${({ height = '85px' }) => height};\n`\ninterface Props extends ImgProps {\n lotCoordinates?: number[][]\n fieldId?: number\n lotId?: number\n isOnClickDisabled?: boolean\n}\n\nexport const MapImage: React.FC = ({\n lotCoordinates,\n width,\n height,\n fieldId,\n lotId,\n isOnClickDisabled,\n}) => {\n const navigate = useNavigate()\n const { t } = useTranslation('lot-dashboard')\n\n const getImageUrl = (coordinates: string) => {\n return `${MAP.STATIC_IMAGES.URL}geojson({\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"properties\":{\"stroke\":\"%23ffffff\",\"stroke-width\":7, \"stroke-opacity\": 1, \"fill\":\"%239c9a37\",\"fill-opacity\":1},\"geometry\":{\"type\": \"Polygon\",\"coordinates\":[${coordinates}]}}]})/auto/${MAP.STATIC_IMAGES.SIZE}?padding=30,30,40&logo=false&access_token=${config.mapboxToken}`\n }\n\n if (!lotCoordinates) return null\n\n return (\n {\n if (isOnClickDisabled) return\n\n navigate({\n pathname: '/map',\n search: fieldId && lotId ? `?fieldId=${fieldId}&lotId=${lotId}` : undefined,\n })\n }}\n src={getImageUrl(JSON.stringify(lineString(lotCoordinates).geometry.coordinates))}\n alt={t('lotMinimapAlt')}\n />\n )\n}\n","import React from 'react'\n\nimport { IndicatorStatus } from 'types'\n\nimport { TrafficLightBall } from '../TrafficLightBall'\nimport { BallColorsTypes } from '../../types'\n\nconst NeutralTrafficLight = ({ size }: { size?: 'small' | 'large' }) => {\n return (\n <>\n \n \n \n \n )\n}\n\ninterface Props {\n hasEmergenceDate: boolean\n semaphoreIndicator?: IndicatorStatus\n size?: 'small' | 'large'\n}\n\nexport const TrafficLights: React.FC = ({ hasEmergenceDate, semaphoreIndicator, size }) => {\n if (!hasEmergenceDate) return \n\n return (\n <>\n \n \n \n \n )\n}\n","import { Space as AntdSpace, Divider as AntDivider, Typography } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { CogSettingsIcon } from 'assets/icons'\nimport { usePermissions } from 'hooks'\nimport { TagText } from 'components'\n\nconst { Title: AntTitle } = Typography\n\nconst Title = styled(AntTitle)`\n font-weight: 600 !important;\n margin-bottom: 0px !important;\n line-height: 32px;\n`\n\nconst FieldTitle = styled(Title)`\n color: ${({ theme }) => theme.colors.olive} !important;\n line-height: 24px;\n font-size: 14px !important;\n font-weight: 400 !important;\n`\n\nconst Space = styled(AntdSpace)`\n position: sticky;\n top: 0;\n z-index: 1;\n background: ${({ theme }) => theme.colors.white};\n width: 100%;\n margin-bottom: 24px;\n`\n\nexport const IconContainer = styled.div`\n display: flex;\n align-items: center;\n cursor: pointer;\n`\n\ninterface Props {\n name: string\n lotsOrHaQty: string\n commercialName?: string\n onSettingsClick: () => void\n isHarvestedLot?: boolean\n}\n\nexport const Divider = styled(AntDivider)`\n height: 32px !important;\n border-left: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n`\nexport const LotOrFieldInformation: React.FC = ({\n name,\n lotsOrHaQty,\n onSettingsClick,\n commercialName,\n isHarvestedLot,\n}) => {\n const { colors } = useTheme()\n const { permissions } = usePermissions()\n const { t } = useTranslation('common')\n\n return (\n \n {name}\n {isHarvestedLot && (\n \n )}\n\n {permissions.isCommercialNameEnabled && commercialName && (\n <>\n \n {commercialName}\n \n )}\n \n {lotsOrHaQty}\n \n \n \n \n \n )\n}\n","import { Table as AntTable } from 'antd'\nimport styled from 'styled-components'\n\nexport const StyledTable = styled(AntTable)`\n & .ant-table-cell {\n border-bottom: unset;\n padding: 5px;\n }\n\n & th {\n background: ${({ theme }) => theme.colors.transparent} !important;\n border-radius: 0px !important;\n text-align: center !important;\n font-family: Inter;\n font-size: 14px;\n font-weight: 400;\n }\n\n & .ant-table-cell-scrollbar {\n box-shadow: none;\n }\n\n .ant-table-cell-fix-left {\n background: ${({ theme }) => theme.colors.grey1} !important;\n }\n\n .ant-table-row .ant-table-cell {\n > span > span {\n color: ${({ theme }) => theme.colors.black};\n }\n }\n` as typeof AntTable\n","import type { ColumnsType } from 'antd/es/table'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\n\nimport { MapImage } from 'features/MainRouter/features/DasboardRouter/features/components'\nimport { LANGUAGE } from 'consts'\nimport { LocaleLanguage } from 'types'\nimport { EllipsisText } from 'components'\n\nimport { StyledTable } from './components'\nimport { ReuseLot } from '../../hooks/useReuseLots/api'\n\nconst ELLIPSIS_TEXT_STYLE = { width: '100%', fontWeight: 400 }\n\ninterface Props {\n reusableLots?: ReuseLot[]\n isLoading: boolean\n selectedRowKeys: React.Key[]\n onSelectChange: (newSelectedRowKeys: React.Key[]) => void\n}\n\nexport const Table: React.FC = ({\n reusableLots,\n selectedRowKeys,\n onSelectChange,\n isLoading,\n}) => {\n const { t } = useTranslation('common')\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n\n interface DataType {\n id: React.Key\n name: string\n area: string\n crop: string\n variety: string\n lotCoordinates?: number[][]\n }\n\n const columns: ColumnsType = [\n {\n render: ({ lotCoordinates }: DataType) => {\n return (\n \n )\n },\n },\n {\n render: ({ name }: DataType) => (\n \n ),\n },\n {\n dataIndex: 'area',\n width: '75px',\n },\n {\n render: ({ crop }: DataType) => (\n \n ),\n },\n {\n render: ({ variety }: DataType) => (\n \n ),\n },\n ]\n\n const dataSource =\n reusableLots?.map(reusableLot => {\n return {\n id: reusableLot.id,\n name: reusableLot.name,\n area: t('systemsFormat.area', { val: { area: reusableLot.size } }),\n crop: reusableLot.crop.locales[language],\n variety: reusableLot.variety?.locales[language] ?? '-',\n lotCoordinates: reusableLot.area?.coordinates[0],\n }\n }) ?? []\n\n const rowSelection = {\n selectedRowKeys,\n onChange: onSelectChange,\n }\n\n const onClickRow = (id: React.Key) => {\n const newSelectedRowKeys = selectedRowKeys.includes(id)\n ? selectedRowKeys.filter(rowKey => rowKey !== id)\n : [...selectedRowKeys, id]\n onSelectChange(newSelectedRowKeys)\n }\n\n return (\n id}\n onRow={({ id }) => {\n return {\n onClick: () => onClickRow(id),\n style: { cursor: 'pointer' },\n }\n }}\n />\n )\n}\n","import { memo } from 'react'\nimport { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { useCompanySeasons } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\nimport { CompanySeasons } from 'api'\n\nconst Select = styled(AntSelect)`\n min-width: 200px;\n .ant-select-selector {\n font-size: 13px;\n }\n` as typeof AntSelect\n\ninterface Props {\n onChange: (seasonId?: number) => void\n seasonIdToOmit?: number\n selectedSeasonId?: number\n isDisabled: boolean\n}\n\nexport const SeasonSelect: React.FC = memo(\n ({ onChange, seasonIdToOmit, selectedSeasonId, isDisabled }) => {\n const { t } = useTranslation('lot-settings')\n\n const onCompleted = (companySeasons: CompanySeasons) => {\n const filteredCompanySeasons = companySeasons?.seasons.results.filter(\n season => season.id !== seasonIdToOmit && season.seasonFields.length,\n )\n if (!filteredCompanySeasons.length) return\n onChange(filteredCompanySeasons[0].id)\n }\n\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data, loading } = useCompanySeasons(activeCompanyId, onCompleted)\n\n const seasons = data?.seasons.results.filter(season => season.id !== seasonIdToOmit)\n\n return (\n onChange(Number(id))}\n disabled={isDisabled}\n placeholder={isDisabled ? t('reuseLotsModal.seasonSelectPlaceholder') : undefined}\n >\n {seasons?.map(season => (\n \n {season.name}\n \n ))}\n \n )\n },\n)\n","import { Typography } from 'antd'\nimport styled from 'styled-components'\n\nconst { Text } = Typography\n\nconst TextContainer = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n`\n\nconst Description = styled(Text)`\n color: ${({ theme }) => theme.colors.olive5} !important;\n font-style: normal !important;\n font-size: 12px !important;\n font-weight: 400 !important;\n`\n\ninterface Props {\n description: string\n}\n\nexport const EmptyResults: React.FC = ({ description }) => {\n return (\n \n {description}\n \n )\n}\n","import { Typography } from 'antd'\nimport styled from 'styled-components'\n\nimport { Modal, Button } from 'components'\n\nexport { Table } from './Table'\nexport { SeasonSelect } from './SeasonSelect'\nexport { EmptyResults } from './EmptyResults'\n\nconst { Text } = Typography\n\nexport const CancelButton = styled(Button)`\n border: ${({ theme }) => `1px solid ${theme.colors.primary}`};\n margin-right: 32px;\n &:hover {\n border: ${({ theme }) => `1px solid ${theme.colors.primary}`};\n }\n`\n\nexport const StyledModal = styled(Modal)`\n .ant-modal-header {\n padding-bottom: 5px !important;\n }\n`\nexport const Description = styled(Text)`\n color: ${({ theme }) => theme.colors.olive5} !important;\n font-style: normal !important;\n font-weight: 400 !important;\n line-height: 24px !important;\n font-size: 13px !important;\n`\n\nexport const FieldNameContainer = styled.div`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid #dddfdd;\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.grey2}`};\n background: ${({ theme }) => theme.colors.grey2};\n display: flex;\n min-width: 200px;\n max-height: 38px;\n padding: 8px 16px;\n justify-content: center;\n`\n\nexport const FieldName = styled(Text)`\n color: ${({ theme }) => theme.colors.olive5} !important;\n font-style: normal !important;\n font-weight: 400 !important;\n line-height: 22px !important;\n font-size: 14px !important;\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n ReuseLots,\n ReuseLotsVariables,\n ReuseLots_lotsV2_results as ReuseLot,\n} from './types/ReuseLots'\n\nexport const REUSE_LOTS = gql`\n query ReuseLots($seasonId: Int!, $fieldId: Int!) {\n lotsV2(seasonId: $seasonId, fieldId: $fieldId) {\n results {\n id\n name\n commercialName\n size\n area {\n coordinates\n }\n variety {\n id\n locales {\n es\n en\n }\n }\n crop {\n id\n locales {\n es\n en\n }\n }\n rtk {\n coordinates\n type\n }\n }\n }\n }\n`\n","import { Row, Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useState } from 'react'\n\nimport { Button } from 'components'\n\nimport {\n CancelButton,\n Description,\n FieldNameContainer,\n StyledModal,\n Table,\n SeasonSelect,\n FieldName,\n EmptyResults,\n} from './components'\nimport { useReuseLots } from './hooks'\nimport { ReuseLot } from './hooks/useReuseLots/api'\n\ninterface Props {\n fieldName?: string\n seasonId?: number\n fieldId: number\n onSuccess: (lots: ReuseLot[]) => void\n onCancel: () => void\n}\n\nexport const ReuseLotsModal: React.FC = ({\n fieldName,\n onSuccess,\n onCancel,\n fieldId,\n seasonId,\n}) => {\n const { t } = useTranslation('lot-settings')\n const [selectedSeasonId, setSelectedSeasonId] = useState()\n const [selectedRowKeys, setSelectedRowKeys] = useState([])\n const { loading, reusableLots } = useReuseLots({ fieldId, seasonId: selectedSeasonId })\n\n const onSeasonChange = (id?: number) => {\n setSelectedSeasonId(id)\n setSelectedRowKeys([])\n }\n\n return (\n \n \n \n {t('reuseLotsModal.description')}\n \n \n \n \n {fieldName}\n \n \n \n \n \n \n \n {!loading && !selectedSeasonId ? (\n \n ) : (\n \n )}\n \n \n \n \n {t('reuseLotsModal.buttons.cancel')}\n \n {\n const lots = reusableLots?.filter(reusableLot =>\n selectedRowKeys.includes(reusableLot.id),\n )\n if (!lots?.length) return\n onSuccess(lots)\n }}\n >\n {t('reuseLotsModal.buttons.confirm')}\n \n \n \n \n \n )\n}\n","import { useQuery } from '@apollo/client'\n\nimport { REUSE_LOTS, ReuseLots, ReuseLotsVariables } from './api'\n\ninterface Props {\n seasonId?: number\n fieldId?: number\n}\n\nexport const useReuseLots = ({ seasonId, fieldId }: Props) => {\n const { data, loading } = useQuery(REUSE_LOTS, {\n variables: {\n seasonId: seasonId!,\n fieldId: fieldId!,\n },\n skip: !fieldId || !seasonId,\n })\n\n return { reusableLots: data?.lotsV2.results, loading }\n}\n","import { Card, Typography } from 'antd'\nimport styled from 'styled-components'\n\nimport { Button } from 'components'\n\nexport { LotsList } from './LotsList'\nexport { DropdownMenu } from './DropdownMenu'\nexport { ReuseLotsModal } from './ReuseLotsModal'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nexport const StyledCard = styled(Card)`\n padding: ${({ theme }) => theme.card.mapCardPadding};\n & .ant-card-body {\n padding: 0;\n }\n @media (max-height: 735px) {\n padding: 30px 40px !important;\n max-height: calc(100vh - 105px);\n }\n overflow-y: auto;\n`\n\nexport const AddLotButton = styled(Button).attrs({\n type: 'primary',\n})`\n margin: 22px 0;\n min-width: 150px;\n`\n\nexport const ConfirmLotsButton = styled(Button).attrs({\n type: 'primary',\n})`\n margin-top: 32px;\n`\n\nexport const Title = styled(AntTitle)`\n margin-bottom: 22px !important;\n`\nexport const Text = styled(AntText)`\n font-size: 16px;\n font-style: normal;\n`\n\nexport const CancelButton = styled(Button)`\n border: ${({ theme }) => `1px solid ${theme.colors.primary}`};\n color: ${({ theme }) => theme.colors.primary};\n margin: 32px 16px 0 0;\n &:hover {\n border: ${({ theme }) => `1px solid ${theme.colors.primary}`};\n }\n`\n","import { Row, Dropdown } from 'antd'\nimport { UploadChangeParam, UploadFile } from 'antd/lib/upload/interface'\nimport { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router-dom'\nimport { DownOutlined } from '@ant-design/icons'\nimport { useState } from 'react'\n\nimport { SelectField } from 'components/fields-selects/types'\nimport { NAVIGATION } from 'consts'\n\nimport { Lot } from '../../types'\nimport {\n LotsList,\n StyledCard,\n AddLotButton,\n ConfirmLotsButton,\n Title,\n Text,\n CancelButton,\n DropdownMenu,\n ReuseLotsModal,\n} from './components'\nimport { ReuseLot } from './components/ReuseLotsModal/hooks/useReuseLots/api'\n\ninterface Props {\n field?: SelectField\n lots: Lot[]\n selectedLotIndex?: number\n onSelectLot: (lotIndex: number) => void\n onAddLot: () => void\n onChangeLot: (lot: Lot['lot'], lotIndex: number) => void\n onDeleteLot: (lotIndex: number) => void\n onConfirmLots: () => void\n loading?: boolean\n handleKml: (file: UploadChangeParam) => void\n onDrawMode: boolean\n seasonId?: number\n handleReuseLots: (lots: ReuseLot[]) => void\n onAddLotWithoutPerimeter: () => void\n}\n\nexport const LotsCard: React.FC = ({\n field,\n lots,\n selectedLotIndex,\n onSelectLot,\n onAddLot,\n onChangeLot,\n onDeleteLot,\n onConfirmLots,\n loading,\n handleKml,\n onDrawMode,\n seasonId,\n handleReuseLots,\n onAddLotWithoutPerimeter,\n}) => {\n const [showReuseLotsModal, setShowReuseModal] = useState(false)\n const [showAddLotDropdown, setShowAddLotDropdown] = useState(false)\n\n const { t } = useTranslation('lot-settings')\n const navigate = useNavigate()\n\n if (!field) return null\n\n const onConfirmReuseLots = (reusableLots: ReuseLot[]) => {\n setShowReuseModal(false)\n handleReuseLots(reusableLots)\n }\n\n return (\n <>\n \n {field.name}\n {t('description')}\n \n setShowAddLotDropdown(prevState => !prevState)}\n dropdownRender={() => (\n {\n setShowAddLotDropdown(false)\n handleKml(file)\n }}\n onAddLot={() => {\n setShowAddLotDropdown(false)\n onAddLot()\n }}\n onReuseButtonClick={() => {\n setShowAddLotDropdown(false)\n setShowReuseModal(true)\n }}\n onAddLotWithoutPerimeter={() => {\n setShowAddLotDropdown(false)\n onAddLotWithoutPerimeter()\n }}\n />\n )}\n trigger={['click']}\n open={showAddLotDropdown}\n >\n \n {t('buttons.addLot')}\n \n \n \n \n \n \n navigate(NAVIGATION.GO_BACK)}>\n {t('buttons.cancel')}\n \n !lot.name || !lot.cropId || !lot.size)}\n onClick={onConfirmLots}\n >\n {t('buttons.confirmLotsText')}\n \n \n \n {showReuseLotsModal && (\n setShowReuseModal(false)}\n seasonId={seasonId}\n fieldId={field.id}\n onSuccess={onConfirmReuseLots}\n />\n )}\n \n )\n}\n","import { useMap } from 'react-map-gl'\nimport { useEffect } from 'react'\nimport MapboxGeocoder, { Result } from '@mapbox/mapbox-gl-geocoder'\nimport { Map } from 'mapbox-gl'\n\nimport { GeocoderControlProps } from './types'\n\nconst coordinatesGeocoder = (query: string) => {\n // https://docs.mapbox.com/mapbox-gl-js/example/mapbox-gl-geocoder-accept-coordinates/\n const matches = query.match(/^[ ]*(?:Lat: )?(-?\\d+\\.?\\d*)[, ]+(?:Lng: )?(-?\\d+\\.?\\d*)[ ]*$/i)\n if (!matches) {\n return []\n }\n\n function coordinateFeature(lng: number, lat: number) {\n return {\n center: [lng, lat],\n geometry: {\n type: 'Point',\n coordinates: [lng, lat],\n },\n place_name: `Latitud: ${lat} Longitud: ${lng}`,\n place_type: ['coordinate'],\n properties: {},\n type: 'Feature',\n }\n }\n\n const coord1 = Number(matches[1])\n const coord2 = Number(matches[2])\n const geocodes = []\n\n if (coord1 < -90 || coord1 > 90) {\n // must be lng, lat\n geocodes.push(coordinateFeature(coord1, coord2))\n }\n\n if (coord2 < -90 || coord2 > 90) {\n // must be lat, lng\n geocodes.push(coordinateFeature(coord2, coord1))\n }\n\n if (geocodes.length === 0) {\n // else could be either lng, lat or lat, lng\n geocodes.push(coordinateFeature(coord2, coord1))\n geocodes.push(coordinateFeature(coord1, coord2))\n }\n\n return geocodes as Result[]\n}\n\nexport const GeocoderControl: React.FC = ({\n geocoderOptions,\n containerRef,\n onResult,\n}) => {\n const { lotMap } = useMap()\n\n useEffect(() => {\n if (!lotMap || !containerRef) return\n const control = new MapboxGeocoder({\n ...geocoderOptions,\n localGeocoder: coordinatesGeocoder,\n })\n control.on('result', onResult)\n\n const map = lotMap.getMap() as Map\n\n containerRef.current.appendChild(control.onAdd(map))\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [lotMap, containerRef])\n\n return null\n}\n","import { Row, Typography } from 'antd'\nimport styled from 'styled-components'\n\nexport { LotsCard } from './LotsCard'\nexport { GeocoderControl } from './GeocoderControl'\n\nexport const FieldsSelectContainer = styled(Row)`\n margin-bottom: 28px;\n`\n\nexport const Container = styled.div`\n height: 100%;\n .mapboxgl-ctrl-top-right {\n display: none;\n }\n`\nconst { Text: AntText } = Typography\n\nexport const TooltipText = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n font-family: Inter;\n font-size: 14px;\n line-height: 22px;\n`\nexport const TooltipTextContainer = styled.div`\n background-color: rgba(0, 0, 0, 0.75);\n padding: 8px 10px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n max-width: 320px;\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { CreateLots, CreateLotsVariables } from './types/CreateLots'\nexport type { UpdateLots, UpdateLotsVariables } from './types/UpdateLots'\nexport type { MapLots, MapLotsVariables, MapLots_lotsV2_results as Lot } from './types/MapLots'\n\nexport const CREATE_LOTS = gql`\n mutation CreateLots($createLotDTOs: [CreateLotInput!]!) {\n createLots(createLotDTOs: $createLotDTOs) {\n results {\n id\n name\n commercialName\n riceLot {\n id\n isPlanetEnabled\n }\n area {\n type\n coordinates\n }\n location {\n type\n coordinates\n }\n size\n crop {\n id\n }\n variety {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n }\n`\n\nexport const UPDATE_LOTS = gql`\n mutation UpdateLots($updateLotDTOs: [UpdateLotInput!]!) {\n updateLots(updateLotDTOs: $updateLotDTOs) {\n results {\n id\n name\n commercialName\n area {\n type\n coordinates\n }\n location {\n type\n coordinates\n }\n size\n crop {\n id\n }\n variety {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n }\n`\n\nexport const MAP_LOTS = gql`\n query MapLots($seasonId: Int!, $fieldId: Int!) {\n lotsV2(seasonId: $seasonId, fieldId: $fieldId) {\n results {\n id\n name\n commercialName\n size\n riceLot {\n id\n isPlanetEnabled\n }\n area {\n type\n coordinates\n }\n location {\n coordinates\n type\n }\n crop {\n id\n }\n variety {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n }\n`\n","import { useState, useCallback, useRef, useMemo, useEffect } from 'react'\nimport { Col, notification } from 'antd'\nimport ReactMapGL, {\n Layer,\n Marker,\n Source,\n useMap,\n MapLayerMouseEvent,\n ViewStateChangeEvent,\n} from 'react-map-gl'\nimport { useLocation, useNavigate } from 'react-router-dom'\nimport { Polygon, point, points, polygon } from '@turf/helpers'\nimport { UploadChangeParam } from 'antd/lib/upload'\nimport { UploadFile } from 'antd/lib/upload/interface'\nimport { useTranslation } from 'react-i18next'\nimport center from '@turf/center'\nimport { useTheme } from 'styled-components'\nimport centroid from '@turf/centroid'\nimport { Result } from '@mapbox/mapbox-gl-geocoder'\nimport { isNumber } from 'lodash'\n\nimport { ConversionUtils, MiscUtils, GeoUtils } from 'utils'\nimport { MAP, NAVIGATION } from 'consts'\nimport { FieldsSelect } from 'components'\nimport type { SelectField } from 'components/fields-selects/types'\nimport { ActiveCompanyContext } from 'contexts'\nimport { LotsMapLocationState, DrawMode, MandatoryFeature, Features } from 'types'\nimport { usePermissions, useFeatures } from 'hooks'\nimport { config } from 'config'\nimport { AreaTooltip } from 'features/MainRouter/components'\n\nimport {\n DeleteLotConfirmationModal,\n LeftSidebar,\n MapSidebar,\n SearchBoxContainer,\n Control,\n} from '../../components'\nimport {\n FieldsSelectContainer,\n LotsCard,\n Container,\n TooltipTextContainer,\n TooltipText,\n GeocoderControl,\n} from './components'\nimport { Lot, ShowToolTipCoords } from './types'\nimport { useCreateLots, useLots } from './hooks'\nimport { useDeleteLot } from '../../hooks'\nimport { useUpdateLots } from './hooks/useUpdateLots'\nimport { ReuseLot } from './components/LotsCard/components/ReuseLotsModal/hooks/useReuseLots/api'\n\nconst DELETE_KEYS = ['Backspace', 'Esc', 'Escape', 'Delete']\n\nexport const LotsMap: React.FC = () => {\n const { colors } = useTheme()\n const navigate = useNavigate()\n const { t } = useTranslation('lot-settings')\n const { t: commonT } = useTranslation('common')\n const { permissions } = usePermissions()\n const { organizationFeatures } = useFeatures()\n const { activeSeasonId, activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const {\n fieldId,\n seasonId: locationSeasonId,\n lotId,\n goTo,\n } = useLocation().state as LotsMapLocationState\n\n const seasonId = locationSeasonId ?? activeSeasonId\n\n const { createLots, loading: loadingCreateLots } = useCreateLots()\n const { updateLots, loading: loadingUpdateLots } = useUpdateLots()\n\n const [field, setField] = useState()\n\n const { lots: existingLots, loadingLots } = useLots(field?.id, seasonId)\n const { deleteLot, loading: deleteLotLoading } = useDeleteLot()\n\n const [selectedLotToDelete, setSelectedLotToDelete] = useState()\n const [showDeleteLotModal, setShowDeleteLotModal] = useState(false)\n\n const { lotMap } = useMap()\n\n const onChangeLotTransition = useCallback(\n ({ longitude, latitude, zoom }: { longitude?: number; latitude?: number; zoom?: number }) => {\n if (!latitude || !longitude) return\n lotMap?.flyTo({\n center: [longitude, latitude],\n duration: MAP.DEFAULT_TRANSITION.transitionDuration,\n zoom,\n essential: true,\n })\n },\n [lotMap],\n )\n\n const [viewport, setViewport] = useState({\n latitude: MAP.DEFAULT_CENTER.LATITUDE,\n longitude: MAP.DEFAULT_CENTER.LONGITUDE,\n zoom: MAP.ZOOM.DEFAULT,\n })\n const [lots, setLots] = useState([])\n const [mode, setMode] = useState<\n | {\n mode: Extract\n options: { featureId: string }\n }\n | { mode: Exclude }\n >({\n mode: 'simple_select',\n })\n const initLotsEffectCalled = useRef(false)\n\n const goToLot = useCallback(\n (lot?: Polygon) => {\n if (lot) {\n const featurePoint = points(lot.coordinates[0])\n const lotCenter = center(featurePoint)\n const longitude = lotCenter.geometry.coordinates[0]\n const latitude = lotCenter.geometry.coordinates[1]\n if (lotMap) onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n }\n },\n [lotMap, onChangeLotTransition],\n )\n\n const setSelectedLotIndex = (lotIndex: number) => {\n setLots(prevLots =>\n prevLots.map((lot, index) => ({\n ...lot,\n lot: { ...lot.lot, isSelected: index === lotIndex },\n })),\n )\n }\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!DELETE_KEYS.includes(event.key) || mode.mode !== 'draw_polygon') return\n\n const selectedLotIndex = lots.findIndex(lot => lot.lot.isSelected)\n const selectedLot = selectedLotIndex !== -1 ? lots[selectedLotIndex] : undefined\n if (selectedLot?.lot.size) return\n\n // We want to delete only the lots without size with the delete keys\n setMode({ mode: 'simple_select' })\n setLots(prevLots => {\n const newLots = [...prevLots]\n newLots.splice(selectedLotIndex, 1)\n return newLots\n })\n },\n [lots, mode.mode],\n )\n\n useEffect(() => {\n document.addEventListener('keydown', onKeyDown)\n return () => {\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [onKeyDown])\n\n const onCreateFeature = useCallback(({ features }: { features: Features }) => {\n if (!features) return\n\n const createdFeature = features[0]\n const createdFeatureId = createdFeature.id\n if (!createdFeatureId) return\n\n setLots(prevLots => {\n const newLots = [...prevLots]\n const createdLotIndex = prevLots.findIndex(lot => lot.lot.isSelected)\n const createdLot = createdLotIndex !== -1 ? newLots[createdLotIndex] : undefined\n // Workaround for show again lot on the map when user delete last lot and cancels deletion\n if (!createdLot) return prevLots\n\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(\n features[0].geometry.coordinates,\n )\n\n // If the lot has id meaning it's a lot with size but not with feature\n // because that we need to take the lot's id\n const createdLotId = createdLot.lot.id.toString() ?? createdFeatureId\n newLots[createdLotIndex] = {\n ...createdLot,\n lot: { ...createdLot.lot, id: createdLotId, polygonCenter, area, size: area },\n feature: { ...features[0], id: createdLotId },\n }\n setMode({\n mode: 'direct_select',\n options: { featureId: createdLotId },\n })\n return newLots\n })\n }, [])\n\n const onUpdateFeature = useCallback(({ features }: { features: Features }) => {\n if (!features) return\n const updatedFeature = features[0]\n\n setLots(prevLots => {\n const newLots = [...prevLots]\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(\n updatedFeature.geometry.coordinates,\n )\n const updatedLotIndex = newLots.findIndex(lot => lot.lot.id === updatedFeature.id)\n if (!newLots[updatedLotIndex].lot.isPlanetEnabled) {\n newLots[updatedLotIndex] = {\n ...newLots[updatedLotIndex],\n lot: {\n ...newLots[updatedLotIndex].lot,\n polygonCenter,\n area,\n size: area,\n },\n feature: updatedFeature,\n }\n }\n return newLots\n })\n }, [])\n\n const onSelectLot = (lotIndex: number) => {\n const lot = lots[lotIndex]\n // This is for the edge case when a user creates a lot, selects from the card another lot\n // before drawing the recently created one and then comes back to that freshly created lot\n setSelectedLotIndex(lotIndex)\n if (!lot.feature) {\n setMode({ mode: 'draw_polygon' })\n return\n }\n\n const lotGeometry = lot.feature?.geometry\n if (lotGeometry) goToLot(lotGeometry)\n\n if (!lot.lot.isPlanetEnabled) {\n setMode({ mode: 'direct_select', options: { featureId: lot.lot.id.toString() } })\n return\n }\n\n setMode({ mode: 'simple_select' })\n }\n\n const handleCreatedLot = () => {\n setLots(prevLots => {\n const newLots = prevLots.map(lot => {\n return {\n ...lot,\n lot: { ...lot.lot, isSelected: false },\n }\n })\n\n return [\n ...newLots,\n {\n lot: { id: MiscUtils.generateId(), isSelected: true },\n feature: undefined,\n action: 'create',\n },\n ]\n })\n }\n\n const onAddLot = () => {\n handleCreatedLot()\n setMode({ mode: 'draw_polygon' })\n }\n\n const onAddLotWithoutPerimeter = () => {\n handleCreatedLot()\n setMode({ mode: 'simple_select' })\n }\n\n const onChangeLot = (lot: Lot['lot'], lotIndex: number) =>\n setLots(prevLots => {\n const newLots = [...prevLots]\n newLots[lotIndex].lot = lot\n return newLots\n })\n\n const onDeleteLot = (lotIndex: number) => {\n const lotToDelete = lots[lotIndex]\n setSelectedLotToDelete(lotToDelete)\n setShowDeleteLotModal(true)\n }\n\n const onConfirmDeleteLot = async () => {\n if (!selectedLotToDelete) return\n const lotIndex = lots.findIndex(lot => lot.lot.id === selectedLotToDelete.lot.id)\n if (selectedLotToDelete.action === 'update') {\n await deleteLot({ variables: { id: Number(selectedLotToDelete.lot.id) } })\n } else {\n const existingLot = lots.find(lot => lot.lot.id === selectedLotToDelete.lot.id)\n setLots(prevLots => {\n const newLots = [...prevLots]\n newLots.splice(lotIndex, 1)\n // Workaround for when a user deletes a lot by pressing 'backspace', the lot has already been filtered from state\n // in the onDelete function\n return !existingLot ? prevLots : newLots\n })\n }\n setSelectedLotToDelete(undefined)\n setShowDeleteLotModal(false)\n }\n\n const onCancelDeleteLot = () => {\n if (!selectedLotToDelete) return\n setMode({ mode: 'simple_select' })\n const existingLot = lots.find(lot => lot.lot.id === selectedLotToDelete.lot.id)\n // Workaround for when a user deletes a lot by pressing 'backspace', we need to set that lot again in the state\n if (!existingLot) {\n // It covers the case when user has only one lot and is deleting by bakspace, to no add a new empty lot\n if (lots.length === 1 && !lots[0].feature) {\n setLots([selectedLotToDelete])\n } else {\n setLots(prevLots => [...prevLots, selectedLotToDelete])\n }\n }\n\n setSelectedLotToDelete(undefined)\n setShowDeleteLotModal(false)\n }\n\n const onConfirmLots = async () => {\n if (!field || !seasonId) return\n\n const createLotDTOs = lots\n .filter(({ action }) => action === 'create')\n .map(({ lot, feature }) => ({\n name: lot.name!,\n commercialName: lot.commercialName ?? undefined,\n area: feature?.geometry,\n cropId: lot.cropId!,\n seasonId,\n fieldId: field.id,\n rtk: lot.rtk,\n templateLotId: lot.templateLotId,\n size: lot.size,\n }))\n const updateLotDTOs = lots\n .filter(({ action }) => action === 'update')\n .map(({ lot, feature }) => ({\n id: Number(lot.id),\n name: lot.name!,\n commercialName: lot.commercialName ?? undefined,\n cropId: lot.cropId,\n varietyId: lot.varietyId ?? null,\n area: !lot.isPlanetEnabled ? feature?.geometry : undefined,\n size: lot.size,\n }))\n\n if (createLotDTOs.length) {\n await createLots({ variables: { createLotDTOs } })\n }\n if (updateLotDTOs) {\n await updateLots({ variables: { updateLotDTOs } })\n }\n if (goTo) {\n navigate(goTo)\n return\n }\n navigate(NAVIGATION.GO_BACK)\n }\n\n const lotFeatures = useMemo(() => {\n const lotsWithFeature = lots.filter(\n ({ feature, lot }) => !!feature && !lot.isPlanetEnabled,\n ) as (Omit & {\n feature: MandatoryFeature\n })[]\n return lotsWithFeature.map(({ feature, lot }) => {\n return { ...feature, id: lot.id.toString() }\n })\n }, [lots])\n\n const lotsWithPlanet = useMemo(\n () =>\n existingLots\n ?.filter(lot => lot.riceLot.isPlanetEnabled && !!lot.area)\n .map(lot => ({\n id: lot.id.toString(),\n feature: polygon(lot.area!.coordinates),\n area: lot.area,\n })),\n [existingLots],\n )\n\n const handleKml = async ({ file: uploadFile }: UploadChangeParam) => {\n try {\n const file = uploadFile as unknown as File\n const geoJson = await MiscUtils.kmlFileToGeoJson(file)\n\n const kmlLots: Lot[] = geoJson.features.map(feature => {\n const centerAndArea = GeoUtils.getPolygonCenterAndArea(feature.geometry.coordinates)\n return {\n action: 'create',\n feature: {\n geometry: feature.geometry,\n properties: {},\n type: 'Feature',\n },\n lot: {\n ...centerAndArea,\n size: centerAndArea.area,\n id: MiscUtils.generateId(),\n name:\n feature.properties.name && ConversionUtils.autoCapitalize(feature.properties.name),\n },\n }\n })\n setMode({ mode: 'simple_select' })\n\n setLots(prevLots => {\n // this workaround is to remove all empty lots\n const filterLots = prevLots.filter(lot => isNumber(lot.lot.size))\n const newLots = [...filterLots, ...kmlLots]\n setSelectedLotIndex(newLots.length - 1)\n goToLot(newLots[newLots.length - 1].feature?.geometry)\n return newLots\n })\n } catch (err) {\n notification.error({\n message: t('uploadKMLErrorText'),\n })\n }\n }\n\n const handleChange = useCallback((newField: SelectField) => {\n // if the effect was already called once, and the field changes we filter those that lots created not confirmed\n if (initLotsEffectCalled.current)\n setLots(prevLots => prevLots.filter(lot => lot.action !== 'create'))\n\n setField(newField)\n }, [])\n\n const onMove = useCallback((evt: ViewStateChangeEvent) => setViewport(evt.viewState), [])\n\n const onDelete = useCallback((e: { features: Features }) => {\n setLots(prevLots => {\n const index = prevLots.findIndex(({ lot }) => lot.id === e.features?.[0].id)\n const lotToDelete = prevLots[index]\n setSelectedLotToDelete(lotToDelete)\n setShowDeleteLotModal(true)\n return prevLots.filter(lot => lot.lot.id !== lotToDelete.lot.id)\n })\n }, [])\n\n const onSelectionChange = useCallback((e: { features: Features }) => {\n if (e.features?.length) {\n setLots(prevLots => {\n const index = prevLots.findIndex(({ lot }) => lot.id === e.features?.[0].id)\n const selectedLot = prevLots[index]\n if (selectedLot?.lot.isPlanetEnabled) setMode({ mode: 'simple_select' })\n setSelectedLotIndex(index)\n return prevLots\n })\n }\n }, [])\n\n const setLotsWithNewLot = (existedLots: Lot[]) => {\n const newLots: Lot[] = [\n ...existedLots,\n {\n lot: { id: MiscUtils.generateId() },\n feature: undefined,\n action: 'create',\n },\n ]\n setLots(newLots)\n setSelectedLotIndex(newLots.length - 1)\n setMode({ mode: 'draw_polygon' })\n const latitude = field?.location.coordinates[1]\n const longitude = field?.location.coordinates[0]\n\n if (lotMap) onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n }\n\n const setSelectedLotList = (existedLots: Lot[]) => {\n setLots(prevLots => {\n // this filter is to only set the lots created before deleting a lot from DB, and not set a new empty lot.\n const filterPrevLots = prevLots.filter(\n lot => lot.feature && lot.lot.name && lot.action === 'create',\n )\n return [...existedLots, ...filterPrevLots]\n })\n if (existingLots) {\n const lotIndex = existingLots.findIndex(lot => lot.id === lotId)\n setSelectedLotIndex(lotIndex)\n const preselectedLot = existingLots[lotIndex]\n if (!preselectedLot.location) {\n const latitude = field?.location.coordinates[1]\n const longitude = field?.location.coordinates[0]\n onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n setMode({ mode: 'draw_polygon' })\n return\n }\n const lotCoordinates = preselectedLot.location.coordinates\n const featurePoint = point(lotCoordinates)\n const lotCenter = center(featurePoint)\n const longitude = lotCenter.geometry.coordinates[0]\n const latitude = lotCenter.geometry.coordinates[1]\n onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n\n const { isPlanetEnabled } = preselectedLot.riceLot\n if (lotId && !isPlanetEnabled)\n setMode({ mode: 'direct_select', options: { featureId: lotId.toString() } })\n }\n }\n\n useEffect(() => {\n if (loadingLots || !field || !lotMap) return\n if (existingLots?.length) {\n const existedLots: Lot[] = existingLots.map(lot => {\n const baseLot: Lot = {\n lot: {\n id: lot.id.toString(),\n name: lot.name,\n commercialName: lot.commercialName,\n cropId: lot.crop.id,\n varietyId: lot.variety?.id,\n isPlanetEnabled: lot.riceLot.isPlanetEnabled,\n size: lot.size,\n },\n action: 'update',\n }\n\n if (!lot.area?.coordinates) return baseLot\n\n const feature = polygon(lot.area.coordinates)\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(\n feature.geometry.coordinates,\n )\n\n return {\n ...baseLot,\n lot: {\n ...baseLot.lot,\n polygonCenter,\n area,\n },\n feature,\n }\n })\n\n if (!lotId && !initLotsEffectCalled.current) {\n setLotsWithNewLot(existedLots)\n } else if (lotId && !initLotsEffectCalled.current) {\n setSelectedLotList(existedLots)\n } else {\n setLots(prevLots => {\n // this filter is to only set the lots created before deleting a lot from DB, and not set a new empty lot.\n const filterPrevLots = prevLots.filter(\n lot => lot.feature && lot.lot.name && lot.action === 'create',\n )\n return [...existedLots, ...filterPrevLots]\n })\n\n setSelectedLotIndex(0)\n const firstLot = existedLots[0]\n if (firstLot && firstLot.feature) {\n goToLot(firstLot.feature.geometry)\n const { isPlanetEnabled } = firstLot.lot\n if (!isPlanetEnabled)\n setMode({ mode: 'direct_select', options: { featureId: firstLot.lot.id.toString() } })\n }\n }\n } else {\n setLots([\n {\n lot: { id: MiscUtils.generateId() },\n feature: undefined,\n action: 'create',\n },\n ])\n setSelectedLotIndex(0)\n setMode({ mode: 'draw_polygon' })\n const latitude = field.location.coordinates[1]\n const longitude = field.location.coordinates[0]\n onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n }\n initLotsEffectCalled.current = true\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [existingLots, field, loadingLots, lotId, lotMap])\n\n const [showTooltipCoords, setShowTooltipCoords] = useState()\n\n const onClickLot = useCallback(\n (event: MapLayerMouseEvent) => {\n if (showTooltipCoords) {\n setShowTooltipCoords(undefined)\n return\n }\n const { features } = event\n const feature = features?.[0]\n if (!feature) return\n\n const lot = lotsWithPlanet?.find(lotToFind => lotToFind.id === feature.layer.id)\n\n if (!lot) return\n\n const polygonLot = polygon(lot.area!.coordinates)\n const polygonCenter = centroid(polygonLot)\n\n setShowTooltipCoords({\n latitude: polygonCenter.geometry.coordinates[1] + 0.003,\n longitude: polygonCenter.geometry.coordinates[0],\n })\n },\n [lotsWithPlanet, showTooltipCoords],\n )\n\n const interactiveLayerIds = useMemo(() => lotsWithPlanet?.map(lot => lot.id), [lotsWithPlanet])\n\n const geocoderContainerRef = useRef(null)\n\n const onResult = useCallback(({ result }: { result: Result }) => {\n const location =\n result &&\n (result.center || (result.geometry?.type === 'Point' && result.geometry.coordinates))\n\n if (location) {\n setViewport({ longitude: location[0], latitude: location[1], zoom: MAP.ZOOM.DEFAULT })\n }\n }, [])\n\n const handleReuseLots = (reusableLots: ReuseLot[]) => {\n const reuseLots: Lot[] = reusableLots.map(lot => {\n const baseLot: Lot = {\n lot: {\n id: MiscUtils.generateId(),\n name: lot.name,\n cropId: lot.crop.id,\n commercialName: lot.commercialName,\n templateLotId: lot.id,\n size: lot.size,\n },\n action: 'create',\n }\n\n if (!lot.area?.coordinates) return baseLot\n\n const feature = polygon(lot.area.coordinates)\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(feature.geometry.coordinates)\n\n return {\n ...baseLot,\n lot: {\n ...baseLot.lot,\n polygonCenter,\n area,\n },\n feature,\n }\n })\n\n setMode({ mode: 'simple_select' })\n\n setLots(prevLots => {\n // this workaround is to remove all empty lots\n const filterLots = prevLots.filter(lot => isNumber(lot.lot.size))\n const newLots = [...filterLots, ...reuseLots]\n const lastLotIndex = newLots.length - 1\n setSelectedLotIndex(lastLotIndex)\n if (newLots[lastLotIndex].feature?.geometry) {\n goToLot(newLots[lastLotIndex].feature?.geometry)\n } else {\n const latitude = field?.location.coordinates[1]\n const longitude = field?.location.coordinates[0]\n onChangeLotTransition({ longitude, latitude, zoom: MAP.ZOOM.CLOSE })\n }\n return newLots\n })\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n lot.isSelected)}\n field={field}\n onSelectLot={onSelectLot}\n onAddLot={onAddLot}\n onChangeLot={onChangeLot}\n onDeleteLot={onDeleteLot}\n onConfirmLots={onConfirmLots}\n loading={loadingLots || deleteLotLoading || loadingCreateLots || loadingUpdateLots}\n handleKml={handleKml}\n onDrawMode={mode.mode === 'draw_polygon'}\n seasonId={seasonId}\n handleReuseLots={handleReuseLots}\n onAddLotWithoutPerimeter={onAddLotWithoutPerimeter}\n />\n \n \n \n \n \n \n {lots.map(\n ({ feature, lot: { area, polygonCenter } }) =>\n feature &&\n area &&\n polygonCenter && (\n \n ),\n )}\n {lotsWithPlanet?.map(({ id, feature }) => (\n \n \n \n \n ))}\n {showTooltipCoords && (\n \n \n {commonT('messages.highFrequencyLot')}\n \n \n )}\n \n \n {showDeleteLotModal && selectedLotToDelete && field && (\n \n )}\n \n )\n}\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { CompanySeason, SeasonField } from 'api'\nimport { GraphQLUtils } from 'utils'\n\nimport {\n CreateLots,\n CreateLotsVariables,\n CREATE_LOTS,\n MAP_LOTS,\n MapLots,\n MapLotsVariables,\n} from '../api'\n\nexport const useCreateLots = () => {\n const [createLots, { loading }] = useMutation(CREATE_LOTS, {\n update: (cache, { data: response }, { variables }) => {\n if (!variables) return\n if (!response) return\n\n const firstCreatedLot = variables.createLotDTOs[0]\n const { seasonId, fieldId } = firstCreatedLot\n\n const season: StoreObject = { id: seasonId, __typename: 'Season' }\n const newLots = response.createLots.results\n cache.modify({\n id: cache.identify(season),\n fields: {\n seasonFields(cachedData) {\n const cachedSeasonFields = cachedData as SeasonField[] | undefined\n const cachedSeasonField = cachedSeasonFields?.find(\n seasonField => seasonField.field?.id === fieldId,\n )\n const newSeasonField = cachedSeasonField\n ? {\n field: cachedSeasonField.field,\n lots: [...cachedSeasonField.lots, ...newLots],\n __typename: 'SeasonField',\n }\n : {\n field: { id: fieldId },\n lots: newLots,\n __typename: 'SeasonField',\n }\n\n return cachedSeasonFields\n ? ([\n ...cachedSeasonFields.filter(seasonField => seasonField.field?.id === fieldId),\n newSeasonField,\n ] as SeasonField[])\n : ([newSeasonField] as SeasonField[])\n },\n },\n })\n\n const cachedLots = cache.readQuery({\n query: MAP_LOTS,\n variables: { fieldId, seasonId },\n })\n\n cache.writeQuery({\n query: MAP_LOTS,\n variables: { fieldId, seasonId },\n data: {\n lotsV2: {\n ...cachedLots?.lotsV2,\n results: cachedLots?.lotsV2.results\n ? [...cachedLots.lotsV2.results, ...newLots]\n : newLots,\n __typename: 'LotsV2',\n },\n },\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n return { createLots, loading }\n}\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UpdateLots, UpdateLotsVariables, UPDATE_LOTS } from '../api'\n\nexport const useUpdateLots = () => {\n const [updateLots, { loading }] = useMutation(UPDATE_LOTS, {\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data }) => {\n if (!data) return\n\n data.updateLots.results.forEach(lot => {\n // Workaraound because of this: https://github.com/apollographql/apollo-client/issues/7577\n const cacheLotId = cache.identify(lot as unknown as StoreObject)\n cache.evict({ id: cacheLotId, fieldName: 'riceLot' })\n const seasonLot: StoreObject = {\n id: lot.id,\n __typename: 'SeasonLot',\n }\n const { variety, crop } = lot\n cache.modify({\n id: cache.identify(seasonLot),\n fields: {\n variety() {\n return variety\n },\n crop() {\n return crop\n },\n },\n })\n })\n },\n })\n\n return { updateLots, loading }\n}\n","import { useQuery } from '@apollo/client'\n\nimport { MapLots, MapLotsVariables, MAP_LOTS } from '../api'\n\nexport const useLots = (fieldId?: number, seasonId?: number) => {\n const { data, loading } = useQuery(MAP_LOTS, {\n variables: { fieldId: fieldId!, seasonId: seasonId! },\n skip: !fieldId || !seasonId,\n })\n return { lots: data?.lotsV2.results, loadingLots: loading }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { DeleteField, DeleteFieldVariables } from './types/DeleteField'\nexport type { DeleteSeason, DeleteSeasonVariables } from './types/DeleteSeason'\nexport type {\n CreateSeason,\n CreateSeasonVariables,\n CreateSeason_createSeason_season as Season,\n} from './types/CreateSeason'\n\nexport const DELETE_FIELD = gql`\n mutation DeleteField($id: Int!) {\n deleteField(id: $id) {\n success\n }\n }\n`\n\nexport const DELETE_SEASON = gql`\n mutation DeleteSeason($id: Int!) {\n deleteSeason(id: $id) {\n success\n }\n }\n`\n\nexport const CREATE_SEASON = gql`\n mutation CreateSeason($seasonDTO: CreateSeasonInput!) {\n createSeason(createSeasonDTO: $seasonDTO) {\n season {\n id\n name\n startDate\n endDate\n description\n isArchived\n }\n }\n }\n`\n","import { Col, Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { settingsImage } from 'assets/images'\nimport {\n ConfirmationModal,\n ListCard,\n ProductionTypeSelect,\n DeliveryConditionSelect,\n} from 'components'\nimport { useUser, usePermissions } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { Layout } from '../../components'\nimport { useFieldsSettings, useSeasonsSettings } from './hooks'\n\nexport const Settings: React.FC = () => {\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const user = useUser()\n const { permissions } = usePermissions()\n const { t } = useTranslation('settings')\n\n const {\n showDeleteFieldModal,\n fields,\n loadingFields,\n deleteFieldLoading,\n lotsToDeleteAndSeasonsQty,\n onAddField,\n onEditField,\n onDeleteField,\n onConfirmDeleteField,\n onCancelDeleteField,\n updateField,\n } = useFieldsSettings()\n\n const {\n selectedSeasonToDelete,\n showDeleteSeasonModal,\n seasons,\n loadingSeasons,\n deleteSeasonLoading,\n onAddSeason,\n onEditSeason,\n onDeleteSeason,\n onConfirmDeleteSeason,\n onCancelDeleteSeason,\n } = useSeasonsSettings()\n\n const isAnOrganizationCompany = user?.companiesRoles?.find(\n company => company.company.id === activeCompanyId,\n )?.company.organization\n\n return (\n \n \n {permissions.fieldEntity && (\n \n \n \n {t('cards.fields.header')}\n \n \n \n {t('cards.fields.productionType')}\n \n {isAnOrganizationCompany && (\n {t('cards.fields.deliveryCondition')}\n )}\n \n \n \n }\n buttonDescription={t('cards.fields.buttonText')}\n loading={loadingFields}\n onClick={onAddField}\n onEdit={onEditField}\n onDelete={onDeleteField}\n renderItem={item => (\n <>\n {item.name}\n \n \n \n {\n updateField({\n variables: { id: item.id, updateFieldDTO: { productionType } },\n })\n }}\n />\n \n {isAnOrganizationCompany && (\n \n {\n updateField({\n variables: {\n id: item.id,\n updateFieldDTO: {\n deliveryCondition,\n },\n },\n })\n }}\n />\n \n )}\n \n \n \n )}\n isAdminUser={permissions.isCompanyAdminUser}\n />\n \n \n )}\n \n \n {item.name}}\n isAdminUser={permissions.isCompanyAdminUser}\n disabledButton={!permissions.seasonCreation}\n />\n \n \n \n {showDeleteFieldModal && (\n \n )}\n {showDeleteSeasonModal && (\n \n )}\n \n )\n}\n","import { useMemo, useState } from 'react'\nimport { useMutation, useQuery } from '@apollo/client'\nimport { useNavigate } from 'react-router-dom'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { GraphQLUtils } from 'utils'\nimport { useCompanySeasons } from 'hooks'\n\nimport { Fields, FieldsSettingsVariables, FIELDS_SETTINGS } from '../../../api'\nimport { DeleteField, DeleteFieldVariables, DELETE_FIELD } from '../api'\nimport { useUpdateField } from '../../../hooks'\n\nexport const useFieldsSettings = () => {\n const navigate = useNavigate()\n\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data: companySeasons } = useCompanySeasons(activeCompanyId)\n\n const [selectedFieldIdToDelete, setSelectedFieldIdToDelete] = useState()\n const [showDeleteFieldModal, setShowDeleteFieldModal] = useState(false)\n\n const { data, loading: loadingFields } = useQuery(\n FIELDS_SETTINGS,\n {\n variables: { companyId: activeCompanyId! },\n skip: !activeCompanyId,\n },\n )\n\n const [deleteField, { loading: deleteFieldLoading }] = useMutation<\n DeleteField,\n DeleteFieldVariables\n >(DELETE_FIELD, {\n update: async cache => {\n const cachedFields = cache.readQuery({\n query: FIELDS_SETTINGS,\n variables: { companyId: activeCompanyId },\n })\n\n if (!cachedFields) return\n\n const filteredFields = cachedFields.fields.results.filter(\n field => field.id !== selectedFieldIdToDelete,\n )\n\n cache.writeQuery({\n query: FIELDS_SETTINGS,\n data: { fields: { ...cachedFields.fields, results: filteredFields } },\n variables: { companyId: activeCompanyId },\n })\n },\n onCompleted: () => {\n setSelectedFieldIdToDelete(undefined)\n setShowDeleteFieldModal(false)\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n const { updateField, updateLoading: updateFieldLoading } = useUpdateField()\n\n const onAddField = () => navigate(`fields`)\n\n const onEditField = (id: number) => navigate(`fields/${id}`)\n\n const onDeleteField = (id: number) => {\n setSelectedFieldIdToDelete(id)\n setShowDeleteFieldModal(true)\n }\n\n const onConfirmDeleteField = () => {\n if (!selectedFieldIdToDelete) return\n deleteField({ variables: { id: selectedFieldIdToDelete } })\n }\n\n const onCancelDeleteField = () => {\n setSelectedFieldIdToDelete(undefined)\n setShowDeleteFieldModal(false)\n }\n\n const lotsToDeleteAndSeasonsQty = useMemo(() => {\n const seasons = companySeasons?.seasons.results\n const totalLots = seasons?.reduce(\n (accumulator, season) => {\n const seasonFields = season.seasonFields.filter(\n seasonField => seasonField.field?.id === selectedFieldIdToDelete,\n )\n const lotCount = seasonFields.reduce(\n (total, seasonField) => total + seasonField.lots.length,\n 0,\n )\n return {\n lots: accumulator.lots + lotCount,\n seasons: seasonFields.length ? accumulator.seasons + 1 : accumulator.seasons,\n }\n },\n { lots: 0, seasons: 0 },\n ) ?? { lots: 0, seasons: 1 }\n\n return totalLots\n }, [companySeasons?.seasons.results, selectedFieldIdToDelete])\n\n return {\n showDeleteFieldModal: showDeleteFieldModal && !!selectedFieldIdToDelete,\n fields: data?.fields.results,\n loadingFields,\n deleteFieldLoading,\n lotsToDeleteAndSeasonsQty,\n onAddField,\n onEditField,\n onDeleteField,\n onConfirmDeleteField,\n onCancelDeleteField,\n updateField,\n updateFieldLoading,\n }\n}\n","import { useMemo, useState } from 'react'\nimport { useMutation, useQuery } from '@apollo/client'\nimport { useNavigate } from 'react-router-dom'\nimport dayjs from 'dayjs'\n\nimport { ActiveCompanyContext } from 'contexts'\nimport { GraphQLUtils } from 'utils'\nimport { DATE_FORMATS } from 'consts'\nimport { usePermissions } from 'hooks'\n\nimport { Season, Seasons, SeasonsSettingsVariables, SEASONS_SETTINGS } from '../../../api'\nimport {\n CreateSeason,\n CreateSeasonVariables,\n CREATE_SEASON,\n DeleteSeason,\n DeleteSeasonVariables,\n DELETE_SEASON,\n} from '../api'\n\n// The min quantity of seasons to enable the delete button\nconst MIN_SEASONS_QTY_FOR_ENABLE_DELETION = 1\n\nexport const useSeasonsSettings = () => {\n const navigate = useNavigate()\n const { permissions } = usePermissions()\n\n const getNewSeasonName = () => {\n const today = dayjs()\n const currentYear = today.year()\n\n if (permissions.isFeatureSetGrupoDiana) {\n const MID_YEAR_MONTH = 6\n const FIRST_SEMESTER = 'A'\n const SECOND_SEMESTER = 'B'\n const semester = today.month() >= MID_YEAR_MONTH ? SECOND_SEMESTER : FIRST_SEMESTER\n return `${currentYear} ${semester}`\n }\n\n return currentYear.toString()\n }\n\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const [selectedSeasonToDelete, setSelectedSeasonToDelete] = useState()\n const [showDeleteSeasonModal, setShowDeleteSeasonModal] = useState(false)\n\n const { data: seasonsData, loading: loadingSeasons } = useQuery<\n Seasons,\n SeasonsSettingsVariables\n >(SEASONS_SETTINGS, {\n variables: { companyId: activeCompanyId! },\n skip: !activeCompanyId,\n })\n\n const [createSeason, { loading: createSeasonLoading }] = useMutation<\n CreateSeason,\n CreateSeasonVariables\n >(CREATE_SEASON, {\n update: (cache, { data: response }) => {\n if (!response || !activeCompanyId) return\n\n const cachedSeasons = cache.readQuery({\n query: SEASONS_SETTINGS,\n variables: { companyId: activeCompanyId },\n })\n\n const newSeason = response.createSeason.season\n const seasons: Seasons['seasons'] = cachedSeasons\n ? { ...cachedSeasons.seasons, results: [...cachedSeasons.seasons.results, newSeason] }\n : { results: [newSeason], __typename: 'Seasons' }\n\n cache.writeQuery({\n query: SEASONS_SETTINGS,\n data: { seasons },\n variables: { companyId: activeCompanyId },\n })\n },\n onCompleted: data => navigate(`season/${data.createSeason.season.id}`),\n onError: GraphQLUtils.errorHandler,\n })\n\n const [deleteSeason, { loading: deleteSeasonLoading }] = useMutation<\n DeleteSeason,\n DeleteSeasonVariables\n >(DELETE_SEASON, {\n update: async cache => {\n const cachedSeasons = cache.readQuery({\n query: SEASONS_SETTINGS,\n variables: { companyId: activeCompanyId },\n })\n\n if (!cachedSeasons) return\n\n const filteredSeasons = cachedSeasons.seasons.results.filter(\n season => season.id !== selectedSeasonToDelete?.id,\n )\n\n cache.writeQuery({\n query: SEASONS_SETTINGS,\n data: { seasons: { ...cachedSeasons, results: filteredSeasons } },\n variables: { companyId: activeCompanyId },\n })\n },\n onCompleted: () => {\n setSelectedSeasonToDelete(undefined)\n setShowDeleteSeasonModal(false)\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n const onAddSeason = () => {\n if (!activeCompanyId) return\n createSeason({\n variables: {\n seasonDTO: {\n companyId: activeCompanyId,\n name: getNewSeasonName(),\n startDate: dayjs().format(DATE_FORMATS.DATE_WITH_SEPARATOR),\n },\n },\n })\n }\n\n const onEditSeason = (id: number) => navigate(`season/${id}`)\n\n const onDeleteSeason = (id: number) => {\n const selectedSeason = seasonsData?.seasons.results.find(season => season.id === id)\n if (!selectedSeason) return\n setSelectedSeasonToDelete(selectedSeason)\n setShowDeleteSeasonModal(true)\n }\n\n const onConfirmDeleteSeason = () => {\n if (!selectedSeasonToDelete) return\n deleteSeason({ variables: { id: selectedSeasonToDelete.id } })\n }\n\n const onCancelDeleteSeason = () => {\n setSelectedSeasonToDelete(undefined)\n setShowDeleteSeasonModal(false)\n }\n\n const seasons = useMemo(() => {\n if (!seasonsData?.seasons.results.length) return []\n if (seasonsData.seasons.results.length > MIN_SEASONS_QTY_FOR_ENABLE_DELETION)\n return seasonsData?.seasons.results\n\n return seasonsData?.seasons.results.map(season => {\n return {\n ...season,\n isDisabled: true,\n }\n })\n }, [seasonsData])\n\n return {\n selectedSeasonToDelete,\n showDeleteSeasonModal: showDeleteSeasonModal && !!selectedSeasonToDelete,\n seasons,\n loadingSeasons,\n createSeasonLoading,\n deleteSeasonLoading,\n onAddSeason,\n onEditSeason,\n onDeleteSeason,\n onConfirmDeleteSeason,\n onCancelDeleteSeason,\n }\n}\n","import { Col, Row, Typography } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport dayjs from 'dayjs'\n\nimport { LastUpdateIcon } from 'assets/icons'\nimport { DATE_FORMATS } from 'consts'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nconst Callout = styled(Row).attrs({\n gutter: 23,\n})`\n width: 100%;\n height: 105px;\n padding: 22px;\n background-color: ${({ theme }) => theme.colors.grey1};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n`\n\nconst Title = styled(AntTitle)`\n margin-bottom: 10px !important;\n`\n\nconst Text = styled(AntText)`\n font-size: 13px;\n`\n\ninterface Props {\n date: Date\n}\n\nexport const LastModificationCallout: React.FC = ({ date }) => {\n const { t } = useTranslation('season-settings')\n\n return (\n \n \n \n \n \n \n {t('seasonCard.lasUpdateText')}\n \n \n {dayjs(date).format(DATE_FORMATS.STRING_MONTH)}\n {`${dayjs(date).format(DATE_FORMATS.HOURS_AND_SECS)} hs`}\n \n \n \n )\n}\n","import { Button, Col, Select, Space as AntSpace } from 'antd'\nimport styled from 'styled-components'\n\nexport { LastModificationCallout } from './LastModificationCallout'\n\nexport const Space = styled(AntSpace)`\n width: 100%;\n`\n\nexport const DatePickerCol = styled(Col)`\n flex: 1;\n\n .ant-picker {\n width: 100%;\n }\n`\n\nexport const ConfirmButton = styled(Button)`\n height: 55px;\n width: 100%;\n`\n\nexport const StyledSelect = styled(Select)`\n & .ant-select-selector {\n height: 55px !important;\n }\n & .ant-select-selection-item {\n display: flex;\n align-items: center;\n }\n` as typeof Select\n","import { Typography, Col, Row, Form, Input, DatePicker } from 'antd'\nimport { Controller, useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport * as yup from 'yup'\nimport dayjs, { Dayjs } from 'dayjs'\nimport { useTranslation } from 'react-i18next'\n\nimport { DATE_FORMATS } from 'consts'\nimport { InputTitle } from 'components'\nimport { usePermissions, useUpdateSeason } from 'hooks'\nimport { Season } from 'api'\n\nimport {\n ConfirmButton,\n DatePickerCol,\n LastModificationCallout,\n Space,\n StyledSelect,\n} from './components'\n\nconst { Title } = Typography\n\ninterface FormType {\n name: string\n startDate: Dayjs\n endDate?: Dayjs | null\n description?: string\n}\n\ninterface Props {\n season: Season\n}\n\nconst seasonNames = () => {\n const currentYear = dayjs().year()\n\n return [currentYear - 1, currentYear, currentYear, currentYear + 1].map((year, index) => {\n const name = index % 2 === 0 ? `${year} B` : `${year} A`\n return { label: name, value: name }\n })\n}\n\nexport const SeasonForm: React.FC = ({ season }) => {\n const { t } = useTranslation('season-settings')\n const { t: commonT } = useTranslation('common')\n const { updateSeason, loading } = useUpdateSeason()\n const { permissions } = usePermissions()\n\n const validationSchema = yup.object().shape({\n name: yup.string().required(commonT('validations.required')),\n startDate: yup.mixed().required(commonT('validations.required')),\n endDate: yup\n .mixed()\n .nullable()\n .when('startDate', (date, endDateSchema) => {\n const startDate = date as unknown as Dayjs\n return endDateSchema.test({\n name: 'end-date-test',\n test(endDate, context) {\n if (endDate && endDate.isBefore(startDate)) {\n return context.createError({\n path: context.path,\n message: commonT('validations.earlierDate'),\n })\n }\n return true\n },\n })\n }),\n description: yup.string(),\n })\n const { control, handleSubmit } = useForm({\n resolver: yupResolver(validationSchema),\n defaultValues: {\n name: season.name,\n startDate: dayjs(season.startDate),\n endDate: season.endDate ? dayjs(season.endDate) : null,\n description: season.description ?? '',\n },\n })\n\n return (\n \n {t('seasonCard.title')}\n \n \n (\n \n {permissions.isFeatureSetGrupoDiana ? (\n onChange(name)}\n options={seasonNames()}\n />\n ) : (\n onChange(event.target.value)}\n />\n )}\n \n )}\n />\n \n \n \n \n (\n \n {\n if (date) onChange(date)\n }}\n />\n \n )}\n />\n \n \n \n (\n \n {\n if (date) {\n onChange(date)\n return\n }\n onChange(null)\n }}\n />\n \n )}\n />\n \n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n updateSeason({\n variables: {\n id: season.id,\n updateSeasonDTO: {\n ...updateSeasonDTO,\n description: updateSeasonDTO.description || null,\n startDate: dayjs(updateSeasonDTO.startDate).format(DATE_FORMATS.DATE),\n endDate:\n updateSeasonDTO.endDate &&\n dayjs(updateSeasonDTO.endDate).format(DATE_FORMATS.DATE),\n },\n },\n }),\n )}\n >\n {t('seasonCard.confirmButtonText')}\n \n \n )\n}\n","import { gql } from '@apollo/client'\n\nexport type {\n AssignIrrigationWorker,\n AssignIrrigationWorkerVariables,\n} from './types/AssignIrrigationWorker'\nexport type {\n CompanyIrrigationWorkers,\n CompanyIrrigationWorkersVariables,\n} from './types/CompanyIrrigationWorkers'\n\nexport const COMPANY_IRRIGATION_WORKERS = gql`\n query CompanyIrrigationWorkers($id: Int!) {\n company(id: $id) {\n id\n usersRoles {\n role\n user {\n id\n name\n lastName\n }\n }\n }\n }\n`\n\nexport const ASSIGN_IRRIGATION_WORKER = gql`\n mutation AssignIrrigationWorker($updateLotDTO: UpdateLotInput!) {\n updateLot(updateLotDTO: $updateLotDTO) {\n lot {\n id\n irrigationWorker {\n id\n name\n lastName\n }\n }\n }\n }\n`\n","import styled from 'styled-components'\nimport { Select as AntSelect } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useMemo } from 'react'\nimport { isNumber } from 'lodash'\n\nimport { UserCompanyRole } from 'types'\n\nimport { useIrrigationWorkers } from './hooks'\n\nconst Select = styled(AntSelect)`\n width: 170px;\n` as typeof AntSelect\n\nconst UNASSIGNED_VALUE = 'unassign-irrigation-worker'\n\ninterface Props {\n selectedValue?: number\n lotId: number\n companyId?: number\n}\n\nexport const IrrigationWorkersSelect: React.FC = ({ selectedValue, companyId, lotId }) => {\n const { t } = useTranslation('common')\n\n const {\n assignIrrigationWorker,\n companyIrrigationWorkers,\n isAssignIrrigationWorkerLoading,\n isCompanyIrrigationWorkersLoading,\n } = useIrrigationWorkers(companyId)\n\n const options = useMemo(() => {\n if (!companyIrrigationWorkers) return []\n\n const filteredIrrigationWorkers = companyIrrigationWorkers.filter(\n irrigationWorker => irrigationWorker.role === UserCompanyRole.IRRIGATION_WORKER,\n )\n\n return filteredIrrigationWorkers?.map(irrigationWorker => ({\n value: irrigationWorker.user.id,\n label: `${irrigationWorker.user.name} ${irrigationWorker.user.lastName}`,\n }))\n }, [companyIrrigationWorkers])\n\n return (\n {\n const irrigationWorkerId = isNumber(id) ? id : null\n assignIrrigationWorker({ variables: { updateLotDTO: { id: lotId, irrigationWorkerId } } })\n }}\n >\n \n {t('inputs.unassignedIrrigationWorker')}\n \n {options?.map(({ value, label }) => (\n \n {label}\n \n ))}\n \n )\n}\n","import { useMutation, useQuery } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n ASSIGN_IRRIGATION_WORKER,\n AssignIrrigationWorkerVariables,\n AssignIrrigationWorker,\n COMPANY_IRRIGATION_WORKERS,\n CompanyIrrigationWorkers,\n CompanyIrrigationWorkersVariables,\n} from './api'\n\nexport const useIrrigationWorkers = (companyId?: number) => {\n const [assignIrrigationWorker, { loading: isAssignIrrigationWorkerLoading }] = useMutation<\n AssignIrrigationWorker,\n AssignIrrigationWorkerVariables\n >(ASSIGN_IRRIGATION_WORKER, {\n onError: GraphQLUtils.errorHandler,\n })\n\n const { data, loading: isCompanyIrrigationWorkersLoading } = useQuery<\n CompanyIrrigationWorkers,\n CompanyIrrigationWorkersVariables\n >(COMPANY_IRRIGATION_WORKERS, {\n variables: { id: companyId! },\n skip: !companyId,\n })\n\n return {\n assignIrrigationWorker,\n isAssignIrrigationWorkerLoading,\n isCompanyIrrigationWorkersLoading,\n companyIrrigationWorkers: data?.company.usersRoles,\n }\n}\n","import { useCallback, useState } from 'react'\nimport { Row, Col } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Season, SeasonLot } from 'api'\nimport { FieldsSelect, ListCard } from 'components'\nimport { ActiveCompanyContext } from 'contexts'\nimport { LotsMapLocationState } from 'types'\nimport { usePermissions } from 'hooks'\nimport type { SelectField } from 'components/fields-selects/types'\n\nimport { useDeleteLot } from '../../../../hooks'\nimport { DeleteLotConfirmationModal } from '../../../../components'\nimport { IrrigationWorkersSelect } from './components'\n\nconst FieldsSelectContainer = styled(Row)`\n margin-bottom: 24px;\n`\n\ninterface Props {\n season: Season\n}\n\nexport const SeasonLots: React.FC = ({ season }) => {\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const navigate = useNavigate()\n const { permissions } = usePermissions()\n const { t } = useTranslation('season-settings')\n const { t: commonT } = useTranslation('common')\n\n const [selectedFieldId, setSelectedFieldId] = useState()\n const [selectedLotToDelete, setSelectedLotToDelete] = useState()\n const [showDeleteLotModal, setShowDeleteLotModal] = useState(false)\n\n const { deleteLot, loading: deleteLotLoading } = useDeleteLot(() => {\n setSelectedLotToDelete(undefined)\n setShowDeleteLotModal(false)\n })\n\n const selectedSeasonField = season.seasonFields.find(\n seasonField => seasonField.field?.id === selectedFieldId,\n )\n\n const onDeleteLot = (id: number) => {\n const selectedLot = selectedSeasonField?.lots.find(lot => lot.id === id)\n if (!selectedLot) return\n setSelectedLotToDelete(selectedLot)\n setShowDeleteLotModal(true)\n }\n\n const onConfirmDeleteLot = () => {\n if (!selectedLotToDelete) return\n deleteLot({ variables: { id: selectedLotToDelete.id } })\n }\n\n const onCancelDeleteLot = () => {\n setSelectedLotToDelete(undefined)\n setShowDeleteLotModal(false)\n }\n\n const handleChange = useCallback((newField: SelectField) => {\n setSelectedFieldId(newField.id)\n }, [])\n\n const selectedFieldLots = selectedSeasonField?.lots.map(lot => ({\n ...lot,\n isDisabled: lot.riceLot.isPlanetEnabled,\n }))\n\n return (\n <>\n \n {permissions.isAnOrganizationUser ? (\n \n {t('lotsCard.table.lotText')}\n {permissions.isCommercialNameEnabled && (\n {t('lotsCard.table.commercialName')}\n )}\n {permissions.satelliteImagery && {t('lotsCard.table.irrigationWorker')}}\n \n ) : (\n \n {t('lotsCard.table.fieldText')}\n {t('lotsCard.table.lotText')}\n {permissions.satelliteImagery && {t('lotsCard.table.irrigationWorker')}}\n \n )}\n \n }\n headerSubsection={\n // For now we just hide the FieldsSelect so logic behind the scenes still works and the\n // first and only field (only one when flag fieldEntity is off) gets selected by default\n \n }\n buttonDescription={t('lotsCard.table.addLotsButtonText')}\n onClick={() =>\n navigate('/settings/lots', {\n state: { seasonId: season.id, fieldId: selectedFieldId } as LotsMapLocationState,\n })\n }\n onEdit={id =>\n navigate(`/settings/lots`, {\n state: {\n seasonId: season.id,\n fieldId: selectedFieldId,\n lotId: id,\n } as LotsMapLocationState,\n })\n }\n onDelete={onDeleteLot}\n renderItem={item => (\n <>\n {permissions.isAnOrganizationUser ? (\n <>\n {item.name}\n {permissions.isCommercialNameEnabled && {item.commercialName}}\n {permissions.satelliteImagery && permissions.isCompanyAdminUser && (\n \n \n \n )}\n \n ) : (\n <>\n {selectedSeasonField?.field?.name}\n {item.name}\n {permissions.satelliteImagery && (\n \n \n \n )}\n \n )}\n \n )}\n disabledTooltipText={commonT('messages.highFrequencyLot')}\n />\n {showDeleteLotModal && selectedLotToDelete && selectedSeasonField && (\n \n )}\n \n )\n}\n","import { Col, Row } from 'antd'\nimport { useParams, useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { calendarImage } from 'assets/images'\nimport { useSeason } from 'hooks'\nimport { NAVIGATION } from 'consts'\n\nimport { Layout } from '../../components'\nimport { SeasonForm, SeasonLots } from './components'\n\nexport const Season: React.FC = () => {\n const { id } = useParams<{ id: string }>()\n const navigate = useNavigate()\n const { t } = useTranslation('season-settings')\n\n if (!id) navigate(NAVIGATION.GO_BACK)\n\n const { data } = useSeason(Number(id))\n\n if (!data?.season) return null\n\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n","export default \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAUUSURBVHgBZVVNbBtFFH6zv7Z3/dPGTmw3JU5KXbdVDrSqEggUVfweEP2h0EKRACEQl1IJyk8lVIkToB5b9cSJY09IXCiHuoTURS3NIVEiFKm0VErS/Md24sS7OzvMG+84DpnNeF/evHnfe9+8eatCMC5d+snantv149hw6eeTH33xTf+zzyx+cOY029a1/7vRv0q/nvrkq6/7Dh2Z63/l5Uiht++zkbtDN09+eP7S+2+fGc127+rY3/fip6N3//j99MefXzn57lulm9evr6NfRQKYMT090HdoAOX33jl1IELcnrmal+47ePA51L1x/Pj+aDIe60gmUm+eOLYHdQP9Bw5Pl+c6Fdd98ujrrz2FuiMDT79g6Fa79CsAWLGohZUVy3SWjFKpFA55FTXiu1GluhDWnSUVdWFnXuuASqhd9Q2tvqSXrl0Lq6uLSsIgVlvCjijVx+aDYjEUM6huVRei6BN9E/z57ezZi5Pl5S9/mZw2j3e0q0OrtZX4ShVybUn9xvw8PZZJR0q1tYX2+rqZisa04tysdjSd1gYrFXcH9fxkPEGLMzOREzt2QLFcoZ1OXe3P5y+8evnyD5pMY5ttT4Y8h2yPRZ+wV6p/53fu9Nuitm/NPI4nLKsQWlsdzSWTGU3T3E4nVo6HwwOkvPxnPpvNrLleuWtbwk6Y5h5G3fFMW1tOZYw0M7hx7txF6rrfAuNaXSeqaYJbrfJVvsx1jEs8CObzZaIooKgq8z2PKJrGqOMQtBM6Somq67gDdRdeunLlew1aRjidJkY8Dpplwfy9e9ymEQT+IogeCgGjFLgNcWs1jI5wIFC5HmWeHQZEcJ+7LooIGgC+D0ojMlifmwO1vAxmNApOpYKOZSbguy5gBh53TtEB5sb3Cj3fC2trIoBG+SgbAHvPnwcWKFT+NgwDmQHqU9BUjfvwxcQI8U2pD7qOcmAT6J16PYgXbTjQ1asNAIWnKIeqqKCahpAJN1J5ZAqCocwdoUwCWUUbpIjboOzzTDEwlDXGYNNFaw4CW1WEyPNovjfMyRYdC5y3nAH+NWgQEfCIhOyzZso4cWAm0oHPqWLBg3qPZ4NrqJeBajIPfsQiEuRc0MLPgkqKWmS0QbBWPerwf49yAMr4+ei8YBTpejMVrFE3W2iRshIUg8wC383JM0Y7M2T+jyIQt0hUBKJjVIIW5jfXWmW0Y8HBS+okvbjfcRyYnJzcDEAUHiUjzXSFjjVkyh/FV0T0eFbE38hI0oUTAfAcFhcX4datW5sBcEiOpUyDSyP4Zd4GLfyREWNGDnWEHiOfnp6GO3fuQIVf0iYAojapwjrnj6REVg06VHhHQnqa9gwvbw3+ffQIxsfHxcQAM5kMFAqFDQDRQwIgjFY3GjwiJbhW5zcUZZFJ3RMyco32Dx4+hOHhYZiYmADbtqGrqwv27dsnQLZQJIFwYLuQdS2dodxoaA2bGu9Jg4ODMDU1BalUCnK5nIi8s7NT7G8CyEqQg3p0Ez3y8LCNYH2jXF+vw9DQEMzMzEA2k4XC3gL09PRAKpkCk7d7eZaNXhTUNtIS4n1J1VRwsUPixeMRO3UHDN0Q1CFdaPfP/fuCGqSkt7cXdu/eDbZliwDQnyyITRTJtHAgLQiCw7KtZkUhwNjYGNy+fRvy+byY3d3dEIvFROZYYSRoeq0A2GfLKLQu4qGGTBN7iI9gs7OzMDoyAhX+tXv+8GHIZrMc3IZIOCy+E7J/BXdJfHH+AwButwMytYMIAAAAAElFTkSuQmCC\"","import { Routes, Route } from 'react-router-dom'\n\nimport { FieldsMap, LotsMap, Settings, Season } from './features'\n\nexport const SettingsRouter: React.FC = () => {\n return (\n \n } />\n } />\n } />\n } />\n \n )\n}\n","import { Row, Col, Typography } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { ChlorophyllIcon, DropIcon } from 'assets/icons'\nimport { usePermissions } from 'hooks'\n\nimport { BallColorsTypes } from '../../../types'\nimport { TrafficLightBall } from '../../../components/TrafficLightBall'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nconst ColContainer = styled(Col)`\n width: 190px;\n flex: 1;\n background: ${({ theme }) => theme.colors.new.baseColor[500]};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n &.ant-col {\n height: fit-content !important;\n }\n\n @media (max-height: 650px) {\n max-height: 500px;\n }\n\n &.ant-col:first-child {\n padding: 24px !important;\n overflow-y: auto;\n\n @media (max-height: 650px) {\n padding: 20px !important;\n }\n }\n`\n\nconst Title = styled(AntTitle)`\n font-weight: 600 !important;\n margin-bottom: 12px !important;\n line-height: 32px;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nconst SubTitle = styled(AntText)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 24px;\n font-size: 14px !important;\n color: ${({ theme }) => theme.colors.grey1};\n`\n\nconst CenterCol = styled(Col)`\n display: flex;\n align-items: center;\n`\n\nconst TrafficLightContainer = styled(Col)`\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 6px;\n border: 2px solid rgba(246, 246, 246, 0.1);\n padding: 5px;\n max-width: 55px;\n`\n\nconst IconContainer = styled.div`\n width: 36px;\n height: 36px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${({ theme }) => theme.colors.white};\n`\n\nconst MarginRow = styled(Row)`\n margin-bottom: 24px;\n`\n\nconst StickyRow = styled(Row)`\n position: sticky;\n top: 0;\n`\n\ninterface Props {\n isLotDashboard?: boolean\n}\nexport const InformationCard: React.FC = ({ isLotDashboard }) => {\n const { t } = useTranslation('dashboard')\n const { t: commonT } = useTranslation('common')\n const { permissions } = usePermissions()\n\n const trafficLights = [\n {\n name: t('informationCard.statusOk'),\n balls: [\n ,\n ,\n ,\n ],\n },\n {\n name: t('informationCard.statusAlert'),\n balls: [\n ,\n ,\n ,\n ],\n },\n {\n name: t('informationCard.statusProblem'),\n balls: [\n ,\n ,\n ,\n ],\n },\n ]\n\n return (\n \n \n {t('informationCard.title')}\n {!isLotDashboard && (\n \n \n \n \n \n \n {permissions.fieldEntity ? t('informationCard.field') : t('informationCard.client')}\n \n \n \n \n \n \n {t('informationCard.lot')}\n \n \n )}\n {permissions.satelliteImagery && (\n <>\n {t('informationCard.statusTitle')}\n \n {trafficLights.map(trafficLight => {\n return (\n \n \n \n {trafficLight.balls.map((ball, index) => {\n // eslint-disable-next-line react/no-array-index-key\n return {ball}\n })}\n \n \n \n {trafficLight.name}\n \n \n )\n })}\n \n \n )}\n {!isLotDashboard && (\n <>\n {commonT('vocabulary.daysAfterEmergenceAbbreviation')}\n \n \n {t('informationCard.daysAfterEmergence')}\n \n \n \n )}\n {permissions.satelliteImagery && (\n <>\n {t('informationCard.indicatorTitle')}\n \n \n \n \n \n \n \n {t('informationCard.waterIndicator')}\n \n \n \n \n \n \n \n {t('informationCard.chlorophyllIndicator')}\n \n \n \n )}\n \n \n )\n}\n","import { Typography, Row, Col } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { PlusCircleOutlined } from '@ant-design/icons'\n\nimport { LotsMapLocationState } from 'types'\nimport { ActiveCompanyContext } from 'contexts'\n\nconst { Text: AntText } = Typography\n\nconst IconContainer = styled(Row)`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n z-index: 99;\n height: 100%;\n width: 152px;\n justify-content: center;\n align-items: center;\n flex-direction: column;\n &:hover {\n span {\n text-decoration: underline;\n }\n }\n`\n\nconst StyledPlusCircle = styled(PlusCircleOutlined)`\n font-size: 20px;\n color: ${({ theme }) => theme.colors.new.primary[600]};\n`\n\nconst Text = styled(AntText)`\n font-size: 12px;\n font-weight: 400;\n color: ${({ theme }) => theme.colors.new.primary[600]} !important;\n`\n\nconst MarginCol = styled(Col)`\n margin-top: 5px;\n`\n\ninterface Props {\n lotId: number\n fieldId: number\n}\n\nexport const AddPerimeter: React.FC = ({ lotId, fieldId }) => {\n const navigate = useNavigate()\n const { t } = useTranslation('dashboard')\n const { activeSeasonId } = ActiveCompanyContext.useActiveCompanyContext()\n\n const handleAddPerimeter = (event: React.MouseEvent) => {\n event.stopPropagation()\n const state: LotsMapLocationState = {\n seasonId: activeSeasonId,\n lotId,\n fieldId,\n }\n return navigate('/settings/lots', {\n state,\n })\n }\n\n return (\n \n \n \n \n \n {t('addPerimeter')}\n \n \n )\n}\n","import { Typography, Row, Col, Divider as AntDivider, Space } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { IndicatorStatus, Indicators } from 'types'\nimport { EllipsisText, EllipsisTitle, TagText } from 'components'\n\nimport { Indicator } from '../../../../../../../../components'\nimport { MapImage, TrafficLights } from '../../../../../components'\nimport { AddPerimeter } from './components'\n\nconst { Text: AntText } = Typography\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive} !important;\n font-size: 14px;\n font-weight: 400;\n`\n\nconst Divider = styled(AntDivider)`\n height: 24px !important;\n border-left: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n margin: 0px 6px;\n`\n\nconst StyledRow = styled(Row)`\n border: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n border-radius: 6px;\n height: 36px;\n max-width: 80px;\n display: flex;\n padding: 4px;\n`\n\nconst Container = styled(Row)`\n flex-direction: column;\n background-color: ${({ theme }) => theme.colors.grey1};\n padding: 24px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n overflow: hidden;\n cursor: pointer;\n max-width: 288px;\n`\n\nconst HeaderRow = styled(Row)`\n margin-bottom: 8px;\n max-height: 24px;\n`\n\nconst FullWidthRow = styled(Row)`\n width: 100%;\n`\n\nconst DaysText = styled(AntText)`\n font-weight: 600;\n color: ${({ theme }) => theme.colors.olive5} !important;\n font-size: 14px !important;\n padding: 1px;\n`\n\nconst DaysTextContainer = styled(Col)`\n background: ${({ theme }) => theme.colors.grey2};\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 2px;\n height: 100%;\n min-width: 24px;\n`\n\nconst TrafficLightContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n border-radius: 6px;\n border: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n padding: 2px;\n max-width: 56px;\n height: 24px;\n`\n\nconst DataRow = styled(FullWidthRow)`\n margin-top: 24px;\n`\n\nconst ResponsiveCol = styled(Col)`\n max-width: 85px;\n`\n\ninterface Props {\n name: string\n commercialName?: string\n daysSinceEmergenceDate: string\n variety?: string\n size: number\n lotCoordinates?: number[][]\n id: number\n irrigationIndicator?: IndicatorStatus\n chlorophyllIndicator?: IndicatorStatus\n semaphoreIndicator?: IndicatorStatus\n isHarvested: boolean\n crop: string\n fieldId: number\n}\n\nexport const LotCard: React.FC = ({\n name,\n commercialName,\n daysSinceEmergenceDate,\n variety,\n size,\n lotCoordinates,\n id,\n irrigationIndicator,\n chlorophyllIndicator,\n semaphoreIndicator,\n isHarvested,\n crop,\n fieldId,\n}) => {\n const navigate = useNavigate()\n const { t: commonT } = useTranslation('common')\n\n return (\n navigate(`lots/${id}`)}>\n \n \n \n \n {commercialName && (\n <>\n \n \n \n \n \n )}\n \n {isHarvested ? (\n \n ) : (\n \n \n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {commonT('systemsFormat.area', { val: { area: size, withDecimals: 1 } })}\n \n \n \n \n \n \n \n {daysSinceEmergenceDate}\n \n \n {commonT('vocabulary.daysAfterEmergenceAbbreviation')}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {lotCoordinates ? (\n \n ) : (\n \n )}\n \n \n \n )\n}\n","export const SELECT = {\n VALUES: {\n CRITICALITY: 'CRITICALITY',\n NAMES: 'NAMES',\n },\n}\n","import { Select as AntSelect, Space } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { STORAGE_KEYS } from 'consts'\nimport { useLocalStorage } from 'hooks'\n\nimport { SELECT } from '../../consts'\n\nconst StyledSpan = styled.span`\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${({ theme }) => theme.colors.olive5};\n`\n\nconst Select = styled(AntSelect)`\n width: 184px;\n height: 38px;\n` as typeof AntSelect\n\ninterface Props {\n onChange: (value: string) => void\n}\n\nexport const SortSelect: React.FC = ({ onChange }) => {\n const { t } = useTranslation('dashboard')\n const [storedOrderDashboardLotsBy] = useLocalStorage(STORAGE_KEYS.ORDER_DASHBOARD_LOTS_BY)\n\n const data = [\n { label: t('sortSelect.criticality'), value: SELECT.VALUES.CRITICALITY },\n { label: t('sortSelect.fieldName'), value: SELECT.VALUES.NAMES },\n ]\n\n return (\n \n {t('sortSelect.orderBy')}\n \n \n )\n}\n","import { gql } from '@apollo/client'\n\nexport type { CompanyUserInvited, CompanyUserInvitedVariables } from './types/CompanyUserInvited'\n\nexport const COMPANY_USER_INVITED = gql`\n query CompanyUserInvited($id: Int!) {\n company(id: $id) {\n id\n name\n }\n }\n`\n","import { Typography, Row, Col } from 'antd'\nimport styled from 'styled-components'\n\nimport { Button } from 'components'\n\nconst { Title: AntTitle } = Typography\n\nconst CenteredRow = styled(Row)`\n flex-grow: 1;\n height: 100%;\n background: ${({ theme }) => theme.colors.white};\n margin-top: -50px;\n`\n\nconst ColContainer = styled(Col)`\n width: 500px;\n background: ${({ theme }) => theme.colors.grey1};\n box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.25), 0px 10px 20px rgba(211, 211, 211, 0.25);\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n\n &.ant-col:first-child {\n padding: 30px 48px !important;\n }\n`\n\nconst Description = styled(AntTitle)`\n font-weight: 400 !important;\n font-style: normal !important;\n line-height: 26px !important;\n margin-bottom: 22px !important;\n`\n\nconst Title = styled(AntTitle)`\n margin-bottom: 0 !important;\n`\ninterface Props {\n title: string\n description: string\n onClick?: () => void\n buttonText?: string\n}\nexport const Card: React.FC = ({ title, description, onClick, buttonText }) => {\n return (\n \n \n {title} \n {description}\n \n \n \n \n \n )\n}\n","import { Typography, Space } from 'antd'\nimport styled from 'styled-components'\n\nconst { Text } = Typography\n\nconst CenteredRow = styled(Space)`\n flex: 1;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n margin-top: -50px;\n`\n\nconst TextContainer = styled.div`\n max-width: 350px;\n text-align: center;\n`\n\nconst Description = styled(Text)`\n color: ${({ theme }) => theme.colors.new.baseColor[400]} !important;\n font-style: normal !important;\n font-size: 14px !important;\n font-weight: 400 !important;\n`\n\nconst Title = styled(Text)`\n font-style: normal !important;\n font-family: Inter;\n font-size: 20px !important;\n font-weight: 600 !important;\n`\n\ninterface Props {\n companyId?: number\n title: string\n description: string\n}\nexport const InvitedUserCard: React.FC = ({ title, description }) => {\n return (\n \n {title}\n \n {description}\n \n \n )\n}\n","import { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { useQuery } from '@apollo/client'\n\nimport { LotsMapLocationState } from 'types'\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { CompanyUserInvited, CompanyUserInvitedVariables, COMPANY_USER_INVITED } from './api'\nimport { Card } from '../Card'\nimport { InvitedUserCard } from '../InvitedUserCard'\n\ninterface Props {\n noFields?: boolean\n isAdminUser: boolean\n isOrganizationUser?: boolean\n isCompanyViewerUser: boolean\n}\nexport const EmptyResults: React.FC = ({\n noFields,\n isAdminUser,\n isOrganizationUser,\n isCompanyViewerUser,\n}) => {\n const navigate = useNavigate()\n const { t } = useTranslation('settings')\n const { activeSeasonId, activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data } = useQuery(COMPANY_USER_INVITED, {\n variables: { id: activeCompanyId! },\n skip: !activeCompanyId,\n })\n\n if (!isAdminUser)\n return (\n \n )\n\n return noFields ? (\n navigate('/settings/fields')}\n buttonText={t('modals.firstField.buttonText')}\n />\n ) : (\n {\n const state: LotsMapLocationState = { seasonId: activeSeasonId, goTo: '/map' }\n return navigate('/settings/lots', {\n state,\n })\n }}\n buttonText={t('modals.firstLot.buttonText')}\n />\n )\n}\n","import { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { LotsMapLocationState } from 'types'\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { Card } from '../Card'\n\ninterface Props {\n companyCreation: boolean\n}\nexport const OrganizationEmptyResults: React.FC = ({ companyCreation }) => {\n const navigate = useNavigate()\n const { activeSeasonId } = ActiveCompanyContext.useActiveCompanyContext()\n const { t } = useTranslation('settings')\n\n if (!companyCreation) return null\n\n return (\n {\n const state: LotsMapLocationState = { seasonId: activeSeasonId, goTo: '/map' }\n return navigate('/settings/lots', {\n state,\n })\n }}\n buttonText={t('modals.firstClientLot.buttonText')}\n />\n )\n}\n","import { EmptyResults, OrganizationEmptyResults } from './components'\n\ninterface Props {\n noFields?: boolean\n isOrganizationUser: boolean\n companyCreation: boolean\n isAdminUser: boolean\n fieldEntityFlag: boolean\n isCompanyViewerUser: boolean\n}\nexport const EmptyResultsCard: React.FC = ({\n noFields,\n isOrganizationUser,\n companyCreation,\n isAdminUser,\n fieldEntityFlag,\n isCompanyViewerUser,\n}) => {\n return isOrganizationUser && !fieldEntityFlag ? (\n \n ) : (\n \n )\n}\n","import { Sector } from 'recharts'\n\ninterface Props {\n cx: number\n cy: number\n innerRadius: number\n outerRadius: number\n startAngle: number\n endAngle: number\n fill: string\n}\n\nexport const RenderActiveBorder: React.FC = ({\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n fill,\n}) => {\n return (\n \n \n \n )\n}\n","import { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { EllipsisText } from 'components'\n\nimport { RenderActiveBorder } from '../RenderActiveBorder'\n\ninterface Props {\n cx: number\n cy: number\n innerRadius: number\n outerRadius: number\n startAngle: number\n endAngle: number\n payload: { name: string; cropName: string }\n percent: number\n totalHa: number\n fill: string\n y?: number\n showCropName: boolean\n}\n\nexport const RenderActiveShape: React.FC = ({\n cx,\n cy,\n innerRadius,\n outerRadius,\n startAngle,\n endAngle,\n payload,\n percent,\n totalHa,\n fill,\n y = 70,\n showCropName,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('dashboard')\n const { t: commonT } = useTranslation('common')\n\n return (\n \n \n \n {showCropName && (\n \n )}\n \n \n \n \n {`${(percent * 100).toFixed()}%`}\n \n \n \n {t('varietiesAndCropsCard.farmTotalSize', {\n size: commonT('systemsFormat.area', { val: { area: totalHa } }),\n })}\n \n \n )\n}\n","import { memo, useEffect, useState } from 'react'\nimport { PieChart, Pie, ResponsiveContainer } from 'recharts'\nimport { useTheme } from 'styled-components'\nimport { maxBy } from 'lodash'\n\nimport { Props, ChartDataObject } from '../../../../../../../types'\nimport { RenderActiveBorder, RenderActiveShape } from './components'\n\nconst getMaxSizeIndex = (chartDataObject: ChartDataObject[]) => {\n const selectedMaxValue = maxBy(chartDataObject, 'size')\n\n const index = chartDataObject.findIndex(data => data.name === selectedMaxValue?.name)\n if (index === -1) return undefined\n\n return index\n}\n\ninterface OnMouseEnterData {\n name: string\n payload: ChartDataObject\n percent: number\n size: number\n value: number\n showCropChart: boolean\n}\n\nexport const Chart: React.FC = memo(({ varietiesData, cropData, showCropChart }) => {\n const [activeCropIndex, setActiveCropIndex] = useState()\n const [activeVarietiesIndex, setActiveVarietiesIndex] = useState()\n const { colors } = useTheme()\n\n const onCropChartMouseEnter = (_cropData: OnMouseEnterData, index: number) => {\n setActiveVarietiesIndex(undefined)\n setActiveCropIndex(index)\n }\n\n const onVarietiesChartMouseEnter = (_: OnMouseEnterData, index: number) => {\n setActiveCropIndex(undefined)\n setActiveVarietiesIndex([index])\n }\n\n const getTotalOFHa = (chartObject?: ChartDataObject[]) =>\n chartObject?.reduce((accumulator, { size }) => {\n const totalHa = accumulator + size\n return totalHa\n }, 0)\n\n useEffect(() => {\n if (showCropChart) {\n const defaultCropIndex = getMaxSizeIndex(cropData)\n if (typeof defaultCropIndex !== 'number') return\n setActiveCropIndex(defaultCropIndex)\n return\n }\n\n const defaultVarietyIndex = getMaxSizeIndex(varietiesData)\n if (typeof defaultVarietyIndex !== 'number') return\n\n setActiveVarietiesIndex([defaultVarietyIndex])\n }, [cropData, showCropChart, varietiesData])\n\n return (\n \n \n {showCropChart && (\n (\n \n )}\n data={cropData}\n dataKey=\"size\"\n activeIndex={activeCropIndex}\n cx=\"50%\"\n cy=\"50%\"\n onMouseEnter={onCropChartMouseEnter}\n fill={colors.new.baseColor[700]}\n outerRadius={80}\n innerRadius={70}\n stroke={colors.new.baseColor[500]}\n />\n )}\n {\n if (activeCropIndex !== undefined)\n return \n return (\n \n )\n }}\n activeIndex={activeVarietiesIndex}\n onMouseEnter={onVarietiesChartMouseEnter}\n cx=\"50%\"\n cy=\"50%\"\n outerRadius={showCropChart ? 70 : 80}\n innerRadius={showCropChart ? 60 : 70}\n fill={colors.new.baseColor[700]}\n dataKey=\"size\"\n stroke={colors.new.baseColor[500]}\n />\n \n \n )\n})\n","import styled from 'styled-components'\nimport { Col, Typography } from 'antd'\n\nexport { Chart } from './Chart'\n\nconst { Title: AntTitle } = Typography\n\nexport const Title = styled(AntTitle)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 32px;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nexport const FlexCol = styled(Col)`\n display: flex;\n`\nexport const StyledCol = styled(Col)`\n width: 100%;\n height: 230px;\n`\n","import { Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { VarietiesIcon } from 'assets/icons'\n\nimport { Chart, Title, FlexCol, StyledCol } from './components'\nimport { Props } from '../../../../../types'\n\nexport const CropsAndVarietiesCard: React.FC = ({\n varietiesData,\n cropData,\n showCropChart,\n}) => {\n const { t } = useTranslation('dashboard')\n return (\n <>\n \n \n \n \n \n {showCropChart\n ? t('varietiesAndCropsCard.title')\n : t('varietiesAndCropsCard.varietiesTitle')}\n \n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\nimport { Row } from 'antd'\nimport { PropsWithChildren } from 'react'\n\ninterface RowProps {\n height?: string\n}\n\nconst ContainerRow = styled(Row)`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: ${({ height = '300px' }) => height};\n width: 288px;\n padding: 24px;\n`\n\ntype PropsWithChildrenAndRow = PropsWithChildren\n\nexport const Card: React.FC = ({ children, height }) => {\n return (\n \n {children}\n \n )\n}\n","import styled from 'styled-components'\nimport { Col, Typography, Space, Divider as AntDivider } from 'antd'\n\nconst { Title: AntTitle, Text: AntText, Link: AntLink } = Typography\n\nexport const Title = styled(AntTitle)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 32px;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nexport const FlexCol = styled(Col)`\n display: flex;\n`\nexport const StyledCol = styled(Col)`\n height: 230px;\n width: 100%;\n margin-top: 24px;\n`\nexport const Divider = styled(AntDivider)`\n margin: 0 !important;\n background: rgba(246, 246, 246, 0.1) !important;\n`\n\n// Prefix the prop name with a dollar sign ($) is a workaround for prevent error : React not recognizing prop\n// https://styled-components.com/docs/api#transient-props\ninterface Props {\n $isToday?: boolean\n}\n\nexport const WeatherContainer = styled(Space).attrs({\n size: 12,\n direction: 'vertical',\n})`\n border: 2px solid\n ${({ theme, $isToday }) => ($isToday ? theme.colors.grey1 : 'rgba(246, 246, 246, 0.1)')};\n width: 100%;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 12px 8px;\n`\n\nexport const DayText = styled(AntText)`\n font-size: 14px;\n font-style: normal;\n font-weight: 600;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${({ theme }) => theme.colors.grey1};\n text-transform: capitalize;\n`\n\nexport const TempMaxText = styled(DayText)`\n font-size: 20px;\n`\n\nexport const TempMinText = styled(DayText)`\n line-height: 20px;\n color: ${({ theme }) => theme.colors.grey2};\n`\n\nexport const RainProbText = styled(DayText)`\n line-height: 14px;\n color: ${({ theme }) => theme.colors.white};\n white-space: nowrap;\n`\n\nexport const SponsorText = styled(AntLink)`\n font-size: 8px;\n font-style: normal;\n line-height: 24px;\n color: ${({ theme }) => theme.colors.white} !important;\n &:hover {\n color: ${({ theme }) => theme.colors.white} !important;\n text-decoration: underline !important;\n }\n`\n","import { Col, Row } from 'antd'\nimport dayjs from 'dayjs'\nimport { useTranslation } from 'react-i18next'\n\nimport { WeatherDay } from 'api'\nimport { RainDropIcon, RainIcon, SunIcon, CloudyIcon, RainWeatherIcon } from 'assets/icons'\nimport { EXTERNAL_LINKS } from 'consts'\n\nimport {\n Title,\n FlexCol,\n StyledCol,\n WeatherContainer,\n Divider,\n DayText,\n TempMaxText,\n TempMinText,\n RainProbText,\n SponsorText,\n} from './components'\n\ninterface Props {\n days?: WeatherDay[]\n}\n\nconst getWeatherIcon = (precipProb: number | null, cloudCover: number | null) => {\n if (precipProb && precipProb > 40) return \n if (cloudCover && cloudCover > 50) return \n return \n}\n\nexport const Weather: React.FC = ({ days }) => {\n const { t } = useTranslation('dashboard')\n const { t: commonT } = useTranslation('common')\n return (\n <>\n \n \n \n \n \n \n {t('weatherCard.title')}\n \n \n \n \n \n {days?.map((day, index) => {\n return (\n \n \n {getWeatherIcon(day.precipProb, day.cloudCover)}\n \n {index === 0\n ? t('weatherCard.today')\n : commonT('dates.shortDay', {\n val: dayjs(day.dateTime),\n })}\n \n \n \n \n \n {commonT('systemsFormat.degree', {\n val: day.tempMax,\n })}\n \n \n \n \n {commonT('systemsFormat.degree', {\n val: day.tempMin,\n })}\n \n \n \n \n \n {day.precipProb?.toFixed()}%\n \n \n \n \n )\n })}\n \n \n \n {t('weatherCard.linkText')}\n \n \n \n \n )\n}\n","import { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { SeasonMillDeliveryType } from 'types'\n\nconst Select = styled(AntSelect)`\n width: 100%;\n height: 38px;\n color: ${({ theme }) => theme.colors.new.baseColor[500]};\n` as typeof AntSelect\n\ninterface Props {\n value?: SeasonMillDeliveryType\n onChange: (value: SeasonMillDeliveryType) => void\n}\n\nexport const DeliverySelect: React.FC = ({ onChange, value }) => {\n const { t } = useTranslation('dashboard')\n\n const data = [\n { label: t('deliverySelect.total'), value: SeasonMillDeliveryType.TOTAL },\n { label: t('deliverySelect.partial'), value: SeasonMillDeliveryType.PARTIAL },\n { label: t('deliverySelect.noDelivery'), value: SeasonMillDeliveryType.NO_DELIVERY },\n ]\n\n return (\n \n )\n}\n","import { Col, Row, Input as AntInput, Typography } from 'antd'\nimport styled from 'styled-components'\n\nexport { DeliverySelect } from './DeliverySelect'\n\nexport const ContainerCard = styled(Row)`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: 300px;\n width: 288px;\n padding: 24px;\n`\nexport const HeaderCard = styled(Col)`\n display: flex;\n align-items: center;\n gap: 10px;\n`\n\nexport const StyledRow = styled(Row)`\n align-items: center;\n gap: 5px;\n`\n\ninterface BallPops {\n paint?: boolean\n}\nexport const Ball = styled.div`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${({ theme, paint }) =>\n paint ? theme.colors.new.secondary[500] : theme.colors.new.baseColor[300]};\n margin: 2px;\n`\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nexport const Title = styled(AntTitle)`\n font-weight: 600 !important;\n margin-bottom: 0px !important;\n line-height: 32px;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nexport const Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white} !important;\n font-size: 14px !important;\n font-weight: 600;\n`\nexport const SubText = styled(Text)`\n color: ${({ theme }) => theme.colors.new.baseColor[300]} !important;\n font-weight: 400;\n`\nexport const Input = styled(AntInput)`\n width: 75px;\n height: 24px;\n padding: 0px 6px;\n`\n","import { Space } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport React from 'react'\n\nimport { RiceIcon } from 'assets/icons'\nimport { useUpdateSeason } from 'hooks'\nimport { SeasonMillDeliveryType } from 'types'\nimport { UNITS } from 'consts'\n\nimport {\n ContainerCard,\n HeaderCard,\n StyledRow,\n Ball,\n Title,\n Text,\n SubText,\n Input,\n DeliverySelect,\n} from './components'\n\ninterface Props {\n seasonId: number\n estimated: number\n declared: number\n delivered?: number\n millDeliveryType?: SeasonMillDeliveryType\n}\nexport const RiceProductionCard: React.FC = ({\n seasonId,\n estimated,\n declared,\n delivered,\n millDeliveryType,\n}) => {\n const { t } = useTranslation('dashboard')\n\n const { updateSeason } = useUpdateSeason()\n\n const onChangeDeliveryType = (value: SeasonMillDeliveryType) => {\n updateSeason({\n variables: {\n id: seasonId,\n updateSeasonDTO: {\n millDeliveryType: value,\n },\n },\n })\n }\n\n const onBlurDeliveredInput = (value: number) => {\n updateSeason({\n variables: {\n id: seasonId,\n updateSeasonDTO: {\n productionToMill: value / UNITS.KG_TONS_RATIO,\n },\n },\n })\n }\n\n return (\n \n \n \n \n {t('productionCard.title')}\n \n \n \n \n {t('productionCard.estimated')}\n \n {estimated === 0 ? '-' : estimated?.toFixed()} {t('productionCard.tons')}\n \n \n \n \n {t('productionCard.declared')}\n \n {declared === 0 ? '-' : declared?.toFixed()} {t('productionCard.tons')}\n \n \n \n \n {t('productionCard.delivered')}\n onBlurDeliveredInput(Number(e.target.value))}\n />\n {t('productionCard.tons')}\n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\nimport { Typography, Progress as AntProgress, Col, Row } from 'antd'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nexport const Title = styled(AntTitle)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 24px;\n font-size: 16px !important;\n font-weight: 600 !important;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nexport const SubTitle = styled(AntText)`\n font-size: 14px !important;\n font-style: normal !important;\n font-weight: 400 !important;\n line-height: 24px !important;\n color: ${({ theme }) => theme.colors.grey1} !important;\n`\n\nexport const Text = styled(SubTitle)`\n font-weight: 600 !important;\n`\n\nexport const Progress = styled(AntProgress)`\n & .ant-progress-text {\n font-size: 14px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.white} !important;\n }\n`\n\nexport const Box = styled(Col)`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 5px !important;\n border-radius: 2px;\n flex: 1;\n background: ${({ theme }) => theme.colors.grey2} !important;\n`\n\nexport const StyledRow = styled(Row)`\n .ant-col:first-child {\n padding-left: 5px !important;\n }\n`\nexport const MarginRow = styled(Row)`\n margin-top: 10px;\n`\n\nexport const CenteredCol = styled(Col)`\n align-items: center;\n display: flex;\n`\n","import { Col, Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useTheme } from 'styled-components'\n\nimport { useFormatNumbersWithScale } from 'hooks'\n\nimport {\n Title,\n Progress,\n SubTitle,\n Box,\n StyledRow,\n Text,\n MarginRow,\n CenteredCol,\n} from './components'\n\ninterface Props {\n area?: number\n volume?: number\n percentage?: number\n name: string\n}\n\nexport const DamCard: React.FC = ({ area, volume, percentage, name }) => {\n const { t } = useTranslation('dashboard')\n const { colors } = useTheme()\n const { formatNumberWithScale } = useFormatNumbersWithScale()\n\n const areaInfo = area ? formatNumberWithScale(area) : undefined\n const volumeInfo = volume ? formatNumberWithScale(volume) : undefined\n\n return (\n <>\n \n {`${t('damCard.title')} - ${name}`} \n \n \n \n \n (percentage ? `${percent} %` : '-')}\n />\n \n \n \n \n {t('damCard.area')} \n \n\n \n {areaInfo ? areaInfo.value : '-'}\n \n {areaInfo && ` ${areaInfo.scale} m2`}\n \n \n \n \n \n {t('damCard.volume')} \n \n \n {volumeInfo ? volumeInfo.value : '-'}\n \n {volumeInfo && ` ${volumeInfo.scale} m3`}\n \n \n \n \n \n \n \n )\n}\n","import { Row } from 'antd'\nimport styled from 'styled-components'\n\nexport { CropsAndVarietiesCard } from './CropsAndVarietiesCard'\nexport { LotCard } from './LotCard'\nexport { Card } from './Card'\nexport { Weather } from './Weather'\nexport { RiceProductionCard } from './RiceProductionCard'\nexport { DamCard } from './DamCard'\n\nexport const BodyContainerRow = styled(Row)`\n margin-bottom: 48px;\n display: flex;\n flex-direction: column;\n`\n\nexport const WeatherCard = styled(Row)`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n height: 300px;\n width: 600px;\n padding: 24px;\n`\n\nexport const ContainerLotCards = styled.div`\n display: flex;\n flex-wrap: wrap;\n grid-gap: 24px;\n`\n\nexport const ContainerLotCard = styled.div`\n width: 290px;\n height: 200px;\n`\n","import { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router-dom'\nimport i18next from 'i18next'\nimport { orderBy } from 'lodash'\nimport React, { useEffect, useMemo, useState } from 'react'\nimport { Col, Skeleton, Space } from 'antd'\n\nimport { SeasonFieldDam, SeasonFields, SeasonLot } from 'api'\nimport { usePermissions } from 'hooks'\nimport { LocaleLanguage, SeasonMillDeliveryType } from 'types'\nimport { LANGUAGE, UNITS } from 'consts'\n\nimport { LotOrFieldInformation } from '../../../components'\nimport {\n BodyContainerRow,\n Card,\n ContainerLotCards,\n ContainerLotCard,\n CropsAndVarietiesCard,\n LotCard,\n RiceProductionCard,\n Weather,\n WeatherCard,\n DamCard,\n} from './components'\n\nconst ONLY_ONE_CROP = 1\n\ninterface DataObject {\n [key: string]: { name: string; value: number; size: number; cropName: string }\n}\n\ninterface Props {\n field: SeasonFields['field']\n lots: SeasonLot[]\n declaredRiceProduction: number\n estimatedRiceProduction: number\n seasonId: number\n productionToMill?: number\n millDeliveryType?: SeasonMillDeliveryType\n dams: SeasonFieldDam[]\n}\n\nexport const FieldsAndLotsBody: React.FC = ({\n lots,\n field,\n declaredRiceProduction,\n estimatedRiceProduction,\n seasonId,\n productionToMill,\n millDeliveryType,\n dams,\n}) => {\n const navigate = useNavigate()\n const { permissions } = usePermissions()\n const { t } = useTranslation('dashboard')\n const [showLotCards, setShowLotCards] = useState(false)\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n\n const handleChartData = (seasonLots?: SeasonLot[]) => {\n const reduced =\n seasonLots?.reduce((accumulator: DataObject, { variety, size, crop }) => {\n const key = `${crop.id}-${variety?.locales.es}`\n // eslint-disable-next-line no-param-reassign\n accumulator[key] = accumulator[key] ?? {\n name: variety?.locales[language] ?? t('varietiesAndCropsCard.noVariety'),\n value: 0,\n size: 0,\n cropName: crop.locales[language],\n }\n // eslint-disable-next-line no-param-reassign\n accumulator[key].value += 1\n // eslint-disable-next-line no-param-reassign\n accumulator[key].size += size\n return accumulator\n }, {}) ?? {}\n const result = Object.values(reduced || '')\n\n return orderBy(result, 'cropName')\n }\n\n const cropData = useMemo(() => {\n const reduced = lots?.reduce((accumulator: DataObject, { crop, size }) => {\n const key = crop.id\n // eslint-disable-next-line no-param-reassign\n accumulator[key] = accumulator[key] ?? {\n name: crop.locales[language],\n value: 0,\n size: 0,\n }\n // eslint-disable-next-line no-param-reassign\n accumulator[key].value += 1\n // eslint-disable-next-line no-param-reassign\n accumulator[key].size += size\n return accumulator\n }, {})\n const result = Object.values(reduced || '')\n return orderBy(result, 'name')\n }, [lots, language])\n\n useEffect(() => {\n // We need to implement this timeout to fix the delay rendering a big list of lots.\n // We couldn't implement virtualization for the disposition of UX.\n // We must consider in the future a better option if the UX changes.\n const timeout = setTimeout(() => {\n setShowLotCards(true)\n }, 0)\n\n return () => clearTimeout(timeout)\n }, [])\n\n if (!field) return null\n return (\n
\n \n permissions.fieldEntity ? navigate(`/settings/fields/${field.id}`) : navigate('/settings')\n }\n />\n \n \n \n \n ONLY_ONE_CROP}\n />\n \n {permissions.isFeatureSetGrupoDiana && (\n \n )}\n {!permissions.isFeatureSetGrupoDiana && (\n \n \n \n )}\n \n \n \n {dams.map(dam => (\n \n \n \n \n \n ))}\n {lots.map(lot => {\n const { indicators } = lot.riceLot\n\n const isHarvested = !!lot?.riceLot.isHarvested\n\n const daysSinceEmergence = lot.riceLot.daysSinceEmergence?.toString() ?? '-'\n\n return (\n \n \n \n \n \n )\n })}\n \n \n
\n )\n}\n","import { Col } from 'antd'\nimport styled from 'styled-components'\n\nimport { Layout as BaseLayout } from 'components'\n\nexport { InformationCard } from './InformationCard'\nexport { LotCard } from './FieldsAndLotsBody/components/LotCard'\nexport { SortSelect } from './SortSelect'\nexport { EmptyResultsCard } from './EmptyResultsCard'\nexport { FieldsAndLotsBody } from './FieldsAndLotsBody'\n\nexport const Layout = styled(BaseLayout)`\n display: flex;\n flex-direction: column;\n`\n\nexport const ScrollColumn = styled(Col)`\n display: flex;\n flex-direction: column;\n flex: 1;\n`\n\nexport const ContainerRow = styled.div`\n display: flex;\n flex-wrap: nowrap;\n height: 90%;\n grid-gap: 24px;\n overflow-y: auto;\n overflow-x: auto;\n`\n","import _ from 'lodash'\n\nimport { SeasonLot } from 'api'\nimport { IndicatorStatus } from 'types'\n\nconst LotIndicatorsWeights = {\n irrigation: {\n BAD: 1,\n MEDIUM: 3,\n GOOD: 6,\n },\n chlorophyll: {\n BAD: 2,\n MEDIUM: 4,\n GOOD: 6,\n },\n}\n\nconst TURNED_OFF_LOTS_KEY = 'OFF'\nconst DEFAULT_WEIGHT = 0\n\nconst compareLots = (lotA: SeasonLot, lotB: SeasonLot) => {\n const lotAIrrigation = lotA.riceLot.indicators?.irrigation\n const lotAChlorophyl = lotA.riceLot.indicators?.chlorophyll\n const lotBIrrigation = lotB.riceLot.indicators?.irrigation\n const lotBChlorophyl = lotB.riceLot.indicators?.chlorophyll\n\n const lotAIrrigationWeight = lotAIrrigation\n ? LotIndicatorsWeights.irrigation[lotAIrrigation]\n : DEFAULT_WEIGHT\n const lotAChlorophyllWeight = lotAChlorophyl\n ? LotIndicatorsWeights.chlorophyll[lotAChlorophyl]\n : DEFAULT_WEIGHT\n\n const lotBIrrigationWeight = lotBIrrigation\n ? LotIndicatorsWeights.irrigation[lotBIrrigation]\n : DEFAULT_WEIGHT\n const lotBChlorophyllWeight = lotBChlorophyl\n ? LotIndicatorsWeights.chlorophyll[lotBChlorophyl]\n : DEFAULT_WEIGHT\n\n return (\n lotAIrrigationWeight + lotAChlorophyllWeight - (lotBIrrigationWeight + lotBChlorophyllWeight)\n )\n}\n\nconst sortLotsByCriticality = (lots: SeasonLot[]) => {\n const lotsToSort = [...lots]\n\n const lotsBySemaphore = _.groupBy(\n lotsToSort,\n lot => lot.riceLot.indicators?.semaphore ?? TURNED_OFF_LOTS_KEY,\n )\n\n const orderedLotsBySemaphore = _.mapValues(lotsBySemaphore, semaphoreLots =>\n semaphoreLots.sort(compareLots),\n )\n\n return [\n ...(orderedLotsBySemaphore[IndicatorStatus.BAD] ?? []),\n ...(orderedLotsBySemaphore[IndicatorStatus.MEDIUM] ?? []),\n ...(orderedLotsBySemaphore[IndicatorStatus.GOOD] ?? []),\n ...(orderedLotsBySemaphore[TURNED_OFF_LOTS_KEY] ?? []),\n ]\n}\n\nexport const SortUtils = {\n sortLotsByCriticality,\n}\n","import React, { useCallback } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { dashboardImage } from 'assets/images'\nimport { FullScreenLoader, SeasonSelect } from 'components'\nimport { ActiveCompanyContext } from 'contexts'\nimport {\n useHasCompanyOrFieldsOrLots,\n useLocalStorage,\n usePermissions,\n useSeason,\n useTrackImpression,\n} from 'hooks'\nimport { STORAGE_KEYS } from 'consts'\nimport { AmplitudeEventsName } from 'types'\n\nimport {\n InformationCard,\n ScrollColumn,\n ContainerRow,\n Layout,\n SortSelect,\n EmptyResultsCard,\n FieldsAndLotsBody,\n} from './components'\nimport { SortUtils } from './utils'\nimport { SELECT } from './consts'\n\nexport const Dashboard: React.FC = () => {\n const { activeSeasonId, setActiveSeason, activeCompanyId, activeCompanyName } =\n ActiveCompanyContext.useActiveCompanyContext()\n const { data, loading } = useSeason(activeSeasonId)\n const [storedOrderDashboardLotsBy, setOrderDashboardLotsBy] = useLocalStorage(\n STORAGE_KEYS.ORDER_DASHBOARD_LOTS_BY,\n SELECT.VALUES.CRITICALITY,\n )\n const { t } = useTranslation('dashboard')\n const { permissions } = usePermissions()\n const { noFields, noLots } = useHasCompanyOrFieldsOrLots()\n\n useTrackImpression({\n eventName: AmplitudeEventsName.DASHBOARD_IMPRESSION,\n eventProperties: {\n activeCompanyId,\n activeCompanyName,\n },\n loading: !activeCompanyId || loading,\n })\n\n const getEstimatedRiceProduction = useCallback(\n () =>\n data?.season.seasonFields.reduce(\n (acc, { lots }) =>\n acc +\n lots.reduce((accLot, { riceLot }) => accLot + (riceLot.estimatedYield.value ?? 0), 0),\n 0,\n ) ?? 0,\n\n [data?.season.seasonFields],\n )\n\n const getDeclaredRiceProduction = useCallback(\n () =>\n data?.season.seasonFields.reduce(\n (acc, { lots }) =>\n acc + lots.reduce((accLot, { riceLot }) => accLot + (riceLot.yield ?? 0), 0),\n 0,\n ) ?? 0,\n\n [data?.season.seasonFields],\n )\n\n const onChangeActiveSeason = (seasonId?: number) => setActiveSeason(seasonId)\n\n const headerItems = []\n\n return (\n setOrderDashboardLotsBy(value)} />\n ) : undefined\n }\n >\n {loading ? (\n \n ) : (\n \n {noFields || noLots ? (\n \n ) : (\n <>\n \n {data?.season.seasonFields\n .filter(({ field }) => field)\n .map(seasonField => {\n const field = seasonField.field!\n const { dams } = field\n const { lots } = seasonField\n const sortedLots =\n storedOrderDashboardLotsBy === SELECT.VALUES.CRITICALITY\n ? SortUtils.sortLotsByCriticality(lots)\n : lots\n const { productionToMill, id, millDeliveryType } = data.season\n return (\n \n \n \n )\n })}\n \n \n \n )}\n \n )}\n \n )\n}\n","import { Button as BaseButton } from 'antd'\nimport { useNavigate } from 'react-router-dom'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { LeftArrowIcon as BaseLeftArrowIcon } from 'assets/icons'\nimport { usePermissions } from 'hooks'\n\nconst Button = styled(BaseButton)`\n background-color: ${({ theme }) => theme.colors.grey2};\n color: ${({ theme }) => theme.colors.olive5};\n height: 48px;\n width: 190px;\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n font-weight: 500;\n &:hover {\n background-color: ${({ theme }) => theme.colors.grey2} !important;\n color: ${({ theme }) => theme.colors.olive5} !important;\n border-color: ${({ theme }) => theme.colors.grey2} !important;\n }\n`\n\nconst LeftArrowIcon = styled(BaseLeftArrowIcon)`\n font-size: 20px;\n position: absolute;\n left: 15px;\n top: 20px;\n`\n\nexport const GoBackButton = () => {\n const navigate = useNavigate()\n const { t } = useTranslation('lot-dashboard')\n const { permissions } = usePermissions()\n\n return (\n \n )\n}\n","import { Row, Col, Typography } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { EllipsisText, VarietiesSelect as BaseVarietiesSelect } from 'components'\n\nconst { Text: AntText } = Typography\n\nconst StyledRow = styled(Row)`\n border: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n border-radius: 6px;\n padding: 4px;\n`\nconst Container = styled(Row)`\n padding: 10px 20px;\n background: ${({ theme }) => theme.colors.grey1};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n height: 100%;\n width: 235px;\n min-height: 157px;\n`\ninterface ColProps {\n $maxWidth: string\n}\nconst ResponsiveCol = styled(Col)`\n max-width: ${({ $maxWidth }) => $maxWidth};\n`\n\nconst CenterCol = styled(Col)`\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst DaysText = styled(AntText)`\n font-weight: 600;\n color: ${({ theme }) => theme.colors.olive5} !important;\n font-size: 16px !important;\n padding: 6px !important;\n`\n\nconst DaysTextContainer = styled(Col)`\n background: ${({ theme }) => theme.colors.grey2};\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 2px;\n min-width: 44px;\n height: 100%;\n`\n\nconst EmergenceDateText = styled(AntText)`\n font-size: 14px !important;\n font-weight: 500;\n`\n\nconst VarietiesSelect = styled(BaseVarietiesSelect)`\n width: 100%;\n`\n\ninterface Props {\n varietyId?: number\n crop: string\n cropId?: number\n daysSinceEmergenceDate: string\n lotId?: number\n onVarietyChange: (variety: {\n variables: {\n updateLotDto: { id: number; varietyId: number }\n }\n }) => void\n}\n\nexport const EmergenceDateCard: React.FC = ({\n varietyId,\n daysSinceEmergenceDate,\n crop,\n cropId,\n onVarietyChange,\n lotId,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('lot-dashboard')\n\n return (\n \n \n \n \n \n \n \n \n {\n if (!lotId || !variety) return\n onVarietyChange({\n variables: {\n updateLotDto: { id: lotId, varietyId: variety.id },\n },\n })\n }}\n />\n \n \n \n \n \n {daysSinceEmergenceDate}\n \n \n {t('emergenceDateCard.daysAfterEmergence')}\n \n \n \n \n )\n}\n","import { Row, Col, Typography, Space, Progress as AntProgress } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport styled, { useTheme } from 'styled-components'\n\nimport { IndicatorStatus, Indicators } from 'types'\n\nimport { Indicator } from '../../../../../../../../components'\n\nconst { Text: AntText } = Typography\n\nconst Container = styled(Space)`\n background-color: ${({ theme }) => theme.colors.grey1};\n width: 290px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 22px;\n`\n\ninterface ProgressProps {\n $showText?: boolean\n}\n\nconst Progress = styled(AntProgress)`\n & .ant-progress-text {\n font-size: 14px;\n font-weight: 600;\n display: ${({ $showText = true }) => ($showText ? 'inline' : 'none')};\n color: ${({ theme }) => theme.colors.olive5} !important;\n }\n`\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive5};\n font-size: 16px;\n font-weight: 600;\n`\n\nconst ProgressText = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive5};\n font-size: 14px;\n font-weight: 400;\n`\nconst StyledCol = styled(Col)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n`\n\nconst STROKE_COLOR = '#72B2ED'\n\ninterface Props {\n sufficientWaterPercentage: number\n irrigationIndicator?: IndicatorStatus\n hasEmergenceDate: boolean\n isHarvested: boolean\n}\n\nexport const IrrigationMonitorCard: React.FC = ({\n sufficientWaterPercentage,\n irrigationIndicator,\n hasEmergenceDate,\n isHarvested,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('lot-dashboard')\n\n return (\n \n \n \n {t('irrigationCard.title')}\n \n \n \n \n \n \n \n (isHarvested ? '-' : `${percent} %`)}\n />\n \n \n {hasEmergenceDate ? (\n <>\n {t('irrigationCard.hydricStatus')}\n \n ) : (\n <>\n {t('irrigationCard.emergenceDatePending')}\n \n )}\n \n \n \n )\n}\n","import { Tooltip } from 'antd'\nimport { PropsWithChildren } from 'react'\nimport { useTranslation } from 'react-i18next'\n\ninterface Props {\n hasEmergenceDate: boolean\n}\n\nexport const PendingEmergenceDateTooltip: React.FC> = ({\n hasEmergenceDate,\n children,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n\n if (hasEmergenceDate) return <>{children}\n return {children}\n}\n","import { Col, Row } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\n\nimport { IndicatorStatus } from 'types'\n\nimport { TrafficLights } from '../../../../../components'\nimport { PendingEmergenceDateTooltip } from '../../../PendingEmergenceDateTooltip'\n\nconst TrafficLightContainer = styled(Col)`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n border-radius: 6px;\n border: ${({ theme }) => `3px solid ${theme.colors.trafficLightNeutral} !important `};\n padding: 6px;\n min-width: 36px;\n min-height: 84px;\n`\n\nconst Container = styled(Row)`\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 9px;\n background-color: ${({ theme }) => theme.colors.grey1};\n max-width: 80px;\n display: flex;\n justify-content: center;\n align-items: center;\n width: 81px;\n height: 100%;\n`\n\ninterface Props {\n hasEmergenceDate: boolean\n semaphoreIndicator?: IndicatorStatus\n}\n\nexport const TrafficLight: React.FC = ({ hasEmergenceDate, semaphoreIndicator }) => {\n return (\n \n \n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\nimport { Space as AntSpace, Typography, Row, Col, Select as AntSelect } from 'antd'\n\nimport { CropsSelect as BaseCropsSelect } from 'components'\n\nconst { Title: AntTitle } = Typography\n\nexport const Title = styled(AntTitle)`\n font-style: normal;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.olive5};\n margin-bottom: 0 !important;\n`\n\nexport const Space = styled(AntSpace)`\n background-color: ${({ theme }) => theme.colors.grey1};\n padding: 24px;\n width: 235px;\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n`\n\nexport const Divider = styled(Col)`\n width: 3px !important;\n height: 100%;\n background: ${({ theme }) => theme.colors.olive};\n padding-left: 0 !important;\n`\ninterface BallProps {\n $completedDate: boolean\n $backgroundColor: string\n}\nexport const Ball = styled.div`\n width: 20px;\n height: 26.5px;\n border-radius: 50%;\n background-color: ${({ theme, $completedDate, $backgroundColor }) =>\n $completedDate ? $backgroundColor : theme.colors.grey3};\n border: ${({ theme }) => `2px solid ${theme.colors.olive}`};\n`\n\nexport const FlexCol = styled(Col)`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n`\n\nexport const MarginRow = styled(Row)`\n margin-bottom: 12px;\n max-width: 155px;\n`\n\nexport const Select = styled(AntSelect)`\n width: 143px;\n`\n\nexport const CropsSelect = styled(BaseCropsSelect)`\n width: 143px;\n`\n","import { Row, Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { InputTitle, UpdateTypeInformation } from 'components'\nimport { UpdateRiceLotVariables } from 'hooks/useUpdateRiceLot/api'\nimport { MilestoneUpdateType } from 'types'\n\nimport { Title, Space, FlexCol, Ball, MarginRow, Divider } from './components'\nimport { useBody } from './hooks'\n\ninterface Props {\n lotId: number\n previousCropId?: number\n riceLotId: number\n emergenceDate?: string\n plantingDate?: string\n firstIrrigationStartDate?: string\n firstIrrigationEndDate?: string\n floweringDate?: string\n harvestDate?: string\n physiologicalMaturityDate?: string\n differentiationDate?: string\n preparationDate?: string\n burningDate?: string\n earAppearanceDate?: string\n updateRiceLotMutation: (updateRiceLotDTO: { variables: UpdateRiceLotVariables }) => void\n emergenceUpdateType?: MilestoneUpdateType\n plantingUpdateType?: MilestoneUpdateType\n floweringUpdateType?: MilestoneUpdateType\n harvestUpdateType?: MilestoneUpdateType\n preparationUpdateType?: MilestoneUpdateType\n burningUpdateType?: MilestoneUpdateType\n earAppearanceUpdateType?: MilestoneUpdateType\n differentiationUpdateType?: MilestoneUpdateType\n}\n\nexport const Timeline: React.FC = ({\n lotId,\n previousCropId,\n riceLotId,\n plantingDate,\n emergenceDate,\n firstIrrigationStartDate,\n firstIrrigationEndDate,\n floweringDate,\n harvestDate,\n differentiationDate,\n physiologicalMaturityDate,\n preparationDate,\n burningDate,\n earAppearanceDate,\n updateRiceLotMutation,\n emergenceUpdateType,\n plantingUpdateType,\n floweringUpdateType,\n harvestUpdateType,\n preparationUpdateType,\n burningUpdateType,\n earAppearanceUpdateType,\n differentiationUpdateType,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n\n const { bodyData } = useBody({\n lotId,\n previousCropId,\n riceLotId,\n plantingDate,\n emergenceDate,\n firstIrrigationStartDate,\n firstIrrigationEndDate,\n floweringDate,\n harvestDate,\n differentiationDate,\n physiologicalMaturityDate,\n preparationDate,\n burningDate,\n earAppearanceDate,\n updateRiceLotMutation,\n emergenceUpdateType,\n plantingUpdateType,\n floweringUpdateType,\n harvestUpdateType,\n preparationUpdateType,\n burningUpdateType,\n earAppearanceUpdateType,\n differentiationUpdateType,\n })\n\n return (\n \n \n \n {t('timeline.title')}\n \n \n \n \n \n \n {bodyData.map(timelineObject => {\n return (\n \n \n \n \n \n \n \n \n \n \n {timelineObject.component}\n \n \n \n )\n })}\n \n \n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { useTheme } from 'styled-components'\nimport { Tooltip } from 'antd'\nimport dayjs from 'dayjs'\n\nimport { useCompanyMilestones, usePermissions, useUpdateLot, useUpdateTypeStyles } from 'hooks'\nimport { DatePicker } from 'components'\nimport { UpdateRiceLotVariables } from 'hooks/useUpdateRiceLot/api'\nimport { MilestoneUpdateType, RiceLotStatus } from 'types'\nimport { DateUtils, LotUtils } from 'utils'\n\nimport { CropsSelect } from '../components'\n\ninterface MilestoneData {\n title: string\n component: JSX.Element\n completedDate: boolean\n showMilestone: boolean\n ballBackground: string\n}\n\ninterface Props {\n lotId: number\n previousCropId?: number\n riceLotId: number\n emergenceDate?: string\n plantingDate?: string\n harvestDate?: string\n preparationDate?: string\n burningDate?: string\n earAppearanceDate?: string\n firstIrrigationStartDate?: string\n firstIrrigationEndDate?: string\n floweringDate?: string\n differentiationDate?: string\n physiologicalMaturityDate?: string\n updateRiceLotMutation: (updateRiceLotDTO: { variables: UpdateRiceLotVariables }) => void\n emergenceUpdateType?: MilestoneUpdateType\n plantingUpdateType?: MilestoneUpdateType\n floweringUpdateType?: MilestoneUpdateType\n harvestUpdateType?: MilestoneUpdateType\n preparationUpdateType?: MilestoneUpdateType\n burningUpdateType?: MilestoneUpdateType\n earAppearanceUpdateType?: MilestoneUpdateType\n differentiationUpdateType?: MilestoneUpdateType\n}\n\nexport const useBody = ({\n riceLotId,\n plantingDate,\n emergenceDate,\n harvestDate,\n preparationDate,\n burningDate,\n earAppearanceDate,\n lotId,\n differentiationDate,\n firstIrrigationEndDate,\n firstIrrigationStartDate,\n floweringDate,\n physiologicalMaturityDate,\n previousCropId,\n updateRiceLotMutation,\n emergenceUpdateType,\n plantingUpdateType,\n floweringUpdateType,\n harvestUpdateType,\n preparationUpdateType,\n burningUpdateType,\n earAppearanceUpdateType,\n differentiationUpdateType,\n}: Props) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n const { colors } = useTheme()\n const { permissions } = usePermissions()\n const { activeCompanyMilestones } = useCompanyMilestones()\n\n const { updateLot, loading } = useUpdateLot()\n\n const { getBallBackground } = useUpdateTypeStyles()\n\n const timelineData: MilestoneData[] = [\n {\n title: t('timeline.previousCrop'),\n component: (\n \n updateLot({\n variables: {\n updateLotDto: { id: lotId, previousCropId: value?.id },\n },\n })\n }\n />\n ),\n completedDate: !!previousCropId,\n showMilestone: true,\n ballBackground: colors.new.secondary[600],\n },\n {\n title: t('timeline.preparation'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n preparationDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!preparationDate,\n showMilestone: activeCompanyMilestones.includes(RiceLotStatus.PREPARATION),\n ballBackground: getBallBackground(preparationUpdateType),\n },\n {\n title: t('timeline.burning'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n burningDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!burningDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.BURNING),\n ballBackground: getBallBackground(burningUpdateType),\n },\n {\n title: t('timeline.planting'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n plantingDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!plantingDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.PLANTING),\n ballBackground: getBallBackground(plantingUpdateType),\n },\n {\n title: t('timeline.emergence'),\n component: permissions.isCompanyAdminUser ? (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n emergenceDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ) : (\n \n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n emergenceDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n \n ),\n completedDate: !!emergenceDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.EMERGENCE),\n ballBackground: getBallBackground(emergenceUpdateType),\n },\n {\n title: t('timeline.initialIrrigation'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n firstIrrigationStartDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!firstIrrigationStartDate,\n showMilestone: activeCompanyMilestones.includes(RiceLotStatus.START_IRRIGATION),\n ballBackground: colors.new.secondary[600],\n },\n {\n title: t('timeline.irrigationCompleted'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n firstIrrigationEndDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!firstIrrigationEndDate,\n showMilestone: activeCompanyMilestones.includes(RiceLotStatus.END_IRRIGATION),\n ballBackground: colors.new.secondary[600],\n },\n {\n title: t('timeline.panicleInitiation'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n differentiationDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!differentiationDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.DIFFERENTIATION),\n ballBackground: getBallBackground(differentiationUpdateType),\n },\n {\n title: t('timeline.flowering'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n floweringDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!floweringDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.FLOWERING),\n ballBackground: getBallBackground(floweringUpdateType),\n },\n {\n title: t('timeline.earAppearance'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n earAppearanceDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!earAppearanceDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.EAR_APPEARANCE),\n ballBackground: getBallBackground(earAppearanceUpdateType),\n },\n {\n title: t('timeline.maturation'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n physiologicalMaturityDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!physiologicalMaturityDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.PHYSIOLOGICAL_MATURITY),\n ballBackground: colors.new.secondary[600],\n },\n {\n title: t('timeline.harvest'),\n component: (\n \n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n harvestDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n completedDate: !!harvestDate,\n showMilestone: activeCompanyMilestones?.includes(RiceLotStatus.HARVEST),\n ballBackground: getBallBackground(harvestUpdateType),\n },\n ]\n\n return {\n bodyData: timelineData.filter(item => item.showMilestone),\n }\n}\n","import { Col, Typography, Row, Space } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { ArrowClockIcon } from 'assets/icons'\nimport { cloudImage, clearImage } from 'assets/images'\nimport { WeatherType } from 'types'\n\nconst { Text: AntText } = Typography\n\nconst ColContainer = styled(Col)`\n max-width: 190px;\n height: 37%;\n background: ${({ theme }) => theme.colors.primary};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 24px !important;\n &.ant-col:first-child {\n padding: 24px !important;\n }\n`\n\nconst SubTitle = styled(AntText)`\n font-weight: 400 !important;\n margin-bottom: 0px !important;\n line-height: 24px;\n font-size: 14px !important;\n color: ${({ theme }) => theme.colors.grey1};\n`\nconst BoldSubTitle = styled(SubTitle)`\n font-weight: 600 !important;\n`\n\nconst IconContainer = styled.div`\n width: 36px;\n height: 36px;\n border-radius: 6px;\n display: flex;\n margin-right: 14px;\n align-items: center;\n justify-content: center;\n`\n\nconst Image = styled.img`\n background-position: center;\n width: 35px;\n height: 35px;\n`\n\ninterface Props {\n weatherType?: WeatherType\n lastUpdate?: string\n}\n\nexport const LastUpdateCard: React.FC = ({ weatherType, lastUpdate }) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n\n const weatherMap = {\n CLEAR: {\n url: clearImage,\n title: commonT('vocabulary.weather.clear'),\n text: t('lastUpdateCard.visibleImagery'),\n },\n CIRRUS: {\n url: cloudImage,\n title: commonT('vocabulary.weather.cloudy'),\n text: t('lastUpdateCard.affectedIndices'),\n },\n PARTIALLY_CLOUDED: {\n url: cloudImage,\n title: commonT('vocabulary.weather.cloudy'),\n text: t('lastUpdateCard.unavailableZones'),\n },\n PARTIALLY_CLOUDED_WITH_CIRRUS: {\n url: cloudImage,\n title: commonT('vocabulary.weather.cloudy'),\n text: t('lastUpdateCard.unavailableZonesAndAffectedIndices'),\n },\n CLOUDY: {\n url: cloudImage,\n title: commonT('vocabulary.weather.cloudy'),\n text: t('lastUpdateCard.unavailableZonesAndAffectedIndices'),\n },\n }\n\n return (\n \n \n {t('lastUpdateCard.title')}\n \n \n \n \n \n {lastUpdate ? t('lastUpdateCard.date', { date: new Date(lastUpdate) }) : '-'}\n \n \n \n {weatherType && (\n \n \n \n \n \n {weatherMap[weatherType].title}\n \n \n )}\n \n {weatherType && {weatherMap[weatherType].text}}\n \n \n )\n}\n","export enum DeleteType {\n PHYTOSANITARY = 'PHYTOSANITARY',\n FERTILIZER = 'FERTILIZER',\n}\n\nexport interface DeleteAplicationData {\n showModal: boolean\n id?: number\n type?: DeleteType\n}\n","import { gql } from '@apollo/client'\n\nexport type {\n UpdateRicePhytosanitaryVariables,\n UpdateRicePhytosanitary,\n} from './types/UpdateRicePhytosanitary'\n\nexport const UPDATE_RICE_PHITOSANITARY = gql`\n mutation UpdateRicePhytosanitary(\n $id: Int!\n $updatePhytosanitaryDTO: UpdateRiceAppliedPhytosanitaryInput!\n ) {\n updateRicePhytosanitary(id: $id, updatePhytosanitaryDTO: $updatePhytosanitaryDTO) {\n code\n phytosanitary {\n id\n brand\n date\n name\n quantity\n unit {\n id\n name\n locales {\n es\n en\n }\n }\n activeIngredients {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n }\n`\n","import {\n Table as AntTable,\n Space as AntSpace,\n Input,\n Select,\n DatePicker as BaseDatePicker,\n} from 'antd'\nimport { ColumnsType } from 'antd/lib/table'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\nimport dayjs from 'dayjs'\n\nimport { TrashIcon } from 'assets/icons'\nimport { LocaleLanguage } from 'types'\nimport { DATE_FORMATS, LANGUAGE } from 'consts'\nimport { DateUtils } from 'utils'\n\nimport { DeleteAplicationData, DeleteType } from '../../../types'\nimport { useUpdateRicePhytosanitary } from './hooks'\nimport { AppliedPhytosanitaries, RiceActiveIngredient, RiceUnit } from '../../../../api'\n\nconst Space = styled(AntSpace)`\n width: 100%;\n`\nconst DatePicker = styled(BaseDatePicker)`\n padding: 6px;\n`\n\nconst StyledSelect = styled(Select)`\n width: 74px;\n`\nconst IngredientsSelect = styled(Select)`\n width: 140px;\n`\n\nconst StyledInput = styled(Input)`\n width: 50px;\n padding-left: 9px !important;\n padding-right: 9px !important;\n`\n\nconst TrashButton = styled.div`\n width: 38px;\n height: 38px;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.grey3};\n`\n\nconst Table = styled(AntTable)`\n & .ant-table-cell {\n padding: 5px !important;\n }\n\n & .ant-table-tbody > tr > td {\n border-bottom: unset;\n }\n\n & th {\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.grey3} !important`};\n background: ${({ theme }) => theme.colors.transparent} !important;\n border-radius: 0px !important;\n text-align: center !important;\n font-family: Inter;\n font-size: 14px;\n font-weight: 400;\n }\n & td:nth-child(even) {\n background: ${({ theme }) => theme.colors.grey2} !important;\n }\n .ant-table-tbody {\n & tr:last-child {\n & td:nth-child(even) {\n border-bottom-left-radius: ${({ theme }) => theme.foundation.borderRadius};\n border-bottom-right-radius: ${({ theme }) => theme.foundation.borderRadius};\n }\n }\n }\n & .ant-table-cell-scrollbar {\n display: none;\n }\n` as unknown as typeof AntTable\n\ninterface Props {\n appliedPhytosanitaries: AppliedPhytosanitaries[]\n riceUnits: RiceUnit[]\n riceIngredients: RiceActiveIngredient[]\n onDelete: (data: DeleteAplicationData) => void\n}\n\nexport const PhytosanitaryTable: React.FC = ({\n appliedPhytosanitaries,\n riceIngredients,\n riceUnits,\n onDelete,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n const { colors } = useTheme()\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n\n const { updateRicePhytosanitary } = useUpdateRicePhytosanitary()\n\n const columns: ColumnsType = [\n {\n title: t('phytosanitariesTable.dateColumn'),\n render: ({ date, id }) => (\n \n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: {\n date: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n width: '100px',\n },\n {\n title: t('phytosanitariesTable.productColumn'),\n width: '93px',\n render: ({ name, id }) => (\n ) => {\n const newName = event.currentTarget.value\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { name: newName },\n },\n })\n }}\n />\n ),\n },\n {\n title: t('phytosanitariesTable.brandColumn'),\n width: '93px',\n render: ({ brand, id }) => (\n ) => {\n const newBrand = event.currentTarget.value\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { brand: newBrand },\n },\n })\n }}\n />\n ),\n },\n {\n title: t('phytosanitariesTable.doseColumn'),\n width: '125px',\n render: ({ unit, quantity, id }) => (\n \n ) => {\n const newQuantity = Number(event.currentTarget.value)\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { quantity: newQuantity },\n },\n })\n }}\n />\n ({\n label: riceUnit.locales[language],\n value: riceUnit.id,\n }))}\n onChange={value =>\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { unitId: Number(value) },\n },\n })\n }\n />\n \n ),\n },\n {\n title: t('phytosanitariesTable.activeIngredient', { count: 2 }),\n width: '320px',\n render: ({ activeIngredients, id }: AppliedPhytosanitaries) => {\n return (\n \n ({\n label: riceIngredient.locales[language],\n value: riceIngredient.id,\n }))}\n defaultValue={activeIngredients?.[0] ? activeIngredients[0].id : undefined}\n onChange={value => {\n const newActiveIngredients =\n activeIngredients?.map(activeIngredient => activeIngredient.id) ?? []\n newActiveIngredients[0] = Number(value)\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { activeIngredients: newActiveIngredients },\n },\n })\n }}\n />\n {t('phytosanitariesTable.andSeparator')}\n ({\n label: riceIngredient.locales[language],\n value: riceIngredient.id,\n }))}\n defaultValue={activeIngredients?.[1] ? activeIngredients[1].id : undefined}\n onChange={value => {\n const newActiveIngredients =\n activeIngredients?.map(activeIngredient => activeIngredient.id) ?? []\n if (newActiveIngredients.length >= 1) newActiveIngredients[1] = Number(value)\n else newActiveIngredients[0] = Number(value)\n updateRicePhytosanitary({\n variables: {\n id,\n updatePhytosanitaryDTO: { activeIngredients: newActiveIngredients },\n },\n })\n }}\n />\n onDelete({ showModal: true, id, type: DeleteType.PHYTOSANITARY })}\n >\n \n \n \n )\n },\n },\n ]\n\n return (\n id}\n scroll={{ y: 200 }}\n />\n )\n}\n","import { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n UpdateRicePhytosanitaryVariables,\n UpdateRicePhytosanitary,\n UPDATE_RICE_PHITOSANITARY,\n} from '../api'\n\nexport const useUpdateRicePhytosanitary = () => {\n const [updateRicePhytosanitary, { loading }] = useMutation<\n UpdateRicePhytosanitary,\n UpdateRicePhytosanitaryVariables\n >(UPDATE_RICE_PHITOSANITARY, {\n onError: GraphQLUtils.errorHandler,\n })\n\n return { updateRicePhytosanitary, loading }\n}\n","import { gql } from '@apollo/client'\n\nexport type {\n UpdateRiceFertilizerVariables,\n UpdateRiceFertilizer,\n} from './types/UpdateRiceFertilizer'\n\nexport const UPDATE_RICE_FERTILIZER = gql`\n mutation UpdateRiceFertilizer(\n $id: Int!\n $updateFertilizerDTO: UpdateRiceAppliedFertilizerInput!\n ) {\n updateRiceFertilizer(id: $id, updateFertilizerDTO: $updateFertilizerDTO) {\n code\n fertilizer {\n id\n name\n brand\n date\n quantity\n unit {\n id\n name\n locales {\n es\n en\n }\n }\n grades {\n grade\n nutrient {\n id\n name\n symbol\n }\n }\n }\n }\n }\n`\n","import {\n Table as AntTable,\n Space as AntSpace,\n Input,\n Select as AntSelect,\n Row,\n Col,\n DatePicker as BaseDatePicker,\n} from 'antd'\nimport { ColumnsType } from 'antd/lib/table'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport i18next from 'i18next'\nimport dayjs from 'dayjs'\n\nimport { TrashIcon } from 'assets/icons'\nimport { LocaleLanguage } from 'types'\nimport { DATE_FORMATS, LANGUAGE } from 'consts'\nimport { DateUtils } from 'utils'\n\nimport { useUpdateRiceFertilizer } from './hooks'\nimport { DeleteAplicationData, DeleteType } from '../../../types'\nimport { AppliedFertilizer, FertilizerGrades, RiceNutrient, RiceUnit } from '../../../../api'\n\nconst Space = styled(AntSpace)`\n width: 100%;\n`\nconst Select = styled(AntSelect)`\n width: 74px;\n` as typeof AntSelect\nconst TrashButton = styled.div`\n width: 38px;\n height: 38px;\n display: flex;\n justify-content: center;\n align-items: center;\n border-radius: 50%;\n cursor: pointer;\n background-color: ${({ theme }) => theme.colors.grey3};\n`\n\nconst DatePicker = styled(BaseDatePicker)`\n padding: 6px;\n`\n\nconst StyledInput = styled(Input)`\n width: 40px;\n padding-left: 9px !important;\n padding-right: 9px !important;\n`\n\nconst DoseInput = styled(StyledInput)`\n width: 50px;\n`\n\nconst Table = styled(AntTable)`\n & .ant-table-cell {\n padding: 5px !important;\n }\n\n & .ant-table-tbody > tr > td {\n border-bottom: unset;\n }\n\n & th {\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.grey3} !important`};\n background: ${({ theme }) => theme.colors.transparent} !important;\n border-radius: 0px !important;\n text-align: center !important;\n font-family: Inter;\n font-size: 14px;\n font-weight: 400;\n }\n & td:nth-child(even) {\n background: ${({ theme }) => theme.colors.grey2} !important;\n }\n .ant-table-tbody {\n & tr:last-child {\n & td:nth-child(even) {\n border-bottom-left-radius: ${({ theme }) => theme.foundation.borderRadius};\n border-bottom-right-radius: ${({ theme }) => theme.foundation.borderRadius};\n }\n }\n }\n & .ant-table-cell-scrollbar {\n display: none;\n }\n` as unknown as typeof AntTable\n\ninterface Props {\n appliedFertilizers: AppliedFertilizer[]\n onDelete: (data: DeleteAplicationData) => void\n riceUnits: RiceUnit[]\n riceNutrients: RiceNutrient[]\n}\n\nconst enum NutrientsSymbols {\n NITROGEN = 'N',\n PHOSPHORUS = 'P',\n POTASSIUM = 'K',\n}\n\nconst symbolsOfNutrientsToFilter = [\n NutrientsSymbols.NITROGEN,\n NutrientsSymbols.PHOSPHORUS,\n NutrientsSymbols.POTASSIUM,\n]\n\nexport const FertilizerTable: React.FC = ({\n appliedFertilizers,\n onDelete,\n riceUnits,\n riceNutrients,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n const { colors } = useTheme()\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n\n const { updateRiceFertilizer } = useUpdateRiceFertilizer()\n\n const { Option } = Select\n\n // we need to filter nitrogen, phosphorus and potassium because these have their own input\n const filteredRiceNutrients = riceNutrients.filter(\n riceNutrient => !symbolsOfNutrientsToFilter.some(symbol => symbol === riceNutrient.symbol),\n )\n type DataObject = {\n [key: string]: { grade?: number; symbol: string; nutrientId: number }\n }\n\n const findNutrientIdBySymbol = (symbol: NutrientsSymbols | string) =>\n riceNutrients.find(nutrient => nutrient.symbol === symbol)?.id\n\n const handleNutrientChange = (\n id: number,\n newNutrientValue: number,\n symbol: NutrientsSymbols | string,\n index: number,\n grades: FertilizerGrades[],\n ) => {\n if (index >= 0) {\n const newGrades = [...grades]\n // eslint-disable-next-line no-param-reassign\n newGrades[index] = { ...newGrades[index], grade: newNutrientValue }\n\n const fertilizerGrades = newGrades.map(grade => ({\n grade: grade.grade,\n nutrientId: grade.nutrient?.id,\n }))\n\n updateRiceFertilizer({\n variables: { id, updateFertilizerDTO: { fertilizerGrades } },\n })\n } else {\n const newGrade = {\n nutrientId: findNutrientIdBySymbol(symbol) ?? null,\n grade: newNutrientValue,\n }\n const fertilizerGrades = grades.map(grade => ({\n grade: grade.grade,\n nutrientId: grade.nutrient?.id,\n }))\n\n updateRiceFertilizer({\n variables: {\n id,\n updateFertilizerDTO: { fertilizerGrades: [...fertilizerGrades, newGrade] },\n },\n })\n }\n }\n\n const getNutrientSymbolValue = (grades: FertilizerGrades[]) =>\n grades.reduce((accumulator: DataObject, { grade, nutrient }) => {\n if (!nutrient) return {}\n const key = symbolsOfNutrientsToFilter.some(symbolKey => nutrient?.symbol === symbolKey)\n ? nutrient?.symbol\n : 'other'\n // eslint-disable-next-line no-param-reassign\n accumulator[key] = {\n grade: grade ?? undefined,\n symbol: nutrient.symbol,\n nutrientId: nutrient.id,\n }\n return accumulator\n }, {})\n\n const columns: ColumnsType = [\n {\n title: t('fertilizersTable.dateColumn'),\n render: ({ date, id }) => (\n \n updateRiceFertilizer({\n variables: {\n id,\n updateFertilizerDTO: { date: DateUtils.formatValue(value ? value.toDate() : null) },\n },\n })\n }\n />\n ),\n width: '100px',\n },\n {\n title: t('fertilizersTable.productColumn'),\n width: '93px',\n render: ({ name, id }: AppliedFertilizer) => (\n ) => {\n const newName = event.currentTarget.value\n updateRiceFertilizer({ variables: { id, updateFertilizerDTO: { name: newName } } })\n }}\n />\n ),\n },\n {\n title: t('fertilizersTable.brandColumn'),\n width: '93px',\n render: ({ brand, id }: AppliedFertilizer) => (\n ) => {\n const newBrand = event.currentTarget.value\n updateRiceFertilizer({ variables: { id, updateFertilizerDTO: { brand: newBrand } } })\n }}\n />\n ),\n },\n {\n title: t('fertilizersTable.doseColumn'),\n width: '125px',\n render: ({ unit, quantity, id }: AppliedFertilizer) => (\n \n ) => {\n const newQuantity = Number(event.currentTarget.value)\n updateRiceFertilizer({\n variables: { id, updateFertilizerDTO: { quantity: newQuantity } },\n })\n }}\n />\n ({\n label: riceUnit.locales[language],\n value: riceUnit.id,\n }))}\n dropdownStyle={{\n minWidth: '80px',\n }}\n placeholder={commonT('systems.doseSurfaceDensity')}\n onChange={value =>\n updateRiceFertilizer({\n variables: {\n id,\n updateFertilizerDTO: { unitId: Number(value) },\n },\n })\n }\n />\n \n ),\n },\n {\n title: t('fertilizersTable.gradeColumn'),\n width: '320px',\n render: ({ grades, id }: AppliedFertilizer) => {\n const nutrientsValues = getNutrientSymbolValue(grades ?? [])\n return (\n \n \n \n {NutrientsSymbols.NITROGEN}\n ) => {\n const newNitrogenValue = Number(event.currentTarget.value)\n const index = grades?.findIndex(\n grade => grade.nutrient?.symbol === NutrientsSymbols.NITROGEN,\n )\n if (index === undefined || !grades) return\n\n handleNutrientChange(\n id,\n newNitrogenValue,\n NutrientsSymbols.NITROGEN,\n index,\n grades,\n )\n }}\n />\n \n \n \n \n {NutrientsSymbols.PHOSPHORUS}\n ) => {\n const newPhosphorusValue = Number(event.currentTarget.value)\n const index = grades?.findIndex(\n grade => grade.nutrient?.symbol === NutrientsSymbols.PHOSPHORUS,\n )\n if (index === undefined || !grades) return\n\n handleNutrientChange(\n id,\n newPhosphorusValue,\n NutrientsSymbols.PHOSPHORUS,\n index,\n grades,\n )\n }}\n />\n \n \n\n \n \n {NutrientsSymbols.POTASSIUM}\n ) => {\n const newPotassiumValue = Number(event.currentTarget.value)\n\n const index = grades?.findIndex(\n grade => grade.nutrient?.symbol === NutrientsSymbols.POTASSIUM,\n )\n\n if (index === undefined || !grades) return\n\n handleNutrientChange(\n id,\n newPotassiumValue,\n NutrientsSymbols.POTASSIUM,\n index,\n grades,\n )\n }}\n />\n \n \n \n \n {\n const filteredNutrients = grades?.filter(riceNutrient =>\n symbolsOfNutrientsToFilter.some(\n symbol => symbol === riceNutrient.nutrient?.symbol,\n ),\n )\n updateRiceFertilizer({\n variables: {\n id,\n updateFertilizerDTO: {\n fertilizerGrades: [\n ...(filteredNutrients\n ? filteredNutrients.map(filteredNutrient => ({\n grade: filteredNutrient.grade,\n nutrientId: filteredNutrient.nutrient?.id,\n }))\n : []),\n {\n nutrientId: Number(value),\n grade: nutrientsValues.other ? nutrientsValues.other.grade : 0,\n },\n ],\n },\n },\n })\n }}\n >\n {filteredRiceNutrients?.map(riceNutrient => {\n return (\n \n
\n {riceNutrient.locales[language]}\n
\n \n )\n })}\n \n\n ) => {\n const newNutrientValue = Number(event.currentTarget.value)\n if (!nutrientsValues.other) return\n const index = grades?.findIndex(\n grade => grade.nutrient?.symbol === nutrientsValues.other.symbol,\n )\n if (index === undefined || !grades) return\n\n handleNutrientChange(\n id,\n newNutrientValue,\n nutrientsValues.other.symbol,\n index,\n grades,\n )\n }}\n />\n
\n \n \n onDelete({ showModal: true, id, type: DeleteType.FERTILIZER })}\n >\n \n \n \n
\n )\n },\n },\n ]\n\n return (\n id}\n scroll={{ y: 200 }}\n />\n )\n}\n","import { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { UpdateRiceFertilizerVariables, UpdateRiceFertilizer, UPDATE_RICE_FERTILIZER } from '../api'\n\nexport const useUpdateRiceFertilizer = () => {\n const [updateRiceFertilizer, { loading }] = useMutation<\n UpdateRiceFertilizer,\n UpdateRiceFertilizerVariables\n >(UPDATE_RICE_FERTILIZER, {\n onError: GraphQLUtils.errorHandler,\n })\n\n return { updateRiceFertilizer, loading }\n}\n","import { useState } from 'react'\nimport { Input } from 'antd'\nimport styled from 'styled-components'\nimport useDebounce from 'react-use/lib/useDebounce'\nimport { useTranslation } from 'react-i18next'\n\nimport { UpdateRiceLotVariables } from 'hooks/useUpdateRiceLot/api'\n\nconst { TextArea: AntTextArea } = Input\n\ninterface TextAreaProps {\n height?: string\n}\n\nconst TextArea = styled(AntTextArea)`\n height: ${({ height }) => height} !important;\n`\ninterface Props {\n comment?: string\n updateRiceLotMutation: (updateRiceLotDTO: { variables: UpdateRiceLotVariables }) => void\n riceLotId?: number\n height?: string\n}\n\nexport const Comment: React.FC = ({\n comment,\n updateRiceLotMutation,\n riceLotId,\n height = '130px',\n}) => {\n const { t } = useTranslation('lot-dashboard')\n const [newComment, setNewComment] = useState()\n\n useDebounce(\n () => {\n if (!newComment || !riceLotId) return\n updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: { comment: newComment },\n },\n })\n },\n 1000,\n [newComment],\n )\n return (\n ) => {\n const commentValue = event.currentTarget.value\n setNewComment(commentValue)\n }}\n />\n )\n}\n","import { memo, useState } from 'react'\nimport { PieChart, Pie, Sector, ResponsiveContainer, Cell } from 'recharts'\nimport { useTheme } from 'styled-components'\n\nconst RenderActiveShape = (props: {\n cx: number\n cy: number\n innerRadius: number\n outerRadius: number\n startAngle: number\n endAngle: number\n payload: { name: string; color: string }\n percent: number\n}) => {\n const { cx, cy, innerRadius, outerRadius, startAngle, endAngle, payload, percent } = props\n const { colors } = useTheme()\n\n return (\n \n \n {`${(percent * 100).toFixed()}%`}\n \n \n \n \n )\n}\n\ninterface Props {\n data: { name: string; value?: number; color: string }[]\n}\n\nexport const Chart: React.FC = memo(({ data }) => {\n const [activeIndex, setActiveIndex] = useState(0)\n const { colors } = useTheme()\n const onPieEnter = (_: unknown, index: number) => {\n setActiveIndex(index)\n }\n\n return (\n \n \n }\n data={data}\n innerRadius={35}\n outerRadius={45}\n fill={colors.olive4}\n dataKey=\"value\"\n onMouseEnter={onPieEnter}\n >\n {data.map(entry => (\n \n ))}\n \n \n \n )\n})\n","import { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\n\nexport const StyledSpan = styled.span`\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0em;\n color: ${({ theme }) => theme.colors.olive};\n`\n\ninterface Props {\n emergenceDaysActivation?: number\n}\n\nexport const NotAvailableText: React.FC = ({ emergenceDaysActivation }) => {\n const { t } = useTranslation('lot-dashboard')\n return (\n <>\n {!emergenceDaysActivation ? (\n {t('grainHumidityCard.availableNextImage')}\n ) : (\n \n {t('grainHumidityCard.availableSince', { days: emergenceDaysActivation })}\n \n )}\n \n )\n}\n","import styled from 'styled-components'\nimport { Col, Space } from 'antd'\n\nexport { Chart } from './Chart'\nexport { NotAvailableText } from './NotAvailableText'\n\ninterface BallProps {\n color: string\n}\n\nexport const Ball = styled.div`\n width: 20px;\n height: 20px;\n border-radius: 50%;\n background-color: ${({ color }) => color};\n`\n\nexport const StyledSpace = styled(Space)`\n & .ant-space-item {\n height: 20px;\n }\n & span {\n font-size: 13px;\n font-style: normal;\n font-weight: 400;\n line-height: 18px;\n letter-spacing: 0em;\n color: ${({ theme }) => theme.colors.olive};\n }\n`\n\nexport const CenterCol = styled(Col)`\n display: flex;\n align-items: center;\n`\n\nexport const ChartContainer = styled(Col)`\n height: 125px;\n width: 125px;\n`\n","import { Row } from 'antd'\nimport { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { useMemo } from 'react'\n\nimport { GrainHumidityIcon } from 'assets/icons'\n\nimport { Chart, ChartContainer, CenterCol, StyledSpace, Ball, NotAvailableText } from './components'\nimport { GrainHumidity as GrainHumidityType } from '../../../../api'\n\ninterface Props {\n data?: GrainHumidityType | null\n hasAbsoluteHumidity: boolean\n isHarvested: boolean\n}\n\nexport const GrainHumidity: React.FC = ({ data, hasAbsoluteHumidity, isHarvested }) => {\n const { t } = useTranslation('lot-dashboard')\n const { colors } = useTheme()\n\n const grainHumidityStatus = useMemo(() => {\n const levels = data?.levels\n const low = levels?.one\n\n const mediumLow = {\n lowEdge: levels?.two?.lowEdge,\n highEdge: levels?.three?.highEdge,\n percentage: (levels?.two?.percentage ?? 0) + (levels?.three?.percentage ?? 0),\n }\n\n const mediumHigh = {\n lowEdge: levels?.four?.lowEdge,\n highEdge: levels?.six?.highEdge,\n percentage:\n (levels?.four?.percentage ?? 0) +\n (levels?.five?.percentage ?? 0) +\n (levels?.six?.percentage ?? 0),\n }\n\n const high = levels?.seven\n\n return { low, mediumLow, mediumHigh, high }\n }, [data?.levels])\n\n const varietyData = [\n {\n color: colors.grainHumedityBrown,\n value: hasAbsoluteHumidity\n ? `<${grainHumidityStatus.low?.highEdge}%`\n : t('grainHumidityCard.status.dry'),\n },\n {\n color: colors.grainHumedityLightBrown,\n value: hasAbsoluteHumidity\n ? `${grainHumidityStatus.mediumLow?.lowEdge} ${t('grainHumidityCard.to')} ${\n grainHumidityStatus.mediumLow?.highEdge\n }%`\n : t('grainHumidityCard.status.midDry'),\n },\n {\n color: colors.grainHumedityYellow,\n value: hasAbsoluteHumidity\n ? `${grainHumidityStatus.mediumHigh?.lowEdge} ${t('grainHumidityCard.to')} ${\n grainHumidityStatus.mediumHigh?.highEdge\n }%`\n : t('grainHumidityCard.status.mid'),\n },\n {\n color: colors.grainHumedityLightGreen,\n value: hasAbsoluteHumidity\n ? `> ${grainHumidityStatus.high?.lowEdge}%`\n : t('grainHumidityCard.status.humid'),\n },\n ]\n\n const chartData = [\n { name: 'low', value: grainHumidityStatus.low?.percentage, color: colors.grainHumedityBrown },\n {\n name: 'mediumLow',\n value: grainHumidityStatus.mediumLow.percentage,\n color: colors.grainHumedityLightBrown,\n },\n {\n name: 'mediumHigh',\n value: grainHumidityStatus.mediumHigh.percentage,\n color: colors.grainHumedityYellow,\n },\n {\n name: 'high',\n value: grainHumidityStatus.high?.percentage,\n color: colors.grainHumedityLightGreen,\n },\n ]\n\n return (\n \n \n {data?.isAvailable ? : }\n \n {!isHarvested && (\n \n {data?.isAvailable ? (\n \n {varietyData.map(variety => {\n return (\n \n \n {variety.value}\n \n )\n })}\n \n ) : (\n \n )}\n \n )}\n \n )\n}\n","import { Typography, Input as AntInput } from 'antd'\nimport styled from 'styled-components'\n\nconst { Text: AntText } = Typography\n\nexport const Border = styled.div`\n display: flex;\n align-items: center;\n border-radius: 6px;\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n padding: 6px;\n min-width: 120px;\n`\nexport const Input = styled(AntInput)`\n height: 40px;\n width: 70px;\n margin-right: 8px;\n`\n\nexport const ContainerNumber = styled.div`\n background: ${({ theme }) => theme.colors.trafficLightNeutral};\n padding: 8px 13px;\n border-radius: 2px;\n margin-right: 8px;\n height: 40px;\n min-width: 50px;\n display: flex;\n align-items: center;\n justify-content: center;\n`\n\nexport const UnitNumber = styled(AntText)`\n font-size: 16px;\n font-style: normal;\n font-weight: 600;\n line-height: 18px;\n color: ${({ theme }) => theme.colors.olive5};\n`\nexport const UnitText = styled(AntText)`\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 18px;\n letter-spacing: 0em;\n\n color: ${({ theme }) => theme.colors.olive};\n`\n\nexport const Title = styled(AntText)`\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 26px;\n letter-spacing: 0em;\n text-align: right;\n color: ${({ theme }) => theme.colors.olive5};\n`\n","import { Row, Space, Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { Title, Border, ContainerNumber, UnitNumber, UnitText, Input } from './components'\n\ninterface Props {\n title: string\n valueInTn: string\n valueInKgPerHa?: string\n editMode?: boolean\n defaultValue?: number\n onValueChange?: (value: number) => void\n}\n\nexport const YieldValues: React.FC = ({\n title,\n valueInTn,\n valueInKgPerHa,\n editMode,\n defaultValue,\n onValueChange,\n}) => {\n const { t: commonT } = useTranslation('common')\n\n return (\n \n \n {title}\n \n \n \n {editMode ? (\n \n ) => {\n const newValue = event.currentTarget.value\n onValueChange?.(Number(newValue))\n }}\n />\n {commonT('systems.surfaceDensity')}\n \n ) : (\n \n \n {valueInKgPerHa}\n \n {commonT('systems.surfaceDensity')}\n \n )}\n\n \n \n {valueInTn}\n \n {commonT('systems.tonnesAbbreviation')}\n \n \n \n \n )\n}\n","import { Typography, Col, Row } from 'antd'\nimport styled from 'styled-components'\n\nexport { YieldValues } from './YieldValues'\n\nconst { Text: AntText } = Typography\n\nexport const RightAlignCol = styled(Col)`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n`\n\nexport const Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive};\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 24px;\n letter-spacing: 0em;\n`\n\nexport const TextContainer = styled(Row)`\n margin-top: 10px;\n`\n","import { Col, Row, notification } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { UpdateRiceLotVariables } from 'hooks/useUpdateRiceLot/api'\n\nimport { Text, TextContainer, YieldValues } from './components'\n\ninterface Values {\n inTn?: number\n kgPerHa?: number\n}\n\ninterface Props {\n riceLotId?: number\n updateRiceLotMutation: (updateRiceLotDTO: { variables: UpdateRiceLotVariables }) => void\n isFeatureSetGrupoDiana: boolean\n isAnOrganizationUser: boolean\n estimatedBySubregion: Values\n estimatedByLot: Values\n real: Values\n size: number\n}\n\nexport const Body: React.FC = ({\n riceLotId,\n updateRiceLotMutation,\n isFeatureSetGrupoDiana,\n isAnOrganizationUser,\n estimatedBySubregion,\n estimatedByLot,\n real,\n size,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n\n return (\n <>\n \n {isAnOrganizationUser && (\n \n \n \n )}\n \n {\n if (!riceLotId)\n return notification.error({\n message: commonT('messages.genericErrorTryAgain'),\n })\n\n return updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: { estimatedYield: Number(value) * size },\n },\n })\n }}\n />\n \n \n {\n if (!riceLotId)\n return notification.error({\n message: commonT('messages.genericErrorTryAgain'),\n })\n return updateRiceLotMutation({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: { yield: Number(value) * size },\n },\n })\n }}\n />\n \n \n {!isFeatureSetGrupoDiana && (\n \n \n {t('yieldCard.important')}\n {t('yieldCard.completeYieldDescription')}\n \n \n )}\n \n )\n}\n","import { UpdateRiceLotVariables } from 'hooks/useUpdateRiceLot/api'\nimport { usePermissions } from 'hooks'\n\nimport { Body } from './components'\nimport { EstimatedYield } from '../../../../api'\n\ninterface Props {\n estimatedYield?: EstimatedYield\n size: number\n yieldValue?: number\n varietyName?: string\n emergenceDate?: string\n updateRiceLotMutation: (updateRiceLotDTO: { variables: UpdateRiceLotVariables }) => void\n riceLotId?: number\n}\n\nexport const Yield: React.FC = ({\n estimatedYield,\n size,\n yieldValue,\n riceLotId,\n updateRiceLotMutation,\n}) => {\n const { permissions } = usePermissions()\n\n return (\n \n )\n}\n","import { Col, Row, Typography } from 'antd'\nimport styled from 'styled-components'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { ProductionType } from 'types'\nimport { AbandonedSizeInput, ProductionTypeSelect } from 'components'\nimport { UpdateLotByIdVariables } from 'hooks/useUpdateLot'\n\nconst { Title: AntTitle } = Typography\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive5};\n font-weight: 600;\n line-height: 26px;\n margin-bottom: 8px !important;\n`\n\ninterface Props {\n productionType: ProductionType\n lotId?: number\n abandonedSize?: number\n onAbandonedSizeChange: ({ variables }: { variables: UpdateLotByIdVariables }) => void\n}\n\nexport const ProductionTypeAndAbandonedSizeCard: React.FC = ({\n productionType,\n onAbandonedSizeChange,\n lotId,\n abandonedSize,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n return (\n \n \n {t('productionTypeCard.title')} \n \n \n \n {t('productionTypeCard.abandoned')} \n \n \n \n )\n}\n","import { Space, Col, Row } from 'antd'\nimport styled from 'styled-components'\n\nexport { EmergenceDateCard } from './EmergenceDateCard'\nexport { IrrigationMonitorCard } from './IrrigationMonitorCard'\nexport { TrafficLight } from './TrafficLight'\nexport { Timeline } from './Timeline'\nexport { LastUpdateCard } from './LastUpdateCard'\nexport { PhytosanitaryTable } from './PhytosanitaryTable'\nexport { FertilizerTable } from './FertilizerTable'\nexport { Comment } from './Comment'\nexport { GrainHumidity } from './GrainHumidity'\nexport { Yield } from './Yield'\nexport { ProductionTypeAndAbandonedSizeCard } from './ProductionTypeAndAbandonedSizeCard'\n\nexport const ContainerCol = styled(Col)`\n height: 100%;\n`\n\nexport const StyledCol = styled(Col)`\n overflow: hidden;\n`\n\nexport const TablesSpace = styled(Space).attrs({\n direction: 'vertical',\n size: 24,\n})`\n height: 100%;\n > .ant-space-item {\n flex: 1;\n }\n`\nexport const RowContainer = styled(Row)`\n height: 100%;\n`\n\nexport const YieldCardContainer = styled(Col)`\n height: 100%;\n margin-top: 24px;\n`\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n LotDashboard,\n LotDashboardVariables,\n LotDashboard_lot_riceLot_appliedFertilizers as AppliedFertilizer,\n LotDashboard_lot_riceLot_appliedFertilizers_grades as FertilizerGrades,\n LotDashboard_lot_riceLot_appliedPhytosanitaries as AppliedPhytosanitaries,\n LotDashboard_lot_riceLot_indicators_grainHumidity as GrainHumidity,\n LotDashboard_lot_riceLot_estimatedYield as EstimatedYield,\n LotDashboard_lot_riceLot_historicalIrrigation as HistoricalIrrigation,\n} from './types/LotDashboard'\n\nexport type {\n CreateRiceFertilizerVariables,\n CreateRiceFertilizer,\n} from './types/CreateRiceFertilizer'\nexport type {\n DeleteRiceFertilizerVariables,\n DeleteRiceFertilizer,\n} from './types/DeleteRiceFertilizer'\n\nexport type {\n RiceUnitsNutrientsAndIngredients,\n RiceUnitsNutrientsAndIngredients_riceUnits_results as RiceUnit,\n RiceUnitsNutrientsAndIngredients_riceNutrients_results as RiceNutrient,\n RiceUnitsNutrientsAndIngredients_riceActiveIngredients_results as RiceActiveIngredient,\n RiceUnitsNutrientsAndIngredientsVariables,\n} from './types/RiceUnitsNutrientsAndIngredients'\n\nexport type {\n CreateRicePhytosanitaryVariables,\n CreateRicePhytosanitary,\n} from './types/CreateRicePhytosanitary'\n\nexport type {\n DeleteRicePhytosanitaryVariables,\n DeleteRicePhytosanitary,\n} from './types/DeleteRicePhytosanitary'\n\nexport const LOT_DASHBOARD = gql`\n query LotDashboard($id: Int!, $isSatelliteImageryFlagOn: Boolean!) {\n lot(id: $id) {\n id\n name\n size\n commercialName\n area {\n coordinates\n type\n }\n previousCrop {\n id\n }\n variety {\n id\n name\n isGrainHumidityAbsolute\n locales {\n es\n en\n }\n }\n crop {\n id\n locales {\n es\n en\n }\n }\n productionType\n abandonedSize\n riceLot {\n targetYieldCurve @include(if: $isSatelliteImageryFlagOn) {\n id\n name\n values {\n daysSinceEmergence\n chlorophyll\n }\n }\n historicalIrrigation @include(if: $isSatelliteImageryFlagOn) {\n values {\n date\n percentage\n daysSinceEmergence\n }\n }\n realYieldCurve @include(if: $isSatelliteImageryFlagOn) {\n values {\n daysSinceEmergence\n chlorophyll\n }\n }\n id\n emergenceDate\n emergenceUpdateType\n plantingDate\n plantingUpdateType\n firstIrrigationStartDate\n firstIrrigationEndDate\n floweringDate\n floweringUpdateType\n harvestDate\n harvestUpdateType\n preparationDate\n preparationUpdateType\n burningDate\n burningUpdateType\n earAppearanceDate\n earAppearanceUpdateType\n physiologicalMaturityDate\n differentiationDate\n differentiationUpdateType\n daysSinceEmergence\n isHarvested\n comment\n yield\n indicators @include(if: $isSatelliteImageryFlagOn) {\n semaphore\n sufficientWaterPercentage\n irrigation\n chlorophyll\n weatherType\n lastUpdate\n grainHumidity {\n isAvailable\n lastUpdate\n emergenceDaysActivation\n levels {\n one {\n lowEdge\n highEdge\n percentage\n }\n two {\n lowEdge\n highEdge\n percentage\n }\n three {\n lowEdge\n highEdge\n percentage\n }\n four {\n lowEdge\n highEdge\n percentage\n }\n five {\n lowEdge\n highEdge\n percentage\n }\n six {\n lowEdge\n highEdge\n percentage\n }\n seven {\n lowEdge\n highEdge\n percentage\n }\n }\n }\n }\n appliedFertilizers @include(if: $isSatelliteImageryFlagOn) {\n id\n name\n brand\n date\n quantity\n unit {\n id\n }\n grades {\n grade\n nutrient {\n id\n name\n symbol\n }\n }\n }\n appliedPhytosanitaries @include(if: $isSatelliteImageryFlagOn) {\n id\n name\n brand\n date\n quantity\n unit {\n id\n }\n activeIngredients {\n id\n name\n locales {\n es\n en\n }\n }\n }\n estimatedYield {\n isAvailable\n value\n lotValue\n }\n }\n }\n }\n`\n\nexport const CREATE_RICE_FERTILIZER = gql`\n mutation CreateRiceFertilizer($createFertilizerDTO: CreateRiceAppliedFertilizerInput!) {\n createRiceFertilizer(createFertilizerDTO: $createFertilizerDTO) {\n code\n fertilizer {\n id\n name\n brand\n date\n quantity\n unit {\n id\n name\n locales {\n es\n en\n }\n }\n grades {\n grade\n nutrient {\n id\n name\n symbol\n locales {\n es\n en\n }\n }\n }\n }\n }\n }\n`\n\nexport const DELETE_RICE_FERTILIZER = gql`\n mutation DeleteRiceFertilizer($id: Int!) {\n deleteRiceFertilizer(id: $id) {\n success\n }\n }\n`\n\nexport const RICE_UNITS_NUTRIENTS_AND_INGREDIENTS = gql`\n query RiceUnitsNutrientsAndIngredients($countryId: CountryId!) {\n riceUnits(countryId: $countryId) {\n results {\n id\n locales {\n es\n en\n }\n }\n }\n\n riceNutrients(countryId: $countryId) {\n results {\n id\n name\n symbol\n locales {\n es\n en\n }\n }\n }\n\n riceActiveIngredients(countryId: $countryId) {\n results {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n`\n\nexport const CREATE_RICE_PHYTOSANITARY = gql`\n mutation CreateRicePhytosanitary($createPhytosanitaryDTO: CreateRiceAppliedPhytosanitaryInput!) {\n createRicePhytosanitary(createPhytosanitaryDTO: $createPhytosanitaryDTO) {\n code\n phytosanitary {\n id\n name\n brand\n date\n quantity\n unit {\n id\n name\n locales {\n es\n en\n }\n }\n activeIngredients {\n id\n name\n locales {\n es\n en\n }\n }\n }\n }\n }\n`\nexport const DELETE_RICE_PHYTOSANITARY = gql`\n mutation DeleteRicePhytosanitary($id: Int!) {\n deleteRicePhytosanitary(id: $id) {\n success\n }\n }\n`\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\nimport { Payload } from 'recharts/types/component/DefaultLegendContent'\nimport { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent'\nimport { useTranslation } from 'react-i18next'\n\nconst { Text: AntText } = Typography\n\nconst Container = styled.div`\n background-color: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n display: flex;\n flex-direction: column;\n padding: 10px;\n`\n\nconst SubTitle = styled(AntText)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 24px;\n font-size: 14px !important;\n color: ${({ theme }) => theme.colors.olive};\n`\n\ninterface TooltipProps {\n active?: boolean\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n payload?: Payload[]\n label: string\n}\n\n// we only want to show tooltip for real yield curve values\nconst VALUE_TO_SHOW = 'real'\n\nexport const CustomTooltip: React.FC = ({ active, payload, label }) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n\n if (active && payload && payload.length && payload[0].name === VALUE_TO_SHOW) {\n return (\n \n {`${commonT('vocabulary.daysAfterEmergenceAbbreviation')}: ${label}`}\n \n {t('targetYieldCard.chart.tooltipChlorophyll', { value: payload[0].value })}\n \n \n {t('targetYieldCard.chart.tooltipDate', { date: payload[0].payload.date })}\n \n \n )\n }\n\n return null\n}\n","import { memo } from 'react'\nimport {\n LineChart,\n Line,\n XAxis,\n YAxis,\n CartesianGrid,\n Tooltip,\n Legend,\n ResponsiveContainer,\n} from 'recharts'\nimport { useTheme } from 'styled-components'\nimport dayjs from 'dayjs'\nimport { useTranslation } from 'react-i18next'\n\nimport { CustomTooltip } from './components'\n\ntype Values = {\n daysSinceEmergence: number\n chlorophyll: number\n}\ninterface Props {\n targetYield?: number | null\n yieldName?: string\n targetYieldCurveValues?: Values[]\n emergenceDate?: string\n realYieldCurveValues?: Values[]\n}\n\nexport const Chart: React.FC = memo(\n ({ yieldName, targetYieldCurveValues, realYieldCurveValues, emergenceDate }) => {\n const { colors } = useTheme()\n const { t } = useTranslation('lot-dashboard')\n\n const maxEmergenceDays = Math.max(\n ...(targetYieldCurveValues\n ? targetYieldCurveValues.map(({ daysSinceEmergence }) => daysSinceEmergence)\n : []),\n )\n\n const realYieldCurveDatafiltered = targetYieldCurveValues\n ? realYieldCurveValues?.filter(\n ({ daysSinceEmergence }) => daysSinceEmergence <= maxEmergenceDays,\n )\n : realYieldCurveValues\n\n const realYieldCurveData = realYieldCurveDatafiltered?.map(realYieldCurveValue => {\n return {\n real: Number(realYieldCurveValue.chlorophyll.toFixed(2)),\n daysSinceEmergence: realYieldCurveValue.daysSinceEmergence,\n date:\n emergenceDate && dayjs(emergenceDate).add(realYieldCurveValue.daysSinceEmergence, 'day'),\n }\n })\n\n const data = [...(targetYieldCurveValues ?? []), ...(realYieldCurveData ?? [])].sort(\n (yieldValueA, yieldValueB) => yieldValueA.daysSinceEmergence - yieldValueB.daysSinceEmergence,\n )\n\n return (\n \n \n \n targetYieldCurveValue.daysSinceEmergence,\n )}\n interval=\"preserveStart\"\n />\n\n \n (\n \n )}\n />\n \n \n {!!emergenceDate && (\n \n )}\n \n \n )\n },\n)\n","import { Col, Row, Divider as AntDivider, Typography, Space } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { IndicatorStatus, Indicators } from 'types'\nimport { Indicator } from 'features/MainRouter/components'\n\nimport { Chart } from './components'\nimport { PendingEmergenceDateTooltip } from '../PendingEmergenceDateTooltip'\n\nconst { Title: AntTitle, Text: AntText } = Typography\n\nconst TargetYieldCard = styled(Row)`\n background: ${({ theme }) => theme.colors.grey1};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n padding: 24px;\n flex: 1;\n`\nconst Spacer = styled(Space).attrs({\n direction: 'vertical',\n size: 24,\n})`\n width: 100%;\n`\nconst HeaderContainer = styled(Row)`\n flex: 1;\n`\n\ninterface ContainerProps {\n height?: string\n}\nconst ChartContainer = styled(Row)`\n background: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n width: 100%;\n height: ${({ height = '360px' }) => height};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n padding: 10px 0;\n`\nconst Divider = styled(AntDivider)`\n height: 24px !important;\n border-left: ${({ theme }) => `2px solid ${theme.colors.grey2} !important `};\n margin: 0 12px;\n`\n\nconst Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.olive};\n font-weight: 600 !important;\n margin-bottom: 0 !important;\n`\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.olive} !important;\n font-size: 14px !important;\n font-weight: normal;\n`\n\ntype Values = {\n daysSinceEmergence: number\n chlorophyll: number\n}\ninterface Props extends ContainerProps {\n yieldName?: string\n targetYieldCurveValues?: Values[]\n emergenceDate?: string\n realYieldCurveValues?: Values[]\n chlorophyllIndicator?: IndicatorStatus\n showIndicator?: boolean\n}\n\nexport const TargetYield: React.FC = ({\n emergenceDate,\n realYieldCurveValues,\n yieldName,\n targetYieldCurveValues,\n chlorophyllIndicator,\n showIndicator,\n height,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n\n return (\n \n \n \n \n \n {t('targetYieldCard.title')}\n \n {t('targetYieldCard.description')}\n \n {showIndicator && (\n \n \n \n )}\n \n \n \n \n \n \n \n )\n}\n","import { MutationFunctionOptions, useQuery } from '@apollo/client'\nimport { Col, Row, Space } from 'antd'\nimport i18next from 'i18next'\nimport { useTranslation } from 'react-i18next'\n\nimport { usePermissions, useUpdateLot, useUpdateRiceLot } from 'hooks'\nimport { CountryId, LocaleLanguage, MilestoneUpdateType, ProductionType } from 'types'\nimport { GraphQLUtils } from 'utils'\nimport { GreyCard, GreyCardWithTitle } from 'components'\nimport { LANGUAGE } from 'consts'\n\nimport {\n Comment,\n ContainerCol,\n EmergenceDateCard,\n FertilizerTable,\n GrainHumidity,\n IrrigationMonitorCard,\n LastUpdateCard,\n PhytosanitaryTable,\n ProductionTypeAndAbandonedSizeCard,\n RowContainer,\n StyledCol,\n TablesSpace,\n Timeline,\n TrafficLight,\n Yield,\n YieldCardContainer,\n} from './components'\nimport { MapImage } from '../../../components'\nimport { InformationCard } from '../../../Dashboard/components'\nimport {\n LotDashboard,\n RiceUnitsNutrientsAndIngredients,\n RiceUnitsNutrientsAndIngredientsVariables,\n RICE_UNITS_NUTRIENTS_AND_INGREDIENTS,\n CreateRiceFertilizerVariables,\n CreateRiceFertilizer,\n AppliedFertilizer,\n CreateRicePhytosanitary,\n CreateRicePhytosanitaryVariables,\n AppliedPhytosanitaries,\n} from '../../api'\nimport { DeleteAplicationData } from '../types'\nimport { TargetYield } from '../TargetYield'\n\ninterface Props {\n lotDashboardData?: LotDashboard\n fieldId?: number\n lotId: number\n onCreateRiceFertilizer: (\n options?: MutationFunctionOptions,\n ) => void\n appliedFertilizers: AppliedFertilizer[]\n onHandleDataToDelete: (data: DeleteAplicationData) => void\n onCreateRicePhytosanitary: (\n options?: MutationFunctionOptions,\n ) => void\n appliedPhytosanitaries: AppliedPhytosanitaries[]\n activeCountryId?: CountryId\n}\n\nexport const SummaryTab: React.FC = ({\n lotDashboardData,\n fieldId,\n lotId,\n onCreateRiceFertilizer,\n appliedFertilizers,\n onHandleDataToDelete,\n onCreateRicePhytosanitary,\n appliedPhytosanitaries,\n activeCountryId,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n\n const { permissions } = usePermissions()\n const { updateRiceLot } = useUpdateRiceLot()\n const { updateLot } = useUpdateLot()\n\n const { data: riceUnitsNutrientsAndIngredients } = useQuery<\n RiceUnitsNutrientsAndIngredients,\n RiceUnitsNutrientsAndIngredientsVariables\n >(RICE_UNITS_NUTRIENTS_AND_INGREDIENTS, {\n variables: { countryId: activeCountryId! },\n skip: !activeCountryId,\n })\n\n const emergenceDate =\n lotDashboardData?.lot.riceLot.emergenceUpdateType !== MilestoneUpdateType.AUTOMATIC_CONVERSION\n ? lotDashboardData?.lot.riceLot.emergenceDate\n : undefined\n\n const riceUnits = riceUnitsNutrientsAndIngredients?.riceUnits.results\n const riceNutrients = riceUnitsNutrientsAndIngredients?.riceNutrients.results\n const riceActiveIngredients = riceUnitsNutrientsAndIngredients?.riceActiveIngredients.results\n const grainHumidityLastUpdate =\n lotDashboardData?.lot.riceLot.indicators?.grainHumidity?.lastUpdate\n\n const isHarvested = !!lotDashboardData?.lot.riceLot.isHarvested\n\n const daysSinceEmergence = lotDashboardData?.lot.riceLot.daysSinceEmergence?.toString() ?? '-'\n\n // TODO: Split this component into smaller components\n return (\n \n \n \n \n \n \n {permissions.satelliteImagery && (\n \n \n \n )}\n \n \n \n {permissions.satelliteImagery && (\n \n \n \n )}\n \n \n \n \n {permissions.satelliteImagery && (\n \n \n \n )}\n \n \n {permissions.satelliteImagery && (\n \n \n \n \n \n \n )}\n \n \n \n \n \n \n {lotDashboardData?.lot.riceLot.id && (\n \n )}\n \n\n {permissions.satelliteImagery ? (\n \n \n {\n if (!lotDashboardData?.lot.riceLot.id) return GraphQLUtils.errorHandler\n return onCreateRiceFertilizer({\n variables: {\n createFertilizerDTO: { riceLotId: lotDashboardData?.lot.riceLot.id },\n },\n })\n }}\n >\n \n \n {\n if (!lotDashboardData?.lot.riceLot.id) return GraphQLUtils.errorHandler\n return onCreateRicePhytosanitary({\n variables: {\n createPhytosanitaryDTO: { riceLotId: lotDashboardData?.lot.riceLot.id },\n },\n })\n }}\n title={t('phytosanitariesTable.title')}\n >\n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n )}\n \n {permissions.satelliteImagery && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n )\n}\n","import { Statistic } from 'antd'\n\nimport { GreyCard } from 'components'\n\ninterface Props {\n title: string\n value: string\n}\n\nexport const StatisticCard: React.FC = ({ title, value }) => {\n return (\n \n \n \n )\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { StatisticCard } from '../StatisticCard'\n\ninterface Props {\n densitySurfaceYield?: number\n}\n\nexport const YieldCard: React.FC = ({ densitySurfaceYield }) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n\n return (\n \n )\n}\n","import { useTranslation } from 'react-i18next'\n\nimport { StatisticCard } from '../StatisticCard'\n\ninterface Props {\n daysToHarvestFromEmergence?: number\n}\n\nexport const HarvestDateCard: React.FC = ({ daysToHarvestFromEmergence }) => {\n const { t } = useTranslation('lot-dashboard')\n\n return (\n 0\n ? (t('tabs.secondTab.harvestDateCard.value', {\n days: daysToHarvestFromEmergence,\n }) as string)\n : '-'\n }\n />\n )\n}\n","import { Col, Row } from 'antd'\n\nimport { MapImage } from '../../../../../components'\nimport { HarvestDateCard, YieldCard } from './components'\n\ninterface Props {\n daysToHarvestFromEmergence?: number\n densitySurfaceYield?: number\n lotCoordinates?: number[][]\n fieldId?: number\n lotId?: number\n}\n\nexport const LeftCardsContainer: React.FC = ({\n daysToHarvestFromEmergence,\n densitySurfaceYield,\n fieldId,\n lotId,\n lotCoordinates,\n}) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import styled from 'styled-components'\nimport { Typography } from 'antd'\nimport { Payload } from 'recharts/types/component/DefaultLegendContent'\nimport { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent'\nimport { useTranslation } from 'react-i18next'\nimport dayjs from 'dayjs'\n\nconst { Text: AntText } = Typography\n\nconst Container = styled.div`\n background-color: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n display: flex;\n flex-direction: column;\n padding: 10px;\n`\n\nconst SubTitle = styled(AntText)`\n font-weight: normal !important;\n margin-bottom: 0px !important;\n line-height: 24px;\n font-size: 14px !important;\n color: ${({ theme }) => theme.colors.olive};\n`\n\ninterface TooltipProps {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n payload?: Payload[]\n label: string\n}\n\nexport const CustomTooltip: React.FC = ({ payload, label }) => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n\n if (payload?.length) {\n return (\n \n {`${commonT('vocabulary.daysAfterEmergenceAbbreviation')}: ${label}`}\n \n {t('tabs.secondTab.irrigationCard.chart.tooltipValue', {\n value: payload[0].value.toFixed(),\n })}\n \n \n {t('tabs.secondTab.irrigationCard.chart.tooltipDate', {\n value: dayjs(payload[0].payload.date),\n })}\n \n \n )\n }\n\n return null\n}\n","import { Col } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { Bar, BarChart, ResponsiveContainer, XAxis, YAxis, CartesianGrid, Tooltip } from 'recharts'\nimport styled, { useTheme } from 'styled-components'\n\nimport { GreyCardWithTitle } from 'components'\n\nimport { HistoricalIrrigation } from '../../../../../../api'\nimport { CustomTooltip } from './components'\n\ninterface Props {\n title: string\n subTitle: string\n historicalIrrigationValues: HistoricalIrrigation['values']\n}\n\nconst ChartContainer = styled(Col)`\n background: ${({ theme }) => theme.colors.white};\n border-radius: ${({ theme }) => theme.foundation.borderRadius};\n flex: 1;\n height: 250px;\n border: 2px solid ${({ theme }) => theme.colors.grey2};\n padding: 10px 0;\n`\n\nconst formatTick = (value: number) => `${value}%`\nconst BREAKAGE_RATES = [0, 60, 85, 100]\n\nexport const HistoricIrrigationCard: React.FC = ({\n title,\n historicalIrrigationValues,\n subTitle,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('lot-dashboard')\n\n return (\n \n \n \n \n \n }\n />\n\n \n \n\n \n \n \n \n \n )\n}\n","import { Col, Row } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { HistoricalIrrigation } from '../../../../api'\nimport { TargetYield } from '../../../TargetYield'\nimport { PendingEmergenceDateTooltip } from '../../../PendingEmergenceDateTooltip'\nimport { HistoricIrrigationCard } from './components'\n\ntype Values = {\n daysSinceEmergence: number\n chlorophyll: number\n}\ninterface Props {\n hasEmergenceDate: boolean\n historicalIrrigationValues: HistoricalIrrigation['values']\n emergenceDate?: string\n yieldName?: string\n targetYieldCurveValues?: Values[]\n realYieldCurveValues?: Values[]\n}\n\nexport const ChartCardsContainer: React.FC = ({\n historicalIrrigationValues,\n hasEmergenceDate,\n emergenceDate,\n yieldName,\n targetYieldCurveValues,\n realYieldCurveValues,\n}) => {\n const { t } = useTranslation('lot-dashboard')\n\n return (\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { Col, Row } from 'antd'\n\nimport { HistoricalIrrigation } from '../../api'\nimport { LeftCardsContainer, ChartCardsContainer } from './components'\n\ntype Values = {\n daysSinceEmergence: number\n chlorophyll: number\n}\ninterface Props {\n daysToHarvestFromEmergence?: number\n densitySurfaceYield?: number\n hasEmergenceDate: boolean\n historicalIrrigationValues: HistoricalIrrigation['values']\n emergenceDate?: string\n yieldName?: string\n targetYieldCurveValues?: Values[]\n realYieldCurveValues?: Values[]\n lotCoordinates?: number[][]\n fieldId?: number\n lotId?: number\n}\n\nexport const ReportTab: React.FC = ({\n daysToHarvestFromEmergence,\n densitySurfaceYield,\n historicalIrrigationValues,\n hasEmergenceDate,\n emergenceDate,\n yieldName,\n targetYieldCurveValues,\n realYieldCurveValues,\n fieldId,\n lotId,\n lotCoordinates,\n}) => {\n return (\n \n \n \n \n \n \n \n \n )\n}\n","import { Space } from 'antd'\nimport styled from 'styled-components'\n\nimport { Layout as BaseLayout } from 'components'\n\nexport { GoBackButton } from './GoBackButton'\nexport { SummaryTab } from './SummaryTab'\nexport { ReportTab } from './ReportTab'\n\nexport const Layout = styled(BaseLayout)`\n display: flex;\n flex-direction: column;\n > div:first-child {\n min-width: 1180px;\n }\n @media (min-width: 1360px) {\n align-items: center;\n }\n`\n\nexport const Container = styled(Space).attrs({\n direction: 'vertical',\n size: 24,\n})`\n width: 1180px;\n padding-bottom: 50px;\n\n @media (max-height: 900px) {\n padding-bottom: 25px;\n }\n`\n","import React, { useState, useEffect, useMemo } from 'react'\nimport { useNavigate, useParams } from 'react-router-dom'\nimport { useQuery } from '@apollo/client'\nimport { Col, Tabs } from 'antd'\nimport { times } from 'lodash'\nimport { useTranslation } from 'react-i18next'\n\nimport { dashboardImage } from 'assets/images'\nimport { ConfirmationModal, FullScreenLoader } from 'components'\nimport { LotsMapLocationState, MilestoneUpdateType } from 'types'\nimport { ActiveCompanyContext } from 'contexts'\nimport { usePermissions, useSeason } from 'hooks'\nimport { NAVIGATION } from 'consts'\n\nimport { GoBackButton, Layout, Container, SummaryTab, ReportTab } from './components'\nimport {\n LOT_DASHBOARD,\n LotDashboard as LotDashboardType,\n LotDashboardVariables,\n AppliedFertilizer,\n AppliedPhytosanitaries,\n} from './api'\nimport { LotOrFieldInformation } from '../components'\nimport {\n useCreateRiceFertilizer,\n useDeleteRiceFertilizer,\n useDeleteRicePhytosanitary,\n useCreateRicePhytosanitary,\n} from './hooks'\nimport { DeleteAplicationData, DeleteType } from './components/types'\n\nconst INITAL_INPUT_TABLES_ELEMENTS_AMOUNT = 4\n\nexport const LotDashboard: React.FC = () => {\n const { t } = useTranslation('lot-dashboard')\n const { t: commonT } = useTranslation('common')\n const { permissions } = usePermissions()\n\n const [appliedFertilizers, setAppliedFertilizers] = useState([])\n const [appliedPhytosanitaries, setAppliedPhytosanitaries] = useState([])\n const [deleteAplicationData, setDeleteAplicationData] = useState()\n const [fieldId, setFieldId] = useState()\n const { id } = useParams<{ id: string }>()\n const navigate = useNavigate()\n const { activeSeasonId, activeCountryId } = ActiveCompanyContext.useActiveCompanyContext()\n\n if (!id) navigate(NAVIGATION.GO_BACK)\n\n const { data: season, loading: seasonLoading } = useSeason(activeSeasonId)\n const { data, loading } = useQuery(LOT_DASHBOARD, {\n variables: { id: Number(id), isSatelliteImageryFlagOn: permissions.satelliteImagery },\n })\n\n const { createRiceFertilizer, loading: createFertilizerLoading } = useCreateRiceFertilizer()\n const { createRicePhytosanitary, loading: createPhytosanitaryLoading } =\n useCreateRicePhytosanitary()\n const { deleteRiceFertilizer, loading: deleteRiceFertilizerLoading } = useDeleteRiceFertilizer(\n () => setDeleteAplicationData({ showModal: false, id: undefined, type: undefined }),\n )\n const { deleteRicePhytosanitary, loading: deleteRicePhytosanitaryLoading } =\n useDeleteRicePhytosanitary(() =>\n setDeleteAplicationData({ showModal: false, id: undefined, type: undefined }),\n )\n\n const lotEmergenceDate =\n data?.lot.riceLot.emergenceDate &&\n data?.lot.riceLot.emergenceUpdateType !== MilestoneUpdateType.AUTOMATIC_CONVERSION\n ? data?.lot.riceLot.emergenceDate\n : undefined\n\n const isHarvested = !!data?.lot.riceLot.isHarvested\n\n const historicalIrrigationValues = useMemo(() => {\n if (!lotEmergenceDate || !data?.lot.riceLot.historicalIrrigation?.values) return []\n\n return data.lot.riceLot.historicalIrrigation.values\n }, [data?.lot.riceLot.historicalIrrigation?.values, lotEmergenceDate])\n\n useEffect(() => {\n const seasonLot = season?.season.seasonFields.find(seasonField =>\n seasonField.lots.some(lot => lot.id === Number(id)),\n )\n\n if (!seasonLoading && !seasonLot) navigate('/dashboard', { replace: true })\n setFieldId(seasonLot?.field?.id)\n }, [id, navigate, season?.season.seasonFields, seasonLoading])\n\n useEffect(() => {\n const existingRiceFertilizers = data?.lot.riceLot.appliedFertilizers\n if (!data?.lot.riceLot || !permissions.satelliteImagery) return\n\n if (!existingRiceFertilizers?.length && !createFertilizerLoading)\n times(INITAL_INPUT_TABLES_ELEMENTS_AMOUNT, () => {\n createRiceFertilizer({\n variables: { createFertilizerDTO: { riceLotId: data?.lot.riceLot.id } },\n })\n })\n if (!existingRiceFertilizers) return\n setAppliedFertilizers(existingRiceFertilizers)\n }, [\n createFertilizerLoading,\n createRiceFertilizer,\n data?.lot.riceLot,\n permissions.satelliteImagery,\n ])\n\n useEffect(() => {\n const existingRicePhytosanitaries = data?.lot.riceLot.appliedPhytosanitaries\n if (!data?.lot.riceLot || !permissions.satelliteImagery) return\n\n if (!existingRicePhytosanitaries?.length && !createPhytosanitaryLoading)\n times(INITAL_INPUT_TABLES_ELEMENTS_AMOUNT, () => {\n createRicePhytosanitary({\n variables: { createPhytosanitaryDTO: { riceLotId: data?.lot.riceLot.id } },\n })\n })\n if (!existingRicePhytosanitaries) return\n setAppliedPhytosanitaries(existingRicePhytosanitaries)\n }, [\n createPhytosanitaryLoading,\n createRicePhytosanitary,\n data?.lot.riceLot,\n permissions.satelliteImagery,\n ])\n\n if (loading || seasonLoading) return \n\n const items = [\n {\n key: '1',\n label: t('tabs.firstTab.title'),\n visible: true,\n children: (\n \n ),\n },\n {\n key: '2',\n label: t('tabs.secondTab.title'),\n visible: permissions.satelliteImagery,\n children: (\n \n ),\n },\n ]\n\n const tabItems = items.filter(item => item.visible)\n\n return (\n }\n >\n \n \n {\n const state: LotsMapLocationState = {\n seasonId: activeSeasonId,\n lotId: Number(id),\n fieldId,\n }\n return navigate('/settings/lots', {\n state,\n })\n }}\n />\n \n \n \n {deleteAplicationData?.showModal && (\n {\n if (deleteAplicationData.id) {\n if (deleteAplicationData.type === DeleteType.FERTILIZER) {\n deleteRiceFertilizer({ variables: { id: deleteAplicationData.id } })\n return\n }\n deleteRicePhytosanitary({ variables: { id: deleteAplicationData.id } })\n }\n }}\n onCancel={() =>\n setDeleteAplicationData({ showModal: false, id: undefined, type: undefined })\n }\n loading={deleteRiceFertilizerLoading || deleteRicePhytosanitaryLoading}\n />\n )}\n \n )\n}\n","/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */\nimport { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n CreateRiceFertilizer,\n CreateRiceFertilizerVariables,\n CREATE_RICE_FERTILIZER,\n LotDashboard,\n LotDashboardVariables,\n LOT_DASHBOARD,\n} from '../api'\n\nexport const useCreateRiceFertilizer = () => {\n const [createRiceFertilizer, { loading }] = useMutation<\n CreateRiceFertilizer,\n CreateRiceFertilizerVariables\n >(CREATE_RICE_FERTILIZER, {\n update: (cache, { data: response }, { variables }) => {\n if (!variables) return\n if (!response) return\n\n const firstCreatedLot = variables.createFertilizerDTO\n const { riceLotId } = firstCreatedLot\n\n const cachedLot = cache.readQuery({\n query: LOT_DASHBOARD,\n variables: { id: riceLotId, isSatelliteImageryFlagOn: true },\n })\n\n const newAppliedFertilizer = response.createRiceFertilizer.fertilizer\n cache.writeQuery({\n query: LOT_DASHBOARD,\n variables: { id: riceLotId, isSatelliteImageryFlagOn: true },\n data: {\n lot: {\n ...cachedLot?.lot!,\n riceLot: {\n ...cachedLot?.lot.riceLot!,\n appliedFertilizers: cachedLot?.lot.riceLot.appliedFertilizers\n ? [...cachedLot?.lot.riceLot.appliedFertilizers, newAppliedFertilizer]\n : [newAppliedFertilizer],\n\n __typename: 'RiceLot',\n },\n __typename: 'LotV2',\n },\n },\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n return { createRiceFertilizer, loading }\n}\n","/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */\nimport { useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n CreateRicePhytosanitaryVariables,\n CreateRicePhytosanitary,\n CREATE_RICE_PHYTOSANITARY,\n LotDashboard,\n LotDashboardVariables,\n LOT_DASHBOARD,\n} from '../api'\n\nexport const useCreateRicePhytosanitary = () => {\n const [createRicePhytosanitary, { loading }] = useMutation<\n CreateRicePhytosanitary,\n CreateRicePhytosanitaryVariables\n >(CREATE_RICE_PHYTOSANITARY, {\n update: (cache, { data: response }, { variables }) => {\n if (!variables) return\n if (!response) return\n\n const firstCreatedRicePhytosanitary = variables.createPhytosanitaryDTO\n const { riceLotId } = firstCreatedRicePhytosanitary\n\n const cachedLot = cache.readQuery({\n query: LOT_DASHBOARD,\n variables: { id: riceLotId, isSatelliteImageryFlagOn: true },\n })\n\n const newAppliedRicePhytosanitary = response.createRicePhytosanitary.phytosanitary\n cache.writeQuery({\n query: LOT_DASHBOARD,\n variables: { id: riceLotId, isSatelliteImageryFlagOn: true },\n data: {\n lot: {\n ...cachedLot?.lot!,\n riceLot: {\n ...cachedLot?.lot.riceLot!,\n appliedPhytosanitaries: cachedLot?.lot.riceLot.appliedPhytosanitaries\n ? [...cachedLot?.lot.riceLot.appliedPhytosanitaries, newAppliedRicePhytosanitary]\n : [newAppliedRicePhytosanitary],\n __typename: 'RiceLot',\n },\n __typename: 'LotV2',\n },\n },\n })\n },\n onError: GraphQLUtils.errorHandler,\n })\n\n return { createRicePhytosanitary, loading }\n}\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport { DELETE_RICE_FERTILIZER, DeleteRiceFertilizerVariables, DeleteRiceFertilizer } from '../api'\n\nexport const useDeleteRiceFertilizer = (onCompleted?: () => void) => {\n const [deleteRiceFertilizer, { loading }] = useMutation<\n DeleteRiceFertilizer,\n DeleteRiceFertilizerVariables\n >(DELETE_RICE_FERTILIZER, {\n onCompleted,\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!variables || !response?.deleteRiceFertilizer.success) return\n\n const deletedRiceFertilizer: StoreObject = {\n id: variables.id,\n __typename: 'RiceAppliedFertilizer',\n }\n\n cache.evict({ id: cache.identify(deletedRiceFertilizer) })\n cache.gc()\n },\n })\n\n return { deleteRiceFertilizer, loading }\n}\n","import { StoreObject, useMutation } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\n\nimport {\n DELETE_RICE_PHYTOSANITARY,\n DeleteRicePhytosanitaryVariables,\n DeleteRicePhytosanitary,\n} from '../api'\n\nexport const useDeleteRicePhytosanitary = (onCompleted?: () => void) => {\n const [deleteRicePhytosanitary, { loading }] = useMutation<\n DeleteRicePhytosanitary,\n DeleteRicePhytosanitaryVariables\n >(DELETE_RICE_PHYTOSANITARY, {\n onCompleted,\n onError: GraphQLUtils.errorHandler,\n update: (cache, { data: response }, { variables }) => {\n if (!variables || !response?.deleteRicePhytosanitary.success) return\n\n const deletedRicePhytosanitary: StoreObject = {\n id: variables.id,\n __typename: 'RiceAppliedPhytosanitary',\n }\n\n cache.evict({ id: cache.identify(deletedRicePhytosanitary) })\n cache.gc()\n },\n })\n\n return { deleteRicePhytosanitary, loading }\n}\n","import { Navigate, Route, Routes } from 'react-router-dom'\n\nimport { Dashboard, LotDashboard } from './features'\n\nexport const DashboardRouter: React.FC = () => {\n return (\n \n } />\n } />\n } />\n \n )\n}\n","import { Select as AntSelect } from 'antd'\nimport { useRef, useEffect } from 'react'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Lot } from '../../hooks/useLots/api'\n\nconst Select = styled(AntSelect)`\n min-width: 206px;\n` as typeof AntSelect\n\ninterface Props {\n fieldId?: number\n defaultId?: number\n onChange: (lots: Lot[]) => void\n className?: string\n lots: Lot[]\n loading: boolean\n dropdownClassName?: string\n popupMatchSelectWidth?: boolean\n value?: number\n disabled?: boolean\n}\n\nconst ONLY_ONE_LOT = 1\n\nexport const LotsSelect: React.FC = ({\n fieldId,\n defaultId,\n onChange,\n className,\n loading,\n lots,\n dropdownClassName,\n popupMatchSelectWidth,\n value,\n disabled,\n}) => {\n const { t } = useTranslation('map')\n\n const initLotsEffectCalled = useRef(false)\n\n useEffect(() => {\n const selectedLot = lots.find(lot => lot.id === defaultId)\n\n if (!selectedLot || initLotsEffectCalled.current) return\n onChange([selectedLot])\n initLotsEffectCalled.current = true\n }, [onChange, lots, defaultId])\n\n const defaultValue =\n // eslint-disable-next-line no-nested-ternary\n (loading && !lots.length) || !fieldId\n ? undefined\n : lots.length > ONLY_ONE_LOT\n ? value ?? 'all-lots'\n : lots[0]?.id\n\n return (\n {\n const selectedLot = lots.find(lot => lot.id === id)\n if (!selectedLot) {\n onChange(lots)\n return\n }\n\n onChange([selectedLot])\n }}\n >\n {(lots.length > ONLY_ONE_LOT || loading) && (\n {t('lotsSelect.allLots')}\n )}\n\n {lots.map(lot => (\n \n {lot.name}\n \n ))}\n \n )\n}\n","import { Typography, Row, Col } from 'antd'\nimport styled from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { Loader } from 'components'\nimport { satelliteImage } from 'assets/images'\n\nconst { Text: AntText } = Typography\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white} !important;\n font-size: 13px !important;\n font-weight: 600;\n`\n\nconst Image = styled.img`\n width: 55px;\n height: 55px;\n`\n\nconst StyledCol = styled(Col)`\n padding: 0 5px;\n`\n\ntype PopupPosition = 'top' | 'bottom'\ntype PopupType = 'datesLoader' | 'text'\n\ninterface ContainerProps {\n $position: PopupPosition\n}\nconst Container = styled(Row)`\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n min-width: 150px;\n max-width: 500px;\n position: absolute;\n padding: 15px;\n bottom: ${({ $position }) => ($position === 'bottom' ? '40px' : undefined)};\n top: ${({ $position }) => ($position === 'top' ? '40px' : undefined)};\n left: 50%;\n transform: translate(-50%);\n z-index: 15;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n`\n\nconst DatesLoader: React.FC = () => {\n const { t } = useTranslation('map')\n\n return (\n <>\n \n {t('datesLoader.satelliteImageAlt')}\n \n \n {t('datesLoader.text')}\n \n \n \n \n \n )\n}\n\ninterface Props {\n position?: PopupPosition\n type: PopupType\n text?: string\n}\n\nexport const MapPopup: React.FC = ({ position, type, text }) => {\n return (\n \n {type === 'datesLoader' ? (\n \n ) : (\n \n {text}\n \n )}\n \n )\n}\n","import styled from 'styled-components'\nimport { Menu } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { HiddenEyeIcon, PolygonIcon, ToolbarTrashIcon } from 'assets/icons'\nimport { DrawingOption } from 'features/MainRouter/features/Map/types'\n\nconst MenuContainer = styled(Menu)`\n width: 220px;\n border-radius: ${({ theme }) => theme.foundation.smallRadius} !important;\n border: none;\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]} !important;\n .ant-dropdown-menu-item {\n font-size: 13px !important;\n display: flex;\n gap: 17px;\n padding: 0 17px;\n align-items: center;\n font-weight: 600;\n margin: 0 !important;\n height: 52px !important;\n color: ${({ theme }) => theme.colors.new.baseColor[400]} !important;\n }\n .ant-dropdown-menu-item-selected {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n color: ${({ theme }) => theme.colors.white} !important;\n }\n .ant-dropdown-menu-item-active,\n .ant-dropdown-menu-item-selected {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n color: ${({ theme }) => theme.colors.white} !important;\n border-radius: 4px !important;\n }\n &:hover {\n .ant-dropdown-menu-item-disabled {\n background-color: transparent !important;\n }\n }\n`\n\ninterface Props {\n selectedItem: DrawingOption\n onDrawingOptionSelected: (option: DrawingOption) => void\n isDrawingToolAvailable: boolean\n}\n\nexport const MeasureAreaDropdown: React.FC = ({\n selectedItem,\n onDrawingOptionSelected,\n isDrawingToolAvailable,\n}) => {\n const { t } = useTranslation('map')\n\n const dataSource = [\n {\n key: 'draw',\n label: t('tools.draw'),\n icon: ,\n },\n {\n key: 'hide',\n label: t('tools.hide'),\n icon: ,\n disabled: isDrawingToolAvailable,\n },\n {\n key: 'delete',\n label: t('tools.delete'),\n icon: ,\n disabled: isDrawingToolAvailable,\n },\n {\n key: 'delete-all',\n label: t('tools.deleteAll'),\n icon: ,\n disabled: isDrawingToolAvailable,\n },\n ]\n\n return (\n onDrawingOptionSelected(e.key as DrawingOption)}\n items={dataSource}\n />\n )\n}\n","import { List as AntList, Typography, Upload as AntUpload } from 'antd'\nimport styled from 'styled-components'\n\nimport { UploadIcon } from 'assets/icons'\n\nexport const Container = styled.div`\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n width: 220px;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n`\n\nexport const Box = styled.div`\n padding: 16px 16px;\n display: flex;\n align-content: center;\n`\n\ninterface MenuItemProps {\n $isActive?: boolean\n $disabled?: boolean\n}\nexport const MenuItem = styled.div`\n :hover {\n background-color: ${({ theme }) => theme.colors.new.baseColor[600]};\n cursor: ${({ $disabled }) => ($disabled ? 'not-allowed' : 'pointer')};\n }\n & span,\n svg {\n color: ${({ theme, $isActive }) =>\n $isActive ? theme.colors.white : theme.colors.new.baseColor[400]};\n }\n`\nexport const List = styled(AntList)`\n max-height: 250px;\n overflow: hidden auto;\n .ant-list {\n padding: 10px !important;\n }\n`\nexport const ItemContainer = styled(Box)`\n display: flex;\n align-items: center;\n gap: 12px;\n height: 50px;\n &:hover {\n background-color: ${({ theme }) => theme.colors.new.baseColor[600]};\n }\n`\n\ninterface ListItemProps {\n $isActive: boolean\n}\nexport const ListItem = styled(AntList.Item)`\n padding: 0px;\n display: flex;\n width: 100%;\n justify-content: space-between;\n & span,\n svg {\n color: ${({ theme, $isActive }) =>\n $isActive ? theme.colors.white : theme.colors.new.baseColor[400]};\n }\n`\nexport const HeaderText = styled(Typography.Text)`\n color: ${({ theme }) => theme.colors.white};\n font-weight: 400;\n font-size: 13px;\n`\nexport const Text = styled(Typography.Text)`\n font-weight: 600;\n font-size: 13px;\n`\nexport const Upload = styled(AntUpload)`\n height: 20px !important;\n`\n\nexport const StyledUploadIcon = styled(UploadIcon)`\n cursor: pointer;\n`\n","import { notification } from 'antd'\nimport React, { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { UploadChangeParam, UploadFile } from 'antd/lib/upload/interface'\n\nimport { HiddenEyeIcon } from 'assets/icons'\nimport { Loader } from 'components'\nimport { MiscUtils } from 'utils'\nimport { FILE_EXTENSIONS } from 'consts'\nimport { useUpdateLot } from 'hooks'\n\nimport {\n Container,\n Box,\n MenuItem,\n ItemContainer,\n List,\n ListItem,\n Upload,\n Text,\n HeaderText,\n StyledUploadIcon,\n} from './components'\nimport { LotRtkItem } from './types'\n\ninterface Props {\n lots: LotRtkItem[]\n showRtk: boolean\n isRtkLoading: boolean\n toggleShowRtk: (show?: boolean) => void\n}\nexport const RtkDropdown: React.FC = ({ lots, showRtk, isRtkLoading, toggleShowRtk }) => {\n const { t } = useTranslation('map')\n\n const { updateLot, loading: isLoading } = useUpdateLot()\n\n const [lotIdUpdated, setLotIdUpdated] = useState()\n\n const handleRtkKml = async ({\n uploadFile,\n lotId,\n }: {\n uploadFile: UploadFile\n lotId: number\n }) => {\n try {\n const file = uploadFile as unknown as File\n if (!MiscUtils.checkFileExtension(file.name, FILE_EXTENSIONS.KML)) {\n throw new Error()\n }\n\n setLotIdUpdated(lotId)\n updateLot({ variables: { updateLotDto: { id: lotId, rtkFile: file } } })\n toggleShowRtk(true)\n } catch (err) {\n notification.error({\n message: t('tools.uploadKMLErrorText'),\n })\n }\n }\n\n return (\n \n \n {t('tools.rtkDescription')}\n \n \n toggleShowRtk()}>\n \n {t('tools.rtkHideButton')}\n {isRtkLoading && }\n \n \n \n {lots.map(lot => (\n \n \n {lot.name}\n false}\n onChange={({ file }: UploadChangeParam) =>\n handleRtkKml({ lotId: lot.id, uploadFile: file })\n }\n showUploadList={false}\n accept=\".kml\"\n >\n {lotIdUpdated === lot.id && isLoading ? (\n \n ) : (\n \n )}\n \n \n \n ))}\n \n \n )\n}\n","import styled from 'styled-components'\nimport { Col, Row } from 'antd'\n\nexport { MeasureAreaDropdown } from './MeasureAreaDropdown'\nexport { RtkDropdown } from './RtkDropdown'\n\ninterface Props {\n $isActive?: boolean\n}\n\nexport const IconContainer = styled(Col)`\n display: flex;\n justify-content: center;\n align-items: center;\n width: 40px;\n height: 40px;\n cursor: pointer;\n color: ${({ $isActive, theme }) =>\n $isActive ? theme.colors.white : theme.colors.new.baseColor[400]};\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n`\n\nexport const ToolbarContainer = styled(Row)`\n width: 280px;\n position: absolute;\n flex-direction: column;\n bottom: 25px;\n right: 50px;\n z-index: 10;\n align-items: flex-end;\n @media (max-height: 850px) {\n max-height: calc(100% - 50px);\n }\n`\n","import { Dropdown, Space, Tooltip } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { PolygonIcon, CompareImageIcon, RtkIcon, DamIcon } from 'assets/icons'\n\nimport { IconContainer, ToolbarContainer, MeasureAreaDropdown, RtkDropdown } from './components'\nimport { DrawingOption, ToolMode } from '../../types'\nimport { LotRtkItem } from './components/RtkDropdown/types'\n\ninterface Props {\n mode: ToolMode\n onHandleCompareImages: () => void\n drawingOption: DrawingOption\n showDrawingToolDropdown: boolean\n onDrawingToolDropdownVisibleChange: () => void\n onDrawingOptionSelected: (option: DrawingOption) => void\n isDrawingToolAvailable: boolean\n lots: LotRtkItem[]\n showRtk: boolean\n isRtkLoading: boolean\n toggleShowRtk: (show?: boolean) => void\n isShowDamsModeSelected: boolean\n handleDams: () => void\n isDamsToolAvailable: boolean\n}\n\nexport const Toolbar: React.FC = ({\n onHandleCompareImages,\n drawingOption,\n onDrawingOptionSelected,\n showDrawingToolDropdown,\n onDrawingToolDropdownVisibleChange,\n mode,\n isDrawingToolAvailable,\n lots,\n showRtk,\n isRtkLoading,\n toggleShowRtk,\n isShowDamsModeSelected,\n handleDams,\n isDamsToolAvailable,\n}) => {\n const { t } = useTranslation('map')\n return (\n \n \n (\n \n )}\n trigger={['click']}\n onOpenChange={onDrawingToolDropdownVisibleChange}\n open={showDrawingToolDropdown}\n >\n onDrawingOptionSelected('reset')}\n >\n \n \n \n\n \n \n \n\n (\n \n )}\n >\n \n \n \n \n {isDamsToolAvailable ? (\n \n \n \n ) : (\n \n \n \n \n \n )}\n \n \n )\n}\n","import { useState, createContext, useContext, Dispatch, SetStateAction } from 'react'\n\nimport { DateState, MapIndex, SatelliteProviders } from 'types'\n\ninterface MapContextType {\n selectedCalendarDate?: string\n setSelectedCalendarDate: (date?: string) => void\n selectedMapIndex: MapIndex\n setSelectedMapIndex: (mapIndex: MapIndex) => void\n selectedCompareMapIndex: MapIndex\n setSelectedCompareMapIndex: (mapIndex: MapIndex) => void\n selectedCompareCalendarDate?: string\n setSelectedCompareCalendarDate: (date?: string) => void\n dates: DateState\n setDates: Dispatch>\n damDates: DateState\n setDamDates: Dispatch>\n selectedDamCalendarDate?: string\n setSelectedDamCalendarDate: (date?: string) => void\n selectedSatellite: SatelliteProviders\n setSelectedSatellite: (provider: SatelliteProviders) => void\n selectedCompareSatellite: SatelliteProviders\n setSelectedCompareSatellite: (provider: SatelliteProviders) => void\n isCalendarOpen: boolean\n setIsCalendarOpen: Dispatch>\n isCompareCalendarOpen: boolean\n setIsCompareCalendaropen: Dispatch>\n}\n\n// TODO: Move the logic from the map and the timeline, that we think is important to be here, in order to optimize these components and make the code easier to read than it is.\nconst Context = createContext({\n selectedMapIndex: 'irrigation',\n selectedCompareMapIndex: 'irrigation',\n setSelectedCalendarDate: () => {\n throw new Error(\n 'Attempted to use default setSelectedCalendarDate function for MapContext, make sure to pass a custom function implementation',\n )\n },\n setSelectedMapIndex: () => {\n throw new Error(\n 'Attempted to use default setSelectedMapIndex function for MapContext, make sure to pass a custom function implementation',\n )\n },\n setSelectedCompareMapIndex: () => {\n throw new Error(\n 'Attempted to use default setSelectedCompareMapIndex function for MapContext, make sure to pass a custom function implementation',\n )\n },\n setSelectedCompareCalendarDate: () => {\n throw new Error(\n 'Attempted to use default setSelectedCompareCalendarDate function for MapContext, make sure to pass a custom function implementation',\n )\n },\n setDates: () => {\n throw new Error(\n 'Attempted to use default setDates function for MapContext, make sure to pass a custom function implementation',\n )\n },\n dates: {\n fromYearMonth: undefined,\n toYearMonth: undefined,\n newDates: false,\n },\n setDamDates: () => {\n throw new Error(\n 'Attempted to use default setDamDates function for MapContext, make sure to pass a custom function implementation',\n )\n },\n damDates: {\n fromYearMonth: undefined,\n toYearMonth: undefined,\n },\n setSelectedDamCalendarDate: () => {\n throw new Error(\n 'Attempted to use default setSelectedDamCalendarDate function for MapContext, make sure to pass a custom function implementation',\n )\n },\n selectedSatellite: 'ALL',\n setSelectedSatellite: () => {\n throw new Error(\n 'Attempted to use default setSelectedSatellite function for MapContext, make sure to pass a custom function implementation',\n )\n },\n selectedCompareSatellite: 'ALL',\n setSelectedCompareSatellite: () => {\n throw new Error(\n 'Attempted to use default setSelectedCompareSatellite function for MapContext, make sure to pass a custom function implementation',\n )\n },\n isCalendarOpen: false,\n setIsCalendarOpen: () => {\n throw new Error(\n 'Attempted to use default setIsCalendarOpen function for MapContext, make sure to pass a custom function implementation',\n )\n },\n isCompareCalendarOpen: false,\n setIsCompareCalendaropen: () => {\n throw new Error(\n 'Attempted to use default setIsCompareCalendaropen function for MapContext, make sure to pass a custom function implementation',\n )\n },\n})\n\nconst useValue = (): MapContextType => {\n const [selectedCalendarDate, setSelectedCalendarDate] = useState()\n const [selectedMapIndex, setSelectedMapIndex] = useState('irrigation')\n const [selectedCompareMapIndex, setSelectedCompareMapIndex] = useState('irrigation')\n const [selectedCompareCalendarDate, setSelectedCompareCalendarDate] = useState()\n const [dates, setDates] = useState({\n fromYearMonth: undefined,\n toYearMonth: undefined,\n newDates: false,\n })\n const [damDates, setDamDates] = useState({\n fromYearMonth: undefined,\n toYearMonth: undefined,\n })\n const [selectedDamCalendarDate, setSelectedDamCalendarDate] = useState()\n const [selectedSatellite, setSelectedSatellite] = useState('ALL')\n const [selectedCompareSatellite, setSelectedCompareSatellite] =\n useState('ALL')\n const [isCalendarOpen, setIsCalendarOpen] = useState(false)\n const [isCompareCalendarOpen, setIsCompareCalendaropen] = useState(false)\n\n return {\n selectedCalendarDate,\n setSelectedCalendarDate,\n selectedMapIndex,\n setSelectedMapIndex,\n selectedCompareMapIndex,\n setSelectedCompareMapIndex,\n selectedCompareCalendarDate,\n setSelectedCompareCalendarDate,\n dates,\n setDates,\n damDates,\n setDamDates,\n selectedDamCalendarDate,\n setSelectedDamCalendarDate,\n selectedSatellite,\n setSelectedSatellite,\n selectedCompareSatellite,\n setSelectedCompareSatellite,\n isCalendarOpen,\n setIsCalendarOpen,\n isCompareCalendarOpen,\n setIsCompareCalendaropen,\n }\n}\n\nconst useMapContext = () => {\n return useContext(Context)\n}\n\nexport const MapContext = {\n Provider: Context.Provider,\n useValue,\n useMapContext,\n}\n","import { Feature, Polygon, Properties } from '@turf/helpers'\nimport { ImageSourceOptions } from 'mapbox-gl'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { Layer, MapRef, Source } from 'react-map-gl'\nimport { useTheme } from 'styled-components'\n\nimport { config } from 'config'\n\ninterface Props {\n lotImageUrl?: string\n lotId: string\n area: Feature\n mapRef: MapRef\n isCloudy?: boolean\n}\n\nconst dashArraySequence = [\n [0, 4, 3],\n [0.5, 4, 2.5],\n [1, 4, 2],\n [1.5, 4, 1.5],\n [2, 4, 1],\n [2.5, 4, 0.5],\n [3, 4, 0],\n [0, 0.5, 3, 3.5],\n [0, 1, 3, 3],\n [0, 1.5, 3, 2.5],\n [0, 2, 3, 2],\n [0, 2.5, 3, 1.5],\n [0, 3, 3, 1],\n [0, 3.5, 3, 0.5],\n]\n\n// This number controls the animation speed.\nconst STEP_MAX_TIMES = 3\n\nexport const AreaSource: React.FC = ({ lotImageUrl, lotId, area, mapRef, isCloudy }) => {\n const [isLoading, setIsLoading] = useState(false)\n const { colors } = useTheme()\n\n const frame = useRef(0)\n const step = useRef(0)\n const numberOfTimesStepWasRepeated = useRef(0)\n const loading = useRef(false)\n\n const animateDashArray = useCallback(() => {\n const map = mapRef.getMap()\n const layer = map.getLayer(`lot-line-dash-${lotId}`)\n\n if (!loading.current || !mapRef || !layer) return\n\n const isTheLastStepRepetition = numberOfTimesStepWasRepeated.current === STEP_MAX_TIMES\n\n numberOfTimesStepWasRepeated.current = !isTheLastStepRepetition\n ? numberOfTimesStepWasRepeated.current + 1\n : 0\n\n if (isTheLastStepRepetition) {\n map.setPaintProperty(\n `lot-line-dash-${lotId}`,\n 'line-dasharray',\n dashArraySequence[step.current],\n )\n step.current = step.current + 1 < dashArraySequence.length ? step.current + 1 : 0\n }\n\n requestAnimationFrame(animateDashArray)\n }, [lotId, mapRef])\n\n const onHandleImageChange = useCallback(\n (sourcedata: mapboxgl.MapSourceDataEvent & mapboxgl.EventData) => {\n if (sourcedata.source.type === 'image') {\n const source = sourcedata.source as ImageSourceOptions\n if (source.url === lotImageUrl) {\n setIsLoading(false)\n loading.current = false\n step.current = 0\n numberOfTimesStepWasRepeated.current = 0\n cancelAnimationFrame(frame.current)\n }\n }\n },\n [lotImageUrl],\n )\n\n useEffect(() => {\n if (!mapRef || !config.isSentinelImageryOn) return undefined\n if (lotImageUrl) {\n setIsLoading(true)\n loading.current = true\n frame.current = requestAnimationFrame(animateDashArray)\n }\n mapRef.on('sourcedata', onHandleImageChange)\n\n return () => {\n mapRef.off('sourcedata', onHandleImageChange)\n }\n }, [animateDashArray, lotImageUrl, mapRef, onHandleImageChange])\n\n const backgroundColor = useMemo(() => {\n if (isCloudy) return colors.white\n\n return isLoading || !lotImageUrl ? colors.new.baseColor[400] : 'transparent'\n }, [colors.new.baseColor, colors.white, isCloudy, isLoading, lotImageUrl])\n\n return (\n <>\n \n \n \n\n \n \n \n )\n}\n","import { Marker } from 'react-map-gl'\nimport { useTheme } from 'styled-components'\n\nimport {\n CameraIcon,\n ChlorophyllIcon,\n CloudyIcon,\n DropIcon,\n EmergenceIcon,\n GrainHumidityIndicatorIcon,\n HarvestedIcon,\n SatelliteIcon,\n WaterIcon,\n WeedsIcon,\n} from 'assets/icons'\nimport { MapIndex } from 'types'\n\nconst sizeMap = {\n small: {\n drop: { width: 14, height: 19 },\n water: { width: 18, height: 12 },\n weeds: { width: 18, height: 15 },\n emergence: { width: 14, height: 25 },\n chlorophyll: { width: 14, height: 18 },\n harvested: { width: 18, height: 12 },\n grainHumidity: { width: 18, height: 18 },\n camera: { width: 18, height: 18 },\n cloudy: { width: 18, height: 18 },\n satellite: { width: 18, height: 18 },\n },\n medium: {\n drop: { width: 28, height: 38 },\n water: { width: 36, height: 24 },\n weeds: { width: 36, height: 30 },\n emergence: { width: 28, height: 50 },\n chlorophyll: { width: 28, height: 36 },\n harvested: { width: 36, height: 24 },\n grainHumidity: { width: 36, height: 36 },\n camera: { width: 36, height: 36 },\n cloudy: { width: 36, height: 36 },\n satellite: { width: 36, height: 36 },\n },\n}\n\ninterface Props {\n latitude: number\n longitude: number\n unavailableImage: boolean\n isCloudy?: boolean\n isHarvested?: boolean\n unavailableIndex?: boolean\n size?: 'small' | 'medium'\n selectedMapIndex?: MapIndex\n}\n\nexport const UnavailableIcon: React.FC = ({\n latitude,\n longitude,\n unavailableImage,\n size = 'small',\n isHarvested,\n isCloudy,\n unavailableIndex,\n selectedMapIndex,\n}) => {\n const { colors } = useTheme()\n\n const conditions: Record = {\n isHarvested: isHarvested ?? false,\n unavailableImage: unavailableImage ?? false,\n unavailableIndex: unavailableIndex ?? false,\n isCloudy: isCloudy ?? false,\n }\n const iconSize = sizeMap[size]\n const iconProps = { color: colors.black }\n\n const INDEX_ICON = {\n irrigation: ,\n chlorophyll: ,\n realImage: ,\n grainHumidity: ,\n water: ,\n weeds: ,\n emergence: ,\n }\n\n const STATUS_ICON = {\n isHarvested: ,\n unavailableImage: ,\n unavailableIndex: selectedMapIndex ? INDEX_ICON[selectedMapIndex] : null,\n isCloudy: ,\n }\n type StatusKey = keyof typeof STATUS_ICON\n\n const status = (Object.keys(conditions) as StatusKey[]).find(key => conditions[key])\n\n if (!status) return null\n\n return (\n \n {STATUS_ICON[status]}\n \n )\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nimport {\n Lots_lotsV2_results,\n Lots_lotsV2_results_riceLot,\n Lots_lotsV2_results_riceLot_calendarV3 as CalendarDate,\n Lots_lotsV2_results_area,\n Lots_lotsV2_results_location,\n} from './types/Lots'\n\ntype RiceLot = Omit & {\n calendar: CalendarDate[]\n}\n\ntype Lot = Omit & {\n riceLot: RiceLot\n area: Lots_lotsV2_results_area\n location: Lots_lotsV2_results_location\n}\n\ntype LotWithArea = Omit & {\n area: Lots_lotsV2_results_area\n location: Lots_lotsV2_results_location\n}\ninterface LotResults extends Omit {\n results: LotWithArea[]\n}\ninterface Lots {\n lotsV2: LotResults\n}\n\nexport type { Lot, CalendarDate, Lots }\n\nexport type { LotsVariables } from './types/Lots'\n\nexport const LOTS = gql`\n query Lots(\n $seasonId: Int!\n $fieldId: Int!\n $toYearMonth: String\n $fromYearMonth: String\n $includeMapUrls: Boolean!\n ) {\n lotsV2(seasonId: $seasonId, fieldId: $fieldId, discardWithoutArea: true) {\n results {\n id\n name\n size\n area {\n type\n coordinates\n }\n variety {\n id\n name\n isGrainHumidityAbsolute\n locales {\n es\n en\n }\n }\n crop {\n id\n locales {\n es\n en\n }\n }\n location {\n coordinates\n type\n }\n riceLot {\n id\n emergenceDate\n emergenceUpdateType\n harvestDate\n harvestUpdateType\n isHarvested\n calendarV3(fromYearMonth: $fromYearMonth, toYearMonth: $toYearMonth) {\n date\n daysSinceEmergence\n mapUrls {\n chlorophyll {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n indicator\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n irrigation {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n indicator\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n realImage {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n }\n grainHumidity {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n emergenceDaysActivation\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n water {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n emergenceDaysActivation\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n weeds {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n emergenceDaysActivation\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n emergence {\n url @include(if: $includeMapUrls)\n isAvailable\n weatherType\n provider\n emergenceDaysActivation\n colorHistogram @include(if: $includeMapUrls) {\n color\n area\n }\n }\n }\n }\n }\n }\n }\n }\n`\n","import { MapIndex } from 'types'\n\ntype MapIndexAvailability = {\n [index in MapIndex]: boolean\n}\n\ninterface AvailableIndexVariables {\n selectedMapIndex: MapIndex\n mapIndexAvailability: MapIndexAvailability\n}\n\nconst getAvailableIndex = ({ selectedMapIndex, mapIndexAvailability }: AvailableIndexVariables) => {\n if (!mapIndexAvailability[selectedMapIndex]) return 'irrigation'\n return selectedMapIndex\n}\n\nexport const IndicesUtils = {\n getAvailableIndex,\n}\n","import { gt as greaterThan, lt as lessThan, orderBy, uniqBy } from 'lodash'\n\nimport {\n MapIndex,\n Lot,\n CalendarDateIndex,\n SatelliteProviders,\n CalendarDateIndexWithMultipleProviders,\n CalendarDate,\n MapIndexInfo,\n EmergenceDaysActivationIndices,\n Selects,\n} from 'types'\n\nconst serializeCalendarDates = (\n calendarDates: CalendarDateIndexWithMultipleProviders[],\n selectedSatellite: SatelliteProviders,\n isAllOptionsSelected: boolean,\n) => {\n return calendarDates.map(calendarDate => {\n if (isAllOptionsSelected) {\n return {\n ...calendarDate,\n mapIndexInfo: calendarDate.mapIndexInfo[0],\n }\n }\n return {\n ...calendarDate,\n mapIndexInfo: {\n ...calendarDate.mapIndexInfo.filter(info => info.provider === selectedSatellite)[0],\n },\n }\n })\n}\n\nconst filterCalendarDatesBySelectedProvider = (\n calendarDates: CalendarDateIndexWithMultipleProviders[],\n selectedSatellite: SatelliteProviders,\n isAllOptionsSelected: boolean,\n) => {\n if (isAllOptionsSelected) return calendarDates\n return calendarDates\n .map(calendarDate => ({\n date: calendarDate.date,\n mapIndexInfo: calendarDate.mapIndexInfo.filter(\n mapIndex => mapIndex.provider === selectedSatellite,\n ),\n }))\n .filter(calendarDate => !!calendarDate.mapIndexInfo.length)\n}\n\nconst removeDuplicatedDatesByIndex = (\n calendarDates: CalendarDateIndexWithMultipleProviders[],\n selectedSatellite: SatelliteProviders,\n) => {\n const isAllOptionsSelected = selectedSatellite === 'ALL'\n\n const filteredDates = filterCalendarDatesBySelectedProvider(\n calendarDates,\n selectedSatellite,\n isAllOptionsSelected,\n )\n const serializedCalendarDates = serializeCalendarDates(\n filteredDates,\n selectedSatellite,\n isAllOptionsSelected,\n )\n\n const orderedByDate = orderBy(\n serializedCalendarDates,\n ['date', 'mapIndexInfo.isAvailable'],\n ['desc', 'desc'],\n )\n const calendarDatesWithoutDuplicates = uniqBy(orderedByDate, 'date')\n\n return calendarDatesWithoutDuplicates\n}\n\nconst getCalendarDateByProvider = (\n selectedSatellite: SatelliteProviders,\n selectedIndicator: MapIndex,\n mapUrls?: CalendarDate['mapUrls'],\n): MapIndexInfo | undefined => {\n const isAllOptionsSelected = selectedSatellite === 'ALL'\n\n return (\n isAllOptionsSelected\n ? mapUrls?.[selectedIndicator]?.[0]\n : mapUrls?.[selectedIndicator]?.find(\n calendarDateData => calendarDateData.provider === selectedSatellite,\n )\n ) as MapIndexInfo | undefined\n}\n\nconst getImageUrl = (\n lot: Lot,\n selectedMapIndex: MapIndex,\n selectedDate: string,\n selectedSatellite: SatelliteProviders,\n) => {\n const selectedLotDate = lot.riceLot.calendar.find(date => date.date === selectedDate)\n\n const calendarDateData = getCalendarDateByProvider(\n selectedSatellite,\n selectedMapIndex,\n selectedLotDate?.mapUrls,\n )\n\n if (!calendarDateData?.isAvailable) return undefined\n\n return calendarDateData.url ?? undefined\n}\n\nconst getEmergenceDaysActivationIndices = (lots: Lot[]): EmergenceDaysActivationIndices => {\n return lots.reduce(\n (emergenceDaysActivation, lot: Lot) => {\n if (!lot.riceLot.calendar.length) return emergenceDaysActivation\n\n const newestDateIndex = lot.riceLot.calendar.length - 1\n const lotWaterEmergenceDays =\n lot.riceLot.calendar[newestDateIndex].mapUrls?.water?.[0].emergenceDaysActivation\n const lotGrainHumidityEmergenceDays =\n lot.riceLot.calendar[newestDateIndex].mapUrls?.grainHumidity?.[0].emergenceDaysActivation\n const lotWeedsEmergenceDays =\n lot.riceLot.calendar[newestDateIndex].mapUrls?.weeds?.[0].emergenceDaysActivation\n const lotEmergenceDays =\n lot.riceLot.calendar[newestDateIndex].mapUrls?.emergence?.[0].emergenceDaysActivation\n\n if (\n !lotWaterEmergenceDays &&\n !lotGrainHumidityEmergenceDays &&\n !lotWeedsEmergenceDays &&\n !lotEmergenceDays\n )\n return emergenceDaysActivation\n\n if (\n greaterThan(lotWaterEmergenceDays, emergenceDaysActivation.water) &&\n lotWaterEmergenceDays\n ) {\n // eslint-disable-next-line no-param-reassign\n emergenceDaysActivation.water = lotWaterEmergenceDays\n }\n\n if (\n (emergenceDaysActivation.grainHumidity === 0 ||\n lessThan(lotGrainHumidityEmergenceDays, emergenceDaysActivation.grainHumidity)) &&\n lotGrainHumidityEmergenceDays\n ) {\n // eslint-disable-next-line no-param-reassign\n emergenceDaysActivation.grainHumidity = lotGrainHumidityEmergenceDays\n }\n\n if (lotWeedsEmergenceDays) {\n // eslint-disable-next-line no-param-reassign\n emergenceDaysActivation.weeds = lotWeedsEmergenceDays\n }\n if (lotEmergenceDays) {\n // eslint-disable-next-line no-param-reassign\n emergenceDaysActivation.emergence = lotEmergenceDays\n }\n\n return emergenceDaysActivation\n },\n { water: 0, grainHumidity: 0, weeds: 0, emergence: 0 },\n )\n}\n\nconst dateHasUrls = (calendarDate?: CalendarDateIndex) => {\n if (!calendarDate?.date) return false\n\n return !!calendarDate.mapIndexInfo.url\n}\n\nconst filterLotsByConditions = (\n lots: Lot[],\n selectedCropId?: number,\n selectedVarietyId?: number | Selects.NO_VARIETY,\n) => {\n if (!selectedCropId && !selectedVarietyId) return lots\n\n if (selectedVarietyId) {\n const filteredLotsWithoutVarietyByCopId = lots.filter(\n lot => lot.crop.id === selectedCropId && !lot.variety,\n )\n if (selectedVarietyId === Selects.NO_VARIETY) return filteredLotsWithoutVarietyByCopId\n\n return lots.filter(lot => lot.variety?.id === selectedVarietyId)\n }\n\n return lots.filter(lot => lot.crop.id === selectedCropId)\n}\n\nexport const LotsUtils = {\n removeDuplicatedDatesByIndex,\n getImageUrl,\n dateHasUrls,\n getEmergenceDaysActivationIndices,\n getCalendarDateByProvider,\n filterLotsByConditions,\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n RtkLots as RtkLotsQuery,\n RtkLotsVariables,\n RtkLots_lotsV2_results as RtkLots,\n} from './types/RtkLots'\n\nexport const RTK_LOTS = gql`\n query RtkLots($seasonId: Int!, $fieldId: Int!) {\n lotsV2(seasonId: $seasonId, fieldId: $fieldId) {\n results {\n id\n rtk {\n coordinates\n }\n }\n }\n }\n`\n","import { Dispatch, SetStateAction, useCallback, useEffect, useMemo } from 'react'\nimport { forEach as lodashForEach } from 'lodash'\n\nimport { MapContext } from 'features/MainRouter/contexts'\nimport { DateUtils } from 'utils'\nimport {\n WeatherDataObject,\n MapIndex,\n CalendarDate,\n CalendarDatesMapIndices,\n MapIndexInfo,\n CalendarDateIndex,\n CalendarDatesMapIndicesWithMultipleProviders,\n SatelliteProviders,\n} from 'types'\nimport { Dam } from 'hooks/useQueryDams/api'\n\nimport { Lot } from './useLots/api'\nimport { IndicesUtils, LotsUtils } from '../utils'\nimport { PopupInfo } from '../types'\n\nconst IMAGE_NOT_AVAILABLE = 'IMAGE_NOT_AVAILABLE'\nconst indices = [\n 'realImage',\n 'chlorophyll',\n 'water',\n 'grainHumidity',\n 'irrigation',\n 'weeds',\n 'emergence',\n] as MapIndex[]\n\ninterface Props {\n selectedLots: Lot[]\n dams?: Dam[]\n isShowDamsModeSelected: boolean\n popupInfo?: PopupInfo\n setPopupInfo: Dispatch>\n}\n\nexport const useLotsFeatures = ({\n selectedLots,\n dams,\n isShowDamsModeSelected,\n setPopupInfo,\n popupInfo,\n}: Props) => {\n const {\n selectedMapIndex,\n setSelectedMapIndex,\n selectedCalendarDate,\n setSelectedCalendarDate,\n selectedCompareMapIndex,\n setSelectedCompareMapIndex,\n selectedCompareCalendarDate,\n setDates,\n setSelectedCompareCalendarDate,\n setDamDates,\n selectedDamCalendarDate,\n setSelectedDamCalendarDate,\n selectedSatellite,\n setSelectedCompareSatellite,\n setSelectedSatellite,\n selectedCompareSatellite,\n } = MapContext.useMapContext()\n\n const emergenceDaysActivationIndices = useMemo(\n () => LotsUtils.getEmergenceDaysActivationIndices(selectedLots),\n [selectedLots],\n )\n\n const getCalendarDateIndices = useCallback(\n (satellite: SatelliteProviders) => {\n const allCalendarDates = selectedLots.map(lot => lot.riceLot.calendar).flat()\n\n const allCalendarDatesIndices = allCalendarDates.reduce(\n (result: CalendarDatesMapIndicesWithMultipleProviders, calendarDate: CalendarDate) => {\n indices.forEach(mapIndex => {\n const hasWeaterType = calendarDate.mapUrls?.[mapIndex]?.some(\n mapUrl => mapUrl.weatherType,\n )\n if (calendarDate.mapUrls?.[mapIndex] && hasWeaterType) {\n // eslint-disable-next-line no-param-reassign\n result[mapIndex] = [\n ...result[mapIndex],\n {\n date: calendarDate.date,\n mapIndexInfo: calendarDate.mapUrls[mapIndex] as MapIndexInfo[],\n },\n ]\n }\n })\n\n return result\n },\n {\n realImage: [],\n chlorophyll: [],\n water: [],\n grainHumidity: [],\n irrigation: [],\n weeds: [],\n emergence: [],\n },\n )\n\n const calendarDatesMapIndices = {\n realImage: [],\n chlorophyll: [],\n water: [],\n grainHumidity: [],\n irrigation: [],\n weeds: [],\n emergence: [],\n } as CalendarDatesMapIndices\n\n lodashForEach(allCalendarDatesIndices, (calendar, index) => {\n const mapindex = index as MapIndex\n calendarDatesMapIndices[mapindex] = LotsUtils.removeDuplicatedDatesByIndex(\n calendar,\n satellite,\n )\n })\n return calendarDatesMapIndices\n },\n [selectedLots],\n )\n\n const calendarDatesIndicesBySelectedSatellite = useMemo(() => {\n const calendarDatesMapIndices = getCalendarDateIndices(selectedSatellite)\n return calendarDatesMapIndices\n }, [getCalendarDateIndices, selectedSatellite])\n\n const allCalendarDatesIndices = useMemo(() => {\n const calendarDatesMapIndices = getCalendarDateIndices('ALL')\n return calendarDatesMapIndices\n }, [getCalendarDateIndices])\n\n const compareCalendarDateIndices = useMemo(() => {\n const calendarDatesMapIndices = getCalendarDateIndices(selectedCompareSatellite)\n return calendarDatesMapIndices\n }, [getCalendarDateIndices, selectedCompareSatellite])\n\n const damsCalendar = useMemo(() => {\n const allCalendarDates = dams?.map(dam => dam.calendar).flat()\n const damsCalendarIndex =\n allCalendarDates?.map(calendarDate => {\n return {\n date: calendarDate.date,\n mapIndexInfo: [{ ...calendarDate.mapUrls.waterSurface }] as MapIndexInfo[],\n }\n }) ?? []\n return LotsUtils.removeDuplicatedDatesByIndex(damsCalendarIndex, 'ALL')\n }, [dams])\n\n const isGrainHumidityAvailable = useMemo(() => {\n const grainHumidityCalendarDates = allCalendarDatesIndices.grainHumidity\n return !!grainHumidityCalendarDates.length\n }, [allCalendarDatesIndices])\n\n const isWaterAvailable = useMemo(() => {\n const waterCalendarDates = allCalendarDatesIndices.water\n return !!waterCalendarDates.length\n }, [allCalendarDatesIndices])\n\n const isWeedsAvailable = useMemo(() => {\n const weedsCalendarDates = allCalendarDatesIndices.weeds\n return !!weedsCalendarDates.length\n }, [allCalendarDatesIndices])\n\n const isEmergenceAvailable = useMemo(() => {\n const emergenceCalendarDates = allCalendarDatesIndices.emergence\n return !!emergenceCalendarDates.length\n }, [allCalendarDatesIndices])\n\n useEffect(() => {\n const mapIndexAvailability = {\n irrigation: true,\n chlorophyll: true,\n realImage: true,\n grainHumidity: isGrainHumidityAvailable,\n water: isWaterAvailable,\n weeds: isWeedsAvailable,\n emergence: isEmergenceAvailable,\n }\n\n const availableMapIndex = IndicesUtils.getAvailableIndex({\n selectedMapIndex,\n mapIndexAvailability,\n })\n setSelectedMapIndex(availableMapIndex)\n\n const availableCompareMapIndex = IndicesUtils.getAvailableIndex({\n selectedMapIndex: selectedCompareMapIndex,\n mapIndexAvailability,\n })\n\n setSelectedCompareMapIndex(availableCompareMapIndex)\n }, [\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n selectedCompareMapIndex,\n selectedMapIndex,\n setSelectedCompareMapIndex,\n setSelectedMapIndex,\n ])\n\n const grainHumidityHasNotEmergenceDaysActivation = useMemo(\n () =>\n !selectedLots.every(lot => {\n const lotCalendarDatesQty = lot.riceLot.calendar.length\n if (!lotCalendarDatesQty) return true\n return lot.riceLot.calendar[lotCalendarDatesQty - 1]?.mapUrls?.grainHumidity?.[0]\n .emergenceDaysActivation\n }),\n [selectedLots],\n )\n const sortCalendarDates = useCallback(\n (calendarDateA: CalendarDateIndex, calendarDateB: CalendarDateIndex, selectedDate: string) => {\n const dateA = new Date(calendarDateA.date)\n const dateB = new Date(calendarDateB.date)\n const targetDate = new Date(selectedDate)\n\n const diffA = Math.abs(targetDate.valueOf() - dateA.valueOf())\n const diffB = Math.abs(targetDate.valueOf() - dateB.valueOf())\n\n return diffA - diffB\n },\n [],\n )\n\n const getFirstAvailableDate = useCallback(\n (calendar: CalendarDateIndex[], selectedDate?: string) => {\n const availableCalendarDates = calendar.filter(\n calendarDate => calendarDate.mapIndexInfo.isAvailable,\n )\n if (!calendar.length) return undefined\n\n if (!selectedDate) return availableCalendarDates[0]\n\n const closestDate = availableCalendarDates.sort((calendarDateA, calendarDateB) =>\n sortCalendarDates(calendarDateA, calendarDateB, selectedDate),\n )\n\n return closestDate[0]\n },\n [sortCalendarDates],\n )\n\n useEffect(() => {\n if (isShowDamsModeSelected) return\n const calendarDates = calendarDatesIndicesBySelectedSatellite[selectedMapIndex]\n const firstAvailableDate = getFirstAvailableDate(calendarDates, selectedCalendarDate)\n if (!firstAvailableDate) return\n\n const firstAvailableDateHasUrls = LotsUtils.dateHasUrls(firstAvailableDate)\n\n if (firstAvailableDate && !firstAvailableDateHasUrls) {\n const firstLotAvailableDate = DateUtils.parseDate(firstAvailableDate.date)\n\n if (firstLotAvailableDate) {\n setDates(prevState => ({\n ...prevState,\n fromYearMonth: firstLotAvailableDate,\n toYearMonth: firstLotAvailableDate,\n }))\n }\n }\n\n const selectedDateIsAvailable = calendarDates.some(\n calendarDate =>\n calendarDate.date === selectedCalendarDate && calendarDate.mapIndexInfo.isAvailable,\n )\n if (!selectedCalendarDate || !selectedDateIsAvailable) {\n setSelectedCalendarDate(firstAvailableDate?.date)\n }\n }, [\n calendarDatesIndicesBySelectedSatellite,\n getFirstAvailableDate,\n selectedCalendarDate,\n selectedLots,\n selectedMapIndex,\n setDates,\n setSelectedCalendarDate,\n isShowDamsModeSelected,\n ])\n\n useEffect(() => {\n const firstAvailableDate = getFirstAvailableDate(damsCalendar, selectedDamCalendarDate)\n\n const firstAvailableDateHasUrls = LotsUtils.dateHasUrls(firstAvailableDate)\n\n if (firstAvailableDate && !firstAvailableDateHasUrls) {\n const firstDamAvailableDate = DateUtils.parseDate(firstAvailableDate.date)\n\n if (firstDamAvailableDate) {\n setDamDates(prevState => ({\n ...prevState,\n fromYearMonth: firstDamAvailableDate,\n toYearMonth: firstDamAvailableDate,\n }))\n }\n }\n\n const selectedDateIsAvailable = damsCalendar.some(\n calendarDate =>\n calendarDate.date === selectedDamCalendarDate && calendarDate.mapIndexInfo.isAvailable,\n )\n if (!selectedDamCalendarDate || !selectedDateIsAvailable) {\n setSelectedDamCalendarDate(firstAvailableDate?.date)\n }\n }, [\n damsCalendar,\n getFirstAvailableDate,\n selectedDamCalendarDate,\n setDamDates,\n setSelectedDamCalendarDate,\n ])\n\n const weatherDataForAllLots = useMemo(() => {\n return selectedLots.reduce((result, lot) => {\n calendarDatesIndicesBySelectedSatellite[selectedMapIndex].forEach(calendar => {\n const key = calendar.date\n // eslint-disable-next-line no-param-reassign\n result[key] = result[key] ?? []\n const calendarLot = lot.riceLot.calendar.find(date => {\n const isAllOptionsSelected = selectedSatellite === 'ALL'\n const sameDate = date.date === calendar.date\n const sameProvider = calendar.mapIndexInfo.provider === selectedSatellite\n return isAllOptionsSelected ? sameDate : sameDate && sameProvider\n })\n\n const calendarLotMapurlsByIndex = LotsUtils.getCalendarDateByProvider(\n selectedSatellite,\n selectedMapIndex,\n calendarLot?.mapUrls,\n )\n\n if (!calendarLotMapurlsByIndex) {\n // eslint-disable-next-line no-param-reassign\n result[key] = [...result[key], { name: lot.name ?? '', weatherType: IMAGE_NOT_AVAILABLE }]\n\n return\n }\n\n const isImageNotAvailable =\n !calendarLotMapurlsByIndex.weatherType && !calendarLotMapurlsByIndex.isAvailable\n\n const weatherType = isImageNotAvailable\n ? IMAGE_NOT_AVAILABLE\n : calendarLotMapurlsByIndex.weatherType ?? IMAGE_NOT_AVAILABLE\n\n const satelliteProvider = calendarLotMapurlsByIndex.provider as SatelliteProviders\n\n // eslint-disable-next-line no-param-reassign\n result[key] = [...result[key], { name: lot.name ?? '', weatherType, satelliteProvider }]\n })\n\n return result\n }, {})\n }, [calendarDatesIndicesBySelectedSatellite, selectedLots, selectedMapIndex, selectedSatellite])\n\n const weatherDataForDams = useMemo(() => {\n return (\n dams?.reduce((result, dam) => {\n damsCalendar.forEach(calendar => {\n const key = calendar.date\n // eslint-disable-next-line no-param-reassign\n result[key] = result[key] ?? []\n const calendarDam = dam.calendar.find(date => date.date === calendar.date)\n if (!calendarDam) {\n // eslint-disable-next-line no-param-reassign\n result[key] = [\n ...result[key],\n { name: dam.name ?? '', weatherType: IMAGE_NOT_AVAILABLE },\n ]\n\n return\n }\n\n const isImageNotAvailable =\n !calendarDam?.mapUrls.waterSurface?.weatherType &&\n !calendarDam?.mapUrls.waterSurface?.isAvailable\n\n const weatherType = isImageNotAvailable\n ? IMAGE_NOT_AVAILABLE\n : calendarDam?.mapUrls.waterSurface?.weatherType ?? IMAGE_NOT_AVAILABLE\n\n // eslint-disable-next-line no-param-reassign\n result[key] = [...result[key], { name: dam.name ?? '', weatherType }]\n })\n\n return result\n }, {}) ?? {}\n )\n }, [dams, damsCalendar])\n\n const onHandleCompareSelectedMapIndexChange = useCallback(\n (index: MapIndex) => {\n const compareCalendarDatesWithoutDuplicates = compareCalendarDateIndices[index]\n const hasCalendarDates = !!compareCalendarDatesWithoutDuplicates.length\n\n if (!hasCalendarDates) {\n setSelectedCompareSatellite('ALL')\n }\n\n const calendarDates = hasCalendarDates\n ? compareCalendarDatesWithoutDuplicates\n : allCalendarDatesIndices[index]\n\n // TODO: Move to own function\n const firstCompareCalendarDateAvailable = getFirstAvailableDate(\n calendarDates,\n selectedCompareCalendarDate,\n )\n\n const firstCompareAvailableDateHasUrls = LotsUtils.dateHasUrls(\n firstCompareCalendarDateAvailable,\n )\n\n if (!firstCompareAvailableDateHasUrls) {\n const firstCompareLotAvailableDate = DateUtils.parseDate(\n firstCompareCalendarDateAvailable?.date,\n )\n\n if (firstCompareLotAvailableDate) {\n setDates(prevState => ({\n ...prevState,\n fromYearMonth: firstCompareLotAvailableDate,\n toYearMonth: firstCompareLotAvailableDate,\n }))\n }\n }\n\n setSelectedCompareCalendarDate(firstCompareCalendarDateAvailable?.date)\n setSelectedCompareMapIndex(index)\n },\n [\n allCalendarDatesIndices,\n compareCalendarDateIndices,\n getFirstAvailableDate,\n selectedCompareCalendarDate,\n setDates,\n setSelectedCompareCalendarDate,\n setSelectedCompareMapIndex,\n setSelectedCompareSatellite,\n ],\n )\n\n const handleSatelliteChange = (satellite: SatelliteProviders) => {\n setSelectedSatellite(satellite)\n const calendarIndices = getCalendarDateIndices(satellite)\n const calendarDates = calendarIndices[selectedMapIndex]\n\n if (!calendarDates.length) return\n\n const firstAvailableDate = getFirstAvailableDate(calendarDates, selectedCalendarDate)\n const lot = selectedLots?.find(lotToFind => lotToFind.id === Number(popupInfo?.id))\n\n if (!lot) return\n\n const newDate = lot.riceLot.calendar.find(\n calendarDate => calendarDate.date === firstAvailableDate?.date,\n )\n\n const irrigationIndicator = LotsUtils.getCalendarDateByProvider(\n satellite,\n 'irrigation',\n newDate?.mapUrls,\n )\n\n const chlorophyllIndicator = LotsUtils.getCalendarDateByProvider(\n satellite,\n 'chlorophyll',\n newDate?.mapUrls,\n )\n setPopupInfo(prevState => {\n const newInfo = {\n ...prevState,\n irrigationIndicator: irrigationIndicator?.indicator,\n chlorophyllIndicator: chlorophyllIndicator?.indicator,\n daysSinceEmergencyDate: newDate?.daysSinceEmergence ?? undefined,\n } as PopupInfo\n\n return newInfo\n })\n }\n\n const handleCompareSelectedSatelliteChange = (satellite: SatelliteProviders) => {\n setSelectedCompareSatellite(satellite)\n\n const calendarIndices = getCalendarDateIndices(satellite)\n const compareCalendarDatesWithoutDuplicates = calendarIndices[selectedCompareMapIndex]\n\n if (!compareCalendarDatesWithoutDuplicates.length) {\n return\n }\n\n const firstCompareCalendarDateAvailable = getFirstAvailableDate(\n compareCalendarDatesWithoutDuplicates,\n selectedCompareCalendarDate,\n )\n const firstCompareAvailableDateHasUrls = LotsUtils.dateHasUrls(\n firstCompareCalendarDateAvailable,\n )\n\n if (!firstCompareAvailableDateHasUrls) {\n const firstCompareLotAvailableDate = DateUtils.parseDate(\n firstCompareCalendarDateAvailable?.date,\n )\n\n if (firstCompareLotAvailableDate) {\n setDates(prevState => ({\n ...prevState,\n fromYearMonth: firstCompareLotAvailableDate,\n toYearMonth: firstCompareLotAvailableDate,\n }))\n }\n }\n\n setSelectedCompareCalendarDate(firstCompareCalendarDateAvailable?.date)\n }\n\n const setCompareMapData = () => {\n const isIrrigationSelected = selectedMapIndex === 'irrigation'\n const compareIndex = isIrrigationSelected ? 'chlorophyll' : 'irrigation'\n setSelectedCompareSatellite(selectedSatellite)\n\n onHandleCompareSelectedMapIndexChange(compareIndex)\n }\n\n const availableSatellites = useMemo(() => {\n const isLandsatSatelliteAvailable = allCalendarDatesIndices[selectedMapIndex].some(\n calendarDate => calendarDate.mapIndexInfo.provider === 'LANDSAT89',\n )\n\n const isSentinelSatelliteAvailable = allCalendarDatesIndices[selectedMapIndex].some(\n calendarDate => calendarDate.mapIndexInfo.provider === 'SENTINEL2',\n )\n\n const isPlanetSatelliteAvailable = allCalendarDatesIndices[selectedMapIndex].some(\n calendarDate => calendarDate.mapIndexInfo.provider === 'PLANET',\n )\n\n const isComparePlanetSatelliteAvailable = allCalendarDatesIndices[selectedCompareMapIndex].some(\n calendarDate => calendarDate.mapIndexInfo.provider === 'PLANET',\n )\n\n const isCompareLandsatSatelliteAvailable = allCalendarDatesIndices[\n selectedCompareMapIndex\n ].some(calendarDate => calendarDate.mapIndexInfo.provider === 'LANDSAT89')\n\n const isCompareSentinelSatelliteAvailable = allCalendarDatesIndices[\n selectedCompareMapIndex\n ].some(calendarDate => calendarDate.mapIndexInfo.provider === 'SENTINEL2')\n\n return {\n planet: isPlanetSatelliteAvailable,\n sentinel: isSentinelSatelliteAvailable,\n landsat: isLandsatSatelliteAvailable,\n comparePlanet: isComparePlanetSatelliteAvailable,\n compareSentinel: isCompareSentinelSatelliteAvailable,\n compareLandsat: isCompareLandsatSatelliteAvailable,\n }\n }, [allCalendarDatesIndices, selectedCompareMapIndex, selectedMapIndex])\n\n return {\n grainHumidityHasNotEmergenceDaysActivation,\n emergenceDaysActivationIndices,\n calendarDatesIndices: calendarDatesIndicesBySelectedSatellite,\n weatherDataForAllLots,\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n setCompareMapData,\n onHandleCompareSelectedMapIndexChange,\n damsCalendar,\n weatherDataForDams,\n compareCalendarDateIndices,\n handleCompareSelectedSatelliteChange,\n availableSatellites,\n handleSatelliteChange,\n }\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { notification } from 'antd'\nimport useCustomCompareEffect from 'react-use/lib/useCustomCompareEffect'\nimport { isEqual, unionBy } from 'lodash'\nimport dayjs from 'dayjs'\n\nimport { MapContext } from 'features/MainRouter/contexts'\nimport { useQueryDams, useTrackEvent, useTrackImpression } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\nimport { AmplitudeEventsName, DateState, MapIndex, Selects } from 'types'\nimport { Crop } from 'components/CropsSelect'\nimport { Variety } from 'components/VarietiesSelect/api'\nimport { Dam, Dams } from 'hooks/useQueryDams/api'\n\nimport { useLots } from './useLots'\nimport { Lot } from './useLots/api'\nimport { useRtkLots } from './useRtkLots'\nimport { useLotsFeatures } from './useLotsFeatures'\nimport { PopupInfo } from '../types'\nimport { LotsUtils } from '../utils'\n\n// TODO: Move the logic from the map, that we think is important to be here, in order to optimize this component and make the code easier to read than it is.\n// like: grainHumidityHasNotemErgenceDaysActivation, estimatedYieldHasNotFormula, formatTimeLineData etc..\n\ninterface Props {\n seasonId?: number\n fieldId?: number\n fieldName?: string\n isShowDamsModeSelected: boolean\n}\n\nconst MAX_TIME_LIMIT_TO_FETCH_LOTS = 1000 * 60 * 5\nconst TIME_INTERVAL_FETCH_LOTS = 1000 * 60 * 0.5\nconst ONLY_ONE_LOT_SELECTED = 1\n\nexport const useMap = ({ seasonId, fieldId, fieldName, isShowDamsModeSelected }: Props) => {\n const { t } = useTranslation('common')\n const [selectedLots, setSelectedLots] = useState([])\n const [isCalendarEmpty, setIsCalendarEmpty] = useState(true)\n const [isMaxTimeReached, setIsMaxTimeReached] = useState(false)\n const [isDisabledSeason, setIsDisabledSeason] = useState(false)\n const [selectedCropId, setSelectedCropId] = useState()\n const [selectedVarietyId, setSelectedVarietyId] = useState()\n const [dams, setDams] = useState([])\n const { track } = useTrackEvent(AmplitudeEventsName.INDEX_CHANGE)\n const { track: trackSelectedDateChange } = useTrackEvent(AmplitudeEventsName.SELECTED_DATE_CHANGE)\n const [popupInfo, setPopupInfo] = useState()\n\n const fetchLotsTimer: { current: NodeJS.Timeout | null } = useRef(null)\n\n const {\n selectedMapIndex,\n setSelectedMapIndex,\n selectedCalendarDate,\n selectedCompareMapIndex,\n setSelectedCalendarDate,\n selectedCompareCalendarDate,\n setSelectedCompareCalendarDate,\n dates,\n setDates,\n damDates,\n setDamDates,\n selectedDamCalendarDate,\n setSelectedDamCalendarDate,\n selectedSatellite,\n setSelectedSatellite,\n selectedCompareSatellite,\n setIsCompareCalendaropen,\n setIsCalendarOpen,\n } = MapContext.useMapContext()\n\n useEffect(() => {\n setSelectedLots([])\n setSelectedSatellite('ALL')\n setSelectedCalendarDate(undefined)\n setDates({\n fromYearMonth: undefined,\n toYearMonth: undefined,\n newDates: false,\n })\n setDamDates({\n fromYearMonth: undefined,\n toYearMonth: undefined,\n })\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fieldId, seasonId])\n\n const { activeCompanyId, activeCompanyName } = ActiveCompanyContext.useActiveCompanyContext()\n\n useTrackImpression({\n eventName: AmplitudeEventsName.MAP_IMPRESSION,\n eventProperties: {\n activeCompanyId,\n activeCompanyName,\n },\n loading: !activeCompanyId,\n })\n\n const isOnlyOneLotSelected = selectedLots.length === ONLY_ONE_LOT_SELECTED\n\n const onLotWithoutCalendar = () => {\n setIsDisabledSeason(true)\n }\n\n const {\n lots,\n setLots,\n loading: isLotsLoading,\n } = useLots({\n seasonId,\n fromYearMonth: dates.fromYearMonth,\n toYearMonth: dates.toYearMonth,\n fieldId,\n pollInterval:\n !isDisabledSeason && isCalendarEmpty && !isMaxTimeReached ? TIME_INTERVAL_FETCH_LOTS : 0,\n setSelectedLots,\n setSelectedCropId,\n selectedLots,\n onLotWithoutCalendar,\n selectedVarietyId,\n selectedCropId,\n })\n\n const {\n rtkLots,\n loading: isRtkLoading,\n selectedLotsRtkList,\n } = useRtkLots({\n skip: isLotsLoading,\n seasonId,\n fieldId,\n selectedLots,\n })\n\n const onDamsCompleted = (data: Dams) => {\n if (!data) return\n const newDams: Dam[] =\n data?.dams.results?.map(queryDam => {\n const { calendar: queryCalendar, ...dam } = queryDam\n const mergedCalendar = unionBy(\n queryCalendar,\n dams.find(stateDam => stateDam?.id === queryDam.id)?.calendar ?? [],\n 'date',\n )\n return {\n ...dam,\n calendar: mergedCalendar,\n }\n }) ?? []\n setDams(newDams)\n }\n\n const { loading: damsLoading } = useQueryDams({\n fieldId,\n includeCalendar: true,\n fromYearMonth: damDates.fromYearMonth,\n toYearMonth: damDates.toYearMonth,\n onCompleted: onDamsCompleted,\n })\n\n useEffect(() => {\n setLots([])\n setIsCalendarEmpty(true)\n setIsMaxTimeReached(false)\n fetchLotsTimer.current = setTimeout(() => {\n setIsMaxTimeReached(true)\n }, MAX_TIME_LIMIT_TO_FETCH_LOTS)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [seasonId])\n\n const {\n grainHumidityHasNotEmergenceDaysActivation,\n emergenceDaysActivationIndices,\n calendarDatesIndices,\n weatherDataForAllLots,\n isGrainHumidityAvailable,\n setCompareMapData,\n onHandleCompareSelectedMapIndexChange,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n damsCalendar,\n weatherDataForDams,\n compareCalendarDateIndices,\n handleCompareSelectedSatelliteChange,\n availableSatellites,\n handleSatelliteChange,\n } = useLotsFeatures({ selectedLots, dams, isShowDamsModeSelected, popupInfo, setPopupInfo })\n\n useEffect(() => {\n if (isLotsLoading || !lots.length) return\n if (calendarDatesIndices[selectedMapIndex].length) {\n setIsCalendarEmpty(false)\n setIsMaxTimeReached(true)\n }\n }, [calendarDatesIndices, lots, isLotsLoading, selectedMapIndex])\n\n useEffect(() => {\n if (isLotsLoading) return\n if (isDisabledSeason || isMaxTimeReached || !isCalendarEmpty) {\n clearTimeout(fetchLotsTimer.current as NodeJS.Timeout)\n }\n if (isDisabledSeason) return\n if (isMaxTimeReached && isCalendarEmpty) {\n notification.error({\n duration: 15,\n message: t('messages.genericErrorRefreshPage'),\n })\n }\n }, [isCalendarEmpty, isMaxTimeReached, isLotsLoading, t, isDisabledSeason])\n\n const interactiveMapLayersIds =\n useMemo(\n () =>\n isShowDamsModeSelected\n ? dams?.map(dam => dam.id.toString())\n : selectedLots.map(lot => lot.id.toString()),\n [selectedLots, dams, isShowDamsModeSelected],\n ) ?? []\n\n const onSelectedDefaultMapIndexChange = (index: MapIndex) => {\n if (!calendarDatesIndices[index].length) {\n setSelectedSatellite('ALL')\n }\n setSelectedMapIndex(index)\n }\n\n const onHandleSelectedMapIndexChange = (index: MapIndex, isCompareMap: boolean) => {\n track({\n index,\n fieldId,\n fieldName,\n activeCompanyId,\n activeCompanyName,\n isCompareMap,\n })\n\n return isCompareMap\n ? onHandleCompareSelectedMapIndexChange(index)\n : onSelectedDefaultMapIndexChange(index)\n }\n\n useCustomCompareEffect(\n () => {\n if (lots.length)\n track({\n index: selectedMapIndex,\n fieldId,\n fieldName,\n activeCompanyId,\n activeCompanyName,\n isCompareMap: false,\n })\n },\n [lots, fieldId],\n (prevDeps, nextDeps) => {\n const prevLotDeps = prevDeps?.[0] as Lot[] | undefined\n const nextLotDeps = nextDeps?.[0] as Lot[] | undefined\n\n const areDepsEqual =\n isEqual(prevLotDeps?.length, nextLotDeps?.length) && isEqual(prevDeps[1], nextDeps[1])\n\n return areDepsEqual\n },\n )\n\n const onHandleSelectedDateChange = (isCompareMap: boolean, date?: string) => {\n if (date) {\n trackSelectedDateChange({\n selectedDate: date,\n differenceInDaysUntilToday: dayjs().diff(dayjs(date)),\n lotName:\n selectedLots.length > ONLY_ONE_LOT_SELECTED ? 'Todos los lotes' : selectedLots[0].name,\n index: isCompareMap ? selectedCompareMapIndex : selectedMapIndex,\n fieldId,\n fieldName,\n activeCompanyId,\n activeCompanyName,\n isCompareMap,\n })\n }\n\n if (isShowDamsModeSelected) {\n return setSelectedDamCalendarDate(date)\n }\n\n return isCompareMap ? setSelectedCompareCalendarDate(date) : setSelectedCalendarDate(date)\n }\n\n const handleCropChange = (crop?: Crop) => {\n setSelectedVarietyId(undefined)\n if (!crop) {\n setSelectedLots(lots)\n setSelectedCropId(undefined)\n return\n }\n const filteredLots = lots.filter(lot => lot.crop.id === crop?.id)\n\n setSelectedLots(filteredLots)\n setSelectedCropId(crop?.id)\n }\n\n const handleLotsChange = useCallback((newLots: Lot[]) => {\n if (newLots.length === ONLY_ONE_LOT_SELECTED) {\n setSelectedLots(newLots)\n setSelectedCropId(newLots[0].crop.id)\n\n return\n }\n\n setSelectedLots(newLots)\n }, [])\n\n const handleVarietyChange = useCallback(\n (variety?: Variety, isNoVarietySelected?: boolean) => {\n const isNoVarietyOption = isNoVarietySelected ? Selects.NO_VARIETY : undefined\n const varietyId = variety ? variety.id : isNoVarietyOption\n const filteredLots = LotsUtils.filterLotsByConditions(lots, selectedCropId, varietyId)\n\n setSelectedLots(filteredLots)\n setSelectedVarietyId(varietyId)\n },\n [lots, selectedCropId],\n )\n\n const lotsOptions = useMemo(\n () => LotsUtils.filterLotsByConditions(lots, selectedCropId, selectedVarietyId),\n [lots, selectedCropId, selectedVarietyId],\n )\n\n const handleDatesChange = (newDates: React.SetStateAction) => {\n if (isShowDamsModeSelected) {\n setDamDates(newDates)\n return\n }\n setDates(newDates)\n }\n\n const onCompareImagesMapClick = () => setIsCompareCalendaropen(false)\n\n return {\n isCalendarEmpty,\n calendarDatesIndices,\n dates,\n setDates: handleDatesChange,\n selectedCalendarDate: isShowDamsModeSelected ? selectedDamCalendarDate : selectedCalendarDate,\n setSelectedCalendarDate: (date?: string) => onHandleSelectedDateChange(false, date),\n selectedCompareCalendarDate,\n setSelectedCompareCalendarDate: (date?: string) => onHandleSelectedDateChange(true, date),\n selectedCompareMapIndex,\n setSelectedCompareMapIndex: (indicator: MapIndex) =>\n onHandleSelectedMapIndexChange(indicator, true),\n lots,\n isLotsLoading,\n rtkLots,\n isRtkLoading,\n selectedLotsRtkList,\n selectedLots,\n setSelectedLots,\n weatherDataForAllLots,\n selectedMapIndex,\n setSelectedMapIndex: (indicator: MapIndex) => onHandleSelectedMapIndexChange(indicator, false),\n grainHumidityHasNotEmergenceDaysActivation,\n emergenceDaysActivationIndices,\n setCompareMapData,\n interactiveMapLayersIds,\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n selectedCropId,\n handleCropChange,\n handleLotsChange,\n selectedLotId: isOnlyOneLotSelected ? selectedLots[0].id : undefined,\n isDisabledSeason,\n selectedVarietyId,\n handleVarietyChange,\n lotsOptions,\n setSelectedVarietyId,\n setSelectedCropId,\n dams,\n damsLoading,\n damsCalendar,\n weatherDataForDams,\n setDamDates,\n selectedSatellite,\n setSelectedSatellite,\n selectedCompareSatellite,\n compareCalendarDateIndices,\n handleCompareSelectedSatelliteChange,\n availableSatellites,\n popupInfo,\n setPopupInfo,\n handleSatelliteChange,\n onCompareImagesMapClick,\n setIsCalendarOpen,\n }\n}\n","import { useQuery } from '@apollo/client'\nimport * as Sentry from '@sentry/react'\nimport { notification } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useEffect, useState } from 'react'\nimport { unionBy } from 'lodash'\nimport dayjs from 'dayjs'\n\nimport { DATE_FORMATS } from 'consts'\nimport { Selects } from 'types'\n\nimport { LotsVariables, LOTS, Lots, Lot } from './api'\nimport { LotsUtils } from '../../utils'\n\ninterface Props {\n seasonId?: number\n fieldId?: number\n pollInterval?: number\n fromYearMonth?: Date\n toYearMonth?: Date\n setSelectedLots: (lots: Lot[]) => void\n selectedLots: Lot[]\n setSelectedCropId: (id?: number) => void\n onLotWithoutCalendar: () => void\n selectedVarietyId?: number | Selects.NO_VARIETY\n selectedCropId?: number\n}\n\nexport const useLots = ({\n seasonId,\n fieldId,\n pollInterval,\n fromYearMonth,\n toYearMonth,\n selectedLots,\n setSelectedLots,\n setSelectedCropId,\n onLotWithoutCalendar,\n selectedVarietyId,\n selectedCropId,\n}: Props) => {\n const { t } = useTranslation('common')\n const [lots, setLots] = useState([])\n\n const { data, loading } = useQuery(LOTS, {\n variables: {\n seasonId: seasonId!,\n fieldId: fieldId!,\n includeMapUrls: !!fromYearMonth && !!toYearMonth,\n fromYearMonth: fromYearMonth\n ? dayjs(fromYearMonth).format(DATE_FORMATS.YEAR_MONTH)\n : undefined,\n toYearMonth: toYearMonth ? dayjs(toYearMonth).format(DATE_FORMATS.YEAR_MONTH) : undefined,\n },\n pollInterval: pollInterval ?? 0,\n onError: error => {\n Sentry.captureException(error)\n\n notification.error({\n duration: 0,\n message: t('messages.genericErrorRefreshPage'),\n })\n },\n skip: !fieldId || !seasonId,\n })\n\n const checkCropEquality = (_lots: Lot[]) => {\n const cropIds = _lots.map(lot => lot.crop.id)\n return cropIds.every(val => val === _lots[0].crop.id)\n }\n\n useEffect(() => {\n const newLots = data?.lotsV2.results.map(queryLot => {\n const { riceLot: queryRiceLot, ...lot } = queryLot\n const { calendarV3, ...riceLot } = queryRiceLot\n\n return {\n ...lot,\n riceLot: {\n ...riceLot,\n calendar: unionBy(\n calendarV3,\n lots.find(stateLot => stateLot?.id === lot.id)?.riceLot.calendar ?? [],\n 'date',\n ),\n },\n }\n })\n\n if (!newLots?.length) return\n\n const hasLotWithoutCalendar = data?.lotsV2.results.some(lot => !lot.riceLot.calendarV3)\n\n if (hasLotWithoutCalendar) onLotWithoutCalendar()\n\n setLots(newLots)\n const selectedLot =\n selectedLots.length === 1 && newLots.find(lot => lot.id === selectedLots[0].id)\n\n if (!selectedLot) {\n const filteredLots = LotsUtils.filterLotsByConditions(\n newLots,\n selectedCropId,\n selectedVarietyId,\n )\n setSelectedLots(filteredLots)\n\n const allLotsSameCropId = checkCropEquality(filteredLots)\n const cropId = allLotsSameCropId && filteredLots.length ? filteredLots[0].crop.id : undefined\n setSelectedCropId(cropId)\n return\n }\n\n setSelectedLots([selectedLot])\n setSelectedCropId(selectedLot.crop.id)\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [data])\n\n return { lots, setLots, loading }\n}\n","import { useQuery } from '@apollo/client'\nimport * as Sentry from '@sentry/react'\nimport { notification } from 'antd'\nimport { useEffect, useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { Lot } from '../useLots/api'\nimport { RTK_LOTS, RtkLotsQuery, RtkLotsVariables } from './api'\n\ninterface Props {\n seasonId?: number\n fieldId?: number\n skip: boolean\n selectedLots: Lot[]\n}\n\nexport const useRtkLots = ({ seasonId, fieldId, selectedLots, skip }: Props) => {\n const { t } = useTranslation('common')\n const [rtkLots, setRtkLots] = useState<{ id: number; rtk?: number[][][] }[]>()\n\n const { data, loading } = useQuery(RTK_LOTS, {\n variables: {\n seasonId: seasonId!,\n fieldId: fieldId!,\n },\n onError: error => {\n Sentry.captureException(error)\n notification.error({\n duration: 0,\n message: t('messages.genericErrorRefreshPage'),\n })\n },\n skip: skip || !fieldId || !seasonId,\n })\n\n useEffect(() => {\n if (loading) return\n if (data?.lotsV2.results.length) {\n const rtkData = data.lotsV2.results.filter(rtkLot => rtkLot.rtk)\n setRtkLots(\n rtkData.map(rtkLot => ({\n id: rtkLot.id,\n rtk: rtkLot.rtk?.coordinates,\n })),\n )\n }\n }, [loading, data])\n\n const selectedLotsRtkList = useMemo(\n () =>\n selectedLots.map(lot => {\n return {\n id: lot.id,\n name: lot.name,\n hasRtk: !!rtkLots?.find(rtkLot => rtkLot.id === lot.id)?.rtk,\n }\n }),\n [rtkLots, selectedLots],\n )\n\n return { rtkLots, loading, selectedLotsRtkList }\n}\n","import { useCallback, useRef, useState, Dispatch, SetStateAction, useEffect } from 'react'\n\nimport { GeoUtils } from 'utils'\n\nimport { DrawArea, DrawingOption, DrawMode as BaseDrawMode, Features, ToolMode } from '../types'\n\nexport type DrawMode = Exclude\n\nconst drawModeMap: { [key in Exclude]: DrawMode } = {\n draw: 'draw_polygon',\n hide: 'simple_select',\n delete: 'simple_select',\n 'delete-all': 'simple_select',\n reset: 'simple_select',\n}\n\nexport const useDrawingTool = (\n toolMode: ToolMode,\n setToolMode: Dispatch>,\n) => {\n const [drawnAreas, setDrawnAreas] = useState([])\n const [drawingOption, _setDrawingOption] = useState(null)\n\n const drawingOptionRef = useRef(drawingOption)\n\n const setDrawingOption = (\n option: DrawingOption | null | ((prevState: DrawingOption | null) => DrawingOption | null),\n ) => {\n if (typeof option === 'function') {\n const newState = option(drawingOptionRef.current)\n drawingOptionRef.current = newState\n _setDrawingOption(newState)\n } else {\n drawingOptionRef.current = option\n _setDrawingOption(option)\n }\n }\n\n const onCreateFeature = useCallback(\n ({ features }: { features: Features }) => {\n if (!features?.length) return\n const createdFeature = features[0]\n const createdFeatureId = createdFeature.id\n if (!createdFeatureId) return\n setDrawnAreas(prevDrawnAreas => {\n if (prevDrawnAreas.find(drawArea => drawArea.feature?.id === createdFeatureId)) {\n return prevDrawnAreas\n }\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(\n features[0].geometry.coordinates,\n )\n\n return [...prevDrawnAreas, { feature: features[0], polygonCenter, area }]\n })\n setDrawingOption(null)\n setToolMode(null)\n },\n [setToolMode],\n )\n\n const onUpdateFeature = useCallback(({ features }: { features: Features }) => {\n if (!features?.length) return\n const updatedFeature = features[0]\n\n setDrawnAreas(prevDrawnAreas => {\n const newAreas = [...prevDrawnAreas]\n const updatedAreaIndex = newAreas.findIndex(\n newArea => newArea.feature.id === updatedFeature.id,\n )\n const { polygonCenter, area } = GeoUtils.getPolygonCenterAndArea(\n updatedFeature.geometry.coordinates,\n )\n\n newAreas[updatedAreaIndex] = {\n ...newAreas[updatedAreaIndex],\n feature: updatedFeature,\n polygonCenter,\n area,\n }\n return newAreas\n })\n }, [])\n\n const onDeleteFeature = useCallback((featureId: string) => {\n if (drawingOptionRef.current === 'delete') {\n setDrawnAreas(prevDrawnAreas =>\n prevDrawnAreas.filter(prevDrawnArea => prevDrawnArea.feature.id !== featureId),\n )\n setDrawingOption(null)\n }\n }, [])\n\n const onDeleteAllFeatures = useCallback(() => {\n setDrawnAreas([])\n setDrawingOption(null)\n setToolMode(null)\n }, [setToolMode])\n\n const onDraw = useCallback(() => {\n setDrawingOption(prevState => (prevState === 'draw' ? null : 'draw'))\n }, [])\n\n const onHide = () => {\n setDrawingOption(prevState => (prevState === 'hide' ? null : 'hide'))\n setToolMode(null)\n }\n\n const onDelete = () => setDrawingOption(prevState => (prevState !== 'delete' ? 'delete' : null))\n\n const onReset = useCallback(() => {\n setDrawingOption(prevState => {\n if (prevState === 'draw' || prevState === 'delete') {\n setToolMode(null)\n return null\n }\n return prevState\n })\n }, [setToolMode])\n\n const drawingActionMap: { [key in Exclude]: () => void } = {\n draw: onDraw,\n hide: onHide,\n delete: onDelete,\n 'delete-all': onDeleteAllFeatures,\n reset: onReset,\n }\n\n const onDrawingOptionSelected = (option: DrawingOption) => {\n if (!option) return\n const action = drawingActionMap[option]\n action()\n }\n\n const toggleDropdownVisibility = () => {\n if (drawingOption === 'draw' || drawingOption === 'delete') return\n setToolMode(prevMode => (prevMode === 'draw' ? null : 'draw'))\n }\n\n const drawnAreasFeatures = drawnAreas.map(({ feature }) => feature)\n const drawMode: DrawMode = drawingOption ? drawModeMap[drawingOption] : 'simple_select'\n\n useEffect(() => {\n if (toolMode === 'compare' && drawnAreas.length) setDrawnAreas([])\n }, [drawnAreas.length, toolMode])\n\n const onKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (drawMode !== 'draw_polygon') return\n if (event.key === 'Backspace' || event.key === 'Delete') {\n setDrawingOption(null)\n onDraw()\n }\n if (event.key === 'Esc' || event.key === 'Escape') {\n setDrawingOption(null)\n }\n },\n [drawMode, onDraw],\n )\n\n useEffect(() => {\n document.addEventListener('keydown', onKeyDown)\n return () => {\n document.removeEventListener('keydown', onKeyDown)\n }\n }, [onKeyDown])\n\n return {\n drawnAreas,\n drawMode,\n onCreateFeature,\n onUpdateFeature,\n onDeleteAllFeatures,\n onDeleteFeature,\n drawnAreasFeatures,\n drawingOption,\n showDropdown: toolMode === 'draw',\n toggleDropdownVisibility,\n onDrawingOptionSelected,\n }\n}\n","import { useCallback } from 'react'\nimport { isNil } from 'lodash'\nimport dayjs from 'dayjs'\n\nimport { MapIndex, SatelliteProviders, WeatherType } from 'types'\nimport { useImageUrl } from 'hooks'\n\nimport { LotsUtils } from '../utils'\nimport { Lot } from '../types'\n\nexport const useLotMapDateInformation = () => {\n const { getUrlWithToken } = useImageUrl()\n\n const getLotMapDateInformation = useCallback(\n ({\n lot,\n selectedMapIndex,\n selectedDate,\n selectedSatellite,\n }: {\n lot: Lot\n selectedMapIndex: MapIndex\n selectedDate?: string\n selectedSatellite: SatelliteProviders\n }) => {\n const selectedLotDate = lot.riceLot.calendar.find(date => date.date === selectedDate)\n\n const lotDateData = LotsUtils.getCalendarDateByProvider(\n selectedSatellite,\n selectedMapIndex,\n selectedLotDate?.mapUrls,\n )\n\n if (!lotDateData) return undefined\n\n const baseUrl = lotDateData?.isAvailable ? lotDateData.url : undefined\n const url = baseUrl ? getUrlWithToken(baseUrl) : undefined\n\n return {\n url,\n isAvailable: lotDateData.isAvailable,\n weatherType: lotDateData.weatherType,\n isIndexAvailable: !isNil(lotDateData.weatherType),\n isCloudy: lotDateData?.weatherType === WeatherType.CLOUDY,\n }\n },\n [getUrlWithToken],\n )\n\n const getHarvestDateIsValid = useCallback((harvestDate?: string, lotsSelectedDate?: string) => {\n if (!harvestDate || !lotsSelectedDate) return false\n\n return dayjs(harvestDate).isBefore(lotsSelectedDate)\n }, [])\n\n return { getLotMapDateInformation, getHarvestDateIsValid }\n}\n","import ReactMapGL, { Layer, Source, useMap as useReactMapGl } from 'react-map-gl'\nimport { multiLineString, polygon } from '@turf/helpers'\nimport React, { useCallback, useEffect } from 'react'\nimport bbox from '@turf/bbox'\nimport { useTheme } from 'styled-components'\n\nimport { MAP } from 'consts'\nimport { config } from 'config'\nimport { MapContext } from 'features/MainRouter/contexts'\nimport { Lot } from 'types'\nimport { GeoUtils } from 'utils'\n\nimport { AreaSource } from '../AreaSource'\nimport { UnavailableIcon } from '../UnavailableIcon'\nimport { useLotMapDateInformation } from '../../hooks'\n\ninterface Props {\n lots: Lot[]\n viewport: {\n latitude: number\n longitude: number\n zoom: number\n }\n onMount: () => void\n showRtk: boolean\n rtkLots?: { id: number; rtk?: number[][][] }[]\n onClick: () => void\n}\n\nexport const CompareImagesMap: React.FC = ({\n lots,\n viewport,\n onMount,\n showRtk,\n rtkLots,\n onClick,\n}) => {\n const { colors } = useTheme()\n const { selectedCompareMapIndex, selectedCompareCalendarDate, selectedCompareSatellite } =\n MapContext.useMapContext()\n const { compareMap } = useReactMapGl()\n const showIcon = viewport.zoom > MAP.ZOOM.ICONS.ENABLED\n const iconSize = viewport.zoom > MAP.ZOOM.ICONS.CLOSE ? 'medium' : 'small'\n\n const { getLotMapDateInformation, getHarvestDateIsValid } = useLotMapDateInformation()\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(onMount, [compareMap])\n\n const getLotMapDateData = useCallback(\n (lot: Lot, date: string) => {\n const lotDateData = getLotMapDateInformation({\n lot,\n selectedMapIndex: selectedCompareMapIndex,\n selectedDate: date,\n selectedSatellite: selectedCompareSatellite,\n })\n\n return {\n isCloudy: lotDateData?.isCloudy,\n lotImageUrl: lotDateData?.url,\n unavailableImage: !lotDateData,\n unavailableIndex: !lotDateData?.isIndexAvailable,\n }\n },\n [getLotMapDateInformation, selectedCompareMapIndex, selectedCompareSatellite],\n )\n\n return (\n \n {selectedCompareCalendarDate &&\n lots.map(lot => {\n const { isCloudy, lotImageUrl, unavailableImage, unavailableIndex } = getLotMapDateData(\n lot,\n selectedCompareCalendarDate,\n )\n const isLotHarvested = getHarvestDateIsValid(\n lot.riceLot.harvestDate ?? undefined,\n selectedCompareCalendarDate,\n )\n const { latitude, longitude } = GeoUtils.getPolygonCentroid(lot.area.coordinates)\n const isHarvested =\n (lot.riceLot.isHarvested && isLotHarvested && unavailableImage) ?? false\n const showUnavailableIcon =\n showIcon && (isCloudy || unavailableImage || unavailableIndex || isHarvested)\n\n const rtk = rtkLots?.find(rtkLot => rtkLot.id === lot.id)?.rtk\n\n const lotRtk = rtk ? multiLineString(rtk) : undefined\n\n return (\n \n <>\n {compareMap && (\n \n )}\n {config.isSentinelImageryOn && lotImageUrl && (\n \n \n \n )}\n {showRtk && lotRtk && (\n \n \n \n )}\n {showUnavailableIcon && (\n \n )}\n \n \n )\n })}\n \n )\n}\n","import { Col, Row } from 'antd'\nimport styled from 'styled-components'\n\nexport const FlexRow = styled(Row)`\n flex: 1;\n height: 22px;\n`\n\nexport const NoItem = styled.div`\n width: 4px;\n height: 2px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[400]};\n`\n\nexport const FlexCol = styled(Col)`\n display: flex;\n align-items: center;\n padding-left: 12px;\n font-size: 11px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n`\n\ninterface BoxContainerProps {\n justify?: string\n}\n\nexport const BoxContainer = styled(FlexCol)`\n padding-right: 12px;\n justify-content: ${({ justify }) => justify ?? 'flex-end'};\n border-right: ${({ theme }) => `2px solid ${theme.colors.new.baseColor[400]}`};\n`\nexport const Card = styled.div`\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n padding: 20px 16px;\n display: flex;\n`\ninterface BarIndicatorProps {\n colorsGradient: string\n}\nexport const BarIndicator = styled.div`\n background: ${({ colorsGradient }) => `linear-gradient(180deg, ${colorsGradient})`};\n width: 6px;\n height: 100%;\n border-radius: 20px;\n`\n\ninterface SquareProps {\n color: string\n}\nexport const Square = styled.div`\n width: 20px;\n height: 20px;\n background-color: ${({ color }) => color};\n`\n\nexport const BoxSquareContainer = styled(Col)`\n display: flex;\n flex-direction: column;\n justify-content: space-around;\n`\n","import { Colors } from 'styles/theme/colors'\n\nexport const BOX_COLORS = {\n IRRIGATION: {\n levelOne: '#0E2BFF',\n levelTwo: '#33E3FF',\n levelThree: '#FCFF1F',\n levelFour: '#F5B708',\n levelFive: '#8D5F0A',\n },\n CHLOROPHYLL: {\n levelOne: '#00BBF6',\n levelTwo: '#0E7115',\n levelThree: '#43D341',\n levelFour: '#FAFF00',\n levelFive: '#A51414',\n levelSix: '#AB9797',\n levelSeven: '#330000',\n },\n WATER: {\n levelOne: '#0E2BFF',\n levelTwo: '#10A2A9',\n levelThree: '#33E3FF',\n levelFour: '#FCFF1F',\n levelFive: '#F5B708',\n levelSix: '#8D5F0A',\n },\n WEEDS: {\n levelThree: Colors.new.trafficLightRed,\n levelTwo: Colors.new.trafficLightYellow,\n levelOne: Colors.new.trafficLightGreen,\n },\n EMERGENCE: {\n levelOne: '#044703',\n levelTwo: '#43d341',\n levelThree: '#faff00',\n levelFour: '#834124',\n levelFive: '#330000',\n },\n}\n","import { Col } from 'antd'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nimport { MapIndex, Lot } from 'types'\n\nimport {\n Card,\n BarIndicator,\n BoxContainer,\n FlexCol,\n FlexRow,\n BoxSquareContainer,\n Square,\n} from './components'\nimport { useDescriptionCard } from './hooks'\n\ninterface Props {\n selectedMapIndex: MapIndex\n lots: Lot[]\n}\n\nexport const DescriptionCard: React.FC = ({ selectedMapIndex, lots }) => {\n const { t } = useTranslation('common')\n\n const { isHistogramNotAvailable, getSelectedIndexColors, cardContent } = useDescriptionCard({\n lots,\n selectedMapIndex,\n })\n\n return (\n <>\n {selectedMapIndex !== 'realImage' && (\n \n {selectedMapIndex === 'weeds' ? (\n \n {cardContent[selectedMapIndex].map(cardData => (\n \n ))}\n \n ) : (\n \n \n \n )}\n \n {cardContent[selectedMapIndex].map(cardData => {\n return (\n \n \n \n {!isHistogramNotAvailable && (\n \n {t('systemsFormat.area', { val: { area: cardData.area } })}\n \n )}\n \n {cardData.item} \n \n \n )\n })}\n \n \n )}\n \n )\n}\n","import { ReactElement, useCallback, useMemo } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { useTheme } from 'styled-components'\n\nimport { MapContext } from 'features/MainRouter/contexts'\nimport { MapIndex, Lot, CalendarDate } from 'types'\nimport { LotsUtils } from 'features/MainRouter/features/Map/utils'\n\nimport { NoItem } from '../components'\nimport { BOX_COLORS } from '../const'\n\ninterface LevelCardTypes {\n boxBackground: string\n item: ReactElement\n area?: number | undefined\n}\n\ninterface CardContentTypes {\n irrigation: LevelCardTypes[]\n chlorophyll: LevelCardTypes[]\n grainHumidity: LevelCardTypes[]\n water: LevelCardTypes[]\n weeds: LevelCardTypes[]\n emergence: LevelCardTypes[]\n}\n\ninterface ColorAreaMap {\n [color: string]: number\n}\n\ninterface Props {\n selectedMapIndex: MapIndex\n lots: Lot[]\n}\nexport const useDescriptionCard = ({ lots, selectedMapIndex }: Props) => {\n const { t } = useTranslation('map')\n const { colors } = useTheme()\n\n const { selectedCalendarDate, selectedSatellite } = MapContext.useMapContext()\n\n const isAbsoluteHumidity = useMemo(() => {\n const allLotsHasAbsoluteVariety = lots.every(lot => {\n if (!lot.variety) return true\n\n return lot.variety.isGrainHumidityAbsolute\n })\n\n return allLotsHasAbsoluteVariety\n }, [lots])\n\n const checkIfHistogramIsNotAvailable = useCallback(\n (lotCalendar: CalendarDate[]) => {\n if (selectedMapIndex === 'realImage') return false\n\n return lotCalendar.some(calendarDate => {\n return (\n calendarDate.date === selectedCalendarDate &&\n calendarDate.mapUrls?.[selectedMapIndex]?.[0].isAvailable &&\n !calendarDate.mapUrls?.[selectedMapIndex]?.[0].colorHistogram\n )\n })\n },\n [selectedCalendarDate, selectedMapIndex],\n )\n\n const isHistogramNotAvailable = useMemo(\n () => lots.some(lot => checkIfHistogramIsNotAvailable(lot.riceLot.calendar)),\n [checkIfHistogramIsNotAvailable, lots],\n )\n\n const colorHistogram = useMemo(() => {\n const lotsSelectedDate = lots.map(\n lot =>\n lot.riceLot.calendar.find(calendarDate => calendarDate.date === selectedCalendarDate)\n ?.mapUrls,\n )\n const areaColorClassification = (\n indicator: 'irrigation' | 'chlorophyll' | 'grainHumidity' | 'water',\n ) => {\n return lotsSelectedDate.reduce((colorAreaMap: ColorAreaMap, curr) => {\n const calendarDate = LotsUtils.getCalendarDateByProvider(selectedSatellite, indicator, curr)\n\n if (curr) {\n if (!calendarDate?.isAvailable) return colorAreaMap\n\n calendarDate.colorHistogram?.forEach((level: { area: number; color: string }) => {\n const color = level.color.toUpperCase()\n // eslint-disable-next-line no-param-reassign\n colorAreaMap[color] = colorAreaMap[color]\n ? // eslint-disable-next-line no-param-reassign\n (colorAreaMap[color] += level.area)\n : // eslint-disable-next-line no-param-reassign\n (colorAreaMap[color] = level.area)\n })\n }\n return colorAreaMap\n }, {})\n }\n return {\n irrigation: areaColorClassification('irrigation'),\n chlorophyll: areaColorClassification('chlorophyll'),\n grainHumidity: areaColorClassification('grainHumidity'),\n water: areaColorClassification('water'),\n }\n }, [lots, selectedCalendarDate, selectedSatellite])\n\n const cardContent: CardContentTypes = {\n irrigation: [\n {\n boxBackground: BOX_COLORS.IRRIGATION.levelOne,\n item: <>{t('descriptionCard.irrigation.enoughWater')},\n area: colorHistogram.irrigation[BOX_COLORS.IRRIGATION.levelOne] ?? 0,\n },\n {\n boxBackground: BOX_COLORS.IRRIGATION.levelTwo,\n area: colorHistogram.irrigation[BOX_COLORS.IRRIGATION.levelTwo] ?? 0,\n\n item: ,\n },\n {\n boxBackground: BOX_COLORS.IRRIGATION.levelThree,\n area: colorHistogram.irrigation[BOX_COLORS.IRRIGATION.levelThree] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.IRRIGATION.levelFour,\n area: colorHistogram.irrigation[BOX_COLORS.IRRIGATION.levelFour] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.IRRIGATION.levelFive,\n area: colorHistogram.irrigation[BOX_COLORS.IRRIGATION.levelFive] ?? 0,\n item: <>{t('descriptionCard.irrigation.limitedWater')},\n },\n ],\n\n chlorophyll: [\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelOne,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelOne] ?? 0,\n item: <>{t('descriptionCard.chlorophyll.higherLevel')},\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelTwo,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelTwo] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelThree,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelThree] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelFour,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelFour] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelFive,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelFive] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelSix,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelSix] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.CHLOROPHYLL.levelSeven,\n area: colorHistogram.chlorophyll[BOX_COLORS.CHLOROPHYLL.levelSeven] ?? 0,\n item: <>{t('descriptionCard.chlorophyll.lowerLevel')},\n },\n ],\n grainHumidity: [\n {\n boxBackground: colors.grainHumedityGreen,\n area: colorHistogram.grainHumidity[colors.grainHumedityGreen] ?? 0,\n item: isAbsoluteHumidity ? (\n <>{t('descriptionCard.grainHumidity.levelSix')}\n ) : (\n <>{t('descriptionCard.grainHumidity.humid')}\n ),\n },\n {\n boxBackground: colors.grainHumedityLightGreen,\n area: colorHistogram.grainHumidity[colors.grainHumedityLightGreen] ?? 0,\n item: isAbsoluteHumidity ? <>{t('descriptionCard.grainHumidity.levelFive')} : ,\n },\n {\n boxBackground: colors.grainHumedityYellow,\n area: colorHistogram.grainHumidity[colors.grainHumedityYellow] ?? 0,\n item: isAbsoluteHumidity ? <>{t('descriptionCard.grainHumidity.levelFour')} : ,\n },\n {\n boxBackground: colors.grainHumedityOrange,\n area: colorHistogram.grainHumidity[colors.grainHumedityOrange] ?? 0,\n item: isAbsoluteHumidity ? (\n <>{t('descriptionCard.grainHumidity.levelThree')}\n ) : (\n \n ),\n },\n {\n boxBackground: colors.grainHumedityLightBrown,\n area: colorHistogram.grainHumidity[colors.grainHumedityLightBrown] ?? 0,\n item: isAbsoluteHumidity ? <>{t('descriptionCard.grainHumidity.levelTwo')} : ,\n },\n {\n boxBackground: colors.grainHumedityBrown,\n area: colorHistogram.grainHumidity[colors.grainHumedityBrown] ?? 0,\n item: isAbsoluteHumidity ? (\n <>{t('descriptionCard.grainHumidity.levelOne')}\n ) : (\n <>{t('descriptionCard.grainHumidity.dry')}\n ),\n },\n ],\n water: [\n {\n boxBackground: BOX_COLORS.WATER.levelOne,\n\n item: <>{t('descriptionCard.water.abundantWater')},\n area: colorHistogram.water[BOX_COLORS.WATER.levelOne] ?? 0,\n },\n {\n boxBackground: BOX_COLORS.WATER.levelTwo,\n\n area: colorHistogram.water[BOX_COLORS.WATER.levelTwo] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.WATER.levelThree,\n\n area: colorHistogram.water[BOX_COLORS.WATER.levelThree] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.WATER.levelFour,\n\n area: colorHistogram.water[BOX_COLORS.WATER.levelFour] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.WATER.levelFive,\n\n area: colorHistogram.water[BOX_COLORS.WATER.levelFive] ?? 0,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.WATER.levelSix,\n\n area: colorHistogram.water[BOX_COLORS.WATER.levelSix] ?? 0,\n item: <>{t('descriptionCard.water.noWater')},\n },\n ],\n weeds: [\n {\n boxBackground: BOX_COLORS.WEEDS.levelThree,\n item: <>{t('descriptionCard.weeds.levelThree')},\n },\n\n {\n boxBackground: BOX_COLORS.WEEDS.levelTwo,\n item: <>{t('descriptionCard.weeds.levelTwo')},\n },\n {\n boxBackground: BOX_COLORS.WEEDS.levelOne,\n item: <>{t('descriptionCard.weeds.levelOne')},\n },\n ],\n emergence: [\n {\n boxBackground: BOX_COLORS.EMERGENCE.levelOne,\n item: <>{t('descriptionCard.emergence.high')},\n },\n {\n boxBackground: BOX_COLORS.EMERGENCE.levelTwo,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.EMERGENCE.levelThree,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.EMERGENCE.levelFour,\n item: ,\n },\n {\n boxBackground: BOX_COLORS.EMERGENCE.levelFive,\n item: <>{t('descriptionCard.emergence.low')},\n },\n ],\n }\n\n const getSelectedIndexColors = () => {\n if (selectedMapIndex === 'realImage') return ''\n const getStringColors = () => {\n return cardContent[selectedMapIndex]\n .map(cardData => cardData.boxBackground.toString())\n .join(',')\n }\n const selectedMapIndexColors = getStringColors()\n\n return selectedMapIndexColors\n }\n return { isHistogramNotAvailable, getSelectedIndexColors, cardContent }\n}\n","import { Typography } from 'antd'\nimport React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport styled from 'styled-components'\n\nimport { EmergenceDaysActivationIndices } from 'types'\n\nconst { Text: AntText } = Typography\n\nconst Card = styled.div`\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n padding: 20px 16px;\n display: flex;\n justify-content: center;\n`\n\nconst Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n font-size: 12px;\n font-weight: 700;\n line-height: 14px;\n text-align: center;\n`\ninterface Props {\n selectedMapIndex: 'water' | 'grainHumidity' | 'weeds' | 'emergence'\n emergenceDaysActivationIndices: EmergenceDaysActivationIndices\n}\n\nexport const IndexInformationCard: React.FC = ({\n selectedMapIndex,\n emergenceDaysActivationIndices,\n}) => {\n const { t } = useTranslation('map')\n\n const informationText = {\n water: t('indicators.information.water', {\n days: emergenceDaysActivationIndices.water,\n }),\n grainHumidity: t('indicators.information.grainHumidity', {\n days: emergenceDaysActivationIndices.grainHumidity,\n }),\n weeds: t('indicators.information.weeds', {\n days: emergenceDaysActivationIndices.weeds,\n }),\n emergence: t('indicators.information.emergence', {\n days: emergenceDaysActivationIndices.emergence,\n }),\n }\n\n return (\n \n {informationText[selectedMapIndex]}\n \n )\n}\n","import styled from 'styled-components'\nimport { Row, Space, Typography } from 'antd'\n\nexport { DescriptionCard } from './DescriptionCard'\nexport { IndexInformationCard } from './IndexInformationCard'\n\nconst { Text: AntText } = Typography\n\nexport const SideBar = styled(Row)`\n width: 280px;\n position: absolute;\n flex-direction: column;\n top: 15px;\n right: 50px;\n z-index: 10;\n max-height: calc(100% - 80px);\n @media (max-height: 850px) {\n max-height: calc(100% - 50px);\n }\n`\n\nexport const StyledCol = styled(Space)`\n width: 100%;\n overflow-y: auto;\n`\n\nexport const Image = styled.img`\n background-position: center;\n width: 22px;\n height: 22px;\n`\n\nexport const Text = styled(AntText)`\n word-break: normal;\n color: ${({ theme }) => theme.colors.white};\n font-size: 13px;\n width: 100px;\n`\n","import { useTheme } from 'styled-components'\nimport { List, Space } from 'antd'\nimport { useTranslation } from 'react-i18next'\n\nimport { EllipsisText, IconText } from 'components'\nimport {\n cloudImage,\n partyallyCloudedWithCirrusImage,\n clearImage,\n satelliteImage,\n} from 'assets/images'\nimport {\n WeatherDataObject,\n MapIndex,\n Lot,\n SatelliteProviders,\n EmergenceDaysActivationIndices,\n EmergenceDaysActivationIndex,\n} from 'types'\nimport { SatelliteIcon } from 'assets/icons'\n\nimport {\n DescriptionCard,\n IndexInformationCard,\n SideBar,\n StyledCol,\n Image,\n Text,\n} from './components'\n\ninterface Props {\n weatherDataForAllLots: WeatherDataObject\n selectedCalendarDate?: string\n selectedLots: Lot[]\n emergenceDaysActivationIndices: EmergenceDaysActivationIndices\n selectedMapIndex: MapIndex\n isShowDamsModeSelected: boolean\n weatherDataForDams: WeatherDataObject\n}\n\nexport const RightBar: React.FC = ({\n weatherDataForAllLots,\n selectedCalendarDate,\n selectedLots,\n emergenceDaysActivationIndices,\n selectedMapIndex,\n isShowDamsModeSelected,\n weatherDataForDams,\n}) => {\n const { t } = useTranslation('map')\n const { colors, foundation } = useTheme()\n\n const allLotstooltipMap = {\n CLEAR: {\n url: clearImage,\n text: t('calendar.tooltips.allLots.clear'),\n },\n CIRRUS: { url: partyallyCloudedWithCirrusImage, text: t('calendar.tooltips.allLots.cirrus') },\n PARTIALLY_CLOUDED: { url: cloudImage, text: t('calendar.tooltips.allLots.partiallyClouded') },\n PARTIALLY_CLOUDED_WITH_CIRRUS: {\n url: partyallyCloudedWithCirrusImage,\n text: t('calendar.tooltips.allLots.partiallyCloudedWithCirrus'),\n },\n CLOUDY: { url: cloudImage, text: t('calendar.tooltips.allLots.cloudy') },\n IMAGE_NOT_AVAILABLE: {\n url: satelliteImage,\n text: t('calendar.tooltips.allLots.imageNotAvailable'),\n },\n }\n\n const iconProvider: { [key in SatelliteProviders]: JSX.Element } = {\n ALL: ,\n SENTINEL2: ,\n PLANET: ,\n LANDSAT89: ,\n }\n\n const isEnabledForLots =\n selectedCalendarDate && !isShowDamsModeSelected && weatherDataForAllLots[selectedCalendarDate]\n const isEnabledForDams =\n isShowDamsModeSelected && selectedCalendarDate && weatherDataForDams[selectedCalendarDate]\n const dataSource = isShowDamsModeSelected ? weatherDataForDams : weatherDataForAllLots\n const isEnabled = isEnabledForLots || isEnabledForDams\n\n const indicesWithInformation = ['water', 'grainHumidity', 'weeds', 'emergence']\n\n const isInformationEnabled =\n indicesWithInformation.includes(selectedMapIndex) &&\n !!emergenceDaysActivationIndices[selectedMapIndex as EmergenceDaysActivationIndex] &&\n !isShowDamsModeSelected\n\n return (\n \n \n <>\n {isEnabled && (\n (\n \n \n \n {item.satelliteProvider && iconProvider[item.satelliteProvider]}\n \n {allLotstooltipMap[item.weatherType].text}\n \n \n )}\n />\n )}\n {!!selectedLots.length && !isShowDamsModeSelected && (\n \n )}\n {isInformationEnabled && (\n \n )}\n \n \n \n )\n}\n","import React, { Dispatch, SetStateAction, useCallback, useMemo } from 'react'\nimport styled, { useTheme } from 'styled-components'\nimport { DatePicker as BaseDatePicker } from 'antd'\nimport dayjs from 'dayjs'\n\nimport { CalendarPanel } from 'components'\nimport { DATE_FORMATS } from 'consts'\nimport { CalendarIcon, CloudyIcon } from 'assets/icons'\nimport { DateState, CalendarDateIndex } from 'types'\nimport { LotsUtils } from 'features/MainRouter/features/Map/utils'\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n width: 220px;\n`\n\nconst DatePicker = styled(BaseDatePicker)`\n width: 100% !important;\n height: 48px !important;\n .ant-picker-input > input::placeholder {\n color: ${({ theme }) => theme.colors.white};\n }\n input {\n text-align: center;\n font-size: 11px !important;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.white} !important;\n height: 100%;\n }\n &.ant-picker {\n border: none;\n box-shadow: none;\n width: 160px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n padding: 10px 16px;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n }\n .ant-picker-input {\n flex-direction: row-reverse;\n }\n` as unknown as typeof BaseDatePicker\n\ninterface Props {\n calendarDates: CalendarDateIndex[]\n onChange: (date?: string) => void\n defaultValue?: string\n setDates: Dispatch>\n isShowDamsModeSelected: boolean\n}\n\nexport const Calendar: React.FC = ({\n calendarDates,\n onChange,\n defaultValue,\n setDates,\n isShowDamsModeSelected,\n}) => {\n const { colors } = useTheme()\n\n const findDateInCalendar = useCallback(\n (date: dayjs.Dayjs) =>\n calendarDates.find(\n calendarDate =>\n dayjs(calendarDate.date).format(DATE_FORMATS.DATE) === date.format(DATE_FORMATS.DATE),\n ),\n [calendarDates],\n )\n\n const disabledDate = (current: dayjs.Dayjs) => {\n const isDateInCalendar = findDateInCalendar(current)\n\n if (!isDateInCalendar || !isDateInCalendar.mapIndexInfo.isAvailable) return true\n\n return false\n }\n\n const getDateStyleAndInfo = (date: dayjs.Dayjs) => {\n const isDateInCalendar = findDateInCalendar(date)\n\n if (!isDateInCalendar || !isDateInCalendar?.mapIndexInfo.isAvailable)\n return { style: { border: '0', borderRadius: '0' }, isDateInCalendar }\n\n return {\n style: {\n border: `1px solid ${colors.white}`,\n borderRadius: '100%',\n backgroundColor: 'transparent',\n },\n isDateInCalendar,\n }\n }\n\n const calendarValue = useMemo(\n () => (defaultValue ? dayjs(defaultValue) : undefined),\n [defaultValue],\n )\n\n return (\n \n }\n panelRender={originalPanel => {\n return {originalPanel}\n }}\n onChange={date => {\n if (!date) return\n const calendarDate = findDateInCalendar(date)\n\n const dateHasUrl = LotsUtils.dateHasUrls(calendarDate)\n\n if (!dateHasUrl && !isShowDamsModeSelected) {\n const fromYearMonth = new Date(date.toDate())\n const toYearMonth = new Date(date.toDate())\n setDates({ fromYearMonth, toYearMonth, newDates: true })\n }\n onChange(dayjs(date).format(DATE_FORMATS.DATE_WITH_SEPARATOR))\n }}\n cellRender={(current, info) => {\n if (info.type !== 'date') return info.originNode\n const style = getDateStyleAndInfo(current)\n return (\n
\n {style.isDateInCalendar && !style.isDateInCalendar.mapIndexInfo.isAvailable ? (\n \n ) : (\n current.date()\n )}\n
\n )\n }}\n />\n
\n )\n}\n","import styled from 'styled-components'\nimport { Row } from 'antd'\n\nexport { Calendar } from './Calendar'\n\nexport const Container = styled(Row)`\n width: 280px;\n position: absolute;\n flex-direction: column;\n top: 15px;\n left: 50px;\n z-index: 10;\n max-height: calc(100% - 80px);\n @media (max-height: 850px) {\n max-height: calc(100% - 50px);\n }\n`\n","import { Col, Select as AntSelect, Space, Tooltip, Typography, SelectProps } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport {\n CameraIcon,\n ChlorophyllIcon,\n DropIcon,\n EmergenceIcon,\n GrainHumidityIndicatorIcon,\n WaterIcon,\n WeedsIcon,\n} from 'assets/icons'\nimport { MapIndex } from 'types'\n\ninterface StyledProps {\n $width?: string\n}\n\nexport const Select = styled(AntSelect)`\n width: ${({ $width }) => $width || '265px'};\n & .ant-select-selector {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n height: 48px !important;\n border-radius: ${({ theme }) => theme.foundation.smallRadius} !important;\n font-size: 13px;\n border: none !important;\n box-shadow: none !important;\n }\n & .ant-select-selection-item {\n display: flex;\n align-items: center;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n` as unknown as React.FC & { Option: typeof AntSelect.Option }\n\nexport const StyledSpace = styled(Space)`\n width: 100%;\n`\n\nconst { Text: AntText } = Typography\n\nexport const Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n font-size: 13px !important;\n`\nexport const IconContainer = styled(Col)`\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\ninterface Props {\n grainHumidityHasNotEmergenceDaysActivation: boolean\n isWaterAvailable: boolean\n onChange: (value: MapIndex) => void\n selectedMapIndex: MapIndex\n bordered?: boolean\n width?: string\n isGrainHumidityAvailable: boolean\n isWeedsAvailable: boolean\n isEmergenceAvailable: boolean\n}\n\nexport const SatelliteInformationSelect: React.FC = ({\n grainHumidityHasNotEmergenceDaysActivation,\n onChange,\n selectedMapIndex,\n bordered,\n width,\n isWaterAvailable,\n isGrainHumidityAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('map')\n\n const dataSource = [\n {\n Logo: EmergenceIcon,\n title: t('indicators.emergence'),\n mapIndex: 'emergence' as MapIndex,\n disabled: !isEmergenceAvailable,\n },\n\n {\n Logo: WaterIcon,\n title: t('indicators.water'),\n mapIndex: 'water' as MapIndex,\n showIndex: true,\n isNotAvailable: !isWaterAvailable,\n },\n {\n Logo: WeedsIcon,\n title: t('indicators.weeds'),\n mapIndex: 'weeds' as MapIndex,\n disabled: !isWeedsAvailable,\n },\n {\n Logo: DropIcon,\n title: t('indicators.irrigation'),\n mapIndex: 'irrigation' as MapIndex,\n },\n {\n Logo: ChlorophyllIcon,\n title: t('indicators.chlorophyll'),\n mapIndex: 'chlorophyll' as MapIndex,\n },\n {\n Logo: GrainHumidityIndicatorIcon,\n title: t('indicators.grainHumidity'),\n mapIndex: 'grainHumidity' as MapIndex,\n disabled: !isGrainHumidityAvailable,\n tooltipText: t('indicators.tooltips.isGrainHumidityNotAvailable', {\n context:\n grainHumidityHasNotEmergenceDaysActivation &&\n 'grainHumidityHasNotEmergenceDaysActivation',\n }),\n },\n {\n Logo: CameraIcon,\n title: t('indicators.realImage'),\n mapIndex: 'realImage' as MapIndex,\n },\n ]\n\n return (\n \n {dataSource.map(data => {\n const { Logo, title, disabled, mapIndex, tooltipText, isNotAvailable } = data\n\n return (\n !isNotAvailable && (\n \n {disabled ? (\n \n \n \n \n \n {title}\n \n \n ) : (\n \n \n \n \n {title}\n \n )}\n \n )\n )\n })}\n \n )\n}\n","import { Col, Select as AntSelect, Space, Typography, SelectProps, Row } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\nimport { Dispatch, SetStateAction } from 'react'\n\nimport { SatelliteIcon } from 'assets/icons'\nimport { SatelliteProviders } from 'types'\nimport { IconText } from 'components'\n\ninterface StyledProps {\n $width?: string\n $isCompareMapMode: boolean\n}\n\nexport const Select = styled(AntSelect)`\n visibility: ${({ $isCompareMapMode }) => $isCompareMapMode && 'hidden'};\n width: ${({ $width }) => $width || '265px'};\n & .ant-select-selector {\n margin-left: ${({ $isCompareMapMode }) => $isCompareMapMode && '-50px'};\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n height: 48px !important;\n border-radius: ${({ theme }) => theme.foundation.smallRadius} !important;\n font-size: 13px;\n border: none !important;\n box-shadow: none !important;\n }\n & .ant-select-selection-item {\n display: flex;\n align-items: center;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n` as unknown as React.FC & { Option: typeof AntSelect.Option }\n\nexport const StyledSpace = styled(Space)`\n width: 100%;\n`\n\nconst { Text: AntText } = Typography\n\nexport const Text = styled(AntText)`\n color: ${({ theme }) => theme.colors.white};\n font-size: 13px !important;\n`\nexport const IconContainer = styled(Col)`\n width: 36px;\n height: 36px;\n display: flex;\n justify-content: center;\n align-items: center;\n`\n\nconst CompareSelect = styled(Row)`\n width: 50px;\n height: 48px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n border-radius: ${({ theme }) => theme.foundation.smallRadius} !important;\n margin-left: 10px !important;\n display: flex;\n justify-content: center;\n align-items: center;\n &:hover {\n cursor: pointer !important;\n }\n`\n\ninterface Props {\n onChange: (value: SatelliteProviders) => void\n selectedSatellite: SatelliteProviders\n width?: string\n popupMatchSelectWidth?: boolean\n isCompareMapMode?: boolean\n isPlanetAvailable: boolean\n isLandsatAvailable: boolean\n isSentinelAvailable: boolean\n isOpen?: boolean\n handleOpen?: Dispatch>\n}\n\nexport const SatelliteSelect: React.FC = ({\n width,\n onChange,\n selectedSatellite,\n popupMatchSelectWidth,\n isCompareMapMode,\n isLandsatAvailable,\n isPlanetAvailable,\n isSentinelAvailable,\n isOpen,\n handleOpen,\n}) => {\n const { colors } = useTheme()\n const { t } = useTranslation('map')\n\n const satelliteSelectText = {\n SENTINEL2: t('satelliteSelect.sentinel'),\n PLANET: t('satelliteSelect.planet'),\n LANDSAT89: t('satelliteSelect.landsat'),\n }\n\n const satelliteSelectTextAbbreviation = {\n SENTINEL2: t('satelliteSelect.sentinelAbbreviation'),\n PLANET: t('satelliteSelect.planetAbbreviation'),\n LANDSAT89: t('satelliteSelect.landsatAbbreviation'),\n }\n\n const dataSource = [\n {\n Icon: ,\n title: t('satelliteSelect.all'),\n value: 'ALL',\n isVisible: true,\n },\n {\n Icon: ,\n title: satelliteSelectText.SENTINEL2,\n value: 'SENTINEL2',\n isVisible: isSentinelAvailable,\n },\n {\n Icon: ,\n title: satelliteSelectText.PLANET,\n value: 'PLANET',\n isVisible: isPlanetAvailable,\n },\n {\n Icon: ,\n title: satelliteSelectText.LANDSAT89,\n value: 'LANDSAT89',\n isVisible: isLandsatAvailable,\n },\n ]\n\n const handleChange = (value: SatelliteProviders) => {\n onChange(value)\n handleOpen?.(false)\n }\n\n return (\n <>\n {isCompareMapMode && (\n handleOpen?.(prevState => !prevState)}>\n {selectedSatellite === 'ALL' ? (\n \n ) : (\n \n )}\n \n )}\n \n {dataSource.map(data => {\n const { Icon, title, isVisible, value } = data\n\n return (\n isVisible && (\n \n \n {Icon}\n {title}\n \n \n )\n )\n })}\n \n \n )\n}\n","import { Space } from 'antd'\n\nimport {\n DateState,\n MapIndex,\n CalendarDatesMapIndices,\n CalendarDateIndex,\n SatelliteProviders,\n} from 'types'\nimport { AvailableSatellites } from 'features/MainRouter/features/Map/types'\n\nimport { Calendar, Container } from './components'\nimport { SatelliteInformationSelect } from '../../../SatelliteInformationSelect'\nimport { SatelliteSelect } from '../../../SatelliteSelect'\n\ninterface Props {\n grainHumidityHasNotEmergenceDaysActivation: boolean\n onHandleMapIndexChange: (mapIndex: MapIndex) => void\n selectedMapIndex: MapIndex\n isWaterAvailable: boolean\n isGrainHumidityAvailable: boolean\n isWeedsAvailable: boolean\n isEmergenceAvailable: boolean\n onHandleCalendarDateChange: (date?: string) => void\n setDates: React.Dispatch>\n calendarDatesIndices: CalendarDatesMapIndices\n selectedCalendarDate?: string\n isShowDamsModeSelected: boolean\n damsCalendar: CalendarDateIndex[]\n onHandleSatelliteChange: (value: SatelliteProviders) => void\n selectedSatellite: SatelliteProviders\n availableSatellites: AvailableSatellites\n}\nexport const LeftBar: React.FC = ({\n grainHumidityHasNotEmergenceDaysActivation,\n onHandleMapIndexChange,\n selectedMapIndex,\n isWaterAvailable,\n isGrainHumidityAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n onHandleCalendarDateChange,\n setDates,\n calendarDatesIndices,\n selectedCalendarDate,\n isShowDamsModeSelected,\n damsCalendar,\n onHandleSatelliteChange,\n selectedSatellite,\n availableSatellites,\n}) => {\n return (\n \n \n {!isShowDamsModeSelected && (\n <>\n \n \n \n )}\n\n \n \n \n )\n}\n","import {\n MapIndex,\n Lot,\n CalendarDatesMapIndices,\n WeatherDataObject,\n DateState,\n CalendarDateIndex,\n SatelliteProviders,\n EmergenceDaysActivationIndices,\n} from 'types'\nimport { AvailableSatellites } from 'features/MainRouter/features/Map/types'\n\nimport { LeftBar, RightBar } from './components'\n\ninterface Props {\n grainHumidityHasNotEmergenceDaysActivation: boolean\n onHandleMapIndexChange: (mapIndex: MapIndex) => void\n selectedMapIndex: MapIndex\n isWaterAvailable: boolean\n isGrainHumidityAvailable: boolean\n isWeedsAvailable: boolean\n isEmergenceAvailable: boolean\n onHandleCalendarDateChange: (date?: string) => void\n setDates: React.Dispatch>\n calendarDatesIndices: CalendarDatesMapIndices\n selectedCalendarDate?: string\n weatherDataForAllLots: WeatherDataObject\n selectedLots: Lot[]\n emergenceDaysActivationIndices: EmergenceDaysActivationIndices\n isShowDamsModeSelected: boolean\n damsCalendar: CalendarDateIndex[]\n weatherDataForDams: WeatherDataObject\n onHandleSatelliteChange: (value: SatelliteProviders) => void\n selectedSatellite: SatelliteProviders\n availableSatellites: AvailableSatellites\n}\nexport const TopBars: React.FC = ({\n calendarDatesIndices,\n grainHumidityHasNotEmergenceDaysActivation,\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n selectedMapIndex,\n onHandleCalendarDateChange,\n setDates,\n selectedCalendarDate,\n onHandleMapIndexChange,\n weatherDataForAllLots,\n selectedLots,\n emergenceDaysActivationIndices,\n isShowDamsModeSelected,\n damsCalendar,\n weatherDataForDams,\n onHandleSatelliteChange,\n selectedSatellite,\n availableSatellites,\n}) => {\n return (\n <>\n \n \n \n )\n}\n","import React, { Dispatch, PropsWithChildren, SetStateAction, useCallback } from 'react'\nimport { Divider as AntDivider, DatePicker as BaseDatePicker } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport dayjs from 'dayjs'\n\nimport { CalendarPanel } from 'components'\nimport { DATE_FORMATS } from 'consts'\nimport { CloudyIcon } from 'assets/icons'\nimport { LotsUtils } from 'features/MainRouter/features/Map/utils'\nimport { DateState, CalendarDateIndex } from 'types'\n\nconst Divider = styled(AntDivider)`\n height: 32px !important;\n border-left: ${({ theme }) => `2px solid ${theme.colors.new.baseColor[400]}`} !important;\n`\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n`\n\nconst DatePicker = styled(BaseDatePicker)`\n width: 50px;\n padding: 7px 0;\n input {\n text-align: center;\n font-size: 13px !important;\n font-weight: 600;\n line-height: 15px;\n color: ${({ theme }) => theme.colors.white} !important;\n }\n` as unknown as typeof BaseDatePicker\n\ninterface Props {\n calendarDates: CalendarDateIndex[]\n onChange: (date?: string) => void\n defaultValue?: string\n setDates: Dispatch>\n}\n\nexport const CompareCalendar: React.FC> = ({\n children,\n calendarDates,\n onChange,\n defaultValue,\n setDates,\n}) => {\n const { colors } = useTheme()\n\n const findDateInCalendar = useCallback(\n (date: dayjs.Dayjs) =>\n calendarDates.find(\n calendarDate =>\n dayjs(calendarDate.date).format(DATE_FORMATS.DATE) === date.format(DATE_FORMATS.DATE),\n ),\n [calendarDates],\n )\n\n const disabledDate = (current: dayjs.Dayjs) => {\n const isDateInCalendar = findDateInCalendar(current)\n\n if (!isDateInCalendar || !isDateInCalendar.mapIndexInfo.isAvailable) return true\n\n return false\n }\n\n const getDateStyleAndInfo = (date: dayjs.Dayjs) => {\n const isDateInCalendar = findDateInCalendar(date)\n\n if (!isDateInCalendar || !isDateInCalendar?.mapIndexInfo.isAvailable)\n return { style: { border: '0', borderRadius: '0' }, isDateInCalendar }\n\n return {\n style: {\n border: `1px solid ${colors.olive2}`,\n borderRadius: '100%',\n backgroundColor: 'transparent',\n },\n isDateInCalendar,\n }\n }\n return (\n \n {children}\n \n {\n return {originalPanel}\n }}\n onChange={date => {\n if (!date) return\n const calendarDate = findDateInCalendar(date)\n\n const dateHasUrl = LotsUtils.dateHasUrls(calendarDate)\n\n if (!dateHasUrl) {\n const fromYearMonth = new Date(date.toDate())\n const toYearMonth = new Date(date.toDate())\n setDates({ fromYearMonth, toYearMonth, newDates: true })\n }\n onChange(dayjs(date).format(DATE_FORMATS.DATE_WITH_SEPARATOR))\n }}\n cellRender={current => {\n const style = getDateStyleAndInfo(current)\n return (\n
\n {style.isDateInCalendar && !style.isDateInCalendar.mapIndexInfo.isAvailable ? (\n \n ) : (\n current.date()\n )}\n
\n )\n }}\n />\n
\n )\n}\n","import { Row } from 'antd'\nimport styled from 'styled-components'\n\nexport { CompareCalendar } from './CompareCalendar'\n\ninterface CompareCalendarContainerProps {\n position?: 'right'\n}\nexport const CompareCalendarContainer = styled(Row)`\n width: 360px;\n position: absolute;\n padding: 10px;\n z-index: 10;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n background: ${({ theme }) => theme.colors.new.baseColor[900]};\n left: ${({ position }) =>\n position ? `calc(((100% - 300px) * 7.5 / 100) + 60%)` : `calc((100% - 300px) * 7.5 / 100)`};\n top: 15px;\n`\n","import { DateState, MapIndex, CalendarDatesMapIndices, SatelliteProviders } from 'types'\nimport { AvailableSatellites } from 'features/MainRouter/features/Map/types'\nimport { MapContext } from 'features/MainRouter/contexts'\n\nimport { SatelliteInformationSelect } from '../SatelliteInformationSelect'\nimport { CompareCalendar, CompareCalendarContainer } from './components'\nimport { SatelliteSelect } from '../SatelliteSelect'\n\ninterface Props {\n calendarDatesIndices: CalendarDatesMapIndices\n selectedCompareMapIndex: MapIndex\n selectedMapIndex: MapIndex\n onHandleCompareCalendarDateChange: (date?: string) => void\n selectedCompareCalendarDate?: string\n selectedCalendarDate?: string\n setDates: React.Dispatch>\n grainHumidityHasNotEmergenceDaysActivation: boolean\n onHandleCompareMapIndexChange: (mapIndex: MapIndex) => void\n isWaterAvailable: boolean\n isWeedsAvailable: boolean\n isGrainHumidityAvailable: boolean\n isEmergenceAvailable: boolean\n onHandleCalendarDateChange: (date?: string) => void\n onHandleMapIndexChange: (mapIndex: MapIndex) => void\n onHandleSatelliteChange: (value: SatelliteProviders) => void\n selectedSatellite: SatelliteProviders\n onHandleCompareSatelliteChange: (value: SatelliteProviders) => void\n selectedCompareSatellite: SatelliteProviders\n compareCalendarDateIndices: CalendarDatesMapIndices\n availableSatellites: AvailableSatellites\n}\nexport const CompareTopBars: React.FC = ({\n calendarDatesIndices,\n selectedCompareMapIndex,\n selectedCompareCalendarDate,\n setDates,\n grainHumidityHasNotEmergenceDaysActivation,\n onHandleCompareMapIndexChange,\n isWaterAvailable,\n isWeedsAvailable,\n isGrainHumidityAvailable,\n isEmergenceAvailable,\n selectedMapIndex,\n onHandleCalendarDateChange,\n selectedCalendarDate,\n onHandleMapIndexChange,\n onHandleCompareCalendarDateChange,\n onHandleSatelliteChange,\n selectedSatellite,\n onHandleCompareSatelliteChange,\n selectedCompareSatellite,\n compareCalendarDateIndices,\n availableSatellites,\n}) => {\n const { isCalendarOpen, setIsCalendarOpen, isCompareCalendarOpen, setIsCompareCalendaropen } =\n MapContext.useMapContext()\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import {\n WeatherDataObject,\n DateState,\n MapIndex,\n CalendarDatesMapIndices,\n Lot,\n CalendarDateIndex,\n SatelliteProviders,\n EmergenceDaysActivationIndices,\n} from 'types'\n\nimport { TopBars, CompareTopBars } from './components'\nimport { AvailableSatellites } from '../../types'\n\ninterface Props {\n calendarDatesIndices: CalendarDatesMapIndices\n selectedCompareCalendarDate?: string\n selectedCompareMapIndex: MapIndex\n selectedMapIndex: MapIndex\n onHandleCompareMapIndexChange: (mapIndex: MapIndex) => void\n weatherDataForAllLots: WeatherDataObject\n onHandleMapIndexChange: (mapIndex: MapIndex) => void\n grainHumidityHasNotEmergenceDaysActivation: boolean\n emergenceDaysActivationIndices: EmergenceDaysActivationIndices\n isGrainHumidityAvailable: boolean\n isWaterAvailable: boolean\n isWeedsAvailable: boolean\n isEmergenceAvailable: boolean\n isCompareModeSelected: boolean\n onHandleCalendarDateChange: (date?: string) => void\n onHandleCompareCalendarDateChange: (date?: string) => void\n setDates: React.Dispatch>\n selectedCalendarDate?: string\n selectedLots: Lot[]\n isShowDamsModeSelected: boolean\n damsCalendar: CalendarDateIndex[]\n weatherDataForDams: WeatherDataObject\n onHandleSatelliteChange: (value: SatelliteProviders) => void\n selectedSatellite: SatelliteProviders\n onHandleCompareSatelliteChange: (value: SatelliteProviders) => void\n selectedCompareSatellite: SatelliteProviders\n compareCalendarDateIndices: CalendarDatesMapIndices\n availableSatellites: AvailableSatellites\n}\n\nexport const TopSplitPanels: React.FC = ({\n calendarDatesIndices,\n selectedCompareCalendarDate,\n selectedCompareMapIndex,\n onHandleCompareMapIndexChange,\n onHandleCompareCalendarDateChange,\n weatherDataForAllLots,\n onHandleMapIndexChange,\n grainHumidityHasNotEmergenceDaysActivation,\n emergenceDaysActivationIndices,\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n selectedMapIndex,\n onHandleCalendarDateChange,\n setDates,\n selectedCalendarDate,\n selectedLots,\n isCompareModeSelected,\n isShowDamsModeSelected,\n damsCalendar,\n weatherDataForDams,\n onHandleSatelliteChange,\n selectedSatellite,\n onHandleCompareSatelliteChange,\n selectedCompareSatellite,\n compareCalendarDateIndices,\n availableSatellites,\n}) => {\n return (\n <>\n {isCompareModeSelected ? (\n \n ) : (\n \n )}\n \n )\n}\n","import { Typography, Row, Col, Space } from 'antd'\nimport styled, { useTheme } from 'styled-components'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\nimport { isNumber } from 'lodash'\n\nimport { EllipsisText, EllipsisTitle, TagText } from 'components'\nimport { Indicators } from 'types'\nimport { DashboardIcon } from 'assets/icons'\n\nimport { Indicator } from '../../../../../../../../components'\nimport { PopupInfo } from '../../../../../../types'\n\nconst Container = styled(Row)`\n flex-direction: column;\n`\n\nconst Header = styled.div`\n width: 100%;\n padding: 16px;\n border-radius: 4px 4px 0px 0px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n`\n\nconst Body = styled(Space).attrs({\n direction: 'vertical',\n size: 8,\n})`\n padding: 16px;\n justify-content: space-between;\n`\n\nconst FullWidthRow = styled(Row)`\n border-radius: 4px 4px 0px 0px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n width: 100%;\n`\n\nconst { Text: AntText } = Typography\n\nconst Text = styled(AntText)`\n font-size: 11px !important;\n font-family: Inter;\n font-weight: 600;\n line-height: 14px;\n color: ${({ theme }) => theme.colors.white};\n`\n\nconst DaysText = styled(Text)`\n padding: 4px 20px;\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n height: 100%;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n`\n\nconst IconContainer = styled.div`\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n background: ${({ theme }) => theme.colors.new.baseColor[850]};\n cursor: pointer;\n`\ninterface Props {\n data: PopupInfo\n}\n\nexport const LotCard: React.FC = ({ data }) => {\n const { colors } = useTheme()\n const navigate = useNavigate()\n const { t: commonT } = useTranslation('common')\n const { t } = useTranslation('map')\n\n const isHarvested = !!data.isHarvested\n const isCloudy = !!data.isCloudy\n const unavailableImage = !!data.unavailableImage\n const unavailableIndex = !!data.unavailableIndex\n\n const STATUS_MESSAGES = {\n unavailableImage: t('lotPopup.unavailableImage'),\n unavailableIndex: t('lotPopup.unavailableIndex'),\n isCloudy: t('lotPopup.isCloudy'),\n isHarvested: commonT('tags.harvested'),\n }\n\n type StatusKey = keyof typeof STATUS_MESSAGES\n\n const conditions: Record = {\n isHarvested,\n unavailableImage,\n unavailableIndex,\n isCloudy,\n }\n\n const tag = (Object.keys(conditions) as StatusKey[]).find(key => conditions[key])\n\n const getDaysSinceEmergenceDate = (days?: number | null) => (isNumber(days) ? days : '-')\n const getTagMessage = (statusKey: StatusKey): string => STATUS_MESSAGES[statusKey]\n\n return (\n \n
\n \n
\n \n \n \n {getDaysSinceEmergenceDate(data.daysSinceEmergencyDate)}{' '}\n {commonT('vocabulary.daysAfterEmergenceAbbreviation')}\n \n navigate(`/dashboard/lots/${data.id}`)}>\n \n \n \n \n \n {t('lotPopup.size')}\n \n \n \n \n \n \n \n {t('lotPopup.crop')}\n \n \n \n \n \n \n \n {t('lotPopup.variety')}\n \n \n \n \n \n {tag ? (\n \n ) : (\n \n {t('lotPopup.satelliteIndices')}\n \n \n \n \n \n \n \n \n \n )}\n \n
\n )\n}\n","import styled from 'styled-components'\nimport { PropsWithChildren } from 'react'\n\nimport { CloseIcon as BaseCloseIcon } from 'assets/icons'\n\nconst Container = styled.div`\n border-radius: ${({ theme }) => theme.foundation.smallRadius};\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n width: 200px;\n`\n\nconst IconContainer = styled.div`\n display: flex;\n justify-content: flex-end;\n`\n\nconst CloseIcon = styled(BaseCloseIcon)`\n cursor: pointer;\n`\n\ninterface Props {\n onClose?: () => void\n}\n\nexport const PopupCard: React.FC> = ({ children, onClose }) => {\n return (\n \n {onClose && (\n \n \n \n )}\n {children}\n \n )\n}\n","import { Row, Space, Typography } from 'antd'\nimport styled from 'styled-components'\n\nexport const Container = styled(Row)`\n flex-direction: column;\n`\n\nexport const Header = styled.div`\n width: 100%;\n padding: 16px;\n border-radius: 4px 4px 0px 0px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n`\n\nexport const Body = styled(Space).attrs({\n direction: 'vertical',\n size: 8,\n})`\n padding: 16px;\n justify-content: space-between;\n`\n\nexport const FullWidthRow = styled(Row)`\n border-radius: 4px 4px 0px 0px;\n background-color: ${({ theme }) => theme.colors.new.baseColor[900]};\n width: 100%;\n`\n\nconst { Text: AntText } = Typography\n\nexport const Text = styled(AntText)`\n font-size: 11px !important;\n font-family: Inter;\n font-weight: 600;\n line-height: 14px;\n color: ${({ theme }) => theme.colors.white};\n`\n","import { Col } from 'antd'\nimport { useTheme } from 'styled-components'\nimport { useTranslation } from 'react-i18next'\n\nimport { EllipsisText, EllipsisTitle, TagText } from 'components'\nimport { useFormatNumbersWithScale } from 'hooks'\n\nimport { PopupInfo } from '../../../../../../types'\nimport { Body, Container, FullWidthRow, Header, Text } from './components'\n\ninterface Props {\n data: PopupInfo\n}\n\nexport const DamCard: React.FC = ({ data }) => {\n const { colors } = useTheme()\n const { t } = useTranslation('map')\n const { formatNumberWithScale } = useFormatNumbersWithScale()\n\n const areaInfo = data.area ? formatNumberWithScale(data.area) : undefined\n const volumeInfo = data.volume ? formatNumberWithScale(data.volume) : undefined\n\n const isCloudy = !!data.isCloudy\n const unavailableImage = !!data.unavailableImage\n\n const STATUS_MESSAGES = {\n unavailableImage: t('damPopup.unavailableImage'),\n isCloudy: t('damPopup.isCloudy'),\n }\n\n type StatusKey = keyof typeof STATUS_MESSAGES\n\n const conditions: Record = {\n unavailableImage,\n isCloudy,\n }\n\n const tag = (Object.keys(conditions) as StatusKey[]).find(key => conditions[key])\n\n const getTagMessage = (statusKey: StatusKey): string => STATUS_MESSAGES[statusKey]\n\n return (\n \n
\n \n
\n \n \n \n {t('damPopup.area')}\n \n \n \n \n \n\n \n \n {t('damPopup.volume')}\n \n \n \n \n \n\n \n \n \n {data.percentage ? t('damPopup.percentage', { value: data.percentage }) : '-'}\n \n \n \n {tag && (\n \n \n \n \n \n )}\n \n
\n )\n}\n","import { Marker } from 'react-map-gl'\n\nimport { PopupInfo } from 'features/MainRouter/features/Map/types'\n\nimport { PopupCard, LotCard, DamCard } from './components'\n\ninterface Props {\n data: PopupInfo\n coordinates?: { latitude?: number; longitude?: number }\n isShowDamsModeSelected: boolean\n}\n\nexport const InformationPopup: React.FC = ({\n data,\n coordinates,\n isShowDamsModeSelected,\n}) => {\n if (!coordinates?.latitude || !coordinates.longitude) return null\n\n return (\n \n \n {isShowDamsModeSelected ? : }\n \n \n )\n}\n","import MapboxDraw from '@mapbox/mapbox-gl-draw'\nimport useDeepCompareEffect from 'react-use/lib/useDeepCompareEffect'\nimport { useControl } from 'react-map-gl'\nimport { useCallback, useEffect } from 'react'\n\nimport { DrawingOption, Features } from 'features/MainRouter/features/Map/types'\nimport { DrawMode } from 'features/MainRouter/features/Map/hooks/useDrawingTool'\n\nimport { useEditorStyles } from './hooks'\n\ninterface Props {\n mapOptions: ConstructorParameters[0]\n mode: DrawMode\n features: Features\n drawingOption: DrawingOption\n onCreate: (evt: { features: Features }) => void\n onUpdate: (evt: { features: Features }) => void\n onDeleteFeature: (featureId: string) => void\n}\n\nexport const Control: React.FC = ({\n mapOptions,\n onCreate,\n onUpdate,\n onDeleteFeature,\n mode,\n features,\n drawingOption,\n}) => {\n const styles = useEditorStyles()\n\n const onSelectionChange = useCallback(\n ({ features: selectionFeatures }: { features: Features }) => {\n if (selectionFeatures?.length === 1 && selectionFeatures[0].id) {\n onDeleteFeature(selectionFeatures[0].id as string)\n }\n },\n [onDeleteFeature],\n )\n\n const control = useControl(\n ({ map }) => {\n map.on('draw.create', onCreate)\n map.on('draw.update', onUpdate)\n map.on('draw.selectionchange', onSelectionChange)\n return new MapboxDraw({ ...mapOptions, styles })\n },\n ({ map }) => {\n map.off('draw.create', onCreate)\n map.off('draw.update', onUpdate)\n map.off('draw.selectionchange', onSelectionChange)\n },\n )\n const drawControl = control as MapboxDraw\n\n useDeepCompareEffect(() => {\n // This is a workaraound to be able to delete a feature when selecting that option after\n // the feature is already selected\n if (drawingOption === 'delete') {\n drawControl.changeMode('simple_select')\n }\n\n if (drawingOption === 'hide') {\n drawControl.deleteAll()\n return\n }\n if (!features?.length) {\n drawControl.deleteAll()\n return\n }\n drawControl.set({\n type: 'FeatureCollection',\n features: features ?? [],\n })\n }, [features, drawingOption])\n\n useEffect(() => {\n switch (mode) {\n case 'simple_select': {\n drawControl.changeMode(mode)\n break\n }\n default: {\n drawControl.changeMode(mode)\n }\n }\n }, [drawControl, mode])\n\n return null\n}\n","import { useTheme } from 'styled-components'\n\nexport const useEditorStyles = () => {\n const { colors } = useTheme()\n\n const styles = [\n // ACTIVE (being drawn)\n // line stroke\n {\n id: 'gl-draw-line',\n type: 'line',\n filter: ['all', ['==', '$type', 'LineString'], ['!=', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': `${colors.white}`,\n 'line-width': 2,\n },\n },\n // polygon fill\n {\n id: 'gl-draw-polygon-fill',\n type: 'fill',\n filter: ['all', ['==', '$type', 'Polygon'], ['!=', 'mode', 'static']],\n paint: {\n 'fill-opacity': 0,\n },\n },\n // polygon mid points\n {\n id: 'gl-draw-polygon-midpoint',\n type: 'circle',\n filter: ['all', ['==', '$type', 'Point'], ['==', 'meta', 'midpoint']],\n paint: {\n 'circle-radius': 4,\n 'circle-color': '#fbb03b',\n },\n },\n // polygon outline stroke\n // This doesn't style the first edge of the polygon, which uses the line stroke styling instead\n {\n id: 'gl-draw-polygon-stroke-active',\n type: 'line',\n filter: ['all', ['==', '$type', 'Polygon'], ['!=', 'mode', 'static']],\n layout: {\n 'line-cap': 'round',\n 'line-join': 'round',\n },\n paint: {\n 'line-color': `${colors.white}`,\n 'line-width': 2,\n },\n },\n // vertex point halos\n {\n id: 'gl-draw-polygon-and-line-vertex-halo-active',\n type: 'circle',\n filter: ['all', ['==', 'meta', 'vertex'], ['==', '$type', 'Point'], ['!=', 'mode', 'static']],\n paint: {\n 'circle-radius': 5,\n 'circle-color': '#FFF',\n },\n },\n // vertex points\n {\n id: 'gl-draw-polygon-and-line-vertex-active',\n type: 'circle',\n filter: ['all', ['==', 'meta', 'vertex'], ['==', '$type', 'Point'], ['!=', 'mode', 'static']],\n paint: {\n 'circle-radius': 3,\n 'circle-color': `${colors.primary}`,\n },\n },\n ]\n\n return styles\n}\n","import ReactMapGL, {\n Source,\n Layer,\n ViewStateChangeEvent,\n useMap,\n MapLayerMouseEvent,\n} from 'react-map-gl'\nimport bbox from '@turf/bbox'\nimport { Feature, multiLineString, Polygon, polygon, Properties } from '@turf/helpers'\nimport React, { useCallback } from 'react'\nimport { useTheme } from 'styled-components'\nimport { isNil } from 'lodash'\n\nimport { MAP } from 'consts'\nimport { config } from 'config'\nimport { Lot, MapIndex, SatelliteProviders, WeatherType } from 'types'\nimport { GeoUtils } from 'utils'\nimport { AreaTooltip } from 'features/MainRouter/components'\nimport { Dam } from 'hooks/useQueryDams/api'\nimport { useImageUrl } from 'hooks'\n\nimport { InformationPopup, Control } from './components'\nimport { DrawArea, DrawingOption, Features, PopupInfo, ToolMode } from '../../types'\nimport { DrawMode } from '../../hooks/useDrawingTool'\nimport { AreaSource } from '../AreaSource'\nimport { UnavailableIcon } from '../UnavailableIcon'\nimport { useLotMapDateInformation } from '../../hooks'\n\ninterface Props {\n selectedLots: Lot[]\n viewport: {\n latitude: number\n longitude: number\n zoom: number\n }\n onHandleMove: (evt: ViewStateChangeEvent) => void\n onHandleClick: (evt: MapLayerMouseEvent) => void\n onHandleMouseEnter: (evt: MapLayerMouseEvent) => void\n onHandleMouseLeave: (evt: MapLayerMouseEvent) => void\n popupInfo?: PopupInfo\n interactiveMapLayersIds: string[]\n isCompareModeSelected: boolean\n drawMode: DrawMode\n cursor: string\n onHandleCreateFeature: ({ features }: { features: Features }) => void\n onHandleUpdateFeature: ({ features }: { features: Features }) => void\n onHandleDeleteFeature: (featureId: string) => void\n drawnAreasFeatures: Feature[]\n drawingOption: DrawingOption\n selectedCalendarDate?: string\n rtkLots?: { id: number; rtk?: number[][][] }[]\n selectedMapIndex: MapIndex\n drawnAreas: DrawArea[]\n toolMode: ToolMode\n showRtk: boolean\n showPopup: boolean\n popupCoordinates?: number[]\n dams: Dam[]\n isShowDamsModeSelected: boolean\n selectedSatellite: SatelliteProviders\n}\n\nexport const DefaultMap: React.FC = ({\n onHandleMove,\n popupInfo,\n interactiveMapLayersIds,\n isCompareModeSelected,\n viewport,\n onHandleClick,\n onHandleMouseLeave,\n onHandleMouseEnter,\n drawMode,\n cursor,\n onHandleCreateFeature,\n onHandleUpdateFeature,\n onHandleDeleteFeature,\n drawnAreasFeatures,\n drawingOption,\n selectedCalendarDate,\n selectedLots,\n rtkLots,\n selectedMapIndex,\n drawnAreas,\n toolMode,\n showRtk,\n showPopup,\n popupCoordinates,\n dams,\n isShowDamsModeSelected,\n selectedSatellite,\n}) => {\n const { colors } = useTheme()\n const { map } = useMap()\n const { getLotMapDateInformation, getHarvestDateIsValid } = useLotMapDateInformation()\n const { getUrlWithToken } = useImageUrl()\n const showIcon = viewport.zoom > MAP.ZOOM.ICONS.ENABLED\n const iconSize = viewport.zoom > MAP.ZOOM.ICONS.CLOSE ? 'medium' : 'small'\n\n const getLotMapDateData = useCallback(\n (lot: Lot, date: string) => {\n const lotDateData = getLotMapDateInformation({\n lot,\n selectedMapIndex,\n selectedDate: date,\n selectedSatellite,\n })\n\n return {\n isCloudy: lotDateData?.isCloudy,\n lotImageUrl: lotDateData?.url,\n unavailableImage: !lotDateData,\n unavailableIndex: !lotDateData?.isIndexAvailable,\n }\n },\n [getLotMapDateInformation, selectedMapIndex, selectedSatellite],\n )\n\n const getDamMapDateData = useCallback(\n (dam: Dam, selectedDate?: string) => {\n const selectedDamDate = dam.calendar.find(date => date.date === selectedDate)\n const isImageAvailable =\n selectedDamDate?.mapUrls.waterSurface?.isAvailable &&\n selectedDamDate?.mapUrls?.waterSurface?.url\n\n const imageUrl = isImageAvailable\n ? getUrlWithToken(selectedDamDate!.mapUrls!.waterSurface!.url!)\n : undefined\n\n const weatherType = selectedDamDate?.mapUrls.waterSurface?.weatherType\n const isCloudy = weatherType === WeatherType.CLOUDY\n const unavailableImage = !isImageAvailable && isNil(weatherType)\n\n return {\n imageUrl,\n isCloudy,\n unavailableImage,\n }\n },\n [getUrlWithToken],\n )\n\n return (\n \n \n\n {isShowDamsModeSelected\n ? map &&\n dams.map(dam => {\n const { imageUrl, isCloudy, unavailableImage } = getDamMapDateData(\n dam,\n selectedCalendarDate,\n )\n\n const { latitude, longitude } = GeoUtils.getPolygonCentroid(dam.area.coordinates)\n\n return (\n \n \n {config.isSentinelImageryOn && imageUrl && (\n \n \n \n )}\n {(isCloudy || unavailableImage) && showIcon && (\n \n )}\n \n )\n })\n : selectedCalendarDate &&\n selectedLots.map(lot => {\n const { isCloudy, lotImageUrl, unavailableImage, unavailableIndex } = getLotMapDateData(\n lot,\n selectedCalendarDate,\n )\n const isLotHarvested = getHarvestDateIsValid(\n lot.riceLot.harvestDate ?? undefined,\n selectedCalendarDate,\n )\n const rtk = rtkLots?.find(rtkLot => rtkLot.id === lot.id)?.rtk\n\n const lotRtk = rtk ? multiLineString(rtk) : undefined\n\n const { latitude, longitude } = GeoUtils.getPolygonCentroid(lot.area.coordinates)\n\n const isHarvested =\n (lot.riceLot.isHarvested && isLotHarvested && unavailableImage) ?? false\n const showUnavailableIcon =\n showIcon && (isCloudy || unavailableImage || unavailableIndex || isHarvested)\n\n return (\n \n {map && (\n \n )}\n\n {config.isSentinelImageryOn && lotImageUrl && (\n \n \n \n )}\n {!drawnAreas.length && toolMode !== 'draw' && showRtk && lotRtk && (\n \n \n \n )}\n {showUnavailableIcon && (\n \n )}\n \n )\n })}\n {showPopup && popupInfo && (\n \n )}\n {drawingOption !== 'hide' &&\n drawnAreas?.map(drawnArea => )}\n \n )\n}\n","import styled from 'styled-components'\n\nimport {\n SeasonFieldsSelect as BaseSeasonFieldsSelect,\n CropsSelect as BaseCropsSelect,\n VarietiesSelect as BaseVarietiesSelect,\n} from 'components'\n\nimport { LotsSelect as BaseLotsSelect } from './LotsSelect'\n\nexport { MapPopup } from './MapPopup'\nexport { Toolbar } from './Toolbar'\nexport { CompareImagesMap } from './CompareImagesMap'\nexport { TopSplitPanels } from './TopSplitPanels'\nexport { DefaultMap } from './DefaultMap'\n\nexport const SeasonFieldsSelect = styled(BaseSeasonFieldsSelect)`\n min-width: 100px;\n max-width: 150px;\n @media (min-width: 900px) {\n max-width: 250px;\n }\n .ant-select-selector {\n font-size: 13px;\n color: white;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n`\n\nexport const LotsSelect = styled(BaseLotsSelect)`\n min-width: 100px;\n max-width: 150px;\n @media (min-width: 900px) {\n max-width: 250px;\n }\n .ant-select-selector {\n font-size: 13px;\n color: white;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n`\n\nexport const CropsSelect = styled(BaseCropsSelect)`\n min-width: 100px;\n max-width: 150px;\n @media (min-width: 900px) {\n max-width: 250px;\n }\n .ant-select-selector {\n font-size: 13px;\n color: white !important;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-clear {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n`\n\nexport const MapContainer = styled.div`\n width: calc(100vw - 80px);\n height: calc(100vh - 48px);\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n`\nexport const MainContainer = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n`\nexport const Container = styled.div`\n position: relative;\n height: 100%;\n`\n\nexport const VarietiesSelect = styled(BaseVarietiesSelect)<{ disabled: boolean }>`\n min-width: 100px;\n max-width: 150px;\n @media (min-width: 900px) {\n max-width: 250px;\n }\n .ant-select-selector {\n font-size: 13px;\n color: ${({ theme, disabled }) =>\n disabled ? theme.colors.grey3 : theme.colors.white} !important;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n .ant-select-clear {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-selection-item {\n font-weight: 600 !important;\n }\n`\n","import { ActiveCompanyContext } from 'contexts'\nimport { useSeason } from 'hooks'\n\nimport { BaseFieldsSelect } from '../BaseFieldsSelect'\nimport { SelectField } from '../types'\n\ninterface Props {\n onChange: (field: SelectField) => void\n defaultId?: number\n className?: string\n dropdownClassName?: string\n popupMatchSelectWidth?: boolean\n}\n\nexport const SeasonFieldsSelect: React.FC = ({\n onChange,\n defaultId,\n className,\n dropdownClassName,\n popupMatchSelectWidth,\n}) => {\n const { activeSeasonId } = ActiveCompanyContext.useActiveCompanyContext()\n const { data, loading } = useSeason(activeSeasonId)\n\n const fields = data?.season.seasonFields.filter(({ field }) => field).map(({ field }) => field!)\n\n return (\n \n )\n}\n","import React, { useState, useEffect, useCallback, useRef } from 'react'\nimport { useMap as useReactMapGl, MapLayerMouseEvent, ViewStateChangeEvent } from 'react-map-gl'\nimport { isNil, parseInt as toInt } from 'lodash'\nimport bbox from '@turf/bbox'\nimport center from '@turf/center'\nimport centroid from '@turf/centroid'\nimport { points, polygon } from '@turf/helpers'\nimport MapboxCompare from 'mapbox-gl-compare'\nimport 'mapbox-gl-compare/dist/mapbox-gl-compare.css'\nimport i18next from 'i18next'\nimport { useNavigate } from 'react-router-dom'\nimport { useTranslation } from 'react-i18next'\n\nimport { LANGUAGE, MAP } from 'consts'\nimport type { SelectField } from 'components/fields-selects/types'\nimport { ActiveCompanyContext } from 'contexts'\nimport { useHasCompanyOrFieldsOrLots, useQueryParams } from 'hooks'\nimport { LocaleLanguage, WeatherType } from 'types'\nimport { Header, SeasonSelect } from 'components'\nimport { GeoUtils } from 'utils'\n\nimport {\n SeasonFieldsSelect,\n LotsSelect,\n MapPopup,\n Toolbar,\n CompareImagesMap,\n MapContainer,\n MainContainer,\n Container,\n TopSplitPanels,\n DefaultMap,\n CropsSelect,\n VarietiesSelect,\n} from './components'\nimport { PopupInfo } from './types'\nimport { useMap, useDrawingTool, useTools, useLotMapDateInformation } from './hooks'\nimport { LotsUtils } from './utils'\n\nconst SELECT_NEW_UI_CLASSNAME = 'custom-select-dropdown'\n\nexport const Map: React.FC = () => {\n const navigate = useNavigate()\n const { t } = useTranslation('map')\n const { noLots, noFields, loading } = useHasCompanyOrFieldsOrLots()\n useEffect(() => {\n if (loading) return\n if (noFields || noLots) navigate('/dashboard', { replace: true })\n }, [loading, navigate, noFields, noLots])\n\n const { activeSeasonId, setActiveSeason } = ActiveCompanyContext.useActiveCompanyContext()\n const { map, compareMap } = useReactMapGl()\n const [cursor, setCursor] = useState('grab')\n const [showRtk, setShowRtk] = useState(false)\n\n const [field, setField] = useState()\n\n const { setToolMode, toolMode, isCompareModeSelected, isShowDamsModeSelected } = useTools()\n\n const {\n isCalendarEmpty,\n calendarDatesIndices,\n dates,\n setDates,\n selectedCalendarDate,\n setSelectedCalendarDate,\n selectedCompareCalendarDate,\n setSelectedCompareCalendarDate,\n selectedCompareMapIndex,\n setSelectedCompareMapIndex,\n lots,\n isLotsLoading,\n rtkLots,\n isRtkLoading,\n selectedLotsRtkList,\n selectedLots,\n weatherDataForAllLots,\n selectedMapIndex,\n setSelectedMapIndex,\n grainHumidityHasNotEmergenceDaysActivation,\n emergenceDaysActivationIndices,\n setCompareMapData,\n interactiveMapLayersIds,\n isGrainHumidityAvailable,\n isWaterAvailable,\n isWeedsAvailable,\n isEmergenceAvailable,\n selectedCropId,\n selectedLotId,\n handleCropChange,\n handleLotsChange,\n isDisabledSeason,\n selectedVarietyId,\n handleVarietyChange,\n lotsOptions,\n setSelectedVarietyId,\n setSelectedCropId,\n dams,\n damsCalendar,\n weatherDataForDams,\n selectedSatellite,\n selectedCompareSatellite,\n handleCompareSelectedSatelliteChange,\n compareCalendarDateIndices,\n availableSatellites,\n popupInfo,\n setPopupInfo,\n handleSatelliteChange,\n onCompareImagesMapClick,\n setIsCalendarOpen,\n } = useMap({\n seasonId: activeSeasonId,\n fieldId: field?.id,\n fieldName: field?.name,\n isShowDamsModeSelected,\n })\n const query = useQueryParams()\n const defaultFieldId = toInt(query.get('fieldId') ?? '')\n const defaultLotId = toInt(query.get('lotId') ?? '')\n\n const [viewport, setViewport] = useState({\n latitude: MAP.DEFAULT_CENTER.LATITUDE,\n longitude: MAP.DEFAULT_CENTER.LONGITUDE,\n zoom: MAP.ZOOM.DEFAULT,\n })\n const { getLotMapDateInformation } = useLotMapDateInformation()\n const onChangeLotTransition = useCallback(\n ({ longitude, latitude, zoom }: { longitude?: number; latitude?: number; zoom?: number }) => {\n if (!longitude || !latitude) return\n map?.flyTo({\n center: [longitude, latitude],\n duration: MAP.DEFAULT_TRANSITION.transitionDuration,\n zoom,\n essential: true,\n })\n },\n [map],\n )\n\n const lotTransitionTimer: { current: NodeJS.Timeout | null } = useRef(null)\n\n useEffect(() => {\n return () => (lotTransitionTimer.current ? clearTimeout(lotTransitionTimer.current) : undefined)\n }, [])\n\n useEffect(() => {\n if (selectedLots.length) {\n const locationsCoordinates = selectedLots.map(lot => lot.location.coordinates)\n const features = points(locationsCoordinates)\n const lotsCenter = center(features)\n // this conditionals are in order to set close zoom and move lot only when user change lot and not when get more dates\n const latitude = !dates.newDates ? lotsCenter.geometry.coordinates[1] : viewport.latitude\n const longitude = !dates.newDates ? lotsCenter.geometry.coordinates[0] : viewport.longitude\n const zoom =\n viewport.zoom === MAP.ZOOM.DEFAULT || !dates.newDates ? MAP.ZOOM.CLOSE : viewport.zoom\n if (map) {\n // This time out is to prevent interruption of transitions when switching between companies.\n lotTransitionTimer.current = setTimeout(() => {\n onChangeLotTransition({ longitude, latitude, zoom })\n }, 0)\n }\n setDates(prevDates => ({\n ...prevDates,\n newDates: false,\n }))\n setPopupInfo(undefined)\n }\n\n return () => (lotTransitionTimer.current ? clearTimeout(lotTransitionTimer.current) : undefined)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedLots, map])\n\n const {\n drawnAreas,\n drawMode,\n onCreateFeature,\n onUpdateFeature,\n onDeleteAllFeatures,\n onDeleteFeature,\n drawnAreasFeatures,\n drawingOption,\n onDrawingOptionSelected,\n showDropdown,\n toggleDropdownVisibility,\n } = useDrawingTool(toolMode, setToolMode)\n\n const [popupCoordinates, setPopupCoordinates] = useState()\n\n const handleChange = useCallback(\n (newField: SelectField) => {\n setField(newField)\n onDeleteAllFeatures()\n setSelectedVarietyId(undefined)\n setSelectedCropId(undefined)\n },\n [onDeleteAllFeatures, setSelectedVarietyId, setSelectedCropId],\n )\n\n const onMove = useCallback((evt: ViewStateChangeEvent) => setViewport(evt.viewState), [])\n\n // This is a workaround to track when we should show popup or not based on if we are drawing or deleting with the drawing tool\n const [showPopup, setShowPopup] = useState(true)\n\n const onMouseEnter = useCallback(() => {\n setShowPopup(drawingOption !== 'draw' && drawingOption !== 'delete')\n setCursor('pointer')\n }, [drawingOption])\n\n const onMouseLeave = useCallback(() => setCursor('grab'), [])\n\n const setDamPopupInfo = useCallback(\n (id: string, damCalendarDate?: string) => {\n const dam = dams?.find(damToFind => damToFind.id === Number(id))\n const calendarDate = dam?.calendar.find(\n date => date.date === (damCalendarDate ?? selectedCalendarDate),\n )\n if (!calendarDate || !dam) return\n\n const bboxLot = GeoUtils.bboxCoords(bbox(dam.area))\n const polygonLot = polygon(dam.area.coordinates)\n const polygonCenter = centroid(polygonLot)\n setPopupCoordinates([polygonCenter.geometry.coordinates[0], bboxLot[0][1] + 0.003])\n setCursor('grab')\n\n const isImageAvailable = calendarDate?.mapUrls.waterSurface?.isAvailable\n const weatherType = calendarDate?.mapUrls.waterSurface?.weatherType\n const isCloudy = weatherType === WeatherType.CLOUDY\n const unavailableImage = !isImageAvailable && isNil(weatherType)\n\n setPopupInfo({\n name: dam.name,\n id: dam.id,\n area: calendarDate.mapUrls.waterSurface?.area ?? undefined,\n volume: calendarDate.mapUrls.waterSurface?.volume ?? undefined,\n percentage: calendarDate.mapUrls.waterSurface?.percentage ?? undefined,\n resource: 'dam',\n isCloudy,\n unavailableImage,\n })\n },\n [dams, selectedCalendarDate, setPopupInfo],\n )\n\n const getLotPopupInformation = useCallback(\n (lotId: number) => {\n const lot = selectedLots?.find(lotToFind => lotToFind.id === Number(lotId))\n if (!lot) return undefined\n\n const isHarvested = !!lot.riceLot.isHarvested\n\n const calendarDateInfo = lot.riceLot.calendar.find(\n calendarDate => calendarDate.date === selectedCalendarDate,\n )\n\n const irrigationIndicator = LotsUtils.getCalendarDateByProvider(\n selectedSatellite,\n 'irrigation',\n calendarDateInfo?.mapUrls,\n )\n\n const chlorophyllIndicator = LotsUtils.getCalendarDateByProvider(\n selectedSatellite,\n 'chlorophyll',\n calendarDateInfo?.mapUrls,\n )\n\n const lotDateData = getLotMapDateInformation({\n lot,\n selectedDate: selectedCalendarDate,\n selectedMapIndex,\n selectedSatellite,\n })\n return {\n isHarvested,\n irrigationIndicator: irrigationIndicator?.indicator,\n chlorophyllIndicator: chlorophyllIndicator?.indicator,\n lotDateData,\n lot,\n daysSinceEmergence: calendarDateInfo?.daysSinceEmergence ?? undefined,\n }\n },\n [\n getLotMapDateInformation,\n selectedCalendarDate,\n selectedLots,\n selectedMapIndex,\n selectedSatellite,\n ],\n )\n\n const onDefaultMapClick = useCallback(\n (event: MapLayerMouseEvent) => {\n setIsCalendarOpen(false)\n if (popupInfo) {\n setPopupInfo(undefined)\n return\n }\n\n const { features } = event\n\n const feature = features?.[0]\n if (!feature) return\n\n const { id } = feature.layer\n\n if (isShowDamsModeSelected) {\n setDamPopupInfo(id)\n return\n }\n\n const lotPopupInformation = getLotPopupInformation(Number(id))\n\n if (!lotPopupInformation) return\n\n const {\n chlorophyllIndicator,\n irrigationIndicator,\n isHarvested,\n lot,\n lotDateData,\n daysSinceEmergence,\n } = lotPopupInformation\n\n const isImageAvailable = !!lotDateData\n\n const bboxLot = GeoUtils.bboxCoords(bbox(lot.area))\n const polygonLot = polygon(lot.area.coordinates)\n const polygonCenter = centroid(polygonLot)\n setPopupCoordinates([polygonCenter.geometry.coordinates[0], bboxLot[0][1] + 0.003])\n setCursor('grab')\n const language = LANGUAGE[i18next.resolvedLanguage as LocaleLanguage]\n setPopupInfo({\n name: lot.name,\n daysSinceEmergencyDate: daysSinceEmergence,\n variety: lot.variety?.locales[language],\n size: lot.size,\n irrigationIndicator,\n chlorophyllIndicator,\n isHarvested,\n id: lot.id,\n crop: lot.crop.locales[language],\n resource: 'lot',\n isCloudy: lotDateData?.isCloudy,\n unavailableImage: !isImageAvailable,\n unavailableIndex: !lotDateData?.isIndexAvailable,\n })\n },\n [\n setIsCalendarOpen,\n popupInfo,\n isShowDamsModeSelected,\n setPopupInfo,\n setDamPopupInfo,\n getLotPopupInformation,\n ],\n )\n\n const compareMapRef = useRef()\n\n const onHandleCompareImages = () => {\n setToolMode(prevMode => (prevMode === 'compare' ? null : 'compare'))\n }\n\n const handleDams = () => {\n setShowPopup(false)\n setPopupInfo(undefined)\n setToolMode(prevMode => (prevMode === 'show-dams' ? null : 'show-dams'))\n }\n\n useEffect(() => {\n if (!isCompareModeSelected) {\n compareMapRef.current?.remove()\n }\n }, [isCompareModeSelected])\n\n const onCompareMapRender = () => {\n if (!map || !compareMap) return\n setCompareMapData()\n compareMapRef.current = new MapboxCompare(compareMap, map, '#comparison-container')\n }\n\n const handleSeasonChange = (id?: number) => {\n setField(undefined)\n setActiveSeason(id)\n }\n\n const headerItems = [\n ,\n ,\n lot.crop.id)}\n disabled={isShowDamsModeSelected}\n />,\n {\n if (!selectedCropId) return true\n return lot.crop.id === selectedCropId\n })\n .map(lot => lot.variety?.id)}\n />,\n ,\n ]\n\n const onHandleCalendarDateChange = (date?: string) => {\n setSelectedCalendarDate(date)\n\n if (!popupInfo?.id) return\n\n if (popupInfo.resource === 'dam') {\n setDamPopupInfo(popupInfo.id.toString(), date)\n return\n }\n\n const lotPopupInformation = getLotPopupInformation(Number(popupInfo.id))\n\n if (!lotPopupInformation) return\n\n const { chlorophyllIndicator, irrigationIndicator, lotDateData, daysSinceEmergence } =\n lotPopupInformation\n\n const isImageAvailable = !!lotDateData\n\n setPopupInfo(prevState => {\n const newInfo = {\n ...prevState,\n irrigationIndicator,\n chlorophyllIndicator,\n daysSinceEmergencyDate: daysSinceEmergence,\n isCloudy: lotDateData?.isCloudy,\n unavailableImage: !isImageAvailable,\n unavailableIndex: !lotDateData?.isIndexAvailable,\n } as PopupInfo\n\n return newInfo\n })\n }\n\n return (\n \n
\n \n {(isDisabledSeason || isLotsLoading || isCalendarEmpty) && (\n \n )}\n\n \n \n show ? setShowRtk(true) : setShowRtk(prevState => !prevState)\n }\n isShowDamsModeSelected={isShowDamsModeSelected}\n handleDams={handleDams}\n isDamsToolAvailable={!!dams?.length}\n />\n\n \n \n {isCompareModeSelected && (\n \n )}\n \n \n \n )\n}\n","import { useState } from 'react'\n\nimport { ToolMode } from '../types'\n\nexport const useTools = () => {\n const [toolMode, setToolMode] = useState(null)\n const isCompareModeSelected = toolMode === 'compare'\n const isShowDamsModeSelected = toolMode === 'show-dams'\n\n return {\n toolMode,\n setToolMode,\n isCompareModeSelected,\n isShowDamsModeSelected,\n }\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type { LotHistoricData, LotHistoricDataVariables } from './types/LotHistoricData'\n\nexport const LOT_HISTORIC_DATA = gql`\n query LotHistoricData(\n $companyName: String!\n $fieldName: String!\n $lotName: String!\n $varietyName: String!\n $yield: String!\n $yieldUnit: String!\n $fromTime: DateTime!\n $toTime: DateTime!\n $emergenceDate: DateTime!\n $area: PolygonInput!\n ) {\n lotHistoricData(\n companyName: $companyName\n fieldName: $fieldName\n lotName: $lotName\n varietyName: $varietyName\n yield: $yield\n yieldUnit: $yieldUnit\n fromTime: $fromTime\n toTime: $toTime\n emergenceDate: $emergenceDate\n area: $area\n ) {\n url\n }\n }\n`\n","import {\n Layout,\n Col,\n Row,\n Typography,\n Input,\n Upload,\n Button,\n Form,\n notification,\n DatePicker,\n} from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport * as yup from 'yup'\nimport { Controller, useForm } from 'react-hook-form'\nimport { yupResolver } from '@hookform/resolvers/yup'\nimport { UploadChangeParam } from 'antd/lib/upload'\nimport { UploadFile } from 'antd/lib/upload/interface'\nimport { useState } from 'react'\nimport { Feature, Polygon } from '@turf/helpers'\nimport { useLazyQuery } from '@apollo/client'\nimport dayjs from 'dayjs'\nimport styled from 'styled-components'\n\nimport { InputTitle } from 'components'\nimport { GraphQLUtils, MiscUtils } from 'utils'\nimport { DATE_FORMATS } from 'consts'\n\nimport { LotHistoricData, LotHistoricDataVariables, LOT_HISTORIC_DATA } from './api'\n\nconst { Content: AntContent } = Layout\nconst { Title, Text, Link } = Typography\n\nconst Content = styled(AntContent)`\n height: 100%;\n overflow: auto;\n`\n\ninterface FormType {\n companyName: string\n fieldName: string\n lotName: string\n varietyName: string\n yield: string\n yieldUnit: string\n fromTime: Date\n toTime: Date\n emergenceDate: Date\n area: Feature\n}\n\nexport const InternalMetrics: React.FC = () => {\n const { t } = useTranslation('internal-metrics')\n const { t: commonT } = useTranslation('common')\n\n const [filename, setFilename] = useState('')\n\n const [getHistoricData, { loading, data }] = useLazyQuery<\n LotHistoricData,\n LotHistoricDataVariables\n >(LOT_HISTORIC_DATA, {\n onError: GraphQLUtils.errorHandler,\n })\n\n const validationSchema: yup.ObjectSchema = yup.object().shape({\n companyName: yup.string().required(commonT('validations.required')),\n fieldName: yup.string().required(commonT('validations.required')),\n lotName: yup.string().required(commonT('validations.required')),\n varietyName: yup.string().required(commonT('validations.required')),\n yield: yup.string().required(commonT('validations.required')),\n yieldUnit: yup.string().required(commonT('validations.required')),\n fromTime: yup.date().required(commonT('validations.required')),\n toTime: yup\n .date()\n .required(commonT('validations.required'))\n .min(yup.ref('fromTime'), commonT('validations.earlierDate')),\n emergenceDate: yup.date().required(commonT('validations.required')),\n area: yup.object().required(commonT('validations.required')) as yup.ObjectSchema<\n FormType['area']\n >,\n })\n\n const { control, handleSubmit, setValue } = useForm({\n resolver: yupResolver(validationSchema),\n })\n\n const handleKml = async (\n { file: uploadFile }: UploadChangeParam,\n onChange: (area: Feature) => void,\n ) => {\n const file = uploadFile as unknown as File\n const geoJson = await MiscUtils.kmlFileToGeoJson(file)\n\n if (geoJson.features.length > 1) {\n notification.error({\n message: t('maxLotsError'),\n })\n return\n }\n\n const feature = geoJson.features[0]\n\n setFilename(file.name)\n if (feature.properties.name) {\n setValue('lotName', feature.properties.name)\n }\n onChange(geoJson.features[0])\n }\n\n return (\n \n {t('title')}\n \n (\n \n false}\n onChange={info => handleKml(info, onChange)}\n showUploadList={false}\n accept=\".kml\"\n >\n \n \n \n )}\n />\n {filename}\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n onChange(event.target.value)}\n />\n \n )}\n />\n \n \n \n (\n \n {\n if (date) onChange(date)\n }}\n />\n \n )}\n />\n \n (\n \n {\n if (date) {\n onChange(date)\n return\n }\n onChange(null)\n }}\n />\n \n )}\n />\n \n \n \n (\n \n {\n if (date) {\n onChange(date)\n return\n }\n onChange(null)\n }}\n />\n \n )}\n />\n \n \n getHistoricData({\n variables: {\n companyName: form.companyName,\n fieldName: form.fieldName,\n lotName: form.lotName,\n varietyName: form.varietyName,\n yield: form.yield,\n yieldUnit: form.yieldUnit,\n fromTime: dayjs(form.fromTime).format(DATE_FORMATS.DATE),\n toTime: dayjs(form.toTime).format(DATE_FORMATS.DATE),\n emergenceDate: dayjs(form.emergenceDate).format(DATE_FORMATS.DATE),\n area: form.area.geometry,\n },\n }),\n )}\n >\n {t('generateCsvButton')}\n \n {data?.lotHistoricData.url && (\n \n {t('downloadLink')}\n \n )}\n \n )\n}\n","/* eslint-disable i18next/no-literal-string */\nimport { Form } from 'antd'\nimport React from 'react'\nimport { Control, Controller } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\n\nimport { Upload } from 'components'\nimport { ConversionUtils } from 'utils'\nimport { useCountries } from 'hooks'\nimport { COUNTRIES } from 'consts'\n\nimport { FormContainer, FormItemContainer, Input, Select, Image } from '../../..'\n\ninterface Props {\n image?: string\n control: Control<{ companyName: string; country: string }>\n onImageChange: (imageResult: string, file: File) => void\n onInputNameBlur?: () => void\n}\n\nexport const CreateCompanyForm: React.FC = ({\n image,\n control,\n onImageChange,\n onInputNameBlur,\n}) => {\n const { t } = useTranslation('company-settings')\n const { countries, loading } = useCountries()\n\n return (\n \n \n \n (\n \n {\n onInputNameBlur?.()\n onBlur()\n }}\n {...restFieldProps}\n onChange={event => onChange(ConversionUtils.autoCapitalize(event.target.value))}\n />\n \n )}\n />\n \n \n (\n \n {\n onInputNameBlur?.()\n onBlur()\n }}\n {...restFieldProps}\n onChange={event => onChange(event)}\n popupClassName=\"custom-select-dropdown\"\n >\n {countries?.map(country => (\n \n \n {country.name}\n \n ))}\n \n \n )}\n />\n \n \n )\n}\n","import { useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Space } from 'antd'\nimport { useNavigate } from 'react-router-dom'\n\nimport { Button } from 'components'\nimport { useUser } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\nimport { CountryId } from 'types'\n\nimport { useCreateCompany, useCreateCompanyForm } from '../../../../hooks'\nimport { CreateCompanyForm } from './components'\n\nexport const CreateCompanyCard = () => {\n const { t } = useTranslation('onboarding')\n const navigate = useNavigate()\n const { setIsNewCompany } = ActiveCompanyContext.useActiveCompanyContext()\n const user = useUser()\n\n const [image, setImage] = useState()\n const [imageFile, setImageFile] = useState()\n const { control, handleSubmit } = useCreateCompanyForm()\n\n const onSuccess = () => {\n navigate('/dashboard', { replace: true })\n setIsNewCompany(true)\n }\n\n const { createCompany, loading } = useCreateCompany(onSuccess)\n\n return (\n \n {\n setImage(imageResult)\n setImageFile(file)\n }}\n />\n\n \n createCompany(\n { name: companyName, country: country as CountryId, logo: imageFile! },\n user.id,\n ),\n )}\n >\n {t('firstCompany.buttonText')}\n \n \n )\n}\n","/* eslint-disable i18next/no-literal-string */\nimport { Form, Space } from 'antd'\nimport React from 'react'\nimport { Control, Controller } from 'react-hook-form'\nimport { useTranslation } from 'react-i18next'\n\nimport { ConversionUtils } from 'utils'\nimport { useCountries, useCurrentUser, useFeatures, usePermissions } from 'hooks'\nimport { COUNTRIES } from 'consts'\n\nimport {\n FormContainer as FormSectionContainer,\n FormItemContainer,\n Input,\n Select,\n Image,\n} from '../../..'\n\ninterface Props {\n control: Control<{\n companyName: string\n country: string\n governmentId?: string\n subregion: number\n commercialExecutiveId?: number\n region?: number\n }>\n organizationCountry: string\n selectedRegion?: number\n regionOptions?: { label: string; value: number }[]\n subregionOptions: { label: string; value: number }[]\n commercialExecutivesOptions?: { label: string; value: number }[]\n isCommercialExecutivesLoading?: boolean\n isRegionsLoading?: boolean\n isSubregionsLoading?: boolean\n}\n\nexport const CreateClientForm: React.FC = ({\n control,\n subregionOptions,\n organizationCountry,\n selectedRegion,\n commercialExecutivesOptions,\n regionOptions,\n isCommercialExecutivesLoading,\n isRegionsLoading,\n isSubregionsLoading,\n}) => {\n const { t } = useTranslation('company-settings')\n const { t: commonT } = useTranslation('common')\n const { countries, loading } = useCountries()\n const { user } = useCurrentUser()\n const { organizationFeatures } = useFeatures()\n const { permissions } = usePermissions()\n\n const getLocalizedNumber = (value?: string) => {\n if (!value) return ''\n const onlyNumbers = ConversionUtils.keepOnlyNumbers(value)\n if (!onlyNumbers) return ''\n const localizedNumber = commonT('systemsFormat.localizeNumber', {\n val: onlyNumbers,\n })\n return localizedNumber\n }\n\n return (\n \n \n \n (\n \n onChange(ConversionUtils.autoCapitalize(event.target.value))}\n />\n \n )}\n />\n \n {organizationFeatures.crm?.enabled && (\n \n (\n \n onChange(getLocalizedNumber(event.target.value))}\n />\n \n )}\n />\n \n )}\n \n {organizationFeatures.crm?.enabled && (\n \n \n (\n \n onChange(event)}\n options={commercialExecutivesOptions}\n />\n \n )}\n />\n \n \n )}\n\n \n \n (\n \n onChange(event)}\n popupClassName=\"custom-select-dropdown\"\n >\n {countries?.map(country => (\n \n \n {country.name}\n \n ))}\n \n \n )}\n />\n \n \n (\n \n onChange(event)}\n options={regionOptions}\n defaultValue={selectedRegion}\n value={selectedRegion}\n popupClassName=\"custom-select-dropdown\"\n />\n \n )}\n />\n \n \n (\n \n onChange(event)}\n options={subregionOptions}\n popupClassName=\"custom-select-dropdown\"\n />\n \n )}\n />\n \n \n \n )\n}\n","import { Space } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useNavigate } from 'react-router-dom'\n\nimport { Button } from 'components'\nimport { ConversionUtils } from 'utils'\nimport { useCreateOrganizationCompany } from 'features/MainRouter/hooks'\nimport { CountryId } from 'types'\n\nimport { CreateClientForm } from './components'\n\nexport const CreateClientCard = () => {\n const { t } = useTranslation('onboarding')\n const navigate = useNavigate()\n\n const onSuccess = () => {\n navigate('/dashboard', { replace: true })\n }\n\n const {\n createCompany,\n loading,\n control,\n handleSubmit,\n selectedRegion,\n subregionOptions,\n commercialExecutivesOptions,\n permissions,\n user,\n regionsOptions,\n isCommercialExecutivesLoading,\n isRegionsLoading,\n isSubregionsLoading,\n } = useCreateOrganizationCompany({ onSuccess })\n\n return (\n \n \n \n createCompany(\n {\n name: companyName,\n country: country as CountryId,\n organizationId: user.organizationRole?.organization.id,\n governmentId: governmentId\n ? ConversionUtils.keepOnlyNumbers(governmentId)\n : undefined,\n subregionId: subregion,\n },\n permissions.isOrganizationAdmin && commercialExecutiveId\n ? commercialExecutiveId\n : user.id,\n ),\n )}\n >\n {t('firstClient.buttonText')}\n \n \n )\n}\n","import styled from 'styled-components'\nimport {\n Layout as AntLayout,\n Input as AntInput,\n Select as AntSelect,\n Space,\n Typography,\n} from 'antd'\n\nexport { CreateCompanyCard } from './CreateCompanyCard'\nexport { CreateClientCard } from './CreateClientCard'\n\nexport const Layout = styled(AntLayout)`\n height: 100%;\n align-items: center;\n overflow-y: scroll;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]};\n padding: 25px 50px;\n @media (min-width: 576px) {\n padding: 40px 100px;\n }\n @media (min-width: 992px) {\n padding: 60px 200px;\n }\n`\nexport const Container = styled(Space)`\n max-width: 700px;\n`\nconst { Title: AntTitle } = Typography\n\nexport const Title = styled(AntTitle)`\n color: ${({ theme }) => theme.colors.white} !important;\n font-weight: 600 !important;\n`\nexport const Description = styled(Title)`\n font-weight: 400 !important;\n line-height: 26px !important;\n`\nexport const FormContainer = styled.div`\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: 35px;\n justify-content: space-between;\n @media (min-width: 992px) {\n flex-wrap: nowrap;\n }\n`\nexport const FormItemContainer = styled.div`\n height: 50px;\n width: 100%;\n`\nexport const Input = styled(AntInput)`\n font-size: 13px;\n font-weight: 600;\n color: ${({ theme }) => theme.colors.white};\n width: 100%;\n height: 50px;\n border: none;\n border-radius: 0;\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.white}`};\n background-color: transparent;\n box-shadow: none !important;\n`\nexport const Select = styled(AntSelect)`\n width: 100%;\n .ant-select-selector {\n font-size: 13px;\n font-weight: 600;\n color: white !important;\n align-items: center;\n height: 50px !important;\n border: none !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n border-bottom: 2px solid white !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n` as typeof AntSelect\nexport const Image = styled.img`\n background-position: center;\n width: 26px;\n height: 26px;\n margin-right: 13px;\n`\n","import { useTranslation } from 'react-i18next'\nimport { Row, Button } from 'antd'\n\nimport { LogoColoredWithTextIcon } from 'assets/icons'\nimport { useAuth, usePermissions } from 'hooks'\n\nimport {\n Layout,\n Container,\n Title,\n Description,\n CreateClientCard,\n CreateCompanyCard,\n} from './components'\n\nexport const Onboarding = () => {\n const { t } = useTranslation('onboarding')\n\n const { permissions } = usePermissions()\n const { logout } = useAuth()\n\n const translationType = permissions.isAnOrganizationUser ? 'firstClient' : 'firstCompany'\n\n return (\n \n \n \n
\n {t(`${translationType}.title`)}\n {t(`${translationType}.description`)}\n
\n {permissions.isAnOrganizationUser ? : }\n \n \n \n
\n
\n )\n}\n","import { gql } from '@apollo/client'\n\nexport type { DeliveryMills } from './types/DeliveryMills'\n\nexport const DELIVERY_MILLS = gql`\n query DeliveryMills {\n organization {\n id\n mills {\n name\n id\n }\n }\n }\n`\n","import { Select } from 'antd'\nimport { useTranslation } from 'react-i18next'\nimport { useMemo } from 'react'\nimport { useQuery } from '@apollo/client'\n\nimport { DELIVERY_MILLS, DeliveryMills } from './api'\n\ninterface Props {\n disabled?: boolean\n onChange: (deliveryMillId?: number) => void\n value?: number\n}\n\nexport const DeliveryMillSelect: React.FC = ({ disabled, onChange, value }) => {\n const { t } = useTranslation('common')\n\n const { data, loading } = useQuery(DELIVERY_MILLS)\n\n const options = useMemo(() => {\n return (\n data?.organization.mills?.map(deliveryMill => {\n return { label: deliveryMill.name, value: deliveryMill.id }\n }) ?? []\n )\n }, [data])\n\n return (\n \n )\n}\n","import { Input } from 'antd'\nimport { InputHTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\ninterface BallProps {\n $backgroundColor?: string\n}\nconst Ball = styled.div`\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: ${({ $backgroundColor }) => $backgroundColor};\n`\n\nconst StyledInput = styled(Input)`\n border: none;\n`\n\ninterface Props {\n ballBackground?: string\n}\n\nexport const InputRender: React.FC> = ({\n ballBackground,\n ...props\n}) => {\n return (\n }\n />\n )\n}\n","import { Table as AntTable, Input } from 'antd'\nimport styled from 'styled-components'\n\nimport {\n VarietiesSelect as BaseVarietiesSelect,\n CropsSelect as BaseCropsSelect,\n DatePicker as BaseDatePicker,\n} from 'components'\nimport { DATE_FORMATS } from 'consts'\n\nexport { DeliveryMillSelect } from './DeliveryMillSelect'\nexport { InputRender } from './InputRender'\n\nexport const StyledInput = styled(Input)`\n width: 100%;\n\n > .ant-input {\n border-radius: 0;\n }\n`\n\nexport const DatePicker = styled(BaseDatePicker).attrs({\n format: DATE_FORMATS.FULL_DATE,\n})`\n width: 100%;\n padding: 7px;\n`\nexport const StyledTable = styled(AntTable)`\n & .ant-table-cell {\n padding: 5px !important;\n }\n\n & .ant-table-tbody > tr > td {\n border-bottom: unset;\n }\n\n & th {\n border-bottom: ${({ theme }) => `2px solid ${theme.colors.grey3} !important`};\n background: ${({ theme }) => theme.colors.transparent} !important;\n border-radius: 0px !important;\n text-align: center !important;\n font-family: Inter;\n font-size: 14px;\n font-weight: 400;\n }\n & td:nth-child(even) {\n background: ${({ theme }) => theme.colors.grey2} !important;\n }\n .ant-table-tbody {\n & tr:last-child {\n & td:nth-child(even) {\n border-bottom-left-radius: ${({ theme }) => theme.foundation.borderRadius};\n border-bottom-right-radius: ${({ theme }) => theme.foundation.borderRadius};\n }\n }\n }\n & .ant-table-cell-scrollbar {\n box-shadow: none;\n }\n\n .ant-table-cell-fix-left {\n background: ${({ theme }) => theme.colors.grey1} !important;\n }\n\n .ant-table-row .ant-table-cell {\n > span > span {\n color: ${({ theme }) => theme.colors.black};\n }\n }\n` as typeof AntTable\n\nexport const VarietiesSelect = styled(BaseVarietiesSelect)`\n width: 100%;\n`\nexport const CropsSelect = styled(BaseCropsSelect)`\n width: 100%;\n`\n","export const COLUMNS = {\n COMPANY: 'company-name',\n FIELD_NAME: 'field-name',\n LOT_NAME: 'lot-name',\n SEASON_NAME: 'season-name',\n EMERGENCE_DATE: 'emergence',\n HARVEST_DATE: 'harvest',\n FIRST_IRRIGATION_START_DATE: 'irrigation-start',\n FIRST_IRRIGATION_END_DATE: 'irrigation-end',\n DIFFERENTIATION_DATE: 'differentiation',\n FLOWERING_DATE: 'flowering',\n PHYSIOLOGICAL_MATURITY_DATE: 'physiological-maturity',\n YIELD: 'yield',\n PREPARATION_DATE: 'preparation',\n BURNING_DATE: 'burning',\n EAR_APPEARANCE_DATE: 'ear-appearance',\n PLANTING_DATE: 'planting',\n VARIETY: 'variety',\n PREVIOUS_CROP: 'prev-crop',\n CROP: 'crop',\n PRODUCTION_TYPE: 'production-type',\n ABANDONED_SIZE: 'abandoned-size',\n DELIVERY_CONDITION: 'delivery-condition',\n DELIVERY_MILL: 'delivery-mill',\n ESTIMATED_YIELD: 'estimated-yield',\n}\n","/* eslint-disable camelcase */\nimport { gql } from '@apollo/client'\n\nexport type {\n SeasonLotsVariables,\n SeasonLots,\n SeasonLots_seasonLots_results as SeasonLot,\n} from './types/SeasonLots'\n\nexport const SEASON_LOTS = gql`\n query SeasonLots($startRange: DateTime!, $endRange: DateTime!) {\n seasonLots(startRange: $startRange, endRange: $endRange) {\n results {\n id\n name\n size\n previousCrop {\n id\n }\n variety {\n id\n }\n crop {\n id\n }\n riceLot {\n id\n preparationDate\n burningDate\n plantingDate\n emergenceDate\n firstIrrigationStartDate\n firstIrrigationEndDate\n differentiationDate\n floweringDate\n earAppearanceDate\n physiologicalMaturityDate\n harvestDate\n estimatedYield {\n lotValue\n }\n yield\n emergenceUpdateType\n plantingUpdateType\n floweringUpdateType\n harvestUpdateType\n preparationUpdateType\n burningUpdateType\n earAppearanceUpdateType\n differentiationUpdateType\n daysSinceEmergence\n isHarvested\n }\n season {\n id\n name\n }\n company {\n id\n name\n country {\n id\n }\n }\n field {\n id\n name\n }\n productionType\n abandonedSize\n deliveryCondition\n deliveryMill {\n id\n }\n }\n }\n }\n`\n","import { useMemo, useState } from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { TableProps } from 'antd/lib/table'\nimport { difference, uniq, uniqBy } from 'lodash'\nimport { Row, Tooltip } from 'antd'\nimport dayjs from 'dayjs'\nimport { useTheme } from 'styled-components'\n\nimport { DateUtils, LotUtils } from 'utils'\nimport { AbandonedSizeInput, EllipsisText } from 'components'\nimport {\n useUpdateRiceLot,\n useUpdateLot,\n useUpdateTypeStyles,\n useProductionType,\n useDeliveryCondition,\n} from 'hooks'\nimport { HistoricalSeason } from 'types'\n\nimport {\n VarietiesSelect,\n CropsSelect,\n DatePicker,\n StyledTable,\n StyledInput,\n DeliveryMillSelect,\n InputRender,\n} from './components'\nimport { COLUMNS } from '../consts'\nimport { useSeasonLots } from './hooks'\nimport { DataType, ColumnType, FieldFilter, LotFilter } from './types'\n\ninterface Props {\n selectedColumns: string[]\n isAnOrganizationUser: boolean\n onFilterLots: (filteredLotIds?: number[]) => void\n selectedHistoricalSeason?: HistoricalSeason\n isFieldEntityFlagEnabled: boolean\n}\n\nexport const Table: React.FC = ({\n selectedColumns,\n onFilterLots,\n selectedHistoricalSeason,\n isAnOrganizationUser,\n isFieldEntityFlagEnabled,\n}) => {\n const [filteredLotIds, setFilterLotIds] = useState()\n const [filteredFieldIds, setFilteredFieldIds] = useState()\n const [filteredCompanyIds, setFilteredCompanyIds] = useState()\n\n const { t } = useTranslation('lots-management')\n const { t: commonT } = useTranslation('common')\n const { updateRiceLot } = useUpdateRiceLot()\n const { colors } = useTheme()\n const { updateLot } = useUpdateLot()\n const { dataSource, allcompanyValues, allFieldValues, allLotValues } = useSeasonLots({\n endRange: selectedHistoricalSeason?.endRange,\n startRange: selectedHistoricalSeason?.startRange,\n })\n\n const fieldFiltersList = useMemo(() => {\n if (!filteredCompanyIds?.length) return allFieldValues\n const filteredFieldsByCompanies = allFieldValues.filter(field =>\n filteredCompanyIds.includes(field.companyId),\n )\n return filteredFieldsByCompanies\n }, [allFieldValues, filteredCompanyIds])\n\n const lotFilterList = useMemo(() => {\n if (!filteredFieldIds?.length && !filteredCompanyIds) return allLotValues\n\n const filteredLotsByCompanies = allLotValues.filter(lot =>\n filteredCompanyIds?.includes(lot.companyId),\n )\n const filteredLotsByFields = allLotValues.filter(lot => filteredFieldIds?.includes(lot.fieldId))\n\n return filteredFieldIds?.length ? filteredLotsByFields : filteredLotsByCompanies\n }, [filteredFieldIds, filteredCompanyIds, allLotValues])\n\n const { getBallBackground } = useUpdateTypeStyles()\n\n const { productionTypeMap } = useProductionType()\n const { deliveryConditionMap } = useDeliveryCondition()\n\n const defaultColumns: ColumnType[] = [\n {\n key: COLUMNS.COMPANY,\n title: isAnOrganizationUser ? t('table.columns.farmerName') : t('table.columns.companyName'),\n fixed: 'left',\n render: ({ companyName }: DataType) => (\n \n ),\n width: '150px',\n filters: allcompanyValues,\n onFilter: (value, record) => record.companyId === value,\n sorter: {\n compare: (a, b) => a.companyName.localeCompare(b.companyName),\n multiple: 4,\n },\n filteredValue: filteredCompanyIds ?? [],\n },\n {\n key: COLUMNS.LOT_NAME,\n title: t('table.columns.lotName'),\n fixed: 'left',\n render: ({ lotName }: DataType) => (\n \n ),\n width: '150px',\n filters: lotFilterList,\n onFilter: (value, record) => record.lotId === value,\n sorter: {\n compare: (a, b) => a.lotName.localeCompare(b.lotName),\n multiple: 1,\n },\n filteredValue: filteredLotIds ?? [],\n },\n ]\n\n const selectableColumns: ColumnType[] = [\n {\n key: COLUMNS.FIELD_NAME,\n title: t('table.columns.fieldName'),\n render: ({ fieldName }: DataType) => (\n \n ),\n filters: fieldFiltersList,\n onFilter: (value, record) => record.fieldId === value,\n sorter: {\n compare: (a, b) => a.fieldName.localeCompare(b.fieldName),\n multiple: 3,\n },\n width: '150px',\n hide: !isFieldEntityFlagEnabled,\n filteredValue: filteredFieldIds ?? [],\n },\n {\n key: COLUMNS.SEASON_NAME,\n title: t('table.columns.seasonName'),\n render: ({ seasonName }: DataType) => (\n \n ),\n sorter: {\n compare: (a, b) => a.seasonName.localeCompare(b.seasonName),\n multiple: 2,\n },\n width: '150px',\n },\n {\n key: COLUMNS.PREVIOUS_CROP,\n title: t('table.columns.previousCrop'),\n width: '153px',\n render: ({ lotId, previousCropId }: DataType) => (\n \n updateLot({\n variables: {\n updateLotDto: { id: lotId, previousCropId: value?.id },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.PREPARATION_DATE,\n title: t('table.columns.preparation'),\n width: '153px',\n render: ({ riceLotId, preparationDate, preparationUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n preparationDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.BURNING_DATE,\n title: t('table.columns.burning'),\n width: '153px',\n render: ({ riceLotId, burningDate, burningUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n burningDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.PLANTING_DATE,\n title: t('table.columns.planting'),\n width: '153px',\n render: ({ riceLotId, plantingDate, plantingUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n plantingDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.EMERGENCE_DATE,\n title: t('table.columns.emergence'),\n width: '153px',\n render: ({ riceLotId, emergenceDate, emergenceUpdateType }: DataType) => (\n (\n \n )}\n defaultValue={emergenceDate ? dayjs(emergenceDate) : undefined}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n emergenceDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.FIRST_IRRIGATION_START_DATE,\n title: t('table.columns.initialIrrigation'),\n width: '153px',\n render: ({ riceLotId, firstIrrigationStartDate }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n firstIrrigationStartDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.FIRST_IRRIGATION_END_DATE,\n title: t('table.columns.irrigationCompleted'),\n width: '153px',\n render: ({ riceLotId, firstIrrigationEndDate }: DataType) => (\n (\n \n )}\n defaultValue={firstIrrigationEndDate ? dayjs(firstIrrigationEndDate) : undefined}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n firstIrrigationEndDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.DIFFERENTIATION_DATE,\n title: t('table.columns.panicleInitiation'),\n width: '153px',\n render: ({ riceLotId, differentiationDate, differentiationUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n differentiationDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.FLOWERING_DATE,\n title: t('table.columns.flowering'),\n width: '153px',\n render: ({ riceLotId, floweringDate, floweringUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n floweringDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.PHYSIOLOGICAL_MATURITY_DATE,\n title: t('table.columns.maturation'),\n width: '153px',\n render: ({ riceLotId, physiologicalMaturityDate }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n physiologicalMaturityDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.EAR_APPEARANCE_DATE,\n title: t('table.columns.earAppearance'),\n width: '153px',\n render: ({ riceLotId, earAppearanceDate, earAppearanceUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n earAppearanceDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.HARVEST_DATE,\n title: t('table.columns.harvest'),\n width: '153px',\n render: ({ riceLotId, harvestDate, harvestUpdateType }: DataType) => (\n (\n \n )}\n onChange={value =>\n updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: {\n harvestDate: DateUtils.formatValue(value ? value.toDate() : null),\n },\n },\n })\n }\n />\n ),\n },\n {\n key: COLUMNS.CROP,\n title: t('table.columns.crop'),\n width: '153px',\n render: ({ lotId, cropId }: DataType) => {\n return (\n \n \n \n \n \n )\n },\n },\n {\n key: COLUMNS.VARIETY,\n title: t('table.columns.variety'),\n width: '153px',\n render: ({ lotId, cropId, varietyId, companyId, countryId }: DataType) => (\n {\n if (!variety) return\n updateLot({\n variables: {\n updateLotDto: { id: lotId, varietyId: variety.id },\n },\n })\n }}\n />\n ),\n },\n {\n key: COLUMNS.ESTIMATED_YIELD,\n title: t('table.columns.estimatedYield'),\n width: '120px',\n render: ({ estimatedYield, riceLotId, size }: DataType) => {\n return (\n ) => {\n const newEstimatedYield = event.currentTarget.value\n return updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: { estimatedYield: Number(newEstimatedYield) * size },\n },\n })\n }}\n />\n )\n },\n },\n {\n key: COLUMNS.YIELD,\n title: t('table.columns.yield'),\n width: '110px',\n render: ({ yield: yieldValue, riceLotId, size }: DataType) => (\n ) => {\n const newYield = event.currentTarget.value\n return updateRiceLot({\n variables: {\n id: riceLotId,\n updateRiceLotDTO: { yield: Number(newYield) * size },\n },\n })\n }}\n />\n ),\n },\n {\n key: COLUMNS.PRODUCTION_TYPE,\n title: t('table.columns.productionType'),\n width: '180px',\n render: ({ productionType }: DataType) => (\n \n ),\n },\n {\n key: COLUMNS.ABANDONED_SIZE,\n title: t('table.columns.abandonedSize'),\n width: '180px',\n render: ({ lotId, abandonedSize }: DataType) => {\n return (\n \n )\n },\n },\n {\n key: COLUMNS.DELIVERY_CONDITION,\n title: t('table.columns.deliveryCondition'),\n width: '160px',\n render: ({ deliveryCondition }: DataType) => (\n \n ),\n },\n {\n key: COLUMNS.DELIVERY_MILL,\n title: t('table.columns.deliveryMill'),\n width: '160px',\n render: ({ lotId, deliveryMillId }: DataType) => {\n return (\n {\n updateLot({\n variables: { updateLotDto: { id: lotId, deliveryMillId: mill ?? null } },\n })\n }}\n />\n )\n },\n },\n ]\n\n const columns = selectableColumns.filter(selectableColumn => {\n return selectedColumns.includes(selectableColumn.key as string) && !selectableColumn.hide\n })\n\n const resetFiltersIds = () => {\n setFilteredCompanyIds(undefined)\n setFilteredFieldIds(undefined)\n setFilterLotIds(undefined)\n }\n\n const handleChange: TableProps['onChange'] = (\n _,\n filters,\n ___,\n tableCurrentDataSource,\n ) => {\n const lotsIds = tableCurrentDataSource.currentDataSource.map(filteredLot => filteredLot.lotId)\n const {\n 'company-name': companiesFilter,\n 'field-name': fieldsFilter,\n 'lot-name': lotsFilter,\n } = filters\n\n const lotsTableFilter = lotsFilter ? (lotsFilter as number[]) : undefined\n const fieldsTableFilter = fieldsFilter ? (fieldsFilter as number[]) : undefined\n const companiesTableFilter = companiesFilter ? (companiesFilter as number[]) : undefined\n\n onFilterLots(lotsIds)\n\n if (\n lotsIds.length === dataSource.length ||\n (filteredCompanyIds?.length && !companiesTableFilter)\n ) {\n resetFiltersIds()\n return\n }\n\n const selectedFieldFilters: FieldFilter[] = []\n fieldsTableFilter?.forEach(fieldId => {\n const fieldItem = allFieldValues.find(field => fieldId === field.value)\n if (fieldItem) selectedFieldFilters.push(fieldItem)\n })\n\n const companiesFields = uniqBy(selectedFieldFilters, 'companyId').map(\n ({ companyId }) => companyId,\n )\n\n const selectedLotFilters: LotFilter[] = []\n lotsTableFilter?.forEach(lotId => {\n const lotItem = allLotValues.find(lot => lotId === lot.value)\n if (lotItem) selectedLotFilters.push(lotItem)\n })\n\n const lotCompanies = uniqBy(selectedLotFilters, 'companyId').map(({ companyId }) => companyId)\n\n const selectedCompanies = uniq([\n ...companiesFields,\n ...(companiesTableFilter ?? []),\n ...lotCompanies,\n ])\n\n const lotFields = uniqBy(selectedLotFilters, 'fieldId').map(({ fieldId }) => fieldId)\n const selectedFields = uniq([...lotFields, ...(fieldsTableFilter ?? [])])\n\n if (difference(filteredCompanyIds, companiesTableFilter ?? []).length) {\n setFilteredFieldIds(undefined)\n setFilterLotIds(undefined)\n setFilteredCompanyIds(companiesTableFilter)\n return\n }\n\n if (difference(filteredFieldIds, fieldsTableFilter ?? []).length) {\n setFilteredFieldIds(selectedFields)\n setFilterLotIds(undefined)\n return\n }\n\n setFilteredCompanyIds(selectedCompanies)\n setFilteredFieldIds(selectedFields)\n setFilterLotIds(lotsTableFilter)\n }\n\n return (\n !column.hide), ...columns]}\n dataSource={dataSource}\n rowKey={lot => lot.lotId}\n scroll={{ x: 1300 }}\n onChange={handleChange}\n pagination={{\n pageSizeOptions: ['5', '10', '20'],\n defaultPageSize: 10,\n showSizeChanger: true,\n }}\n />\n )\n}\n","import { useQuery } from '@apollo/client'\nimport { uniqBy } from 'lodash'\n\nimport { SEASON_LOTS, SeasonLots, SeasonLotsVariables } from './api'\nimport { DataType, FieldFilter, Filters, LotFilter } from '../../types'\n\ninterface Props {\n startRange?: string\n endRange?: string\n}\n\nexport const useSeasonLots = ({ startRange, endRange }: Props) => {\n const { data, loading } = useQuery(SEASON_LOTS, {\n fetchPolicy: 'cache-and-network',\n variables: {\n endRange: endRange!,\n startRange: startRange!,\n },\n skip: !startRange || !endRange,\n })\n\n const allCompaniesFilters: Filters[] = []\n const allFieldsFilters: FieldFilter[] = []\n const allLotsFilters: LotFilter[] = []\n\n const dataSource: DataType[] =\n data?.seasonLots.results.map(seasonLot => {\n allCompaniesFilters.push({ value: seasonLot.company.id, text: seasonLot.company.name })\n allFieldsFilters.push({\n value: seasonLot.field.id,\n text: seasonLot.field.name,\n companyId: seasonLot.company.id,\n })\n allLotsFilters.push({\n value: seasonLot.id,\n text: seasonLot.name,\n companyId: seasonLot.company.id,\n fieldId: seasonLot.field.id,\n })\n return {\n companyName: seasonLot.company.name,\n companyId: seasonLot.company.id,\n fieldName: seasonLot.field.name,\n fieldId: seasonLot.field.id,\n seasonName: seasonLot.season.name,\n seasonId: seasonLot.season.id,\n lotName: seasonLot.name,\n varietyId: seasonLot.variety?.id,\n plantingDate: seasonLot.riceLot.plantingDate ?? undefined,\n emergenceDate: seasonLot.riceLot.emergenceDate ?? undefined,\n harvestDate: seasonLot.riceLot.harvestDate ?? undefined,\n preparationDate: seasonLot.riceLot.preparationDate ?? undefined,\n burningDate: seasonLot.riceLot.burningDate ?? undefined,\n earAppearanceDate: seasonLot.riceLot.earAppearanceDate ?? undefined,\n differentiationDate: seasonLot.riceLot.differentiationDate ?? undefined,\n firstIrrigationEndDate: seasonLot.riceLot.firstIrrigationEndDate ?? undefined,\n firstIrrigationStartDate: seasonLot.riceLot.firstIrrigationStartDate ?? undefined,\n floweringDate: seasonLot.riceLot.floweringDate ?? undefined,\n physiologicalMaturityDate: seasonLot.riceLot.physiologicalMaturityDate ?? undefined,\n estimatedYield: seasonLot.riceLot.estimatedYield.lotValue ?? undefined,\n yield: seasonLot.riceLot.yield ?? undefined,\n riceLotId: seasonLot.riceLot.id,\n lotId: seasonLot.id,\n cropId: seasonLot.crop.id,\n previousCropId: seasonLot.previousCrop?.id,\n productionType: seasonLot.productionType ?? undefined,\n abandonedSize: seasonLot.abandonedSize ?? undefined,\n deliveryCondition: seasonLot.deliveryCondition ?? undefined,\n deliveryMillId: seasonLot.deliveryMill?.id,\n emergenceUpdateType: seasonLot.riceLot.emergenceUpdateType ?? undefined,\n plantingUpdateType: seasonLot.riceLot.plantingUpdateType ?? undefined,\n floweringUpdateType: seasonLot.riceLot.floweringUpdateType ?? undefined,\n harvestUpdateType: seasonLot.riceLot.harvestUpdateType ?? undefined,\n preparationUpdateType: seasonLot.riceLot.preparationUpdateType ?? undefined,\n burningUpdateType: seasonLot.riceLot.burningUpdateType ?? undefined,\n earAppearanceUpdateType: seasonLot.riceLot.earAppearanceUpdateType ?? undefined,\n differentiationUpdateType: seasonLot.riceLot.differentiationUpdateType ?? undefined,\n size: seasonLot.size,\n countryId: seasonLot.company.country.id,\n }\n }) ?? []\n\n const allcompanyValues = uniqBy(allCompaniesFilters, 'value')\n const allFieldValues = uniqBy(allFieldsFilters, 'value')\n const allLotValues = uniqBy(allLotsFilters, 'value')\n\n return {\n seasonLots: data?.seasonLots.results,\n loading,\n dataSource,\n allcompanyValues,\n allFieldValues,\n allLotValues,\n }\n}\n","import { Select as AntSelect } from 'antd'\nimport styled from 'styled-components'\n\nimport { useLotsManagementColumns } from './hooks'\n\ninterface Props {\n placeholder: string\n onChange: (columns: string[]) => void\n selectedColumns: string[]\n className?: string\n defaultValue?: number\n isAnAdminUser: boolean\n}\n\nconst Select = styled(AntSelect)`\n min-width: 220px;\n .ant-select-selector {\n height: 38px;\n font-size: 13px;\n font-weight: 600;\n color: white !important;\n border: none !important;\n box-shadow: none !important;\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-selection-item {\n background-color: ${({ theme }) => theme.colors.new.baseColor[850]} !important;\n }\n .ant-select-arrow {\n color: ${({ theme }) => theme.colors.new.baseColor[400]};\n }\n` as typeof AntSelect\n\nconst SELECT_NEW_UI_CLASSNAME = 'custom-select-dropdown'\n\nexport const ColumnsSelect: React.FC = ({\n placeholder,\n onChange,\n selectedColumns,\n isAnAdminUser,\n}) => {\n const { columns } = useLotsManagementColumns(isAnAdminUser)\n\n return (\n {\n if (!option) return false\n return (\n option.label?.toString().toLocaleLowerCase().includes(input.toLocaleLowerCase()) ?? false\n )\n }}\n mode=\"multiple\"\n listHeight={300}\n maxTagCount=\"responsive\"\n options={columns}\n />\n )\n}\n","import { useTranslation } from 'react-i18next'\nimport { orderBy } from 'lodash'\n\nimport { useCompanyMilestones, usePermissions } from 'hooks'\nimport { RiceLotStatus } from 'types'\n\nimport { COLUMNS } from '../../../consts'\n\nexport const useLotsManagementColumns = (isAnAdminUser: boolean) => {\n const { t } = useTranslation('lots-management')\n\n const { activeCompanyMilestones } = useCompanyMilestones()\n const { permissions } = usePermissions()\n\n const allColumns = [\n {\n label: t('table.columns.fieldName'),\n value: COLUMNS.FIELD_NAME,\n order: 1,\n enabled: !!permissions.fieldEntity,\n },\n {\n label: t('table.columns.seasonName'),\n value: COLUMNS.SEASON_NAME,\n order: 2,\n enabled: true,\n },\n {\n label: t('table.columns.previousCrop'),\n value: COLUMNS.PREVIOUS_CROP,\n order: 3,\n enabled: true,\n },\n {\n label: t('table.columns.preparation'),\n value: COLUMNS.PREPARATION_DATE,\n order: 4,\n enabled: activeCompanyMilestones?.includes(RiceLotStatus.PREPARATION),\n },\n {\n label: t('table.columns.burning'),\n value: COLUMNS.BURNING_DATE,\n order: 5,\n enabled: activeCompanyMilestones?.includes(RiceLotStatus.BURNING),\n },\n {\n label: t('table.columns.planting'),\n value: COLUMNS.PLANTING_DATE,\n order: 6,\n enabled: activeCompanyMilestones?.includes(RiceLotStatus.PLANTING),\n },\n {\n label: t('table.columns.emergence'),\n value: COLUMNS.EMERGENCE_DATE,\n order: 7,\n enabled: isAnAdminUser && activeCompanyMilestones?.includes(RiceLotStatus.EMERGENCE),\n },\n {\n label: t('table.columns.initialIrrigation'),\n value: COLUMNS.FIRST_IRRIGATION_START_DATE,\n order: 8,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.START_IRRIGATION),\n },\n {\n label: t('table.columns.irrigationCompleted'),\n value: COLUMNS.FIRST_IRRIGATION_END_DATE,\n order: 9,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.END_IRRIGATION),\n },\n {\n label: t('table.columns.panicleInitiation'),\n value: COLUMNS.DIFFERENTIATION_DATE,\n order: 10,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.DIFFERENTIATION),\n },\n {\n label: t('table.columns.flowering'),\n value: COLUMNS.FLOWERING_DATE,\n order: 11,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.FLOWERING),\n },\n {\n label: t('table.columns.earAppearance'),\n value: COLUMNS.EAR_APPEARANCE_DATE,\n order: 12,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.EAR_APPEARANCE),\n },\n {\n label: t('table.columns.maturation'),\n value: COLUMNS.PHYSIOLOGICAL_MATURITY_DATE,\n order: 13,\n enabled: activeCompanyMilestones.includes(RiceLotStatus.PHYSIOLOGICAL_MATURITY),\n },\n {\n label: t('table.columns.harvest'),\n value: COLUMNS.HARVEST_DATE,\n order: 14,\n enabled: true,\n },\n {\n label: t('table.columns.crop'),\n value: COLUMNS.CROP,\n order: 15,\n enabled: true,\n },\n { label: t('table.columns.variety'), value: COLUMNS.VARIETY, order: 16, enabled: true },\n {\n label: t('table.columns.estimatedYield'),\n value: COLUMNS.ESTIMATED_YIELD,\n order: 17,\n enabled: true,\n },\n { label: t('table.columns.yield'), value: COLUMNS.YIELD, order: 18, enabled: true },\n {\n label: t('table.columns.productionType'),\n value: COLUMNS.PRODUCTION_TYPE,\n order: 19,\n enabled: true,\n },\n {\n label: t('table.columns.abandonedSize'),\n value: COLUMNS.ABANDONED_SIZE,\n order: 20,\n enabled: true,\n },\n {\n label: t('table.columns.deliveryCondition'),\n value: COLUMNS.DELIVERY_CONDITION,\n order: 21,\n enabled: permissions.isAnOrganizationUser,\n },\n {\n label: t('table.columns.deliveryMill'),\n value: COLUMNS.DELIVERY_MILL,\n order: 22,\n enabled: permissions.isAnOrganizationUser,\n },\n ]\n\n const filteredColumns = allColumns.filter(column => column.enabled)\n\n const columns = orderBy(filteredColumns, 'order')\n\n return { columns }\n}\n","import { gql } from '@apollo/client'\n\nexport type { SeasonLotsExportVariables, SeasonLotsExport } from './types/SeasonLotsExport'\n\nexport const SEASON_LOTS_EXPORT = gql`\n query SeasonLotsExport($lotsIds: [Int!], $startRange: DateTime!, $endRange: DateTime!) {\n seasonLotsExport(lotsIds: $lotsIds, startRange: $startRange, endRange: $endRange) {\n url\n }\n }\n`\n","import { useTranslation } from 'react-i18next'\nimport { Button as AntButton } from 'antd'\nimport styled from 'styled-components'\nimport { useLazyQuery } from '@apollo/client'\n\nimport { GraphQLUtils } from 'utils'\nimport { HistoricalSeason } from 'types'\n\nimport { SEASON_LOTS_EXPORT, SeasonLotsExportVariables, SeasonLotsExport } from './api'\n\nconst Button = styled(AntButton)`\n min-width: 125px;\n`\n\ninterface Props {\n lotIds?: number[]\n selectedHistoricalSeason?: HistoricalSeason\n}\n\nexport const ExportButton: React.FC = ({ lotIds, selectedHistoricalSeason }) => {\n const { t } = useTranslation('lots-management')\n\n const [getSeasonLotsData, { loading }] = useLazyQuery<\n SeasonLotsExport,\n SeasonLotsExportVariables\n >(SEASON_LOTS_EXPORT, {\n onError: GraphQLUtils.errorHandler,\n onCompleted: response => window.open(response.seasonLotsExport.url),\n })\n\n return (\n {\n if (!selectedHistoricalSeason?.endRange || !selectedHistoricalSeason.startRange) return\n const { endRange, startRange } = selectedHistoricalSeason\n getSeasonLotsData({\n variables: {\n lotsIds: lotIds,\n endRange,\n startRange,\n },\n })\n }}\n >\n {t('buttonText')}\n \n )\n}\n","import { Col, Row } from 'antd'\nimport styled from 'styled-components'\n\nexport { Table } from './Table'\nexport { ColumnsSelect } from './ColumnsSelect'\nexport { ExportButton } from './ExportButton'\n\nexport const StyledRow = styled(Row)`\n height: 100%;\n`\n\nexport const FlexCol = styled(Col)`\n display: flex;\n align-items: center;\n`\n","import { useTranslation } from 'react-i18next'\nimport { useEffect, useState } from 'react'\nimport { Col, Row } from 'antd'\n\nimport { settingsImage } from 'assets/images'\nimport {\n InputTitle,\n Layout,\n GreyCard,\n UpdateTypeInformation,\n HistoricalSeasonSelect,\n} from 'components'\nimport { usePermissions } from 'hooks'\nimport { HistoricalSeason } from 'types'\n\nimport { ColumnsSelect, Table, ExportButton, StyledRow, FlexCol } from './components'\nimport { COLUMNS } from './components/consts'\n\nconst VIEWER_COLUMNS = [\n COLUMNS.FIELD_NAME,\n COLUMNS.SEASON_NAME,\n COLUMNS.VARIETY,\n COLUMNS.HARVEST_DATE,\n COLUMNS.YIELD,\n COLUMNS.ESTIMATED_YIELD,\n]\n\nconst ADMIN_COLUMNS = [COLUMNS.EMERGENCE_DATE, ...VIEWER_COLUMNS]\n\nconst ORGANIZATION_DEFAULT_COLUMNS = [\n COLUMNS.PRODUCTION_TYPE,\n COLUMNS.ABANDONED_SIZE,\n COLUMNS.DELIVERY_CONDITION,\n COLUMNS.DELIVERY_MILL,\n]\n\nexport const LotsManagement: React.FC = () => {\n const { t } = useTranslation('lots-management')\n const { permissions } = usePermissions()\n const { isAnOrganizationUser, fieldEntity, isCompanyAdminUser, isOrganizationAdmin } = permissions\n const isAnAdminUser = isCompanyAdminUser || isOrganizationAdmin\n const [selectedColumns, setSelectedColumns] = useState(\n isAnAdminUser ? ADMIN_COLUMNS : VIEWER_COLUMNS,\n )\n const [filteredLotIds, setFilteredLotIds] = useState()\n const [selectedHistoricalSeason, setSelectedHistoricalSeason] = useState()\n\n useEffect(() => {\n if (isAnOrganizationUser) {\n const columns = fieldEntity\n ? selectedColumns\n : selectedColumns.filter(column => column !== COLUMNS.FIELD_NAME)\n setSelectedColumns([...columns, ...ORGANIZATION_DEFAULT_COLUMNS])\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isAnOrganizationUser])\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { Routes, Route, useNavigate, Navigate, useLocation } from 'react-router-dom'\nimport { useEffect } from 'react'\nimport useUpdateEffect from 'react-use/lib/useUpdateEffect'\n\nimport { FullScreenLoader, ProtectedRoute } from 'components'\nimport { AmplitudeEventsName, OrganizationGeneralModuleFlag } from 'types'\nimport { useHasCompanyOrFieldsOrLots, useTrackImpression } from 'hooks'\nimport { ActiveCompanyContext } from 'contexts'\n\nimport { Layout, Sider, Content } from './components'\nimport {\n SideNavbar,\n SettingsRouter,\n DashboardRouter,\n Map,\n InternalMetrics,\n Onboarding,\n LotsManagement,\n} from './features'\nimport { MapContext } from './contexts'\n\nexport const MainRouter: React.FC = () => {\n const { activeCompanyId } = ActiveCompanyContext.useActiveCompanyContext()\n const { noCompany, loading } = useHasCompanyOrFieldsOrLots()\n const mapContextValue = MapContext.useValue()\n\n const navigate = useNavigate()\n const location = useLocation()\n\n useTrackImpression({\n eventName: AmplitudeEventsName.APP_OPENING,\n })\n\n useUpdateEffect(() => {\n const path = location.pathname.split('/')[1]\n\n navigate(`/${path}`)\n }, [activeCompanyId])\n\n useEffect(() => {\n if (noCompany) navigate('/onboarding', { replace: true })\n }, [navigate, noCompany])\n\n return loading ? (\n \n ) : (\n \n {!noCompany && (\n \n \n \n )}\n \n \n {noCompany && } />}\n } />\n \n \n \n \n \n }\n />\n } />\n } />\n } />\n } />\n \n \n \n )\n}\n","/* eslint-disable no-restricted-globals */\nimport { useEffect, useState } from 'react'\nimport { BrowserRouter, Route, Routes } from 'react-router-dom'\nimport { ApolloProvider } from '@apollo/client'\nimport { ThemeProvider } from 'styled-components'\nimport { ConfigProvider } from 'antd'\nimport { MapProvider } from 'react-map-gl'\nimport { init } from '@amplitude/analytics-browser'\n\nimport { theme, GlobalStyles, antdTheme } from 'styles'\nimport { ActiveCompanyContext, AuthContext } from 'contexts'\nimport { FullScreenLoader, PrivateRoute } from 'components'\nimport { useAuth, useBrowserLogout, useCurrentUser } from 'hooks'\nimport { ApolloService, I18NService } from 'services'\nimport { config } from 'config'\n\nimport { LoginRouter } from './LoginRouter'\nimport { MainRouter } from './MainRouter'\n\nconst apolloClient = ApolloService.buildApolloClient()\ninit(config.amplitudeKey!, undefined, { minIdLength: 1 })\n\nconst Router: React.FC = () => {\n const activeCompanyContextValue = ActiveCompanyContext.useValue()\n const { userToken, tokenLogin, userId } = useAuth(activeCompanyContextValue.resetStore)\n const [loadingApp, setLoadingApp] = useState(!!userToken)\n const { loading: loadingUser } = useCurrentUser()\n useBrowserLogout({\n resetActiveCompany: activeCompanyContextValue.resetStore,\n })\n const locale = I18NService.getAntdLocale()\n\n useEffect(() => {\n if (userToken && !userId) {\n const loginWithToken = async () => {\n await tokenLogin()\n setLoadingApp(false)\n }\n\n loginWithToken()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n // If app initialization or user are loading, we show a full screen loader. This way, we can\n // assume that when using the user in different parts of the app, we already have it.\n if (loadingApp || loadingUser) return \n\n return (\n \n \n } />\n \n \n \n \n \n }\n />\n \n \n )\n}\n\nexport const App: React.FC = () => {\n const authContextValue = AuthContext.useValue()\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n )\n}\n","import { useCallback, useEffect } from 'react'\nimport { useNavigate } from 'react-router-dom'\n\nimport { BROADCAST_CHANNEL } from 'consts'\n\nimport { useAuth } from './useAuth'\n\ninterface Props {\n resetActiveCompany: () => void\n}\n\nexport const useBrowserLogout = ({ resetActiveCompany }: Props) => {\n const { authChannel, clearUserData } = useAuth()\n const navigate = useNavigate()\n\n const authChannelHandler = useCallback(\n async (e: MessageEvent) => {\n if (e.data === BROADCAST_CHANNEL.AUTH.LOGOUT) {\n resetActiveCompany()\n await clearUserData()\n navigate('/login', { replace: true })\n }\n },\n [clearUserData, navigate, resetActiveCompany],\n )\n\n useEffect(() => {\n return () => {\n authChannel?.close()\n }\n }, [authChannel])\n\n useEffect(() => {\n authChannel?.addEventListener('message', authChannelHandler)\n\n return () => {\n authChannel?.removeEventListener('message', authChannelHandler)\n }\n }, [authChannel, authChannelHandler])\n}\n","import { ReportHandler } from 'web-vitals'\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry)\n getFID(onPerfEntry)\n getFCP(onPerfEntry)\n getLCP(onPerfEntry)\n getTTFB(onPerfEntry)\n })\n }\n}\n\nexport default reportWebVitals\n","import { createRoot } from 'react-dom/client'\nimport dayjs from 'dayjs'\nimport utc from 'dayjs/plugin/utc'\n\nimport 'antd/dist/reset.css'\nimport '@mapbox/mapbox-gl-geocoder/dist/mapbox-gl-geocoder.css'\nimport 'mapbox-gl/dist/mapbox-gl.css'\nimport 'react-phone-input-2/lib/bootstrap.css'\n\nimport { SentryService, I18NService } from './services'\nimport { App } from './features/App'\nimport reportWebVitals from './reportWebVitals'\n\nimport 'styles/theme/fonts.css'\n\nSentryService.init()\nI18NService.init()\n\ndayjs.extend(utc)\n\nconst container = document.getElementById('root')\nconst root = createRoot(container!)\nroot.render()\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals()\n"],"sourceRoot":""}