{"version":3,"sources":["utils/mock.ts","utils/wait.ts","__mocks__/account.ts","__mocks__/calendar.ts","__mocks__/chat.ts","__mocks__/customers.ts","__mocks__/invoices.ts","__mocks__/kanban.ts","__mocks__/mail.ts","__mocks__/notifications.ts","__mocks__/orders.ts","__mocks__/products.ts","__mocks__/project.ts","__mocks__/reports.ts","__mocks__/search.ts","__mocks__/social.ts","mixins/chartjs.ts","serviceWorker.ts","components/GlobalStyles.tsx","hooks/useScrollReset.ts","components/ScrollReset.tsx","components/CookiesNotification.tsx","components/GoogleAnalytics.tsx","theme/index.ts","components/AuthGuard.tsx","components/LoadingScreen.tsx","layouts/DashboardLayout/NavBar/NavItem.tsx","layouts/DashboardLayout/NavBar/index.tsx","layouts/DashboardLayout/TopBar/Account.tsx","layouts/DashboardLayout/TopBar/Settings.tsx","layouts/DashboardLayout/TopBar/AlternativeLogout.tsx","layouts/DashboardLayout/TopBar/index.tsx","layouts/DashboardLayout/index.tsx","layouts/MainLayout/TopBar.tsx","layouts/MainLayout/index.tsx","layouts/IframeLayout/NavBar/NavItem.tsx","layouts/IframeLayout/NavBar/index.tsx","layouts/IframeLayout/TopBar/Account.tsx","layouts/IframeLayout/TopBar/index.tsx","layouts/IframeLayout/index.tsx","routes.tsx","views/channel/PublicChannelDetailView/SearchBarMenu.tsx","views/channel/PublicChannelDetailView/PublicSearchBar.tsx","views/channel/PublicChannelDetailView/PublicLive.tsx","views/channel/PublicChannelDetailView/VideoPasswordDialog.tsx","views/channel/PublicChannelDetailView/PublicVideoBoxInfo.tsx","views/channel/PublicChannelDetailView/PublicVideoBox.tsx","views/channel/PublicChannelDetailView/ModelBlockModalSuscribe.tsx","views/channel/PublicChannelDetailView/PublicModelBox.tsx","views/channel/PublicChannelDetailView/FileBox.tsx","views/channel/PublicChannelDetailView/ExternalLinkBox.tsx","views/channel/PublicChannelDetailView/PublicContent.tsx","views/channel/PublicChannelDetailView/PublicInnerNavBar.tsx","views/channel/PublicChannelDetailView/PublicChannelViewInfo.tsx","views/channel/PublicChannelDetailView/PublicChannelViewTabs.tsx","views/channel/PublicChannelDetailView/PublicHeader.tsx","views/channel/PublicChannelDetailView/PublicHeaderBar.tsx","views/channel/PublicChannelDetailView/Footer.tsx","views/channel/PublicChannelDetailView/mobile/MobileLiveDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobileInformationRow.tsx","views/channel/PublicChannelDetailView/mobile/MobileInformationLink.tsx","views/channel/PublicChannelDetailView/mobile/MobileInformationDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobilePublicHeader.tsx","views/channel/PublicChannelDetailView/mobile/MobileSearchBar.tsx","views/channel/PublicChannelDetailView/mobile/MobileVideoPlayerModal.tsx","views/channel/PublicChannelDetailView/mobile/MobileMoreOptions.tsx","views/channel/PublicChannelDetailView/mobile/MobilePublicVideoBox.tsx","views/channel/PublicChannelDetailView/mobile/MobileMoreOptionsDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobileDrawerVideoCard.tsx","views/channel/PublicChannelDetailView/mobile/MobileDrawerModelCard.tsx","views/channel/PublicChannelDetailView/mobile/MobileDrawerFileCard.tsx","views/channel/PublicChannelDetailView/mobile/MobileDrawerExternalLinkCard.tsx","views/channel/PublicChannelDetailView/mobile/MobileSubsectionDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobileExternalLinkBox.tsx","views/channel/PublicChannelDetailView/mobile/MobileFileBox.tsx","views/channel/PublicChannelDetailView/mobile/MobilePublicModelBox.tsx","views/channel/PublicChannelDetailView/mobile/MobileSubsectionContent.tsx","views/channel/PublicChannelDetailView/mobile/MobileSectionDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobileSectionContent.tsx","views/channel/PublicChannelDetailView/mobile/MobileTabDrawer.tsx","views/channel/PublicChannelDetailView/mobile/MobileTabContent.tsx","views/channel/PublicChannelDetailView/mobile/MobileContent.tsx","views/channel/PublicChannelDetailView/mobile/MobileLanguageSelection.tsx","views/channel/PublicChannelDetailView/mobile/MobilePublicHeaderBar.tsx","views/channel/PublicChannelDetailView/mobile/MobileView.tsx","views/channel/PublicChannelDetailView/index.tsx","App.tsx","index.tsx","utils/objFromArray.ts","components/Label.tsx","constants.ts","views/VideoPlayer/PlayerContainer.tsx","components/Logo.tsx","views/utils/Utils.tsx","contexts/WebSocketSFUContext.tsx","views/VideoPlayer/VideoPlayerDialogShare.tsx","views/VideoPlayer/VideoPlayerDialogLarge.tsx","views/VideoPlayer/VideoPlayerDialogMedium.tsx","views/VideoPlayer/VideoPlayerDialogSmall.tsx","views/VideoPlayer/VideoPlayerDialog.tsx","contexts/SettingsContext.tsx","hooks/useAuth.ts","utils/axios.ts","components/PublicLogo.tsx","views/utils/UtilsConstants.tsx","components/SplashScreen.tsx","contexts/JWTAuthContext.tsx","utils/analytics.ts","components/Page.tsx","slices/calendar.ts","slices/chat.ts","slices/mail.ts","slices/notification.ts","store/rootReducer.ts","store/index.ts","views/auth/LanguageSelection.tsx","slices/kanban.ts","hooks/useWebSocket.ts","kaltura-player/kaltura-player-context.ts","kaltura-player/inner-hooks/use-load-player-bundler.tsx","kaltura-player/kaltura-player-provider.tsx","kaltura-player/inner-hooks/use-load-player.tsx","kaltura-player/inner-hooks/use-callback-ref.ts","kaltura-player/kaltura-player.tsx","kaltura-player/kaltura-player-utils.ts","kaltura-player/use-player.tsx","kaltura-player/use-player-updates.tsx","hooks/useSettings.ts"],"names":["axiosMockAdapter","AxiosMockAdapter","axios","delayResponse","wait","time","Promise","res","setTimeout","JWT_SECRET","JWT_EXPIRES_IN","users","id","avatar","canHire","country","email","isPublic","name","password","phone","role","state","tier","mock","onPost","reply","async","JSON","parse","config","data","user","find","_user","message","accessToken","jwt","sign","userId","expiresIn","err","console","error","uuidv4","onGet","Authorization","headers","split","verify","settings","subscription","price","currency","proposalsLeft","templatesLeft","invitesLeft","adsLeft","hasAnalytics","hasEmailAlerts","events","allDay","color","colors","green","description","end","moment","subtract","hours","minutes","toDate","start","title","add","startOf","endOf","request","event","eventId","update","_","map","_event","assign","reject","contacts","isActive","lastActivity","getTime","username","threads","messages","attachments","body","contentType","createdAt","senderId","participants","type","unreadCount","findContactByUsername","_contact","findThreadById","threadId","_threadId","query","params","cleanQuery","toLowerCase","trim","results","forEach","contact","includes","push","threadKey","thread","participantId","_thread","_participant","recipientIds","participantIds","length","_participantIds","isEmpty","xor","findThreadByParticipantIds","recipientId","Error","customers","customer","city","emails","invoices","issueDate","paymentMethod","status","value","logs","ip","method","route","totalAmount","invoice","address","company","taxId","dueDate","items","unitAmount","number","subtotalAmount","taxAmount","board","lists","cardIds","cards","checklists","checkItems","comments","cardId","memberId","cover","due","isSubscribed","listId","memberIds","members","list","_list","filter","card","_card","position","sourceList","pull","destinationList","splice","_cardId","comment","checklist","checklistId","_checklist","checkItem","each","checkItemId","_checkItem","labels","totalCount","blue","orange","mails","folder","isImportant","isStarred","isUnread","labelIds","subject","from","to","systemLabel","customLabel","filteredMails","label","_label","mail","filterMails","mailId","_mail","notifications","orders","order","coupon","address1","address2","billingCycle","quantity","products","attributes","category","image","inventoryType","isAvailable","isShippable","updatedAt","variants","projects","author","budget","caption","isLiked","likesCount","location","rating","membersCount","technology","statistics","nextPayout","totalIncome","visitorsToday","watchingNow","project","activities","applicants","commonConnections","endDate","files","mimeType","size","url","bio","reviews","startDate","tags","earnings","datasets","backgroundColor","technologies","tasks","deadline","conversionRate","subscriptions","referrals","blueGrey","initials","cyan","indigo","red","profile","connectedStatus","currentCity","currentJob","originCity","previousJob","profileProgress","quote","connections","posts","likes","media","Chart","helpers","extend","elements","Rectangle","prototype","draw","ctx","this","_chart","vm","_view","left","right","top","bottom","signX","signY","borderSkipped","radius","borderWidth","cornerRadius","options","horizontal","base","x","y","height","width","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","Boolean","window","hostname","match","useStyles","makeStyles","createStyles","boxSizing","margin","padding","html","GlobalStyles","useScrollReset","useLocation","useEffect","scrollTo","pathname","ScrollReset","theme","root","palette","common","black","white","maxWidth","spacing","outline","zIndex","action","CookiesNotification","classes","open","setOpen","useState","Cookies","get","Portal","className","Typography","variant","Link","component","underline","href","target","Box","mt","display","justifyContent","Button","onClick","document","cookie","GA_MEASUREMENT_ID","process","REACT_APP_GA_MEASUREMENT_ID","GoogleAnalytics","Helmet","src","neutral","text","primary","secondary","disabled","alpha","tertiary","main","light","dark","contrastText","success","warning","active","hover","grey","A100","A200","A400","A700","createTheme","breakpoints","values","xs","sm","md","lg","xl","components","MuiButton","defaultProps","disableElevation","styleOverrides","textTransform","border","sizeSmall","sizeMedium","sizeLarge","textSizeSmall","textSizeMedium","textSizeLarge","MuiButtonBase","disableRipple","MuiTab","MuiCard","borderRadius","boxShadow","MuiCardContent","paddingBottom","MuiCardHeader","titleTypographyProps","subheaderTypographyProps","MuiCssBaseline","MozOsxFontSmoothing","WebkitFontSmoothing","flexDirection","minHeight","flex","MuiOutlinedInput","notchedOutline","MuiInputLabel","MuiTableHead","fontSize","fontWeight","lineHeight","letterSpacing","paddingTop","MuiChip","background","default","paper","info","shape","typography","button","fontFamily","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","overline","AuthGuard","children","logout","useAuth","localStorage","getItem","decoded","JwtDecode","currentTime","Date","now","exp","alignItems","LoadingScreen","NProgress","done","LinearProgress","item","itemLeaf","buttonLeaf","fontWeightRegular","fontWeightMedium","icon","marginRight","vrProgramChip","NavItem","depth","Icon","Info","openProp","rest","useWebSocket","handleToggle","prevOpen","paddingLeft","style","ListItem","clsx","disableGutters","Avatar","Collapse","in","activeClassName","RouterLink","exact","reload","reloadPageIfNeeded","Chip","SvgIcon","mobileDrawer","desktopDrawer","appBar","desktopDrawerWithoutTopBar","cursor","menuItem","marginBottom","marginLeft","menuItemSeeMoreSeeLess","invisible","leftPadding","NavBar","onMobileClose","openMobile","displace","intl","useIntl","sections","subheader","formatMessage","HomeIcon","ClipboardIcon","BoxIcon","FileTextIcon","CheckCircleIcon","HeartIcon","UsersIcon","getOrganizationTag","ListIcon","VideoIcon","CheckSquareIcon","subscriptionsInLeftMenu","setSubscriptionsInLeftMenu","seeAllMySubscriptions","setSeeAllMySubscriptions","getWSConfig","seeLess","seeMore","renderNavItems","maximumElementsToShow","List","disablePadding","reduce","acc","reduceChildRoutes","key","matchPath","path","lengthArrayAcc","ChevronDownIcon","ChevronUpIcon","pop","then","response","channel_list","findIndex","channel","channel_id","itemsToAppearInLeftMenu","logo","channelViewId","catch","content","suppressScrollX","p","section","ListSubheader","disableSticky","numberOfSubcriptionsInLeftMenu","Hidden","lgUp","Drawer","anchor","onClose","lgDown","popover","Account","history","useHistory","ref","useRef","enqueueSnackbar","useSnackbar","isOpen","professionalMedic","alternativeLogout","disableCursorInteractionStyle","handleClose","ButtonBase","last_name","maxInitials","round","mdDown","Menu","anchorOrigin","vertical","keepMounted","PaperProps","anchorEl","current","MenuItem","organization_id","Settings","saveSettings","useSettings","setValues","direction","responsiveFontSizes","Tooltip","Badge","render","IconButton","AlternativeLogout","toolbar","TopBar","onMobileNavOpen","organizationLogo","setOrganizationLogo","loading","setLoading","storeOrganizationLogo","setItem","AppBar","sx","displayPrint","Toolbar","Logo","ml","flexGrow","overflow","wrapper","up","wrapperWhitoutNavBar","contentContainer","DashboardLayout","isMobileNavOpen","setMobileNavOpen","leftPaddingStyle","log","link","divider","APP_VERSION","Divider","MainLayout","drawer","IframeLayout","renderRoutes","routes","fallback","Guard","guard","Fragment","Layout","layout","Component","props","lazy","queryField","checkboxVideos","checkboxModels","VideoText","ModelText","ShowMe","BoxCheckBox","buttonMenu","buttonMenuRight","minWidth","IconOnButton","MenuStyle","transform","cardFilter","paddingRight","menuFilter","MenuItemStyle","listItemIcon","SearchBarMenu","setModelsChecked","setVideoChecked","setFilesChecked","setExternalLinksChecked","setOpenActionsMenu","setSelectedMenuItem","actionsRef","openActionsMenu","handleCloseActionsMenu","transformOrigin","ListItemIcon","noWrap","PublicSearchBar","languageFilter","setLanguageFilter","setQuery","setSelectAll","currentTab","openFilterMenu","setOpenFilterMenu","filterRef","selectedMenuItem","languages","marginTop","Card","CardActions","ListItemText","orientation","flexItem","Input","disableUnderline","fullWidth","onChange","persist","placeholder","flexWrap","undefined","getLanguageString","onDelete","FormControl","m","InputLabel","Select","labelId","input","OutlinedInput","language","videocontainer","aspectRatio16x9","PublicLive","liveEntryId","live","setLive","post","getLive","CardMedia","allowFullScreen","frameBorder","itemProp","itemScope","itemType","CardContent","Label","VideoPasswordDialog","handleOpenVideoIfCorrectPassword","container","cancelButton","setPassword","incorrectPassword","setIncorrectPassword","Dialog","DialogTitle","DialogContent","pt","TextField","helperText","mb","entry_id","checkPasswordWS","titleMedia","textOverflow","textDecoration","aspectRatio","playCircleIcon","visibility","pointerEvents","labelTime","divImage","treeitems","firstTreeitem","labelVideoText","actionArea","opacity","focusHighlight","lockIcon","buttonIcon","lockDiv","videoText","videoIcon","float","VideoBoxInfo","singlemedia","setMediaToModal","setVideoPlayDialogOpen","checkVideoAccess","visibilityMode","CardActionArea","big_thumbnailUrl","duration","pl","PublicVideoBox","channelView","mediaToModal","isVideoPlayDialogOpen","playerTime","setPlayerTime","openVideoPasswordDialog","setOpenVideoPasswordDialog","setVisibilityMode","openModal","getVideoAccess","raised","PublicVideoBoxInfo","VideoPlayerDialog","video","captions","TreeView","defaultCollapseIcon","defaultExpandIcon","disableSelection","TreeItem","nodeId","toString","startsAt","line","captionTime","timeSplit","seconds","handleCaptionClick","ModelBlockModalSuscribe","signUpButton","DialogContentText","imageWithAccess","imageWithoutAccess","boxIcon","modelText","seeModuleIcon","Size","seeModule","titleModel","labelModelText","boxModelLabelAndFavorite","PublicModelBox","singleModel","isOpenlSuscribeDialog","setOpenSuscribeDialog","thumbnail_url","fileText","titleFile","chip","boxFileIcon","fileIcon","FileBox","file","mode","openFileLink","file_id","getFileLink","thumbnailFileLink","setThumbnailFileLink","thumbnail_extension","getThumbnailFileLink","Grid","extension","ExternalLinkBox","external_link","thumbnailUrl","setThumbnailUrl","externalLinkThumbnailLink","setExternalLinkThumbnailLink","external_link_resource_id","getExternalLinkThumbnailLink","linearProgress","boxContentNotFound","justifyItems","noContentFoundIcon","PublicContent","VideoChecked","ModelsChecked","selectedSectionOrSubSection","filesChecked","externalLinksChecked","setMedia","models","setModels","existsVideos","setExistsVideos","existsModels","setExistsModels","source","setFiles","externalLinks","setExternalLinks","existsFiles","setExistsFiles","existsExternalLinks","setExistsExternalLinks","loadingVideos","setLoadingVideos","loadingModels","setLoadingModels","loadingFiles","setLoadingFiles","loadingExternalLinks","setLoadingExternalLinks","searchMediaSimple","CancelToken","cancelToken","token","channel_view_sub_section_id","channel_view_section_id","channel_view_tab_id","isCancel","searchModelsSimple","modelsList","element","channelViewSubSectionMode3DList","model_3D_entity","channelViewSectionList","subsection","channelViewSubSectionList","searchFilesSimple","filesList","channelViewSubSectionFileResourceList","fileResourceEntity","searchExternalLinksSimple","externalLinksList","channelViewSubSectionExternalLinkResourceList","externalLinkResourceEntity","applyFiltersForTitle","matches","properties","query_norm","model_norm","containsQuery","normalize","replace","property","timeoutId","clearTimeout","filteredModels","model","applyModelsFilters","filteredFiles","applyFilesFilters","filteredExternalLinks","externalLink","applyExternalLinksFilters","CircularProgress","channel_view_id","model_3D_id","treeView","labelText","StyledTreeItem","withStyles","PublicInnerNavBar","selectAll","treeItemId","selectedItem","setSelectedItem","sequence_alphabetical","SectionAll","setSectionAll","expanded","setExpanded","React","selected","setSelected","listOfTreeNodeWithCorrespondentSection","setListOfTreeNodeWithCorrespondentSection","innerNavBar","noInnerNavBar","incrementTreeItemId","renderChannelViewSectionList","channelViewSubsectionList","subSection","TreeID","SectionID","IsSectionOtherWiseIsSubsection","IsTheTreeNodeInTheList","renderChannelViewSubSectionList","serachSectionInTree","FindTreeIDinTheListofPairs","parseInt","TreeNodeChannelViewSection","TreeNodeChannelViewSubSection","handleSelect","nodeIds","onNodeToggle","onNodeSelect","dividerContact","descriptionTitle","Weight","linkTitle","contactTitle","Icons","mapPinBox","phone1Box","phone2Box","mailBox","phone1","phone2","facebookBox","twitterBox","linkedinBox","instagramBox","socials","PublicChannelViewInfo","channelViewInfo","channel_view_description","channelViewInfoLinkList","channel_view_info_links_id","phone_number_one","phone_number_two","facebook_account","web_url","twitter_account","linkedin_account","instagram_account","tab","rightAlign","alert","PublicChannelViewTabs","channelViewTabList","setCurrentTab","Tabs","tab_name","scrollButtons","textColor","indicatorColor","isVisibleInPublicChannelView","sequence","Tab","menuButton","roundedCenter","toolbarBottom","alignSelf","textAlign","channelsDiv","channelsText","subscribeButtonDiv","roundedDiv","channelImage","backgroundSize","headerImage","PublicHeader","cover_photo_link","alt","header","loginButton","buttonsDiv","languageIcon","PublicHeaderBar","public_logo","startIcon","LanguageSelection","icons","Footer","useTheme","useMediaQuery","down","PublicLogo","arrowLeft","liveIcon","liveText","MobileLiveDrawer","Container","channel_name","MobileInformationRow","gap","MobileInformationLink","infoRow","MobileInformationDrawer","closeDrawer","iconButton","desplay","MobilePublicHeader","isLiveDrawerOpen","setLiveDrawerOpen","isInfoDrawerOpen","setInfoDrawerOpen","MobileSearchBar","dialog","shareButton","MobileVideoPlayerModal","attachmentLink","setAttachmentLink","loadingAttachment","setLoadingAttachment","setAnchorEl","entriesConfig","entryId","alternateEntryId","media_id","finally","getAttachmentLink","fullScreen","PlayerContainer","playerheight","search","navigator","clipboard","writeText","origin","LoadingButton","currentTarget","download_url","endIcon","optionsBox","MobileMoreOptions","setMoreOptionsOpen","CardContentNoPadding","styled","flexBasis","flexShrink","cardHeader","moreIcon","cardActions","wordBreak","MobilePublicVideoBox","singleMedia","player_uiConfid","isModalOpen","setModalOpen","isMoreOptionsOpen","CardHeader","handleCaptionTap","MobileMoreOptionsDrawer","multiLineEllipsis","MobileDrawerVideoCard","pb","MobileDrawerModelCard","MobileDrawerFileCard","boxRef","titleRef","MobileDrawerExternalLinkCard","MobileSubsectionDrawer","beforeName","filteredMedias","medias","media_norm","applyMediasFilters","MobileExternalLinkBox","maxHeight","MobileFileBox","MobilePublicModelBox","stack","overflowX","seeAll","MobileSubsectionContent","sectionName","isDrawerOpen","setDrawerOpen","searchContent","getSubsectionContent","closeSubsectionVideosDrawer","Stack","MobileSectionDrawer","tabName","MobileSectionContent","isSubsectionDrawerOpen","setSubsectionDrawerOpen","getSectionContent","closeSubsectionDrawer","MobileTabDrawer","MobileTabContent","setContentLoaded","closeTabDrawer","getTabContent","mediaItem","MobileContent","arrowButton","MobileLanguageSelection","handleSwitchLanguage","new_language","MobilePublicHeaderBar","circularProgress","MobileView","isContentLoaded","Map","PublicChannelDetailView","subdomainchannel","setChannelView","setChannel","paramToken","useParams","mobile","handleCloseVideoPlayDialog","channelViewTemp","params_video","getChannelView","channelTemp","getChannel","getAndStoreKalturaVideoPlayerIdByChannelId","Page","jss","create","plugins","jssPreset","rtl","createBrowserHistory","App","setMessages","flatten","require","isLoading","getMessages","locale","LANGUAGES","en","loadLocaleData","getSubDomainChannelView","StyledEngineProvider","injectFirst","ThemeProvider","StylesProvider","utils","MomentUtils","dense","maxSnack","isIframe","enableES5","ReactDOM","store","getElementById","serviceWorker","ready","registration","unregister","objFromArray","arr","accumulator","whiteSpace","pxToRem","ENABLE_REDUX_DEV_TOOLS","THEMES","LIGHT","ONE_DARK","UNICORN","es","fullscreenButton","playerwidth","hotspotList","playerId","setPlayerId","playerContainerRef","playerTime$","usePlayerUpdates","playerSeek","getPlayerInstance","usePlayer","timeSubscription","subscribe","result","unsubscribe","handlePlayerLoaded","handleMediaLoaded","durationSplit","durationTotalSeconds","initialTime","seekTo","pause","handleButtonClick","javascript_action","eval","customizeConfig","h","ui","preact","hotspotButtons","hotspot","buttonId","hotspot_id","position_y","position_x","background_color","text_size","text_color","uiComponents","presets","showButton","time_to_start_in_ms","time_to_finish_in_ms","buttonElement","isButtonVisible","autoplay","onMediaLoaded","onPlayerLoaded","organizationAdmin","prefix","host","subdomain","subdomainmap","fisiotv","channelview","pestanaga","startsWith","isAnIntegerValue","test","cleanHtmlText","htmlText","cleanHtml","sanitizeHtml","allowedTags","allowedAttributes","a","getAndStoreKalturaVideoPlayerId","stringify","getAndStoreKalturaPlaylistPlayerId","deleteKalturaVideoPlayerIdFromLocalStorage","removeItem","deleteKalturaPlaylistPlayerIdFromLocalStorage","propertyPath","organizationTags","organizationTagsEn","organizationTagsEs","organizationId","currentObject","String","pc_config","sdpSemantics","iceServers","urls","websocketUrl","protocol","WebSocketContext","createContext","ws","selectedUser","controlPanelState","selectUser","isUserSelected","createReceivePC","passDataToServer","WebSocketProvider","socketId","sendPCRef","pc","receivePCsRef","senders","setUsers","setIsUserSelected","setControlPanelState","closeReceivePC","useCallback","close","createReceiverOffer","senderSocketID","sdp","createOffer","offerToReceiveAudio","offerToReceiveVideo","setLocalDescription","RTCSessionDescription","sendMessage","receiverSocketID","createReceiverPeerConnection","socketID","RTCPeerConnection","onicecandidate","e","candidate","oniceconnectionstatechange","ontrack","track","kind","createDataChannel","onopen","onerror","onclose","onmessage","userAgent","msg","arrayBuffer","isJson","createSenderOffer","createSenderPeerConnection","updateInfoUser","initPC","WebSocket","handleOnMessage","socketIsReady","foundSelected","connectionId","_senders","setRemoteDescription","addIceCandidate","RTCIceCandidate","object","send","readyState","OPEN","str","sessionId","vr_session_id","_users","programTitle","sessionName","vrSessionList","session","patientName","Provider","_msg","share","VideoPlayerDialogShare","shareRef","openShareMenu","setOpenShareMenu","boxwrapper","closebutton","menu","elevation","VideoPlayerDialogLarge","downloadAttachmentsLink","isMenuOpen","setOpenMenu","toggleMenu","doc","createElement","download","click","downloadFile","VideoPlayerDialogMedium","VideoPlayerDialogSmall","setDownloadAttachmentsLink","getDownloadAttachmentsLink","only","defaultSettings","toLocaleLowerCase","getDefaultLanguage","storeSettings","SettingsContext","SettingsProvider","currentSettings","setCurrentSettings","restoredSettings","storedData","restoreSettings","dir","mergedSettings","merge","Consumer","useContext","AuthContext","axiosInstance","interceptors","use","isMobile","public_mobile_logo","mdUp","anatomySpecialityFilterOptions","typeFilterOptions","levelOfDetailFilterOptions","SlashScreen","initialAuthState","isAuthenticated","isInitialised","setSession","defaults","clear","reducer","payload","login","resolve","register","AuthProvider","dispatch","useReducer","prepareUser","medical_number","jwtDecode","isValidToken","initialise","home_page","SplashScreen","gtag","forwardRef","sendPageViewEvent","page_path","slice","createSlice","initialState","selectedEventId","selectedRange","reducers","getEvents","createEvent","selectEvent","updateEvent","deleteEvent","selectRange","closeModal","activeThreadId","byId","allIds","recipients","getContacts","Object","keys","getThreads","getThread","markThreadAsSeen","resetActiveThread","getParticipants","addRecipient","recipient","_recipient","removeRecipient","isSidebarOpen","isComposeOpen","getLabels","getMails","getMail","openSidebar","closeSidebar","openCompose","closeCompose","getNotifications","rootReducer","combineReducers","calendar","calendarReducer","chat","chatReducer","form","formReducer","kanban","kanbanReducer","mailReducer","notificationReducer","configureStore","devTools","useSelector","useReduxSelector","useDispatch","useReduxDispatch","isLoaded","getBoard","createList","updateList","clearList","omit","deleteList","createCard","updateCard","moveCard","sourceListId","deleteCard","addComment","addChecklist","updateChecklist","deleteChecklist","addCheckItem","updateCheckItem","deleteCheckItem","actions","PlayerBundleStatuses","MediaStatuses","PlayerStatuses","PlayerActionTypes","PlaybackStatuses","PlayerEventsTypes","defaultPlayerContext","playerBundleStatus","playerBundleConfig","getPlayerState$","throwError","getPlayerEvents$","getPlayerCurrentTime$","seek","warn","play","registerPlayer","action$","onRemove","KalturaPlayerContext","injectedScriptUrl","injectStatus","injectLoadedCallbacks","handleInjectResponse","cb","addInjectCallback","useLoadPlayerBundler","setPlayerBundleStatus","Initial","handleLateBundleCallback","Loaded","partnerId","uiConfId","bundlerUrl","Loading","playerBundlerUrl","setup","head","getElementsByTagName","scriptElement","onload","appendChild","injectScriptIntoPage","listener","KalturaPlayerProvider","setPlayerBundleConfig","ks","fetchKalturaPlayerId","kaltura_video_player_id_professional_portal","_playersRef","playerContextValue","useMemo","currentTime$","playerState$","playerEvents$","KalturaPlayer","getPlayers","doAction","Subject","asObservable","complete","next","actionType","Seek","Play","Pause","uniqueIdIndex","acceptedPlaybackStatusesValues","useLoadPlayer","onMediaLoadingError","onPlayerLoadingError","unmountedRef","playerState","setPlayerState","playerStatus","mediaStatus","playerTimeSubjectRef","BehaviorSubject","playerStateSubjectRef","Idle","playerEventsSubjectRef","playerRegistrationRef","seekSubscription","Subscription","EMPTY","playerRef","initialValue","callback","unMountedRef","onDestroy","facade","last","executeOnDestroy","useCallbackRef","updatePlayerCurrentTime","updatePlayerState","playbackStatus","newState","emitVideoResized","videoSize","VideoResized","emitFirstPlaying","FirstPlaying","emitPlayerResized","playerSize","PlayerResized","getPlayerVideoResizeEvent","EventType","VIDEO_RESIZE","getPlayerResizeEvent","PLAYER_RESIZE","addEventListener","removeEventListener","destroy","prevState","Destroyed","loadPlayerMedia","loadMedia","loadPlayer","playerManager","playback","targetId","provider","player","playerActionsSubscription","onSeek","StyleSheet","kalturaPlayer","scriptErrorContainer","scriptsErrorMsg","fontStretch","fontStyle","css","KalturaPlayerUtils","constructor","_playerId","_KalturaPlayer","_getPlayerInstance","getPlayer","getInstance","getVideoDimensions","playerInstance","videoElement","getVideoElement","videoWidth","videoHeight","getPlayerDimensions","view","getView","offsetWidth","offsetHeight","playerContext","playerIdRef","validate","playerPlay","playerPause","playerStateRef","playerEventsRef","playerTimeRef","playerCurrentTimeSubscription","playerCurrentStateSubscription","currentState","playerEventsSubscription","getPlayerTime","getValue","getPlayerState"],"mappings":"4TAKeA,MAFU,IAAIC,IAAiBC,IAAO,CAAEC,cAAe,ICCvDC,MAJDC,GACH,IAAIC,SAASC,GAAQC,WAAWD,EAAKF,KCIhD,MAAMI,EAAa,wBACbC,EAAiB,SAEjBC,EAAQ,CACV,CACIC,GAAI,2BACJC,OAAQ,sCACRC,SAAS,EACTC,QAAS,MACTC,MAAO,iBACPC,UAAU,EACVC,KAAM,iBACNC,SAAU,cACVC,MAAO,gBACPC,KAAM,QACNC,MAAO,WACPC,KAAM,YAIdC,EAAKC,OAAO,sBAAsBC,OAAMC,UACpC,UACUvB,EAAK,KAEX,MAAM,MAAEY,EAAF,SAASG,GAAaS,KAAKC,MAAMC,EAAOC,MACxCC,EAAOrB,EAAMsB,MAAMC,GAAUA,EAAMlB,QAAUA,IAEnD,IAAKgB,EACD,MAAO,CAAC,IAAK,CAAEG,QAAS,yCAG5B,GAAIH,EAAKb,WAAaA,EAClB,MAAO,CAAC,IAAK,CAAEgB,QAAS,qBAS5B,MAAO,CAAC,IAAK,CACTC,YAPgBC,IAAIC,KACpB,CAAEC,OAAQP,EAAKpB,IACfH,EACA,CAAE+B,UAAW9B,IAKbsB,KAAM,CACFpB,GAAIoB,EAAKpB,GACTC,OAAQmB,EAAKnB,OACbG,MAAOgB,EAAKhB,MACZE,KAAMc,EAAKd,KACXK,KAAMS,EAAKT,OAMtB,CAHC,MAAOkB,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,yBAAyBC,OAAMC,UACvC,UACUvB,EAAK,KAEX,MAAM,MAAEY,EAAF,KAASE,EAAT,SAAeC,GAAaS,KAAKC,MAAMC,EAAOC,MACpD,IAAIC,EAAOrB,EAAMsB,MAAMC,GAAUA,EAAMlB,QAAUA,IAEjD,GAAIgB,EACA,MAAO,CAAC,IAAK,CAAEG,QAAS,wBAG5BH,EAAO,CACHpB,GAAIgC,cACJ/B,OAAQ,KACRC,SAAS,EACTC,QAAS,KACTC,QACAC,UAAU,EACVC,OACAC,WACAC,MAAO,KACPC,KAAM,QACNC,MAAO,KACPC,KAAM,YASV,MAAO,CAAC,IAAK,CACTa,YAPgBC,IAAIC,KACpB,CAAEC,OAAQP,EAAKpB,IACfH,EACA,CAAE+B,UAAW9B,IAKbsB,KAAM,CACFpB,GAAIoB,EAAKpB,GACTC,OAAQmB,EAAKnB,OACbG,MAAOgB,EAAKhB,MACZE,KAAMc,EAAKd,KACXK,KAAMS,EAAKT,OAMtB,CAHC,MAAOkB,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKqB,MAAM,mBAAmBnB,OAAOI,IACjC,IACI,MAAM,cAAEgB,GAAkBhB,EAAOiB,QAEjC,IAAKD,EACD,MAAO,CAAC,IAAK,CAAEX,QAAS,gCAG5B,MAAMC,EAAcU,EAAcE,MAAM,KAAK,IACvC,OAAET,GAAWF,IAAIY,OAAOb,EAAa3B,GACrCuB,EAAOrB,EAAMsB,MAAMC,GAAUA,EAAMtB,KAAO2B,IAEhD,OAAKP,EAIE,CAAC,IAAK,CACTA,KAAM,CACFpB,GAAIoB,EAAKpB,GACTC,OAAQmB,EAAKnB,OACbG,MAAOgB,EAAKhB,MACZE,KAAMc,EAAKd,KACXK,KAAMS,EAAKT,QATR,CAAC,IAAK,CAAEY,QAAS,+BAe/B,CAHC,MAAOM,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKqB,MAAM,yBAAyBnB,MAAM,IAAK,CAC3CwB,SAAU,CAAC,IAGf1B,EAAKqB,MAAM,6BAA6BnB,MAAM,IAAK,CAC/CyB,aAAc,CACVjC,KAAM,UACNkC,MAAO,GACPC,SAAU,IACVC,cAAe,GACfC,cAAe,EACfC,YAAa,GACbC,QAAS,GACTC,cAAc,EACdC,gBAAgB,K,6CCpJxB,IAAIC,EAAkB,CAClB,CACIhD,GAAI,2BACJiD,QAAQ,EACRC,MAAOC,IAAOC,MAAM,KACpBC,YAAa,4BACbC,IAAKC,MACAC,SAAS,EAAG,QACZC,MAAM,IACNC,QAAQ,GACRC,SACLC,MAAOL,MACFC,SAAS,EAAG,QACZC,MAAM,IACNC,QAAQ,IACRC,SACLE,MAAO,iBAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAO,KACPG,YAAa,gCACbC,IAAKC,MACAO,IAAI,EAAG,QACPL,MAAM,IACNC,QAAQ,IACRC,SACLC,MAAOL,MACFO,IAAI,EAAG,QACPL,MAAM,IACNC,QAAQ,GACRC,SACLE,MAAO,iBAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAO,KACPG,YAAa,eACbC,IAAKC,MACAO,IAAI,EAAG,QACPL,MAAM,IACNC,QAAQ,GACRC,SACLC,MAAOL,MACFO,IAAI,EAAG,QACPL,MAAM,GACNC,QAAQ,GACRC,SACLE,MAAO,kBAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAO,KACPG,YAAa,4BACbC,IAAKC,MACAC,SAAS,GAAI,QACbO,QAAQ,OACRJ,SACLC,MAAOL,MACFC,SAAS,GAAI,QACbQ,MAAM,OACNL,SACLE,MAAO,aAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAOC,IAAOC,MAAM,KACpBC,YAAa,eACbC,IAAKC,MACAO,IAAI,EAAG,QACPL,MAAM,GACNC,QAAQ,IACRC,SACLC,MAAOL,MACFO,IAAI,EAAG,QACPL,MAAM,GACNC,QAAQ,IACRC,SACLE,MAAO,aAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAO,KACPG,YAAa,gCACbC,IAAKC,MACAC,SAAS,EAAG,QACZC,MAAM,GACNC,QAAQ,IACRC,SACLC,MAAOL,MACFC,SAAS,EAAG,QACZC,MAAM,GACNC,QAAQ,GACRC,SACLE,MAAO,aAEX,CACI7D,GAAI,2BACJiD,QAAQ,EACRC,MAAOC,IAAOC,MAAM,KACpBC,YAAa,4CACbC,IAAKC,MACAE,MAAM,IACNC,QAAQ,IACRC,SACLC,MAAOL,MACFE,MAAM,IACNC,QAAQ,IACRC,SACLE,MAAO,mBAIfjD,EAAKqB,MAAM,wBAAwBnB,MAAM,IAAK,CAAEkC,WAEhDpC,EAAKC,OAAO,4BAA4BC,OAAOmD,IAC3C,IACI,MAAM,OAAEhB,EAAF,YAAUI,EAAV,IAAuBC,EAAvB,MAA4BM,EAA5B,MAAmCC,GAAU7C,KAAKC,MAAMgD,EAAQ9C,MAChE+C,EAAQ,CACVlE,GAAIgC,cACJiB,SACAI,cACAC,MACAM,QACAC,SAKJ,OAFAb,EAAS,IAAIA,EAAQkB,GAEd,CAAC,IAAK,CAAEA,SAIlB,CAHC,MAAOrC,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,+BAA+BC,OAAOmD,IAC9C,IACI,MAAM,QAAEE,EAAF,OAAWC,GAAWpD,KAAKC,MAAMgD,EAAQ9C,MAC/C,IAAI+C,EAAQ,KAWZ,OATAlB,EAASqB,IAAEC,IAAItB,GAASuB,IAChBA,EAAOvE,KAAOmE,IACdE,IAAEG,OAAOD,EAAQ,IAAKH,IACtBF,EAAQK,GAGLA,KAGJ,CAAC,IAAK,CAAEL,SAIlB,CAHC,MAAOrC,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,+BAA+BC,OAAOmD,IAC9C,IACI,MAAM,QAAEE,GAAYnD,KAAKC,MAAMgD,EAAQ9C,MAIvC,OAFA6B,EAASqB,IAAEI,OAAOzB,EAAQ,CAAEhD,GAAImE,IAEzB,CAAC,IAAK,CAAEA,WAIlB,CAHC,MAAOtC,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KCzKL,IAAImD,EAAsB,CACtB,CACI1E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,gBACNwE,SAAU,iBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTC,SAAS,EAAG,SACZG,SACAkB,UACLvE,KAAM,oBACNwE,SAAU,qBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTC,SAAS,GAAI,WACbG,SACAkB,UACLvE,KAAM,SACNwE,SAAU,UAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,kBACNwE,SAAU,mBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,cACNwE,SAAU,eAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTC,SAAS,EAAG,QACZG,SACAkB,UACLvE,KAAM,eACNwE,SAAU,gBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTC,SAAS,EAAG,SACZG,SACAkB,UACLvE,KAAM,iBACNwE,SAAU,kBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,mBACNwE,SAAU,oBAEd,CACI9E,GAAI,2BACJC,OAAQ,uCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,gBACNwE,SAAU,iBAEd,CACI9E,GAAI,2BACJC,OAAQ,uCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,WACNwE,SAAU,YAEd,CACI9E,GAAI,2BACJC,OAAQ,uCACR0E,UAAU,EACVC,aAAcrB,MACTI,SACAkB,UACLvE,KAAM,kBACNwE,SAAU,oBAIdC,EAAoB,CACpB,CACI/E,GAAI,2BACJgF,SAAU,CACN,CACIhF,GAAI,2BACJiF,YAAa,GACbC,KAAM,mGACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,GAAI,SACbG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,mFACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,0EACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,kGACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,2BACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,UACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,wCACNC,YAAa,QACbC,UAAW7B,MACNC,SAAS,EAAG,UACZG,SACAkB,UACLQ,SAAU,6BAGlBC,aAAc,CACV,CACItF,GAAI,2BACJC,OAAQ,sCACRK,KAAM,iBACNwE,SAAU,kBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eACNwE,SAAU,iBAGlBS,KAAM,aACNC,YAAa,GAEjB,CACIxF,GAAI,2BACJgF,SAAU,CACN,CACIhF,GAAI,2BACJiF,YAAa,GACbC,KAAM,sCACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,eACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACLQ,SAAU,4BAEd,CACIrF,GAAI,2BACJiF,YAAa,GACbC,KAAM,8BACNC,YAAa,OACbC,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACLQ,SAAU,6BAGlBC,aAAc,CACV,CACItF,GAAI,2BACJC,OAAQ,sCACRK,KAAM,iBACNwE,SAAU,kBAEd,CACI9E,GAAI,2BACJC,OAAQ,uCACRK,KAAM,kBACNwE,SAAU,mBAEd,CACI9E,GAAI,2BACJC,OAAQ,sCACRK,KAAM,gBACNwE,SAAU,kBAGlBS,KAAM,QACNC,YAAa,IAIrB,MAAMC,EAAyBX,GACXJ,EAASrD,MAAMqE,GAAaA,EAASZ,WAAaA,KAEhD,KAGhBa,EAAkBC,GACLb,EAAQ1D,MAAMwE,GAAcA,EAAU7F,KAAO4F,KAE3C,KAoCrBhF,EAAKqB,MAAM,sBAAsBnB,MAAM,IAAK,CAAE4D,aAE9C9D,EAAKqB,MAAM,oBAAoBnB,OAAOI,IAClC,IACI,MAAM,MAAE4E,GAAU5E,EAAO6E,OACnBC,EAAaF,EAAMG,cAAcC,OACjCC,EAAU,GAYhB,OAVAzB,EAAS0B,SAASC,GACTP,EAIDO,EAAQ/F,KAAK2F,cAAcK,SAASN,GAC7BG,EAAQI,KAAKF,QADxB,EAHWF,EAAQI,KAAKF,KAQrB,CAAC,IAAK,CAAEF,WAIlB,CAHC,MAAOtE,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKqB,MAAM,0BAA0BnB,OAAOI,IACxC,IACI,MAAM,UAAEsF,GAActF,EAAO6E,OACvBT,EAAe,GAIfmB,EAASd,EAAea,GAE9B,GAAIC,EACAnB,EAAaiB,QAAQE,EAAOnB,kBACzB,CACH,MAAMe,EAAUZ,EAAsBe,GAElCH,GACAf,EAAaiB,KAAK,CACdvG,GAAIqG,EAAQrG,GACZC,OAAQoG,EAAQpG,OAChBK,KAAM+F,EAAQ/F,KACdwE,SAAUuB,EAAQvB,UAG7B,CAED,MAAO,CAAC,IAAK,CAAEQ,gBAIlB,CAHC,MAAOzD,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKqB,MAAM,qBAAqBnB,MAAM,IAAK,CAAEiE,YAE7CnE,EAAKqB,MAAM,oBAAoBnB,OAAOI,IAClC,IACI,MAAM,UAAEsF,GAActF,EAAO6E,OAIvBU,EAASd,EAAea,GAE9B,GAAIC,EACA,MAAO,CAAC,IAAK,CAAEA,WACZ,CAIH,MAAMJ,EAAUZ,EAAsBe,GAEtC,IAAKH,EACD,MAAO,CAAC,IAAK,CAAE9E,QAAS,+BAM5B,MAAO,CAAC,IAAK,CAAEkF,QAjHaC,EA+GkBL,EAAQrG,GA9G/C+E,EAAQ1D,MAAMsF,GACJ,eAAjBA,EAAQpB,QAIQoB,EAAQrB,aAAajE,MAAMuF,GAAiBA,EAAa5G,KAAO0G,OAKvE,OAuGZ,CAIJ,CAHC,MAAO7E,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,CAtHmCmF,KAsHnC,IAGL9F,EAAKqB,MAAM,iCAAiCnB,OAAOI,IAC/C,IACI,MAAM,SAAE0E,GAAa1E,EAAO6E,OACtBU,EAAS1B,EAAQ1D,MAAMsF,GAAYA,EAAQ3G,KAAO4F,IAMxD,OAJIa,IACAA,EAAOjB,YAAc,GAGlB,CAAC,KAAK,EAIhB,CAHC,MAAO3D,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAOLX,EAAKC,OAAO,0BAA0BC,OAAOmD,IACzC,IACI,MAAM,SAAE2B,EAAF,aAAYiB,EAAZ,KAA0B3B,GAASlE,KAAKC,MAAMgD,EAAQ9C,MAGtDC,EAAO,CACTpB,GAAI,2BACJC,OAAQ,sCACRK,KAAM,iBACNwE,SAAU,kBAGd,IAAI2B,EAAS,KAEb,GAAIb,IACAa,EAASd,EAAeC,IAEnBa,GACD,MAAO,CAAC,IAAK,CAAElF,QAAS,sBAIhC,GAAIsF,EAAc,CAGdJ,EAxJwBK,IACjB/B,EAAQ1D,MAAMsF,IACzB,GAAIA,EAAQrB,aAAayB,OAASD,EAAeC,OAC7C,OAAO,EAGX,IAAIC,EAAkB,GAMtB,OAJAL,EAAQrB,aAAac,SAASQ,IAC1BI,EAAgBT,KAAKK,EAAa5G,GAAlC,IAGGqE,IAAE4C,QAAQ5C,IAAE6C,IAAIJ,EAAgBE,GAAvC,KAGa,KAyIAG,CAFc,IAAIN,EAAczF,EAAKpB,IAGjD,CAED,MAAMuB,EAAyB,CAC3BvB,GAAIgC,cACJiD,YAAa,GACbC,OACAC,YAAa,OACbC,UAAW7B,MACNI,SACAkB,UACLQ,SAAUjE,EAAKpB,IAGnB,GAAIyG,EACAA,EAAOzB,SAAW,IAAIyB,EAAOzB,SAAUzD,OACpC,CACH,MAAM+D,EAAe,CAAClE,GAEtByF,EAAaT,SAASgB,IAClB,MAAMf,EAAU3B,EAASrD,MAAMqE,GAAaA,EAAS1F,KAAOoH,IAE5D,IAAKf,EACD,MAAM,IAAIgB,MAAM,qBAGpB/B,EAAaiB,KAAK,CACdvG,GAAIqG,EAAQrG,GACZC,OAAQoG,EAAQpG,OAChBK,KAAM+F,EAAQ/F,KACdwE,SAAUuB,EAAQvB,UAJtB,IAQJ2B,EAAS,CACLzG,GAAIgC,cACJgD,SAAU,CAACzD,GACX+D,eACAC,KAA8B,IAAxBD,EAAayB,OAAe,aAAe,QACjDvB,YAAa,EAEpB,CAOD,MAAO,CAAC,IALa,CACjBI,SAAUa,EAAOzG,GACjBuB,WAOP,CAHC,MAAOM,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KCnfLX,EAAKqB,MAAM,kBAAkBnB,OAAM,IAWxB,CAAC,IAAK,CAAEwG,UAVe,CAC1B,CACItH,GAAI,2BACJC,OAAQ,sCACRG,MAAO,mBACPE,KAAM,eAQlBM,EAAKqB,MAAM,oBAAoBnB,OAAM,IAQ1B,CAAC,IAAK,CAAEyG,SAPY,CACvBvH,GAAI,2BACJwH,KAAM,YACNpH,MAAO,yBACPE,KAAM,oBAMdM,EAAKqB,MAAM,2BAA2BnB,OAAM,IAwBjC,CAAC,IAAK,CAAE2G,OAvBiB,CAC5B,CACIzH,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,sBAEjB,CACIrD,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,SACbA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,2BAOzBzC,EAAKqB,MAAM,6BAA6BnB,OAAM,IA0BnC,CAAC,IAAK,CAAE4G,SAzBa,CACxB,CACI1H,GAAI,2BACJyC,SAAU,IACVY,YAAa,oDACbsE,UAAWpE,MACNI,SACAkB,UACL+C,cAAe,cACfC,OAAQ,OACRC,MAAO,MAEX,CACI9H,GAAI,2BACJyC,SAAU,IACVY,YAAa,oDACbsE,UAAWpE,MACNI,SACAkB,UACL+C,cAAe,cACfC,OAAQ,OACRC,MAAO,WAOnBlH,EAAKqB,MAAM,yBAAyBnB,OAAM,IAoH/B,CAAC,IAAK,CAAEiH,KAnHa,CACxB,CACI/H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,WACZA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,WACb2E,GAAI,gBACJC,OAAQ,OACRC,MAAO,gBACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,WACZA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,WACb2E,GAAI,gBACJC,OAAQ,OACRC,MAAO,gBACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,WACZA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,cACb2E,GAAI,gBACJC,OAAQ,SACRC,MAAO,+BACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,WACb2E,GAAI,gBACJC,OAAQ,MACRC,MAAO,4BACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,WACb2E,GAAI,gBACJC,OAAQ,MACRC,MAAO,4BACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,eACb2E,GAAI,gBACJC,OAAQ,MACRC,MAAO,wBACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,eACb2E,GAAI,gBACJC,OAAQ,MACRC,MAAO,gBACPL,OAAQ,KAEZ,CACI7H,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,EAAG,WACZG,SACAkB,UACLxB,YAAa,QACb2E,GAAI,gBACJC,OAAQ,OACRC,MAAO,aACPL,OAAQ,UCtMpBjH,EAAKqB,MAAM,iBAAiBnB,OAAM,IA+DvB,CAAC,IAAK,CAAE4G,SA9Da,CACxB,CACI1H,GAAI,2BACJyC,SAAU,IACV8E,SAAU,CACNnH,MAAO,wBACPE,KAAM,eAEVqH,UAAWpE,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLgD,OAAQ,OACRM,YAAa,MAEjB,CACInI,GAAI,2BACJyC,SAAU,IACV8E,SAAU,CACNnH,MAAO,uBACPE,KAAM,cAEVqH,UAAWpE,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZG,SACAkB,UACLgD,OAAQ,UACRM,YAAa,QAEjB,CACInI,GAAI,2BACJyC,SAAU,IACV8E,SAAU,CACNnH,MAAO,yBACPE,KAAM,gBAEVqH,UAAWpE,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZG,SACAkB,UACLgD,OAAQ,WACRM,YAAa,OAEjB,CACInI,GAAI,2BACJyC,SAAU,IACV8E,SAAU,CACNnH,MAAO,6BACPE,KAAM,gBAEVqH,UAAWpE,MACNC,SAAS,GAAI,QACbA,SAAS,EAAG,SACZG,SACAkB,UACLgD,OAAQ,OACRM,YAAa,YAOzBvH,EAAKqB,MAAM,mBAAmBnB,OAAM,IAiCzB,CAAC,IAAK,CAAEsH,QAhCU,CACrBpI,GAAI,2BACJyC,SAAU,IACV8E,SAAU,CACNc,QAAS,yDACTC,QAAS,sBACTlI,MAAO,wBACPE,KAAM,cACNiI,MAAO,iBAEXC,QAASjF,MACJI,SACAkB,UACL8C,UAAWpE,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL4D,MAAO,CACH,CACIzI,GAAI,2BACJyC,SAAU,IACVY,YAAa,oDACbqF,WAAY,OAGpBC,OAAQ,WACRd,OAAQ,OACRe,eAAgB,GAChBC,UAAW,IACXV,YAAa,UCzFrB,MAAMW,EAAe,CACjBC,MAAO,CACH,CACI/I,GAAI,2BACJM,KAAM,WACN0I,QAAS,CACL,2BACA,2BACA,2BACA,6BAGR,CACIhJ,GAAI,2BACJM,KAAM,cACN0I,QAAS,CACL,2BACA,8BAIZC,MAAO,CACH,CACIjJ,GAAI,2BACJiF,YAAa,GACbiE,WAAY,CACR,CACIlJ,GAAI,2BACJM,KAAM,mBACN6I,WAAY,CACR,CACInJ,GAAI,2BACJM,KAAM,UACNI,MAAO,eAKvB0I,SAAU,CACN,CACIpJ,GAAI,4BACJqJ,OAAQ,2BACRjE,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLyE,SAAU,2BACV/H,QAAS,sBAGjBgI,MAAO,wCACPlG,YAAa,kkBACbmG,IAAKjG,MACAO,IAAI,EAAG,QACPH,SACAkB,UACL4E,cAAc,EACdC,OAAQ,2BACRC,UAAW,CAAC,4BACZrJ,KAAM,8BAEV,CACIN,GAAI,2BACJiF,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,2EACbmG,IAAKjG,MACAO,IAAI,EAAG,QACPH,SACAkB,UACL4E,cAAc,EACdC,OAAQ,2BACRC,UAAW,CAAC,2BAA4B,4BACxCrJ,KAAM,yCAEV,CACIN,GAAI,2BACJiF,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,8FACbmG,IAAK,KACLC,cAAc,EACdC,OAAQ,2BACRC,UAAW,GACXrJ,KAAM,gEAEV,CACIN,GAAI,2BACJiF,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,8FACbmG,IAAK,KACLC,cAAc,EACdC,OAAQ,2BACRC,UAAW,CAAC,2BAA4B,4BACxCrJ,KAAM,wBAEV,CACIN,GAAI,2BACJiF,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,8FACbmG,IAAK,KACLC,cAAc,EACdC,OAAQ,2BACRC,UAAW,CAAC,4BACZrJ,KAAM,wCAEV,CACIN,GAAI,2BACJiF,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,8FACbmG,IAAK,KACLC,cAAc,EACdC,OAAQ,2BACRC,UAAW,GACXrJ,KAAM,8BAGdsJ,QAAS,CACL,CACI5J,GAAI,2BACJC,OAAQ,sCACRK,KAAM,qBAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,UAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,mBAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,oBAKlBM,EAAKqB,MAAM,qBAAqBnB,MAAM,IAAK,CAAEgI,UAE7ClI,EAAKC,OAAO,yBAAyBC,OAAOmD,IACxC,IACI,MAAM,KAAE3D,GAASU,KAAKC,MAAMgD,EAAQ9C,MAC9B0I,EAAa,CACf7J,GAAIgC,cACJ1B,OACA0I,QAAS,IAOb,OAJA3E,IAAEG,OAAOsE,EAAO,CACZC,MAAO,IAAID,EAAMC,MAAOc,KAGrB,CAAC,IAAK,CAAEA,QAIlB,CAHC,MAAOhI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,2BAA2BC,OAAOmD,IAC1C,IACI,MAAM,OAAEyF,EAAF,OAAUtF,GAAWpD,KAAKC,MAAMgD,EAAQ9C,MACxC0I,EAAOf,EAAMC,MAAM1H,MAAMyI,GAAUA,EAAM9J,KAAO0J,IAItD,OAFArF,IAAEG,OAAOqF,EAAMzF,GAER,CAAC,IAAK,CAAEyF,QAIlB,CAHC,MAAOhI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,2BAA2BC,OAAOmD,IAC1C,IACI,MAAM,OAAEyF,GAAW1I,KAAKC,MAAMgD,EAAQ9C,MAetC,OAbAkD,IAAEG,OAAOsE,EAAO,CACZC,MAAO1E,IAAEC,IAAIwE,EAAMC,OAAQc,IACnBA,EAAK7J,KAAO0J,GACZrF,IAAEG,OAAOqF,EAAM,CACXb,QAAS,KAIVa,KAEXZ,MAAOH,EAAMG,MAAMc,QAAQC,GAASA,EAAKN,SAAWA,MAGjD,CAAC,IAAK,CAAEA,UAIlB,CAHC,MAAO7H,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,4BAA4BC,OAAOmD,IAC3C,IACI,MAAM,OAAEyF,GAAW1I,KAAKC,MAAMgD,EAAQ9C,MAOtC,OALAkD,IAAEG,OAAOsE,EAAO,CACZC,MAAO1E,IAAEI,OAAOqE,EAAMC,MAAO,CAAE/I,GAAI0J,IACnCT,MAAOH,EAAMG,MAAMc,QAAQC,GAASA,EAAKN,SAAWA,MAGjD,CAAC,IAAK,CAAEA,UAIlB,CAHC,MAAO7H,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,yBAAyBC,OAAOmD,IACxC,IACI,MAAM,OAAEyF,EAAF,KAAUpJ,GAASU,KAAKC,MAAMgD,EAAQ9C,MACtC6I,EAAa,CACfhK,GAAIgC,cACJiD,YAAa,GACbiE,WAAY,GACZE,SAAU,GACVG,MAAO,KACPlG,YAAa,KACbmG,IAAK,KACLC,cAAc,EACdC,SACAC,UAAW,GACXrJ,QAgBJ,OAbA+D,IAAEG,OAAOsE,EAAO,CACZG,MAAO,IAAIH,EAAMG,MAAOe,GACxBjB,MAAO1E,IAAEC,IAAIwE,EAAMC,OAAQc,IACnBA,EAAK7J,KAAO0J,GACZrF,IAAEG,OAAOqF,EAAM,CACXb,QAAS,IAAIa,EAAKb,QAASgB,EAAKhK,MAIjC6J,OAIR,CAAC,IAAK,CAAEG,QAIlB,CAHC,MAAOnI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,4BAA4BC,OAAOmD,IAC3C,IACI,MAAM,OAAEoF,EAAF,OAAUjF,GAAWpD,KAAKC,MAAMgD,EAAQ9C,MACxC6I,EAAOlB,EAAMG,MAAM5H,MAAM4I,GAAUA,EAAMjK,KAAOqJ,IAItD,OAFAhF,IAAEG,OAAOwF,EAAM5F,GAER,CAAC,IAAK,CAAE4F,QAIlB,CAHC,MAAOnI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,0BAA0BC,OAAOmD,IACzC,IACI,MAAM,OAAEoF,EAAF,SAAUa,EAAV,OAAoBR,GAAW1I,KAAKC,MAAMgD,EAAQ9C,MAClD6I,EAAOlB,EAAMG,MAAM5H,MAAM4I,GAAUA,EAAMjK,KAAOqJ,IAEtD,IAAKW,EACD,MAAO,CAAC,IAAK,kBAGjB,MAAMG,EAAarB,EAAMC,MAAM1H,MAAMwI,GAASA,EAAK7J,KAAOgK,EAAKN,SAE/D,IAAKS,EACD,MAAO,CAAC,IAAK,kBAKjB,GAFA9F,IAAE+F,KAAKD,EAAWnB,QAASK,GAEvBK,EAAQ,CACR,MAAMW,EAAkBvB,EAAMC,MAAM1H,MAAMwI,GAASA,EAAK7J,KAAOgK,EAAKN,SAEpE,IAAKW,EACD,MAAO,CAAC,IAAK,kBAGjBF,EAAWnB,QAAQsB,OAAOJ,EAAU,EAAGF,EAAKhK,IAC5CgK,EAAKN,OAASW,EAAgBrK,EACjC,MACGmK,EAAWnB,QAAQsB,OAAOJ,EAAU,EAAGF,EAAKhK,IAGhD,MAAO,CAAC,KAAK,EAIhB,CAHC,MAAO6B,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,4BAA4BC,OAAOmD,IAC3C,IACI,MAAM,OAAEoF,GAAWrI,KAAKC,MAAMgD,EAAQ9C,MAatC,OAXAkD,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEI,OAAOqE,EAAMG,MAAO,CAAEjJ,GAAIqJ,IACnCN,MAAO1E,IAAEC,IAAIwE,EAAMC,OAAQc,IACvBxF,IAAEG,OAAOqF,EAAM,CACXb,QAASa,EAAKb,QAAQe,QAAQQ,GAAYA,IAAYlB,MAGnDQ,OAIR,CAAC,IAAK,CAAER,UAIlB,CAHC,MAAOxH,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,4BAA4BC,OAAOmD,IAC3C,IACI,MAAM,OAAEoF,EAAF,QAAU9H,GAAYP,KAAKC,MAAMgD,EAAQ9C,MACzCqJ,EAAU,CACZxK,GAAIgC,cACJqH,SACAjE,UAAW7B,MACNI,SACAkB,UACLyE,SAAU,2BACV/H,WAeJ,OAZA8C,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXZ,SAAU,IAAIY,EAAKZ,SAAUoB,KAI9BR,OAIR,CAAC,IAAK,CAAEQ,WAIlB,CAHC,MAAO3I,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,8BAA8BC,OAAOmD,IAC7C,IACI,MAAM,OAAEoF,EAAF,KAAU/I,GAASU,KAAKC,MAAMgD,EAAQ9C,MACtCsJ,EAAuB,CACzBzK,GAAIgC,cACJ1B,OACA6I,WAAY,IAehB,OAZA9E,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY,IAAIc,EAAKd,WAAYuB,KAIlCT,OAIR,CAAC,IAAK,CAAES,aAIlB,CAHC,MAAO5I,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,iCAAiCC,OAAOmD,IAChD,IACI,MAAM,OAAEoF,EAAF,YAAUqB,EAAV,OAAuBtG,GAAWpD,KAAKC,MAAMgD,EAAQ9C,MAC3D,IAAIsJ,EAAY,KAmBhB,OAjBApG,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEC,IAAI0F,EAAKd,YAAayB,IAChBA,EAAW3K,KAAO0K,IAClBrG,IAAEG,OAAOmG,EAAY,IAAKvG,IAC1BqG,EAAYE,GAGTA,KAIRX,OAIR,CAAC,IAAK,CAAES,aAIlB,CAHC,MAAO5I,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,iCAAiCC,OAAOmD,IAChD,IACI,MAAM,OAAEoF,EAAF,YAAUqB,GAAgB1J,KAAKC,MAAMgD,EAAQ9C,MAcnD,OAZAkD,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY7E,IAAEI,OAAOuF,EAAKd,WAAY,CAAElJ,GAAI0K,MAI7CV,OAIR,CAAC,KAAK,EAIhB,CAHC,MAAOnI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,8BAA8BC,OAAOmD,IAC7C,IACI,MAAM,OAAEoF,EAAF,YAAUqB,EAAV,KAAuBpK,GAASU,KAAKC,MAAMgD,EAAQ9C,MACnDyJ,EAAY,CACd5K,GAAIgC,cACJ0I,cACApK,OACAI,MAAO,cAuBX,OApBA2D,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY7E,IAAEwG,KAAKb,EAAKd,YAAauB,IAC7BA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY,IAAIsB,EAAUtB,WAAYyB,KAIvCH,OAKZT,OAIR,CAAC,IAAK,CAAEY,aAIlB,CAHC,MAAO/I,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,iCAAiCC,OAAOmD,IAChD,IACI,MAAM,OACFoF,EADE,YAEFqB,EAFE,YAGFI,EAHE,OAIF1G,GACApD,KAAKC,MAAMgD,EAAQ9C,MACvB,IAAIyJ,EAAY,KA6BhB,OA3BAvG,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY7E,IAAEC,IAAI0F,EAAKd,YAAauB,IAC5BA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY9E,IAAEC,IAAImG,EAAUtB,YAAa4B,IACjCA,EAAW/K,KAAO8K,IAClBzG,IAAEG,OAAOuG,EAAY,IAAK3G,IAC1BwG,EAAYG,GAGTA,OAKZN,OAKZT,OAIR,CAAC,IAAK,CAAEY,aAIlB,CAHC,MAAO/I,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKC,OAAO,iCAAiCC,OAAOmD,IAChD,IACI,MAAM,OAAEoF,EAAF,YAAUqB,EAAV,YAAuBI,GAAgB9J,KAAKC,MAAMgD,EAAQ9C,MAsBhE,OApBAkD,IAAEG,OAAOsE,EAAO,CACZG,MAAO5E,IAAEC,IAAIwE,EAAMG,OAAQe,IACnBA,EAAKhK,KAAOqJ,GACZhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY7E,IAAEC,IAAI0F,EAAKd,YAAauB,IAC5BA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY9E,IAAEI,OAAOgG,EAAUtB,WAAY,CAAEnJ,GAAI8K,MAIlDL,OAKZT,OAIR,CAAC,KAAK,EAIhB,CAHC,MAAOnI,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KC5jBL,MAAMyJ,EAAkB,CACpB,CACIhL,GAAI,MACJuF,KAAM,eACNjF,KAAM,YAEV,CACIN,GAAI,QACJuF,KAAM,eACNjF,KAAM,QACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,OACJuF,KAAM,eACNjF,KAAM,OACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,SACJuF,KAAM,eACNjF,KAAM,SACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,QACJuF,KAAM,eACNjF,KAAM,QACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,OACJuF,KAAM,eACNjF,KAAM,OACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,YACJuF,KAAM,eACNjF,KAAM,YACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,UACJuF,KAAM,eACNjF,KAAM,UACNkF,YAAa,EACbyF,WAAY,GAEhB,CACIjL,GAAI,2BACJuF,KAAM,eACNjF,KAAM,OACNkF,YAAa,EACbyF,WAAY,EACZ/H,MAAOC,IAAOC,MAAM,MAExB,CACIpD,GAAI,2BACJuF,KAAM,eACNjF,KAAM,WACNkF,YAAa,EACbyF,WAAY,EACZ/H,MAAOC,IAAO+H,KAAK,MAEvB,CACIlL,GAAI,2BACJuF,KAAM,eACNjF,KAAM,WACNkF,YAAa,EACbyF,WAAY,EACZ/H,MAAOC,IAAOgI,OAAO,OAIvBC,EAAgB,CAClB,CACIpL,GAAI,2BACJqL,OAAQ,WACRC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAU,CAAC,2BAA4B,4BACvCC,QAAS,gDACTnK,QAAQ,0uDAYRoK,KAAM,CACFrL,KAAM,oBACNF,MAAO,8BACPH,OAAQ,uCAEZ2L,GAAI,CACA,CACItL,KAAM,iBACNF,MAAO,2BACPH,OAAQ,OAGhBmF,UAAW7B,MACNI,SACAkB,WAET,CACI7E,GAAI,2BACJqL,OAAQ,OACRC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAU,GACVC,QAAS,eACTnK,QAAQ,2GAGRoK,KAAM,CACFrL,KAAM,eACNF,MAAO,yBACPH,OAAQ,uCAEZ2L,GAAI,CACA,CACItL,KAAM,iBACNF,MAAO,2BACPH,OAAQ,OAGhBmF,UAAW7B,MACNI,SACAkB,WAET,CACI7E,GAAI,2BACJqL,OAAQ,QACRC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAU,CAAC,4BACXC,QAAS,kBACTnK,QAAQ,oHAGRoK,KAAM,CACFrL,KAAM,iBACNF,MAAO,2BACPH,OAAQ,uCAEZ2L,GAAI,CACA,CACItL,KAAM,iBACNF,MAAO,2BACPH,OAAQ,OAGhBmF,UAAW7B,MACNI,SACAkB,WAET,CACI7E,GAAI,2BACJqL,OAAQ,QACRC,aAAa,EACbC,WAAW,EACXC,UAAU,EACVC,SAAU,CAAC,4BACXC,QAAS,sCACTnK,QAAQ,kJAGRoK,KAAM,CACFrL,KAAM,SACNF,MAAO,mBACPH,OAAQ,uCAEZ2L,GAAI,CACA,CACItL,KAAM,iBACNF,MAAO,2BACPH,OAAQ,OAGhBmF,UAAW7B,MACNI,SACAkB,YA0CbjE,EAAKqB,MAAM,oBAAoBnB,MAAM,IAAK,CAAEkK,WAE5CpK,EAAKqB,MAAM,mBAAmBnB,OAAOI,IACjC,IACI,MAAM,YAAE2K,EAAF,YAAeC,GAAgB5K,EAAO6E,OACtCgG,EA3CM,EAChBX,EACAJ,EACAa,EACAC,KAEA,GAAIA,EAAa,CACb,MAAME,EAAQhB,EAAO3J,MAAM4K,GAAWA,EAAO3L,OAASwL,IAEtD,OAAKE,EAIEZ,EAAMrB,QAAQmC,GAASA,EAAKT,SAASnF,SAAS0F,EAAMhM,MAHhD,EAId,CAED,GAAoB,QAAhB6L,EACA,OAAOT,EAIX,GAAI,CAAC,UAAW,aAAa9E,SAASuF,GAAc,CAChD,GAAoB,YAAhBA,EACA,OAAOT,EAAMrB,QAAQmC,GAASA,EAAKX,YAGvC,GAAoB,cAAhBM,EACA,OAAOT,EAAMrB,QAAQmC,GAASA,EAAKZ,aAE1C,CAED,MAAI,CAAC,QAAS,OAAQ,SAAU,QAAS,OAAQ,WAAWhF,SAASuF,GAC1DT,EAAMrB,QAAQmC,GAASA,EAAKb,SAAWQ,IAG3C,EAAP,EAQ0BM,CAClBf,EACAJ,EACAa,EACAC,GAGJ,MAAO,CAAC,IAAK,CAAEV,MAAOW,GAIzB,CAHC,MAAOlK,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KAGLX,EAAKqB,MAAM,kBAAkBnB,OAAOI,IAChC,IACI,MAAM,OAAEkL,GAAWlL,EAAO6E,OACpBmG,EAAOd,EAAM/J,MAAMgL,GAAUA,EAAMrM,KAAOoM,IAEhD,OAAKF,EAIE,CAAC,IAAK,CAAEA,SAHJ,CAAC,IAAK,CAAE3K,QAAS,kBAO/B,CAHC,MAAOM,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KChRL,MAAM+K,EAAgC,CAClC,CACItM,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLxB,YAAa,aACbQ,MAAO,uBACP0B,KAAM,gBAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,OACZG,SACAkB,UACLxB,YAAa,8BACbQ,MAAO,uBACP0B,KAAM,eAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLxB,YAAa,aACbQ,MAAO,uBACP0B,KAAM,gBAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLxB,YAAa,8BACbQ,MAAO,uBACP0B,KAAM,gBAId3E,EAAKqB,MAAM,sBAAsBnB,MAAM,IAAK,CAAEwL,kBC3C9C1L,EAAKqB,MAAM,eAAenB,OAAM,IAqKrB,CAAC,IAAK,CAAEyL,OApKS,CACpB,CACIvM,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,UAEVqI,OAAQ,UACRf,cAAe,aACfC,OAAQ,UACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,mBAEVqI,OAAQ,UACRf,cAAe,SACfC,OAAQ,YACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,eAEVqI,OAAQ,UACRf,cAAe,aACfC,OAAQ,UACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,EAAG,WACZG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,oBAEVqI,OAAQ,SACRf,cAAe,SACfC,OAAQ,YACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,gBAEVqI,OAAQ,SACRf,cAAe,SACfC,OAAQ,YACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,kBAEVuH,OAAQ,UACRc,OAAQ,SACRf,cAAe,aACfO,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,EAAG,WACZG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,oBAEVqI,OAAQ,SACRf,cAAe,aACfC,OAAQ,YACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,iBAEVqI,OAAQ,SACRf,cAAe,SACfC,OAAQ,WACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbA,SAAS,EAAG,WACZG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,YAEVqI,OAAQ,SACRf,cAAe,aACfC,OAAQ,WACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNjH,KAAM,mBAEVqI,OAAQ,SACRf,cAAe,SACfC,OAAQ,WACRM,YAAa,UAOzBvH,EAAKqB,MAAM,iBAAiBnB,OAAM,IAuCvB,CAAC,IAAK,CAAE0L,MAtCM,CACjBxM,GAAI,2BACJyM,OAAQ,KACRrH,UAAW7B,MACNI,SACAkB,UACLpC,SAAU,IACV8E,SAAU,CACNmF,SAAU,0BACVC,SAAU,YACVnF,KAAM,YACNrH,QAAS,MACTG,KAAM,gBAEVmI,MAAO,CACH,CACIzI,GAAI,2BACJ4M,aAAc,UACdnK,SAAU,IACVnC,KAAM,iBACNuM,SAAU,GACVnE,WAAY,OAEhB,CACI1I,GAAI,2BACJ4M,aAAc,UACdnK,SAAU,IACVnC,KAAM,0BACNuM,SAAU,EACVnE,WAAY,IAGpBC,OAAQ,UACRf,cAAe,aACfC,OAAQ,UACRM,YAAa,SC5MrB,IAAI2E,EAAsB,CACtB,CACI9M,GAAI,2BACJ+M,WAAY,CAAC,UACbC,SAAU,QACVvK,SAAU,IACV2C,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLoI,MAAO,KACPC,cAAe,WACfC,aAAa,EACbC,aAAa,EACb9M,KAAM,sBACNkC,MAAO,MACPqK,SAAU,GACVQ,UAAW9J,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLyI,SAAU,GAEd,CACItN,GAAI,2BACJ+M,WAAY,CAAC,UACbC,SAAU,QACVvK,SAAU,IACV2C,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLoI,MAAO,KACPC,cAAe,eACfC,aAAa,EACbC,aAAa,EACb9M,KAAM,qBACNkC,MAAO,GACPqK,SAAU,EACVQ,UAAW9J,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZG,SACAkB,UACLyI,SAAU,GAEd,CACItN,GAAI,2BACJ+M,WAAY,CAAC,qBACbC,SAAU,UACVvK,SAAU,IACV2C,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLoI,MAAO,KACPC,cAAe,WACfC,aAAa,EACbC,aAAa,EACb9M,KAAM,gCACNkC,MAAO,IACPqK,SAAU,GACVQ,UAAW9J,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZG,SACAkB,UACLyI,SAAU,GAEd,CACItN,GAAI,2BACJ+M,WAAY,CAAC,yBACbC,SAAU,SACVvK,SAAU,IACV2C,UAAW7B,MACNC,SAAS,GAAI,QACbG,SACAkB,UACLoI,MAAO,KACPC,cAAe,UACfC,aAAa,EACbC,aAAa,EACb9M,KAAM,8BACNkC,MAAO,MACPqK,SAAU,EACVQ,UAAW9J,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,SACZG,SACAkB,UACLyI,SAAU,IAIlB1M,EAAKqB,MAAM,iBAAiBnB,MAAM,IAAK,CAAEgM,aC9FzClM,EAAKqB,MAAM,mCAAmCnB,OAAM,IA4BzC,CAAC,IAAK,CAAEyM,SA3Ba,CACxB,CACIvN,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,GACZC,SAAU,SACVZ,MAAO,wCACPa,OAAQ,EACRC,aAAc,EACdC,WAAY,aACZnK,MAAO,mBACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,GAAI,WACbG,SACAkB,gBAOjBjE,EAAKqB,MAAM,qCAAqCnB,MAAM,IAAK,CACvDmN,WAAY,CACRC,WAAY,KACZC,YAAa,MACbC,cAAe,IACfC,YAAa,KAIrBzN,EAAKqB,MAAM,0BAA0BnB,OAAM,IA8IhC,CAAC,IAAK,CAAEyM,SA7Ia,CACxB,CACIvN,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,EACZC,SAAU,SACVZ,MAAO,wCACPa,OAAQ,EACRC,aAAc,EACdlK,MAAO,2BACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,GAAI,WACbG,SACAkB,WAET,CACI7E,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,oBAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,GACZC,SAAU,SACVZ,MAAO,wCACPa,OAAQ,IACRC,aAAc,EACdlK,MAAO,mBACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,EAAG,QACZG,SACAkB,WAET,CACI7E,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,uCACRK,KAAM,iBAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,GACZC,SAAU,SACVZ,MAAO,wCACPa,OAAQ,IACRC,aAAc,EACdlK,MAAO,mBACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,GAAI,QACbG,SACAkB,WAET,CACI7E,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,uCACRK,KAAM,YAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVwK,MAAO,wCACPU,SAAS,EACTC,WAAY,EACZC,SAAU,SACVE,aAAc,GACdD,OAAQ,EACRjK,MAAO,0BACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,EAAG,QACZG,SACAkB,WAET,CACI7E,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,UAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,EACZC,SAAU,SACVZ,MAAO,wCACPa,OAAQ,EACRC,aAAc,EACdlK,MAAO,0BACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,EAAG,QACZG,SACAkB,WAET,CACI7E,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eAEVmN,OAAQ,KACRC,QAAS,yIACTjL,SAAU,IACVkL,SAAS,EACTC,WAAY,EACZC,SAAU,SACVZ,MAAO,KACPa,OAAQ,IACRC,aAAc,GACdlK,MAAO,eACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,EAAG,QACZG,SACAkB,gBAOjBjE,EAAKqB,MAAM,4BAA4BnB,OAAM,IA2NlC,CAAC,IAAK,CAAEwN,QA1NU,CACrBtO,GAAI,2BACJuO,WAAY,CACR,CACIvO,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbG,SACAkB,UACLxB,YAAa,0BACbqI,QAAS,iBACTnG,KAAM,eAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLxB,YAAa,uCACbqI,QAAS,gBACTnG,KAAM,aAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLxB,YAAa,wCACbqI,QAAS,kBACTnG,KAAM,aAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLxB,YAAa,4BACbqI,QAAS,iBACTnG,KAAM,gBAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZG,SACAkB,UACLxB,YAAa,UACbqI,QAAS,UACTnG,KAAM,oBAGdiJ,WAAY,CACR,CACIxO,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,GACnBlF,MAAO,oCACPyB,OAAQ,CACJ,kBACA,uBACA,QACA,QACA,WAEJ1K,KAAM,qBAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,EACnBlF,MAAO,oCACPyB,OAAQ,CACJ,iBACA,wBACA,UACA,aAEJ1K,KAAM,UAEV,CACIN,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,GACnBlF,MAAO,oCACPyB,OAAQ,CACJ,sBACA,WACA,UACA,aAEJ1K,KAAM,mBAGdkN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,oBAEVmN,OAAQ,MACRC,QAAS,yIACTjL,SAAU,IACVY,YAAY,6hBASZqL,QAASnL,MACJO,IAAI,GAAI,QACRH,SACAkB,UACL8J,MAAO,CACH,CACI3O,GAAI,2BACJ4O,SAAU,YACVtO,KAAM,uBACNuO,KAAM,QACNC,IAAK,yCAET,CACI9O,GAAI,2BACJ4O,SAAU,kBACVtO,KAAM,WACNuO,KAAM,SACNC,IAAK,KAET,CACI9O,GAAI,2BACJ4O,SAAU,YACVtO,KAAM,uBACNuO,KAAM,QACNC,IAAK,0CAGbnK,UAAU,EACVgJ,SAAS,EACTE,SAAU,SACVjE,QAAS,CACL,CACI5J,GAAI,2BACJC,OAAQ,sCACR8O,IAAK,sBACLzO,KAAM,qBAEV,CACIN,GAAI,2BACJC,OAAQ,sCACR8O,IAAK,cACLzO,KAAM,UAEV,CACIN,GAAI,2BACJC,OAAQ,sCACR8O,IAAK,YACLzO,KAAM,gBAGdwN,OAAQ,EACRkB,QAAS,CACL,CACIhP,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,qBAEVkK,QAAS,6DACTpF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLiD,MAAO,GAEX,CACI9H,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,gBAEVkK,QAAS,4MACTpF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLiD,MAAO,GAEX,CACI9H,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,UAEVkK,QAAS,yJACTpF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLiD,MAAO,IAGfmH,UAAW1L,MACNO,IAAI,EAAG,QACPH,SACAkB,UACLqK,KAAM,CAAC,YACPrL,MAAO,2BACP0B,KAAM,YACN8H,UAAW9J,MACNC,SAAS,GAAI,WACbG,SACAkB,eCzYbjE,EAAKqB,MAAM,kCAAkCnB,OAAM,IA0ExC,CAAC,IAAK,CAAEyN,WAzEwB,CACnC,CACIvO,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNvH,GAAI,2BACJC,OAAQ,sCACRK,KAAM,qBAEV+C,YAAa,kBACbkC,KAAM,YAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNvH,GAAI,2BACJM,KAAM,SACNL,OAAQ,uCAEZoD,YAAa,wBACbkC,KAAM,WAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL0C,SAAU,CACNvH,GAAI,2BACJM,KAAM,kBACNL,OAAQ,uCAEZoD,YAAa,qBACbkC,KAAM,iBAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACL0C,SAAU,CACNvH,GAAI,2BACJM,KAAM,cACNL,OAAQ,uCAEZoD,YAAa,wBACbkC,KAAM,WAEV,CACIvF,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,WACZG,SACAkB,UACL0C,SAAU,CACNvH,GAAI,2BACJM,KAAM,iBACNL,OAAQ,uCAEZoD,YAAa,wBACbkC,KAAM,gBAOlB3E,EAAKqB,MAAM,yBAAyBnB,MAAM,IAAK,CAC3CqO,SAAU,CACNC,SAAU,CACN,CACIjO,KAAM,CAAC,GAAI,GAAI,IACfkO,gBAAiB,CAAC,UAAW,UAAW,aAGhDrE,OAAQ,CAAC,gBAAiB,YAAa,YAI/CpK,EAAKqB,MAAM,8BAA8BnB,OAAM,IA+GpC,CAAC,IAAK,CAAEyL,OA9GS,CACpB,CACIvM,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,WACZA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNnH,MAAO,sBACPE,KAAM,qBAEVmC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,UACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNnH,MAAO,mBACPE,KAAM,UAEVmC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,WACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNnH,MAAO,4BACPE,KAAM,mBAEVmC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,WACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNnH,MAAO,wBACPE,KAAM,eAEVmC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,UACRM,YAAa,IAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,SACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNjH,KAAM,mBACNF,MAAO,8BAEXqC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,WACRM,YAAa,KAEjB,CACInI,GAAI,2BACJoF,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACL0C,SAAU,CACNnH,MAAO,4BACPE,KAAM,mBAEVmC,SAAU,IACVgG,MAAO,EACPE,OAAQ,WACRd,OAAQ,WACRM,YAAa,SAOzBvH,EAAKqB,MAAM,gCAAgCnB,OAAM,IAyFtC,CAAC,IAAK,CAAEyM,SAxFa,CACxB,CACIvN,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,eAEVmN,OAAQ,MACRrI,UAAW7B,MACNC,SAAS,EAAG,SACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV6M,aAAc,CAAC,WACfzL,MAAO,4BAEX,CACI7D,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,oBAEVmN,OAAQ,MACRrI,UAAW7B,MACNC,SAAS,GAAI,SACbA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV6M,aAAc,CAAC,SAAU,YACzBzL,MAAO,oBAEX,CACI7D,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,uCACRK,KAAM,iBAEVmN,OAAQ,MACRrI,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV6M,aAAc,CAAC,YACfzL,MAAO,oBAEX,CACI7D,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,uCACRK,KAAM,YAEVmN,OAAQ,MACRrI,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,EAAG,WACZA,SAAS,GAAI,WACbG,SACAkB,UACLpC,SAAU,IACV6M,aAAc,CAAC,UACfzL,MAAO,2BAEX,CACI7D,GAAI,2BACJwN,OAAQ,CACJvN,OAAQ,sCACRK,KAAM,UAEVmN,OAAQ,MACRrI,UAAW7B,MACNC,SAAS,EAAG,QACZA,SAAS,GAAI,WACbA,SAAS,EAAG,WACZG,SACAkB,UACLpC,SAAU,IACV6M,aAAc,CAAC,UAAW,SAC1BzL,MAAO,gCAOnBjD,EAAKqB,MAAM,6BAA6BnB,OAAM,IAwGnC,CAAC,IAAK,CAAEyO,MAvGO,CAClB,CACIvP,GAAI,2BACJwP,SAAUjM,MACLO,IAAI,EAAG,QACPA,IAAI,EAAG,QACPH,SACAkB,UACL+E,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,qBAEV,CACIL,OAAQ,sCACRK,KAAM,WAGduD,MAAO,kCAEX,CACI7D,GAAI,2BACJwP,SAAUjM,MACLO,IAAI,EAAG,OACPA,IAAI,EAAG,QACPH,SACAkB,UACL+E,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,kBAEV,CACIL,OAAQ,uCACRK,KAAM,iBAEV,CACIL,OAAQ,uCACRK,KAAM,oBAGduD,MAAO,6BAEX,CACI7D,GAAI,2BACJwP,SAAUjM,MACLI,SACAkB,UACL+E,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,iBAGduD,MAAO,mCAEX,CACI7D,GAAI,2BACJwP,SAAU,KACV5F,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,qBAEV,CACIL,OAAQ,uCACRK,KAAM,kBAGduD,MAAO,qBAEX,CACI7D,GAAI,2BACJwP,SAAU,KACV5F,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,eAEV,CACIL,OAAQ,sCACRK,KAAM,qBAEV,CACIL,OAAQ,sCACRK,KAAM,mBAGduD,MAAO,mBAEX,CACI7D,GAAI,2BACJwP,SAAU,KACV5F,QAAS,CACL,CACI3J,OAAQ,sCACRK,KAAM,mBAGduD,MAAO,8BAOnBjD,EAAKqB,MAAM,oCAAoCnB,OAAM,IAiD1C,CAAC,IAAK,CAAEgM,SAhDa,CACxB,CACI9M,GAAI,2BACJyP,eAAgB,GAChBhN,SAAU,IACVwK,MAAO,+CACP3M,KAAM,gCACNkC,MAAO,EACPkN,cAAe,OAEnB,CACI1P,GAAI,2BACJyP,eAAgB,GAChBhN,SAAU,IACVwK,MAAO,+CACP3M,KAAM,gCACNkC,MAAO,GACPkN,cAAe,OAEnB,CACI1P,GAAI,2BACJyP,eAAgB,GAChBhN,SAAU,IACVwK,MAAO,8CACP3M,KAAM,4BACNkC,MAAO,GACPkN,cAAe,MAEnB,CACI1P,GAAI,2BACJyP,eAAgB,GAChBhN,SAAU,IACVwK,MAAO,+CACP3M,KAAM,gCACNkC,MAAO,IACPkN,cAAe,MAEnB,CACI1P,GAAI,2BACJyP,eAAgB,GAChBhN,SAAU,IACVwK,MAAO,+CACP3M,KAAM,gCACNkC,MAAO,IACPkN,cAAe,UAO3B9O,EAAKqB,MAAM,8BAA8BnB,OAAM,IAoDpC,CAAC,IAAK,CAAE6O,UAnDe,CAC1B,CACIzM,MAAOC,IAAOyM,SAAS,KACvBC,SAAU,KACVvP,KAAM,SACNwH,MAAO,OAEX,CACI5E,MAAOC,IAAO2M,KAAK,KACnBD,SAAU,KACVvP,KAAM,UACNwH,MAAO,OAEX,CACI5E,MAAOC,IAAO4M,OAAO,KACrBF,SAAU,KACVvP,KAAM,cACNwH,MAAO,OAEX,CACI5E,MAAOC,IAAO6M,IAAI,KAClBH,SAAU,KACVvP,KAAM,iBACNwH,MAAO,OAEX,CACI5E,MAAOC,IAAOgI,OAAO,KACrB0E,SAAU,KACVvP,KAAM,aACNwH,MAAO,MAEX,CACI5E,MAAOC,IAAOyM,SAAS,KACvBC,SAAU,KACVvP,KAAM,SACNwH,MAAO,MAEX,CACI5E,MAAOC,IAAO+H,KAAK,KACnB2E,SAAU,KACVvP,KAAM,WACNwH,MAAO,MAEX,CACI5E,MAAOC,IAAOyM,SAAS,KACvBC,SAAU,KACVvP,KAAM,SACNwH,MAAO,WC1fnBlH,EAAKqB,MAAM,eAAenB,OAAMC,UAC5B,UACUvB,EAAK,MAiBX,MAAO,CAAC,IAAK,CAAE2G,QAfW,CACtB,CACI9C,YAAa,+IACbQ,MAAO,yBAEX,CACIR,YAAa,iKACbQ,MAAO,6BAEX,CACIR,YAAa,6JACbQ,MAAO,uCAQlB,CAHC,MAAOhC,GAEL,OADAC,QAAQC,MAAMF,GACP,CAAC,IAAK,CAAEN,QAAS,yBAC3B,KCvBLX,EAAKqB,MAAM,uBAAuBnB,OAAM,IAuB7B,CAAC,IAAK,CAAEmP,QAtBU,CACrBjQ,GAAI,2BACJC,OAAQ,sCACR8O,IAAK,mBACLmB,gBAAiB,gBACjB3G,MAAO,oCACP4G,YAAa,YACbC,WAAY,CACR9H,QAAS,YACTzE,MAAO,oBAEXzD,MAAO,2BACPE,KAAM,iBACN+P,WAAY,aACZC,YAAa,CACThI,QAAS,2BACTzE,MAAO,kBAEX0M,gBAAiB,GACjBC,MAAO,qFAMf5P,EAAKqB,MAAM,2BAA2BnB,OAAM,IAgCjC,CAAC,IAAK,CAAE2P,YA/BmB,CAC9B,CACIzQ,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,GACnBnO,KAAM,SACNuH,OAAQ,YAEZ,CACI7H,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,EACnBnO,KAAM,kBACNuH,OAAQ,WAEZ,CACI7H,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,EACnBnO,KAAM,eACNuH,OAAQ,iBAEZ,CACI7H,GAAI,2BACJC,OAAQ,sCACRwO,kBAAmB,EACnBnO,KAAM,iBACNuH,OAAQ,kBAOpBjH,EAAKqB,MAAM,qBAAqBnB,OAAM,IA2F3B,CAAC,IAAK,CAAE4P,MA1FO,CAClB,CACI1Q,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEV8I,SAAU,CACN,CACIpJ,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,2DAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,uEAGjB6D,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL8I,SAAS,EACTgD,MAAO,GACPC,MAAO,kCACPrP,QAAS,+DAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEV8I,SAAU,CACN,CACIpJ,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,uCACRK,KAAM,YAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,+FAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,mBAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,yBAGjB6D,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL8I,SAAS,EACTgD,MAAO,GACPpP,QAAS,qPAOrBX,EAAKqB,MAAM,oBAAoBnB,OAAM,IAyH1B,CAAC,IAAK,CAAE4P,MAxHO,CAClB,CACI1Q,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,uCACRK,KAAM,iBAEV8I,SAAU,CACN,CACIpJ,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,uCACRK,KAAM,mBAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,iDAGjB6D,UAAW7B,MACNC,SAAS,GAAI,WACbG,SACAkB,UACL8I,SAAS,EACTgD,MAAO,EACPpP,QAAS,6CAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,gBAEV8I,SAAU,CACN,CACIpJ,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,eAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,2DAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEV8E,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,uEAGjB6D,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL8I,SAAS,EACTgD,MAAO,GACPC,MAAO,kCACPrP,QAAS,+DAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJC,OAAQ,sCACRK,KAAM,kBAEV8I,SAAU,CACN,CACIpJ,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJM,KAAM,WACNL,OAAQ,wCAEZmF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,+FAEb,CACIvB,GAAI,2BACJwN,OAAQ,CACJxN,GAAI,2BACJM,KAAM,kBACNL,OAAQ,uCAEZmF,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACLtD,QAAS,yBAGjB6D,UAAW7B,MACNC,SAAS,EAAG,SACZG,SACAkB,UACL8I,SAAS,EACTgD,MAAO,GACPpP,QAAS,qP,oBC3FrBsP,QAAMC,QAAQC,OAAOF,QAAMG,SAASC,UAAUC,UAAW,CACrDC,KAzLJ,WACI,MAAM,IAAEC,GAAQC,KAAKC,OACfC,EAAKF,KAAKG,MAChB,IAEIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GATA,YAAEC,GAAgBV,GAalB,aAAEW,GAAiBb,KAAKC,OAAOpQ,OAAOiR,QA+B1C,GA9BID,EAAe,IACfA,EAAe,GAGS,qBAAjBA,IACPA,EAAe,GAGdX,EAAGa,YAWJX,EAAOF,EAAGc,KACVX,EAAQH,EAAGe,EACXX,EAAMJ,EAAGgB,EAAIhB,EAAGiB,OAAS,EACzBZ,EAASL,EAAGgB,EAAIhB,EAAGiB,OAAS,EAC5BX,EAAQH,EAAQD,EAAO,GAAK,EAC5BK,EAAQ,EACRC,EAAgBR,EAAGQ,eAAiB,SAfpCN,EAAOF,EAAGe,EAAIf,EAAGkB,MAAQ,EACzBf,EAAQH,EAAGe,EAAIf,EAAGkB,MAAQ,EAC1Bd,EAAMJ,EAAGgB,EACTX,EAASL,EAAGc,KACZR,EAAQ,EACRC,EAAQF,EAASD,EAAM,GAAK,EAC5BI,EAAgBR,EAAGQ,eAAiB,UAcpCE,EAAa,CAEb,MAAMS,EAAUC,KAAKC,IAAID,KAAKE,IAAIpB,EAAOC,GAAQiB,KAAKE,IAAIlB,EAAMC,IAChEK,EAAcA,EAAcS,EAAUA,EAAUT,EAChD,MAAMa,EAAab,EAAc,EAE3Bc,EAAatB,GAA0B,SAAlBM,EAA2Be,EAAajB,EAAQ,GACrEmB,EAActB,GAA2B,UAAlBK,GAA6Be,EAAajB,EAAQ,GACzEoB,EAAYtB,GAAyB,QAAlBI,EAA0Be,EAAahB,EAAQ,GAClEoB,EAAetB,GAA4B,WAAlBG,GAA8Be,EAAahB,EAAQ,GAE9EiB,IAAeC,IACfrB,EAAMsB,EACNrB,EAASsB,GAGTD,IAAcC,IACdzB,EAAOsB,EACPrB,EAAQsB,EAEf,CAED5B,EAAI+B,YACJ/B,EAAIgC,UAAY7B,EAAGlC,gBACnB+B,EAAIiC,YAAc9B,EAAG+B,YACrBlC,EAAImC,UAAYtB,EAKhB,MAAMuB,EAAU,CAAC,CAAC/B,EAAMG,GAAS,CAACH,EAAME,GAAM,CAACD,EAAOC,GAAM,CAACD,EAAOE,IAIpE,IAAI6B,EADY,CAAC,SAAU,OAAQ,MAAO,SAChBC,QAAQ3B,EAAe,GAKjD,SAAS4B,EAASC,GACd,OAAOJ,GAASC,EAAcG,GAAS,EAC1C,EANoB,IAAjBH,IACAA,EAAc,GAQlB,IAAII,EAASF,EAAS,GACtBvC,EAAI0C,OAAOD,EAAO,GAAIA,EAAO,IAE7B,IAAK,IAAIE,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAAG,CAC3BF,EAASF,EAASI,GAClB,IAAIC,EAAeD,EAAI,EACF,IAAjBC,IACAA,EAAe,GAGnB,MAAMvB,EAAQe,EAAQ,GAAG,GAAKA,EAAQ,GAAG,GACnChB,EAASgB,EAAQ,GAAG,GAAKA,EAAQ,GAAG,GACpClB,EAAIkB,EAAQ,GAAG,GACfjB,EAAIiB,EAAQ,GAAG,GAWrB,GATAxB,EAASE,EAELF,EAASW,KAAKE,IAAIL,GAAU,IAC5BR,EAASW,KAAKsB,MAAMtB,KAAKE,IAAIL,GAAU,IAEvCR,EAASW,KAAKE,IAAIJ,GAAS,IAC3BT,EAASW,KAAKsB,MAAMtB,KAAKE,IAAIJ,GAAS,IAGtCD,EAAS,EAAG,CAEZ,MAAM0B,EAAM5B,EACN6B,EAAM7B,EAAIG,EACV2B,EAAM7B,EAAIC,EACV6B,EAAM9B,EAAIC,EAEV8B,EAAMhC,EACNiC,EAAMjC,EAAIG,EACV+B,EAAMjC,EACNkC,EAAMlC,EAGZnB,EAAI0C,OAAOQ,EAAMtC,EAAQwC,GACzBpD,EAAIsD,OAAOH,EAAMvC,EAAQyC,GACzBrD,EAAIuD,iBAAiBJ,EAAKE,EAAKF,EAAKE,EAAMzC,GAC1CZ,EAAIsD,OAAOP,EAAKE,EAAMrC,GACtBZ,EAAIuD,iBAAiBR,EAAKE,EAAKF,EAAMnC,EAAQqC,GAC7CjD,EAAIsD,OAAOR,EAAMlC,EAAQoC,GACzBhD,EAAIuD,iBAAiBT,EAAKE,EAAKF,EAAKE,EAAMpC,GAC1CZ,EAAIsD,OAAOJ,EAAKE,EAAMxC,GACtBZ,EAAIuD,iBAAiBL,EAAKE,EAAKF,EAAMtC,EAAQwC,EAChD,MAAM,GAAI/B,EAAQ,EAAG,CAElB,MAAMyB,EAAM5B,EAAIG,EACV0B,EAAM7B,EACN8B,EAAM7B,EACN8B,EAAM9B,EAEN+B,EAAMhC,EAAIG,EACV8B,EAAMjC,EACNkC,EAAMjC,EAAIC,EACViC,EAAMlC,EAAIC,EAGhBpB,EAAI0C,OAAOQ,EAAMtC,EAAQwC,GACzBpD,EAAIsD,OAAOH,EAAMvC,EAAQyC,GACzBrD,EAAIuD,iBAAiBJ,EAAKE,EAAKF,EAAKE,EAAMzC,GAC1CZ,EAAIsD,OAAOP,EAAKE,EAAMrC,GACtBZ,EAAIuD,iBAAiBR,EAAKE,EAAKF,EAAMnC,EAAQqC,GAC7CjD,EAAIsD,OAAOR,EAAMlC,EAAQoC,GACzBhD,EAAIuD,iBAAiBT,EAAKE,EAAKF,EAAKE,EAAMpC,GAC1CZ,EAAIsD,OAAOJ,EAAKE,EAAMxC,GACtBZ,EAAIuD,iBAAiBL,EAAKE,EAAKF,EAAMtC,EAAQwC,EAChD,MAEGpD,EAAI0C,OAAOxB,EAAIN,EAAQO,GACvBnB,EAAIsD,OAAOpC,EAAIG,EAAQT,EAAQO,GAC/BnB,EAAIuD,iBAAiBrC,EAAIG,EAAOF,EAAGD,EAAIG,EAAOF,EAAIP,GAClDZ,EAAIsD,OAAOpC,EAAIG,EAAOF,EAAIC,EAASR,GACnCZ,EAAIuD,iBACArC,EAAIG,EACJF,EAAIC,EACJF,EAAIG,EAAQT,EACZO,EAAIC,GAERpB,EAAIsD,OAAOpC,EAAIN,EAAQO,EAAIC,GAC3BpB,EAAIuD,iBAAiBrC,EAAGC,EAAIC,EAAQF,EAAGC,EAAIC,EAASR,GACpDZ,EAAIsD,OAAOpC,EAAGC,EAAIP,GAClBZ,EAAIuD,iBAAiBrC,EAAGC,EAAGD,EAAIN,EAAQO,EAE9C,CAEDnB,EAAIwD,OACA3C,GACAb,EAAIyD,QAEX,I,uDC/KmBC,QACa,cAA7BC,OAAOlH,SAASmH,UAEa,UAA7BD,OAAOlH,SAASmH,UAEhBD,OAAOlH,SAASmH,SAASC,MACrB,2D,sJCdR,MAAMC,EAAYC,aAAW,IAAMC,YAAa,CAC5C,UAAW,CACP,IAAK,CACDC,UAAW,aACXC,OAAQ,EACRC,QAAS,GAEbC,KAAM,CACF,yBAA0B,cAC1B,0BAA2B,YAC3BhD,OAAQ,OACRC,MAAO,QAEXvN,KAAM,CACFsN,OAAQ,OACRC,MAAO,OACPpD,gBAAiB,WAErB,QAAS,CACLmD,OAAQ,OACRC,MAAO,aAWJgD,MANU,KACrBP,IAEO,MCnBIQ,OAVQ,KACnB,MAAM7H,EAAW8H,cAMjB,OAJAC,qBAAU,KACNb,OAAOc,SAAS,EAAG,EAAnB,GACD,CAAChI,EAASiI,WAEN,IAAP,ECFWC,OANK,KAChBL,KAEO,M,4FCOX,MAAMR,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQC,OAAOC,MACtClT,MAAO8S,EAAME,QAAQC,OAAOE,MAC5BC,SAAU,IACVpM,SAAU,QACV0H,OAAQ,EACRH,KAAM,EACN6D,OAAQU,EAAMO,QAAQ,GACtBhB,QAASS,EAAMO,QAAQ,GACvBC,QAAS,OACTC,OAAQ,KAEZC,OAAQ,CACJrH,gBAAiB2G,EAAME,QAAQC,OAAOE,MACtCnT,MAAO8S,EAAME,QAAQC,OAAOC,WA+DrBO,OA3DiB,KAC5B,MAAMC,EAAU1B,MACT2B,EAAMC,GAAWC,oBAAkB,GAe1C,OARAnB,qBAAU,KAC8BoB,KAAQC,IAAI,YAG5CH,GAAQ,EACX,GACF,IAEED,EAKD,eAACK,GAAA,EAAD,UACI,uBAAKC,UAAWP,EAAQX,KAAxB,UACI,gBAACmB,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,UAFV,UAII,eAAC,KAAD,CAAkBlD,GAAG,8BACpB,IACD,eAACsX,GAAA,EAAD,CACIC,UAAU,IACVrU,MAAM,UACNsU,UAAU,SACVC,KAAK,qCACLC,OAAO,SALX,SAOI,eAAC,KAAD,CAAkB1X,GAAG,yCAb7B,OAiBA,eAAC2X,GAAA,EAAD,CACIC,GAAI,EACJC,QAAQ,OACRC,eAAe,WAHnB,SAKI,eAACC,GAAA,EAAD,CACIC,QA3CA,KAChBC,SAASC,OAAS,sCAClBpB,GAAQ,EAAR,EA0CgBO,QAAQ,YACRF,UAAWP,EAAQF,OAHvB,SAKI,eAAC,KAAD,CAAkB1W,GAAG,yCAjC9B,IAGX,E,UChDJ,MAAMmY,GAAwCC,uiBAAYC,4BAyB3CC,OAvBa,IAEpB,gBAACC,GAAA,OAAD,WACI,yBACIxX,OAAK,EACLyX,IAAG,sDAAiDL,MAExD,uPASgBA,GAThB,sB,+CCiCZ,MAAMM,GAAU,CACZ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,WAGHC,GAAO,CACTC,QAAS,UACTC,UAAW,UACXC,SAAUC,aAAM,UAAW,MAiBzBC,GAAW,CACbC,KAAMP,GAAQ,KACdQ,MAAOH,aAAM,UAAW,KACxBI,KAAMT,GAAQ,KACdU,aAAcT,GAAKC,SAGjBS,GAAU,CACZJ,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WAUZE,GAAU,CACZL,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WAGZpX,GAAQ,CACViX,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WAGZzC,GAAS,CACX4C,OAAQ,UACRC,MAAOT,aAAM,UAAW,MAGtBU,GAAO,CACT,GAAI,UACJ,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACL,IAAK,UACLC,KAAM,UACNC,KAAM,UACNC,KAAM,UACNC,KAAM,WAGG5D,GAAQ6D,aAAY,CAC7BC,YAAa,CACTC,OAAQ,CACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KACJC,GAAI,OAGZC,WAAY,CACRC,UAAW,CACPC,aAAc,CACVC,kBAAkB,GAEtBC,eAAgB,CACZxE,KAAM,CACFyE,cAAe,OACf,gCAAiC,CAC7BxX,MAAOwV,GAAKC,SAEhB,2BAA4B,CACxBzV,MAAOwV,GAAKC,SAEhB,+BAAgC,CAC5BzV,MAAOwV,GAAKC,QACZgC,OAAO,aAAD,OAAenB,GAAK,MAC1B,UAAW,CACPnK,gBAAiBqH,GAAO6C,MACxBrW,MAAOwV,GAAKC,WAIxBiC,UAAW,CACPpI,OAAQ,QAEZqI,WAAY,CACRrI,OAAQ,QAEZsI,UAAW,CACPtI,OAAQ,QAEZuI,cAAe,CACXvI,OAAQ,QAEZwI,eAAgB,CACZxI,OAAQ,QAEZyI,cAAe,CACXzI,OAAQ,UAIpB0I,cAAe,CACXX,aAAc,CACVY,eAAe,GAEnBV,eAAgB,CACZxE,KAAM,CACF/S,MAAOwV,GAAKC,WAKxByC,OAAQ,CACJX,eAAgB,CACZxE,KAAM,CACFyE,cAAe,UAI3BW,QAAS,CACLZ,eAAgB,CACZxE,KAAM,CACF,eAAgB,CACZ0E,OAAQ,oBACRW,aAAc,MACdC,UAAW,WAM3BC,eAAgB,CACZf,eAAgB,CACZxE,KAAM,CACFV,QAAS,YACT,eAAgB,CACZkG,cAAe,WAK/BC,cAAe,CACXnB,aAAc,CACVoB,qBAAsB,CAClBtE,QAAS,MAEbuE,yBAA0B,CACtBvE,QAAS,UAGjBoD,eAAgB,CACZxE,KAAM,CACFV,QAAS,eAIrBsG,eAAgB,CACZpB,eAAgB,CACZ,IAAK,CACDpF,UAAW,aACXC,OAAQ,EACRC,QAAS,GAEbC,KAAM,CACFsG,oBAAqB,YACrBC,oBAAqB,cACrBlE,QAAS,OACTmE,cAAe,SACfC,UAAW,OACXxJ,MAAO,QAEXvN,KAAM,CACF2S,QAAS,OACTqE,KAAM,WACNF,cAAe,SACfC,UAAW,OACXxJ,MAAO,QAEX,UAAW,CACPoF,QAAS,OACTqE,KAAM,WACNF,cAAe,SACfxJ,OAAQ,OACRC,MAAO,UAInB0J,iBAAkB,CACd1B,eAAgB,CACZ2B,eAAgB,CACZ9I,YAAa,aAIzB+I,cAAe,CACX5B,eAAgB,CACZxE,KAAM,CACF/S,MAAOwV,GAAKE,aAIxB0D,aAAc,CACV7B,eAAgB,CACZxE,KAAM,CACF5G,gBAAiB,UACjB,qBAAsB,CAClBnM,MAAO,WAEXgQ,aAAc,OACd,uBAAwB,CACpBA,aAAc,OACdqJ,SAAU,OACVC,WAAY,IACZC,WAAY,EACZC,cAAe,GACfhC,cAAe,aAEnB,kCAAmC,CAC/BiC,WAAY,EACZlB,cAAe,MAK/BmB,QAAS,CACLnC,eAAgB,CACZxE,KAAM,CACF,yBAA0B,CACtB5G,gBAAiB,UACjBnM,MAAOmW,GAAQH,MAEnB,yBAA0B,CACtB7J,gBAAiB,UACjBnM,MAAOkW,GAAQF,MAEnB,uBAAwB,CACpB7J,gBAAiB,UACjBnM,MAAOnB,GAAMmX,UAMjChD,QAAS,CACLQ,UACAmG,WAAY,CACRC,QAAS3Z,IAAOgT,OAAOE,MACvB6C,KAAM,UACN6D,MAAO5Z,IAAOgT,OAAOE,OAEzBtU,MAPK,GAQLib,KAtPK,CACThE,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WAmPVR,QAnRQ,CACZK,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WAgRVP,UA7QU,CACdI,KAAM,UACNC,MAAO,UACPC,KAAM,UACNC,aAAc,WA0QVC,WACAV,KAZK,GAaLW,WACAG,QACAf,WACAM,aAEJkE,MAAO,CACH3B,aAAc,GAElB4B,WAAY,CACRC,OAAQ,CACJX,WAAY,IACZD,SAAU,WACVE,WAAY,EACZC,cAAe,OAEnBU,WAAY,QACZC,GAAI,CACAb,WAAY,IACZD,SAAU,GACVG,cAAe,SACfD,WAAY,OACZvZ,MAAO,wBAEXoa,GAAI,CACAd,WAAY,IACZD,SAAU,GACVG,cAAe,SACfD,WAAY,OACZvZ,MAAO,eAEXqa,GAAI,CACAf,WAAY,IACZD,SAAU,IAEdiB,GAAI,CACAhB,WAAY,IACZD,SAAU,GACVG,cAAe,SACfD,WAAY,OACZvZ,MAAO,eAEXua,GAAI,CACAjB,WAAY,IACZD,SAAU,GACVE,WAAY,OACZvZ,MAAO,eAEXwa,GAAI,CACAlB,WAAY,IACZD,SAAU,GACVG,cAAe,SACfD,WAAY,OACZvZ,MAAO,eAEXya,UAAW,CACPpB,SAAU,GACVC,WAAY,IACZE,cAAe,SACfD,WAAY,OACZvZ,MAAO,eAEX0a,UAAW,CACPrB,SAAU,GACVC,WAAY,IACZE,cAAe,QACfD,WAAY,OACZvZ,MAAO,eAEX2a,MAAO,CACHtB,SAAU,GACVC,WAAY,IACZE,cAAe,SACfD,WAAY,OACZvZ,MAAO,iBAEX4a,MAAO,CACHvB,SAAU,GACVC,WAAY,IACZE,cAAe,SACfD,WAAY,OACZvZ,MAAO,iBAEXwK,QAAS,CACL6O,SAAU,GACVC,WAAY,IACZE,cAAe,QACfD,WAAY,OACZvZ,MAAO,eAEX6a,SAAU,CACNxB,SAAU,GACVC,WAAY,IACZE,cAAe,MACfD,WAAY,OACZvZ,MAAO,kB,mCC3YJ8a,OA/BuB,IAAmB,IAAlB,SAAEC,GAAe,EAEpD,MAAM,OAAEC,GAAWC,eAEnB,IAAI3c,EAAsB4c,aAAaC,QAAQ,eAE/C,GAAmB,MAAf7c,EAWA,OADA0c,IACO,eAAC,IAAD,CAAUtS,GAAG,MAXC,CACrB,MAAM0S,EAAeC,KAAU/c,GACzBgd,EAAcC,KAAKC,MAAQ,IAEjC,GAAIJ,EAAQK,KAAOH,EAEf,OADAN,IACO,eAAC,IAAD,CAAUtS,GAAG,kBAE3B,CAMD,OACI,qCACKqS,GAFT,E,gCCxBJ,MAAM/I,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF2I,WAAY,SACZvP,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1CjF,QAAS,OACTmE,cAAe,SACfxJ,OAAQ,OACRsF,eAAgB,SAChBmE,UAAW,OACX1G,QAASS,EAAMO,QAAQ,QAwBhBsI,OApBW,KACtB,MAAMjI,EAAU1B,KAUhB,OARAU,qBAAU,KACNkJ,KAAUlb,QAEH,KACHkb,KAAUC,MAAV,IAEL,IAGC,sBAAK5H,UAAWP,EAAQX,KAAxB,SACI,eAAC0B,GAAA,EAAD,CAAKlF,MAAO,IAAZ,SACI,eAACuM,GAAA,EAAD,OAHZ,E,yUCFJ,MAAM9J,GAAYC,aAAYa,IAAD,CACzBiJ,KAAM,CACFpH,QAAS,QACT8E,WAAY,EACZlB,cAAe,GAEnByD,SAAU,CACNrH,QAAS,OACT8E,WAAY,EACZlB,cAAe,GAEnB0B,OAAQ,CACJja,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BrD,QAAS,WACTuC,eAAgB,aAChB4C,cAAe,OACfgC,cAAe,EACfjK,MAAO,QAEX0M,WAAY,CACRjc,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BrD,QAAS,WACTuC,eAAgB,aAChB4C,cAAe,OACfgC,cAAe,EACfjK,MAAO,OACP+J,WAAYxG,EAAMkH,WAAWkC,kBAC7B,YAAa,CACT,WAAY,CACR5C,WAAYxG,EAAMkH,WAAWmC,oBAIzCC,KAAM,CACFzH,QAAS,OACT+G,WAAY,SACZW,YAAavJ,EAAMO,QAAQ,IAE/B1S,MAAO,CACH0b,YAAa,QAEjBjG,OAAQ,CACJpW,MAAO8S,EAAME,QAAQyC,QAAQK,KAC7B,WAAY,CACRwD,WAAYxG,EAAMkH,WAAWmC,kBAEjC,UAAW,CACPnc,MAAO8S,EAAME,QAAQyC,QAAQK,OAGrC/Y,OAAQ,CACJuS,OAAQ,SACRC,MAAO,SACP8M,YAAavJ,EAAMO,QAAQ,IAE/BiJ,cAAe,CACXnQ,gBAAiB2G,EAAME,QAAQQ,OAAO4C,OACtCpW,MAAO8S,EAAME,QAAQC,OAAOE,MAC5Bd,QAASS,EAAMO,QAAQ,SAIzBkJ,GAA4B,IAY3B,IAZ4B,SAC/BxB,EAD+B,UAE/B9G,EAF+B,MAG/BuI,EAH+B,KAI/BjI,EACA6H,KAAMK,EACN3C,KAAM4C,EACN/I,KAAMgJ,EAPyB,MAQ/Bhc,EAR+B,MAS/BoJ,EAT+B,QAU/B+K,KACG8H,GACD,EACF,MAAMlJ,EAAU1B,MACT2B,EAAMC,GAAWC,mBAAkB8I,IACpC,MAAC9f,GAASggB,eAEVC,EAAe,KACjBlJ,GAASmJ,IAAcA,GAAvB,EASJ,IAAIC,EAAc,EAEdR,EAAQ,IACRQ,EAAc,GAAK,EAAIR,GAG3B,MAAMS,EAAQ,CAAED,eAEhB,OAAIjC,EAEI,gBAACmC,GAAA,EAAD,CACIjJ,UAAWkJ,aAAKzJ,EAAQqI,KAAM9H,GAC9BmJ,gBAAc,EAEdtI,QAASA,KACL8H,EALR,UAOI,gBAAC/H,GAAA,EAAD,CACIZ,UAAWP,EAAQuG,OACnBnF,QAASgI,EACTG,MAAOA,EAHX,UAKKR,GACG,eAACA,EAAD,CACIxI,UAAWP,EAAQ0I,KACnBzQ,KAAK,OAGZ5B,GACG,eAACsT,GAAA,EAAD,CACIpJ,UAAWP,EAAQ3W,OACnBuY,IAAKvL,IAGb,uBAAMkK,UAAWP,EAAQ/S,MAAzB,SACKA,IAEJgT,EAAO,eAAC,KAAD,IAAqB,eAAC,KAAD,OAEjC,eAAC2J,GAAA,EAAD,CAAUC,GAAI5J,EAAd,SACKoH,MA3BApa,GAkCb,eAACuc,GAAA,EAAD,CACIjJ,UAAWkJ,aAAKzJ,EAAQsI,SAAU/H,GAClCmJ,gBAAc,EAEdtI,QAASA,KACL8H,EALR,SAOI,gBAAC/H,GAAA,EAAD,CACI2I,gBAAiB9J,EAAQ0C,OACzBnC,UAAWkJ,aAAKzJ,EAAQuI,WAAT,gBAA8BO,IAC7CnI,UAAWoJ,KACXC,OAAK,EACLT,MAAOA,EACPvU,GAAI6L,EACJO,QAAS,IAnEOP,KACpBA,IAAS1C,OAAOlH,SAASiI,UACzBf,OAAOlH,SAASgT,QACnB,EAgEsBC,CAAmBrJ,GAPtC,UASKkI,GACG,eAACA,EAAD,CACIxI,UAAWP,EAAQ0I,KACnBzQ,KAAK,OAGZ5B,GACG,eAACsT,GAAA,EAAD,CACIpJ,UAAWP,EAAQ3W,OACnBuY,IAAKvL,IAGb,uBAAMkK,UAAWP,EAAQ/S,MAAzB,SACKA,IAEJ+b,GAAQ,eAACA,EAAD,IACR/b,EAAMyC,SAAS,OAASvG,EAAMgH,OAAS,GACpC,eAACga,GAAA,EAAD,CACI/U,MAAOjM,EAAMgH,OACbsQ,QAAQ,SACRF,UAAWP,EAAQ4I,cACnBF,KACI,eAAC0B,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,CAAUrZ,MAAM,YAGxB2L,KAAK,cAvCZhL,EAJb,EA8DJ4b,GAAQlF,aAAe,CACnB1D,MAAM,GAGK4I,U,iDCtLf,MAAMvK,GAAYC,aAAYa,IAAD,CACzBiL,aAAc,CACVxO,MAAO,KAEXyO,cAAe,CACXzO,MAAO,IACPd,IAAK,GACLa,OAAQ,oBACRiE,OAAQT,EAAMS,OAAO0K,OAAS,GAElCC,2BAA4B,CACxB3O,MAAO,IACPd,IAAK,EACLa,OAAQ,mBACRiE,OAAQT,EAAMS,OAAO0K,OAAS,GAElClhB,OAAQ,CACJohB,OAAQ,UACR5O,MAAO,GACPD,OAAQ,IAEZ8O,SAAU,CACNC,aAAc,SACd,MAAO,CACHrB,YAAa,OACb,SAAU,CACN,SAAU,CACNsB,WAAY,aAK5BC,uBAAwB,CACpBF,aAAc,SACd,MAAO,CACHrB,YAAa,OACb,SAAU,CACN,SAAU,CACNsB,WAAY,SACZte,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9B,QAAS,CACL1V,MAAO8S,EAAME,QAAQwC,KAAKE,UAAY,iBAKtD8I,UAAW,CACP7J,QAAS,QAEb8J,YAAa,CACTzB,YAAa,cAqWN0B,OAjWiB,IAA8C,IAA7C,cAAEC,EAAF,WAAiBC,EAAjB,SAA6BC,GAAe,EACzE,MAAMnL,EAAU1B,KACV8M,EAAOC,eAEPC,EAAsB,CACxB,CACIC,UAAW,GACX1Z,MAAO,CACH,CACI5E,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,kDAChCsf,KAAM+C,KACN5K,KAAM,iBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,uDAChCsf,KAAMgD,KACN7K,KAAM,sBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,mDAChCsf,KAAMiD,KACN9K,KAAM,WAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,uDAChCsf,KAAMkD,KACN/K,KAAM,qBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,mDAChCsf,KAAMmD,KACNhL,KAAM,kBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,0DAChCsf,KAAMoD,KACNjL,KAAM,wBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,kDAChCsf,KAAMqD,KACNlL,KAAM,iBAEV,CACI5T,MAAO+e,aAAmB,iDAC1BtD,KAAMuD,KACNpL,KAAM,iBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,mDAChCsf,KAAMwD,KACNrL,KAAM,kBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,wDAChCsf,KAAMyD,KACNtL,KAAM,uBAEV,CACI5T,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,oDAChCsf,KAAMgD,KACN7K,KAAM,sBAOhB5J,EAAW8H,eACVqN,EAAyBC,GAA8BlM,mBAAiB,KACxEmM,EAAuBC,GAA4BpM,oBAAkB,GACtE7V,EAASkiB,eAETC,EAAU,KACZF,GAAyB,EAAzB,EAGEG,EAAU,KACZH,GAAyB,EAAzB,EAGJ,SAASI,EACL9a,EACAqN,EACA0N,GAEU,IADV9D,EACS,uDADO,EAChB9I,EAAS,uCACT,OACI,eAAC6M,GAAA,EAAD,CAAMC,gBAAc,EAApB,SACKjb,EAAMkb,QACH,CAACC,EAAK3E,IAAS4E,EAAkBD,EAAK9N,EAAUmJ,EAAMS,EAAO8D,EAAuB5M,IACpF,KAIf,CAED,SAASiN,EACLD,EACA9N,EACAmJ,EACAS,EACA8D,EACA5M,GACA,MAAMkN,EAAM7E,EAAKpb,MAAQ6b,EAEzB,GAAIT,EAAKxW,MAAO,CACZ,MAAMoO,EAAOkN,YAAUjO,EAAU,CAC7BkO,KAAM/E,EAAKxH,KACXmJ,OAAO,IAGXgD,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPJ,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnG,KAAM/B,QAAQ+B,GACdhT,MAAOob,EAAKpb,MACZsT,UAAWP,EAAQ0K,SACnBrU,MAAOgS,EAAKhS,MARhB,SAUKsW,EACGtE,EAAKxW,MACLqN,EACA0N,EACA9D,EAAQ,EACR9I,IAXCkN,GAchB,KAAM,CACH,MAAMG,EAAiBL,EAAI7c,OACvBkd,EAAiBT,GACjBI,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAWP,EAAQ0K,SACnBrU,MAAOgS,EAAKhS,OAHP6W,IAObG,IAAmBT,IACnBI,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASsL,EACThE,KAAM4E,KAENrgB,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,iEAChCmX,UAAW+L,EAAwBtM,EAAQ8K,UAAY9K,EAAQ6K,wBAF3D,YAMZmC,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAW+L,EAAwBtM,EAAQ0K,SAAW1K,EAAQ8K,UAC9DzU,MAAOgS,EAAKhS,OAHP6W,IAObF,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASqL,EACT/D,KAAM6E,KAENtgB,MAAM,YACNsT,UAAW+L,EAAwBtM,EAAQ6K,uBAAyB7K,EAAQ8K,WAFxE,aAMZuC,EAAiBT,IACjBI,EAAIQ,MACJR,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAW+L,EAAwBtM,EAAQ0K,SAAW1K,EAAQ8K,UAC9DzU,MAAOgS,EAAKhS,OAHP6W,IAMbF,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASqL,EACT/D,KAAM6E,KAENtgB,MAAOme,EAAKI,cAAc,CAAEpiB,GAAI,iEAChCmX,UAAW+L,EAAwBtM,EAAQ6K,uBAAyB7K,EAAQ8K,WAFxE,YAMnB,CAED,OAAOkC,CACV,CA8BDhO,qBAAU,KA3BNtW,KAAM2X,IAAImB,0DAAmElX,GACxEmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAI3B,IAAIojB,EAAeD,EAASnjB,KACxByS,EAAQ2Q,EAAaC,WAAU,SAAUC,GACzC,OAA8B,IAAvBA,EAAQC,UAClB,KACc,IAAX9Q,GAAc2Q,EAAaja,OAAOsJ,EAAO,GAE7C,IAAI+Q,EAAkC,GACtCJ,EAAajgB,KAAImgB,GAAWE,EAAwBpe,KAAK,CACrD1C,MAAO4gB,EAAQnkB,KAAM2M,MAAOwX,EAAQG,KACpCnN,KAAM,gBAAkBgN,EAAQI,kBAEpC5B,EAA2B0B,EAC9B,CACJ,IACAG,OAAM,SAAU/iB,GAIhB,GAIU,GAChB,IAEH6T,qBAAU,KACFkM,GAAcD,GACdA,GACH,GAEF,IAEH,MAAMkD,EACF,eAACpN,GAAA,EAAD,CACInF,OAAO,OACPqF,QAAQ,OACRmE,cAAc,SACdpE,GAAI,EAJR,SAMI,eAAC,KAAD,CAAkBzF,QAAS,CAAE6S,iBAAiB,GAA9C,SACI,gBAACrN,GAAA,EAAD,CAAKsN,EAAG,EAAG9N,UAAWP,EAAQ+K,YAA9B,UACKO,EAAS5d,KAAK4gB,GACX,eAACzB,GAAA,EAAD,CAEItB,UACI,eAACgD,GAAA,EAAD,CACI7E,gBAAc,EACd8E,eAAa,EAFjB,SAIKF,EAAQ/C,YAPrB,SAWKoB,EACG2B,EAAQzc,MACRoF,EAASiI,SACT,IACA,EACAc,IAfCsO,EAAQ/C,aAmBrB,eAACsB,GAAA,EAAD,CAEItB,UACI,eAACgD,GAAA,EAAD,CACI7E,gBAAc,EACd8E,eAAa,EAFjB,SAII,eAAC,KAAD,CAAkBplB,GAAG,gEAPjC,SAWKujB,EACGP,EACAnV,EAASiI,SACTuP,KACA,EACAzO,IAfA,mBAuBxB,OAAO,uCACH,eAAC0O,GAAA,EAAD,CAAQC,MAAI,EAAZ,SACI,eAACC,GAAA,EAAD,CACIC,OAAO,OACP7O,QAAS,CAAEmG,MAAOnG,EAAQqK,cAC1ByE,QAAS7D,EACThL,KAAMiL,EACNzK,QAAQ,YALZ,SAOK0N,MAGT,gBAACO,GAAA,EAAD,CAAQK,QAAM,EAAd,UACK5D,GACG,eAACyD,GAAA,EAAD,CACIC,OAAO,OACP7O,QAAS,CAAEmG,MAAOnG,EAAQwK,4BAC1BvK,MAAI,EACJQ,QAAQ,aAJZ,SAMK0N,IARb,KAYMhD,GACE,eAACyD,GAAA,EAAD,CACIC,OAAO,OACP7O,QAAS,CAAEmG,MAAOnG,EAAQsK,eAC1BrK,MAAI,EACJQ,QAAQ,aAJZ,SAMK0N,SA/BjB,E,qFC7YJ,MAAM7P,GAAYC,aAAYa,IAAD,CACzB/V,OAAQ,CACJuS,OAAQ,GACRC,MAAO,GACP8M,YAAavJ,EAAMO,QAAQ,IAE/BqP,QAAS,CACLnT,MAAO,SAsFAoT,OAlFK,KAChB,MAAMjP,EAAU1B,KACV4Q,EAAUC,cACVC,EAAMC,iBAAY,OAClB,OAAE/H,GAAWC,gBACb,gBAAE+H,GAAoBC,eACrBC,EAAQtP,GAAWC,oBAAkB,GACtCsP,EAAuCrlB,KAAKC,MAAMmd,aAAaC,QAAQ,SACvEiI,EAAoBlI,aAAaC,QAAQ,qBAEzCkI,EAAgC,CAClClF,OAAsD,SAA9CjD,aAAaC,QAAQ,qBAAkC,UAAY,WASzEmI,EAAc,KAChB1P,GAAQ,EAAR,EAgBJ,OAAO,uCACH,gBAACa,GAAA,EAAD,CACIE,QAAQ,OACR+G,WAAW,SACXrH,UAAWkP,KACXzO,QA5BW,KACY,SAAvBsO,GACAxP,GAAQ,EACX,EA2BGkP,IAAKA,EACL7F,MAAOoG,EAPX,UASI,eAAC,KAAD,CACIjmB,KAAM+lB,EAAkB/lB,KAAO,IAAM+lB,EAAkBK,UACvDC,YAAa,EACb9X,KAAK,KACL+X,OAAO,EACP1jB,MAAM,UACNiU,UAAWP,EAAQ3W,SAEvB,eAACqlB,GAAA,EAAD,CAAQuB,QAAM,EAAd,SACI,gBAACzP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,UAIKmjB,EAAkB/lB,KAJvB,IAI8B,IAJ9B,IAIoC+lB,EAAkBK,kBAI9D,eAACI,GAAA,EAAD,CACIpB,QAASc,EACTO,aAAc,CACVC,SAAU,SACV5U,WAAY,UAEhB6U,aAAW,EACXC,WAAY,CAAE/P,UAAWP,EAAQgP,SACjCuB,SAAUnB,EAAIoB,QACdvQ,KAAMuP,EATV,SAWI,eAACiB,GAAA,EAAD,CAAUrP,QAnDGjX,UACjB,IACIylB,IACAtI,IACA4H,EAAQvf,KAAK,UAAY8f,EAAkBiB,gBAM9C,CALC,MAAOzlB,GACLC,QAAQC,MAAMF,GACdqkB,EAAgB,eAAC,KAAD,CAAkBlmB,GAAG,yCAA2C,CAC5EqX,QAAS,SAEhB,GAyCG,SACI,eAAC,KAAD,CAAkBrX,GAAG,8BAvCjC,E,iCCxCJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzB4P,QAAS,CACLnT,MAAO,IACP8C,QAASS,EAAMO,QAAQ,QAoDhBgR,OAhDM,KACDrS,KAAhB,MACM8Q,EAAMC,iBAAY,OAClB,SAAE3jB,EAAF,aAAYklB,GAAiBC,gBAC5BrB,EAAQtP,GAAWC,oBAAkB,IACrCgD,EAAQ2N,GAAa3Q,mBAAS,CACjC4Q,UAAWrlB,EAASqlB,UACpBC,oBAAqBtlB,EAASslB,oBAC9B5R,MAAO1T,EAAS0T,QAmBpB,OAAO,qCACH,eAAC6R,GAAA,EAAD,CAAShkB,MAAO,eAAC,KAAD,CAAkB7D,GAAG,0CAArC,SACI,eAAC8nB,GAAA,EAAD,CACI5kB,MAAM,YADV,SAGI,eAAC,IAAD,CAAO6kB,OAAQ,QAAC,QAAEjC,GAAH,SACX,eAACkC,GAAA,EAAD,CACI9kB,MAAM,UACN8U,QAAS,KAAQ8N,EAAQvf,KAAK,eAAb,EACjByf,IAAKA,EACLnX,KAAK,QAJT,SAKI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,OAPG,SAL3B,E,WCjBW0L,OAxBe,KAC1B,MAAMjC,EAAMC,iBAAY,MAExB,OAAO,qCACH,eAAC4B,GAAA,EAAD,CAAShkB,MAAO,eAAC,KAAD,CAAkB7D,GAAG,wBAArC,SACI,eAAC8nB,GAAA,EAAD,CACI5kB,MAAM,YADV,SAGI,eAAC,IAAD,CAAO6kB,OAAQ,QAAC,QAAEjC,GAAH,SACX,eAACkC,GAAA,EAAD,CACI9kB,MAAM,UACN8U,QAAS,KAAQ8N,EAAQvf,KAAK,kBAAb,EACjByf,IAAKA,EACLnX,KAAK,QAJT,SAKI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,OAPG,SAL3B,E,UCCJ,MAAMrH,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFQ,OAAQT,EAAMS,OAAO0K,OACrB9R,gBAAiB,WAErB6Y,QAAS,CACLjM,UAAW,QAIbkM,GAA0B,IAIzB,IAJ0B,UAC7BhR,EAD6B,gBAE7BiR,KACGtI,GACD,EACF,MAAMlJ,EAAU1B,KACVmR,EAAuCrlB,KAAKC,MAAMmd,aAAaC,QAAQ,UACtEgK,EAAkBC,GAAuBvR,mBAAiBhC,OAAOqJ,aAAaC,QAAQ,uBACtFkK,EAASC,GAAczR,oBAAkB,GAC1CuP,EAAoBlI,aAAaC,QAAQ,qBAEzCoK,EAA0B7D,IAC5B0D,EAAoB1D,GACpB7P,OAAOqJ,aAAasK,QAAQ,oBAAqB9D,EAAjD,EAoBJ,OAjBAhP,qBAAU,KACDyS,EAYDG,GAAW,GAXXlpB,KAAM2X,IAAImB,kGACLiM,MAAK,SAAUC,GACZmE,EAAsBnE,EAASnjB,MAC/BqnB,GAAW,EACd,IACA1D,OAAM,SAAU/iB,GACb0mB,EAAsB,qEACtBD,GAAW,EACd,GAIR,GACF,KAEa,IAAZD,EAEI,eAACI,GAAA,EAAD,CACIxR,UAAWkJ,aAAKzJ,EAAQX,KAAMkB,GAC9ByR,GAAI,CAAEC,aAAc,WAChB/I,EAHR,SAKI,gBAACgJ,GAAA,EAAD,CAAS3R,UAAWP,EAAQsR,QAA5B,UACI,eAAC5C,GAAA,EAAD,CAAQC,MAAI,EAAZ,SACI,eAACyC,GAAA,EAAD,CAAY9kB,MAAM,UAAU8U,QAASoQ,EAAiBvZ,KAAK,QAA3D,SACI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,UAIZ,eAAC+I,GAAA,EAAD,CAAQK,QAAM,EAAd,SAC2B,SAAtBW,EACG,eAAC3O,GAAA,EAAD,CAAKwI,MAAO,CAAEkB,OAAQ,UAAW5O,MAAO,SAAxC,SACI,eAACsW,GAAA,EAAD,MAGJ,eAAC,KAAD,CAAYnd,GAAI,UAAYya,EAAkBiB,gBAA9C,SACI,eAAC3P,GAAA,EAAD,CAAKwI,MAAO,CAAEkB,OAAQ,UAAW5O,MAAO,SAAxC,SACI,eAACsW,GAAA,EAAD,UAMhB,eAACpR,GAAA,EAAD,CACIqR,GAAI,EACJC,SAAU,IAES,SAAtB3C,EAA+B,eAAC,GAAD,IAAwB,eAAC,GAAD,IACxD,eAAC3O,GAAA,EAAD,CAAKqR,GAAI,EAAT,SACI,eAAC,GAAD,WAOT,IACV,EASLb,GAAO5N,aAAe,CAClB6N,gBAAiB,QAGND,U,UC1Gf,MAAMjT,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,KAC1CrB,QAAS,OACTrF,OAAQ,OACR0W,SAAU,SACVzW,MAAO,QAEX0W,QAAS,CACLtR,QAAS,OACTqE,KAAM,WACNgN,SAAU,SACV,CAAClT,EAAM8D,YAAYsP,GAAG,OAAQ,CAC1BlJ,YAAa,MAGrBmJ,qBAAsB,CAClBxR,QAAS,OACTqE,KAAM,WACNgN,SAAU,UAEdI,iBAAkB,CACdzR,QAAS,OACTqE,KAAM,WACNgN,SAAU,UAEdnE,QAAS,CACL7I,KAAM,WACN1J,OAAQ,OACR0W,SAAU,YAqDHK,OAjDmC,IAAmB,IAAlB,SAAEtL,GAAe,EAChE,MAAMrH,EAAU1B,MACTsU,EAAiBC,GAAoB1S,oBAAkB,GAExD2S,EADoD,SAAvCtL,aAAaC,QAAQ,cACFzH,EAAQuS,QAAUvS,EAAQyS,qBAEhE,OADAvnB,QAAQ6nB,KAAKvL,aAAaC,QAAQ,eAE9B,uBAAKlH,UAAWP,EAAQX,KAAxB,WAEMmI,aAAaC,QAAQ,eAAwD,SAAvCD,aAAaC,QAAQ,eACzD,eAAC,GAAD,CAAQ+J,gBAAiB,IAAMqB,GAAiB,KAGlDrL,aAAaC,QAAQ,eAAwD,SAAvCD,aAAaC,QAAQ,cAgBzD,eAAC,KAAD,UACI,sBAAKlH,UAAWuS,EAAhB,SACI,sBAAKvS,UAAWP,EAAQ0S,iBAAxB,SACI,sBAAKnS,UAAWP,EAAQmO,QAAxB,SACK9G,UAnBjB,gBAAE,KAAF,WACI,eAAC,GAAD,CACI4D,cAAe,IAAM4H,GAAiB,GACtC3H,WAAY0H,EACZzH,SAAiD,UAAvC3D,aAAaC,QAAQ,gBAEnC,sBAAKlH,UAAWuS,EAAhB,SACI,sBAAKvS,UAAWP,EAAQ0S,iBAAxB,SACI,sBAAKnS,UAAWP,EAAQmO,QAAxB,SACK9G,aAjB7B,E,qBCtCJ,MAAM/I,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQ2G,WAAWC,SAE9CoL,QAAS,CACL1V,OAAQ,IAEZoS,KAAM,CACFrF,YAAavJ,EAAMO,QAAQ,IAE/BqT,KAAM,CACFpN,WAAYxG,EAAMkH,WAAWmC,iBAC7B,QAAS,CACLmC,WAAYxL,EAAMO,QAAQ,KAGlCsT,QAAS,CACLpX,MAAO,EACPD,OAAQ,GACRgP,WAAYxL,EAAMO,QAAQ,GAC1BgJ,YAAavJ,EAAMO,QAAQ,QAmEpB4R,OA/DiB,IAA6B,IAA5B,UAAEhR,KAAc2I,GAAW,EACxD,MAAMlJ,EAAU1B,KAEhB,OACI,eAACyT,GAAA,EAAD,CACIxR,UAAWkJ,aAAKzJ,EAAQX,KAAMkB,GAC9BjU,MAAM,aACF4c,EAHR,SAKI,gBAACgJ,GAAA,EAAD,CAAS3R,UAAWP,EAAQsR,QAA5B,UACI,eAAC,KAAD,CAAYtc,GAAG,IAAf,SACI,eAACmd,GAAA,EAAD,CAAM5R,UAAWP,EAAQgO,SAE7B,eAACU,GAAA,EAAD,CAAQK,QAAM,EAAd,SACI,gBAACvO,GAAA,EAAD,CACIC,QAAQ,UACRnU,MAAM,gBAFV,oBAKK,IACA4mB,UAGT,eAACnS,GAAA,EAAD,CAAKsR,SAAU,IACf,eAAC3R,GAAA,EAAD,CACIH,UAAWP,EAAQgT,KACnB1mB,MAAM,gBACNqU,UAAWoJ,KACX/U,GAAG,OACH4L,UAAU,OACVH,QAAQ,QANZ,uBAUA,eAACC,GAAA,EAAD,CACIH,UAAWP,EAAQgT,KACnB1mB,MAAM,gBACNqU,UAAWoJ,KACX/U,GAAG,QACH4L,UAAU,OACVH,QAAQ,QANZ,2BAUA,eAAC0S,GAAA,EAAD,CAAS5S,UAAWP,EAAQiT,UAC5B,eAAC9R,GAAA,EAAD,CACI7U,MAAM,YACNqU,UAAU,IACVE,KAAK,qDACLJ,QAAQ,YACRxI,KAAK,QALT,6BA1CZ,EC/BJ,MAAMqG,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1CjF,QAAS,OACTrF,OAAQ,OACR0W,SAAU,SACVzW,MAAO,QAEX0W,QAAS,CACLtR,QAAS,OACTqE,KAAM,WACNgN,SAAU,SACVvM,WAAY,IAEhB2M,iBAAkB,CACdzR,QAAS,OACTqE,KAAM,WACNgN,SAAU,UAEdnE,QAAS,CACL7I,KAAM,WACN1J,OAAQ,OACR0W,SAAU,YAyBHc,OArByB,IAAmB,IAAlB,SAAE/L,GAAe,EACtD,MAAMrH,EAAU1B,KAEhB,OACI,uBAAKiC,UAAWP,EAAQX,KAAxB,UACI,eAAC,GAAD,IACA,sBAAKkB,UAAWP,EAAQuS,QAAxB,SACI,sBAAKhS,UAAWP,EAAQ0S,iBAAxB,SACI,sBAAKnS,UAAWP,EAAQmO,QAAxB,SACK9G,UANrB,ECfJ,MAAM/I,GAAYC,aAAYa,IAAD,CACzBiJ,KAAM,CACFpH,QAAS,QACT8E,WAAY,EACZlB,cAAe,GAEnByD,SAAU,CACNrH,QAAS,OACT8E,WAAY,EACZlB,cAAe,GAEnB0B,OAAQ,CACJja,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BrD,QAAS,WACTuC,eAAgB,aAChB4C,cAAe,OACfgC,cAAe,EACfjK,MAAO,QAEX0M,WAAY,CACRjc,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BrD,QAAS,WACTuC,eAAgB,aAChB4C,cAAe,OACfgC,cAAe,EACfjK,MAAO,OACP+J,WAAYxG,EAAMkH,WAAWkC,kBAC7B,YAAa,CACT,WAAY,CACR5C,WAAYxG,EAAMkH,WAAWmC,oBAIzCC,KAAM,CACFzH,QAAS,OACT+G,WAAY,SACZW,YAAavJ,EAAMO,QAAQ,IAE/B1S,MAAO,CACH0b,YAAa,QAEjBjG,OAAQ,CACJpW,MAAO8S,EAAME,QAAQyC,QAAQK,KAC7B,WAAY,CACRwD,WAAYxG,EAAMkH,WAAWmC,kBAEjC,UAAW,CACPnc,MAAO8S,EAAME,QAAQyC,QAAQK,OAGrC/Y,OAAQ,CACJuS,OAAQ,SACRC,MAAO,SACP8M,YAAavJ,EAAMO,QAAQ,QAI7BkJ,GAA4B,IAY3B,IAZ4B,SAC/BxB,EAD+B,UAE/B9G,EAF+B,MAG/BuI,EAH+B,KAI/BjI,EACA6H,KAAMK,EACN3C,KAAM4C,EACN/I,KAAMgJ,EAPyB,MAQ/Bhc,EAR+B,MAS/BoJ,EAT+B,QAU/B+K,KACG8H,GACD,EACF,MAAMlJ,EAAU1B,MACT2B,EAAMC,GAAWC,mBAAkB8I,GAEpCG,EAAe,KACjBlJ,GAASmJ,IAAcA,GAAvB,EASJ,IAAIC,EAAc,EAEdR,EAAQ,IACRQ,EAAc,GAAK,EAAIR,GAG3B,MAAMS,EAAQ,CAAED,eAEhB,OAAIjC,EAEI,gBAACmC,GAAA,EAAD,CACIjJ,UAAWkJ,aAAKzJ,EAAQqI,KAAM9H,GAC9BmJ,gBAAc,EAEdtI,QAASA,KACL8H,EALR,UAOI,gBAAC/H,GAAA,EAAD,CACIZ,UAAWP,EAAQuG,OACnBnF,QAASgI,EACTG,MAAOA,EAHX,UAKKR,GACG,eAACA,EAAD,CACIxI,UAAWP,EAAQ0I,KACnBzQ,KAAK,OAGZ5B,GACG,eAACsT,GAAA,EAAD,CACIpJ,UAAWP,EAAQ3W,OACnBuY,IAAKvL,IAGb,uBAAMkK,UAAWP,EAAQ/S,MAAzB,SACKA,IAEJgT,EAAO,eAAC,KAAD,IAAqB,eAAC,KAAD,OAEjC,eAAC2J,GAAA,EAAD,CAAUC,GAAI5J,EAAd,SACKoH,MA3BApa,GAkCb,eAACuc,GAAA,EAAD,CACIjJ,UAAWkJ,aAAKzJ,EAAQsI,SAAU/H,GAClCmJ,gBAAc,EAEdtI,QAASA,KACL8H,EALR,SAOI,gBAAC/H,GAAA,EAAD,CACI2I,gBAAiB9J,EAAQ0C,OACzBnC,UAAWkJ,aAAKzJ,EAAQuI,WAAT,gBAA8BO,IAC7CnI,UAAWoJ,KACXC,OAAK,EACLT,MAAOA,EACPvU,GAAI6L,EACJO,QAAS,IAnEOP,KACpBA,IAAS1C,OAAOlH,SAASiI,UACzBf,OAAOlH,SAASgT,QACnB,EAgEsBC,CAAmBrJ,GAPtC,UASKkI,GACG,eAACA,EAAD,CACIxI,UAAWP,EAAQ0I,KACnBzQ,KAAK,OAGZ5B,GACG,eAACsT,GAAA,EAAD,CACIpJ,UAAWP,EAAQ3W,OACnBuY,IAAKvL,IAGb,uBAAMkK,UAAWP,EAAQ/S,MAAzB,SACKA,IAEJ+b,GAAQ,eAACA,EAAD,QA5BR/b,EAJb,EAiDJ4b,GAAQlF,aAAe,CACnB1D,MAAM,GAGK4I,UChKf,MAAMyC,GAAsB,CACxB,CACIC,UAAW,GACX1Z,MAAO,CACH,CACI5E,MAAO,iBACPyb,KAAMgD,KACN7K,KAAM,+BAAiC2G,aAAaC,QAAQ,gBAEhE,CACIxa,MAAO,YACPyb,KAAMqD,KACNlL,KAAM,6BAOhBvC,GAAYC,aAAYa,IAAD,CACzBiL,aAAc,CACVxO,MAAO,KAEXyO,cAAe,CACXzO,MAAO,IACPd,IAAK,GACLa,OAAQ,qBAEZvS,OAAQ,CACJohB,OAAQ,UACR5O,MAAO,GACPD,OAAQ,IAEZ8O,SAAU,CACNC,aAAc,SACd,MAAO,CACHrB,YAAa,OACb,SAAU,CACN,SAAU,CACNsB,WAAY,aAK5BC,uBAAwB,CACpBF,aAAc,SACd,MAAO,CACHrB,YAAa,OACb,SAAU,CACN,SAAU,CACNsB,WAAY,SACZte,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9B,QAAS,CACL1V,MAAO8S,EAAME,QAAQwC,KAAKE,UAAY,iBAKtD8I,UAAW,CACP7J,QAAS,QAEb8J,YAAa,CACTzB,YAAa,cAuRN0B,OAnRiB,IAAoC,IAAnC,cAAEC,EAAF,WAAiBC,GAAiB,EAC/D,MAAMlL,EAAU1B,KACVrH,EAAW8H,eACVqN,EAAyBC,GAA8BlM,mBAAiB,KACxEmM,EAAuBC,GAA4BpM,oBAAkB,GACtE7V,EAASkiB,eAETC,EAAU,KACZF,GAAyB,EAAzB,EAGEG,EAAU,KACZH,GAAyB,EAAzB,EAGJ,SAASI,EACL9a,EACAqN,EACA0N,GAEU,IADV9D,EACS,uDADO,EAChB9I,EAAS,uCACT,OACI,eAAC6M,GAAA,EAAD,CAAMC,gBAAc,EAApB,SACKjb,EAAMkb,QACH,CAACC,EAAK3E,IAAS4E,EAAkBD,EAAK9N,EAAUmJ,EAAMS,EAAO8D,EAAuB5M,IACpF,KAIf,CAED,SAASiN,EACLD,EACA9N,EACAmJ,EACAS,EACA8D,EACA5M,GACA,MAAMkN,EAAM7E,EAAKpb,MAAQ6b,EAEzB,GAAIT,EAAKxW,MAAO,CACZ,MAAMoO,EAAOkN,YAAUjO,EAAU,CAC7BkO,KAAM/E,EAAKxH,KACXmJ,OAAO,IAGXgD,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPJ,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnG,KAAM/B,QAAQ+B,GACdhT,MAAOob,EAAKpb,MACZsT,UAAWP,EAAQ0K,SACnBrU,MAAOgS,EAAKhS,MARhB,SAUKsW,EACGtE,EAAKxW,MACLqN,EACA0N,EACA9D,EAAQ,EACR9I,IAXCkN,GAchB,KAAM,CACH,MAAMG,EAAiBL,EAAI7c,OACvBkd,EAAiBT,GACjBI,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAWP,EAAQ0K,SACnBrU,MAAOgS,EAAKhS,OAHP6W,IAObG,IAAmBT,IACnBI,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASsL,EACThE,KAAM4E,KAENrgB,MAAM,aACNsT,UAAW+L,EAAwBtM,EAAQ8K,UAAY9K,EAAQ6K,wBAF3D,YAMZmC,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAW+L,EAAwBtM,EAAQ0K,SAAW1K,EAAQ8K,UAC9DzU,MAAOgS,EAAKhS,OAHP6W,IAObF,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASqL,EACT/D,KAAM6E,KAENtgB,MAAM,YACNsT,UAAW+L,EAAwBtM,EAAQ6K,uBAAyB7K,EAAQ8K,WAFxE,aAMZuC,EAAiBT,IACjBI,EAAIQ,MACJR,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAMwH,EAAKxH,KACX6H,KAAML,EAAKK,KACXtC,KAAMiC,EAAKjC,KAEXnZ,MAAOob,EAAKpb,MACZsT,UAAW+L,EAAwBtM,EAAQ0K,SAAW1K,EAAQ8K,UAC9DzU,MAAOgS,EAAKhS,OAHP6W,IAMbF,EAAIrd,KACA,eAAC,GAAD,CACImZ,MAAOA,EACPjI,KAAK,IACLO,QAASqL,EACT/D,KAAM6E,KAENtgB,MAAM,YACNsT,UAAW+L,EAAwBtM,EAAQ6K,uBAAyB7K,EAAQ8K,WAFxE,YAMnB,CAED,OAAOkC,CACV,CAgCDhO,qBAAU,KA7BNtW,KAAM2X,IAAImB,0DAAmElX,GACxEmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAM3B,IAAIojB,EAAeD,EAASnjB,KACxByS,EAAQ2Q,EAAaC,WAAU,SAAUC,GACzC,OAA8B,IAAvBA,EAAQC,UAClB,KACc,IAAX9Q,GAAc2Q,EAAaja,OAAOsJ,EAAO,GAE7C,IAAI+Q,EAAkC,GACtCL,EAASnjB,KAAKmD,KAAImgB,GAAWE,EAAwBpe,KAAK,CACtD1C,MAAO4gB,EAAQnkB,KAAM2M,MAAOwX,EAAQG,KACpCnN,KAAM,yBAA2BgN,EAAQI,kBAE7C5B,EAA2B0B,EAC9B,CACJ,IACAG,OAAM,SAAU/iB,GAIhB,GAIU,GAChB,IAEH6T,qBAAU,KACFkM,GAAcD,GACdA,GACH,GAEF,CAAChU,EAASiI,WAEb,MAAMiP,EACF,eAACpN,GAAA,EAAD,CACInF,OAAO,OACPqF,QAAQ,OACRmE,cAAc,SACdpE,GAAI,EAJR,SAMI,eAAC,KAAD,CAAkBzF,QAAS,CAAE6S,iBAAiB,GAA9C,SACI,gBAACrN,GAAA,EAAD,CAAKsN,EAAG,EAAG9N,UAAWP,EAAQ+K,YAA9B,UACKO,GAAS5d,KAAK4gB,GACX,eAACzB,GAAA,EAAD,CAEItB,UACI,eAACgD,GAAA,EAAD,CACI7E,gBAAc,EACd8E,eAAa,EAFjB,SAIKF,EAAQ/C,YAPrB,SAWKoB,EACG2B,EAAQzc,MACRoF,EAASiI,SACT,IACA,EACAc,IAfCsO,EAAQ/C,aAmBrB,eAACsB,GAAA,EAAD,CAEItB,UACI,eAACgD,GAAA,EAAD,CACI7E,gBAAc,EACd8E,eAAa,EAFjB,gCAHR,SAWK7B,EACGP,EACAnV,EAASiI,SACTuP,KACA,EACAzO,IAfA,mBAuBxB,OAAO,uCACH,eAAC0O,GAAA,EAAD,CAAQC,MAAI,EAAZ,SACI,eAACC,GAAA,EAAD,CACIC,OAAO,OACP7O,QAAS,CAAEmG,MAAOnG,EAAQqK,cAC1ByE,QAAS7D,EACThL,KAAMiL,EACNzK,QAAQ,YALZ,SAOK0N,MAGT,eAACO,GAAA,EAAD,CAAQK,QAAM,EAAd,SACI,eAACH,GAAA,EAAD,CACIC,OAAO,OACP7O,QAAS,CAAEmG,MAAOnG,EAAQsK,eAC1BrK,MAAI,EACJQ,QAAQ,aAJZ,SAMK0N,QAnBb,ECzVJ,MAAM7P,GAAYC,aAAYa,IAAD,CACzB/V,OAAQ,CACJuS,OAAQ,GACRC,MAAO,GACP8M,YAAavJ,EAAMO,QAAQ,IAE/BqP,QAAS,CACLnT,MAAO,SAkDAoT,OA9CK,KAChB,MAAMjP,EAAU1B,KACVmR,EAAuCrlB,KAAKC,MAAMmd,aAAaC,QAAQ,SAG7E,IAAI/d,EAAO,GACPomB,EAAY,GAShB,OAPIL,IACA/lB,EAAO+lB,EAAkB/lB,MAEzB+lB,IACAK,EAAYL,EAAkBK,WAG9BpmB,EACO,qCACH,gBAACqX,GAAA,EAAD,CACIE,QAAQ,OACR+G,WAAW,SAFf,UAKI,eAAC,KAAD,CACIte,KAAMA,EAAO,IAAMomB,EACnBC,YAAa,EACb9X,KAAK,KACL+X,OAAO,EACP1jB,MAAM,UACNiU,UAAWP,EAAQ3W,SAEvB,eAACqlB,GAAA,EAAD,CAAQuB,QAAM,EAAd,SACI,eAACzP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAIK5C,EAAO,IAAMomB,WAOvB,IACV,EChDL,MAAMxR,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFQ,OAAQT,EAAMS,OAAOwT,OAAS,IAC9B5a,gBAAiB,WAErB6Y,QAAS,CACLjM,UAAW,QAIbkM,GAA0B,IAIzB,IAJ0B,UAC7BhR,EAD6B,gBAE7BiR,KACGtI,GACD,EACF,MAAMlJ,EAAU1B,KAEhB,OACI,eAACyT,GAAA,EAAD,CACIxR,UAAWkJ,aAAKzJ,EAAQX,KAAMkB,MAC1B2I,EAFR,SAII,gBAACgJ,GAAA,EAAD,CAAS3R,UAAWP,EAAQsR,QAA5B,UACI,eAAC5C,GAAA,EAAD,CAAQC,MAAI,EAAZ,SACI,eAACyC,GAAA,EAAD,CAAY9kB,MAAM,UAAU8U,QAASoQ,EAAiBvZ,KAAK,QAA3D,SACI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,UAIZ,eAAC+I,GAAA,EAAD,CAAQK,QAAM,EAAd,SACI,eAAC,KAAD,CAAY/Z,GAAG,IAAf,SACI,eAACmd,GAAA,EAAD,QAGR,eAACpR,GAAA,EAAD,CACIqR,GAAI,EACJC,SAAU,IAId,eAACtR,GAAA,EAAD,CAAKqR,GAAI,EAAT,SACI,eAAC,GAAD,UAzBhB,EAqCJb,GAAO5N,aAAe,CAClB6N,gBAAiB,QAGND,UCjEf,MAAMjT,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,KAC1CrB,QAAS,OACTrF,OAAQ,OACR0W,SAAU,SACVzW,MAAO,QAEX0W,QAAS,CACLtR,QAAS,OACTqE,KAAM,WACNgN,SAAU,SACV,CAAClT,EAAM8D,YAAYsP,GAAG,OAAQ,CAC1BlJ,YAAa,MAGrBoJ,iBAAkB,CACdzR,QAAS,OACTqE,KAAM,WACNgN,SAAU,UAEdnE,QAAS,CACL7I,KAAM,WACN1J,OAAQ,OACR0W,SAAU,YAoCHgB,OAhCgC,IAAmB,IAAlB,SAAEjM,GAAe,EAC7D,MAAMrH,EAAU1B,MACTsU,EAAiBC,GAAoB1S,oBAAkB,GAE9D,OAAIqH,aAAaC,QAAQ,eAAwD,UAAvCD,aAAaC,QAAQ,cACpD,KAIH,uBAAKlH,UAAWP,EAAQX,KAAxB,UACK,eAAC,GAAD,CAAQmS,gBAAiB,IAAMqB,GAAiB,KACjD,eAAC,GAAD,CACI5H,cAAe,IAAM4H,GAAiB,GACtC3H,WAAY0H,IAEhB,sBAAKrS,UAAWP,EAAQuS,QAAxB,SACI,sBAAKhS,UAAWP,EAAQ0S,iBAAxB,SACI,sBAAKnS,UAAWP,EAAQmO,QAAxB,SACK9G,UAMxB,ECvCE,MAAMkM,GAAe,eAACC,EAAD,uDAAkB,GAAlB,OACxB,eAAC,WAAD,CAAUC,SAAU,eAAC,GAAD,IAApB,SACI,eAAC,IAAD,UACKD,EAAO9lB,KAAI,CAAC4D,EAAO6L,KAChB,MAAMuW,EAAQpiB,EAAMqiB,OAASC,WACvBC,EAASviB,EAAMwiB,QAAUF,WACzBG,EAAYziB,EAAMqP,UAExB,OACI,eAAC,IAAD,CAEIyM,KAAM9b,EAAM8b,KACZpD,MAAO1Y,EAAM0Y,MACbmH,OAAS6C,GACL,eAACN,EAAD,UACI,eAACG,EAAD,UACKviB,EAAMkiB,OACDD,GAAajiB,EAAMkiB,QACnB,eAACO,EAAD,IAAeC,SAR5B7W,EAFb,OARY,EAmRbqW,OAtPQ,CACnB,CACIxJ,OAAO,EACPoD,KAAM,OACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,IACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACIjK,OAAO,EACPoD,KAAM,0BACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACIjK,OAAO,EACPoD,KAAM,6BACNzM,UAAWsT,gBAAK,IAAM,uEAE1B,CACIjK,OAAO,EACPoD,KAAM,qCACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACIjK,OAAO,EACPoD,KAAM,wCACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACIjK,OAAO,EACPoD,KAAM,wBACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,4BACNzM,UAAWsT,gBAAK,IAAM,wDAE1B,CACIjK,OAAO,EACPoD,KAAM,sCACNzM,UAAWsT,gBAAK,IAAM,wDAE1B,CACIjK,OAAO,EACPoD,KAAM,mEACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,mBACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,uDACN0G,OAAQR,GACR3S,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,qCACN0G,OAAQR,GACR3S,UAAWsT,gBAAK,IAAM,yDAE1B,CACIjK,OAAO,EACPoD,KAAM,yBACN0G,OAAQR,GACR3S,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,4BACN0G,OAAQR,GACR3S,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,2CACNzM,UAAWsT,gBAAK,IAAM,uEAE1B,CACIjK,OAAO,EACPoD,KAAM,+CACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACI7G,KAAM,mCACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,6BACNzM,UAAWsT,gBAAK,IAAM,0DAE1B,CACIjK,OAAO,EACPoD,KAAM,kBACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CAEI7G,KAAM,kCACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACI7G,KAAM,OACNuG,MAAOvM,GACP0M,OAAQnB,GACRa,OAAQ,CACJ,CACIxJ,OAAO,EACPoD,KAAM,gBACNzM,UAAWsT,gBAAK,IAAM,wEAE1B,CACIjK,OAAO,EACPoD,KAAM,OACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,uCACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,UACNzM,UAAWsT,gBAAK,IAAM,iEAE1B,CACIjK,OAAO,EACPoD,KAAM,kCACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,6CACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,gBACNzM,UAAWsT,gBAAK,IAAM,+EAE1B,CACIjK,OAAO,EACPoD,KAAM,4BACNzM,UAAWsT,gBAAK,IAAM,wDAE1B,CACIjK,OAAO,EACPoD,KAAM,eACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,iBACNzM,UAAWsT,gBAAK,IAAM,mCAE1B,CACIjK,OAAO,EACPoD,KAAM,oCACNzM,UAAWsT,gBAAK,IAAM,kEAE1B,CACIjK,OAAO,EACPoD,KAAM,iBACNzM,UAAWsT,gBAAK,IAAM,+EAE1B,CACIjK,OAAO,EACPoD,KAAM,oBACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,wCACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,6CACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,sBACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,8CACNzM,UAAWsT,gBAAK,IAAM,gEAE1B,CACIjK,OAAO,EACPoD,KAAM,uBACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,8CACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,mDACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,kBACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,uCACNzM,UAAWsT,gBAAK,IAAM,8EAE1B,CACIjK,OAAO,EACPoD,KAAM,+CACNzM,UAAWsT,gBAAK,IAAM,yEAIlC,CACI7G,KAAM,IACN0G,OAAQV,GACRI,OAAQ,CACJ,CACIxJ,OAAO,EACPoD,KAAM,KAEV,CACIzM,UAAW,IAAM,eAAC,IAAD,CAAU3L,GAAG,a,8OC1P9C,MAAMsJ,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFxD,MAAO,OACPwJ,UAAW,IAEf6O,WAAY,CACRrY,MAAO,OACP+O,WAAYxL,EAAMO,QAAQ,IAE9BwU,eAAgB,CACZ7nB,MAAO8S,EAAME,QAAQyC,QAAQK,KAAO,cAExCgS,eAAgB,CACZ9nB,MAAO8S,EAAME,QAAQyC,QAAQK,KAAO,cAExCiS,UAAW,CACP1L,YAAa,QAEjB2L,UAAW,CACP3L,YAAa,QAEjB4L,OAAQ,CACJ5L,YAAa,OACbiC,WAAY,QAEhB4J,YAAa,CACT7L,YAAa,QAEjB8L,WAAY,CACRnoB,MAAO8S,EAAME,QAAQwC,KAAKC,SAE9B2S,gBAAiB,CACbjc,gBAAiB,QACjBkc,SAAU,OACVroB,MAAO8S,EAAME,QAAQwC,KAAKC,SAE9B6S,aAAc,CACVjM,YAAa,QAEjBkM,UAAW,CACPC,UAAW,wBACXjQ,cAAe,EACf,qBAAsB,CAClB8P,SAAU,YAGlBI,WAAY,CACRhP,WAAY,OACZuD,YAAa,OACbzE,cAAe,SACfmQ,aAAc,QAElBC,WAAY,CACRH,UAAW,wBACX,qBAAsB,CAClB/O,WAAY,EACZlB,cAAe,IAGvBqQ,cAAe,CACXrQ,cAAe,OACfkB,WAAY,QAEhBoP,aAAc,CACVR,SAAU,OACV3M,WAAY,SACZgN,aAAc,QAElBtM,KAAM,CACFoM,UAAW,uBA0IJM,OAtI+B,IASvC,IATwC,iBAC3CC,EAD2C,gBAE3CC,EAF2C,gBAG3CC,EAH2C,wBAI3CC,EAJ2C,mBAK3CC,EAL2C,oBAM3CC,EAN2C,WAO3CC,EAP2C,gBAQ3CC,GACE,EACF,MAAM5V,EAAU1B,KAGVuX,GAFOxK,eAEkB,KAC3BoK,GAAmB,EAAnB,GA+CJ,OACI,+BACI,gBAACvF,GAAA,EAAD,CACI3P,UAAWP,EAAQ6U,UACnBtE,SAAUoF,EAAWnF,QACrBL,aAAc,CACVC,SAAU,SACV5U,WAAY,QAEhBsa,gBAAiB,CACb1F,SAAU,MACV5U,WAAY,QAEhByE,KAAM2V,EACN9G,QAAS+G,EAZb,UAcI,gBAACpF,GAAA,EAAD,CACIrP,QA7Da,KACzBsU,EAAoB,GACpBG,IACAP,GAAgB,GAChBD,GAAiB,GACjBE,GAAgB,GAChBC,GAAwB,EAAxB,EAwDYjV,UAAWP,EAAQkV,cAFvB,UAII,eAACa,GAAA,EAAD,UACI,eAAC,KAAD,CAAgBpQ,SAAS,YAE7B,eAACnF,GAAA,EAAD,CAAYC,QAAQ,UAApB,SAA8B,eAAC,KAAD,CAAkBrX,GAAG,6DAEvD,eAAC+pB,GAAA,EAAD,IACA,gBAAC1C,GAAA,EAAD,CACIrP,QA9DS,KACrBsU,EAAoB,GACpBG,IACAP,GAAgB,GAChBD,GAAiB,GACjBE,GAAgB,GAChBC,GAAwB,EAAxB,EAyDYjV,UAAWP,EAAQkV,cAFvB,UAII,eAACa,GAAA,EAAD,UACI,eAAC,KAAD,CAAWpQ,SAAS,YAExB,eAACnF,GAAA,EAAD,CAAYC,QAAQ,UAApB,SAA8B,eAAC,KAAD,CAAkBrX,GAAG,yDAEvD,gBAACqnB,GAAA,EAAD,CACIrP,QA9DS,KACrBsU,EAAoB,GACpBG,IACAP,GAAgB,GAChBD,GAAiB,GACjBE,GAAgB,GAChBC,GAAwB,EAAxB,EAyDYjV,UAAWP,EAAQkV,cAFvB,UAII,eAACa,GAAA,EAAD,UACI,eAAC,KAAD,CAAWpQ,SAAS,YAExB,eAACnF,GAAA,EAAD,CAAYC,QAAQ,UAAUuV,QAAM,EAApC,SACI,eAAC,KAAD,CAAkB5sB,GAAG,2DAG7B,gBAACqnB,GAAA,EAAD,CACIrP,QAhEQ,KACpBsU,EAAoB,GACpBG,IACAP,GAAgB,GAChBD,GAAiB,GACjBE,GAAgB,GAChBC,GAAwB,EAAxB,EA2DYjV,UAAWP,EAAQkV,cAFvB,UAII,eAACa,GAAA,EAAD,UACI,eAAC,KAAD,CAAUpQ,SAAS,YAEvB,eAACnF,GAAA,EAAD,CAAYC,QAAQ,UAAUuV,QAAM,EAApC,SACI,eAAC,KAAD,CAAkB5sB,GAAG,wDAG7B,gBAACqnB,GAAA,EAAD,CACIrP,QAnEgB,KAC5BsU,EAAoB,GACpBG,IACAP,GAAgB,GAChBD,GAAiB,GACjBE,GAAgB,GAChBC,GAAwB,EAAxB,EA8DYjV,UAAWP,EAAQkV,cAFvB,UAII,eAACa,GAAA,EAAD,UACI,eAAC,KAAD,CAAUpQ,SAAS,YAEvB,eAACnF,GAAA,EAAD,CAAYC,QAAQ,UAAUuV,QAAM,EAApC,SACI,eAAC,KAAD,CAAkB5sB,GAAG,qEAjEzC,EC5HJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFxD,MAAO,OACPwJ,UAAW,IAEf6O,WAAY,CACRrY,MAAO,OACP+O,WAAYxL,EAAMO,QAAQ,IAE9BwU,eAAgB,CACZ7nB,MAAO8S,EAAME,QAAQyC,QAAQK,KAAO,cAExCgS,eAAgB,CACZ9nB,MAAO8S,EAAME,QAAQyC,QAAQK,KAAO,cAExCiS,UAAW,CACP1L,YAAa,QAEjB2L,UAAW,CACP3L,YAAa,QAEjB4L,OAAQ,CACJ5L,YAAa,OACbiC,WAAY,QAEhB4J,YAAa,CACT7L,YAAa,QAEjB8L,WAAY,CACRnoB,MAAO8S,EAAME,QAAQwC,KAAKC,SAE9B2S,gBAAiB,CACbpoB,MAAO8S,EAAME,QAAQwC,KAAKC,SAE9B6S,aAAc,CACVjM,YAAa,UAEjBkM,UAAW,CACPC,UAAW,wBACXjQ,cAAe,EACf,qBAAsB,CAClB8P,SAAU,YAGlBI,WAAY,CACRhP,WAAY,OACZuD,YAAa,OACbzE,cAAe,SACfmQ,aAAc,QAElBC,WAAY,CACRH,UAAW,wBACX,qBAAsB,CAClB/O,WAAY,EACZlB,cAAe,IAGvBqQ,cAAe,CACXrQ,cAAe,OACfkB,WAAY,QAEhBoP,aAAc,CACVR,SAAU,OACV3M,WAAY,SACZgN,aAAc,QAElBtM,KAAM,CACFpc,MAAO8S,EAAME,QAAQwC,KAAKE,eA8OnBiU,OA1OmC,IAW3C,IAX4C,eAC/CC,EAD+C,kBAE/CC,EAF+C,MAG/CjnB,EAH+C,SAI/CknB,EAJ+C,aAK/CC,EAL+C,iBAM/ChB,EAN+C,gBAO/CC,EAP+C,gBAQ/CC,EAR+C,wBAS/CC,EAT+C,WAU/Cc,GACE,EACF,MAAMtW,EAAU1B,KACV8M,EAAOC,gBACNuK,EAAiBH,GAAsBtV,oBAAkB,IACzDoW,EAAgBC,GAAqBrW,oBAAkB,GACxDwV,EAAatG,iBAAiC,MAC9CoH,EAAYpH,iBAAiC,OAC5CqH,EAAkBhB,GAAuBvV,mBAAiB,GAsD3DwW,EAAY,CACd,CAAEvhB,MAAOgW,EAAKI,cAAc,CAAEpiB,GAAI,iDAAmDA,GAAI,GACzF,CAAEgM,MAAOgW,EAAKI,cAAc,CAAEpiB,GAAI,8CAAgDA,GAAI,GACtF,CAAEgM,MAAOgW,EAAKI,cAAc,CAAEpiB,GAAI,8CAAgDA,GAAI,GACtF,CAAEgM,MAAOgW,EAAKI,cAAc,CAAEpiB,GAAI,8CAAgDA,GAAI,IAsB1F,OACI,sBAAKmgB,MAAO,CAAE1N,MAAO,OAAQ+a,UAAW,QAAxC,SACI,eAAC7V,GAAA,EAAD,UACI,eAAC8V,GAAA,EAAD,CACItW,UAAWP,EAAQX,KADvB,SAGI,gBAACyX,GAAA,EAAD,CAAavW,UAAWP,EAAQX,KAAhC,UACI,eAAC0B,GAAA,EAAD,UACI,eAACI,GAAA,EAAD,CACIC,QA9EE,KAC1BqU,GAAmB,EAAnB,EA8EwBrG,IAAKuG,EACL1d,KAAK,SACLwI,QAAQ,OACRF,UAAWP,EAAQyU,WALvB,SAOI,gBAAC1T,GAAA,EAAD,CAAKE,QAAQ,OAAb,UAC0B,IAArByV,GACG,eAACX,GAAA,EAAD,CAAcxV,UAAWP,EAAQmV,aAAjC,SAA+C,eAAC,KAAD,CAAgB5U,UAAWP,EAAQ0I,SAChE,IAArBgO,GACG,eAACX,GAAA,EAAD,CAAcxV,UAAWP,EAAQmV,aAAjC,SAA+C,eAAC,KAAD,CAAW5U,UAAWP,EAAQ0I,SAC3D,IAArBgO,GACG,eAACX,GAAA,EAAD,CAAcxV,UAAWP,EAAQmV,aAAjC,SAA+C,eAAC,KAAD,CAAW5U,UAAWP,EAAQ0I,SAC3D,IAArBgO,GACG,eAACX,GAAA,EAAD,CAAcxV,UAAWP,EAAQmV,aAAjC,SAA+C,eAAC,KAAD,CAAU5U,UAAWP,EAAQ0I,SAC1D,IAArBgO,GACG,eAACX,GAAA,EAAD,CAAcxV,UAAWP,EAAQmV,aAAjC,SAA+C,eAAC,KAAD,CAAU5U,UAAWP,EAAQ0I,SAChF,eAACqO,GAAA,EAAD,CAAcxW,UAAWP,EAAQmV,eACjC,eAAC4B,GAAA,EAAD,CAAcxW,UAAWP,EAAQmV,aAAjC,UA9CL9M,EA+C4BqO,EA9CvC,GAARrO,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,wDAC9B,GAARif,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,oDACnC,GAARif,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,sDACnC,GAARif,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,mDACxCgiB,EAAKI,cAAc,CAAEpiB,GAAI,+DA4CT,eAAC2X,GAAA,EAAD,CAAKiH,WAAY,SAAU/G,QAAS,OAApC,SACI,eAAC,KAAD,aAKhB,eAAC,GAAD,CACIqU,gBAAiBA,EACjBD,iBAAkBA,EAClBE,gBAAiBA,EACjBC,wBAAyBA,EACzBC,mBAAoBA,EACpBC,oBAAqBA,EACrBC,WAAYA,EACZC,gBAAiBA,IAErB,eAACzC,GAAA,EAAD,CAAS6D,YAAY,WAAWC,UAAQ,IACxC,gBAAClW,GAAA,EAAD,CACIqR,GAAI,EACJnR,QAAQ,OACR+G,WAAW,SACXnM,MAAM,OACNwS,EAAG,EALP,UAOI,eAAC,KAAD,IACA,eAAC6I,GAAA,EAAD,CACIC,kBAAgB,EAChBC,WAAS,EACT7W,UAAWP,EAAQkU,WACnBmD,SAzID/pB,IACvB+oB,GAAa,GACbf,GAAgB,GAChBD,GAAiB,GACjBK,EAAoB,GACpBpoB,EAAMgqB,UACNlB,EAAS9oB,EAAMwT,OAAO5P,MAAtB,EAoIwBqmB,YAAanM,EAAKI,cAAc,CAAEpiB,GAAI,sBAAyB,IAAMktB,EAAW5sB,KAChFwH,MAAOhC,OAGf,eAAC6R,GAAA,EAAD,CACIsN,EAAG,EACHpN,QAAQ,OACR+G,WAAW,SACXwP,SAAS,OAJb,SAMwB,OAAnBtB,QAA8CuB,IAAnBvB,GAAmD,IAAnBA,GACxD,eAAC/L,GAAA,EAAD,CAEI/U,MApFLiT,IACX,GAARA,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,iDAC9B,GAARif,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,8CACnC,GAARif,EAAkB+C,EAAKI,cAAc,CAAEpiB,GAAI,8CACxCgiB,EAAKI,cAAc,CAAEpiB,GAAI,8CAgFFsuB,CAAkBxB,GACzByB,SAAU,KAtGtCxB,EAAkB,EAmGM,GACSD,KAMjB,eAACnV,GAAA,EAAD,UACI,gBAACI,GAAA,EAAD,CACIC,QAjJC,KACzBoV,GAAkB,EAAlB,EAiJwBpH,IAAKqH,EACLxe,KAAK,SACLwI,QAAQ,OACRF,UAAWP,EAAQ0U,gBALvB,UAOI,eAAC,KAAD,CAAYnU,UAAWP,EAAQ4U,eAC/B,eAAC,KAAD,CAAkBxrB,GAAG,mBACrB,eAAC,KAAD,SAIR,eAAC8mB,GAAA,EAAD,CACIK,SAAUkG,EAAUjG,QACpBL,aAAc,CACVC,SAAU,MACV5U,WAAY,UAEhBsa,gBAAiB,CACb1F,SAAU,MACV5U,WAAY,UAEhByE,KAAMsW,EACNzH,QAjKM,KAC1BuH,GAAa,GACbf,GAAgB,GAChBD,GAAiB,GACjBK,EAAoB,GACpBc,GAAkB,EAAlB,EA6JoBjW,UAAWP,EAAQiV,WAZvB,SAcI,eAAC4B,GAAA,EAAD,CAAMtW,UAAWP,EAAQ+U,WAAzB,SAEI,gBAAC6C,GAAA,EAAD,CAAa5F,GAAI,CAAE6F,EAAG,EAAGhc,MAAO,KAAhC,UACI,eAACic,GAAA,EAAD,CAAY1uB,GAAG,2BAAf,kBACA,eAAC2uB,GAAA,EAAD,CACIC,QAAQ,2BACR5uB,GAAG,qBACH8H,MAAOglB,EACPmB,SAtHZ/pB,IACpB6oB,EAAkB7oB,EAAMwT,OAAO5P,MAA/B,EAsHgC+mB,MAAO,eAACC,GAAA,EAAD,CAAe9iB,MAAOgW,EAAKI,cAAc,CAAEpiB,GAAI,wBAL1D,SAOKutB,EAAUjpB,KAAKyqB,GACZ,eAAC1H,GAAA,EAAD,CAEIvf,MAAOinB,EAAS/uB,GAFpB,SAIK+uB,EAAS/iB,OAHL+iB,EAAS/uB,wBA1I/Bif,KAmB3B,E,gCClNJ,MAAM/J,GAAYC,aAAW,MACzBc,KAAM,CACF4B,QAAS,OACT2V,UAAW,UAEfwB,eAAgB,CACZvc,MAAO,OACPD,OAAQ,QACRiJ,cAAe,SACfkB,WAAY,SACZiP,aAAc,SACd1L,YAAa,UAEjB6E,QAAS,CACLyI,UAAW,SACX/a,MAAO,QACPqF,eAAgB,QAChByH,YAAa,UAEjBvT,MAAO,CACHuV,aAAc,SACdlS,gBAAiB,UACjBnM,MAAO,WAEXW,MAAO,CACH0Y,SAAU,OACVgF,aAAc,QAGlBle,YAAa,CACTke,aAAc,QAElB3Q,MAAO,CACH1G,SAAU,WACVyH,IAAK,EACLD,MAAO,EACPE,OAAQ,EACRH,KAAM,GAEVwd,gBAAiB,CACbxc,MAAO,OACPD,OAAQ,EACRiJ,cAAe,SACfvR,SAAU,gBAoFHglB,OAhFyB,IAAsB,IAArB,YAAEC,GAAkB,EACzD,MAAMvY,EAAU1B,KACVhU,EAASkiB,gBACRgM,EAAMC,GAAWtY,qBA2BxB,OANAnB,qBAAU,UACcyY,IAAhBc,GAA6C,KAAhBA,GApBrB,MACZ,IAAIppB,EAAS,CAAC,EACdA,EAAM,SAAeopB,EACrB7vB,KAAMgwB,KAAKlX,kDAA2DrS,EAAQ7E,GACzEmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAC3BW,QAAQ6nB,IAAIrF,EAASnjB,MACrB,IAAIA,EAAOmjB,EAASnjB,KACpBkuB,EAAQluB,EACX,CACJ,IACA2jB,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI,gCACR5nB,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAbL,EAkBIouB,EACH,GACF,CAACJ,IAGA,+BACI,gBAAC1B,GAAA,EAAD,CACItW,UAAWP,EAAQX,KADvB,UAGI,sBAAKkB,UAAWP,EAAQqY,gBAAxB,SACI,eAACO,GAAA,EAAD,CACIrY,UAAWP,EAAQhG,MADvB,SAGI,yBACI5Q,GAAG,4BACHwY,IAAK,yKAA2K2W,EAChLhP,MAAO,CAAE1N,MAAO,OAAQD,OAAQ,OAAQiJ,cAAe,SAAUkB,WAAY,SAAUiP,aAAc,SAAU1L,YAAa,UAC5HuP,iBAAiB,EACjBC,YAAY,IACZC,SAAS,QACTC,WAAS,EACTC,SAAS,sCAKrB,gBAACC,GAAA,EAAD,CACI3Y,UAAWP,EAAQmO,QADvB,UAGI,eAACgL,GAAA,EAAD,CACI5Y,UAAWP,EAAQ5K,MADvB,kBAKA,eAACoL,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQ/S,MAHvB,SAKKurB,GAAQA,EAAI,OAGjB,eAAChY,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBACNiU,UAAWP,EAAQvT,YAHvB,SAKK+rB,GAAQA,EAAI,qBA3CjC,E,6ICuDWY,OAlH2C,IAA+E,IAA9E,OAAE5J,EAAF,QAAUtP,EAAV,MAAmBlG,EAAnB,WAA0B8T,EAA1B,iCAAsCuL,GAAuC,EACpI,MAAM/a,EAAYC,aAAW,MACzBc,KAAM,CAAC,EACPia,UAAW,CACPrY,QAAS,OACT+G,WAAY,SACZ9G,eAAgB,UAEpBqY,aAAc,CACV5Q,YAAa,YAGfre,EAASkiB,eACTxM,EAAU1B,KACT3U,EAAU6vB,GAAerZ,mBAAiB,KAC1CsZ,EAAmBC,GAAwBvZ,oBAAkB,GAE9DyP,EAAc,KAChB1P,GAAQ,EAAR,EAuBJ,OACI,gBAACyZ,GAAA,EAAD,CACIja,SAAS,KACTa,UAAWP,EAAQsZ,UACnBxK,QAASc,EACT3P,KAAMuP,EACN,kBAAgB,qBAChB,mBAAiB,2BANrB,UAQI,eAACoK,GAAA,EAAD,UACI,gBAAC7Y,GAAA,EAAD,CACIE,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SAHf,UAKI,eAACxH,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAII,eAAC,KAAD,CAAkBlD,GAAG,yEAGzB,eAACgoB,GAAA,EAAD,CAAYhQ,QAASwO,EAAa3X,KAAK,QAAvC,SACI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,aAKhB,gBAACkU,GAAA,EAAD,WACI,eAAC9Y,GAAA,EAAD,CAAK+Y,GAAI,EAAT,SACI,eAACC,GAAA,EAAD,CACI5uB,MAAOsuB,EACP9qB,KAAM,OACNuC,MAAOvH,EACPyL,MAAO,WACPiiB,SAxDU/pB,IAC1BksB,EAAYlsB,EAAMwT,OAAO5P,OACzBwoB,GAAqB,EAArB,EAuDgBM,WAAYP,EAAoB,qBAAuB,GAN3D,SAQK9vB,MAGT,gBAACoX,GAAA,EAAD,CACIC,GAAI,EACJiZ,GAAI,EACJhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,QALf,UAOI,eAAC7G,GAAA,EAAD,CACI7U,MAAM,UACN2L,KAAK,QACLwI,QAAQ,WACRF,UAAWP,EAAQuZ,aACnBnY,QAASwO,EALb,SAOI,eAAC,KAAD,CAAkBxmB,GAAG,iEAEzB,eAAC+X,GAAA,EAAD,CACI7U,MAAM,UACN2L,KAAK,QACLwI,QAAQ,YACRW,QAAS,IA7EL,MACpB,IAAIjS,EAAS,CAAE,WAAc2e,EAAY,iBAAoB9T,EAAMkgB,SAAU,SAAYvwB,GACzFjB,KAAMgwB,KAAKlX,+DAAwErS,EAAQ7E,GACtFmjB,MAAK,SAAUC,GACRA,GAA6B,MAAjBA,EAASnjB,OACjB2T,QAAQwP,EAASnjB,OACjBqlB,IACAyJ,EAAiCrf,IAEjC0f,GAAqB,GAGhC,GAVL,EA2E+BS,GAJnB,SAMI,eAAC,KAAD,CAAkB/wB,GAAG,yEAhEzC,E,0CCjDJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EAEP+a,WAAY,CACRnZ,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACd1P,aAAc,SACd/O,OAAQ,SACR6O,OAAQ,UACR,UAAW,CACP6P,eAAgB,cAGxB7tB,YAAa,CACTwU,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACdze,OAAQ,QAEZvF,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CkY,eAAgB,CACZlnB,SAAU,WACVmnB,WAAY,SACZC,cAAe,OACf3f,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,QACPme,OAAQ,WAEZkQ,UAAW,CACPrnB,SAAU,WACVonB,cAAe,OACf3f,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXxoB,MAAO,QACPme,OAAQ,UACRxE,WAAY,wBAEhB2U,SAAU,CACNtnB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR,UAAW,CACP,QAAS,CACL6e,WAAY,aAIxBI,UAAW,CACP,QAAS,CACL,QAAS,CACLlV,SAAU,WACVqP,aAAc,SACdnQ,cAAe,YAI3BiW,cAAe,CACXxR,YAAa,OACbzE,cAAe,SACf,QAAS,CACL,QAAS,CACLc,SAAU,WACVqP,aAAc,SACdnQ,cAAe,YAI3BoO,QAAS,CACL2D,UAAW,OACXhM,WAAY,OACZjC,YAAa,QAEjBoS,eAAgB,CACZnQ,WAAY,SACZ3E,WAAY,YAEhB+U,WAAY,CACR1uB,MAAO,cACP,0BAA2B,CACvB2uB,QAAS,GACT3uB,MAAO,gBAGf4uB,eAAgB,CAAC,EACjBC,SAAU,CACNV,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,SAEX8uB,WAAY,CACRX,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXlZ,OAAQ,SACRC,MAAO,OACPvP,MAAO,SAEX+uB,QAAS,CACL/nB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR,UAAW,CACP,QAAS,CACL6e,WAAY,WAEhB,WAAY,CACRA,WAAY,aAIxBa,UAAW,CACPhJ,SAAU,UAEdiJ,UAAW,CACPjoB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,YAuIAC,OAnI6B,IAQrC,IARsC,UACzClb,EADyC,YAEzCmb,EAFyC,gBAGzCC,EAHyC,uBAIzCC,EAJyC,iBAKzCC,EALyC,eAMzCC,KACG5S,GACD,EACF,MAAMlJ,EAAU1B,KACH+M,eAEb,OACI,gBAACtK,GAAA,EAAD,CACIsN,EAAG,EACHxJ,cAAe,EAFnB,UAII,uBAAKtE,UAAWP,EAAQ4a,SAAxB,UACwB,aAAnBkB,GACG,iCACI,eAACC,GAAA,EAAD,CACI/b,QAAS,CACLX,KAAMW,EAAQgb,WACdE,eAAgBlb,EAAQkb,gBAE5B9Z,QAAS,IAAMya,IALnB,SAOI,eAACjD,GAAA,EAAD,CACIrY,UAAWP,EAAQ3J,MACnBA,MAAOqlB,EAAYM,qBAK3B,eAAC5R,GAAA,EAAD,CAAS7J,UAAWP,EAAQwa,eACxB7U,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,SAIQ,aAAnBwvB,GACG,uBAAKvb,UAAWP,EAAQqb,QAAxB,UACI,eAACU,GAAA,EAAD,CACI/b,QAAS,CACLX,KAAMW,EAAQgb,WACdE,eAAgBlb,EAAQkb,gBAE5B9Z,QAAS,IAAMya,IALnB,SAOI,eAACjD,GAAA,EAAD,CACIrY,UAAWP,EAAQ3J,MACnBA,MAAOqlB,EAAYM,qBAI3B,eAAC5R,GAAA,EAAD,CAAS7J,UAAWP,EAAQmb,SACxBxV,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAAC6U,GAAA,EAAD,CAAQZ,UAAWP,EAAQob,WACvB3a,QAAQ,WACRnU,MAAM,UACN2L,KAAK,QAHT,SAKI,eAAC,KAAD,CAAkB7O,GAAG,+DAIjC,eAAC+vB,GAAA,EAAD,CACI5Y,UAAWP,EAAQ2a,UADvB,SAGI,eAACna,GAAA,EAAD,UACKkb,EAAYO,gBAIzB,gBAAClb,GAAA,EAAD,CACIE,QAAS,OADb,UAGI,eAACF,GAAA,EAAD,CAAKsN,EAAG,IAAK6N,GAAI,EAAjB,SACI,eAAC9R,GAAA,EAAD,CACIzE,SAAS,QACTpF,UAAWP,EAAQub,UAFvB,SAII,eAAC,KAAD,QAGR,eAACxa,GAAA,EAAD,CAAK+Y,GAAI,IAAT,SACI,eAACtZ,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KACRF,UAAWP,EAAQsb,UAHvB,SAKK,eAKb,eAACva,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQoa,WACnBhZ,QAAS,IAAMya,IAJnB,SAMKH,EAAYzuB,UAGrB,eAAC8T,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,UACRnU,MAAM,gBACNiU,UAAWP,EAAQvT,YAHvB,SAKiC,OAA5BivB,EAAYjvB,aAA6D,kBAA7BivB,EAAYjvB,aACzB,KAA5BivB,EAAYjvB,aAAsBpC,aAAMqxB,EAAYjvB,mBA3GxE,EC5JJ,MAAM6R,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EAEP+a,WAAY,CACRnZ,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACd1P,aAAc,SACd/O,OAAQ,SACR6O,OAAQ,UACR,UAAW,CACP6P,eAAgB,cAGxB7tB,YAAa,CACTwU,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,YAElBhkB,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CkY,eAAgB,CACZlnB,SAAU,WACVmnB,WAAY,SACZC,cAAe,OACf3f,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,QACPme,OAAQ,WAEZ8Q,UAAW,CACPjoB,SAAU,WACVuH,KAAM,OACNE,IAAK,OACL6P,WAAY,OACZte,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEXF,UAAW,CACPhJ,SAAU,UAEdqI,UAAW,CACPrnB,SAAU,WACVonB,cAAe,OACf3f,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXxoB,MAAO,QACPme,OAAQ,UACRxE,WAAY,wBAEhB2U,SAAU,CACNtnB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR+O,aAAc,OACd,UAAW,CACP,QAAS,CACL8P,WAAY,aAIxBI,UAAW,CACP,QAAS,CACL,QAAS,CACLlV,SAAU,WACVqP,aAAc,SACdnQ,cAAe,YAI3BiW,cAAe,CACXxR,YAAa,OACbzE,cAAe,SACf,QAAS,CACL,QAAS,CACLc,SAAU,WACVqP,aAAc,SACdnQ,cAAe,YAI3BoO,QAAS,CACL2D,UAAW,OACXhM,WAAY,OACZjC,YAAa,QAEjBoS,eAAgB,CACZnQ,WAAY,SACZ3E,WAAY,YAEhB+U,WAAY,CACR1uB,MAAO,cACP,0BAA2B,CACvB2uB,QAAS,GACT3uB,MAAO,gBAGf4uB,eAAgB,CAAC,EACjBC,SAAU,CACNV,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,SAEX8uB,WAAY,CACRX,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXlZ,OAAQ,SACRC,MAAO,OACPvP,MAAO,SAEX+uB,QAAS,CACL/nB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR,UAAW,CACP,QAAS,CACL6e,WAAY,WAEhB,WAAY,CACRA,WAAY,iBA0Hb0B,OAnHiC,IAAmE,IAAlE,UAAE5b,EAAF,YAAamb,EAAb,YAA0BU,EAA1B,WAAuCtO,KAAe5E,GAAW,EAE9G,MAAM5e,EAASkiB,eACTxM,EAAU1B,MACT+d,EAAcV,GAAmBxb,sBACjCmc,EAAuBV,GAA0Bzb,oBAAkB,IACnEoc,EAAYC,GAAiBrc,mBAAwB,OACrDsc,EAAyBC,GAA8Bvc,oBAAkB,IACzE2b,EAAgBa,GAAqBxc,qBAEtCyc,EAAalB,IACfC,EAAgBD,GAChBE,GAAuB,EAAvB,EA4CJ,OAJA5c,qBAAU,KArCc0c,KACpB,IAAIvsB,EAAS,CAAE,iBAAoBusB,EAAYxB,SAAU,WAAcpM,GACvEplB,KAAMgwB,KAAKlX,+EAAwFrS,EAAQ7E,GACtGmjB,MAAK,SAAUC,GACZiP,EAAkBjP,EAASnjB,KAC9B,IACA2jB,OAAM,SAAU/iB,GACTA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GARL,EAoCAsyB,CAAenB,EAAf,GACD,IAGC,gBAAC7E,GAAA,EAAD,CACItW,UAAWP,EAAQX,KACnByd,QAAQ,EAFZ,UAII,eAACC,GAAD,CACIpB,gBAAiBA,EACjBC,uBAAwBA,EACxBF,YAAaA,EACbG,iBAtCa,KACE,WAAnBC,EACAc,EAAUlB,GAEc,aAAnBI,GACLY,GAA2B,EAC9B,EAiCOZ,eAAgBA,IAGnBQ,GACG,eAACU,GAAA,EAAD,CAAmBxN,OAAQ8M,EAAuBxN,QAlC3B,KAC/B8M,GAAuB,EAAvB,EAkCYqB,MAAOZ,EAAcE,WAAYA,EAAYC,cAAeA,EAAevO,cAAemO,IAEjGK,GACG,eAAC,GAAD,CACI3O,WAAYA,EACZ0B,OAAQiN,EACRvc,QAASwc,EACT1iB,MAAO0hB,EACPrC,iCAAkC,IA/BRqC,KACtCkB,EAAUlB,EAAV,EA8BoDrC,CAAiCqC,KAIhFA,EAAYwB,UAAYxB,EAAYwB,SAAS/sB,OAAS,GAEnD,eAACgtB,GAAA,EAAD,CAEIC,oBAAqB,eAAC,KAAD,IACrBC,kBAAmB,eAAC,KAAD,IACnBC,kBAAkB,EAJtB,SAOI,eAACC,GAAA,EAAD,CAAUhd,UAAWP,EAAQ8a,cAAe0C,OAAO,KAAKpoB,MAAO,iBAAmBsmB,EAAYwB,SAAS/sB,OAAS,iBAAhH,SACKurB,EAAYwB,SAASxvB,KAAI,CAACoJ,EAASkG,IAE5B,eAACugB,GAAA,EAAD,CACIhd,UAAWP,EAAQ6a,UAEnB2C,OAAQxgB,EAAMygB,WACdroB,MAAO,IAAM0B,EAAQ4mB,SAAd,KAAqC5mB,EAAQ6mB,KACpDvc,QAAS,IA5Dbwc,KACxB,IAAIC,EAAYD,EAAYpyB,MAAM,KAC9BsyB,EAA4B,IAAhBD,EAAU,GAAW,GAAuB,IAAhBA,EAAU,KAAaA,EAAU,GAE7ErB,EAD4B,IAAVsB,GAElBlB,EAAUlB,EAAV,EAuD2CqC,CAAmBjnB,EAAQ4mB,WAHrC1gB,WAzCrC,E,WC5GWghB,OAvFmD,IAAmC,IAAlC,QAAEnQ,EAAF,OAAW2B,EAAX,QAAmBtP,GAAc,EAEhG,MAAM5B,EAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPia,UAAW,CACPrY,QAAS,OACT+G,WAAY,SACZ9G,eAAgB,UAEpBqY,aAAc,CACVjtB,MAAO,QACPmM,gBAAiB,QACjB,UAAW,CACPwN,WAAY,YAGpBgY,aAAc,CACVrT,WAAY,OACZ/O,MAAO,OACPpD,gBAAiB,UACjBnM,MAAO8S,EAAME,QAAQ2G,WAAWC,aAGlCgJ,EAAUC,cACVnP,EAAU1B,IACVsR,EAAc,KAChB1P,GAAQ,EAAR,EAMJ,OACI,gBAACyZ,GAAA,EAAD,CACIja,SAAS,KACTa,UAAWP,EAAQsZ,UACnBxK,QAASc,EACT3P,KAAMuP,EACN,kBAAgB,qBAChB,mBAAiB,2BANrB,UAQI,eAACoK,GAAA,EAAD,UACI,gBAAC7Y,GAAA,EAAD,CACIE,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SAHf,UAKI,eAACxH,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAII,eAAC,KAAD,CAAkBlD,GAAG,8EAGzB,eAACgoB,GAAA,EAAD,CAAYhQ,QAASwO,EAAa3X,KAAK,QAAvC,SACI,eAACmS,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,aAKhB,gBAACkU,GAAA,EAAD,WACI,gBAACqE,GAAA,EAAD,CAAmB90B,GAAG,2BAAtB,UACI,eAAC,KAAD,CAAkBA,GAAG,oFAAqFykB,EAAQnkB,QAEtH,gBAACqX,GAAA,EAAD,CACIE,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SACXhH,GAAI,EAJR,UAMI,eAACG,GAAA,EAAD,CACI7U,MAAM,YACN2L,KAAK,QACLwI,QAAQ,YACRF,UAAWP,EAAQuZ,aACnBnY,QAASwO,EALb,SAOI,eAAC,KAAD,CAAkBxmB,GAAG,sEAEzB,eAAC+X,GAAA,EAAD,CAAQZ,UAAWP,EAAQie,aAAc7c,QAAS,KAnD9D8N,EAAQvf,KAAK,YAmDD,EAAwE8Q,QAAQ,YAAhF,SAA4F,eAAC,KAAD,CAAkBrX,GAAG,gFAhDjI,ECvCJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EAEP8e,gBAAiB,CACbtiB,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,WAEZ2T,mBAAoB,CAChBviB,MAAO,OACPD,OAAQ,OACR2e,YAAa,UAEjB8D,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX8C,UAAW,CACPhM,SAAU,UAEd6I,SAAU,CACNV,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,SAEX8uB,WAAY,CACRX,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXlZ,OAAQ,SACRC,MAAO,OACPvP,MAAO,SAEXiyB,cAAe,CACXC,KAAM,GACN/D,WAAY,SACZC,cAAe,OACfpnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXlZ,OAAQ,UACRC,MAAO,OACPvP,MAAO,SAEXsuB,SAAU,CACNtnB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR,UAAW,CACP,QAAS,CACL6e,WAAY,WAEhB,WAAY,CACRA,WAAY,aAIxBgE,UAAW,CACPnrB,SAAU,WACVuI,MAAO,OACPD,OAAQ,OACR,UAAW,CACP,WAAY,CACR6e,WAAY,aAIxBO,WAAY,CACR1uB,MAAO,cACP,0BAA2B,CACvB2uB,QAAS,GACT3uB,MAAO,gBAGf4uB,eAAgB,CAAC,EAEjBwD,WAAY,CACRzd,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACd1P,aAAc,SACd/O,OAAQ,SACR6O,OAAQ,UACR,UAAW,CACP6P,eAAgB,cAIxB7tB,YAAa,CACTwU,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACdze,OAAQ,QAGZ+iB,eAAgB,CACZ/T,WAAY,SACZ3E,WAAY,YAGhB2Y,yBAA0B,CACtB3d,QAAS,YAoGF4d,OA/FiC,IAA0C,IAAzC,UAAEte,EAAF,YAAaue,EAAb,QAA0BjR,GAAc,EACrF,MAAOkR,EAAuBC,GAAyB7e,oBAAkB,GACnEH,EAAU1B,KAMhB,OACI,gBAACuY,GAAA,EAAD,CACItW,UAAWP,EAAQX,KACnByd,QAAQ,EAFZ,UAII,gBAAC/b,GAAA,EAAD,CACIsN,EAAG,EACHxJ,cAAe,EAFnB,UAII,uBAAKtE,UAAWP,EAAQ4a,SAAxB,UACI,eAACmB,GAAA,EAAD,CACI/b,QAAS,CACLX,KAAMW,EAAQgb,WACdE,eAAgBlb,EAAQkb,gBAE5B9Z,QAAS,KAlBzB4d,GAAsB,EAaV,WAOI,eAACpG,GAAA,EAAD,CACIrY,UAAWP,EAAQoe,mBACnB/nB,MAAOyoB,EAAYG,kBAI3B,eAAC7U,GAAA,EAAD,CAAS7J,UAAWP,EAAQmb,SACxBxV,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAAC6U,GAAA,EAAD,CAAQZ,UAAWP,EAAQob,WACvB3a,QAAQ,WACRnU,MAAM,UACN2L,KAAK,QAHT,SAKI,eAAC,KAAD,CAAkB7O,GAAG,+DAG7B,gBAAC2X,GAAA,EAAD,CACIR,UAAWP,EAAQ4e,yBADvB,UAGI,eAAC7d,GAAA,EAAD,CAAKsN,EAAG,IAAK6N,GAAI,EAAjB,SACI,eAAC9R,GAAA,EAAD,CACIzE,SAAS,QACTpF,UAAWP,EAAQqe,QAFvB,SAII,eAAC,KAAD,QAGR,eAACtd,GAAA,EAAD,CAAK+Y,GAAI,IAAT,SACI,eAACtZ,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KACRF,UAAWP,EAAQse,UAHvB,SAKI,eAAC,KAAD,CAAkBl1B,GAAG,uDAIjC,eAAC2X,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQ0e,WAHvB,SAKKI,EAAY7xB,UAGrB,eAAC8T,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,UACRnU,MAAM,gBACNiU,UAAWP,EAAQvT,mBAM9BsyB,GACG,eAAC,GAAD,CAAyBlR,QAASA,EAAS2B,OAAQuP,EAAuB7e,QAAS8e,MA9E/F,EC9HJ,MAAM1gB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EAEPgf,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX0D,SAAU,CACN5M,SAAU,UAEd6M,UAAW,CACPle,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACd1P,aAAc,SACd/O,OAAQ,SACR6O,OAAQ,UACR,UAAW,CACP6P,eAAgB,cAGxB8E,KAAM,CACF9rB,SAAU,WACVyH,IAAKqE,EAAMO,QAAQ,GACnB7E,MAAOsE,EAAMO,QAAQ,GACrBrT,MAAO,QACPme,OAAQ,WAEZ4U,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACPD,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjC9V,YAAa,CACTwU,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACdze,OAAQ,QAEZvF,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UAqInCid,OAjImB,IAAqB,IAApB,KAAEC,EAAF,KAAQC,GAAW,EAClD,MAAMzf,EAAU1B,KAEVhU,EAASkiB,eAkBTkT,EAAe,KAhBD,MAChB,IAAIvwB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,qEAA8ErS,EAAQ7E,GAC5FmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrB4T,OAAO8B,KAAKyN,EAASnjB,KAE5B,IACA2jB,OAAM,SAAU/iB,GACTA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAVL,EAcAq1B,EAAa,GAGVC,EAAmBC,GAAwB3f,mBAAS,MAqB3D,OAJAnB,qBAAU,KACFwgB,EAAKO,qBAjBgB,MACzB,IAAI5wB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,mEAA4ErS,EAAQ7E,GAC1FmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBu1B,EAAqBpS,EAASnjB,KAErC,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAc8By1B,EAAsB,GACrD,IAGC,eAACC,GAAA,EAAD,CACI5X,MAAI,EAEJjF,GAAsB,GACtBC,GAAa,SAAToc,EAAkB,GAAK,EAC3Bnc,GAAa,SAATmc,EAAkB,EAAI,EAC1Blc,GAAa,SAATkc,EAAkB,EAAI,EAC1Bjc,GAAsB,EAP1B,SASI,gBAACqT,GAAA,EAAD,CACItW,UAAWP,EAAQX,KACnByd,QAAQ,EACR1b,QAAS,IAAMse,IAHnB,UAKI,gBAAC3e,GAAA,EAAD,CACIsN,EAAG,EACHxJ,cAAe,EAFnB,UAIM2a,EAAKO,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACzDA,MAAOwpB,KAGRL,EAAKO,qBAAyBP,EAAKP,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClFA,MAAOmpB,EAAKP,iBAGbO,EAAKO,sBAA0BP,EAAKP,eAAkB,gBAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,UACrD,eAAC,KAAD,CAAU9e,UAAWP,EAAQsf,WAC7B,eAACnV,GAAA,EAAD,CACI/U,MAAOoqB,EAAKU,UACZ5zB,MAAM,UACNiU,UAAWP,EAAQof,KACnBnnB,KAAK,aAGb,gBAAC8I,GAAA,EAAD,CACIE,QAAS,OADb,UAGI,eAACF,GAAA,EAAD,CAAKsN,EAAG,IAAK6N,GAAI,EAAjB,SACI,eAAC9R,GAAA,EAAD,CACIzE,SAAS,QACTpF,UAAWP,EAAQqe,QAFvB,SAII,eAAC,KAAD,QAGR,eAACtd,GAAA,EAAD,CAAK+Y,GAAI,IAAT,SACI,eAACtZ,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KACRF,UAAWP,EAAQkf,SAHvB,SAKK,cAIb,eAACne,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQmf,UAHvB,SAKKK,EAAKvyB,UAGd,eAAC8T,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,UACRnU,MAAM,gBACNiU,UAAWP,EAAQvT,YAHvB,SAKK+yB,EAAK/yB,mBAIlB,eAAC0mB,GAAA,EAAD,QAzECqM,EAAKG,QAHlB,ECxHJ,MAAMrhB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EAEPgf,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX0D,SAAU,CACN5M,SAAU,UAEd6M,UAAW,CACPle,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACd1P,aAAc,SACd/O,OAAQ,SACR6O,OAAQ,UACR,UAAW,CACP6P,eAAgB,cAGxB+E,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACPD,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjC9V,YAAa,CACTwU,QAAQ,cACR,qBAAsB,EACtB,qBAAsB,WACtBqR,SAAU,SACV+H,aAAc,WACdze,OAAQ,QAEZvF,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UAiHnC6d,OA5GmC,IAA8B,IAA7B,cAAEC,EAAF,KAAiBX,GAAW,EAC3E,MAAMn1B,EAASkiB,gBACRuS,EAAuBC,GAAyB7e,oBAAkB,GACnEH,EAAU1B,MACT+hB,EAAcC,GAAmBngB,mBAAiB,KAMlDogB,EAA2BC,GAAgCrgB,mBAAS,MAqB3E,OAJAnB,qBAAU,KACFohB,EAAcL,qBAjBe,MACjC,IAAI5wB,EAAS,CAAC,EACdA,EAAM,0BAAgCixB,EAAcK,0BACpD/3B,KAAMgwB,KAAKlX,4EAAqFrS,EAAQ7E,GACnGmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBi2B,EAA6B9S,EAASnjB,KAE7C,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAcuCm2B,EAA8B,GACtE,IAGC,eAACT,GAAA,EAAD,CACI5X,MAAI,EAEJjF,GAAsB,GACtBC,GAAa,SAAToc,EAAkB,GAAK,EAC3Bnc,GAAa,SAATmc,EAAkB,EAAI,EAC1Blc,GAAa,SAATkc,EAAkB,EAAI,EAC1Bjc,GAAsB,EAP1B,SASI,gBAACqT,GAAA,EAAD,CACItW,UAAWP,EAAQX,KACnByd,QAAQ,EACR1b,QAAS,KArCjBjD,OAAO8B,KAAKmgB,EAAcpN,KAkCtB,YAKI,gBAACjS,GAAA,EAAD,CACIsN,EAAG,EACHxJ,cAAe,EAFnB,UAIMub,EAAcL,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClEA,MAAOkqB,KAGRH,EAAcL,qBAAyBK,EAAcnB,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACpGA,MAAO+pB,EAAcnB,iBAGtBmB,EAAcL,sBAA0BK,EAAcnB,eAAkB,eAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,SACvE,eAAC,KAAD,CAAkB9e,UAAWP,EAAQsf,aAEzC,gBAACve,GAAA,EAAD,CACIE,QAAS,OADb,UAGI,eAACF,GAAA,EAAD,CAAKsN,EAAG,IAAK6N,GAAI,EAAjB,SACI,eAAC9R,GAAA,EAAD,CACIzE,SAAS,QACTpF,UAAWP,EAAQqe,QAFvB,SAII,eAAC,KAAD,QAGR,eAACtd,GAAA,EAAD,CAAK+Y,GAAI,IAAT,SACI,eAACtZ,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KACRF,UAAWP,EAAQkf,SAHvB,SAKK,cAIb,eAACne,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQmf,UAHvB,SAKKiB,EAAcnzB,UAGvB,eAAC8T,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIC,QAAQ,UACRnU,MAAM,gBACNiU,UAAWP,EAAQvT,YAHvB,SAKK2zB,EAAc3zB,mBAI3B,eAAC0mB,GAAA,EAAD,QAnECiN,EAAcK,0BAH3B,ECrEJ,MAAMniB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF,sBAAuB,MAE3BshB,eAAgB,CACZ/J,UAAW,OACXjM,aAAc,OACdC,WAAY,OACZjC,YAAa,QAEjBiY,mBAAoB,CAChB7a,WAAY,OACZiC,WAAY,SACZ9G,eAAgB,SAChB2f,aAAc,UAElBC,mBAAoB,CAChBx0B,MAAO,gBAobAy0B,OAhb+B,IAavC,IAbwC,WAC3CzK,EAD2C,eAE3CJ,EAF2C,KAG3CuJ,EAH2C,MAI3CvwB,EAJ2C,SAK3CknB,EAL2C,aAM3C4K,EAN2C,cAO3CC,EAP2C,4BAQ3CC,EAR2C,QAS3CrT,EAT2C,aAU3CsT,EAV2C,qBAW3CC,EAX2C,aAY3C/K,GACE,EACF,MAAMrW,EAAU1B,MAGTtE,EAAOqnB,IAFDhW,eACEmB,eACWrM,mBAAkB,MACrCmhB,EAAQC,GAAaphB,mBAAkB,KACvCqhB,EAAcC,GAAmBthB,oBAAkB,IACnDuhB,EAAcC,GAAmBxhB,oBAAkB,GAC1D,IAAIyhB,EACJ,MAAO7pB,EAAO8pB,GAAY1hB,mBAAyB,KAC5C2hB,EAAeC,GAAoB5hB,mBAAiC,KACpE6hB,EAAaC,GAAkB9hB,oBAAkB,IACjD+hB,EAAqBC,GAA0BhiB,oBAAkB,IACjEiiB,EAAeC,GAAoBliB,oBAAkB,IACrDmiB,EAAeC,GAAoBpiB,oBAAkB,IACrDqiB,EAAcC,GAAmBtiB,oBAAkB,IACnDuiB,EAAsBC,GAA2BxiB,oBAAkB,GAEpEyiB,EAAoB,KACtBhB,EAASl5B,KAAMm6B,YAAYjB,SAC3B,IAAIzyB,EAAS,CAAC,EACV7E,EAAS,CAAEw4B,YAAalB,EAAOmB,OAEnC,QAAoCtL,IAAhCyJ,EAA2C,CAC3CG,EAAS,IACT,IAAInpB,EAAM,GAEN,gCAAiCgpB,GACjChpB,EAAM,oDACN/I,EAAM,4BAAkC+xB,EAA4B8B,6BAE/D,4BAA6B9B,IAC0B,IAAxDA,EAA4B+B,yBAC5B/qB,EAAM,4CACN/I,EAAM,oBAA0BmnB,EAAW4M,sBAG3ChrB,EAAM,gDACN/I,EAAM,wBAA8B+xB,EAA4B+B,2BAInD,IAAjBjC,IACA7xB,EAAM,QAAa,EACL,KAAVD,IACAC,EAAM,YAAkBD,GAE5BC,EAAM,QAAa,OACIsoB,IAAnBvB,GAAmD,OAAnBA,GAA8C,IAAnBA,IAEvD/mB,EAAM,SADa,IAAnB+mB,EACqB,kBAEG,IAAnBA,EACgB,UAEC,YAGlCxtB,KAAMgwB,KAAKlX,8BAAmCtJ,EAAK/I,EAAQ7E,GACtDmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAC3B,IAAIA,EAAgBmjB,EAASnjB,KAEzBA,EAAK4F,QAAU,EACfsxB,GAAgB,GAGhBA,GAAgB,GAEpBJ,EAAS92B,GACT83B,GAAiB,EACpB,CACJ,IACAnU,OAAM,SAAU/iB,GACbk3B,GAAiB,GAEb35B,KAAMy6B,SAASh4B,GACfD,QAAQ6nB,IAAI,kBAAmB5nB,EAAMR,UAGrCO,QAAQ6nB,IAAI,gCAER5nB,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAGtC,GACR,GAGC64B,EAAqB,KACvB,IAAIC,EAAsB,GAE1B,GAAI,gCAAiCnC,EACjC,IAAK,IAAIoC,KAAWpC,EAA4BqC,gCAC5CF,EAAW1zB,KAAK2zB,EAAQE,sBAG3B,GAAI,4BAA6BtC,EAClC,GAA4D,IAAxDA,EAA4B+B,8BAAoExL,IAAnCnB,EAAW4M,oBACxE,IAAK,IAAI5U,KAAWgI,EAAWmN,uBAC3B,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWH,gCAC3BF,EAAW1zB,KAAK2zB,EAAQE,sBAMpC,IAAK,IAAIE,KAAcxC,EAA4ByC,0BAC/C,IAAK,IAAIL,KAAWI,EAAWH,gCAC3BF,EAAW1zB,KAAK2zB,EAAQE,iBAKxCjC,EAAU8B,GACV1B,EAAgB0B,EAAWlzB,OAAS,GACpCoyB,GAAiB,EAAjB,EAGEqB,EAAoB,KACtB,IAAIC,EAA4B,GAChC,GAAI,gCAAiC3C,EACjC,IAAK,IAAIoC,KAAWpC,EAA4B4C,sCAC5CD,EAAUl0B,KAAK2zB,EAAQS,yBAG1B,GAAI,4BAA6B7C,EAClC,GAA4D,IAAxDA,EAA4B+B,8BAAoExL,IAAnCnB,EAAW4M,oBACxE,IAAK,IAAI5U,KAAWgI,EAAWmN,uBAC3B,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWI,sCAC3BD,EAAUl0B,KAAK2zB,EAAQS,yBAMnC,IAAK,IAAIL,KAAcxC,EAA4ByC,0BAC/C,IAAK,IAAIL,KAAWI,EAAWI,sCAC3BD,EAAUl0B,KAAK2zB,EAAQS,oBAKvClC,EAASgC,GACT5B,EAAe4B,EAAU1zB,OAAS,GAClCsyB,GAAgB,EAAhB,EAGEuB,EAA4B,KAC9B,IAAIC,EAA4C,GAChD,GAAI,gCAAiC/C,EACjC,IAAK,IAAIoC,KAAWpC,EAA4BgD,8CAC5CD,EAAkBt0B,KAAK2zB,EAAQa,iCAGlC,GAAI,4BAA6BjD,EAClC,GAA4D,IAAxDA,EAA4B+B,8BAAoExL,IAAnCnB,EAAW4M,oBACxE,IAAK,IAAI5U,KAAWgI,EAAWmN,uBAC3B,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWQ,8CAC3BD,EAAkBt0B,KAAK2zB,EAAQa,iCAM3C,IAAK,IAAIT,KAAcxC,EAA4ByC,0BAC/C,IAAK,IAAIL,KAAWI,EAAWQ,8CAC3BD,EAAkBt0B,KAAK2zB,EAAQa,4BAK/CpC,EAAiBkC,GACjB9B,EAAuB8B,EAAkB9zB,OAAS,GAClDwyB,GAAwB,EAAxB,EA0DEyB,EAAuB,CAAC/b,EAAmDnZ,KAC7E,IAAIm1B,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAC,EAFAC,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACOnN,IAAnBpP,EAAKuc,KACLJ,EAAanc,EAAKuc,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACrEH,EAAWn1B,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,EAwBJrlB,qBAAU,KACN,MAAM6lB,EAAY77B,YAAW,UACWyuB,IAAhCyJ,GAC4D,IAAxDA,EAA4B+B,yBAC5B7M,EAAS,IAtGrBiM,GAAiB,GACjBE,GAAiB,GACjBE,GAAgB,GAChBE,GAAwB,GACpB3B,GAAgBC,GAAiBE,GAAgBC,GACjDwB,IACAQ,IACAQ,IACAI,MAKKhD,GAAiBC,GAAkBE,GAAiBC,EAYnDJ,IAAgBC,GAAkBE,GAAiBC,EASnDJ,GAAiBC,IAAiBE,GAAiBC,EASnDJ,GAAiBC,GAAkBE,IAAgBC,IACzD4C,IACA/B,GAAe,GACfR,GAAgB,GAChBE,GAAgB,GAChBU,GAAiB,GACjBE,GAAiB,GACjBE,GAAgB,KAfhBmB,IACAnC,GAAgB,GAChBU,GAAuB,GACvBR,GAAgB,GAChBU,GAAiB,GACjBE,GAAiB,GACjBI,GAAwB,KAfxBS,IACAnB,GAAe,GACfE,GAAuB,GACvBV,GAAgB,GAChBY,GAAiB,GACjBI,GAAgB,GAChBE,GAAwB,KAlBxBC,IACAX,GAAe,GACfE,GAAuB,GACvBR,GAAgB,GAChBY,GAAiB,GACjBE,GAAgB,GAChBE,GAAwB,GAqFT,GAChB,KAEH,MAAO,IAAMmC,aAAaD,EAA1B,GACD,CAAC7D,EAAcC,EAAeE,EAAcC,EAAsBF,EAA6BhL,EAAgBI,EAAYpnB,IAE9H,MAAM61B,EAA6B,OAAXzD,EAAmB,GAlChB,EAACA,EAAiBpyB,IAClCoyB,EAAOnuB,QAAQ6xB,GACJZ,EAAqBY,EAAO91B,KAgCF+1B,CAAmB3D,EAAQpyB,GACrEg2B,EAA2B,OAAVntB,EAAkB,GA5Bf,EAACA,EAAuB7I,IACvC6I,EAAM5E,QAAQqsB,GACH4E,EAAqB5E,EAAMtwB,KA0BHi2B,CAAkBptB,EAAO7I,GACjEk2B,EAA2C,OAAlBtD,EAA0B,GAtBvB,EAACA,EAAuC5yB,IAC/D4yB,EAAc3uB,QAAQkyB,GACXjB,EAAqBiB,EAAcn2B,KAoBKo2B,CAA0BxD,EAAe5yB,GAEvG,OAAIkzB,GAAiBI,GAAgBF,GAAiBI,EAE9C,sBACInZ,MAAO,CAAE+I,SAAU,SAAU1H,WAAY,OAAQgM,UAAW,SAAU/R,cAAe,SAAU5D,QAAS,OAAQC,eAAgB,UADpI,SAEI,eAACqkB,GAAA,EAAD,CAAkBttB,KAAM,OAM5B,sBACIsR,MAAO,CAAE+I,SAAU,SAAU1H,WAAY,OAAQgM,UAAW,SAAU/R,cAAe,UADzF,SAEI,gBAAC9D,GAAA,EAAD,WACI,eAACA,GAAA,EAAD,CAAKsR,SAAU,IACf,gBAAC4N,GAAA,EAAD,CACI3G,WAAS,EACT3Z,QAAS,EAFb,UAIKqhB,GACGhnB,EAAMtM,KAAKuvB,GAEH,eAACgD,GAAA,EAAD,CACI5X,MAAI,EAEJjF,GAAsB,GACtBC,GAAa,SAAToc,EAAkB,GAAK,EAC3Bnc,GAAa,SAATmc,EAAkB,EAAI,EAC1Blc,GAAa,SAATkc,EAAkB,EAAI,EAC1Bjc,GAAsB,EAP1B,SASI,eAAC,GAAD,CACIkY,YAAauB,EACbb,YAAa9F,EAAWkP,gBACxB1X,WAAYD,EAAQC,cAVnBmP,EAAM/C,YAe1B+G,GAAiB8D,EAAer3B,KAAKs3B,GAE9B,eAAC/E,GAAA,EAAD,CACI5X,MAAI,EAEJjF,GAAsB,GACtBC,GAAa,SAAToc,EAAkB,GAAK,EAC3Bnc,GAAa,SAATmc,EAAkB,EAAI,EAC1Blc,GAAa,SAATkc,EAAkB,EAAI,EAC1Bjc,GAAsB,EAP1B,SASI,eAAC,GAAD,CACIsb,YAAakG,EACbnX,QAASA,KATRmX,EAAMS,eActBtE,GAAgB+D,EAAcx3B,KAAK8xB,GAE5B,eAAC,GAAD,CACIA,KAAMA,EACNC,KAAMA,MAIjB2B,GAAwBgE,EAAsB13B,KAAKslB,GAE5C,eAAC,GAAD,CACIoN,cAAepN,EACfyM,KAAMA,UAMpB+B,IAAiBE,IAAiBM,IAAgBE,GAChD,gBAAEnhB,GAAA,EAAF,CACIG,eAAe,SACfD,QAAQ,OACRoR,SAAU,EACVtM,WAAW,OAJf,UAMI,eAAChF,GAAA,EAAD,CACIG,eAAe,SACfD,QAAQ,OAFZ,SAII,eAACmJ,GAAA,EAAD,CACIzE,SAAS,QACTpF,UAAWP,EAAQ8gB,mBAFvB,SAII,eAAC,KAAD,QAGR,eAAC/f,GAAA,EAAD,CACIG,eAAe,SACfD,QAAQ,OAFZ,SAII,eAACT,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAII,eAAC,KAAD,CAAkBlD,GAAG,4DAG7B,eAAC2X,GAAA,EAAD,CACIG,eAAe,SACfD,QAAQ,OAFZ,SAII,eAACT,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAII,eAAC,KAAD,CAAkBlD,GAAG,kEAQpD,EC1dL,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF0G,WAAY,UACZuD,YAAa,OACb0L,aAAc,UAElB0Q,SAAU,CACNzkB,QAAS,QACT8E,WAAY,SACZuD,YAAa,OACbzN,MAAO,UACPD,OAAQ,UACRnD,gBAAiB,WAErBiS,SAAU,CACNC,aAAc,SACd,MAAO,CACHrB,YAAa,OACb,SAAU,CACN,SAAU,CACNsB,WAAY,aAK5B+a,UAAW,CACPhgB,SAAU,OACV0M,SAAU,OAqBZuT,GAAiBC,aAAW,CAC9BxmB,KAAM,CACFwF,cAAe,OACf,2DAA4D,CACxDvY,MAAO,UACP2uB,QAAS,KAEb3uB,MAAO,UACPsZ,WAAY,KAEhBuI,QAAS,CACL/I,cAAe,eAEnBhQ,MAAO,CACH9I,MAAO,UACPwX,cAAe,OACf8B,WAAY,IACZC,WAAY,KAjBGggB,CAoBpBtI,MAsPYuI,OApPuC,IAenC,IAfoC,UACnDvlB,EADmD,eAEnD2V,EAFmD,kBAGnDC,EAHmD,MAInDjnB,EAJmD,SAKnDknB,EALmD,aAMnD4K,EANmD,cAOnDC,EAPmD,uBAQnDwC,EARmD,WASnDnN,EATmD,QAUnDzI,EAVmD,UAWnDkY,EAXmD,aAYnD1P,EAZmD,aAanD8K,EAbmD,qBAcnDC,KACGlY,GAAW,EACd,IAAI8c,EAAa,EACjB,MAAOC,EAAcC,GAAmB/lB,mBAAqD,CAAE8iB,wBAAyB,EAAGC,oBAAqB,EAAGx5B,KAAM,GAAIi6B,0BAA2B,GAAIwC,sBAAuB,QAC5MC,EAAYC,GAAiBlmB,mBAA6B,CAAE8iB,wBAAyB,EAAGC,oBAAqB,EAAGx5B,KAAM,GAAIi6B,0BAA2B,GAAIwC,sBAAuB,QAChLG,EAAUC,GAAeC,IAAMrmB,SAAS,KACxCsmB,EAAUC,GAAevmB,mBAAiB,MAC1CwmB,EAAwCC,GAA6CzmB,mBAAmB,KACxG0mB,GAAe1mB,mBAAiB,SAChC2mB,GAAiB3mB,mBAAiB,UAEzChW,eAAe48B,IACXf,GACH,CAED,MAuCMgB,EAA+B,CAACvD,EAA8CzjB,IAEzEyjB,EAAuB/1B,KAAI4gB,IAC9B,IAAIjH,EAEAiH,EAAQqV,2BAA6BrV,EAAQqV,0BAA0BxzB,OAAS,IAChFkX,EA7C4B,EAAC4f,EAAoDjnB,IAClFinB,EAA0Bv5B,KAAIw5B,IACjCH,IAEA,IAAI39B,EAAa,CAAE+9B,OAAQ,EAAGC,UAAW,EAAGC,gCAAgC,GAE5Ej+B,EAAG+9B,OAASnB,EACZ58B,EAAGg+B,UAAYF,EAAWlE,4BAC1B55B,EAAGi+B,gCAAiC,EAGpC,IAAIC,GAAyB,EAS7B,OARAX,EAAuCj5B,KAAIsP,IACnCA,EAAMmqB,SAAW/9B,EAAG+9B,SACpBG,GAAyB,EAC5B,IAEAA,GACDX,EAAuCh3B,KAAKvG,GAG5C,eAACw8B,GAAD,CAEIpI,OAAQwI,EAAWvI,WACnBroB,MACI,eAACoL,GAAA,EAAD,CACIC,QAAQ,YACRF,UAAWP,EAAQ2lB,UAFvB,SAIKuB,EAAWx9B,OAGpB2d,cAAUoQ,EACVlX,UAAWP,EAAQ0K,UAXdsb,EAFb,IAyBeuB,CAAgCjZ,EAAQqV,0BAA2B3jB,IAElF+mB,IAEA,IAAI39B,EAAa,CAAE+9B,OAAQ,EAAGC,UAAW,EAAGC,gCAAgC,GAC5Ej+B,EAAG+9B,OAASnB,EACZ58B,EAAGg+B,UAAY9Y,EAAQ2U,wBACvB75B,EAAGi+B,gCAAiC,EAEpC,IAAIC,GAAyB,EAU7B,OATAX,EAAuCj5B,KAAIsP,IACnCA,EAAMmqB,SAAW/9B,EAAG+9B,SACpBG,GAAyB,EAC5B,IAEAA,GACDX,EAAuCh3B,KAAKvG,GAI5C,eAACw8B,GAAD,CAEIpI,OAAQwI,EAAWvI,WACnBroB,MACI,eAACoL,GAAA,EAAD,CACIC,QAAQ,YACRF,UAAWP,EAAQ2lB,UAFvB,SAIKrX,EAAQ5kB,OAGjB2d,SAAUA,EACV9G,UAAWP,EAAQ0K,SACnB1K,QAAS,CACL5K,MAAO4K,EAAQ5K,QAbd4wB,EAFb,IAsBFwB,EAAuBta,IACzB,IAAIua,EAA6Bd,EAAuCl8B,MAAK64B,GAAWA,EAAQ6D,SAAWO,SAASxa,KAEpH,GAAY,MAARA,EACAgZ,EAAgBE,QAGf,GAAKqB,EAA2BJ,+BAahC,CACD,IAAIM,EAA6BlE,EAAuBh5B,MAAK64B,GAAWA,EAAQL,0BAA4BwE,EAA2BL,YACvIlB,EAAgByB,EACnB,MAdGlE,EAAuB/1B,KAAI4gB,IACvB,GAAIA,EAAQqV,2BAA6BrV,EAAQqV,0BAA0BxzB,OAAS,EAAG,CAEnF,IAAIy3B,EAAuDtZ,EAAQqV,0BAA0Bl5B,MAAK64B,GAAWA,EAAQN,8BAAgCyE,EAA2BL,iBAE1I3P,IAAlCmQ,GACA1B,EAAgB0B,EAEvB,IAMR,EAICC,EAAe,CAACv6B,EAAO4f,KACzBmJ,GAAa,GACbqQ,EAAYxZ,GACZsa,EAAoBta,EAApB,EAEE9D,EAAe,CAAC9b,EAAOw6B,KACzBvB,EAAYuB,EAAZ,EAGJ9oB,qBAAU,MACY,IAAd+mB,IACAW,EAAY,KACZc,EAAoB,KACpBpR,EAASlnB,GACZ,GACF,CAAC62B,IAEJ/mB,qBAAU,KACN4nB,EAA0C,GAA1C,GACD,CAACtQ,IAEJ,MAAMtW,EAAU1B,KAChB,GAAKmlB,EAAuBtzB,OAAS,GAAyC,IAAlCszB,EAAuBtzB,QAAgBszB,EAAuB,GAAGE,0BAA0BxzB,QAAU,EAC7I,OACI,eAAC,GAAD,CACImmB,WAAYA,EACZ4K,4BAA6BkF,EAC7BvY,QAASA,EACTwI,aAAcA,EACd2K,aAAcA,EACdC,cAAeA,EACf/xB,MAAOA,EACPuwB,KAAMqH,EACN1Q,SAAUA,EACVF,eAAgBA,EAChBiL,aAAcA,EACdC,qBAAsBA,IAK7B,CACD,IAAIh4B,EAAa,CAAE+9B,OAAQ,EAAGC,UAAW,EAAGC,gCAAgC,GAE5E,IAAIC,GAAyB,EAS7B,OARAX,EAAuCj5B,KAAIsP,IACnCA,EAAMmqB,SAAW/9B,EAAG+9B,SACpBG,GAAyB,EAC5B,IAEAA,GACDX,EAAuCh3B,KAAKvG,GAG5C,iCACI,sBAAKmgB,MAAO,CAAEiS,MAAO,OAAQ5E,UAAW,OAAQ7Q,WAAY,OAAQuD,YAAa,OAAQ0L,aAAc,UAAvG,SACI,gBAACmI,GAAA,EAAD,CACIC,oBAAqB,eAAC,KAAD,IACrBC,kBAAmB,eAAC,KAAD,IACnB9c,UAAWP,EAAQ0lB,SACnBe,SAAUA,EACVH,SAAUA,EACVyB,aAAc3e,EACd4e,aAAcH,EAPlB,UASI,eAACjC,GAAD,CAEIpI,OAAQ,IACRpoB,MACI,eAACoL,GAAA,EAAD,CACIC,QAAQ,YACRF,UAAWP,EAAQ2lB,UAFvB,SAIK,SAGTplB,UAAWP,EAAQ0K,UAVd,GAYRsc,EAA6BvD,EAAwBzjB,QAI9D,eAAC,GAAD,CACIsW,WAAYA,EACZ4K,4BAA6B+E,EAC7BpY,QAASA,EACTwI,aAAcA,EACd2K,aAAcA,EACdC,cAAeA,EACf/xB,MAAOA,EACPuwB,KAAMoH,EACNzQ,SAAUA,EACVF,eAAgBA,EAChBiL,aAAcA,EACdC,qBAAsBA,MAKrC,G,wFCzRL,MAAM9iB,GAAYC,aAAW,MACzBc,KAAM,CAAC,EACP5P,QAAS,CACLmnB,UAAW,UAEf3D,QAAS,CACL2D,UAAW,OACXhM,WAAY,OACZjC,YAAa,OACbgC,aAAc,SACd9K,OAAQ,GAEZooB,eAAgB,CACZrR,UAAW,OACXhM,WAAY,OACZjC,YAAa,OACbgC,aAAc,OACd9K,OAAQ,GAEZpT,YAAa,CACTmqB,UAAW,SACXjM,aAAc,UAElBud,iBAAkB,CACdvd,aAAc,SACdwd,OAAQ,KAEZC,UAAW,CACPzd,aAAc,SACdwd,OAAQ,KAEZE,aAAc,CACV1d,aAAc,SACdwd,OAAQ,KAEZG,MAAO,CACHztB,KAAM,OACNE,IAAK,OACL6P,WAAY,QAEhB2d,UAAW,CACPtnB,QAAS,OACT0J,aAAc,QAElB6d,UAAW,CACPvnB,QAAS,OACT0J,aAAc,QAElB8d,UAAW,CACPxnB,QAAS,OACT0J,aAAc,QAElB+d,QAAS,CACLznB,QAAS,OACT0J,aAAc,QAElBoG,UAAW,CACPnG,WAAY,QAEhB+d,OAAQ,CACJ/d,WAAY,QAEhBge,OAAQ,CACJhe,WAAY,QAEhBtV,KAAM,CACFsV,WAAY,QAEhBie,YAAa,CACT5nB,QAAS,OACT0J,aAAc,QAElBme,WAAY,CACR7nB,QAAS,OACT0J,aAAc,QAElBoe,YAAa,CACT9nB,QAAS,OACT0J,aAAc,QAElBqe,aAAc,CACV/nB,QAAS,OACT0J,aAAc,QAElBse,QAAS,CACLre,WAAY,YAsRLse,OAlR+C,IAAmC,IAAlC,QAAErb,EAAF,gBAAWsb,GAAsB,EAC5F,MAAMnpB,EAAU1B,KACDkO,eAEf,OACI,gBAACyT,GAAA,EAAD,CAAM3G,WAAS,EAAC3Z,QAAS,EAAzB,UACI,gBAACsgB,GAAA,EAAD,CAAM5X,MAAI,EAACjF,GAAI,EAAf,UACI,eAACyT,GAAA,EAAD,CACItW,UAAWP,EAAQvT,YADvB,SAGI,gBAACysB,GAAA,EAAD,WACI,eAAC1Y,GAAA,EAAD,CACIlU,MAAM,cACNmU,QAAQ,KACRF,UAAWP,EAAQkoB,iBAHvB,SAKI,eAAC,KAAD,CAAkB9+B,GAAG,wEAEzB,eAAC+pB,GAAA,EAAD,CAAS5S,UAAWP,EAAQiT,UAC5B,eAACzS,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cAFV,SAIK68B,GAAmBA,EAAgBC,gCAIhD,eAACvS,GAAA,EAAD,UACI,gBAACqC,GAAA,EAAD,WACI,eAAC1Y,GAAA,EAAD,CACIlU,MAAM,cACNmU,QAAQ,KACRF,UAAWP,EAAQooB,UAHvB,SAKI,eAAC,KAAD,CAAkBh/B,GAAG,kEAEzB,eAAC+pB,GAAA,EAAD,CAAS5S,UAAWP,EAAQiT,UAC5B,eAACgN,GAAA,EAAD,CACI3G,WAAS,EACT3Z,QAAS,EAFb,SAIKwpB,GAAmBA,EAAgBE,wBAAwB37B,KAAKslB,GAEzD,gBAACiN,GAAA,EAAD,CACI5X,MAAI,EAEJjF,GAAI,GACJC,GAAI,GACJC,GAAI,EALR,UAQQ0P,EAAKlR,MACL,eAACpB,GAAA,EAAD,CACIG,KAAMmS,EAAKA,KACXvS,QAAQ,QAFZ,SAIKuS,GAAQA,EAAKlR,QAIjBkR,EAAKlR,MACN,eAACpB,GAAA,EAAD,CACIG,KAAMmS,EAAKA,KACXvS,QAAQ,QAFZ,SAIKuS,GAAQA,EAAKA,SApBjBA,EAAKsW,wCA+BtC,eAACrJ,GAAA,EAAD,CAAM5X,MAAI,EAACjF,GAAI,EAAf,SACI,gBAACyT,GAAA,EAAD,CACItW,UAAWP,EAAQvQ,QADvB,UAGI,gBAACypB,GAAA,EAAD,WACI,eAAC1Y,GAAA,EAAD,CACIlU,MAAM,cACNmU,QAAQ,KACRF,UAAWP,EAAQqoB,aAHvB,SAKI,eAAC,KAAD,CAAkBj/B,GAAG,oEAEzB,eAAC+pB,GAAA,EAAD,CAAS5S,UAAWP,EAAQiT,UAE5B,gBAAClS,GAAA,EAAD,CACIR,UAAWP,EAAQuoB,UADvB,UAGI,eAACne,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACkU,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQ+Q,UAHvB,SAKKoY,GAAmBA,EAAgBpY,eAI5C,gBAAChQ,GAAA,EAAD,CACIR,UAAWP,EAAQwoB,UADvB,UAGI,eAACpe,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACkU,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQ2oB,OAHvB,SAKKQ,GAAmBA,EAAgBI,sBAI3CJ,GAAmBA,EAAgBK,kBAChC,gBAACzoB,GAAA,EAAD,CACIR,UAAWP,EAAQyoB,UADvB,UAGI,eAACre,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACkU,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQ4oB,OAHvB,SAKKO,GAAmBA,EAAgBK,sBAIhD,gBAACzoB,GAAA,EAAD,CACIR,UAAWP,EAAQ0oB,QADvB,UAGI,eAACte,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACkU,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQ1K,KAHvB,SAKK6zB,GAAmBA,EAAgB3/B,cAIhD,eAAC2pB,GAAA,EAAD,CAAS5S,UAAWP,EAAQioB,iBAC5B,gBAAC/O,GAAA,EAAD,WACKiQ,GAAmBA,EAAgBM,kBAChC,gBAAC1oB,GAAA,EAAD,CACIR,UAAWP,EAAQ6oB,YADvB,UAGI,eAACze,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACoU,GAAA,EAAD,CACIG,KAAMsoB,EAAgBM,iBACtBhpB,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQipB,QAJvB,yBAWPE,GAAmBA,EAAgBM,kBAChC,gBAAC1oB,GAAA,EAAD,CACIR,UAAWP,EAAQ6oB,YADvB,UAGI,eAACze,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACoU,GAAA,EAAD,CACIG,KAAMsoB,EAAgBO,QACtBjpB,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQipB,QAJvB,oBAWPE,GAAmBA,EAAgBQ,iBAChC,gBAAC5oB,GAAA,EAAD,CACIR,UAAWP,EAAQ8oB,WADvB,UAGI,eAAC1e,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACoU,GAAA,EAAD,CACIG,KAAMsoB,EAAgBQ,gBACtBlpB,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQipB,QAJvB,wBAUPE,GAAmBA,EAAgBS,kBAChC,gBAAC7oB,GAAA,EAAD,CACIR,UAAWP,EAAQ+oB,YADvB,UAGI,eAAC3e,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACoU,GAAA,EAAD,CACIG,KAAMsoB,EAAgBS,iBACtBnpB,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQipB,QAJvB,yBAUPE,GAAmBA,EAAgBU,mBAChC,gBAAC9oB,GAAA,EAAD,CACIR,UAAWP,EAAQgpB,aADvB,UAGI,eAAC5e,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAACoU,GAAA,EAAD,CACIG,KAAMsoB,EAAgBU,kBACtBppB,QAAQ,QACRnU,MAAM,cACNiU,UAAWP,EAAQipB,QAJvB,oCA7P5B,EClHJ,MAAM3qB,GAAYC,aAAW,MACzBc,KAAM,CAAC,EACPyqB,IAAK,CACDlf,WAAY,QAEhB4N,KAAM,CACF5N,WAAY,QAEhBqI,QAAS,CACL2D,UAAW,OACXhM,WAAY,OACZjC,YAAa,OACb9I,OAAQ,GAEZkqB,WAAY,CACRnf,WAAY,OACZlM,OAAQ,GAEZsrB,MAAO,CACHpT,UAAW,cAgHJqT,OA5G+C,IAAoE,IAAnE,mBAAEC,EAAF,QAAsBrc,EAAtB,YAA+B0K,EAA/B,gBAA4C4Q,GAAsB,EAC7H,MAAO7S,EAAY6T,GAAiBhqB,mBAAyB+pB,EAAmB,KACzEnE,EAAW1P,GAAgBlW,oBAAkB,IAC7CjR,EAAOknB,GAAYjW,mBAAiB,KACpC6gB,EAAc1L,GAAmBnV,oBAAkB,IACnD8gB,EAAe5L,GAAoBlV,oBAAkB,GACtDH,EAAU1B,MACT4X,EAAgBC,GAAqBhW,mBAAiB,IACtDghB,EAAc5L,GAAmBpV,oBAAkB,IACnDihB,EAAsB5L,GAA2BrV,oBAAkB,GAa1E,OANAnB,qBAAU,KACNmrB,EAAcD,EAAmB,IACjC9T,EAAS,IACTC,GAAa,EAAb,GACD,CAACxI,IAGA,uBAAKtE,MAAO,CAAExO,IAAK,SAAU4N,YAAa,OAAQiC,WAAY,QAA9D,UACI,sBAAKrB,MAAO,CAAExO,IAAK,SAAUc,MAAO,QAApC,SACI,eAACuuB,GAAA,EAAD,CACI/S,SAfS,CAAC/pB,EAAwB+8B,KAC9CF,EAAcD,EAAmBz/B,MAAKq/B,GAAOA,EAAIpgC,OAAS2gC,KAC1DhU,GAAa,EAAb,EAcYiU,cAAc,OACdp5B,MAAOolB,EAAW5sB,KAClB+W,QAAQ,aACR8pB,UAAU,UACVC,eAAe,UANnB,SAQKN,GAAsBA,EAAmBx8B,KAAKo8B,IACL,IAArCA,EAAIW,+BACgB,MAAjBX,EAAIY,UAAqC,MAAjBZ,EAAIY,UAC5B,eAACC,GAAA,EAAD,CAEIv1B,MAAO00B,EAAIpgC,KACXwH,MAAO44B,EAAIpgC,KACX6W,UAAWP,EAAQ8pB,KAHdA,EAAIpgC,OAKO,MAAjBogC,EAAIY,UACP,eAACC,GAAA,EAAD,CAEIv1B,MAAO00B,EAAIpgC,KACXwH,MAAO44B,EAAIpgC,KACXuY,SAA2B,KAAhBsW,QAAsCd,IAAhBc,GAA6C,OAAhBA,EAC9DhY,UAAWP,EAAQ+pB,YAJdD,EAAIpgC,OAMO,MAAjBogC,EAAIY,UACP,eAACC,GAAA,EAAD,CAEIv1B,MAAO00B,EAAIpgC,KACXwH,MAAO44B,EAAIpgC,KACX6W,UAAWP,EAAQ8pB,KAHdA,EAAIpgC,aAS7B,eAACypB,GAAA,EAAD,CAAS5S,UAAWP,EAAQiT,UACH,MAAxBqD,EAAWoU,UAA4C,MAAxBpU,EAAWoU,WAAiE,IAA5CpU,EAAWmU,8BACvE,eAAC,GAAD,CACIpU,aAAcA,EACdf,gBAAiBA,EACjBD,iBAAkBA,EAClBnmB,MAAOA,EACPknB,SAAUA,EACVF,eAAgBA,EAChBC,kBAAmBA,EACnBZ,gBAAiBA,EACjBC,wBAAyBA,EACzBc,WAAYA,IAGK,MAAxBA,EAAWoU,UAA4C,MAAxBpU,EAAWoU,WAAiE,IAA5CpU,EAAWmU,8BACvE,eAAC,GAAD,CACIhH,uBAAwBnN,EAAWmN,uBACnCnN,WAAYA,EACZzI,QAASA,EACTwI,aAAcA,EACd0P,UAAWA,EACX/E,aAAcA,EACdC,cAAeA,EACf/xB,MAAOA,EACPknB,SAAUA,EACVF,eAAgBA,EAChBC,kBAAmBA,EACnBgL,aAAcA,EACdC,qBAAsBA,IAGL,MAAxB9K,EAAWoU,WAAiE,IAA5CpU,EAAWmU,8BACxC,eAAC,GAAD,CACIlS,YAAaA,IAGI,MAAxBjC,EAAWoU,UAAoBvB,IAAgE,IAA5C7S,EAAWmU,8BAC3D,eAAC,GAAD,CACI5c,QAASA,EACTsb,gBAAiBA,MA/EjC,ECrDJ,MAAM7qB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFgT,SAAU,GAEduY,WAAY,CACRjiB,YAAavJ,EAAMO,QAAQ,IAE/BkrB,cAAe,CACXhvB,MAAO,QACPD,OAAQ,QACRtI,SAAU,WACV2N,QAAS,QACT6T,UAAW,oCACX7O,WAAY,OACZvB,aAAc,MACdkG,WAAY,UACZgM,UAAW,SAEftF,QAAS,CACLjM,UAAW,IACX2C,WAAY,aACZnD,cAAezF,EAAMO,QAAQ,GAC7B/D,OAAQ,SAEZkvB,cAAe,CACXlvB,OAAQ,UAGZ3O,MAAO,CACHolB,SAAU,EACV0Y,UAAW,YAGf5kB,MAAO,CACHxH,QAASS,EAAMO,QAAQ,GACvBqrB,UAAW,SACX1+B,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9BipB,YAAa,CACTD,UAAW,SACXpgB,WAAY,QAEhBsgB,aAAc,CACVF,UAAW,OACXpgB,WAAY,UAEhBugB,mBAAoB,CAChBH,UAAW,QACXriB,YAAa,MACbiO,UAAW,SAEfwU,WAAY,CACR93B,SAAU,YAEd+3B,aAAc,CACVxvB,MAAO,OACPD,OAAQ,OACRqF,QAAS,eACTqqB,eAAgB,QAChB5mB,aAAc,MACdX,OAAQ,kBAEZwnB,YAAa,CACT1vB,MAAO,OACPD,OAAQ,YAqED4vB,OAjE6B,IAGrC,IAHsC,QACzC3d,EADyC,gBAEzCsb,GACE,EACF,MAAMnpB,EAAU1B,KAChB,OACI,uBAAKiC,UAAWP,EAAQX,KAAxB,UACI,sBAAKkB,UAAWP,EAAQsR,QAAxB,SACI,sBAAK/Q,UAAWP,EAAQurB,YAAa3pB,IAAKiM,EAAQ4d,iBAAkBC,IAAI,WAE5E,sBAAKnrB,UAAWP,EAAQorB,WAAxB,SACI,uBAAK7qB,UAAWP,EAAQ6qB,cAAxB,UACK1B,GAAmBA,EAAgBO,SAChC,oBAAG7oB,KAAMsoB,EAAgBO,QAAS5oB,OAAO,SAAzC,SACI,sBACIP,UAAWP,EAAQqrB,aACnBK,IAAI,cACJ9pB,IAAKiM,EAAQG,SAIxBmb,IAAoBA,EAAgBO,SACjC,sBACInpB,UAAWP,EAAQqrB,aACnBK,IAAI,cACJ9pB,IAAKiM,EAAQG,QAGnBmb,GACE,sBACI5oB,UAAWP,EAAQqrB,aACnBK,IAAI,cACJ9pB,IAAKiM,EAAQG,YAK7B,sBAAKzN,UAAWP,EAAQ8qB,cAAxB,SACI,gBAAC7K,GAAA,EAAD,CAAM3G,WAAS,EAAC3Z,QAAS,EAAzB,UACI,eAACsgB,GAAA,EAAD,CAAM5X,MAAI,EAACjF,GAAI,EAAf,SACI,+BACI,eAAC6c,GAAA,EAAD,CAAM3G,WAAS,EAAC3Z,QAAS,EAAzB,SACI,eAACsgB,GAAA,EAAD,CAAM5X,MAAI,EAACjF,GAAI,GAAf,SACI,sBAAK7C,UAAWP,EAAQirB,YAAxB,SACI,sBAAK1qB,UAAWP,EAAQkrB,aAAxB,SACI,gBAAC1qB,GAAA,EAAD,CAAYG,UAAU,MAAtB,UACI,eAACI,GAAA,EAAD,CAAK4E,SAAS,OAAOG,cAAe,EAAGU,WAAW,oBAAoBla,MAAM,UAA5E,SACI,eAAC,KAAD,CAAkBlD,GAAG,4DAEzB,eAAC2X,GAAA,EAAD,CAAK6E,WAAW,iBAAiBD,SAAS,cAAcG,cAAe,GAAKU,WAAW,oBAAvF,SACKqH,EAAQnkB,sBASzC,eAACu2B,GAAA,EAAD,CAAM5X,MAAI,EAACjF,GAAI,WAtD/B,E,+BCtEJ,MAAM9E,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CACFgT,SAAU,GAEdsZ,OAAQ,CACJlzB,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1CvB,UAAW,OACX9E,OAAQT,EAAMS,OAAO0K,OACrB7L,OAAQ,OACR7C,MAAO,QAEXoiB,aAAc,CACVrT,WAAY,OACZ/O,MAAO,OACPpD,gBAAiB,UACjBnM,MAAO8S,EAAME,QAAQ2G,WAAWC,SAEpC0lB,YAAa,CACTnzB,gBAAiB2G,EAAME,QAAQ2G,WAAWC,SAE9C2lB,WAAY,CACRjhB,WAAY,OACZjC,aAAc,IAElB4B,OAAQ,CACJ9R,gBAAiB2G,EAAME,QAAQ2G,WAAWC,SAE9C4lB,aAAc,CACVrzB,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1C5Z,MAAO,UACPsqB,UAAW,QA2DRmV,OAtDmC,IAAmC,IAAlC,gBAAE5C,EAAF,QAAmBtb,GAAc,EAChF,MAAM7N,EAAU1B,KAEhB,OACI,sBAAKiC,UAAWP,EAAQX,KAAxB,SACI,eAAC0S,GAAA,EAAD,CAAQze,SAAS,SAASiN,UAAWP,EAAQuK,OAA7C,SACI,gBAAC2H,GAAA,EAAD,CAAS3R,UAAWP,EAAQ2rB,OAA5B,UACKxC,GAAmBA,EAAgBO,QAE5B,oBAAG7oB,KAAMsoB,EAAgBO,QAAS5oB,OAAO,SAAzC,SACI,sBACIyI,MAAO,CAAE1N,MAAO,SAChB6vB,IAAI,OACJ9pB,IAAKiM,EAAQme,gBAIrB,sBACIziB,MAAO,CAAE1N,MAAO,SAChB6vB,IAAI,OACJ9pB,IAAKiM,EAAQme,cAIzB,uBAAKzrB,UAAWP,EAAQ6rB,WAAxB,UACI,oBAAGtiB,MAAO,CAAE+Q,eAAgB,QAAUzZ,KAAK,gCAA3C,SACI,eAACM,GAAA,EAAD,CACIV,QAAQ,YACRF,UAAWP,EAAQ4rB,YACnBt/B,MAAM,WACN2/B,UACI,eAAC7hB,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,MANZ,SAUI,eAAC,KAAD,CAAkBvc,GAAG,8DAG7B,oBAAGmgB,MAAO,CAAE+Q,eAAgB,QAAUzZ,KAAK,wCAA3C,SACI,eAACM,GAAA,EAAD,CAAQZ,UAAWP,EAAQie,aAAcxd,QAAQ,YAAjD,SACI,eAAC,KAAD,CAAkBrX,GAAG,oEAIjC,eAAC2X,GAAA,EAAD,CAAKqR,GAAI,EAAG7R,UAAWP,EAAQ8rB,aAA/B,SACI,eAACI,GAAA,EAAD,YA3CpB,E,UC/BJ,MAAM5tB,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CACFgT,SAAU,EACV/e,SAAU,WACVuH,KAAM,EACNG,OAAQ,EACRF,MAAO,GAEX6wB,OAAQ,CACJlzB,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1CvB,UAAW,OACX9E,OAAQT,EAAMS,OAAOwT,OAAS,IAC9B3U,OAAQ,OACR7C,MAAO,QAEXoiB,aAAc,CACVrT,WAAY,OACZ/O,MAAO,OACPpD,gBAAiB,UACjBnM,MAAO8S,EAAME,QAAQ2G,WAAWC,SAEpC0lB,YAAa,CACT/vB,MAAO,OACPpD,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1C5Z,MAAO,WAEXu/B,WAAY,CACRjhB,WAAY,QAEhBL,OAAQ,CACJ9R,gBAAiB2G,EAAME,QAAQ2G,WAAWC,SAE9CimB,MAAO,CACHxjB,YAAa,YAkFVyjB,OA7EiB,IAAmC,IAAlC,gBAAEjD,EAAF,QAAmBtb,GAAc,EAC9D,MAAM7N,EAAU1B,KACVc,EAAQitB,eACRhI,EAAUiI,aAAcltB,EAAM8D,YAAYqpB,KAAK,OAC7BD,aAAcltB,EAAM8D,YAAYqpB,KAAK,OAE7D,OACI,sBAAKhsB,UAAWP,EAAQX,KAAxB,SACI,eAAC0S,GAAA,EAAD,CAAQze,SAAS,SAASiN,UAAWP,EAAQuK,OAA7C,SACI,gBAAC2H,GAAA,EAAD,CAAS3R,UAAWP,EAAQ2rB,OAA5B,UACI,eAAC5qB,GAAA,EAAD,CAAKE,QAASojB,EAAU,OAAS,QAAjC,SACI,eAACmI,GAAA,EAAD,CAAY3e,QAASA,EAASsb,gBAAiBA,MAEnD,gBAACpoB,GAAA,EAAD,CAAKR,UAAWP,EAAQ6rB,WAAxB,UACK1C,GAAmBA,EAAgBM,kBAChC,oBAAG5oB,KAAMsoB,EAAgBM,iBAAkB3oB,OAAO,SAAlD,SACI,eAACsJ,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SACNiU,UAAWP,EAAQmsB,MAHvB,SAKI,eAAC,KAAD,QAIXhD,GAAmBA,EAAgBO,SAChC,oBAAG7oB,KAAMsoB,EAAgBO,QAAS5oB,OAAO,SAAzC,SACI,eAACsJ,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SACNiU,UAAWP,EAAQmsB,MAHvB,SAKI,eAAC,KAAD,QAIXhD,GAAmBA,EAAgBS,kBAChC,oBAAG/oB,KAAMsoB,EAAgBS,iBAAkB9oB,OAAO,SAAlD,SACI,eAACsJ,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SACNiU,UAAWP,EAAQmsB,MAHvB,SAKI,eAAC,KAAD,QAIXhD,GAAmBA,EAAgBQ,iBAChC,oBAAG9oB,KAAMsoB,EAAgBQ,gBAAiB7oB,OAAO,SAAjD,SACI,eAACsJ,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SACNiU,UAAWP,EAAQmsB,MAHvB,SAKI,eAAC,KAAD,QAIXhD,GAAmBA,EAAgBU,mBAChC,oBAAGhpB,KAAMsoB,EAAgBU,kBAAmB/oB,OAAO,SAAnD,SACI,eAACsJ,GAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SACNiU,UAAWP,EAAQmsB,MAHvB,SAKI,eAAC,KAAD,iBA3DhC,E,4CCrDJ,MAAM7tB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPgU,OAAQ,CACJxX,MAAO,OACPgE,OAAQT,EAAMS,OAAOwT,OACrB5a,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CmqB,UAAW,CACPnjB,YAAa,GAGjBojB,SAAU,CACNj0B,gBAAiB2G,EAAME,QAAQ0C,UAAUI,KACzCvG,MAAO,OACPD,OAAQ,OACR8I,aAAc,MACdsmB,UAAW,SACXpU,UAAW,QAEf+V,SAAU,CACNrgC,MAAO8S,EAAME,QAAQsD,KAAK,IAC1B4D,WAAY,cA0ELomB,OAtEqC,IAK7C,IAL8C,OACjDpd,EADiD,QAEjDV,EAFiD,YAGjDyJ,EAHiD,YAIjD6D,GACE,EACF,MAAMpc,EAAU1B,KAMhB,OACI,eAACsQ,GAAA,EAAD,CACI5O,QAAS,CAAEmG,MAAOnG,EAAQqT,QAC1BxE,OAAO,OACP5O,KAAMuP,EAHV,SAII,gBAACqd,GAAA,EAAD,WACI,gBAAC9rB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAO+G,WAAW,SAASwP,SAAS,OAAxD,UACI,eAACpG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQysB,UAAWrrB,QAXtC,KAChB0N,GAAS,EAUG,SACI,eAAC1E,GAAA,EAAD,UACI,eAAC,KAAD,QAGR,eAAC5J,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAGK8vB,EAAY0Q,kBAGrB,gBAAC/rB,GAAA,EAAD,CAAKC,GAAI,EAAT,UACI,eAACR,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,kBAKA,eAACyU,GAAA,EAAD,CAAKR,UAAWP,EAAQ0sB,SAAxB,SACI,eAAC3rB,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CAAYC,QAAQ,KAAKF,UAAWP,EAAQ2sB,SAA5C,sBAKR,eAAC5rB,GAAA,EAAD,CAAK6V,UAAU,OAAf,SACI,eAACpW,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,yCAOR,eAACyU,GAAA,EAAD,UACI,yBACI3X,GAAG,4BACHwY,IAAK,yKAA2K2W,EAChLhP,MAAO,CAAE1N,MAAO,OAAQD,OAAQ,OAAQiJ,cAAe,SAAUkB,WAAY,SAAUiP,aAAc,SAAU1L,YAAa,UAC5HuP,iBAAiB,EACjBC,YAAY,IACZC,SAAS,QACTC,WAAS,EACTC,SAAS,wCAhD7B,EC7BW8T,OAjB6C,IAIrD,IAJsD,KACzDjrB,EADyD,KAEzD4G,GAEE,EACF,OACI,gBAAC3H,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAAC5iB,GAAA,EAAD,UACK1B,IAEL,eAAClI,GAAA,EAAD,CAAYC,QAAQ,QAAQnU,MAAM,cAAlC,SACKwV,MANb,ECaWmrB,OAjB+C,IAIvD,IAJwD,KAC3DnrB,EAD2D,KAE3DkR,EAF2D,KAG3DtK,GACE,EACF,OACI,gBAAC3H,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAAC5iB,GAAA,EAAD,UACK1B,IAEL,eAAChI,GAAA,EAAD,CAAMD,QAAQ,QAAQnU,MAAM,cAAcuU,KAAMmS,EAAhD,SACKlR,MANb,ECWJ,MAAMxD,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPgU,OAAQ,CACJxX,MAAO,OACPgE,OAAQT,EAAMS,OAAOwT,OACrB5a,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CmqB,UAAW,CACPnjB,YAAa,GAEjB4jB,QAAS,CACL5gC,MAAO8S,EAAME,QAAQwC,KAAKE,eAqJnBmrB,OAhJmD,IAI3D,IAJ4D,OAC/D3d,EAD+D,QAE/DV,EAF+D,YAG/DsN,GACE,EACF,MAAMpc,EAAU1B,KACV8M,EAAOC,eAEP+hB,EAAc,KAChBte,GAAS,EAGb,OAAIsN,EAAY+M,gBAER,eAACva,GAAA,EAAD,CACI5O,QAAS,CAAEmG,MAAOnG,EAAQqT,QAC1BxE,OAAO,OACP5O,KAAMuP,EAHV,SAII,gBAACqd,GAAA,EAAD,WACI,gBAAC9rB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAO+G,WAAW,SAASwP,SAAS,OAAxD,UACI,eAACpG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQysB,UAAWrrB,QAASgsB,EAAnD,SACI,eAAChjB,GAAA,EAAD,UACI,eAAC,KAAD,QAGR,eAAC5J,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAGK8vB,EAAY0Q,kBAGrB,eAAC/rB,GAAA,EAAD,CAAKC,GAAI,EAAT,SACI,eAACR,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAGK8e,EAAKI,cAAc,CAAEpiB,GAAI,4BAGlC,gBAAC2X,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAvD,UACI,gBAACnW,GAAA,EAAD,WACI,eAAC9V,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAAC6B,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAGK8e,EAAKI,cAAc,CAAEpiB,GAAI,4BAGlC,eAAC+pB,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAAC6B,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cAFV,SAGK8vB,EAAY+M,gBAAgBC,6BAIrC,eAACroB,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAAC6B,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,cAFV,SAGK8vB,EAAY0Q,oBAKrB1Q,EAAY+M,gBAAgBE,wBAAwBl5B,OAAS,GAE7D,gBAAC0mB,GAAA,EAAD,CAAM7E,GAAI,CAAErH,aAAc,GAA1B,UACI,eAACwI,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAAC6B,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAGK8e,EAAKI,cAAc,CAAEpiB,GAAI,sBAGlC,eAAC+pB,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAG9rB,eAAe,aAAlE,SACKkb,EAAY+M,gBAAgBE,wBAAwB37B,KAAI,CAACslB,EAAMhW,IAExD,gBAAC+D,GAAA,EAAD,WAEQiS,EAAKlR,MACL,eAACpB,GAAA,EAAD,CAAM6I,MAAO,CAAE+Q,eAAgB,QAC3BzZ,KAAMmS,EAAKA,KACXvS,QAAQ,QAFZ,SAIKuS,GAAQA,EAAKlR,QAIjBkR,EAAKlR,MACN,eAACpB,GAAA,EAAD,CAAM6I,MAAO,CAAE+Q,eAAgB,QAC3BzZ,KAAMmS,EAAKA,KACXvS,QAAQ,QAFZ,SAIKuS,GAAQA,EAAKA,SAhBhBhW,YA4BlC,gBAAC6Z,GAAA,EAAD,CAAM7E,GAAI,CAAErH,aAAc,GAA1B,UACI,eAACwI,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,eAAC6B,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAGK8e,EAAKI,cAAc,CAAEpiB,GAAI,wBAGlC,eAAC+pB,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAd,SACI,gBAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAG9rB,eAAe,aAAaX,UAAWP,EAAQktB,QAAlG,UACK9Q,EAAY+M,gBAAgBpY,WAAa,eAAC,GAAD,CAAsBrI,KAAM,eAAC,KAAD,IAAgB5G,KAAMsa,EAAY+M,gBAAgBpY,YACvHqL,EAAY+M,gBAAgBI,kBAAoB,eAAC,GAAD,CAAsB7gB,KAAM,eAAC,KAAD,IAAe5G,KAAMsa,EAAY+M,gBAAgBI,iBAAiB9L,aAC9IrB,EAAY+M,gBAAgBK,kBAAoB,eAAC,GAAD,CAAsB9gB,KAAM,eAAC,KAAD,IAAe5G,KAAMsa,EAAY+M,gBAAgBK,iBAAiB/L,aAC9IrB,EAAY+M,gBAAgB3/B,OAAS,eAAC,GAAD,CAAsBkf,KAAM,eAAC,KAAD,IAAc5G,KAAMsa,EAAY+M,gBAAgB3/B,aAG1H,eAAC2pB,GAAA,EAAD,IACA,eAACpS,GAAA,EAAD,CAAKpC,QAAS,EAAGsb,GAAI,EAArB,SACI,gBAAClZ,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAG9rB,eAAe,aAAaX,UAAWP,EAAQktB,QAAlG,UACK9Q,EAAY+M,gBAAgBM,kBAAoB,eAAC,GAAD,CAAuB/gB,KAAM,eAAC,KAAD,IAAkB5G,KAAK,WAAWkR,KAAMoJ,EAAY+M,gBAAgBM,mBACjJrN,EAAY+M,gBAAgBS,kBAAoB,eAAC,GAAD,CAAuBlhB,KAAM,eAAC,KAAD,IAAkB5G,KAAK,WAAWkR,KAAMoJ,EAAY+M,gBAAgBS,mBACjJxN,EAAY+M,gBAAgBU,mBAAqB,eAAC,GAAD,CAAuBnhB,KAAM,eAAC,KAAD,IAAmB5G,KAAK,YAAYkR,KAAMoJ,EAAY+M,gBAAgBU,oBACpJzN,EAAY+M,gBAAgBQ,iBAAmB,eAAC,GAAD,CAAuBjhB,KAAM,eAAC,KAAD,IAAiB5G,KAAK,UAAUkR,KAAMoJ,EAAY+M,gBAAgBQ,kCAQjK,IAAP,ECpKX,MAAMrrB,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPguB,WAAY,CACRC,QAAS,OACTloB,cAAe,UAEnBumB,OAAQ,CACJ/U,UAAW,OACXjM,aAAc,YAiEX4iB,OA5DyC,IAAsB,IAArB,YAAEnR,GAAkB,EACzE,MAAMpc,EAAU1B,MAETkvB,EAAkBC,IADTte,cAC8BhP,oBAAkB,KACzDutB,EAAkBC,GAAqBxtB,oBAAkB,GAmBhE,OACI,gBAACY,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAAC,GAAD,CAAkBmb,YAAaA,EAAa5M,OAAQge,EAAkB1e,QAnBtD,KACpB2e,GAAkB,EAAlB,EAkBoGlV,YAAa6D,EAAY7D,cACzH,eAAC,GAAD,CAAyB6D,YAAaA,EAAa5M,OAAQke,EAAkB5e,QAZ7D,KACpB6e,GAAkB,EAAlB,IAYI,eAAC5sB,GAAA,EAAD,CAAKR,UAAWP,EAAQ2rB,OAAxB,SACI,eAACnrB,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAIK8vB,EAAY0Q,iBAIrB,gBAAC/rB,GAAA,EAAD,CAAKE,QAAQ,OAAO2J,WAAW,OAA/B,UACI,gBAACwG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQqtB,WAAYjsB,QAnBhC,KACnBusB,GAAkB,EAAlB,EAkB4E1rB,UAAWma,EAAY+M,gBAA3F,UACI,eAAC,KAAD,IACA,eAAC3oB,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,UAFV,qBAOJ,gBAAC8kB,GAAA,EAAD,CAAY7Q,UAAWP,EAAQqtB,WAAYjsB,QApChC,KACnBqsB,GAAkB,EAAlB,EAmC4ExrB,UAAWma,EAAY7D,YAA3F,UACI,eAAC,KAAD,IACA,eAAC/X,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,UAFV,0BAzBhB,ECzCJ,MAAMgS,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPguB,WAAY,CACRC,QAAS,OACTloB,cAAe,UAEnBumB,OAAQ,CACJ/U,UAAW,OACXjM,aAAc,QAElBuJ,WAAY,CACRrY,MAAO,OACP+O,WAAYxL,EAAMO,QAAQ,QAgCvBiuB,OA3BmC,IAAmB,IAAlB,SAAExX,GAAe,EAChE,MAAMpW,EAAU1B,KAEV8M,GADU+D,cACH9D,gBAOb,OACI,gBAACtK,GAAA,EAAD,CACIE,QAAQ,OACR+G,WAAW,SAFf,UAII,eAAC,KAAD,IACA,eAACkP,GAAA,EAAD,CACIG,SAZU/pB,IAClB,MAAM,KAAE5D,EAAF,MAAQwH,GAAU5D,EAAMwT,OAC9BsV,EAASllB,EAAT,EAWQimB,kBAAgB,EAChBC,WAAS,EACT7W,UAAWP,EAAQkU,WACnBqD,YAAanM,EAAKI,cAAc,CAAEpiB,GAAI,uBAXlD,E,6FCfJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPwuB,OAAQ,CACJhuB,OAAQT,EAAMS,OAAOwT,QAEzBya,YAAa,CACTxhC,MAAO8S,EAAME,QAAQwC,KAAKC,QAC1B,mBAAoB,CAChBgC,OAAQ,kBAmLLgqB,OA9KiD,IAOzD,IAP0D,OAC7Dve,EAD6D,QAE7DV,EAF6D,MAG7D9U,EAH6D,YAI7DoiB,EAJ6D,WAK7DG,EAL6D,cAM7DC,GACE,EACF,MAAMxc,EAAU1B,MAKV,gBAAEgR,GAAoBC,cACtBnE,EAAOC,gBACN2iB,EAAgBC,GAAqB9tB,sBACrC+tB,EAAmBC,GAAwBhuB,oBAAkB,GAC9D7V,EAASkiB,gBACR+D,EAAU6d,GAAe5H,IAAMrmB,SAA6B,MAC7DF,EAAO/B,QAAQqS,GA0BfX,EAAc,KAChBwe,EAAY,KAAZ,EAGEC,EAA+B,CACjCC,QAASt0B,EAAMkgB,SACfqU,iBAAkB,IAYtB,OAJAvvB,qBAAU,KA9BgB,MACtB,IAAI7P,EAAS,CAAEq/B,SAAUx0B,EAAMkgB,UAC/BxxB,KAAMgwB,KAAKlX,wDAAiErS,EAAQ7E,GAC/EmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrB0jC,EAAkBvgB,EAASnjB,KAElC,IACAkkC,SAAQ,KACLN,GAAqB,EAArB,GAPR,EA6BAO,EAAmB,GACpB,IAGC,gBAAC/U,GAAA,EAAD,CACI3Z,QAAS,CAAEmG,MAAOnG,EAAQ6tB,QAC1Bc,YAAU,EACV1uB,KAAMuP,EAHV,UAII,eAAC4B,GAAA,EAAD,CAAYhQ,QA1DD,KACf0N,GAAS,EAyD4BkD,GAAI,CAAErJ,YAAa,EAAGiC,WAAY,QAAnE,SACI,eAAC,KAAD,MAEJ,gBAACiiB,GAAA,EAAD,CAAW7a,GAAI,CAAE4E,UAAW,IAA5B,UACI,eAACpW,GAAA,EAAD,CAAYwR,GAAI,CAAErH,aAAc,GAC5BlK,QAAQ,KACRnU,MAAM,cAFV,SAGK0N,EAAM/M,QAEVuvB,GACG,eAAC,KAAD,UACI,eAACoS,GAAA,EAAD,CAAiBC,aAAc,IAAKR,cAAeA,EAAepR,MAAOjjB,EAAOwiB,cAAeA,EAAeD,WAAYA,OAGhIC,GACE,eAAC,KAAD,UACI,eAAC,KAAD,CACI8R,QAASt0B,EAAMkgB,aAI3B,eAAC1Z,GAAA,EAAD,CAAYwR,GAAI,CAAE4E,UAAW,QACzBnW,QAAQ,QACRnU,MAAM,cAFV,SAGK0N,EAAMvN,cAEX,gBAACsU,GAAA,EAAD,CAAKC,GAAI,EAAGE,eAAe,gBAAgBD,QAAQ,OAAnD,UACI,eAACE,GAAA,EAAD,CACIZ,UAAWP,EAAQ8tB,YACnBrtB,QAAQ,WACRW,QA7EJ,KAC2B,MAAlCnK,SAAS63B,OAAQtjC,MAAM,KAAK,GAC7BujC,UAAUC,UAAUC,UAAU,OAAUh4B,SAAS63B,OAAQtjC,MAAM,KAAK,GAAK,IAAMwO,EAAMkgB,UAEpF6U,UAAUC,UAAUC,UAAU9wB,OAAOlH,SAASi4B,OAAS,gBAAkB9S,EAAc,IAAMpiB,EAAMkgB,UACxG5K,EAAgBlE,EAAKI,cAAc,CAAEpiB,GAAI,sEAAwE,CAAEqX,QAAS,WAA5H,EAyEgBwrB,UACI,eAAC7hB,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,MANZ,SAUI,eAAC,KAAD,CAAkBvc,GAAG,mEAGpB8kC,GACD,eAACiB,GAAA,EAAD,CAAexd,SAAO,EAAClR,QAAQ,cAK7BytB,GACF,uCACI,eAAC/sB,GAAA,EAAD,CACI/X,GAAG,yBACH,gBAAe6W,EAAO,4BAAyBwX,EAC/C,gBAAc,OACd,gBAAexX,EAAO,YAASwX,EAC/BhX,QAAQ,YACRmD,kBAAgB,EAChBxC,QAjFP9T,IACjB8gC,EAAY9gC,EAAM8hC,cAAlB,EAiFwBntB,UArEpBjI,EAAMq1B,eAAgBrB,EAsEFsB,QAAS,eAAC,KAAD,IATb,SAWI,eAAC,KAAD,CAAkBlmC,GAAI,2DAE1B,gBAAC8mB,GAAA,EAAD,CACI9mB,GAAG,uBACHmnB,SAAUA,EACVtQ,KAAMA,EACN6O,QAASc,EAJb,UAMI,eAAClP,GAAA,EAAD,CAAMG,KAAM7G,EAAMq1B,aAAczuB,UAAU,OAA1C,SACI,gBAAC6P,GAAA,EAAD,CACI5P,KAAM7G,EAAMq1B,aACZptB,UAAYjI,EAAMq1B,aAClBjuB,QAASwO,EACTrL,eAAa,EAJjB,UAMI,eAACwR,GAAA,EAAD,UACI,eAAC,KAAD,MAEJ,eAACgB,GAAA,EAAD,UACI,eAAC,KAAD,CAAkB3tB,GAAI,6DAIlC,eAACsX,GAAA,EAAD,CAAMG,KAAMmtB,EAAgBptB,UAAU,OAAtC,SACI,gBAAC6P,GAAA,EAAD,CACIrP,QAASwO,EACT3N,cAA6BwV,GAAlBuW,EACXzpB,eAAa,EAHjB,UAKI,eAACwR,GAAA,EAAD,UACI,eAAC,KAAD,MAEJ,eAACgB,GAAA,EAAD,UACI,eAAC,KAAD,CAAkB3tB,GAAI,0EAjG9D,E,WCxFJ,MAAMkV,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPjM,KAAM,CACFyI,MAAO,MACPvI,SAAU,WACVuH,KAAM,MACNia,UAAW,wBACXlZ,OAAQ,MACRiE,OAAQT,EAAMS,OAAOwT,OACrB1O,UAAW,qGAEf4qB,WAAY,CACRza,UAAW,qBACX7T,QAAS,OACT+rB,IAAK,GACL1gC,MAAO8S,EAAME,QAAQwC,KAAKE,eAqCnBwtB,OAjCuC,IAI/C,IAJgD,YACnDpT,EADmD,MAEnDa,EAFmD,mBAGnDwS,GACE,EACF,MAAMzvB,EAAU1B,MAEV,gBAAEgR,GAAoBC,cAO5B,OACI,eAACsH,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAMgO,QAPnB,KACZ2tB,UAAUC,UAAUC,UAAU9wB,OAAOlH,SAASi4B,OAAS,gBAAkB9S,EAAYoJ,gBAAkB,IAAMvI,EAAM/C,UACnH5K,EAAgB,8CAA4C,CAAE7O,QAAS,YACvEgvB,GAAmB,EAAnB,EAIA,SACI,eAACvW,GAAA,EAAD,UACI,gBAACnY,GAAA,EAAD,CAAKR,UAAWP,EAAQuvB,WAAxB,UACI,eAACnlB,GAAA,EAAD,UACI,eAAC,KAAD,MAEJ,eAAC5J,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,iBAGA,eAAC8d,GAAA,EAAD,CAAS4H,GAAI,CAAEpH,WAAY,QAA3B,SACI,eAAC,KAAD,YAXpB,ECvBJ,MAAM8kB,GAAuBC,aAAOzW,KAAPyW,CAAA,iDAMvBrxB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFuwB,UAAW,MACXC,WAAY,GAEhBC,WAAY,CACR,uBAAwB,CACpBnxB,QAAS,IAGjBoxB,SAAU,CACNl0B,MAAO,OACPD,OAAQ,QAEZ2f,UAAW,CACPjvB,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9BguB,YAAa,CACTrxB,QAAS,EACTiY,UAAW,OACXtjB,SAAU,YAEdrG,MAAO,CACHqlB,SAAU,SACV+H,aAAc,WACdze,OAAQ,SACRq0B,UAAW,cAEfzV,eAAgB,CACZlnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO8S,EAAME,QAAQsD,KAAK,KAE9BkY,cAAe,CACXjW,cAAe,SACf,QAAS,CACL,QAAS,CACLc,SAAU,WACVqP,aAAc,SACdnQ,cAAe,YAI3BzR,KAAM,CACFwX,WAAY,EACZjC,YAAa,EACbhE,UAAW,oGAEfgW,UAAW,CACPrnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXxoB,MAAO8S,EAAME,QAAQsD,KAAK,IAC1BqD,WAAY7G,EAAME,QAAQwC,KAAKC,aA+KxBmuB,OA3K6C,IAAwE,IAAvE,UAAE3vB,EAAF,YAAa4vB,EAAb,gBAA0BC,EAA1B,YAA2ChU,KAAgBlT,GAAW,EAE/H,MAAM5e,EAASkiB,eACTxM,EAAU1B,MACT+xB,EAAaC,GAAgBnwB,oBAAkB,IAC/CowB,EAAmBd,GAAsBtvB,oBAAkB,IAC3Doc,EAAYC,GAAiBrc,mBAAwB,OACrDsc,EAAyBC,GAA8Bvc,oBAAkB,GAM1Eyc,EAAY,KACdf,EAAiBsU,EAAjB,EAgBEtU,EAAoBsU,IACtB,IAAIhhC,EAAS,CAAE,iBAAoBghC,EAAYjW,SAAU,WAAckC,EAAYtO,YACnFplB,KAAMgwB,KAAKlX,+EAAwFrS,EAAQ7E,GACtGmjB,MAAK,SAAUC,GACU,WAAlBA,EAASnjB,KACT+lC,GAAa,GAEU,aAAlB5iB,EAASnjB,MACdmyB,GAA2B,EAElC,IACAxO,OAAM,SAAU/iB,GACTA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAbL,EAoBJ,OACI,eAACwW,GAAA,EAAD,CAAKR,UAAWP,EAAQX,KAAxB,SAEI,gBAACwX,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAzB,UACKi9B,GACG,eAAC,GAAD,CACI7T,cAAeA,EACfD,WAAYA,EACZH,YAAaA,EACb5M,OAAQ6gB,EACRvhB,QArDD,KACfwhB,GAAa,EAAb,EAqDgBt2B,MAAOm2B,IAEd1T,GACG,eAAC,GAAD,CACI3O,WAAYsO,EAAYtO,WACxB0B,OAAQiN,EACRvc,QAASwc,EACT1iB,MAAOm2B,EACP9W,iCAAkC,KAtBlDiX,GAAa,EAiBD,IAQJ,gBAACvvB,GAAA,EAAD,CAAKzN,SAAS,WAAd,UACI,eAACslB,GAAA,EAAD,CACIxX,QAASwb,EACTjc,UAAU,MACV/E,OAAO,MACPvF,MAAO85B,EAAYnU,mBAEvB,eAAC5R,GAAA,EAAD,CAAS7J,UAAWP,EAAQwa,eACxB7U,SAAS,QACTrZ,MAAM,SACN8U,QAASwb,EAHb,SAKI,eAAC,KAAD,MAEJ,eAACzD,GAAA,EAAD,CACI5Y,UAAWP,EAAQ2a,UADvB,SAGI,eAACna,GAAA,EAAD,UACK2vB,EAAYlU,gBAMzB,gBAACyT,GAAD,CAAsB1d,GAAI,CAAE1e,SAAU,YAAtC,UACI,eAACk9B,GAAA,EAAD,CACIjwB,UAAWP,EAAQ8vB,WACnBhwB,OACI,eAACsR,GAAA,EAAD,CAAY,aAAW,WAAWnZ,KAAK,QAAQmJ,QArF7C,KAEjBquB,GADAc,EACA,EAmFe,SACI,eAAC,KAAD,CAAkBhwB,UAAWP,EAAQ+vB,aAG7C9iC,MAAO,eAACuT,GAAA,EAAD,CACHC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQ/S,MAHhB,SAKFkjC,EAAYljC,UAGpBkjC,EAAYjT,UAAYiT,EAAYjT,SAAS/sB,OAAS,GACnD,eAAC4Q,GAAA,EAAD,CAAKC,GAAI,EAAT,SACI,eAACmc,GAAA,EAAD,CACIC,oBAAqB,eAAC,KAAD,IACrBC,kBAAmB,eAAC,KAAD,IACnBC,kBAAkB,EAHtB,SAKI,eAACC,GAAA,EAAD,CAAUhd,UAAWP,EAAQ8a,cAAe0C,OAAO,KAC/CpoB,MAAO,eAACoL,GAAA,EAAD,CAAYC,QAAQ,UAAUnU,MAAM,cAApC,SACF,iBAAmB6jC,EAAYjT,SAAS/sB,OAAS,mBAF1D,SAMKggC,EAAYjT,SAASxvB,KAAI,CAACoJ,EAASkG,IAE5B,eAACugB,GAAA,EAAD,CAEIC,OAAQxgB,EAAMygB,WACdrc,QAAS,IA9G3Bwc,KACtB,IAAIC,EAAYD,EAAYpyB,MAAM,KAC9BsyB,EAA4B,IAAhBD,EAAU,GAAW,GAAuB,IAAhBA,EAAU,KAAaA,EAAU,GAE7ErB,EAD4B,IAAVsB,GAElBlB,GAAW,EAyG4C6T,CAAiB35B,EAAQ4mB,UACxCtoB,MACI,eAACoL,GAAA,EAAD,CAAYC,QAAQ,UAAUnU,MAAM,cAApC,SACM,IAAMwK,EAAQ4mB,SAAd,KAAqC5mB,EAAQ6mB,QALlD3gB,WAehCuzB,GAAqB,eAAC,GAAD,CAAmBd,mBAAoBA,EAAoBrT,YAAaA,EAAaa,MAAOkT,IAClH,eAACrZ,GAAA,EAAD,CAAavW,UAAWP,EAAQgwB,YAAhC,SACI,gBAACjvB,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACF,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAWpF,UAAWP,EAAQub,gBAGtC,eAACxa,GAAA,EAAD,CAAKqR,GAAI,IAAT,SACI,eAAC5R,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,iCAxG5B,ECjIJ,MAAMnC,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPjM,KAAM,CACFyI,MAAO,MACPvI,SAAU,WACVuH,KAAM,MACNia,UAAW,uBACXlZ,OAAQ,MACRiE,OAAQT,EAAMS,OAAOwT,OACrB1O,UAAW,qGAEf4qB,WAAY,CACRza,UAAW,qBACX7T,QAAS,OACT+rB,IAAK,GACL1gC,MAAO8S,EAAME,QAAQwC,KAAKE,eAqCnB0uB,OAjCmD,IAI3D,IAJ4D,YAC/DtU,EAD+D,MAE/Da,EAF+D,mBAG/DwS,GACE,EACF,MAAMzvB,EAAU1B,MAEV,gBAAEgR,GAAoBC,cAO5B,OACI,eAACsH,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAMgO,QAPnB,KACZ2tB,UAAUC,UAAUC,UAAU9wB,OAAOlH,SAASi4B,OAAS,gBAAkB9S,EAAYoJ,gBAAkB,IAAMvI,EAAM/C,UACnH5K,EAAgB,8CAA4C,CAAE7O,QAAS,YACvEgvB,GAAmB,EAAnB,EAIA,SACI,eAACvW,GAAA,EAAD,UACI,gBAACnY,GAAA,EAAD,CAAKR,UAAWP,EAAQuvB,WAAxB,UACI,eAACnlB,GAAA,EAAD,UACI,eAAC,KAAD,MAEJ,eAAC5J,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,iBAGA,eAAC8d,GAAA,EAAD,CAAS4H,GAAI,CAAEpH,WAAY,QAA3B,SACI,eAAC,KAAD,YAXpB,EC9BJ,MAAMtM,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPpS,MAAO,CACHqlB,SAAU,SACV+H,aAAc,WACdpZ,QAAS,cACT,qBAAsB,EACtB,qBAAsB,WACtBrF,OAAQ,SACRq0B,UAAW,cAEf1U,UAAW,CACPjvB,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9BwY,eAAgB,CACZlnB,SAAU,WACVonB,cAAe,OACf3f,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXjZ,MAAO,OACPvP,MAAO,QACPme,OAAQ,WAEZkQ,UAAW,CACPrnB,SAAU,WACVyH,IAAK,MACLF,KAAM,MACNia,UAAW,uBACXxoB,MAAO8S,EAAME,QAAQsD,KAAK,IAC1BqD,WAAY7G,EAAME,QAAQwC,KAAKC,SAEnCguB,SAAU,CACNl0B,MAAO,OACPD,OAAQ,QAEZyxB,WAAY,CACR1uB,QAAS,GAEbgyB,kBAAmB,CACfre,SAAU,SACV+H,aAAc,WACdpZ,QAAS,cACT,qBAAsB,EACtB,qBAAsB,gBA+FnB2vB,OA1F+C,IAA6B,IAA5B,MAAE3T,EAAF,YAASb,GAAkB,EACtF,MAAMpc,EAAU1B,MACT+xB,EAAaC,GAAgBnwB,oBAAkB,IAC/CowB,EAAmBd,GAAsBtvB,oBAAkB,GAelE,OACI,gBAACY,GAAA,EAAD,CAAKzN,SAAS,WAAd,UACKi9B,GAAqB,eAAC,GAAD,CAAyBd,mBAAoBA,EAAoBrT,YAAaA,EAAaa,MAAOA,IACxH,eAAC,GAAD,CAAwBb,YAAaA,EAAa5M,OAAQ6gB,EAAavhB,QAhB5D,KACfwhB,GAAa,EAAb,EAegGt2B,MAAOijB,IACnG,gBAACpG,GAAA,EAAD,CAAM7E,GAAI,CAAE/Q,QAAS,QAArB,UACI,gBAACF,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAzB,UACI,gBAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAACjsB,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAWpF,UAAWP,EAAQub,gBAGtC,eAACxa,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,qBAOJ,eAACM,GAAA,EAAD,CAAK6J,WAAW,OAAhB,SACI,eAACwG,GAAA,EAAD,CAAYhQ,QA5BV,KAEjBquB,GADAc,EACA,EA0BuD,aAAW,WAAWt4B,KAAK,QAAQsI,UAAWP,EAAQqtB,WAA9F,SACI,eAAC,KAAD,CAAkB9sB,UAAWP,EAAQ+vB,kBAIjD,gBAAChvB,GAAA,EAAD,CAAKzN,SAAS,WAAd,UACI,eAACslB,GAAA,EAAD,CACIjY,UAAU,MACV/E,OAAO,KACPvF,MAAO4mB,EAAMjB,iBACb5a,QA1CN,KACdkvB,GAAa,EAAb,IA2CgB,eAAClmB,GAAA,EAAD,CAAS7J,UAAWP,EAAQwa,eACxB7U,SAAS,QACTrZ,MAAM,SAFV,SAII,eAAC,KAAD,MAEJ,eAAC6sB,GAAA,EAAD,CACI5Y,UAAWP,EAAQ2a,UADvB,SAGI,eAACna,GAAA,EAAD,CAAYC,QAAQ,UAApB,SACKwc,EAAMhB,mBAKvB,gBAAClb,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAGsC,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAGhsB,GAAI,EAA9E,UACI,eAACD,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CAAYG,UAAU,MAAMF,QAAQ,KAAKF,UAAWP,EAAQ/S,MAA5D,SACKgwB,EAAMhwB,UAGf,eAAC8T,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CAAYC,QAAQ,QAAQnU,MAAM,iBAAiBqU,UAAU,MAAMJ,UAAWP,EAAQ/S,MAAtF,SACKgwB,EAAMxwB,gBAGf,eAACsU,GAAA,EAAD,CAAKiR,GAAI,CAAE/Q,QAAS,OAAQ+G,WAAY,SAAUkU,GAAI,EAAG2U,GAAI,GAA7D,SACI,eAACzf,GAAA,EAAD,CAAY,aAAW,yBA9D3C,ECvEJ,MAAM9S,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPpS,MAAO,CACHqlB,SAAU,SACV+H,aAAc,WACdpZ,QAAS,cACT,qBAAsB,EACtB,qBAAsB,WACtBrF,OAAQ,SACRq0B,UAAW,cAEf1U,UAAW,CACPjvB,MAAO8S,EAAME,QAAQwC,KAAKE,eAgEvB8uB,OA3D+C,IAA0C,IAAzC,UAAEvwB,EAAF,YAAaue,EAAb,QAA0BjR,GAAc,EACnG,MAAM7N,EAAU1B,MACTygB,EAAuBC,GAAyB7e,oBAAkB,GAMzE,OACI,eAACY,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,gBAACujB,GAAA,EAAD,CAAM7E,GAAI,CAAE/Q,QAAS,QAArB,UACI,gBAACF,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAzB,UACI,gBAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAACjsB,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAASpF,UAAWP,EAAQub,gBAGpC,eAACxa,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAII,eAAC,KAAD,CAAkBrX,GAAG,uDAKjC,eAAC2X,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,eAACslB,GAAA,EAAD,CACIjY,UAAU,MACV/E,OAAO,KACPvF,MAAOyoB,EAAYG,cACnB7d,QAAS,KA9B7B4d,GAAsB,EA0BN,SAQR,gBAACje,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAGsC,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAGhsB,GAAI,EAA9E,UACI,eAACD,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CAAYG,UAAU,MAAMF,QAAQ,KAAKF,UAAWP,EAAQ/S,MAA5D,SACK6xB,EAAY7xB,UAGrB,eAAC8T,GAAA,EAAD,CAAKiR,GAAI,CAAE/Q,QAAS,OAAQ+G,WAAY,SAAUkU,GAAI,EAAG2U,GAAI,GAA7D,SACI,eAACzf,GAAA,EAAD,CAAY,aAAW,oBAI9B2N,GACG,eAAC,GAAD,CAAyBlR,QAASA,EAAS2B,OAAQuP,EAAuB7e,QAAS8e,QA3CnG,EC9BJ,MAAM1gB,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPpS,MAAO,CACHqlB,SAAU,SACV+H,aAAc,WACdpZ,QAAS,cACT,qBAAsB,EACtB,qBAAsB,WACtBrF,OAAQ,SACRq0B,UAAW,cAEf1U,UAAW,CACPjvB,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9BqrB,WAAY,CACR1uB,QAAS,GAEb0gB,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACP8Y,SAAU,UACV/Y,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjC6c,KAAM,CACF9rB,SAAU,WACVyH,IAAKqE,EAAMO,QAAQ,GACnB7E,MAAOsE,EAAMO,QAAQ,GACrBrT,MAAO,QACPme,OAAQ,WAEZpU,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UA+HvCyuB,OA1H6C,IAAe,IAAd,KAAEvR,GAAW,EACtE,MAAMxf,EAAU1B,KACV0yB,EAAS3hB,iBAAuB,MAChC4hB,EAAW5hB,iBAAuB,MAElC/kB,EAASkiB,eAkBTkT,EAAe,KAhBD,MAChB,IAAIvwB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,qEAA8ErS,EAAQ7E,GAC5FmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrB4T,OAAO8B,KAAKyN,EAASnjB,KAE5B,IACA2jB,OAAM,SAAU/iB,GACTA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAVL,EAcAq1B,EAAa,GAGVC,EAAmBC,GAAwB3f,mBAAS,MAqB3D,OAJAnB,qBAAU,KACFwgB,EAAKO,qBAjBgB,MACzB,IAAI5wB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,0EAAmFrS,EAAQ7E,GACjGmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBu1B,EAAqBpS,EAASnjB,KAErC,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAc8By1B,EAAsB,GACrD,IAGC,eAACjf,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,gBAACujB,GAAA,EAAD,CAAM7E,GAAI,CAAE/Q,QAAS,QAArB,UACI,gBAACF,GAAA,EAAD,CAAKqO,IAAK4hB,EAAQ1rB,KAAK,MAAM3G,QAAS,EAAtC,UACI,gBAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAACjsB,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAUpF,UAAWP,EAAQub,gBAGrC,eAACxa,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAIK,cAIb,gBAACM,GAAA,EAAD,CAAKzN,SAAS,WAAd,UACI,gBAACyN,GAAA,EAAD,CACIK,QAAS,IAAMse,IACf9jB,OAAQ,GACR2E,UAAWP,EAAQqf,YAHvB,UAIMG,EAAKO,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACzDA,MAAOwpB,KAGRL,EAAKO,qBAAyBP,EAAKP,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClFA,MAAOmpB,EAAKP,iBAGbO,EAAKO,sBAA0BP,EAAKP,eAAkB,gBAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,UACrD,eAAC,KAAD,CAAU9e,UAAWP,EAAQsf,WAC7B,eAACnV,GAAA,EAAD,CACI/U,MAAOoqB,EAAKU,UACZ5zB,MAAM,UACNiU,UAAWP,EAAQof,KACnBnnB,KAAK,gBAIjB,eAACkS,GAAA,EAAD,CACI/U,MAAOoqB,EAAKU,UACZ5zB,MAAM,UACNiU,UAAWP,EAAQof,KACnBnnB,KAAK,gBAIjB,gBAAC8I,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAGsC,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAGhsB,GAAI,EAA9E,UACI,eAACD,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACI4O,IAAK6hB,EACLtwB,UAAU,MACVF,QAAQ,KACRF,UAAWP,EAAQ/S,MAJvB,SAMKuyB,EAAKvyB,UAGd,eAAC8T,GAAA,EAAD,CAAKiR,GAAI,CAAE/Q,QAAS,OAAQ+G,WAAY,SAAUkU,GAAI,EAAG2U,GAAI,GAA7D,SACI,eAACzf,GAAA,EAAD,CAAY,aAAW,wBAhE3C,ECvGJ,MAAM9S,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CAAC,EAEPpS,MAAO,CACHqlB,SAAU,SACV+H,aAAc,WACdpZ,QAAS,cACT,qBAAsB,EACtB,qBAAsB,WACtBrF,OAAQ,SACRq0B,UAAW,cAEf1U,UAAW,CACPjvB,MAAO8S,EAAME,QAAQwC,KAAKE,WAE9Bqd,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACPD,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjClM,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UA2FvC4uB,OAtF6D,IAAwB,IAAvB,cAAE9Q,GAAoB,EAC/F,MAAMpgB,EAAU1B,KAMVhU,EAASkiB,gBACR+T,EAA2BC,GAAgCrgB,mBAAS,MAqB3E,OAJAnB,qBAAU,KACFohB,EAAcL,qBAjBe,MACjC,IAAI5wB,EAAS,CAAC,EACdA,EAAM,0BAAgCixB,EAAcK,0BACpD/3B,KAAMgwB,KAAKlX,mFAA4FrS,EAAQ7E,GAC1GmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBi2B,EAA6B9S,EAASnjB,KAE7C,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAcuCm2B,EAA8B,GACtE,IAGC,eAAC3f,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,gBAACujB,GAAA,EAAD,CAAM7E,GAAI,CAAE/Q,QAAS,QAArB,UACI,gBAACF,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAzB,UACI,gBAACoC,GAAA,EAAD,CAAKE,QAAQ,OAAO+rB,IAAK,EAAzB,UACI,eAACjsB,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAkBpF,UAAWP,EAAQub,gBAG7C,eAACxa,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAIK,cAIb,eAACM,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,gBAACyN,GAAA,EAAD,CACIK,QAAS,KAhD7BjD,OAAO8B,KAAKmgB,EAAcpN,KA+CV,EAEIpX,OAAQ,GACR2E,UAAWP,EAAQqf,YAHvB,UAIMe,EAAcL,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClEA,MAAOkqB,KAGRH,EAAcL,qBAAyBK,EAAcnB,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACpGA,MAAO+pB,EAAcnB,iBAGtBmB,EAAcL,sBAA0BK,EAAcnB,eAAkB,eAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,SACvE,eAAC,KAAD,CAAkB9e,UAAWP,EAAQsf,qBAKrD,gBAACve,GAAA,EAAD,CAAKuE,KAAK,MAAM3G,QAAS,EAAGsC,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAGhsB,GAAI,EAA9E,UACI,eAACD,GAAA,EAAD,UACI,eAACP,GAAA,EAAD,CAAYG,UAAU,MAAMF,QAAQ,KAAKF,UAAWP,EAAQ/S,MAA5D,SACKmzB,EAAcnzB,UAGvB,eAAC8T,GAAA,EAAD,CAAKiR,GAAI,CAAE/Q,QAAS,OAAQ+G,WAAY,SAAUkU,GAAI,EAAG2U,GAAI,GAA7D,SACI,eAACzf,GAAA,EAAD,CAAY,aAAW,wBA/C3C,ECpDJ,MAAM9S,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPgU,OAAQ,CACJxX,MAAO,OACPgE,OAAQT,EAAMS,OAAOwT,OACrB5a,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,KAC1CuC,cAAe,QAEnB4nB,UAAW,CACPnjB,YAAa,OAoLN6nB,OAhLiD,IAazD,IAb0D,OAC7D3hB,EAD6D,QAE7DV,EAF6D,WAG7D4U,EAH6D,MAI7D1pB,EAJ6D,OAK7DsnB,EAL6D,MAM7DvpB,EAN6D,cAO7D+pB,EAP6D,YAQ7D1F,EAR6D,WAS7DgV,EAT6D,IAU7DtH,EAV6D,QAW7Djc,EAX6D,QAY7DS,GACE,EACF,MAAMtO,EAAU1B,MACTpP,EAAOknB,GAAYjW,mBAAiB,IACrCiL,EAAOC,eAOP+Y,EAAuB,CAAC/b,EAA2DnZ,KACrF,IAAIm1B,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAC,EAFAC,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACOnN,IAAnBpP,EAAKuc,KACLJ,EAAanc,EAAKuc,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACrEH,EAAWn1B,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,EA8CEgN,OAA4B5Z,IAAVzd,EAAuB,GA5CpB,EAACs3B,EAAiBpiC,IAClCoiC,EAAOn+B,QAAQ6G,IAClB,IAAIqqB,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAgN,EAFA9M,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACQnN,IAApBzd,EAAM4qB,KACN2M,EAAav3B,EAAM4qB,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACtE4M,EAAWliC,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,IAuB4CmN,CAAmBx3B,EAAO9K,GACxE61B,EAA6B,OAAXzD,EAAmB,GApBhB,EAACA,EAAiBpyB,IAClCoyB,EAAOnuB,QAAQ6xB,GACJZ,EAAqBY,EAAO91B,KAkBF+1B,CAAmB3D,EAAQpyB,GACrEg2B,EAA2B,OAAVntB,EAAkB,GAff,EAACA,EAAuB7I,IACvC6I,EAAM5E,QAAQqsB,GACH4E,EAAqB5E,EAAMtwB,KAaHi2B,CAAkBptB,EAAO7I,GACjEk2B,EAA2C,OAAlBtD,EAA0B,GAVvB,EAACA,EAAuC5yB,IAC/D4yB,EAAc3uB,QAAQkyB,GACXjB,EAAqBiB,EAAcn2B,KAQKo2B,CAA0BxD,EAAe5yB,GAQvG,OACI,eAAC0f,GAAA,EAAD,CACI5O,QAAS,CAAEmG,MAAOnG,EAAQqT,QAC1BxE,OAAO,OACP5O,KAAMuP,EAHV,SAII,gBAACqd,GAAA,EAAD,WACI,gBAAC9rB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAO+G,WAAW,SAASwP,SAAS,OAAxD,UACI,eAACpG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQysB,UAAWrrB,QAzFtC,KAChB0N,GAAS,EAwFG,SACI,eAAC1E,GAAA,EAAD,UACI,eAAC,KAAD,QAGR,eAAC5J,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAGK8kC,OAGT,gBAACrwB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAOmE,cAAc,SAASlE,eAAe,gBAAgB8rB,IAAK,EAAtF,UACI,eAACxsB,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAxBRw9B,EAAYA,EAAIpgC,KACX4kB,EAAgBA,EAAQ5kB,KACrBg6B,EAAWh6B,OA2BX,eAAC,GAAD,CAAiB0sB,SAAUA,IAE3B,eAAC5V,GAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAGK8e,EAAKI,cAAc,CAAEpiB,GAAI,yBAGlC,gBAAC2X,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAGhsB,GAAI,EAAvD,UACKqwB,EAAe3jC,KAAI,CAACuvB,EAAOjgB,IAEpB,eAAC+D,GAAA,EAAD,UACI,eAAC,GAAD,CAAuBqb,YAAaA,EAAaa,MAAOA,KADlDjgB,KAMjB+nB,EAAer3B,KAAI,CAACs3B,EAAOhoB,IAEpB,eAAC+D,GAAA,EAAD,UACI,eAAC,GAAD,CAAmC+d,YAAakG,EAAOnX,QAASA,GAApC7Q,IADtBA,KAOjBkoB,EAAcx3B,KAAI,CAAC8xB,EAAMxiB,IAElB,eAAC+D,GAAA,EAAD,UACI,eAAC,GAAD,CAAkCye,KAAMA,GAAbxiB,IADrBA,KAQjBooB,EAAsB13B,KAAI,CAACslB,EAAMhW,IAE1B,eAAC+D,GAAA,EAAD,UAEI,eAAC,GAAD,CAA0Cqf,cAAepN,GAAtBhW,IAF7BA,YA9DlC,ECtIJ,MAAM0yB,GAAuBC,aAAOzW,KAAPyW,CAAA,iDAMvBrxB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFuwB,UAAW,MACXC,WAAY,GAEhBxR,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX2D,UAAW,CACP7M,SAAU,SACV+H,aAAc,WACdze,OAAQ,SACRq0B,UAAW,cAEf5Q,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACPD,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjCnP,KAAM,CACFwX,WAAY,EACZjC,YAAa,EACbhE,UAAW,oGAEfqrB,YAAa,CACTrxB,QAAS,EACTiY,UAAW,OACXtjB,SAAU,YAEdw8B,WAAY,CACR,uBAAwB,CACpBnxB,QAAS,IAGjBtI,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UAyFnCmvB,OArF+C,IAAwB,IAAvB,cAAErR,GAAoB,EACjF,MAAMpgB,EAAU1B,KAKVhU,EAASkiB,gBACR+T,EAA2BC,GAAgCrgB,mBAAS,MAqB3E,OAJAnB,qBAAU,KACFohB,EAAcL,qBAjBe,MACjC,IAAI5wB,EAAS,CAAC,EACdA,EAAM,0BAAgCixB,EAAcK,0BACpD/3B,KAAMgwB,KAAKlX,mFAA4FrS,EAAQ7E,GAC1GmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBi2B,EAA6B9S,EAASnjB,KAE7C,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAcuCm2B,EAA8B,GACtE,IAGC,eAAC3f,GAAA,EAAD,CAAKR,UAAWP,EAAQX,KAAxB,SACI,gBAACwX,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAzB,UACI,eAAC2N,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,gBAACyN,GAAA,EAAD,CACIK,QAAS,KA9BzBjD,OAAO8B,KAAKmgB,EAAcpN,KA6Bd,EAEI0e,UAAW,IACXnxB,UAAWP,EAAQqf,YAHvB,UAIMe,EAAcL,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClEA,MAAOkqB,KAGRH,EAAcL,qBAAyBK,EAAcnB,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACpGA,MAAO+pB,EAAcnB,iBAGtBmB,EAAcL,sBAA0BK,EAAcnB,eAAkB,eAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,SACvE,eAAC,KAAD,CAAkB9e,UAAWP,EAAQsf,kBAIjD,gBAAC,GAAD,CAAsBtN,GAAI,CAAE1e,SAAU,YAAtC,UACI,eAACk9B,GAAA,EAAD,CACIjwB,UAAWP,EAAQ8vB,WACnB7iC,MAAO,eAACuT,GAAA,EAAD,CACHC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQmf,UAHhB,SAKFiB,EAAcnzB,UAGvB,eAAC6pB,GAAA,EAAD,CAAavW,UAAWP,EAAQgwB,YAAhC,SACI,gBAACjvB,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACF,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAkBpF,UAAWP,EAAQqe,cAG7C,eAACtd,GAAA,EAAD,CAAKqR,GAAI,IAAT,SACI,eAAC5R,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAIK,uBA9CjC,EC3FJ,MAAMivB,GAAuBC,aAAOzW,KAAPyW,CAAA,iDAMvBrxB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFuwB,UAAW,MACXC,WAAY,GAEhBxR,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX2D,UAAW,CACP7M,SAAU,SACV+H,aAAc,WACdze,OAAQ,SACRq0B,UAAW,cAEf5Q,YAAa,CACT/rB,SAAU,WACV2N,QAAS,OACTxI,gBAAiB2G,EAAME,QAAQuC,QAAQ,KACvC0Y,YAAa,SACbrZ,eAAgB,SAChB8G,WAAY,SACZtD,aAAc,UACd+F,OAAQ,UACR5O,MAAO,OACPD,OAAQ,QAEZ0jB,SAAU,CACNzjB,MAAO,OACPD,OAAQ,OACRtP,MAAO8S,EAAME,QAAQyC,QAAQQ,cAEjCnP,KAAM,CACFwX,WAAY,EACZjC,YAAa,EACbhE,UAAW,oGAEfqrB,YAAa,CACTrxB,QAAS,EACTiY,UAAW,OACXtjB,SAAU,YAEdw8B,WAAY,CACR,uBAAwB,CACpBnxB,QAAS,IAGjBygB,KAAM,CACF9rB,SAAU,WACVyH,IAAKqE,EAAMO,QAAQ,GACnB7E,MAAOsE,EAAMO,QAAQ,GACrBrT,MAAO,QACPme,OAAQ,WAEZpU,MAAO,CACHwF,MAAO,OACPD,OAAQ,OACR2e,YAAa,SACb9P,OAAQ,UACRhS,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UAwHnCqvB,OAnH+B,IAAe,IAAd,KAAEnS,GAAW,EACxD,MAAMxf,EAAU1B,KACVhU,EAASkiB,eAkBTkT,EAAe,KAhBD,MAChB,IAAIvwB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,qEAA8ErS,EAAQ7E,GAC5FmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrB4T,OAAO8B,KAAKyN,EAASnjB,KAE5B,IACA2jB,OAAM,SAAU/iB,GACTA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAVL,EAcAq1B,EAAa,GAGVC,EAAmBC,GAAwB3f,mBAAS,MAqB3D,OAJAnB,qBAAU,KACFwgB,EAAKO,qBAjBgB,MACzB,IAAI5wB,EAAS,CAAC,EACdA,EAAM,QAAcqwB,EAAKG,QACzBj3B,KAAMgwB,KAAKlX,0EAAmFrS,EAAQ7E,GACjGmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrBu1B,EAAqBpS,EAASnjB,KAErC,IACA2jB,OAAM,SAAU/iB,GAIb,OAHIA,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,MAExB,IACV,GAXL,EAc8By1B,EAAsB,GACrD,IAGC,eAACjf,GAAA,EAAD,CAAKR,UAAWP,EAAQX,KAAxB,SACI,gBAACwX,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAzB,UACI,gBAAC2N,GAAA,EAAD,CAAKzN,SAAS,WAAd,UACI,gBAACyN,GAAA,EAAD,CACIK,QAAS,IAAMse,IACfgS,UAAW,IACXnxB,UAAWP,EAAQqf,YAHvB,UAIMG,EAAKO,qBAAwB,eAACnH,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MACzDA,MAAOwpB,KAGRL,EAAKO,qBAAyBP,EAAKP,eAAkB,eAACrG,GAAA,EAAD,CAAWrY,UAAWP,EAAQ3J,MAClFA,MAAOmpB,EAAKP,iBAGbO,EAAKO,sBAA0BP,EAAKP,eAAkB,gBAACle,GAAA,EAAD,CAAKR,UAAWP,EAAQqf,YAAxB,UACrD,eAAC,KAAD,CAAU9e,UAAWP,EAAQsf,WAC7B,eAACnV,GAAA,EAAD,CACI/U,MAAOoqB,EAAKU,UACZ5zB,MAAM,UACNiU,UAAWP,EAAQof,KACnBnnB,KAAK,gBAIjB,eAACkS,GAAA,EAAD,CACI/U,MAAOoqB,EAAKU,UACZ5zB,MAAM,UACNiU,UAAWP,EAAQof,KACnBnnB,KAAK,aAGb,gBAAC,GAAD,CAAsB+Z,GAAI,CAAE1e,SAAU,YAAtC,UACI,eAACk9B,GAAA,EAAD,CACIjwB,UAAWP,EAAQ8vB,WACnB7iC,MAAO,eAACuT,GAAA,EAAD,CACHC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQmf,UAHhB,SAKFK,EAAKvyB,UAGd,eAAC6pB,GAAA,EAAD,CAAavW,UAAWP,EAAQgwB,YAAhC,SACI,gBAACjvB,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACF,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAAUpF,UAAWP,EAAQqe,cAIrC,eAACtd,GAAA,EAAD,CAAKqR,GAAI,IAAT,SACI,eAAC5R,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAIK,uBA3DjC,EChHJ,MAAMivB,GAAuBC,aAAOzW,KAAPyW,CAAA,iDAOvBrxB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACFuwB,UAAW,MACXC,WAAY,GAEhBxR,QAAS,CACL/qB,SAAU,WACVhH,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BwZ,MAAO,QAEX2D,UAAW,CACP7M,SAAU,SACV+H,aAAc,WACdze,OAAQ,SACRq0B,UAAW,cAEf78B,KAAM,CACFwX,WAAY,EACZjC,YAAa,EACbhE,UAAW,oGAEfqrB,YAAa,CACTrxB,QAAS,EACTiY,UAAW,OACXtjB,SAAU,YAEdw8B,WAAY,CACR,uBAAwB,CACpBnxB,QAAS,IAGjByf,mBAAoB,CAChBxiB,OAAQ,MACRC,MAAO,OACP0e,YAAa,cAkENqX,OA7D6C,IAA0C,IAAzC,UAAErxB,EAAF,YAAaue,EAAb,QAA0BjR,GAAc,EACjG,MAAOkR,EAAuBC,GAAyB7e,oBAAkB,GACnEH,EAAU1B,KAOhB,OACI,eAACyC,GAAA,EAAD,CAAKR,UAAWP,EAAQX,KAAxB,SACI,gBAACwX,GAAA,EAAD,CAAMtW,UAAWP,EAAQ5M,KAAzB,UACI,eAAC2N,GAAA,EAAD,CAAKzN,SAAS,WAAd,SACI,eAACslB,GAAA,EAAD,CACIxX,QAAS,KATzB4d,GAAsB,EAQV,EAEIre,UAAU,MACV/E,OAAO,MACPvF,MAAOyoB,EAAYG,kBAI3B,gBAAC,GAAD,CAAsBjN,GAAI,CAAE1e,SAAU,YAAtC,UACI,eAACk9B,GAAA,EAAD,CACIjwB,UAAWP,EAAQ8vB,WACnB7iC,MAAO,eAACuT,GAAA,EAAD,CACHC,QAAQ,KACRnU,MAAM,cACNiU,UAAWP,EAAQmf,UAHhB,SAKFL,EAAY7xB,UAGrB,eAAC6pB,GAAA,EAAD,CAAavW,UAAWP,EAAQgwB,YAAhC,SACI,gBAACjvB,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACF,GAAA,EAAD,UACI,eAACqJ,GAAA,EAAD,CACIzE,SAAS,QADb,SAGI,eAAC,KAAD,CAASpF,UAAWP,EAAQqe,cAGpC,eAACtd,GAAA,EAAD,CAAKqR,GAAI,IAAT,SACI,eAAC5R,GAAA,EAAD,CACIlU,MAAM,gBACNmU,QAAQ,KAFZ,SAII,eAAC,KAAD,CAAkBrX,GAAG,4DAOxC21B,GACG,eAAC,GAAD,CAAyBlR,QAASA,EAAS2B,OAAQuP,EAAuB7e,QAAS8e,QA7CnG,EC9CJ,MAAM1gB,GAAYC,aAAYa,IAAD,CACzByyB,MAAO,CACHC,UAAW,SACXlb,UAAW,OACX/R,cAAe,QAEnBktB,OAAQ,CACJzlC,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1B4I,WAAY,OACZ7E,WAAY,MACZiP,aAAc,OAqNPgd,OAjNmD,IAAgF,IAA/E,WAAEtO,EAAF,gBAAc0M,EAAd,MAA+BlhC,EAA/B,YAAsCktB,EAAtC,QAAmDvO,EAAnD,YAA4DokB,GAAkB,EAC7I,MAAMjyB,EAAU1B,KACVhU,EAASkiB,gBACRxS,EAAOqnB,GAAYlhB,sBACnBmhB,EAAQC,GAAaphB,mBAAkB,KACvCpI,EAAO8pB,GAAY1hB,mBAAyB,KAC5C2hB,EAAeC,GAAoB5hB,mBAAiC,KACpEiiB,EAAeC,GAAoBliB,oBAAkB,IACrDmiB,EAAeC,GAAoBpiB,oBAAkB,IACrDqiB,EAAcC,GAAmBtiB,oBAAkB,IACnDuiB,EAAsBC,GAA2BxiB,oBAAkB,GACpEiL,EAAOC,gBACN6mB,EAAcC,GAAiBhyB,oBAAkB,GA6CjDiyB,EAAgB,KACnB/P,GAAiB,GACjBE,GAAiB,GACjBE,GAAgB,GAChBE,GAAwB,GA/CC,MACzB,IAAIxzB,EAAS,CAAC,EACdA,EAAM,4BAAkCu0B,EAAWV,4BACnD7zB,EAAM,QAAa,EACnBA,EAAM,QAAa,EACnBzG,KAAMgwB,KAAKlX,+EAAwFrS,EAAQ7E,GACtGmjB,MAAK,SAAUC,GACZ,IAAInjB,EAAgBmjB,EAASnjB,KAC7B82B,EAAS92B,GACT83B,GAAiB,EACpB,IACAnU,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI5nB,EAAMuiB,SACrB,GARL,EA4CA2kB,GAjCuB,MACvB,IAAIhP,EAAsB,GACtB,IAAK,IAAIC,KAAWI,EAAWH,gCAC3BF,EAAW1zB,KAAK2zB,EAAQE,iBAEhCjC,EAAU8B,GACVd,GAAiB,EAAjB,EA4BAa,GAzBsB,MACtB,IAAIS,EAA4B,GAC5B,IAAK,IAAIP,KAAWI,EAAWI,sCAC3BD,EAAUl0B,KAAK2zB,EAAQS,oBAE/BlC,EAASgC,GACTpB,GAAgB,EAAhB,EAoBAmB,GAjB8B,MAC9B,IAAIK,EAA4C,GAC5C,IAAK,IAAIX,KAAWI,EAAWQ,8CAC3BD,EAAkBt0B,KAAK2zB,EAAQa,4BAEvCpC,EAAiBkC,GACjBtB,GAAwB,EAAxB,EAYAqB,EAA2B,EAG/BhlB,qBAAU,KACNozB,GAAe,GAChB,CAAC1O,EAAYx0B,IAEhB,MAGMojC,EAA8B,KAChCH,GAAc,EAAd,EAGE/N,EAAuB,CAAC/b,EAA2DnZ,KACrF,IAAIm1B,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAC,EAFAC,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACOnN,IAAnBpP,EAAKuc,KACLJ,EAAanc,EAAKuc,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACrEH,EAAWn1B,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,EA8CEgN,OAA4B5Z,IAAVzd,EAAuB,GA5CpB,EAACs3B,EAAiBpiC,IAClCoiC,EAAOn+B,QAAQ6G,IAClB,IAAIqqB,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAgN,EAFA9M,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACQnN,IAApBzd,EAAM4qB,KACN2M,EAAav3B,EAAM4qB,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACtE4M,EAAWliC,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,IAuB4CmN,CAAmBx3B,EAAO9K,GACxE61B,EAA6B,OAAXzD,EAAmB,GApBhB,EAACA,EAAiBpyB,IAClCoyB,EAAOnuB,QAAQ6xB,GACJZ,EAAqBY,EAAO91B,KAkBF+1B,CAAmB3D,EAAQpyB,GACrEg2B,EAA2B,OAAVntB,EAAkB,GAff,EAACA,EAAuB7I,IACvC6I,EAAM5E,QAAQqsB,GACH4E,EAAqB5E,EAAMtwB,KAaHi2B,CAAkBptB,EAAO7I,GACjEk2B,EAA2C,OAAlBtD,EAA0B,GAVvB,EAACA,EAAuC5yB,IAC/D4yB,EAAc3uB,QAAQkyB,GACXjB,EAAqBiB,EAAcn2B,KAQKo2B,CAA0BxD,EAAe5yB,GAEvG,OAAIkzB,GAAiBI,GAAgBF,GAAiBI,EAE9C,sBAAKnZ,MAAO,CAAE+I,SAAU,SAAU1H,WAAY,OAAQgM,UAAW,SAAU/R,cAAe,SAAU5D,QAAS,OAAQC,eAAgB,UAArI,SACI,eAACqkB,GAAA,EAAD,CAAkBttB,KAAM,OAK5B,gBAAC8I,GAAA,EAAD,WACI,gBAACA,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACT,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,SACKo3B,EAAWh6B,OAEhB,eAACyX,GAAA,EAAD,CAAQZ,UAAWP,EAAQ+xB,OAAQ95B,KAAK,SAASmJ,QAAS,KA1FtE+wB,GAAc,EA0FF,WACK/mB,EAAKI,cAAc,CAAEpiB,GAAI,yBAGlC,gBAACmpC,GAAA,EAAD,CACIxhB,UAAU,MACVpR,QAAS,EACTY,UAAWP,EAAQ6xB,MAHvB,UAKKR,EAAe3jC,KAAI,CAACuvB,EAAOjgB,IAEpB,eAAC,GAAD,CAAkCof,YAAaA,EAC3C+T,YAAalT,EAAOmT,gBAAiBA,GADdpzB,KAOlC+nB,EAAer3B,KAAI,CAACs3B,EAAOhoB,IAEpB,eAAC,GAAD,CAAkC8hB,YAAakG,EAAOnX,QAASA,GAApC7Q,KAKlCkoB,EAAcx3B,KAAI,CAAC8xB,EAAMxiB,IAElB,eAAC,GAAD,CAA2BwiB,KAAMA,GAAbxiB,KAK3BooB,EAAsB13B,KAAI,CAACslB,EAAMhW,IAE1B,eAAC,GAAD,CAAmCojB,cAAepN,GAAtBhW,QAIvCk1B,GAAgB,eAAC,GAAD,CAAwB9V,YAAaA,EAAavO,QAASA,EAAS2B,OAAQ0iB,EAAcd,WAAYa,EAAanjB,QAASwjB,EAA6B5O,WAAYA,EAAY1pB,MAAOA,EAAOsnB,OAAQA,EAAQvpB,MAAOA,EAAO+pB,cAAeA,MAIxQ,EChOL,MAAMxjB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPgU,OAAQ,CACJxX,MAAO,OACPgE,OAAQT,EAAMS,OAAOwT,OACrB5a,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CmqB,UAAW,CACPnjB,YAAa,OA2DNkpB,OAvD2C,IAQnD,IARoD,OACvDhjB,EADuD,QAEvDV,EAFuD,QAGvDR,EAHuD,gBAIvD8hB,EAJuD,YAKvDhU,EALuD,QAMvDvO,EANuD,QAOvD4kB,GACE,EACF,MAAMzyB,EAAU1B,MAITpP,EAAOknB,GAAYjW,mBAAiB,IAE3C,OACI,eAACyO,GAAA,EAAD,CACI5O,QAAS,CAAEmG,MAAOnG,EAAQqT,QAC1BxE,OAAO,OACP5O,KAAMuP,EAHV,SAII,eAACqd,GAAA,EAAD,UACI,gBAAC9rB,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAhD,UACI,gBAACjsB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAO+G,WAAW,SAASwP,SAAS,OAAxD,UACI,eAACpG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQysB,UAAWrrB,QAb1C,KAChB0N,GAAS,EAYO,SACI,eAAC1E,GAAA,EAAD,UACI,eAAC,KAAD,QAGR,eAAC5J,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAGKmmC,OAGT,eAAC1xB,GAAA,EAAD,CAAKE,QAAQ,OAAOD,GAAI,EAAxB,SACI,eAACR,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,SACKgiB,EAAQ5kB,SAGjB,eAAC,GAAD,CAAiB0sB,SAAUA,IAC3B,eAACrV,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAhD,SACK1e,EAAQqV,0BAA0Bj2B,KAAI,CAACg2B,EAAY1mB,IAE5C,eAAC,GAAD,CAAyBof,YAAaA,EAAavO,QAASA,EAAqB6V,WAAYA,EAAYuO,YAAa3jB,EAAQ5kB,KAAM0mC,gBAAiBA,EAAiBlhC,MAAOA,GAAnG8N,aA5BtG,ECtBJ,MAAMsB,GAAYC,aAAYa,IAAD,CACzByyB,MAAO,CACHC,UAAW,SACXlb,UAAW,OACX/R,cAAe,QAEnBktB,OAAQ,CACJzlC,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1B4I,WAAY,OACZ7E,WAAY,MACZiP,aAAc,OAkOP0d,OA9NyC,IAAyE,IAAxE,QAAEpkB,EAAF,gBAAW8hB,EAAX,MAA4BlhC,EAA5B,YAAmCktB,EAAnC,QAAgDvO,EAAhD,QAAyD4kB,GAAc,EAC5H,MAAMzyB,EAAU1B,KACVhU,EAASkiB,gBACRxS,EAAOqnB,GAAYlhB,sBACnBmhB,EAAQC,GAAaphB,mBAAkB,KACvCpI,EAAO8pB,GAAY1hB,mBAAyB,KAC5C2hB,EAAeC,GAAoB5hB,mBAAiC,KACpEiiB,EAAeC,GAAoBliB,oBAAkB,IACrDmiB,EAAeC,GAAoBpiB,oBAAkB,IACrDqiB,EAAcC,GAAmBtiB,oBAAkB,IACnDuiB,EAAsBC,GAA2BxiB,oBAAkB,GACpEiL,EAAOC,gBACNsnB,EAAwBC,GAA2BzyB,oBAAkB,IACrE+xB,EAAcC,GAAiBhyB,oBAAkB,GAmDlDiyB,EAAgB,KAClB/P,GAAiB,GACjBE,GAAiB,GACjBE,GAAgB,GAChBE,GAAwB,GArDF,MACtB,IAAIxzB,EAAS,CAAC,EACdA,EAAM,wBAA8Bmf,EAAQ2U,wBAC5C9zB,EAAM,QAAa,EACnBA,EAAM,QAAa,EACnBzG,KAAMgwB,KAAKlX,2EAAoFrS,EAAQ7E,GAClGmjB,MAAK,SAAUC,GACZ,IAAInjB,EAAgBmjB,EAASnjB,KAC7B82B,EAAS92B,GACT83B,GAAiB,EACpB,IACAnU,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI5nB,EAAMuiB,SACrB,GARL,EAkDAmlB,GAvCuB,MACvB,IAAIxP,EAAsB,GAC1B,IAAK,IAAIK,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWH,gCAC3BF,EAAW1zB,KAAK2zB,EAAQE,iBAGhCjC,EAAU8B,GACVd,GAAiB,EAAjB,EAgCAa,GA7BsB,MACtB,IAAIS,EAA4B,GAChC,IAAK,IAAIH,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWI,sCAC3BD,EAAUl0B,KAAK2zB,EAAQS,oBAG/BlC,EAASgC,GACTpB,GAAgB,EAAhB,EAsBAmB,GAnB8B,MAC9B,IAAIK,EAA4C,GAChD,IAAK,IAAIP,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWQ,8CAC3BD,EAAkBt0B,KAAK2zB,EAAQa,4BAGvCpC,EAAiBkC,GACjBtB,GAAwB,EAAxB,EAYAqB,EAA2B,EAG/BhlB,qBAAU,KACNozB,GAAe,GAChB,CAAC9jB,EAASpf,IAEb,MAMM4jC,EAAwB,KACsB,GAA5CxkB,EAAQqV,0BAA0BxzB,QACe,WAA7Cme,EAAQqV,0BAA0B,GAAGj6B,KAAmBkpC,GAAwB,GAEjFT,GAAc,EAAd,EAGL/N,EAAuB,CAAC/b,EAA2DnZ,KACrF,IAAIm1B,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAC,EAFAC,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACOnN,IAAnBpP,EAAKuc,KACLJ,EAAanc,EAAKuc,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACrEH,EAAWn1B,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,EA8CEgN,OAA4B5Z,IAAVzd,EAAuB,GA5CpB,EAACs3B,EAAiBpiC,IAClCoiC,EAAOn+B,QAAQ6G,IAClB,IAAIqqB,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAgN,EAFA9M,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACQnN,IAApBzd,EAAM4qB,KACN2M,EAAav3B,EAAM4qB,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACtE4M,EAAWliC,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,IAuB4CmN,CAAmBx3B,EAAO9K,GACxE61B,EAA6B,OAAXzD,EAAmB,GApBhB,EAACA,EAAiBpyB,IAClCoyB,EAAOnuB,QAAQ6xB,GACJZ,EAAqBY,EAAO91B,KAkBF+1B,CAAmB3D,EAAQpyB,GACrEg2B,EAA2B,OAAVntB,EAAkB,GAff,EAACA,EAAuB7I,IACvC6I,EAAM5E,QAAQqsB,GACH4E,EAAqB5E,EAAMtwB,KAaHi2B,CAAkBptB,EAAO7I,GACjEk2B,EAA2C,OAAlBtD,EAA0B,GAVvB,EAACA,EAAuC5yB,IAC/D4yB,EAAc3uB,QAAQkyB,GACXjB,EAAqBiB,EAAcn2B,KAQKo2B,CAA0BxD,EAAe5yB,GAEvG,OAAIkzB,GAAiBI,GAAgBF,GAAiBI,EAE9C,sBAAKnZ,MAAO,CAAE+I,SAAU,SAAU1H,WAAY,OAAQgM,UAAW,SAAU/R,cAAe,SAAU5D,QAAS,OAAQC,eAAgB,UAArI,SACI,eAACqkB,GAAA,EAAD,CAAkBttB,KAAM,OAK5B,gBAAC8I,GAAA,EAAD,WACI,gBAACA,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACT,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,SACKgiB,EAAQ5kB,OAEb,eAACyX,GAAA,EAAD,CAAQZ,UAAWP,EAAQ+xB,OAAQ95B,KAAK,SAASmJ,QAAS,KAhGtB,GAA5CkN,EAAQqV,0BAA0BxzB,QACgB,YAA9Cme,EAAQqV,0BAA0B,GAAGj6B,KAAoBkpC,GAAwB,GAElFT,GAAc,EA6FT,WACK/mB,EAAKI,cAAc,CAAEpiB,GAAI,yBAGlC,gBAACmpC,GAAA,EAAD,CACIxhB,UAAU,MACVpR,QAAS,EACTY,UAAWP,EAAQ6xB,MAHvB,UAKKR,EAAe3jC,KAAI,CAACuvB,EAAOjgB,IAEpB,eAAC,GAAD,CAAkCof,YAAaA,EAC3C+T,YAAalT,EAAOmT,gBAAiBA,GADdpzB,KAOlC+nB,EAAer3B,KAAI,CAACs3B,EAAOhoB,IAEpB,eAAC,GAAD,CAAkC8hB,YAAakG,EAAOnX,QAASA,GAApC7Q,KAKlCkoB,EAAcx3B,KAAI,CAAC8xB,EAAMxiB,IAElB,eAAC,GAAD,CAA2BwiB,KAAMA,GAAbxiB,KAK3BooB,EAAsB13B,KAAI,CAACslB,EAAMhW,IAE1B,eAAC,GAAD,CAAmCojB,cAAepN,GAAtBhW,QAIvCk1B,GAAgB,eAAC,GAAD,CAAqBO,QAASA,EAASrW,YAAaA,EAAavO,QAASA,EAAS2B,OAAQ0iB,EAAcpjB,QAASgkB,EAAuB1C,gBAAiBA,EAAiB9hB,QAASA,IACrM,eAAC,GAAD,CAAwBkB,OAAQmjB,EAAwB34B,MAAOA,EAAO8U,QAASgkB,EAAuBxkB,QAASA,EAAS8N,YAAaA,EAAagV,WAAYqB,EAAS5kB,QAASA,EAASyT,OAAQA,EAAQvpB,MAAOA,EAAO+pB,cAAeA,MAGjP,EC/OL,MAAMxjB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPgU,OAAQ,CACJxX,MAAO,OACPgE,OAAQT,EAAMS,OAAOwT,OACrB5a,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,MAE9CmqB,UAAW,CACPnjB,YAAa,OA0DNypB,OAtDmC,IAO3C,IAP4C,OAC/CvjB,EAD+C,QAE/CV,EAF+C,IAG/Cgb,EAH+C,gBAI/CsG,EAJ+C,YAK/ChU,EAL+C,QAM/CvO,GACE,EACF,MAAM7N,EAAU1B,MAITpP,EAAOknB,GAAYjW,mBAAiB,IAE3C,OACI,eAACyO,GAAA,EAAD,CACI5O,QAAS,CAAEmG,MAAOnG,EAAQqT,QAC1BxE,OAAO,OACP5O,KAAMuP,EAHV,SAII,eAACqd,GAAA,EAAD,UACI,gBAAC9rB,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAhD,UACI,gBAACjsB,GAAA,EAAD,CAAKC,GAAI,EAAGC,QAAQ,OAAO+G,WAAW,SAASwP,SAAS,OAAxD,UACI,eAACpG,GAAA,EAAD,CAAY7Q,UAAWP,EAAQysB,UAAWrrB,QAb1C,KAChB0N,GAAS,EAYO,SACI,eAAC1E,GAAA,EAAD,UACI,eAAC,KAAD,QAGR,eAAC5J,GAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAGK8vB,EAAY0Q,kBAGrB,eAAC/rB,GAAA,EAAD,CAAKE,QAAQ,OAAOD,GAAI,EAAxB,SACI,eAACR,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,SACKw9B,EAAIpgC,SAGb,eAAC,GAAD,CAAiB0sB,SAAUA,IAC3B,eAACrV,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAhD,SACKlD,EAAIrG,uBAAuB/1B,KAAI,CAAC4gB,EAAStR,IAElC,gBAAC,GAAD,CAAsBof,YAAaA,EAAavO,QAASA,EAAqBS,QAASA,EAASmkB,QAAS3I,EAAIpgC,KAAM0mC,gBAAiBA,EAAiBlhC,MAAOA,EAA5J,yBAA+K,IAAxG8N,aA5BnG,ECpBJ,MAAMsB,GAAYC,aAAYa,IAAD,CACzByyB,MAAO,CACHC,UAAW,SACXlb,UAAW,OACX/R,cAAe,QAEnBktB,OAAQ,CACJzlC,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1B4I,WAAY,OACZ7E,WAAY,MACZiP,aAAc,OA4OPge,OAxOqC,IAA8E,IAA7E,IAAElJ,EAAF,gBAAOsG,EAAP,MAAwBlhC,EAAxB,YAA+BktB,EAA/B,QAA4CvO,EAA5C,iBAAqDolB,GAAuB,EAC7H,MAAM7nB,EAAOC,eACPrL,EAAU1B,KACVhU,EAASkiB,gBACRxS,EAAOqnB,GAAYlhB,sBACnBmhB,EAAQC,GAAaphB,mBAAkB,KACvCpI,EAAO8pB,GAAY1hB,mBAAyB,KAC5C2hB,EAAeC,GAAoB5hB,mBAAiC,KACpE+xB,EAAcC,GAAiBhyB,oBAAkB,IACjDwyB,EAAwBC,GAA2BzyB,oBAAkB,IACrEiiB,EAAeC,GAAoBliB,oBAAkB,IACrDmiB,EAAeC,GAAoBpiB,oBAAkB,IACrDqiB,EAAcC,GAAmBtiB,oBAAkB,IACnDuiB,EAAsBC,GAA2BxiB,oBAAkB,GAsCpE+yB,EAAiB,KACsB,GAArCpJ,EAAIrG,uBAAuBtzB,QAC4C,IAAnE25B,EAAIrG,uBAAuB,GAAGE,0BAA0BxzB,QACgB,WAAnE25B,EAAIrG,uBAAuB,GAAGE,0BAA0B,GAAGj6B,MAA4D,WAAtCogC,EAAIrG,uBAAuB,GAAG/5B,KAAmBkpC,GAAwB,GAMhKT,GAAc,EAAd,EAkDLC,EAAgB,KAClB/P,GAAiB,GACjBE,GAAiB,GACjBE,GAAgB,GAChBE,GAAwB,GAnGN,MAClB,IAAIxzB,EAAS,CAAC,EACdA,EAAM,oBAA0B26B,EAAI5G,oBACpC/zB,EAAM,QAAa,EACnBA,EAAM,QAAa,EACfD,GAAkB,IAATA,IAAaC,EAAM,YAAkBD,GAElDxG,KAAMgwB,KAAKlX,uEAAgFrS,EAAQ7E,GAC9FmjB,MAAK,SAAUC,GACZ,IAAInjB,EAAgBmjB,EAASnjB,KAE7B82B,EAAS92B,GACT83B,GAAiB,GACjB4Q,GAAiB,EACpB,IACA/kB,OAAM,SAAU/iB,GACbk3B,GAAiB,GACjBn3B,QAAQ6nB,IAAI,qCACR5nB,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GAdL,EA8FA4oC,GArDuB,MACvB,IAAI9P,EAAsB,GAE1B,QAAgC5L,IAA5BqS,EAAI5G,oBACJ,IAAK,IAAI5U,KAAWwb,EAAIrG,uBACpB,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWH,gCAC3BF,EAAW1zB,KAAK2zB,EAAQE,iBAMxCjC,EAAU8B,GACVd,GAAiB,EAAjB,EAwCAa,GArCsB,MACtB,IAAIS,EAA4B,GAChC,QAAgCpM,IAA5BqS,EAAI5G,oBACJ,IAAK,IAAI5U,KAAWwb,EAAIrG,uBACpB,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWI,sCAC3BD,EAAUl0B,KAAK2zB,EAAQS,oBAKvClC,EAASgC,GACTpB,GAAgB,EAAhB,EA0BAmB,GAvB8B,MAC9B,IAAIK,EAA4C,GAChD,QAAgCxM,IAA5BqS,EAAI5G,oBACJ,IAAK,IAAI5U,KAAWwb,EAAIrG,uBACpB,IAAK,IAAIC,KAAcpV,EAAQqV,0BAC3B,IAAK,IAAIL,KAAWI,EAAWQ,8CAC3BD,EAAkBt0B,KAAK2zB,EAAQa,4BAK/CpC,EAAiBkC,GACjBtB,GAAwB,EAAxB,EAYAqB,EAA2B,EAGzBI,EAAuB,CAAC/b,EAAmDnZ,KAC7E,IAAIm1B,GAAU,EACd,GAAIn1B,EAAO,CACP,MAAMo1B,EAAa,CAAC,SACpB,IACIC,EACAC,EAFAC,GAAgB,EAGpBF,EAAar1B,EAAMw1B,UAAU,OAAOC,QAAQ,mBAAoB,IAChEL,EAAW90B,SAASo1B,SACOnN,IAAnBpP,EAAKuc,KACLJ,EAAanc,EAAKuc,GAAUF,UAAU,OAAOC,QAAQ,mBAAoB,IACrEH,EAAWn1B,cAAcK,SAAS60B,EAAWl1B,iBAC7Co1B,GAAgB,GAEvB,IAEAA,IACDJ,GAAU,EAEjB,CACD,OAAOA,CAAP,EAsBEU,EAA6B,OAAXzD,EAAmB,GAnBhB,EAACA,EAAiBpyB,IAClCoyB,EAAOnuB,QAAQ6xB,GACJZ,EAAqBY,EAAO91B,KAiBF+1B,CAAmB3D,EAAQpyB,GACrEg2B,EAA2B,OAAVntB,EAAkB,GAdf,EAACA,EAAuB7I,IACvC6I,EAAM5E,QAAQqsB,GACH4E,EAAqB5E,EAAMtwB,KAYHi2B,CAAkBptB,EAAO7I,GACjEk2B,EAA2C,OAAlBtD,EAA0B,GATvB,EAACA,EAAuC5yB,IAC/D4yB,EAAc3uB,QAAQkyB,GACXjB,EAAqBiB,EAAcn2B,KAOKo2B,CAA0BxD,EAAe5yB,GAavG,OAXA8P,qBAAU,KACN,MAAM6lB,EAAY77B,YAAW,KACzBopC,GAAe,GAChB,KACH,MAAO,IAAMtN,aAAaD,EAA1B,GACD,CAACiF,EAAK56B,IAET8P,qBAAU,KACNozB,GAAe,GAChB,IAEChQ,GAAiBI,GAAgBF,GAAiBI,EAE9C,sBAAKnZ,MAAO,CAAE+I,SAAU,SAAU1H,WAAY,OAAQgM,UAAW,SAAU/R,cAAe,SAAU5D,QAAS,OAAQC,eAAgB,UAArI,SACI,eAACqkB,GAAA,EAAD,CAAkBttB,KAAM,OAK5B,gBAAC8I,GAAA,EAAD,WACI,eAAC,GAAD,CAAiBqb,YAAaA,EAAavO,QAASA,EAASic,IAAKA,EAAKta,OAAQ0iB,EAAcpjB,QAASokB,EAAgB9C,gBAAiBA,IACvI,eAAC,GAAD,CAAwBgB,WAAYhV,EAAY0Q,aAActd,OAAQmjB,EAAwB7I,IAAKA,EAAK9vB,MAAOA,EAAO8U,QAASokB,EAAgBrlB,QAASA,EAASuO,YAAaA,EAAakF,OAAQA,EAAQvpB,MAAOA,EAAO+pB,cAAeA,IACxO,gBAAC/gB,GAAA,EAAD,CAAKE,QAAQ,OAAb,UACI,eAACT,GAAA,EAAD,CAAYC,QAAQ,KAAKnU,MAAM,cAA/B,SACKw9B,EAAIpgC,OAET,eAACyX,GAAA,EAAD,CAAQZ,UAAWP,EAAQ+xB,OAAQ95B,KAAK,SAASmJ,QAAS,KA1J7B,GAArC0oB,EAAIrG,uBAAuBtzB,QAC4C,IAAnE25B,EAAIrG,uBAAuB,GAAGE,0BAA0BxzB,QACgB,WAAnE25B,EAAIrG,uBAAuB,GAAGE,0BAA0B,GAAGj6B,MAA4D,WAAtCogC,EAAIrG,uBAAuB,GAAG/5B,KAAmBkpC,GAAwB,GAMhKT,GAAc,EAkJT,WACK/mB,EAAKI,cAAc,CAAEpiB,GAAI,yBAGlC,gBAACmpC,GAAA,EAAD,CAAOxhB,UAAU,MAAMpR,QAAS,EAAGY,UAAWP,EAAQ6xB,MAAtD,UACK73B,EAAMtM,KAAI,CAAC0lC,EAAWp2B,IAEf,eAAC,GAAD,CAAkCof,YAAaA,EAAa+T,YAAaiD,EAAWhD,gBAAiBA,GAA1EpzB,KAKlC+nB,EAAer3B,KAAI,CAACs3B,EAAOhoB,IAEpB,eAAC,GAAD,CAAkC8hB,YAAakG,EAAOnX,QAASA,GAApC7Q,KAKlCkoB,EAAcx3B,KAAI,CAAC8xB,EAAMxiB,IAElB,eAAC,GAAD,CAA2BwiB,KAAMA,GAAbxiB,KAK3BooB,EAAsB13B,KAAI,CAACslB,EAAMhW,IAE1B,eAAC,GAAD,CAAmCojB,cAAepN,GAAtBhW,UAMnD,EClPUq2B,OAd+B,IAAwD,IAAvD,YAAEjX,EAAF,MAAeltB,EAAf,QAAsB2e,EAAtB,iBAA+BolB,GAAuB,EACjG,OACI,eAAClyB,GAAA,EAAD,CAAKE,QAAQ,OAAOmE,cAAc,SAAS4nB,IAAK,EAAhD,SACK5Q,EAAY8N,mBAAmBx8B,KAAI,CAACo8B,EAAK9sB,IAClB,KAAhB8sB,EAAIY,UAAmC,KAAhBZ,EAAIY,WAAwD,IAApCZ,EAAIW,6BAE/C,eAAC,GAAD,CAAkBwI,iBAAkBA,EAAkB7W,YAAaA,EAAavO,QAASA,EAAqBic,IAAKA,EAAKsG,gBAAiBhU,EAAYgU,gBAAiBlhC,MAAOA,GAAtE8N,GAEjG,QAP1B,E,WCYJ,MAAMsB,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPi0B,YAAa,CACT1oB,WAAY,UACZgM,UAAW,WAEf7U,QAAQ,CACJzV,MAAO8S,EAAME,QAAQyC,QAAQK,UA2EtBmxB,OAvEmD,IAA6B,IAA5B,UAAEhzB,KAAc2I,GAAW,EAC1F,MAAOqH,EAAU6d,GAAe5H,IAAMrmB,SAAS,OACzC,SAAEzU,EAAF,aAAYklB,GAAiBC,eAC7B7Q,EAAU1B,MACT6E,EAAQ2N,GAAa3Q,mBAAS,CACjCgY,SAAUzsB,EAASysB,WAYjBqb,EAAwBC,IAC1BrF,EAAY,MACZxd,EAAa,IACNzN,EACHgV,SAAUsb,GAFd,EAME/b,EAAqBS,GACP,cAAZA,EACyB,MAArBzsB,EAASysB,SAAyB,eAAC3X,GAAA,EAAD,CAAYD,UAAWP,EAAQ+B,QAA/B,SAAyCoW,IACnE,eAAC3X,GAAA,EAAD,CAAYG,UAAW,OAAvB,SAAgCwX,IAGnB,MAArBzsB,EAASysB,SAAyB,eAAC3X,GAAA,EAAD,CAAYD,UAAWP,EAAQ+B,QAA/B,SAAyCoW,IACnE,eAAC3X,GAAA,EAAD,CAAYG,UAAW,OAAvB,SAAgCwX,IAIpD,OACI,gBAACpX,GAAA,EAAD,WACI,eAACqQ,GAAA,EAAD,CACIhQ,QA9BS9T,IACjB8gC,EAAY9gC,EAAM8hC,cAAlB,EA4BI,SAGI,eAAChlB,GAAA,EAAD,CAAS4H,GAAI,CAAErM,SAAU,IAAzB,SACI,eAAC,KAAD,QAGR,gBAACuK,GAAA,EAAD,CACI9mB,GAAG,gBACHmnB,SAAUA,EACVF,aAAW,EACXpQ,KAAM/B,QAAQqS,GACdzB,QArCQ,KAChBsf,EAAY,KAAZ,EA+BI,UAOI,eAAC3d,GAAA,EAAD,CAAUrP,QAAS,IAAMoyB,EAAqB,MAA9C,SACI,eAAChzB,GAAA,EAAD,CAAYG,UAAW,OAAvB,SACK+W,EAAkB,kBAG3B,eAACjH,GAAA,EAAD,CAAUrP,QAAS,IAAMoyB,EAAqB,MAA9C,SACI,eAAChzB,GAAA,EAAD,CAAYG,UAAW,OAAvB,SACK+W,EAAkB,oBAvBvC,ECtDJ,MAAMpZ,GAAYC,aAAYa,GAC1BZ,YAAa,CACTa,KAAM,CACFgT,SAAU,GAEduZ,YAAa,CACTnzB,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1C5Z,MAAO,WAEXie,OAAQ,CACJ9R,gBAAiB2G,EAAME,QAAQ2G,WAAWC,aA+CvCwtB,OA1C+C,IAA+B,IAA9B,YAAEtX,EAAF,QAAevO,GAAc,EACxF,MAAM7N,EAAU1B,KACA6Q,cAEhB,OACI,sBAAK5O,UAAWP,EAAQX,KAAxB,SACI,eAAC0S,GAAA,EAAD,CAAQze,SAAS,SAASiN,UAAWP,EAAQuK,OAA7C,SACI,gBAAC2H,GAAA,EAAD,WACA,eAACsa,GAAA,EAAD,CAAY3e,QAASA,EAASsb,gBAAiB/M,EAAY+M,kBAEvD,gBAACoJ,GAAA,EAAD,CAAOxhB,UAAW,MAAOnG,WAAW,OAAOoiB,IAAK,EAAhD,UACI,eAACjsB,GAAA,EAAD,UACI,eAACI,GAAA,EAAD,CACIN,KAAK,+BACLN,UAAWP,EAAQ4rB,YACnBK,UACI,eAAC7hB,GAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,eAAC,KAAD,MALZ,SASI,eAAC,KAAD,CAAkBvc,GAAG,8DAG7B,eAAC2X,GAAA,EAAD,UACI,eAACI,GAAA,EAAD,CACIN,KAAK,wCACLJ,QAAQ,YAFZ,SAII,eAAC,KAAD,CAAkBrX,GAAG,iEAG7B,eAAC2X,GAAA,EAAD,UACI,eAAC,GAAD,eA7BxB,ECrBJ,MAAMzC,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPia,UAAW,CACPjU,UAAW,QACXxJ,MAAO,QAEX83B,iBAAkB,CACd/c,UAAW,WA0CJgd,OAtCyB,IAA+B,IAA9B,QAAE/lB,EAAF,YAAWuO,GAAkB,EAClE,MAAOltB,EAAOknB,GAAYjW,mBAAiB,KACpC0zB,EAAiBZ,GAAoB9yB,oBAAkB,GACxDH,EAAU1B,KACDkO,eAC0B,IAAIsnB,IAE7C,OAAI1X,EACIyX,EAEI,uCACI,eAAC,GAAD,CAAuBzX,YAAaA,EAAavO,QAASA,IAC1D,eAACgf,GAAA,EAAD,CAAWntB,SAAS,KAAKa,UAAWP,EAAQsZ,UAA5C,SACI,gBAACvY,GAAA,EAAD,WACI,eAACA,GAAA,EAAD,CAAKC,GAAI,EAAT,SACI,eAAC,GAAD,CAAoBob,YAAaA,MAErC,eAACrb,GAAA,EAAD,UACI,eAAC,GAAD,CAAiBqV,SAAUA,MAE/B,eAACrV,GAAA,EAAD,CAAKC,GAAI,EAAT,SACI,eAAC,GAAD,CAAeiyB,iBAAkBA,EAAkB7W,YAAaA,EAAavO,QAASA,EAAS3e,MAAOA,cAStH,eAAC6R,GAAA,EAAD,CAAKE,QAAQ,OAAOC,eAAe,SAAnC,SACI,eAACqkB,GAAA,EAAD,CAAkBttB,KAAM,IAAKsI,UAAWP,EAAQ2zB,qBAIlD,IAAP,ECxCX,MAAMr1B,GAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF5G,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,KAC1C+C,UAAW,QACXR,cAAezF,EAAMO,QAAQ,IAEjCsG,WAAY,CACRxN,gBAAiB2G,EAAME,QAAQ2G,WAAW3D,UAyInCyxB,OArImD,IAE3D,IAF4D,iBAC/DC,GACE,EACF,MAAMh0B,EAAU1B,MACT8d,EAAa6X,GAAkB9zB,sBAC/B0N,EAASqmB,GAAc/zB,sBACvBwR,EAASC,GAAczR,oBAAS,GACjC7V,EAASkiB,eACT2nB,EAAaC,eACZ9X,EAAuBV,GAA0Bzb,oBAAkB,IACnEkc,EAAcV,GAAmBxb,sBACjCoc,EAAYC,GAAiBrc,mBAAwB,MAEtDf,EAAQitB,eACRgI,EAAkB/H,aAAcltB,EAAM8D,YAAYqpB,KAAK,OAwDvD+H,EAA6B,KAC/B1Y,GAAuB,EAAvB,EAeJ,OAZA5c,qBAAU,KA5Ca,MACnB,IAAI7P,EAAS,CAAC,OACoBsoB,IAA9B0c,EAAU,aAA+D,KAA9BA,EAAU,cACrDhlC,EAAM,gBAAsBu4B,SAASyM,EAAU,cAE3B,MAApBH,QAAgDvc,GAApBuc,IAC5B7kC,EAAM,gBAAsB6kC,GAEhCtrC,KAAMgwB,KAAKlX,+DAAwErS,EAAQ7E,GACtFmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAC3B,MAAMgqC,EAA+B7mB,EAASnjB,KAE9C,GADA0pC,EAAeM,GACgB,OAA3BJ,EAAU,eAAoD1c,IAA3B0c,EAAU,SAA4B,CACzE,IAAIK,EAAe,CAAC,EACpBA,EAAY,SAAeL,EAAU,SACrCzrC,KAAMgwB,KAAKlX,kDAA2DgzB,EAAclqC,GAC/EmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MAAQ4pC,EAAU,WACvCxY,EAAgBjO,EAASnjB,MACzBqxB,GAAuB,GAE9B,IACA1N,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI,sCACR5nB,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GACR,CACJ,CACJ,IACA2jB,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI,sCACR5nB,GAASA,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAC1CW,QAAQ6nB,IAAI5nB,EAAMuiB,SAASnjB,KAElC,GA7BL,EAqCAkqC,EAAgB,GACjB,CAACN,EAAU,cAEdn1B,qBAAU,KACFod,GAAeA,EAAYtO,aA/DhB,MACf,IAAI3e,EAAS,CAAE,WAAcitB,EAAYtO,YACzCplB,KAAMgwB,KAAKlX,6DAAsErS,EAAQ7E,GACpFmjB,MAAK,SAAUC,GACZ,GAAIA,GAAYA,EAASnjB,KAAM,CAC3B,IAAImqC,EAAuBhnB,EAASnjB,KACpC2pC,EAAWxmB,EAASnjB,MACE6xB,EACN0Q,aAAe4H,EAAYhrC,KAC3CkoB,GAAW,EACd,CACJ,GATL,EA8DI+iB,GACAC,aAA2CxY,EAAYtO,YAC1D,GACF,CAACsO,IAGW,GAAXzK,EACO,KAKH,uBAAKpR,UAAWP,EAAQiG,WAAxB,UACKkuB,EAAU,UAAgBA,EAAU,aAAmB7X,GACpD,eAACU,GAAA,EAAD,CACIxN,OAAQ8M,EACRxN,QAASwlB,EACTrX,MAAOZ,EACPE,WAAYA,EACZC,cAAeA,EACfvO,cAAekmB,EAAU,cAGjC,gBAACU,GAAA,EAAD,CACIt0B,UAAWP,EAAQX,KACnBpS,MAAM,QAFV,UAII,eAAC8T,GAAA,EAAD,CAAKE,QAAmB,GAAVozB,EAAkB,OAAS,QAAzC,SACI,eAAC,GAAD,CAAYxmB,QAASA,EAASuO,YAAaA,MAE/C,gBAACrb,GAAA,EAAD,CAAKE,QAAmB,GAAVozB,EAAiB,OAAS,QAAxC,UACI,eAAC,GAAD,CACIxmB,QAASA,EACTsb,gBAAiB/M,EAAY+M,kBAEjC,eAAC,GAAD,CAActb,QAASA,EAASsb,gBAAiB/M,EAAY+M,kBAC7D,eAAC,GAAD,CACIe,mBAAoB9N,EAAY8N,mBAChCrc,QAASA,EACT0K,YAAa6D,EAAY7D,YACzB4Q,gBAAiB/M,EAAY+M,wBAIzC,eAAC,GAAD,CACIA,gBAAiB/M,EAAY+M,gBAC7Btb,QAASA,MAIxB,ECrIL,MAAMinB,GAAMC,YAAO,CAAEC,QAAS,IAAIC,cAAYD,QAASE,SACjDhmB,GAAUimB,cAmEDC,OAjEC,KACZ,MAAM,SAAE1pC,GAAamlB,gBACdziB,EAAUinC,GAAel1B,qBAChC,IAAIm1B,EAAUC,EAAQ,MACtB,MAAO5jB,EAAS6jB,GAAar1B,oBAAkB,GAc/ChW,eAAesrC,SACehe,IAAtB/rB,EAASysB,UACTkd,QAdR,SAAwBK,GACpB,OAAQA,GACJ,IAAK,KACD,OAAO,oCACX,IAAK,KACD,OAAO,oCACX,QAEI,OADAhqC,EAASysB,SAAUwd,KAAUC,GACtB,oCAElB,CAIyBC,CAAenqC,EAASysB,SAAS9oB,gBAEvDmmC,GAAU,EACb,CAEDx2B,qBAAU,KACNy2B,GAAa,GACd,CAAC/pC,EAASysB,WAEb,MAAM6b,EAAmB8B,eACzB,OAAInkB,EAAgB,KAGZ,eAACokB,EAAA,EAAD,CAAsBC,aAAW,EAAjC,SACI,eAAC,KAAD,CACIN,OAAQhqC,EAASysB,SACjB/pB,SAAUknC,EAAQlnC,GAFtB,SAII,eAAC6nC,EAAA,EAAD,CAAe72B,MAAOA,GAAtB,SACI,eAAC82B,EAAA,EAAD,CAAgBpB,IAAKA,GAArB,SACI,eAAC,IAAD,CAAyBqB,MAAOC,IAAhC,SACI,eAAC,IAAD,CACIC,OAAK,EACLC,SAAU,EAFd,SAII,eAAC,IAAD,CAAQpnB,QAASA,GAAjB,SACI,gBAAC,KAAD,WACI,eAAC,EAAD,IACA,eAAC,GAAD,IACA,eAAC,GAAD,KACEqnB,gBAAc,eAAC,GAAD,IACM,MAApBvC,GAA6B,eAAC,GAAD,CAAyBA,iBAAkB,IACpD,MAApBA,GAA6BzgB,GAAaC,oBAUnF,EC1ELgjB,cAEAC,IAAStlB,OACL,eAAC,IAAD,CAAUulB,MAAOA,IAAjB,SACI,eAAC,IAAD,UACI,eAAC,GAAD,QAIRr1B,SAASs1B,eAAe,StE2GpB,kBAAmB5H,WACnBA,UAAU6H,cAAcC,MACnBppB,MAAKqpB,IACFA,EAAaC,YAAb,IAEH7oB,OAAM/iB,IACHD,QAAQC,MAAMA,EAAMR,QAApB,G,mCuE5IDqsC,IALM,SAACC,GAAD,IAAa/pB,EAAb,uDAA2B,KAA3B,OAAoC+pB,EAAIlqB,QAAO,CAACmqB,EAAa1mB,KAC9E0mB,EAAY1mB,EAAQtD,IAAQsD,EACrB0mB,IACR,CAAC,EAHiB,C,mCCArB,yCAeA,MAAM54B,EAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF/S,MAAO8S,EAAME,QAAQwC,KAAKE,UAC1BvJ,gBAAiB2G,EAAME,QAAQsD,KAAK,KACpC4D,WAAYpH,EAAMkH,WAAWE,WAC7BwB,WAAY,SACZtD,aAAc,EACdzD,QAAS,cACToR,SAAU,EACV8kB,WAAY,SACZ1sB,OAAQ,UACRolB,WAAY,EACZlqB,SAAUvG,EAAMkH,WAAW8wB,QAAQ,IACnCxxB,WAAYxG,EAAMkH,WAAWmC,iBAC7B7M,OAAQ,GACRsF,eAAgB,SAChB4E,cAAe,GACf6O,SAAU,GACVhW,QAASS,EAAMO,QAAQ,GAAK,GAC5BmE,cAAe,aAEnB/B,QAAS,CACLzV,MAAO8S,EAAME,QAAQyC,QAAQK,KAC7B3J,gBAAiByJ,YAAM9C,EAAME,QAAQyC,QAAQK,KAAM,MAEvDJ,UAAW,CACP1V,MAAO8S,EAAME,QAAQ0C,UAAUI,KAC/B3J,gBAAiByJ,YAAM9C,EAAME,QAAQ0C,UAAUI,KAAM,MAEzDjX,MAAO,CACHmB,MAAO8S,EAAME,QAAQnU,MAAMiX,KAC3B3J,gBAAiByJ,YAAM9C,EAAME,QAAQnU,MAAMiX,KAAM,MAErDI,QAAS,CACLlW,MAAO8S,EAAME,QAAQkD,QAAQJ,KAC7B3J,gBAAiByJ,YAAM9C,EAAME,QAAQkD,QAAQJ,KAAM,MAEvDK,QAAS,CACLnW,MAAO8S,EAAME,QAAQmD,QAAQL,KAC7B3J,gBAAiByJ,YAAM9C,EAAME,QAAQmD,QAAQL,KAAM,UAkC5C+W,IA9Be,IAMvB,IANwB,UAC3B5Y,EAAY,GADe,MAE3BjU,EAAQ,GAFmB,SAG3B+a,EAH2B,MAI3BkC,KACGL,GACD,EACF,MAAMlJ,EAAU1B,IAEhB,OACI,sBACIiC,UACIkJ,YAAKzJ,EAAQX,KAAM,CACf,CAACW,EAAQ1T,IAASA,GACnBiU,MAEH2I,EANR,SAQK7B,GATT,C,mCCnEJ,wIAAO,MAAM6L,EAAc,QAEdmkB,GAAyB,EAEzBC,EAAS,CAClBC,MAAO,QACPC,SAAU,WACVC,QAAS,WAGA9B,EAAY,CACrB+B,GAAI,KACJ9B,GAAI,K,4ECZR,2fA4BA,MAAMt3B,UAAYC,+DAAYa,IAAD,CACzBu4B,iBAAkB,CACdrkC,SAAU,WACVyH,IAAKqE,EAAMO,QAAQ,GACnB9E,KAAMuE,EAAMO,QAAQ,GACpBE,OAAQ,KACRpH,gBAAiB,YAInBm2B,gBAA4C,OAS3C,IAT4C,cAC/CP,cAD+C,MAE/CpR,MAF+C,WAG/CV,WAH+C,cAI/CC,cAJ+C,aAK/CqS,aAL+C,YAM/C+I,YAN+C,YAO/CC,eACG3uB,MACD,KAEF,MAAMolB,QAAUD,cAAcC,SACvBwJ,SAAUC,aAAe53B,oDAAS,IACnCH,QAAU1B,YACV05B,mBAAqB3oB,kDAAO,OAE5B,YACF4oB,aACAC,0DAAiBJ,WAEf,WACFK,WADE,kBAEFC,mBACAC,0DAAUP,UAEd94B,sDAAU,KACN,IAAK84B,SACD,OAGJ,MAAMQ,EAAmBL,YAAYM,WAAUC,IAC3Chc,cAAcgc,EAAd,IAGJ,MAAO,KACHF,EAAiBG,aAAjB,CADJ,GAGD,CAACX,SAAUG,cAEd,MAAMS,mBAAsBnuC,IACxB,MAAM,SAAEutC,GAAavtC,EAGhButC,GAILC,YAAYD,EAAZ,EAGEa,kBAAqBrK,IACvB,IAAKwJ,SACD,OAGJ,IAAIc,EAAgB3b,MAAMhB,SAASzwB,MAAM,KACrCqtC,EAA6C,IAApBD,EAAc,GAAW,GAA2B,IAApBA,EAAc,KAAaA,EAAc,GAGtG,IAAIE,EAAc,EACdvc,aACAuc,EAAcvc,YAGduc,EAAuC,IAAvBD,EAA+B,MAC/CC,EAAc,GAGlBX,WAAW,CAAEY,OAAQD,EAAaE,OAAO,GAAzC,EAGEC,kBAAqBC,oBACvB,GAAIA,kBACA,IACIC,KAAKD,mBACLhuC,QAAQ6nB,IAAI,gCAGf,CAFC,MAAO5nB,OACLD,QAAQC,MAAM,wCAAyCA,MAC1D,CACJ,EAGCiuC,gBAAmB9uC,IAKrB,MAAM+uC,EAAIl7B,OAAM,cAAkBm7B,GAAGC,OAAOF,EAC5C,IAAIG,OACgB/hB,IAAhBogB,cACA2B,EAAiB3B,YAAYnqC,KAAK+rC,IAC9B,MAAMC,EAAQ,sBAAkBD,EAAQE,YAuBxC,OAtBqBN,EAAE,MAAO,CAC1BjwC,GAAIswC,EACJt4B,QAAS,KACL63B,kBAAkBQ,EAAQP,kBAA1B,EAEJ3vB,MAAO,CACHxO,IAAI,GAAD,OAAK0+B,EAAQG,WAAb,KACH/+B,KAAK,GAAD,OAAK4+B,EAAQI,WAAb,KACJh+B,MAAO49B,EAAQ59B,MACfD,OAAQ,OACRqK,WAAYwzB,EAAQK,iBACpB74B,QAAS,OACT0E,SAAU8zB,EAAQM,UAClBn0B,WAAY,MACZ0M,SAAU,SACVhmB,MAAOmtC,EAAQO,WACf/e,QAAS,IACTtc,QAAS,SACTrL,SAAU,aAEfmmC,EAAQ33B,KAEX,KAmBR,MAfkB,IACXxX,EACHgvC,GAAI,IACIhvC,EAAOgvC,IAAM,CAAC,EAClBW,aAAc,KACL3vC,EAAOgvC,IAAM,CAAC,GAAGW,cAAgB,GACtC,CACI7kC,MAAO,aACP8kC,QAAS,CAAC,YACV5gB,UAAW,YACXjZ,IAAK,IAAMm5B,KAK3B,EAGEW,WAAa,CAACV,EAAkBld,KAClC,MAAM,oBAAE6d,EAAF,qBAAuBC,GAAyBZ,EACtD,OAAOld,GAAc6d,GAAuB7d,GAAc8d,CAA1D,EAiBJ,OAdAr7B,sDAAU,KACN,GAAI84B,UAA2B,OAAfvb,iBAAuC9E,IAAhBogB,YACnC,IAAK,IAAI4B,KAAW5B,YAAa,CAC7B,MAAM6B,EAAQ,sBAAkBD,EAAQE,YAClCW,EAAgBj5B,SAASs1B,eAAe+C,GAC9C,GAAIY,EAAe,CACf,MAAMC,EAAkBJ,WAAWV,EAASld,YAC5C+d,EAAc/wB,MAAMtI,QAAUs5B,EAAkB,QAAU,MAE7D,CACJ,CACJ,GACF,CAACzC,SAAUvb,aAGV,kEAAKnN,IAAK4oB,mBAAoBzuB,MAAO,CAAEjW,SAAU,WAAYsI,OAASizB,cAAgB,OAAShzB,MAAQ+7B,aAAe,QAAtH,SACI,2DAAC,kDAAD,CACItJ,QAASA,QACTkM,UAAU,EACVC,cAAe9B,kBACfS,gBAAiBA,gBACjBsB,eAAgBhC,sBAP5B,EAiBJ9J,gBAAgBjrB,aAAe,CAC3B4Y,WAAY,MAGDqS,qC,mCCtNf,mCAyDezc,IA/Ca,CAAC6B,EAAOpY,EAASC,KACzC,MAAM8+B,EAAoBvwC,KAAKC,MAAMmd,aAAaC,QAAQ,UACnDgK,EAAkBC,GAAuBvR,sBACzCwR,EAASC,GAAczR,oBAAkB,GA2BhD,OAzBAnB,qBAAU,KACN,GAAKyS,EAmBDG,GAAW,OAnBQ,CACnB,IAAIziB,EAAS,CACTuhB,gBAAiBiqB,EAAkBjqB,iBAEvChoB,IAAMgwB,KAAKlX,wDAAiErS,GACvEse,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,KACrBmnB,EAAoBhE,EAASnjB,MAG7BmnB,EAAoB,mBAE3B,IACAxD,OAAM,SAAU/iB,GACbumB,EAAoB,mBACvB,IACLE,GAAW,EACd,CAGA,GAEF,IAECD,EACO,KAIH,qBACIpI,MAAO,CAAEkB,OAAQ,UAAW5O,MAAO,SACnCD,OAAQA,EACRC,MAAOA,EACP6vB,IAAI,OACJ9pB,IAAK6P,KACDuC,GAGf,C,kCCtDL,+bAQO,MAAMxH,EAAc,KACvB,IAAIuW,EAAQvb,aAAaC,QAAQ,eAIjC,MAHa,CACTlc,QAAS,CAAED,cAAc,UAAD,OAAYy3B,IAExC,EAGS+S,EAA0B,KACnC,IAAI8E,EAASz8B,OAAOlH,SAAS4jC,KAAKrvC,MAAM,KAAK,GACzCsvC,EAAY,KAChB,MAAMC,EAAe,CACjBC,QAAS,CACLC,YAAa,IAEjBC,UAAW,CACPD,YAAa,KAUrB,OAFIH,EALW,MAAVF,QAA4BnjB,GAAVmjB,IAAyBG,EAAaH,GAK7C,KAHAG,EAAaH,GAAQK,YAK9BH,CAAP,EAGSvE,EAAW,IACbp4B,OAAOlH,SAASiI,SAASi8B,WAAW,kBAGlCC,EAAoBt5B,GACtB,KAAKu5B,KAAKv5B,GAQRw5B,EAAiBC,IAC1B,MAAMC,EAAYC,EAAaF,EAAU,CACrCG,YAAa,CAAC,IAAK,IAAK,KAAM,SAAU,IAAK,IAAK,KAAM,KAAM,KAAM,KAAM,IAAK,KAAM,KAAM,KAAM,KAAM,MACvGC,kBAAmB,CACfC,EAAG,CAAC,OAAQ,aAGpB,OAAOvxC,YAAMmxC,EAAb,EAGSK,EAAkC1xC,UAC3C,IAAIK,EAAOJ,KAAKC,MAAMmd,aAAaC,QAAQ,SACvCtY,EAAS,CAAE,gBAAmB,GAE9B3E,GAAQA,EAAKkmB,kBACbvhB,EAAS,CAAE,gBAAmB3E,EAAKkmB,kBAGvC,IACI,MAAMhD,QAAiBhlB,IAAMgwB,KAAKlX,2EAAoFrS,GACtH,GAAIue,GAAYA,EAASnjB,KAErB,OADAid,aAAasK,QAAQ,8CAA+C1nB,KAAK0xC,UAAUpuB,EAASnjB,OACrFH,KAAK0xC,UAAUpuB,EAASnjB,KAKtC,CAHC,MAAOY,GAEL,OADAD,QAAQ6nB,IAAI5nB,GACL,EACV,GAGQypC,EAA6CzqC,UACtD,IAAIgF,EAAS,CAAE,WAAc2e,GAC7B,IACI,MAAMJ,QAAiBhlB,IAAMgwB,KAAKlX,sEAA+ErS,GACjH,GAAIue,GAAYA,EAASnjB,KAErB,OADAid,aAAasK,QAAQ,8CAA+C1nB,KAAK0xC,UAAUpuB,EAASnjB,OACrFH,KAAK0xC,UAAUpuB,EAASnjB,KAKtC,CAHC,MAAOY,GAEL,OADAD,QAAQ6nB,IAAI5nB,GACL,EACV,GAGQ4wC,EAAqC5xC,UAC9C,IAAIK,EAAOJ,KAAKC,MAAMmd,aAAaC,QAAQ,SACvCtY,EAAS,CAAE,gBAAmB,GAE9B3E,GAAQA,EAAKkmB,kBACbvhB,EAAS,CAAE,gBAAmB3E,EAAKkmB,kBAGvC,IACI,MAAMhD,QAAiBhlB,IAAMgwB,KAAKlX,8EAAuFrS,GACzH,GAAIue,GAAYA,EAASnjB,KAErB,OADAid,aAAasK,QAAQ,iDAAkD1nB,KAAK0xC,UAAUpuB,EAASnjB,OACxFH,KAAK0xC,UAAUpuB,EAASnjB,KAKtC,CAHC,MAAOY,GAEL,OADAD,QAAQ6nB,IAAI5nB,GACL,EACV,GAGQ6wC,EAA6C,KACtDx0B,aAAay0B,WAAW,8CAAxB,EAGSC,EAAgD,KACzD10B,aAAay0B,WAAW,8CAAxB,EAGSjwB,EAAsBmwB,IAC/B,MAAM,SAAEzwC,GAAamlB,cACfzF,EAAOC,cACP+wB,EAAyC,OAAtB1wC,EAASysB,SAAoBkkB,EAAqBC,EACrE9xC,EAAOJ,KAAKC,MAAMmd,aAAaC,QAAQ,SAE7C,QAA6BgQ,IAAzBjtB,EAAKkmB,iBAA0D,OAAzBlmB,EAAKkmB,gBAA0B,CACrE,MAAM6rB,EAAiB/xC,EAAKkmB,gBAEtB8rB,EAAgBJ,EADSK,OAAOF,IAEhCjY,EAAa6X,EAAa3wC,MAAM,KACtC,IAAI0F,EAAQsrC,EACZ,IAAK,MAAM5X,KAAYN,EAAY,CAC/B,IAAIpzB,GAA0B,kBAAVA,KAAsB0zB,KAAY1zB,GAGlD,OAAOka,EAAKI,cAAc,CAAEpiB,GAAI+yC,IAFhCjrC,EAAQA,EAAM0zB,EAIrB,CAED,MAAyB,kBAAV1zB,QAAgCumB,IAAVvmB,EAAuBka,EAAKI,cAAc,CAAEpiB,GAAI+yC,IAAkBM,OAAOvrC,EACjH,CACG,OAAOka,EAAKI,cAAc,CAAEpiB,GAAI+yC,GACnC,C,mCCjJL,sFAKA,MAAMO,EAAY,CACdC,aAAc,eACdC,WAAY,CAAC,CAAEC,KAAM,CAAC,mCAG1B,IAAIC,EAEAA,EADsB,WAAtB7lC,SAAS8lC,SACM,gCAEA,iEAGZ,MAAMC,EAAmBxW,IAAMyW,cAAc,CAChDC,GAAI,KACJ/zC,MAAO,GACPg0C,aAAc,KACdC,kBAAmB,KACnBC,WAAa7yC,MACb8yC,gBAAgB,EAChBC,gBAAkBn0C,MAClBo0C,iBAAmBjzC,QAaVkzC,EAAoB,IAAiB,IAC1CP,EAEAQ,GAH0B,SAACr2B,GAAc,EAK7C,MAAM/c,EAASkiB,cAETmxB,EAAYtuB,iBAAe,CAACuuB,GAAI,KAAM/vB,QAAS,OAC/CgwB,EAAgBxuB,iBAAuC,CAAC,GACxDyuB,EAAUzuB,iBAAqB,KAC9BlmB,EAAO40C,GAAY59B,mBAA4B,IAChDg9B,EAAe9tB,iBAAmB,OACjCiuB,EAAgBU,GAAqB79B,oBAAkB,IAIvDi9B,EAAmBa,GAAwB99B,qBAE5C+9B,EAAiBC,uBAAa/0C,IAAgB,IAAD,EAC1Cy0C,EAAcrtB,QAAQpnB,KACvBA,KAAE,UAAK+zC,EAAa3sB,eAAlB,aAAK,EAAsBpnB,KAAIi0C,EAAW,MAChDQ,EAAcrtB,QAAQpnB,GAAIw0C,GAAGQ,eACtBP,EAAcrtB,QAAQpnB,GAA7B,GACD,IAEGi1C,EAAsBF,uBACxBh0C,MAAOyzC,EAAuBU,KAC1B,IACI,MAAMC,QAAYX,EAAGY,YAAY,CACjCC,qBAAqB,EACrBC,qBAAqB,IAKrB,SAFMd,EAAGe,oBAAoB,IAAIC,sBAAsBL,KAElDrB,EAAI,OACT2B,EAAY,CACRlwC,KAAM,gBACNpE,KAAM,CACFg0C,MACAO,iBAAkBpB,EAClBY,mBAKX,CAFC,MAAOnzC,GACLD,QAAQ6nB,IAAI5nB,EACf,IAEL,IAGE4zC,EAA+BZ,uBAAaa,IAC9C,IACI,MAAMpB,EAAK,IAAIqB,kBAAkBvC,GAgEjC,OA9DAmB,EAAcrtB,QAAQwuB,GAAY,CAC9BpB,GAAIA,EACJ/vB,QAAS,MAGb3iB,QAAQ6nB,IAAI,gBAAiB8qB,EAAcrtB,SAE3CqtB,EAAcrtB,QAAQwuB,GAAUpB,GAAGsB,eAAkBC,IAC3CA,EAAEC,WAAalC,GACrB2B,EAAY,CACRlwC,KAAM,oBACNpE,KAAM,CACF60C,UAAWD,EAAEC,UACbN,iBAAkBpB,EAClBY,eAAgBU,IALxB,EAUJnB,EAAcrtB,QAAQwuB,GAAUpB,GAAGyB,2BAA8BF,IAC7Dj0C,QAAQ6nB,IAAI,cAAeosB,EAA3B,EAGJtB,EAAcrtB,QAAQwuB,GAAUpB,GAAG0B,QAAWH,IAC1Cj0C,QAAQ6nB,IAAI,kBAAmBosB,GACV,UAAjBA,EAAEI,MAAMC,MAAmBL,EAAEI,MAAMC,IAQtC,EAGL3B,EAAcrtB,QAAQwuB,GAAUnxB,QAAUgwB,EAAcrtB,QAAQwuB,GAAUpB,GAAG6B,kBAAkB,QAC/Fv0C,QAAQ6nB,IAAI,kBAAmB8qB,EAAcrtB,QAAQwuB,GAAUnxB,SAE/DgwB,EAAcrtB,QAAQwuB,GAAUnxB,QAAQ6xB,OAAS,KAC7Cx0C,QAAQ6nB,IAAI,wBAAyB8qB,EAAcrtB,QAAQwuB,GAAUnxB,QAArE,EAEJgwB,EAAcrtB,QAAQwuB,GAAUnxB,QAAQ8xB,QAAU,SAAUR,GACxDj0C,QAAQ6nB,IAAI,aAAeosB,EAAI,qDAClC,EACDtB,EAAcrtB,QAAQwuB,GAAUnxB,QAAQ+xB,QAAU,WAC9C10C,QAAQ6nB,IAAI,4BACf,EACD8qB,EAAcrtB,QAAQwuB,GAAUnxB,QAAQgyB,UAAY11C,UAEhD,IAAII,EAGAA,GAD2C,GAA3CwkC,UAAU+Q,UAAUhjC,QAAQ,iBACfijC,EAAIx1C,KAAKy1C,cAEfD,EAAIx1C,KAEX01C,EAAO11C,KACPA,EAAOH,KAAKC,MAAME,IAEtBW,QAAQ6nB,IAAI,qBAAsBxoB,EAAlC,EAEGszC,EAAcrtB,QAAQwuB,GAAUpB,EAI1C,CAHC,MAAOuB,GAEL,YADAj0C,QAAQC,MAAMg0C,EAEjB,IACF,IAEG5B,EAAkBY,uBACnB/0C,IACG,IACI8B,QAAQ6nB,IAAR,mBAAwB3pB,EAAxB,mBACA,MAAMw0C,EAAKmB,EAA6B31C,GACxC,IAAM8zC,IAAMU,EAAK,OACjBS,EAAoBT,EAAIx0C,EAG3B,CAFC,MAAO+B,GACLD,QAAQ6nB,IAAI5nB,EACf,IAEL,CAACkzC,EAAqBU,IAGpBmB,EAAoB/B,uBAAYh0C,UAClC,IACI,IAAKwzC,EAAUntB,QAAS,OACxB,MAAM+tB,QAAYZ,EAAUntB,QAAQotB,GAAGY,YAAY,CAC/CC,qBAAqB,EACrBC,qBAAqB,IAOzB,SAJMf,EAAUntB,QAAQotB,GAAGe,oBACvB,IAAIC,sBAAsBL,KAGzBrB,EAAI,OACT2B,EAAY,CACRlwC,KAAM,cACNpE,KAAM,CACFg0C,MACAD,eAAgBU,IAK3B,CAFC,MAAO7zC,GACLD,QAAQ6nB,IAAI5nB,EACf,IACF,IAEGg1C,EAA6BhC,uBAAaa,IAC5C,MAAMpB,EAAK,IAAIqB,kBAAkBvC,GAEjCiB,EAAUntB,QAAQotB,GAAKA,EACvBD,EAAUntB,QAAQotB,GAAGsB,eAAkBC,IAE7BA,EAAEC,WAAalC,GAErB2B,EAAY,CACRlwC,KAAM,kBACNpE,KAAM,CACF60C,UAAWD,EAAEC,UACbd,eAAgBU,IAJxB,EASJrB,EAAUntB,QAAQotB,GAAGyB,2BAA8BF,MAInDxB,EAAUntB,QAAQ3C,QAAU8vB,EAAUntB,QAAQotB,GAAG6B,kBAAkB,QACnEv0C,QAAQ6nB,IAAI,kBAAmB4qB,EAAUntB,QAAQ3C,SAEjD8vB,EAAUntB,QAAQ3C,QAAQ6xB,OAAS,KAC/Bx0C,QAAQ6nB,IAAI,wBAAyB4qB,EAAUntB,QAAQ3C,QAAvD,EAEJ8vB,EAAUntB,QAAQ3C,QAAQ8xB,QAAU,SAAUR,GAC1Cj0C,QAAQ6nB,IAAI,aAAeosB,EAAI,qDAClC,EACDxB,EAAUntB,QAAQ3C,QAAQ+xB,QAAU,WAChC10C,QAAQ6nB,IAAI,4BACf,EACD4qB,EAAUntB,QAAQ3C,QAAQgyB,UAAY11C,UAAgB,IAAD,IAEjD,IAAII,EAGAA,GAD2C,GAA3CwkC,UAAU+Q,UAAUhjC,QAAQ,iBACfijC,EAAIx1C,KAAKy1C,cAEfD,EAAIx1C,KAEX01C,EAAO11C,KACPA,EAAOH,KAAKC,MAAME,IAGJ,cAAdA,EAAKoE,MACLyxC,EAAe71C,EAAKwK,KAAMxK,EAAKnB,KAG/B,UAAA+zC,EAAa3sB,eAAb,eAAsBpnB,OAAtB,UAA6BmB,SAA7B,aAA6B,EAAMwK,OACnCkpC,EAAqB1zC,EACxB,CAnBL,GAsBD,IAEG81C,EAASlC,uBAAYh0C,UACvBg2C,EAA2BnB,SACrBkB,EAAkBlB,GACxBH,EAAY,CACRlwC,KAAM,gBACNpE,KAAM,CACFnB,GAAI41C,IAHZ,GAMD,IAEHhgC,qBAAU,KACNk+B,EAAK,IAAIoD,UAAUxD,GAEnBI,EAAGwC,OAAUP,IACTj0C,QAAQ6nB,IAAI,gBACZ8rB,EAAY,CACRlwC,KAAM,kBACNoG,KAAM,WAFV,EAMJmoC,EAAGyC,QAAWR,IACVj0C,QAAQ6nB,IAAIosB,EAAZ,EAGJjC,EAAG2C,UAAaV,GAAMoB,EAAgBpB,GAEtCjC,EAAG0C,QAAWT,IACVj0C,QAAQ6nB,IAAIosB,GACZj0C,QAAQ6nB,IAAI,YAAZ,EAGG,KACH7nB,QAAQ6nB,IAAI,8BACRytB,MACAt1C,QAAQ6nB,IAAI,wBACZmqB,EAAGkB,SAEPj1C,EAAMqG,SAAQhF,GAAQ0zC,EAAe1zC,EAAKpB,KAA1C,IAEL,IAGH4V,qBAAU,KACN,IAAIyhC,GAAgB,EACpB,IAAK,IAAIj2C,KAAQrB,EAAO,CAAC,IAAD,EACpB,GAAIqB,EAAKpB,MAAL,UAAY+zC,EAAa3sB,eAAzB,aAAY,EAAsBpnB,IAAI,CACtCq3C,GAAgB,EAChB,KACH,CACJ,CACIA,GAAepD,EAAW,KAAX,GACrB,CAACl0C,IAEJ,MAAMo3C,EAAkBp2C,UACpB,MAAMmE,EAAOlE,KAAKC,MAAM80C,EAAE50C,MAG1B,OAAQ+D,EAAKK,MACT,IAAK,UACD+uC,EAAWpvC,EAAKoyC,aAChBL,EAAO/xC,EAAKoyC,cACZ,MACJ,IAAK,aACDx1C,QAAQ6nB,IAAI,aAAczkB,EAAK/D,MAC/B,IAAIo2C,EAAW,GACf,IAAK,IAAIrC,KAAkBhwC,EAAK/D,KAAKpB,MACjCo0C,EAAgBe,GAChBqC,EAAShxC,KAAK,CACVvG,GAAIk1C,IAIZP,EAAS4C,GACT,MACJ,IAAK,WACDzC,EAAe5vC,EAAK/D,KAAKnB,IACzB20C,GAAU50C,GAAUA,EAAMgK,QAAQ3I,GAASA,EAAKpB,KAAOkF,EAAK/D,KAAKnB,OACjE,MACJ,IAAK,kBACD,IACI,IAAKu0C,EAAUntB,QAAS,aAClBmtB,EAAUntB,QAAQotB,GAAGgD,qBACzB,IAAIhC,sBAAsBtwC,EAAK/D,MAIpC,CAFC,MAAOY,GACLD,QAAQ6nB,IAAI5nB,EACf,CACD,MACJ,IAAK,qBACD,IACI,IAAMmD,EAAK/D,KAAK60C,YAAazB,EAAUntB,QAAU,aAC3CmtB,EAAUntB,QAAQotB,GAAGiD,gBACzB,IAAIC,gBAAgBxyC,EAAK/D,KAAK60C,WAInC,CAFC,MAAOj0C,GACLD,QAAQ6nB,IAAI5nB,EACf,CACD,MACJ,IAAK,oBACD,IACI,MAAMyyC,EAAwBC,EAAcrtB,QAAQliB,EAAK/D,KAAKnB,IAAIw0C,GAClE,IAAKA,EAAI,aACHA,EAAGgD,qBAAqBtyC,EAAK/D,KAAKg0C,IAI3C,CAFC,MAAOpzC,GACLD,QAAQC,MAAMA,EACjB,CACD,MACJ,IAAK,uBACD,IACI,MAAMyyC,EAAwBC,EAAcrtB,QAAQliB,EAAK/D,KAAKnB,IAAIw0C,GAClE,IAAMA,IAAMtvC,EAAK/D,KAAK60C,UAAY,aAC5BxB,EAAGiD,gBAAgB,IAAIC,gBAAgBxyC,EAAK/D,KAAK60C,WAI1D,CAFC,MAAOj0C,GACLD,QAAQC,MAAMA,EACjB,CACD,MACJ,QACID,QAAQ6nB,IAAI,sBAAuBzkB,EAAKK,MA9DhD,EAkEEkwC,EAAekC,IACbP,IAEAtD,EAAG8D,KAAK52C,KAAK0xC,UAAUiF,IAEvB71C,QAAQ6nB,IAAI,wBACf,EAGCytB,EAAgB,IACXtD,EAAG+D,aAAeX,UAAUY,KAGvCliC,qBAAU,KACN8+B,EAAQttB,QAAUrnB,CAAlB,GACD,CAACA,IAEJ,MAAMk0C,EAAc7yC,IAChB2yC,EAAa3sB,QAAUhmB,EACvBwzC,IAAkBxzC,EAAlB,EAGEy1C,EAAUkB,IACZ,IACI/2C,KAAKC,MAAM82C,EAGd,CAFC,MAAOhC,GACL,OAAO,CACV,CACD,OAAO,CAAP,EAmBEiB,EAAiB,CAACh3C,EAAIg4C,KACxB14C,IAAMgwB,KAAKlX,6EAAsF,CAAC6/B,cAAeD,GAAY92C,GAC5HmjB,MAAKC,IACF,GAAIA,EAASnjB,KAAM,CACf,IAAI+2C,EAAS,IAAIxD,EAAQttB,SACrBrT,EAAImkC,EAAO1zB,WAAUpjB,GAAQA,EAAKpB,KAAOA,IAC7C8B,QAAQ6nB,IAAI+qB,EAAQttB,QAASpnB,EAAIk4C,EAAOnkC,IACxCmkC,EAAOnkC,GAAGokC,aAAe7zB,EAASnjB,KAAK0C,MACvCq0C,EAAOnkC,GAAGqkC,YAAc9zB,EAASnjB,KAAKk3C,cAAch3C,MAAKi3C,GAAWA,EAAQL,gBAAkBD,IAAW13C,KACzG43C,EAAOnkC,GAAGzT,KAAOgkB,EAASnjB,KAAKo3C,YAC/B5D,EAASuD,EACZ,KAEJpzB,OAAM/iB,GACHD,QAAQ6nB,IAAI,iDAAkD5nB,IAblE,EAiBJ,OACI,cAAC6xC,EAAiB4E,SAAlB,CAA2B1wC,MAAO,CAC9BgsC,KACA/zC,QACAg0C,aAAcA,EAAa3sB,QAC3B4sB,oBACAC,aACAC,iBACAC,kBACAC,iBA3CkBuC,IAAS,IAAD,EAC9B,IAAI8B,EAAO,IACJ9B,EACHpxC,KAAMoxC,EAAIpxC,KACVpE,KAAM,IACCw1C,EAAIx1C,KACP+zC,eAAc,UAAEnB,EAAa3sB,eAAf,aAAE,EAAsBpnB,KAKxC,IAAD,KAFL8B,QAAQ6nB,IAAI,mBAAoB8uB,GAC5BlE,EAAUntB,QAAQ3C,SAAmD,QAAxC8vB,EAAUntB,QAAQ3C,QAAQozB,YAAsBtD,EAAUntB,QAAQ3C,QAAQmzB,KAAK52C,KAAK0xC,UAAU+F,IAE3H32C,QAAQ6nB,IAAI,yBAAZ,UAAsC4qB,EAAUntB,eAAhD,iBAAsC,EAAmB3C,eAAzD,aAAsC,EAA4BozB,WACrE,GAsBD,SASI55B,GAVR,EAcW21B,K,0TCvbf,MAAM1+B,EAAYC,aAAYa,IAAD,CACzB0iC,MAAO,CACH/7B,WAAY,SACZlB,cAAe,SACf2W,MAAO,SAEX9Q,SAAU,CACN7O,MAAO,aAyEAkmC,MArEiD,IAEzD,IAF0D,cAC7D9zB,EAD6D,MAC9CgP,GACb,EAEF,MAAMjd,EAAU1B,IACV0jC,EAAW3yB,iBAAiC,OAC3C4yB,EAAeC,GAAoB/hC,oBAAkB,IACtD,gBAAEmP,GAAoBC,cACtBnE,EAAOC,eACNsG,EAASC,GAAczR,oBAAkB,GACjCqM,cAWf,OACI,mCACKyB,GAAiBgP,GACd,eAAClc,EAAA,EAAD,CAAKC,GAAI,EAAGE,eAAe,gBAAgBD,QAAQ,OAAnD,UACI,cAACE,EAAA,EAAD,CACIV,QAAQ,WACR2O,IAAK4yB,EACL5gC,QAAS,IAAM8gC,GAAiB,GAChCjW,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SAUKyF,EAAKI,cAAc,CAAEpiB,GAAI,uDAE9B,cAAC8mB,EAAA,EAAD,CACIK,SAAUyxB,EAASxxB,QACnBsF,gBAAiB,CACb1F,SAAU,SACV5U,WAAY,QAEhByE,KAAMgiC,EACNnzB,QAAS,IAAMozB,GAAiB,GAPpC,SASI,eAACzxB,EAAA,EAAD,CAEIrP,QApCR,KAC6B,MAApCnK,SAASiI,SAAU1T,MAAM,KAAK,GAC/BujC,UAAUC,UAAUC,UAAU,OAAUh4B,SAASiI,SAAU1T,MAAM,KAAK,GAAK,IAAMyxB,EAAM/C,UAEtF6U,UAAUC,UAAUC,UAAU9wB,OAAOlH,SAASi4B,OAAS,gBAAkBjhB,EAAgB,IAAMgP,EAAM/C,UAC1G5K,EAAgBlE,EAAKI,cAAc,CAAEpiB,GAAI,0DAA4D,CAAEqX,QAAS,YAChHyhC,GAAiB,EAAjB,EA+BoB3hC,UAAWP,EAAQ0K,SAHvB,UAKI,cAACqL,EAAA,EAAD,UACI,cAAC,IAAD,MAEJ,cAACgB,EAAA,EAAD,CAAchV,QAAS,QACvB,cAACqI,EAAA,EAAD,CACIzE,SAAS,QACTrZ,MAAM,SAFV,SAII,cAAC,IAAD,QAZA,kBA1B5B,E,kBCzBJ,MAAMgS,EAAYC,aAAYa,IAAD,CACzBmT,QAAS,CACL9Z,gBAAiB,uBAErB0pC,WAAY,CACRvmC,OAAQ,KAEZwmC,YAAa,CACT5mB,MAAO,QACP7S,YAAa,YAEjBpC,OAAQ,CACJtF,QAAS,OACT2J,WAAY,OACZmgB,UAAW,WACXnU,UAAW,UAEfyrB,KAAM,CACF39B,aAAc,MACdX,OAAQ,YACRu+B,UAAW,OA4JJC,MAxJiD,IAQzD,IAR0D,OAC7D/yB,EAD6D,QAE7DV,EAF6D,MAG7DmO,EAH6D,WAI7DV,EAJ6D,cAK7DC,EAL6D,cAM7DvO,EAN6D,wBAO7Du0B,GACE,EAEF,MAAMxiC,EAAU1B,IAGV+vB,EAA+B,CACjCC,QAASrR,EAAM/C,SACfqU,iBAAkB,KAEfkU,EAAYC,GAAeviC,oBAAkB,IAC7CoQ,EAAU6d,GAAe5H,IAAMrmB,SAA6B,MAO7DwiC,EAAa,KACfD,GAAaD,EAAb,EAYJ,OACI,cAAC9oB,EAAA,EAAD,CACI7K,QAASA,EACT7O,KAAMuP,EACN9P,SAAS,KACTa,UAAWP,EAAQuS,QACnB6E,WAAW,EACX,kBAAgB,qBAChB,mBAAiB,2BAPrB,SASI,eAACrW,EAAA,EAAD,CAAKR,UAAWP,EAAQmiC,WAAxB,UACI,cAACvoB,EAAA,EAAD,UACI,eAAC7Y,EAAA,EAAD,CACIC,IAAK,EACLiZ,IAAK,EACLhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SALf,UAOI,cAACxH,EAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAIK2wB,EAAMhwB,QAEX,cAACmkB,EAAA,EAAD,CAAY7Q,UAAWP,EAAQoiC,YAAahhC,QAAS0N,EAAS7W,KAAK,QAAnE,SACI,cAACmS,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,aAKhB,eAACkU,EAAA,EAAD,WACI,cAAC9Y,EAAA,EAAD,CAAKC,GAAI,EAAGiZ,GAAI,EACZhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,OAHf,SAKI,cAACxH,EAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAI2B,OAAtB2wB,EAAMxwB,aAAuD,kBAAvBwwB,EAAMxwB,aACnB,KAAtBwwB,EAAMxwB,aAAsBpC,YAAM4yB,EAAMxwB,iBAGpD,cAAC,IAAD,UACI,cAACmiC,EAAA,EAAD,CAAiBP,cAAeA,EAAepR,MAAOA,EAAOV,WAAYA,EAAYC,cAAeA,EAAeqS,aA1E1G,IA0E8I+I,YAzE/I,QA2EZ,eAAC72B,EAAA,EAAD,CAAKwI,MAAO,CAAEtI,QAAS,QAAvB,UACI,cAAC,EAAD,CAAwBgN,cAAeA,EAAegP,MAAOA,IAC7D,cAAClc,EAAA,EAAD,CAAKR,UAAWP,EAAQuG,OAAxB,SACI,cAACpF,EAAA,EAAD,CACIZ,UAAWP,EAAQuG,OACnBja,MAAM,UACNmU,QAAQ,YACRwB,UAAYugC,IAA4BvlB,EAAMoS,aAC9CjuB,QA3EO9T,IAC/B8gC,EAAY9gC,EAAM8hC,eAClBuT,GAAY,EA0EYrT,QACI,cAACllB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MARZ,SAYI,cAAC,IAAD,CAAkBvc,GAAG,6BAG7B,eAAC8mB,EAAA,EAAD,CAAMjQ,KAAMwiC,EAAY3zB,QAAS6zB,EAC7BxyB,aAAc,CACVC,SAAU,SACV5U,WAAY,SAEhBsa,gBAAiB,CACb1F,SAAU,MACV5U,WAAY,SAEhB+U,SAAUA,EACVhQ,UAAWP,EAAQqiC,KAVvB,UAYI,cAAC5xB,EAAA,EAAD,CAAUlH,MAAO,CAAEtI,QAAS,OAAQ+T,aAAc,UAAY5T,QAAS,IAxFzE4R,KAClB,GAAIA,EAAM,CACN,MAAM4vB,EAAMvhC,SAASwhC,cAAc,KACnCD,EAAI/hC,KAAOmS,EACX4vB,EAAIE,SACJF,EAAIG,OACP,GAkFgGC,CAAa/lB,EAAMoS,cAAhG,SACI,cAACluB,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAMoc,EAAMoS,aACZptB,UAAWgb,EAAMoS,aACjB/iC,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,kCAG7B,cAACqnB,EAAA,EAAD,UACI,cAACtP,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAM2hC,EACNvgC,UAAWugC,EACXl2C,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,oDAtGrD,EC9DJ,MAAMkV,EAAYC,aAAYa,IAAD,CACzBmT,QAAS,CACL9Z,gBAAiB,uBAErB2pC,YAAa,CACT5mB,MAAO,QACP7S,YAAa,YAEjBpC,OAAQ,CACJtF,QAAS,OACT2J,WAAY,OACZmgB,UAAW,WACXnU,UAAW,cA4JJqsB,MAxJmD,IAQ3D,IAR4D,OAC/DzzB,EAD+D,QAE/DV,EAF+D,MAG/DmO,EAH+D,WAI/DV,EAJ+D,cAK/DC,EAL+D,cAM/DvO,EAN+D,wBAO/Du0B,GACE,EAEF,MAAMxiC,EAAU1B,IACV+vB,EAA+B,CACjCC,QAASrR,EAAM/C,SACfqU,iBAAkB,KAGfkU,EAAYC,GAAeviC,oBAAkB,IAC7CoQ,EAAU6d,GAAe5H,IAAMrmB,SAA6B,MAO7DwiC,EAAa,KACfD,GAAaD,EAAb,EAYJ,OACI,cAAC9oB,EAAA,EAAD,CACI7K,QAASA,EACT7O,KAAMuP,EACN4H,WAAW,EACX1X,SAAS,KACTa,UAAWP,EAAQuS,QACnBoc,YAAU,EACV,kBAAgB,qBAChB,mBAAiB,2BARrB,SAUI,eAAC5tB,EAAA,EAAD,WACI,cAAC6Y,EAAA,EAAD,UACI,eAAC7Y,EAAA,EAAD,CACIkZ,IAAK,EACLhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SAJf,UAMI,cAACxH,EAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAIK2wB,EAAMhwB,QAEX,cAACmkB,EAAA,EAAD,CAAY7Q,UAAWP,EAAQoiC,YAAahhC,QAAS0N,EAAS7W,KAAK,QAAnE,SACI,cAACmS,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,aAKhB,eAACkU,EAAA,EAAD,WACI,cAAC9Y,EAAA,EAAD,CAAKC,GAAI,EAAGiZ,GAAI,EACZhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,OAHf,SAKI,cAACxH,EAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAI2B,OAAtB2wB,EAAMxwB,aAAuD,kBAAvBwwB,EAAMxwB,aACnB,KAAtBwwB,EAAMxwB,aAAsBpC,YAAM4yB,EAAMxwB,iBAGpD,cAAC,IAAD,UACI,cAACmiC,EAAA,EAAD,CAAiBP,cAAeA,EAAepR,MAAOA,EAAOV,WAAYA,EAAYC,cAAeA,EAAeqS,aAAc,QAErI,eAAC9tB,EAAA,EAAD,CAAKwI,MAAO,CAAEtI,QAAS,QAAvB,UAEI,cAAC,EAAD,CAAwBgN,cAAeA,EAAegP,MAAOA,IAC7D,cAAClc,EAAA,EAAD,CAAKR,UAAWP,EAAQuG,OAAxB,SACI,cAACpF,EAAA,EAAD,CACIZ,UAAWP,EAAQuG,OACnBja,MAAM,UACNmU,QAAQ,YACRwB,UAAYugC,IAA4BvlB,EAAMoS,aAC9CjuB,QA5EO9T,IAC/B8gC,EAAY9gC,EAAM8hC,eAClBuT,GAAY,EA2EYrT,QACI,cAACllB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MARZ,SAYI,cAAC,IAAD,CAAkBvc,GAAG,6BAG7B,eAAC8mB,EAAA,EAAD,CAAMjQ,KAAMwiC,EAAY3zB,QAAS6zB,EAC7BL,UAAW,EACXnyB,aAAc,CACVC,SAAU,SACV5U,WAAY,SAEhBsa,gBAAiB,CACb1F,SAAU,MACV5U,WAAY,SAEhB+U,SAAUA,EACVhH,MAAO,CAAE7E,aAAc,MAAOX,OAAQ,aAX1C,UAaI,cAAC0M,EAAA,EAAD,CAAUlH,MAAO,CAAEtI,QAAS,OAAQ+T,aAAc,UAAY5T,QAAS,IA1FzE4R,KAClB,GAAIA,EAAM,CACN,MAAM4vB,EAAMvhC,SAASwhC,cAAc,KACnCD,EAAI/hC,KAAOmS,EACX4vB,EAAIE,SACJF,EAAIG,OACP,GAoFgGC,CAAa/lB,EAAMoS,cAAhG,SACI,cAACluB,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAMoc,EAAMoS,aACZptB,UAAWgb,EAAMoS,aACjB/iC,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,kCAG7B,cAACqnB,EAAA,EAAD,UACI,cAACtP,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAM2hC,EACNvgC,UAAWugC,EACXl2C,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,oDAxGrD,ECrDJ,MAAMkV,EAAYC,aAAW,MACzBgU,QAAS,CACL9Z,gBAAiB,uBAErB2pC,YAAa,CACT5mB,MAAO,QACP7S,YAAa,YAEjBpC,OAAQ,CACJtF,QAAS,OACT2J,WAAY,OACZmgB,UAAW,WACXnU,UAAW,UAEfyrB,KAAM,CACF39B,aAAc,MACdX,OAAQ,YACRu+B,UAAW,OAyJJY,MArJiD,IAQzD,IAR0D,OAC7D1zB,EAD6D,QAE7DV,EAF6D,MAG7DmO,EAH6D,WAI7DV,EAJ6D,cAK7DC,EAL6D,cAM7DvO,EAN6D,wBAO7Du0B,GACE,EAEF,MAAMxiC,EAAU1B,IACV+vB,EAA+B,CACjCC,QAASrR,EAAM/C,SACfqU,iBAAkB,KAEfkU,EAAYC,GAAeviC,oBAAkB,IAC7CoQ,EAAU6d,GAAe5H,IAAMrmB,SAA6B,MAO7DwiC,EAAa,KACfD,GAAaD,EAAb,EAYJ,OACI,cAAC9oB,EAAA,EAAD,CACI7K,QAASA,EACT7O,KAAMuP,EACN4H,WAAW,EACX1X,SAAS,KACTa,UAAWP,EAAQuS,QACnBoc,YAAU,EACV,kBAAgB,qBAChB,mBAAiB,2BARrB,SAUI,eAAC5tB,EAAA,EAAD,WACI,cAAC6Y,EAAA,EAAD,UACI,eAAC7Y,EAAA,EAAD,CACIkZ,IAAK,EACLhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,SAJf,UAMI,cAACxH,EAAA,EAAD,CACIC,QAAQ,KACRnU,MAAM,cAFV,SAIK2wB,EAAMhwB,QAEX,cAACmkB,EAAA,EAAD,CAAY7Q,UAAWP,EAAQoiC,YAAahhC,QAAS0N,EAAS7W,KAAK,QAAnE,SACI,cAACmS,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,aAKhB,eAACkU,EAAA,EAAD,WACI,cAAC9Y,EAAA,EAAD,CAAKC,GAAI,EAAGiZ,GAAI,EACZhZ,QAAQ,OACRC,eAAe,gBACf8G,WAAW,OAHf,SAKI,cAACxH,EAAA,EAAD,CACIC,QAAQ,QACRnU,MAAM,gBAFV,SAI2B,OAAtB2wB,EAAMxwB,aAAuD,kBAAvBwwB,EAAMxwB,aACnB,KAAtBwwB,EAAMxwB,aAAsBpC,YAAM4yB,EAAMxwB,iBAGpD,cAAC,IAAD,UACI,cAACmiC,EAAA,EAAD,CAAiBP,cAAeA,EAAepR,MAAOA,EAAOV,WAAYA,EAAYC,cAAeA,EAAeqS,aAAc,QAErI,eAAC9tB,EAAA,EAAD,CAAKwI,MAAO,CAAEtI,QAAS,QAAvB,UACI,cAAC,EAAD,CAAwBgN,cAAeA,EAAegP,MAAOA,IAC7D,cAAClc,EAAA,EAAD,CAAKR,UAAWP,EAAQuG,OAAxB,SACI,cAACpF,EAAA,EAAD,CACIZ,UAAWP,EAAQuG,OACnBja,MAAM,UACNmU,QAAQ,YACRwB,UAAYugC,IAA4BvlB,EAAMoS,aAC9CjuB,QA3EO9T,IAC/B8gC,EAAY9gC,EAAM8hC,eAClBuT,GAAY,EA0EYrT,QACI,cAACllB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MARZ,SAYI,cAAC,IAAD,CAAkBvc,GAAG,6BAG7B,eAAC8mB,EAAA,EAAD,CAAMjQ,KAAMwiC,EAAY3zB,QAAS6zB,EAC7BxyB,aAAc,CACVC,SAAU,SACV5U,WAAY,SAEhBsa,gBAAiB,CACb1F,SAAU,MACV5U,WAAY,SAEhB+U,SAAUA,EACVhQ,UAAWP,EAAQqiC,KAVvB,UAYI,cAAC5xB,EAAA,EAAD,CAAUlH,MAAO,CAAEtI,QAAS,OAAQ+T,aAAc,UAAY5T,QAAS,IAxFzE4R,KAClB,GAAIA,EAAM,CACN,MAAM4vB,EAAMvhC,SAASwhC,cAAc,KACnCD,EAAI/hC,KAAOmS,EACX4vB,EAAIE,SACJF,EAAIG,OACP,GAkFgGC,CAAa/lB,EAAMoS,cAAhG,SACI,cAACluB,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAMoc,EAAMoS,aACZptB,UAAWgb,EAAMoS,aACjB/iC,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,kCAG7B,cAACqnB,EAAA,EAAD,UACI,cAACtP,EAAA,EAAD,CAAQV,QAAQ,OACZI,KAAM2hC,EACNvgC,UAAWugC,EACXl2C,MAAM,UACN2/B,UACI,cAAC7hB,EAAA,EAAD,CAASzE,SAAS,QAAlB,SACI,cAAC,IAAD,MANZ,SASI,cAAC,IAAD,CAAkBvc,GAAG,oDAtGrD,E,iBCNW4zB,IA5DuC,IAO/C,IAPgD,OACnDxN,EADmD,QAEnDV,EAFmD,MAGnDmO,EAHmD,WAInDV,EAJmD,cAKnDC,EALmD,cAMnDvO,GACE,EAEF,MAAM3jB,EAASkiB,eACRg2B,EAAyBW,GAA8BhjC,mBAAiB,OACxEwR,EAASC,GAAczR,oBAAkB,GAsBhD,OAJAnB,qBAAU,KAhByB,MAC/B,IAAI7P,EAAS,CAAEq/B,SAAUvR,EAAM/C,UAC/BxxB,IAAMgwB,KAAKlX,wDAAiErS,EAAQ7E,GAC/EmjB,MAAK,SAAUC,GACRA,GAAYA,EAASnjB,MACrB44C,EAA2Bz1B,EAASnjB,KAE3C,IACA2jB,OAAM,SAAU/iB,GACbD,QAAQ6nB,IAAI,qCAAsC5nB,EACrD,IACAsjC,SAAQ,KACL7c,GAAW,EAAX,GAVR,EAeAwxB,EAA4B,GAC7B,KAEa,IAAZzxB,EACO,KAIH,qCACI,cAACjD,EAAA,EAAD,CAAQ20B,KAAM,CAAC,KAAM,MAArB,SACI,cAAC,EAAD,CAAwB7zB,OAAQA,EAAQV,QAASA,EAASmO,MAAOA,EAC7DV,WAAYA,EAAYC,cAAeA,EAAevO,cAAeA,EACrEu0B,wBAAyBA,MAEjC,cAAC9zB,EAAA,EAAD,CAAQ20B,KAAM,CAAC,KAAM,KAAM,KAAM,MAAjC,SACI,cAAC,EAAD,CAAyB7zB,OAAQA,EAAQV,QAASA,EAASmO,MAAOA,EAC9DV,WAAYA,EAAYC,cAAeA,EAAevO,cAAeA,EACrEu0B,wBAAyBA,MAEjC,cAAC9zB,EAAA,EAAD,CAAQ20B,KAAM,CAAC,KAAM,KAAM,KAAM,MAAjC,SACI,cAAC,EAAD,CAAwB7zB,OAAQA,EAAQV,QAASA,EAASmO,MAAOA,EAC7DV,WAAYA,EAAYC,cAAeA,EAAevO,cAAeA,EACrEu0B,wBAAyBA,QAI5C,C,mCC7EL,8EA2BA,MAQMc,EAA4B,CAC9BvyB,UAAW,MACXC,qBAAqB,EACrB5R,MAAOk4B,IAAOC,MACdpf,SAZuB,MACvB,IAAI3tB,EAAOJ,KAAKC,MAAMmd,aAAaC,QAAQ,SAC3C,OAAGjd,GAAQA,EAAK2tB,SACL3tB,EAAK2tB,SAASorB,oBAEb,IAAP,EAOKC,IAqBDC,EAAiB/3C,IAC1ByS,OAAOqJ,aAAasK,QAAQ,WAAY1nB,KAAK0xC,UAAUpwC,GAAvD,EAGEg4C,EAAkBzG,wBAAoC,CACxDvxC,SAAU43C,EACV1yB,aAAc,SAGL+yB,EAA8C,IAA6B,IAA5B,SAAEj4C,EAAF,SAAY2b,GAAe,EACnF,MAAOu8B,EAAiBC,GAAsB1jC,mBAAmBzU,GAAY43C,GAqB7E,OAZAtkC,qBAAU,KACN,MAAM8kC,EAtCiB,MAC3B,IAAIp4C,EAAW,KAEf,IACI,MAAMq4C,EAA4B5lC,OAAOqJ,aAAaC,QAAQ,YAE1Ds8B,IACAr4C,EAAWtB,KAAKC,MAAM05C,GAM7B,CAJC,MAAO94C,GACLC,QAAQC,MAAMF,EAGjB,CAED,OAAOS,CAAP,EAuB6Bs4C,GAErBF,GACAD,EAAmBC,EACtB,GACF,IAEH9kC,qBAAU,KACNqC,SAAS4iC,IAAML,EAAgB7yB,SAA/B,GACD,CAAC6yB,IAGA,cAACF,EAAgB9B,SAAjB,CACI1wC,MAAO,CACHxF,SAAUk4C,EACVhzB,aAvBe,WAAkC,IAAjCpjB,EAAgC,uDAAb,CAAC,EAC5C,MAAM02C,EAAiBz2C,IAAE02C,MAAM,CAAC,EAAGP,EAAiBp2C,GAEpDq2C,EAAmBK,GACnBT,EAAcS,EACjB,GAeG,SAMK78B,GAPT,EAY4Bq8B,EAAgBU,SAEjCV,K,mCCzGf,oBAKen8B,IAFC,IAAM88B,qBAAWC,I,kCCHjC,YAEA,MAAMC,EAFN,OAEsB77C,EAAMqsC,SAE5BwP,EAAcC,aAAa92B,SAAS+2B,KAC/B/2B,GAAaA,IACbviB,GAAUrC,QAAQ+E,OAAQ1C,EAAMuiB,UAAYviB,EAAMuiB,SAASnjB,MAAS,0BAG1Dg6C,K,mCCTf,6DAYA,MAAMjmC,EAAYC,aAAYa,IAAD,CACzBmsB,YAAa,CACT9gB,OAAQ,UACR7O,OAAQ,YA4CD4wB,IAxCyB,IAAmC,IAAlC,QAAE3e,EAAF,gBAAWsb,GAAsB,EACtE,MAAM/pB,EAAQitB,cACRqY,EAAoBpY,YAAcltB,EAAM8D,YAAYqpB,KAAK,OACzDvsB,EAAU1B,IAEhB,OACI,cAAC,IAAD,UACKomC,EACG,qCACI,cAAC,IAAD,CAAQz0B,QAAM,EAAd,SACI,qBAAKrU,OAAO,OAAO8vB,IAAI,OAAO9pB,IAAKiM,EAAQ82B,uBAE/C,cAAC,IAAD,CAAQC,MAAI,EAAZ,SACI,qBAAKhpC,OAAO,OAAO8vB,IAAI,OAAO9pB,IAAKiM,EAAQ82B,0BAInD,mCACK92B,EAAQme,YACL,mCACK7C,GAAmBA,EAAgBO,QAChC,mBAAG7oB,KAAMsoB,EAAgBO,QAAS5oB,OAAO,SAAzC,SACI,qBAAKP,UAAWP,EAAQurB,YAAaG,IAAI,OAAO9pB,IAAKiM,EAAQme,gBAGjE,qBAAKzrB,UAAWP,EAAQurB,YAAaG,IAAI,OAAO9pB,IAAKiM,EAAQme,gBAMrE,gCA1BpB,C,mCCxBJ,qJAGO,SAAS6Y,IACZ,MAAMz5B,EAAOC,cACb,MAAO,CACHD,EAAKI,cAAc,CAAEpiB,GAAI,kEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,kEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,mEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,mEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,kEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,sEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,wEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,2EACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,oEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,mEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,wEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,sEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,8EACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,qEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,uEACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,kEAEhC,CAEM,SAAS07C,IACZ,MAAM15B,EAAOC,cACb,MAAO,CACHD,EAAKI,cAAc,CAAEpiB,GAAI,2DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,2DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,6DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,6DAEhC,CAEM,SAAS27C,IACZ,MAAM35B,EAAOC,cACb,MAAO,CACHD,EAAKI,cAAc,CAAEpiB,GAAI,4DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,6DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,+DACzBgiB,EAAKI,cAAc,CAAEpiB,GAAI,gEAEhC,CAEM,MAAMqlB,EAAiC,C,qIC7C9C,MAAMnQ,EAAYC,aAAYa,IAAD,CACzBC,KAAM,CACF2I,WAAY,SACZvP,gBAAiB2G,EAAME,QAAQ2G,WAAWC,QAC1CjF,QAAS,OACTmE,cAAe,SACfxJ,OAAQ,OACRsF,eAAgB,SAChBrG,KAAM,EACN8D,QAASS,EAAMO,QAAQ,GACvBrM,SAAU,QACVyH,IAAK,EACLc,MAAO,OACPgE,OAAQ,SAgBDmlC,MAZS,KACpB,MAAMhlC,EAAU1B,IAEhB,OACI,qBAAKiC,UAAWP,EAAQX,KAAxB,SACI,cAAC0B,EAAA,EAAD,CAAKlF,MAAO,IAAZ,SACI,cAACuM,EAAA,EAAD,OAHZ,E,iCC6CJ,MAAM68B,EAA8B,CAChCC,iBAAiB,EACjBC,eAAe,EACf36C,KAAM,MAcJ46C,EAAcx6C,IACZA,GACA4c,aAAasK,QAAQ,cAAelnB,GACpClC,IAAM28C,SAAS95C,QAAQgU,OAAOjU,cAA9B,iBAAwDV,KAExD4c,aAAa89B,eACN58C,IAAM28C,SAAS95C,QAAQgU,OAAOjU,cACxC,EAGCi6C,EAAU,CAACz7C,EAAkBgW,KAC/B,OAAQA,EAAOnR,MACX,IAAK,aAAc,CACf,MAAM,gBAAEu2C,EAAF,KAAmB16C,GAASsV,EAAO0lC,QAEzC,MAAO,IACA17C,EACHq7C,eAAe,EACfD,kBACA16C,OAEP,CACD,IAAK,QAAS,CACV,MAAM,KAAEA,GAASsV,EAAO0lC,QAExB,MAAO,IACA17C,EACHo7C,iBAAiB,EACjB16C,OAEP,CACD,IAAK,SACD,MAAO,IACAV,EACHo7C,iBAAiB,EACjB16C,KAAM,MAGd,IAAK,WAAY,CACb,MAAM,KAAEA,GAASsV,EAAO0lC,QAExB,MAAO,IACA17C,EACHo7C,iBAAiB,EACjB16C,OAEP,CACD,QACI,MAAO,IAAKV,GArCpB,EA0CEw6C,EAAcrH,wBAAgC,IAC7CgI,EACH5zC,OAAQ,MACRo0C,MAAO,IAAM38C,QAAQ48C,UACrBp+B,OAAQ,OACRq+B,SAAU,IAAM78C,QAAQ48C,YAGfE,EAAsC,IAAmB,IAAlB,SAAEv+B,GAAe,EACjE,MAAOvd,EAAO+7C,GAAYC,qBAAWP,EAASN,IACxC,SAAEv5C,EAAF,aAAYklB,GAAiBC,cAyB7Bk1B,EAAc57C,UAGhB,IAAIG,EAAS,CACTiB,QAAS,CAAED,cAAc,UAAD,OAAYV,KAExC,MAAMJ,SAAc9B,IAAM2X,IAAImB,0CAAmDlX,IAASC,KAe1F,YAboBktB,IAAhBjtB,EAAKnB,QAAwC,OAAhBmB,EAAKnB,QAAmC,KAAhBmB,EAAKnB,SAC1DmB,EAAKnB,OAAS,gCAEEouB,IAAhBjtB,EAAK6pC,QAAwC,OAAhB7pC,EAAK6pC,SAClC7pC,EAAK6pC,OAAS,SAEU5c,IAAxBjtB,EAAKw7C,gBAAwD,OAAxBx7C,EAAKw7C,iBAC1Cx7C,EAAKw7C,eAAiB,SAEJvuB,IAAlBjtB,EAAK2tB,UAA4C,OAAlB3tB,EAAK2tB,WACpC3tB,EAAK2tB,SAAW,MAEpB3Q,aAAasK,QAAQ,OAAQ1nB,KAAK0xC,UAAUtxC,IACrCA,CAAP,EA6EJ,OAzCAwU,qBAAU,KACa7U,WACf,IACI,MAAMS,EAAcuT,OAAOqJ,aAAaC,QAAQ,eAEhD,GAAI7c,GAjKEA,KAClB,IAAKA,EACD,OAAO,EAGX,MAAM8c,EAAeu+B,IAAUr7C,GACzBgd,EAAcC,KAAKC,MAAQ,IAEjC,OAAOJ,EAAQK,IAAMH,CAArB,EAyJ+Bs+B,CAAat7C,GAAc,CAC1Cw6C,EAAWx6C,GACX,MAAMJ,QAAau7C,EAAYn7C,GAE/Bi7C,EAAS,CACLl3C,KAAM,aACN62C,QAAS,CACLN,iBAAiB,EACjB16C,KAAMA,IAGjB,MACGq7C,EAAS,CACLl3C,KAAM,aACN62C,QAAS,CACLN,iBAAiB,EACjB16C,KAAM,OAcrB,CATC,MAAOS,GACLC,QAAQC,MAAMF,GACd46C,EAAS,CACLl3C,KAAM,aACN62C,QAAS,CACLN,iBAAiB,EACjB16C,KAAM,OAGjB,GAGL27C,EAAY,GACb,IAEEr8C,EAAMq7C,cAKP,cAACb,EAAY1C,SAAb,CACI1wC,MAAO,IACApH,EACHuH,OAAQ,MACRo0C,MAlIEt7C,MAAOX,EAAeG,EAAkB+mB,KAClD,MAAMhD,QAAiBhlB,IAAMgwB,KAAiDlX,oDAA6D,CAAEhY,QAAOG,WAAU+mB,qBACxJ,YAAE9lB,EAAF,UAAew7C,GAAc14B,EAASnjB,KAC5C4T,OAAOqJ,aAAasK,QAAQ,qBAAsBs0B,GAElDhB,EAAWx6C,GACX,MAAMJ,QAAau7C,EAAYn7C,GAC/BgmB,EAAa,CAAEuH,SAAU3tB,EAAK2tB,WAE9B3Q,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,oBAAqB,SAC1CtK,aAAasK,QAAQ,2BAA4B,QACjD+pB,cACAE,cACA8J,EAAS,CACLl3C,KAAM,QACN62C,QAAS,CACLh7C,SAHR,EAoHQ8c,OApFG,KACXE,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,2BAA4B,QACjDkqB,cACAE,cACAkJ,EAAW,MACXS,EAAS,CAAEl3C,KAAM,UAAjB,EA8EQg3C,SA3EKx7C,UAGb,MAAMujB,QAAiBhlB,IAAMgwB,KAAkDlX,oDAA6DrS,IACtI,YAAEvE,EAAF,UAAew7C,GAAc14B,EAASnjB,KAC5C4T,OAAOqJ,aAAasK,QAAQ,cAAelnB,GAC3CuT,OAAOqJ,aAAasK,QAAQ,qBAAsBs0B,GAElD5+B,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,aAAc,QACnCtK,aAAasK,QAAQ,2BAA4B,QACjD+pB,cACAE,cACA,MAAMvxC,QAAau7C,EAAYn7C,GAE/Bi7C,EAAS,CACLl3C,KAAM,WACN62C,QAAS,CACLh7C,SAHR,GAsDA,SASK6c,IAbE,cAACg/B,EAAD,GAGX,EAeW/B,K,uGCnSf,MAAM/E,EAAQ,WAKLphC,OAAOmoC,MAIZnoC,OAAOmoC,QAAQ,UAClB,EAUc,MARGtyB,IACdurB,EAAM,SAAU/9B,uiBAAYC,4BAA6BuS,EAAzD,E,OCIJ,MAAM6gB,EAAO0R,sBAAsC,CAAC,EAIjDn3B,KAAS,IAJwC,SAChD/H,EADgD,MAEhDpa,EAAQ,MACLic,GACI,EACP,MAAMjS,EAAW8H,cAEXynC,EAAoBrI,uBAAY,KAClCoB,EAAe,CACXkH,UAAWxvC,EAASiI,UADxB,GAID,IAMH,OAJAF,qBAAU,KACNwnC,GAAmB,GACpB,CAACA,IAGA,sBACIp3B,IAAKA,KACDlG,EAFR,UAII,cAACvH,EAAA,OAAD,UACI,gCAAQ1U,MAEXoa,IART,IAkBWwtB,K,oKCtCf,MAOM6R,EAAQC,YAAY,CACtBj9C,KAAM,WACNk9C,aATgC,CAChCx6C,OAAQ,GACRikC,aAAa,EACbwW,gBAAiB,KACjBC,cAAe,MAMfC,SAAU,CACNC,UAAUl9C,EAAsBgW,GAC5B,MAAM,OAAE1T,GAAW0T,EAAO0lC,QAE1B17C,EAAMsC,OAASA,CAClB,EACD66C,YAAYn9C,EAAsBgW,GAC9B,MAAM,MAAExS,GAAUwS,EAAO0lC,QAEzB17C,EAAMsC,OAAS,IAAItC,EAAMsC,OAAQkB,EACpC,EACD45C,YAAYp9C,EAAsBgW,GAC9B,MAAM,QAAEvS,EAAU,MAASuS,EAAO0lC,QAElC17C,EAAMumC,aAAc,EACpBvmC,EAAM+8C,gBAAkBt5C,CAC3B,EACD45C,YAAYr9C,EAAsBgW,GAC9B,MAAM,MAAExS,GAAUwS,EAAO0lC,QAEzB17C,EAAMsC,OAASqB,IAAEC,IAAI5D,EAAMsC,QAASuB,GAC5BA,EAAOvE,KAAOkE,EAAMlE,GACbkE,EAGJK,GAEd,EACDy5C,YAAYt9C,EAAsBgW,GAC9B,MAAM,QAAEvS,GAAYuS,EAAO0lC,QAE3B17C,EAAMsC,OAASqB,IAAEI,OAAO/D,EAAMsC,OAAQ,CAAEhD,GAAImE,GAC/C,EACD85C,YAAYv9C,EAAsBgW,GAC9B,MAAM,MAAE9S,EAAF,IAASN,GAAQoT,EAAO0lC,QAE9B17C,EAAMumC,aAAc,EACpBvmC,EAAMg9C,cAAgB,CAClB95C,QACAN,MAEP,EACDkwB,UAAU9yB,GACNA,EAAMumC,aAAc,CACvB,EACDiX,WAAWx9C,GACPA,EAAMumC,aAAc,EACpBvmC,EAAM+8C,gBAAkB,KACxB/8C,EAAMg9C,cAAgB,IACzB,KAIIvB,EAAUmB,EAAMnB,QAkDdmB,I,SCzGf,MAcMA,EAAQC,YAAY,CACtBj9C,KAAM,OACNk9C,aAhB4B,CAC5BW,eAAgB,KAChBz5C,SAAU,CACN05C,KAAM,CAAC,EACPC,OAAQ,IAEZt5C,QAAS,CACLq5C,KAAM,CAAC,EACPC,OAAQ,IAEZ/4C,aAAc,GACdg5C,WAAY,IAMZX,SAAU,CACNY,YAAY79C,EAAkBgW,GAC1B,MAAM,SAAEhS,GAAagS,EAAO0lC,QAE5B17C,EAAMgE,SAAS05C,KAAOxQ,YAAalpC,GACnChE,EAAMgE,SAAS25C,OAASG,OAAOC,KAAK/9C,EAAMgE,SAAS05C,KACtD,EACDM,WAAWh+C,EAAkBgW,GACzB,MAAM,QAAE3R,GAAY2R,EAAO0lC,QAE3B17C,EAAMqE,QAAQq5C,KAAOxQ,YAAa7oC,GAClCrE,EAAMqE,QAAQs5C,OAASG,OAAOC,KAAK/9C,EAAMqE,QAAQq5C,KACpD,EACDO,UAAUj+C,EAAkBgW,GACxB,MAAM,OAAEjQ,GAAWiQ,EAAO0lC,QAEtB31C,GACA/F,EAAMqE,QAAQq5C,KAAK33C,EAAOzG,IAAMyG,EAChC/F,EAAMy9C,eAAiB13C,EAAOzG,GAEzBU,EAAMqE,QAAQs5C,OAAO/3C,SAASG,EAAOzG,KACtCU,EAAMqE,QAAQs5C,OAAO93C,KAAKE,EAAOzG,KAGrCU,EAAMy9C,eAAiB,IAE9B,EACDS,iBAAiBl+C,EAAkBgW,GAC/B,MAAM,SAAE9Q,GAAa8Q,EAAO0lC,QACtB31C,EAAS/F,EAAMqE,QAAQq5C,KAAKx4C,GAE9Ba,IACAA,EAAOjB,YAAc,EAE5B,EACDq5C,kBAAkBn+C,GACdA,EAAMy9C,eAAiB,IAC1B,EACDW,gBAAgBp+C,EAAkBgW,GAC9B,MAAM,aAAEpR,GAAiBoR,EAAO0lC,QAEhC17C,EAAM4E,aAAeA,CACxB,EACDy5C,aAAar+C,EAAkBgW,GAC3B,MAAM,UAAEsoC,GAActoC,EAAO0lC,QACd17C,EAAM49C,WAAWj9C,MAAM49C,GAAeA,EAAWj/C,KAAOg/C,EAAUh/C,MAG7EU,EAAM49C,WAAW/3C,KAAKy4C,EAE7B,EACDE,gBAAgBx+C,EAAkBgW,GAC9B,MAAM,YAAEtP,GAAgBsP,EAAO0lC,QAE/B17C,EAAM49C,WAAa59C,EAAM49C,WAAWv0C,QAAQi1C,GAAcA,EAAUh/C,KAAOoH,GAC9E,KAII+0C,EAAUmB,EAAMnB,QAwDdmB,I,mBC5If,MAUMA,EAAQC,YAAY,CACtBj9C,KAAM,OACNk9C,aAZ4B,CAC5BpyC,MAAO,CACHgzC,KAAM,CAAC,EACPC,OAAQ,IAEZrzC,OAAQ,GACRm0C,eAAe,EACfC,eAAe,GAMfzB,SAAU,CACN0B,UAAU3+C,EAAkBgW,GACxB,MAAM,OAAE1L,GAAW0L,EAAO0lC,QAE1B17C,EAAMsK,OAASA,CAClB,EACDs0C,SAAS5+C,EAAkBgW,GACvB,MAAM,MAAEtL,GAAUsL,EAAO0lC,QAEzB17C,EAAM0K,MAAMgzC,KAAOxQ,YAAaxiC,GAChC1K,EAAM0K,MAAMizC,OAASG,OAAOC,KAAK/9C,EAAM0K,MAAMgzC,KAChD,EACDmB,QAAQ7+C,EAAkBgW,GACtB,MAAM,KAAExK,GAASwK,EAAO0lC,QAExB17C,EAAM0K,MAAMgzC,KAAKlyC,EAAKlM,IAAMkM,EAEvBxL,EAAM0K,MAAMizC,OAAO/3C,SAAS4F,EAAKlM,KAClCU,EAAM0K,MAAMizC,OAAO93C,KAAK2F,EAAKlM,GAEpC,EACDw/C,YAAY9+C,GACRA,EAAMy+C,eAAgB,CACzB,EACDM,aAAa/+C,GACTA,EAAMy+C,eAAgB,CACzB,EACDO,YAAYh/C,GACRA,EAAM0+C,eAAgB,CACzB,EACDO,aAAaj/C,GACTA,EAAM0+C,eAAgB,CACzB,KAIIjD,EAAUmB,EAAMnB,QCxD7B,MAIMmB,EAAQC,YAAY,CACtBj9C,KAAM,gBACNk9C,aANqC,CACrClxC,cAAe,IAMfqxC,SAAU,CACNiC,iBAAiBl/C,EAA2BgW,GACxC,MAAM,cAAEpK,GAAkBoK,EAAO0lC,QAEjC17C,EAAM4L,cAAgBA,CACzB,KAII6vC,EAAUmB,EAAMnB,QCTd0D,MATKC,YAAgB,CAChCC,SAAUC,EACVC,KAAMC,EACNC,KAAMC,IACNC,OAAQC,IACRp0C,KAAMq0C,EACNj0C,cAAek0C,ICHnB,MAAMlT,EAAQmT,YAAe,CACzBtE,QAAS0D,EACTa,SAAUzS,MASD0S,EAA+CC,IAE/CC,EAAc,IAAMC,cAElBxT,K,mCC1Bf,8HAyBA,MAAMp4B,EAAYC,aAAYa,IAAD,CACzBC,KAAM,CAAC,EACPi0B,YAAa,CACT1oB,WAAY,UACZgM,UAAW,WAEf7U,QAAS,CACLzV,MAAO8S,EAAME,QAAQyC,QAAQK,UAiFtB8pB,IA7EuC,IAA6B,IAA5B,UAAE3rB,KAAc2I,GAAW,EAE9E,MAAOqH,EAAU6d,GAAe5H,IAAMrmB,SAAS,OACzC,SAAEzU,EAAF,aAAYklB,GAAiBC,cAC7B7Q,EAAU1B,KACT6E,EAAQ2N,GAAa3Q,mBAAS,CACjCgY,SAAUzsB,EAASysB,WAWjBqb,EAAwBC,IAC1BrF,EAAY,MACZxd,EAAa,IACNzN,EACHgV,SAAUsb,GAFd,EAME/b,EAAqBS,GACP,cAAZA,EACyB,MAArBzsB,EAASysB,SAAyB,cAAC,IAAD,CAAY5X,UAAWP,EAAQ+B,QAA/B,SAAyCoW,IACnE,cAAC,IAAD,UAAaA,IAGA,MAArBzsB,EAASysB,SAAyB,cAAC,IAAD,CAAY5X,UAAWP,EAAQ+B,QAA/B,SAAyCoW,IACnE,cAAC,IAAD,UAAaA,IAIjC,OACI,eAAC,IAAD,WACI,cAAC,IAAD,CAASxS,SAAS,QAAlB,SACI,cAAC,IAAD,MAGJ,cAAC,IAAD,CACI,aAAW,OACX,gBAAc,YACd,gBAAc,OACdpF,UAAWP,EAAQszB,YACnBlyB,QAtCS9T,IACjB8gC,EAAY9gC,EAAM8hC,cAAlB,EAgCI,SAOI,cAAC,IAAD,MAEJ,eAAC,IAAD,CACIhmC,GAAG,gBACHmnB,SAAUA,EACVF,aAAW,EACXpQ,KAAM/B,QAAQqS,GACdzB,QA3CQ,KAChBsf,EAAY,KAAZ,EAqCI,UAOI,cAAC,IAAD,CAAUhtB,QAAS,IAAMoyB,EAAqB,MAA9C,SACI,cAAC,IAAD,CAAY7yB,UAAW,OAAvB,SACK+W,EAAkB,kBAG3B,cAAC,IAAD,CAAUtW,QAAS,IAAMoyB,EAAqB,MAA9C,SACI,cAAC,IAAD,CAAY7yB,UAAW,OAAvB,SACK+W,EAAkB,oBA7BvC,C,mCCxEJ,oJAgCA,MAgBMgvB,EAAQC,YAAY,CACtBj9C,KAAM,SACNk9C,aAlB8B,CAC9BuD,UAAU,EACVh4C,MAAO,CACHq1C,KAAM,CAAC,EACPC,OAAQ,IAEZp1C,MAAO,CACHm1C,KAAM,CAAC,EACPC,OAAQ,IAEZz0C,QAAS,CACLw0C,KAAM,CAAC,EACPC,OAAQ,KAOZV,SAAU,CACNqD,SAAStgD,EAAoBgW,GACzB,MAAM,MAAE5N,GAAU4N,EAAO0lC,QAEzB17C,EAAMqI,MAAMq1C,KAAOxQ,YAAa9kC,EAAMC,OACtCrI,EAAMqI,MAAMs1C,OAASG,OAAOC,KAAK/9C,EAAMqI,MAAMq1C,MAC7C19C,EAAMuI,MAAMm1C,KAAOxQ,YAAa9kC,EAAMG,OACtCvI,EAAMuI,MAAMo1C,OAASG,OAAOC,KAAK/9C,EAAMuI,MAAMm1C,MAC7C19C,EAAMkJ,QAAQw0C,KAAOxQ,YAAa9kC,EAAMc,SACxClJ,EAAMkJ,QAAQy0C,OAASG,OAAOC,KAAK/9C,EAAMkJ,QAAQw0C,MACjD19C,EAAMqgD,UAAW,CACpB,EACDE,WAAWvgD,EAAoBgW,GAC3B,MAAM,KAAE7M,GAAS6M,EAAO0lC,QAExB17C,EAAMqI,MAAMq1C,KAAKv0C,EAAK7J,IAAM6J,EAC5BnJ,EAAMqI,MAAMs1C,OAAO93C,KAAKsD,EAAK7J,GAChC,EACDkhD,WAAWxgD,EAAoBgW,GAC3B,MAAM,KAAE7M,GAAS6M,EAAO0lC,QAExB17C,EAAMqI,MAAMq1C,KAAKv0C,EAAK7J,IAAM6J,CAC/B,EACDs3C,UAAUzgD,EAAoBgW,GAC1B,MAAM,OAAEhN,GAAWgN,EAAO0lC,SACpB,QAAEpzC,GAAYtI,EAAMqI,MAAMq1C,KAAK10C,GAErChJ,EAAMqI,MAAMq1C,KAAK10C,GAAQV,QAAU,GACnCtI,EAAMuI,MAAMm1C,KAAO/5C,IAAE+8C,KAAK1gD,EAAMuI,MAAMm1C,KAAMp1C,GAC5C3E,IAAE+F,KAAK1J,EAAMuI,MAAMo1C,UAAWr1C,EACjC,EACDq4C,WAAW3gD,EAAoBgW,GAC3B,MAAM,OAAEhN,GAAWgN,EAAO0lC,QAE1B17C,EAAMqI,MAAMq1C,KAAO/5C,IAAE+8C,KAAK1gD,EAAMqI,MAAMq1C,KAAM10C,GAC5CrF,IAAE+F,KAAK1J,EAAMqI,MAAMs1C,OAAQ30C,EAC9B,EACD43C,WAAW5gD,EAAoBgW,GAC3B,MAAM,KAAE1M,GAAS0M,EAAO0lC,QAExB17C,EAAMuI,MAAMm1C,KAAKp0C,EAAKhK,IAAMgK,EAC5BtJ,EAAMuI,MAAMo1C,OAAO93C,KAAKyD,EAAKhK,IAC7BU,EAAMqI,MAAMq1C,KAAKp0C,EAAKN,QAAQV,QAAQzC,KAAKyD,EAAKhK,GACnD,EACDuhD,WAAW7gD,EAAoBgW,GAC3B,MAAM,KAAE1M,GAAS0M,EAAO0lC,QAExB/3C,IAAE02C,MAAMr6C,EAAMuI,MAAMm1C,KAAKp0C,EAAKhK,IAAKgK,EACtC,EACDw3C,SAAS9gD,EAAoBgW,GACzB,MAAM,OAAErN,EAAF,SAAUa,EAAV,OAAoBR,GAAWgN,EAAO0lC,SACpC1yC,OAAQ+3C,GAAiB/gD,EAAMuI,MAAMm1C,KAAK/0C,GAGlDhF,IAAE+F,KAAK1J,EAAMqI,MAAMq1C,KAAKqD,GAAcz4C,QAASK,GAI3CK,GACAhJ,EAAMuI,MAAMm1C,KAAK/0C,GAAQK,OAASA,EAClChJ,EAAMqI,MAAMq1C,KAAK10C,GAAQV,QAAQsB,OAAOJ,EAAU,EAAGb,IAErD3I,EAAMqI,MAAMq1C,KAAKqD,GAAcz4C,QAAQsB,OAAOJ,EAAU,EAAGb,EAElE,EACDq4C,WAAWhhD,EAAoBgW,GAC3B,MAAM,OAAErN,GAAWqN,EAAO0lC,SACpB,OAAE1yC,GAAWhJ,EAAMuI,MAAMm1C,KAAK/0C,GAEpC3I,EAAMuI,MAAMm1C,KAAO/5C,IAAE+8C,KAAK1gD,EAAMuI,MAAMm1C,KAAM/0C,GAC5ChF,IAAE+F,KAAK1J,EAAMuI,MAAMo1C,OAAQh1C,GAC3BhF,IAAE+F,KAAK1J,EAAMqI,MAAMq1C,KAAK10C,GAAQV,QAASK,EAC5C,EACDs4C,WAAWjhD,EAAoBgW,GAC3B,MAAM,QAAElM,GAAYkM,EAAO0lC,QACd17C,EAAMuI,MAAMm1C,KAAK5zC,EAAQnB,QAEjCD,SAAS7C,KAAKiE,EACtB,EACDo3C,aAAalhD,EAAoBgW,GAC7B,MAAM,OAAErN,EAAF,UAAUoB,GAAciM,EAAO0lC,QACxB17C,EAAMuI,MAAMm1C,KAAK/0C,GAEzBH,WAAW3C,KAAKkE,EACxB,EACDo3C,gBAAgBnhD,EAAoBgW,GAChC,MAAM,OAAErN,EAAF,UAAUoB,GAAciM,EAAO0lC,QAC/BpyC,EAAOtJ,EAAMuI,MAAMm1C,KAAK/0C,GAE9BW,EAAKd,WAAa7E,IAAEC,IAAI0F,EAAKd,YAAayB,GAClCA,EAAW3K,KAAOyK,EAAUzK,GACrByK,EAGJE,GAEd,EACDm3C,gBAAgBphD,EAAoBgW,GAChC,MAAM,OAAErN,EAAF,YAAUqB,GAAgBgM,EAAO0lC,QACjCpyC,EAAOtJ,EAAMuI,MAAMm1C,KAAK/0C,GAE9BW,EAAKd,WAAa7E,IAAEI,OAAOuF,EAAKd,WAAY,CAAElJ,GAAI0K,GACrD,EACDq3C,aAAarhD,EAAoBgW,GAC7B,MAAM,OAAErN,EAAF,YAAUqB,EAAV,UAAuBE,GAAc8L,EAAO0lC,QAC5CpyC,EAAOtJ,EAAMuI,MAAMm1C,KAAK/0C,GAE9BhF,IAAEG,OAAOwF,EAAM,CACXd,WAAY7E,IAAEC,IAAI0F,EAAKd,YAAauB,IAC5BA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY,IAAIsB,EAAUtB,WAAYyB,KAIvCH,MAGlB,EACDu3C,gBAAgBthD,EAAoBgW,GAChC,MAAM,OACFrN,EADE,YAEFqB,EAFE,UAGFE,GACA8L,EAAO0lC,QACLpyC,EAAOtJ,EAAMuI,MAAMm1C,KAAK/0C,GAE9BW,EAAKd,WAAa7E,IAAEC,IAAI0F,EAAKd,YAAauB,IAClCA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY9E,IAAEC,IAAImG,EAAUtB,YAAa4B,GACjCA,EAAW/K,KAAO4K,EAAU5K,GACrB4K,EAGJG,MAKZN,IAEd,EACDw3C,gBAAgBvhD,EAAoBgW,GAChC,MAAM,OAAErN,EAAF,YAAUqB,EAAV,YAAuBI,GAAgB4L,EAAO0lC,QAC9CpyC,EAAOtJ,EAAMuI,MAAMm1C,KAAK/0C,GAE9BW,EAAKd,WAAa7E,IAAEC,IAAI0F,EAAKd,YAAauB,IAClCA,EAAUzK,KAAO0K,GACjBrG,IAAEG,OAAOiG,EAAW,CAChBtB,WAAY9E,IAAEI,OAAOgG,EAAUtB,WAAY,CAAEnJ,GAAI8K,MAIlDL,IAEd,KAII0xC,EAAUmB,EAAMnB,QAEhB6E,EAAW,IAAgBjgD,UACpC,MAAMujB,QAAiBhlB,IAAM2X,IAAuB,qBAEpDwlC,EAASa,EAAM4E,QAAQlB,SAAS18B,EAASnjB,MAAzC,EAsDSqgD,EAAW,CAACn4C,EAAgBa,EAAkBR,IAA8B3I,gBAC/EzB,IAAMgwB,KAAK,yBAA0B,CACvCjmB,SACAa,WACAR,WAGJ+yC,EAASa,EAAM4E,QAAQV,SAAS,CAC5Bn4C,SACAa,WACAR,WAHJ,C,mCCrRJ,oBAKeqW,IAFM,IAAMk7B,qBAAWrH,I,+LCA/B,IAAKuO,EAOAC,EAQAC,EAOAC,EASAC,EASAC,G,SAxCAL,K,gBAAAA,E,kBAAAA,E,cAAAA,E,mBAAAA,M,cAOAC,K,gBAAAA,E,kBAAAA,E,cAAAA,E,kBAAAA,E,uBAAAA,M,cAQAC,K,gBAAAA,E,cAAAA,E,kBAAAA,E,uBAAAA,M,cAOAC,K,YAAAA,E,cAAAA,E,aAAAA,M,cASAC,K,gBAAAA,E,kBAAAA,E,kBAAAA,E,YAAAA,E,sBAAAA,E,eAAAA,M,cASAC,K,4BAAAA,E,4BAAAA,E,+BAAAA,M,KA0DL,MAAMC,EAA2C,CACpDC,mBAAoBP,EAAqB96C,MACzCs7C,mBAAoB,CAAC,EACrBC,gBAAiB,IACbC,YACI,IAAIx7C,MAAJ,wDAERy7C,iBAAkB,IACdD,YACI,IAAIx7C,MAAJ,wDAER07C,sBAAuB,IACnBF,YACI,IAAIx7C,MAAJ,wDAER27C,KAAM,KACFlhD,QAAQmhD,KAAR,iDAEJC,KAAM,KACFphD,QAAQmhD,KAAR,iDAEJjU,kBAAmB,KACfltC,QAAQmhD,KAAR,gEAGO,MAEXrT,MAAO,KACH9tC,QAAQmhD,KAAR,kDAEJE,eAAgB,MACZC,QAASP,YACL,IAAIx7C,MAAJ,wDAEJg8C,SAAU,UAILC,EAAuBlmB,gBAChCqlB,GCrIJ,IAAIc,EAAmC,KACnCC,EAA+B,UAC/BC,EAAwC,GAE5C,MAAMC,EAAwB77C,IAC1B27C,EAAe37C,EACf47C,EAAsBr9C,SAAQu9C,IAC1BA,GAAI,IAERF,EAAwB,EAAxB,EAGEG,EAAqBD,IACvBF,EAAsBl9C,KAAKo9C,EAA3B,EAmDSE,EAAwB1xC,IAGjC,MAAM,mBAAEwwC,GAAuBxwC,GACxBuwC,EAAoBoB,GAAyB/sC,mBAChDorC,EAAqB4B,SAsEzB,OAnEAnuC,qBAAU,KACN,MAAMouC,EAA2B,KAEzBF,EADiB,WAAjBN,EACsBrB,EAAqB8B,OAErB9B,EAAqB96C,MAC9C,EAGL,GACIq7C,IAAuBP,EAAqB96C,OAC5Cq7C,IAAuBP,EAAqB8B,OAE5C,OAGJ,GAAIvB,IAAuBP,EAAqB4B,QAC5C,OACKpB,GACAA,EAAmBuB,WACnBvB,EAAmBwB,UACnBxB,EAAmByB,gBASxBN,EAAsB3B,EAAqBkC,UAPvCviD,QAAQmhD,KAAR,oKAGAa,EAAsB3B,EAAqB96C,QAQnD,MAAMi9C,EAAgB,UAAM3B,EAAmByB,WAAzB,cAAyCzB,EAAmBuB,UAA5D,qCACWvB,EAAmBwB,UAEpD,IAAKZ,EAGD,OAFAK,EAAkBI,OAxFAM,KAC1B,GAAqB,YAAjBd,EAAJ,CAOA,GAHAA,EAAe,UACfD,EAAoBe,GAEfA,EAMD,OALAxiD,QAAQmhD,KACJ,4FAGJS,EAAqB,SAKzB,GAAM3uC,OAAM,eAAqBA,OAAM,cAAkBwvC,MACrDb,EAAqB,eAIzB,IACI,MAAMc,EAAOvsC,SAASusC,MAAQvsC,SAASwsC,qBAAqB,QAAQ,GAC9DC,EAAgBzsC,SAASwhC,cAAc,UAC7CiL,EAAcn/C,KAAO,kBACrBm/C,EAAclsC,IAAM8rC,EACpBI,EAAcC,OAAS,KACnBjB,EAAqB,SAArB,EAEJgB,EAAcnO,QAAUR,IACpBj0C,QAAQmhD,KAAR,gDAA8DlN,GAC9D2N,EAAqB,QAArB,EAEJc,EAAKI,YAAYF,EAIpB,CAHC,MAAO3O,GACLj0C,QAAQmhD,KAAR,gDAA8DlN,GAC9D2N,EAAqB,QACxB,CApCA,CAoCA,EAkDOmB,CAAqBP,GAIzB,GAAIf,IAAsBe,EAKtB,OAJAR,EAAsB3B,EAAqB96C,YAC3CvF,QAAQmhD,KAAR,+IAMJ,OAAQO,GACJ,IAAK,SACDM,EAAsB3B,EAAqB8B,QAC3C,MACJ,IAAK,UACDL,EAAkBI,GAClB,MACJ,QACIF,EAAsB3B,EAAqB96C,OAGnD,MAAO,KAtHes8C,QAuHGK,EAtH7BP,EAAwBA,EAAsB15C,QAC1C+6C,GAAYA,IAAanB,GAqHrB,CADJ,GAGD,CAACjB,EAAoBC,IAEjB,CAAED,qBAAT,E,4BC/HG,MAAMqC,EAAyBn6B,IAClC,MAAM,SAAE3M,GAAa2M,GAEd+3B,EAAoBqC,GAAyB5nB,WAChD,CACIgnB,WAAY,gCACZF,UAAW,UACXe,GAAI,GACJd,SAAU,cAGZ,mBAAEzB,GAAuBmB,EAAqB,CAAElB,uBAGtDvlB,aAAgB,KACZ8nB,GAAsB,GACvB,IAGH,MAAMA,EAAuBnkD,UACzB,IAAIokD,EAA8C/mC,aAAaC,QAAQ,+CACnE8mC,EACAH,EAAsB,CAClBZ,WAAY,gCACZF,UAAW,UACXe,GAAI,GACJd,SAAUgB,KAGdA,QAAoD1S,cAChD0S,GACAH,EAAsB,CAClBZ,WAAY,gCACZF,UAAW,UACXe,GAAI,GACJd,SAAUgB,IAGrB,EAICC,EAAcn/B,iBAWlB,CAAC,GAEGo/B,EAAqBC,mBAAQ,KAoFxB,CACH5C,qBACAC,qBACAQ,eAtFmB,CACnBzU,EACA6W,EACAC,EACAC,KAEAL,EAAYh+B,QAAQsnB,GAAY,CAC5B6W,eACAC,eACAC,gBACAzW,kBAAmB,IAIVj6B,OAAO2wC,eAEJ3wC,OAAO2wC,cAAcC,YAErB5wC,OAAO2wC,cAAcC,aAAajX,IACtC,KAGRkX,SAAU,IAAIC,KAEX,CACHzC,QAASgC,EAAYh+B,QAAQsnB,GAAUkX,SAASE,eAChDzC,SAAU,KACD+B,EAAYh+B,QAAQsnB,KACzB0W,EAAYh+B,QAAQsnB,GAAUkX,SAASG,kBAChCX,EAAYh+B,QAAQsnB,GAA3B,IA0DRqU,sBAtB2BrU,GACpB0W,EAAYh+B,QAAQsnB,GACrB0W,EAAYh+B,QAAQsnB,GAAU6W,aAC9B1C,YAAW,IAAIx7C,MAAM,qCAoB3Bu7C,gBAjBqBlU,GACd0W,EAAYh+B,QAAQsnB,GACrB0W,EAAYh+B,QAAQsnB,GAAU8W,aAC9B3C,YAAW,IAAIx7C,MAAM,qCAe3By7C,iBAZsBpU,GACf0W,EAAYh+B,QAAQsnB,GACrB0W,EAAYh+B,QAAQsnB,GAAU+W,cAC9B5C,YAAW,IAAIx7C,MAAM,qCAU3B27C,KAxDS,CAACtU,EAAkBv8B,KACvBizC,EAAYh+B,QAAQsnB,IAEzB0W,EAAYh+B,QAAQsnB,GAAUkX,SAASI,KAAK,CACxCC,WAAY3D,EAAkB4D,KAC9B/zC,WAFJ,EAsDA+wC,KAhDUxU,IACL0W,EAAYh+B,QAAQsnB,IAEzB0W,EAAYh+B,QAAQsnB,GAAUkX,SAASI,KAAK,CACxCC,WAAY3D,EAAkB6D,MADlC,EA8CAvW,MAnCWlB,IACN0W,EAAYh+B,QAAQsnB,IAEzB0W,EAAYh+B,QAAQsnB,GAAUkX,SAASI,KAAK,CACxCC,WAAY3D,EAAkB8D,OADlC,EAiCApX,kBA1CuBN,IACvB,GAAK0W,EAAYh+B,QAAQsnB,GAEzB,OAAO0W,EAAYh+B,QAAQsnB,GAAUM,mBAArC,KAyCL,CAAC0T,EAAoBC,IAExB,OACI,cAACW,EAAqB9K,SAAtB,CAA+B1wC,MAAOu9C,EAAtC,SACKpnC,GAFT,EAOJ8mC,EAAsBxqC,aAAe,CAAC,E,uBClItC,IAAI8rC,EAAgB,EAMpB,MAAMC,EAA2C9H,OAAOC,KACpD8D,GACFj+C,KAAIwf,GAAQy+B,EAAyBz+B,KAE1ByiC,EAAiBp0C,IAC1B,MAAM,QACF+yB,EADE,SAEFkM,EAFE,cAGFC,EAHE,oBAIFmV,EAJE,eAKFlV,EALE,qBAMFmV,GACAt0C,GAEE,mBAAEuwC,EAAF,mBAAsBC,EAAtB,eAA0CQ,GAAmBlI,qBAC/DqI,GAGEoD,EAAezgC,kBAAO,IAErB0gC,EAAaC,GAAkB7vC,oBAAsB,MACxD23B,UAzBJ2X,IACM,iBAAN,OAAwBA,IAyBpBQ,aAAcxE,EAAe0B,QAC7B+C,YAAa1E,EAAc2B,YAGzBgD,EAAuB9gC,iBAAO,IAAI+gC,IAAwB,IAC1DC,EAAwBhhC,iBAC1B,IAAI+gC,IAAkCzE,EAAiB2E,OAErDC,EAAyBlhC,iBAAO,IAAI4/B,KACpCuB,EAAwBnhC,iBAAO,CACjCohC,iBAAkBC,IAAaC,MAC/BlE,SAAU,SAERmE,ECrFH,SACHC,EACAC,GAGA,MAAMC,EAAe1hC,kBAAO,IAErBD,GAAOjP,oBAKX,MACCjP,MAAO2/C,EACPG,UAAW,KACXF,WAEAG,OAAQ,CACAzgC,cACA,OAAOpB,EAAIle,KACd,EACGsf,YAAQtf,GACR,GAAI6/C,EAAavgC,QACb,OAGJ,MAAM0gC,EAAO9hC,EAAIle,MAEjBigD,IAEA/hC,EAAI4hC,UAAY,KAEZE,IAAShgD,IACTke,EAAIle,MAAQA,EACZke,EAAI4hC,UAAY5hC,EAAI0hC,YAAc,KAEzC,OAIT,SAASK,IACL,MAAMH,EAAY5hC,EAAI4hC,UACtB5hC,EAAI4hC,UAAY,KAEXA,GAGLA,GACH,CAwBD,OApBA5hC,EAAI0hC,SAAWA,EAGf9xC,qBAAU,KACFoQ,EAAI0hC,WACJ1hC,EAAI4hC,UAAY5hC,EAAI0hC,YAAc,MAG/B,KACHC,EAAavgC,SAAU,EAElBpB,EAAI4hC,YAITG,IACA/hC,EAAIle,MAAQ,KAAZ,IAEL,IAEIke,EAAI6hC,MACd,CDYqBG,CAAoB,MAAM,KACxC,IAAKR,EAAUpgC,QACX,OAGJ,MAAM6gC,EAA0B,KAC5BlB,EAAqB3/B,QAAQ4+B,KACzBrzC,KAAKsB,MAAsC,IAAhCuzC,EAAUpgC,QAAQ5I,aADjC,EAME0pC,EAAqBnS,IACvB,MAAMoS,EAAiBpS,EAAEqG,QAAQgM,SAAS7iD,MACsB,IAA5D+gD,EAA+B5yC,QAAQy0C,GAM3ClB,EAAsB7/B,QAAQ4+B,KAAKmC,GAL/BrmD,QAAQmhD,KAAR,+CAC4CkF,EAD5C,kCAKJ,EAGEE,EAAoBtS,IACtB,MAAM,EAAEzjC,EAAF,EAAKC,EAAL,MAAQE,EAAR,OAAeD,GAAWujC,EAAEqG,QAAQkM,UAE1CnB,EAAuB//B,QAAQ4+B,KAAK,CAChCzgD,KAAMi9C,EAAkB+F,aACxBj2C,IACAC,IACAE,QACAD,UALJ,EASEg2C,EAAmB,KACrBrB,EAAuB//B,QAAQ4+B,KAAK,CAChCzgD,KAAMi9C,EAAkBiG,cAD5B,EAKEC,EAAqB3S,IACvB,MAAM,MAAEtjC,EAAF,OAASD,GAAWujC,EAAEqG,QAAQuM,WAEpCxB,EAAuB//B,QAAQ4+B,KAAK,CAChCzgD,KAAMi9C,EAAkBoG,cACxBn2C,QACAD,UAHJ,EAQEq2C,EAA4B,IAE9B9zC,OAAM,cAAkBm7B,GAAG4Y,UAAUC,aAEnCC,EAAuB,IAEzBj0C,OAAM,cAAkBm7B,GAAG4Y,UAAUG,cAezC,OAbAzB,EAAUpgC,QAAQ8hC,iBAAiB,aAAcjB,GACjDT,EAAUpgC,QAAQ8hC,iBAAiB,qBAAsBhB,GACzDV,EAAUpgC,QAAQ8hC,iBAAiB,eAAgBV,GACnDhB,EAAUpgC,QAAQ8hC,iBACdL,IACAR,GAGJb,EAAUpgC,QAAQ8hC,iBACdF,IACAN,GAGG,KACElB,EAAUpgC,UACfogC,EAAUpgC,QAAQ+hC,oBACd,aACAlB,GAEJT,EAAUpgC,QAAQ+hC,oBACd,qBACAjB,GAEJV,EAAUpgC,QAAQ+hC,oBAAoB,eAAgBX,GACtDhB,EAAUpgC,QAAQ+hC,oBACdN,IACAR,GAEJb,EAAUpgC,QAAQ+hC,oBACdH,IACAN,GAEJtB,EAAsBhgC,QAAQigC,iBAAiBhY,cAC/C+X,EAAsBhgC,QAAQi8B,WAC9B0D,EAAqB3/B,QAAQ2+B,WAC7ByB,EAAUpgC,QAAQgiC,UAClBxC,GAAeyC,IAAS,IACjBA,EACHxC,aAAcxE,EAAeiH,UAC7BxC,YAAa1E,EAAckH,cAH/B,CAvBJ,IA+BEC,EAAkB,KACM,OAAtB/B,EAAUpgC,UAIdw/B,GAAeyC,IAAS,IACjBA,EACHvC,YAAa1E,EAAciC,YAG/BmD,EAAUpgC,QACLoiC,UAAU,CAAEtkB,YACZ7gB,MAAK,KACEqiC,EAAat/B,UACbiqB,GAAeA,EAAcnM,GACjC0hB,GAAeyC,IAAS,IACjBA,EACHvC,YAAa1E,EAAc6B,WAF/B,IAKHn/B,OAAOjjB,IACA6kD,EAAat/B,UACjBtlB,QAAQmhD,KAAR,qCAAmDphD,GAC/C2kD,GAAqBA,EAAoBthB,GAC7C0hB,GAAeyC,IAAS,IACjBA,EACHvC,YAAa1E,EAAc/6C,UAF/B,IAdR,EAwLJ,OApJAuO,qBAAU,IACC,KACH8wC,EAAat/B,SAAU,CAAvB,GAEL,IAGHxR,qBAAU,KACF+wC,EAAYE,eAAiBxE,EAAe4B,SAG3CuD,EAAUpgC,QAKfmiC,IAJIznD,QAAQmhD,KAAR,0CAIa,GAClB,CAAC/d,IAGJtvB,qBAAU,KACF+wC,EAAYE,eAAiBxE,EAAe4B,QAIhDsF,GAAiB,GAClB,CAAC5C,EAAYE,eAGhBjxC,qBAAU,KACN,GACI+wC,EAAYG,cAAgB1E,EAAckH,WAC1C3C,EAAYE,eAAiBxE,EAAeiH,UAE5C,OAGJ,MAgBMG,EAAa,KACf,GAAIjC,EAAUpgC,QACV,OAIJ,MAAMsiC,EAAgB30C,OAAM,cAC5B,IACI,IAAI7T,EAA8B,CAC9ByoD,SAAU,CACNvY,aAIJj/B,EAAQ69B,kBACR9uC,EAASiR,EAAQ69B,gBAAgB9uC,IAAWA,GAGhDA,EAAS,IACFA,EACH0oD,SAAUjD,EAAYjY,SACtBmb,SAAU,IACH3oD,EAAO2oD,SACV1F,SAAUxB,EAAmBwB,SAC7BD,UAAWvB,EAAmBuB,UAC9Be,GAAItC,EAAmBsC,IAE3BrZ,QAAS,IACF1qC,EAAO0qC,UAIlB,MAAMke,EAASJ,EAAcnF,MAAMrjD,GAEnCsmD,EAAUpgC,QAAU0iC,EACpB,MAAM,QAAE1G,EAAF,SAAWC,GAAaF,EAC1BwD,EAAYjY,SACZqY,EAAqB3/B,QAAQ0+B,eAC7BmB,EAAsB7/B,QAAQ0+B,eAC9BqB,EAAuB//B,QAAQ0+B,gBAE7BiE,EAA4B3G,EAAQjU,WACtC,IAA4C,IAA3C,WAAE8W,EAAF,QAAc9zC,GAA4B,EACvC,OAAQ8zC,GACJ,KAAK3D,EAAkB4D,KACnB,IAAK/zC,EAAS,OA7DvB,EAAC1S,EAAcmwC,KAC1B,GACK4X,EAAUpgC,SAC8B,kBAAlCogC,EAAUpgC,QAAQ5I,YAK7B,IACQoxB,GAAO4X,EAAUpgC,QAAQwoB,QAC7B4X,EAAUpgC,QAAQ5I,YAAc/e,EAAO,GAG1C,CADD,MAAMsC,GACL,GAiDmBioD,CAAO73C,EAAQw9B,OAAQx9B,EAAQy9B,OAC/B,MACJ,KAAK0S,EAAkB8D,MACnB,IAAKoB,EAAUpgC,QAAS,OACxBogC,EAAUpgC,QAAQwoB,QAClB,MACJ,KAAK0S,EAAkB6D,KACnB,IAAKqB,EAAUpgC,QAAS,OACxBogC,EAAUpgC,QAAQ87B,OAX1B,IAgBRkE,EAAsBhgC,QAAU,CAC5BigC,iBAAkB0C,EAClB1G,YAGA/R,GACAA,EAAe,CAAEpM,UAASwJ,SAAUiY,EAAYjY,WAEpDkY,GAAeyC,IAAS,IACjBA,EACHxC,aAAcxE,EAAe4B,UASpC,CAPC,MAAOlO,GACLj0C,QAAQmhD,KAAR,iCAA+ClN,GAC3C0Q,GAAsBA,EAAqBvhB,GAC/C0hB,GAAeyC,IAAS,IACjBA,EACHxC,aAAcxE,EAAeh7C,SAEpC,GAGL,OAAQq7C,GACJ,KAAKP,EAAqB8B,OACtBwF,IACA,MACJ,KAAKtH,EAAqB96C,MAClBo/C,GAAsBA,EAAqBvhB,GAC/C0hB,GAAeyC,IAAS,IACjBA,EACHxC,aAAcxE,EAAeh7C,UARzC,GAYD,CAACq7C,IAEGiE,CAAP,E,aEnVJ,MAAM/vC,EAAUqzC,IAAWte,OAAO,CAC9Bue,cAAe,CACX13C,OAAQ,OACRC,MAAO,QAEX03C,qBAAsB,CAClB33C,OAAQ,OACRC,MAAO,OACPpD,gBAAiB,YACjBwI,QAAS,OACTmE,cAAe,SACflE,eAAgB,eAChB5N,SAAU,WACVoR,aAAc,OAElB8uC,gBAAiB,CACb33C,MAAO,OACP8J,SAAU,OACVC,WAAY,SACZ6tC,YAAa,SACbC,UAAW,SACX7tC,WAAY,SACZC,cAAe,SACfklB,UAAW,SACX1+B,MAAO,aAMFwiD,EAAiB96B,IAC1B,MAAM,QACFsa,EADE,SAEFkM,EAFE,qBAGFqV,EAHE,eAIFnV,EAJE,gBAKFtB,EALE,oBAMFwW,EANE,cAOFnV,GACAzmB,GAEE,SAAE8jB,EAAF,aAAYmY,GAAiBN,EAAc,CAC7CnV,WACAlM,UACAuhB,uBACAnV,iBACAkV,sBACAnV,gBACArB,oBAGJ,OACI,mCACK6W,IAAiBxE,EAAeh7C,MAC7B,qBAAK8P,UAAWozC,YAAI3zC,EAAQuzC,sBAA5B,SACI,qBAAKhzC,UAAWozC,YAAI3zC,EAAQwzC,iBAA5B,SA3Bc,sCAgClB,qBAAKpqD,GAAI0uC,EAAUv3B,UAAWozC,YAAI3zC,EAAQszC,kBATtD,EAeJxE,EAAcnrC,aAAe,CACzB62B,UAAU,GCpHP,MAAMoZ,EAITC,YAAoBC,GAAoB,KAApBA,YAAmB,KAF/BC,eAAiB51C,OAAO2wC,aAEU,CAElCkF,qBACJ,OAAKv5C,KAAKs5C,gBAAmBt5C,KAAKq5C,UAI3Br5C,KAAKs5C,eAAeE,UAAUx5C,KAAKq5C,WAH/B,IAId,CAEDI,cACI,OAAOz5C,KAAKu5C,oBACf,CAEDG,qBACI,MAAMC,EAAiB35C,KAAKu5C,qBAE5B,IAAKI,EACD,OAAO,KAGX,MAAMC,EAAeD,EAAeE,kBACpC,OAAOD,EACD,CACEx4C,MAAOw4C,EAAaE,WACpB34C,OAAQy4C,EAAaG,aAEvB,IACT,CAEDC,sBACI,MAAML,EAAiB35C,KAAKu5C,qBAE5B,IAAKI,EACD,OAAO,KAGX,MAAMM,EAAON,EAAeO,UAE5B,OAAKD,EAIE,CACH74C,MAAO64C,EAAKE,YACZh5C,OAAQ84C,EAAKG,cALN,IAOd,EC/CE,MAAMxc,EAAaP,IACtB,MAAMgd,EAAgBzQ,qBAAWqI,GAC3BqI,EAAc1lC,iBAAOyoB,GAE3B94B,qBAAU,KACN+1C,EAAYvkC,QAAUsnB,CAAtB,GACD,CAACA,IA2DJ,OAzDe4W,mBAAQ,KACnB,SAASsG,IACL,QAAKD,EAAYvkC,UACbtlB,QAAQmhD,KAAR,8EAGO,EAId,CAED,MAAO,CACH8H,mBAAoB,IACXa,IAIE,IAAIpB,EAAmBmB,EAAYvkC,SAAS2jC,qBAHxC,KAKfM,oBAAqB,IACZO,IAIE,IAAIpB,EACPmB,EAAYvkC,SACdikC,sBALS,KAOfQ,WAAY,KACHD,KAGLF,EAAcxI,KAAKyI,EAAYvkC,QAA/B,EAEJ2nB,WAAa58B,IACJy5C,KAGLF,EAAc1I,KAAK2I,EAAYvkC,QAASjV,EAAxC,EAEJ25C,YAAa,KACJF,KAGLF,EAAc9b,MAAM+b,EAAYvkC,QAAhC,EAEJ4nB,kBAAmB,IACV4c,IAIE,IAAIpB,EAAmBmB,EAAYvkC,SAAS0jC,cAHxC,KArCnB,GA2CD,CAACY,GAEJ,ECjES5c,EAAoBJ,IAC7B,MAAM,gBAAEkU,EAAF,sBAAmBG,EAAnB,iBAA0CD,GAAqB7H,qBAAWqI,GAC1EyI,EAAiB9lC,iBAAO,IAAI+gC,IAAgBzE,EAAiB2E,OAC7D8E,EAAkB/lC,iBAAO,IAAI4/B,KAC7BoG,EAAgBhmC,iBAAO,IAAI+gC,IAAgB,IAEjDpxC,qBAAU,KACN,IAAK84B,EAAU,OAEf,MAAMwd,EACFnJ,EAAsBrU,GAAUS,WAAW3wB,IACvCytC,EAAc7kC,QAAQ4+B,KAAKxnC,EAA3B,IAGF2tC,EACFvJ,EAAgBlU,GAAUS,WAAWid,IACjCL,EAAe3kC,QAAQ4+B,KAAKoG,EAA5B,IAGFC,EACFvJ,EAAiBpU,GAAUS,WAAWid,IAClCJ,EAAgB5kC,QAAQ4+B,KAAKoG,EAA7B,IAGR,MAAO,KACHD,EAA+B9c,cAC/B6c,EAA8B7c,cAC9Bgd,EAAyBhd,aAAzB,CAHJ,GAMD,CAACX,IAiBJ,OAfe4W,mBAAQ,KACZ,CACHzW,YAAaod,EAAc7kC,QAAQ0+B,eACnCN,aAAcuG,EAAe3kC,QAAQ0+B,eACrCL,cAAeuG,EAAgB5kC,QAAQ0+B,eACvCwG,cAAe,IACJL,EAAc7kC,QAAQmlC,WAEjCC,eAAgB,IACLT,EAAe3kC,QAAQmlC,cAGvC,CAAC7d,GAGJ,C,gfCnDJ,oBAMejnB,IAFK,IAA4BwzB,qBAAWX,I","file":"static/js/main.d55c6bba.chunk.js","sourcesContent":["import AxiosMockAdapter from 'axios-mock-adapter';\nimport axios from './axios';\n\nconst axiosMockAdapter = new AxiosMockAdapter(axios, { delayResponse: 0 });\n\nexport default axiosMockAdapter;\n","const wait = (time: number): Promise => {\n return new Promise((res) => setTimeout(res, time));\n};\n\nexport default wait;\n","import jwt from 'jsonwebtoken';\nimport { v4 as uuidv4 } from 'uuid';\nimport mock from 'src/utils/mock';\nimport wait from 'src/utils/wait';\n\nconst JWT_SECRET = 'devias-top-secret-key';\nconst JWT_EXPIRES_IN = '2 days';\n\nconst users = [\n {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n canHire: false,\n country: 'USA',\n email: 'demo@devias.io',\n isPublic: true,\n name: 'Katarina Smith',\n password: 'Password123',\n phone: '+40 777666555',\n role: 'admin',\n state: 'New York',\n tier: 'Premium'\n }\n];\n\nmock.onPost('/api/account/login').reply(async (config) => {\n try {\n await wait(1000);\n\n const { email, password } = JSON.parse(config.data);\n const user = users.find((_user) => _user.email === email);\n\n if (!user) {\n return [400, { message: 'Please check your email and password' }];\n }\n\n if (user.password !== password) {\n return [400, { message: 'Invalid password' }];\n }\n\n const accessToken = jwt.sign(\n { userId: user.id },\n JWT_SECRET,\n { expiresIn: JWT_EXPIRES_IN }\n );\n\n return [200, {\n accessToken,\n user: {\n id: user.id,\n avatar: user.avatar,\n email: user.email,\n name: user.name,\n tier: user.tier\n }\n }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/account/register').reply(async (config) => {\n try {\n await wait(1000);\n\n const { email, name, password } = JSON.parse(config.data);\n let user = users.find((_user) => _user.email === email);\n\n if (user) {\n return [400, { message: 'User already exists' }];\n }\n\n user = {\n id: uuidv4(),\n avatar: null,\n canHire: false,\n country: null,\n email,\n isPublic: true,\n name,\n password,\n phone: null,\n role: 'admin',\n state: null,\n tier: 'Standard'\n };\n\n const accessToken = jwt.sign(\n { userId: user.id },\n JWT_SECRET,\n { expiresIn: JWT_EXPIRES_IN }\n );\n\n return [200, {\n accessToken,\n user: {\n id: user.id,\n avatar: user.avatar,\n email: user.email,\n name: user.name,\n tier: user.tier\n }\n }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/account/me').reply((config) => {\n try {\n const { Authorization } = config.headers;\n\n if (!Authorization) {\n return [401, { message: 'Authorization token missing' }];\n }\n\n const accessToken = Authorization.split(' ')[1];\n const { userId } = jwt.verify(accessToken, JWT_SECRET) as any;\n const user = users.find((_user) => _user.id === userId);\n\n if (!user) {\n return [401, { message: 'Invalid authorization token' }];\n }\n\n return [200, {\n user: {\n id: user.id,\n avatar: user.avatar,\n email: user.email,\n name: user.name,\n tier: user.tier\n }\n }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/account/settings').reply(200, {\n settings: {}\n});\n\nmock.onGet('/api/account/subscription').reply(200, {\n subscription: {\n name: 'Premium',\n price: 29,\n currency: '$',\n proposalsLeft: 12,\n templatesLeft: 5,\n invitesLeft: 24,\n adsLeft: 10,\n hasAnalytics: true,\n hasEmailAlerts: true\n }\n});\n","import moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport { colors } from '@mui/material';\nimport mock from 'src/utils/mock';\nimport type { Event } from 'src/types/calendar';\n\nlet events: Event[] = [\n {\n id: '5e8882e440f6322fa399eeb8',\n allDay: false,\n color: colors.green['700'],\n description: 'Inform about new contract',\n end: moment()\n .subtract(6, 'days')\n .hours(19)\n .minutes(0)\n .toDate(),\n start: moment()\n .subtract(6, 'days')\n .hours(17)\n .minutes(30)\n .toDate(),\n title: 'Call Samantha'\n },\n {\n id: '5e8882eb5f8ec686220ff131',\n allDay: false,\n color: null,\n description: 'Discuss about new partnership',\n end: moment()\n .add(2, 'days')\n .hours(15)\n .minutes(30)\n .toDate(),\n start: moment()\n .add(2, 'days')\n .hours(12)\n .minutes(0)\n .toDate(),\n title: 'Meet with IBM'\n },\n {\n id: '5e8882f1f0c9216396e05a9b',\n allDay: false,\n color: null,\n description: 'Prepare docs',\n end: moment()\n .add(5, 'days')\n .hours(12)\n .minutes(0)\n .toDate(),\n start: moment()\n .add(5, 'days')\n .hours(8)\n .minutes(0)\n .toDate(),\n title: 'SCRUM Planning'\n },\n {\n id: '5e8882f6daf81eccfa40dee2',\n allDay: true,\n color: null,\n description: 'Meet with team to discuss',\n end: moment()\n .subtract(11, 'days')\n .startOf('day')\n .toDate(),\n start: moment()\n .subtract(12, 'days')\n .endOf('day')\n .toDate(),\n title: 'Begin SEM'\n },\n {\n id: '5e8882fcd525e076b3c1542c',\n allDay: false,\n color: colors.green['700'],\n description: 'Sorry, John!',\n end: moment()\n .add(3, 'days')\n .hours(7)\n .minutes(31)\n .toDate(),\n start: moment()\n .add(3, 'days')\n .hours(7)\n .minutes(30)\n .toDate(),\n title: 'Fire John'\n },\n {\n id: '5e888302e62149e4b49aa609',\n allDay: false,\n color: null,\n description: 'Discuss about the new project',\n end: moment()\n .subtract(6, 'days')\n .hours(9)\n .minutes(30)\n .toDate(),\n start: moment()\n .subtract(6, 'days')\n .hours(9)\n .minutes(0)\n .toDate(),\n title: 'Call Alex'\n },\n {\n id: '5e88830672d089c53c46ece3',\n allDay: false,\n color: colors.green['700'],\n description: 'Get a new quote for the payment processor',\n end: moment()\n .hours(17)\n .minutes(30)\n .toDate(),\n start: moment()\n .hours(15)\n .minutes(30)\n .toDate(),\n title: 'Visit Samantha'\n }\n];\n\nmock.onGet('/api/calendar/events').reply(200, { events });\n\nmock.onPost('/api/calendar/events/new').reply((request) => {\n try {\n const { allDay, description, end, start, title } = JSON.parse(request.data);\n const event = {\n id: uuidv4(),\n allDay,\n description,\n end,\n start,\n title\n };\n\n events = [...events, event];\n\n return [200, { event }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/calendar/events/update').reply((request) => {\n try {\n const { eventId, update } = JSON.parse(request.data);\n let event = null;\n\n events = _.map(events, (_event) => {\n if (_event.id === eventId) {\n _.assign(_event, { ...update });\n event = _event;\n }\n\n return _event;\n });\n\n return [200, { event }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/calendar/events/remove').reply((request) => {\n try {\n const { eventId } = JSON.parse(request.data);\n\n events = _.reject(events, { id: eventId });\n\n return [200, { eventId }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n","import { v4 as uuidv4 } from 'uuid';\nimport moment from 'moment';\nimport _ from 'lodash';\nimport mock from 'src/utils/mock';\nimport type {\n Contact,\n Thread,\n ThreadMessage\n} from 'src/types/chat';\n\nlet contacts: Contact[] = [\n {\n id: '5e8891ab188cd2855e6029b7',\n avatar: '/static/images/avatars/avatar_1.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Cooper Murray',\n username: 'cooper.murray'\n },\n {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n isActive: false,\n lastActivity: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n name: 'Ekaterina Tankova',\n username: 'ekaterina.tankova'\n },\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n isActive: false,\n lastActivity: moment()\n .subtract(15, 'minutes')\n .toDate()\n .getTime(),\n name: 'Cao Yu',\n username: 'cao.yu'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n avatar: '/static/images/avatars/avatar_4.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Alex Richardson',\n username: 'alex.richardson'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Anje Keizer',\n username: 'anje.keizer'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n avatar: '/static/images/avatars/avatar_7.png',\n isActive: false,\n lastActivity: moment()\n .subtract(2, 'days')\n .toDate()\n .getTime(),\n name: 'Adam Denisov',\n username: 'adam.denisov'\n },\n {\n id: '5e887a1fbefd7938eea9c981',\n avatar: '/static/images/avatars/avatar_8.png',\n isActive: false,\n lastActivity: moment()\n .subtract(6, 'hours')\n .toDate()\n .getTime(),\n name: 'Miller Edwards',\n username: 'miller.edwards'\n },\n {\n id: '5e887d0b3d090c1b8f162003',\n avatar: '/static/images/avatars/avatar_9.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Emilee Simchenko',\n username: 'emilee.simchenko',\n },\n {\n id: '5e88792be2d4cfb4bf0971d9',\n avatar: '/static/images/avatars/avatar_10.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Elliott Stone',\n username: 'elliott.stone'\n },\n {\n id: '5e8877da9a65442b11551975',\n avatar: '/static/images/avatars/avatar_11.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Shen Zhi',\n username: 'shen.zhi'\n },\n {\n id: '5e8680e60cba5019c5ca6fda',\n avatar: '/static/images/avatars/avatar_12.png',\n isActive: true,\n lastActivity: moment()\n .toDate()\n .getTime(),\n name: 'Merrile Burgett',\n username: 'merrile.burgett'\n }\n];\n\nlet threads: Thread[] = [\n {\n id: '5e867eb9de721aecaccf4f7b',\n messages: [\n {\n id: '5e867f0a5bc0ff2bfa07bfa6',\n attachments: [],\n body: 'Hey, nice projects! I really liked the one in react. What\\'s your quote on kinda similar project?',\n contentType: 'text',\n createdAt: moment()\n .subtract(10, 'hours')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f167d5f78109ae9f2a4',\n attachments: [],\n body: 'I would need to know more details, but my hourly rate stats at $35/hour. Thanks!',\n contentType: 'text',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n },\n {\n id: '5e867f1c9ca72084693528f4',\n attachments: [],\n body: 'Well it\\'s a really easy one, I\\'m sure we can make it half of the price.',\n contentType: 'text',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f22fd2e27a09849b4db',\n attachments: [],\n body: 'Then why don\\'t you make it if it\\'s that easy? Sorry I\\'m not interetes, have fantastic day Adam!',\n contentType: 'text',\n createdAt: moment()\n .subtract(3, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n },\n {\n id: '5e867f28a34d45ac6eb5c41f',\n attachments: [],\n body: 'Last offer, $25 per hour',\n contentType: 'text',\n createdAt: moment()\n .subtract(1, 'minute')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n },\n {\n id: '5e867f2dba984a3f78b33526',\n attachments: [],\n body: '/static/images/projects/project_4.png',\n contentType: 'image',\n createdAt: moment()\n .subtract(1, 'minute')\n .toDate()\n .getTime(),\n senderId: '5e86805e2bafd54f66cc95c3'\n }\n ],\n participants: [\n {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith',\n username: 'katarina.smith'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n avatar: '/static/images/avatars/avatar_7.png',\n name: 'Adam Denisov',\n username: 'adam.denisov'\n }\n ],\n type: 'ONE_TO_ONE',\n unreadCount: 2\n },\n {\n id: '5e867fa7082c3c5921403a26',\n messages: [\n {\n id: '5e867fc180837d901bd9bca1',\n attachments: [],\n body: 'Hey, would you like to collaborate?',\n contentType: 'text',\n createdAt: moment()\n .subtract(6, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e8680e60cba5019c5ca6fda'\n },\n {\n id: '5e8d6fb695df7971237fc173',\n attachments: [],\n body: 'Hi, Merrile!',\n contentType: 'text',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e86809283e28b96d2d38537'\n },\n {\n id: '58825a290eb4d4271a54f188',\n attachments: [],\n body: 'Hello everyone 😀',\n contentType: 'text',\n createdAt: moment()\n .subtract(2, 'minutes')\n .toDate()\n .getTime(),\n senderId: '5e8891ab188cd2855e6029b7'\n }\n ],\n participants: [\n {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith',\n username: 'katarina.smith'\n },\n {\n id: '5e8680e60cba5019c5ca6fda',\n avatar: '/static/images/avatars/avatar_12.png',\n name: 'Merrile Burgett',\n username: 'merrile.burgett'\n },\n {\n id: '5e8891ab188cd2855e6029b7',\n avatar: '/static/images/avatars/avatar_1.png',\n name: 'Cooper Murray',\n username: 'cooper.murray'\n }\n ],\n type: 'GROUP',\n unreadCount: 0\n }\n];\n\nconst findContactByUsername = (username: string): Contact | null => {\n const contact = contacts.find((_contact) => _contact.username === username);\n\n return contact || null;\n};\n\nconst findThreadById = (threadId: string): Thread | null => {\n const thread = threads.find((_threadId) => _threadId.id === threadId);\n\n return thread || null;\n};\n\n// This means that we are looking for ONE_TO_ONE thread\nconst findThreadByOtherParticipantId = (participantId: string): Thread | null => {\n const thread = threads.find((_thread) => {\n if (_thread.type !== 'ONE_TO_ONE') {\n return false;\n }\n\n const participant = _thread.participants.find((_participant) => _participant.id === participantId);\n\n return !!participant;\n });\n\n return thread || null;\n};\n\nconst findThreadByParticipantIds = (participantIds: string[]): Thread | null => {\n const thread = threads.find((_thread) => {\n if (_thread.participants.length < participantIds.length) {\n return false;\n }\n\n let _participantIds = [];\n\n _thread.participants.forEach((_participant) => {\n _participantIds.push(_participant.id);\n });\n\n return _.isEmpty(_.xor(participantIds, _participantIds));\n });\n\n return thread || null;\n};\n\nmock.onGet('/api/chat/contacts').reply(200, { contacts });\n\nmock.onGet('/api/chat/search').reply((config) => {\n try {\n const { query } = config.params;\n const cleanQuery = query.toLowerCase().trim();\n const results = [];\n\n contacts.forEach((contact) => {\n if (!query) {\n return results.push(contact);\n }\n\n if (contact.name.toLowerCase().includes(cleanQuery)) {\n return results.push(contact);\n }\n });\n\n return [200, { results }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/chat/participants').reply((config) => {\n try {\n const { threadKey } = config.params;\n const participants = [];\n\n // Thread key might be an ID if thread type is GROUP\n // otherwise it represents an username\n const thread = findThreadById(threadKey);\n\n if (thread) {\n participants.push(...thread.participants);\n } else {\n const contact = findContactByUsername(threadKey);\n\n if (contact) {\n participants.push({\n id: contact.id,\n avatar: contact.avatar,\n name: contact.name,\n username: contact.username\n });\n }\n }\n\n return [200, { participants }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/chat/threads').reply(200, { threads });\n\nmock.onGet('/api/chat/thread').reply((config) => {\n try {\n const { threadKey } = config.params;\n\n // Thread key might be an ID if thread type is GROUP\n // otherwise it represents an username\n const thread = findThreadById(threadKey);\n\n if (thread) {\n return [200, { thread }];\n } else {\n // At this point, thread key should represent an existing contact\n // If no contact found, the user is trying a shady route\n // If contact exists, user might want to start a new conversation\n const contact = findContactByUsername(threadKey);\n\n if (!contact) {\n return [404, { message: 'Unable to find the contact' }];\n }\n\n // This could return a null if no thread found\n const thread = findThreadByOtherParticipantId(contact.id);\n\n return [200, { thread }];\n }\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/chat/thread/mark-as-seen').reply((config) => {\n try {\n const { threadId } = config.params;\n const thread = threads.find((_thread) => _thread.id === threadId);\n\n if (thread) {\n thread.unreadCount = 0;\n }\n\n return [200, true];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\n// Adding a new message to a thread can by done in 3 ways\n// 1) By specifying a thread id, this means that the thread already exists\n// 2) By specifying the other user id (if ONE_TO_ONE thread), thread might exist\n// 3) By specifying a list of receipients, thread might exist\nmock.onPost('/api/chat/messages/new').reply((request) => {\n try {\n const { threadId, recipientIds, body } = JSON.parse(request.data);\n\n // On server get current user from request\n const user = {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith',\n username: 'katarina.smith'\n };\n\n let thread = null;\n\n if (threadId) {\n thread = findThreadById(threadId);\n\n if (!thread) {\n return [400, { message: 'Invalid thread id' }];\n }\n }\n\n if (recipientIds) {\n const participantIds = [...recipientIds, user.id];\n\n thread = findThreadByParticipantIds(participantIds);\n }\n\n const message: ThreadMessage = {\n id: uuidv4(),\n attachments: [],\n body,\n contentType: 'text',\n createdAt: moment()\n .toDate()\n .getTime(),\n senderId: user.id\n };\n\n if (thread) {\n thread.messages = [...thread.messages, message];\n } else {\n const participants = [user];\n\n recipientIds.forEach((recipientId) => {\n const contact = contacts.find((_contact) => _contact.id === recipientId);\n\n if (!contact) {\n throw new Error('Contact not found');\n }\n\n participants.push({\n id: contact.id,\n avatar: contact.avatar,\n name: contact.name,\n username: contact.username\n });\n });\n\n thread = {\n id: uuidv4(),\n messages: [message],\n participants,\n type: participants.length === 2 ? 'ONE_TO_ONE' : 'GROUP',\n unreadCount: 0\n };\n }\n\n const responseData = {\n threadId: thread.id,\n message\n };\n\n return [200, responseData];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type {\n Customer,\n CustomerEmail,\n Invoice,\n CustomerLog\n} from 'src/types/customer';\n\nmock.onGet('/api/customers').reply(() => {\n const customers: Customer[] = [\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n email: 'cao.yu@devias.io',\n name: 'Cao Yu',\n }\n\n ];\n\n return [200, { customers }];\n});\n\nmock.onGet('/api/customers/1').reply(() => {\n const customer: Customer = {\n id: '5e86805e2bafd54f66cc95c3',\n city: 'San Diego',\n email: 'adam.denisov@devias.io',\n name: 'Adam Denisov',\n };\n\n return [200, { customer }];\n});\n\nmock.onGet('/api/customers/1/emails').reply(() => {\n const emails: CustomerEmail[] = [\n {\n id: '5ece2ce3613486d95ffaea58',\n createdAt: moment()\n .subtract(3, 'days')\n .subtract(5, 'hours')\n .subtract(34, 'minutes')\n .toDate()\n .getTime(),\n description: 'Order confirmation'\n },\n {\n id: '5ece2ce8cebf7ad1d100c0cd',\n createdAt: moment()\n .subtract(4, 'days')\n .subtract(11, 'hours')\n .subtract(49, 'minutes')\n .toDate()\n .getTime(),\n description: 'Order confirmation'\n }\n ];\n\n return [200, { emails }];\n});\n\nmock.onGet('/api/customers/1/invoices').reply(() => {\n const invoices: Invoice[] = [\n {\n id: '5ece2cef3e562cbd61996259',\n currency: '$',\n description: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n issueDate: moment()\n .toDate()\n .getTime(),\n paymentMethod: 'Credit Card',\n status: 'paid',\n value: 5.25\n },\n {\n id: '5ece2cf461b9484866f2968c',\n currency: '$',\n description: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n issueDate: moment()\n .toDate()\n .getTime(),\n paymentMethod: 'Credit Card',\n status: 'paid',\n value: 5.25\n }\n ];\n\n return [200, { invoices }];\n});\n\nmock.onGet('/api/customers/1/logs').reply(() => {\n const logs: CustomerLog[] = [\n {\n id: '5ece2cfeb6e2ac847bba11ce',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(2, 'minutes')\n .subtract(56, 'seconds')\n .toDate()\n .getTime(),\n description: 'Purchase',\n ip: '84.234.243.42',\n method: 'POST',\n route: '/api/purchase',\n status: 200\n },\n {\n id: '5ece2d02510484b2952e1e05',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(2, 'minutes')\n .subtract(56, 'seconds')\n .toDate()\n .getTime(),\n description: 'Purchase',\n ip: '84.234.243.42',\n method: 'POST',\n route: '/api/purchase',\n status: 522\n },\n {\n id: '5ece2d08e2748e4e9788901a',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(8, 'minutes')\n .subtract(23, 'seconds')\n .toDate()\n .getTime(),\n description: 'Cart remove',\n ip: '84.234.243.42',\n method: 'DELETE',\n route: '/api/products/d65654e/remove',\n status: 200\n },\n {\n id: '5ece2d0c47214e342c2d7f28',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(20, 'minutes')\n .subtract(54, 'seconds')\n .toDate()\n .getTime(),\n description: 'Cart add',\n ip: '84.234.243.42',\n method: 'GET',\n route: '/api/products/d65654e/add',\n status: 200\n },\n {\n id: '5ece2d11e4060a97b2b57623',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(34, 'minutes')\n .subtract(16, 'seconds')\n .toDate()\n .getTime(),\n description: 'Cart add',\n ip: '84.234.243.42',\n method: 'GET',\n route: '/api/products/c85727f/add',\n status: 200\n },\n {\n id: '5ece2d16cf6d53d8e33656af',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(54, 'minutes')\n .subtract(30, 'seconds')\n .toDate()\n .getTime(),\n description: 'View product',\n ip: '84.234.243.42',\n method: 'GET',\n route: '/api/products/c85727f',\n status: 200\n },\n {\n id: '5ece2d1b2ec5071be9286a96',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(56, 'minutes')\n .subtract(40, 'seconds')\n .toDate()\n .getTime(),\n description: 'Get products',\n ip: '84.234.243.42',\n method: 'GET',\n route: '/api/products',\n status: 200\n },\n {\n id: '5ece2d22e68d5498917e47bc',\n createdAt: moment()\n .subtract(2, 'days')\n .subtract(57, 'minutes')\n .subtract(5, 'seconds')\n .toDate()\n .getTime(),\n description: 'Login',\n ip: '84.234.243.42',\n method: 'POST',\n route: '/api/login',\n status: 200\n }\n ];\n\n return [200, { logs }];\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type { Invoice } from 'src/types/invoice';\n\nmock.onGet('/api/invoices').reply(() => {\n const invoices: Invoice[] = [\n {\n id: '5ecb868d0f437390ef3ac62c',\n currency: '$',\n customer: {\n email: 'contact@anahenisky.io',\n name: 'Ana Henisky'\n },\n issueDate: moment()\n .subtract(1, 'hours')\n .toDate()\n .getTime(),\n status: 'paid',\n totalAmount: 55.50\n },\n {\n id: '5ecb868ada8deedee0638502',\n currency: '$',\n customer: {\n email: 'sales@matt-jason.com',\n name: 'Matt Jason'\n },\n issueDate: moment()\n .subtract(2, 'days')\n .subtract(5, 'hours')\n .toDate()\n .getTime(),\n status: 'pending',\n totalAmount: 253.76\n },\n {\n id: '5ecb868700aba84d0f1c0e48',\n currency: '$',\n customer: {\n email: 'support@terrythomas.io',\n name: 'Terry Thomas'\n },\n issueDate: moment()\n .subtract(6, 'days')\n .subtract(4, 'hours')\n .toDate()\n .getTime(),\n status: 'canceled',\n totalAmount: 781.50\n },\n {\n id: '5ecb8682038e1ddf4e868764',\n currency: '$',\n customer: {\n email: 'contact@triv-shopper.co.uk',\n name: 'Triv Shopper'\n },\n issueDate: moment()\n .subtract(15, 'days')\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n status: 'paid',\n totalAmount: 96.64\n }\n ];\n\n return [200, { invoices }];\n});\n\nmock.onGet('/api/invoices/1').reply(() => {\n const invoice: Invoice = {\n id: '5ecb86785312dcc69b5799ad',\n currency: '$',\n customer: {\n address: '271 Richmond Rd, Grey Lynn, Auckland 1022, New Zealand',\n company: 'Countdown Grey Lynn',\n email: 'contact@anahenisky.io',\n name: 'Ana Henisky',\n taxId: '6934656584231'\n },\n dueDate: moment()\n .toDate()\n .getTime(),\n issueDate: moment()\n .subtract(1, 'hours')\n .toDate()\n .getTime(),\n items: [\n {\n id: '5ecb8694db1760a701dfbf74',\n currency: '$',\n description: 'Freelancer Subscription (12/05/2019 - 11/06/2019)',\n unitAmount: 55.50\n }\n ],\n number: 'DEV-9483',\n status: 'paid',\n subtotalAmount: 50.00,\n taxAmount: 5.50,\n totalAmount: 55.50\n }\n\n return [200, { invoice }];\n});\n","import moment from 'moment';\nimport { v4 as uuidv4 } from 'uuid';\nimport _ from 'lodash';\nimport mock from 'src/utils/mock';\nimport type {\n Board,\n Checklist,\n Card,\n List\n} from 'src/types/kanban';\n\nconst board: Board = {\n lists: [\n {\n id: '5e849c39325dc5ef58e5a5db',\n name: 'Incoming',\n cardIds: [\n '5e849c8708bd72683b454747',\n '5e849c90fabe1f1f4b3557f6',\n '5e849c977ef6265938bfd90b',\n '5e849c9e34ee93bc7255c599'\n ]\n },\n {\n id: '5e849c2b38d238c33e516755',\n name: 'In progress',\n cardIds: [\n '5e849ca7d063dc3830d4b49c',\n '5e849cb5d0c6e8894451fdfa'\n ]\n }\n ],\n cards: [\n {\n id: '5e849c8708bd72683b454747',\n attachments: [],\n checklists: [\n {\n id: '5e84a8175c48d3f5b1d01972',\n name: 'Update home page',\n checkItems: [\n {\n id: '5e85af37da584c5e4bd8a06c',\n name: 'An item',\n state: 'complete'\n }\n ]\n }\n ],\n comments: [\n {\n id: '15e849c5a35d4dff4f88ebff6',\n cardId: '5e849c8708bd72683b454747',\n createdAt: moment()\n .subtract(5, 'days')\n .toDate()\n .getTime(),\n memberId: '5e887ac47eed253091be10cb',\n message: 'This is a comment'\n }\n ],\n cover: '/static/images/projects/project_3.png',\n description: 'Duis condimentum lacus finibus felis pellentesque, ac auctor nibh fermentum. Duis sed dui ante. Phasellus id eros tincidunt, dictum lorem vitae, pellentesque sem. Aenean eu enim sit amet mauris rhoncus mollis. Sed enim turpis, porta a felis et, luctus faucibus nisi. Phasellus et metus fermentum, ultrices arcu aliquam, facilisis justo. Cras nunc nunc, elementum sed euismod ut, maximus eget nibh. Phasellus condimentum lorem neque. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce sagittis pharetra eleifend. Suspendisse potenti.',\n due: moment()\n .add(7, 'days')\n .toDate()\n .getTime(),\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e86809283e28b96d2d38537'],\n name: 'Call with sales of HubSpot'\n },\n {\n id: '5e849c90fabe1f1f4b3557f6',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We are looking for vue experience and of course node js strong knowledge',\n due: moment()\n .add(6, 'days')\n .toDate()\n .getTime(),\n isSubscribed: true,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e887b209c28ac3dd97f6db5', '5e887a62195cc5aef7e8ca5d'],\n name: 'Interview for the Asis. Sales Manager'\n },\n {\n id: '5e849c977ef6265938bfd90b',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We nede to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: [],\n name: 'Change the height of the top bar because it looks too chunky',\n },\n {\n id: '5e849c9e34ee93bc7255c599',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We nede to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: false,\n listId: '5e849c39325dc5ef58e5a5db',\n memberIds: ['5e887ac47eed253091be10cb', '5e86809283e28b96d2d38537'],\n name: 'Integrate Stripe API'\n },\n {\n id: '5e849ca7d063dc3830d4b49c',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We need to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: true,\n listId: '5e849c2b38d238c33e516755',\n memberIds: ['5e887a62195cc5aef7e8ca5d'],\n name: 'Update the customer API for payments'\n },\n {\n id: '5e849cb5d0c6e8894451fdfa',\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: 'We need to make it aggresive with pricing because it’s in their interest to acquire us',\n due: null,\n isSubscribed: true,\n listId: '5e849c2b38d238c33e516755',\n memberIds: [],\n name: 'Redesign the landing page'\n }\n ],\n members: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova',\n },\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n name: 'Cao Yu'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n avatar: '/static/images/avatars/avatar_4.png',\n name: 'Alex Richardson'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n }\n ]\n};\n\nmock.onGet('/api/kanban/board').reply(200, { board });\n\nmock.onPost('/api/kanban/lists/new').reply((request) => {\n try {\n const { name } = JSON.parse(request.data);\n const list: List = {\n id: uuidv4(),\n name,\n cardIds: []\n };\n\n _.assign(board, {\n lists: [...board.lists, list]\n });\n\n return [200, { list }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/list/update').reply((request) => {\n try {\n const { listId, update } = JSON.parse(request.data);\n const list = board.lists.find((_list) => _list.id === listId);\n\n _.assign(list, update);\n\n return [200, { list }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/lists/clear').reply((request) => {\n try {\n const { listId } = JSON.parse(request.data);\n\n _.assign(board, {\n lists: _.map(board.lists, (list) => {\n if (list.id === listId) {\n _.assign(list, {\n cardIds: []\n });\n }\n\n return list;\n }),\n cards: board.cards.filter((card) => card.listId !== listId)\n });\n\n return [200, { listId }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/lists/remove').reply((request) => {\n try {\n const { listId } = JSON.parse(request.data);\n\n _.assign(board, {\n lists: _.reject(board.lists, { id: listId }),\n cards: board.cards.filter((card) => card.listId !== listId)\n });\n\n return [200, { listId }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/cards/new').reply((request) => {\n try {\n const { listId, name } = JSON.parse(request.data);\n const card: Card = {\n id: uuidv4(),\n attachments: [],\n checklists: [],\n comments: [],\n cover: null,\n description: null,\n due: null,\n isSubscribed: false,\n listId,\n memberIds: [],\n name\n };\n\n _.assign(board, {\n cards: [...board.cards, card],\n lists: _.map(board.lists, (list) => {\n if (list.id === listId) {\n _.assign(list, {\n cardIds: [...list.cardIds, card.id]\n });\n }\n\n return list;\n })\n });\n\n return [200, { card }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/cards/update').reply((request) => {\n try {\n const { cardId, update } = JSON.parse(request.data);\n const card = board.cards.find((_card) => _card.id === cardId);\n\n _.assign(card, update);\n\n return [200, { card }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/cards/move').reply((request) => {\n try {\n const { cardId, position, listId } = JSON.parse(request.data);\n const card = board.cards.find((_card) => _card.id === cardId);\n\n if (!card) {\n return [400, 'Card not found'];\n }\n\n const sourceList = board.lists.find((list) => list.id === card.listId);\n\n if (!sourceList) {\n return [500, 'List not found']\n }\n\n _.pull(sourceList.cardIds, cardId);\n\n if (listId) {\n const destinationList = board.lists.find((list) => list.id === card.listId);\n\n if (!destinationList) {\n return [500, 'List not found']\n }\n\n sourceList.cardIds.splice(position, 0, card.id);\n card.listId = destinationList.id;\n } else {\n sourceList.cardIds.splice(position, 0, card.id);\n }\n\n return [200, true];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/cards/remove').reply((request) => {\n try {\n const { cardId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.reject(board.cards, { id: cardId }),\n lists: _.map(board.lists, (list) => {\n _.assign(list, {\n cardIds: list.cardIds.filter((_cardId) => _cardId !== cardId)\n });\n\n return list;\n })\n });\n\n return [200, { cardId }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/comments/new').reply((request) => {\n try {\n const { cardId, message } = JSON.parse(request.data);\n const comment = {\n id: uuidv4(),\n cardId,\n createdAt: moment()\n .toDate()\n .getTime(),\n memberId: '5e86809283e28b96d2d38537', // On server get current user from request\n message\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n comments: [...card.comments, comment]\n });\n }\n\n return card;\n })\n });\n\n return [200, { comment }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checklists/new').reply((request) => {\n try {\n const { cardId, name } = JSON.parse(request.data);\n const checklist: Checklist = {\n id: uuidv4(),\n name,\n checkItems: []\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: [...card.checklists, checklist]\n });\n }\n\n return card;\n })\n });\n\n return [200, { checklist }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checklists/update').reply((request) => {\n try {\n const { cardId, checklistId, update } = JSON.parse(request.data);\n let checklist = null;\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.map(card.checklists, (_checklist) => {\n if (_checklist.id === checklistId) {\n _.assign(_checklist, { ...update });\n checklist = _checklist;\n }\n\n return _checklist;\n });\n }\n\n return card;\n })\n });\n\n return [200, { checklist }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checklists/remove').reply((request) => {\n try {\n const { cardId, checklistId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.reject(card.checklists, { id: checklistId }),\n });\n }\n\n return card;\n })\n });\n\n return [200, true];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checkitems/new').reply((request) => {\n try {\n const { cardId, checklistId, name } = JSON.parse(request.data);\n const checkItem = {\n id: uuidv4(),\n checklistId,\n name,\n state: 'incomplete'\n };\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.each(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: [...checklist.checkItems, checkItem]\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, { checkItem }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checkitems/update').reply((request) => {\n try {\n const {\n cardId,\n checklistId,\n checkItemId,\n update\n } = JSON.parse(request.data);\n let checkItem = null;\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.map(checklist.checkItems, (_checkItem) => {\n if (_checkItem.id === checkItemId) {\n _.assign(_checkItem, { ...update });\n checkItem = _checkItem;\n }\n\n return _checkItem;\n })\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, { checkItem }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onPost('/api/kanban/checkitems/remove').reply((request) => {\n try {\n const { cardId, checklistId, checkItemId } = JSON.parse(request.data);\n\n _.assign(board, {\n cards: _.map(board.cards, (card) => {\n if (card.id === cardId) {\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.reject(checklist.checkItems, { id: checkItemId })\n });\n }\n\n return checklist;\n })\n });\n }\n\n return card;\n })\n });\n\n return [200, true];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n","import moment from 'moment';\nimport { colors } from '@mui/material';\nimport mock from 'src/utils/mock';\nimport type { Mail, Label } from 'src/types/mail';\n\nconst labels: Label[] = [\n {\n id: 'all',\n type: 'system_label',\n name: 'All Mail'\n },\n {\n id: 'inbox',\n type: 'system_label',\n name: 'Inbox',\n unreadCount: 1,\n totalCount: 0\n },\n {\n id: 'sent',\n type: 'system_label',\n name: 'Sent',\n unreadCount: 0,\n totalCount: 0\n },\n {\n id: 'drafts',\n type: 'system_label',\n name: 'Drafts',\n unreadCount: 0,\n totalCount: 0\n },\n {\n id: 'trash',\n type: 'system_label',\n name: 'Trash',\n unreadCount: 0,\n totalCount: 1\n },\n {\n id: 'spam',\n type: 'system_label',\n name: 'Spam',\n unreadCount: 1,\n totalCount: 1\n },\n {\n id: 'important',\n type: 'system_label',\n name: 'Important',\n unreadCount: 0,\n totalCount: 1\n },\n {\n id: 'starred',\n type: 'system_label',\n name: 'Starred',\n unreadCount: 1,\n totalCount: 1\n },\n {\n id: '5e892628d4bc60b4514d5d36',\n type: 'custom_label',\n name: 'Work',\n unreadCount: 1,\n totalCount: 1,\n color: colors.green[600]\n },\n {\n id: '5e8926820cf9ec6c834114ec',\n type: 'custom_label',\n name: 'Business',\n unreadCount: 0,\n totalCount: 2,\n color: colors.blue[600]\n },\n {\n id: '5e892696db60f561c43c6f81',\n type: 'custom_label',\n name: 'Personal',\n unreadCount: 0,\n totalCount: 1,\n color: colors.orange[600]\n }\n];\n\nconst mails: Mail[] = [\n {\n id: '5e86bcc3e1b53b6365d71638',\n folder: 'Business',\n isImportant: true,\n isStarred: false,\n isUnread: true,\n labelIds: ['5e8926820cf9ec6c834114ec', '5e892696db60f561c43c6f81'],\n subject: 'Website redesign. Interested in collaboration',\n message: `\nHi Matt, I saw your work on instagram and would be interested in getting a quote for Logo and slider\n\nInteger velit massa, pharetra sed lacus eu, pulvinar faucibus ex. Ut pretium ex id turpis elementum, aliquam accumsan enim sollicitudin. Sed nec consectetur lorem, ac ullamcorper augue. Suspendisse tempus ligula suscipit finibus vehicula. Morbi viverra finibus lectus, egestas dictum mi mollis nec. Proin eget vehicula eros, sit amet molestie ipsum. Morbi feugiat, elit non placerat fringilla, leo risus tristique felis, sollicitudin tristique nibh arcu nec arcu. Maecenas vel turpis nibh. Etiam in lectus quis felis facilisis dictum. Morbi id vehicula lectus, vel imperdiet dolor. Phasellus consequat tempor tellus, quis placerat quam posuere eget. Mauris blandit, nisl eu sollicitudin tincidunt, tellus diam accumsan arcu, vel pharetra lectus est nec nisi. In sem dolor, mollis sed risus eu, mattis dictum lectus. Suspendisse urna est, finibus et urna non, tincidunt placerat eros.\n\nDonec viverra ipsum id auctor rutrum. Morbi consequat a nunc non interdum. Nulla accumsan eget felis a dictum. Cras rhoncus tortor eget velit fringilla suscipit. Donec quis arcu eu nibh aliquet auctor eget fringilla felis. Sed commodo efficitur massa. Proin maximus elit in suscipit laoreet. Integer pretium arcu ac mauris ullamcorper auctor. Vivamus tincidunt lacus eget purus feugiat tincidunt. Etiam feugiat gravida ullamcorper. Pellentesque cursus vehicula lectus et consectetur. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam ligula risus, congue eu pellentesque id, volutpat aliquam arcu. Donec efficitur ipsum id neque rhoncus viverra. Vestibulum hendrerit et eros eu bibendum.\n\n\nKind regards,\n\nEkaterina Tankova\n `,\n from: {\n name: 'Ekaterina Tankova',\n email: 'ekaterina.tankova@devias.io',\n avatar: '/static/images/avatars/avatar_2.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcbd8406cd3055f2b6c8',\n folder: 'spam',\n isImportant: false,\n isStarred: true,\n isUnread: false,\n labelIds: [],\n subject: 'Amazing work',\n message: `\nHey, nice projects! I really liked the one in react. What's your quote on kinda similar project?\n `,\n from: {\n name: 'Adam Denisov',\n email: 'adam.denisov@devias.io',\n avatar: '/static/images/avatars/avatar_7.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcb9fee1ec12453fa13b',\n folder: 'inbox',\n isImportant: false,\n isStarred: false,\n isUnread: false,\n labelIds: ['5e892628d4bc60b4514d5d36'],\n subject: 'Flight reminder',\n message: `\nDear Shen, Your flight is coming up soon. Please don’t forget to check in for your scheduled flight.\n `,\n from: {\n name: 'Miller Edwards',\n email: 'miller.edwards@devias.io',\n avatar: '/static/images/avatars/avatar_8.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n },\n {\n id: '5e86bcb5575181a5e527e24f',\n folder: 'trash',\n isImportant: false,\n isStarred: false,\n isUnread: true,\n labelIds: ['5e8926820cf9ec6c834114ec'],\n subject: 'Posible candidates for the position',\n message: `\nMy market leading client has another fantastic opportunity for an experienced Software Developer to join them on a heavily remote basis\n `,\n from: {\n name: 'Cao Yu',\n email: 'cao.yu@devias.io',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n to: [\n {\n name: 'Katarina Smith',\n email: 'katarina.smith@devias.io',\n avatar: null\n }\n ],\n createdAt: moment()\n .toDate()\n .getTime()\n }\n];\n\nconst filterMails = (\n mails: Mail[],\n labels: Label[],\n systemLabel?: string,\n customLabel?: string\n): Mail[] => {\n if (customLabel) {\n const label = labels.find((_label) => _label.name === customLabel);\n\n if (!label) {\n return [];\n }\n\n return mails.filter((mail) => mail.labelIds.includes(label.id));\n }\n\n if (systemLabel === 'all') {\n return mails;\n }\n\n // \"Starred\" can be both folder and filter\n if (['starred', 'important'].includes(systemLabel)) {\n if (systemLabel === 'starred') {\n return mails.filter((mail) => mail.isStarred);\n }\n\n if (systemLabel === 'important') {\n return mails.filter((mail) => mail.isImportant);\n }\n }\n\n if (['inbox', 'sent', 'drafts', 'trash', 'spam', 'starred'].includes(systemLabel)) {\n return mails.filter((mail) => mail.folder === systemLabel);\n }\n\n return [];\n};\n\nmock.onGet('/api/mail/labels').reply(200, { labels });\n\nmock.onGet('/api/mail/mails').reply((config) => {\n try {\n const { systemLabel, customLabel } = config.params;\n const filteredMails = filterMails(\n mails,\n labels,\n systemLabel,\n customLabel\n );\n\n return [200, { mails: filteredMails }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n\nmock.onGet('/api/mail/mail').reply((config) => {\n try {\n const { mailId } = config.params;\n const mail = mails.find((_mail) => _mail.id === mailId);\n\n if (!mail) {\n return [404, { message: 'Mail not found' }];\n }\n\n return [200, { mail }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type { Notification } from 'src/types/notification';\n\nconst notifications: Notification[] = [\n {\n id: '5e8883f1b51cc1956a5a1ec0',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n description: 'Dummy text',\n title: 'Your order is placed',\n type: 'order_placed'\n },\n {\n id: '5e8883f7ed1486d665d8be1e',\n createdAt: moment()\n .subtract(1, 'day')\n .toDate()\n .getTime(),\n description: 'You have 32 unread messages',\n title: 'New message received',\n type: 'new_message'\n },\n {\n id: '5e8883fca0e8612044248ecf',\n createdAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime(),\n description: 'Dummy text',\n title: 'Your item is shipped',\n type: 'item_shipped'\n },\n {\n id: '5e88840187f6b09b431bae68',\n createdAt: moment()\n .subtract(7, 'days')\n .toDate()\n .getTime(),\n description: 'You have 32 unread messages',\n title: 'New message received',\n type: 'new_message'\n }\n];\n\nmock.onGet('/api/notifications').reply(200, { notifications });\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type { Order } from 'src/types/order';\n\nmock.onGet('/api/orders').reply(() => {\n const orders: Order[] = [\n {\n id: '5ecb8a6d9f53bfae09e16115',\n createdAt: moment()\n .subtract(32, 'minutes')\n .subtract(23, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Cao Yu'\n },\n number: 'DEV-102',\n paymentMethod: 'CreditCard',\n status: 'pending',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a738aa6f3e577c2b3ec',\n createdAt: moment()\n .subtract(36, 'minutes')\n .subtract(51, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Alex Richardson'\n },\n number: 'DEV-101',\n paymentMethod: 'PayPal',\n status: 'completed',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a795e53f134013eba3b',\n createdAt: moment()\n .subtract(38, 'minutes')\n .subtract(55, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Anje Keizer'\n },\n number: 'DEV-100',\n paymentMethod: 'CreditCard',\n status: 'pending',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a7f738cc572a9ce0277',\n createdAt: moment()\n .subtract(40, 'minutes')\n .subtract(3, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Clarke Gillebert'\n },\n number: 'DEV-99',\n paymentMethod: 'PayPal',\n status: 'completed',\n totalAmount: 500.00\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n createdAt: moment()\n .subtract(45, 'minutes')\n .subtract(32, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Adam Denisov'\n },\n number: 'DEV-98',\n paymentMethod: 'PayPal',\n status: 'completed',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a85a850c16fa413849c',\n createdAt: moment()\n .subtract(48, 'minutes')\n .subtract(57, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Miller Edwards'\n },\n status: 'pending',\n number: 'DEV-97',\n paymentMethod: 'CreditCard',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a8e69ba2e409ea0168f',\n createdAt: moment()\n .subtract(49, 'minutes')\n .subtract(4, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Emilee Simchenko'\n },\n number: 'DEV-96',\n paymentMethod: 'CreditCard',\n status: 'completed',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a9341c68839d387e1c4',\n createdAt: moment()\n .subtract(57, 'minutes')\n .subtract(43, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Elliott Stone'\n },\n number: 'DEV-95',\n paymentMethod: 'PayPal',\n status: 'rejected',\n totalAmount: 500.00\n },\n {\n id: '5ecb8a984bfbb97c9ae458e8',\n createdAt: moment()\n .subtract(59, 'minutes')\n .subtract(6, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Shen Zhi'\n },\n number: 'DEV-94',\n paymentMethod: 'CreditCard',\n status: 'canceled',\n totalAmount: 500.00\n },\n {\n id: '5ecb8aa08d9127dba654ce7a',\n createdAt: moment()\n .subtract(1, 'hour')\n .subtract(15, 'minutes')\n .subtract(43, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n name: 'Merrile Burgett'\n },\n number: 'DEV-93',\n paymentMethod: 'PayPal',\n status: 'canceled',\n totalAmount: 500.00\n }\n ];\n\n return [200, { orders }];\n});\n\nmock.onGet('/api/orders/1').reply(() => {\n const order: Order = {\n id: '5ecb8a6879877087d4aa2690',\n coupon: null,\n createdAt: moment()\n .toDate()\n .getTime(),\n currency: '$',\n customer: {\n address1: 'Street John Wick, no. 7',\n address2: 'House #25',\n city: 'San Diego',\n country: 'USA',\n name: 'Adam Denisov'\n },\n items: [\n {\n id: '5ecb8abbdd6dfb1f9d6bf98b',\n billingCycle: 'monthly',\n currency: '$',\n name: 'Project Points',\n quantity: 25,\n unitAmount: 50.25\n },\n {\n id: '5ecb8ac10f116d04bed990eb',\n billingCycle: 'monthly',\n currency: '$',\n name: 'Freelancer Subscription',\n quantity: 1,\n unitAmount: 5.00\n }\n ],\n number: 'DEV-103',\n paymentMethod: 'CreditCard',\n status: 'pending',\n totalAmount: 500.00\n };\n\n return [200, { order }];\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type { Product } from 'src/types/product';\n\nlet products: Product[] = [\n {\n id: '5ece2c077e39da27658aa8a9',\n attributes: ['Cotton'],\n category: 'dress',\n currency: '$',\n createdAt: moment()\n .subtract(1, 'days')\n .toDate()\n .getTime(),\n image: null,\n inventoryType: 'in_stock',\n isAvailable: true,\n isShippable: false,\n name: 'Charlie Tulip Dress',\n price: 23.99,\n quantity: 85,\n updatedAt: moment()\n .subtract(6, 'hours')\n .toDate()\n .getTime(),\n variants: 2\n },\n {\n id: '5ece2c0d16f70bff2cf86cd8',\n attributes: ['Cotton'],\n category: 'dress',\n currency: '$',\n createdAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime(),\n image: null,\n inventoryType: 'out_of_stock',\n isAvailable: false,\n isShippable: true,\n name: 'Kate Leopard Dress',\n price: 95.00,\n quantity: 0,\n updatedAt: moment()\n .subtract(2, 'days')\n .subtract(8, 'hours')\n .toDate()\n .getTime(),\n variants: 1\n },\n {\n id: '5ece2c123fad30cbbff8d060',\n attributes: ['Variety of styles'],\n category: 'jewelry',\n currency: '$',\n createdAt: moment()\n .subtract(6, 'days')\n .toDate()\n .getTime(),\n image: null,\n inventoryType: 'in_stock',\n isAvailable: true,\n isShippable: false,\n name: 'Layering Bracelets Collection',\n price: 155.00,\n quantity: 48,\n updatedAt: moment()\n .subtract(1, 'days')\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n variants: 5\n },\n {\n id: '5ece2c1be7996d1549d94e34',\n attributes: ['Polyester and Spandex'],\n category: 'blouse',\n currency: '$',\n createdAt: moment()\n .subtract(12, 'days')\n .toDate()\n .getTime(),\n image: null,\n inventoryType: 'limited',\n isAvailable: false,\n isShippable: true,\n name: 'Flared Sleeve Floral Blouse',\n price: 17.99,\n quantity: 5,\n updatedAt: moment()\n .subtract(1, 'days')\n .subtract(7, 'hours')\n .toDate()\n .getTime(),\n variants: 1\n }\n];\n\nmock.onGet('/api/products').reply(200, { products });\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type { Project } from 'src/types/project';\n\nmock.onGet('/api/projects/overview/projects').reply(() => {\n const projects: Project[] = [\n {\n id: '5e8dcf105a6732b3ed82cf7a',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n },\n budget: 2394.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: true,\n likesCount: 57,\n location: 'Europe',\n image: '/static/images/projects/project_3.png',\n rating: 3,\n membersCount: 5,\n technology: 'Angular JS',\n title: 'Ten80 Web Design',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(24, 'minutes')\n .toDate()\n .getTime()\n }\n ];\n\n return [200, { projects }];\n});\n\nmock.onGet('/api/projects/overview/statistics').reply(200, {\n statistics: {\n nextPayout: 4250,\n totalIncome: 12500,\n visitorsToday: 230,\n watchingNow: 5\n }\n});\n\nmock.onGet('/api/projects/projects').reply(() => {\n const projects: Project[] = [\n {\n id: '5e8dcef8f95685ce21f16f3d',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n budget: 6125.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: true,\n likesCount: 7,\n location: 'Europe',\n image: '/static/images/projects/project_1.png',\n rating: 5,\n membersCount: 2,\n title: 'Mella Full Screen Slider',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(24, 'minutes')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf076c50b9d8e756a5a2',\n author: {\n id: '5e887d0b3d090c1b8f162003',\n avatar: '/static/images/avatars/avatar_9.png',\n name: 'Emilee Simchenko'\n },\n budget: 4205.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: true,\n likesCount: 12,\n location: 'Europe',\n image: '/static/images/projects/project_2.png',\n rating: 4.5,\n membersCount: 3,\n title: 'Dashboard Design',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(1, 'hour')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf105a6732b3ed82cf7a',\n author: {\n id: '5e88792be2d4cfb4bf0971d9',\n avatar: '/static/images/avatars/avatar_10.png',\n name: 'Elliott Stone'\n },\n budget: 2394.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: true,\n likesCount: 18,\n location: 'Europe',\n image: '/static/images/projects/project_3.png',\n rating: 4.7,\n membersCount: 8,\n title: 'Ten80 Web Design',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(16, 'hour')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf1cc7155d0e947dc27f',\n author: {\n id: '5e8877da9a65442b11551975',\n avatar: '/static/images/avatars/avatar_11.png',\n name: 'Shen Zhi'\n },\n budget: 2784.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n image: '/static/images/projects/project_4.png',\n isLiked: false,\n likesCount: 1,\n location: 'Europe',\n membersCount: 10,\n rating: 2,\n title: 'Neura e-commerce UI Kit',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(3, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf252313876001e83221',\n author: {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n name: 'Cao Yu'\n },\n budget: 5835.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: false,\n likesCount: 7,\n location: 'Europe',\n image: '/static/images/projects/project_5.jpg',\n rating: 5,\n membersCount: 2,\n title: 'Administrator Dashboard',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(7, 'days')\n .toDate()\n .getTime()\n },\n {\n id: '5e8dcf4250d77c954b04902e',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n budget: 4255.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n isLiked: true,\n likesCount: 4,\n location: 'Europe',\n image: null,\n rating: 4.2,\n membersCount: 12,\n title: 'Kalli UI Kit',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(8, 'days')\n .toDate()\n .getTime()\n }\n ];\n\n return [200, { projects }];\n});\n\nmock.onGet('/api/projects/projects/1').reply(() => {\n const project: Project = {\n id: '5e8dcf076c50b9d8e756a5a2',\n activities: [\n {\n id: '5e8dd0828d628e6f40abdfe8',\n createdAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime(),\n description: 'has uploaded a new file',\n subject: 'Project author',\n type: 'upload_file'\n },\n {\n id: '5e8dd0893a6725f2bb603617',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n description: 'joined team as a Front-End Developer',\n subject: 'Adrian Stefan',\n type: 'join_team'\n },\n {\n id: '5e8dd08f44603e3300b75cf1',\n createdAt: moment()\n .subtract(9, 'hours')\n .toDate()\n .getTime(),\n description: 'joined team as a Full Stack Developer',\n subject: 'Alexndru Robert',\n type: 'join_team'\n },\n {\n id: '5e8dd0960f3f0fe04e64d8f4',\n createdAt: moment()\n .subtract(2, 'days')\n .toDate()\n .getTime(),\n description: 'raised the project budget',\n subject: 'Project author',\n type: 'price_change'\n },\n {\n id: '5e8dd09db94421c502c53d13',\n createdAt: moment()\n .subtract(4, 'days')\n .toDate()\n .getTime(),\n description: 'created',\n subject: 'Contest',\n type: 'contest_created'\n }\n ],\n applicants: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n commonConnections: 12,\n cover: '/static/images/covers/cover_2.jpg',\n labels: [\n 'User Experience',\n 'FrontEnd development',\n 'HTML5',\n 'VueJS',\n 'ReactJS'\n ],\n name: 'Ekaterina Tankova'\n },\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n commonConnections: 5,\n cover: '/static/images/covers/cover_3.jpg',\n labels: [\n 'User Interface',\n 'FullStack development',\n 'Angular',\n 'ExpressJS'\n ],\n name: 'Cao Yu'\n },\n {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n commonConnections: 17,\n cover: '/static/images/covers/cover_1.jpg',\n labels: [\n 'BackEnd development',\n 'Firebase',\n 'MongoDB',\n 'ExpressJS'\n ],\n name: 'Katarina Smith'\n }\n ],\n author: {\n id: '5e887d0b3d090c1b8f162003',\n avatar: '/static/images/avatars/avatar_9.png',\n name: 'Emilee Simchenko'\n },\n budget: 12500.00,\n caption: 'We\\'re looking for experienced Developers and Product Designers to come aboard and help us build succesful businesses through software.',\n currency: '$',\n description: `\nDesign files are attached in the files tab.\n\nDevelop the web app screens for our product called \"PDFace\". Please look at the wireframes, system activity workflow and read the section above to understand what we're trying to archive.\n\nThere's not many screens we need designed, but there will be modals and various other system triggered events that will need to be considered.\n\nThe project has been created in Sketch so let me know if there are any problems opening this project and I'll try to convert into a usable file.\n `,\n endDate: moment()\n .add(14, 'days')\n .toDate()\n .getTime(),\n files: [\n {\n id: '5e8dd0721b9e0fab56d7238b',\n mimeType: 'image/png',\n name: 'example-project1.jpg',\n size: 1024 * 1024 * 3,\n url: '/static/images/projects/project_4.png'\n },\n {\n id: '5e8dd0784431995a30eb2586',\n mimeType: 'application/zip',\n name: 'docs.zip',\n size: 1024 * 1024 * 25,\n url: '#'\n },\n {\n id: '5e8dd07cbb62749296ecee1c',\n mimeType: 'image/png',\n name: 'example-project2.jpg',\n size: 1024 * 1024 * 2,\n url: '/static/images/projects/project_1.png'\n }\n ],\n isActive: true,\n isLiked: true,\n location: 'Europe',\n members: [\n {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n bio: 'Front End Developer',\n name: 'Ekaterina Tankova'\n },\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n bio: 'UX Designer',\n name: 'Cao Yu'\n },\n {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n bio: 'Copyright',\n name: 'Anje Keizer'\n }\n ],\n rating: 5,\n reviews: [\n {\n id: '5f0366cd843161f193ebadd4',\n author: {\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova'\n },\n comment: 'Great company, providing an awesome & easy to use product.',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n value: 5\n },\n {\n id: 'to33twsyjphcfj55y3t07261',\n author: {\n avatar: '/static/images/avatars/avatar_7.png',\n name: 'Adam Denisov',\n },\n comment: 'Not the best people managers, poor management skills, poor career development programs. Communication from corporate & leadership isn\\'t always clear and is sometime one-sided. Low pay compared to FANG.',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n value: 2\n },\n {\n id: '6z9dwxjzkqbmxuluxx2681jd',\n author: {\n avatar: '/static/images/avatars/avatar_3.png',\n name: 'Cao Yu',\n },\n comment: 'I have been working with this company full-time. Great for the work life balance. Cons, decentralized decision making process across the organization.',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n value: 4\n }\n ],\n startDate: moment()\n .add(7, 'days')\n .toDate()\n .getTime(),\n tags: ['React JS'],\n title: 'Develop a PDF Export App',\n type: 'Full-Time',\n updatedAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime()\n };\n\n return [200, { project }];\n});\n","import moment from 'moment';\nimport { colors } from '@mui/material';\nimport mock from 'src/utils/mock';\nimport type {\n CustomerActivity,\n Order,\n Product,\n Project,\n Referral,\n Task\n} from 'src/types/reports';\n\nmock.onGet('/api/reports/customer-activity').reply(() => {\n const activities: CustomerActivity[] = [\n {\n id: '5e89140bcc768199d1e0dc49',\n createdAt: moment()\n .subtract(23, 'minutes')\n .toDate()\n .getTime(),\n customer: {\n id: '5e887a62195cc5aef7e8ca5d',\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova',\n },\n description: 'Created account',\n type: 'register'\n },\n {\n id: '5e891411b0290b175166cd32',\n createdAt: moment()\n .subtract(56, 'minutes')\n .toDate()\n .getTime(),\n customer: {\n id: '5e887ac47eed253091be10cb',\n name: 'Cao Yu',\n avatar: '/static/images/avatars/avatar_3.png'\n },\n description: 'Subscription Purchase',\n type: 'payment'\n },\n {\n id: '5e89141633dc5e52c923ef27',\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n customer: {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n description: 'Submitted a ticket',\n type: 'ticket_create'\n },\n {\n id: '5e89141bd975c7f33aee9f4b',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n customer: {\n id: '5e887b7602bdbc4dbb234b27',\n name: 'Anje Keizer',\n avatar: '/static/images/avatars/avatar_5.png'\n },\n description: 'Subscription Purchase',\n type: 'payment'\n },\n {\n id: '5e891421d7945778863cf9ca',\n createdAt: moment()\n .subtract(5, 'minutes')\n .toDate()\n .getTime(),\n customer: {\n id: '5e86809283e28b96d2d38537',\n name: 'Katarina Smith',\n avatar: '/static/images/avatars/avatar_6.png'\n },\n description: 'Subscription Purchase',\n type: 'payment'\n }\n ];\n\n return [200, { activities }];\n});\n\nmock.onGet('/api/reports/earnings').reply(200, {\n earnings: {\n datasets: [\n {\n data: [56, 24, 20],\n backgroundColor: ['#3d72eb', '#4b9e86', '#b658f5']\n }\n ],\n labels: ['Subscriptions', 'Affiliate', 'Sales']\n }\n});\n\nmock.onGet('/api/reports/latest-orders').reply(() => {\n const orders: Order[] = [\n {\n id: '5eff2548979e396cb4b000ba',\n createdAt: moment()\n .subtract(7, 'minutes')\n .subtract(10, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n email: 'ekaterina@devias.io',\n name: 'Ekaterina Tankova'\n },\n currency: '$',\n items: 7,\n number: 'DEV-1042',\n status: 'pending',\n totalAmount: 524.00\n },\n {\n id: '5eff254e46b753a166e7d7af',\n createdAt: moment()\n .subtract(2, 'hours')\n .subtract(12, 'minutes')\n .subtract(50, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n email: 'cao.yu@devias.io',\n name: 'Cao Yu'\n },\n currency: '$',\n items: 8,\n number: 'DEV-1041',\n status: 'complete',\n totalAmount: 693.00\n },\n {\n id: '5eff2553e1c551e2e28a9205',\n createdAt: moment()\n .subtract(5, 'hours')\n .subtract(39, 'minutes')\n .subtract(12, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n email: 'alex.richardson@devias.io',\n name: 'Alex Richardson'\n },\n currency: '$',\n items: 4,\n number: 'DEV-1040',\n status: 'rejected',\n totalAmount: 215.00\n },\n {\n id: '5eff25590f3e28f013c39a0e',\n createdAt: moment()\n .subtract(5, 'hours')\n .subtract(46, 'minutes')\n .subtract(21, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n email: 'anje.keiser@devias.io',\n name: 'Anje Keizer'\n },\n currency: '$',\n items: 1,\n number: 'DEV-1039',\n status: 'pending',\n totalAmount: 25.00\n },\n {\n id: '5eff255f57499089243805d8',\n createdAt: moment()\n .subtract(8, 'hours')\n .subtract(19, 'minutes')\n .subtract(54, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n name: 'Clarke Gillebert',\n email: 'clarke.gillebert@devias.io'\n },\n currency: '$',\n items: 5,\n number: 'DEV-1038',\n status: 'complete',\n totalAmount: 535.00\n },\n {\n id: '5eff25658d416fc5adb96a3a',\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(45, 'minutes')\n .subtract(12, 'seconds')\n .toDate()\n .getTime(),\n customer: {\n email: 'merrile.burgett@devias.io',\n name: 'Merrile Burgett'\n },\n currency: '$',\n items: 2,\n number: 'DEV-1037',\n status: 'complete',\n totalAmount: 56.00\n }\n ];\n\n return [200, { orders }];\n});\n\nmock.onGet('/api/reports/latest-projects').reply(() => {\n const projects: Project[] = [\n {\n id: '5eff24e675e7b3cba23e4be7',\n author: {\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n budget: 12500,\n createdAt: moment()\n .subtract(2, 'hours')\n .subtract(34, 'minutes')\n .subtract(10, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n technologies: ['angular'],\n title: 'Mella Full Screen Slider'\n },\n {\n id: '5eff24e98e2c9107e95cb827',\n author: {\n avatar: '/static/images/avatars/avatar_9.png',\n name: 'Emilee Simchenko'\n },\n budget: 15750,\n createdAt: moment()\n .subtract(10, 'hours')\n .subtract(56, 'minutes')\n .subtract(25, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n technologies: ['sketch', 'html-css'],\n title: 'Dashboard Design'\n },\n {\n id: '5eff24f0d97353e3576d3c26',\n author: {\n avatar: '/static/images/avatars/avatar_10.png',\n name: 'Elliott Stone'\n },\n budget: 15750,\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(30, 'minutes')\n .subtract(50, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n technologies: ['react-js'],\n title: 'Ten80 Web Design'\n },\n {\n id: '5eff24f737bc6b191dd9bf58',\n author: {\n avatar: '/static/images/avatars/avatar_11.png',\n name: 'Shen Zhi'\n },\n budget: 12500,\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(4, 'minutes')\n .subtract(30, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n technologies: ['vue-js'],\n title: 'Neura e-commerce UI Kit'\n },\n {\n id: '5eff24fb29fc5e37bdab3b2d',\n author: {\n avatar: '/static/images/avatars/avatar_3.png',\n name: 'Cao Yu'\n },\n budget: 15750,\n createdAt: moment()\n .subtract(1, 'days')\n .subtract(11, 'minutes')\n .subtract(6, 'seconds')\n .toDate()\n .getTime(),\n currency: '$',\n technologies: ['angular', 'figma'],\n title: 'Administrator Dashboard'\n }\n ];\n\n return [200, { projects }];\n});\n\nmock.onGet('/api/reports/latest-tasks').reply(() => {\n const tasks: Task[] = [\n {\n id: '5eff24b501ba5281ddb5378c',\n deadline: moment()\n .add(1, 'days')\n .add(1, 'hour')\n .toDate()\n .getTime(),\n members: [\n {\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova'\n },\n {\n avatar: '/static/images/avatars/avatar_3.png',\n name: 'Cao Yu'\n }\n ],\n title: 'Update the API for the project'\n },\n {\n id: '5eff24bb5bb3bd1beeddde78',\n deadline: moment()\n .add(2, 'day')\n .add(1, 'hour')\n .toDate()\n .getTime(),\n members: [\n {\n avatar: '/static/images/avatars/avatar_8.png',\n name: 'Miller Edwards'\n },\n {\n avatar: '/static/images/avatars/avatar_10.png',\n name: 'Elliott Stone'\n },\n {\n avatar: '/static/images/avatars/avatar_12.png',\n name: 'Merrile Burgett'\n }\n ],\n title: 'Redesign the landing page'\n },\n {\n id: '5eff24c019175119993fc1ff',\n deadline: moment()\n .toDate()\n .getTime(),\n members: [\n {\n avatar: '/static/images/avatars/avatar_7.png',\n name: 'Adam Denisov'\n }\n ],\n title: 'Solve the bug for the showState'\n },\n {\n id: '5eff24c52ce9fdadffa11959',\n deadline: null,\n members: [\n {\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova'\n },\n {\n avatar: '/static/images/avatars/avatar_10.png',\n name: 'Elliott Stone'\n }\n ],\n title: 'Release v1.0 Beta'\n },\n {\n id: '5eff24ca3ffab939b667258b',\n deadline: null,\n members: [\n {\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n {\n avatar: '/static/images/avatars/avatar_2.png',\n name: 'Ekaterina Tankova'\n },\n {\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n }\n ],\n title: 'GDPR Compliance'\n },\n {\n id: '5eff24cf8740fc9faca4e463',\n deadline: null,\n members: [\n {\n avatar: '/static/images/avatars/avatar_8.png',\n name: 'Miller Edwards'\n }\n ],\n title: 'Redesign Landing Page'\n }\n ];\n\n return [200, { tasks }];\n});\n\nmock.onGet('/api/reports/profitable-products').reply(() => {\n const products: Product[] = [\n {\n id: '5eff2512c6f8737d08325676',\n conversionRate: 93,\n currency: '$',\n image: '/static/images/products/product_standard.svg',\n name: 'Freelancer Basic Subscription',\n price: 5.00,\n subscriptions: 13153\n },\n {\n id: '5eff2516247f9a6fcca9f151',\n conversionRate: 76,\n currency: '$',\n image: '/static/images/products/product_standard.svg',\n name: 'Freelancer Extra Subscription',\n price: 15.00,\n subscriptions: 10300\n },\n {\n id: '5eff251a3bb9ab7290640f18',\n conversionRate: 60,\n currency: '$',\n image: '/static/images/products/product_premium.svg',\n name: 'Agency Basic Subscription',\n price: 25.00,\n subscriptions: 5300\n },\n {\n id: '5eff251e297fd17f0dc18a8b',\n conversionRate: 46,\n currency: '$',\n image: '/static/images/products/product_extended.svg',\n name: 'Enterprise Basic Subscription',\n price: 205.00,\n subscriptions: 1203\n },\n {\n id: '5eff2524ef813f061b3ea39f',\n conversionRate: 41,\n currency: '$',\n image: '/static/images/products/product_extended.svg',\n name: 'Enterprise Extra Subscription',\n price: 500.00,\n subscriptions: 254\n }\n ];\n\n return [200, { products }];\n});\n\nmock.onGet('/api/reports/top-referrals').reply(() => {\n const referrals: Referral[] = [\n {\n color: colors.blueGrey['700'],\n initials: 'GT',\n name: 'GitHub',\n value: 53032\n },\n {\n color: colors.cyan['500'],\n initials: 'TW',\n name: 'Twitter',\n value: 39551\n },\n {\n color: colors.indigo[600],\n initials: 'HN',\n name: 'Hacker News',\n value: 23150\n },\n {\n color: colors.red['500'],\n initials: 'SO',\n name: 'Stack Overflow',\n value: 14093\n },\n {\n color: colors.orange['900'],\n initials: 'RD',\n name: 'Reddit.com',\n value: 7251\n },\n {\n color: colors.blueGrey['900'],\n initials: 'DE',\n name: 'Dev.to',\n value: 5694\n },\n {\n color: colors.blue['900'],\n initials: 'FB',\n name: 'Facebook',\n value: 3643\n },\n {\n color: colors.blueGrey['900'],\n initials: 'MD',\n name: 'Medium',\n value: 1654\n }\n ];\n\n return [200, { referrals }];\n});\n","import mock from 'src/utils/mock';\nimport wait from 'src/utils/wait';\n\ninterface Result {\n description: string;\n title: string;\n}\n\nmock.onGet('/api/search').reply(async () => {\n try {\n await wait(1500);\n\n const results: Result[] = [\n {\n description: 'Algolia broadly consists of two parts: search implementation and search analytics. We provide tools that make it easy for your developers...',\n title: 'What does Algolia do?'\n },\n {\n description: 'To be clear, search doesn’t know the direction that your business should take. However, it can help you gather information on what your customers want...',\n title: 'Search as a feedback loop'\n },\n {\n description: 'Algolia provides your users with a fast and rich search experience. Your Algolia search interface can contain a search bar, filters, infinite scrolling...',\n title: 'What can Algolia do for my users?'\n }\n ];\n\n return [200, { results }];\n } catch (err) {\n console.error(err);\n return [500, { message: 'Internal server error' }];\n }\n});\n","import moment from 'moment';\nimport mock from 'src/utils/mock';\nimport type {\n Connection,\n Post,\n Profile\n} from 'src/types/social';\n\nmock.onGet('/api/social/profile').reply(() => {\n const profile: Profile = {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n bio: 'Product Designer',\n connectedStatus: 'not_connected',\n cover: '/static/images/covers/cover_1.jpg',\n currentCity: 'Bucharest',\n currentJob: {\n company: 'Devias IO',\n title: 'Product Designer'\n },\n email: 'katarina.smith@devias.io',\n name: 'Katarina Smith',\n originCity: 'Rm. Valcea',\n previousJob: {\n company: 'Focus Aesthetic Dyanmics',\n title: 'UX Designer at'\n },\n profileProgress: 50,\n quote: 'Everyone thinks of changing the world, but no one thinks of changing himself.'\n };\n\n return [200, { profile }];\n});\n\nmock.onGet('/api/social/connections').reply(() => {\n const connections: Connection[] = [\n {\n id: '5e887ac47eed253091be10cb',\n avatar: '/static/images/avatars/avatar_3.png',\n commonConnections: 10,\n name: 'Cao Yu',\n status: 'rejected'\n },\n {\n id: '5e887b209c28ac3dd97f6db5',\n avatar: '/static/images/avatars/avatar_4.png',\n commonConnections: 8,\n name: 'Alex Richardson',\n status: 'pending'\n },\n {\n id: '5e86805e2bafd54f66cc95c3',\n avatar: '/static/images/avatars/avatar_7.png',\n commonConnections: 5,\n name: 'Adam Denisov',\n status: 'not_connected'\n },\n {\n id: '5e887a1fbefd7938eea9c981',\n avatar: '/static/images/avatars/avatar_8.png',\n commonConnections: 1,\n name: 'Miller Edwards',\n status: 'connected'\n }\n ];\n\n return [200, { connections }];\n});\n\nmock.onGet('/api/social/posts').reply(() => {\n const posts: Post[] = [\n {\n id: '5e887faca2b7a1ddce01221a',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n },\n comments: [\n {\n id: '5e887fc17162ba254da30771',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime(),\n message: 'Could use some more statistics, but that’s me haha'\n },\n {\n id: '5e887fc759bebe8d5d54a2e5',\n author: {\n id: '5e887a1fbefd7938eea9c981',\n avatar: '/static/images/avatars/avatar_8.png',\n name: 'Miller Edwards'\n },\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n message: 'Hmm, honestly this looks nice but I would change the shadow though',\n }\n ],\n createdAt: moment()\n .subtract(4, 'hours')\n .toDate()\n .getTime(),\n isLiked: true,\n likes: 24,\n media: '/static/images/posts/post_1.png',\n message: 'Just made this home screen for a project, what-cha thinkin?'\n },\n {\n id: '5e887faf03e78a5359765636',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n },\n comments: [\n {\n id: '5e887fde4992eca63b9e9ef5',\n author: {\n id: '5e8877da9a65442b11551975',\n avatar: '/static/images/avatars/avatar_11.png',\n name: 'Shen Zhi'\n },\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime(),\n message: 'That’s actually deep. Thanks for the design, would you consider making an interaction?'\n },\n {\n id: '5e887feb11b7add1ebfcca78',\n author: {\n id: '5e887b209c28ac3dd97f6db5',\n avatar: '/static/images/avatars/avatar_4.png',\n name: 'Alex Richardson'\n },\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n message: 'Oh... so sentimental'\n }\n ],\n createdAt: moment()\n .subtract(7, 'hours')\n .toDate()\n .getTime(),\n isLiked: false,\n likes: 65,\n message: 'As a human being, you are designed in a way that makes you incapable of experiencing any positive emotion unless you set an aim and progress towards it. What makes you happy is not, in fact, attaining it, but making progress towards it.'\n }\n ];\n\n return [200, { posts }];\n});\n\nmock.onGet('/api/social/feed').reply(() => {\n const posts: Post[] = [\n {\n id: '5e887fa38598b6fe61667757',\n author: {\n id: '5e88792be2d4cfb4bf0971d9',\n avatar: '/static/images/avatars/avatar_10.png',\n name: 'Elliott Stone'\n },\n comments: [\n {\n id: '5e887fb6c648772b52f860a8',\n author: {\n id: '5e8680e60cba5019c5ca6fda',\n avatar: '/static/images/avatars/avatar_12.png',\n name: 'Merrile Burgett'\n },\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime(),\n message: 'I\\'ve been using Angular for the past 3 years'\n }\n ],\n createdAt: moment()\n .subtract(16, 'minutes')\n .toDate()\n .getTime(),\n isLiked: true,\n likes: 1,\n message: 'Hey guys! What\\'s your favorite framework?'\n },\n {\n id: '5e887faca2b7a1ddce01221a',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Zhi'\n },\n comments: [\n {\n id: '5e887fc17162ba254da30771',\n author: {\n id: '5e887b7602bdbc4dbb234b27',\n avatar: '/static/images/avatars/avatar_5.png',\n name: 'Anje Keizer'\n },\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime(),\n message: 'Could use some more statistics, but that’s me haha'\n },\n {\n id: '5e887fc759bebe8d5d54a2e5',\n author: {\n id: '5e887a1fbefd7938eea9c981',\n avatar: '/static/images/avatars/avatar_8.png',\n name: 'Miller Edwards'\n },\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n message: 'Hmm, honestly this looks nice but I would change the shadow though'\n }\n ],\n createdAt: moment()\n .subtract(4, 'hours')\n .toDate()\n .getTime(),\n isLiked: true,\n likes: 24,\n media: '/static/images/posts/post_1.png',\n message: 'Just made this home screen for a project, what-cha thinkin?'\n },\n {\n id: '5e887faf03e78a5359765636',\n author: {\n id: '5e86809283e28b96d2d38537',\n avatar: '/static/images/avatars/avatar_6.png',\n name: 'Katarina Smith'\n },\n comments: [\n {\n id: '5e887fde4992eca63b9e9ef5',\n author: {\n id: '5e8877da9a65442b11551975',\n name: 'Shen Zhi',\n avatar: '/static/images/avatars/avatar_11.png'\n },\n createdAt: moment()\n .subtract(3, 'hours')\n .toDate()\n .getTime(),\n message: 'That’s actually deep. Thanks for the design, would you consider making an interaction?'\n },\n {\n id: '5e887feb11b7add1ebfcca78',\n author: {\n id: '5e887b209c28ac3dd97f6db5',\n name: 'Alex Richardson',\n avatar: '/static/images/avatars/avatar_4.png'\n },\n createdAt: moment()\n .subtract(2, 'hours')\n .toDate()\n .getTime(),\n message: 'Oh... so sentimental'\n }\n ],\n createdAt: moment()\n .subtract(7, 'hours')\n .toDate()\n .getTime(),\n isLiked: false,\n likes: 65,\n message: 'As a human being, you are designed in a way that makes you incapable of experiencing any positive emotion unless you set an aim and progress towards it. What makes you happy is not, in fact, attaining it, but making progress towards it.'\n }\n ];\n\n return [200, { posts }];\n});\n","// @ts-ignore-start\nimport { Chart } from 'react-chartjs-2';\n\n// ChartJS extension rounded bar chart\n// https://codepen.io/jedtrow/full/ygRYgo\nfunction draw() {\n const { ctx } = this._chart;\n const vm = this._view;\n let { borderWidth } = vm;\n\n let left;\n let right;\n let top;\n let bottom;\n let signX;\n let signY;\n let borderSkipped;\n let radius;\n\n // If radius is less than 0 or is large enough to cause drawing errors a max\n // radius is imposed. If cornerRadius is not defined set it to 0.\n let { cornerRadius } = this._chart.config.options;\n if (cornerRadius < 0) {\n cornerRadius = 0;\n }\n\n if (typeof cornerRadius === 'undefined') {\n cornerRadius = 0;\n }\n\n if (!vm.horizontal) {\n // bar\n left = vm.x - vm.width / 2;\n right = vm.x + vm.width / 2;\n top = vm.y;\n bottom = vm.base;\n signX = 1;\n signY = bottom > top ? 1 : -1;\n borderSkipped = vm.borderSkipped || 'bottom';\n } else {\n // horizontal bar\n left = vm.base;\n right = vm.x;\n top = vm.y - vm.height / 2;\n bottom = vm.y + vm.height / 2;\n signX = right > left ? 1 : -1;\n signY = 1;\n borderSkipped = vm.borderSkipped || 'left';\n }\n\n // Canvas doesn't allow us to stroke inside the width so we can\n // adjust the sizes to fit if we're setting a stroke on the line\n if (borderWidth) {\n // borderWidth shold be less than bar width and bar height.\n const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n borderWidth = borderWidth > barSize ? barSize : borderWidth;\n const halfStroke = borderWidth / 2;\n // Adjust borderWidth when bar top position is near vm.base(zero).\n const borderLeft = left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n const borderRight = right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n const borderBottom = bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n // not become a vertical line?\n if (borderLeft !== borderRight) {\n top = borderTop;\n bottom = borderBottom;\n }\n // not become a horizontal line?\n if (borderTop !== borderBottom) {\n left = borderLeft;\n right = borderRight;\n }\n }\n\n ctx.beginPath();\n ctx.fillStyle = vm.backgroundColor;\n ctx.strokeStyle = vm.borderColor;\n ctx.lineWidth = borderWidth;\n\n // Corner points, from bottom-left to bottom-right clockwise\n // | 1 2 |\n // | 0 3 |\n const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\n\n // Find first (starting) corner with fallback to 'bottom'\n const borders = ['bottom', 'left', 'top', 'right'];\n let startCorner = borders.indexOf(borderSkipped, 0);\n if (startCorner === -1) {\n startCorner = 0;\n }\n\n function cornerAt(index) {\n return corners[(startCorner + index) % 4];\n }\n\n // Draw rectangle from 'startCorner'\n let corner = cornerAt(0);\n ctx.moveTo(corner[0], corner[1]);\n\n for (let i = 1; i < 4; i += 1) {\n corner = cornerAt(i);\n let nextCornerId = i + 1;\n if (nextCornerId === 4) {\n nextCornerId = 0;\n }\n\n const width = corners[2][0] - corners[1][0];\n const height = corners[0][1] - corners[1][1];\n const x = corners[1][0];\n const y = corners[1][1];\n\n radius = cornerRadius;\n // Fix radius being too large\n if (radius > Math.abs(height) / 2) {\n radius = Math.floor(Math.abs(height) / 2);\n }\n if (radius > Math.abs(width) / 2) {\n radius = Math.floor(Math.abs(width) / 2);\n }\n\n if (height < 0) {\n // Negative values in a standard bar chart\n const xTl = x;\n const xTr = x + width;\n const yTl = y + height;\n const yTr = y + height;\n\n const xBl = x;\n const xBr = x + width;\n const yBl = y;\n const yBr = y;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else if (width < 0) {\n // Negative values in a horizontal bar chart\n const xTl = x + width;\n const xTr = x;\n const yTl = y;\n const yTr = y;\n\n const xBl = x + width;\n const xBr = x;\n const yBl = y + height;\n const yBr = y + height;\n\n // Draw\n ctx.moveTo(xBl + radius, yBl);\n ctx.lineTo(xBr - radius, yBr);\n ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n ctx.lineTo(xTr, yTr + radius);\n ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n ctx.lineTo(xTl + radius, yTl);\n ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n ctx.lineTo(xBl, yBl - radius);\n ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n } else {\n // Positive Value\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(\n x + width,\n y + height,\n x + width - radius,\n y + height\n );\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n }\n }\n\n ctx.fill();\n if (borderWidth) {\n ctx.stroke();\n }\n}\n\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\n draw\n});\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import type { FC } from 'react';\nimport createStyles from '@mui/styles/createStyles';\nimport makeStyles from '@mui/styles/makeStyles';\n\nconst useStyles = makeStyles(() => createStyles({\n '@global': {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0,\n },\n html: {\n '-webkit-font-smoothing': 'antialiased',\n '-moz-osx-font-smoothing': 'grayscale',\n height: '100%',\n width: '100%'\n },\n body: {\n height: 'auto',\n width: '100%',\n backgroundColor: \"#f4f6f8\",\n },\n '#root': {\n height: '100%',\n width: '100%'\n }\n }\n}));\n\nconst GlobalStyles: FC = () => {\n useStyles();\n\n return null;\n};\n\nexport default GlobalStyles;\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nconst useScrollReset = (): null => {\n const location = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [location.pathname]);\n\n return null;\n};\n\nexport default useScrollReset;\n","import useScrollReset from 'src/hooks/useScrollReset';\n\nconst ScrollReset = () => {\n useScrollReset();\n\n return null;\n};\n\nexport default ScrollReset;\n","import React, {\n useState,\n useEffect\n} from 'react';\nimport type { FC } from 'react';\nimport Cookies from 'js-cookie';\nimport { Box, Button, Link, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport type { theme } from 'src/theme';\nimport Portal from '@mui/material/Portal';\nimport { FormattedMessage } from 'react-intl';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.common.black,\n color: theme.palette.common.white,\n maxWidth: 600,\n position: 'fixed',\n bottom: 0,\n left: 0,\n margin: theme.spacing(3),\n padding: theme.spacing(3),\n outline: 'none',\n zIndex: 2000\n },\n action: {\n backgroundColor: theme.palette.common.white,\n color: theme.palette.common.black\n }\n}));\n\nconst CookiesNotification: FC = () => {\n const classes = useStyles();\n const [open, setOpen] = useState(false);\n\n const handleClose = () => {\n document.cookie = 'consent=true; SameSite=None; Secure';\n setOpen(false);\n };\n\n useEffect(() => {\n const consent: string | undefined = Cookies.get('consent');\n\n if (!consent) {\n setOpen(true);\n }\n }, []);\n\n if (!open) {\n return null;\n }\n\n return (\n \n
\n \n \n {' '}\n \n \n \n .\n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default CookiesNotification;\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Helmet } from 'react-helmet';\n\nconst GA_MEASUREMENT_ID: string | undefined = process.env.REACT_APP_GA_MEASUREMENT_ID;\n\nconst GoogleAnalytics: FC = () => {\n return (\n \n \n \n \n );\n};\n\nexport default GoogleAnalytics;\n","import { Color, colors, createTheme, ThemeOptions } from '@mui/material';\nimport { THEMES } from 'src/constants';\nimport { alpha } from \"@mui/material\";\n\nimport \"typeface-inter\";\nimport { ThemeContext } from '@emotion/react';\n\ntype CustomColor = { main: string }\n\n\ninterface Neutral {\n 100: string;\n 200: string;\n 300: string;\n 400: string;\n 500: string;\n 600: string;\n 700: string;\n 800: string;\n 900: string;\n}\n\ndeclare module '@mui/material/styles' {\n interface Palette {\n neutral?: Neutral;\n tertiary: Palette['primary']\n }\n\n interface PaletteOptions {\n neutral?: Neutral;\n tertiary?: PaletteOptions['primary']\n }\n}\n\ndeclare module '@mui/material/styles/createPalette' {\n interface TypeBackground {\n dark: string;\n }\n}\n\ndeclare module '@mui/material/Button' {\n interface ButtonPropsColorOverrides {\n tertiary: true;\n }\n}\n\nconst neutral = {\n 100: '#F3F4F6',\n 200: '#E5E7EB',\n 300: '#D1D5DB',\n 400: '#9CA3AF',\n 500: '#6B7280',\n 600: '#4B5563',\n 700: '#374151',\n 800: '#1F2937',\n 900: '#111827'\n};\n\nconst text = {\n primary: '#111827',\n secondary: '#6B7280',\n disabled: alpha('#374151', 0.48),\n};\n\nconst primary = {\n main: '#1CA58A',\n light: '#2FCFB0',\n dark: '#118D75',\n contrastText: '#FFFFFF'\n};\n\nconst secondary = {\n main: '#E73A78',\n light: '#FF71A4',\n dark: '#C7285E',\n contrastText: '#FFFFFF'\n};\n\nconst tertiary = {\n main: neutral[300],\n light: alpha('#374151', 0.12),\n dark: neutral[400],\n contrastText: text.primary\n};\n\nconst success = {\n main: '#14B8A6',\n light: '#43C6B7',\n dark: '#0E8074',\n contrastText: '#FFFFFF'\n};\n\nconst info = {\n main: '#64B6F7',\n light: '#83C4F8',\n dark: '#467FAC',\n contrastText: '#FFFFFF'\n};\n\nconst warning = {\n main: '#FFB020',\n light: '#FFBF4C',\n dark: '#845B10',\n contrastText: '#FFFFFF'\n};\n\nconst error = {\n main: '#D14343',\n light: '#DA6868',\n dark: '#922E2E',\n contrastText: '#FFFFFF'\n};\n\nconst action = {\n active: '#6B7280',\n hover: alpha('#374151', 0.04),\n};\n\nconst grey = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#D5D5D5',\n A200: '#AAAAAA',\n A400: '#616161',\n A700: '#303030',\n}\n\nexport const theme = createTheme({\n breakpoints: {\n values: {\n xs: 300,\n sm: 600,\n md: 1000,\n lg: 1200,\n xl: 1920\n }\n },\n components: {\n MuiButton: {\n defaultProps: {\n disableElevation: true\n },\n styleOverrides: {\n root: {\n textTransform: 'none',\n '&.MuiButton-containedTertiary': {\n color: text.primary\n },\n '&.MuiButton-textTertiary': {\n color: text.primary\n },\n '&.MuiButton-outlinedTertiary': {\n color: text.primary,\n border: `1px solid ${grey[400]}`,\n '&:hover': {\n backgroundColor: action.hover,\n color: text.primary,\n },\n }\n },\n sizeSmall: {\n height: '34px'\n },\n sizeMedium: {\n height: '40px'\n },\n sizeLarge: {\n height: '48px'\n },\n textSizeSmall: {\n height: '34px'\n },\n textSizeMedium: {\n height: '40px'\n },\n textSizeLarge: {\n height: '48px'\n }\n },\n },\n MuiButtonBase: {\n defaultProps: {\n disableRipple: true\n },\n styleOverrides: {\n root: {\n color: text.primary,\n\n },\n }\n },\n MuiTab: {\n styleOverrides: {\n root: {\n textTransform: 'none'\n }\n }\n },\n MuiCard: {\n styleOverrides: {\n root: {\n \"@media print\": {\n border: \"1px solid #C8C8D3\",\n borderRadius: \"4px\",\n boxShadow: \"none\"\n }\n }\n\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: '32px 24px',\n '&:last-child': {\n paddingBottom: '32px'\n }\n }\n }\n },\n MuiCardHeader: {\n defaultProps: {\n titleTypographyProps: {\n variant: 'h6'\n },\n subheaderTypographyProps: {\n variant: 'body2'\n }\n },\n styleOverrides: {\n root: {\n padding: '32px 24px'\n }\n }\n },\n MuiCssBaseline: {\n styleOverrides: {\n '*': {\n boxSizing: 'border-box',\n margin: 0,\n padding: 0\n },\n html: {\n MozOsxFontSmoothing: 'grayscale',\n WebkitFontSmoothing: 'antialiased',\n display: 'flex',\n flexDirection: 'column',\n minHeight: '100%',\n width: '100%'\n },\n body: {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n minHeight: '100%',\n width: '100%'\n },\n '#__next': {\n display: 'flex',\n flex: '1 1 auto',\n flexDirection: 'column',\n height: '100%',\n width: '100%'\n }\n }\n },\n MuiOutlinedInput: {\n styleOverrides: {\n notchedOutline: {\n borderColor: '#E6E8F0'\n },\n }\n },\n MuiInputLabel: {\n styleOverrides: {\n root: {\n color: text.secondary\n },\n }\n },\n MuiTableHead: {\n styleOverrides: {\n root: {\n backgroundColor: '#F3F4F6',\n '.MuiTableCell-root': {\n color: '#374151'\n },\n borderBottom: 'none',\n '& .MuiTableCell-root': {\n borderBottom: 'none',\n fontSize: '12px',\n fontWeight: 600,\n lineHeight: 1,\n letterSpacing: 0.5,\n textTransform: 'uppercase'\n },\n '& .MuiTableCell-paddingCheckbox': {\n paddingTop: 4,\n paddingBottom: 4\n }\n }\n }\n },\n MuiChip: {\n styleOverrides: {\n root: {\n \"&.MuiChip-colorWarning\": {\n backgroundColor: \"#FFE4BD\",\n color: warning.dark\n },\n \"&.MuiChip-colorSuccess\": {\n backgroundColor: \"#E7F8F6\",\n color: success.dark,\n },\n \"&.MuiChip-colorError\": {\n backgroundColor: \"#F6DADA\", \n color: error.dark\n }\n }\n }\n }\n },\n palette: {\n action,\n background: {\n default: colors.common.white,\n dark: '#f4f6f8',\n paper: colors.common.white\n },\n error,\n info,\n primary,\n secondary,\n success,\n text,\n warning,\n grey,\n neutral,\n tertiary,\n },\n shape: {\n borderRadius: 8\n },\n typography: {\n button: {\n fontWeight: 440,\n fontSize: '0.875rem',\n lineHeight: 1,\n letterSpacing: '1px'\n },\n fontFamily: \"Inter\",\n h1: {\n fontWeight: 600,\n fontSize: 42,\n letterSpacing: '-1.5px',\n lineHeight: '51px',\n color: 'palette.text.primary'\n },\n h2: {\n fontWeight: 600,\n fontSize: 32,\n letterSpacing: '-0.5px',\n lineHeight: '38px',\n color: 'textPrimary'\n },\n h3: {\n fontWeight: 600,\n fontSize: 24,\n },\n h4: {\n fontWeight: 600,\n fontSize: 19,\n letterSpacing: '0.25px',\n lineHeight: '26px',\n color: 'textPrimary'\n },\n h5: {\n fontWeight: 600,\n fontSize: 16,\n lineHeight: '22px',\n color: 'textPrimary'\n },\n h6: {\n fontWeight: 600,\n fontSize: 14,\n letterSpacing: '0.15px',\n lineHeight: '20px',\n color: 'textPrimary'\n },\n subtitle1: {\n fontSize: 16,\n fontWeight: 400,\n letterSpacing: '0.15px',\n lineHeight: '28px',\n color: 'textPrimary'\n },\n subtitle2: {\n fontSize: 14,\n fontWeight: 600,\n letterSpacing: '0.1px',\n lineHeight: '21px',\n color: 'textPrimary'\n },\n body1: {\n fontSize: 16,\n fontWeight: 400,\n letterSpacing: '0.15px',\n lineHeight: '24px',\n color: 'textSecondary'\n },\n body2: {\n fontSize: 14,\n fontWeight: 400,\n letterSpacing: '0.15px',\n lineHeight: '20px',\n color: 'textSecondary'\n },\n caption: {\n fontSize: 12,\n fontWeight: 400,\n letterSpacing: '0.4px',\n lineHeight: 'auto',\n color: 'textPrimary'\n },\n overline: {\n fontSize: 12,\n fontWeight: 400,\n letterSpacing: '1px',\n lineHeight: '31px',\n color: 'textPrimary'\n },\n }\n});\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { Redirect } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport useAuth from '../hooks/useAuth';\nimport JwtDecode from 'jwt-decode';\n\ninterface AuthGuardProps {\n children?: ReactNode;\n}\n\nconst AuthGuard: FC = ({ children }) => {\n\n const { logout } = useAuth();\n\n let accessToken: string = localStorage.getItem('accessToken');\n\n if (accessToken != null) {\n const decoded: any = JwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n if (decoded.exp <= currentTime) {\n logout();\n return ;\n }\n }\n else {\n logout();\n return ;\n }\n\n return (\n <>\n {children}\n \n );\n};\n\nAuthGuard.propTypes = {\n children: PropTypes.node\n};\n\nexport default AuthGuard;\n","import React, { useEffect } from 'react';\nimport type { FC } from 'react';\nimport NProgress from 'nprogress';\nimport { Box, LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n minHeight: '100%',\n padding: theme.spacing(3)\n }\n}));\n\nconst LoadingScreen: FC = () => {\n const classes = useStyles();\n\n useEffect(() => {\n NProgress.start();\n\n return () => {\n NProgress.done();\n };\n }, []);\n\n return (\n
\n \n \n \n
\n );\n};\n\nexport default LoadingScreen;\n","import React, { useEffect, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Avatar, Button, Chip, Collapse, ListItem, SvgIcon, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\nimport {\n User as UserIcon\n} from 'react-feather';\nimport { WebSocketProvider } from 'src/contexts/WebSocketSFUContext';\nimport useWebSocket from 'src/hooks/useWebSocket';\n\n\ninterface NavItemProps {\n children?: ReactNode;\n className?: string;\n depth: number;\n href?: string;\n icon?: any;\n info?: any;\n open?: boolean;\n title: string;\n image?: string;\n onClick?: any;\n}\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.primary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.primary.main\n }\n },\n avatar: {\n height: '1.5rem',\n width: '1.5rem',\n marginRight: theme.spacing(1)\n },\n vrProgramChip: {\n backgroundColor: theme.palette.action.active,\n color: theme.palette.common.white,\n padding: theme.spacing(0.5)\n }\n}));\n\nconst NavItem: FC = ({\n children,\n className,\n depth,\n href,\n icon: Icon,\n info: Info,\n open: openProp,\n title,\n image,\n onClick,\n ...rest\n}) => {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n const {users} = useWebSocket();\n\n const handleToggle = (): void => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const reloadPageIfNeeded = (href: string): void => {\n if (href === window.location.pathname) {\n window.location.reload();\n }\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n {image &&\n \n }\n \n {title}\n \n {open ? : }\n \n \n {children}\n \n \n );\n }\n\n return (\n \n reloadPageIfNeeded(href)}\n >\n {Icon && (\n \n )}\n {image &&\n \n }\n \n {title}\n \n {Info && }\n {title.includes('VR') && users.length > 0 &&\n \n \n \n }\n size='small'\n />\n }\n \n \n );\n};\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.elementType,\n info: PropTypes.elementType,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","import React, { useEffect, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { useLocation, matchPath } from 'react-router-dom';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport { Box, Drawer, Hidden, List, ListSubheader, Theme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Clipboard as ClipboardIcon,\n Users as UsersIcon,\n List as ListIcon,\n Video as VideoIcon,\n Box as BoxIcon,\n ChevronDown as ChevronDownIcon,\n ChevronUp as ChevronUpIcon,\n CheckCircle as CheckCircleIcon,\n Home as HomeIcon,\n FileText as FileTextIcon,\n CheckSquare as CheckSquareIcon,\n Heart as HeartIcon,\n} from 'react-feather';\nimport NavItem from './NavItem';\nimport axios from 'axios';\nimport { getOrganizationTag, getWSConfig } from 'src/views/utils/Utils';\nimport { numberOfSubcriptionsInLeftMenu } from 'src/views/utils/UtilsConstants';\nimport { log, logError } from 'src/views/utils/logger';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\ninterface NavBarProps {\n onMobileClose: () => void;\n openMobile: boolean;\n displace?: boolean;\n}\n\ninterface Item {\n href?: string;\n icon?: ReactNode;\n info?: ReactNode;\n items?: Item[];\n title: string;\n image?: string;\n}\n\ninterface Section {\n items: Item[];\n subheader: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)',\n zIndex: theme.zIndex.appBar - 1\n },\n desktopDrawerWithoutTopBar: {\n width: 256,\n top: 0,\n height: 'calc(100% - 0px)',\n zIndex: theme.zIndex.appBar - 1\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n },\n menuItem: {\n marginBottom: '0.5rem',\n '& a': {\n paddingLeft: '0rem',\n '& span': {\n '& span': {\n marginLeft: '1.5rem',\n }\n }\n }\n },\n menuItemSeeMoreSeeLess: {\n marginBottom: '0.5rem',\n '& a': {\n paddingLeft: '0rem',\n '& span': {\n '& span': {\n marginLeft: '1.5rem',\n color: theme.palette.text.secondary,\n },\n '& svg': {\n color: theme.palette.text.secondary + \"!important\",\n },\n }\n }\n },\n invisible: {\n display: 'none'\n },\n leftPadding: {\n paddingLeft: '0.5rem'\n }\n}));\n\nconst NavBar: FC = ({ onMobileClose, openMobile, displace }) => {\n const classes = useStyles();\n const intl = useIntl();\n\n const sections: Section[] = [\n {\n subheader: '',\n items: [\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.homepage' }),\n icon: HomeIcon,\n href: '/app/homepage',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.prescriptions' }),\n icon: ClipboardIcon,\n href: '/app/prescriptions',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.models_3D' }),\n icon: BoxIcon,\n href: '/app/3D',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.etrajectories' }),\n icon: FileTextIcon,\n href: '/app/trajectories',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.econsents' }),\n icon: CheckCircleIcon,\n href: '/app/econsents',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.health_navigator' }),\n icon: HeartIcon,\n href: '/app/healthNavigator',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.patients' }),\n icon: UsersIcon,\n href: '/app/patients',\n },\n {\n title: getOrganizationTag('layouts.DashboardLayout.NavBar.index.channels'),\n icon: ListIcon,\n href: '/app/channels',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.mycontent' }),\n icon: VideoIcon,\n href: '/app/myContent',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.questionnaires' }),\n icon: CheckSquareIcon,\n href: '/app/questionnaires',\n },\n {\n title: intl.formatMessage({ id: 'layouts.DashboardLayout.NavBar.index.vrprograms' }),\n icon: ClipboardIcon,\n href: '/app/vrprograms',\n },\n ]\n }\n ];\n\n\n const location = useLocation();\n const [subscriptionsInLeftMenu, setSubscriptionsInLeftMenu] = useState([]);\n const [seeAllMySubscriptions, setSeeAllMySubscriptions] = useState(false);\n const config = getWSConfig();\n\n const seeLess = (): void => {\n setSeeAllMySubscriptions(false);\n };\n\n const seeMore = (): void => {\n setSeeAllMySubscriptions(true);\n };\n\n function renderNavItems(\n items: Item[],\n pathname: string,\n maximumElementsToShow: number,\n depth: number = 0,\n classes) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes(acc, pathname, item, depth, maximumElementsToShow, classes),\n []\n )}\n \n );\n }\n\n function reduceChildRoutes(\n acc: any[],\n pathname: string,\n item: Item,\n depth: number,\n maximumElementsToShow: number,\n classes) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems(\n item.items,\n pathname,\n maximumElementsToShow,\n depth + 1,\n classes)}\n \n );\n } else {\n const lengthArrayAcc = acc.length;\n if (lengthArrayAcc < maximumElementsToShow) {\n acc.push(\n \n );\n }\n if (lengthArrayAcc === maximumElementsToShow) {\n acc.push(\n \n );\n\n acc.push(\n \n );\n\n acc.push(\n \n );\n }\n if (lengthArrayAcc > maximumElementsToShow) {\n acc.pop();\n acc.push(\n \n );\n acc.push(\n \n );\n }\n }\n\n return acc;\n }\n\n const getMyChannels = (): void => {\n axios.get(process.env.REACT_APP_SERVER_URL + '/channel/1.0/get/my/channels', config)\n .then(function (response) {\n if (response && response.data) {\n if (process.env.REACT_APP_BUILD_ENV === 'local') {\n console.log(\"receiving my channels\" + response.data.toString());\n }\n let channel_list = response.data;\n let index = channel_list.findIndex(function (channel) {\n return channel.channel_id === 0;\n })\n if (index !== -1) channel_list.splice(index, 1);\n\n let itemsToAppearInLeftMenu: Item[] = [];\n channel_list.map(channel => itemsToAppearInLeftMenu.push({\n title: channel.name, image: channel.logo,\n href: '/app/channel/' + channel.channelViewId\n }));\n setSubscriptionsInLeftMenu(itemsToAppearInLeftMenu);\n }\n })\n .catch(function (error) {\n if (process.env.REACT_APP_BUILD_ENV === 'local' && error && error.response && error.response.data) {\n console.error(error.response.data)\n }\n })\n }\n\n useEffect(() => {\n getMyChannels();\n }, []);// eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const content = (\n \n \n \n {sections.map((section) => (\n \n {section.subheader}\n \n )}\n >\n {renderNavItems(\n section.items,\n location.pathname,\n 100,\n 0,\n classes)\n }\n \n ))}\n \n \n \n )}\n >\n {renderNavItems(\n subscriptionsInLeftMenu,\n location.pathname,\n numberOfSubcriptionsInLeftMenu,\n 0,\n classes)\n }\n \n \n \n \n );\n\n return <>\n \n \n {content}\n \n \n \n {displace &&\n \n {content}\n\n \n }:\n {!displace &&\n \n {content}\n\n \n }\n \n ;\n};\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default NavBar;\n","import React, {\n useRef,\n useState\n} from 'react';\nimport type { FC } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport Avatar from 'react-avatar';\nimport { Box, ButtonBase, Hidden, Menu, MenuItem, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport type { ProfessionalMedic } from 'src/types/professionalMedic';\nimport useAuth from 'src/hooks/useAuth';\nimport { FormattedMessage } from 'react-intl';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nconst Account: FC = () => {\n const classes = useStyles();\n const history = useHistory();\n const ref = useRef(null);\n const { logout } = useAuth();\n const { enqueueSnackbar } = useSnackbar();\n const [isOpen, setOpen] = useState(false);\n const professionalMedic: ProfessionalMedic = JSON.parse(localStorage.getItem('user'));\n const alternativeLogout = localStorage.getItem('alternativeLogout');\n\n const disableCursorInteractionStyle = {\n cursor: localStorage.getItem('alternativeLogout') === 'true' ? 'default' : 'pointer'\n };\n\n const handleOpen = (): void => {\n if (alternativeLogout !== 'true') {\n setOpen(true);\n }\n };\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleLogout = async (): Promise => {\n try {\n handleClose();\n logout();\n history.push('/login/' + professionalMedic.organization_id);\n } catch (err) {\n console.error(err);\n enqueueSnackbar(, {\n variant: 'error'\n });\n }\n };\n\n return <>\n \n \n \n \n {professionalMedic.name} {\" \"} {professionalMedic.last_name}\n \n \n \n \n \n \n \n \n ;\n}\n\nexport default Account;\n","import React, {\n useState,\n useRef\n} from 'react';\nimport type { FC } from 'react';\nimport {\n Badge,\n Box,\n Button,\n IconButton,\n Popover,\n SvgIcon,\n TextField,\n Tooltip,\n Typography,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { Settings as SettingsIcon } from 'react-feather';\nimport useSettings from 'src/hooks/useSettings';\nimport { FormattedMessage } from 'react-intl';\nimport { Route } from 'react-router-dom'\n\n\nconst useStyles = makeStyles((theme) => ({\n popover: {\n width: 320,\n padding: theme.spacing(2)\n }\n}));\n\nconst Settings: FC = () => {\n const classes = useStyles();\n const ref = useRef(null);\n const { settings, saveSettings } = useSettings();\n const [isOpen, setOpen] = useState(false);\n const [values, setValues] = useState({\n direction: settings.direction,\n responsiveFontSizes: settings.responsiveFontSizes,\n theme: settings.theme\n });\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleChange = (field, value): void => {\n setValues({\n ...values,\n [field]: value\n });\n };\n\n const handleSave = (): void => {\n saveSettings(values);\n setOpen(false);\n };\n\n return <>\n }>\n \n (\n { history.push('/app/account') }}\n ref={ref}\n size=\"large\">\n \n \n \n \n )} />\n \n \n ;\n}\n\nexport default Settings;","import React, {\n useRef\n} from 'react';\nimport type { FC } from 'react';\nimport {\n Badge,\n IconButton,\n SvgIcon,\n Tooltip,\n} from '@mui/material';\nimport {\n LogOut as LogOutIcon\n} from 'react-feather';\nimport { FormattedMessage } from 'react-intl';\nimport { Route } from 'react-router-dom'\n\nconst AlternativeLogout: FC = () => {\n const ref = useRef(null);\n\n return <>\n }>\n \n (\n { history.push('/logout/sescam/') }}\n ref={ref}\n size=\"large\">\n \n \n \n \n )} />\n \n \n ;\n}\n\nexport default AlternativeLogout;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { AppBar, Box, Hidden, IconButton, Toolbar, SvgIcon } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { Menu as MenuIcon } from 'react-feather';\nimport Account from './Account';\nimport Settings from './Settings';\nimport { ProfessionalMedic } from 'src/types/professionalMedic';\nimport axios from 'axios';\nimport AlternativeLogout from './AlternativeLogout';\nimport Logo from 'src/components/Logo';\n\ninterface TopBarProps {\n className?: string;\n onMobileNavOpen?: () => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.appBar,\n backgroundColor: '#ffffff'\n },\n toolbar: {\n minHeight: 64\n }\n}));\n\nconst TopBar: FC = ({\n className,\n onMobileNavOpen,\n ...rest\n}) => {\n const classes = useStyles();\n const professionalMedic: ProfessionalMedic = JSON.parse(localStorage.getItem('user'));\n const [organizationLogo, setOrganizationLogo] = useState(window.localStorage.getItem('organization_logo'));\n const [loading, setLoading] = useState(true);\n const alternativeLogout = localStorage.getItem('alternativeLogout');\n\n const storeOrganizationLogo = ((logo: string) => {\n setOrganizationLogo(logo);\n window.localStorage.setItem('organization_logo', logo);\n })\n\n useEffect(() => {\n if (!organizationLogo) {\n axios.get(process.env.REACT_APP_SERVER_URL + '/professional_medic/1.0/get/organization/logo/by/professional/medic')\n .then(function (response) {\n storeOrganizationLogo(response.data)\n setLoading(false)\n })\n .catch(function (error) {\n storeOrganizationLogo('https://logos-canals.s3.eu-west-1.amazonaws.com/Logo+Digimevo.png')\n setLoading(false)\n })\n }\n else {\n setLoading(false);\n }\n }, []);\n\n if (loading === false) {\n return (\n \n \n \n \n \n \n \n \n \n \n {alternativeLogout === 'true' ? (\n \n \n \n ) : (\n \n \n \n \n \n\n )}\n \n \n {alternativeLogout === 'true' ? : }\n \n \n \n \n \n );\n }\n else {\n return null;\n }\n\n};\n\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nTopBar.defaultProps = {\n onMobileNavOpen: () => { }\n};\n\nexport default TopBar;\n","import React, { useEffect, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\nimport { WebSocketProvider } from 'src/contexts/WebSocketSFUContext';\n\ninterface DashboardLayoutProps {\n children?: ReactNode\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n wrapperWhitoutNavBar: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nconst DashboardLayout: FC = ({ children }) => {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n const showNavBar = localStorage.getItem('showNavBar') === 'true';\n const leftPaddingStyle = showNavBar ? classes.wrapper : classes.wrapperWhitoutNavBar;\n console.log(!localStorage.getItem('showNavBar'));\n return (\n
\n\n {!localStorage.getItem('showTopBar') || localStorage.getItem('showTopBar') === \"true\" && (\n setMobileNavOpen(true)} />\n )}\n\n {!localStorage.getItem('showNavBar') || localStorage.getItem('showNavBar') === \"true\" ? (\n < WebSocketProvider >\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n displace={localStorage.getItem('showTopBar') === 'false'}\n />\n
\n
\n
\n {children}\n
\n
\n
\n \n ) : (\n \n
\n
\n
\n {children}\n
\n
\n
\n
\n )\n }\n\n
\n );\n};\n\nDashboardLayout.propTypes = {\n children: PropTypes.node\n};\n\nexport default DashboardLayout;\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { AppBar, Box, Button, Divider, Toolbar, Hidden, Typography, Link } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { APP_VERSION } from 'src/constants';\nimport Logo from 'src/components/Logo';\n\ninterface TopBarProps {\n className?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default\n },\n toolbar: {\n height: 64\n },\n logo: {\n marginRight: theme.spacing(2)\n },\n link: {\n fontWeight: theme.typography.fontWeightMedium,\n '& + &': {\n marginLeft: theme.spacing(2)\n }\n },\n divider: {\n width: 1,\n height: 32,\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n }\n}));\n\nconst TopBar: FC = ({ className, ...rest }) => {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n \n \n Version\n {' '}\n {APP_VERSION}\n \n \n \n \n Dashboard\n \n \n Documentation\n \n \n \n Get the kit\n \n \n \n );\n};\n\nTopBar.propTypes = {\n className: PropTypes.string\n};\n\nexport default TopBar;\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport makeStyles from '@mui/styles/makeStyles';\nimport TopBar from './TopBar';\n\ninterface MainLayoutProps {\n children?: ReactNode;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n paddingTop: 64\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nconst MainLayout: FC = ({ children }) => {\n const classes = useStyles();\n\n return (\n
\n \n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n};\n\nMainLayout.propTypes = {\n children: PropTypes.node\n};\n\nexport default MainLayout;\n","import React, { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Avatar, Button, Collapse, ListItem } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ExpandLessIcon from '@mui/icons-material/ExpandLess';\n\n\ninterface NavItemProps {\n children?: ReactNode;\n className?: string;\n depth: number;\n href?: string;\n icon?: any;\n info?: any;\n open?: boolean;\n title: string;\n image?: string;\n onClick?: any;\n}\n\nconst useStyles = makeStyles((theme) => ({\n item: {\n display: 'block',\n paddingTop: 0,\n paddingBottom: 0\n },\n itemLeaf: {\n display: 'flex',\n paddingTop: 0,\n paddingBottom: 0\n },\n button: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%'\n },\n buttonLeaf: {\n color: theme.palette.text.secondary,\n padding: '10px 8px',\n justifyContent: 'flex-start',\n textTransform: 'none',\n letterSpacing: 0,\n width: '100%',\n fontWeight: theme.typography.fontWeightRegular,\n '&.depth-0': {\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n }\n }\n },\n icon: {\n display: 'flex',\n alignItems: 'center',\n marginRight: theme.spacing(1)\n },\n title: {\n marginRight: 'auto'\n },\n active: {\n color: theme.palette.primary.main,\n '& $title': {\n fontWeight: theme.typography.fontWeightMedium\n },\n '& $icon': {\n color: theme.palette.primary.main\n }\n },\n avatar: {\n height: '1.5rem',\n width: '1.5rem',\n marginRight: theme.spacing(1)\n },\n}));\n\nconst NavItem: FC = ({\n children,\n className,\n depth,\n href,\n icon: Icon,\n info: Info,\n open: openProp,\n title,\n image,\n onClick,\n ...rest\n}) => {\n const classes = useStyles();\n const [open, setOpen] = useState(openProp);\n\n const handleToggle = (): void => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const reloadPageIfNeeded = (href: string): void => {\n if (href === window.location.pathname) {\n window.location.reload();\n }\n };\n\n let paddingLeft = 8;\n\n if (depth > 0) {\n paddingLeft = 32 + 8 * depth;\n }\n\n const style = { paddingLeft };\n\n if (children) {\n return (\n \n \n {Icon && (\n \n )}\n {image &&\n \n }\n \n {title}\n \n {open ? : }\n \n \n {children}\n \n \n );\n }\n\n return (\n \n reloadPageIfNeeded(href)}\n >\n {Icon && (\n \n )}\n {image &&\n \n }\n \n {title}\n \n {Info && }\n \n \n );\n};\n\nNavItem.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n depth: PropTypes.number.isRequired,\n href: PropTypes.string,\n icon: PropTypes.elementType,\n info: PropTypes.elementType,\n open: PropTypes.bool,\n title: PropTypes.string.isRequired\n};\n\nNavItem.defaultProps = {\n open: false\n};\n\nexport default NavItem;\n","/* eslint-disable no-use-before-define */\n/* eslint-disable react/prop-types */\nimport React, { useEffect, useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport { useLocation, matchPath } from 'react-router-dom';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport { Box, Drawer, Hidden, List, ListSubheader, Theme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Clipboard as ClipboardIcon,\n Users as UsersIcon,\n List as ListIcon,\n Video as VideoIcon,\n Box as BoxIcon,\n ChevronDown as ChevronDownIcon,\n ChevronUp as ChevronUpIcon,\n CheckCircle as CheckCircleIcon,\n Home as HomeIcon,\n FileText as FileTextIcon,\n} from 'react-feather';\nimport NavItem from './NavItem';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { numberOfSubcriptionsInLeftMenu } from 'src/views/utils/UtilsConstants';\n\ninterface NavBarProps {\n onMobileClose: () => void;\n openMobile: boolean;\n}\n\ninterface Item {\n href?: string;\n icon?: ReactNode;\n info?: ReactNode;\n items?: Item[];\n title: string;\n image?: string;\n}\n\ninterface Section {\n items: Item[];\n subheader: string;\n}\n\n\nconst sections: Section[] = [\n {\n subheader: '',\n items: [\n {\n title: 'Prescripciones',\n icon: ClipboardIcon,\n href: '/organization/prescriptions/' + localStorage.getItem('accessToken'),\n },\n {\n title: 'Pacientes',\n icon: UsersIcon,\n href: '/organization/patients',\n },\n\n ]\n }\n];\n\nconst useStyles = makeStyles((theme) => ({\n mobileDrawer: {\n width: 256\n },\n desktopDrawer: {\n width: 256,\n top: 64,\n height: 'calc(100% - 64px)'\n },\n avatar: {\n cursor: 'pointer',\n width: 64,\n height: 64\n },\n menuItem: {\n marginBottom: '0.5rem',\n '& a': {\n paddingLeft: '0rem',\n '& span': {\n '& span': {\n marginLeft: '1.5rem',\n }\n }\n }\n },\n menuItemSeeMoreSeeLess: {\n marginBottom: '0.5rem',\n '& a': {\n paddingLeft: '0rem',\n '& span': {\n '& span': {\n marginLeft: '1.5rem',\n color: theme.palette.text.secondary,\n },\n '& svg': {\n color: theme.palette.text.secondary + \"!important\",\n },\n }\n }\n },\n invisible: {\n display: 'none'\n },\n leftPadding: {\n paddingLeft: '0.5rem'\n }\n}));\n\nconst NavBar: FC = ({ onMobileClose, openMobile }) => {\n const classes = useStyles();\n const location = useLocation();\n const [subscriptionsInLeftMenu, setSubscriptionsInLeftMenu] = useState([]);\n const [seeAllMySubscriptions, setSeeAllMySubscriptions] = useState(false);\n const config = getWSConfig();\n\n const seeLess = (): void => {\n setSeeAllMySubscriptions(false);\n };\n\n const seeMore = (): void => {\n setSeeAllMySubscriptions(true);\n };\n\n function renderNavItems(\n items: Item[],\n pathname: string,\n maximumElementsToShow: number,\n depth: number = 0,\n classes) {\n return (\n \n {items.reduce(\n (acc, item) => reduceChildRoutes(acc, pathname, item, depth, maximumElementsToShow, classes),\n []\n )}\n \n );\n }\n\n function reduceChildRoutes(\n acc: any[],\n pathname: string,\n item: Item,\n depth: number,\n maximumElementsToShow: number,\n classes) {\n const key = item.title + depth;\n\n if (item.items) {\n const open = matchPath(pathname, {\n path: item.href,\n exact: false\n });\n\n acc.push(\n \n {renderNavItems(\n item.items,\n pathname,\n maximumElementsToShow,\n depth + 1,\n classes)}\n \n );\n } else {\n const lengthArrayAcc = acc.length;\n if (lengthArrayAcc < maximumElementsToShow) {\n acc.push(\n \n );\n }\n if (lengthArrayAcc === maximumElementsToShow) {\n acc.push(\n \n );\n\n acc.push(\n \n );\n\n acc.push(\n \n );\n }\n if (lengthArrayAcc > maximumElementsToShow) {\n acc.pop();\n acc.push(\n \n );\n acc.push(\n \n );\n }\n }\n\n return acc;\n }\n\n const getMyChannels = (): void => {\n axios.get(process.env.REACT_APP_SERVER_URL + '/channel/1.0/get/my/channels', config)\n .then(function (response) {\n if (response && response.data) {\n if (process.env.REACT_APP_BUILD_ENV === 'local') {\n console.log(\"receiving my channels\" + response.data.toString());\n\n }\n\n let channel_list = response.data;\n let index = channel_list.findIndex(function (channel) {\n return channel.channel_id === 0;\n })\n if (index !== -1) channel_list.splice(index, 1);\n\n let itemsToAppearInLeftMenu: Item[] = [];\n response.data.map(channel => itemsToAppearInLeftMenu.push({\n title: channel.name, image: channel.logo,\n href: '/organization/channel/' + channel.channelViewId\n }));\n setSubscriptionsInLeftMenu(itemsToAppearInLeftMenu);\n }\n })\n .catch(function (error) {\n if (process.env.REACT_APP_BUILD_ENV === 'local' && error && error.response && error.response.data) {\n console.error(error.response.data)\n }\n })\n }\n\n useEffect(() => {\n getMyChannels();\n }, []);// eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n if (openMobile && onMobileClose) {\n onMobileClose();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [location.pathname]);\n\n const content = (\n \n \n \n {sections.map((section) => (\n \n {section.subheader}\n \n )}\n >\n {renderNavItems(\n section.items,\n location.pathname,\n 100,\n 0,\n classes)\n }\n \n ))}\n \n Mis subscripciones\n \n )}\n >\n {renderNavItems(\n subscriptionsInLeftMenu,\n location.pathname,\n numberOfSubcriptionsInLeftMenu,\n 0,\n classes)\n }\n \n \n \n \n );\n\n return <>\n \n \n {content}\n \n \n \n \n {content}\n \n \n ;\n};\n\nNavBar.propTypes = {\n onMobileClose: PropTypes.func,\n openMobile: PropTypes.bool\n};\n\nexport default NavBar;\n","import React, {\n useRef,\n useState\n} from 'react';\nimport type { FC } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { useSnackbar } from 'notistack';\nimport Avatar from 'react-avatar';\nimport { Box, ButtonBase, Hidden, Menu, MenuItem, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport type { ProfessionalMedic } from 'src/types/professionalMedic';\nimport useAuth from 'src/hooks/useAuth';\n\nconst useStyles = makeStyles((theme) => ({\n avatar: {\n height: 32,\n width: 32,\n marginRight: theme.spacing(1)\n },\n popover: {\n width: 200\n }\n}));\n\nconst Account: FC = () => {\n const classes = useStyles();\n const professionalMedic: ProfessionalMedic = JSON.parse(localStorage.getItem('user'));\n\n\n let name = \"\";\n let last_name = \"\";\n\n if (professionalMedic) {\n name = professionalMedic.name;\n }\n if (professionalMedic) {\n last_name = professionalMedic.last_name;\n }\n\n if (name) {\n return <>\n \n \n \n \n {name + \" \" + last_name}\n \n \n \n ;\n }\n else {\n return null;\n }\n}\n\nexport default Account;\n","import React from 'react';\nimport type { FC } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { AppBar, Box, Hidden, IconButton, Toolbar, SvgIcon } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { Menu as MenuIcon } from 'react-feather';\nimport Logo from 'src/components/Logo';\nimport { THEMES } from 'src/constants';\n\nimport Account from './Account';\nimport Settings from './Settings';\n\ninterface TopBarProps {\n className?: string;\n onMobileNavOpen?: () => void;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n zIndex: theme.zIndex.drawer + 100,\n backgroundColor: '#ffffff',\n },\n toolbar: {\n minHeight: 64\n }\n}));\n\nconst TopBar: FC = ({\n className,\n onMobileNavOpen,\n ...rest\n}) => {\n const classes = useStyles();\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\nTopBar.propTypes = {\n className: PropTypes.string,\n onMobileNavOpen: PropTypes.func\n};\n\nTopBar.defaultProps = {\n onMobileNavOpen: () => { }\n};\n\nexport default TopBar;\n","import React, { useState } from 'react';\nimport type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport NavBar from './NavBar';\nimport TopBar from './TopBar';\n\ninterface DashboardLayoutProps {\n children?: ReactNode\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n display: 'flex',\n height: '100%',\n overflow: 'hidden',\n width: '100%'\n },\n wrapper: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden',\n [theme.breakpoints.up('lg')]: {\n paddingLeft: 256\n }\n },\n contentContainer: {\n display: 'flex',\n flex: '1 1 auto',\n overflow: 'hidden'\n },\n content: {\n flex: '1 1 auto',\n height: '100%',\n overflow: 'auto'\n }\n}));\n\nconst IframeLayout: FC = ({ children }) => {\n const classes = useStyles();\n const [isMobileNavOpen, setMobileNavOpen] = useState(false);\n\n if (localStorage.getItem('showNavBar') && localStorage.getItem('showNavBar') === \"false\") {\n return null;\n }\n else {\n return (\n
\n { setMobileNavOpen(true)} />}\n setMobileNavOpen(false)}\n openMobile={isMobileNavOpen}\n />\n
\n
\n
\n {children}\n
\n
\n
\n
\n );\n };\n}\n\n\nIframeLayout.propTypes = {\n children: PropTypes.node\n};\n\nexport default IframeLayout;\n","import {\n Fragment,\n lazy,\n Suspense\n} from 'react';\nimport {\n Redirect,\n Route,\n Switch\n} from 'react-router-dom';\nimport AuthGuard from 'src/components/AuthGuard';\nimport LoadingScreen from 'src/components/LoadingScreen';\nimport DashboardLayout from 'src/layouts/DashboardLayout';\nimport MainLayout from 'src/layouts/MainLayout';\nimport IframeLayout from './layouts/IframeLayout';\n\ntype Routes = {\n exact?: boolean;\n path?: string | string[];\n guard?: any;\n layout?: any;\n component?: any;\n routes?: Routes;\n}[];\n\nexport const renderRoutes = (routes: Routes = []): JSX.Element => (\n }>\n \n {routes.map((route, i) => {\n const Guard = route.guard || Fragment;\n const Layout = route.layout || Fragment;\n const Component = route.component;\n\n return (\n (\n \n \n {route.routes\n ? renderRoutes(route.routes)\n : }\n \n \n )}\n />\n );\n })}\n \n \n);\n\nconst routes: Routes = [\n {\n exact: true,\n path: '/404',\n component: lazy(() => import('src/views/errors/NotFoundView'))\n },\n {\n exact: true,\n path: '/',\n component: lazy(() => import('src/views/auth/LoginView'))\n },\n {\n exact: true,\n path: '/login/:organization_id',\n component: lazy(() => import('src/views/auth/LoginView'))\n },\n {\n exact: true,\n path: '/register/:organization_id',\n component: lazy(() => import('src/views/auth/RegisterView'))\n },\n {\n exact: true,\n path: '/passwordRecovery/:organization_id',\n component: lazy(() => import('src/views/auth/PasswordRecoveryView'))\n },\n {\n exact: true,\n path: '/reset/password/:token/:redirect_url?',\n component: lazy(() => import('src/views/auth/ResetPasswordView'))\n },\n {\n exact: true,\n path: '/landing/:channelView',\n component: lazy(() => import('src/views/channel/LandingPageView/'))\n },\n {\n exact: true,\n path: '/channelView/:channelView',\n component: lazy(() => import('src/views/channel/ChannelDetailView'))\n },\n {\n exact: true,\n path: '/channelView/:channelView/:video_id',\n component: lazy(() => import('src/views/channel/ChannelDetailView'))\n },\n {\n exact: true,\n path: '/accept/channel/invitation/:professionalMedicId/:channelId/:code',\n component: lazy(() => import('src/views/auth/AcceptInvitationView'))\n },\n {\n exact: true,\n path: '/3D/:model_3d_id',\n component: lazy(() => import('src/views/models/ModelsDetailsView'))\n },\n {\n exact: true,\n path: '/organization/prescriptions/:token/:optional_params?',\n layout: IframeLayout,\n component: lazy(() => import('src/micof-iframe/prescription'))\n },\n {\n exact: true,\n path: '/organization/channel/:channelView',\n layout: IframeLayout,\n component: lazy(() => import('src/micof-iframe/channel/ChannelDetailView'))\n },\n {\n exact: true,\n path: '/organization/patients',\n layout: IframeLayout,\n component: lazy(() => import('src/micof-iframe/patient/PatientListView'))\n },\n {\n exact: true,\n path: '/organization/patient/:id',\n layout: IframeLayout,\n component: lazy(() => import('src/micof-iframe/patient/PatientDetailsView'))\n },\n {\n exact: true,\n path: '/questionnaires/:questionnaire_public_id',\n component: lazy(() => import('src/views/questionnaires/AnswerQuestionnaireAnonymously'))\n },\n {\n exact: true,\n path: '/questionnaires/pdf/:questionnaire_public_id',\n component: lazy(() => import('src/views/questionnaires/pdf'))\n },\n {\n path: '/iframe/:token/:optional_params?',\n component: lazy(() => import('src/views/iframe/index'))\n },\n {\n exact: true,\n path: '/signin/sescam/:operation?',\n component: lazy(() => import('src/views/sescamLogin/index'))\n },\n {\n exact: true,\n path: '/logout/sescam/',\n component: lazy(() => import('src/views/sescamLogin/LogOut'))\n },\n {\n\n path: '/video/:entry_id/:hotspot_list?',\n component: lazy(() => import('src/views/VideoHotspot/index'))\n },\n {\n path: '/app',\n guard: AuthGuard,\n layout: DashboardLayout,\n routes: [\n {\n exact: true,\n path: '/app/homepage',\n component: lazy(() => import('src/views/homepage/GlobalChannelView'))\n },\n {\n exact: true,\n path: '/app',\n component: lazy(() => import('src/views/reports/DashboardView'))\n },\n {\n exact: true,\n path: '/app/prescriptions/:optional_params?',\n component: lazy(() => import('src/views/prescription/PrescriptionListView'))\n },\n {\n exact: true,\n path: '/app/3D',\n component: lazy(() => import('src/views/models/ModelsListView'))\n },\n {\n exact: true,\n path: '/app/patients/:optional_params?',\n component: lazy(() => import('src/views/patient/PatientListView'))\n },\n {\n exact: true,\n path: '/app/patient/:patient_id/:optional_params?',\n component: lazy(() => import('src/views/patient/PatientDetailsView'))\n },\n {\n exact: true,\n path: '/app/channels',\n component: lazy(() => import('src/views/channel/ChannelListView'))\n },\n {\n exact: true,\n path: '/app/channel/:channelView',\n component: lazy(() => import('src/views/channel/ChannelDetailView'))\n },\n {\n exact: true,\n path: '/app/account',\n component: lazy(() => import('src/views/account/AccountView'))\n },\n {\n exact: true,\n path: '/app/myContent',\n component: lazy(() => import('src/views/myContent/MyContentView'))\n },\n {\n exact: true,\n path: '/app/patientEconsent/:eConsent_id',\n component: lazy(() => import('src/views/patient/PatientDetailsView/PatientEConsentView'))\n },\n {\n exact: true,\n path: '/app/econsents',\n component: lazy(() => import('src/views/econsents/E-consentsGallery'))\n },\n {\n exact: true,\n path: '/app/trajectories',\n component: lazy(() => import('src/views/trajectories/TrajectoriesGallery'))\n },\n {\n exact: true,\n path: '/app/patientTrajectory/:trajectory_id',\n component: lazy(() => import('src/views/patient/PatientDetailsView/PatientTrajectoryView'))\n },\n {\n exact: true,\n path: '/app/patientNavigator/:navigator_public_id',\n component: lazy(() => import('src/views/patient/PatientDetailsView/PatientNavigatorView'))\n },\n {\n exact: true,\n path: '/app/questionnaires',\n component: lazy(() => import('src/views/questionnaires/gallery/index'))\n },\n {\n exact: true,\n path: '/app/patientQuestionnaire/:questionnaire_id',\n component: lazy(() => import('src/views/patient/PatientDetailsView/Questionnaires/index'))\n },\n {\n exact: true,\n path: '/app/healthNavigator',\n component: lazy(() => import('src/views/healthNavigator/healthNavigatorGallery'))\n },\n {\n exact: true,\n path: '/app/healthNavigator/:navigator_template_id',\n component: lazy(() => import('src/views/healthNavigator/healthNavigatorPreview'))\n },\n {\n exact: true,\n path: '/app/healthNavigator/edit/:navigator_template_id',\n component: lazy(() => import('src/views/healthNavigator/healthNavigatorEdit'))\n },\n {\n exact: true,\n path: '/app/vrprograms',\n component: lazy(() => import('src/views/vrprograms/VrProgramsGallery/index'))\n },\n {\n exact: true,\n path: '/app/patientVrprogram/:vr_program_id',\n component: lazy(() => import('src/views/patient/PatientDetailsView/PatientVrProgramView'))\n },\n {\n exact: true,\n path: '/app/questionnaires/:questionnaire_public_id',\n component: lazy(() => import('src/views/questionnaires/AnswerQuestionnaire'))\n }\n ]\n },\n {\n path: '*',\n layout: MainLayout,\n routes: [\n {\n exact: true,\n path: '/'\n },\n {\n component: () => \n }\n ]\n }\n];\n\nexport default routes;\n","import { useRef, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport {\n Box,\n Card,\n Input,\n Typography,\n CardActions,\n MenuItem,\n ListItemIcon,\n Divider,\n Menu,\n Button,\n TextField,\n Chip,\n ListItemText,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Search as SearchIcon,\n Grid as AllContentIcon,\n Box as ModelIcon,\n Video as VideoIcon,\n Filter as FilterIcon,\n File as FileIcon,\n ExternalLink as LinkIcon\n} from 'react-feather';\n\nimport { ChannelViewTab } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport { Autocomplete } from '@mui/lab';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\ninterface SearchBarMenuProps {\n setVideoChecked: any;\n setModelsChecked: any;\n setFilesChecked: any;\n setExternalLinksChecked: any;\n setOpenActionsMenu: any;\n actionsRef: any;\n openActionsMenu: boolean;\n setSelectedMenuItem: any;\n}\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n minHeight: 64,\n },\n queryField: {\n width: '100%',\n marginLeft: theme.spacing(2)\n },\n checkboxVideos: {\n color: theme.palette.primary.main + \"!important\",\n },\n checkboxModels: {\n color: theme.palette.primary.main + \"!important\",\n },\n VideoText: {\n marginRight: '2rem',\n },\n ModelText: {\n marginRight: '2rem',\n },\n ShowMe: {\n marginRight: '2rem',\n marginLeft: '0rem',\n },\n BoxCheckBox: {\n marginRight: '2rem',\n },\n buttonMenu: {\n color: theme.palette.text.primary,\n },\n buttonMenuRight: {\n backgroundColor: \"white\",\n minWidth: \"8rem\",\n color: theme.palette.text.primary\n },\n IconOnButton: {\n marginRight: '1rem'\n },\n MenuStyle: {\n transform: \"Translate(-0.5%,4.5%)\",\n paddingBottom: 0,\n '& .MuiList-padding': {\n minWidth: \"20.5rem\",\n },\n },\n cardFilter: {\n paddingTop: \"1rem\",\n paddingLeft: \"1rem\",\n paddingBottom: \"1.5rem\",\n paddingRight: \"1rem\",\n },\n menuFilter: {\n transform: \"Translate(-1.5%,6.5%)\",\n '& .MuiList-padding': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n MenuItemStyle: {\n paddingBottom: \"1rem\",\n paddingTop: \"1rem\",\n },\n listItemIcon: {\n minWidth: \"0rem\",\n alignItems: \"center\",\n paddingRight: \"1rem\"\n },\n icon: {\n transform: 'translateY(10%)'\n },\n}));\n\nconst SearchBarMenu: FC = ({\n setModelsChecked,\n setVideoChecked,\n setFilesChecked,\n setExternalLinksChecked,\n setOpenActionsMenu,\n setSelectedMenuItem,\n actionsRef,\n openActionsMenu\n}) => {\n const classes = useStyles();\n const intl = useIntl();\n\n const handleCloseActionsMenu = (): void => {\n setOpenActionsMenu(false);\n };\n\n const handleViewAllContent = (): void => {\n setSelectedMenuItem(0)\n handleCloseActionsMenu();\n setVideoChecked(true);\n setModelsChecked(true);\n setFilesChecked(true);\n setExternalLinksChecked(true);\n };\n\n const handleViewVideos = (): void => {\n setSelectedMenuItem(1)\n handleCloseActionsMenu();\n setVideoChecked(true);\n setModelsChecked(false);\n setFilesChecked(false);\n setExternalLinksChecked(false)\n };\n\n const handleViewModels = (): void => {\n setSelectedMenuItem(2)\n handleCloseActionsMenu();\n setVideoChecked(false);\n setModelsChecked(true);\n setFilesChecked(false);\n setExternalLinksChecked(false)\n };\n\n const handleViewFiles = (): void => {\n setSelectedMenuItem(3)\n handleCloseActionsMenu();\n setVideoChecked(false);\n setModelsChecked(false);\n setFilesChecked(true);\n setExternalLinksChecked(false)\n };\n const handleViewExternalLinks = (): void => {\n setSelectedMenuItem(4)\n handleCloseActionsMenu();\n setVideoChecked(false);\n setModelsChecked(false);\n setFilesChecked(false);\n setExternalLinksChecked(true)\n };\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\nexport default SearchBarMenu;","import React, { useRef, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport {\n Box,\n Card,\n Input,\n Typography,\n Checkbox,\n CardActions,\n Button,\n TextField,\n Menu,\n MenuItem,\n ListItemIcon,\n Divider,\n Chip,\n ListItemText,\n FormControl,\n Select,\n OutlinedInput,\n InputLabel,\n Stack,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Search as SearchIcon,\n Grid as AllContentIcon,\n CheckCircle as EconsentIcon,\n Box as ModelIcon,\n Video as VideoIcon,\n Filter as FilterIcon,\n File as FileIcon,\n ExternalLink as LinkIcon\n} from 'react-feather';\n\nimport { ChannelViewTab } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport { Autocomplete } from '@mui/material';\nimport ArrowDropDownIcon from '@mui/icons-material/ArrowDropDown';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport SearchBarMenu from './SearchBarMenu';\n\ninterface PublicSearchBarProps {\n setSelectAll: any;\n setVideoChecked: any;\n setModelsChecked: any;\n query: string;\n setQuery: any;\n languageFilter: number;\n setLanguageFilter: any;\n setFilesChecked: any;\n setExternalLinksChecked: any;\n currentTab: any;\n}\nconst useStyles = makeStyles((theme) => ({\n root: {\n width: '100%',\n minHeight: 64,\n },\n queryField: {\n width: '100%',\n marginLeft: theme.spacing(2)\n },\n checkboxVideos: {\n color: theme.palette.primary.main + \"!important\",\n },\n checkboxModels: {\n color: theme.palette.primary.main + \"!important\",\n },\n VideoText: {\n marginRight: '2rem',\n },\n ModelText: {\n marginRight: '2rem',\n },\n ShowMe: {\n marginRight: '2rem',\n marginLeft: '0rem',\n },\n BoxCheckBox: {\n marginRight: '2rem',\n },\n buttonMenu: {\n color: theme.palette.text.primary,\n },\n buttonMenuRight: {\n color: theme.palette.text.primary,\n },\n IconOnButton: {\n marginRight: \"0.5rem\",\n },\n MenuStyle: {\n transform: \"Translate(-0.5%,4.5%)\",\n paddingBottom: 0,\n '& .MuiList-padding': {\n minWidth: \"20.5rem\",\n },\n },\n cardFilter: {\n paddingTop: \"1rem\",\n paddingLeft: \"1rem\",\n paddingBottom: \"1.5rem\",\n paddingRight: \"1rem\",\n },\n menuFilter: {\n transform: \"Translate(-1.5%,6.5%)\",\n '& .MuiList-padding': {\n paddingTop: 0,\n paddingBottom: 0,\n },\n },\n MenuItemStyle: {\n paddingBottom: \"1rem\",\n paddingTop: \"1rem\",\n },\n listItemIcon: {\n minWidth: \"0rem\",\n alignItems: \"center\",\n paddingRight: \"1rem\"\n },\n icon: {\n color: theme.palette.text.secondary\n }\n}));\n\nconst PublicSearchBar: FC = ({\n languageFilter,\n setLanguageFilter,\n query,\n setQuery,\n setSelectAll,\n setModelsChecked,\n setVideoChecked,\n setFilesChecked,\n setExternalLinksChecked,\n currentTab\n}) => {\n const classes = useStyles();\n const intl = useIntl();\n const [openActionsMenu, setOpenActionsMenu] = useState(false);\n const [openFilterMenu, setOpenFilterMenu] = useState(false);\n const actionsRef = useRef(null);\n const filterRef = useRef(null);\n const [selectedMenuItem, setSelectedMenuItem] = useState(0)\n\n const handleQueryChange = (event: ChangeEvent): void => {\n setSelectAll(true);\n setVideoChecked(true);\n setModelsChecked(true);\n setSelectedMenuItem(0)\n event.persist();\n setQuery(event.target.value);\n };\n\n const handleOpenActionsMenu = (): void => {\n setOpenActionsMenu(true);\n };\n\n const handleOpenFilterMenu = (): void => {\n setOpenFilterMenu(true);\n };\n\n const handleCloseActionsMenu = (): void => {\n setOpenActionsMenu(false);\n };\n const handleCloseFilterMenu = (): void => {\n setSelectAll(true);\n setVideoChecked(true);\n setModelsChecked(true);\n setSelectedMenuItem(0)\n setOpenFilterMenu(false);\n };\n\n const handleViewAllContent = (): void => {\n setSelectedMenuItem(0)\n handleCloseActionsMenu();\n setVideoChecked(true);\n setModelsChecked(true);\n };\n\n const handleViewVideos = (): void => {\n setSelectedMenuItem(1)\n handleCloseActionsMenu();\n setVideoChecked(true);\n setModelsChecked(false);\n };\n\n const handleViewModels = (): void => {\n setSelectedMenuItem(2)\n handleCloseActionsMenu();\n setVideoChecked(false);\n setModelsChecked(true);\n };\n\n const handleLanguageFilterDelete = (): void => {\n setLanguageFilter(0);\n };\n const languages = [\n { label: intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.all' }), id: 0 },\n { label: intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.spanish' }), id: 1 },\n { label: intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.english' }), id: 2 },\n { label: intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.catalan' }), id: 3 }\n ];\n\n const getMenuItemString = (item: number): string => {\n if (item == 0) return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.allcontent' })\n else if (item == 1) return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.videos' })\n else if (item == 2) return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.models3d' })\n else if (item == 3) return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.files' })\n else return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.external_links' })\n }\n\n const getLanguageString = (item: number): string => {\n if (item == 0) return intl.formatMessage({ id: 'Channel_ChannelDetailView_SearchBar_Menu.all' })\n else if (item == 1) return intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.spanish' })\n else if (item == 2) return intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.english' })\n else return intl.formatMessage({ id: 'Channel_ChannelDetailView_Content.catalan' })\n }\n\n const changeLanugage = (event) => {\n setLanguageFilter(event.target.value)\n }\n\n return (\n
\n \n \n \n \n \n \n {selectedMenuItem === 0 &&\n }\n {selectedMenuItem === 1 &&\n }\n {selectedMenuItem === 2 &&\n }\n {selectedMenuItem === 3 &&\n }\n {selectedMenuItem === 4 &&\n }\n \n \n {getMenuItemString(selectedMenuItem)}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {languageFilter !== null && languageFilter !== undefined && languageFilter !== 0 &&\n handleLanguageFilterDelete()}\n />\n }\n \n \n \n \n \n \n \n \n\n \n \n\n \n Name\n }\n >\n {languages.map((language) => (\n \n {language.label}\n \n ))}\n \n \n \n \n \n \n \n
\n );\n};\n\nexport default PublicSearchBar;","import React, { useEffect, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport { Card, CardContent, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport CardMedia from '@mui/material/CardMedia';\nimport Label from 'src/components/Label';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport axios from 'axios';\n\ninterface PublicLiveProps {\n liveEntryId: string;\n}\n\nconst useStyles = makeStyles(() => ({\n root: {\n display: 'flex',\n marginTop: '1.5rem',\n },\n videocontainer: {\n width: \"100%\",\n height: '27rem',\n paddingBottom: '2.5rem',\n paddingTop: '2.5rem',\n paddingRight: '2.5rem',\n paddingLeft: '2.5rem',\n },\n content: {\n marginTop: '1.5rem',\n width: '15rem',\n justifyContent: 'right',\n marginRight: '2.5rem',\n },\n label: {\n marginBottom: '0.5rem',\n backgroundColor: '#FF3378',\n color: '#FFFFFF',\n },\n title: {\n fontSize: '16px',\n marginBottom: '1rem',\n\n },\n description: {\n marginBottom: '1rem',\n },\n media: {\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n },\n aspectRatio16x9: {\n width: '100%',\n height: 0,\n paddingBottom: '56.25%',\n position: 'relative',\n }\n}));\n\nconst PublicLive: FC = ({ liveEntryId }) => {\n const classes = useStyles();\n const config = getWSConfig();\n const [live, setLive] = useState();\n\n const getLive = (): void => {\n let params = {};\n params['media_id'] = liveEntryId;\n axios.post(process.env.REACT_APP_SERVER_URL + '/media/1.0/get/media', params, config)\n .then(function (response) {\n if (response && response.data) {\n console.log(response.data);\n let data = response.data;\n setLive(data);\n }\n })\n .catch(function (error) {\n console.log(\"error loading videos from WS\");\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n })\n }\n\n useEffect(() => {\n if (liveEntryId !== undefined && liveEntryId !== \"\") {\n getLive();\n }\n }, [liveEntryId]);// eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n
\n \n
\n \n \n \n \n
\n \n \n live\n \n \n {live && live[\"name\"]}\n \n\n \n {live && live[\"description\"]}\n \n \n \n
\n );\n};\nexport default PublicLive;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport {\n Box,\n Button,\n Dialog,\n DialogContent,\n DialogContentText,\n DialogTitle,\n IconButton,\n SvgIcon,\n TextField,\n Typography,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n} from 'react-feather';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { FormattedMessage } from 'react-intl';\nimport { Media } from 'src/types/media';\nimport axios from 'axios';\n\ninterface VideoPasswordDialogProps {\n isOpen: boolean;\n setOpen: any;\n media: Media;\n channel_id: number;\n handleOpenVideoIfCorrectPassword: (media: Media) => void;\n}\n\nconst VideoPasswordDialog: FC = ({ isOpen, setOpen, media, channel_id, handleOpenVideoIfCorrectPassword }) => {\n const useStyles = makeStyles(() => ({\n root: {},\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n cancelButton: {\n marginRight: \"1rem\",\n }\n }));\n const config = getWSConfig();\n const classes = useStyles();\n const [password, setPassword] = useState(\"\");\n const [incorrectPassword, setIncorrectPassword] = useState(false);\n\n const handleClose = (): void => {\n setOpen(false);\n };\n\n const handleChangePassword = (event) => {\n setPassword(event.target.value);\n setIncorrectPassword(false);\n };\n\n const checkPasswordWS = (): void => {\n let params = { \"channel_id\": channel_id, \"kaltura_video_id\": media.entry_id, \"password\": password }\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_video/1.0/check/password', params, config)\n .then(function (response) {\n if (response && response.data != null) {\n if (Boolean(response.data)) {\n handleClose();\n handleOpenVideoIfCorrectPassword(media)\n } else {\n setIncorrectPassword(true);\n }\n }\n })\n }\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n {password}\n \n \n \n \n \n \n checkPasswordWS()}\n >\n \n \n\n \n \n \n );\n};\n\nexport default VideoPasswordDialog;\n","import type { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, Button, CardActionArea, CardMedia, SvgIcon, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n PlayCircle as PlayCircleIcon,\n Lock as LockIcon,\n Video as VideoIcon,\n} from 'react-feather';\nimport type { Media } from 'src/types/media';\nimport Label from 'src/components/Label';\nimport parse from \"html-react-parser\";\nimport { FormattedMessage, useIntl } from 'react-intl';\n\ninterface VideoBoxInfoProps {\n className?: string;\n singlemedia?: Media;\n setMediaToModal: any;\n setVideoPlayDialogOpen: any;\n checkVideoAccess: any;\n visibilityMode: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n titleMedia: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginBottom: '0.5rem',\n height: '2.5rem',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n description: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2rem',\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n playCircleIcon: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n top: \"50%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n width: '2rem',\n color: 'white',\n cursor: 'pointer',\n },\n labelTime: {\n position: 'absolute',\n pointerEvents: 'none',\n top: \"85%\",\n left: \"80%\",\n transform: \"Translate(-50%,-50%)\",\n color: 'white',\n cursor: 'pointer',\n background: 'rgba(0, 0, 51, 0.87)',\n },\n divImage: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n '&:hover': {\n '& svg': {\n visibility: 'visible',\n },\n },\n },\n treeitems: {\n '& div': {\n '& div': {\n fontSize: '0.875rem',\n paddingRight: '0.5rem',\n paddingBottom: '0.5rem',\n }\n }\n },\n firstTreeitem: {\n paddingLeft: '1rem',\n paddingBottom: '1.5rem',\n '& div': {\n '& div': {\n fontSize: '0.875rem',\n paddingRight: '0.5rem',\n paddingBottom: '0.5rem',\n }\n }\n },\n divider: {\n marginTop: '0rem',\n marginLeft: '0rem',\n marginRight: '0rem',\n },\n labelVideoText: {\n marginLeft: '0.5rem',\n background: 'grey-300',\n },\n actionArea: {\n color: 'TextPrimary',\n '&:hover $focusHighlight': {\n opacity: 0.5,\n color: 'TextPrimary',\n },\n },\n focusHighlight: {},\n lockIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"40%\",\n left: \"50%\",\n transform: \"Translate(-50%,-40%)\",\n width: '2rem',\n color: 'white',\n },\n buttonIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"70%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n height: '1.5rem',\n width: '2rem',\n color: 'white',\n },\n lockDiv: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n '&:hover': {\n '& svg': {\n visibility: 'visible',\n },\n '& button': {\n visibility: 'visible',\n }\n },\n },\n videoText: {\n overflow: 'hidden',\n },\n videoIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n}));\n\nconst VideoBoxInfo: FC = ({\n className,\n singlemedia,\n setMediaToModal,\n setVideoPlayDialogOpen,\n checkVideoAccess,\n visibilityMode,\n ...rest\n}) => {\n const classes = useStyles();\n const intl = useIntl();\n\n return (\n \n
\n {visibilityMode !== \"Password\" &&\n
\n checkVideoAccess()}\n >\n \n \n \n\n \n \n \n
\n }\n {visibilityMode === \"Password\" &&\n
\n checkVideoAccess()}\n >\n \n \n \n \n \n \n \n
\n }\n \n \n {singlemedia.duration}\n \n \n
\n \n \n \n \n \n \n \n \n {\"Video\"}\n \n \n \n\n \n checkVideoAccess()}\n >\n {singlemedia.title}\n \n \n \n \n {singlemedia.description !== null && typeof (singlemedia.description) === 'string' &&\n singlemedia.description !== \"\" && parse(singlemedia.description)}\n \n \n \n );\n\n\n};\n\nVideoBoxInfo.propTypes = {\n className: PropTypes.string,\n};\nexport default VideoBoxInfo;\n","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport { Card, } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport type { Media } from 'src/types/media';\nimport VideoPlayerDialog from 'src/views/VideoPlayer/VideoPlayerDialog';\nimport { TreeItem, TreeView } from '@mui/lab';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport VideoPasswordDialog from './VideoPasswordDialog';\nimport PublicVideoBoxInfo from './PublicVideoBoxInfo';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\n\ninterface PublicVideoBoxProps {\n className?: string;\n singlemedia?: Media;\n channelView: number;\n channel_id: number;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n titleMedia: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginBottom: '0.5rem',\n height: '2.5rem',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n description: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis'\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n playCircleIcon: {\n position: 'absolute',\n visibility: 'hidden',\n pointerEvents: 'none',\n top: \"50%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n width: '2rem',\n color: 'white',\n cursor: 'pointer',\n },\n videoIcon: {\n position: 'relative',\n left: '0rem',\n top: '0rem',\n marginLeft: '0rem',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n videoText: {\n overflow: 'hidden',\n },\n labelTime: {\n position: 'absolute',\n pointerEvents: 'none',\n top: \"85%\",\n left: \"80%\",\n transform: \"Translate(-50%,-50%)\",\n color: 'white',\n cursor: 'pointer',\n background: 'rgba(0, 0, 51, 0.87)',\n },\n divImage: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n marginBottom: '1rem',\n '&:hover': {\n '& svg': {\n visibility: 'visible',\n },\n },\n },\n treeitems: {\n '& div': {\n '& div': {\n fontSize: '0.875rem',\n paddingRight: '0.5rem',\n paddingBottom: '0.5rem',\n }\n }\n },\n firstTreeitem: {\n paddingLeft: '1rem',\n paddingBottom: '1.5rem',\n '& div': {\n '& div': {\n fontSize: '0.875rem',\n paddingRight: '0.5rem',\n paddingBottom: '0.5rem',\n }\n }\n },\n divider: {\n marginTop: '0rem',\n marginLeft: '0rem',\n marginRight: '0rem',\n },\n labelVideoText: {\n marginLeft: '0.5rem',\n background: 'grey-300',\n },\n actionArea: {\n color: 'TextPrimary',\n '&:hover $focusHighlight': {\n opacity: 0.5,\n color: 'TextPrimary',\n },\n },\n focusHighlight: {},\n lockIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"40%\",\n left: \"50%\",\n transform: \"Translate(-50%,-40%)\",\n width: '2rem',\n color: 'white',\n },\n buttonIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"70%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n height: '1.5rem',\n width: '2rem',\n color: 'white',\n },\n lockDiv: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n '&:hover': {\n '& svg': {\n visibility: 'visible',\n },\n '& button': {\n visibility: 'visible',\n }\n },\n },\n\n}));\n\nconst PublicVideoBox: FC = ({ className, singlemedia, channelView, channel_id, ...rest }) => {\n\n const config = getWSConfig();\n const classes = useStyles();\n const [mediaToModal, setMediaToModal] = useState();\n const [isVideoPlayDialogOpen, setVideoPlayDialogOpen] = useState(false);\n const [playerTime, setPlayerTime] = useState(null);\n const [openVideoPasswordDialog, setOpenVideoPasswordDialog] = useState(false);\n const [visibilityMode, setVisibilityMode] = useState();\n\n const openModal = (singlemedia: Media): void => {\n setMediaToModal(singlemedia);\n setVideoPlayDialogOpen(true);\n };\n\n const getVideoAccess = (singlemedia: Media): void => {\n let params = { \"kaltura_video_id\": singlemedia.entry_id, \"channel_id\": channel_id }\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_video/1.0/check/visibility/by/kaltura/id', params, config)\n .then(function (response) {\n setVisibilityMode(response.data);\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n }\n const checkVideoAccess = (): void => {\n if (visibilityMode === \"Public\") {\n openModal(singlemedia);\n }\n else if (visibilityMode === \"Password\") {\n setOpenVideoPasswordDialog(true);\n }\n }\n\n const handleCloseVideoPlayDialog = (): void => {\n setVideoPlayDialogOpen(false);\n };\n\n const handleCaptionClick = (captionTime: string): void => {\n var timeSplit = captionTime.split(':');\n var seconds = (+timeSplit[0]) * 60 * 60 + (+timeSplit[1]) * 60 + (+timeSplit[2]);\n var miliseconds = seconds * 1000;\n setPlayerTime(miliseconds);\n openModal(singlemedia);\n }\n\n const handleOpenVideoIfCorrectPassword = (singlemedia: Media): void => {\n openModal(singlemedia);\n }\n\n useEffect(() => {\n getVideoAccess(singlemedia);\n }, []);\n\n return (\n \n \n\n {isVideoPlayDialogOpen &&\n \n }\n {openVideoPasswordDialog &&\n handleOpenVideoIfCorrectPassword(singlemedia)}\n />\n }\n\n {singlemedia.captions && singlemedia.captions.length > 0 && (\n\n }\n defaultExpandIcon={}\n disableSelection={true}\n\n >\n \n {singlemedia.captions.map((caption, index) => {\n return (\n handleCaptionClick(caption.startsAt)}\n />\n )\n })}\n \n \n )}\n \n );\n\n};\n\nPublicVideoBox.propTypes = {\n className: PropTypes.string,\n};\nexport default PublicVideoBox;\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport {\n Box,\n Button,\n Dialog,\n DialogContent,\n DialogContentText,\n DialogTitle,\n IconButton,\n SvgIcon,\n Theme,\n Typography,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n} from 'react-feather';\nimport { Channel } from 'src/types/channel';\nimport SubscriptionButton from 'src/views/utils/SubscriptionButton';\nimport { useHistory } from 'react-router-dom';\nimport { FormattedMessage } from 'react-intl';\n\n\ninterface ModelBlockModalSuscribeProps {\n channel: Channel,\n isOpen: boolean;\n setOpen: any;\n}\n\nconst ModelBlockModalSuscribe: FC = ({ channel, isOpen, setOpen }) => {\n\n const useStyles = makeStyles((theme) => ({\n root: {},\n container: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n },\n cancelButton: {\n color: 'black',\n backgroundColor: 'white',\n \"&:hover\": {\n background: \"#efefef\"\n }\n },\n signUpButton: {\n marginLeft: '1rem',\n width: '9rem',\n backgroundColor: '#1CA58A',\n color: theme.palette.background.default,\n },\n }));\n const history = useHistory();\n const classes = useStyles();\n const handleClose = (): void => {\n setOpen(false);\n };\n const goToRegister = (): void => {\n history.push('/register');\n };\n\n return (\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n {channel.name}\n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ModelBlockModalSuscribe;\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, Button, Card, CardActionArea, CardMedia, Divider, SvgIcon, Typography } from '@mui/material';\n\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport {\n Box as BoxIcon,\n Lock as LockIcon,\n} from 'react-feather';\n\nimport { Model } from 'src/types/model';\nimport { Channel } from 'src/types/channel';\nimport ModelBlockModalSuscribe from './ModelBlockModalSuscribe';\nimport { FormattedMessage } from 'react-intl';\n\ninterface PublicModelBoxProps {\n className?: string;\n singleModel?: Model;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n imageWithAccess: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n },\n imageWithoutAccess: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n modelText: {\n overflow: 'hidden',\n },\n lockIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"40%\",\n left: \"50%\",\n transform: \"Translate(-50%,-40%)\",\n width: '2rem',\n color: 'white',\n },\n buttonIcon: {\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"70%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n height: '1.5rem',\n width: '2rem',\n color: 'white',\n },\n seeModuleIcon: {\n Size: 14,\n visibility: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: \"50%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n height: '1.75rem',\n width: '8rem',\n color: 'white',\n },\n divImage: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n '&:hover': {\n '& svg': {\n visibility: 'visible',\n },\n '& button': {\n visibility: 'visible',\n }\n },\n },\n seeModule: {\n position: 'relative',\n width: '100%',\n height: 'auto',\n '&:hover': {\n '& button': {\n visibility: 'visible',\n }\n },\n },\n actionArea: {\n color: 'TextPrimary',\n '&:hover $focusHighlight': {\n opacity: 0.5,\n color: 'TextPrimary',\n },\n },\n focusHighlight: {},\n\n titleModel: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginBottom: '0.5rem',\n height: '2.5rem',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n\n description: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2rem',\n },\n\n labelModelText: {\n marginLeft: '0.5rem',\n background: 'grey-300',\n },\n\n boxModelLabelAndFavorite: {\n display: \"flex\",\n },\n\n}));\n\nconst PublicModelBox: FC = ({ className, singleModel, channel }) => {\n const [isOpenlSuscribeDialog, setOpenSuscribeDialog] = useState(false);\n const classes = useStyles();\n\n const handleOpenSuscribeDialog = (): void => {\n setOpenSuscribeDialog(true);\n };\n\n return (\n \n \n
\n handleOpenSuscribeDialog()}\n >\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {singleModel.title}\n \n \n \n \n \n \n \n\n {isOpenlSuscribeDialog &&\n \n }\n \n );\n};\n\nPublicModelBox.propTypes = {\n className: PropTypes.string,\n};\nexport default PublicModelBox;\n","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, Button, Card, CardActionArea, CardContent, CardMedia, Chip, Divider, Grid, IconButton, SvgIcon, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Box as BoxIcon,\n Lock as LockIcon,\n File as FileIcon,\n Share2 as ShareIcon,\n} from 'react-feather';\nimport { Model } from 'src/types/model';\nimport { Channel } from 'src/types/channel';\nimport ModelBlockModalSuscribe from './ModelBlockModalSuscribe';\nimport { FormattedMessage } from 'react-intl';\nimport { FileResource } from 'src/types/file_resource';\nimport { Label } from '@mui/icons-material';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { useHistory } from 'react-router-dom';\n\ninterface FileBoxProps {\n file: FileResource;\n mode: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n fileText: {\n overflow: 'hidden',\n },\n titleFile: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginBottom: '0.5rem',\n height: '2.5rem',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n chip: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n color: 'white',\n cursor: 'pointer',\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n description: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2rem',\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n}));\n\nconst FileBox: FC = ({ file, mode }) => {\n const classes = useStyles();\n\n const config = getWSConfig();\n\n const getFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/get/file/link/public', params, config)\n .then(function (response) {\n if (response && response.data) {\n window.open(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n };\n\n const openFileLink = (): void => {\n getFileLink();\n };\n\n const [thumbnailFileLink, setThumbnailFileLink] = useState(null);\n const getThumbnailFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/get/thumbnail_link', params, config)\n .then(function (response) {\n if (response && response.data) {\n setThumbnailFileLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (file.thumbnail_extension) getThumbnailFileLink();\n }, []);\n\n return (\n \n openFileLink()}\n >\n \n {(file.thumbnail_extension) && \n }\n {(!file.thumbnail_extension) && (file.thumbnail_url) && \n }\n {(!file.thumbnail_extension) && (!file.thumbnail_url) && \n \n \n }\n \n \n \n \n \n \n \n \n {\"File\"}\n \n \n \n \n \n {file.title}\n \n \n \n \n {file.description}\n \n \n \n \n \n \n );\n\n};\n\nexport default FileBox;\n","import { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Card, Divider, Grid, CardMedia, IconButton, SvgIcon, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ExternalLink as ExternalLinkIcon,\n Share2 as ShareIcon,\n} from 'react-feather';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\n\ninterface ExternalLinkBoxProps {\n external_link: ExternalLinkResource;\n mode: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n fileText: {\n overflow: 'hidden',\n },\n titleFile: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n marginBottom: '0.5rem',\n height: '2.5rem',\n cursor: 'pointer',\n '&:hover': {\n textDecoration: 'underline',\n },\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n description: {\n display: `-webkit-box`,\n '-webkit-line-clamp': 2,\n '-webkit-box-orient': 'vertical',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2rem',\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n}));\n\n\nconst ExternalLinkBox: FC = ({ external_link, mode }) => {\n const config = getWSConfig();\n const [isOpenlSuscribeDialog, setOpenSuscribeDialog] = useState(false);\n const classes = useStyles();\n const [thumbnailUrl, setThumbnailUrl] = useState('');\n\n const openExternalLink = (): void => {\n window.open(external_link.link);\n };\n\n const [externalLinkThumbnailLink, setExternalLinkThumbnailLink] = useState(null);\n const getExternalLinkThumbnailLink = (): void => {\n let params = {}\n params[\"external_link_resource_id\"] = external_link.external_link_resource_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/external_link_resource/1.0/get/thumbnail_link', params, config)\n .then(function (response) {\n if (response && response.data) {\n setExternalLinkThumbnailLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (external_link.thumbnail_extension) getExternalLinkThumbnailLink();\n }, []);\n\n return (\n \n openExternalLink()}\n >\n \n {(external_link.thumbnail_extension) && \n }\n {(!external_link.thumbnail_extension) && (external_link.thumbnail_url) && \n }\n {(!external_link.thumbnail_extension) && (!external_link.thumbnail_url) && \n \n }\n \n \n \n \n \n \n \n \n {\"Link\"}\n \n \n \n \n \n {external_link.title}\n \n \n \n \n {external_link.description}\n \n \n \n \n \n \n );\n\n};\n\nexport default ExternalLinkBox;\n","import React, { useEffect, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { Box, LinearProgress, Typography, Grid, SvgIcon, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Search as SearchIcon,\n} from 'react-feather';\nimport axios from 'axios';\n\nimport type { Media } from 'src/types/media';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { Model } from 'src/types/model';\nimport { ChannelViewSection, ChannelViewSubsection, ChannelViewTab } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport PublicVideoBox from './PublicVideoBox';\nimport PublicModelBox from './PublicModelBox';\nimport Footer from './Footer';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { FileResource } from 'src/types/file_resource';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport FileBox from './FileBox';\nimport ExternalLinkBox from './ExternalLinkBox';\n\ninterface PublicContentProps {\n currentTab: ChannelViewTab;\n selectedSectionOrSubSection?: ChannelViewSubsection | ChannelViewSection;\n channel: Channel;\n setSelectAll: any;\n VideoChecked: boolean;\n ModelsChecked: boolean;\n query: string;\n mode: string;\n setQuery: any;\n languageFilter: number;\n filesChecked: boolean;\n externalLinksChecked: boolean;\n}\nconst useStyles = makeStyles((theme) => ({\n root: {\n '--ion-grid-width-xl': 1930,\n },\n linearProgress: {\n marginTop: '4rem',\n marginBottom: '4rem',\n marginLeft: '1rem',\n marginRight: '1rem',\n },\n boxContentNotFound: {\n paddingTop: '7rem',\n alignItems: \"center\",\n justifyContent: \"center\",\n justifyItems: \"center\",\n },\n noContentFoundIcon: {\n color: \"darkgrey\",\n },\n}));\n\nconst PublicContent: FC = ({\n currentTab,\n languageFilter,\n mode,\n query,\n setQuery,\n VideoChecked,\n ModelsChecked,\n selectedSectionOrSubSection,\n channel,\n filesChecked,\n externalLinksChecked,\n setSelectAll\n}) => {\n const classes = useStyles();\n const intl = useIntl();\n const config = getWSConfig();\n const [media, setMedia] = useState([]);\n const [models, setModels] = useState([]);\n const [existsVideos, setExistsVideos] = useState(true);\n const [existsModels, setExistsModels] = useState(true);\n let source;\n const [files, setFiles] = useState([]);\n const [externalLinks, setExternalLinks] = useState([]);\n const [existsFiles, setExistsFiles] = useState(true);\n const [existsExternalLinks, setExistsExternalLinks] = useState(true);\n const [loadingVideos, setLoadingVideos] = useState(true);\n const [loadingModels, setLoadingModels] = useState(true);\n const [loadingFiles, setLoadingFiles] = useState(true);\n const [loadingExternalLinks, setLoadingExternalLinks] = useState(true);\n\n const searchMediaSimple = (): void => {\n source = axios.CancelToken.source();\n let params = {};\n let config = { cancelToken: source.token };\n\n if (selectedSectionOrSubSection !== undefined) {\n setMedia([]);\n let url = '';\n\n if ('channel_view_sub_section_id' in selectedSectionOrSubSection) {\n url = '/channel_view_sub_section/1.0/public/list/content';\n params['channel_view_sub_section_id'] = selectedSectionOrSubSection.channel_view_sub_section_id;\n }\n else if ('channel_view_section_id' in selectedSectionOrSubSection) {\n if (selectedSectionOrSubSection.channel_view_section_id === 0) {\n url = '/channel_view_tab/1.0/public/search/media';\n params['channel_view_tab_id'] = currentTab.channel_view_tab_id;\n }\n else {\n url = '/channel_view_section/1.0/public/list/content';\n params['channel_view_section_id'] = selectedSectionOrSubSection.channel_view_section_id;\n }\n }\n\n if (VideoChecked === true) {\n params['videos'] = true;\n if (query !== \"\") {\n params['search_term'] = query;\n }\n params['models'] = false;\n if (languageFilter !== undefined && languageFilter !== null && languageFilter !== 0) {\n if (languageFilter === 1) {\n params['language'] = \"Spanish (Spain)\";\n }\n else if (languageFilter === 2) {\n params['language'] = \"English\";\n }\n else params['language'] = \"Catalan\";\n }\n }\n axios.post(process.env.REACT_APP_SERVER_URL + url, params, config)\n .then(function (response) {\n if (response && response.data) {\n let data: Media[] = response.data;\n\n if (data.length >= 1) {\n setExistsVideos(true);\n }\n else {\n setExistsVideos(false);\n }\n setMedia(data);\n setLoadingVideos(false);\n }\n })\n .catch(function (error) {\n setLoadingVideos(false);\n\n if (axios.isCancel(error)) {\n console.log('Request aborted', error.message);\n }\n else {\n console.log(\"error loading videos from WS\");\n\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n }\n });\n }\n };\n\n const searchModelsSimple = (): void => {\n let modelsList: Model[] = [];\n\n if (\"channel_view_sub_section_id\" in selectedSectionOrSubSection) {\n for (let element of selectedSectionOrSubSection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n }\n else if (\"channel_view_section_id\" in selectedSectionOrSubSection) {\n if (selectedSectionOrSubSection.channel_view_section_id === 0 && currentTab.channel_view_tab_id !== undefined) {\n for (let section of currentTab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n }\n }\n }\n else {\n for (let subsection of selectedSectionOrSubSection.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n }\n }\n }\n setModels(modelsList);\n setExistsModels(modelsList.length > 0);\n setLoadingModels(false);\n }\n\n const searchFilesSimple = (): void => {\n let filesList: FileResource[] = [];\n if (\"channel_view_sub_section_id\" in selectedSectionOrSubSection) {\n for (let element of selectedSectionOrSubSection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n }\n else if (\"channel_view_section_id\" in selectedSectionOrSubSection) {\n if (selectedSectionOrSubSection.channel_view_section_id === 0 && currentTab.channel_view_tab_id !== undefined) {\n for (let section of currentTab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n }\n }\n }\n else {\n for (let subsection of selectedSectionOrSubSection.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n }\n }\n }\n setFiles(filesList);\n setExistsFiles(filesList.length > 0);\n setLoadingFiles(false);\n }\n\n const searchExternalLinksSimple = (): void => {\n let externalLinksList: ExternalLinkResource[] = [];\n if (\"channel_view_sub_section_id\" in selectedSectionOrSubSection) {\n for (let element of selectedSectionOrSubSection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n }\n else if (\"channel_view_section_id\" in selectedSectionOrSubSection) {\n if (selectedSectionOrSubSection.channel_view_section_id === 0 && currentTab.channel_view_tab_id !== undefined) {\n for (let section of currentTab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n }\n }\n }\n else {\n for (let subsection of selectedSectionOrSubSection.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n }\n }\n }\n setExternalLinks(externalLinksList);\n setExistsExternalLinks(externalLinksList.length > 0);\n setLoadingExternalLinks(false);\n }\n\n const searchContent = (): any => {\n setLoadingVideos(true);\n setLoadingModels(true);\n setLoadingFiles(true);\n setLoadingExternalLinks(true);\n if (VideoChecked && ModelsChecked && filesChecked && externalLinksChecked) {\n searchMediaSimple();\n searchModelsSimple();\n searchFilesSimple();\n searchExternalLinksSimple();\n return () => {\n source.cancel(\"canceling call to WS\");\n };\n }\n else if (VideoChecked && !ModelsChecked && !filesChecked && !externalLinksChecked) {\n searchMediaSimple();\n setExistsFiles(false);\n setExistsExternalLinks(false);\n setExistsModels(false);\n setLoadingModels(false);\n setLoadingFiles(false);\n setLoadingExternalLinks(false);\n return () => {\n source.cancel(\"canceling call to WS\");\n };\n }\n else if (!VideoChecked && ModelsChecked && !filesChecked && !externalLinksChecked) {\n searchModelsSimple();\n setExistsFiles(false);\n setExistsExternalLinks(false);\n setExistsVideos(false);\n setLoadingVideos(false);\n setLoadingFiles(false);\n setLoadingExternalLinks(false);\n }\n else if (!VideoChecked && !ModelsChecked && filesChecked && !externalLinksChecked) {\n searchFilesSimple();\n setExistsVideos(false);\n setExistsExternalLinks(false);\n setExistsModels(false);\n setLoadingVideos(false);\n setLoadingModels(false);\n setLoadingExternalLinks(false);\n }\n else if (!VideoChecked && !ModelsChecked && !filesChecked && externalLinksChecked) {\n searchExternalLinksSimple();\n setExistsFiles(false);\n setExistsVideos(false);\n setExistsModels(false);\n setLoadingVideos(false);\n setLoadingModels(false);\n setLoadingFiles(false);\n }\n }\n\n const applyFiltersForTitle = (item: Model | FileResource | ExternalLinkResource, query: string): Boolean => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let model_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (item[property] !== undefined) {\n model_norm = item[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (model_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n }\n\n const applyModelsFilters = (models: Model[], query: string): Model[] => {\n return models.filter((model) => {\n let matches = applyFiltersForTitle(model, query);\n return matches;\n });\n };\n\n const applyFilesFilters = (files: FileResource[], query: string): FileResource[] => {\n return files.filter((file) => {\n let matches = applyFiltersForTitle(file, query);\n return matches;\n });\n };\n\n const applyExternalLinksFilters = (externalLinks: ExternalLinkResource[], query: string): ExternalLinkResource[] => {\n return externalLinks.filter((externalLink) => {\n let matches = applyFiltersForTitle(externalLink, query);\n return matches;\n });\n };\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n if (selectedSectionOrSubSection !== undefined) {\n if (selectedSectionOrSubSection.channel_view_section_id !== 0) {\n setQuery(\"\");\n }\n }\n searchContent();\n }, 1000);\n\n return () => clearTimeout(timeoutId);\n }, [VideoChecked, ModelsChecked, filesChecked, externalLinksChecked, selectedSectionOrSubSection, languageFilter, currentTab, query]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const filteredModels = (models === null) ? [] : applyModelsFilters(models, query);\n const filteredFiles = (files === null) ? [] : applyFilesFilters(files, query);\n const filteredExternalLinks = (externalLinks === null) ? [] : applyExternalLinksFilters(externalLinks, query);\n\n if (loadingVideos || loadingFiles || loadingModels || loadingExternalLinks) {\n return (\n \n \n \n );\n }\n else {\n return (\n \n \n \n \n {VideoChecked &&\n media.map((video) => {\n return (\n \n \n \n );\n })}\n {ModelsChecked && filteredModels.map((model) => {\n return (\n \n \n \n );\n })}\n {filesChecked && filteredFiles.map((file) => {\n return (\n \n );\n })}\n {externalLinksChecked && filteredExternalLinks.map((link) => {\n return (\n \n );\n })}\n \n\n {!existsVideos && !existsModels && !existsFiles && !existsExternalLinks &&\n < Box\n justifyContent=\"center\"\n display=\"grid\"\n flexGrow={1}\n paddingTop=\"7rem\"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n }\n \n \n );\n }\n};\n\nexport default PublicContent;","import { FC, useEffect } from 'react'\nimport React, { useState } from 'react';\nimport makeStyles from '@mui/styles/makeStyles';\n\nimport { ChannelViewSubsection, ChannelViewSection, ChannelViewTab, IDTree } from 'src/types/channelView';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport TreeView from '@mui/lab/TreeView';\nimport TreeItem from '@mui/lab/TreeItem';\nimport Typography from \"@mui/material/Typography\";\nimport withStyles from '@mui/styles/withStyles';\nimport { Channel } from 'src/types/channel';\nimport PublicContent from './PublicContent';\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n paddingTop: '2.25rem',\n paddingLeft: '2rem',\n paddingRight: '1.5rem',\n },\n treeView: {\n display: 'block',\n paddingTop: '1.5rem',\n paddingLeft: '1rem',\n width: '16.5rem',\n height: '36.5rem',\n backgroundColor: \"#FFFFFF\",\n },\n menuItem: {\n marginBottom: '0.5rem',\n '& a': {\n paddingLeft: '0rem',\n '& span': {\n '& span': {\n marginLeft: '1.5rem',\n },\n }\n }\n },\n labelText: {\n fontSize: '1rem',\n flexGrow: 1,\n },\n}));\n\ninterface PublicInnerNavBarProps {\n className?: string;\n channelViewSectionList: ChannelViewSection[];\n currentTab: ChannelViewTab;\n channel: Channel;\n selectAll: boolean;\n setSelectAll: any;\n VideoChecked: boolean;\n ModelsChecked: boolean;\n query: string;\n setQuery: any;\n languageFilter: number;\n setLanguageFilter: any;\n filesChecked: boolean;\n externalLinksChecked: boolean;\n}\n\nconst StyledTreeItem = withStyles({\n root: {\n paddingBottom: \"1rem\",\n \"&.Mui-selected > .MuiTreeItem-content .MuiTreeItem-label\": {\n color: \"#1CA58A\",\n opacity: \"1\",\n },\n color: \"#546e7a\",\n fontWeight: 600,\n },\n content: {\n flexDirection: \"row-reverse\"\n },\n label: {\n color: \"#546e7a\",\n textTransform: \"none\",\n fontWeight: 600,\n lineHeight: 21,\n\n },\n})(TreeItem);\n\nconst PublicInnerNavBar: FC = ({\n className,\n languageFilter,\n setLanguageFilter,\n query,\n setQuery,\n VideoChecked,\n ModelsChecked,\n channelViewSectionList,\n currentTab,\n channel,\n selectAll,\n setSelectAll,\n filesChecked,\n externalLinksChecked,\n ...rest }) => {\n var treeItemId = 1;\n const [selectedItem, setSelectedItem] = useState({ channel_view_section_id: 0, channel_view_tab_id: 0, name: \"\", channelViewSubSectionList: [], sequence_alphabetical: null });\n const [SectionAll, setSectionAll] = useState({ channel_view_section_id: 0, channel_view_tab_id: 0, name: \"\", channelViewSubSectionList: [], sequence_alphabetical: null });\n const [expanded, setExpanded] = React.useState([]);\n const [selected, setSelected] = useState(\"0\");\n const [listOfTreeNodeWithCorrespondentSection, setListOfTreeNodeWithCorrespondentSection] = useState([]);\n const [innerNavBar] = useState('grid');\n const [noInnerNavBar] = useState('nogrid');\n\n async function incrementTreeItemId() {\n treeItemId++;\n }\n\n const renderChannelViewSubSectionList = (channelViewSubsectionList: ChannelViewSubsection[], classes) => {\n return channelViewSubsectionList.map(subSection => {\n incrementTreeItemId()\n\n let id: IDTree = { TreeID: 0, SectionID: 0, IsSectionOtherWiseIsSubsection: false };\n\n id.TreeID = treeItemId;\n id.SectionID = subSection.channel_view_sub_section_id;\n id.IsSectionOtherWiseIsSubsection = false;\n\n\n var IsTheTreeNodeInTheList = false;\n listOfTreeNodeWithCorrespondentSection.map(index => {\n if (index.TreeID === id.TreeID) {\n IsTheTreeNodeInTheList = true;\n }\n });\n if (!IsTheTreeNodeInTheList) {\n listOfTreeNodeWithCorrespondentSection.push(id);\n }\n return (\n \n {subSection.name}\n \n }\n children={undefined}\n className={classes.menuItem}\n />\n );\n });\n }\n\n const renderChannelViewSectionList = (channelViewSectionList: ChannelViewSection[], classes) => {\n\n return channelViewSectionList.map(section => {\n let children = undefined;\n\n if (section.channelViewSubSectionList && section.channelViewSubSectionList.length > 0) {\n children = renderChannelViewSubSectionList(section.channelViewSubSectionList, classes);\n }\n incrementTreeItemId()\n\n let id: IDTree = { TreeID: 0, SectionID: 0, IsSectionOtherWiseIsSubsection: true };\n id.TreeID = treeItemId;\n id.SectionID = section.channel_view_section_id;\n id.IsSectionOtherWiseIsSubsection = true;\n\n var IsTheTreeNodeInTheList = false;\n listOfTreeNodeWithCorrespondentSection.map(index => {\n if (index.TreeID === id.TreeID) {\n IsTheTreeNodeInTheList = true;\n }\n });\n if (!IsTheTreeNodeInTheList) {\n listOfTreeNodeWithCorrespondentSection.push(id);\n }\n\n return (\n \n {section.name}\n \n }\n children={children}\n className={classes.menuItem}\n classes={{\n label: classes.label\n }}\n />\n );\n });\n };\n\n const serachSectionInTree = (key): void => {\n var FindTreeIDinTheListofPairs = listOfTreeNodeWithCorrespondentSection.find(element => element.TreeID === parseInt(key));\n\n if (key === \"0\") {\n setSelectedItem(SectionAll);\n }\n //Is subsection\n else if (!FindTreeIDinTheListofPairs.IsSectionOtherWiseIsSubsection) {\n\n channelViewSectionList.map(section => {\n if (section.channelViewSubSectionList && section.channelViewSubSectionList.length > 0) {\n\n var TreeNodeChannelViewSubSection: ChannelViewSubsection = section.channelViewSubSectionList.find(element => element.channel_view_sub_section_id === FindTreeIDinTheListofPairs.SectionID)\n\n if (TreeNodeChannelViewSubSection !== undefined) {\n setSelectedItem(TreeNodeChannelViewSubSection);\n }\n }\n });\n }\n else {\n var TreeNodeChannelViewSection = channelViewSectionList.find(element => element.channel_view_section_id === FindTreeIDinTheListofPairs.SectionID);\n setSelectedItem(TreeNodeChannelViewSection);\n }\n\n\n }\n const handleSelect = (event, key) => {\n setSelectAll(false);\n setSelected(key);\n serachSectionInTree(key);\n };\n const handleToggle = (event, nodeIds) => {\n setExpanded(nodeIds);\n };\n\n useEffect(() => {\n if (selectAll === true) {\n setSelected(\"0\");\n serachSectionInTree(\"0\");\n setQuery(query);\n }\n }, [selectAll]);// eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n setListOfTreeNodeWithCorrespondentSection([]);\n }, [currentTab]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const classes = useStyles();\n if ((channelViewSectionList.length < 1) || (channelViewSectionList.length === 1 && channelViewSectionList[0].channelViewSubSectionList.length <= 1)) {\n return (\n \n )\n }\n\n else {\n let id: IDTree = { TreeID: 0, SectionID: 0, IsSectionOtherWiseIsSubsection: true };\n\n var IsTheTreeNodeInTheList = false;\n listOfTreeNodeWithCorrespondentSection.map(index => {\n if (index.TreeID === id.TreeID) {\n IsTheTreeNodeInTheList = true;\n }\n });\n if (!IsTheTreeNodeInTheList) {\n listOfTreeNodeWithCorrespondentSection.push(id);\n }\n return (\n
\n
\n }\n defaultExpandIcon={}\n className={classes.treeView}\n selected={selected}\n expanded={expanded}\n onNodeToggle={handleToggle}\n onNodeSelect={handleSelect}\n >\n \n {\"Todo\"}\n \n }\n className={classes.menuItem}\n />\n {renderChannelViewSectionList(channelViewSectionList, classes)}\n \n\n
\n \n
\n\n );\n }\n}\n\nexport default PublicInnerNavBar","import React, { useEffect, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport {\n Tab,\n Tabs,\n Divider,\n Typography,\n Collapse,\n IconButton,\n Card,\n Grid,\n CardContent,\n SvgIcon,\n Box,\n Link,\n} from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { ChannelViewInfoLink, ChannelViewInfoType, ChannelViewTab } from 'src/types/channelView';\n\nimport { Channel } from 'src/types/channel';\n\nimport { Alert } from '@mui/material';\nimport { FormattedMessage } from 'react-intl';\nimport CloseIcon from '@mui/icons-material/Close';\nimport Button from '@mui/material/Button';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { alertStatus } from 'src/types/alertStatus';\nimport {\n MapPin as MapPinIcon,\n Phone as PhoneIcon,\n Mail as MailIcon,\n Facebook as FacebookIcon,\n Twitter as TwitterIcon,\n Linkedin as LinkedinIcon,\n Instagram as InstagramIcon,\n Link as LinkIcon,\n\n} from 'react-feather';\ninterface PublicChannelViewInfoProps {\n channel: Channel;\n channelViewInfo: ChannelViewInfoType;\n}\n\nconst useStyles = makeStyles(() => ({\n root: {},\n contact: {\n marginTop: \"1.5rem\",\n },\n divider: {\n marginTop: '0rem',\n marginLeft: '0rem',\n marginRight: '0rem',\n marginBottom: '1.5rem',\n zIndex: 1\n },\n dividerContact: {\n marginTop: '0rem',\n marginLeft: '0rem',\n marginRight: '0rem',\n marginBottom: '1rem',\n zIndex: 1\n },\n description: {\n marginTop: \"1.5rem\",\n marginBottom: \"1.5rem\"\n },\n descriptionTitle: {\n marginBottom: \"0.5rem\",\n Weight: 600,\n },\n linkTitle: {\n marginBottom: \"0.5rem\",\n Weight: 600,\n },\n contactTitle: {\n marginBottom: \"0.5rem\",\n Weight: 600,\n },\n Icons: {\n left: '0rem',\n top: '0rem',\n marginLeft: '0rem',\n },\n mapPinBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n phone1Box: {\n display: 'flex',\n marginBottom: '1rem',\n },\n phone2Box: {\n display: 'flex',\n marginBottom: '1rem',\n },\n mailBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n direction: {\n marginLeft: '2rem',\n },\n phone1: {\n marginLeft: '2rem',\n },\n phone2: {\n marginLeft: '2rem',\n },\n mail: {\n marginLeft: '2rem',\n },\n facebookBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n twitterBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n linkedinBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n instagramBox: {\n display: 'flex',\n marginBottom: '1rem',\n },\n socials: {\n marginLeft: '2rem',\n }\n}));\n\nconst PublicChannelViewInfo: FC = ({ channel, channelViewInfo }) => {\n const classes = useStyles();\n const config = getWSConfig();\n\n return (\n \n \n \n \n \n \n \n \n \n {channelViewInfo && channelViewInfo.channel_view_description}\n \n \n \n \n \n \n \n \n \n \n {channelViewInfo && channelViewInfo.channelViewInfoLinkList.map((link) => {\n return (\n \n {\n link.text &&\n \n {link && link.text}\n \n }\n {\n !link.text &&\n \n {link && link.link}\n \n }\n \n );\n })}\n \n \n \n\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n {channelViewInfo && channelViewInfo.direction}\n \n \n\n \n \n \n \n \n {channelViewInfo && channelViewInfo.phone_number_one}\n \n \n\n {channelViewInfo && channelViewInfo.phone_number_two &&\n \n \n \n \n \n {channelViewInfo && channelViewInfo.phone_number_two}\n \n \n }\n \n \n \n \n \n {channelViewInfo && channelViewInfo.email}\n \n \n \n \n \n {channelViewInfo && channelViewInfo.facebook_account &&\n \n \n \n \n \n Facebook\n \n\n \n }\n {channelViewInfo && channelViewInfo.facebook_account &&\n \n \n \n \n \n Web\n \n\n \n }\n {channelViewInfo && channelViewInfo.twitter_account &&\n \n \n \n \n \n Twitter\n \n \n }\n {channelViewInfo && channelViewInfo.linkedin_account &&\n \n \n \n \n \n Linkedin\n \n \n }\n {channelViewInfo && channelViewInfo.instagram_account &&\n \n \n \n \n \n Instagram\n \n \n }\n \n \n \n \n );\n};\n\nexport default PublicChannelViewInfo;","import React, { useEffect, useState } from 'react';\nimport type { FC, ChangeEvent } from 'react';\nimport { Tab, Tabs, Divider, Typography, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { ChannelViewInfoType, ChannelViewTab } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport { Alert } from '@mui/material';\nimport CloseIcon from '@mui/icons-material/Close';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { alertStatus } from 'src/types/alertStatus';\nimport PublicSearchBar from './PublicSearchBar';\nimport PublicLive from './PublicLive';\nimport PublicInnerNavBar from './PublicInnerNavBar';\nimport PublicChannelViewInfo from './PublicChannelViewInfo';\nimport { FormattedMessage, useIntl } from 'react-intl';\ninterface PublicChannelViewTabsProps {\n channelViewTabList: ChannelViewTab[];\n channel: Channel;\n liveEntryId: string;\n channelViewInfo: ChannelViewInfoType;\n}\n\nconst useStyles = makeStyles(() => ({\n root: {},\n tab: {\n marginLeft: '0rem',\n },\n live: {\n marginLeft: 'auto',\n },\n divider: {\n marginTop: '0rem',\n marginLeft: '0rem',\n marginRight: '0rem',\n zIndex: 1\n },\n rightAlign: {\n marginLeft: 'auto',\n margin: 0,\n },\n alert: {\n marginTop: \"1.5rem\"\n },\n}));\n\nconst PublicChannelViewTabs: FC = ({ channelViewTabList, channel, liveEntryId, channelViewInfo }) => {\n const [currentTab, setCurrentTab] = useState(channelViewTabList[0]);\n const [selectAll, setSelectAll] = useState(false);\n const [query, setQuery] = useState('');\n const [VideoChecked, setVideoChecked] = useState(true);\n const [ModelsChecked, setModelsChecked] = useState(true);\n const classes = useStyles();\n const [languageFilter, setLanguageFilter] = useState(0);\n const [filesChecked, setFilesChecked] = useState(true);\n const [externalLinksChecked, setExternalLinksChecked] = useState(true);\n\n const handleTabsChange = (event: ChangeEvent<{}>, tab_name: string): void => {\n setCurrentTab(channelViewTabList.find(tab => tab.name === tab_name));\n setSelectAll(true);\n };\n\n useEffect(() => {\n setCurrentTab(channelViewTabList[0]);\n setQuery(\"\");\n setSelectAll(true);\n }, [channel]);\n\n return (\n
\n
\n \n {channelViewTabList && channelViewTabList.map((tab) => (\n (tab.isVisibleInPublicChannelView !== false) && (\n tab.sequence !== 900 && tab.sequence !== 901 &&\n \n || tab.sequence === 900 &&\n \n || tab.sequence === 901 &&\n \n )\n ))}\n \n
\n \n {currentTab.sequence !== 900 && currentTab.sequence !== 901 && (currentTab.isVisibleInPublicChannelView !== false) &&\n \n }\n {currentTab.sequence !== 900 && currentTab.sequence !== 901 && (currentTab.isVisibleInPublicChannelView !== false) &&\n \n }\n {currentTab.sequence === 900 && (currentTab.isVisibleInPublicChannelView !== false) &&\n \n }\n {currentTab.sequence === 901 && channelViewInfo && (currentTab.isVisibleInPublicChannelView !== false) &&\n \n }\n
\n );\n};\n\nexport default PublicChannelViewTabs;","import React, { FC, useCallback, useState, useEffect } from 'react';\nimport Typography from '@mui/material/Typography';\nimport makeStyles from '@mui/styles/makeStyles';\nimport Grid from '@mui/material/Grid';\nimport Box from '@mui/material/Box';\nimport SubscriptionButton from '../../utils/SubscriptionButton';\nimport type { Channel } from 'src/types/channel';\nimport { FormattedMessage } from 'react-intl';\nimport { ChannelViewInfoType } from 'src/types/channelView';\n\ninterface PublicHeaderProps {\n channel: Channel,\n channelViewInfo: ChannelViewInfoType\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexGrow: 1\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n roundedCenter: {\n width: \"120px\",\n height: \"120px\",\n position: \"absolute\",\n display: \"block\",\n transform: \"translateY(-50%) translateX(-50%)\",\n background: \"#fff\",\n borderRadius: \"50%\",\n marginLeft: \"6.25rem\",\n marginTop: \"-15px\"\n },\n toolbar: {\n minHeight: 128,\n alignItems: 'flex-start',\n paddingBottom: theme.spacing(2),\n height: '14rem',\n },\n toolbarBottom: {\n height: '4.5rem',\n\n },\n title: {\n flexGrow: 1,\n alignSelf: 'flex-end',\n },\n\n paper: {\n padding: theme.spacing(2),\n textAlign: 'center',\n color: theme.palette.text.secondary,\n },\n channelsDiv: {\n textAlign: \"center\",\n marginLeft: \"2rem\"\n },\n channelsText: {\n textAlign: \"left\",\n marginLeft: \"8.8rem\"\n },\n subscribeButtonDiv: {\n textAlign: \"right\",\n marginRight: \"2em\",\n marginTop: \"0.5em\",\n },\n roundedDiv: {\n position: \"relative\"\n },\n channelImage: {\n width: \"100%\",\n height: \"100%\",\n display: \"inline-block\",\n backgroundSize: \"cover\",\n borderRadius: \"50%\",\n border: \"2px solid #ddd\"\n },\n headerImage: {\n width: \"100%\",\n height: \"100%\"\n }\n}));\n\nconst PublicHeader: FC = ({\n channel,\n channelViewInfo\n}) => {\n const classes = useStyles();\n return (\n
\n
\n \"Logo\"\n
\n
\n
\n {channelViewInfo && channelViewInfo.web_url &&\n \n \n \n }\n {channelViewInfo && !channelViewInfo.web_url &&\n \n }\n {!channelViewInfo &&\n \n }\n
\n
\n
\n \n \n
\n \n \n
\n
\n \n \n \n \n \n {channel.name}\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n );\n}\nexport default PublicHeader;","import React from 'react';\nimport createStyles from '@mui/styles/createStyles';\nimport type { FC } from 'react';\nimport PeopleAltOutlinedIcon from '@mui/icons-material/Login';\nimport { useHistory } from 'react-router-dom';\nimport { Button, SvgIcon, AppBar, Toolbar, Hidden, Box } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { ChannelView, ChannelViewInfoType } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport { FormattedMessage } from 'react-intl';\nimport LanguageSelection from 'src/views/auth/LanguageSelection';\n\n\ninterface PublicHeaderBarProps {\n channelViewInfo: ChannelViewInfoType;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n },\n header: {\n backgroundColor: theme.palette.background.default,\n boxShadow: 'none',\n zIndex: theme.zIndex.appBar,\n margin: 'auto',\n width: '100%',\n },\n signUpButton: {\n marginLeft: '1rem',\n width: '9rem',\n backgroundColor: '#1CA58A',\n color: theme.palette.background.default,\n },\n loginButton: {\n backgroundColor: theme.palette.background.default,\n },\n buttonsDiv: {\n marginLeft: \"auto\",\n marginRight: -12,\n },\n appBar: {\n backgroundColor: theme.palette.background.default\n },\n languageIcon: {\n backgroundColor: theme.palette.background.default,\n color: '#535961',\n marginTop: 16\n },\n }),\n);\n\nconst PublicHeaderBar: FC = ({ channelViewInfo, channel }) => {\n const classes = useStyles();\n\n return (\n
\n \n \n {channelViewInfo && channelViewInfo.web_url ?\n (\n \n \n \n ) : (\n \n )\n }\n \n \n \n \n \n \n
\n );\n}\n\nexport default PublicHeaderBar;","import React from 'react';\nimport type { FC } from 'react';\nimport { Link as RouterLink, useHistory } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { AppBar, Toolbar, Button, SvgIcon, Hidden, Box, useMediaQuery, useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { Theme } from '@mui/material/styles';\nimport createStyles from '@mui/styles/createStyles';\nimport { Channel } from 'src/types/channel';\nimport Logo from 'src/components/Logo';\nimport {\n Facebook as FacebookIcon,\n Twitter as TwitterIcon,\n Linkedin as LinkedinIcon,\n Instagram as InstagramIcon,\n Link as LinkIcon,\n} from 'react-feather';\nimport { ChannelViewInfoType } from 'src/types/channelView';\nimport PublicLogo from 'src/components/PublicLogo';\n\ninterface FooterProps {\n channelViewInfo: ChannelViewInfoType;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n position: \"relative\",\n left: 0,\n bottom: 0,\n right: 0,\n },\n header: {\n backgroundColor: theme.palette.background.default,\n boxShadow: 'none',\n zIndex: theme.zIndex.drawer + 100,\n margin: 'auto',\n width: '100%',\n },\n signUpButton: {\n marginLeft: '1rem',\n width: '9rem',\n backgroundColor: '#1CA58A',\n color: theme.palette.background.default,\n },\n loginButton: {\n width: '7rem',\n backgroundColor: theme.palette.background.default,\n color: '#535961'\n },\n buttonsDiv: {\n marginLeft: \"auto\"\n },\n appBar: {\n backgroundColor: theme.palette.background.default\n },\n icons: {\n marginRight: \"2rem\",\n },\n }),\n);\n\nconst Footer: FC = ({ channelViewInfo, channel }) => {\n const classes = useStyles();\n const theme = useTheme();\n const matches = useMediaQuery(theme.breakpoints.down('xs'));\n const mobile: boolean = useMediaQuery(theme.breakpoints.down('md'));\n\n return (\n
\n \n \n \n \n \n \n {channelViewInfo && channelViewInfo.facebook_account &&\n \n \n \n \n \n }\n {channelViewInfo && channelViewInfo.web_url &&\n \n \n \n \n \n }\n {channelViewInfo && channelViewInfo.linkedin_account &&\n \n \n \n \n \n }\n {channelViewInfo && channelViewInfo.twitter_account &&\n \n \n \n \n \n }\n {channelViewInfo && channelViewInfo.instagram_account &&\n \n \n \n \n \n }\n \n \n \n
\n );\n\n}\n\nexport default Footer;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, SvgIcon, Typography, Drawer, Container } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ChevronLeft as ArrowLeftIcon,\n} from 'react-feather';\nimport { Channel } from 'src/types/channel';\nimport { ChannelView } from 'src/types/channelView';\n\n\ninterface MobileLiveDrawerProps {\n isOpen?: boolean;\n onClose?: () => void;\n liveEntryId: string;\n channelView: ChannelView;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n drawer: {\n width: '100%',\n zIndex: theme.zIndex.drawer,\n backgroundColor: theme.palette.background.dark\n },\n arrowLeft: {\n paddingLeft: 0\n\n },\n liveIcon: {\n backgroundColor: theme.palette.secondary.main,\n width: '45px',\n height: '20px',\n borderRadius: '2px',\n textAlign: 'center',\n marginTop: '2rem'\n },\n liveText: {\n color: theme.palette.grey[50],\n fontFamily: 'roboto'\n },\n}));\n\nconst MobileLiveDrawer: FC = ({\n isOpen,\n onClose,\n liveEntryId,\n channelView\n}) => {\n const classes = useStyles();\n\n const closeDrawer = (): void => {\n onClose()\n }\n\n return (\n \n \n \n \n \n \n \n \n \n {channelView.channel_name}\n \n \n \n \n Live\n \n \n \n \n LIVE\n \n \n \n \n \n View live MDB sessions\n \n \n \n \n \n \n\n \n \n \n );\n};\n\nexport default MobileLiveDrawer;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, SvgIcon, Typography } from '@mui/material';\n\ninterface MobileInformationRowProps {\n text: string;\n icon: any;\n}\n\nconst MobileInformationRow: FC = ({\n text,\n icon\n\n}) => {\n return (\n \n \n {icon}\n \n \n {text}\n \n \n );\n};\n\nexport default MobileInformationRow;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, SvgIcon, Link } from '@mui/material';\n\ninterface MobileInformationLinkProps {\n text: string;\n link: string;\n icon: any;\n}\n\nconst MobileInformationLink: FC = ({\n text,\n link,\n icon\n}) => {\n return (\n \n \n {icon}\n \n \n {text}\n \n \n );\n};\n\nexport default MobileInformationLink;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, SvgIcon, Typography, Drawer, Container, Card, CardContent, Divider, Button, Link } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ChevronLeft as ArrowLeftIcon,\n MapPin as MapPinIcon,\n Phone as PhoneIcon,\n Mail as MailIcon,\n Facebook as FacebookIcon,\n Twitter as TwitterIcon,\n Linkedin as LinkedinIcon,\n Instagram as InstagramIcon\n} from 'react-feather';\nimport { ChannelView } from 'src/types/channelView';\nimport MobileInformationRow from './MobileInformationRow';\nimport MobileInformationLink from './MobileInformationLink';\nimport { Channel } from 'src/types/channel';\nimport { useIntl } from 'react-intl';\n\ninterface MobileInformationDrawerProps {\n isOpen?: boolean;\n onClose?: () => void;\n channelView: ChannelView;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n drawer: {\n width: '100%',\n zIndex: theme.zIndex.drawer,\n backgroundColor: theme.palette.background.dark\n },\n arrowLeft: {\n paddingLeft: 0\n },\n infoRow: {\n color: theme.palette.text.secondary\n }\n\n}));\n\nconst MobileInformationDrawer: FC = ({\n isOpen,\n onClose,\n channelView,\n}) => {\n const classes = useStyles();\n const intl = useIntl();\n\n const closeDrawer = (): void => {\n onClose()\n }\n\n if (channelView.channelViewInfo) {\n return (\n \n \n \n \n \n \n \n \n \n {channelView.channel_name}\n \n \n \n \n {intl.formatMessage({ id: 'channel.information' })}\n \n \n \n \n \n \n {intl.formatMessage({ id: 'channel.description' })}\n \n \n \n \n \n {channelView.channelViewInfo.channel_view_description}\n \n\n \n \n \n {channelView.channel_name}\n \n \n \n {\n channelView.channelViewInfo.channelViewInfoLinkList.length > 0\n &&\n \n \n \n \n {intl.formatMessage({ id: 'channel.links' })}\n \n \n \n \n \n {channelView.channelViewInfo.channelViewInfoLinkList.map((link, index) => {\n return (\n \n {\n link.text &&\n \n {link && link.text}\n \n }\n {\n !link.text &&\n \n {link && link.link}\n \n }\n \n )\n })}\n \n \n \n\n }\n\n \n \n \n \n {intl.formatMessage({ id: 'channel.contact' })}\n \n \n \n \n \n {channelView.channelViewInfo.direction && } text={channelView.channelViewInfo.direction}>}\n {channelView.channelViewInfo.phone_number_one && } text={channelView.channelViewInfo.phone_number_one.toString()}>}\n {channelView.channelViewInfo.phone_number_two && } text={channelView.channelViewInfo.phone_number_two.toString()}>}\n {channelView.channelViewInfo.email && } text={channelView.channelViewInfo.email}>}\n \n \n \n \n \n {channelView.channelViewInfo.facebook_account && } text=\"Facebook\" link={channelView.channelViewInfo.facebook_account} />}\n {channelView.channelViewInfo.linkedin_account && } text=\"Linkedin\" link={channelView.channelViewInfo.linkedin_account} />}\n {channelView.channelViewInfo.instagram_account && } text=\"Instagram\" link={channelView.channelViewInfo.instagram_account} />}\n {channelView.channelViewInfo.twitter_account && } text=\"Twitter\" link={channelView.channelViewInfo.twitter_account} />}\n \n \n \n \n \n \n );\n } else return null\n};\n\nexport default MobileInformationDrawer;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Box, Typography, IconButton } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\nimport { Channel } from 'src/types/channel';\nimport { ChannelView } from 'src/types/channelView';\nimport {\n Info as InfoIcon,\n Play as PlayIcon\n} from 'react-feather';\nimport MobileLiveDrawer from './MobileLiveDrawer';\nimport MobileInformationDrawer from './MobileInformationDrawer';\n\ninterface MobilePublicHeaderProps {\n channelView: ChannelView\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n iconButton: {\n desplay: 'flex',\n flexDirection: 'column'\n },\n header: {\n marginTop: 'auto',\n marginBottom: 'auto'\n }\n }),\n);\n\nconst MobilePublicHeader: FC = ({ channelView }) => {\n const classes = useStyles();\n const history = useHistory();\n const [isLiveDrawerOpen, setLiveDrawerOpen] = useState(false);\n const [isInfoDrawerOpen, setInfoDrawerOpen] = useState(false);\n\n const closeLiveDrawer = (): void => {\n setLiveDrawerOpen(false)\n }\n\n const openLiveDrawer = (): void => {\n setLiveDrawerOpen(true)\n }\n\n const closeInfoDrawer = (): void => {\n setInfoDrawerOpen(false)\n }\n\n const openInfoDrawer = (): void => {\n setInfoDrawerOpen(true)\n }\n\n\n return (\n \n \n \n \n \n {channelView.channel_name}\n \n\n \n \n \n \n \n Info\n \n \n \n \n \n Live\n \n \n \n \n );\n}\n\nexport default MobilePublicHeader;","import React from 'react';\nimport type { FC } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\n\nimport {\n Search as SearchIcon,\n} from 'react-feather';\nimport { Box, Input } from '@mui/material';\nimport { useIntl } from 'react-intl';\n\ninterface MobileSearchBarProps {\n setQuery: any\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n iconButton: {\n desplay: 'flex',\n flexDirection: 'column'\n },\n header: {\n marginTop: 'auto',\n marginBottom: 'auto'\n },\n queryField: {\n width: '100%',\n marginLeft: theme.spacing(2),\n },\n }),\n);\n\nconst MobileSearchBar: FC = ({ setQuery }) => {\n const classes = useStyles();\n const history = useHistory();\n const intl = useIntl();\n\n const handleChange = (event): void => {\n const { name, value } = event.target\n setQuery(value)\n }\n\n return (\n \n \n \n \n );\n}\n\nexport default MobileSearchBar;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, Dialog, SvgIcon, Typography, Container, Button, CircularProgress, Menu, ListItemText, Link, ListItemIcon, MenuItem } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n Share2 as ShareIcon,\n Paperclip as PaperClipIcon,\n ChevronDown as ChevronDownIcon,\n Video as VideoIcon\n} from 'react-feather';\nimport { Media } from 'src/types/media';\nimport { KalturaPlayer, KalturaPlayerProvider } from 'src/kaltura-player';\nimport { useSnackbar } from 'notistack';\nimport { ChannelView } from 'src/types/channelView';\nimport PlayerContainer, { EntriesConfig } from 'src/views/VideoPlayer/PlayerContainer';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { LoadingButton } from '@mui/lab';\n\ninterface MobileVideoPlayerModalProps {\n isOpen?: boolean;\n onClose?: () => void;\n media: Media;\n channelView: ChannelView;\n playerTime?: number;\n setPlayerTime?: any;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n dialog: {\n zIndex: theme.zIndex.drawer\n },\n shareButton: {\n color: theme.palette.text.primary,\n '&.MuiButton-root': {\n border: '1px solid'\n }\n }\n}));\n\nconst MobileVideoPlayerModal: FC = ({\n isOpen,\n onClose,\n media,\n channelView,\n playerTime,\n setPlayerTime\n}) => {\n const classes = useStyles();\n\n const closeModal = (): void => {\n onClose()\n }\n const { enqueueSnackbar } = useSnackbar();\n const intl = useIntl();\n const [attachmentLink, setAttachmentLink] = useState()\n const [loadingAttachment, setLoadingAttachment] = useState(true)\n const config = getWSConfig();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const open = Boolean(anchorEl);\n\n const copyURL = (): void => {\n if ((location.search).split('=')[1] != null) {\n navigator.clipboard.writeText(\"www.\" + (location.search).split('=')[1] + \"/\" + media.entry_id);\n }\n else navigator.clipboard.writeText(window.location.origin + \"/channelview/\" + channelView + \"/\" + media.entry_id);\n enqueueSnackbar(intl.formatMessage({ id: 'channel.PublicChannelDetailView.MobileVideoPlayerModal.url_copied' }), { variant: 'success' });\n }\n\n const getAttachmentLink = (): void => {\n let params = { media_id: media.entry_id }\n axios.post(process.env.REACT_APP_SERVER_URL + '/media/1.0/get/attachments', params, config)\n .then(function (response) {\n if (response && response.data) {\n setAttachmentLink(response.data)\n }\n })\n .finally(() => {\n setLoadingAttachment(false)\n });\n }\n\n const handleClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n };\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const entriesConfig: EntriesConfig = {\n entryId: media.entry_id,\n alternateEntryId: \"\"\n };\n\n const getDisabled = () => {\n if (media.download_url || attachmentLink) return false\n return true\n }\n\n useEffect(() => {\n getAttachmentLink();\n }, []);\n\n return (\n \n \n \n \n \n \n {media.title}\n \n {setPlayerTime &&\n \n \n \n }\n {!setPlayerTime &&\n \n \n \n }\n \n {media.description}\n \n \n \n \n \n }\n >\n \n \n {\n (loadingAttachment) &&\n \n \n\n }\n {\n (!loadingAttachment) &&\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\nexport default MobileVideoPlayerModal;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, SvgIcon, Typography, Card, CardContent } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Link as LinkIcon,\n Link2 as Link2Icon\n} from 'react-feather';\nimport { ChannelView } from 'src/types/channelView';\nimport { useSnackbar } from 'notistack';\nimport { Media } from 'src/types/media';\n\ninterface MobileMoreOptionsProps {\n channelView: ChannelView;\n video: Media;\n setMoreOptionsOpen: any;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n card: {\n width: '95%',\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, -25%)',\n height: '50%',\n zIndex: theme.zIndex.drawer,\n boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12)'\n },\n optionsBox: {\n transform: 'translate(0, -50%)',\n display: 'flex',\n gap: 20,\n color: theme.palette.text.secondary,\n },\n}));\n\nconst MobileMoreOptions: FC = ({\n channelView,\n video,\n setMoreOptionsOpen\n}) => {\n const classes = useStyles();\n\n const { enqueueSnackbar } = useSnackbar();\n const copyURL = (): void => {\n navigator.clipboard.writeText(window.location.origin + \"/channelview/\" + channelView.channel_view_id + \"/\" + video.entry_id);\n enqueueSnackbar(\"URL copiada en el portapapeles con éxito\", { variant: 'success' });\n setMoreOptionsOpen(false)\n }\n\n return (\n \n \n \n \n \n \n \n URL\n \n \n \n \n \n \n \n );\n};\n\nexport default MobileMoreOptions;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Card, CardActions, CardContent, CardHeader, CardMedia, IconButton, styled, SvgIcon, Typography } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport ExpandMoreIcon from '@mui/icons-material/ExpandMore';\nimport ChevronRightIcon from '@mui/icons-material/ChevronRight';\nimport {\n PlayCircle as PlayCircleIcon,\n Video as VideoIcon,\n MoreVertical as MoreVerticalIcon\n} from 'react-feather';\nimport type { Media } from 'src/types/media';\nimport MobileVideoPlayerModal from './MobileVideoPlayerModal';\nimport { TreeItem, TreeView } from '@mui/lab';\nimport MobileMoreOptions from './MobileMoreOptions';\nimport { ChannelView } from 'src/types/channelView';\nimport Label from 'src/components/Label';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport VideoPasswordDialog from '../VideoPasswordDialog';\n\ninterface MobilePublicVideoBoxProps {\n className?: string;\n singleMedia?: Media;\n player_uiConfid: string;\n channelView: ChannelView;\n}\n\nconst CardContentNoPadding = styled(CardContent)(`\n &:last-child {\n padding: 1rem;\n }\n`);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexBasis: '80%',\n flexShrink: 0,\n },\n cardHeader: {\n '&.MuiCardHeader-root': {\n padding: 0\n }\n },\n moreIcon: {\n width: '16px',\n height: '16px'\n },\n videoIcon: {\n color: theme.palette.text.secondary\n },\n cardActions: {\n padding: 0,\n marginTop: '1rem',\n position: 'relative'\n },\n title: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n playCircleIcon: {\n position: 'absolute',\n top: \"50%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n width: '2rem',\n color: theme.palette.grey[50],\n },\n firstTreeitem: {\n paddingBottom: '1.5rem',\n '& div': {\n '& div': {\n fontSize: '0.875rem',\n paddingRight: '0.5rem',\n paddingBottom: '0.5rem',\n }\n }\n },\n card: {\n marginLeft: 2,\n marginRight: 2,\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.2), 0px 3px 4px rgba(0, 0, 0, 0.14), 0px 1px 8px rgba(0, 0, 0, 0.12)'\n },\n labelTime: {\n position: 'absolute',\n top: \"85%\",\n left: \"80%\",\n transform: \"Translate(-50%,-50%)\",\n color: theme.palette.grey[50],\n background: theme.palette.text.primary\n },\n}));\n\nconst MobilePublicVideoBox: FC = ({ className, singleMedia, player_uiConfid, channelView, ...rest }) => {\n\n const config = getWSConfig();\n const classes = useStyles();\n const [isModalOpen, setModalOpen] = useState(false);\n const [isMoreOptionsOpen, setMoreOptionsOpen] = useState(false);\n const [playerTime, setPlayerTime] = useState(null);\n const [openVideoPasswordDialog, setOpenVideoPasswordDialog] = useState(false);\n\n const closeModal = (): void => {\n setModalOpen(false)\n }\n\n const openModal = (): void => {\n checkVideoAccess(singleMedia)\n }\n\n const switchMoreOptions = (): void => {\n if (!isMoreOptionsOpen) setMoreOptionsOpen(true)\n else setMoreOptionsOpen(false)\n }\n\n const handleCaptionTap = (captionTime: string): void => {\n var timeSplit = captionTime.split(':');\n var seconds = (+timeSplit[0]) * 60 * 60 + (+timeSplit[1]) * 60 + (+timeSplit[2]);\n var miliseconds = seconds * 1000;\n setPlayerTime(miliseconds);\n openModal();\n }\n\n const checkVideoAccess = (singleMedia: Media): void => {\n let params = { \"kaltura_video_id\": singleMedia.entry_id, \"channel_id\": channelView.channel_id }\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_video/1.0/check/visibility/by/kaltura/id', params, config)\n .then(function (response) {\n if (response.data === \"Public\") {\n setModalOpen(true)\n }\n else if (response.data === \"Password\") {\n setOpenVideoPasswordDialog(true);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n };\n\n const handleOpenVideoIfCorrectPassword = (singlemedia: Media): void => {\n setModalOpen(true);\n };\n\n return (\n \n\n \n {isModalOpen &&\n \n }\n {openVideoPasswordDialog &&\n handleOpenVideoIfCorrectPassword(singleMedia)}\n />\n }\n \n \n \n \n \n \n \n {singleMedia.duration}\n \n \n\n \n\n \n \n \n \n }\n title={\n {singleMedia.title}\n }\n />\n {singleMedia.captions && singleMedia.captions.length > 0 && (\n \n }\n defaultExpandIcon={}\n disableSelection={true}\n >\n \n {\"Encontrado en \" + singleMedia.captions.length + \" subtítulos\"}\n\n }\n >\n {singleMedia.captions.map((caption, index) => {\n return (\n handleCaptionTap(caption.startsAt)}\n label={\n \n {(\"[\" + caption.startsAt + \"]\" + \" \" + caption.line)}\n \n }\n />\n )\n })}\n \n \n \n )}\n {isMoreOptionsOpen && }\n \n \n \n \n \n \n \n \n \n Video\n \n \n \n \n \n \n \n );\n};\n\nexport default MobilePublicVideoBox;\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, SvgIcon, Typography, Card, CardContent } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Link as LinkIcon,\n Link2 as Link2Icon\n} from 'react-feather';\nimport { ChannelView } from 'src/types/channelView';\nimport { useSnackbar } from 'notistack';\nimport { Media } from 'src/types/media';\n\ninterface MobileMoreOptionsDrawerProps {\n channelView: ChannelView;\n video: Media;\n setMoreOptionsOpen: any;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n card: {\n width: '80%',\n position: 'absolute',\n left: '50%',\n transform: 'translate(-50%, 50%)',\n height: '50%',\n zIndex: theme.zIndex.drawer,\n boxShadow: '0px 2px 4px rgba(0, 0, 0, 0.2), 0px 4px 5px rgba(0, 0, 0, 0.14), 0px 1px 10px rgba(0, 0, 0, 0.12)'\n },\n optionsBox: {\n transform: 'translate(0, -25%)',\n display: 'flex',\n gap: 20,\n color: theme.palette.text.secondary,\n },\n}));\n\nconst MobileMoreOptionsDrawer: FC = ({\n channelView,\n video,\n setMoreOptionsOpen\n}) => {\n const classes = useStyles();\n\n const { enqueueSnackbar } = useSnackbar();\n const copyURL = (): void => {\n navigator.clipboard.writeText(window.location.origin + \"/channelview/\" + channelView.channel_view_id + \"/\" + video.entry_id);\n enqueueSnackbar(\"URL copiada en el portapapeles con éxito\", { variant: 'success' });\n setMoreOptionsOpen(false)\n }\n\n return (\n \n \n \n \n \n \n \n URL\n \n \n \n \n \n \n \n );\n};\n\nexport default MobileMoreOptionsDrawer;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { SvgIcon, Box, Typography, IconButton, Card, CardMedia } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\nimport { ChannelView } from 'src/types/channelView';\nimport {\n Video as VideoIcon,\n PlayCircle as PlayCircleIcon,\n MoreVertical as MoreVerticalIcon\n} from 'react-feather';\nimport { Media } from 'src/types/media';\nimport MobileVideoPlayerModal from './MobileVideoPlayerModal';\nimport Label from 'src/components/Label';\nimport MobileMoreOptionsDrawer from './MobileMoreOptionsDrawer';\n\ninterface MobileDrawerVideoCardProps {\n video: Media;\n channelView: ChannelView;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n title: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n videoIcon: {\n color: theme.palette.text.secondary\n },\n playCircleIcon: {\n position: 'absolute',\n pointerEvents: 'none',\n top: \"50%\",\n left: \"50%\",\n transform: \"Translate(-50%,-50%)\",\n width: '2rem',\n color: 'white',\n cursor: 'pointer',\n },\n labelTime: {\n position: 'absolute',\n top: \"85%\",\n left: \"75%\",\n transform: \"Translate(-50%,-50%)\",\n color: theme.palette.grey[50],\n background: theme.palette.text.primary\n },\n moreIcon: {\n width: '16px',\n height: '16px',\n },\n iconButton: {\n padding: 0,\n },\n multiLineEllipsis: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\"\n }\n }),\n);\n\nconst MobileDrawerVideoCard: FC = ({ video, channelView }) => {\n const classes = useStyles();\n const [isModalOpen, setModalOpen] = useState(false);\n const [isMoreOptionsOpen, setMoreOptionsOpen] = useState(false);\n\n const closeModal = (): void => {\n setModalOpen(false)\n }\n\n const openModal = (): void => {\n setModalOpen(true)\n }\n\n const switchMoreOptions = (): void => {\n if (!isMoreOptionsOpen) setMoreOptionsOpen(true)\n else setMoreOptionsOpen(false)\n }\n\n return (\n \n {isMoreOptionsOpen && }\n \n \n \n \n \n \n \n \n \n \n \n Video\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {video.duration}\n \n \n \n \n \n \n \n {video.title}\n \n \n \n \n {video.description}\n \n \n \n \n \n \n \n \n \n\n );\n}\n\nexport default MobileDrawerVideoCard;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { SvgIcon, Box, Typography, IconButton, Card, CardMedia } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\nimport {\n Box as BoxIcon,\n} from 'react-feather';\nimport { Model } from 'src/types/model';\nimport { Channel } from 'src/types/channel';\nimport { FormattedMessage } from 'react-intl';\nimport ModelBlockModalSuscribe from '../ModelBlockModalSuscribe';\n\ninterface MobileDrawerModelCardProps {\n className?: string;\n singleModel?: Model;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n title: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n videoIcon: {\n color: theme.palette.text.secondary\n },\n }),\n);\n\nconst MobileDrawerModelCard: FC = ({ className, singleModel, channel }) => {\n const classes = useStyles();\n const [isOpenlSuscribeDialog, setOpenSuscribeDialog] = useState(false);\n\n const handleOpenSuscribeDialog = (): void => {\n setOpenSuscribeDialog(true);\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n handleOpenSuscribeDialog()}\n />\n \n \n \n \n \n {singleModel.title}\n \n \n \n \n \n \n \n {isOpenlSuscribeDialog &&\n \n }\n \n \n\n );\n}\n\nexport default MobileDrawerModelCard;","import React, { useEffect, useRef, useState } from 'react';\nimport type { FC } from 'react';\nimport { SvgIcon, Box, Typography, IconButton, Card, Chip, CardMedia } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\nimport {\n File as FileIcon,\n} from 'react-feather';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { FileResource } from 'src/types/file_resource';\n\ninterface MobileDrawerFileCardProps {\n file: FileResource;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n title: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n videoIcon: {\n color: theme.palette.text.secondary\n },\n iconButton: {\n padding: 0,\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n minWidth: '9.25rem',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n chip: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n color: 'white',\n cursor: 'pointer',\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n }),\n);\n\nconst MobileDrawerFileCard: FC = ({ file }) => {\n const classes = useStyles();\n const boxRef = useRef(null);\n const titleRef = useRef(null);\n\n const config = getWSConfig();\n\n const getFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/get/file/link/public', params, config)\n .then(function (response) {\n if (response && response.data) {\n window.open(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n };\n\n const openFileLink = (): void => {\n getFileLink();\n };\n\n const [thumbnailFileLink, setThumbnailFileLink] = useState(null);\n const getThumbnailFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/public/get/thumbnail_link', params, config)\n .then(function (response) {\n if (response && response.data) {\n setThumbnailFileLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (file.thumbnail_extension) getThumbnailFileLink();\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {\"File\"}\n \n \n \n \n openFileLink()}\n height={90}\n className={classes.boxFileIcon}>\n {(file.thumbnail_extension) && \n }\n {(!file.thumbnail_extension) && (file.thumbnail_url) && \n }\n {(!file.thumbnail_extension) && (!file.thumbnail_url) && \n \n \n }\n \n \n \n \n \n \n \n {file.title}\n \n \n \n \n \n \n \n \n \n\n );\n}\n\nexport default MobileDrawerFileCard;\n","import { useEffect, type FC, useState } from 'react';\nimport { SvgIcon, Box, Typography, IconButton, Card, CardMedia } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport createStyles from '@mui/styles/createStyles';\nimport {\n ExternalLink as ExternalLinkIcon,\n} from 'react-feather';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\n\ninterface MobileDrawerExternalLinkCardProps {\n external_link: ExternalLinkResource;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n },\n title: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": 2,\n \"-webkit-box-orient\": \"vertical\",\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n videoIcon: {\n color: theme.palette.text.secondary\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n }),\n);\n\nconst MobileDrawerExternalLinkCard: FC = ({ external_link }) => {\n const classes = useStyles();\n\n const openExternalLink = (): void => {\n window.open(external_link.link);\n };\n\n const config = getWSConfig();\n const [externalLinkThumbnailLink, setExternalLinkThumbnailLink] = useState(null);\n const getExternalLinkThumbnailLink = (): void => {\n let params = {}\n params[\"external_link_resource_id\"] = external_link.external_link_resource_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/external_link_resource/1.0/get/thumbnail_link/public', params, config)\n .then(function (response) {\n if (response && response.data) {\n setExternalLinkThumbnailLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (external_link.thumbnail_extension) getExternalLinkThumbnailLink();\n }, []);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {\"Link\"} \n \n \n \n \n openExternalLink()}\n height={90}\n className={classes.boxFileIcon}>\n {(external_link.thumbnail_extension) && \n }\n {(!external_link.thumbnail_extension) && (external_link.thumbnail_url) && \n }\n {(!external_link.thumbnail_extension) && (!external_link.thumbnail_url) && \n \n }\n \n \n \n \n \n \n {external_link.title}\n \n \n \n \n \n \n \n \n \n\n );\n}\n\nexport default MobileDrawerExternalLinkCard;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, SvgIcon, Typography, Drawer, Container } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ChevronLeft as ArrowLeftIcon,\n} from 'react-feather';\nimport MobileSearchBar from './MobileSearchBar';\nimport MobileDrawerVideoCard from './MobileDrawerVideoCard';\nimport { ChannelView, ChannelViewSection, ChannelViewSubsection, ChannelViewTab } from 'src/types/channelView';\nimport { Media } from 'src/types/media';\nimport { useIntl } from 'react-intl';\nimport { FileResource } from 'src/types/file_resource';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport { Model } from 'src/types/model';\nimport { Channel } from 'src/types/channel';\nimport MobileDrawerModelCard from './MobileDrawerModelCard';\nimport MobileDrawerFileCard from './MobileDrawerFileCard';\nimport MobileDrawerExternalLinkCard from './MobileDrawerExternalLinkCard';\n\ninterface MobileSubsectionDrawerProps {\n isOpen?: boolean;\n onClose?: () => void;\n subsection?: ChannelViewSubsection\n tab?: ChannelViewTab\n section?: ChannelViewSection\n media: Media[];\n models: Model[];\n files: FileResource[];\n externalLinks: ExternalLinkResource[];\n channelView: ChannelView;\n channel: Channel;\n beforeName: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n drawer: {\n width: '100%',\n zIndex: theme.zIndex.drawer,\n backgroundColor: theme.palette.background.dark,\n paddingBottom: '3rem'\n },\n arrowLeft: {\n paddingLeft: 0\n },\n}));\n\nconst MobileSubsectionDrawer: FC = ({\n isOpen,\n onClose,\n subsection,\n media,\n models,\n files,\n externalLinks,\n channelView,\n beforeName,\n tab,\n channel,\n section\n}) => {\n const classes = useStyles();\n const [query, setQuery] = useState('');\n const intl = useIntl();\n\n const closeDrawer = (): void => {\n onClose()\n }\n\n\n const applyFiltersForTitle = (item: Media | Model | FileResource | ExternalLinkResource, query: string): Boolean => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let model_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (item[property] !== undefined) {\n model_norm = item[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (model_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n };\n const applyMediasFilters = (medias: Media[], query: string): Media[] => {\n return medias.filter((media) => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let media_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (media[property] !== undefined) {\n media_norm = media[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (media_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n });\n };\n\n const applyModelsFilters = (models: Model[], query: string): Model[] => {\n return models.filter((model) => {\n let matches = applyFiltersForTitle(model, query);\n return matches;\n });\n };\n const applyFilesFilters = (files: FileResource[], query: string): FileResource[] => {\n return files.filter((file) => {\n let matches = applyFiltersForTitle(file, query);\n return matches;\n });\n };\n const applyExternalLinksFilters = (externalLinks: ExternalLinkResource[], query: string): ExternalLinkResource[] => {\n return externalLinks.filter((externalLink) => {\n let matches = applyFiltersForTitle(externalLink, query);\n return matches;\n });\n };\n\n const filteredMedias = (media === undefined) ? [] : applyMediasFilters(media, query);\n const filteredModels = (models === null) ? [] : applyModelsFilters(models, query);\n const filteredFiles = (files === null) ? [] : applyFilesFilters(files, query);\n const filteredExternalLinks = (externalLinks === null) ? [] : applyExternalLinksFilters(externalLinks, query);\n\n const getName = (): string => {\n if (tab) return tab.name\n else if (section) return section.name\n else return subsection.name\n }\n\n return (\n \n \n \n \n \n \n \n \n \n {beforeName}\n \n \n \n \n {getName()}\n \n \n \n \n {intl.formatMessage({ id: 'channel.content' })}\n \n \n \n {filteredMedias.map((video, index) => {\n return (\n \n \n \n )\n })}\n {/* Models rendering */}\n {filteredModels.map((model, index) => {\n return (\n \n \n \n );\n })}\n\n {/* Files rendering */}\n {filteredFiles.map((file, index) => {\n return (\n \n \n \n\n );\n })}\n\n {/* Links rendering */}\n {filteredExternalLinks.map((link, index) => {\n return (\n \n\n \n \n\n );\n })}\n\n \n \n \n );\n};\n\nexport default MobileSubsectionDrawer;","import { useEffect, type FC, useState } from 'react';\nimport { Box, Card, CardActions, CardContent, CardHeader, CardMedia, SvgIcon, Typography, styled } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ExternalLink as ExternalLinkIcon,\n} from 'react-feather';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport axios from 'axios';\nimport { getWSConfig } from 'src/views/utils/Utils';\n\ninterface MobileExternalLinkBoxProps {\n external_link: ExternalLinkResource;\n}\n\nconst CardContentNoPadding = styled(CardContent)(`\n &:last-child {\n padding: 1rem;\n }\n`);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexBasis: '80%',\n flexShrink: 0\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n titleFile: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n card: {\n marginLeft: 2,\n marginRight: 2,\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.2), 0px 3px 4px rgba(0, 0, 0, 0.14), 0px 1px 8px rgba(0, 0, 0, 0.12)'\n },\n cardActions: {\n padding: 0,\n marginTop: '1rem',\n position: 'relative'\n },\n cardHeader: {\n '&.MuiCardHeader-root': {\n padding: 0\n }\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n}));\n\nconst MobileExternalLinkBox: FC = ({ external_link }) => {\n const classes = useStyles();\n const openExternalLink = (): void => {\n window.open(external_link.link);\n };\n\n const config = getWSConfig();\n const [externalLinkThumbnailLink, setExternalLinkThumbnailLink] = useState(null);\n const getExternalLinkThumbnailLink = (): void => {\n let params = {}\n params[\"external_link_resource_id\"] = external_link.external_link_resource_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/external_link_resource/1.0/get/thumbnail_link/public', params, config)\n .then(function (response) {\n if (response && response.data) {\n setExternalLinkThumbnailLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (external_link.thumbnail_extension) getExternalLinkThumbnailLink();\n }, []);\n\n return (\n \n \n \n openExternalLink()}\n maxHeight={140}\n className={classes.boxFileIcon}>\n {(external_link.thumbnail_extension) && \n }\n {(!external_link.thumbnail_extension) && (external_link.thumbnail_url) && \n }\n {(!external_link.thumbnail_extension) && (!external_link.thumbnail_url) && \n \n }\n \n \n \n \n {external_link.title}\n }\n />\n \n \n \n \n \n \n \n \n \n {\"Link\"}\n \n \n \n \n \n \n \n );\n};\n\nexport default MobileExternalLinkBox;\n","import { useState, type FC, useEffect } from 'react';\nimport { Box, Card, CardActions, CardContent, CardHeader, CardMedia, Chip, SvgIcon, Typography, styled } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n File as FileIcon,\n} from 'react-feather';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport axios from 'axios';\nimport { FileResource } from 'src/types/file_resource';\n\ninterface MobileFileBoxProps {\n file: FileResource;\n}\n\nconst CardContentNoPadding = styled(CardContent)(`\n &:last-child {\n padding: 1rem;\n }\n`);\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexBasis: '80%',\n flexShrink: 0\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n titleFile: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n boxFileIcon: {\n position: 'relative',\n display: \"flex\",\n backgroundColor: theme.palette.neutral[400],\n aspectRatio: '16 / 9',\n justifyContent: \"center\",\n alignItems: \"center\",\n borderRadius: \"0.25rem\",\n cursor: 'pointer',\n width: '100%',\n height: 'auto',\n },\n fileIcon: {\n width: '5rem',\n height: '5rem',\n color: theme.palette.primary.contrastText,\n },\n card: {\n marginLeft: 2,\n marginRight: 2,\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.2), 0px 3px 4px rgba(0, 0, 0, 0.14), 0px 1px 8px rgba(0, 0, 0, 0.12)'\n },\n cardActions: {\n padding: 0,\n marginTop: '1rem',\n position: 'relative'\n },\n cardHeader: {\n '&.MuiCardHeader-root': {\n padding: 0\n }\n },\n chip: {\n position: 'absolute',\n top: theme.spacing(1),\n right: theme.spacing(1),\n color: 'white',\n cursor: 'pointer',\n },\n image: {\n width: '100%',\n height: 'auto',\n aspectRatio: '16 / 9',\n cursor: 'pointer',\n backgroundColor: theme.palette.background.dark,\n },\n}));\n\n\nconst MobileFileBox: FC = ({ file }) => {\n const classes = useStyles();\n const config = getWSConfig();\n\n const getFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/get/file/link/public', params, config)\n .then(function (response) {\n if (response && response.data) {\n window.open(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n };\n\n const openFileLink = (): void => {\n getFileLink();\n };\n\n const [thumbnailFileLink, setThumbnailFileLink] = useState(null);\n const getThumbnailFileLink = (): void => {\n let params = {}\n params[\"file_id\"] = file.file_id;\n axios.post(process.env.REACT_APP_SERVER_URL + '/file_resource/1.0/public/get/thumbnail_link', params, config)\n .then(function (response) {\n if (response && response.data) {\n setThumbnailFileLink(response.data);\n }\n })\n .catch(function (error) {\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n return null;\n });\n };\n useEffect(() => {\n if (file.thumbnail_extension) getThumbnailFileLink();\n }, []);\n\n return (\n \n \n \n openFileLink()}\n maxHeight={140}\n className={classes.boxFileIcon}>\n {(file.thumbnail_extension) && \n }\n {(!file.thumbnail_extension) && (file.thumbnail_url) && \n }\n {(!file.thumbnail_extension) && (!file.thumbnail_url) && \n \n \n }\n \n \n \n \n \n {file.title}\n }\n />\n \n \n \n \n \n \n\n \n \n \n {\"File\"}\n \n \n \n \n \n \n \n );\n};\n\nexport default MobileFileBox;\n","import { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Card, CardActions, CardContent, CardHeader, CardMedia, SvgIcon, Typography, styled } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Box as BoxIcon,\n} from 'react-feather';\nimport { Model } from 'src/types/model';\nimport { Channel } from 'src/types/channel';\nimport { FormattedMessage } from 'react-intl';\nimport ModelBlockModalSuscribe from '../ModelBlockModalSuscribe';\n\ninterface MobilePublicModelBoxProps {\n className?: string;\n singleModel?: Model;\n channel: Channel;\n}\n\nconst CardContentNoPadding = styled(CardContent)(`\n &:last-child {\n padding: 1rem;\n }\n`);\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n flexBasis: '80%',\n flexShrink: 0\n },\n boxIcon: {\n position: 'relative',\n color: theme.palette.text.secondary,\n float: 'left',\n },\n titleFile: {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n height: '2.5rem',\n wordBreak: 'break-word'\n },\n card: {\n marginLeft: 2,\n marginRight: 2,\n boxShadow: '0px 3px 3px rgba(0, 0, 0, 0.2), 0px 3px 4px rgba(0, 0, 0, 0.14), 0px 1px 8px rgba(0, 0, 0, 0.12)'\n },\n cardActions: {\n padding: 0,\n marginTop: '1rem',\n position: 'relative'\n },\n cardHeader: {\n '&.MuiCardHeader-root': {\n padding: 0\n }\n },\n imageWithoutAccess: {\n height: '140',\n width: '100%',\n aspectRatio: '16 / 9',\n },\n}));\n\n\nconst MobilePublicModelBox: FC = ({ className, singleModel, channel }) => {\n const [isOpenlSuscribeDialog, setOpenSuscribeDialog] = useState(false);\n const classes = useStyles();\n\n const handleOpenSuscribeDialog = (): void => {\n setOpenSuscribeDialog(true);\n };\n\n\n return (\n \n \n \n handleOpenSuscribeDialog()}\n component=\"img\"\n height=\"140\"\n image={singleModel.thumbnail_url}\n />\n\n \n \n \n {singleModel.title}\n }\n />\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n {isOpenlSuscribeDialog &&\n \n }\n \n \n );\n};\n\nexport default MobilePublicModelBox;\n","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Typography, Stack, Button, Tab, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport axios from 'axios';\nimport type { Media } from 'src/types/media';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { ChannelView, ChannelViewSection, ChannelViewSubsection, ChannelViewTab } from 'src/types/channelView';\nimport { Model } from 'src/types/model';\nimport MobilePublicVideoBox from './MobilePublicVideoBox';\nimport MobileSubsectionDrawer from './MobileSubsectionDrawer';\nimport { useIntl } from 'react-intl';\nimport { Channel } from 'src/types/channel';\nimport { FileResource } from 'src/types/file_resource';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport MobileExternalLinkBox from './MobileExternalLinkBox';\nimport MobileFileBox from './MobileFileBox';\nimport MobilePublicModelBox from './MobilePublicModelBox';\n\ninterface MobileSubsectionContentProps {\n subsection: ChannelViewSubsection;\n player_uiConfid: string\n query: string;\n channelView: ChannelView;\n channel: Channel;\n sectionName: string;\n}\nconst useStyles = makeStyles((theme) => ({\n stack: {\n overflowX: 'scroll',\n marginTop: '1rem',\n paddingBottom: '1rem'\n },\n seeAll: {\n color: theme.palette.text.secondary,\n marginLeft: 'auto',\n paddingTop: '4px',\n paddingRight: 0\n }\n}));\n\nconst MobileSubsectionContent: FC = ({ subsection, player_uiConfid, query, channelView, channel, sectionName }) => {\n const classes = useStyles();\n const config = getWSConfig();\n const [media, setMedia] = useState();\n const [models, setModels] = useState([]);\n const [files, setFiles] = useState([]);\n const [externalLinks, setExternalLinks] = useState([]);\n const [loadingVideos, setLoadingVideos] = useState(true);\n const [loadingModels, setLoadingModels] = useState(true);\n const [loadingFiles, setLoadingFiles] = useState(true);\n const [loadingExternalLinks, setLoadingExternalLinks] = useState(true);\n const intl = useIntl();\n const [isDrawerOpen, setDrawerOpen] = useState(false);\n\n const getSubsectionContent = (): void => {\n let params = {};\n params[\"channel_view_sub_section_id\"] = subsection.channel_view_sub_section_id\n params[\"videos\"] = true\n params[\"models\"] = false\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_view_sub_section/1.0/public/list/content', params, config)\n .then(function (response) {\n let data: Media[] = response.data;\n setMedia(data)\n setLoadingVideos(false)\n })\n .catch(function (error) {\n console.log(error.response);\n });\n };\n\n const searchModelsSimple = (): void => {\n let modelsList: Model[] = [];\n for (let element of subsection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n setModels(modelsList);\n setLoadingModels(false);\n }\n\n const searchFilesSimple = (): void => {\n let filesList: FileResource[] = [];\n for (let element of subsection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n setFiles(filesList);\n setLoadingFiles(false);\n };\n\n const searchExternalLinksSimple = (): void => {\n let externalLinksList: ExternalLinkResource[] = [];\n for (let element of subsection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n setExternalLinks(externalLinksList);\n setLoadingExternalLinks(false);\n }\n\n const searchContent = (): any => {\n setLoadingVideos(true);\n setLoadingModels(true);\n setLoadingFiles(true);\n setLoadingExternalLinks(true);\n\n getSubsectionContent();\n searchModelsSimple();\n searchFilesSimple();\n searchExternalLinksSimple();\n }\n\n useEffect(() => {\n searchContent()\n }, [subsection, query]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const openSubsectionVideosDrawer = (): void => {\n setDrawerOpen(true)\n }\n const closeSubsectionVideosDrawer = (): void => {\n setDrawerOpen(false)\n }\n\n const applyFiltersForTitle = (item: Media | Model | FileResource | ExternalLinkResource, query: string): Boolean => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let model_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (item[property] !== undefined) {\n model_norm = item[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (model_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n };\n const applyMediasFilters = (medias: Media[], query: string): Media[] => {\n return medias.filter((media) => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let media_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (media[property] !== undefined) {\n media_norm = media[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (media_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n });\n };\n\n const applyModelsFilters = (models: Model[], query: string): Model[] => {\n return models.filter((model) => {\n let matches = applyFiltersForTitle(model, query);\n return matches;\n });\n };\n const applyFilesFilters = (files: FileResource[], query: string): FileResource[] => {\n return files.filter((file) => {\n let matches = applyFiltersForTitle(file, query);\n return matches;\n });\n };\n const applyExternalLinksFilters = (externalLinks: ExternalLinkResource[], query: string): ExternalLinkResource[] => {\n return externalLinks.filter((externalLink) => {\n let matches = applyFiltersForTitle(externalLink, query);\n return matches;\n });\n };\n\n const filteredMedias = (media === undefined) ? [] : applyMediasFilters(media, query);\n const filteredModels = (models === null) ? [] : applyModelsFilters(models, query);\n const filteredFiles = (files === null) ? [] : applyFilesFilters(files, query);\n const filteredExternalLinks = (externalLinks === null) ? [] : applyExternalLinksFilters(externalLinks, query);\n\n if (loadingVideos || loadingFiles || loadingModels || loadingExternalLinks) {\n return (\n
\n \n
\n );\n } else {\n return (\n \n \n \n {subsection.name}\n \n \n \n \n {filteredMedias.map((video, index) => {\n return (\n \n );\n })}\n \n {/* Models rendering */}\n {filteredModels.map((model, index) => {\n return (\n \n );\n })}\n\n {/* Files rendering */}\n {filteredFiles.map((file, index) => {\n return (\n \n );\n })}\n\n {/* Links rendering */}\n {filteredExternalLinks.map((link, index) => {\n return (\n \n );\n })}\n \n {isDrawerOpen && \n }\n \n );\n }\n};\n\nexport default MobileSubsectionContent;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, DialogContent, SvgIcon, Typography, Drawer, Container } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ChevronLeft as ArrowLeftIcon,\n} from 'react-feather';\nimport MobileSearchBar from './MobileSearchBar';\nimport { ChannelView, ChannelViewSection, ChannelViewTab } from 'src/types/channelView';\nimport { Channel } from 'src/types/channel';\nimport MobileSubsectionContent from './MobileSubsectionContent';\n\n\ninterface MobileSectionDrawerProps {\n isOpen?: boolean;\n onClose?: () => void;\n section: ChannelViewSection;\n player_uiConfid: string;\n channelView: ChannelView;\n channel: Channel;\n tabName: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n drawer: {\n width: '100%',\n zIndex: theme.zIndex.drawer,\n backgroundColor: theme.palette.background.dark\n },\n arrowLeft: {\n paddingLeft: 0\n },\n}));\n\nconst MobileSectionDrawer: FC = ({\n isOpen,\n onClose,\n section,\n player_uiConfid,\n channelView,\n channel,\n tabName\n}) => {\n const classes = useStyles();\n const closeDrawer = (): void => {\n onClose()\n }\n const [query, setQuery] = useState('');\n\n return (\n \n \n \n \n \n \n \n \n \n \n {tabName}\n \n \n \n \n {section.name}\n \n \n \n \n {section.channelViewSubSectionList.map((subsection, index) => {\n return (\n \n )\n })}\n \n\n \n\n \n \n );\n};\n\nexport default MobileSectionDrawer;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Typography, Stack, Button, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport axios from 'axios';\nimport type { Media } from 'src/types/media';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { ChannelView, ChannelViewSection } from 'src/types/channelView';\nimport { Model } from 'src/types/model';\nimport MobilePublicVideoBox from './MobilePublicVideoBox';\nimport MobileSectionDrawer from './MobileSectionDrawer';\nimport { useIntl } from 'react-intl';\nimport MobileSubsectionDrawer from './MobileSubsectionDrawer';\nimport { FileResource } from 'src/types/file_resource';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport MobileExternalLinkBox from './MobileExternalLinkBox';\nimport { Channel } from 'src/types/channel';\nimport MobileFileBox from './MobileFileBox';\nimport MobilePublicModelBox from './MobilePublicModelBox';\n\ninterface MobileTabContentProps {\n section: ChannelViewSection;\n player_uiConfid: string\n query: string;\n channelView: ChannelView;\n channel: Channel;\n tabName: string;\n}\nconst useStyles = makeStyles((theme) => ({\n stack: {\n overflowX: 'scroll',\n marginTop: '1rem',\n paddingBottom: '1rem'\n },\n seeAll: {\n color: theme.palette.text.secondary,\n marginLeft: 'auto',\n paddingTop: '4px',\n paddingRight: 0\n }\n}));\n\nconst MobileSectionContent: FC = ({ section, player_uiConfid, query, channelView, channel, tabName }) => {\n const classes = useStyles();\n const config = getWSConfig();\n const [media, setMedia] = useState();\n const [models, setModels] = useState([]);\n const [files, setFiles] = useState([]);\n const [externalLinks, setExternalLinks] = useState([]);\n const [loadingVideos, setLoadingVideos] = useState(true);\n const [loadingModels, setLoadingModels] = useState(true);\n const [loadingFiles, setLoadingFiles] = useState(true);\n const [loadingExternalLinks, setLoadingExternalLinks] = useState(true);\n const intl = useIntl();\n const [isSubsectionDrawerOpen, setSubsectionDrawerOpen] = useState(false)\n const [isDrawerOpen, setDrawerOpen] = useState(false);\n\n const getSectionContent = (): void => {\n let params = {};\n params[\"channel_view_section_id\"] = section.channel_view_section_id\n params[\"videos\"] = true\n params[\"models\"] = false\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_view_section/1.0/public/list/content', params, config)\n .then(function (response) {\n let data: Media[] = response.data;\n setMedia(data)\n setLoadingVideos(false)\n })\n .catch(function (error) {\n console.log(error.response);\n });\n };\n\n const searchModelsSimple = (): void => {\n let modelsList: Model[] = [];\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n }\n setModels(modelsList);\n setLoadingModels(false);\n }\n\n const searchFilesSimple = (): void => {\n let filesList: FileResource[] = [];\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n }\n setFiles(filesList);\n setLoadingFiles(false);\n };\n\n const searchExternalLinksSimple = (): void => {\n let externalLinksList: ExternalLinkResource[] = [];\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n }\n setExternalLinks(externalLinksList);\n setLoadingExternalLinks(false);\n }\n\n const searchContent = (): any => {\n setLoadingVideos(true);\n setLoadingModels(true);\n setLoadingFiles(true);\n setLoadingExternalLinks(true);\n\n getSectionContent();\n searchModelsSimple();\n searchFilesSimple();\n searchExternalLinksSimple();\n }\n\n useEffect(() => {\n searchContent()\n }, [section, query]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const openSubsectionDrawer = (): void => {\n if (section.channelViewSubSectionList.length == 1) {\n if (section.channelViewSubSectionList[0].name === \"Default\") setSubsectionDrawerOpen(true)\n else setDrawerOpen(true)\n } else setDrawerOpen(true)\n }\n const closeSubsectionDrawer = (): void => {\n if (section.channelViewSubSectionList.length == 1) {\n if (section.channelViewSubSectionList[0].name == \"Default\") setSubsectionDrawerOpen(false)\n else setDrawerOpen(false)\n } else setDrawerOpen(false)\n }\n\n const applyFiltersForTitle = (item: Media | Model | FileResource | ExternalLinkResource, query: string): Boolean => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let model_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (item[property] !== undefined) {\n model_norm = item[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (model_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n };\n const applyMediasFilters = (medias: Media[], query: string): Media[] => {\n return medias.filter((media) => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let media_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (media[property] !== undefined) {\n media_norm = media[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (media_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n });\n };\n\n const applyModelsFilters = (models: Model[], query: string): Model[] => {\n return models.filter((model) => {\n let matches = applyFiltersForTitle(model, query);\n return matches;\n });\n };\n const applyFilesFilters = (files: FileResource[], query: string): FileResource[] => {\n return files.filter((file) => {\n let matches = applyFiltersForTitle(file, query);\n return matches;\n });\n };\n const applyExternalLinksFilters = (externalLinks: ExternalLinkResource[], query: string): ExternalLinkResource[] => {\n return externalLinks.filter((externalLink) => {\n let matches = applyFiltersForTitle(externalLink, query);\n return matches;\n });\n };\n\n const filteredMedias = (media === undefined) ? [] : applyMediasFilters(media, query);\n const filteredModels = (models === null) ? [] : applyModelsFilters(models, query);\n const filteredFiles = (files === null) ? [] : applyFilesFilters(files, query);\n const filteredExternalLinks = (externalLinks === null) ? [] : applyExternalLinksFilters(externalLinks, query);\n\n if (loadingVideos || loadingFiles || loadingModels || loadingExternalLinks) {\n return (\n
\n \n
\n );\n } else {\n return (\n \n \n \n {section.name}\n \n \n \n \n {filteredMedias.map((video, index) => {\n return (\n \n );\n })}\n\n {/* Models rendering */}\n {filteredModels.map((model, index) => {\n return (\n \n );\n })}\n\n {/* Files rendering */}\n {filteredFiles.map((file, index) => {\n return (\n \n );\n })}\n\n {/* Links rendering */}\n {filteredExternalLinks.map((link, index) => {\n return (\n \n );\n })}\n \n {isDrawerOpen && }\n \n \n );\n }\n};\n\nexport default MobileSectionContent;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, DialogContent, SvgIcon, Typography, Drawer, Container } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n ChevronLeft as ArrowLeftIcon,\n} from 'react-feather';\nimport MobileSearchBar from './MobileSearchBar';\nimport { ChannelView, ChannelViewTab } from 'src/types/channelView';\nimport MobileSectionContent from './MobileSectionContent';\nimport { Channel } from 'src/types/channel';\n\n\ninterface MobileTabDrawerProps {\n isOpen?: boolean;\n onClose?: () => void;\n tab: ChannelViewTab;\n player_uiConfid: string;\n channelView: ChannelView;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n drawer: {\n width: '100%',\n zIndex: theme.zIndex.drawer,\n backgroundColor: theme.palette.background.dark\n },\n arrowLeft: {\n paddingLeft: 0\n },\n}));\n\nconst MobileTabDrawer: FC = ({\n isOpen,\n onClose,\n tab,\n player_uiConfid,\n channelView,\n channel\n}) => {\n const classes = useStyles();\n const closeDrawer = (): void => {\n onClose()\n }\n const [query, setQuery] = useState('');\n\n return (\n \n \n \n \n \n \n \n \n \n \n {channelView.channel_name}\n \n \n \n \n {tab.name}\n \n \n \n \n {tab.channelViewSectionList.map((section, index) => {\n return (\n isSection={true}\n )\n })}\n \n\n \n\n \n \n );\n};\n\nexport default MobileTabDrawer;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, Stack, Button, Typography, CircularProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport axios from 'axios';\nimport type { Media } from 'src/types/media';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { ChannelView, ChannelViewTab } from 'src/types/channelView';\nimport MobilePublicVideoBox from './MobilePublicVideoBox';\nimport MobileTabDrawer from './MobileTabDrawer';\nimport { useIntl } from 'react-intl';\nimport MobileSubsectionDrawer from './MobileSubsectionDrawer';\nimport { Model } from 'src/types/model';\nimport { FileResource } from 'src/types/file_resource';\nimport { ExternalLinkResource } from 'src/types/external_link_resource';\nimport { Channel } from 'src/types/channel';\nimport MobileExternalLinkBox from './MobileExternalLinkBox';\nimport MobilePublicModelBox from './MobilePublicModelBox';\nimport MobileFileBox from './MobileFileBox';\n\ninterface MobileTabContentProps {\n tab: ChannelViewTab;\n player_uiConfid: string;\n query: string;\n channelView: ChannelView;\n channel: Channel;\n setContentLoaded: any\n}\nconst useStyles = makeStyles((theme) => ({\n stack: {\n overflowX: 'scroll',\n marginTop: '1rem',\n paddingBottom: '1rem'\n },\n seeAll: {\n color: theme.palette.text.secondary,\n marginLeft: 'auto',\n paddingTop: '4px',\n paddingRight: 0\n }\n}));\n\nconst MobileTabContent: FC = ({ tab, player_uiConfid, query, channelView, channel, setContentLoaded }) => {\n const intl = useIntl();\n const classes = useStyles();\n const config = getWSConfig();\n const [media, setMedia] = useState();\n const [models, setModels] = useState([]);\n const [files, setFiles] = useState([]);\n const [externalLinks, setExternalLinks] = useState([]);\n const [isDrawerOpen, setDrawerOpen] = useState(false);\n const [isSubsectionDrawerOpen, setSubsectionDrawerOpen] = useState(false)\n const [loadingVideos, setLoadingVideos] = useState(true);\n const [loadingModels, setLoadingModels] = useState(true);\n const [loadingFiles, setLoadingFiles] = useState(true);\n const [loadingExternalLinks, setLoadingExternalLinks] = useState(true);\n\n const getTabContent = (): void => {\n let params = {};\n params[\"channel_view_tab_id\"] = tab.channel_view_tab_id\n params[\"videos\"] = true\n params[\"models\"] = false\n if (query && query != '') params[\"search_term\"] = query\n\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_view_tab/1.0/public/search/media', params, config)\n .then(function (response) {\n let data: Media[] = response.data;\n\n setMedia(data);\n setLoadingVideos(false);\n setContentLoaded(true);\n })\n .catch(function (error) {\n setLoadingVideos(false);\n console.log(\"error loading tab content from WS\");\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n });\n };\n\n const openTabDrawer = (): void => {\n if (tab.channelViewSectionList.length == 1) {\n if (tab.channelViewSectionList[0].channelViewSubSectionList.length === 1) {\n if ((tab.channelViewSectionList[0].channelViewSubSectionList[0].name == \"Default\") && tab.channelViewSectionList[0].name == \"Default\") setSubsectionDrawerOpen(true)\n else setDrawerOpen(true)\n }\n else {\n setDrawerOpen(true)\n }\n } else setDrawerOpen(true)\n }\n\n const closeTabDrawer = (): void => {\n if (tab.channelViewSectionList.length == 1) {\n if (tab.channelViewSectionList[0].channelViewSubSectionList.length === 1) {\n if ((tab.channelViewSectionList[0].channelViewSubSectionList[0].name == \"Default\") && tab.channelViewSectionList[0].name == \"Default\") setSubsectionDrawerOpen(false)\n else setDrawerOpen(false)\n }\n else {\n setDrawerOpen(false)\n }\n } else setDrawerOpen(false)\n }\n\n const searchModelsSimple = (): void => {\n let modelsList: Model[] = [];\n\n if (tab.channel_view_tab_id !== undefined) {\n for (let section of tab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionMode3DList) {\n modelsList.push(element.model_3D_entity);\n }\n }\n }\n }\n\n setModels(modelsList);\n setLoadingModels(false);\n }\n\n const searchFilesSimple = (): void => {\n let filesList: FileResource[] = [];\n if (tab.channel_view_tab_id !== undefined) {\n for (let section of tab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionFileResourceList) {\n filesList.push(element.fileResourceEntity);\n }\n }\n }\n }\n setFiles(filesList);\n setLoadingFiles(false);\n }\n\n const searchExternalLinksSimple = (): void => {\n let externalLinksList: ExternalLinkResource[] = [];\n if (tab.channel_view_tab_id !== undefined) {\n for (let section of tab.channelViewSectionList) {\n for (let subsection of section.channelViewSubSectionList) {\n for (let element of subsection.channelViewSubSectionExternalLinkResourceList) {\n externalLinksList.push(element.externalLinkResourceEntity);\n }\n }\n }\n }\n setExternalLinks(externalLinksList);\n setLoadingExternalLinks(false);\n }\n\n const searchContent = (): any => {\n setLoadingVideos(true);\n setLoadingModels(true);\n setLoadingFiles(true);\n setLoadingExternalLinks(true);\n\n getTabContent();\n searchModelsSimple();\n searchFilesSimple();\n searchExternalLinksSimple();\n }\n\n const applyFiltersForTitle = (item: Model | FileResource | ExternalLinkResource, query: string): Boolean => {\n let matches = true;\n if (query) {\n const properties = ['title'];\n let containsQuery = false;\n let query_norm;\n let model_norm;\n query_norm = query.normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n properties.forEach((property) => {\n if (item[property] !== undefined) {\n model_norm = item[property].normalize('NFD').replace(/[\\u0300-\\u036f]/g, \"\");\n if (model_norm.toLowerCase().includes(query_norm.toLowerCase())) {\n containsQuery = true;\n }\n }\n });\n if (!containsQuery) {\n matches = false;\n }\n }\n return matches;\n }\n\n const applyModelsFilters = (models: Model[], query: string): Model[] => {\n return models.filter((model) => {\n let matches = applyFiltersForTitle(model, query);\n return matches;\n });\n };\n const applyFilesFilters = (files: FileResource[], query: string): FileResource[] => {\n return files.filter((file) => {\n let matches = applyFiltersForTitle(file, query);\n return matches;\n });\n };\n const applyExternalLinksFilters = (externalLinks: ExternalLinkResource[], query: string): ExternalLinkResource[] => {\n return externalLinks.filter((externalLink) => {\n let matches = applyFiltersForTitle(externalLink, query);\n return matches;\n });\n };\n\n const filteredModels = (models === null) ? [] : applyModelsFilters(models, query);\n const filteredFiles = (files === null) ? [] : applyFilesFilters(files, query);\n const filteredExternalLinks = (externalLinks === null) ? [] : applyExternalLinksFilters(externalLinks, query);\n\n useEffect(() => {\n const timeoutId = setTimeout(() => {\n searchContent()\n }, 1000);\n return () => clearTimeout(timeoutId);\n }, [tab, query]);// eslint-disable-line react-hooks/exhaustive-deps\n\n useEffect(() => {\n searchContent()\n }, []);// eslint-disable-line react-hooks/exhaustive-deps\n\n if (loadingVideos || loadingFiles || loadingModels || loadingExternalLinks) {\n return (\n
\n \n
\n );\n } else {\n return (\n \n \n \n \n \n {tab.name}\n \n \n \n \n {media.map((mediaItem, index) => {\n return (\n \n );\n })}\n\n {/* Models rendering */}\n {filteredModels.map((model, index) => {\n return (\n \n );\n })}\n\n {/* Files rendering */}\n {filteredFiles.map((file, index) => {\n return (\n \n );\n })}\n\n {/* Links rendering */}\n {filteredExternalLinks.map((link, index) => {\n return (\n \n );\n })}\n \n \n );\n }\n\n};\n\nexport default MobileTabContent;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box } from '@mui/material';\nimport { ChannelView } from 'src/types/channelView';\nimport MobileTabContent from './MobileTabContent';\nimport { Channel } from 'src/types/channel';\n\ninterface MobileContentProps {\n channelView: ChannelView\n query: string\n channel: Channel\n setContentLoaded: any\n}\n\nconst MobileContent: FC = ({ channelView, query, channel, setContentLoaded }) => {\n return (\n \n {channelView.channelViewTabList.map((tab, index) => {\n if (tab.sequence != 900 && tab.sequence != 901 && (tab.isVisibleInPublicChannelView!== false)) {\n return (\n \n )\n } else return null\n })}\n \n );\n};\n\nexport default MobileContent;","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport {\n Menu,\n IconButton,\n SvgIcon,\n MenuItem,\n Box,\n Hidden,\n Typography,\n} from '@mui/material';\n\nimport makeStyles from '@mui/styles/makeStyles';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\n\nimport {\n Globe as GlobeIcon,\n} from 'react-feather';\n\nimport PropTypes from 'prop-types';\nimport useSettings from 'src/hooks/useSettings';\nimport { FormattedMessage } from 'react-intl';\n\ninterface MobileLanguageSelectionProps {\n className?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n arrowButton: {\n marginLeft: '-0.5rem',\n marginTop: '-0.5rem'\n },\n primary:{\n color: theme.palette.primary.main\n }\n}));\n\nconst MobileLanguageSelection: FC = ({ className, ...rest }) => {\n const [anchorEl, setAnchorEl] = React.useState(null);\n const { settings, saveSettings } = useSettings();\n const classes = useStyles();\n const [values, setValues] = useState({\n language: settings.language\n });\n \n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleSwitchLanguage = (new_language) => {\n setAnchorEl(null);\n saveSettings({\n ...values,\n language: new_language,\n });\n };\n\n const getLanguageString = (language:string ): any => {\n if (language == \"Español\") {\n if (settings.language == \"es\") return {language}\n else return {language}\n }\n else {\n if (settings.language == \"en\") return {language}\n else return {language}\n }\n }\n\n return (\n \n \n \n \n \n \n \n handleSwitchLanguage('es')}>\n \n {getLanguageString(\"Español\")}\n \n \n handleSwitchLanguage('en')}>\n \n {getLanguageString(\"English\")}\n \n \n \n \n );\n};\n\nMobileLanguageSelection.propTypes = {\n className: PropTypes.string,\n};\n\nexport default MobileLanguageSelection;","import React from 'react';\nimport createStyles from '@mui/styles/createStyles';\nimport type { FC } from 'react';\nimport PeopleAltOutlinedIcon from '@mui/icons-material/Login';\nimport { useHistory } from 'react-router-dom';\nimport { Button, SvgIcon, AppBar, Toolbar, Hidden, Box, Stack } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { ChannelView } from 'src/types/channelView';\nimport PublicLogo from 'src/components/PublicLogo';\nimport { Channel } from 'src/types/channel';\nimport { FormattedMessage } from 'react-intl';\nimport LanguageSelection from 'src/views/auth/LanguageSelection';\nimport MobileLanguageSelection from './MobileLanguageSelection';\nimport { Link } from 'react-router-dom';\n\ninterface MobilePublicHeaderBarProps {\n channelView: ChannelView;\n channel: Channel;\n}\n\nconst useStyles = makeStyles((theme) =>\n createStyles({\n root: {\n flexGrow: 1,\n },\n loginButton: {\n backgroundColor: theme.palette.background.default,\n color: '#535961'\n },\n appBar: {\n backgroundColor: theme.palette.background.default\n }\n }),\n);\n\nconst MobilePublicHeaderBar: FC = ({ channelView, channel }) => {\n const classes = useStyles();\n const history = useHistory();\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\nexport default MobilePublicHeaderBar;","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, CircularProgress, Container } from '@mui/material';\nimport { Channel } from 'src/types/channel';\nimport { ChannelView, ChannelViewTab } from 'src/types/channelView';\nimport MobilePublicHeader from './MobilePublicHeader';\nimport MobileSearchBar from './MobileSearchBar';\nimport MobileContent from './MobileContent';\nimport makeStyles from '@mui/styles/makeStyles';\nimport { getWSConfig } from 'src/views/utils/Utils';\nimport { Media } from 'src/types/media';\nimport MobilePublicHeaderBar from './MobilePublicHeaderBar';\n\ninterface MobileViewProps {\n channel: Channel;\n channelView: ChannelView;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n container: {\n minHeight: '100vh',\n width: '100%'\n },\n circularProgress: {\n marginTop: '50%'\n }\n}));\n\nconst MobileView: FC = ({ channel, channelView }) => {\n const [query, setQuery] = useState('');\n const [isContentLoaded, setContentLoaded] = useState(true)\n const classes = useStyles();\n const config = getWSConfig();\n const tabsLoaded: Map = new Map()\n\n if (channelView) {\n if (isContentLoaded) {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n );\n } else {\n return (\n \n \n \n )\n }\n } else return null\n}\n\nexport default MobileView;","import React, { useState, useEffect, useCallback } from 'react';\nimport type { FC } from 'react';\nimport { Box, Container, Hidden, useMediaQuery, useTheme } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport axios from 'axios';\n\nimport Page from 'src/components/Page';\nimport { getAndStoreKalturaVideoPlayerIdByChannelId, getWSConfig } from 'src/views/utils/Utils';\nimport { useParams } from 'react-router-dom';\nimport type { ChannelView, ChannelViewInfoType } from 'src/types/channelView';\nimport useIsMountedRef from 'src/hooks/useIsMountedRef';\nimport type { Channel } from 'src/types/channel'\nimport PublicChannelViewTabs from './PublicChannelViewTabs';\nimport PublicHeader from './PublicHeader';\nimport PublicHeaderBar from './PublicHeaderBar';\nimport Footer from './Footer';\nimport type { Media } from 'src/types/media';\nimport MobileView from './mobile/MobileView';\nimport VideoPlayerDialog from 'src/views/VideoPlayer/VideoPlayerDialog';\n\ninterface PublicChannelDetailViewProps {\n subdomainchannel?: number,\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n backgroundColor: theme.palette.background.dark,\n minHeight: '100vh',\n paddingBottom: theme.spacing(3)\n },\n background: {\n backgroundColor: theme.palette.background.dark,\n }\n}));\n\nconst PublicChannelDetailView: FC = ({\n subdomainchannel,\n}) => {\n const classes = useStyles();\n const [channelView, setChannelView] = useState()\n const [channel, setChannel] = useState()\n const [loading, setLoading] = useState(true);\n const config = getWSConfig();\n const paramToken = useParams();\n const [isVideoPlayDialogOpen, setVideoPlayDialogOpen] = useState(false);\n const [mediaToModal, setMediaToModal] = useState();\n const [playerTime, setPlayerTime] = useState(null);\n\n const theme = useTheme();\n const mobile: boolean = useMediaQuery(theme.breakpoints.down('md'));\n\n const getChannel = (): void => {\n let params = { \"channel_id\": channelView.channel_id }\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel/1.0/public/get/channel', params, config)\n .then(function (response) {\n if (response && response.data) {\n let channelTemp: Channel = response.data\n setChannel(response.data)\n let channelViewTemp = channelView\n channelViewTemp.channel_name = channelTemp.name\n setLoading(false);\n }\n })\n }\n\n const getChannelView = (): void => {\n let params = {};\n if (paramToken['channelView'] !== undefined && paramToken['channelView'] !== \"\") {\n params['channel_view_id'] = parseInt(paramToken['channelView']);\n }\n if (subdomainchannel != null || subdomainchannel != undefined) {\n params['channel_view_id'] = subdomainchannel;\n }\n axios.post(process.env.REACT_APP_SERVER_URL + '/channel_view/1.0/public/get/full', params, config)\n .then(function (response) {\n if (response && response.data) {\n const channelViewTemp: ChannelView = response.data;\n setChannelView(channelViewTemp);\n if (paramToken['video_id'] !== null && paramToken['video_id'] !== undefined) {\n let params_video = {};\n params_video['media_id'] = paramToken['video_id'];\n axios.post(process.env.REACT_APP_SERVER_URL + '/media/1.0/get/media', params_video, config)\n .then(function (response) {\n if (response && response.data && paramToken['video_id']) {\n setMediaToModal(response.data);\n setVideoPlayDialogOpen(true);\n }\n })\n .catch(function (error) {\n console.log(\"error getting video_id viewfrom WS\");\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n })\n }\n }\n })\n .catch(function (error) {\n console.log(\"error getting channel view from WS\");\n if (error && error.response && error.response.data) {\n console.log(error.response.data);\n }\n })\n }\n\n const handleCloseVideoPlayDialog = (): void => {\n setVideoPlayDialogOpen(false);\n };\n\n useEffect(() => {\n getChannelView();\n }, [paramToken['channelView']]);\n\n useEffect(() => {\n if (channelView && channelView.channel_id) {\n getChannel();\n getAndStoreKalturaVideoPlayerIdByChannelId(channelView.channel_id);\n }\n }, [channelView]);\n\n\n if (loading == true) {\n return null;\n }\n\n else {\n return (\n
\n {paramToken['video_id'] && paramToken['channelView'] && isVideoPlayDialogOpen &&\n \n }\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n }\n};\n\nexport default PublicChannelDetailView;\n","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { create } from 'jss';\nimport rtl from 'jss-rtl';\nimport MomentUtils from '@date-io/moment';\nimport { SnackbarProvider } from 'notistack';\nimport { ThemeProvider, Theme, StyledEngineProvider, adaptV4Theme } from '@mui/material';\nimport jssPreset from '@mui/styles/jssPreset';\nimport StylesProvider from '@mui/styles/StylesProvider';\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\nimport GlobalStyles from 'src/components/GlobalStyles';\nimport ScrollReset from 'src/components/ScrollReset';\nimport CookiesNotification from 'src/components/CookiesNotification';\nimport GoogleAnalytics from 'src/components/GoogleAnalytics';\nimport { AuthProvider } from 'src/contexts/JWTAuthContext';\nimport useSettings from 'src/hooks/useSettings';\nimport { theme } from './theme';\nimport routes, { renderRoutes } from 'src/routes';\nimport { IntlProvider } from 'react-intl';\nimport { ProfessionalMedic } from './types/professionalMedic';\nimport PublicChannelDetailView from './views/channel/PublicChannelDetailView';\nimport { getSubDomainChannelView, isIframe } from 'src/views/utils/Utils';\nimport { LANGUAGES } from 'src/constants';\n\n\ndeclare module '@mui/styles/defaultTheme' {\n // eslint-disable-next-line @typescript-eslint/no-empty-interface\n interface DefaultTheme extends Theme { }\n}\n\nconst jss = create({ plugins: [...jssPreset().plugins, rtl()] });\nconst history = createBrowserHistory();\n\nconst App: FC = () => {\n const { settings } = useSettings();\n const [messages, setMessages] = useState();\n var flatten = require('flat');\n const [loading, isLoading] = useState(true);\n\n function loadLocaleData(locale: string) {\n switch (locale) {\n case 'en':\n return import('./compiled-lang/en.json')\n case 'es':\n return import('./compiled-lang/es.json')\n default:\n settings.language= LANGUAGES.en\n return import('./compiled-lang/en.json')\n }\n }\n\n async function getMessages() {\n if (settings.language !== undefined) {\n setMessages(await loadLocaleData(settings.language.toLowerCase()))\n } \n isLoading(false);\n }\n\n useEffect(() => {\n getMessages();\n }, [settings.language]);\n\n const subdomainchannel = getSubDomainChannelView();\n if (loading) return null;\n else {\n return (\n \n \n \n \n \n \n \n \n \n \n \n {!isIframe() && }\n {(subdomainchannel != null) && }\n {(subdomainchannel == null) && renderRoutes(routes)}\n \n \n \n \n \n \n \n \n );\n }\n};\n\nexport default App;\n","import 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport 'react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\nimport 'react-quill/dist/quill.snow.css';\nimport 'prismjs/prism';\nimport 'prismjs/components/prism-bash';\nimport 'prismjs/components/prism-javascript';\nimport 'prismjs/components/prism-jsx';\nimport 'nprogress/nprogress.css';\nimport 'src/__mocks__';\nimport 'src/assets/css/prism.css';\nimport 'src/mixins/chartjs';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { enableES5 } from 'immer';\nimport * as serviceWorker from 'src/serviceWorker';\nimport store from 'src/store';\nimport { SettingsProvider } from 'src/contexts/SettingsContext';\nimport App from 'src/App';\n\n\nenableES5();\n\nReactDOM.render(\n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\nserviceWorker.unregister();\n","const objFromArray = (arr: any[], key: string = 'id') => arr.reduce((accumulator, current) => {\n accumulator[current[key]] = current;\n return accumulator;\n}, {});\n\nexport default objFromArray;\n","import React from 'react';\nimport type { FC, ReactNode } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { alpha } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\n\ninterface LabelProps {\n className?: string;\n color?: 'primary' | 'secondary' | 'error' | 'warning' | 'success';\n children?: ReactNode;\n style?: {};\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n color: theme.palette.text.secondary,\n backgroundColor: theme.palette.grey[300],\n fontFamily: theme.typography.fontFamily,\n alignItems: 'center',\n borderRadius: 2,\n display: 'inline-flex',\n flexGrow: 0,\n whiteSpace: 'nowrap',\n cursor: 'default',\n flexShrink: 0,\n fontSize: theme.typography.pxToRem(12),\n fontWeight: theme.typography.fontWeightMedium,\n height: 20,\n justifyContent: 'center',\n letterSpacing: 0.5,\n minWidth: 20,\n padding: theme.spacing(0.5, 1),\n textTransform: 'uppercase',\n },\n primary: {\n color: theme.palette.primary.main,\n backgroundColor: alpha(theme.palette.primary.main, 0.08)\n },\n secondary: {\n color: theme.palette.secondary.main,\n backgroundColor: alpha(theme.palette.secondary.main, 0.08)\n },\n error: {\n color: theme.palette.error.main,\n backgroundColor: alpha(theme.palette.error.main, 0.08)\n },\n success: {\n color: theme.palette.success.main,\n backgroundColor: alpha(theme.palette.success.main, 0.08)\n },\n warning: {\n color: theme.palette.warning.main,\n backgroundColor: alpha(theme.palette.warning.main, 0.08)\n }\n}));\n\nconst Label: FC = ({\n className = '',\n color = '',\n children,\n style,\n ...rest\n}) => {\n const classes = useStyles();\n\n return (\n \n {children}\n \n );\n};\n\nLabel.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n style: PropTypes.object,\n color: PropTypes.oneOf(['primary', 'secondary', 'error', 'warning', 'success'])\n};\n\nexport default Label;\n","export const APP_VERSION = '3.1.0';\n\nexport const ENABLE_REDUX_DEV_TOOLS = true;\n\nexport const THEMES = {\n LIGHT: 'LIGHT',\n ONE_DARK: 'ONE_DARK',\n UNICORN: 'UNICORN'\n};\n\nexport const LANGUAGES = {\n es: 'es',\n en: 'en'\n}","import React, { useState, useEffect, useRef } from \"react\";\nimport {\n KalturaPlayer,\n usePlayerUpdates,\n usePlayer,\n} from \"src/kaltura-player\";\nimport type { FC } from 'react';\nimport PropTypes from 'prop-types';\nimport type { Media } from 'src/types/media';\nimport { Button } from \"@mui/material\";\nimport makeStyles from '@mui/styles/makeStyles';\nimport { Hotspot } from \"src/types/hotspot\";\n\nexport interface EntriesConfig {\n entryId: string;\n alternateEntryId?: string;\n}\n\nexport interface PlayerContainerProps {\n entriesConfig?: EntriesConfig;\n video?: Media;\n playerTime?: number;\n setPlayerTime?: any;\n playerheight?: number;\n playerwidth?: number;\n hotspotList?: Hotspot[];\n}\n\nconst useStyles = makeStyles((theme) => ({\n fullscreenButton: {\n position: 'absolute',\n top: theme.spacing(2),\n left: theme.spacing(2),\n zIndex: 9999,\n backgroundColor: \"BLUE\"\n }\n}));\n\nconst PlayerContainer: FC = ({\n entriesConfig,\n video,\n playerTime,\n setPlayerTime,\n playerheight,\n playerwidth,\n hotspotList,\n ...rest\n}) => {\n\n const entryId = entriesConfig.entryId;\n const [playerId, setPlayerId] = useState(\"\");\n const classes = useStyles();\n const playerContainerRef = useRef(null);\n\n const {\n playerTime$\n } = usePlayerUpdates(playerId);\n\n const {\n playerSeek,\n getPlayerInstance\n } = usePlayer(playerId);\n\n useEffect(() => {\n if (!playerId) {\n return;\n }\n\n const timeSubscription = playerTime$.subscribe(result => {\n setPlayerTime(result);\n });\n\n return () => {\n timeSubscription.unsubscribe();\n };\n }, [playerId, playerTime$]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const handlePlayerLoaded = (data: { playerId: string }) => {\n const { playerId } = data;\n\n\n if (!playerId) {\n return;\n }\n\n setPlayerId(playerId);\n };\n\n const handleMediaLoaded = (entryId: string) => {\n if (!playerId) {\n return;\n }\n\n var durationSplit = video.duration.split(':');\n var durationTotalSeconds = (+durationSplit[0]) * 60 * 60 + (+durationSplit[1]) * 60 + (+durationSplit[2]);\n\n // let initialTime = durationTotalSeconds * video.viewed_percentage * 10;\n let initialTime = 0;\n if (playerTime) {\n initialTime = playerTime;\n }\n\n if (initialTime > ((durationTotalSeconds * 1000) - 1000)) {\n initialTime = 0;\n }\n\n playerSeek({ seekTo: initialTime, pause: true });\n };\n\n const handleButtonClick = (javascript_action: string) => {\n if (javascript_action) {\n try {\n eval(javascript_action);\n console.log(\"Custom button action executed\");\n } catch (error) {\n console.error(\"Error executing custom button action:\", error);\n }\n }\n };\n\n const customizeConfig = (config: any) => {\n // DEVELOPER NOTICE - this is an optional method that lets you\n // customize the plaer config during loading.\n // if you don't need to customize, just remove it, just remove it\n // @ts-ignore\n const h = window[\"KalturaPlayer\"].ui.preact.h;\n let hotspotButtons;\n if (hotspotList !== undefined) {\n hotspotButtons = hotspotList.map((hotspot) => {\n const buttonId = `customButton${hotspot.hotspot_id}`;\n const customButton = h(\"div\", {\n id: buttonId,\n onClick: () => {\n handleButtonClick(hotspot.javascript_action);\n },\n style: {\n top: `${hotspot.position_y}%`,\n left: `${hotspot.position_x}%`,\n width: hotspot.width,\n height: \"auto\",\n background: hotspot.background_color,\n display: \"flex\",\n fontSize: hotspot.text_size,\n fontWeight: \"600\",\n overflow: \"hidden\",\n color: hotspot.text_color,\n opacity: 0.75,\n padding: \"0.5rem\",\n position: \"absolute\"\n }\n }, hotspot.text);\n\n return customButton;\n });\n }\n\n const newConfig = {\n ...config,\n ui: {\n ...(config.ui || {}),\n uiComponents: [\n ...((config.ui || {}).uiComponents || []),\n {\n label: \"add custom\",\n presets: [\"Playback\"],\n container: \"VideoArea\",\n get: () => hotspotButtons, // Render custom button\n }\n ]\n }\n };\n return newConfig;\n };\n\n const showButton = (hotspot: Hotspot, playerTime: number): boolean => {\n const { time_to_start_in_ms, time_to_finish_in_ms } = hotspot;\n return playerTime >= time_to_start_in_ms && playerTime <= time_to_finish_in_ms;\n };\n\n useEffect(() => {\n if (playerId && playerTime !== null && hotspotList !== undefined) {\n for (let hotspot of hotspotList) {\n const buttonId = `customButton${hotspot.hotspot_id}`;\n const buttonElement = document.getElementById(buttonId);\n if (buttonElement) {\n const isButtonVisible = showButton(hotspot, playerTime);\n buttonElement.style.display = isButtonVisible ? \"block\" : \"none\";\n \n }\n }\n }\n }, [playerId, playerTime]);\n\n return (\n
\n \n
\n );\n};\n\nPlayerContainer.propTypes = {\n playerTime: PropTypes.number,\n};\n\nPlayerContainer.defaultProps = {\n playerTime: null\n};\n\nexport default PlayerContainer;\n\n","import axios from 'axios';\nimport React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\n\ninterface LogoProps {\n [key: string]: any;\n height?: number;\n width?: number;\n}\n\nconst Logo: FC = (props, height?, width?) => {\n const organizationAdmin = JSON.parse(localStorage.getItem('user'));\n const [organizationLogo, setOrganizationLogo] = useState();\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n if (!organizationLogo) {\n let params = {\n organization_id: organizationAdmin.organization_id,\n };\n axios.post(process.env.REACT_APP_SERVER_URL + '/organization/1.0/get/logo', params)\n .then(function (response) {\n if (response && response.data) {\n setOrganizationLogo(response.data)\n }\n else {\n setOrganizationLogo('/static/logo.png')\n }\n })\n .catch(function (error) {\n setOrganizationLogo('/static/logo.png')\n })\n setLoading(false)\n }\n else {\n setLoading(false);\n }\n\n }, []);\n\n if (loading) {\n return null;\n }\n else {\n return (\n \n );\n }\n}\n\nexport default Logo;\n","import * as sanitizeHtml from 'sanitize-html';\nimport parse from \"html-react-parser\";\nimport axios from 'axios';\nimport useSettings from 'src/hooks/useSettings';\nimport organizationTagsEn from '../../compiled-organization-tags/organization-tags-en.json';\nimport organizationTagsEs from '../../compiled-organization-tags/organization-tags-es.json';\nimport { useIntl } from 'react-intl';\n\nexport const getWSConfig = () => {\n let token = localStorage.getItem('accessToken');\n let config = {\n headers: { Authorization: `Bearer ${token}` },\n };\n return config;\n}\n\nexport const getSubDomainChannelView = () => {\n let prefix = window.location.host.split('.')[0];\n let subdomain = null;\n const subdomainmap = {\n fisiotv: {\n channelview: 30,\n },\n pestanaga: {\n channelview: 27,\n }\n };\n if ((prefix != null || prefix != undefined) && (subdomainmap[prefix])) {\n\n subdomain = subdomainmap[prefix].channelview;\n\n } else {\n subdomain = null;\n }\n return subdomain;\n}\n\nexport const isIframe = () => {\n return window.location.pathname.startsWith(\"/organization/\")\n}\n\nexport const isAnIntegerValue = (text: string) => {\n return /\\d/.test(text);\n}\n\n/**\n * \n * @param htmlText a string with html tags and text\n * @returns a parsed html compiled with only safe tags\n */\nexport const cleanHtmlText = (htmlText) => {\n const cleanHtml = sanitizeHtml(htmlText, {\n allowedTags: ['b', 'i', 'em', 'strong', 'a', 'p', 'br', 'li', 'ol', 'ul', 'u', 'h1', 'h2', 'h3', 'h4', 'h5'],\n allowedAttributes: {\n a: ['href', 'target']\n }\n });\n return parse(cleanHtml);\n}\n\nexport const getAndStoreKalturaVideoPlayerId = async () => {\n let user = JSON.parse(localStorage.getItem('user'));\n let params = { \"organization_id\": 0 }\n\n if (user && user.organization_id) {\n params = { \"organization_id\": user.organization_id }\n }\n\n try {\n const response = await axios.post(process.env.REACT_APP_SERVER_URL + '/organization/1.0/get/kaltura/video/player/id', params);\n if (response && response.data) {\n localStorage.setItem('kaltura_video_player_id_professional_portal', JSON.stringify(response.data));\n return JSON.stringify(response.data);\n }\n } catch (error) {\n console.log(error);\n return '';\n }\n}\n\nexport const getAndStoreKalturaVideoPlayerIdByChannelId = async (channel_id: number) => {\n let params = { \"channel_id\": channel_id }\n try {\n const response = await axios.post(process.env.REACT_APP_SERVER_URL + '/channel/1.0/get/kaltura/video/player/id', params);\n if (response && response.data) {\n localStorage.setItem('kaltura_video_player_id_professional_portal', JSON.stringify(response.data));\n return JSON.stringify(response.data);\n }\n } catch (error) {\n console.log(error);\n return '';\n }\n}\n\nexport const getAndStoreKalturaPlaylistPlayerId = async () => {\n let user = JSON.parse(localStorage.getItem('user'));\n let params = { \"organization_id\": 0 }\n\n if (user && user.organization_id) {\n params = { \"organization_id\": user.organization_id }\n }\n\n try {\n const response = await axios.post(process.env.REACT_APP_SERVER_URL + '/organization/1.0/get/kaltura/playlist/player/id', params);\n if (response && response.data) {\n localStorage.setItem('kaltura_playlist_player_id_professional_portal', JSON.stringify(response.data));\n return JSON.stringify(response.data);\n }\n } catch (error) {\n console.log(error);\n return '';\n }\n}\n\nexport const deleteKalturaVideoPlayerIdFromLocalStorage = () => {\n localStorage.removeItem('kaltura_video_player_id_professional_portal');\n}\n\nexport const deleteKalturaPlaylistPlayerIdFromLocalStorage = () => {\n localStorage.removeItem('kaltura_video_player_id_professional_portal');\n}\n\nexport const getOrganizationTag = (propertyPath: string): string => {\n const { settings } = useSettings();\n const intl = useIntl();\n const organizationTags = settings.language === 'en' ? organizationTagsEn : organizationTagsEs;\n const user = JSON.parse(localStorage.getItem('user'))\n\n if (user.organization_id !== undefined && user.organization_id !== null) {\n const organizationId = user.organization_id\n const organizationIdAsString = String(organizationId);\n const currentObject = organizationTags[organizationIdAsString]\n const properties = propertyPath.split('.');\n let value = currentObject;\n for (const property of properties) {\n if (value && typeof value === 'object' && property in value) {\n value = value[property];\n } else {\n return intl.formatMessage({ id: propertyPath })\n }\n }\n\n return (typeof value === 'object' || value === undefined) ? intl.formatMessage({ id: propertyPath }) : String(value);\n } else {\n return intl.formatMessage({ id: propertyPath })\n }\n\n};\n","import axios from \"axios\";\nimport React, { createContext, ReactChild, useCallback, useContext, useEffect, useRef, useState } from \"react\"\nimport { WebRTCUser } from \"src/types/WebRTC\";\nimport { getWSConfig } from \"src/views/utils/Utils\";\n\nconst pc_config = {\n sdpSemantics: 'unified-plan',\n iceServers: [{ urls: ['stun:stun.l.google.com:19302'] }]\n}\n\nlet websocketUrl;\nif (location.protocol === \"https:\") {\n websocketUrl = \"wss://vr.server.digimevo.com/\" \n} else {\n websocketUrl = \"ws://vrremote-env.eba-taibipem.eu-west-1.elasticbeanstalk.com/\"\n}\n\nexport const WebSocketContext = React.createContext({\n ws: null,\n users: [],\n selectedUser: null,\n controlPanelState: null,\n selectUser: (user) => {},\n isUserSelected: false,\n createReceivePC: (id: string) => {},\n passDataToServer: (data) => {}\n});\n\nexport interface ControlPanelStateProps {\n type: string;\n params?: any;\n}\n\nexport interface PCData {\n pc: RTCPeerConnection;\n channel: RTCDataChannel;\n}\n\nexport const WebSocketProvider = ({children}) => {\n let ws: WebSocket;\n \n let socketId; \n\n const config = getWSConfig();\n\n const sendPCRef = useRef({pc: null, channel: null});\n const receivePCsRef = useRef<{ [socketId: string]: PCData }>({});\n const senders = useRef([]);\n const [users, setUsers] = useState>([]);\n const selectedUser = useRef(null);\n const [isUserSelected, setIsUserSelected] = useState(false);\n // const [selectedUser, setSelectedUser] = useState(null);\n // const [localStream, setLocalStream] = useState(new MediaStream());\n\n const [controlPanelState, setControlPanelState] = useState();\n\n const closeReceivePC = useCallback((id: string) => {\n if (!receivePCsRef.current[id]) return;\n if (id === selectedUser.current?.id) selectUser(null);\n receivePCsRef.current[id].pc.close();\n delete receivePCsRef.current[id];\n }, []);\n\n const createReceiverOffer = useCallback(\n async (pc: RTCPeerConnection, senderSocketID: string) => {\n try {\n const sdp = await pc.createOffer({\n offerToReceiveAudio: false,\n offerToReceiveVideo: false,\n });\n // console.log(\"create receiver offer success\");\n await pc.setLocalDescription(new RTCSessionDescription(sdp));\n \n if (!ws) return;\n sendMessage({\n type: 'receiverOffer',\n data: {\n sdp,\n receiverSocketID: socketId,\n senderSocketID\n }\n });\n } catch (error) {\n console.log(error);\n }\n },\n []\n );\n\n const createReceiverPeerConnection = useCallback((socketID: string) => {\n try {\n const pc = new RTCPeerConnection(pc_config);\n \n receivePCsRef.current[socketID] = {\n pc: pc,\n channel: null\n }\n \n console.log('receivePCsRef', receivePCsRef.current);\n\n receivePCsRef.current[socketID].pc.onicecandidate = (e) => {\n if (!(e.candidate && ws)) return;\n sendMessage({\n type: \"receiverCandidate\", \n data: {\n candidate: e.candidate,\n receiverSocketID: socketId,\n senderSocketID: socketID,\n }\n });\n };\n \n receivePCsRef.current[socketID].pc.oniceconnectionstatechange = (e) => {\n console.log('ICE state: ', e);\n };\n\n receivePCsRef.current[socketID].pc.ontrack = (e) => {\n console.log(\"ontrack success\", e);\n if (e.track.kind === 'video' ||e.track.kind === 'audio') {\n // let newUsers = [...senders.current];\n // let userIndex = newUsers.findIndex(user => user.id === socketID);\n // newUsers[userIndex].stream = e.streams[0];\n // setUsers(newUsers);\n\n // setLocalStream(e.streams[0]);\n // setLocalStream(newUsers[userIndex].stream);\n }\n };\n\n receivePCsRef.current[socketID].channel = receivePCsRef.current[socketID].pc.createDataChannel('data');\n console.log('channel created', receivePCsRef.current[socketID].channel);\n\n receivePCsRef.current[socketID].channel.onopen = () => {\n console.log('datachannel connected', receivePCsRef.current[socketID].channel);\n }\n receivePCsRef.current[socketID].channel.onerror = function (e) {\n console.log(\"The error \" + e + \" occurred\\n while handling data with proxy server.\");\n };\n receivePCsRef.current[socketID].channel.onclose = function () {\n console.log('Datachannel disconnected.');\n };\n receivePCsRef.current[socketID].channel.onmessage = async (msg) => {\n // receive message from unity and operate message\n let data;\n // receive message data type is blob only on Firefox\n if (navigator.userAgent.indexOf('Firefox') != -1) {\n data = await msg.data.arrayBuffer();\n } else {\n data = msg.data;\n }\n if (isJson(data)) {\n data = JSON.parse(data);\n }\n console.log('receiver onmessage', data);\n };\n return receivePCsRef.current[socketID].pc;\n } catch (e) {\n console.error(e);\n return undefined;\n }\n }, []);\n\n const createReceivePC = useCallback(\n (id: string) => {\n try {\n console.log(`socketID(${id}) user entered`);\n const pc = createReceiverPeerConnection(id);\n if (!(ws && pc)) return;\n createReceiverOffer(pc, id);\n } catch (error) {\n console.log(error);\n }\n },\n [createReceiverOffer, createReceiverPeerConnection]\n );\n\n const createSenderOffer = useCallback(async (socketID) => {\n try {\n if (!sendPCRef.current) return;\n const sdp = await sendPCRef.current.pc.createOffer({\n offerToReceiveAudio: false,\n offerToReceiveVideo: false,\n });\n // console.log(\"create sender offer success\");\n await sendPCRef.current.pc.setLocalDescription(\n new RTCSessionDescription(sdp)\n );\n \n if (!ws) return;\n sendMessage({\n type: \"senderOffer\", \n data: {\n sdp,\n senderSocketID: socketID,\n }\n });\n } catch (error) {\n console.log(error);\n }\n }, []);\n \n const createSenderPeerConnection = useCallback((socketID) => {\n const pc = new RTCPeerConnection(pc_config);\n \n sendPCRef.current.pc = pc;\n sendPCRef.current.pc.onicecandidate = (e) => {\n // console.log('on sender candidate', e);\n if (!(e.candidate && ws)) return;\n // console.log(\"sender PC onicecandidate\");\n sendMessage({\n type: \"senderCandidate\", \n data: {\n candidate: e.candidate,\n senderSocketID: socketID,\n }\n });\n };\n \n sendPCRef.current.pc.oniceconnectionstatechange = (e) => {\n // console.log(e);\n };\n\n sendPCRef.current.channel = sendPCRef.current.pc.createDataChannel('data');\n console.log('channel created', sendPCRef.current.channel);\n\n sendPCRef.current.channel.onopen = () => {\n console.log('datachannel connected', sendPCRef.current.channel);\n }\n sendPCRef.current.channel.onerror = function (e) {\n console.log(\"The error \" + e + \" occurred\\n while handling data with proxy server.\");\n };\n sendPCRef.current.channel.onclose = function () {\n console.log('Datachannel disconnected.');\n };\n sendPCRef.current.channel.onmessage = async (msg) => {\n // receive message from unity and operate message\n let data;\n // receive message data type is blob only on Firefox\n if (navigator.userAgent.indexOf('Firefox') != -1) {\n data = await msg.data.arrayBuffer();\n } else {\n data = msg.data;\n }\n if (isJson(data)) {\n data = JSON.parse(data);\n }\n\n if (data.type === \"sessionId\") {\n updateInfoUser(data.from, data.id);\n }\n\n if (selectedUser.current?.id === data?.from) {\n setControlPanelState(data);\n }\n };\n \n }, []);\n\n const initPC = useCallback(async (socketID) => {\n createSenderPeerConnection(socketID);\n await createSenderOffer(socketID);\n sendMessage({\n type: \"getAllSenders\", \n data: {\n id: socketID,\n }\n });\n }, []);\n\n useEffect(() => {\n ws = new WebSocket(websocketUrl);\n\n ws.onopen = (e) => {\n console.log('ws connected');\n sendMessage({\n type: 'askConnectionId',\n from: 'browser'\n })\n }\n\n ws.onerror = (e) => {\n console.log(e);\n }\n\n ws.onmessage = (e) => handleOnMessage(e);\n \n ws.onclose = (e) => {\n console.log(e);\n console.log('ws closed');\n }\n\n return () => {\n console.log(\"entering in cleanup return\")\n if (socketIsReady()) {\n console.log(\"ws closed in cleanup\")\n ws.close();\n }\n users.forEach(user => closeReceivePC(user.id));\n }\n }, [])\n\n\n useEffect(() => {\n let foundSelected = false;\n for (let user of users) {\n if (user.id === selectedUser.current?.id) {\n foundSelected = true;\n break;\n }\n }\n if (!foundSelected) selectUser(null);\n }, [users])\n\n const handleOnMessage = async (e) => {\n const body = JSON.parse(e.data);\n // console.log('ws onmessage', body);\n\n switch (body.type) {\n case 'connect':\n socketId = body.connectionId;\n initPC(body.connectionId);\n break;\n case 'allSenders': \n console.log('allSenders', body.data)\n let _senders = [];\n for (let senderSocketID of body.data.users) {\n createReceivePC(senderSocketID);\n _senders.push({\n id: senderSocketID,\n // stream: new MediaStream()\n })\n }\n setUsers(_senders);\n break;\n case 'userExit':\n closeReceivePC(body.data.id);\n setUsers((users) => users.filter((user) => user.id !== body.data.id));\n break;\n case 'getSenderAnswer':\n try {\n if (!sendPCRef.current) return;\n await sendPCRef.current.pc.setRemoteDescription(\n new RTCSessionDescription(body.data)\n );\n } catch (error) {\n console.log(error);\n }\n break;\n case 'getSenderCandidate':\n try {\n if (!(body.data.candidate && sendPCRef.current)) return;\n await sendPCRef.current.pc.addIceCandidate(\n new RTCIceCandidate(body.data.candidate)\n );\n } catch (error) {\n console.log(error);\n }\n break;\n case 'getReceiverAnswer':\n try {\n const pc: RTCPeerConnection = receivePCsRef.current[body.data.id].pc;\n if (!pc) return;\n await pc.setRemoteDescription(body.data.sdp);\n // console.log(`socketID(${body.data.id})'s set remote sdp success`);\n } catch (error) {\n console.error(error);\n }\n break;\n case 'getReceiverCandidate':\n try {\n const pc: RTCPeerConnection = receivePCsRef.current[body.data.id].pc;\n if (!(pc && body.data.candidate)) return;\n await pc.addIceCandidate(new RTCIceCandidate(body.data.candidate));\n // console.log(`socketID(${body.data.id})'s candidate add success`);\n } catch (error) {\n console.error(error);\n }\n break;\n default:\n console.log('on message new case', body.type);\n }\n }\n\n const sendMessage = (object) => {\n if (socketIsReady()) {\n // console.log('send', object)\n ws.send(JSON.stringify(object))\n } else {\n console.log('socket not opened yet')\n }\n }\n\n const socketIsReady = () => {\n return ws.readyState === WebSocket.OPEN;\n }\n\n useEffect(() => {\n senders.current = users;\n }, [users])\n \n const selectUser = (user: WebRTCUser) => {\n selectedUser.current = user;\n setIsUserSelected(user ? true: false);\n }\n\n const isJson = (str: string) => {\n try {\n JSON.parse(str);\n } catch (e) {\n return false;\n }\n return true;\n }\n\n const passDataToServer = (msg) => {\n let _msg = {\n ...msg,\n type: msg.type,\n data: {\n ...msg.data,\n senderSocketID: selectedUser.current?.id\n }\n }\n console.log('passDataToServer', _msg);\n if (sendPCRef.current.channel && sendPCRef.current.channel.readyState == 'open') sendPCRef.current.channel.send(JSON.stringify(_msg));\n else {\n console.log('channel ready state is', sendPCRef.current?.channel?.readyState);\n }\n }\n\n const updateInfoUser = (id, sessionId) => {\n axios.post(process.env.REACT_APP_SERVER_URL + '/vr_session/1.0/get/vr_program/by/vr_session/id', {vr_session_id: sessionId}, config)\n .then(response => {\n if (response.data) {\n let _users = [...senders.current];\n let i = _users.findIndex(user => user.id === id);\n console.log(senders.current, id, _users[i])\n _users[i].programTitle = response.data.title;\n _users[i].sessionName = response.data.vrSessionList.find(session => session.vr_session_id === sessionId).name;\n _users[i].name = response.data.patientName;\n setUsers(_users);\n }\n })\n .catch(error => \n console.log(\"error getting vr program by session id from WS\", error)\n )\n }\n\n return (\n {children}\n )\n}\n\nexport default WebSocketContext;","import React, { useEffect, useRef, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, SvgIcon, Button, Menu, MenuItem, ListItemText, ListItemIcon } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n Share2 as ShareIcon,\n Copy as CopyIcon,\n Download as DownloadIcon\n} from 'react-feather';\nimport LinkIcon from '@mui/icons-material/Link';\n\nimport { useSnackbar } from 'notistack';\nimport { Media } from 'src/types/media';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport axios from 'axios';\nimport { getWSConfig } from '../utils/Utils';\nimport { LoadingButton } from '@mui/lab';\n\nexport interface VideoPlayerDialogShareProps {\n channelViewId?: number;\n video: Media;\n}\n\nconst useStyles = makeStyles((theme) => ({\n share: {\n paddingTop: \"2.5rem\",\n paddingBottom: \"2.5rem\",\n float: 'right',\n },\n menuItem: {\n width: '10rem',\n }\n}));\n\nconst VideoPlayerDialogShare: FC = ({\n channelViewId, video\n}) => {\n\n const classes = useStyles();\n const shareRef = useRef(null);\n const [openShareMenu, setOpenShareMenu] = useState(false);\n const { enqueueSnackbar } = useSnackbar();\n const intl = useIntl();\n const [loading, setLoading] = useState(true)\n const config = getWSConfig();\n\n const copyURL = (): void => {\n if ((location.pathname).split('=')[1] != null) {\n navigator.clipboard.writeText(\"www.\" + (location.pathname).split('=')[1] + \"/\" + video.entry_id);\n }\n else navigator.clipboard.writeText(window.location.origin + \"/channelView/\" + channelViewId + \"/\" + video.entry_id);\n enqueueSnackbar(intl.formatMessage({ id: 'channel.VideoPlayer.VideoPlayerDialogShare.url_copied' }), { variant: 'success' });\n setOpenShareMenu(false);\n }\n\n return (\n <>\n {channelViewId && video &&\n \n setOpenShareMenu(true)}\n startIcon={\n \n \n \n }\n >\n {intl.formatMessage({ id: 'channel.VideoPlayer.VideoPlayerDialogShare.share' })}\n \n setOpenShareMenu(false)}\n >\n \n \n \n \n \n \n \n \n \n \n \n }\n \n );\n};\n\nexport default VideoPlayerDialogShare;\n\n","import React, { useRef, useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, Dialog, DialogTitle, DialogContent, SvgIcon, Typography, Button, Menu, MenuItem } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n Video as VideoIcon,\n ChevronDown as ChevronDownIcon,\n Paperclip as PaperclipIcon\n} from 'react-feather';\nimport type { Media } from 'src/types/media';\nimport { EntriesConfig } from \"src/components/player-container\";\nimport PlayerContainer from \"./PlayerContainer\";\nimport {\n KalturaPlayerProvider,\n} from \"src/kaltura-player\";\nimport VideoPlayerDialogShare from './VideoPlayerDialogShare';\nimport parse from \"html-react-parser\";\nimport { FormattedMessage } from 'react-intl';\n\nexport interface VideoPlayerDialogLargeProps {\n isOpen?: boolean;\n onClose?: () => void;\n video?: Media;\n playerTime?: number;\n setPlayerTime?: any;\n channelViewId?: number;\n downloadAttachmentsLink?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n backgroundColor: 'rgba(0, 0, 51, 0.5)',\n },\n boxwrapper: {\n height: 680,\n },\n closebutton: {\n float: 'right',\n marginRight: '-0.75rem',\n },\n button: {\n display: 'flex',\n marginLeft: 'auto',\n alignSelf: 'flex-end',\n marginTop: '0.5rem'\n },\n menu: {\n borderRadius: '1px',\n border: '1px solid',\n elevation: 1\n }\n}));\n\nconst VideoPlayerDialogLarge: FC = ({\n isOpen,\n onClose,\n video,\n playerTime,\n setPlayerTime,\n channelViewId,\n downloadAttachmentsLink,\n}) => {\n\n const classes = useStyles();\n const playerheightcomputer = 324;\n const playerwidthcomputer = 550;\n const entriesConfig: EntriesConfig = {\n entryId: video.entry_id,\n alternateEntryId: \"\"\n };\n const [isMenuOpen, setOpenMenu] = useState(false)\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleDownloadButtonClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n toggleMenu();\n };\n\n const toggleMenu = (): void => {\n setOpenMenu(!isMenuOpen);\n };\n\n const downloadFile = (link: string) => {\n if (link) {\n const doc = document.createElement('a');\n doc.href = link;\n doc.download;\n doc.click();\n }\n }\n\n return (\n \n \n \n \n \n {video.title}\n \n \n \n \n \n \n \n \n \n \n \n {video.description !== null && typeof (video.description) === 'string' &&\n video.description !== \"\" && parse(video.description)}\n \n \n \n \n \n \n \n \n \n \n \n }\n >\n \n \n \n \n downloadFile(video.download_url)}>\n \n \n \n \n \n \n \n\n \n \n \n );\n};\n\nexport default VideoPlayerDialogLarge;\n\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, Dialog, DialogTitle, DialogContent, SvgIcon, Typography, Button, Menu, MenuItem } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n Video as VideoIcon,\n ChevronDown as ChevronDownIcon,\n Paperclip as PaperclipIcon\n} from 'react-feather';\nimport type { Media } from 'src/types/media';\nimport { EntriesConfig } from \"src/components/player-container\";\nimport PlayerContainer from \"./PlayerContainer\";\nimport {\n KalturaPlayerProvider,\n} from \"src/kaltura-player\";\nimport VideoPlayerDialogShare from './VideoPlayerDialogShare';\nimport parse from \"html-react-parser\";\nimport { FormattedMessage } from 'react-intl';\n\nexport interface VideoPlayerDialogMediumProps {\n isOpen?: boolean;\n onClose?: () => void;\n video?: Media;\n playerTime?: number;\n setPlayerTime?: any;\n channelViewId?: number;\n downloadAttachmentsLink?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n wrapper: {\n backgroundColor: 'rgba(0, 0, 51, 0.5)',\n },\n closebutton: {\n float: 'right',\n marginRight: '-0.75rem',\n },\n button: {\n display: 'flex',\n marginLeft: 'auto',\n alignSelf: 'flex-end',\n marginTop: '0.5rem'\n }\n}));\n\nconst VideoPlayerDialogMedium: FC = ({\n isOpen,\n onClose,\n video,\n playerTime,\n setPlayerTime,\n channelViewId,\n downloadAttachmentsLink\n}) => {\n\n const classes = useStyles();\n const entriesConfig: EntriesConfig = {\n entryId: video.entry_id,\n alternateEntryId: \"\"\n };\n\n const [isMenuOpen, setOpenMenu] = useState(false)\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleDownloadButtonClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n toggleMenu();\n };\n\n const toggleMenu = (): void => {\n setOpenMenu(!isMenuOpen);\n };\n\n const downloadFile = (link: string) => {\n if (link) {\n const doc = document.createElement('a');\n doc.href = link;\n doc.download;\n doc.click();\n }\n }\n\n return (\n \n \n \n \n \n {video.title}\n \n \n \n \n \n \n \n \n \n \n \n {video.description !== null && typeof (video.description) === 'string' &&\n video.description !== \"\" && parse(video.description)}\n \n \n \n \n \n \n\n \n \n \n \n \n }\n >\n \n \n \n \n downloadFile(video.download_url)}>\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default VideoPlayerDialogMedium;\n\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport { Box, IconButton, Dialog, DialogTitle, DialogContent, SvgIcon, Typography, Button, Menu, MenuItem } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\nimport {\n X as XIcon,\n Video as VideoIcon,\n ChevronDown as ChevronDownIcon,\n Paperclip as PaperclipIcon\n} from 'react-feather';\nimport type { Media } from 'src/types/media';\nimport { EntriesConfig } from \"src/components/player-container\";\nimport PlayerContainer from \"./PlayerContainer\";\nimport {\n KalturaPlayerProvider,\n} from \"src/kaltura-player\";\nimport VideoPlayerDialogShare from './VideoPlayerDialogShare';\nimport parse from \"html-react-parser\";\nimport { FormattedMessage } from 'react-intl';\n\nexport interface VideoPlayerDialogSmallProps {\n isOpen?: boolean;\n onClose?: () => void;\n video?: Media;\n playerTime?: number;\n setPlayerTime?: any;\n channelViewId?: number;\n downloadAttachmentsLink?: string;\n}\n\nconst useStyles = makeStyles(() => ({\n wrapper: {\n backgroundColor: 'rgba(0, 0, 51, 0.5)',\n },\n closebutton: {\n float: 'right',\n marginRight: '-0.75rem',\n },\n button: {\n display: 'flex',\n marginLeft: 'auto',\n alignSelf: 'flex-end',\n marginTop: '0.5rem'\n },\n menu: {\n borderRadius: '1px',\n border: '1px solid',\n elevation: 1\n }\n}));\n\nconst VideoPlayerDialogSmall: FC = ({\n isOpen,\n onClose,\n video,\n playerTime,\n setPlayerTime,\n channelViewId,\n downloadAttachmentsLink,\n}) => {\n\n const classes = useStyles();\n const entriesConfig: EntriesConfig = {\n entryId: video.entry_id,\n alternateEntryId: \"\"\n };\n const [isMenuOpen, setOpenMenu] = useState(false)\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleDownloadButtonClick = (event: React.MouseEvent) => {\n setAnchorEl(event.currentTarget);\n toggleMenu();\n };\n\n const toggleMenu = (): void => {\n setOpenMenu(!isMenuOpen);\n };\n\n const downloadFile = (link: string) => {\n if (link) {\n const doc = document.createElement('a');\n doc.href = link;\n doc.download;\n doc.click();\n }\n }\n\n return (\n \n \n \n \n \n {video.title}\n \n \n \n \n \n \n \n \n \n \n \n {video.description !== null && typeof (video.description) === 'string' &&\n video.description !== \"\" && parse(video.description)}\n \n \n \n \n \n \n \n \n \n \n \n }\n >\n \n \n \n \n downloadFile(video.download_url)}>\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default VideoPlayerDialogSmall;\n\n","import React, { useEffect, useState } from 'react';\nimport type { FC } from 'react';\nimport {\n Hidden,\n} from '@mui/material';\nimport type { Media } from 'src/types/media';\nimport VideoPlayerDialogLarge from './VideoPlayerDialogLarge';\nimport VideoPlayerDialogMedium from './VideoPlayerDialogMedium';\nimport VideoPlayerDialogSmall from './VideoPlayerDialogSmall';\nimport axios from 'axios';\nimport { getWSConfig } from '../utils/Utils';\n\nexport interface VideoPlayerDialogProps {\n isOpen?: boolean;\n onClose?: () => void;\n video?: Media;\n playerTime?: number;\n setPlayerTime?: any;\n channelViewId?: number;\n}\n\nconst VideoPlayerDialog: FC = ({\n isOpen,\n onClose,\n video,\n playerTime,\n setPlayerTime,\n channelViewId,\n}) => {\n\n const config = getWSConfig();\n const [downloadAttachmentsLink, setDownloadAttachmentsLink] = useState(null)\n const [loading, setLoading] = useState(true)\n\n const getDownloadAttachmentsLink = (): void => {\n let params = { media_id: video.entry_id }\n axios.post(process.env.REACT_APP_SERVER_URL + '/media/1.0/get/attachments', params, config)\n .then(function (response) {\n if (response && response.data) {\n setDownloadAttachmentsLink(response.data)\n }\n })\n .catch(function (error) {\n console.log(\"getDownloadAttachmentsLink error: \", error)\n })\n .finally(() => {\n setLoading(false)\n });\n }\n\n useEffect(() => {\n getDownloadAttachmentsLink();\n }, []);\n\n if (loading === true) {\n return null;\n }\n else {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n );\n }\n\n};\n\nexport default VideoPlayerDialog;\n\n","import React, {\n createContext,\n useEffect,\n useState\n} from 'react';\nimport type { FC, ReactNode } from 'react';\nimport _ from 'lodash';\nimport { LANGUAGES, THEMES } from 'src/constants';\nimport { windowCount } from 'rxjs';\n\ninterface Settings {\n direction?: 'ltr' | 'rtl';\n responsiveFontSizes?: boolean;\n theme?: string;\n language?: string;\n}\n\nexport interface SettingsContextValue {\n settings: Settings;\n saveSettings: (update: Settings) => void;\n}\n\ninterface SettingsProviderProps {\n settings?: Settings;\n children?: ReactNode;\n}\n\nconst getDefaultLanguage = () => {\n var user = JSON.parse(localStorage.getItem('user'))\n if(user && user.language){\n return user.language.toLocaleLowerCase();\n }\n else return 'en';\n}\n\nconst defaultSettings: Settings = {\n direction: 'ltr',\n responsiveFontSizes: true,\n theme: THEMES.LIGHT,\n language: getDefaultLanguage()\n};\n\nexport const restoreSettings = (): Settings | null => {\n let settings = null;\n\n try {\n const storedData: string | null = window.localStorage.getItem('settings');\n\n if (storedData) {\n settings = JSON.parse(storedData);\n }\n } catch (err) {\n console.error(err);\n // If stored data is not a strigified JSON this will fail,\n // that's why we catch the error\n }\n\n return settings;\n};\n\nexport const storeSettings = (settings: Settings): void => {\n window.localStorage.setItem('settings', JSON.stringify(settings));\n};\n\nconst SettingsContext = createContext({\n settings: defaultSettings,\n saveSettings: () => { }\n});\n\nexport const SettingsProvider: FC = ({ settings, children }) => {\n const [currentSettings, setCurrentSettings] = useState(settings || defaultSettings);\n\n const handleSaveSettings = (update: Settings = {}): void => {\n const mergedSettings = _.merge({}, currentSettings, update);\n\n setCurrentSettings(mergedSettings);\n storeSettings(mergedSettings);\n };\n\n useEffect(() => {\n const restoredSettings = restoreSettings();\n\n if (restoredSettings) {\n setCurrentSettings(restoredSettings);\n }\n }, []);\n\n useEffect(() => {\n document.dir = currentSettings.direction;\n }, [currentSettings]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const SettingsConsumer = SettingsContext.Consumer;\n\nexport default SettingsContext;\n","import { useContext } from 'react';\nimport AuthContext from 'src/contexts/JWTAuthContext';\n\nconst useAuth = () => useContext(AuthContext);\n\nexport default useAuth;\n","import axios from 'axios';\n\nconst axiosInstance = axios.create();\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => Promise.reject((error.response && error.response.data) || 'Something went wrong')\n);\n\nexport default axiosInstance;\n","import React from 'react';\nimport { FC } from 'react';\nimport { Box, Hidden, useMediaQuery, useTheme } from '@mui/material';\nimport { Channel } from 'src/types/channel';\nimport { ChannelViewInfoType } from 'src/types/channelView';\nimport makeStyles from '@mui/styles/makeStyles';\n\ninterface PublicLogoProps {\n channel: Channel;\n channelViewInfo: ChannelViewInfoType;\n}\n\nconst useStyles = makeStyles((theme) => ({\n headerImage: {\n cursor: 'pointer',\n height: '2rem',\n }\n}));\n\nconst PublicLogo: FC = ({ channel, channelViewInfo }) => {\n const theme = useTheme();\n const isMobile: boolean = useMediaQuery(theme.breakpoints.down('md'));\n const classes = useStyles();\n\n return (\n \n {isMobile ? (\n <>\n \n \"Logo\"\n \n \n \"Logo\"\n \n \n ) : (\n <>\n {channel.public_logo ?\n <>\n {channelViewInfo && channelViewInfo.web_url ?\n \n \"Logo\"\n \n :\n \"Logo\"\n }\n\n\n \n :\n <>\n }\n \n\n )}\n \n );\n};\n\nexport default PublicLogo;\n","import { FormattedMessage, useIntl } from 'react-intl';\nimport React from 'react'\n\nexport function anatomySpecialityFilterOptions() {\n const intl = useIntl();\n return [\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.regions' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.systems' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.complete' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.sections' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.allergy' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.cardiology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.odontology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.dermatology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.endocrinology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.gastroenterology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.infectious' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.nephrology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.neurology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.obstetrics' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.oncology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.ophthalmology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.orthopedics' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.otorhinolaryngology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.pediatrics' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.pneumology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.rheumatology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.AnatomySpeciality_filter.urology' })\n ];\n}\n\nexport function typeFilterOptions() {\n const intl = useIntl();\n return [\n intl.formatMessage({ id: 'Models.ModelsListView.Models.TypeFilter_filter.anatomy' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.TypeFilter_filter.disease' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.TypeFilter_filter.physology' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.TypeFilter_filter.procedure' })\n ];\n}\n\nexport function levelOfDetailFilterOptions() {\n const intl = useIntl();\n return [\n intl.formatMessage({ id: 'Models.ModelsListView.Models.LevelOfDetail_filter.gross' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.LevelOfDetail_filter.tissue' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.LevelOfDetail_filter.cellular' }),\n intl.formatMessage({ id: 'Models.ModelsListView.Models.LevelOfDetail_filter.molecular' })\n ];\n}\n\nexport const numberOfSubcriptionsInLeftMenu = 4;","import React from 'react';\nimport type { FC } from 'react';\nimport { Box, LinearProgress } from '@mui/material';\nimport makeStyles from '@mui/styles/makeStyles';\n\n\nconst useStyles = makeStyles((theme) => ({\n root: {\n alignItems: 'center',\n backgroundColor: theme.palette.background.default,\n display: 'flex',\n flexDirection: 'column',\n height: '100%',\n justifyContent: 'center',\n left: 0,\n padding: theme.spacing(3),\n position: 'fixed',\n top: 0,\n width: '100%',\n zIndex: 2000\n }\n}));\n\nconst SlashScreen: FC = () => {\n const classes = useStyles();\n\n return (\n
\n \n \n \n
\n );\n}\n\nexport default SlashScreen;\n","import React, {\n createContext,\n useEffect,\n useReducer,\n useState\n} from 'react';\nimport type { FC, ReactNode } from 'react';\nimport jwtDecode from 'jwt-decode';\nimport type { User } from 'src/types/user';\nimport SplashScreen from 'src/components/SplashScreen';\nimport axios from 'axios';\nimport useSettings from 'src/hooks/useSettings';\nimport { deleteKalturaPlaylistPlayerIdFromLocalStorage, deleteKalturaVideoPlayerIdFromLocalStorage, getAndStoreKalturaPlaylistPlayerId, getAndStoreKalturaVideoPlayerId } from 'src/views/utils/Utils';\n\ninterface AuthState {\n isInitialised: boolean;\n isAuthenticated: boolean;\n user: any | null\n}\n\ninterface AuthContextValue extends AuthState {\n method: 'JWT',\n login: (email: string, password: string, organization_id: number) => Promise;\n logout: () => void;\n register: (\n name: string,\n last_name: string,\n email: string,\n mobile: string,\n medical_number: string,\n medical_classification: number[],\n organization_id: number,\n password: string) => Promise;\n}\n\ninterface AuthProviderProps {\n children: ReactNode;\n}\n\ntype InitialiseAction = {\n type: 'INITIALISE';\n payload: {\n isAuthenticated: boolean;\n user: any\n };\n};\n\ntype LoginAction = {\n type: 'LOGIN';\n payload: {\n user: any\n };\n};\n\ntype LogoutAction = {\n type: 'LOGOUT';\n};\n\ntype RegisterAction = {\n type: 'REGISTER';\n payload: {\n user: any\n };\n};\n\ntype Action =\n | InitialiseAction\n | LoginAction\n | LogoutAction\n | RegisterAction;\n\nconst initialAuthState: AuthState = {\n isAuthenticated: false,\n isInitialised: false,\n user: null\n};\n\nconst isValidToken = (accessToken: string): boolean => {\n if (!accessToken) {\n return false;\n }\n\n const decoded: any = jwtDecode(accessToken);\n const currentTime = Date.now() / 1000;\n\n return decoded.exp > currentTime;\n};\n\nconst setSession = (accessToken: string | null): void => {\n if (accessToken) {\n localStorage.setItem('accessToken', accessToken);\n axios.defaults.headers.common.Authorization = `Bearer ${accessToken}`;\n } else {\n localStorage.clear();\n delete axios.defaults.headers.common.Authorization;\n }\n};\n\nconst reducer = (state: AuthState, action: Action): AuthState => {\n switch (action.type) {\n case 'INITIALISE': {\n const { isAuthenticated, user } = action.payload;\n\n return {\n ...state,\n isInitialised: true,\n isAuthenticated,\n user\n };\n }\n case 'LOGIN': {\n const { user } = action.payload;\n\n return {\n ...state,\n isAuthenticated: true,\n user\n };\n }\n case 'LOGOUT': {\n return {\n ...state,\n isAuthenticated: false,\n user: null,\n };\n }\n case 'REGISTER': {\n const { user } = action.payload;\n\n return {\n ...state,\n isAuthenticated: true,\n user\n };\n }\n default: {\n return { ...state };\n }\n }\n};\n\nconst AuthContext = createContext({\n ...initialAuthState,\n method: 'JWT',\n login: () => Promise.resolve(),\n logout: () => { },\n register: () => Promise.resolve()\n});\n\nexport const AuthProvider: FC = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialAuthState);\n const { settings, saveSettings } = useSettings();\n\n const login = async (email: string, password: string, organization_id: number) => {\n const response = await axios.post<{ accessToken: string, home_page: string }>(process.env.REACT_APP_SERVER_URL + '/auth/1.0/signin/medic', { email, password, organization_id });\n const { accessToken, home_page } = response.data;\n window.localStorage.setItem('digimevo_home_page', home_page);\n\n setSession(accessToken);\n const user = await prepareUser(accessToken);\n saveSettings({ language: user.language, });\n\n localStorage.setItem('showNavBar', 'true');\n localStorage.setItem('showTopBar', 'true');\n localStorage.setItem('alternativeLogout', 'false');\n localStorage.setItem('showPatientNavigablePath', 'true')\n getAndStoreKalturaVideoPlayerId()\n getAndStoreKalturaPlaylistPlayerId()\n dispatch({\n type: 'LOGIN',\n payload: {\n user\n }\n });\n };\n\n const prepareUser = async (\n accessToken: string\n ) => {\n let config = {\n headers: { Authorization: `Bearer ${accessToken}` },\n };\n const user = (await axios.get(process.env.REACT_APP_SERVER_URL + '/auth/1.0/me', config)).data;\n\n if (user.avatar === undefined || user.avatar === null || user.avatar === \"\") {\n user.avatar = \"/static/logo_avatar.jpg\";\n }\n if (user.mobile === undefined || user.mobile === null) {\n user.mobile = \"\";\n }\n if (user.medical_number === undefined || user.medical_number === null) {\n user.medical_number = \"\";\n }\n if (user.language === undefined || user.language === null) {\n user.language = \"ES\"\n }\n localStorage.setItem('user', JSON.stringify(user));\n return user;\n }\n\n const logout = () => {\n localStorage.setItem('showNavBar', 'true');\n localStorage.setItem('showTopBar', 'true');\n localStorage.setItem('showPatientNavigablePath', 'true')\n deleteKalturaVideoPlayerIdFromLocalStorage()\n deleteKalturaPlaylistPlayerIdFromLocalStorage()\n setSession(null);\n dispatch({ type: 'LOGOUT' });\n };\n\n const register = async (\n params\n ) => {\n const response = await axios.post<{ accessToken: string; home_page: string; }>(process.env.REACT_APP_SERVER_URL + '/auth/1.0/signup/medic', params);\n const { accessToken, home_page } = response.data;\n window.localStorage.setItem('accessToken', accessToken);\n window.localStorage.setItem('digimevo_home_page', home_page);\n\n localStorage.setItem('showNavBar', 'true');\n localStorage.setItem('showTopBar', 'true');\n localStorage.setItem('showPatientNavigablePath', 'true')\n getAndStoreKalturaVideoPlayerId()\n getAndStoreKalturaPlaylistPlayerId()\n const user = await prepareUser(accessToken);\n\n dispatch({\n type: 'REGISTER',\n payload: {\n user\n }\n });\n };\n\n useEffect(() => {\n const initialise = async () => {\n try {\n const accessToken = window.localStorage.getItem('accessToken');\n\n if (accessToken && isValidToken(accessToken)) {\n setSession(accessToken);\n const user = await prepareUser(accessToken);\n\n dispatch({\n type: 'INITIALISE',\n payload: {\n isAuthenticated: true,\n user: user\n }\n });\n } else {\n dispatch({\n type: 'INITIALISE',\n payload: {\n isAuthenticated: false,\n user: null\n\n }\n });\n }\n } catch (err) {\n console.error(err);\n dispatch({\n type: 'INITIALISE',\n payload: {\n isAuthenticated: false,\n user: null\n }\n });\n }\n };\n\n initialise();\n }, []);\n\n if (!state.isInitialised) {\n return ;\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default AuthContext;","declare const window: any;\n\nconst track = (...args: any[]): void => {\n if (process.env.NODE_ENV !== 'production') {\n return;\n }\n\n if (!window.gtag) {\n return;\n }\n\n window.gtag(...args);\n};\n\nconst pageview = (props: any): void => {\n track('config', process.env.REACT_APP_GA_MEASUREMENT_ID, props);\n};\n\nconst event = (type: string, props: Record) => {\n track('event', type, props);\n};\n\nexport default {\n pageview,\n event\n};\n","import React, {\n forwardRef,\n useEffect,\n useCallback\n} from 'react';\nimport type {\n HTMLProps,\n ReactNode\n} from 'react';\nimport { Helmet } from 'react-helmet';\nimport { useLocation } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport track from 'src/utils/analytics';\n\ninterface PageProps extends HTMLProps {\n children?: ReactNode;\n title?: string;\n}\n\nconst Page = forwardRef(({\n children,\n title = '',\n ...rest\n}, ref) => {\n const location = useLocation();\n\n const sendPageViewEvent = useCallback(() => {\n track.pageview({\n page_path: location.pathname\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n sendPageViewEvent();\n }, [sendPageViewEvent]);\n\n return (\n \n \n {title}\n \n {children}\n \n );\n});\n\nPage.propTypes = {\n children: PropTypes.node.isRequired,\n title: PropTypes.string\n};\n\nexport default Page;\n","import { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport _ from 'lodash';\nimport type { AppThunk } from 'src/store'\nimport axios from 'src/utils/axios';\nimport type { Event } from 'src/types/calendar';\n\ninterface CalendarState {\n events: Event[],\n isModalOpen: boolean;\n selectedEventId: string | null;\n selectedRange: {\n start: number;\n end: number;\n } | null;\n}\n\nconst initialState: CalendarState = {\n events: [],\n isModalOpen: false,\n selectedEventId: null,\n selectedRange: null\n};\n\nconst slice = createSlice({\n name: 'calendar',\n initialState,\n reducers: {\n getEvents(state: CalendarState, action: PayloadAction<{ events: Event[]; }>) {\n const { events } = action.payload;\n\n state.events = events;\n },\n createEvent(state: CalendarState, action: PayloadAction<{ event: Event; }>) {\n const { event } = action.payload;\n\n state.events = [...state.events, event];\n },\n selectEvent(state: CalendarState, action: PayloadAction<{ eventId?: string; }>) {\n const { eventId = null } = action.payload;\n\n state.isModalOpen = true;\n state.selectedEventId = eventId;\n },\n updateEvent(state: CalendarState, action: PayloadAction<{ event: Event; }>) {\n const { event } = action.payload;\n\n state.events = _.map(state.events, (_event) => {\n if (_event.id === event.id) {\n return event;\n }\n\n return _event;\n });\n },\n deleteEvent(state: CalendarState, action: PayloadAction<{ eventId: string; }>) {\n const { eventId } = action.payload;\n\n state.events = _.reject(state.events, { id: eventId });\n },\n selectRange(state: CalendarState, action: PayloadAction<{ start: number; end: number; }>) {\n const { start, end } = action.payload;\n\n state.isModalOpen = true;\n state.selectedRange = {\n start,\n end\n };\n },\n openModal(state: CalendarState) {\n state.isModalOpen = true;\n },\n closeModal(state: CalendarState) {\n state.isModalOpen = false;\n state.selectedEventId = null;\n state.selectedRange = null;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getEvents = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ events: Event[]; }>('/api/calendar/events');\n\n dispatch(slice.actions.getEvents(response.data));\n};\n\nexport const createEvent = (data: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ event: Event; }>('/api/calendar/events/new', data);\n\n dispatch(slice.actions.createEvent(response.data));\n};\n\nexport const selectEvent = (eventId?: string): AppThunk => async (dispatch) => {\n dispatch(slice.actions.selectEvent({ eventId }));\n};\n\nexport const updateEvent = (eventId: string, update: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ event: Event; }>('/api/calendar/events/update', {\n eventId,\n update\n });\n\n dispatch(slice.actions.updateEvent(response.data));\n};\n\nexport const deleteEvent = (eventId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/calendar/events/remove', {\n eventId\n });\n\n dispatch(slice.actions.deleteEvent({ eventId }));\n};\n\nexport const selectRange = (start: Date, end: Date): AppThunk => (dispatch) => {\n dispatch(slice.actions.selectRange({\n start: start.getTime(),\n end: end.getTime()\n }));\n};\n\nexport const openModal = (): AppThunk => (dispatch) => {\n dispatch(slice.actions.openModal());\n};\n\nexport const closeModal = (): AppThunk => (dispatch) => {\n dispatch(slice.actions.closeModal());\n};\n\nexport default slice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport type { AppThunk } from 'src/store'\nimport axios from 'src/utils/axios';\nimport objFromArray from 'src/utils/objFromArray';\nimport type {\n Contact,\n Thread,\n ThreadParticipant\n} from 'src/types/chat';\n\ninterface ChatState {\n activeThreadId?: string,\n contacts: {\n byId: Record;\n allIds: string[];\n },\n threads: {\n byId: Record;\n allIds: string[];\n },\n participants: ThreadParticipant[],\n recipients: any[]\n}\n\nconst initialState: ChatState = {\n activeThreadId: null,\n contacts: {\n byId: {},\n allIds: []\n },\n threads: {\n byId: {},\n allIds: []\n },\n participants: [],\n recipients: []\n};\n\nconst slice = createSlice({\n name: 'chat',\n initialState,\n reducers: {\n getContacts(state: ChatState, action: PayloadAction<{ contacts: Contact[]; }>) {\n const { contacts } = action.payload;\n\n state.contacts.byId = objFromArray(contacts);\n state.contacts.allIds = Object.keys(state.contacts.byId);\n },\n getThreads(state: ChatState, action: PayloadAction<{ threads: Thread[]; }>) {\n const { threads } = action.payload;\n\n state.threads.byId = objFromArray(threads);\n state.threads.allIds = Object.keys(state.threads.byId);\n },\n getThread(state: ChatState, action: PayloadAction<{ thread: Thread | null; }>) {\n const { thread } = action.payload;\n\n if (thread) {\n state.threads.byId[thread.id] = thread;\n state.activeThreadId = thread.id;\n\n if (!state.threads.allIds.includes(thread.id)) {\n state.threads.allIds.push(thread.id);\n }\n } else {\n state.activeThreadId = null;\n }\n },\n markThreadAsSeen(state: ChatState, action: PayloadAction<{ threadId: string; }>) {\n const { threadId } = action.payload;\n const thread = state.threads.byId[threadId];\n\n if (thread) {\n thread.unreadCount = 0;\n }\n },\n resetActiveThread(state: ChatState) {\n state.activeThreadId = null;\n },\n getParticipants(state: ChatState, action: PayloadAction<{ participants: ThreadParticipant[]; }>) {\n const { participants } = action.payload;\n\n state.participants = participants;\n },\n addRecipient(state: ChatState, action: PayloadAction<{ recipient: any; }>) {\n const { recipient } = action.payload;\n const exists = state.recipients.find((_recipient) => _recipient.id === recipient.id);\n\n if (!exists) {\n state.recipients.push(recipient);\n }\n },\n removeRecipient(state: ChatState, action: PayloadAction<{ recipientId: string; }>) {\n const { recipientId } = action.payload;\n\n state.recipients = state.recipients.filter((recipient) => recipient.id !== recipientId);\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getContacts = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ contacts: Contact[]; }>('/api/chat/contacts');\n\n dispatch(slice.actions.getContacts(response.data));\n};\n\nexport const getThreads = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ threads: Thread[]; }>('/api/chat/threads');\n\n dispatch(slice.actions.getThreads(response.data));\n};\n\nexport const getThread = (threadKey: string): AppThunk => async (dispatch) => {\n const response = await axios.get<{ thread: Thread; }>('/api/chat/thread', {\n params: {\n threadKey\n }\n });\n\n dispatch(slice.actions.getThread(response.data));\n};\n\nexport const markThreadAsSeen = (threadId: string): AppThunk => async (dispatch) => {\n await axios.get('/api/chat/thread/mark-as-seen', {\n params: {\n threadId\n }\n });\n\n dispatch(slice.actions.markThreadAsSeen({ threadId }));\n};\n\nexport const resetActiveThread = () => (dispatch) => {\n dispatch(slice.actions.resetActiveThread());\n};\n\nexport const getParticipants = (threadKey: string): AppThunk => async (dispatch) => {\n const response = await axios.get<{ participants: any; }>('/api/chat/participants', {\n params: {\n threadKey\n }\n });\n\n dispatch(slice.actions.getParticipants(response.data));\n};\n\nexport const addRecipient = (recipient: any): AppThunk => (dispatch) => {\n dispatch(slice.actions.addRecipient({ recipient }));\n};\n\nexport const removeRecipient = (recipientId: string): AppThunk => (dispatch) => {\n dispatch(slice.actions.removeRecipient({ recipientId }));\n};\n\nexport default slice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport type { AppThunk } from 'src/store'\nimport axios from 'src/utils/axios';\nimport objFromArray from 'src/utils/objFromArray';\nimport type { Mail, Label } from 'src/types/mail';\n\ninterface MailState {\n mails: {\n byId: Record;\n allIds: string[];\n };\n labels: Label[];\n isSidebarOpen: boolean;\n isComposeOpen: boolean;\n}\n\nconst initialState: MailState = {\n mails: {\n byId: {},\n allIds: []\n },\n labels: [],\n isSidebarOpen: false,\n isComposeOpen: false\n};\n\nconst slice = createSlice({\n name: 'mail',\n initialState,\n reducers: {\n getLabels(state: MailState, action: PayloadAction<{ labels: Label[]; }>) {\n const { labels } = action.payload;\n\n state.labels = labels;\n },\n getMails(state: MailState, action: PayloadAction<{ mails: Mail[]; }>) {\n const { mails } = action.payload;\n\n state.mails.byId = objFromArray(mails);\n state.mails.allIds = Object.keys(state.mails.byId);\n },\n getMail(state: MailState, action: PayloadAction<{ mail: Mail; }>) {\n const { mail } = action.payload;\n\n state.mails.byId[mail.id] = mail;\n\n if (!state.mails.allIds.includes(mail.id)) {\n state.mails.allIds.push(mail.id);\n }\n },\n openSidebar(state: MailState) {\n state.isSidebarOpen = true;\n },\n closeSidebar(state: MailState) {\n state.isSidebarOpen = false;\n },\n openCompose(state: MailState) {\n state.isComposeOpen = true;\n },\n closeCompose(state: MailState) {\n state.isComposeOpen = false;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getLabels = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ labels: Label[]; }>('/api/mail/labels');\n\n dispatch(slice.actions.getLabels(response.data));\n};\n\nexport const getMails = (params: {}): AppThunk => async (dispatch) => {\n const response = await axios.get<{ mails: Mail[]; }>('/api/mail/mails', {\n params\n });\n\n dispatch(slice.actions.getMails(response.data));\n};\n\nexport const getMail = (mailId: string): AppThunk => async (dispatch) => {\n const response = await axios.get<{ mail: Mail; }>('/api/mail/mail', {\n params: {\n mailId\n }\n });\n\n dispatch(slice.actions.getMail(response.data));\n};\n\nexport const openSidebar = (): AppThunk => async (dispatch) => {\n dispatch(slice.actions.openSidebar());\n};\n\nexport const closeSidebar = (): AppThunk => async (dispatch) => {\n dispatch(slice.actions.closeSidebar());\n};\n\nexport const openCompose = (): AppThunk => async (dispatch) => {\n dispatch(slice.actions.openCompose());\n};\n\nexport const closeCompose = (): AppThunk => async (dispatch) => {\n dispatch(slice.actions.closeCompose());\n};\n\nexport default slice;\n","import { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport type { AppThunk } from 'src/store'\nimport axios from 'src/utils/axios';\nimport type { Notification } from 'src/types/notification';\n\ninterface NotificationsState {\n notifications: Notification[];\n};\n\nconst initialState: NotificationsState = {\n notifications: []\n};\n\nconst slice = createSlice({\n name: 'notifications',\n initialState,\n reducers: {\n getNotifications(state: NotificationsState, action: PayloadAction<{ notifications: Notification[]; }>) {\n const { notifications } = action.payload;\n\n state.notifications = notifications;\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getNotifications = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ notifications: Notification[]; }>('/api/notifications');\n\n dispatch(slice.actions.getNotifications(response.data));\n};\n\nexport default slice;\n","import { combineReducers } from '@reduxjs/toolkit';\nimport { reducer as calendarReducer } from 'src/slices/calendar';\nimport { reducer as chatReducer } from 'src/slices/chat';\nimport { reducer as formReducer } from 'redux-form';\nimport { reducer as kanbanReducer } from 'src/slices/kanban';\nimport { reducer as mailReducer } from 'src/slices/mail';\nimport { reducer as notificationReducer } from 'src/slices/notification';\n\nconst rootReducer = combineReducers({\n calendar: calendarReducer,\n chat: chatReducer,\n form: formReducer,\n kanban: kanbanReducer,\n mail: mailReducer,\n notifications: notificationReducer\n});\n\nexport default rootReducer;\n","import {\n useDispatch as useReduxDispatch,\n useSelector as useReduxSelector\n} from 'react-redux';\nimport type { TypedUseSelectorHook } from 'react-redux';\nimport type { ThunkAction } from 'redux-thunk';\nimport { configureStore } from '@reduxjs/toolkit';\nimport type { Action } from '@reduxjs/toolkit';\nimport { ENABLE_REDUX_DEV_TOOLS } from 'src/constants';\nimport rootReducer from './rootReducer';\n\nconst store = configureStore({\n reducer: rootReducer,\n devTools: ENABLE_REDUX_DEV_TOOLS\n});\n\nexport type RootState = ReturnType;\n\nexport type AppDispatch = typeof store.dispatch;\n\nexport type AppThunk = ThunkAction>;\n\nexport const useSelector: TypedUseSelectorHook = useReduxSelector;\n\nexport const useDispatch = () => useReduxDispatch();\n\nexport default store;\n","import React, { useState } from 'react';\nimport type { FC } from 'react';\nimport {\n Menu,\n IconButton,\n SvgIcon,\n MenuItem,\n Box,\n Typography\n} from '@mui/material';\n\nimport makeStyles from '@mui/styles/makeStyles';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\n\nimport {\n Globe as GlobeIcon,\n} from 'react-feather';\n\nimport PropTypes from 'prop-types';\nimport useSettings from 'src/hooks/useSettings';\n\ninterface LanguageSelectionProps {\n className?: string;\n}\n\nconst useStyles = makeStyles((theme) => ({\n root: {},\n arrowButton: {\n marginLeft: '-0.5rem',\n marginTop: '-0.5rem'\n },\n primary: {\n color: theme.palette.primary.main\n }\n}));\n\nconst LanguageSelection: FC = ({ className, ...rest }) => {\n\n const [anchorEl, setAnchorEl] = React.useState(null);\n const { settings, saveSettings } = useSettings();\n const classes = useStyles();\n const [values, setValues] = useState({\n language: settings.language\n });\n\n const handleClick = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const handleSwitchLanguage = (new_language) => {\n setAnchorEl(null);\n saveSettings({\n ...values,\n language: new_language,\n });\n };\n\n const getLanguageString = (language: string): any => {\n if (language == \"Español\") {\n if (settings.language == \"es\") return {language}\n else return {language}\n }\n else {\n if (settings.language == \"en\") return {language}\n else return {language}\n }\n }\n\n return (\n \n \n \n \n\n \n \n \n \n handleSwitchLanguage('es')}>\n \n {getLanguageString(\"Español\")}\n \n \n handleSwitchLanguage('en')}>\n \n {getLanguageString(\"English\")}\n \n \n \n \n );\n};\n\nLanguageSelection.propTypes = {\n className: PropTypes.string,\n};\n\nexport default LanguageSelection;","import { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\nimport _ from 'lodash';\nimport type { AppThunk } from 'src/store'\nimport axios from 'src/utils/axios';\nimport objFromArray from 'src/utils/objFromArray';\nimport type {\n Board,\n Card,\n CheckItem,\n Checklist,\n Comment,\n List,\n Member\n} from 'src/types/kanban';\n\ninterface KanbanState {\n isLoaded: boolean;\n lists: {\n byId: Record;\n allIds: string[];\n };\n cards: {\n byId: Record;\n allIds: string[];\n };\n members: {\n byId: Record;\n allIds: string[];\n };\n};\n\nconst initialState: KanbanState = {\n isLoaded: false,\n lists: {\n byId: {},\n allIds: []\n },\n cards: {\n byId: {},\n allIds: []\n },\n members: {\n byId: {},\n allIds: []\n }\n};\n\nconst slice = createSlice({\n name: 'kanban',\n initialState,\n reducers: {\n getBoard(state: KanbanState, action: PayloadAction<{ board: Board; }>) {\n const { board } = action.payload;\n\n state.lists.byId = objFromArray(board.lists);\n state.lists.allIds = Object.keys(state.lists.byId);\n state.cards.byId = objFromArray(board.cards);\n state.cards.allIds = Object.keys(state.cards.byId);\n state.members.byId = objFromArray(board.members);\n state.members.allIds = Object.keys(state.members.byId);\n state.isLoaded = true;\n },\n createList(state: KanbanState, action: PayloadAction<{ list: List; }>) {\n const { list } = action.payload;\n\n state.lists.byId[list.id] = list;\n state.lists.allIds.push(list.id);\n },\n updateList(state: KanbanState, action: PayloadAction<{ list: List; }>) {\n const { list } = action.payload;\n\n state.lists.byId[list.id] = list;\n },\n clearList(state: KanbanState, action: PayloadAction<{ listId: string; }>) {\n const { listId } = action.payload;\n const { cardIds } = state.lists.byId[listId];\n\n state.lists.byId[listId].cardIds = [];\n state.cards.byId = _.omit(state.cards.byId, cardIds);\n _.pull(state.cards.allIds, ...cardIds);\n },\n deleteList(state: KanbanState, action: PayloadAction<{ listId: string; }>) {\n const { listId } = action.payload;\n\n state.lists.byId = _.omit(state.lists.byId, listId);\n _.pull(state.lists.allIds, listId);\n },\n createCard(state: KanbanState, action: PayloadAction<{ card: Card; }>) {\n const { card } = action.payload;\n\n state.cards.byId[card.id] = card;\n state.cards.allIds.push(card.id);\n state.lists.byId[card.listId].cardIds.push(card.id);\n },\n updateCard(state: KanbanState, action: PayloadAction<{ card: Card; }>) {\n const { card } = action.payload;\n\n _.merge(state.cards.byId[card.id], card);\n },\n moveCard(state: KanbanState, action: PayloadAction<{ cardId: string; position: number; listId?: string; }>) {\n const { cardId, position, listId } = action.payload;\n const { listId: sourceListId } = state.cards.byId[cardId];\n\n // Remove card from source list\n _.pull(state.lists.byId[sourceListId].cardIds, cardId);\n\n // If listId arg exists, it means that\n // we have to add the card to the new list\n if (listId) {\n state.cards.byId[cardId].listId = listId;\n state.lists.byId[listId].cardIds.splice(position, 0, cardId);\n } else {\n state.lists.byId[sourceListId].cardIds.splice(position, 0, cardId);\n }\n },\n deleteCard(state: KanbanState, action: PayloadAction<{ cardId: string; }>) {\n const { cardId } = action.payload;\n const { listId } = state.cards.byId[cardId];\n\n state.cards.byId = _.omit(state.cards.byId, cardId);\n _.pull(state.cards.allIds, cardId);\n _.pull(state.lists.byId[listId].cardIds, cardId);\n },\n addComment(state: KanbanState, action: PayloadAction<{ comment: Comment; }>) {\n const { comment } = action.payload;\n const card = state.cards.byId[comment.cardId];\n\n card.comments.push(comment);\n },\n addChecklist(state: KanbanState, action: PayloadAction<{ cardId: string; checklist: Checklist; }>) {\n const { cardId, checklist } = action.payload;\n const card = state.cards.byId[cardId];\n\n card.checklists.push(checklist);\n },\n updateChecklist(state: KanbanState, action: PayloadAction<{ cardId: string; checklist: Checklist; }>) {\n const { cardId, checklist } = action.payload;\n const card = state.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (_checklist) => {\n if (_checklist.id === checklist.id) {\n return checklist;\n }\n\n return _checklist;\n });\n },\n deleteChecklist(state: KanbanState, action: PayloadAction<{ cardId: string; checklistId: string; }>) {\n const { cardId, checklistId } = action.payload;\n const card = state.cards.byId[cardId];\n\n card.checklists = _.reject(card.checklists, { id: checklistId });\n },\n addCheckItem(state: KanbanState, action: PayloadAction<{ cardId: string; checklistId: string; checkItem: CheckItem; }>) {\n const { cardId, checklistId, checkItem } = action.payload;\n const card = state.cards.byId[cardId];\n\n _.assign(card, {\n checklists: _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: [...checklist.checkItems, checkItem]\n });\n }\n\n return checklist;\n })\n });\n },\n updateCheckItem(state: KanbanState, action: PayloadAction<{ cardId: string; checklistId: string; checkItem: CheckItem; }>) {\n const {\n cardId,\n checklistId,\n checkItem\n } = action.payload;\n const card = state.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.map(checklist.checkItems, (_checkItem) => {\n if (_checkItem.id === checkItem.id) {\n return checkItem;\n }\n\n return _checkItem;\n })\n });\n }\n\n return checklist;\n });\n },\n deleteCheckItem(state: KanbanState, action: PayloadAction<{ cardId: string; checklistId: string; checkItemId: string; }>) {\n const { cardId, checklistId, checkItemId } = action.payload;\n const card = state.cards.byId[cardId];\n\n card.checklists = _.map(card.checklists, (checklist) => {\n if (checklist.id === checklistId) {\n _.assign(checklist, {\n checkItems: _.reject(checklist.checkItems, { id: checkItemId })\n });\n }\n\n return checklist;\n });\n }\n }\n});\n\nexport const reducer = slice.reducer;\n\nexport const getBoard = (): AppThunk => async (dispatch) => {\n const response = await axios.get<{ board: Board; }>('/api/kanban/board');\n\n dispatch(slice.actions.getBoard(response.data));\n};\n\nexport const createList = (name: string): AppThunk => async (dispatch) => {\n const response = await axios.post<{ list: List; }>('/api/kanban/lists/new', {\n name\n });\n\n dispatch(slice.actions.createList(response.data));\n};\n\nexport const updateList = (listId: string, update: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ list: List; }>('/api/kanban/list/update', {\n listId,\n update\n });\n\n dispatch(slice.actions.updateList(response.data));\n};\n\nexport const clearList = (listId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/lists/clear', {\n listId\n });\n\n dispatch(slice.actions.clearList({ listId }));\n};\n\nexport const deleteList = (listId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/lists/remove', {\n listId\n });\n\n dispatch(slice.actions.deleteList({ listId }));\n};\n\nexport const createCard = (listId: string, name: string): AppThunk => async (dispatch) => {\n const response = await axios.post<{ card: Card; }>('/api/kanban/cards/new', {\n listId,\n name\n });\n\n dispatch(slice.actions.createCard(response.data));\n};\n\nexport const updateCard = (cardId: string, update: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ card: Card; }>('/api/kanban/cards/update', {\n cardId,\n update\n });\n\n dispatch(slice.actions.updateCard(response.data));\n};\n\nexport const moveCard = (cardId: string, position: number, listId?: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/cards/move', {\n cardId,\n position,\n listId\n });\n\n dispatch(slice.actions.moveCard({\n cardId,\n position,\n listId\n }));\n};\n\nexport const deleteCard = (cardId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/cards/remove', {\n cardId\n });\n\n dispatch(slice.actions.deleteCard({ cardId }));\n};\n\nexport const addComment = (cardId: string, message: string): AppThunk => async (dispatch) => {\n const response = await axios.post<{ comment: Comment; }>('/api/kanban/comments/new', {\n cardId,\n message\n });\n\n dispatch(slice.actions.addComment(response.data));\n};\n\nexport const addChecklist = (cardId: string, name: string): AppThunk => async (dispatch) => {\n const response = await axios.post<{ checklist: Checklist; }>('/api/kanban/checklists/new', {\n cardId,\n name\n });\n const { checklist } = response.data;\n\n dispatch(slice.actions.addChecklist({\n cardId,\n checklist\n }));\n};\n\nexport const updateChecklist = (cardId: string, checklistId: string, update: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ checklist: Checklist; }>('/api/kanban/checklists/update', {\n cardId,\n checklistId,\n update\n });\n const { checklist } = response.data;\n\n dispatch(slice.actions.updateChecklist({\n cardId,\n checklist\n }));\n};\n\nexport const deleteChecklist = (cardId: string, checklistId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/checklists/remove', {\n cardId,\n checklistId\n });\n\n dispatch(slice.actions.deleteChecklist({\n cardId,\n checklistId\n }));\n};\n\nexport const addCheckItem = (cardId: string, checklistId: string, name: string): AppThunk => async (dispatch) => {\n const response = await axios.post<{ checkItem: CheckItem; }>('/api/kanban/checkitems/new', {\n cardId,\n checklistId,\n name\n });\n const { checkItem } = response.data;\n\n dispatch(slice.actions.addCheckItem({\n cardId,\n checklistId,\n checkItem\n }));\n};\n\nexport const updateCheckItem = (cardId: string, checklistId: string, checkItemId: string, update: any): AppThunk => async (dispatch) => {\n const response = await axios.post<{ checkItem: CheckItem; }>('/api/kanban/checkitems/update', {\n cardId,\n checklistId,\n checkItemId,\n update\n });\n const { checkItem } = response.data;\n\n dispatch(slice.actions.updateCheckItem({\n cardId,\n checklistId,\n checkItem\n }));\n};\n\nexport const deleteCheckItem = (cardId: string, checklistId: string, checkItemId: string): AppThunk => async (dispatch) => {\n await axios.post('/api/kanban/checkitems/remove', {\n cardId,\n checklistId,\n checkItemId\n });\n\n dispatch(slice.actions.deleteCheckItem({\n cardId,\n checklistId,\n checkItemId\n }));\n};\n\nexport default slice;\n","import { useContext } from 'react';\nimport WebSocketContext from 'src/contexts/WebSocketSFUContext';\n\nconst useWebSocket = () => useContext(WebSocketContext);\n\nexport default useWebSocket;\n","import * as React from \"react\";\nimport { Observable, throwError } from \"rxjs\";\n\nexport enum PlayerBundleStatuses {\n Loaded = \"Loaded\",\n Loading = \"Loading\",\n Error = \"Error\",\n Initial = \"Initial\"\n}\n\nexport enum MediaStatuses {\n Loaded = \"Loaded\",\n Loading = \"Loading\",\n Error = \"Error\",\n Initial = \"Initial\",\n Destroyed = \"Destroyed\"\n}\n\nexport enum PlayerStatuses {\n Loaded = \"Loaded\",\n Error = \"Error\",\n Initial = \"Initial\",\n Destroyed = \"Destroyed\"\n}\n\nexport enum PlayerActionTypes {\n Play = \"Play\",\n Pause = \"Pause\",\n Seek = \"Seek\"\n}\n\n/*\nThose statuses were taken from the player event documentation\n */\nexport enum PlaybackStatuses {\n Paused = \"paused\",\n Playing = \"playing\",\n Loading = \"loading\",\n Idle = \"idle\",\n Buffering = \"buffering\",\n Error = \"error\"\n}\n\nexport enum PlayerEventsTypes {\n FirstPlaying = \"FirstPlaying\",\n VideoResized = \"VideoResized\",\n PlayerResized = \"PlayerResized\"\n}\n\nexport type PlayerEvents =\n | {\n type: PlayerEventsTypes.FirstPlaying;\n }\n | {\n type: PlayerEventsTypes.PlayerResized;\n width: number;\n height: number;\n }\n | {\n type: PlayerEventsTypes.VideoResized;\n x: number;\n y: number;\n width: number;\n height: number;\n };\n\nexport interface PlayerAction {\n actionType: PlayerActionTypes;\n options?: SeekOptions;\n}\n\nexport interface SeekOptions {\n seekTo: number;\n pause: boolean;\n}\n\nexport interface PlayerBundleConfig {\n ks?: string;\n bundlerUrl?: string;\n partnerId?: string;\n uiConfId?: string;\n}\n\nexport interface PlayerContextValue {\n playerBundleStatus: PlayerBundleStatuses;\n playerBundleConfig: PlayerBundleConfig;\n getPlayerCurrentTime$: (playerId: string) => Observable;\n getPlayerState$: (playerId: string) => Observable;\n getPlayerEvents$: (playerId: string) => Observable;\n getPlayerInstance: (playerId: string) => null | Record;\n seek: (playerId: string, options: SeekOptions) => void;\n play: (playerId: string) => void;\n pause: (playerId: string) => void;\n registerPlayer: (\n playerId: string,\n currentTime$: Observable,\n playerState$: Observable,\n playerEvents$: Observable\n ) => { action$: Observable; onRemove: () => void };\n}\n\nexport const defaultPlayerContext: PlayerContextValue = {\n playerBundleStatus: PlayerBundleStatuses.Error,\n playerBundleConfig: {},\n getPlayerState$: () =>\n throwError(\n new Error(`can't use context, KalturaPlayerProvider is missing`)\n ),\n getPlayerEvents$: () =>\n throwError(\n new Error(`can't use context, KalturaPlayerProvider is missing`)\n ),\n getPlayerCurrentTime$: () =>\n throwError(\n new Error(`can't use context, KalturaPlayerProvider is missing`)\n ),\n seek: () => {\n console.warn(`can't seek, KalturaPlayerProvider is missing`);\n },\n play: () => {\n console.warn(`can't play, KalturaPlayerProvider is missing`);\n },\n getPlayerInstance: () => {\n console.warn(\n `can't get player instance , KalturaPlayerProvider is missing`\n );\n return null;\n },\n pause: () => {\n console.warn(`can't pause, KalturaPlayerProvider is missing`);\n },\n registerPlayer: () => ({\n action$: throwError(\n new Error(`can't use context, KalturaPlayerProvider is missing`)\n ),\n onRemove: () => { }\n })\n};\n\nexport const KalturaPlayerContext = React.createContext(\n defaultPlayerContext\n);\n","import { useEffect, useState } from \"react\";\nimport {\n PlayerBundleConfig,\n PlayerBundleStatuses\n} from \"../kaltura-player-context\";\n\ntype InjectStatuses = \"loading\" | \"loaded\" | \"error\" | \"initial\";\nlet injectedScriptUrl: string | null = null;\nlet injectStatus: InjectStatuses = \"initial\";\nlet injectLoadedCallbacks: (() => void)[] = [];\n\nconst handleInjectResponse = (status: \"error\" | \"loaded\") => {\n injectStatus = status;\n injectLoadedCallbacks.forEach(cb => {\n cb();\n });\n injectLoadedCallbacks = [];\n};\n\nconst addInjectCallback = (cb: () => void) => {\n injectLoadedCallbacks.push(cb);\n};\n\nconst removeInjectCallback = (cb: () => void) => {\n injectLoadedCallbacks = injectLoadedCallbacks.filter(\n listener => listener !== cb\n );\n};\n\nconst injectScriptIntoPage = (playerBundlerUrl: string) => {\n if (injectStatus !== \"initial\") {\n return;\n }\n\n injectStatus = \"loading\";\n injectedScriptUrl = playerBundlerUrl;\n\n if (!playerBundlerUrl) {\n console.warn(\n \"Failed to load player into session,\" +\n \" did you forget to provide a player bundler url?\"\n );\n handleInjectResponse(\"error\");\n return;\n }\n\n // @ts-ignore\n if (!!window[\"KalturaPlayer\"] && window[\"KalturaPlayer\"].setup) {\n handleInjectResponse(\"loaded\");\n return;\n }\n\n try {\n const head = document.head || document.getElementsByTagName(\"head\")[0];\n const scriptElement = document.createElement(\"script\");\n scriptElement.type = \"text/javascript\";\n scriptElement.src = playerBundlerUrl;\n scriptElement.onload = () => {\n handleInjectResponse(\"loaded\");\n };\n scriptElement.onerror = e => {\n console.warn(`Failed to load kaltura player bundler script.`, e);\n handleInjectResponse(\"error\");\n };\n head.appendChild(scriptElement);\n } catch (e) {\n console.warn(`Failed to load kaltura player bundler script.`, e);\n handleInjectResponse(\"error\");\n }\n};\n\nexport const useLoadPlayerBundler = (options: {\n playerBundleConfig: PlayerBundleConfig;\n}) => {\n const { playerBundleConfig } = options;\n const [playerBundleStatus, setPlayerBundleStatus] = useState(\n PlayerBundleStatuses.Initial\n );\n\n useEffect(() => {\n const handleLateBundleCallback = () => {\n if (injectStatus === \"loaded\") {\n setPlayerBundleStatus(PlayerBundleStatuses.Loaded);\n } else {\n setPlayerBundleStatus(PlayerBundleStatuses.Error);\n }\n };\n\n if (\n playerBundleStatus === PlayerBundleStatuses.Error ||\n playerBundleStatus === PlayerBundleStatuses.Loaded\n ) {\n return;\n }\n\n if (playerBundleStatus === PlayerBundleStatuses.Initial) {\n if (\n !playerBundleConfig ||\n !playerBundleConfig.partnerId ||\n !playerBundleConfig.uiConfId ||\n !playerBundleConfig.bundlerUrl\n ) {\n console.warn(`cannot load kaltura player bundler into session,\n missing parameters (did you remember to provide partnerId,\n uiConfId and playerBundleUrl?`);\n setPlayerBundleStatus(PlayerBundleStatuses.Error);\n return;\n }\n\n setPlayerBundleStatus(PlayerBundleStatuses.Loading);\n return;\n }\n\n const playerBundlerUrl = `${playerBundleConfig.bundlerUrl}/p/${playerBundleConfig.partnerId\n }/embedPlaykitJs/uiconf_id/${playerBundleConfig.uiConfId}`;\n\n if (!injectedScriptUrl) {\n addInjectCallback(handleLateBundleCallback);\n injectScriptIntoPage(playerBundlerUrl);\n return;\n }\n\n if (injectedScriptUrl !== playerBundlerUrl) {\n setPlayerBundleStatus(PlayerBundleStatuses.Error);\n console.warn(`It is not allowed to create multiple players'\n bundlers with different bundler urls. Did you create more than one\n provider ?`);\n return;\n }\n\n switch (injectStatus) {\n case \"loaded\":\n setPlayerBundleStatus(PlayerBundleStatuses.Loaded);\n break;\n case \"loading\":\n addInjectCallback(handleLateBundleCallback);\n break;\n default:\n setPlayerBundleStatus(PlayerBundleStatuses.Error);\n break;\n }\n return () => {\n removeInjectCallback(handleLateBundleCallback);\n };\n }, [playerBundleStatus, playerBundleConfig]);\n\n return { playerBundleStatus };\n};\n","import * as React from \"react\";\nimport { useMemo, useRef } from \"react\";\nimport {\n KalturaPlayerContext,\n PlayerAction,\n PlayerActionTypes,\n PlayerEvents,\n SeekOptions,\n PlaybackStatuses,\n PlayerBundleConfig\n} from \"./kaltura-player-context\";\nimport { useLoadPlayerBundler } from \"./inner-hooks/use-load-player-bundler\";\nimport { Observable, Subject, throwError } from \"rxjs\";\nimport { getAndStoreKalturaVideoPlayerId } from \"src/views/utils/Utils\";\n\nexport interface KalturaPlayerProviderProps {\n children?: React.ReactChild;\n}\n\nexport const KalturaPlayerProvider = (props: KalturaPlayerProviderProps) => {\n const { children } = props;\n\n const [playerBundleConfig, setPlayerBundleConfig] = React.useState(\n {\n bundlerUrl: \"https://cdnapisec.kaltura.com\",\n partnerId: \"2420952\",\n ks: \"\",\n uiConfId: \"46373591\"\n }\n );\n const { playerBundleStatus } = useLoadPlayerBundler({ playerBundleConfig });\n\n\n React.useEffect(() => {\n fetchKalturaPlayerId();\n }, []);\n\n\n const fetchKalturaPlayerId = async () => {\n let kaltura_video_player_id_professional_portal = localStorage.getItem('kaltura_video_player_id_professional_portal');\n if (kaltura_video_player_id_professional_portal) {\n setPlayerBundleConfig({\n bundlerUrl: \"https://cdnapisec.kaltura.com\",\n partnerId: \"2420952\",\n ks: \"\",\n uiConfId: kaltura_video_player_id_professional_portal\n });\n } else {\n kaltura_video_player_id_professional_portal = await getAndStoreKalturaVideoPlayerId();\n if (kaltura_video_player_id_professional_portal) {\n setPlayerBundleConfig({\n bundlerUrl: \"https://cdnapisec.kaltura.com\",\n partnerId: \"2420952\",\n ks: \"\",\n uiConfId: kaltura_video_player_id_professional_portal\n });\n }\n }\n };\n\n\n const _playersRef = useRef<\n Record<\n string,\n {\n currentTime$: Observable;\n playerState$: Observable;\n playerEvents$: Observable;\n getPlayerInstance: () => any;\n doAction: Subject;\n }\n >\n >({});\n\n const playerContextValue = useMemo(() => {\n const registerPlayer = (\n playerId: string,\n currentTime$: Observable,\n playerState$: Observable,\n playerEvents$: Observable\n ) => {\n _playersRef.current[playerId] = {\n currentTime$,\n playerState$,\n playerEvents$,\n getPlayerInstance: () => {\n // @ts-ignore\n return (\n // @ts-ignore\n (window.KalturaPlayer &&\n // @ts-ignore\n window.KalturaPlayer.getPlayers &&\n // @ts-ignore\n window.KalturaPlayer.getPlayers()[playerId]) ||\n null\n );\n },\n doAction: new Subject()\n };\n return {\n action$: _playersRef.current[playerId].doAction.asObservable(),\n onRemove: () => {\n if (!_playersRef.current[playerId]) return;\n _playersRef.current[playerId].doAction.complete();\n delete _playersRef.current[playerId];\n }\n };\n };\n\n const seek = (playerId: string, options: SeekOptions) => {\n if (!_playersRef.current[playerId]) return;\n\n _playersRef.current[playerId].doAction.next({\n actionType: PlayerActionTypes.Seek,\n options\n });\n };\n\n const play = (playerId: string) => {\n if (!_playersRef.current[playerId]) return;\n\n _playersRef.current[playerId].doAction.next({\n actionType: PlayerActionTypes.Play\n });\n };\n\n const getPlayerInstance = (playerId: string) => {\n if (!_playersRef.current[playerId]) return;\n\n return _playersRef.current[playerId].getPlayerInstance();\n };\n\n const pause = (playerId: string) => {\n if (!_playersRef.current[playerId]) return;\n\n _playersRef.current[playerId].doAction.next({\n actionType: PlayerActionTypes.Pause\n });\n };\n\n const getPlayerCurrentTime$ = (playerId: string) => {\n return _playersRef.current[playerId]\n ? _playersRef.current[playerId].currentTime$\n : throwError(new Error(\"No player with provided playerId\"));\n };\n\n const getPlayerState$ = (playerId: string) => {\n return _playersRef.current[playerId]\n ? _playersRef.current[playerId].playerState$\n : throwError(new Error(\"No player with provided playerId\"));\n };\n\n const getPlayerEvents$ = (playerId: string) => {\n return _playersRef.current[playerId]\n ? _playersRef.current[playerId].playerEvents$\n : throwError(new Error(\"No player with provided playerId\"));\n };\n\n return {\n playerBundleStatus,\n playerBundleConfig,\n registerPlayer,\n getPlayerCurrentTime$,\n getPlayerState$,\n getPlayerEvents$,\n seek,\n play,\n pause,\n getPlayerInstance\n };\n }, [playerBundleStatus, playerBundleConfig]);\n\n return (\n \n {children}\n \n );\n};\n\nKalturaPlayerProvider.defaultProps = {};\n","import { useContext, useEffect, useRef, useState } from \"react\";\nimport {\n KalturaPlayerContext,\n PlayerAction,\n PlayerActionTypes,\n PlayerEvents,\n PlayerEventsTypes,\n PlayerBundleStatuses,\n PlayerStatuses,\n PlaybackStatuses,\n MediaStatuses\n} from \"src/kaltura-player/kaltura-player-context\";\n\nimport { BehaviorSubject, Subscription, Subject } from \"rxjs\";\nimport { useCallbackRef } from \"./use-callback-ref\";\n\nexport interface UseLoadPlayerOptions {\n autoplay: boolean;\n entryId: string;\n onPlayerLoaded?: (data: { entryId: string; playerId: string }) => void;\n onMediaLoaded?: (entryId: string) => void;\n onPlayerLoadingError?: (entryId: string) => void;\n onMediaLoadingError?: (entryId: string) => void;\n enableKavaAnalytics?: boolean;\n customizeConfig?: (config: Record) => Record;\n}\n\nexport interface PlayerState {\n playerId: string;\n playerStatus: PlayerStatuses;\n mediaStatus: MediaStatuses;\n}\n\ntype PlayerStateChangeEvent = {\n payload: {\n newState: {\n type: string;\n };\n oldState: {\n type: string;\n };\n };\n};\n\n/*\nDeveloper notice\nIn this sample we used a simple way to create unique id. You can keep it\nor replace it with an existing library like shortId\n*/\nlet uniqueIdIndex = 0;\nfunction getUniquePlayerId() {\n uniqueIdIndex++;\n return `kaltura-player${uniqueIdIndex}`;\n}\n\nconst acceptedPlaybackStatusesValues: string[] = Object.keys(\n PlaybackStatuses\n).map(key => (PlaybackStatuses as any)[key]);\n\nexport const useLoadPlayer = (options: UseLoadPlayerOptions): PlayerState => {\n const {\n entryId,\n autoplay,\n onMediaLoaded,\n onMediaLoadingError,\n onPlayerLoaded,\n onPlayerLoadingError\n } = options;\n\n const { playerBundleStatus, playerBundleConfig, registerPlayer } = useContext(\n KalturaPlayerContext\n );\n\n const unmountedRef = useRef(false);\n\n const [playerState, setPlayerState] = useState(() => ({\n playerId: getUniquePlayerId(),\n playerStatus: PlayerStatuses.Initial,\n mediaStatus: MediaStatuses.Initial\n }));\n\n const playerTimeSubjectRef = useRef(new BehaviorSubject(0));\n const playerStateSubjectRef = useRef(\n new BehaviorSubject(PlaybackStatuses.Idle)\n );\n const playerEventsSubjectRef = useRef(new Subject());\n const playerRegistrationRef = useRef({\n seekSubscription: Subscription.EMPTY,\n onRemove: () => { }\n });\n const playerRef = useCallbackRef(null, () => {\n if (!playerRef.current) {\n return;\n }\n\n const updatePlayerCurrentTime = () => {\n playerTimeSubjectRef.current.next(\n Math.floor(playerRef.current.currentTime * 1000)\n );\n };\n\n\n const updatePlayerState = (e: PlayerStateChangeEvent) => {\n const playbackStatus = e.payload.newState.type;\n if (acceptedPlaybackStatusesValues.indexOf(playbackStatus) === -1) {\n console.warn(\n `Kaltura player emitted unknown state ${playbackStatus}. Ignoring the mentioned state`\n );\n return;\n }\n playerStateSubjectRef.current.next(playbackStatus as PlaybackStatuses);\n };\n\n const emitVideoResized = (e: any) => {\n const { x, y, width, height } = e.payload.videoSize;\n\n playerEventsSubjectRef.current.next({\n type: PlayerEventsTypes.VideoResized,\n x,\n y,\n width,\n height\n });\n };\n\n const emitFirstPlaying = () => {\n playerEventsSubjectRef.current.next({\n type: PlayerEventsTypes.FirstPlaying\n });\n };\n\n const emitPlayerResized = (e: any) => {\n const { width, height } = e.payload.playerSize;\n\n playerEventsSubjectRef.current.next({\n type: PlayerEventsTypes.PlayerResized,\n width,\n height\n });\n };\n\n\n const getPlayerVideoResizeEvent = () =>\n // @ts-ignore\n window[\"KalturaPlayer\"].ui.EventType.VIDEO_RESIZE;\n\n const getPlayerResizeEvent = () =>\n // @ts-ignore\n window[\"KalturaPlayer\"].ui.EventType.PLAYER_RESIZE;\n\n playerRef.current.addEventListener(\"timeupdate\", updatePlayerCurrentTime);\n playerRef.current.addEventListener(\"playerstatechanged\", updatePlayerState);\n playerRef.current.addEventListener(\"firstplaying\", emitFirstPlaying);\n playerRef.current.addEventListener(\n getPlayerVideoResizeEvent(),\n emitVideoResized\n );\n // playerRef.current.addEventListener(\"play\", onPlayEvent);\n playerRef.current.addEventListener(\n getPlayerResizeEvent(),\n emitPlayerResized\n );\n\n return () => {\n if (!playerRef.current) return;\n playerRef.current.removeEventListener(\n \"timeupdate\",\n updatePlayerCurrentTime\n );\n playerRef.current.removeEventListener(\n \"playerstatechanged\",\n updatePlayerState\n );\n playerRef.current.removeEventListener(\"firstplaying\", emitFirstPlaying);\n playerRef.current.removeEventListener(\n getPlayerVideoResizeEvent(),\n emitVideoResized\n );\n playerRef.current.removeEventListener(\n getPlayerResizeEvent(),\n emitPlayerResized\n );\n playerRegistrationRef.current.seekSubscription.unsubscribe();\n playerRegistrationRef.current.onRemove();\n playerTimeSubjectRef.current.complete();\n playerRef.current.destroy();\n setPlayerState(prevState => ({\n ...prevState,\n playerStatus: PlayerStatuses.Destroyed,\n mediaStatus: MediaStatuses.Destroyed\n }));\n };\n });\n\n const loadPlayerMedia = () => {\n if (playerRef.current === null) {\n return;\n }\n\n setPlayerState(prevState => ({\n ...prevState,\n mediaStatus: MediaStatuses.Loading\n }));\n\n playerRef.current\n .loadMedia({ entryId })\n .then(() => {\n if (unmountedRef.current) return;\n if (onMediaLoaded) onMediaLoaded(entryId);\n setPlayerState(prevState => ({\n ...prevState,\n mediaStatus: MediaStatuses.Loaded\n }));\n })\n .catch((err: any) => {\n if (unmountedRef.current) return;\n console.warn(`Kaltura Player: 'loadMedia' error:`, err);\n if (onMediaLoadingError) onMediaLoadingError(entryId);\n setPlayerState(prevState => ({\n ...prevState,\n mediaStatus: MediaStatuses.Error\n }));\n });\n };\n\n /*\n const onPlayEvent = () => {\n \n console.log(\n \n \"onPlay before fullscreen: \" + playerRef.current.currentTime\n \n );\n \n playerRef.current.enterFullscreen();\n \n };\n **/\n\n\n useEffect(() => {\n return () => {\n unmountedRef.current = true;\n };\n }, []);\n\n //listen to media change\n useEffect(() => {\n if (playerState.playerStatus !== PlayerStatuses.Loaded) {\n return;\n }\n if (!playerRef.current) {\n console.warn(`Can't change media. There is no player`);\n return;\n }\n\n loadPlayerMedia();\n }, [entryId]);// eslint-disable-line react-hooks/exhaustive-deps\n\n //listen to player loading status in order to load media\n useEffect(() => {\n if (playerState.playerStatus !== PlayerStatuses.Loaded) {\n return;\n }\n\n loadPlayerMedia();\n }, [playerState.playerStatus]);// eslint-disable-line react-hooks/exhaustive-deps\n\n //listen to player bundle loading status in order to load player\n useEffect(() => {\n if (\n playerState.mediaStatus === MediaStatuses.Destroyed ||\n playerState.playerStatus === PlayerStatuses.Destroyed\n ) {\n return;\n }\n\n const onSeek = (time: number, pause: boolean) => {\n if (\n !playerRef.current ||\n typeof playerRef.current.currentTime !== \"number\"\n ) {\n return;\n }\n //We don't seek in youtube videos. Need to be fixed in the future.\n try{\n if (pause) playerRef.current.pause();\n playerRef.current.currentTime = time / 1000;\n }\n catch(error){\n }\n };\n\n const loadPlayer = () => {\n if (playerRef.current) {\n return;\n }\n\n // @ts-ignore\n const playerManager = window[\"KalturaPlayer\"];\n try {\n let config: Record = {\n playback: {\n autoplay\n }\n };\n\n if (options.customizeConfig) {\n config = options.customizeConfig(config) || config;\n }\n\n config = {\n ...config,\n targetId: playerState.playerId,\n provider: {\n ...config.provider,\n uiConfId: playerBundleConfig.uiConfId,\n partnerId: playerBundleConfig.partnerId,\n ks: playerBundleConfig.ks\n },\n plugins: {\n ...config.plugins,\n }\n };\n\n const player = playerManager.setup(config);\n\n playerRef.current = player;\n const { action$, onRemove } = registerPlayer(\n playerState.playerId,\n playerTimeSubjectRef.current.asObservable(),\n playerStateSubjectRef.current.asObservable(),\n playerEventsSubjectRef.current.asObservable()\n );\n const playerActionsSubscription = action$.subscribe(\n ({ actionType, options }: PlayerAction) => {\n switch (actionType) {\n case PlayerActionTypes.Seek:\n if (!options) return;\n onSeek(options.seekTo, options.pause);\n break;\n case PlayerActionTypes.Pause:\n if (!playerRef.current) return;\n playerRef.current.pause();\n break;\n case PlayerActionTypes.Play:\n if (!playerRef.current) return;\n playerRef.current.play();\n break;\n }\n }\n );\n playerRegistrationRef.current = {\n seekSubscription: playerActionsSubscription,\n onRemove\n };\n\n if (onPlayerLoaded)\n onPlayerLoaded({ entryId, playerId: playerState.playerId });\n\n setPlayerState(prevState => ({\n ...prevState,\n playerStatus: PlayerStatuses.Loaded\n }));\n } catch (e) {\n console.warn(`kaltura Player: setup failure:`, e);\n if (onPlayerLoadingError) onPlayerLoadingError(entryId);\n setPlayerState(prevState => ({\n ...prevState,\n playerStatus: PlayerStatuses.Error\n }));\n }\n };\n\n switch (playerBundleStatus) {\n case PlayerBundleStatuses.Loaded:\n loadPlayer();\n break;\n case PlayerBundleStatuses.Error:\n if (onPlayerLoadingError) onPlayerLoadingError(entryId);\n setPlayerState(prevState => ({\n ...prevState,\n playerStatus: PlayerStatuses.Error\n }));\n break;\n }\n }, [playerBundleStatus]);// eslint-disable-line react-hooks/exhaustive-deps\n\n return playerState;\n};\n","// inspired by https://github.com/theKashey/use-callback-ref\nimport { MutableRefObject, useEffect, useRef, useState } from 'react';\n\ntype Callback = () => void | (() => void);\n\nexport function useCallbackRef(\n initialValue: T | null,\n callback: Callback,\n): MutableRefObject {\n\n const unMountedRef = useRef(false);\n\n const [ref] = useState<{\n value: T | null,\n onDestroy: null | (() => void),\n callback: Callback,\n facade: any,\n }>(() => ({\n value: initialValue,\n onDestroy: null,\n callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n if (unMountedRef.current) {\n return;\n }\n\n const last = ref.value;\n\n executeOnDestroy();\n\n ref.onDestroy = null;\n\n if (last !== value) {\n ref.value = value;\n ref.onDestroy = ref.callback() || null;\n }\n }\n }\n }));\n\n function executeOnDestroy() {\n const onDestroy = ref.onDestroy;\n ref.onDestroy = null;\n\n if (!onDestroy) {\n return;\n }\n onDestroy();\n }\n\n\n // update callback\n ref.callback = callback;\n\n\n useEffect(() => {\n if (ref.callback) {\n ref.onDestroy = ref.callback() || null\n }\n\n return () => {\n unMountedRef.current = true;\n\n if (!ref.onDestroy) {\n return;\n }\n\n executeOnDestroy();\n ref.value = null;\n }\n }, []);// eslint-disable-line react-hooks/exhaustive-deps\n\n return ref.facade;\n}\n","import * as React from \"react\";\nimport { useLoadPlayer } from \"./inner-hooks/use-load-player\";\nimport { PlayerStatuses } from \"./kaltura-player-context\";\nimport { StyleSheet, css } from \"aphrodite\";\n\nexport interface KalturaPlayerProps {\n /**\n * Entry Id, playable media entry id.\n */\n entryId: string;\n /**\n * Autoplay. Indicating if the auto play selected media\n * @default true\n */\n autoplay: boolean;\n /**\n * OnPlayerLoaded event handler. Will be called after all player bundler scripts were loaded\n * @param {entryId: string, playerId: string}\n */\n onPlayerLoaded?: (data: { entryId: string; playerId: string }) => void;\n /**\n * OnMediaLoaded event handler. Will be called after media entry was successful loaded in player\n * @param entryId\n */\n onMediaLoaded?: (entryId: string) => void;\n /**\n * onPlayerLoadingError event handler. Will be called after a player loading related error\n * @param error\n */\n onPlayerLoadingError?: (entryId: string) => void;\n /**\n * onMediaLoadingError event handler. Will be called after a media loading related error\n * @param error\n */\n onMediaLoadingError?: (entryId: string) => void;\n\n /**\n * customize player config before player setup\n */\n customizeConfig?: (config: Record) => Record;\n}\n\n/*\nDEVELOPER NOTICE\nwe used 'aphrodite' library to style this component but any css-in-js\nlibrary should fit. And you can always convert it to whatever method you are using.\nThis is the only place we actually need styling.\nCheckout https://github.com/MicheleBertoli/css-in-js\n*/\nconst classes = StyleSheet.create({\n kalturaPlayer: {\n height: \"100%\",\n width: \"100%\"\n },\n scriptErrorContainer: {\n height: \"100%\",\n width: \"100%\",\n backgroundColor: \"lightgray\",\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"space-evenly\",\n position: \"relative\",\n borderRadius: \"4px\"\n },\n scriptsErrorMsg: {\n width: \"100%\",\n fontSize: \"15px\",\n fontWeight: \"normal\",\n fontStretch: \"normal\",\n fontStyle: \"normal\",\n lineHeight: \"normal\",\n letterSpacing: \"normal\",\n textAlign: \"center\",\n color: \"#434a4b\"\n }\n});\n\nexport const PlayerErrorMessage = \"Oops, failed to load the player\";\n\nexport const KalturaPlayer = (props: KalturaPlayerProps) => {\n const {\n entryId,\n autoplay,\n onPlayerLoadingError,\n onPlayerLoaded,\n customizeConfig,\n onMediaLoadingError,\n onMediaLoaded\n } = props;\n\n const { playerId, playerStatus } = useLoadPlayer({\n autoplay,\n entryId,\n onPlayerLoadingError,\n onPlayerLoaded,\n onMediaLoadingError,\n onMediaLoaded,\n customizeConfig\n });\n\n return (\n <>\n {playerStatus === PlayerStatuses.Error ? (\n
\n
\n {PlayerErrorMessage}\n
\n
\n ) : (\n
\n )}\n \n );\n};\n\nKalturaPlayer.defaultProps = {\n autoplay: true\n};\n","export class KalturaPlayerUtils {\n // @ts-ignore\n private _KalturaPlayer = window.KalturaPlayer;\n\n constructor(private _playerId: string) { }\n\n private _getPlayerInstance() {\n if (!this._KalturaPlayer || !this._playerId) {\n return null;\n }\n\n return this._KalturaPlayer.getPlayer(this._playerId);\n }\n\n getInstance() {\n return this._getPlayerInstance();\n }\n\n getVideoDimensions(): null | { width: number; height: number } {\n const playerInstance = this._getPlayerInstance();\n\n if (!playerInstance) {\n return null;\n }\n\n const videoElement = playerInstance.getVideoElement();\n return videoElement\n ? {\n width: videoElement.videoWidth,\n height: videoElement.videoHeight\n }\n : null;\n }\n\n getPlayerDimensions(): null | { width: number; height: number } {\n const playerInstance = this._getPlayerInstance();\n\n if (!playerInstance) {\n return null;\n }\n\n const view = playerInstance.getView();\n\n if (!view) {\n return null;\n }\n\n return {\n width: view.offsetWidth,\n height: view.offsetHeight\n };\n }\n}\n","import { useContext, useEffect, useMemo, useRef } from \"react\";\nimport { KalturaPlayerContext, SeekOptions } from \"./kaltura-player-context\";\nimport { KalturaPlayerUtils } from \"./kaltura-player-utils\";\n\nexport const usePlayer = (playerId: string) => {\n const playerContext = useContext(KalturaPlayerContext);\n const playerIdRef = useRef(playerId);\n\n useEffect(() => {\n playerIdRef.current = playerId;\n }, [playerId]);\n\n const result = useMemo(() => {\n function validate() {\n if (!playerIdRef.current) {\n console.warn(\n `trying to perform action on kaltura player but no player id was provided.`\n );\n return false;\n }\n\n return true;\n }\n\n return {\n getVideoDimensions: (): null | { width: number; height: number } => {\n if (!validate()) {\n return null;\n }\n\n return new KalturaPlayerUtils(playerIdRef.current).getVideoDimensions();\n },\n getPlayerDimensions: (): null | { width: number; height: number } => {\n if (!validate()) {\n return null;\n }\n\n return new KalturaPlayerUtils(\n playerIdRef.current\n ).getPlayerDimensions();\n },\n playerPlay: () => {\n if (!validate()) {\n return;\n }\n playerContext.play(playerIdRef.current);\n },\n playerSeek: (options: SeekOptions) => {\n if (!validate()) {\n return;\n }\n playerContext.seek(playerIdRef.current, options);\n },\n playerPause: () => {\n if (!validate()) {\n return;\n }\n playerContext.pause(playerIdRef.current);\n },\n getPlayerInstance: () => {\n if (!validate()) {\n return null;\n }\n\n return new KalturaPlayerUtils(playerIdRef.current).getInstance();\n }\n };\n }, [playerContext]);\n\n return result;\n};\n","import { useContext, useEffect, useMemo, useRef } from 'react';\nimport { KalturaPlayerContext, PlaybackStatuses, PlayerEvents } from \"./kaltura-player-context\";\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport const usePlayerUpdates = (playerId: string) => {\n const { getPlayerState$, getPlayerCurrentTime$, getPlayerEvents$ } = useContext(KalturaPlayerContext);\n const playerStateRef = useRef(new BehaviorSubject(PlaybackStatuses.Idle));\n const playerEventsRef = useRef(new Subject());\n const playerTimeRef = useRef(new BehaviorSubject(0));\n\n useEffect(() => {\n if (!playerId) return;\n\n const playerCurrentTimeSubscription =\n getPlayerCurrentTime$(playerId).subscribe((currentTime) => {\n playerTimeRef.current.next(currentTime);\n });\n\n const playerCurrentStateSubscription =\n getPlayerState$(playerId).subscribe((currentState) => {\n playerStateRef.current.next(currentState);\n });\n\n const playerEventsSubscription =\n getPlayerEvents$(playerId).subscribe((currentState) => {\n playerEventsRef.current.next(currentState);\n });\n\n return () => {\n playerCurrentStateSubscription.unsubscribe();\n playerCurrentTimeSubscription.unsubscribe();\n playerEventsSubscription.unsubscribe();\n };\n\n }, [playerId]);// eslint-disable-line react-hooks/exhaustive-deps\n\n const result = useMemo(() => {\n return {\n playerTime$: playerTimeRef.current.asObservable(),\n playerState$: playerStateRef.current.asObservable(),\n playerEvents$: playerEventsRef.current.asObservable(),\n getPlayerTime: () => {\n return playerTimeRef.current.getValue();\n },\n getPlayerState: () => {\n return playerStateRef.current.getValue();\n }\n }\n }, [playerId]);// eslint-disable-line react-hooks/exhaustive-deps\n\n\n return result\n};\n","import { useContext } from 'react';\nimport SettingsContext from 'src/contexts/SettingsContext';\nimport type { SettingsContextValue } from 'src/contexts/SettingsContext';\n\nconst useSettings = (): SettingsContextValue => useContext(SettingsContext);\n\nexport default useSettings;\n"],"sourceRoot":""}