{"version":3,"sources":["shared/components/Modal/index.ts","shared/components/ShadowScroll/ShadowScrollContext.ts","route-files.tsx","shared/components/ShadowScroll/ShadowScroll.tsx","shared/components/ShadowScroll/index.ts","shared/components/StrongLink.tsx","shared/state/auth/reducer.ts","shared/components/Modal/ModalContext.ts","shared/components/Modal/Modal.tsx","shared/components/Modal/Body.tsx","shared/components/Modal/Footer.tsx","shared/components/Modal/Header.tsx","shared/components/Modal/Provider.tsx","shared/components/StyledElementButtonSolid.tsx","shared/components/ButtonSolid.tsx","shared/signalr/SignalrConnectionContextProvider.tsx","shared/components/ShadowScroll/ScrollArea.tsx","NavigationPathConverter.js","shared/components/JsResizeHelper.ts","shared/components/KeepAlive.tsx","shared/components/XsrfToken.ts","shared/components/AxiosInterceptor.ts","shared/components/DelayedLoadingToast.ts","shared/signalr/SignalrProvider.tsx","config/configureAxios.ts","config/configureServices.ts","app/App.tsx","app/index.ts","shared/state/reducer.ts","reportWebVitals.ts","serviceWorkerRegistration.ts","index.tsx","shared/state/store.ts","shared/state/auth/selectors.ts","shared/forms/InputWithValidation.tsx","routes/Login.tsx","shared/state/ui/reducer.ts","shared/components/FileSystemRoutes.tsx","shared/components/SupportText.tsx","shared/state/auth/actions.ts","shared/hooks/useLoginRedirect.ts","shared/components/SingleActionPage.tsx","shared/components/LinkBlue.tsx","shared/state/auth/authTicketStates.ts","api/index.ts"],"names":["Modal","createStrictContext","ShadowScrollContextProvider","useShadowScrollContext","routes","importPath","path","importFunc","routeMap","suffix","entityId","siteId","groupId","studyId","studyArmId","counselorId","participantId","sessionId","weightId","ShadowScroll","children","className","shadowRef","useRef","ShadowScrollContext","value","classNames","ref","ScrollArea","StrongLinkRef","forwardRef","StrongLink","to","props","reducer","createSlice","name","initialState","user","authError","noRedirect","authTicketState","authTicketStates","cookieExpirationMinutes","reducers","extraReducers","allowRedirects","type","state","setNoAuth","loadUser","pending","fulfilled","payload","rejected","logout","getCookieExpiration","ModalContextProvider","useModalContext","show","onHide","initialFocus","useState","uniqueId","instanceId","showBody","setShowBody","openInstanceName","addVisible","removeVisible","useEffect","isActiveInstance","fallbackFocus","timeout","setTimeout","clearTimeout","target","current","focus","open","onClose","Overlay","aria-hidden","Body","Footer","Header","Provider","visibleStack","setVisibleStack","useCallback","filter","x","providerValue","useMemo","StyledElementButtonSolid","tag","color","React","createElement","ButtonSolidRef","ButtonSolid","errorMessage","SignalRConnectionContextProvider","useSignalRConnectionContext","targetRef","shadow","global","ResizeObserver","shadowThrottle","throttle","drawShadows","trailing","leading","addEventListener","passive","resizeObserver","observe","index","childElementCount","element","mutationObserver","MutationObserver","handleMutation","childList","removeEventListener","disconnect","style","boxShadow","cancel","mutations","mi","length","mutation","ei","removedNodes","node","nodeType","unobserve","addedNodes","distances","scrollTop","scrollWidth","scrollLeft","clientWidth","scrollHeight","clientHeight","toRender","push","shadows","join","handleScrollShadows","module","exports","NavigationPathConverter","split","map","part","startsWith","replace","toLowerCase","JsResizeHelper","fastCycle","setHeight","middleDebounce","debounce","finalCheck","fancyCycle","window","document","documentElement","setProperty","innerHeight","ACTIVE_EVENTS","KeepAlive","dispatch","useDispatch","auth","useSelector","authSelectors","getAuth","isLoggingOut","setIsLoggingOut","logoutDate","setLogoutDate","saved","localStorage","getItem","rememberMe","JSON","parse","shouldKeepAlive","id","keepAliveIntervalMilliseconds","appearIdleTimer","useIdleTimer","events","startOnMount","stopOnIdle","startManually","crossTab","onActive","undefined","reset","start","onIdle","addSeconds","Date","pause","remaining","getTime","handle","authActions","intervalHandle","setInterval","AccountService","getLoggedInUserDetails","clearInterval","stayLoggedInButtonRef","differenceInSeconds","updateIntervalInSeconds","onClick","XsrfToken","useService","addVisibleLoading","addBackgroundLoading","removePendingRequest","resetRequests","count","loadingVisible","loadingReducer","action","newCount","Math","max","Error","AxiosInterceptor","component","render","useReducer","loadingState","loadingDispatch","requestInterceptors","setRequestInterceptors","responseInterceptors","setResponseInterceptors","errorRef","err","status","response","axios","isCancel","handled","toast","error","navigate","useNavigate","requestInterceptor","interceptors","request","use","config","hasLoadingMessage","onStartRequest","onRequestFinish","Promise","reject","prevState","responseInterceptor","forEach","eject","loading","DelayedLoadingToast","activeToastRef","showTimeoutRef","hideTimeoutRef","dismiss","info","autoClose","closeButton","closeOnClick","position","POSITION","BOTTOM_CENTER","SignalRProvider","connectionProps","setConnectionProps","messageReceived","setMessageReceived","getUser","connection","signalR","withUrl","withAutomaticReconnect","configureLogging","None","build","newConnection","stop","on","off","defaults","baseURL","process","serviceOptions","App","locale","basename","FileSystemRoutes","combineReducers","authReducer","ui","uiReducer","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","Boolean","location","hostname","match","autoAddCss","store","configureStore","ReactDOM","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","console","message","getUserRoles","userRoleName","getAuthTicketState","createSelector","InputWithValidation","useStandardFormInput","input","meta","Login","restoreFromLogin","useLoginRedirect","initialValue","setRememberMe","setItem","stringify","userAuthTicketChecked","userAuthTicketChecking","SingleActionPage","Form","onSubmit","values","login","body","resp","result","ignoreLostChanges","SupportText","htmlFor","icon","faEnvelope","autoComplete","validate","validators","required","faLock","FormInput","label","SubmitFormButton","allowPristineSubmit","LinkBlue","slice","sidebar","isOpen","showSidebar","hideSidebar","toggleSidebarState","actions","MatchedLeafContextProvider","useLeafContext","rootRoutes","RootLayout","routeFiles","Component","lazy","parent","parts","effectivePath","LayoutElement","fallback","BlockingLoader","leafConfig","fullPath","Leaf","parentPool","existingParent","find","parentConfig","useRoutes","faSpinner","createAsyncThunk","a","get","data","post","createAction","urlParameterName","useLocation","returnUrl","qs","search","ignoreQueryPrefix","redirectToLogin","pathname","hash","LinkBlueRef","classNamesResult","classnames","unsafe","rest","userAuthTicketNotChecked","userAuthTicketError","configs","resolve","res","getConfigs","method","contentType","url","options","headers","CommunicationPreference","PercentType","basePath","params","provider","remoteError","email","token","CounselorsService","GroupsService","MessagesService","ParticipantsService","StartDate","EndDate","ScalesService","FormData","Object","prototype","toString","call","item","append","SessionMaterialsService","SessionsService","SessionSchedulesService","SettingsService","SitesService","StudiesService","StudyArmsService","UsersService","WeightsService"],"mappings":"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","file":"static/js/main.7e6e6a00.chunk.js","sourcesContent":["import Modal from './Modal';\n\nexport default Modal;\n","import { createStrictContext } from 'envoc-strict-context';\nimport { MutableRefObject } from 'react';\n\nexport const [ShadowScrollContextProvider, useShadowScrollContext] =\n createStrictContext>();\n","// this is auto generated, don't try and change it\r\nconst routes = [\r\n {importPath: './src/routes/403.tsx', path: '403', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/403')},\r\n {importPath: './src/routes/404.tsx', path: '404', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/404')},\r\n {importPath: './src/routes/Admin/_Layout.tsx', path: 'Admin/_Layout', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/_Layout')},\r\n {importPath: './src/routes/Admin/404.tsx', path: 'Admin/404', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/404')},\r\n {importPath: './src/routes/Admin/Counselors~.tsx', path: 'Admin/Counselors~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/Counselors~')},\r\n {importPath: './src/routes/Admin/index.tsx', path: 'Admin/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/index')},\r\n {importPath: './src/routes/Admin/Scales~.tsx', path: 'Admin/Scales~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/Scales~')},\r\n {importPath: './src/routes/Admin/Settings~.tsx', path: 'Admin/Settings~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/Settings~')},\r\n {importPath: './src/routes/Admin/Users~.tsx', path: 'Admin/Users~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"admin\" */'./routes/Admin/Users~')},\r\n {importPath: './src/routes/App/_Layout.tsx', path: 'App/_Layout', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/_Layout')},\r\n {importPath: './src/routes/App/Groups.tsx', path: 'App/Groups', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Groups')},\r\n {importPath: './src/routes/App/LegacyParticipants~.tsx', path: 'App/LegacyParticipants~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/LegacyParticipants~')},\r\n {importPath: './src/routes/App/Participants/$entityId.tsx', path: 'App/Participants/:entityId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Participants/$entityId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Create.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Delete/$participantId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Delete/:participantId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Delete/$participantId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Update/$participantId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Update/:participantId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Counselors/$counselorId/Participants/Update/$participantId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Dashboard/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Dashboard/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Dashboard/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/$sessionId/Details/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/:sessionId/Details/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/$sessionId/Details/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/$sessionId/SessionMaterials/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/:sessionId/SessionMaterials/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/$sessionId/SessionMaterials/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Config.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Config', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Config')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Create.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Delete/$sessionId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Delete/:sessionId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Delete/$sessionId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Update/$sessionId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Update/:sessionId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Sessions/Update/$sessionId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Create.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Delete/$weightId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Delete/:weightId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Delete/$weightId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Update/$weightId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Update/:weightId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/$studyArmId/Participants/$participantId/Weights/Update/$weightId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Create.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Delete/$studyArmId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Delete/:studyArmId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Delete/$studyArmId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Update/$studyArmId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Update/:studyArmId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/$studyId/StudyArms/Update/$studyArmId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/Create.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/Delete/$studyId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/Delete/:studyId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/Delete/$studyId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/index.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/$groupId/Studies/Update/$studyId.tsx', path: 'App/Sites/:siteId/Groups/:groupId/Studies/Update/:studyId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/$groupId/Studies/Update/$studyId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/Create.tsx', path: 'App/Sites/:siteId/Groups/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/Create')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/Delete/$groupId.tsx', path: 'App/Sites/:siteId/Groups/Delete/:groupId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/Delete/$groupId')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/index.tsx', path: 'App/Sites/:siteId/Groups/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/index')},\r\n {importPath: './src/routes/App/Sites/$siteId/Groups/Update/$groupId.tsx', path: 'App/Sites/:siteId/Groups/Update/:groupId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/$siteId/Groups/Update/$groupId')},\r\n {importPath: './src/routes/App/Sites/Create.tsx', path: 'App/Sites/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/Create')},\r\n {importPath: './src/routes/App/Sites/Delete/$siteId.tsx', path: 'App/Sites/Delete/:siteId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/Delete/$siteId')},\r\n {importPath: './src/routes/App/Sites/index.tsx', path: 'App/Sites/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/index')},\r\n {importPath: './src/routes/App/Sites/Update/$siteId.tsx', path: 'App/Sites/Update/:siteId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Sites/Update/$siteId')},\r\n {importPath: './src/routes/App/Studies.tsx', path: 'App/Studies', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Studies')},\r\n {importPath: './src/routes/App/StudyArms.tsx', path: 'App/StudyArms', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/StudyArms')},\r\n {importPath: './src/routes/App/Weights~.tsx', path: 'App/Weights~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/App/Weights~')},\r\n {importPath: './src/routes/ChangePassword.tsx', path: 'ChangePassword', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ChangePassword')},\r\n {importPath: './src/routes/CommunicationPreference.tsx', path: 'CommunicationPreference', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/CommunicationPreference')},\r\n {importPath: './src/routes/ConfirmAccount.tsx', path: 'ConfirmAccount', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ConfirmAccount')},\r\n {importPath: './src/routes/ForgotPassword.tsx', path: 'ForgotPassword', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ForgotPassword')},\r\n {importPath: './src/routes/ForgotPasswordSuccess.tsx', path: 'ForgotPasswordSuccess', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ForgotPasswordSuccess')},\r\n {importPath: './src/routes/index.tsx', path: 'index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/index')},\r\n {importPath: './src/routes/Login.tsx', path: 'Login', importFunc: () => import(/* webpackMode: \"eager\" *//* webpackChunkName: \"login\" */'./routes/Login')},\r\n {importPath: './src/routes/Messages/_Layout.tsx', path: 'Messages/_Layout', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Messages/_Layout')},\r\n {importPath: './src/routes/Messages/Threads/$entityId.tsx', path: 'Messages/Threads/:entityId', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Messages/Threads/$entityId')},\r\n {importPath: './src/routes/Messages/Threads/Create.tsx', path: 'Messages/Threads/Create', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Messages/Threads/Create')},\r\n {importPath: './src/routes/Messages/Threads/index.tsx', path: 'Messages/Threads/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Messages/Threads/index')},\r\n {importPath: './src/routes/Participant/_Layout.tsx', path: 'Participant/_Layout', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/_Layout')},\r\n {importPath: './src/routes/Participant/Dashboard~.tsx', path: 'Participant/Dashboard~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/Dashboard~')},\r\n {importPath: './src/routes/Participant/LegacyDashboard~.tsx', path: 'Participant/LegacyDashboard~', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/LegacyDashboard~')},\r\n {importPath: './src/routes/Participant/Sessions/$sessionId/Details/index.tsx', path: 'Participant/Sessions/:sessionId/Details/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/Sessions/$sessionId/Details/index')},\r\n {importPath: './src/routes/Participant/Sessions/$sessionId/SessionMaterials/index.tsx', path: 'Participant/Sessions/:sessionId/SessionMaterials/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/Sessions/$sessionId/SessionMaterials/index')},\r\n {importPath: './src/routes/Participant/Sessions/index.tsx', path: 'Participant/Sessions/index', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/Participant/Sessions/index')},\r\n {importPath: './src/routes/ResetPassword.tsx', path: 'ResetPassword', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ResetPassword')},\r\n {importPath: './src/routes/ResetPasswordConfirmation.tsx', path: 'ResetPasswordConfirmation', importFunc: () => import(/* webpackMode: \"lazy\" *//* webpackChunkName: \"auth\" */'./routes/ResetPasswordConfirmation')},\r\n];\r\n\r\nexport default routes;\nexport type StrongRouteTypes = | `/403` | `/404` | `/admin/404` | `/admin/counselors` | `/admin/counselors/${string}` | `/admin` | `/admin/scales` | `/admin/scales/${string}` | `/admin/settings` | `/admin/settings/${string}` | `/admin/users` | `/admin/users/${string}` | `/app/groups` | `/app/legacy-participants` | `/app/legacy-participants/${string}` | `/app/participants/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/counselors/${string}/participants/create` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/counselors/${string}/participants/delete/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/counselors/${string}/participants` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/counselors/${string}/participants/update/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/dashboard` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/${string}/details` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/${string}/session-materials` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/config` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/create` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/delete/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/sessions/update/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/weights/create` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/weights/delete/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/weights` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/${string}/participants/${string}/weights/update/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/create` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/delete/${string}` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms` | `/app/sites/${string}/groups/${string}/studies/${string}/study-arms/update/${string}` | `/app/sites/${string}/groups/${string}/studies/create` | `/app/sites/${string}/groups/${string}/studies/delete/${string}` | `/app/sites/${string}/groups/${string}/studies` | `/app/sites/${string}/groups/${string}/studies/update/${string}` | `/app/sites/${string}/groups/create` | `/app/sites/${string}/groups/delete/${string}` | `/app/sites/${string}/groups` | `/app/sites/${string}/groups/update/${string}` | `/app/sites/create` | `/app/sites/delete/${string}` | `/app/sites` | `/app/sites/update/${string}` | `/app/studies` | `/app/study-arms` | `/app/weights` | `/app/weights/${string}` | `/change-password` | `/communication-preference` | `/confirm-account` | `/forgot-password` | `/forgot-password-success` | `/` | `/login` | `/messages/threads/${string}` | `/messages/threads/create` | `/messages/threads` | `/participant/dashboard` | `/participant/dashboard/${string}` | `/participant/legacy-dashboard` | `/participant/legacy-dashboard/${string}` | `/participant/sessions/${string}/details` | `/participant/sessions/${string}/session-materials` | `/participant/sessions` | `/reset-password` | `/reset-password-confirmation`;\nexport const routeMap = {\r\n\t'403': () : StrongRouteTypes => `/403`,\r\n\t'404': () : StrongRouteTypes => `/404`,\r\n\t'Admin/404': () : StrongRouteTypes => `/admin/404`,\r\n\t'Admin/Counselors~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/admin/counselors/${suffix}`;\r\n\t\telse return `/admin/counselors`;\r\n},\t'Admin/index': () : StrongRouteTypes => `/admin`,\r\n\t'Admin/Scales~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/admin/scales/${suffix}`;\r\n\t\telse return `/admin/scales`;\r\n},\t'Admin/Settings~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/admin/settings/${suffix}`;\r\n\t\telse return `/admin/settings`;\r\n},\t'Admin/Users~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/admin/users/${suffix}`;\r\n\t\telse return `/admin/users`;\r\n},\t'App/Groups': () : StrongRouteTypes => `/app/groups`,\r\n\t'App/LegacyParticipants~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/app/legacy-participants/${suffix}`;\r\n\t\telse return `/app/legacy-participants`;\r\n},\t'App/Participants/:entityId': (entityId: string | number) : StrongRouteTypes => `/app/participants/${entityId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Create': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, counselorId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/counselors/${counselorId}/participants/create`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Delete/:participantId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, counselorId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/counselors/${counselorId}/participants/delete/${participantId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, counselorId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/counselors/${counselorId}/participants`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Counselors/:counselorId/Participants/Update/:participantId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, counselorId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/counselors/${counselorId}/participants/update/${participantId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Dashboard/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/dashboard`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/:sessionId/Details/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, sessionId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/${sessionId}/details`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/:sessionId/SessionMaterials/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, sessionId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/${sessionId}/session-materials`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Config': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/config`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Create': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/create`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Delete/:sessionId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, sessionId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/delete/${sessionId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Sessions/Update/:sessionId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, sessionId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/sessions/update/${sessionId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Create': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/weights/create`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Delete/:weightId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, weightId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/weights/delete/${weightId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/index': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/weights`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/:studyArmId/Participants/:participantId/Weights/Update/:weightId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number, participantId: string | number, weightId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/${studyArmId}/participants/${participantId}/weights/update/${weightId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Create': (siteId: string | number, groupId: string | number, studyId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/create`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Delete/:studyArmId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/delete/${studyArmId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/index': (siteId: string | number, groupId: string | number, studyId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/:studyId/StudyArms/Update/:studyArmId': (siteId: string | number, groupId: string | number, studyId: string | number, studyArmId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/${studyId}/study-arms/update/${studyArmId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/Create': (siteId: string | number, groupId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/create`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/Delete/:studyId': (siteId: string | number, groupId: string | number, studyId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/delete/${studyId}`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/index': (siteId: string | number, groupId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies`,\r\n\t'App/Sites/:siteId/Groups/:groupId/Studies/Update/:studyId': (siteId: string | number, groupId: string | number, studyId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/${groupId}/studies/update/${studyId}`,\r\n\t'App/Sites/:siteId/Groups/Create': (siteId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/create`,\r\n\t'App/Sites/:siteId/Groups/Delete/:groupId': (siteId: string | number, groupId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/delete/${groupId}`,\r\n\t'App/Sites/:siteId/Groups/index': (siteId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups`,\r\n\t'App/Sites/:siteId/Groups/Update/:groupId': (siteId: string | number, groupId: string | number) : StrongRouteTypes => `/app/sites/${siteId}/groups/update/${groupId}`,\r\n\t'App/Sites/Create': () : StrongRouteTypes => `/app/sites/create`,\r\n\t'App/Sites/Delete/:siteId': (siteId: string | number) : StrongRouteTypes => `/app/sites/delete/${siteId}`,\r\n\t'App/Sites/index': () : StrongRouteTypes => `/app/sites`,\r\n\t'App/Sites/Update/:siteId': (siteId: string | number) : StrongRouteTypes => `/app/sites/update/${siteId}`,\r\n\t'App/Studies': () : StrongRouteTypes => `/app/studies`,\r\n\t'App/StudyArms': () : StrongRouteTypes => `/app/study-arms`,\r\n\t'App/Weights~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/app/weights/${suffix}`;\r\n\t\telse return `/app/weights`;\r\n},\t'ChangePassword': () : StrongRouteTypes => `/change-password`,\r\n\t'CommunicationPreference': () : StrongRouteTypes => `/communication-preference`,\r\n\t'ConfirmAccount': () : StrongRouteTypes => `/confirm-account`,\r\n\t'ForgotPassword': () : StrongRouteTypes => `/forgot-password`,\r\n\t'ForgotPasswordSuccess': () : StrongRouteTypes => `/forgot-password-success`,\r\n\t'index': () : StrongRouteTypes => `/`,\r\n\t'Login': () : StrongRouteTypes => `/login`,\r\n\t'Messages/Threads/:entityId': (entityId: string | number) : StrongRouteTypes => `/messages/threads/${entityId}`,\r\n\t'Messages/Threads/Create': () : StrongRouteTypes => `/messages/threads/create`,\r\n\t'Messages/Threads/index': () : StrongRouteTypes => `/messages/threads`,\r\n\t'Participant/Dashboard~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/participant/dashboard/${suffix}`;\r\n\t\telse return `/participant/dashboard`;\r\n},\t'Participant/LegacyDashboard~': (suffix?: string | undefined) : StrongRouteTypes => {\r\n\t\tif (suffix) return `/participant/legacy-dashboard/${suffix}`;\r\n\t\telse return `/participant/legacy-dashboard`;\r\n},\t'Participant/Sessions/:sessionId/Details/index': (sessionId: string | number) : StrongRouteTypes => `/participant/sessions/${sessionId}/details`,\r\n\t'Participant/Sessions/:sessionId/SessionMaterials/index': (sessionId: string | number) : StrongRouteTypes => `/participant/sessions/${sessionId}/session-materials`,\r\n\t'Participant/Sessions/index': () : StrongRouteTypes => `/participant/sessions`,\r\n\t'ResetPassword': () : StrongRouteTypes => `/reset-password`,\r\n\t'ResetPasswordConfirmation': () : StrongRouteTypes => `/reset-password-confirmation`,\r\n};\r\n","import { ReactNode, useRef } from 'react';\nimport classNames from 'classnames';\nimport ScrollArea from './ScrollArea';\nimport { ShadowScrollContextProvider } from './ShadowScrollContext';\n\nexport interface ShadowScrollProps {\n children?: ReactNode;\n className?: string;\n}\n\n/** provides the actual area to scroll - because there are two elements representing the container + scroll area, make sure you set the proper overflow + classes to ensure scrolling occurs properly within this element */\nShadowScroll.ScrollArea = ScrollArea;\n\n/** ShadowScroll (when combined with ShadowScroll.ScrollArea) applies inset shadows to designate content as being below the fold */\nexport default function ShadowScroll({\n children,\n className,\n}: ShadowScrollProps) {\n const shadowRef = useRef(null);\n\n return (\n \n
\n \n {children}\n
\n
\n );\n}\n","import ShadowScroll from './ShadowScroll';\n\nexport default ShadowScroll;\n","import { ForwardedRef, forwardRef } from 'react';\nimport { Link, LinkProps } from 'react-router-dom';\nimport StrongTo from './StrongTo';\n\nexport interface StrongLinkProps extends LinkProps {\n to: StrongTo;\n}\n\nconst StrongLinkRef = forwardRef(StrongLink) as (\n props: StrongLinkProps & React.RefAttributes\n) => ReturnType;\n\nexport default StrongLinkRef;\n\nfunction StrongLink(\n { children, to, ...props }: StrongLinkProps,\n ref: ForwardedRef\n) {\n return (\n \n {children}\n \n );\n}\n","import { createSlice } from '@reduxjs/toolkit';\nimport {\n allowRedirects,\n getCookieExpiration,\n loadUser,\n logout,\n setNoAuth,\n} from './actions';\nimport * as authTicketStates from './authTicketStates';\nimport AuthStateSlice from './types';\n\nconst slice = createSlice({\n name: 'auth',\n initialState: {\n user: null,\n authError: null,\n noRedirect: false,\n authTicketState: authTicketStates.userAuthTicketNotChecked,\n cookieExpirationMinutes: 15,\n } as AuthStateSlice,\n reducers: {}, //This needs to be here so typescript doesnt complain\n extraReducers: {\n [allowRedirects.type]: (state) => {\n state.noRedirect = false;\n },\n [setNoAuth.type]: (state) => {\n state.user = null;\n state.authError = null;\n state.authTicketState = authTicketStates.userAuthTicketNotChecked;\n },\n [loadUser.pending.type]: (state) => {\n state.user = null;\n state.noRedirect = false;\n state.authError = null;\n state.authTicketState = authTicketStates.userAuthTicketChecking;\n },\n [loadUser.fulfilled.type]: (state, { payload }) => {\n state.user = payload;\n state.authTicketState = authTicketStates.userAuthTicketChecked;\n },\n [loadUser.rejected.type]: (state, { payload }) => {\n state.authError = payload;\n state.authTicketState = authTicketStates.userAuthTicketError;\n },\n [logout.pending.type]: (state) => {\n state.user = null;\n state.noRedirect = true;\n state.authError = null;\n state.authTicketState = authTicketStates.userAuthTicketChecking;\n },\n [logout.fulfilled.type]: (state) => {\n state.authTicketState = authTicketStates.userAuthTicketChecked;\n },\n [logout.rejected.type]: (state, { payload }) => {\n state.authError = payload;\n state.authTicketState = authTicketStates.userAuthTicketError;\n },\n [getCookieExpiration.fulfilled.type]: (state, { payload }) => {\n state.cookieExpirationMinutes = payload;\n },\n [getCookieExpiration.rejected.type]: (state, { payload }) => {\n state.cookieExpirationMinutes = 15;\n },\n },\n});\n\nconst { reducer } = slice;\n\nexport { reducer as default };\n","import { createStrictContext } from 'envoc-strict-context';\n\nexport interface ModalContext {\n openInstanceName: string;\n addVisible: (name: string) => void;\n removeVisible: (name: string) => void;\n}\n\nexport const [ModalContextProvider, useModalContext] =\n createStrictContext();\n","import {\n MutableRefObject,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport classNames from 'classnames';\nimport { uniqueId } from 'lodash';\nimport { Dialog } from '@headlessui/react';\nimport Body from './Body';\nimport Footer from './Footer';\nimport Header from './Header';\nimport { useModalContext } from './ModalContext';\nimport Provider from './Provider';\n\nexport interface ModalProps {\n className?: string;\n show: boolean;\n onHide: () => void;\n initialFocus?: MutableRefObject;\n children?: ReactNode;\n}\nModal.Body = Body;\nModal.Footer = Footer;\nModal.Header = Header;\n/** Provides all instances of Modal with a single overlay and ensure only one is visible at a time with a simple stack */\nModal.Provider = Provider;\n\n/** Standard modal with blurring overlay. Ensure that a Modal.Provider is set high in the dom (one per app recommended) */\nexport default function Modal({\n show,\n onHide,\n initialFocus,\n className,\n children,\n}: ModalProps) {\n const [instanceId] = useState(uniqueId('modal'));\n\n const [showBody, setShowBody] = useState(false);\n\n const { openInstanceName, addVisible, removeVisible } = useModalContext();\n\n useEffect(() => {\n if (!show) {\n return;\n }\n\n addVisible(instanceId);\n return () => {\n removeVisible(instanceId);\n };\n }, [addVisible, show, removeVisible, instanceId]);\n\n const isActiveInstance = openInstanceName === instanceId;\n const fallbackFocus = useRef(null);\n\n useEffect(() => {\n // slight delay to allow opacity to be set via transition.\n // this is especially nice so a fading modal body can disappear before the next modal in the stack fades in\n const timeout = setTimeout(\n () => setShowBody(isActiveInstance),\n isActiveInstance ? 150 : 1\n );\n return () => clearTimeout(timeout);\n }, [isActiveInstance]);\n\n useEffect(() => {\n if (!isActiveInstance) {\n return;\n }\n // more hacks around focus trap\n // buttons in the footer didn't seem to have the ref properly passed\n const target = initialFocus?.current;\n if (!target) {\n return;\n }\n const timeout = setTimeout(() => {\n target.focus();\n }, 10);\n return () => clearTimeout(timeout);\n }, [isActiveInstance, initialFocus]);\n\n return (\n \n {/* because there is a focus trap on dialog we cannot use Transition\n without some even worse hacks */}\n \n {/* TODO: hide this overlay element based on some sort of 'allow click off' prop (so some modals don't close when the user clicks off) */}\n {/* Note: this dialog.overlay provides the click off and calls 'onClose' when clicked. The actual blur / backdrop is in Modal.Provider */}\n \n
\n {children}\n
\n \n {!isActiveInstance && (\n // this allows the dialog to re-focus the default initial focus when we have several modals competing\n \n )}\n \n );\n\n function handleHide() {\n if (!isActiveInstance) {\n return;\n }\n onHide();\n }\n}\n","import { ReactNode } from 'react';\nimport ShadowScroll from '../ShadowScroll';\n\nexport interface BodyProps {\n children: ReactNode;\n}\n\nexport default function Body({ children }: BodyProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import { ReactNode } from 'react';\n\nexport interface FooterProps {\n children: ReactNode;\n}\n\nexport default function Footer({ children }: FooterProps) {\n return (\n
\n {children}\n
\n );\n}\n","import { ReactNode } from 'react';\n\nexport interface HeaderProps {\n children: ReactNode;\n}\n\nexport default function Header({ children }: HeaderProps) {\n return
{children}
;\n}\n","import { ReactNode, useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { ModalContextProvider } from './ModalContext';\n\ninterface ProviderProps {\n children: ReactNode;\n}\n\nexport default function Provider({ children }: ProviderProps) {\n const [visibleStack, setVisibleStack] = useState(['']);\n\n const addVisible = useCallback((value: string) => {\n if (value === '') {\n return;\n }\n setVisibleStack((state) => [value, ...state]);\n }, []);\n\n const removeVisible = useCallback((value: string) => {\n if (value === '') {\n return;\n }\n setVisibleStack((state) => state.filter((x) => x !== value));\n }, []);\n\n const providerValue = useMemo(\n () => ({ openInstanceName: visibleStack[0], addVisible, removeVisible }),\n [visibleStack, addVisible, removeVisible]\n );\n\n return (\n \n {children}\n \n \n );\n}\n","import React, { ComponentProps, ElementType, ReactHTML } from 'react';\nimport classNames from 'classnames';\n\nexport type StyledElementButtonSolidColors = 'red' | 'indigo';\n\ntype AnyElement = ElementType | keyof ReactHTML;\nexport interface StyledElementButtonSolidProps {\n tag: T;\n forwardRef: ComponentProps['ref'];\n className?: string;\n color: StyledElementButtonSolidColors;\n}\n\n/** styles a tag of type T to look just like a solid button via className */\nexport default function StyledElementButtonSolid({\n tag,\n forwardRef,\n className,\n color,\n ...props\n}: StyledElementButtonSolidProps) {\n return React.createElement(tag, {\n ...props,\n ref: forwardRef,\n className: classNames(\n className,\n 'appearance-none flex justify-center items-center text-center px-4 py-2 text-sm font-medium border-0 rounded-md shadow-sm',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2',\n 'disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-gray-500',\n {\n 'text-red-900 bg-red-200 hover:bg-red-300 focus:ring-red-300':\n color === 'red',\n 'text-white bg-pbpurple-600 hover:bg-pbpurple-700 focus:ring-pbpurple-500':\n color === 'indigo',\n }\n ),\n }) as JSX.Element;\n}\n","import { ButtonHTMLAttributes, ForwardedRef, forwardRef } from 'react';\nimport StyledElementButtonSolid, { StyledElementButtonSolidColors } from './StyledElementButtonSolid';\n\nexport interface ButtonSolidProps\n extends ButtonHTMLAttributes {\n color: StyledElementButtonSolidColors;\n}\n\n/** A button with a solid fill of color */\nconst ButtonSolidRef = forwardRef(ButtonSolid) as (\n // We are using a type assertion here to make the type more clear rather than exotic components and such\n // see: https://fettblog.eu/typescript-react-generic-forward-refs/#option-1%3A-type-assertion\n {\n className,\n color,\n children,\n ...props\n }: ButtonSolidProps & { ref?: React.ForwardedRef }\n) => ReturnType;\n\nexport default ButtonSolidRef;\n\nfunction ButtonSolid(\n props: ButtonSolidProps,\n ref: ForwardedRef\n) {\n return ;\n}\n","import * as signalR from '@microsoft/signalr';\nimport { createStrictContext } from 'envoc-strict-context';\nimport { Dispatch, SetStateAction } from 'react';\n\nexport type SignalRConnectionProps = {\n connection: signalR.HubConnection | null;\n messageReceived: boolean | null;\n setMessageReceived: Dispatch>;\n};\n\nexport const [SignalRConnectionContextProvider, useSignalRConnectionContext] =\n createStrictContext({\n errorMessage: 'Unable to get SignalR Connection Context',\n name: 'SignalRConnectionContext',\n });\n","import { createElement, ReactHTML, ReactNode, useEffect, useRef } from 'react';\nimport { throttle } from 'lodash';\nimport { useShadowScrollContext } from './ShadowScrollContext';\n\nexport interface ScrollAreaProps {\n children?: ReactNode;\n className?: string;\n tag?: keyof ReactHTML;\n}\n\nexport default function ScrollArea({\n children,\n className,\n tag = 'div',\n}: ScrollAreaProps) {\n const shadowRef = useShadowScrollContext();\n const targetRef = useRef(null);\n\n useEffect(() => {\n const target = targetRef.current;\n if (!target) {\n return;\n }\n const shadow = shadowRef.current;\n if (!shadow) {\n return;\n }\n\n return handleScrollShadows(target, shadow);\n }, [shadowRef]);\n\n return createElement(tag, { ref: targetRef, className: className }, children);\n}\n\nconst wiggleRoomPx = 10; // how many pixels the user needs to scroll before the shadow 'activates'\nconst shadows = [\n '0px 20px 8px -16px', // top\n '-20px 0px 8px -16px', // right\n '0px -20px 8px -16px', // bottom\n '20px 0px 8px -16px', // left\n];\nfunction handleScrollShadows(target: HTMLDivElement, shadow: HTMLDivElement) {\n if (!global.ResizeObserver) {\n return;\n }\n // We want to ensure that the shadows update as target resizes\n // in addition, should any child in target resize then it may result in the scrollbar state changing\n // since there is no direct event for 'scrollWidth' available we just listen for resize events to the direct defendants\n // since we might have conditionally rendered children under target, we need the MutationObserver to handle those additions / subtractions\n\n const shadowThrottle = throttle(drawShadows, 10, {\n trailing: true,\n leading: false,\n });\n\n shadowThrottle();\n target.addEventListener('scroll', shadowThrottle, { passive: true });\n const resizeObserver = new ResizeObserver(shadowThrottle);\n resizeObserver.observe(target);\n\n for (let index = 0; index < target.childElementCount; index++) {\n const element = target.children[index];\n resizeObserver.observe(element);\n }\n\n const mutationObserver = new MutationObserver(handleMutation);\n mutationObserver.observe(target, { childList: true });\n\n return () => {\n target.removeEventListener('scroll', shadowThrottle);\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n shadow.style.boxShadow = '';\n shadowThrottle.cancel();\n };\n\n function handleMutation(mutations: MutationRecord[]) {\n // each time a children of target are added or removed, we should ensure we listen to resizes of those elements\n for (let mi = 0; mi < mutations.length; mi++) {\n const mutation = mutations[mi];\n for (let ei = 0; ei < mutation.removedNodes.length; ei++) {\n const node = mutation.removedNodes[ei];\n if (node.nodeType === 1) {\n //see: https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n resizeObserver.unobserve(node as Element);\n }\n }\n for (let ei = 0; ei < mutation.addedNodes.length; ei++) {\n const node = mutation.addedNodes[ei];\n if (node.nodeType === 1) {\n //see: https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType\n resizeObserver.unobserve(node as Element);\n }\n }\n }\n }\n\n function drawShadows() {\n const distances = [\n target.scrollTop, // top\n target.scrollWidth - target.scrollLeft - target.clientWidth, //right\n target.scrollHeight - target.scrollTop - target.clientHeight, // bottom\n target.scrollLeft, // left\n ];\n\n const toRender = [];\n for (let index = 0; index < distances.length; index++) {\n const distance = distances[index];\n\n const hasShadow = distance > wiggleRoomPx;\n if (!hasShadow) {\n continue;\n }\n toRender.push(`inset ${shadows[index]} rgb(0 0 0 / 20%)`);\n }\n\n shadow.style.boxShadow = toRender.join(',');\n }\n}\n","function NavigationPathConverter(path) {\n const parts = path.split('/');\n const convertedParts = parts.map((part) =>\n part.startsWith(':')\n ? part // if we are resolving a parameter (indicated by the colon) then we should NOT convert to kebab case\n : part // convert to kebab case\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/\\s+/g, '-')\n .toLowerCase()\n );\n\n return convertedParts.join('/');\n}\n\nmodule.exports = { NavigationPathConverter };\n","import { useEffect } from 'react';\nimport { debounce, throttle } from 'lodash';\n\n/** Some browsers don't resize the body when the keyboard covers it, this gives a consistent variable for css to listen to for setting the value */\nexport default function JsResizeHelper() {\n useEffect(() => {\n const fastCycle = throttle(setHeight, 200, {\n leading: false,\n trailing: true,\n });\n const middleDebounce = debounce(setHeight, 500);\n const finalCheck = debounce(setHeight, 2000);\n\n const fancyCycle = () => {\n fastCycle();\n middleDebounce();\n finalCheck();\n };\n\n window.addEventListener('gestureend', fancyCycle, { passive: true });\n window.addEventListener('resize', fancyCycle, { passive: true });\n window.addEventListener('touchend', fancyCycle, { passive: true });\n window.addEventListener('focusout', fancyCycle, { passive: true });\n setHeight();\n\n return () => {\n fastCycle.cancel();\n middleDebounce.cancel();\n finalCheck.cancel();\n window.removeEventListener('gestureend', fancyCycle);\n window.removeEventListener('resize', fancyCycle);\n window.removeEventListener('touchend', fancyCycle);\n window.removeEventListener('focusout', fancyCycle);\n };\n\n function setHeight() {\n document.documentElement.style.setProperty(\n '--vh',\n `${window.innerHeight * 0.01}px`\n );\n }\n }, []);\n\n return null;\n}\n","import { useEffect, useRef, useState } from 'react';\nimport { EventsType, useIdleTimer } from 'react-idle-timer';\nimport { FormattedRelativeTime } from 'react-intl';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { addSeconds, differenceInSeconds } from 'date-fns';\nimport { AccountService } from 'api';\nimport { authActions, authSelectors } from 'shared/state';\nimport ButtonSolidRef from './ButtonSolid';\nimport Modal from './Modal';\n\nconst ACTIVE_EVENTS: EventsType[] = [\n 'mousemove',\n 'keydown',\n 'wheel',\n 'DOMMouseScroll',\n 'mousewheel',\n 'mousedown',\n 'touchstart',\n 'touchmove',\n 'MSPointerDown',\n 'MSPointerMove',\n];\n\nexport default function KeepAlive() {\n const dispatch = useDispatch();\n const auth = useSelector(authSelectors.getAuth);\n\n const [isLoggingOut, setIsLoggingOut] = useState(false);\n const [logoutDate, setLogoutDate] = useState();\n\n const saved = localStorage.getItem('rememberMe');\n let rememberMe = false;\n if (saved !== null) {\n rememberMe = JSON.parse(saved);\n }\n\n const shouldKeepAlive = !!auth?.user?.id && !rememberMe;\n //Hard coded to 15 minutes since the actual cookie expiration is 1 year for the 'remember me' functionality\n const keepAliveIntervalMilliseconds =\n (15 * 60 * 1000) / 2;\n\n const responseTimeSeconds = 120;\n\n const appearIdleTimer = useIdleTimer({\n events: ACTIVE_EVENTS,\n timeout: keepAliveIntervalMilliseconds,\n startOnMount: false,\n stopOnIdle: true,\n startManually: true,\n crossTab: true,\n onActive: () => {\n if (!shouldKeepAlive) {\n return;\n }\n\n setLogoutDate(undefined);\n appearIdleTimer.reset();\n appearIdleTimer.start();\n },\n onIdle: () => {\n if (!shouldKeepAlive) {\n return;\n }\n\n const logoutDate = addSeconds(new Date(), responseTimeSeconds);\n setLogoutDate(logoutDate);\n },\n });\n\n useEffect(() => {\n if (shouldKeepAlive && !logoutDate) {\n appearIdleTimer.start();\n }\n if (!shouldKeepAlive || !!logoutDate) {\n appearIdleTimer.pause();\n }\n }, [appearIdleTimer, logoutDate, shouldKeepAlive]);\n\n useEffect(() => {\n if (!logoutDate || !shouldKeepAlive) {\n return;\n }\n const remaining = logoutDate.getTime() - new Date().getTime();\n\n const handle = setTimeout(() => {\n setIsLoggingOut(true);\n dispatch(authActions.logout());\n setIsLoggingOut(false);\n setLogoutDate(undefined);\n }, remaining);\n return () => clearTimeout(handle);\n }, [logoutDate, shouldKeepAlive, dispatch]);\n\n useEffect(() => {\n if (!!logoutDate || !shouldKeepAlive) {\n return;\n }\n\n const intervalHandle = setInterval(\n AccountService.getLoggedInUserDetails,\n keepAliveIntervalMilliseconds\n );\n\n return () => {\n clearInterval(intervalHandle);\n };\n }, [keepAliveIntervalMilliseconds, logoutDate, shouldKeepAlive, dispatch]);\n\n const stayLoggedInButtonRef = useRef(null);\n\n return (\n setLogoutDate(undefined)}>\n \n

You appear to be idle

\n
\n \n {!isLoggingOut ? (\n <>\n Please click 'Stay Logged In' to remain logged into this session.\n
\n You will automatically be logged out{' '}\n {logoutDate ? (\n \n ) : (\n 'soon.'\n )}\n \n ) : (\n 'You are being logged out...'\n )}\n
\n {!isLoggingOut && (\n \n {\n setLogoutDate(undefined);\n AccountService.getLoggedInUserDetails();\n }}>\n Stay Logged In\n \n \n )}\n \n );\n}\n","import { useService } from 'envoc-request';\nimport { AccountService } from 'api';\n\nexport default function XsrfToken() {\n useService(AccountService.getLoggedInUserDetails);\n\n return null;\n}\n","import React, { useEffect, useReducer, useRef, useState } from 'react';\nimport { useDispatch } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { toast } from 'react-toastify';\nimport axios, { AxiosError, AxiosRequestConfig } from 'axios';\nimport { authActions } from 'shared/state';\n\nconst addVisibleLoading = 'addVisibleLoading';\nconst addBackgroundLoading = 'addBackgroundLoading';\nconst removePendingRequest = 'removePendingRequest';\nconst resetRequests = 'resetRequests';\n\ninterface HandleableAxiosError extends AxiosError {\n handled: boolean;\n}\ninterface AxiosRequestConfigWithLoading extends AxiosRequestConfig {\n hasLoadingMessage?: boolean;\n}\ninterface LoadingState {\n count: number;\n loadingVisible: boolean;\n}\n\ninterface Action {\n type: string;\n}\nconst initialState: LoadingState = { count: 0, loadingVisible: false };\n\nfunction loadingReducer(state: LoadingState, action: Action) {\n switch (action.type) {\n case resetRequests:\n return initialState;\n case addVisibleLoading:\n return { count: state.count + 1, loadingVisible: true };\n case addBackgroundLoading:\n return { count: state.count + 1, loadingVisible: state.loadingVisible };\n case removePendingRequest:\n const newCount = Math.max(state.count - 1, 0);\n return {\n count: newCount,\n loadingVisible: state.loadingVisible && newCount > 0,\n };\n default:\n throw new Error(action.type);\n }\n}\n\ninterface Renderable {\n component: React.ComponentType;\n render?: (props: LoadingParam) => any;\n}\n\ninterface LoadingParam {\n loading: boolean;\n}\n\nexport default function AxiosInterceptor({ component, render }: Renderable) {\n const dispatch = useDispatch();\n const [loadingState, loadingDispatch] = useReducer(\n loadingReducer,\n initialState\n );\n const [requestInterceptors, setRequestInterceptors] = useState([]);\n const [responseInterceptors, setResponseInterceptors] = useState(\n []\n );\n\n const errorRef: React.MutableRefObject<\n ((err: HandleableAxiosError) => void) | undefined\n > = useRef();\n // we don't want some closures (e.g. history) that 'on error' needs to cause the interceptors to be invalidated\n // e.g. start load -> navigate -> finish load should not cause a toast to be stuck as visible forever\n errorRef.current = onAxiosError;\n\n const navigate = useNavigate();\n\n useEffect(() => {\n const requestInterceptor = axios.interceptors.request.use(\n (config) => {\n // Do something before request is sent\n onStartRequest(config);\n return config;\n },\n (error) => {\n onRequestFinish();\n return Promise.reject(error);\n }\n );\n\n setRequestInterceptors((prevState) => [...prevState, requestInterceptor]);\n\n const responseInterceptor = axios.interceptors.response.use(\n (response) => {\n onRequestFinish();\n return response;\n },\n (err) => {\n onRequestFinish();\n errorRef.current && errorRef.current(err);\n return Promise.reject(err);\n }\n );\n\n setResponseInterceptors((prevState) => {\n return [...prevState, responseInterceptor];\n });\n\n function onStartRequest(config: AxiosRequestConfigWithLoading) {\n if (!config.hasLoadingMessage) {\n loadingDispatch({ type: addVisibleLoading });\n } else {\n loadingDispatch({ type: addBackgroundLoading });\n }\n }\n\n function onRequestFinish() {\n loadingDispatch({ type: removePendingRequest });\n }\n }, []);\n\n useEffect(() => {\n return () => {\n if (\n requestInterceptors.length !== 0 &&\n responseInterceptors.length !== 0\n ) {\n requestInterceptors.forEach((x) => axios.interceptors.request.eject(x));\n responseInterceptors.forEach((x) =>\n axios.interceptors.response.eject(x)\n );\n setRequestInterceptors([]);\n setResponseInterceptors([]);\n loadingDispatch({ type: resetRequests });\n }\n };\n }, [requestInterceptors, responseInterceptors]);\n\n return component\n ? React.createElement(component, { loading: loadingState.loadingVisible })\n : render\n ? render({ loading: loadingState.loadingVisible })\n : 'No component or render prop provided';\n\n function onAxiosError(err: HandleableAxiosError) {\n const status = err?.response?.status;\n if (axios.isCancel(err)) {\n err.handled = true;\n } else if (status === 401) {\n toast.error(`You need to login to view this page`);\n dispatch(authActions.setNoAuth());\n err.handled = true;\n } else if (status === 403) {\n toast.error(`You are not authorized to do this.`);\n navigate('/403', { replace: true });\n err.handled = true;\n } else if (status === 500) {\n toast.error(\n `Something went wrong talking to the portal. Contact support if this continues.`\n );\n err.handled = true;\n }\n }\n}\n","import { useEffect, useRef } from 'react';\nimport { toast } from 'react-toastify';\n\nconst showDelayMs = 500; // min loading time before a toast is shown\nconst hideDelayMs = 1000; // min time that a toast is shown\n\nfunction showLoadingToast() {\n return toast.info(`Loading...`, {\n autoClose: false,\n closeButton: false,\n closeOnClick: false,\n position: toast.POSITION.BOTTOM_CENTER,\n });\n}\n\nexport default function DelayedLoadingToast({ loading } : {loading: Boolean}) {\n const activeToastRef = useRef(null);\n const showTimeoutRef = useRef(null);\n const hideTimeoutRef = useRef(null);\n\n useEffect(() => {\n return () => {\n // remove everything if we are getting unmounted\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n if (showTimeoutRef.current) {\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n if (activeToastRef.current) {\n toast.dismiss(activeToastRef.current);\n activeToastRef.current = null;\n }\n };\n }, []);\n\n if (loading && !activeToastRef.current && !showTimeoutRef.current) {\n // delay showing by showDelayMs\n showTimeoutRef.current = setTimeout(() => {\n activeToastRef.current = showLoadingToast();\n }, showDelayMs);\n }\n\n if (!loading && activeToastRef.current && !hideTimeoutRef.current) {\n // delay hiding by hideDelayMs - so it doesn't 'flicker' too much\n hideTimeoutRef.current = setTimeout(() => {\n if(activeToastRef.current)\n {\n toast.dismiss(activeToastRef.current);\n }\n activeToastRef.current = null;\n }, hideDelayMs);\n }\n\n if (!loading && showTimeoutRef.current) {\n // if we are not loading and theres a pending SHOW - get rid of that pending SHOW request\n clearTimeout(showTimeoutRef.current);\n showTimeoutRef.current = null;\n }\n\n if (loading && hideTimeoutRef.current) {\n // if we ARE loading and theres a pending HIDE - get rid of that pending HIDE request\n clearTimeout(hideTimeoutRef.current);\n hideTimeoutRef.current = null;\n }\n\n return null;\n}\n","import { useEffect, useState } from 'react';\nimport * as signalR from '@microsoft/signalr';\nimport { authSelectors } from 'shared/state';\nimport {\n SignalRConnectionContextProvider,\n SignalRConnectionProps,\n} from './SignalrConnectionContextProvider';\nimport { useSelector } from 'react-redux';\n\nexport const SignalRProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [connectionProps, setConnectionProps] =\n useState(null);\n\n const [messageReceived, setMessageReceived] = useState(false);\n\n const user = useSelector(authSelectors.getUser);\n\n useEffect(() => {\n if (!user) {\n return;\n }\n\n const connection = new signalR.HubConnectionBuilder()\n .withUrl('/signalr/MessageHub')\n .withAutomaticReconnect()\n .configureLogging(signalR.LogLevel.None)\n .build();\n\n connection.start();\n const newConnection = {\n connection: connection,\n messageReceived: messageReceived,\n setMessageReceived: setMessageReceived,\n };\n\n setConnectionProps(newConnection);\n\n return () => {\n if (newConnection && 'connection' in newConnection) {\n newConnection?.connection?.stop();\n }\n };\n }, [messageReceived, user]);\n\n const connection =\n connectionProps && 'connection' in connectionProps\n ? connectionProps?.connection\n : null;\n\n useEffect(() => {\n if (connection) {\n connection.on('MessageReceived', () => {\n setMessageReceived(true);\n });\n\n return () =>\n connection.off('MessageReceived', () => {\n setMessageReceived(true);\n });\n }\n }, [connection, setMessageReceived]);\n\n return (\n \n {children}\n \n );\n};\n","import axios from 'axios';\n\nexport default function configureAxios() {\n axios.defaults.baseURL = `${process.env.PUBLIC_URL}`;\n}\n","import axios from 'axios';\nimport { serviceOptions } from 'api';\n\nexport default function configureServices() {\n serviceOptions.axios = axios;\n}\n","import { IntlProvider } from 'react-intl';\nimport { BrowserRouter } from 'react-router-dom';\nimport { toast, ToastContainer } from 'react-toastify';\nimport { configureAxios, configureServices } from 'config';\nimport {\n AxiosInterceptor,\n DelayedLoadingToast,\n FileSystemRoutes,\n JsResizeHelper,\n KeepAlive,\n Modal,\n XsrfToken,\n} from 'shared/components';\nimport { SignalRProvider } from 'shared/signalr/SignalrProvider';\n\nconfigureAxios();\nconfigureServices();\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import App from './App';\n\nexport default App;\n","import { combineReducers } from '@reduxjs/toolkit';\nimport { authReducer } from './auth';\nimport { uiReducer } from './ui';\n\n// TODO: for code splitting, how does this impact us?\nconst reducer = combineReducers({\n auth: authReducer,\n ui: uiReducer,\n});\n\nexport { reducer as default };\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","// 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://cra.link/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(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\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(process.env.PUBLIC_URL, window.location.href);\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://cra.link/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://cra.link/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('No internet connection found. App is running in offline mode.');\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 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport 'envoc-table/dist/css/envoc-table-styles.css';\nimport 'react-toastify/dist/ReactToastify.css';\nimport './styles/index.css';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport App from 'app';\nimport { config } from '@fortawesome/fontawesome-svg-core';\nimport { createStore } from 'shared/state';\nimport reportWebVitals from './reportWebVitals';\nimport * as serviceWorkerRegistration from './serviceWorkerRegistration';\n\nconfig.autoAddCss = false;\nconst store = createStore();\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://cra.link/PWA\n//This was turned off when other attempts to have the waiting service worker take over failed\n//We should investiage again later, but that needs to be verified and working before we turn it back on.\n//https://envoc.tpondemand.com/entity/114528-front-end-requires-hard-refresh-after\nserviceWorkerRegistration.unregister();\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n","import { configureStore } from '@reduxjs/toolkit';\nimport reducer from './reducer';\n\nconst createStore = () => {\n const store = configureStore({\n reducer: reducer,\n });\n\n if (process.env.NODE_ENV === 'development' && module.hot) {\n module.hot.accept('./reducer', () => {\n store.replaceReducer(reducer);\n });\n }\n\n return store;\n};\n\nexport { createStore as default };\n","import { createSelector } from '@reduxjs/toolkit';\nimport { Role } from 'features/Auth';\nimport { AuthReduxState } from './types';\n\nexport const getAuth = (state: AuthReduxState) => state.auth;\nexport const getUser = (state: AuthReduxState) => getAuth(state).user;\nexport const getCookieExpiration = (state: AuthReduxState) =>\n getAuth(state).cookieExpirationMinutes;\nexport const getUserRoles = (state: AuthReduxState): Role[] =>\n [ getUser(state)?.userRoleName! as Role ] ?? [];\nexport const getAuthTicketState = createSelector(\n getAuth,\n (state) => state.authTicketState\n);\n","import type { InputHTMLAttributes } from 'react';\nimport classNames from 'classnames';\nimport useStandardFormInput from 'envoc-form/es/useStandardFormInput';\n\nexport interface InputProps extends InputHTMLAttributes {\n validate?: any; // todo, real types for validation\n}\n\nexport default function InputWithValidation(props: InputProps) {\n const [input, meta] = useStandardFormInput(props);\n\n return (\n <>\n \n {meta.error && (\n
{meta.error}
\n )}\n \n );\n}\n","import { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { toast } from 'react-toastify';\nimport { faEnvelope, faLock } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { Form, FormInput, SubmitFormButton, validators } from 'envoc-form';\nimport { AccountService, PasswordLoginCommand } from 'api';\nimport { LinkBlue, SingleActionPage, SupportText } from 'shared/components';\nimport { InputWithValidation } from 'shared/forms';\nimport { useLoginRedirect } from 'shared/hooks';\nimport { authActions, authSelectors, authTicketStates } from 'shared/state';\n\nexport default function Login() {\n const dispatch = useDispatch();\n const { restoreFromLogin } = useLoginRedirect();\n\n const { authTicketState, user } = useSelector(authSelectors.getAuth);\n const [rememberMe, setRememberMe] = useState(() => {\n const saved = localStorage.getItem('rememberMe');\n let initialValue = false;\n if (saved !== null) {\n initialValue = JSON.parse(saved)\n }\n\n return initialValue;\n });\n\n useEffect(() => {\n localStorage.setItem('rememberMe', JSON.stringify(rememberMe));\n }, [rememberMe]);\n\n useEffect(() => {\n dispatch(authActions.allowRedirects());\n }, [dispatch]);\n\n useEffect(() => {\n if (\n (user && authTicketState === authTicketStates.userAuthTicketChecked) ||\n authTicketState === authTicketStates.userAuthTicketChecking\n ) {\n restoreFromLogin();\n }\n });\n\n return (\n \n \n

Login

\n Sign In to your account\n\n
\n \n Email address\n \n
\n
\n \n
\n \n
\n
\n\n
\n \n Password\n \n
\n
\n \n
\n \n
\n
\n \n \n Login\n \n\n \n Forgot your password? Click here\n \n\n \n If you don't have a password, please check your email to confirm your\n email address or contact your counselor to have them set your\n password. Email confirmation is required to receive emails from the\n system.\n \n \n
\n );\n\n function handleSubmit(values: PasswordLoginCommand) {\n setRememberMe(values?.rememberMe ?? false);\n return AccountService.login({ body: values }).then((resp) => {\n var result = resp.result;\n if (result === '') {\n dispatch(authActions.loadUser());\n } else {\n toast.error(result);\n }\n });\n }\n}\n","import { createSlice } from '@reduxjs/toolkit';\n\nconst slice = createSlice({\n name: 'ui',\n initialState: {\n sidebar: {\n isOpen: true,\n },\n },\n reducers: {\n showSidebar: (state) => {\n state.sidebar.isOpen = true;\n },\n hideSidebar: (state) => {\n state.sidebar.isOpen = false;\n },\n toggleSidebarState: (state) => {\n state.sidebar.isOpen = !state.sidebar.isOpen;\n },\n },\n});\n\nexport const { actions, reducer } = slice;\n","import React, { ReactNode, Suspense, useMemo } from 'react';\nimport { Outlet, useRoutes } from 'react-router';\nimport { NavigationPathConverter } from 'NavigationPathConverter.js';\nimport routeFiles from 'route-files';\nimport { faSpinner } from '@fortawesome/pro-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport type { RouteObject } from 'react-router-dom';\nimport { createStrictContext } from 'envoc-strict-context';\n\n// add extra information so we can traverse up and down the file system routes using useLeafContext\nexport interface RouteObjectWithParent extends RouteObject {\n parent: RouteObjectWithParent | null;\n\n /**\n * The full path that rendered this route.\n * Starts with a forward slash '/' and should resolve to the desired page if used as the \"to\" parameter of a react-router navigate\n * Will never contain a \"*\"\n */\n fullPath: string;\n}\n\n/**\n * The useLeafContext hook allows access to the route config such that a leaf element can fetch it's own config or any of its progenitors\n * @returns The matched MatchedLeafContext from FileSystemRoutes\n * @throws If not used within the context of a FileSystemRoutes\n */\nexport const [MatchedLeafContextProvider, useLeafContext] =\n createStrictContext({\n errorMessage:\n 'Missing MatchedLeafContext - this should only be used within the context of a FileSystemRoutes component',\n name: 'MatchedLeafContext',\n });\n\n/**\n * Creates a tree of routes based on the file and folder layout with src/routes\n * Each file in any folder at or below src/routes should render a default component that will be rendered when matching\n * The path to that component in the filesystem will represent the\n * @returns\n */\nexport default function FileSystemRoutes() {\n const result = useMemo(() => {\n const rootRoutes = [] as RouteObjectWithParent[];\n let RootLayout = null as ReactNode | null;\n\n for (let index = 0; index < routeFiles.length; index++) {\n const element = routeFiles[index];\n const Component = React.lazy(element.importFunc as any);\n\n let parent = null as RouteObjectWithParent | null;\n\n // take each part in a path and ensure we have a route for each name\n // this way we can handle folder routes that have no layout\n const parts = element.path.split('/');\n for (let index = 0; index < parts.length; index++) {\n const part = parts[index];\n\n const effectivePath = NavigationPathConverter(part);\n\n // special note: we assume no folder will ever be called _Layout\n if (part === '_Layout') {\n // this should wrap all the children, including index routes - there should exist only a single _Layout instance per path part (e.g. folder)\n const LayoutElement = (\n }>\n \n \n );\n\n if (parent === null) {\n RootLayout = LayoutElement;\n } else {\n parent.element = LayoutElement;\n }\n } else if (index === parts.length - 1) {\n const leafConfig = {\n parent: parent,\n } as RouteObjectWithParent;\n\n if (effectivePath === 'index') {\n leafConfig.fullPath = (parent?.fullPath ?? '') + '/';\n leafConfig.index = true;\n } else if (effectivePath === '404') {\n leafConfig.fullPath = (parent?.fullPath ?? '') + '/NotFound';\n // only the last character may be '*' in react router 6\n // see: https://reactrouter.com/docs/en/v6/upgrading/v5#note-on-route-path-patterns\n leafConfig.path = '*';\n } else {\n leafConfig.fullPath =\n (parent?.fullPath ?? '') + '/' + effectivePath.replace('~', '');\n // we allow any Leaf element to render any child routes they wish\n // The only downside is that in such a case we cannot show a 404 page on a partial match\n // e.g. if we have a /Foo component\n leafConfig.path =\n effectivePath === '*' ? '*' : effectivePath.replace('~', '/*');\n }\n\n // this is the final element in question in the path\n const Leaf = (\n \n }>\n \n \n \n );\n leafConfig.element = Leaf;\n\n if (parent === null) {\n rootRoutes.push(leafConfig);\n } else {\n if (!parent.children) {\n parent.children = [];\n }\n parent.children.push(leafConfig);\n }\n } else {\n // we still have folders to parse, keep going deeper\n let parentPool = [] as RouteObjectWithParent[];\n if (!parent) {\n parentPool = rootRoutes;\n } else {\n if (!parent.children) {\n parent.children = [];\n }\n parentPool = parent.children as RouteObjectWithParent[];\n }\n const existingParent = parentPool.find(\n (x) => x.path === effectivePath\n );\n if (!existingParent) {\n const parentConfig = {\n parent: parent,\n fullPath: (parent?.fullPath ?? '') + '/' + effectivePath,\n path: effectivePath,\n element: ,\n } as RouteObjectWithParent;\n parentPool.push(parentConfig);\n parent = parentConfig;\n } else {\n parent = existingParent;\n }\n }\n }\n }\n if (!RootLayout) {\n return rootRoutes;\n }\n return [\n {\n path: '/',\n element: RootLayout,\n children: rootRoutes,\n },\n ];\n }, []);\n\n return useRoutes(result);\n}\n\nfunction BlockingLoader() {\n return (\n <>\n
\n
Loading Content
\n \n
\n
\n \n
\n \n );\n}\n","import type { ReactNode } from 'react';\nimport classNames from 'classnames';\n\nexport interface SupportTextProps {\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * A lighter text meant to represent secondary information relative to a title / section.\n * Similar to helper text for a form input but outside the form context\n */\nexport default function SupportText({ children, className }: SupportTextProps) {\n return (\n \n {children}\n

\n );\n}\n","import axios from 'axios';\nimport { createAction, createAsyncThunk } from '@reduxjs/toolkit';\n\ndeclare module 'axios' {\n export interface AxiosRequestConfig {\n hasLoadingMessage?: boolean;\n }\n}\n\nexport const loadUser = createAsyncThunk('auth/loadUser', async () => {\n const response = await axios.get('/api/account/me', {\n hasLoadingMessage: true,\n });\n const data = response.data;\n const { result } = (!!data && data) || {};\n return result;\n});\n\nexport const logout = createAsyncThunk('auth/logout', async () => {\n await axios.post('/api/account/logout', {\n hasLoadingMessage: true,\n });\n // need to re-get a new Xsrf - they are tied to user\n await axios.get('/api/account/me', {\n hasLoadingMessage: true,\n });\n});\n\nexport const getCookieExpiration = createAsyncThunk(\n 'auth/cookieExpiration',\n async () => {\n const response = await axios.get('/api/account/cookie-expiration', {\n hasLoadingMessage: true,\n });\n const data = response.data;\n const { result } = (!!data && data) || 0;\n return result;\n }\n);\n\nexport const setNoAuth = createAction('auth/setNoAuth');\n\nexport const allowRedirects = createAction('auth/allowRedirects');\n","import { useLocation, useNavigate } from 'react-router';\nimport qs from 'qs';\n\nconst urlParameterName = 'returnUrl';\n\n// TODO: I don't really like this name, thoughts?\nexport default function useLoginRedirect() {\n const location = useLocation();\n const navigate = useNavigate();\n const returnUrl = qs.parse(location.search, {\n ignoreQueryPrefix: true,\n })[urlParameterName];\n\n return {\n redirectToLogin: redirectToLogon,\n restoreFromLogin: restoreFromLogin,\n };\n\n function redirectToLogon(noRedirect: boolean) {\n if (noRedirect) {\n navigate('/login');\n } else {\n navigate(\n '/login?' +\n qs.stringify({\n [urlParameterName]:\n location.pathname + location.search + location.hash,\n })\n );\n }\n }\n\n function restoreFromLogin() {\n navigate((returnUrl as string) || '/', { replace: true });\n }\n}\n","import React from 'react';\n\nexport interface SingleActionPageProps {\n children: React.ReactNode;\n}\n\nexport default function SingleActionPage({ children }: SingleActionPageProps) {\n return (\n
\n
\n {children}\n
\n
\n );\n}\n","import { ForwardedRef, forwardRef } from 'react';\nimport { Link, LinkProps } from 'react-router-dom';\nimport classnames from 'classnames';\nimport StrongLink, { StrongLinkProps } from './StrongLink';\n\ninterface StrongLinkBlueProps extends StrongLinkProps {}\n\ninterface WeakLinkBlueProps extends LinkProps {\n unsafe: true;\n}\n\ntype LinkBlueProps = StrongLinkBlueProps | WeakLinkBlueProps;\n\n/** link that looks like the standard blue links people expect */\nconst LinkBlueRef = forwardRef(LinkBlue) as (\n // We are using a type assertion here because we want the external API to reflect the generic 'LinkBlue' while still supporting refs\n // see: https://fettblog.eu/typescript-react-generic-forward-refs/#option-1%3A-type-assertion\n props: LinkBlueProps & React.RefAttributes\n) => ReturnType;\n\nexport default LinkBlueRef;\n\nfunction LinkBlue(\n { className, children, ...props }: LinkBlueProps,\n ref: ForwardedRef\n) {\n let classNamesResult = classnames(\n className,\n 'text-blue-500 ring-pbpurple-200 hover:text-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 '\n );\n if ('unsafe' in props) {\n const { unsafe, ...rest } = props;\n return (\n \n {children}\n \n );\n } else {\n return (\n \n {children}\n \n );\n }\n}\n","export const userAuthTicketChecking = 'userAuthTicketChecking';\nexport const userAuthTicketChecked = 'userAuthTicketChecked';\nexport const userAuthTicketNotChecked = 'userAuthTicketNotChecked';\nexport const userAuthTicketError = 'userAuthTicketError';\n","/** Generate by swagger-axios-codegen */\n// @ts-nocheck\n/* eslint-disable */\n\n/** Generate by swagger-axios-codegen */\n/* eslint-disable */\n// @ts-nocheck\nimport axiosStatic, { AxiosInstance, AxiosRequestConfig } from 'axios';\n\nexport interface IRequestOptions extends AxiosRequestConfig {}\n\nexport interface IRequestConfig {\n method?: any;\n headers?: any;\n url?: any;\n data?: any;\n params?: any;\n}\n\n// Add options interface\nexport interface ServiceOptions {\n axios?: AxiosInstance;\n}\n\n// Add default options\nexport const serviceOptions: ServiceOptions = {};\n\n// Instance selector\nexport function axios(configs: IRequestConfig, resolve: (p: any) => void, reject: (p: any) => void): Promise {\n if (serviceOptions.axios) {\n return serviceOptions.axios\n .request(configs)\n .then(res => {\n resolve(res.data);\n })\n .catch(err => {\n reject(err);\n });\n } else {\n throw new Error('please inject yourself instance like axios ');\n }\n}\n\nexport function getConfigs(method: string, contentType: string, url: string, options: any): IRequestConfig {\n const configs: IRequestConfig = { ...options, method, url };\n configs.headers = {\n ...options.headers,\n 'Content-Type': contentType\n };\n return configs;\n}\n\nexport const basePath = '';\n\nexport interface IList extends Array {}\nexport interface List extends Array {}\nexport interface IDictionary {\n [key: string]: TValue;\n}\nexport interface Dictionary extends IDictionary {}\n\nexport interface IListResult {\n items?: T[];\n}\n\nexport class ListResultDto implements IListResult {\n items?: T[];\n}\n\nexport interface IPagedResult extends IListResult {\n totalCount?: number;\n items?: T[];\n}\n\nexport class PagedResultDto implements IPagedResult {\n totalCount?: number;\n items?: T[];\n}\n\n// customer definition\n// empty\n\nexport class AccountService {\n /**\n *\n */\n static getLoggedInUserDetails(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/me';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getCookieExpiration(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/cookie-expiration';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static externalLogin(\n params: {\n /** */\n provider?: string;\n /** */\n returnUrl?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/ExternalLogin';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { provider: params['provider'], returnUrl: params['returnUrl'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static externalLoginCallback(\n params: {\n /** */\n returnUrl?: string;\n /** */\n remoteError?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/ExternalLoginCallback';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { returnUrl: params['returnUrl'], remoteError: params['remoteError'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static register(\n params: {\n /** */\n returnUrl?: string;\n /** requestBody */\n body?: RegisterUserCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/register';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { returnUrl: params['returnUrl'] };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static login(\n params: {\n /** requestBody */\n body?: PasswordLoginCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/login';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static forgotPassword(\n params: {\n /** requestBody */\n body?: ForgotPasswordCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/forgotpassword';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static resetPassword(\n params: {\n /** requestBody */\n body?: ResetPasswordCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/resetpassword';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static changePassword(\n params: {\n /** requestBody */\n body?: ChangePasswordCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/changepassword';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static changeEmail(\n params: {\n /** requestBody */\n body?: ChangeEmailCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/changeemail';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static changeCommunicationPreference(\n params: {\n /** requestBody */\n body?: UpdateCommunicationPreferenceCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/communicationpreference';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static logout(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/logout';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static confirmAccountRedirect(\n params: {\n /** */\n email?: string;\n /** */\n token?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/confirm-account-redirect';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { email: params['email'], token: params['token'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static confirmAccount(\n params: {\n /** */\n email?: string;\n /** */\n token?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/account/confirm-account';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { email: params['email'], token: params['token'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class BodyTraceService {\n /**\n *\n */\n static syncWeight(\n params: {\n /** requestBody */\n body?: SyncWeightCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/bodytrace';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class CounselorsService {\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/counselors/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getCounselorById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/counselors/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createCounselor(\n params: {\n /** requestBody */\n body?: CreateCounselorCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/counselors';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateCounselor(\n params: {\n /** requestBody */\n body?: UpdateCounselorCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/counselors';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class FileResourcesService {\n /**\n *\n */\n static getBySasToken(\n params: {\n /** */\n fileResourceGuid: string;\n /** */\n token?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/file-resources/{fileResourceGuid}';\n url = url.replace('{fileResourceGuid}', params['fileResourceGuid'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { token: params['token'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class GroupsService {\n /**\n *\n */\n static getTable(\n params: {\n /** */\n siteId?: number;\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { siteId: params['siteId'] };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getGroupById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteGroupById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createGroup(\n params: {\n /** requestBody */\n body?: CreateGroupCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateGroup(\n params: {\n /** requestBody */\n body?: UpdateGroupCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getGroupOptions(\n params: {\n /** */\n siteId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups/groupOptions/{siteId}';\n url = url.replace('{siteId}', params['siteId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getDefaultGroup(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/groups/defaultGroup';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class MessagesService {\n /**\n *\n */\n static getMessageThreads(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/messages/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getMessageThread(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/messages/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createMessage(\n params: {\n /** requestBody */\n body?: CreateMessageCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/messages';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getRecipientOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/messages/recipient-options';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getUnreadCount(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/messages/unread-count';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class MobileConfigurationService {\n /**\n *\n */\n static checkForForcedUpdate(\n params: {\n /** */\n version: string;\n /** */\n platform: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/mobile-configuration/{version}/{platform}';\n url = url.replace('{version}', params['version'] + '');\n url = url.replace('{platform}', params['platform'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class ParticipantsService {\n /**\n *\n */\n static getParticipantsByStudyAndArm(\n params: {\n /** */\n siteId?: number;\n /** */\n groupId?: number;\n /** */\n studyId?: number;\n /** */\n studyArmId?: number;\n /** */\n counselorId?: number;\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/participants-by-study-and-arm';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = {\n siteId: params['siteId'],\n groupId: params['groupId'],\n studyId: params['studyId'],\n studyArmId: params['studyArmId'],\n counselorId: params['counselorId']\n };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getParticipantsByCounselor(\n params: {\n /** */\n counselorId?: number;\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/participants-by-counselor';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { counselorId: params['counselorId'] };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: GetLegacyParticipantsRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getLegacyParticipantAndWeightsById(\n params: {\n /** */\n id: number;\n /** */\n startDate?: string;\n /** */\n endDate?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/legacy/data/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { StartDate: params['startDate'], EndDate: params['endDate'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getParticipantAndWeightsById(\n params: {\n /** */\n id: number;\n /** */\n startDate?: string;\n /** */\n endDate?: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/data/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { StartDate: params['startDate'], EndDate: params['endDate'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getParticipantById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteParticipantById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createParticipant(\n params: {\n /** requestBody */\n body?: CreateParticipantCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateParticipant(\n params: {\n /** requestBody */\n body?: UpdateParticipantCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createLegacyParticipant(\n params: {\n /** requestBody */\n body?: CreateLegacyParticipantCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/legacy';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateLegacyParticipant(\n params: {\n /** requestBody */\n body?: UpdateLegacyParticipantCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/legacy';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getCounselorOptions(\n params: {\n /** */\n counselorId?: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/counselorOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { counselorId: params['counselorId'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getCounselorOptionsByGroup(\n params: {\n /** */\n groupId?: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/counselorOptionsByGroup';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { groupId: params['groupId'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getLegacyParticipantOptions(\n params: {\n /** */\n participantId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/legacyParticipantOptions/{participantId}';\n url = url.replace('{participantId}', params['participantId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getParticipantOptions(\n params: {\n /** */\n participantId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/participantOptions/{participantId}';\n url = url.replace('{participantId}', params['participantId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getScaleOptions(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/scaleOptions/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getPercentOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/participants/percentOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class ScalesService {\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getScaleById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteScaleById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createScale(\n params: {\n /** requestBody */\n body?: CreateScaleCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateScale(\n params: {\n /** requestBody */\n body?: UpdateScaleCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static importScales(\n params: {\n /** */\n imageFile: any;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/scales/import';\n\n const configs: IRequestConfig = getConfigs('post', 'multipart/form-data', url, options);\n\n let data = null;\n data = new FormData();\n if (params['imageFile']) {\n if (Object.prototype.toString.call(params['imageFile']) === '[object Array]') {\n for (const item of params['imageFile']) {\n data.append('ImageFile', item as any);\n }\n } else {\n data.append('ImageFile', params['imageFile'] as any);\n }\n }\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class SessionMaterialsService {\n /**\n *\n */\n static getMaterials(\n params: {\n /** */\n sessionId?: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-materials';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { sessionId: params['sessionId'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static addMaterials(\n params: {\n /** */\n sessionId: number;\n /** */\n file: any;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-materials';\n\n const configs: IRequestConfig = getConfigs('post', 'multipart/form-data', url, options);\n\n let data = null;\n data = new FormData();\n if (params['sessionId']) {\n if (Object.prototype.toString.call(params['sessionId']) === '[object Array]') {\n for (const item of params['sessionId']) {\n data.append('SessionId', item as any);\n }\n } else {\n data.append('SessionId', params['sessionId'] as any);\n }\n }\n\n if (params['file']) {\n if (Object.prototype.toString.call(params['file']) === '[object Array]') {\n for (const item of params['file']) {\n data.append('File', item as any);\n }\n } else {\n data.append('File', params['file'] as any);\n }\n }\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteMaterials(\n params: {\n /** requestBody */\n body?: DeleteSessionMaterialCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-materials/delete';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateFileName(\n params: {\n /** requestBody */\n body?: UpdateMaterialFileNameCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-materials/file-name';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getMaterialOptionsBySession(\n params: {\n /** */\n sessionId?: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-materials/material-options';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n configs.params = { sessionId: params['sessionId'] };\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class SessionsService {\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: GetSessionsRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getSessionById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteSession(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createSession(\n params: {\n /** requestBody */\n body?: CreateSessionCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateSession(\n params: {\n /** requestBody */\n body?: UpdateSessionCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateSessionDetails(\n params: {\n /** requestBody */\n body?: UpdateSessionDetailsCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sessions/details';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class SessionSchedulesService {\n /**\n *\n */\n static getSessionScheduleByParticipantId(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-schedules/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createOrUpdateSessionSchedule(\n params: {\n /** requestBody */\n body?: CreateOrUpdateSessionScheduleCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/session-schedules';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class SettingsService {\n /**\n *\n */\n static getSettingByKey(\n params: {\n /** */\n key: string;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings/{key}';\n url = url.replace('{key}', params['key'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static get(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static edit(\n params: {\n /** */\n id: number;\n /** requestBody */\n body?: SettingDto;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static delete(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static create(\n params: {\n /** requestBody */\n body?: SettingDto;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/settings';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class SitesService {\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getSiteById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteSiteById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createSite(\n params: {\n /** requestBody */\n body?: CreateSiteCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateSite(\n params: {\n /** requestBody */\n body?: UpdateSiteCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getManagerOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/managerOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getSiteOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/siteOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getDefaultSite(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/sites/defaultSite';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class StatusService {\n /**\n *\n */\n static getStatusAsync(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/status';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class StudiesService {\n /**\n *\n */\n static getTable(\n params: {\n /** */\n siteId?: number;\n /** */\n groupId?: number;\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { siteId: params['siteId'], groupId: params['groupId'] };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getStudyById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteStudyById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createStudy(\n params: {\n /** requestBody */\n body?: CreateStudyCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateStudy(\n params: {\n /** requestBody */\n body?: UpdateStudyCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getStudyOptions(\n params: {\n /** */\n groupId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies/studyOptions/{groupId}';\n url = url.replace('{groupId}', params['groupId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getDefaultStudy(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/studies/defaultStudy';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class StudyArmsService {\n /**\n *\n */\n static getStudyArmsByStudyId(\n params: {\n /** */\n siteId?: number;\n /** */\n groupId?: number;\n /** */\n studyId?: number;\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/study-arms-by-study-id';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n configs.params = { siteId: params['siteId'], groupId: params['groupId'], studyId: params['studyId'] };\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getStudyArmById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteStudyArmById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createStudyArm(\n params: {\n /** requestBody */\n body?: CreateStudyArmCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateStudyArm(\n params: {\n /** requestBody */\n body?: UpdateStudyArmCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getPercentOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/percentOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getStudyArmOptions(\n params: {\n /** */\n studyId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/studyArmOptions/{studyId}';\n url = url.replace('{studyId}', params['studyId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getCounselorOptions(\n params: {\n /** */\n studyArmId: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/counselorOptions/{studyArmId}';\n url = url.replace('{studyArmId}', params['studyArmId'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getDefaultStudyArm(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/study-arms/defaultStudyArm';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class UsersService {\n /**\n *\n */\n static getUsers(\n params: {\n /** requestBody */\n body?: DataTableRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getUser(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static postUserNoPhoto(\n params: {\n /** */\n id: string;\n /** requestBody */\n body?: UpdateUserCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static postUser(\n params: {\n /** requestBody */\n body?: CreateUserCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static lockUser(\n params: {\n /** requestBody */\n body?: LockUserCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/lock';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static unlockUser(\n params: {\n /** requestBody */\n body?: UnlockUserCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/unlock';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getRoleOptions(options: IRequestOptions = {}): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/roleOptions';\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static sendConfirmEmail(\n params: {\n /** requestBody */\n body?: SendConfirmAccountEmailCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/users/sendConfirmEmail';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport class WeightsService {\n /**\n *\n */\n static getTable(\n params: {\n /** requestBody */\n body?: GetWeightsRequest;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights/table';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static getWeightById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('get', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static deleteWeightById(\n params: {\n /** */\n id: number;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights/{id}';\n url = url.replace('{id}', params['id'] + '');\n\n const configs: IRequestConfig = getConfigs('delete', 'application/json', url, options);\n\n let data = null;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static createWeight(\n params: {\n /** requestBody */\n body?: CreateWeightCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static updateWeight(\n params: {\n /** requestBody */\n body?: UpdateWeightCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights';\n\n const configs: IRequestConfig = getConfigs('put', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n /**\n *\n */\n static syncWeights(\n params: {\n /** requestBody */\n body?: SyncWeightsCommand;\n } = {} as any,\n options: IRequestOptions = {}\n ): Promise {\n return new Promise((resolve, reject) => {\n let url = basePath + '/api/weights/sync';\n\n const configs: IRequestConfig = getConfigs('post', 'application/json', url, options);\n\n let data = params.body;\n\n configs.data = data;\n axios(configs, resolve, reject);\n });\n }\n}\n\nexport interface AccountConfirmationResult {\n /** */\n isPasswordResetRequired?: boolean;\n\n /** */\n code?: string;\n}\n\nexport interface AccountConfirmationResultApiResult {\n /** */\n result?: AccountConfirmationResult;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface AnnotationPointDto {\n /** */\n x?: number;\n\n /** */\n y?: number;\n\n /** */\n marker?: Marker;\n}\n\nexport interface AuthenticationProperties {\n /** */\n items?: object;\n\n /** */\n parameters?: object;\n\n /** */\n isPersistent?: boolean;\n\n /** */\n redirectUri?: string;\n\n /** */\n issuedUtc?: string;\n\n /** */\n expiresUtc?: string;\n\n /** */\n allowRefresh?: boolean;\n}\n\nexport interface BooleanApiResult {\n /** */\n result?: boolean;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ChallengeResult {\n /** */\n authenticationSchemes?: string[];\n\n /** */\n properties?: AuthenticationProperties;\n}\n\nexport interface ChangeEmailCommand {\n /** */\n oldEmail?: string;\n\n /** */\n newEmail?: string;\n\n /** */\n currentPassword?: string;\n}\n\nexport interface ChangePasswordCommand {\n /** */\n password?: string;\n\n /** */\n newPassword?: string;\n\n /** */\n confirmNewPassword?: string;\n}\n\nexport interface CounselorDto {\n /** */\n id?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n siteName?: string;\n\n /** */\n groupName?: string;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface CounselorDtoApiResult {\n /** */\n result?: CounselorDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface CounselorDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: CounselorDto[];\n}\n\nexport interface CounselorDtoDataTablePageApiResult {\n /** */\n result?: CounselorDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface CreateCounselorCommand {\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n groupId?: number;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface CreateGroupCommand {\n /** */\n name?: string;\n\n /** */\n siteId?: number;\n}\n\nexport interface CreateLegacyParticipantCommand {\n /** */\n penningtonId?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n studyIntervalDays?: number;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n percentType?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n}\n\nexport interface CreateMessageCommand {\n /** */\n body?: string;\n\n /** */\n recipientId?: number;\n}\n\nexport interface CreateOrUpdateSessionScheduleCommand {\n /** */\n startDate?: string;\n\n /** */\n frequency?: string;\n\n /** */\n participantId?: number;\n}\n\nexport interface CreateParticipantCommand {\n /** */\n penningtonId?: string;\n\n /** */\n nickname?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n communicationPreference?: number;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyId?: number;\n\n /** */\n studyArmId?: number;\n}\n\nexport interface CreateScaleCommand {\n /** */\n name?: string;\n\n /** */\n scaleImei?: string;\n}\n\nexport interface CreateSessionCommand {\n /** */\n scheduledDate?: string;\n\n /** */\n participantId?: number;\n}\n\nexport interface CreateSiteCommand {\n /** */\n name?: string;\n\n /** */\n managerId?: number;\n}\n\nexport interface CreateStudyArmCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n weightLossApproach?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n maxUpperBound?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n maxLowerBound?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n weightLossPeriod?: number;\n\n /** */\n weightMaintenancePeriod?: number;\n\n /** */\n studyId?: number;\n}\n\nexport interface CreateStudyCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n status?: number;\n\n /** */\n numberOfParticipants?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyPopulations?: string[];\n}\n\nexport interface CreateUserCommand {\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n password?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n confirmPassword?: string;\n\n /** */\n status?: number;\n\n /** */\n userRole?: number;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface CreateWeightCommand {\n /** */\n kilograms?: number;\n\n /** */\n pounds?: number;\n\n /** */\n createdDate?: string;\n\n /** */\n participantId?: number;\n\n /** */\n useLbs?: boolean;\n\n /** */\n isExcluded?: boolean;\n}\n\nexport interface CreatedEntity {\n /** */\n type?: string;\n\n /** */\n id?: number;\n}\n\nexport interface DataPointDto {\n /** */\n x?: Date;\n\n /** */\n y?: number;\n}\n\nexport interface DataTableColumn {\n /** */\n propertyName?: string;\n\n /** */\n sortDirection?: string;\n\n /** */\n searchTerm?: string;\n}\n\nexport interface DataTableRequest {\n /** */\n tableEcho?: number;\n\n /** */\n skip?: number;\n\n /** */\n take?: number;\n\n /** */\n allSearch?: string;\n\n /** */\n columns?: DataTableColumn[];\n\n /** */\n includeColumns?: boolean;\n}\n\nexport interface DefaultGroupDto {\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n}\n\nexport interface DefaultGroupDtoApiResult {\n /** */\n result?: DefaultGroupDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface DefaultStudyArmDto {\n /** */\n studyArmId?: number;\n\n /** */\n studyId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n}\n\nexport interface DefaultStudyArmDtoApiResult {\n /** */\n result?: DefaultStudyArmDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface DefaultStudyDto {\n /** */\n studyId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n}\n\nexport interface DefaultStudyDtoApiResult {\n /** */\n result?: DefaultStudyDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface DeleteSessionMaterialCommand {\n /** */\n fileIds?: number[];\n}\n\nexport interface DoubleApiResult {\n /** */\n result?: number;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface FileResourceUriResult {\n /** */\n uri?: string;\n\n /** */\n cacheUntil?: string;\n\n /** */\n guid?: string;\n\n /** */\n fileName?: string;\n\n /** */\n mimeType?: string;\n}\n\nexport interface ForgotPasswordCommand {\n /** */\n email?: string;\n}\n\nexport interface GetLegacyParticipantsRequest {\n /** */\n tableEcho?: number;\n\n /** */\n skip?: number;\n\n /** */\n take?: number;\n\n /** */\n allSearch?: string;\n\n /** */\n columns?: DataTableColumn[];\n\n /** */\n includeColumns?: boolean;\n}\n\nexport interface GetSessionsRequest {\n /** */\n participantId?: number;\n\n /** */\n tableEcho?: number;\n\n /** */\n skip?: number;\n\n /** */\n take?: number;\n\n /** */\n allSearch?: string;\n\n /** */\n columns?: DataTableColumn[];\n\n /** */\n includeColumns?: boolean;\n}\n\nexport interface GetWeightsRequest {\n /** */\n participantId?: number;\n\n /** */\n tableEcho?: number;\n\n /** */\n skip?: number;\n\n /** */\n take?: number;\n\n /** */\n allSearch?: string;\n\n /** */\n columns?: DataTableColumn[];\n\n /** */\n includeColumns?: boolean;\n}\n\nexport interface GraphDto {\n /** */\n series?: SeriesDto[];\n\n /** */\n annotationPoints?: AnnotationPointDto[];\n\n /** */\n trafficLightColor?: string;\n}\n\nexport interface GroupDto {\n /** */\n id?: number;\n\n /** */\n siteId?: number;\n\n /** */\n name?: string;\n\n /** */\n siteName?: string;\n}\n\nexport interface GroupDtoApiResult {\n /** */\n result?: GroupDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface GroupDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: GroupDto[];\n}\n\nexport interface GroupDtoDataTablePageApiResult {\n /** */\n result?: GroupDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface Int32ApiResult {\n /** */\n result?: number;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface LegacyParticipantDto {\n /** */\n id?: number;\n\n /** */\n penningtonId?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n studyIntervalDays?: number;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n goalWeight?: number;\n\n /** */\n baselineEnergyIntake?: number;\n\n /** */\n newEnergyIntake?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n percentType?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n counselorEmail?: string;\n\n /** */\n scaleName?: string;\n\n /** */\n trafficLightIndicator?: string;\n\n /** */\n latestWeight?: number;\n\n /** */\n latestWeighIn?: string;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n\n /** */\n graphData?: GraphDto;\n}\n\nexport interface LegacyParticipantDtoApiResult {\n /** */\n result?: LegacyParticipantDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface LegacyParticipantDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: LegacyParticipantDto[];\n}\n\nexport interface LegacyParticipantDtoDataTablePageApiResult {\n /** */\n result?: LegacyParticipantDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface LockUserCommand {\n /** */\n email?: string;\n}\n\nexport interface Marker {\n /** */\n fillColor?: string;\n\n /** */\n strokeColor?: string;\n\n /** */\n size?: number;\n\n /** */\n shape?: string;\n}\n\nexport interface MessageDto {\n /** */\n body?: string;\n\n /** */\n sentByParticipant?: boolean;\n\n /** */\n timestamp?: string;\n}\n\nexport interface MessageGroupDto {\n /** */\n messages?: MessageDto[];\n\n /** */\n contactName?: string;\n\n /** */\n contactEmail?: string;\n\n /** */\n contactPhone?: string;\n\n /** */\n contactId?: string;\n}\n\nexport interface MessageGroupDtoApiResult {\n /** */\n result?: MessageGroupDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface MessageThreadDto {\n /** */\n contactName?: string;\n\n /** */\n latestMessageBody?: string;\n\n /** */\n unreadCount?: number;\n\n /** */\n sentByParticipant?: boolean;\n\n /** */\n participantId?: number;\n\n /** */\n nonParticipantId?: number;\n\n /** */\n lastMessageDate?: string;\n}\n\nexport interface MessageThreadDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: MessageThreadDto[];\n}\n\nexport interface MessageThreadDtoDataTablePageApiResult {\n /** */\n result?: MessageThreadDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface OptionItemDto {\n /** */\n value?: number;\n\n /** */\n label?: string;\n\n /** */\n metadata?: any | null;\n}\n\nexport interface OptionItemDtoListApiResult {\n /** */\n result?: OptionItemDto[];\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ParticipantDto {\n /** */\n id?: number;\n\n /** */\n penningtonId?: string;\n\n /** */\n nickname?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n communicationPreference?: number;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n studyIntervalDays?: number;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n goalWeight?: number;\n\n /** */\n baselineEnergyIntake?: number;\n\n /** */\n newEnergyIntake?: number;\n\n /** */\n counselorEmail?: string;\n\n /** */\n scaleName?: string;\n\n /** */\n trafficLightIndicator?: string;\n\n /** */\n latestWeight?: number;\n\n /** */\n latestWeighIn?: string;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyId?: number;\n\n /** */\n studyArmId?: number;\n\n /** */\n graphData?: GraphDto;\n}\n\nexport interface ParticipantDtoApiResult {\n /** */\n result?: ParticipantDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ParticipantDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: ParticipantDto[];\n}\n\nexport interface ParticipantDtoDataTablePageApiResult {\n /** */\n result?: ParticipantDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ParticipantListItemDto {\n /** */\n id?: number;\n\n /** */\n penningtonId?: string;\n\n /** */\n nickname?: string;\n\n /** */\n counselorEmail?: string;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n trafficLightIndicator?: string;\n\n /** */\n latestWeight?: number;\n\n /** */\n latestWeighIn?: string;\n\n /** */\n siteName?: string;\n\n /** */\n groupName?: string;\n\n /** */\n counselorId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyId?: number;\n\n /** */\n studyArmId?: number;\n}\n\nexport interface ParticipantListItemDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: ParticipantListItemDto[];\n}\n\nexport interface ParticipantListItemDtoDataTablePageApiResult {\n /** */\n result?: ParticipantListItemDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface PasswordLoginCommand {\n /** */\n email?: string;\n\n /** */\n password?: string;\n\n /** */\n rememberMe?: boolean;\n}\n\nexport interface RegisterUserCommand {\n /** */\n email?: string;\n\n /** */\n password?: string;\n\n /** */\n confirmPassword?: string;\n}\n\nexport interface ResetPasswordCommand {\n /** */\n email?: string;\n\n /** */\n password?: string;\n\n /** */\n confirmPassword?: string;\n\n /** */\n code?: string;\n}\n\nexport interface ScaleDto {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n scaleImei?: string;\n\n /** */\n participant?: string;\n}\n\nexport interface ScaleDtoApiResult {\n /** */\n result?: ScaleDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ScaleDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: ScaleDto[];\n}\n\nexport interface ScaleDtoDataTablePageApiResult {\n /** */\n result?: ScaleDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SendConfirmAccountEmailCommand {\n /** */\n email?: string;\n}\n\nexport interface SeriesDto {\n /** */\n name?: string;\n\n /** */\n type?: string;\n\n /** */\n color?: string;\n\n /** */\n data?: DataPointDto[];\n}\n\nexport interface SessionListItemDto {\n /** */\n id?: number;\n\n /** */\n scheduledDate?: string;\n\n /** */\n interventionContactType?: string;\n\n /** */\n participantPenningtonId?: string;\n\n /** */\n toolboxNeeded?: boolean;\n\n /** */\n preparedMaterials?: boolean;\n\n /** */\n sentMaterials?: boolean;\n\n /** */\n sentToolbox?: boolean;\n\n /** */\n reviewedWeight?: boolean;\n\n /** */\n reviewedPreviousGoals?: boolean;\n\n /** */\n reviewedMaterials?: boolean;\n\n /** */\n setNewGoals?: boolean;\n\n /** */\n sentGoals?: boolean;\n\n /** */\n counselorId?: number;\n\n /** */\n counselorName?: string;\n\n /** */\n contactMethod?: string;\n\n /** */\n participantAttended?: boolean;\n\n /** */\n reasonForMissing?: string;\n\n /** */\n makeupSession?: boolean;\n\n /** */\n sessionMaterialIds?: number[];\n\n /** */\n sessionMaterialNames?: string;\n\n /** */\n caloriePrescription?: number;\n\n /** */\n stepsSinceLastSession?: number;\n\n /** */\n activityMinutes?: number;\n\n /** */\n additionalSessionInfo?: string;\n}\n\nexport interface SessionListItemDtoApiResult {\n /** */\n result?: SessionListItemDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SessionListItemDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: SessionListItemDto[];\n}\n\nexport interface SessionListItemDtoDataTablePageApiResult {\n /** */\n result?: SessionListItemDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SessionMaterialDto {\n /** */\n id?: number;\n\n /** */\n fileResource?: FileResourceUriResult;\n}\n\nexport interface SessionMaterialDtoListApiResult {\n /** */\n result?: SessionMaterialDto[];\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SessionScheduleDto {\n /** */\n id?: number;\n\n /** */\n startDate?: string;\n\n /** */\n frequency?: string;\n\n /** */\n participantId?: number;\n}\n\nexport interface SessionScheduleDtoApiResult {\n /** */\n result?: SessionScheduleDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SettingDto {\n /** */\n id?: number;\n\n /** */\n key?: string;\n\n /** */\n value?: string;\n\n /** */\n isEnabled?: boolean;\n}\n\nexport interface SettingDtoApiResult {\n /** */\n result?: SettingDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SettingDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: SettingDto[];\n}\n\nexport interface SettingDtoDataTablePageApiResult {\n /** */\n result?: SettingDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SiteDto {\n /** */\n id?: number;\n\n /** */\n managerId?: number;\n\n /** */\n name?: string;\n\n /** */\n managerEmail?: string;\n\n /** */\n managerName?: string;\n}\n\nexport interface SiteDtoApiResult {\n /** */\n result?: SiteDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SiteDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: SiteDto[];\n}\n\nexport interface SiteDtoDataTablePageApiResult {\n /** */\n result?: SiteDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StatusResult {\n /** */\n name?: string;\n\n /** */\n status?: string;\n}\n\nexport interface StatusResultListApiResult {\n /** */\n result?: StatusResult[];\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StringApiResult {\n /** */\n result?: string;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StringOptionItemDto {\n /** */\n value?: string;\n\n /** */\n label?: string;\n\n /** */\n metadata?: any | null;\n}\n\nexport interface StringOptionItemDtoListApiResult {\n /** */\n result?: StringOptionItemDto[];\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StudyArmDto {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n weightLossApproach?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n maxUpperBound?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n maxLowerBound?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n weightLossPeriod?: number;\n\n /** */\n weightMaintenancePeriod?: number;\n\n /** */\n studyId?: number;\n}\n\nexport interface StudyArmDtoApiResult {\n /** */\n result?: StudyArmDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StudyArmListItemDto {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n weightLossApproach?: string;\n\n /** */\n percentParameter?: string;\n\n /** */\n weightLossPeriod?: string;\n}\n\nexport interface StudyArmListItemDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: StudyArmListItemDto[];\n}\n\nexport interface StudyArmListItemDtoDataTablePageApiResult {\n /** */\n result?: StudyArmListItemDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StudyDto {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n status?: number;\n\n /** */\n numberOfParticipants?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyPopulations?: string[];\n}\n\nexport interface StudyDtoApiResult {\n /** */\n result?: StudyDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface StudyListItemDto {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n status?: string;\n\n /** */\n numberOfParticipants?: number;\n\n /** */\n studyPopulations?: string;\n}\n\nexport interface StudyListItemDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: StudyListItemDto[];\n}\n\nexport interface StudyListItemDtoDataTablePageApiResult {\n /** */\n result?: StudyListItemDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface SyncWeightCommand {\n /** */\n imei?: string;\n\n /** */\n ts?: number;\n\n /** */\n values?: Values;\n}\n\nexport interface SyncWeightsCommand {\n /** */\n participantId?: number;\n}\n\nexport interface UnlockUserCommand {\n /** */\n email?: string;\n}\n\nexport interface UpdateCommunicationPreferenceCommand {\n /** */\n phoneNumber?: string;\n\n /** */\n communicationPreference?: CommunicationPreference;\n}\n\nexport interface UpdateCounselorCommand {\n /** */\n id?: number;\n\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n groupId?: number;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface UpdateGroupCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n siteId?: number;\n}\n\nexport interface UpdateLegacyParticipantCommand {\n /** */\n id?: number;\n\n /** */\n penningtonId?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n studyIntervalDays?: number;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n percentType?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n}\n\nexport interface UpdateMaterialFileNameCommand {\n /** */\n id?: number;\n\n /** */\n fileName?: string;\n}\n\nexport interface UpdateParticipantCommand {\n /** */\n id?: number;\n\n /** */\n penningtonId?: string;\n\n /** */\n nickname?: string;\n\n /** */\n email?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n communicationPreference?: number;\n\n /** */\n status?: string;\n\n /** */\n studyStartDate?: Date;\n\n /** */\n studyEndDate?: Date;\n\n /** */\n age?: number;\n\n /** */\n gender?: string;\n\n /** */\n height?: number;\n\n /** */\n baselineWeight?: number;\n\n /** */\n counselorId?: number;\n\n /** */\n scaleId?: number;\n\n /** */\n siteId?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyId?: number;\n\n /** */\n studyArmId?: number;\n}\n\nexport interface UpdateScaleCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n scaleImei?: string;\n}\n\nexport interface UpdateSessionCommand {\n /** */\n scheduledDate?: string;\n\n /** */\n sessionId?: number;\n}\n\nexport interface UpdateSessionDetailsCommand {\n /** */\n id?: number;\n\n /** */\n scheduledDate?: string;\n\n /** */\n interventionContactType?: string;\n\n /** */\n participantPenningtonId?: string;\n\n /** */\n toolboxNeeded?: boolean;\n\n /** */\n preparedMaterials?: boolean;\n\n /** */\n sentMaterials?: boolean;\n\n /** */\n sentToolbox?: boolean;\n\n /** */\n reviewedWeight?: boolean;\n\n /** */\n reviewedPreviousGoals?: boolean;\n\n /** */\n reviewedMaterials?: boolean;\n\n /** */\n setNewGoals?: boolean;\n\n /** */\n sentGoals?: boolean;\n\n /** */\n counselorId?: number;\n\n /** */\n counselorName?: string;\n\n /** */\n contactMethod?: string;\n\n /** */\n participantAttended?: boolean;\n\n /** */\n reasonForMissing?: string;\n\n /** */\n makeupSession?: boolean;\n\n /** */\n sessionMaterialIds?: number[];\n\n /** */\n sessionMaterialNames?: string;\n\n /** */\n caloriePrescription?: number;\n\n /** */\n stepsSinceLastSession?: number;\n\n /** */\n activityMinutes?: number;\n\n /** */\n additionalSessionInfo?: string;\n}\n\nexport interface UpdateSiteCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n managerId?: number;\n}\n\nexport interface UpdateStudyArmCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n weightLossApproach?: PercentType;\n\n /** */\n percentParameter?: number;\n\n /** */\n upperBoundBuffer?: number;\n\n /** */\n maxUpperBound?: number;\n\n /** */\n lowerBoundBuffer?: number;\n\n /** */\n maxLowerBound?: number;\n\n /** */\n boundModificationAmount?: number;\n\n /** */\n boundModificationWeekInterval?: number;\n\n /** */\n weightLossPeriod?: number;\n\n /** */\n weightMaintenancePeriod?: number;\n\n /** */\n studyId?: number;\n}\n\nexport interface UpdateStudyCommand {\n /** */\n id?: number;\n\n /** */\n name?: string;\n\n /** */\n status?: number;\n\n /** */\n numberOfParticipants?: number;\n\n /** */\n groupId?: number;\n\n /** */\n studyPopulations?: string[];\n}\n\nexport interface UpdateUserCommand {\n /** */\n id?: number;\n\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n username?: string;\n\n /** */\n userRole?: number;\n\n /** */\n status?: number;\n\n /** */\n newPassword?: string;\n\n /** */\n confirmNewPassword?: string;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface UpdateWeightCommand {\n /** */\n id?: number;\n\n /** */\n kilograms?: number;\n\n /** */\n pounds?: number;\n\n /** */\n createdDate?: string;\n\n /** */\n participantId?: number;\n\n /** */\n useLbs?: boolean;\n\n /** */\n isExcluded?: boolean;\n}\n\nexport interface UserDto {\n /** */\n id?: number;\n\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n phoneNumber?: string;\n\n /** */\n status?: number;\n\n /** */\n emailConfirmed?: boolean;\n\n /** */\n userRole?: number;\n\n /** */\n userRoleName?: string;\n\n /** */\n groupId?: number;\n\n /** */\n hasLegacyAccess?: boolean;\n}\n\nexport interface UserDtoApiResult {\n /** */\n result?: UserDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface UserListItemDto {\n /** */\n id?: number;\n\n /** */\n email?: string;\n\n /** */\n name?: string;\n\n /** */\n emailConfirmed?: boolean;\n\n /** */\n phoneNumber?: string;\n\n /** */\n userRoleName?: string;\n\n /** */\n status?: string;\n\n /** */\n isLockedOut?: boolean;\n}\n\nexport interface UserListItemDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: UserListItemDto[];\n}\n\nexport interface UserListItemDtoDataTablePageApiResult {\n /** */\n result?: UserListItemDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface ValidationError {\n /** */\n propertyName?: string;\n\n /** */\n errorMessage?: string;\n}\n\nexport interface Values {\n /** */\n weight?: number;\n}\n\nexport interface WeightDto {\n /** */\n id?: number;\n\n /** */\n kilograms?: number;\n\n /** */\n pounds?: number;\n\n /** */\n participant?: string;\n\n /** */\n scale?: string;\n\n /** */\n createdDate?: string;\n\n /** */\n manuallyModified?: boolean;\n\n /** */\n isExcluded?: boolean;\n\n /** */\n participantId?: number;\n\n /** */\n useLbs?: boolean;\n}\n\nexport interface WeightDtoApiResult {\n /** */\n result?: WeightDto;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport interface WeightDtoDataTablePage {\n /** */\n totalFilteredRecords?: number;\n\n /** */\n totalRecords?: number;\n\n /** */\n rows?: WeightDto[];\n}\n\nexport interface WeightDtoDataTablePageApiResult {\n /** */\n result?: WeightDtoDataTablePage;\n\n /** */\n validationFailures?: ValidationError[];\n\n /** */\n createdEntities?: CreatedEntity[];\n\n /** */\n hasErrors?: boolean;\n}\n\nexport enum CommunicationPreference {\n 'Email' = 'Email',\n 'Text' = 'Text',\n 'None' = 'None'\n}\n\nexport enum PercentType {\n 'PercentWeightLoss' = 'PercentWeightLoss',\n 'PercentEnergyRestriction' = 'PercentEnergyRestriction'\n}\n"],"sourceRoot":""}