\n {currentFollowUps && (\n {t `You have received the following message. Please select a response option (if any) and click\n `}{' '}\n {t `Save`}, {t `or click`} {t `Back`}{' '}\n {t `if no response is being requested to this message.`}\n )}\n\n {currentFollowUps && ()}\n
\n {t `Note:`}\n \n {t `Your experience includes ALL features OnSolve has to offer, which may differ from your contracted subscription to the service.`}\n
);\nexport default BetaToastrContent;\n","import React from 'react';\nconst GroupsIcon = (props) => {\n return ();\n};\nexport default GroupsIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"bannerContainer\":\"_71FtDzC3WU9AzrtSy+X8bA==\",\"icon\":\"Csp1jaxnGxQT0ouSUK0mkw==\",\"message\":\"kO5vKa+Mkoz0xniM0V6EUQ==\",\"buttonContainer\":\"iWWxf7AgB9I67T-eeash0A==\"};","import { Button, EyeIcon } from '@onsolve/onsolve-ui-components';\nimport React from 'react';\nimport styles from './ImpersonatorBanner.module.scss';\nconst ImpersonatorBanner = ({ onClose, message }) => (
\n \n \n \n
{message}
\n
\n \n
\n
);\nexport default ImpersonatorBanner;\n","import React from 'react';\nconst NavigationIcon = () => {\n return ();\n};\nexport default NavigationIcon;\n","// extracted by mini-css-extract-plugin\nexport default {\"uppercaseText\":\"hdL0zt7-c0UF5A4MiM6iXw==\"};","import React, { useEffect, useMemo, useState, useCallback } from 'react';\nimport { AlertModal, Button } from '@onsolve/onsolve-ui-components';\nimport { t, Trans } from '@lingui/macro';\nimport { useSessionContext } from '@context/sessionContext';\nimport styles from './SessionTimeoutModal.module.scss';\nimport AuthService from '@services/auth.service';\nimport JwtService from '@services/jwt.service';\nimport LocalStorageUtility from '../../common/utility/localStorageUtility';\n// Events that will cause the inactivity timer to restart\nconst activityEvents = ['change', 'click', 'keydown', 'input', 'load', 'scroll', 'touch'];\nconst defaultLogoutTimeout = 3600000; // 60 minutes\nconst defaultLogoutOffset = 60000; // 1 minute\n/*\n * Actual timer function that will sign the user out after {logoutTimeout} time has elapsed when modal is shown\n * This timer will be reset any time the user either signs out or chooses to stay logged in\n */\nlet automaticLogoutTimer;\n/*\n * Actual timer function that will show the inactivity modal after {popupTimeout} time has elapsed when modal is not shown\n * This timer will be reset any time a user performs one of the events listed in {activityEvents}, or if a user signs out or remains logged in\n */\nlet sessionPopupTimer;\nconst localStorageKey = `SESSION_TIMEOUT_${JwtService.getOrganizationId()}`;\nconst SessionTimeoutModal = () => {\n const { identityContext: { attributes: { 'security:uiSessionTimeoutInSeconds': sessionTimeout } = {} } = {} } = useSessionContext();\n const [storedTimeout, setStoredTimeout] = useState(0);\n const [isSessionModalOpen, setModalOpen] = useState(false);\n const logoutTimeout = useMemo(() => {\n const sessionTimeoutMs = sessionTimeout * 1000;\n return sessionTimeoutMs - defaultLogoutOffset > 0 ? sessionTimeoutMs : defaultLogoutTimeout;\n }, [sessionTimeout]);\n const signOut = useCallback(() => {\n LocalStorageUtility.clearKeys([localStorageKey]);\n setModalOpen(false);\n clearAllTimers();\n AuthService.signOut();\n }, [localStorageKey]);\n const clearAllTimers = () => {\n if (sessionPopupTimer)\n clearTimeout(sessionPopupTimer);\n if (automaticLogoutTimer)\n clearTimeout(automaticLogoutTimer);\n };\n const startAllTimers = useCallback(() => {\n sessionPopupTimer = setTimeout(() => {\n setModalOpen(true);\n }, storedTimeout - new Date().getTime() - defaultLogoutOffset);\n automaticLogoutTimer = setTimeout(signOut, storedTimeout - new Date().getTime());\n }, [signOut, storedTimeout]);\n const resetTimers = useCallback(() => {\n isSessionModalOpen && setModalOpen(false);\n clearAllTimers();\n startAllTimers();\n }, [isSessionModalOpen, startAllTimers]);\n const timeoutModalMessage = (\n You will be signed out in approximately one minute. Select Stay Signed In to extend your session, or{' '}\n Sign Out to end your session now.\n );\n const updateStoredTimeout = () => {\n const timeout = new Date().getTime() + logoutTimeout;\n LocalStorageUtility.setData(localStorageKey, timeout);\n window.dispatchEvent(new Event('storage'));\n };\n const handleStorageChange = () => {\n const timeout = LocalStorageUtility.getData(localStorageKey);\n setStoredTimeout(timeout);\n };\n useEffect(() => {\n if (sessionTimeout) {\n window.addEventListener('storage', handleStorageChange);\n activityEvents.forEach((evt) => window.addEventListener(evt, updateStoredTimeout));\n const storedValue = LocalStorageUtility.getData(localStorageKey);\n if (!storedValue || storedValue - defaultLogoutOffset < new Date().getTime()) {\n updateStoredTimeout();\n }\n else {\n setStoredTimeout(storedValue);\n }\n return () => {\n window.removeEventListener('storage', handleStorageChange);\n activityEvents.forEach((evt) => window.removeEventListener(evt, updateStoredTimeout));\n clearAllTimers();\n };\n }\n }, [sessionTimeout]);\n useEffect(() => {\n if (storedTimeout) {\n resetTimers();\n }\n }, [storedTimeout]);\n return (\n \n \n >}/>);\n};\nexport default SessionTimeoutModal;\n","// extracted by mini-css-extract-plugin\nexport default {\"travelIcon\":\"CzvDnyiUoGVhI6YqwrDQKA==\"};","import React from 'react';\nimport { SvgIcon } from '@onsolve/onsolve-ui-components';\nimport styles from './TravelIcon.module.scss';\nconst TravelIcon = () => (\n \n \n \n \n \n );\nexport default TravelIcon;\n","const SessionDefaults = {\n identityContext: {\n attributes: {},\n },\n};\nexport default SessionDefaults;\n","const AccountDefaults = {\n accountId: -1,\n organizationId: -1,\n globalPermissions: [],\n features: [],\n addresses: [],\n csrfToken: '',\n organizationName: '',\n loggedInUser: {\n firstName: '',\n lastName: '',\n username: '',\n locale: '',\n userUuid: undefined,\n jobTitle: '',\n },\n division: undefined,\n handleSignOut: () => { },\n};\nexport default AccountDefaults;\n","export const mapLayers = {\n LIGHT_MAP: 'mapbox://styles/onsolve/ckpxvspil1c7317qqx4q8ix1v',\n STREET_MAP: 'mapbox://styles/onsolve/cll6oscam00mj01p449wtafxd',\n SATELLITE_MAP: 'mapbox://styles/onsolve/cll6n0k4v00la01mf7ow0a6oh',\n};\n","import AccountDefaults from '@configs/accountDefaults';\nimport AccountService from '@services/account.service';\nimport OrganizationService from '@services/organization.service';\nimport namespaceService from '@services/namespace.service';\nimport configurationService from '@services/config.service';\nimport React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nconst AccountContext = createContext(AccountDefaults);\nexport const useAccountContext = () => useContext(AccountContext);\nconst AccountProvider = ({ children }) => {\n const tahoeUrl = configurationService.TahoeUrl;\n const accountService = new AccountService(tahoeUrl);\n const organizationService = new OrganizationService(configurationService.OrganizationServiceBaseUrl);\n const namespace = namespaceService.getNamespace();\n const [account, setAccount] = useState(AccountDefaults);\n const [brand, setBrand] = useState('');\n const getAccount = async () => {\n const response = await accountService.getAccount();\n setAccount(response);\n };\n useEffect(() => {\n getAccount();\n }, []); //eslint-disable-line react-hooks/exhaustive-deps\n useEffect(() => {\n const getBrand = async () => {\n const { brand } = await organizationService.GetBrandByNamespace(namespace);\n setBrand(brand);\n };\n if (namespace.length) {\n getBrand();\n }\n }, [account]);\n const values = useMemo(() => ({\n ...account,\n brand,\n }), [account, brand]);\n return (\n <>{children}>\n );\n};\nexport default AccountProvider;\n","import React, { useContext, createContext, useState, useEffect } from 'react';\nimport ApiService from 'services/api.service';\nimport PermissionService from 'services/permission.service';\nimport localStorageUtility from '../common/utility/localStorageUtility';\nimport configurationService from 'services/config.service';\nconst RIAccountContext = createContext(null);\nconst permissionService = new PermissionService();\nexport const useRIAccountContext = () => useContext(RIAccountContext);\nconst RIAccountProvider = ({ children }) => {\n const apiService = new ApiService();\n const { canManageRiskIntelligence } = permissionService.permissions;\n const accountAuthURL = configurationService.RiskIntelligenceApiUrl;\n const [riAccount, setRiAccount] = useState(null);\n const [riConfig, setRiConfig] = useState({});\n const [isLoadingRIAccount, setIsLoadingRIAccount] = useState(true);\n const getRIAuth = async () => {\n try {\n const data = (await apiService.get(`${accountAuthURL}/3/authenticated`)) || {};\n localStorageUtility.setData('riAccountInfo', data);\n setRiAccount(data);\n }\n catch (err) {\n console.info('No Risk Intelligence account authenticated.');\n }\n setIsLoadingRIAccount(false);\n };\n const getRIConfiguration = async (accountId) => {\n try {\n const response = (await apiService.get(`${accountAuthURL}/1/accounts/${accountId}/configuration`)) || {};\n localStorageUtility.setData('riConfigurationInfo', response);\n setRiConfig(response);\n }\n catch (err) {\n console.info('No Risk Intelligence Configurations.');\n }\n };\n useEffect(() => {\n if (canManageRiskIntelligence()) {\n getRIAuth();\n }\n }, []); //eslint-disable-line\n useEffect(() => {\n if (riAccount) {\n getRIConfiguration(riAccount.account_id);\n }\n }, [riAccount]); //eslint-disable-line\n const values = {\n riAccount,\n isLoadingRIAccount,\n riConfig,\n };\n return (\n <>{children}>\n );\n};\nexport default RIAccountProvider;\n","import SessionDefaults from '@configs/SessionDefaults';\nimport identityService from '@services/identity.service';\nimport React, { createContext, useContext, useEffect, useMemo, useState } from 'react';\nconst SessionContext = createContext(SessionDefaults);\nexport const useSessionContext = () => useContext(SessionContext);\nexport const SessionProvider = ({ children }) => {\n const [identityContext, setIdentityContext] = useState(SessionDefaults.identityContext);\n const getIdentityContext = async () => {\n const result = await identityService.getIdentityContext();\n setIdentityContext(result);\n };\n useEffect(() => {\n getIdentityContext();\n }, []);\n const values = useMemo(() => ({\n identityContext,\n }), [identityContext]);\n return (\n <>{children}>\n );\n};\nexport default SessionProvider;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.scss';\nimport App from './App';\nimport 'scss/style.scss';\nimport I18nProvider from 'modules/Common/components/I18n/Provider';\nimport { I18nProvider as LinguiProvider } from '@lingui/react';\nimport { i18n } from '@lingui/core';\nimport { en } from 'make-plural/plurals';\nimport { messages } from './locales/en-US/messages';\nimport RIAccountProvider from './context/riAccountContext';\nimport AccountProvider from '@context/AccountContext';\nimport SessionProvider from 'context/sessionContext';\nimport 'modules/Common/components/DataDog/DataDog';\n// ---------------------------------------------------------------------------\n// In order to get the Favicon to copy properly, we need to import it.\n// Several attempts have been made to not require this import, with no luck.\n// Do not delete the Favicon import\n// ---------------------------------------------------------------------------\ni18n.loadLocaleData({\n 'en-US': { plurals: en },\n});\ni18n.load('en-US', messages);\ni18n.activate('en-US');\nconst providers = (\n \n {/* Can't be re-rendered since it has timer logic for login/logout */}\n \n \n \n \n \n \n \n \n );\nReactDOM.render({providers}, document.getElementById('root'));\n","/*eslint-disable*/ export const messages = { \"Account Management\": \"Account Management\", \"Alert Reply\": \"Alert Reply\", \"Alerts\": \"Alerts\", \"BI Reporting\": \"BI Reporting\", \"Back\": \"Back\", \"CANCEL\": \"CANCEL\", \"Change Response\": \"Change Response\", \"Communication Methods\": \"Communication Methods\", \"Configure\": \"Configure\", \"Confirm Response\": \"Confirm Response\", \"Contact Us\": \"Contact Us\", \"Control Center\": \"Control Center\", \"Copyright Notice\": \"Copyright Notice\", \"Critical Communications\": \"Critical Communications\", \"DONE\": \"DONE\", \"Dashboard\": \"Dashboard\", \"Do you want to save your response?\": \"Do you want to save your response?\", \"EU Privacy Request\": \"EU Privacy Request\", \"Enter your answer\": \"Enter your answer\", \"Event Feed\": \"Event Feed\", \"Filters\": \"Filters\", \"Groups\": \"Groups\", \"Inbox\": \"Inbox\", \"Incident Management\": \"Incident Management\", \"Linked Alerts\": \"Linked Alerts\", \"Menu\": \"Menu\", \"Note:\": \"Note:\", \"OnSolve has made updates!\": \"OnSolve has made updates!\", \"People\": \"People\", \"Please stand by.\": \"Please stand by.\", \"Privacy Statement\": \"Privacy Statement\", \"Reports\": \"Reports\", \"Response Portal\": \"Response Portal\", \"Risk Insights\": \"Risk Insights\", \"Risk Intelligence\": \"Risk Intelligence\", \"SAVE\": \"SAVE\", \"SIGN OUT\": \"SIGN OUT\", \"STAY SIGNED IN\": \"STAY SIGNED IN\", \"Save\": \"Save\", \"Scenario Library\": \"Scenario Library\", \"Schedules\": \"Schedules\", \"Settings\": \"Settings\", \"Subscriptions\": \"Subscriptions\", \"Support & Training\": \"Support & Training\", \"Travel\": \"Travel\", \"We regret to inform you that your response has not been accepted as the alert or the link has expired.\": \"We regret to inform you that your response has not been accepted as the alert or the link has expired.\", \"Write your answer.\": \"Write your answer.\", \"You have received the following message. Please select a response option (if any) and click\": \"You have received the following message. Please select a response option (if any) and click\", \"You will be signed out in approximately one minute. Select <0>Stay Signed In0> to extend your session, or <1>Sign Out1> to end your session now.\": \"You will be signed out in approximately one minute. Select <0>Stay Signed In0> to extend your session, or <1>Sign Out1> to end your session now.\", \"Your experience includes ALL features OnSolve has to offer, which may differ from your contracted subscription to the service.\": \"Your experience includes ALL features OnSolve has to offer, which may differ from your contracted subscription to the service.\", \"Your response could not be accepted, because this notification has already been closed.\": \"Your response could not be accepted, because this notification has already been closed.\", \"Your response has been accepted. Thank you!\": \"Your response has been accepted. Thank you!\", \"Your session is about to expire\": \"Your session is about to expire\", \"if no response is being requested to this message.\": \"if no response is being requested to this message.\", \"or click\": \"or click\", \"see what's new\": \"see what's new\" };\n","import AuthService from 'services/auth.service';\nimport namespaceService from 'services/namespace.service';\nimport jwtService from '@services/jwt.service';\nimport PermissionService from '@services/permission.service';\nimport { isProduction } from 'utils/envUtilities';\nimport { getCurrentApp } from 'common/utility/getCurrentApp';\nconst initializeDatadogRum = () => {\n if (window.DD_RUM) {\n window.DD_RUM.init({\n clientToken: 'pubdeddc0d40240f50bb5d78e4575962f52',\n applicationId: 'edb3ffa5-1e4d-4e36-8cac-c47c5ca55a12',\n site: 'datadoghq.com',\n service: 'mfe',\n env: localStorage.getItem('environment') ?? 'development',\n sessionSampleRate: 100,\n sessionReplaySampleRate: 100,\n trackUserInteractions: true,\n trackResources: true,\n trackLongTasks: true,\n defaultPrivacyLevel: 'allow',\n //todo: we need each individual app to pass set the version for this to accurately show the image tags, right now only OUI is doing it correctly\n version: VERSION,\n beforeSend: (event) => {\n let currentApp = 'mfe';\n try {\n currentApp = getCurrentApp();\n }\n catch (error) {\n console.log('error in getting current app, setting to mfe', error);\n }\n event.service = currentApp;\n },\n });\n const setUserDetailsInDatadog = () => {\n if (!window.DD_RUM) {\n console.error('Datadog RUM is not initialized');\n return;\n }\n const orgUuid = jwtService.getOrganizationUuid();\n const userUuid = jwtService.getUserUuid();\n window.DD_RUM.setUser({\n id: userUuid,\n });\n window.DD_RUM.setGlobalContextProperty('orgId', orgUuid);\n window.DD_RUM.setGlobalContextProperty('namespace', namespaceService.getNamespace());\n window.DD_RUM.setGlobalContextProperty('environment', namespaceService.getOriginWithoutNamespace());\n };\n if (AuthService?.isAuthenticated) {\n setUserDetailsInDatadog();\n }\n }\n else {\n console.error('Datadog RUM not found on window object');\n }\n};\n//determined by \"allowObservability\" FF in Tahoe EM\n//todo: enable in prod - disabled for now for testing and review in integration only\nconst { canUseDatadogRUM } = new PermissionService().permissions;\nconst dataDogEnabled = !isProduction() && canUseDatadogRUM();\nif (dataDogEnabled) {\n const scriptId = 'datadog-rum-script';\n if (!document.getElementById(scriptId)) {\n const script = document.createElement('script');\n script.id = scriptId;\n script.src = 'https://www.datadoghq-browser-agent.com/us1/v5/datadog-rum.js';\n script.async = false;\n script.onload = initializeDatadogRum;\n script.onerror = () => {\n console.error('Error loading Datadog RUM script');\n };\n document.head.appendChild(script);\n }\n else {\n initializeDatadogRum();\n }\n}\n","import CookieService from 'services/cookie.service';\nimport namespaceService from 'services/namespace.service';\nexport const i18nSetCookie = (ui_lang, name = 'lang') => {\n const cookieService = new CookieService();\n if (ui_lang) {\n const cookieOptions = { 'max-age': 120 };\n if (!location.hostname.endsWith('localhost')) {\n //Do not set a cookie \"domain\" if running on localhost\n cookieOptions.domain = '.' + namespaceService.getDomainWithoutNamespace();\n }\n cookieService.setCookie(name, ui_lang, cookieOptions);\n }\n};\n","import ApiService from './api.service';\nexport default class AccountService extends ApiService {\n constructor(tahoeUrl) {\n super(tahoeUrl);\n }\n getAccount = async () => {\n try {\n const response = await this.get('/actions/session');\n return response;\n }\n catch (error) {\n console.log(error);\n }\n };\n}\n","import jwtService from './jwt.service';\nimport configurationService from './config.service';\nimport ApiService from './api.service';\nimport oidcManagerService from './oidc.manager.service';\nimport errorHandlingService from './error.handling.service';\nimport CookieService from './cookie.service';\nimport cookieKeys from '../common/constants/cookieKeys';\nimport namespaceService from './namespace.service';\nimport identityService from './identity.service';\nconst AuthService = {\n async signIn(clientErrorCode) {\n const manager = oidcManagerService.GetManager();\n const user = await manager.getUser();\n if (user && user.expired) {\n await this.signOut();\n return;\n }\n const extraParams = {};\n if (clientErrorCode) {\n extraParams.client_error = clientErrorCode;\n }\n await manager.clearStaleState();\n await manager.signinRedirect({\n extraQueryParams: {\n ...extraParams,\n ...manager.settings.extraQueryParams,\n },\n });\n },\n async signOut(mir3Logout = true, clientErrorCode = undefined) {\n if (mir3Logout) {\n const apiService = new ApiService(configurationService.MIR3ApiBaseUrl);\n const cookieService = new CookieService();\n const domain = namespaceService.getDomainWithoutNamespace();\n // the following cookies are set to a domain without a namespace prefix,\n // that's why the same domain should be used for deletion\n cookieService.deleteCookie(cookieKeys.loggedInNamespace, domain);\n cookieService.deleteCookie(cookieKeys.originURL, domain);\n //Invalidate all open sessions in mir3 based on user authorization token\n apiService.post('/actions/session/invalidate').catch((error) => {\n errorHandlingService.logError(error);\n });\n }\n const manager = oidcManagerService.GetManager(true, clientErrorCode);\n await manager.signoutRedirect();\n },\n async updateState() {\n const manager = oidcManagerService.GetManager();\n await manager.signinRedirectCallback();\n jwtService.setClaims();\n },\n async updateStateWithRedictParameter(locationString) {\n await this.updateState();\n location = locationString ? locationString : '';\n },\n get isAuthenticated() {\n return !jwtService.isTokenExpired();\n },\n removeAuthData() {\n jwtService.removeClaims();\n jwtService.removeToken();\n },\n async toggleImpersonation(subjectId) {\n try {\n const { IdentityBaseClientId } = configurationService;\n const data = new FormData();\n data.append('client_id', IdentityBaseClientId);\n data.append('grant_type', 'urn:ietf:params:oauth:grant-type:token-exchange');\n data.append('actor_token_type', 'urn:ietf:params:oauth:token-type:access_token');\n data.append('actor_token', jwtService.getToken()?.replace('Bearer ', ''));\n //if you don't have a subject Id, you are exiting impersonator flow\n if (subjectId) {\n data.append('subject_sub', subjectId);\n }\n const oidcUserData = await identityService.impersonateUser(data);\n jwtService.toggleImpersonation(oidcUserData);\n return oidcUserData?.access_token || '';\n }\n catch (error) {\n console.error(error);\n }\n },\n};\nexport default AuthService;\n","const { MIR3ApiBaseUrl, FranconiaApiBaseUrl, OrganizationServiceBaseUrl, CascadesApiBaseUrl, SelfRegApiBaseUrl, ReportingApiBaseUrl, WeatherAuditBaseUrl, WeatherServiceBaseUrl, CustomFieldsApiBaseUrl, AnnouncementsApiBaseUrl, IncidentsApiBaseUrl, MobileIncidentsApiBaseUrl, SchedulesApiBaseUrl, UrlPattern, FileStorageServiceApiBaseUrl, FeedsServiceApiBaseUrl, IdentityBaseClientId, Authority, ExternalDomainName, ContactFileParserApiBaseUrl, RightToBeForgottenBaseUrl, LockboxApiBaseUrl, UserDocumentsUrl, PagerServiceUrl, FeatureFlags: _FeatureFlags = {}, } = JSON.parse(localStorage.getItem('onsolve_config')) || {};\nconst { IdentityServerUrl, ControlCenterApiUrl, RiskIntelligenceApiUrl, TahoeUrl, OnsolvePlatformUrl, ClusterSpecificAddress, ResponseServiceUrl, } = JSON.parse(localStorage.getItem('microfrontend_config')) || {};\nconst FeatureFlags = process.env.NODE_ENV !== 'test' ? Object.freeze(_FeatureFlags) : _FeatureFlags;\nconst _targetConfig = {\n // Microfrontend\n IdentityServerUrl,\n RiskIntelligenceApiUrl,\n ControlCenterApiUrl,\n TahoeUrl,\n OnsolvePlatformUrl,\n OrganizationServiceBaseUrl,\n ClusterSpecificAddress,\n ResponseServiceUrl,\n // Critical Comms\n MIR3ApiBaseUrl,\n FranconiaApiBaseUrl,\n CascadesApiBaseUrl,\n SelfRegApiBaseUrl,\n ReportingApiBaseUrl,\n WeatherAuditBaseUrl,\n WeatherServiceBaseUrl,\n CustomFieldsApiBaseUrl,\n AnnouncementsApiBaseUrl,\n IncidentsApiBaseUrl,\n MobileIncidentsApiBaseUrl,\n SchedulesApiBaseUrl,\n UrlPattern,\n FileStorageServiceApiBaseUrl,\n FeedsServiceApiBaseUrl,\n IdentityBaseClientId,\n Authority,\n ExternalDomainName,\n ContactFileParserApiBaseUrl,\n UserDocumentsUrl,\n RightToBeForgottenBaseUrl,\n LockboxApiBaseUrl,\n PagerServiceUrl,\n FeatureFlags,\n};\nconst createConfig = () => {\n for (const key in _targetConfig) {\n if (!_targetConfig[key]) {\n /* eslint-disable no-console */\n console.error(`Configuration settings do not contain '${key}' key`);\n _targetConfig[key] = '';\n }\n }\n return Object.freeze(_targetConfig);\n};\nexport default createConfig();\n","export default class CookieService {\n getCookie = (name) => {\n return document?.cookie?.match(new RegExp('(^| )' + name + '=([^;]+)'));\n };\n getCookieValue = (name) => {\n const cookie = this.getCookie(name);\n return cookie ? decodeURIComponent(cookie[2]) : '';\n };\n setCookie = (name, value, options = {}) => {\n options = {\n ...options,\n path: options.path || '/',\n };\n if (options.expires instanceof Date) {\n options.expires = options.expires.toUTCString();\n }\n let cookie = `${encodeURIComponent(name)}=${encodeURIComponent(value)}`;\n let optionKey;\n for (optionKey in options) {\n if (!!options[optionKey] !== true) {\n cookie += `; ${optionKey}=${options[optionKey]}`;\n }\n }\n document.cookie = cookie;\n };\n deleteCookie = (name, domain) => {\n this.setCookie(name, '', { 'max-age': -1, ...(domain && { domain }) });\n };\n}\n","import configurationService from './config.service';\nexport const getFeature = (name) => {\n if (!name) {\n return true;\n }\n const { FeatureFlags } = configurationService;\n return typeof FeatureFlags[name] === 'undefined' || FeatureFlags[name];\n};\nexport default {\n getFeature,\n};\n","import ApiService from './api.service';\nimport configurationService from '@services/config.service';\nimport jwtService from './jwt.service';\nclass IdentityService extends ApiService {\n constructor() {\n // Construct an api service with IdentityServerUrl\n super(configurationService.IdentityServerUrl);\n }\n getIdentityContext = async () => {\n const { idctxt } = jwtService.getPermissionsClaims();\n if (!idctxt) {\n return { attributes: {} };\n }\n try {\n const response = await this.get(`/api/v1/IdentityContext/${idctxt}`);\n return response ?? { attributes: { 'security:uiSessionTimeoutInSeconds': 3600 } };\n }\n catch (error) {\n console.error(error);\n return { attributes: {} };\n }\n };\n impersonateUser = async (data) => {\n try {\n const response = await this.post('/connect/token', data);\n if (response) {\n return response;\n }\n }\n catch (error) {\n console.error(error);\n throw error;\n }\n };\n}\nexport default new IdentityService();\n","import jwt from 'jwt-decode';\nimport LocalStorageUtility from '../common/utility/localStorageUtility';\nlet decodedPayload = null;\nclass JwtService {\n getOrganizationId() {\n return this.getPayload()?.org;\n }\n getOrganizationUuid() {\n return this.getPayload()?.org_uuid;\n }\n getUserUuid() {\n return this.getPayload()?.user_uuid;\n }\n getUserAssetId() {\n return this.getPayload()?.userassetid;\n }\n getPermissionsClaims() {\n // eslint-disable-next-line no-unused-vars\n const { sub, org, exp, ...permissions } = this.getPayload() || {};\n // permissions.FBA_selfRegPortals = 1;\n return permissions;\n }\n getPayload() {\n if (!decodedPayload) {\n decodedPayload = LocalStorageUtility.getData('claims');\n }\n return { ...decodedPayload };\n }\n isTokenExpired() {\n const data = LocalStorageUtility.selectContaining('oidc-user.');\n const exp = data?.expires_at;\n if (exp) {\n const date = new Date(0);\n date.setUTCSeconds(exp);\n return date.valueOf() <= new Date().valueOf();\n }\n return true;\n }\n getToken() {\n const data = LocalStorageUtility.selectContaining('oidc-user.');\n if (data?.access_token) {\n return data.access_token;\n }\n return null;\n }\n setClaims() {\n const data = LocalStorageUtility.selectContaining('oidc-user.');\n if (data?.access_token) {\n const claims = jwt(data.access_token);\n LocalStorageUtility.setData('claims', claims);\n }\n }\n removeToken() {\n LocalStorageUtility.clearKeysContaining('oidc-user.');\n }\n removeClaims() {\n LocalStorageUtility.clearKeys(['claims']);\n }\n toggleImpersonation(oidcUserData) {\n if (oidcUserData) {\n const { access_token, refresh_token } = oidcUserData;\n const key = LocalStorageUtility.getKeyContaining('oidc-user.');\n const data = LocalStorageUtility.getData(key);\n data.access_token = access_token;\n data.refresh_token = refresh_token;\n LocalStorageUtility.setData(key, data);\n LocalStorageUtility.setData('claims', jwt(access_token));\n }\n }\n isImpersonatingUser() {\n const claims = this.getPermissionsClaims();\n return claims.act?.sub !== undefined;\n }\n}\nexport default new JwtService();\n","import configurationService from './config.service';\nimport ApiService from './api.service';\nimport { mapLayers } from '@configs/mapLayers';\nclass MapService {\n apiService;\n constructor() {\n this.apiService = new ApiService(configurationService.ControlCenterApiUrl);\n }\n getAccountID = async () => {\n try {\n const response = await this.apiService.get('/api/v1/account');\n const { accountId = null } = response;\n return accountId;\n }\n catch (error) {\n console.error('Error fetching account ID:', error);\n return null;\n }\n };\n getAccountMapDisplay = async () => {\n //Do not wrap this internally in a try-catch exception\n //The back-end will 404 for new users, handle this where this method is called instead.\n const accountId = await this.getAccountID();\n if (accountId === null) {\n throw new Error('Account ID is not available');\n }\n const response = await this.apiService.get(`/api/v1/account/${accountId}/Preferences/Maps`);\n return response ?? this.getDefaultMapViewDetails();\n };\n getDefaultMapViewDetails() {\n return {\n accountId: 0,\n isVisible: true,\n latitude: 0,\n longitude: 0,\n distanceMeasurement: 'kilometers',\n tileSet: mapLayers.LIGHT_MAP,\n zoom: 1.5,\n };\n }\n}\nexport default new MapService();\n","import cookieKeys from 'common/constants/cookieKeys';\nimport configurationService from './config.service';\nimport CookieService from './cookie.service';\nconst cookieService = new CookieService();\nconst namespaceService = {\n getNamespace: () => {\n let urlPattern;\n const { UrlPattern: configUrlPattern } = configurationService;\n if (!configUrlPattern) {\n return;\n }\n const host = window.location.hostname.toLowerCase();\n const customerPlaceholder = '{customer}';\n const wwwPrefix = 'www.';\n if (!configUrlPattern.startsWith(wwwPrefix)) {\n urlPattern = `${wwwPrefix}${configUrlPattern}`;\n }\n const urlPatternPieces = new Set(urlPattern.split('.').filter((x) => x !== customerPlaceholder));\n const actualUrlPieces = host.split('.');\n const customerNamespace = actualUrlPieces.find((x) => !urlPatternPieces.has(x));\n return customerNamespace;\n },\n //! ON-30299: In order to support customers like WTP who want their own CNAME record to work with MFE and Account\n //! Portal we have to update the way that we handle identity server redirects. To that end, we will store the user's\n //! origin in a cookie and use that to redirect the user once we exchange the identity access code for a JWT.\n setOriginCookie: () => {\n const domain = namespaceService.getDomainWithoutNamespace();\n const existingCookie = cookieService.getCookieValue(cookieKeys.originURL);\n if (!existingCookie) {\n const expireTime = new Date();\n expireTime.setHours(expireTime.getHours() + 1);\n cookieService.setCookie(cookieKeys.originURL, window.location.href, {\n domain,\n expires: expireTime,\n ...(window.location.protocol === 'https:' && { secure: 'secure' }),\n });\n }\n },\n getProtocol: () => {\n return window.location.protocol;\n },\n getOriginWithNamespace: () => {\n return window.location.origin.toLowerCase();\n },\n getOriginWithoutNamespace: () => {\n const origin = window.location.origin.toLowerCase();\n const namespace = namespaceService.getNamespace();\n return namespace ? origin.replace(`${namespace}.`, '') : origin;\n },\n getClientOrigin: (href) => {\n if (href) {\n return new URL(href).origin + '/';\n }\n },\n getDomainWithoutNamespace: () => {\n const hostname = window.location.hostname.toLowerCase();\n const namespace = namespaceService.getNamespace();\n return namespace ? hostname.replace(`${namespace}.`, '') : hostname;\n },\n getExternalDomain: () => {\n const { ExternalDomainName } = configurationService;\n return ExternalDomainName || namespaceService.getDomainWithoutNamespace();\n },\n getCombinedNamespaceURL: (namespace) => {\n const protocol = `${window.location.protocol}//`;\n return `${protocol}${namespace}.${window.location.href.slice(protocol.length)}`;\n },\n};\nexport default namespaceService;\n","import Oidc from 'oidc-client';\nimport namespaceService from './namespace.service';\nimport configurationService from './config.service';\nimport configService from './config.service';\nlet oidcManager = null;\nconst { IdentityBaseClientId, Authority } = configurationService;\nconst oidcManagerService = {\n GetManager(resetOrigin = false, clientErrorCode = undefined) {\n function getClientOrigin(resetOrigin, clientErrorCode) {\n const clientOrigin = resetOrigin\n ? // E.g. https://orgname.onsolve.com\n window.location.protocol + '//' + window.location.host\n : window.location.href;\n const clientOriginUrl = new URL(clientOrigin);\n const clientErrorQueryParam = 'client_error';\n // Add `client_error` param if specified, otherwise - make sure it is deleted from the clientOriginUrl.\n // It could contain `noPermissionToLogin`/`signinLinkHasExpired` error code if either error happened while logging in.\n if (clientErrorCode) {\n clientOriginUrl.searchParams.set(clientErrorQueryParam, clientErrorCode);\n }\n else {\n // Clean up `client_error` parameter if it exists.\n clientOriginUrl.searchParams.delete(clientErrorQueryParam);\n }\n // OF-1848: remove \"clearAuth\" query param from the origin, since at this point the auth data is removed from localStorage\n // and this flag is no longer required in subsequent sign in process\n clientOriginUrl.searchParams.delete('clearAuth');\n return clientOriginUrl.toString();\n }\n if (!oidcManager || resetOrigin) {\n const namespace = namespaceService.getNamespace();\n //* Using onsolve environment for identity redirects\n let origin = `${namespaceService.getProtocol()}//${configService.ExternalDomainName}`;\n if (configService.ClusterSpecificAddress) {\n origin = `${namespaceService.getProtocol()}//${configService.ClusterSpecificAddress}`;\n }\n //! ON-30299: In order to support customers like WTP who want their own CNAME record to work with MFE and Account\n //! Portal we have to update the way that we handle identity server redirects. To that end, we will store the user's\n //! origin in a cookie and use that to redirect the user once we exchange the identity access code for a JWT.\n namespaceService.setOriginCookie();\n const config = {\n storePrefix: 'oidc-user.',\n namespace: namespace,\n authority: Authority,\n clientId: IdentityBaseClientId,\n clientOrigin: getClientOrigin(resetOrigin, clientErrorCode),\n scope: 'openid profile offline_access onsolve-api translations-api.full',\n responseType: 'code',\n responseMode: 'query',\n redirectUri: `${origin}/callback`,\n postLogoutRedirectUri: `${origin}/`,\n };\n oidcManager = this.createManager(config);\n }\n return oidcManager;\n },\n createManager(configSettings) {\n const manager = new Oidc.UserManager({\n stateStore: new Oidc.WebStorageStateStore({\n store: window.sessionStorage,\n prefix: configSettings.storePrefix,\n }),\n userStore: new Oidc.WebStorageStateStore({\n store: window.localStorage,\n prefix: configSettings.storePrefix,\n }),\n authority: configSettings.authority,\n response_mode: configSettings.responseMode,\n response_type: configSettings.responseType,\n client_id: configSettings.clientId,\n scope: configSettings.scope,\n redirect_uri: configSettings.redirectUri,\n post_logout_redirect_uri: configSettings.postLogoutRedirectUri,\n extraQueryParams: {\n namespace: configSettings.namespace,\n origin: configSettings.clientOrigin,\n },\n loadUserInfo: true,\n automaticSilentRenew: false,\n silentRequestTimeout: 90000,\n monitorSession: false,\n });\n return manager;\n },\n};\nexport default oidcManagerService;\n","import ApiService from './api.service';\nexport default class OrganizationService extends ApiService {\n constructor(ServiceUrl) {\n super(ServiceUrl);\n }\n GetBrandByNamespace = async (namespace) => {\n try {\n const response = await this.get(`api/v2/Branding/${namespace}`);\n return response;\n }\n catch (error) {\n console.error(error);\n return {};\n }\n };\n GetCustomNavigation = async () => {\n try {\n const response = await this.get('api/v1/organization/custom/navigation');\n return response;\n }\n catch (error) {\n console.error(error);\n return {};\n }\n };\n GetUserDetailsByAssetId = async (organizationId, assetId) => {\n try {\n const response = await this.get(`api/v1/riskintelligence/entities/v1/organizations/${organizationId}/users/${assetId}`);\n return response;\n }\n catch (error) {\n console.error(error);\n return {};\n }\n };\n}\n","import { isEmpty, reduce } from 'lodash';\nimport * as rules from './accessRules';\nimport JwtService from './jwt.service';\nexport default class PermissionService {\n _permissions = {};\n constructor() { }\n get permissions() {\n if (!Object.keys(this._permissions).length) {\n const claims = JwtService.getPermissionsClaims();\n this._permissions = this.generatePermissions(claims, rules.default);\n }\n return this._permissions;\n }\n generatePermissions(claims, defaultRules) {\n return reduce(defaultRules, (acc, fn, name) => {\n acc[name] = function () {\n if (isEmpty(claims)) {\n return false;\n }\n const args = Array.from(arguments);\n return fn(claims, ...args);\n };\n return acc;\n }, {});\n }\n}\n","import ApiService from './api.service';\nexport default class ResponsePortalService extends ApiService {\n constructor(ServiceUrl) {\n super(ServiceUrl);\n }\n GetAlertResponses = async (alertId, deviceId) => {\n try {\n const response = await this.get(`api/v2/alert-responses?AlertId=${alertId}&DeviceId=${deviceId}`);\n return response;\n }\n catch (error) {\n console.error(error);\n throw error;\n }\n };\n PostAlertResponses = async (data) => {\n try {\n const response = await this.post('api/v1/alert-responses', data);\n return response;\n }\n catch (error) {\n console.error(error);\n throw error;\n }\n };\n}\n","export const isBeta = () => localStorage.getItem('environment').toLowerCase() === 'beta';\nexport const isProduction = () => localStorage.getItem('environment').toLowerCase() === 'production';\nexport const isIntegrations = () => localStorage.getItem('environment').toLowerCase() === 'internal';\nexport const isStaging = () => localStorage.getItem('environment').toLowerCase() === 'staging';\nexport const isQA1 = () => localStorage.getItem('environment').toLowerCase() === 'qa1';\nexport const isDevelopment = () => !(isBeta() || isProduction() || isIntegrations() || isStaging());\n","export const updateDocumentMetadata = (title, faviconPath) => {\n document.title = title;\n // The \"NOSONAR\" comment is used to ignore the SonarQube warning:\n // \"This assertion is unnecessary since it does not change the type of the expression.\"\n let link = document.querySelector(\"link[rel*='icon']\"); //NOSONAR\n if (!link) {\n link = document.createElement('link');\n link.type = 'image/x-icon';\n link.rel = 'shortcut icon';\n document.getElementsByTagName('head')[0].appendChild(link);\n }\n link.href = faviconPath;\n};\n","var map = {\n\t\"./ar-AE/messages\": [\n\t\t11654,\n\t\t\"src_locales_ar-AE_messages_ts\"\n\t],\n\t\"./cs-CZ/messages\": [\n\t\t1946,\n\t\t\"src_locales_cs-CZ_messages_ts\"\n\t],\n\t\"./da-DK/messages\": [\n\t\t49402,\n\t\t\"src_locales_da-DK_messages_ts\"\n\t],\n\t\"./de-DE/messages\": [\n\t\t35367,\n\t\t\"src_locales_de-DE_messages_ts\"\n\t],\n\t\"./el-GR/messages\": [\n\t\t63549,\n\t\t\"src_locales_el-GR_messages_ts\"\n\t],\n\t\"./en-GB/messages\": [\n\t\t82051,\n\t\t\"src_locales_en-GB_messages_ts\"\n\t],\n\t\"./en-US/messages\": [\n\t\t46949\n\t],\n\t\"./es-ES/messages\": [\n\t\t20426,\n\t\t\"src_locales_es-ES_messages_ts\"\n\t],\n\t\"./es-MX/messages\": [\n\t\t21065,\n\t\t\"src_locales_es-MX_messages_ts\"\n\t],\n\t\"./fi-FI/messages\": [\n\t\t7431,\n\t\t\"src_locales_fi-FI_messages_ts\"\n\t],\n\t\"./fr-CA/messages\": [\n\t\t35208,\n\t\t\"src_locales_fr-CA_messages_ts\"\n\t],\n\t\"./fr-FR/messages\": [\n\t\t75113,\n\t\t\"src_locales_fr-FR_messages_ts\"\n\t],\n\t\"./hi-IN/messages\": [\n\t\t47035,\n\t\t\"src_locales_hi-IN_messages_ts\"\n\t],\n\t\"./hu-HU/messages\": [\n\t\t53877,\n\t\t\"src_locales_hu-HU_messages_ts\"\n\t],\n\t\"./it-IT/messages\": [\n\t\t82994,\n\t\t\"src_locales_it-IT_messages_ts\"\n\t],\n\t\"./ja-JP/messages\": [\n\t\t72807,\n\t\t\"src_locales_ja-JP_messages_ts\"\n\t],\n\t\"./ko-KR/messages\": [\n\t\t30677,\n\t\t\"src_locales_ko-KR_messages_ts\"\n\t],\n\t\"./nl-NL/messages\": [\n\t\t47884,\n\t\t\"src_locales_nl-NL_messages_ts\"\n\t],\n\t\"./nn-NO/messages\": [\n\t\t74663,\n\t\t\"src_locales_nn-NO_messages_ts\"\n\t],\n\t\"./pl-PL/messages\": [\n\t\t81078,\n\t\t\"src_locales_pl-PL_messages_ts\"\n\t],\n\t\"./pt-BR/messages\": [\n\t\t19267,\n\t\t\"src_locales_pt-BR_messages_ts\"\n\t],\n\t\"./pt-PT/messages\": [\n\t\t98340,\n\t\t\"src_locales_pt-PT_messages_ts\"\n\t],\n\t\"./ro-RO/messages\": [\n\t\t65518,\n\t\t\"src_locales_ro-RO_messages_ts\"\n\t],\n\t\"./ru-RU/messages\": [\n\t\t98658,\n\t\t\"src_locales_ru-RU_messages_ts\"\n\t],\n\t\"./sv-SE/messages\": [\n\t\t11245,\n\t\t\"src_locales_sv-SE_messages_ts\"\n\t],\n\t\"./th-TH/messages\": [\n\t\t98970,\n\t\t\"src_locales_th-TH_messages_ts\"\n\t],\n\t\"./tr-TR/messages\": [\n\t\t44683,\n\t\t\"src_locales_tr-TR_messages_ts\"\n\t],\n\t\"./zh-CN/messages\": [\n\t\t89363,\n\t\t\"src_locales_zh-CN_messages_ts\"\n\t],\n\t\"./zh-TW/messages\": [\n\t\t48604,\n\t\t\"src_locales_zh-TW_messages_ts\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 92462;\nmodule.exports = webpackAsyncContext;"],"names":["getJSFiles","host","manifestValues","mainValue","scriptId","name","filter","value","endsWith","reduce","sum","push","document","getElementById","undefined","Promise","resolve","path","script","createElement","id","ariaLabel","onload","src","body","after","getCSSFiles","linkId","link","className","rel","type","href","head","appendChild","getManifestFile","RiskIntelligence","RISourceFiles","CriticalComms","CriticalCommsSourceFiles","ControlCenter","ControlCenterSourceFiles","AssetUI","AssetUISourceFiles","HistoricalReporting","HistoricalReportingSourceFiles","MicroFrontend","props","window","webpackChunkapp","this","history","mapPreferences","setMFEi18n","locale","handleImpersonatorLogIn","environment","LocalStorageUtility","isImageExternal","imageSrc","startsWith","includes","URL","configurationService","renderMicroFrontend","containerId","translationCallback","signOutCallback","authService","impersonatorCallback","MutationObserver","images","getElementsByTagName","length","Array","from","forEach","image","pathname","observe","childList","subtree","noCacheHeaders","Headers","append","fetch","cache","headers","then","response","json","manifest","manifestKeys","Object","keys","originalManifestValues","values","map","toLowerCase","key","mainKey","promises","allSettled","querySelectorAll","element","remove","LoadingOverlay","description","overlay","React","propTypes","PropTypes","loadCounter","appNames","IncidentManagement","assetUIRoutes","controlCenterRoutes","cookieKeys","loggedInNamespace","originURL","defaultLanguage","lcId","direction","translatedName","isoCode","cultureRegionCode","cultureDisplayName","cultureLanguageCode","identityServerErrorCodes","noPermissionToLogin","signinLinkHasExpired","MFERoutesEnum","criticalComms","riskIntelligence","controlCenter","createGroup","createNotification","useGeneral","useEmergency","createUser","deleteGroup","deleteNotification","deleteUser","editAdHoc","editAni","editCustomVerbiage","editIncident","editNotification","editOrgNodes","editTopic","editUser","initiateNotification","setSMimeKey","useTopic","viewAudit","viewDivision","viewGroup","viewNotification","viewReport","viewUser","customReports","editMyProfile","editRoles","exportUser","grantLogin","importUser","manageApiKeys","myReport","notificationGroups","notificationInbox","orgAdmin","protectedData","summarySend","viewMyProfile","viewOrphanedReports","webInitiation","viewSOS","viewLookout","viewReporting","assignSmsProfile","editSMSList","createSchedule","deleteSchedule","editSchedule","viewSchedule","viewLockboxShared","editLockboxShared","createLockboxShared","deleteLockboxShared","viewLockboxSecured","viewWeatherAndEvents","FBA_assetDatastore","FBA_RTBF","FBA_recipientSchedule","FBA_manageDeviceTypes","FBA_customizeDivisions","FBA_privateAddressTypes","FBA_selfRegPortal","FBA_announcementsTool","FBA_announcementsInbox","FBA_internalConference","FBA_followUps","FBA_opt_in","FBA_cascadeNotifications","FBA_displayCountryFlags","FBA_emailAttachment","FBA_smsSegmentCount","FBA_integrationFacebook","FBA_integrationTwitter","FBA_integrationMsTeams","FBA_integrations","FBA_integrationSlack","FBA_smsProfiles","FBA_customtts","FBA_duplicateFilters","FBA_divisions","FBA_subdivisions","FBA_customReports","FBA_allowBlackListedSms","FBA_resetSmsFlagAllowed","FBA_scenarioLibrary","FBA_nextGenSendingEngine","weatherAndEventsEurope","weatherAndEventsUSA","weatherAndEventsAustralia","weatherAndEventsJapan","weatherAndEventsCanada","weatherAndEventsGlobal","FBA_mfa","FBA_enableKatmaiReads","FBA_lockboxShared","FBA_OPIncidentManagement","FBA_doNotContact","FBA_riskintelligenceFF","FBA_RIHistoricalReporting","FBA_linkedAlerts","FBA_biReportingBasicCc","FBA_biReportingBasicTrm","FBA_biReportingBasicRi","FBA_mapViewOff","checkIn","editLookout","editSOS","viewTwitter","editTwitter","useTwitter","configureTwitter","manage2FASettings","createDoNotContact","viewDoNotContact","editDoNotContact","deleteDoNotContact","FBA_ttKeyword","FBA_wtpCustomer","FBA_allowObservability","deletePermission","schedulesAdd","modify","assign","godMode","rootDivision","deleteReport","editGroup","editMapLayers","editPronunciation","privateAccess","viewIncident","viewMapLayers","adhocReports","callBridge","cascade","deleteOrphanedReports","dtmfInitiation","dtmfLogin","editMyLogin","emailInitiation","gis","gisConfig","locationManager","locationOverride","mobileInitiation","searchHeader","setPriority","substituteUser","validateRecipient","viewBillAmount","viewBilling","viewDashboard","webLogin","topicSubscription","topicSuppression","manageDeviceTypes","roleTemplates","customizeDivisions","editLockboxSecured","createLockboxSecured","deleteLockboxSecured","createWeatherAndEvents","deleteWeatherAndEvents","editWeatherAndEvents","FBA_controlcenter","FBA_roleTemplates","grantLoginAccess","quickLaunch","sendSOS","sendLookout","editEvent","viewEvent","createEvent","deleteEvent","createIntegration","editIntegration","viewIntegration","deleteIntegration","PermissionService","permissions","canAccessAssetUI","canViewHistoricalReporting","appParams","appName","paths","condition","getCurrentApp","currentLocation","location","find","some","isMobile","Android","navigator","userAgent","match","BlackBerry","iOS","Opera","Windows","any","JSON","parse","localStorage","getItem","setItem","stringify","prefix","hasOwnProperty","clear","isArray","item","removeItem","routeCheck","url","route","appURL","relativePath","updatedPush","optionalProps","updateHistoryWithFilterId","originalPush","state","currentFilterId","URLSearchParams","search","get","newURLObject","newSearchParams","searchParams","newFilterId","selectedFilter","set","toString","hash","call","origin","Utility","I18nProvider","isAppLoading","children","useState","language","setLanguage","I18nService","intl","setIntl","loading","setLoading","i18n","useLingui","loadLanguage","callback","translations","data","config","messages","load","loadLocaleData","plurals","plural","slice","activate","dir","console","error","useEffect","localeService","updateLanguage","useCallback","code","i18nSetCookie","updateLanguageWithData","callbackResult","useMemo","RawIntlProvider","I18nBlurLoaderProvider","defaultProps","I18nContext","createContext","_","useI18n","context","useContext","Error","displayName","routes","labels","canAllowPrivateAddressTypes","canViewLabels","canViewDataHierarchy","canViewUsers","canViewUsersNew","canViewRoles","canEditRoles","canViewManageDivisionSMIMEKeys","canViewMoveDivisions","canViewCustomVerbiage","canViewGeneralOptions","canViewDivisionANI","canViewCallThrottling","canViewPriority","canViewRetrySettings","canViewEmail","canViewSMS","canViewVoice","canViewProtectedDataFields","canViewDataSubjectRights","canViewAlertRetrieval","canViewAllowedSMS","canViewDuplicateFilters","canViewAssignSmsProfiles","canViewManageBlockedSMS","canViewEditTSSVoices","canViewSuppressedAlert","canViewAlertOptions","canViewLookOut","canViewSOS","canEditLookOut","canEditSOS","notifications","canEditNotification","canViewNotification","canCreateNotification","canUseGeneral","canUseEmergency","canManageScenarioLibrary","canDeleteNotification","params","checkResourceAccessByDivisions","canInitiateNotification","canViewAlertInbox","canViewAlerts","canViewScheduledAlerts","canViewBulkAlerts","canViewScenarioLibrary","canCreateContact","canDeleteContact","canGrantLoginAccess","canImportContacts","canExportContacts","canManageDoNotContact","permissionNames","getFeature","canDeleteGroup","schedules","groups","selfRegistration","contacts","doNotContact","canViewGroups","canViewContacts","canViewSchedules","canCreateGroups","canEditContacts","canCreateSchedule","canAssignSchedule","canDeleteSchedule","canEditSchedule","canViewSchedule","features","canManageSelfRegPortals","canViewAudit","canUseDatadogRUM","canDisplayCountryFlags","canManageRecipientSchedule","canManageInternalConferenceResponse","canManageTwitter","canManageFollowUps","canManageSmsOptIn","canManageCascadeNotifications","canManageEmailAttachment","canManageSMSSegments","canViewMFA","canViewAdvancedContactsFilter","canViewAdvancedGroupFilter","canManageIntegrations","canManageFacebook","canManageSlack","canManageMSTeams","canManageLockBox","canManageRiskIntelligence","canCreateDoNotContact","canViewDoNotContact","canEditDoNotContact","canDeleteDoNotContact","usesNextGenSendingEngine","canViewAssetDataStore","canViewMapOff","canOrganizationAdmin","administration","userInterface","canWebInitiationNotification","canSendFromShowAll","canViewIncidentManagement","lookOut","canViewLockBox","canCreateSharedLockBoxFile","canDeleteSharedLockBoxFile","canEditSharedLockBoxFile","canEditIncident","globalPermissions","contactManagement","accountSettings","alertCenter","integrations","incidentManagement","reporting","solutions","profile","settings","supportAndTraining","dashboard","socialMedia","dataDog","canViewAPIKeys","canViewAdHocReports","canViewAlertHistory","canViewCustomReports","canViewReporting","canViewUsage","canViewAuditTrail","canViewBIReporting","canViewWTPCustomer","canViewTwitter","canEditTwitter","canUseTwitter","canConfigureTwitter","topics","canViewTopics","canViewWeatherAndEvents","x","canManageTtKeyword","canEditTopic","canViewAnnouncementsTool","canViewAnnouncements","canViewMyProfile","canViewCheckIn","canEditMyProfile","canManageMFASettings","permissionName","divisions","resourceDivisions","resourceDivisionsArray","uuid","definedPermissions","apiWhiteList","regexWhiteList","RegExp","join","responseInterceptors","handleResponseInterception","handleResponseErrorInterception","axios","getResponseInterceptors","responseBodyWithHeaders","headersToInclude","responseSelector","res","createHttpClient","baseURL","paramsSerializerConfig","arrayFormat","client","interceptors","request","use","handleRequestInterception","defaults","paramsSerializer","encode","ApiService","options","requestsArray","resource","requestHeaders","responseHeaders","responseType","instance","post","put","patch","delete","token","jwtService","common","test","Authorization","status","historyService","reject","errorHandling","logError","info","apiService","Message","componentStack","log","createBrowserHistory","forwardTo","defaultConfig","createIntl","createIntlCache","create","LocaleService","CookieService","userLocale","l","localesResult","getLocales","locales","defaultLang","getBrowserCultureLang","cookieService","getCookieValue","getTranslations","getLocaleByCode","replace","browserCultureLang","languages","browserLanguage","userLanguage","protocol","externalDomainName","externalHost","BuildInformation","BUILD_VERSION_KEY","buildVersion","VERSION","currentBuildVersion","mfeHistory","useHistory","newHistory","setMapPreferences","fetchMapPreferences","MapService","preferences","isVisible","defaultPreferences","assetui","historicalreporting","criticalcomms","riskintelligence","App","useAccountContext","loggedInUser","firstName","lastName","showBetaToastr","setShowBetaToastr","betaToastrId","useRef","namespace","namespaceService","useLayoutEffect","applicationLoadHandler","renderBetaToastr","isWTPCustomer","title","faviconPath","travelAssistFaviconPath","onsolveFaviconPath","updateDocumentMetadata","useRIAccountContext","riAccount","isLoadingRIAccount","riConfig","isImpersonatingUser","userToImpersonateSub","userToImpersonateIdIsEmpty","AuthService","handleCloseImpersonator","reload","isBeta","isMobileAppView","ToastrProvider","BetaToastr","onClose","handleCloseBetaToastr","isAlwaysVisible","position","DomUtils","variant","current","authorizeCallback","queryString","ui_lang","redirection","is401","message","mir3Logout","clientErrorCode","ResponsePortal","originUrl","isAuthenticated","isCurrentAuthDataToBeCleared","classList","add","newBrandingLogo","setAttribute","getAttribute","rootClasses","isDevelopment","SessionTimeoutModal","BrowserRouter","NavBar","riskIntelligenceAccount","riskIntelligenceConfigurations","ImpersonatorBanner","ToastrProviderComponent","Switch","Route","render","Redirect","to","permissionService","controlCenterNav","icon","HomeIcon","selected","canAccess","GlobusIcon","secondary","InsightsIcon","AlertIcon","opened","featureService","FormatListBulletIcon","ContactIcon","CalendarOutlinedIcon","ReportingIcon","RssIcon","SolutionsIcon","SettingsIcon","SupportAndTrainingIcon","isMenuOrSubMenuSelected","s","isRiskIntelligencePath","defaultMenuItems","organizationService","OrganizationService","configService","useLocation","brand","customNavigation","setCustomNavigation","handleIsSelected","isRIContactUser","setIsRIContactUser","menuItems","setMenuItems","expanded","setExpanded","flatMap","hideFromRIBrand","isRIOnlyBrand","secondaryItem","riskIntelligencePermissionCheck","travel","account_id","externalRoute","displayText","BoxArrowUpRightIcon","Boolean","getNavigation","GetCustomNavigation","organizationUUID","getUserDetails","orgUuid","userAssetId","GetUserDetailsByAssetId","userDetails","isAdmin","isOperator","toggleMenu","toggleSecondary","toggleNavBar","newExpanded","styles","onClick","HamburgerIcon","target","Link","ArrowRightIcon","inner","getClassName","rootClass","getChildClass","responseServiceClient","ResponsePortalService","base64Data","decodedUrlParam","atob","queryParams1","alertId","deviceId","responseIndex","setResponseIndex","setResponse","isLoading","setIsLoading","followUpAnswers","setFollowUpAnswers","currentFollowUps","setCurrentFollowUps","showSuccessToast","setShowSuccessToast","showErrorToast","setShowErrorToast","showQuestion","setShowQuestion","isDone","setIsDone","errorMessage","setErrorMessage","showFinalResponse","setShowFinalResponse","GetAlertResponse","GetAlertResponses","addSerialNumber","confirmResponseRequired","Number","responseOptions","followUps","followUp","saveAnswer","index","followup","followupIndex","serialNumber","isSaveBtnDisabled","payload","deviceType","PostAlertResponses","Page","SuccessToast","ErrorToast","ResponseSelection","confirmResponse","responseSelected","Question","saveResponse","_followUpAnswers","obj","currentIndex","findIndex","nextFollowUp","lastIndex","ShowResponses","handleResponseChange","width","height","viewBox","fill","xmlns","d","maskUnits","y","mask","Followup","currentFollowUp","handleResponseOptionChange","handleTextAreaChange","selectedValue","setSelectedValue","textareaValue","setTextareaValue","choice","Typography","verbiage","text","RadioGroup","onChange","selectionValue","Radio","label","TextArea","rows","textAreaValue","placeholder","Footer","Date","getFullYear","role","Header","modifiers","blue","mainContent","isSaveDisabled","setIsSaveDisabled","LoadingSpinner","logoType","size","StickyButtonBar","rightContent","Button","color","event","disabled","selectedResponse","setSelectedResponse","selectedResponseOption","setSelectedResponseOption","selectedResponseOptionFollowUp","setSelectedResponseOptionFollowUp","m","question","allowResponseChange","leftContent","clipPath","fillRule","clipRule","transform","BetaToastrContent","GroupsIcon","version","stroke","strokeWidth","cx","cy","rx","ry","EyeIcon","NavigationIcon","filterUnits","colorInterpolationFilters","floodOpacity","result","in","dx","dy","mode","in2","automaticLogoutTimer","sessionPopupTimer","activityEvents","defaultLogoutTimeout","defaultLogoutOffset","localStorageKey","JwtService","useSessionContext","identityContext","attributes","sessionTimeout","storedTimeout","setStoredTimeout","isSessionModalOpen","setModalOpen","logoutTimeout","sessionTimeoutMs","signOut","clearAllTimers","clearTimeout","startAllTimers","setTimeout","getTime","resetTimers","timeoutModalMessage","updateStoredTimeout","timeout","dispatchEvent","Event","handleStorageChange","addEventListener","evt","storedValue","removeEventListener","AlertModal","isOpen","actions","TravelIcon","SvgIcon","r","SessionDefaults","AccountDefaults","accountId","organizationId","addresses","csrfToken","organizationName","username","userUuid","jobTitle","division","handleSignOut","mapLayers","LIGHT_MAP","STREET_MAP","SATELLITE_MAP","AccountContext","AccountProvider","tahoeUrl","accountService","AccountService","account","setAccount","setBrand","getAccount","getBrand","GetBrandByNamespace","Provider","RIAccountContext","RIAccountProvider","accountAuthURL","setRiAccount","setRiConfig","setIsLoadingRIAccount","getRIAuth","localStorageUtility","getRIConfiguration","SessionContext","SessionProvider","setIdentityContext","getIdentityContext","identityService","en","providers","forceRenderOnLocaleChange","ReactDOM","initializeDatadogRum","DD_RUM","init","clientToken","applicationId","site","service","env","sessionSampleRate","sessionReplaySampleRate","trackUserInteractions","trackResources","trackLongTasks","defaultPrivacyLevel","beforeSend","currentApp","setUser","setGlobalContextProperty","setUserDetailsInDatadog","dataDogEnabled","isProduction","async","onerror","cookieOptions","hostname","domain","setCookie","signIn","manager","oidcManagerService","getUser","user","expired","extraParams","client_error","clearStaleState","signinRedirect","extraQueryParams","deleteCookie","catch","errorHandlingService","signoutRedirect","updateState","signinRedirectCallback","updateStateWithRedictParameter","locationString","removeAuthData","toggleImpersonation","subjectId","IdentityBaseClientId","FormData","oidcUserData","access_token","MIR3ApiBaseUrl","FranconiaApiBaseUrl","OrganizationServiceBaseUrl","CascadesApiBaseUrl","SelfRegApiBaseUrl","ReportingApiBaseUrl","WeatherAuditBaseUrl","WeatherServiceBaseUrl","CustomFieldsApiBaseUrl","AnnouncementsApiBaseUrl","IncidentsApiBaseUrl","MobileIncidentsApiBaseUrl","SchedulesApiBaseUrl","UrlPattern","FileStorageServiceApiBaseUrl","FeedsServiceApiBaseUrl","Authority","ExternalDomainName","ContactFileParserApiBaseUrl","RightToBeForgottenBaseUrl","LockboxApiBaseUrl","UserDocumentsUrl","PagerServiceUrl","FeatureFlags","_FeatureFlags","IdentityServerUrl","ControlCenterApiUrl","RiskIntelligenceApiUrl","TahoeUrl","OnsolvePlatformUrl","ClusterSpecificAddress","ResponseServiceUrl","freeze","_targetConfig","createConfig","cookie","getCookie","decodeURIComponent","expires","toUTCString","optionKey","encodeURIComponent","IdentityService","idctxt","decodedPayload","getPayload","org","org_uuid","user_uuid","userassetid","sub","exp","expires_at","date","setUTCSeconds","valueOf","claims","jwt","refresh_token","getPermissionsClaims","act","getAccountID","getDefaultMapViewDetails","latitude","longitude","distanceMeasurement","tileSet","zoom","getNamespace","urlPattern","configUrlPattern","wwwPrefix","urlPatternPieces","Set","split","has","setOriginCookie","getDomainWithoutNamespace","expireTime","setHours","getHours","secure","getProtocol","getOriginWithNamespace","getOriginWithoutNamespace","getClientOrigin","getExternalDomain","getCombinedNamespaceURL","oidcManager","GetManager","resetOrigin","clientOrigin","clientOriginUrl","clientErrorQueryParam","storePrefix","authority","clientId","scope","responseMode","redirectUri","postLogoutRedirectUri","createManager","configSettings","Oidc","stateStore","store","sessionStorage","userStore","response_mode","response_type","client_id","redirect_uri","post_logout_redirect_uri","loadUserInfo","automaticSilentRenew","silentRequestTimeout","monitorSession","ServiceUrl","assetId","_permissions","generatePermissions","rules","defaultRules","acc","fn","isEmpty","args","arguments","isIntegrations","isStaging","isQA1","querySelector","webpackAsyncContext","req","__webpack_require__","o","e","ids","all","module","exports"],"sourceRoot":""}