openc3-tool-base 5.8.0 → 5.9.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1 +1 @@
1
- {"version":3,"file":"openc3-tool-base.js","mappings":"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","sources":["webpack://tool-base/webpack/runtime/load script","webpack://tool-base/../node_modules/axios/index.js","webpack://tool-base/../node_modules/axios/lib/adapters/xhr.js","webpack://tool-base/../node_modules/axios/lib/axios.js","webpack://tool-base/../node_modules/axios/lib/cancel/CancelToken.js","webpack://tool-base/../node_modules/axios/lib/cancel/CanceledError.js","webpack://tool-base/../node_modules/axios/lib/cancel/isCancel.js","webpack://tool-base/../node_modules/axios/lib/core/Axios.js","webpack://tool-base/../node_modules/axios/lib/core/AxiosError.js","webpack://tool-base/../node_modules/axios/lib/core/InterceptorManager.js","webpack://tool-base/../node_modules/axios/lib/core/buildFullPath.js","webpack://tool-base/../node_modules/axios/lib/core/dispatchRequest.js","webpack://tool-base/../node_modules/axios/lib/core/mergeConfig.js","webpack://tool-base/../node_modules/axios/lib/core/settle.js","webpack://tool-base/../node_modules/axios/lib/core/transformData.js","webpack://tool-base/../node_modules/axios/lib/defaults/index.js","webpack://tool-base/../node_modules/axios/lib/defaults/transitional.js","webpack://tool-base/../node_modules/axios/lib/env/data.js","webpack://tool-base/../node_modules/axios/lib/helpers/bind.js","webpack://tool-base/../node_modules/axios/lib/helpers/buildURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/combineURLs.js","webpack://tool-base/../node_modules/axios/lib/helpers/cookies.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAxiosError.js","webpack://tool-base/../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://tool-base/../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://tool-base/../node_modules/axios/lib/helpers/null.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseHeaders.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseProtocol.js","webpack://tool-base/../node_modules/axios/lib/helpers/spread.js","webpack://tool-base/../node_modules/axios/lib/helpers/toFormData.js","webpack://tool-base/../node_modules/axios/lib/helpers/validator.js","webpack://tool-base/../node_modules/axios/lib/utils.js","webpack://tool-base/../packages/openc3-tool-common/src/services/api.js","webpack://tool-base/../packages/openc3-tool-common/src/services/axios.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?5118","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?e84a","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?63f3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?5107","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?6ed4","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?cb88","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?c20c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?3ed1","webpack://tool-base/./node_modules/css-loader/dist/runtime/api.js","webpack://tool-base/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/public-path.js","webpack://tool-base/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss?743b","webpack://tool-base/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://tool-base/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://tool-base/external system \"single-spa\"","webpack://tool-base/external system \"vue\"","webpack://tool-base/external system \"vue-router\"","webpack://tool-base/external system \"vuetify\"","webpack://tool-base/external system \"vuex\"","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/webpack/bootstrap","webpack://tool-base/webpack/runtime/__system_context__","webpack://tool-base/webpack/runtime/compat get default export","webpack://tool-base/webpack/runtime/define property getters","webpack://tool-base/webpack/runtime/ensure chunk","webpack://tool-base/webpack/runtime/get javascript chunk filename","webpack://tool-base/webpack/runtime/hasOwnProperty shorthand","webpack://tool-base/webpack/runtime/make namespace object","webpack://tool-base/webpack/runtime/publicPath","webpack://tool-base/webpack/runtime/jsonp chunk loading","webpack://tool-base/webpack/runtime/nonce","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/1.js","webpack://tool-base/./src/App.vue?9dca","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?f377","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?53d5","webpack://tool-base/../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://tool-base/../node_modules/date-fns/esm/toDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/index.js","webpack://tool-base/../node_modules/date-fns/esm/format/index.js","webpack://tool-base/../node_modules/date-fns/esm/isValid/index.js","webpack://tool-base/../node_modules/date-fns/esm/isDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/subMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/addMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?34de","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?61eb","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://tool-base/../packages/openc3-tool-common/src/services/openc3-api.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?d240","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?fdce","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?c5a1","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?be73","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?5ac3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?8317","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?e43a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?892c","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?fc71","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?4a0a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?841b","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?acc1","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?3c27","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?97f9","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?1dea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?eaa2","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?0a7c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?83ba","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://tool-base/../node_modules/date-fns/esm/compareAsc/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfDay/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/assign/index.js","webpack://tool-base/../node_modules/date-fns/esm/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/util/AstroStatus.js","webpack://tool-base/../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack://tool-base/../packages/openc3-tool-common/src/services/cable.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue","webpack://tool-base/../node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?7f57","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?35f7","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?68ea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?9364","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?6931","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?2ffc","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?4315","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?fe83","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?4ede","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?ee4e","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?e59f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?054f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?bb40","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?c676","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?2259","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?e925","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?09ba","webpack://tool-base/src/App.vue","webpack://tool-base/./src/App.vue?b39b","webpack://tool-base/./src/App.vue","webpack://tool-base/./src/router.js","webpack://tool-base/../packages/openc3-tool-common/src/plugins/store.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/./src/plugins/vuetify.js","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?8f08","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?6e05","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?c50f","webpack://tool-base/./src/openc3-tool-base.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"tool-base:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n }\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_splash.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_variables.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_mixins.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_main.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_topbar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_sidebar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_profile.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_menu.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_content.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_footer.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_responsive.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_utils.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_dashboard.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_overrides.scss\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\",\".splash-screen {\\n width: 100%;\\n height: 100%;\\n position: fixed;\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n\\n .splash-container {\\n width: 40px;\\n height: 40px;\\n margin: 0px auto;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -20px;\\n margin-top: -20px;\\n\\n }\\n\\n .splash-double-bounce1, .splash-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n border-radius: 50%;\\n background-color: $topbarItemColor;\\n opacity: 0.6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n -webkit-animation: splash-bounce 2.0s infinite ease-in-out;\\n animation: splash-bounce 2.0s infinite ease-in-out;\\n }\\n\\n .splash-double-bounce2 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s;\\n }\\n\\n @-webkit-keyframes splash-bounce {\\n 0%, 100% { -webkit-transform: scale(0.0) }\\n 50% { -webkit-transform: scale(1.0) }\\n }\\n\\n @keyframes splash-bounce {\\n 0%, 100% {\\n transform: scale(0.0);\\n -webkit-transform: scale(0.0);\\n } 50% {\\n transform: scale(1.0);\\n -webkit-transform: scale(1.0);\\n }\\n }\\n}\\n\",\"/* General */\\n$fontSize: 14px;\\n$bodyBgColor: #edf0f5;\\n$textColor: #333333;\\n$textSecondaryColor: #707070;\\n$borderRadius: 3px;\\n$dividerColor: #e3e3e3;\\n$transitionDuration: 0.2s;\\n$maskBgColor: #424242;\\n$focusShadowColor: #8dcdff;\\n\\n/* Menu Common */\\n$menuitemBadgeBgColor: #007be5;\\n$menuitemBadgeColor: #ffffff;\\n$submenuFontSize: 13px;\\n$menuitemActiveRouteColor: rgb(77, 172, 255);\\n\\n/* Menu Light */\\n$menuBgColorFirst: #f3f4f9;\\n$menuBgColorLast: #d7dbe8;\\n$menuitemColor: #232428;\\n$menuitemHoverColor: #0388e5;\\n$menuitemActiveColor: #0388e5;\\n$menuitemActiveBgColor: #ffffff;\\n$menuitemBorderColor: rgba(207, 211, 224, 0.6);\\n\\n/* Menu Dark */\\n$menuDarkBgColorFirst: rgb(0, 23, 36);\\n$menuDarkBgColorLast: rgb(0, 54, 86);\\n$menuitemDarkColor: #ffffff;\\n$menuitemDarkHoverColor: rgb(0, 90, 143);\\n$menuitemDarkActiveColor: rgb(77, 172, 255);\\n$menuitemDarkActiveBgColor: rgb(0, 36, 57);\\n$menuitemDarkBorderColor: rgba(52, 56, 65, 0.6);\\n\\n/* Topbar */\\n$topbarLeftBgColor: rgb(0, 23, 36);\\n$topbarRightBgColor: rgb(0, 23, 36);\\n$topbarItemBadgeBgColor: #ef6262;\\n$topbarItemBadgeColor: #ffffff;\\n$topbarItemColor: #ffffff;\\n$topbarItemHoverColor: #c3e8fb;\\n$topbarSearchInputBorderBottomColor: #ffffff;\\n$topbarSearchInputColor: #ffffff;\\n\\n/* Footer */\\n$footerBgColor: rgb(24, 38, 53);\\n\",\"// Icon Override Mixin\\n@mixin icon-override($icon) {\\n &:before {\\n content: $icon;\\n }\\n}\\n\\n// === MIXINS === //\\n@mixin border-radius($val) {\\n -moz-border-radius: $val;\\n -webkit-border-radius: $val;\\n border-radius: $val;\\n}\\n\\n@mixin border-radius-right($val) {\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val; \\n}\\n\\n@mixin border-radius-left($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n}\\n\\n@mixin border-radius-top($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n}\\n\\n@mixin border-radius-bottom($val) {\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val;\\n}\\n\\n@mixin linear-gradient($top, $bottom){\\n background: $top; /* Old browsers */\\n background: -moz-linear-gradient(top, $top 0%, $bottom 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(top, $top 0%,$bottom 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(top, $top 0%,$bottom 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(top, $top 0%,$bottom 100%); /* IE10+ */\\n background: linear-gradient(to bottom, $top 0%,$bottom 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 ); /* IE6-9 */\\n}\\n\\n@mixin linear-gradient-left($left, $right){\\n background: $left; /* Old browsers */\\n background: -moz-linear-gradient(left, $left 0%, $right 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, right top, color-stop(0%,$left), color-stop(100%,$right)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(left, $left 0%,$right 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(left, $left 0%,$right 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(left, $left 0%,$right 100%); /* IE10+ */\\n background: linear-gradient(to right, $left 0%,$right 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 ); /* IE6-9 */\\n}\\n\\n@mixin transition($transition...) {\\n -moz-transition: $transition;\\n -o-transition: $transition;\\n -webkit-transition: $transition;\\n transition: $transition;\\n}\\n\\n@mixin transition-property($property) {\\n -webkit-transition-property: $property;\\n -moz-transition-property: $property;\\n -ms-transition-property: $property;\\n -o-transition-property: $property;\\n transition-property: $property;\\n}\\n\\n@mixin transition-duration($duration) {\\n -moz-transition-duration: $duration;\\n -webkit-transition-duration: $duration;\\n -o-transition-duration: $duration;\\n transition-duration: $duration;\\n}\\n\\n@mixin transition-timing-function($function) {\\n -webkit-transition-timing-function: $function;\\n -moz-transition-timing-function: $function;\\n -o-transition-timing-function: $function;\\n transition-timing-function: $function;\\n}\\n\\n@mixin opacity($opacity) {\\n opacity: $opacity;\\n $opacity-ie: $opacity * 100;\\n filter: alpha(opacity=$opacity-ie);\\n}\\n\\n@mixin shadow($value) {\\n -webkit-box-shadow: $value;\\n -moz-box-shadow: $value;\\n box-shadow: $value;\\n}\\n\\n@mixin focused() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin focused-inset() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin clearfix {\\n &:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n}\",\"* {\\n box-sizing: border-box;\\n}\\n\\nhtml {\\n height: 100%;\\n}\\n\\nbody {\\n font-family: 'Open Sans', 'Helvetica Neue', sans-serif;\\n font-size: $fontSize;\\n color: $textColor;\\n /* background-color: $bodyBgColor; */\\n margin: 0;\\n padding: 0;\\n min-height: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\na {\\n text-decoration: none;\\n}\\n\\n.layout-wrapper {\\n padding: 0;\\n}\\n\\n// Don't let the min-height be 100vh because it forces a scroll\\n// with our header and footer\\n.v-application--wrap {\\n min-height: 0 !important;\\n}\\n\",\".layout-topbar {\\n position: fixed;\\n height: 80px;\\n padding: 0.7em 1.5em 0em 1.5em;\\n color: #ffffff;\\n z-index: 999;\\n right: 0;\\n @include clearfix();\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n @include transition(left $transitionDuration);\\n\\n .layout-topbar-icons {\\n float: right;\\n display: block;\\n -moz-animation-duration: 0.5s;\\n -webkit-animation-duration: 0.5s;\\n animation-duration: 0.5s;\\n\\n button {\\n position: relative;\\n color: $topbarItemColor;\\n margin-left: 20px;\\n display: inline-block;\\n text-decoration: none;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n\\n &:focus {\\n @include focused();\\n }\\n\\n span {\\n &.layout-topbar-icon {\\n font-size: 2em;\\n }\\n\\n &.layout-topbar-item-text {\\n font-size: 20px;\\n display: none;\\n }\\n\\n &.layout-topbar-badge {\\n position: absolute;\\n font-size: 10px;\\n right: -5px;\\n top: -5px;\\n width: 16px;\\n height: 16px;\\n text-align: center;\\n line-height: 16px;\\n color: $topbarItemBadgeColor;\\n background-color: $topbarItemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n }\\n }\\n\\n .layout-topbar-search {\\n padding: 0;\\n position: relative;\\n display: inline-block;\\n top: -4px;\\n\\n input {\\n display: inline-block;\\n border: 0 none;\\n font-size: $fontSize;\\n background: transparent;\\n border-bottom: 2px solid $topbarSearchInputBorderBottomColor;\\n outline: 0 none;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: $topbarSearchInputColor;\\n width: 100px;\\n padding: 1px 20px 1px 1px;\\n margin: 0px;\\n @include border-radius(2px);\\n\\n &::-webkit-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &::-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-ms-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n font-size: 18px;\\n position: absolute;\\n top: -1px;\\n right: 0px;\\n }\\n\\n &:hover {\\n input {\\n border-bottom-color: $topbarItemHoverColor;\\n &::-webkit-input-placeholder {\\n opacity: 1;\\n }\\n &:-moz-placeholder {\\n opacity: 1;\\n }\\n &::-moz-placeholder {\\n opacity: 1;\\n }\\n &:-ms-input-placeholder {\\n opacity: 1;\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n color: $topbarItemHoverColor;\\n }\\n }\\n }\\n }\\n\\n .layout-menu-button {\\n cursor: pointer;\\n display: inline-block;\\n text-decoration: none;\\n color: $topbarItemColor;\\n @include transition(color $transitionDuration);\\n\\n span {\\n font-size: 2em;\\n }\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n }\\n\\n button {\\n cursor: pointer;\\n }\\n}\\n\",\".layout-sidebar {\\n position: fixed;\\n width: 250px;\\n height: 100%;\\n z-index: 999;\\n overflow-y: auto;\\n user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n @include transition(transform $transitionDuration);\\n @include shadow(0 0 6px 0 rgba(0, 0, 0, 0.16));\\n\\n &.layout-sidebar-enter,\\n &.layout-sidebar-leave-to {\\n transform: translateX(-100%);\\n }\\n\\n .layout-logo {\\n text-align: center;\\n margin-top: 24px;\\n }\\n\\n .menuitem-badge {\\n display: inline-block;\\n margin-left: 4px;\\n font-size: 10px;\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n text-align: center;\\n color: $menuitemBadgeColor;\\n background-color: $menuitemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n}\",\".layout-profile {\\n text-align: center;\\n padding: 10px 0 10px 0;\\n\\n img {\\n width: 56px;\\n margin: 10px;\\n }\\n\\n .layout-profile-link {\\n cursor: pointer;\\n display: inline-block;\\n margin-bottom: 0.75em;\\n @include transition(color $transitionDuration);\\n\\n i {\\n display: inline-block;\\n font-size: 16px;\\n vertical-align: middle;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n button {\\n width: 100%;\\n padding: 1em;\\n border: 0 none;\\n border-radius: 0;\\n cursor: pointer;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n\\n span {\\n margin-left: 0.25em;\\n vertical-align: middle;\\n }\\n\\n i {\\n vertical-align: middle;\\n }\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\".layout-menu-container {\\n padding-bottom: 120px;\\n}\\n\\n.layout-menu {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n\\n li {\\n a {\\n cursor: pointer;\\n position: relative;\\n text-decoration: none;\\n display: block;\\n @include transition(color $transitionDuration);\\n\\n i {\\n font-size: 18px;\\n vertical-align: middle;\\n }\\n\\n span {\\n margin-left: .25em;\\n vertical-align: middle;\\n line-height: 18px;\\n display: inline-block;\\n }\\n\\n .menuitem-toggle-icon {\\n position: absolute;\\n top: 50%;\\n right: 1em;\\n margin-top: -9px;\\n }\\n\\n &.router-link-active {\\n font-weight: 700;\\n }\\n\\n &:focus {\\n @include focused-inset();\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n .menuitem-toggle-icon {\\n @include icon-override(\\\"\\\\e933\\\");\\n }\\n }\\n }\\n }\\n\\n > li {\\n > a {\\n padding: 1em;\\n\\n span {\\n font-size: $fontSize;\\n }\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n padding-left: 1.5em;\\n\\n li {\\n a {\\n cursor: pointer;\\n padding: .75em 1em;\\n border-top: 0 none;\\n\\n span {\\n font-size: $submenuFontSize;\\n }\\n }\\n\\n &:last-child {\\n padding-bottom: 1em;\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n @include linear-gradient($menuBgColorFirst, $menuBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemActiveBgColor;\\n color: $menuitemActiveColor;\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n @include linear-gradient($menuDarkBgColorFirst, $menuDarkBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemDarkBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemDarkBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemDarkColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemDarkActiveBgColor;\\n color: $menuitemDarkActiveColor;\\n }\\n }\\n }\\n }\\n}\",\".layout-main {\\n @include transition(margin-left $transitionDuration);\\n padding: 96px 16px 16px 16px;\\n}\\n\",\".layout-footer {\\n @include transition(margin-left $transitionDuration);\\n background-color: $footerBgColor;\\n padding: 1em 2em;\\n\\n img {\\n vertical-align: middle;\\n }\\n\\n .footer-text {\\n vertical-align: middle;\\n }\\n}\",\"@media (min-width: 1025px) {\\n .layout-wrapper {\\n &.layout-overlay { \\n .layout-topbar {\\n left: 0;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n \\n &.layout-overlay-sidebar-active {\\n .layout-sidebar {\\n left: 0;\\n }\\n \\n .layout-topbar {\\n left: 250px;\\n }\\n }\\n }\\n\\n &.layout-static { \\n .layout-topbar {\\n left: 250px;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 250px;\\n }\\n \\n &.layout-static-sidebar-inactive { \\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n}\\n\\n@media (max-width: 1024px) {\\n .layout-wrapper {\\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n\\n .layout-sidebar {\\n @include transition(left $transitionDuration);\\n left: -250px;\\n margin-top: 50px;\\n }\\n\\n .layout-mask {\\n display: none;\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 50px;\\n left: 0;\\n z-index: 998;\\n background-color: $maskBgColor;\\n @include opacity(0.7);\\n }\\n\\n &.layout-mobile-sidebar-active {\\n .layout-sidebar {\\n left: -0;\\n }\\n\\n .layout-mask {\\n display: block;\\n }\\n }\\n }\\n\\n .body-overflow-hidden {\\n overflow: hidden;\\n }\\n}\",\"/* Typography */\\nh1 {\\n font-weight: normal;\\n margin: 0;\\n font-size: 24px;\\n}\\n\\nh2 {\\n font-size: 20px;\\n font-weight: normal;\\n margin: 0;\\n}\\n\\n.card {\\n background-color: #ffffff;\\n padding: 1em;\\n margin-bottom: 16px;\\n @include border-radius($borderRadius);\\n\\n &.card-w-title {\\n padding-bottom: 2em;\\n }\\n\\n h1 {\\n margin: 1em 0 .5em 0;\\n border-bottom: 1px solid #d5d5d5;\\n padding: .1em;\\n font-size: 24px;\\n\\n &:first-child {\\n margin: 0 0 .5em 0;\\n }\\n }\\n}\\n\\n/* Code Highlight */\\n.docs {\\n pre[class*=\\\"language-\\\"] {\\n padding: 0 !important;\\n background: transparent;\\n overflow: visible;\\n \\n > code {\\n border-left: 0 none;\\n box-shadow: none;\\n font-size: 14px;\\n }\\n }\\n}\\n\",\"/* Dashboard */\\n.dashboard {\\n \\n .summary {\\n position: relative;\\n \\n .title {\\n font-size: 20px;\\n }\\n \\n .detail {\\n color: $textSecondaryColor;\\n display: block;\\n margin-top: 10px;\\n }\\n \\n .count {\\n color: #ffffff;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n font-size: 24px;\\n padding: 7px 14px;\\n @include border-radius($borderRadius);\\n \\n &.visitors {\\n background-color: #20d077;\\n }\\n \\n &.purchases {\\n background-color: #f9c851;\\n }\\n \\n &.revenue {\\n background-color: #007be5;\\n }\\n }\\n }\\n\\n .highlight-box {\\n height: 100px;\\n @include clearfix();\\n \\n .initials {\\n height: 100%;\\n float: left;\\n width: 50%;\\n text-align: center;\\n padding: 1em;\\n\\n > span {\\n font-size: 48px;\\n }\\n }\\n \\n .highlight-details {\\n height: 100%;\\n background-color: #ffffff;\\n float: left;\\n width: 50%;\\n padding: 1em;\\n\\n i {\\n font-size: 24px;\\n vertical-align: middle;\\n margin-right: .25em;\\n }\\n \\n .count {\\n color: $textSecondaryColor;\\n font-size: 36px;\\n display: block;\\n }\\n }\\n }\\n \\n .task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n \\n li {\\n padding: .5em .25em;\\n border-bottom: 1px solid $dividerColor;\\n @include clearfix();\\n }\\n \\n .p-checkbox {\\n vertical-align: middle;\\n margin-right: .5em;\\n }\\n \\n .task-name {\\n vertical-align: middle;\\n }\\n \\n i {\\n float: right;\\n font-size: 24px;\\n color: $textSecondaryColor;\\n }\\n\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contact-form {\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contacts {\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n border-bottom: 1px solid $dividerColor;\\n \\n button {\\n padding: 9px;\\n width: 100%;\\n box-sizing: border-box;\\n text-decoration: none;\\n position: relative;\\n display: block;\\n @include border-radius(2px);\\n @include transition(background-color .2s);\\n \\n .name {\\n position: absolute;\\n right: 10px;\\n top: 10px;\\n font-size: 18px;\\n }\\n \\n .email {\\n position: absolute;\\n right: 10px;\\n top: 30px;\\n font-size: 14px;\\n color: $textSecondaryColor;\\n }\\n \\n &:hover {\\n cursor: pointer;\\n background-color: #eeeeee;\\n }\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n }\\n }\\n \\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n \\n .activity-list {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n \\n li {\\n border-bottom: 1px solid $dividerColor;\\n padding: 16px 8px;\\n \\n .count {\\n font-size: 24px;\\n color: #ffffff;\\n background-color: #007be5;\\n font-weight: 700;\\n display: inline-block;\\n padding: .25em .5em;\\n @include border-radius($borderRadius);\\n }\\n \\n &:first-child {\\n border-top: 1px solid $dividerColor;\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n\\n .p-col-6:first-child {\\n font-size: 18px;\\n padding: .5em 0 0 .5em;\\n }\\n \\n .p-col-6:last-child {\\n text-align: right;\\n color: $textSecondaryColor;\\n }\\n }\\n }\\n}\\n\",\"// This is for global overrides only. If it's contained to a component put it there.\\n// Also use the variables created by vueify like var(--v-primary-darken2) rather\\n// than something absolute so theming works. See vuetify.js for the base colors\\n// and note the variations are: base, lighten[1-5], and darken[1-4]\\n\\n.openc3-green {\\n color: rgb(0, 200, 0) !important;\\n}\\n.openc3-yellow {\\n color: rgb(255, 220, 0) !important;\\n}\\n.openc3-red {\\n color: rgb(255, 45, 45) !important;\\n}\\n.openc3-blue {\\n color: rgb(0, 153, 255) !important;\\n}\\n.openc3-purple {\\n color: rgb(200, 0, 200) !important;\\n}\\n.openc3-black {\\n color: black !important;\\n}\\n.openc3-white {\\n color: white !important;\\n}\\n\\n// Base colors\\n.theme--dark.v-system-bar {\\n background-color: var(--v-primary-base) !important;\\n}\\n.theme--dark.v-system-bar.active {\\n background-color: var(--v-secondary-base) !important;\\n}\\nbody,\\n.theme--dark.v-application,\\n.theme--dark.v-main,\\n.theme--dark.v-content {\\n background-color: var(--v-tertiary-base) !important;\\n}\\n\\n// Highlight colors\\n.theme--dark.v-sheet.v-list,\\n.theme--dark.v-list,\\n.theme--dark.v-list-item {\\n background-color: var(--v-primary-darken2) !important;\\n}\\n.theme--dark.v-data-table,\\n.theme--dark.v-item-group,\\n.theme--dark.v-dialog,\\n.theme--dark.v-card,\\n.theme--dark.v-tab,\\n.theme--dark.v-sheet,\\n.theme--dark.v-date-picker-header,\\n.theme--dark.v-date-picker-table,\\n.theme--dark.v-time-picker-clock__container,\\n.theme--dark.p-menubar {\\n background-color: var(--v-tertiary-darken2) !important;\\n}\\n\\ninput {\\n // This causes the browser to style input icons for a dark background\\n color-scheme: dark;\\n // Make the caret color be white instead of a dark blue\\n caret-color: auto;\\n}\\n\\n// Fix the single spa debug panel so the text is readable\\n.imo-modal-container input {\\n color: black;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.astro-icon[data-v-b942113a] {\\n fill: currentColor;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"],\"names\":[],\"mappings\":\";AAgDA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <rux-icon :icon=\\\"icon\\\" class=\\\"astro-icon\\\" />\\n</template>\\n\\n<script>\\nimport RuxIcon from './RuxIcon.vue'\\nimport { AstroIconLibrary } from '.'\\n\\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\\nexport default {\\n components: {\\n RuxIcon,\\n },\\n props: {\\n icon: {\\n type: String,\\n required: true,\\n validator: (val) => {\\n return AstroIconLibrary.includes(val)\\n },\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.astro-icon {\\n fill: currentColor;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#footer[data-v-1f2e2c8b] {\\n z-index: 1000; /* On TOP! */\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppFooter.vue\"],\"names\":[],\"mappings\":\";AAoFA;EACA,aAAA,EAAA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2023, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <v-footer id=\\\"footer\\\" app color=\\\"tertiary darken-3\\\" height=\\\"33\\\">\\n <img :src=\\\"icon\\\" alt=\\\"OpenC3\\\" />\\n <span class=\\\"footer-text\\\" style=\\\"margin-left: 5px\\\">\\n OpenC3 {{ edition }} {{ openc3Version }} &copy; 2023 - License:\\n {{ license }}\\n </span>\\n <v-spacer />\\n <a :href=\\\"sourceUrl\\\" class=\\\"white--text text-decoration-underline\\\">\\n Source\\n </a>\\n <v-spacer />\\n <div class=\\\"justify-right\\\"><clock-footer /></div>\\n </v-footer>\\n</template>\\n\\n<script>\\nimport ClockFooter from './components/ClockFooter.vue'\\nimport { OpenC3Api } from '../../services/openc3-api'\\nimport icon from '../../../public/img/icon.png'\\n\\nexport default {\\n components: {\\n ClockFooter,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n license: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n icon: icon,\\n sourceUrl: '',\\n openc3Version: '',\\n }\\n },\\n created: function () {\\n this.getSourceUrl()\\n },\\n methods: {\\n getSourceUrl: function () {\\n new OpenC3Api()\\n .get_settings(['source_url', 'version'])\\n .then((response) => {\\n this.sourceUrl = response[0]\\n this.openc3Version = `(${response[1]})`\\n })\\n .catch(() => {\\n this.openc3Version = 'Unknown'\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n#footer {\\n z-index: 1000; /* On TOP! */\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\ndiv a[data-v-00ae1763] {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter[data-v-00ae1763] {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer[data-v-00ae1763] {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height[data-v-00ae1763] {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";AA8PA;EACA,YAAA;EACA,eAAA;EACA,cAAA;EACA,YAAA;EACA,WAAA;AACA;AACA;EACA,aAAA;AACA;AACA;EACA,0CAAA;AACA;AACA;EACA,gBAAA;EACA,4BAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect / to the first tool\\n if (window.location.pathname == '/') {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiRA,4EAAA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;EAGA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect / to the first tool\\n if (window.location.pathname == '/') {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-3d0e2e40] {\\n height: 28px;\\n}\\n.v-badge[data-v-3d0e2e40] {\\n width: 100%;\\n}\\n.overlay[data-v-3d0e2e40] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"],\"names\":[],\"mappings\":\";AA4KA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showAlertPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showAlertPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Alert box icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-alert-box-outline </v-icon>\\n </v-btn>\\n </template>\\n\\n <!-- Alerts list -->\\n <v-card>\\n <v-card-title>\\n Alerts\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n @click=\\\"clearAlerts\\\"\\n class=\\\"ml-1\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n </v-card-title>\\n <v-card-text v-if=\\\"alerts.length === 0\\\"> No alerts </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n >\\n <template v-for=\\\"(alert, index) in alerts\\\">\\n <v-list-item\\n @click=\\\"openDialog(alert)\\\"\\n :key=\\\"`alert-${index}`\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title>\\n {{ alert.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ alert.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"alert.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full alert -->\\n <v-dialog v-model=\\\"alertDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedAlert.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedAlert.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-text>\\n {{ selectedAlert.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"alertDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n alerts: [],\\n alertDialog: false,\\n showAlertPane: false,\\n selectedAlert: {},\\n }\\n },\\n watch: {\\n showAlertPane: function (val) {\\n if (val) {\\n this.refreshList()\\n }\\n if (!val && this.selectedAlert.title) {\\n this.alertDialog = false\\n this.selectedAlert = {}\\n }\\n },\\n },\\n methods: {\\n refreshList: function () {\\n this.alerts = this.$store.state.notifyHistory\\n },\\n clearAlerts: function () {\\n this.$store.commit('notifyClearHistory')\\n this.refreshList()\\n this.showAlertPane = false\\n },\\n openDialog: function (alert, clearToast = false) {\\n this.selectedAlert = alert\\n this.alertDialog = true\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,wEAAA;AACA;;EAEA,4CAAA;AACA;AACA;EACA,qCAAA;AACA;AACA;EACA;;;GAGA;AACA;AACA;EACA,kDAAA;AACA;;AAEA,oCAAA;AACA;;EAEA,WAAA;EACA,eAAA;EACA,OAAA;EACA,QAAA;EACA,kBAAA;EACA,mCAAA;EACA,uCAAA;EACA,wDAAA;AACA;AACA;EACA,MAAA;EACA,uDAAA;EACA,wCAAA;AACA;AACA;EACA,SAAA;EACA,0DAAA;EACA,2CAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<script>\\nimport { OpenC3Api } from '../../../services/openc3-api'\\n\\nexport default {\\n data: function () {\\n return {\\n api: null,\\n classification: {\\n text: '',\\n fontColor: 'white',\\n backgroundColor: 'red',\\n topHeight: 0,\\n bottomHeight: 0,\\n },\\n }\\n },\\n computed: {\\n classificationStyles: function () {\\n // JavaScript can't access CSS psudo-elements (::before and ::after).\\n // This string sets these JS values to CSS variables, accessible to\\n // the style sheet via the style attribute on #app\\n return [\\n `--classification-text:\\\"${this.classification.text}\\\";`,\\n `--classification-font-color:${this.classification.fontColor};`,\\n `--classification-background-color:${this.classification.backgroundColor};`,\\n `--classification-height-top:${this.classification.topHeight}px;`,\\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\\n ].join('')\\n },\\n },\\n created: function () {\\n this.api = new OpenC3Api()\\n this.load()\\n },\\n methods: {\\n load: function () {\\n this.api\\n .get_setting('classification_banner')\\n .then((response) => {\\n if (response) {\\n this.classification = JSON.parse(response)\\n }\\n })\\n .catch((error) => {\\n // Do nothing\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style>\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-eda8ca60] {\\n height: 28px;\\n}\\n.v-badge[data-v-eda8ca60] {\\n width: 100%;\\n}\\n.overlay[data-v-eda8ca60] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"],\"names\":[],\"mappings\":\";AA0YA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showNotificationPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showNotificationPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Bell icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon v-if=\\\"unreadCount === 0\\\" :size=\\\"size\\\">\\n mdi-bell-outline\\n </v-icon>\\n <v-badge\\n v-else\\n left\\n offset-x=\\\"24\\\"\\n offset-y=\\\"8\\\"\\n :color=\\\"badgeColor\\\"\\n bordered\\n :content=\\\"unreadCount\\\"\\n >\\n <v-icon :size=\\\"size\\\" :color=\\\"badgeColor\\\"> mdi-bell </v-icon>\\n </v-badge>\\n </v-btn>\\n </template>\\n\\n <!-- Notifications list -->\\n <v-card>\\n <v-card-title>\\n Notifications\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n @click=\\\"clearNotifications\\\"\\n class=\\\"ml-1\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n <v-btn icon @click=\\\"toggleSettingsDialog\\\" class=\\\"ml-1\\\">\\n <v-icon> $astro-settings </v-icon>\\n </v-btn>\\n </v-card-title>\\n <v-card-text v-if=\\\"notifications.length === 0\\\">\\n No notifications\\n </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n >\\n <template v-for=\\\"(notification, index) in notificationList\\\">\\n <template v-if=\\\"notification.header\\\">\\n <v-divider v-if=\\\"index !== 0\\\" :key=\\\"index\\\" class=\\\"mb-2\\\" />\\n <v-subheader :key=\\\"notification.header\\\">\\n {{ notification.header }}\\n </v-subheader>\\n </template>\\n\\n <v-list-item\\n v-else\\n :key=\\\"`notification-${index}`\\\"\\n @click=\\\"openDialog(notification)\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title\\n :class=\\\"{ 'text--secondary': notification.read }\\\"\\n >\\n {{ notification.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ notification.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <v-list-item-action class=\\\"mt-0\\\">\\n <v-list-item-action-text>\\n {{ notification.time | shortDateTime }}\\n </v-list-item-action-text>\\n <v-spacer />\\n </v-list-item-action>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"notification.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full notification -->\\n <v-dialog v-model=\\\"notificationDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedNotification.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedNotification.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-subtitle>\\n {{ selectedNotification.time | shortDateTime }}\\n </v-card-subtitle>\\n <v-card-text>\\n {{ selectedNotification.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn\\n color=\\\"primary\\\"\\n text\\n @click=\\\"navigate(selectedNotification.url)\\\"\\n >\\n Open\\n <v-icon right> mdi-open-in-new </v-icon>\\n </v-btn>\\n <v-btn color=\\\"primary\\\" text @click=\\\"notificationDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n\\n <!-- Dialog for changing notification settings -->\\n <v-dialog v-model=\\\"settingsDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title> Notification settings </v-card-title>\\n <v-card-text>\\n <v-switch v-model=\\\"showToast\\\" label=\\\"Show toasts\\\" />\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"toggleSettingsDialog\\\">\\n close\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { formatDistanceToNow } from 'date-fns'\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\nimport Cable from '../../../services/cable.js'\\n\\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n cable: new Cable(),\\n subscription: null,\\n notifications: [],\\n showNotificationPane: false,\\n toastNotification: {},\\n notificationDialog: false,\\n selectedNotification: {},\\n settingsDialog: false,\\n showToast: true,\\n }\\n },\\n computed: {\\n badgeColor: function () {\\n if (!this.unreadCount) {\\n return AstroStatusColors['off']\\n }\\n const severities = this.unreadNotifications\\n .map((notification) => notification.severity)\\n .filter((val, index, self) => {\\n return self.indexOf(val) === index // Unique values\\n })\\n return AstroStatusColors[highestSeverity(severities)]\\n },\\n readNotifications: function () {\\n return this.notifications\\n .filter((notification) => notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadNotifications: function () {\\n return this.notifications\\n .filter((notification) => !notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadCount: function () {\\n let result = this.unreadNotifications.length\\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\\n result += '+' // Indicate there are more\\n }\\n return result\\n },\\n notificationList: function () {\\n const groups = groupBySeverity(this.unreadNotifications)\\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\\n (severity) => {\\n const header = {\\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\\n }\\n return [header, ...groups[severity]]\\n }\\n )\\n if (this.readNotifications.length) {\\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\\n }\\n return result\\n },\\n },\\n watch: {\\n showNotificationPane: function (val) {\\n if (!val) {\\n if (this.selectedNotification.title) {\\n this.notificationDialog = false\\n this.selectedNotification = {}\\n } else {\\n this.markAllAsRead()\\n }\\n }\\n },\\n showToast: function (val) {\\n localStorage.notoast = !val\\n },\\n },\\n created: function () {\\n this.showToast = localStorage.notoast === 'false'\\n this.subscribe()\\n },\\n destroyed: function () {\\n if (this.subscription) {\\n this.subscription.unsubscribe()\\n }\\n this.cable.disconnect()\\n },\\n methods: {\\n markAllAsRead: function () {\\n this.notifications.forEach((notification) => {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n })\\n },\\n clearNotifications: function () {\\n this.markAllAsRead()\\n this.notifications = []\\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\\n this.showNotificationPane = false\\n },\\n toggleNotificationPane: function () {\\n this.showNotificationPane = !this.showNotificationPane\\n },\\n toggleSettingsDialog: function () {\\n this.settingsDialog = !this.settingsDialog\\n },\\n openDialog: function (notification, clearToast = false) {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n this.selectedNotification = notification\\n this.notificationDialog = true\\n },\\n navigate: function (url) {\\n window.open(url, '_blank')\\n },\\n subscribe: function () {\\n this.cable\\n .createSubscription(\\n 'NotificationsChannel',\\n window.openc3Scope,\\n {\\n received: (data) => this.received(data),\\n },\\n {\\n start_offset:\\n localStorage.notificationStreamOffset ||\\n localStorage.lastReadNotification,\\n }\\n )\\n .then((subscription) => {\\n this.subscription = subscription\\n })\\n },\\n received: function (parsed) {\\n this.cable.recordPing()\\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\\n }\\n let foundToast = false\\n parsed.forEach((notification) => {\\n notification.read =\\n notification.msg_id <= localStorage.lastReadNotification\\n notification.severity = notification.severity || 'normal'\\n if (\\n !notification.read && // Don't toast read notifications\\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\\n ) {\\n foundToast = true\\n this.toastNotification = notification\\n }\\n })\\n\\n if (this.showToast && foundToast) {\\n this.$notify[this.toastNotification.severity]({\\n ...this.toastNotification,\\n type: 'notification',\\n duration:\\n this.toastNotification.severity === 'critical' ? null : 5000,\\n saveToHistory: false,\\n })\\n }\\n\\n if (\\n this.notifications.length + parsed.length >\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n ) {\\n this.notifications.splice(\\n 0,\\n this.notifications.length +\\n parsed.length -\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n )\\n }\\n this.notifications = this.notifications.concat(parsed)\\n },\\n },\\n filters: {\\n shortDateTime: function (nsec) {\\n if (!nsec) return ''\\n const date = new Date(nsec / 1_000_000)\\n return formatDistanceToNow(date, { addSuffix: true })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.overlay[data-v-26b5fc12] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"],\"names\":[],\"mappings\":\";AA+FA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showUserMenu\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showUserMenu\\\"\\n transition=\\\"slide-y-transition\\\"\\n offset-y\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"120\\\"\\n :nudge-bottom=\\\"20\\\"\\n >\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-account </v-icon>\\n </v-btn>\\n </template>\\n\\n <v-card>\\n <v-card-text class=\\\"text-center\\\">\\n <div style=\\\"text-align: center; margin: 5px\\\">{{ username }}</div>\\n <div v-if=\\\"authenticated\\\">\\n <v-btn block @click=\\\"logout\\\" color=\\\"primary\\\"> Logout </v-btn>\\n </div>\\n <div v-else>\\n <v-btn block @click=\\\"login\\\" color=\\\"primary\\\"> Login </v-btn>\\n </div>\\n <div>\\n <v-switch label=\\\"Colorblind mode\\\" v-model=\\\"colorblindMode\\\" />\\n </div>\\n </v-card-text>\\n </v-card>\\n </v-menu>\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n let user = OpenC3Auth.user()\\n return {\\n showUserMenu: false,\\n authenticated: !!localStorage.openc3Token,\\n username: user['name'],\\n }\\n },\\n computed: {\\n colorblindMode: {\\n get: function () {\\n return localStorage.colorblindMode === 'true'\\n },\\n set: function (val) {\\n localStorage.colorblindMode = val\\n },\\n },\\n },\\n methods: {\\n logout: function () {\\n OpenC3Auth.logout()\\n },\\n login: function () {\\n OpenC3Auth.login(location.href)\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","const resolveDirectory = require(\"../public-path\").resolveDirectory;\n\nexports.autoPublicPath = function autoPublicPath(rootDirLevel) {\n if (!rootDirLevel) {\n rootDirLevel = 1;\n }\n\n if (typeof __webpack_public_path__ !== \"undefined\") {\n if (typeof __system_context__ === \"undefined\") {\n throw Error(\n \"systemjs-webpack-interop requires webpack@>=5.0.0-beta.15 and output.libraryTarget set to 'system'\"\n );\n }\n\n if (!__system_context__.meta || !__system_context__.meta.url) {\n console.error(\"__system_context__\", __system_context__);\n throw Error(\n \"systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(\n __system_context__.meta.url,\n rootDirLevel\n );\n }\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../openc3-tool-base/node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2eb15b17\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\", function() {\n var newContent = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\n if(newContent.__esModule) newContent = newContent.default;\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8645__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4091__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4688__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9731__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9191__;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.y = __system_context__;","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".openc3-tool-base.js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktool_base\"] = self[\"webpackChunktool_base\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","const autoPublicPath = require(\"./auto-public-path\").autoPublicPath;\n\nautoPublicPath(1);\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-app\",\n { style: _vm.classificationStyles },\n [\n _c(\"app-nav\", {\n staticClass: \"d-print-none\",\n attrs: { edition: \"COSMOS\" },\n }),\n _vm._v(\" \"),\n _c(\n \"v-main\",\n [\n _c(\"v-container\", { attrs: { fluid: \"\" } }, [\n _c(\"div\", { attrs: { id: \"openc3-tool\" } }),\n _vm._v(\" \"),\n _c(\"div\", [_c(\"router-view\")], 1),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"app-footer\", {\n staticClass: \"d-print-none\",\n attrs: { app: \"\", edition: \"COSMOS\", license: \"AGPLv3\" },\n }),\n _vm._v(\" \"),\n _c(\"time-check\"),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-footer\",\n {\n attrs: {\n id: \"footer\",\n app: \"\",\n color: \"tertiary darken-3\",\n height: \"33\",\n },\n },\n [\n _c(\"img\", { attrs: { src: _vm.icon, alt: \"OpenC3\" } }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"footer-text\", staticStyle: { \"margin-left\": \"5px\" } },\n [\n _vm._v(\n \"\\n OpenC3 \" +\n _vm._s(_vm.edition) +\n \" \" +\n _vm._s(_vm.openc3Version) +\n \" © 2023 - License:\\n \" +\n _vm._s(_vm.license) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"white--text text-decoration-underline\",\n attrs: { href: _vm.sourceUrl },\n },\n [_vm._v(\"\\n Source\\n \")]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"justify-right\" }, [_c(\"clock-footer\")], 1),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"span\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"font-weight-bold\",\n staticStyle: { cursor: \"context-menu\" },\n on: { contextmenu: _vm.openMenu },\n },\n \"span\",\n _vm.attrs,\n false\n ),\n _vm.on\n ),\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"date\")(\n _vm.displayLocal ? _vm.localDate : _vm.utcDate,\n _vm.formatString\n )\n ) +\n \"\\n (\" +\n _vm._s(_vm.displayLocal ? \"local\" : \"UTC\") +\n \")\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n \"position-x\": _vm.menuX,\n \"position-y\": _vm.menuY,\n absolute: \"\",\n \"offset-y\": \"\",\n },\n model: {\n value: _vm.showMenu,\n callback: function ($$v) {\n _vm.showMenu = $$v\n },\n expression: \"showMenu\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplayLocal },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.displayLocal ? \"UTC\" : \"local time\") +\n \"\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplay24h },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.display24h ? 12 : 24) +\n \" hour clock\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _vm.dateMode !== \"monthFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setMonthFirst },\n },\n [_vm._v(\"\\n Display mm/dd/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"dayFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setDayFirst },\n },\n [_vm._v(\"\\n Display dd/mm/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"number\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setNumber },\n },\n [_vm._v(\"\\n Display day of year\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span\n v-bind=\"attrs\"\n v-on=\"on\"\n style=\"cursor: context-menu\"\n class=\"font-weight-bold\"\n @contextmenu=\"openMenu\"\n >\n {{ (displayLocal ? localDate : utcDate) | date(formatString) }}\n ({{ displayLocal ? 'local' : 'UTC' }})\n </span>\n <v-menu\n v-model=\"showMenu\"\n :position-x=\"menuX\"\n :position-y=\"menuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item>\n <v-list-item-title\n style=\"cursor: pointer\"\n @click=\"toggleDisplayLocal\"\n >\n Display {{ displayLocal ? 'UTC' : 'local time' }}\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item>\n <v-list-item-title style=\"cursor: pointer\" @click=\"toggleDisplay24h\">\n Display {{ display24h ? 12 : 24 }} hour clock\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item v-if=\"dateMode !== 'monthFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setMonthFirst\">\n Display mm/dd/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'dayFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setDayFirst\">\n Display dd/mm/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'number'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setNumber\">\n Display day of year\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nexport default {\n data: function () {\n return {\n localDate: new Date(),\n displayLocal: localStorage.clock_zone === 'local',\n display24h: !localStorage.clock_12h,\n dateMode: localStorage.clock_dateMode || 'monthFirst',\n intervalCount: 0,\n showMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n utcDate: function () {\n return new Date(\n this.localDate.getTime() + this.localDate.getTimezoneOffset() * 60000\n )\n },\n formatString: function () {\n let dateFormat\n switch (this.dateMode) {\n case 'monthFirst':\n dateFormat = 'LL/dd/yyy'\n break\n case 'dayFirst':\n dateFormat = 'dd/LL/yyy'\n break\n case 'number':\n dateFormat = 'D'\n break\n }\n\n let timeFormat\n if (this.display24h) {\n timeFormat = 'HH:mm:ss'\n } else {\n timeFormat = 'hh:mm:ss a'\n }\n\n return `${dateFormat} ${timeFormat}`\n },\n },\n watch: {\n displayLocal: function (val) {\n localStorage.clock_zone = val ? 'local' : 'utc'\n },\n display24h: function (val) {\n // store opposite because it makes default value (true) easier\n if (val) {\n delete localStorage.clock_12h\n } else {\n localStorage.clock_12h = true\n }\n },\n dateMode: function (val) {\n if (val.match(/^monthFirst$|^dayFirst$|^number$/)) {\n localStorage.clock_dateMode = val\n }\n },\n },\n created: function () {\n setInterval(\n () => {\n this.intervalCount++\n this.localDate = new Date()\n },\n this.intervalCount < 10 ? 100 : 1000 // get the seconds to about 100ms accuracy\n )\n },\n methods: {\n openMenu: function (event) {\n event.preventDefault()\n this.showMenu = false\n this.menuX = event.clientX\n this.menuY = event.clientY\n this.$nextTick(() => {\n this.showMenu = true\n })\n },\n toggleDisplayLocal: function () {\n this.displayLocal = !this.displayLocal\n },\n toggleDisplay24h: function () {\n this.display24h = !this.display24h\n },\n setMonthFirst: function () {\n this.dateMode = 'monthFirst'\n },\n setDayFirst: function () {\n this.dateMode = 'dayFirst'\n },\n setNumber: function () {\n this.dateMode = 'number'\n },\n },\n filters: {\n date: function (val, formatString) {\n return format(val, formatString, { useAdditionalDayOfYearTokens: true })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClockFooter.vue?vue&type=template&id=e0e3869e&\"\nimport script from \"./ClockFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./ClockFooter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e0e3869e')) {\n api.createRecord('e0e3869e', component.options)\n } else {\n api.reload('e0e3869e', component.options)\n }\n module.hot.accept(\"./ClockFooter.vue?vue&type=template&id=e0e3869e&\", function () {\n api.rerender('e0e3869e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue\"\nexport default component.exports","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(method, params, kwparams = {}, headerOptions = {}) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n // console.log(error)\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30) {\n const data = await this.exec('get_tlm_values', [items], {\n stale_time: stale_time,\n })\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED'\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n }\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-footer id=\"footer\" app color=\"tertiary darken-3\" height=\"33\">\n <img :src=\"icon\" alt=\"OpenC3\" />\n <span class=\"footer-text\" style=\"margin-left: 5px\">\n OpenC3 {{ edition }} {{ openc3Version }} &copy; 2023 - License:\n {{ license }}\n </span>\n <v-spacer />\n <a :href=\"sourceUrl\" class=\"white--text text-decoration-underline\">\n Source\n </a>\n <v-spacer />\n <div class=\"justify-right\"><clock-footer /></div>\n </v-footer>\n</template>\n\n<script>\nimport ClockFooter from './components/ClockFooter.vue'\nimport { OpenC3Api } from '../../services/openc3-api'\nimport icon from '../../../public/img/icon.png'\n\nexport default {\n components: {\n ClockFooter,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n license: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n icon: icon,\n sourceUrl: '',\n openc3Version: '',\n }\n },\n created: function () {\n this.getSourceUrl()\n },\n methods: {\n getSourceUrl: function () {\n new OpenC3Api()\n .get_settings(['source_url', 'version'])\n .then((response) => {\n this.sourceUrl = response[0]\n this.openc3Version = `(${response[1]})`\n })\n .catch(() => {\n this.openc3Version = 'Unknown'\n })\n },\n },\n}\n</script>\n\n<style scoped>\n#footer {\n z-index: 1000; /* On TOP! */\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\"\nimport script from \"./AppFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./AppFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f2e2c8b\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1f2e2c8b')) {\n api.createRecord('1f2e2c8b', component.options)\n } else {\n api.reload('1f2e2c8b', component.options)\n }\n module.hot.accept(\"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\", function () {\n api.rerender('1f2e2c8b', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppFooter.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"v-navigation-drawer\",\n {\n attrs: { app: \"\", id: \"openc3-nav-drawer\" },\n model: {\n value: _vm.drawer,\n callback: function ($$v) {\n _vm.drawer = $$v\n },\n expression: \"drawer\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-icon\",\n {\n staticStyle: {\n \"margin-right\": \"auto !important\",\n \"margin-left\": \"auto\",\n \"margin-top\": \"0px\",\n \"margin-bottom\": \"0px\",\n },\n },\n [_c(\"img\", { attrs: { src: _vm.logo, alt: \"OpenC3\" } })]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticStyle: { \"text-align\": \"center\", \"font-size\": \"18pt\" },\n },\n [_vm._v(_vm._s(_vm.edition))]\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n { staticClass: \"my-0\" },\n [\n _c(\n \"v-list-item-content\",\n _vm._l(_vm.adminTools, function (tool, name) {\n return _c(\n \"div\",\n { key: name },\n [\n _c(\n \"v-btn\",\n {\n staticClass: \"fixcenter\",\n attrs: {\n block: \"\",\n small: \"\",\n href: tool.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [_vm._v(\"\\n Admin\\n \")]\n ),\n ],\n 1\n )\n }),\n 0\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\"v-treeview\", {\n attrs: {\n items: _vm.items,\n open: _vm.initiallyOpen,\n \"item-key\": \"name\",\n dense: \"\",\n \"open-on-click\": \"\",\n \"expand-icon\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"prepend\",\n fn: function (ref) {\n var item = ref.item\n var open = ref.open\n return [\n !item.icon\n ? _c(\"v-icon\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n open\n ? \"mdi-chevron-down\"\n : \"mdi-chevron-right\"\n ) +\n \"\\n \"\n ),\n ])\n : _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _c(\"v-icon\", [\n _vm._v(\" \" + _vm._s(item.icon) + \" \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n {\n key: \"label\",\n fn: function (ref) {\n var item = ref.item\n return [\n _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(item.name) +\n \"\\n \"\n ),\n ]\n ),\n ]\n },\n },\n {\n key: \"append\",\n fn: function (ref) {\n var item = ref.item\n return [\n item.icon\n ? _c(\n \"a\",\n {\n attrs: {\n href: _vm.newTabUrl(item),\n target: \"_blank\",\n },\n },\n [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])],\n 1\n )\n : _vm._e(),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-app-bar\",\n {\n attrs: {\n app: \"\",\n color: \"tertiary darken-3\",\n id: \"openc3-app-toolbar\",\n },\n },\n [\n _c(\"v-app-bar-nav-icon\", {\n on: {\n click: function ($event) {\n _vm.drawer = !_vm.drawer\n },\n },\n }),\n _vm._v(\" \"),\n _c(\"v-divider\", {\n staticClass: \"top-bar-divider-full-height\",\n attrs: { vertical: \"\" },\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticStyle: { width: \"100%\" } }, [\n _c(\"span\", { attrs: { id: \"openc3-menu\" } }),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"justify-right mr-2 pt-2\" },\n [_c(\"scope-selector\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"alert-history\" },\n },\n [_c(\"alert-history\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"notifications\" },\n },\n [_c(\"notifications\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"user-menu\" },\n },\n [_c(\"user-menu\")],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"v-select\", {\n attrs: {\n items: _vm.scopes,\n disabled: _vm.scopes.length <= 1,\n label: \"Scope\",\n dense: \"\",\n \"hide-details\": \"\",\n },\n model: {\n value: _vm.scope,\n callback: function ($$v) {\n _vm.scope = $$v\n },\n expression: \"scope\",\n },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-select\n v-model=\"scope\"\n :items=\"scopes\"\n :disabled=\"scopes.length <= 1\"\n label=\"Scope\"\n dense\n hide-details\n />\n</template>\n\n<script>\nexport default {\n data: function () {\n return {\n scopes: ['DEFAULT'],\n scope: 'DEFAULT',\n }\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\"\nimport script from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1d174a8a')) {\n api.createRecord('1d174a8a', component.options)\n } else {\n api.reload('1d174a8a', component.options)\n }\n module.hot.accept(\"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\", function () {\n api.rerender('1d174a8a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showAlertPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-alert-box-outline \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showAlertPane,\n callback: function ($$v) {\n _vm.showAlertPane = $$v\n },\n expression: \"showAlertPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Alerts\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.clearAlerts },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.alerts.length === 0\n ? _c(\"v-card-text\", [_vm._v(\" No alerts \")])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n },\n },\n [\n _vm._l(_vm.alerts, function (alert, index) {\n return [\n _c(\n \"v-list-item\",\n {\n key: \"alert-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(alert)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n alert.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\"v-list-item-title\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.title) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.alertDialog,\n callback: function ($$v) {\n _vm.alertDialog = $$v\n },\n expression: \"alertDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedAlert.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: { status: _vm.selectedAlert.severity || \"normal\" },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" + _vm._s(_vm.selectedAlert.body) + \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.alertDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"rux-icon\", {\n staticClass: \"astro-icon\",\n attrs: { icon: _vm.icon },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n {\n style: _vm.style,\n attrs: { id: \"rux-icon\", title: _vm.label, size: _vm.size },\n },\n [\n _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 128 128\",\n preserveAspectRatio: \"xMidYMid meet\",\n focusable: \"false\",\n },\n },\n [_c(\"use\", { attrs: { href: _vm.getIcon(this.library, this.icon) } })]\n ),\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <span id=\"rux-icon\" :title=\"label\" :style=\"style\" :size=\"size\">\n <!-- Camel case props becase svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 128 128\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <use :href=\"getIcon(this.library, this.icon)\" />\n </svg>\n </span>\n</template>\n\n<script>\n// This component is a rewrite of the Astro UXDS RuxIcon into Vue\n// Prevents multiple customElement problem with single-spa\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'extra-small',\n },\n color: {\n type: String,\n },\n library: {\n type: String,\n default: '/icons/astro.svg',\n },\n label: {\n type: String,\n default: 'icon',\n },\n },\n computed: {\n style: function () {\n return '--iconColor=' + this.propscolor\n },\n },\n methods: {\n getIcon() {\n return this.library + '#' + this.icon\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RuxIcon.vue?vue&type=template&id=342f670e&\"\nimport script from \"./RuxIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./RuxIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('342f670e')) {\n api.createRecord('342f670e', component.options)\n } else {\n api.reload('342f670e', component.options)\n }\n module.hot.accept(\"./RuxIcon.vue?vue&type=template&id=342f670e&\", function () {\n api.rerender('342f670e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/RuxIcon.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :icon=\"icon\" class=\"astro-icon\" />\n</template>\n\n<script>\nimport RuxIcon from './RuxIcon.vue'\nimport { AstroIconLibrary } from '.'\n\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\nexport default {\n components: {\n RuxIcon,\n },\n props: {\n icon: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroIconLibrary.includes(val)\n },\n },\n },\n}\n</script>\n\n<style scoped>\n.astro-icon {\n fill: currentColor;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\"\nimport script from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b942113a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b942113a')) {\n api.createRecord('b942113a', component.options)\n } else {\n api.reload('b942113a', component.options)\n }\n module.hot.accept(\"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\", function () {\n api.rerender('b942113a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n*/\n\nimport AstroIcon from './AstroIcon'\n\nconst AstroIconLibrary = [\n // These are from the IDs in the default RuxIcon library: https://github.com/RocketCommunicationsInc/astro-components/blob/master/static/icons/astro.svg\n 'altitude',\n 'antenna',\n 'antenna-off',\n 'antenna-receive',\n 'antenna-transmit',\n 'equipment',\n 'mission',\n 'payload',\n 'processor',\n 'processor-alt',\n 'netcom',\n 'propulsion-power',\n 'thermal',\n 'satellite-off',\n 'satellite-receive',\n 'satellite-transmit',\n 'add-large',\n 'add-small',\n 'close-large',\n 'close-small',\n 'collapse',\n 'expand',\n 'lock',\n 'unlock',\n 'search',\n 'caution',\n 'maintenance',\n 'notifications',\n 'settings',\n\n // These are in that SVG file, but they're broken in RuxIcon:\n // 'twitter', // the twitter logo\n // 'progress', // circle\n // 'resources', // filing cabinet\n // 'solar', // grid\n]\n\nconst AstroIconVuetifyValues = AstroIconLibrary.reduce((values, icon) => {\n return {\n [`astro-${icon}`]: {\n component: AstroIcon,\n props: {\n icon,\n },\n },\n ...values,\n }\n}, {})\n\nconst AstroStatusColors = {\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#9ea7ad',\n}\n\nconst getStatusColorContrast = function (severity) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[severity]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nexport {\n AstroIconLibrary,\n AstroIconVuetifyValues,\n AstroStatuses,\n AstroStatusColors,\n getStatusColorContrast,\n}\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showAlertPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showAlertPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Alert box icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-alert-box-outline </v-icon>\n </v-btn>\n </template>\n\n <!-- Alerts list -->\n <v-card>\n <v-card-title>\n Alerts\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clearAlerts\"\n class=\"ml-1\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n </v-card-title>\n <v-card-text v-if=\"alerts.length === 0\"> No alerts </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n >\n <template v-for=\"(alert, index) in alerts\">\n <v-list-item\n @click=\"openDialog(alert)\"\n :key=\"`alert-${index}`\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title>\n {{ alert.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ alert.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"alert.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full alert -->\n <v-dialog v-model=\"alertDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedAlert.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedAlert.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-text>\n {{ selectedAlert.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"alertDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n alerts: [],\n alertDialog: false,\n showAlertPane: false,\n selectedAlert: {},\n }\n },\n watch: {\n showAlertPane: function (val) {\n if (val) {\n this.refreshList()\n }\n if (!val && this.selectedAlert.title) {\n this.alertDialog = false\n this.selectedAlert = {}\n }\n },\n },\n methods: {\n refreshList: function () {\n this.alerts = this.$store.state.notifyHistory\n },\n clearAlerts: function () {\n this.$store.commit('notifyClearHistory')\n this.refreshList()\n this.showAlertPane = false\n },\n openDialog: function (alert, clearToast = false) {\n this.selectedAlert = alert\n this.alertDialog = true\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\"\nimport script from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0e2e40\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3d0e2e40')) {\n api.createRecord('3d0e2e40', component.options)\n } else {\n api.reload('3d0e2e40', component.options)\n }\n module.hot.accept(\"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\", function () {\n api.rerender('3d0e2e40', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showNotificationPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _vm.unreadCount === 0\n ? _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\"\\n mdi-bell-outline\\n \"),\n ])\n : _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n \"offset-x\": \"24\",\n \"offset-y\": \"8\",\n color: _vm.badgeColor,\n bordered: \"\",\n content: _vm.unreadCount,\n },\n },\n [\n _c(\n \"v-icon\",\n {\n attrs: {\n size: _vm.size,\n color: _vm.badgeColor,\n },\n },\n [_vm._v(\" mdi-bell \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showNotificationPane,\n callback: function ($$v) {\n _vm.showNotificationPane = $$v\n },\n expression: \"showNotificationPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Notifications\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.clearNotifications },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_c(\"v-icon\", [_vm._v(\" $astro-settings \")])],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.notifications.length === 0\n ? _c(\"v-card-text\", [\n _vm._v(\"\\n No notifications\\n \"),\n ])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n },\n },\n [\n _vm._l(\n _vm.notificationList,\n function (notification, index) {\n return [\n notification.header\n ? [\n index !== 0\n ? _c(\"v-divider\", {\n key: index,\n staticClass: \"mb-2\",\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"v-subheader\",\n { key: notification.header },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.header) +\n \"\\n \"\n ),\n ]\n ),\n ]\n : _c(\n \"v-list-item\",\n {\n key: \"notification-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(notification)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n notification.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\n \"v-list-item-title\",\n {\n class: {\n \"text--secondary\":\n notification.read,\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.title) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item-action\",\n { staticClass: \"mt-0\" },\n [\n _c(\"v-list-item-action-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(\n notification.time\n )\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }\n ),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.notificationDialog,\n callback: function ($$v) {\n _vm.notificationDialog = $$v\n },\n expression: \"notificationDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: {\n status: _vm.selectedNotification.severity || \"normal\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(_vm.selectedNotification.time)\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.body) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n return _vm.navigate(_vm.selectedNotification.url)\n },\n },\n },\n [\n _vm._v(\"\\n Open\\n \"),\n _c(\"v-icon\", { attrs: { right: \"\" } }, [\n _vm._v(\" mdi-open-in-new \"),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.notificationDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.settingsDialog,\n callback: function ($$v) {\n _vm.settingsDialog = $$v\n },\n expression: \"settingsDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Notification settings \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Show toasts\" },\n model: {\n value: _vm.showToast,\n callback: function ($$v) {\n _vm.showToast = $$v\n },\n expression: \"showToast\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_vm._v(\"\\n close\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","const _severities = [\n // order of severities from highest to lowest\n 'critical',\n 'serious',\n 'caution',\n 'normal',\n 'standby',\n 'off',\n]\n\nconst _getSeverityIndeces = function (severities) {\n return severities.map((severity) => _severities.indexOf(severity.toLowerCase()))\n}\n\nconst highestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.min(...indeces)\n return _severities[index]\n}\n\nconst lowestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.max(...indeces)\n return _severities[index]\n}\n\nconst orderBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.sort((a, b) => {\n return _severities.indexOf(severityGetter(a)) - _severities.indexOf(severityGetter(b))\n })\n}\n\nconst groupBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.reduce((groups, obj) => {\n const severity = severityGetter(obj)\n groups[severity] ||= []\n groups[severity].push(obj)\n return groups\n }, {})\n}\n\nexport { highestSeverity, lowestSeverity, orderBySeverity, groupBySeverity }\n","var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordPing() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ActionCable from '@rails/actioncable'\n//ActionCable.logger.enabled = true\nActionCable.ConnectionMonitor.staleThreshold = 10\n\nexport default class Cable {\n constructor(url = '/openc3-api/cable') {\n this._cable = null\n this._url = url\n }\n disconnect() {\n this._cable.disconnect()\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n if (this._cable == null) {\n let final_url =\n this._url +\n '?scope=' +\n window.openc3Scope +\n '&authorization=' +\n localStorage.openc3Token\n this._cable = ActionCable.createConsumer(final_url)\n }\n return this._cable.subscriptions.create(\n {\n channel,\n ...additionalOptions,\n },\n callbacks\n )\n }\n )\n }\n recordPing() {\n this._cable.connection.monitor.recordPing()\n }\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showNotificationPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showNotificationPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Bell icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon v-if=\"unreadCount === 0\" :size=\"size\">\n mdi-bell-outline\n </v-icon>\n <v-badge\n v-else\n left\n offset-x=\"24\"\n offset-y=\"8\"\n :color=\"badgeColor\"\n bordered\n :content=\"unreadCount\"\n >\n <v-icon :size=\"size\" :color=\"badgeColor\"> mdi-bell </v-icon>\n </v-badge>\n </v-btn>\n </template>\n\n <!-- Notifications list -->\n <v-card>\n <v-card-title>\n Notifications\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clearNotifications\"\n class=\"ml-1\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n <v-btn icon @click=\"toggleSettingsDialog\" class=\"ml-1\">\n <v-icon> $astro-settings </v-icon>\n </v-btn>\n </v-card-title>\n <v-card-text v-if=\"notifications.length === 0\">\n No notifications\n </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n >\n <template v-for=\"(notification, index) in notificationList\">\n <template v-if=\"notification.header\">\n <v-divider v-if=\"index !== 0\" :key=\"index\" class=\"mb-2\" />\n <v-subheader :key=\"notification.header\">\n {{ notification.header }}\n </v-subheader>\n </template>\n\n <v-list-item\n v-else\n :key=\"`notification-${index}`\"\n @click=\"openDialog(notification)\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title\n :class=\"{ 'text--secondary': notification.read }\"\n >\n {{ notification.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ notification.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <v-list-item-action class=\"mt-0\">\n <v-list-item-action-text>\n {{ notification.time | shortDateTime }}\n </v-list-item-action-text>\n <v-spacer />\n </v-list-item-action>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"notification.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full notification -->\n <v-dialog v-model=\"notificationDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedNotification.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedNotification.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-subtitle>\n {{ selectedNotification.time | shortDateTime }}\n </v-card-subtitle>\n <v-card-text>\n {{ selectedNotification.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn\n color=\"primary\"\n text\n @click=\"navigate(selectedNotification.url)\"\n >\n Open\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n <v-btn color=\"primary\" text @click=\"notificationDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Dialog for changing notification settings -->\n <v-dialog v-model=\"settingsDialog\" width=\"600\">\n <v-card>\n <v-card-title> Notification settings </v-card-title>\n <v-card-text>\n <v-switch v-model=\"showToast\" label=\"Show toasts\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"toggleSettingsDialog\">\n close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { formatDistanceToNow } from 'date-fns'\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\nimport Cable from '../../../services/cable.js'\n\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n cable: new Cable(),\n subscription: null,\n notifications: [],\n showNotificationPane: false,\n toastNotification: {},\n notificationDialog: false,\n selectedNotification: {},\n settingsDialog: false,\n showToast: true,\n }\n },\n computed: {\n badgeColor: function () {\n if (!this.unreadCount) {\n return AstroStatusColors['off']\n }\n const severities = this.unreadNotifications\n .map((notification) => notification.severity)\n .filter((val, index, self) => {\n return self.indexOf(val) === index // Unique values\n })\n return AstroStatusColors[highestSeverity(severities)]\n },\n readNotifications: function () {\n return this.notifications\n .filter((notification) => notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadNotifications: function () {\n return this.notifications\n .filter((notification) => !notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadCount: function () {\n let result = this.unreadNotifications.length\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\n result += '+' // Indicate there are more\n }\n return result\n },\n notificationList: function () {\n const groups = groupBySeverity(this.unreadNotifications)\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\n (severity) => {\n const header = {\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\n }\n return [header, ...groups[severity]]\n }\n )\n if (this.readNotifications.length) {\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\n }\n return result\n },\n },\n watch: {\n showNotificationPane: function (val) {\n if (!val) {\n if (this.selectedNotification.title) {\n this.notificationDialog = false\n this.selectedNotification = {}\n } else {\n this.markAllAsRead()\n }\n }\n },\n showToast: function (val) {\n localStorage.notoast = !val\n },\n },\n created: function () {\n this.showToast = localStorage.notoast === 'false'\n this.subscribe()\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n markAllAsRead: function () {\n this.notifications.forEach((notification) => {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n })\n },\n clearNotifications: function () {\n this.markAllAsRead()\n this.notifications = []\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\n this.showNotificationPane = false\n },\n toggleNotificationPane: function () {\n this.showNotificationPane = !this.showNotificationPane\n },\n toggleSettingsDialog: function () {\n this.settingsDialog = !this.settingsDialog\n },\n openDialog: function (notification, clearToast = false) {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n this.selectedNotification = notification\n this.notificationDialog = true\n },\n navigate: function (url) {\n window.open(url, '_blank')\n },\n subscribe: function () {\n this.cable\n .createSubscription(\n 'NotificationsChannel',\n window.openc3Scope,\n {\n received: (data) => this.received(data),\n },\n {\n start_offset:\n localStorage.notificationStreamOffset ||\n localStorage.lastReadNotification,\n }\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n received: function (parsed) {\n this.cable.recordPing()\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\n }\n let foundToast = false\n parsed.forEach((notification) => {\n notification.read =\n notification.msg_id <= localStorage.lastReadNotification\n notification.severity = notification.severity || 'normal'\n if (\n !notification.read && // Don't toast read notifications\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\n ) {\n foundToast = true\n this.toastNotification = notification\n }\n })\n\n if (this.showToast && foundToast) {\n this.$notify[this.toastNotification.severity]({\n ...this.toastNotification,\n type: 'notification',\n duration:\n this.toastNotification.severity === 'critical' ? null : 5000,\n saveToHistory: false,\n })\n }\n\n if (\n this.notifications.length + parsed.length >\n NOTIFICATION_HISTORY_MAX_LENGTH\n ) {\n this.notifications.splice(\n 0,\n this.notifications.length +\n parsed.length -\n NOTIFICATION_HISTORY_MAX_LENGTH\n )\n }\n this.notifications = this.notifications.concat(parsed)\n },\n },\n filters: {\n shortDateTime: function (nsec) {\n if (!nsec) return ''\n const date = new Date(nsec / 1_000_000)\n return formatDistanceToNow(date, { addSuffix: true })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eda8ca60\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('eda8ca60')) {\n api.createRecord('eda8ca60', component.options)\n } else {\n api.reload('eda8ca60', component.options)\n }\n module.hot.accept(\"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\", function () {\n api.rerender('eda8ca60', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showUserMenu },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"offset-y\": \"\",\n \"close-on-content-click\": false,\n \"nudge-width\": 120,\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-account \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showUserMenu,\n callback: function ($$v) {\n _vm.showUserMenu = $$v\n },\n expression: \"showUserMenu\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\"v-card-text\", { staticClass: \"text-center\" }, [\n _c(\n \"div\",\n { staticStyle: { \"text-align\": \"center\", margin: \"5px\" } },\n [_vm._v(_vm._s(_vm.username))]\n ),\n _vm._v(\" \"),\n _vm.authenticated\n ? _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.logout },\n },\n [_vm._v(\" Logout \")]\n ),\n ],\n 1\n )\n : _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.login },\n },\n [_vm._v(\" Login \")]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Colorblind mode\" },\n model: {\n value: _vm.colorblindMode,\n callback: function ($$v) {\n _vm.colorblindMode = $$v\n },\n expression: \"colorblindMode\",\n },\n }),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showUserMenu\" class=\"overlay\" />\n <v-menu\n v-model=\"showUserMenu\"\n transition=\"slide-y-transition\"\n offset-y\n :close-on-content-click=\"false\"\n :nudge-width=\"120\"\n :nudge-bottom=\"20\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-account </v-icon>\n </v-btn>\n </template>\n\n <v-card>\n <v-card-text class=\"text-center\">\n <div style=\"text-align: center; margin: 5px\">{{ username }}</div>\n <div v-if=\"authenticated\">\n <v-btn block @click=\"logout\" color=\"primary\"> Logout </v-btn>\n </div>\n <div v-else>\n <v-btn block @click=\"login\" color=\"primary\"> Login </v-btn>\n </div>\n <div>\n <v-switch label=\"Colorblind mode\" v-model=\"colorblindMode\" />\n </div>\n </v-card-text>\n </v-card>\n </v-menu>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n let user = OpenC3Auth.user()\n return {\n showUserMenu: false,\n authenticated: !!localStorage.openc3Token,\n username: user['name'],\n }\n },\n computed: {\n colorblindMode: {\n get: function () {\n return localStorage.colorblindMode === 'true'\n },\n set: function (val) {\n localStorage.colorblindMode = val\n },\n },\n },\n methods: {\n logout: function () {\n OpenC3Auth.logout()\n },\n login: function () {\n OpenC3Auth.login(location.href)\n },\n },\n}\n</script>\n\n<style scoped>\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26b5fc12\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('26b5fc12')) {\n api.createRecord('26b5fc12', component.options)\n } else {\n api.reload('26b5fc12', component.options)\n }\n module.hot.accept(\"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\", function () {\n api.rerender('26b5fc12', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-navigation-drawer v-model=\"drawer\" app id=\"openc3-nav-drawer\">\n <v-list>\n <v-list-item>\n <v-list-item-icon\n style=\"\n margin-right: auto !important;\n margin-left: auto;\n margin-top: 0px;\n margin-bottom: 0px;\n \"\n >\n <img :src=\"logo\" alt=\"OpenC3\" />\n </v-list-item-icon>\n </v-list-item>\n <div style=\"text-align: center; font-size: 18pt\">{{ edition }}</div>\n <v-list-item class=\"my-0\">\n <v-list-item-content>\n <div v-for=\"(tool, name) in adminTools\" :key=\"name\">\n <v-btn\n block\n small\n :href=\"tool.url\"\n onclick=\"singleSpaNavigate(event)\"\n class=\"fixcenter\"\n >\n Admin\n </v-btn>\n </div>\n </v-list-item-content>\n </v-list-item>\n <v-divider />\n <v-treeview\n :items=\"items\"\n :open=\"initiallyOpen\"\n item-key=\"name\"\n dense\n open-on-click\n expand-icon=\"\"\n >\n <template v-slot:prepend=\"{ item, open }\">\n <v-icon v-if=\"!item.icon\">\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\n </v-icon>\n <a v-else :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n <v-icon> {{ item.icon }} </v-icon>\n </a>\n </template>\n <template v-slot:label=\"{ item }\">\n <a :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n {{ item.name }}\n </a>\n </template>\n <template v-slot:append=\"{ item }\">\n <a v-if=\"item.icon\" :href=\"newTabUrl(item)\" target=\"_blank\">\n <v-icon>mdi-open-in-new</v-icon>\n </a>\n </template>\n </v-treeview>\n </v-list>\n </v-navigation-drawer>\n <v-app-bar app color=\"tertiary darken-3\" id=\"openc3-app-toolbar\">\n <v-app-bar-nav-icon @click=\"drawer = !drawer\" />\n <v-divider vertical class=\"top-bar-divider-full-height\" />\n <span style=\"width: 100%\"><span id=\"openc3-menu\"></span></span>\n <div class=\"justify-right mr-2 pt-2\"><scope-selector /></div>\n <div class=\"justify-right\" data-test=\"alert-history\">\n <alert-history />\n </div>\n <div class=\"justify-right\" data-test=\"notifications\">\n <notifications />\n </div>\n <div class=\"justify-right\" data-test=\"user-menu\"><user-menu /></div>\n </v-app-bar>\n </div>\n</template>\n\n<script>\nimport Api from '../../services/api'\nimport logo from '../../../public/img/logo.png'\nimport { registerApplication, start } from 'single-spa'\nimport ScopeSelector from './components/ScopeSelector.vue'\nimport AlertHistory from './components/AlertHistory.vue'\nimport Notifications from './components/Notifications.vue'\nimport UserMenu from './components/UserMenu.vue'\n\nexport default {\n components: {\n ScopeSelector,\n AlertHistory,\n Notifications,\n UserMenu,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n items: [],\n drawer: true,\n appNav: {},\n logo: logo,\n initiallyOpen: [],\n }\n },\n computed: {\n // a computed getter\n shownTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n adminTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n },\n created() {\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\n (response) => {\n this.appNav = response.data\n\n let id = 1\n // Register apps and start single-spa\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown) {\n if (\n this.appNav[key].category &&\n this.appNav[key].category !== 'Admin'\n ) {\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\n this.initiallyOpen.push(this.appNav[key].category)\n const result = this.items.filter(\n (item) => item.name === this.appNav[key].category\n )\n if (result.length === 0) {\n this.items.push({\n id: id,\n name: this.appNav[key].category,\n children: [\n {\n id: id + 1,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n },\n ],\n })\n id++\n } else {\n result[0].children.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n } else if (!this.appNav[key].category) {\n this.items.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n id++\n\n if (this.appNav[key].folder_name) {\n let folder_name = this.appNav[key].folder_name\n let name = '@openc3/tool-' + folder_name\n registerApplication({\n name: name,\n app: () => System.import(name),\n activeWhen: ['/tools/' + folder_name],\n })\n }\n }\n }\n start({\n urlRerouteOnly: true,\n })\n\n // Redirect / to the first tool\n if (window.location.pathname == '/') {\n for (var key of Object.keys(this.shownTools)) {\n if (this.appNav[key].shown) {\n history.replaceState(null, '', this.appNav[key].url)\n break\n }\n }\n }\n\n // Check every minute if we need to update our token\n setInterval(() => {\n OpenC3Auth.updateToken(120).then(function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n })\n }, 60000)\n }\n )\n },\n methods: {\n newTabUrl(tool) {\n let url = null\n if (tool.url[0] == '/' && tool.url[1] != '/') {\n url = new URL(tool.url, window.location.origin)\n } else {\n url = new URL(tool.url)\n }\n url.searchParams.set('scope', window.openc3Scope)\n return url.href\n },\n },\n}\n</script>\n\n<style scoped>\ndiv a {\n color: white;\n font-size: 16px;\n display: block;\n height: 100%;\n width: 100%;\n}\na.fixcenter {\n display: flex;\n}\n.theme--dark.v-navigation-drawer {\n background-color: var(--v-primary-darken2);\n}\n#openc3-app-toolbar .top-bar-divider-full-height {\n margin: -4px 4px;\n min-height: calc(100% + 8px);\n}\n</style>\n<style>\n/* Remove the padding on root level nodes since we removed the expand icon */\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__level {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__toggle {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview-node__children\n div.v-treeview-node__level:nth-child(1) {\n width: 0px;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js&\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\"\nimport style1 from \"./AppNav.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00ae1763\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('00ae1763')) {\n api.createRecord('00ae1763', component.options)\n } else {\n api.reload('00ae1763', component.options)\n }\n module.hot.accept(\"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\", function () {\n api.rerender('00ae1763', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppNav.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-dialog\",\n {\n attrs: { width: \"500\" },\n model: {\n value: _vm.dialog,\n callback: function ($$v) {\n _vm.dialog = $$v\n },\n expression: \"dialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Clock out of sync \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _vm._v(\n \"\\n We've detected that your clock is approximately\\n \" +\n _vm._s(Math.abs(_vm.approximateDiscrepancySec)) +\n \" seconds\\n \" +\n _vm._s(\n _vm.approximateDiscrepancySec > 0 ? \"behind\" : \"ahead of\"\n ) +\n \" server time.\\n This can cause issues and might have unknown side effects.\\n \"\n ),\n _c(\"v-checkbox\", {\n attrs: { label: \"Don't show this again\" },\n model: {\n value: _vm.suppress,\n callback: function ($$v) {\n _vm.suppress = $$v\n },\n expression: \"suppress\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.dismiss },\n },\n [_vm._v(\" Dismiss \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"dialog\" width=\"500\">\n <v-card>\n <v-card-title> Clock out of sync </v-card-title>\n <v-card-text>\n We've detected that your clock is approximately\n {{ Math.abs(approximateDiscrepancySec) }} seconds\n {{ approximateDiscrepancySec > 0 ? 'behind' : 'ahead of' }} server time.\n This can cause issues and might have unknown side effects.\n <v-checkbox v-model=\"suppress\" label=\"Don't show this again\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"dismiss\"> Dismiss </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nconst ALLOWABLE_DISCREPANCY_MS = 3000\n\nexport default {\n data: function () {\n return {\n dismissed: false,\n suppress: false,\n discrepancy: 0,\n }\n },\n created: function () {\n this.suppress =\n localStorage['suppresswarning__clock_out_of_sync_with_server'] === 'true'\n if (!this.suppress) {\n axios\n .get('/openc3-api/time')\n .then((response) => {\n this.discrepancy = response.data.now_nsec / 1_000_000 - Date.now()\n })\n .catch((error) => {\n // Silently fail\n this.dismissed = true\n })\n }\n },\n methods: {\n dismiss: function () {\n localStorage['suppresswarning__clock_out_of_sync_with_server'] =\n this.suppress\n this.dismissed = true\n },\n },\n computed: {\n approximateDiscrepancySec: function () {\n return (this.discrepancy / 1000).toFixed()\n },\n dialog: function () {\n return (\n !this.dismissed &&\n Math.abs(this.discrepancy) >= ALLOWABLE_DISCREPANCY_MS\n )\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./TimeCheck.vue?vue&type=template&id=2963a6a3&\"\nimport script from \"./TimeCheck.vue?vue&type=script&lang=js&\"\nexport * from \"./TimeCheck.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2963a6a3')) {\n api.createRecord('2963a6a3', component.options)\n } else {\n api.reload('2963a6a3', component.options)\n }\n module.hot.accept(\"./TimeCheck.vue?vue&type=template&id=2963a6a3&\", function () {\n api.rerender('2963a6a3', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue\"\nexport default component.exports","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<script>\nimport { OpenC3Api } from '../../../services/openc3-api'\n\nexport default {\n data: function () {\n return {\n api: null,\n classification: {\n text: '',\n fontColor: 'white',\n backgroundColor: 'red',\n topHeight: 0,\n bottomHeight: 0,\n },\n }\n },\n computed: {\n classificationStyles: function () {\n // JavaScript can't access CSS psudo-elements (::before and ::after).\n // This string sets these JS values to CSS variables, accessible to\n // the style sheet via the style attribute on #app\n return [\n `--classification-text:\"${this.classification.text}\";`,\n `--classification-font-color:${this.classification.fontColor};`,\n `--classification-background-color:${this.classification.backgroundColor};`,\n `--classification-height-top:${this.classification.topHeight}px;`,\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\n ].join('')\n },\n },\n created: function () {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting('classification_banner')\n .then((response) => {\n if (response) {\n this.classification = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n },\n}\n</script>\n\n<style>\n/* push things up and down to make room for the classification banners */\n#app,\n#openc3-nav-drawer {\n margin-top: var(--classification-height-top);\n}\n#openc3-app-toolbar {\n top: var(--classification-height-top);\n}\n#openc3-nav-drawer .v-navigation-drawer__content {\n height: calc(\n 100% - var(--classification-height-top) -\n var(--classification-height-bottom)\n );\n}\n#footer {\n margin-bottom: var(--classification-height-bottom);\n}\n\n/* make the classification banners */\n#app::before,\n#app::after {\n z-index: 99;\n position: fixed;\n left: 0;\n right: 0;\n text-align: center;\n content: var(--classification-text);\n color: var(--classification-font-color);\n background-color: var(--classification-background-color);\n}\n#app::before {\n top: 0;\n font-size: calc(var(--classification-height-top) * 0.7);\n height: var(--classification-height-top);\n}\n#app::after {\n bottom: 0;\n font-size: calc(var(--classification-height-bottom) * 0.7);\n height: var(--classification-height-bottom);\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","var render, staticRenderFns\nimport script from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nexport * from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6e8d3d69')) {\n api.createRecord('6e8d3d69', component.options)\n } else {\n api.reload('6e8d3d69', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"\nexport default component.exports","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-app :style=\"classificationStyles\">\n <app-nav class=\"d-print-none\" edition=\"COSMOS\" />\n\n <!-- Sizes your content based upon application components -->\n <v-main>\n <v-container fluid>\n <div id=\"openc3-tool\"></div>\n <div><router-view /></div>\n </v-container>\n </v-main>\n <app-footer app class=\"d-print-none\" edition=\"COSMOS\" license=\"AGPLv3\" />\n <time-check />\n </v-app>\n</template>\n\n<script>\nimport AppFooter from '../../packages/openc3-tool-common/src/tools/base/AppFooter'\nimport AppNav from '../../packages/openc3-tool-common/src/tools/base/AppNav'\nimport TimeCheck from '../../packages/openc3-tool-common/src/tools/base/components/TimeCheck'\nimport ClassificationBanners from '../../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners'\nexport default {\n components: {\n AppFooter,\n AppNav,\n TimeCheck,\n },\n mixins: [ClassificationBanners],\n}\n</script>\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7ba5bd90')) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/login',\n component: () =>\n import(\n '../../packages/openc3-tool-common/src/tools/base/components/Login'\n ),\n },\n // TODO: Create NotFoundComponent since we're doing history browser mode\n // See: https://router.vuejs.org/guide/essentials/history-mode.html#example-server-configurations\n // {\n // path: '*',\n // component: NotFoundComponent\n // }\n ],\n})\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nconst NOTIFY_HISTORY_MAX_LENGTH = 100\n\nif (!window.hasOwnProperty('OpenC3Store')) {\n window.OpenC3Store = new Vuex.Store({\n state: {\n notifyHistory: [],\n },\n getters: {},\n mutations: {\n notifyAddHistory: function (state, notification) {\n if (state.notifyHistory.length >= NOTIFY_HISTORY_MAX_LENGTH) {\n state.notifyHistory.length = NOTIFY_HISTORY_MAX_LENGTH - 1\n }\n state.notifyHistory.unshift(notification)\n },\n notifyClearHistory: function (state) {\n state.notifyHistory = []\n },\n },\n modules: {},\n })\n}\n\nexport default window.OpenC3Store\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport Vue from 'vue'\nimport Vuetify from 'vuetify'\nimport { AstroIconVuetifyValues } from '../../../packages/openc3-tool-common/src/components/icons/index.js'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n theme: {\n dark: true,\n options: {\n customProperties: true,\n },\n themes: {\n dark: {\n primary: '#005a8f',\n secondary: '#4dacff',\n tertiary: '#283f58',\n },\n light: {\n primary: '#cce6ff',\n secondary: '#cce6ff',\n },\n },\n },\n icons: {\n values: {\n ...AstroIconVuetifyValues,\n },\n },\n})\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { style: _vm.iconStyle })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses } from '.'\nimport dark from '../../../public/icons/status-dark.png'\nimport light from '../../../public/icons/status-light.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroStatuses.includes(val)\n },\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n // The original png dimensions are 192x32 px\n const bgWidth = 192 * this.scaleFactor\n const bgHeight = 32 * this.scaleFactor\n const iconWidth = 32 * this.scaleFactor // Each icon in the png is 32px wide with no space in between\n const offset = AstroStatuses.indexOf(this.status)\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\"\nimport script from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3821337a')) {\n api.createRecord('3821337a', component.options)\n } else {\n api.reload('3821337a', component.options)\n }\n module.hot.accept(\"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\", function () {\n api.rerender('3821337a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue\"\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nVue.config.productionTip = false\n\nimport store from '../../packages/openc3-tool-common/src/plugins/store'\nimport '../../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss'\nimport vuetify from './plugins/vuetify'\n\nimport AstroStatusIndicator from '../../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator'\nVue.component('astro-status-indicator', AstroStatusIndicator)\n\nconst options = OpenC3Auth.getInitOptions()\nOpenC3Auth.init(options).then(() => {\n // Set the scope variable that will be used for the life of this page load\n // It is always default in standard edition\n window.openc3Scope = 'DEFAULT'\n\n new Vue({\n router,\n store,\n vuetify,\n render: (h) => h(App),\n }).$mount('#openc3-main')\n})\n"],"names":["inProgress","dataWebpackPrefix","module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","_ref2","_ref2$params","_ref2$noAuth","noAuth","_ref2$noScope","noScope","_args","wrap","_context","prev","next","OpenC3Auth","updateToken","defaultMinValidity","sent","setTokens","t0","login","localStorage","openc3Token","openc3Scope","abrupt","stop","_x","_x2","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","_objectSpread","get","_ref3","_ref3$headers","put","_ref4","_ref4$headers","post","_ref5","_ref5$headers","delete","_ref6","_ref6$headers","vueInstance","Vue","axiosInstance","origin","_error$response","_error$response2","_error$response2$conf","_error$response3","_error$response3$data","_error$response4","_error$response4$data","_error$response5","_error$response5$data","_error$response5$data2","refreshed","includes","body","exception","class","_error$response6","$notify","serious","title","___CSS_LOADER_EXPORT___","cssWithMappingToString","list","map","item","modules","mediaQuery","dedupe","alreadyImportedModules","_i","_arrayLikeToArray","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","_iterableToArrayLimit","o","minLen","n","_unsupportedIterableToArray","_nonIterableRest","cssMapping","base64","sourceMapping","sourceURLs","sources","sourceRoot","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","memo","insert","style","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","setAttributes","attributes","styleElement","nonce","insertStyleElement","needLayer","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","resolveDirectory","rootDirLevel","meta","urlString","rootDirectoryLevel","numDirsProcessed","finalPath","Number","isInteger","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","__esModule","default","locals","listToStyles","parentId","styles","newStyles","part","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleIndex","applyToSingletonTag","applyToTag","textStore","replaceText","replacement","Boolean","cssNode","childNodes","insertBefore","ssrId","__WEBPACK_EXTERNAL_MODULE__8645__","__WEBPACK_EXTERNAL_MODULE__4091__","__WEBPACK_EXTERNAL_MODULE__4688__","__WEBPACK_EXTERNAL_MODULE__9731__","__WEBPACK_EXTERNAL_MODULE__9191__","asyncGeneratorStep","gen","_next","_throw","arg","info","self","_defineProperty","enumerable","configurable","writable","_toPropertyKey","input","hint","prim","toPrimitive","res","_typeof","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","y","__system_context__","getter","d","definition","f","chunkId","reduce","u","script","needAttach","scripts","s","getAttribute","charset","nc","src","onScriptComplete","event","onload","clearTimeout","doneFns","r","toStringTag","p","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","autoPublicPath","_vm","_h","$createElement","_c","_self","classificationStyles","staticClass","attrs","edition","_v","fluid","app","license","_withStripped","color","height","icon","alt","staticStyle","openc3Version","sourceUrl","_g","_b","cursor","on","contextmenu","openMenu","_f","displayLocal","localDate","utcDate","formatString","menuX","menuY","absolute","model","showMenu","$$v","expression","click","toggleDisplayLocal","toggleDisplay24h","display24h","dateMode","setMonthFirst","setDayFirst","setNumber","requiredArgs","required","toDate","argument","argStr","getTime","NaN","toInteger","dirtyNumber","isNaN","ceil","startOfUTCISOWeek","dirtyDate","date","day","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","output","abs","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","G","localize","era","width","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","quarter","q","M","L","w","week","firstWeek","startOfUTCWeekYear","round","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","B","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","formatLong","timeLongFormatter","time","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","getTimezoneOffsetInMilliseconds","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","clock_zone","clock_12h","clock_dateMode","intervalCount","computed","dateFormat","timeFormat","watch","created","_this","setInterval","methods","_this2","preventDefault","clientX","clientY","$nextTick","filters","component","__file","_classCallCheck","Constructor","_defineProperties","descriptor","toPropertyKey","_createClass","protoProps","staticProps","OpenC3Api","_hashString","_inject_tlm","_tlm","_get_tlm_values","_get_tlm_packet","_exec","kwparams","headerOptions","jsonrpc","keyword_params","t1","json_class","raw","Infinity","POSITIVE_INFINITY","NEGATIVE_INFINITY","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","target_name","interface_name","_len","interface_params","_key","router_name","target_commands","packet","log_writer_name","limits_set","packet_name","_callee2","value_type","stale_time","converted","_args2","_context2","decode_openc3_type","_x3","_x4","_x5","_callee3","items","_args3","_context3","_x6","item_name","_callee4","_args4","_context4","_x7","_x8","_x9","_callee5","item_hash","_args5","_context5","_x10","_x11","command_name","parameter_name","param_list","encode_openc3_type","_cmd","tool","ignored","_callee6","arrayBuffer","hashAsArrayBuffer","uint8ViewOfHash","_context6","isSecureContext","TextEncoder","crypto","subtle","digest","padStart","_x12","components","ClockFooter","getSourceUrl","get_settings","catch","drawer","logo","_l","adminTools","block","small","onclick","initiallyOpen","dense","scopedSlots","_u","ref","newTabUrl","$event","vertical","scopes","disabled","label","scope","showAlertPane","transition","size","top","clearAlerts","alerts","alert","openDialog","left","inline","severity","proxy","alertDialog","selectedAlert","text","xmlns","viewBox","preserveAspectRatio","focusable","getIcon","library","propscolor","RuxIcon","AstroIconLibrary","AstroIconVuetifyValues","AstroIcon","AstroStatusColors","critical","caution","normal","standby","off","AstroStatuses","refreshList","$store","state","notifyHistory","commit","showNotificationPane","unreadCount","badgeColor","bordered","clearNotifications","toggleSettingsDialog","notifications","notificationList","notification","header","notificationDialog","selectedNotification","navigate","right","settingsDialog","showToast","iter","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","differenceInMonths","differenceInCalendarMonths","setDate","setMonth","isLastMonthNotFull","setHours","endOfDay","setFullYear","endOfMonth","isLastDayOfMonth","roundingMap","trunc","defaultRoundingMethod","property","MINUTES_IN_MONTH","dirtyBaseDate","localizeOptions","months","seconds","differenceInMilliseconds","roundingMethod","differenceInSeconds","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","_severities","adapters","logger","WebSocket","log","messages","enabled","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","getPollInterval","reconnectionBackoffRate","min","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","events","handler","reconnect","reload","confirmSubscription","notify","notifyAll","willAttemptReconnect","Subscription","mixin","properties","perform","action","command","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","findAll","sendCommand","callbackName","Consumer","_url","createWebSocketURL","connect","ActionCable","Cable","_cable","callbacks","additionalOptions","final_url","getConfig","NOTIFICATION_HISTORY_MAX_LENGTH","cable","toastNotification","severities","unreadNotifications","indeces","_getSeverityIndeces","_toConsumableArray","highestSeverity","readNotifications","sort","groups","objects","severityGetter","groupBySeverity","orderBySeverity","flatMap","markAllAsRead","notoast","destroyed","lastReadNotification","msg_id","notificationStreamOffset","toggleNotificationPane","createSubscription","received","start_offset","foundToast","duration","saveToHistory","shortDateTime","nsec","formatDistanceToNow","showUserMenu","margin","authenticated","logout","colorblindMode","user","set","ScopeSelector","AlertHistory","Notifications","UserMenu","appNav","shownTools","_Object$keys","shown","category","_i2","_Object$keys2","Api","_loop","_Object$keys3","_i3","children","folder_name","registerApplication","System","import","activeWhen","urlRerouteOnly","_i4","_Object$keys4","history","replaceState","URL","searchParams","dialog","approximateDiscrepancySec","suppress","dismiss","dismissed","discrepancy","now_nsec","toFixed","classification","fontColor","backgroundColor","topHeight","bottomHeight","load","get_setting","AppFooter","AppNav","TimeCheck","mixins","ClassificationBanners","cov_1khetde6f7","actualCoverage","Router","mode","routes","Vuex","OpenC3Store","getters","mutations","notifyAddHistory","NOTIFY_HISTORY_MAX_LENGTH","notifyClearHistory","cov_hlr4jmzey","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","Vuetify","theme","dark","customProperties","themes","primary","secondary","tertiary","light","icons","getOwnPropertyDescriptors","iconStyle","large","scale","scaleFactor","bgWidth","bgHeight","iconWidth","cov_14089wz6i9","AstroStatusIndicator","getInitOptions","init","router","store","vuetify","App","$mount"],"sourceRoot":""}
1
+ {"version":3,"file":"openc3-tool-base.js","mappings":"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","sources":["webpack://tool-base/webpack/runtime/load script","webpack://tool-base/../node_modules/axios/index.js","webpack://tool-base/../node_modules/axios/lib/adapters/xhr.js","webpack://tool-base/../node_modules/axios/lib/axios.js","webpack://tool-base/../node_modules/axios/lib/cancel/CancelToken.js","webpack://tool-base/../node_modules/axios/lib/cancel/CanceledError.js","webpack://tool-base/../node_modules/axios/lib/cancel/isCancel.js","webpack://tool-base/../node_modules/axios/lib/core/Axios.js","webpack://tool-base/../node_modules/axios/lib/core/AxiosError.js","webpack://tool-base/../node_modules/axios/lib/core/InterceptorManager.js","webpack://tool-base/../node_modules/axios/lib/core/buildFullPath.js","webpack://tool-base/../node_modules/axios/lib/core/dispatchRequest.js","webpack://tool-base/../node_modules/axios/lib/core/mergeConfig.js","webpack://tool-base/../node_modules/axios/lib/core/settle.js","webpack://tool-base/../node_modules/axios/lib/core/transformData.js","webpack://tool-base/../node_modules/axios/lib/defaults/index.js","webpack://tool-base/../node_modules/axios/lib/defaults/transitional.js","webpack://tool-base/../node_modules/axios/lib/env/data.js","webpack://tool-base/../node_modules/axios/lib/helpers/bind.js","webpack://tool-base/../node_modules/axios/lib/helpers/buildURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/combineURLs.js","webpack://tool-base/../node_modules/axios/lib/helpers/cookies.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://tool-base/../node_modules/axios/lib/helpers/isAxiosError.js","webpack://tool-base/../node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://tool-base/../node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://tool-base/../node_modules/axios/lib/helpers/null.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseHeaders.js","webpack://tool-base/../node_modules/axios/lib/helpers/parseProtocol.js","webpack://tool-base/../node_modules/axios/lib/helpers/spread.js","webpack://tool-base/../node_modules/axios/lib/helpers/toFormData.js","webpack://tool-base/../node_modules/axios/lib/helpers/validator.js","webpack://tool-base/../node_modules/axios/lib/utils.js","webpack://tool-base/../packages/openc3-tool-common/src/services/api.js","webpack://tool-base/../packages/openc3-tool-common/src/services/axios.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?5118","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?e84a","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?63f3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?5107","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?6ed4","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?cb88","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?c20c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?3ed1","webpack://tool-base/./node_modules/css-loader/dist/runtime/api.js","webpack://tool-base/./node_modules/css-loader/dist/runtime/cssWithMappingToString.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://tool-base/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/auto-public-path.js","webpack://tool-base/./node_modules/systemjs-webpack-interop/public-path.js","webpack://tool-base/./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack://tool-base/../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss?743b","webpack://tool-base/./node_modules/vue-style-loader/lib/listToStyles.js","webpack://tool-base/./node_modules/vue-style-loader/lib/addStylesClient.js","webpack://tool-base/external system \"single-spa\"","webpack://tool-base/external system \"vue\"","webpack://tool-base/external system \"vue-router\"","webpack://tool-base/external system \"vuetify\"","webpack://tool-base/external system \"vuex\"","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/webpack/bootstrap","webpack://tool-base/webpack/runtime/__system_context__","webpack://tool-base/webpack/runtime/compat get default export","webpack://tool-base/webpack/runtime/define property getters","webpack://tool-base/webpack/runtime/ensure chunk","webpack://tool-base/webpack/runtime/get javascript chunk filename","webpack://tool-base/webpack/runtime/hasOwnProperty shorthand","webpack://tool-base/webpack/runtime/make namespace object","webpack://tool-base/webpack/runtime/publicPath","webpack://tool-base/webpack/runtime/jsonp chunk loading","webpack://tool-base/webpack/runtime/nonce","webpack://tool-base/./node_modules/systemjs-webpack-interop/auto-public-path/1.js","webpack://tool-base/./src/App.vue?9dca","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?f377","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?53d5","webpack://tool-base/../node_modules/date-fns/esm/_lib/requiredArgs/index.js","webpack://tool-base/../node_modules/date-fns/esm/toDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/toInteger/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultOptions/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/formatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/protectedTokens/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/defaultLocale/index.js","webpack://tool-base/../node_modules/date-fns/esm/locale/en-US/index.js","webpack://tool-base/../node_modules/date-fns/esm/format/index.js","webpack://tool-base/../node_modules/date-fns/esm/isValid/index.js","webpack://tool-base/../node_modules/date-fns/esm/isDate/index.js","webpack://tool-base/../node_modules/date-fns/esm/subMilliseconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/addMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?34de","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue?61eb","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://tool-base/../packages/openc3-tool-common/src/services/openc3-api.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?d240","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?fdce","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppFooter.vue?c5a1","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?be73","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?5ac3","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue?8317","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?e43a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?892c","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?fc71","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?4a0a","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/RuxIcon.vue?841b","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?acc1","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?3c27","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroIcon.vue?97f9","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?1dea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?eaa2","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue?0a7c","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?83ba","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://tool-base/../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://tool-base/../node_modules/date-fns/esm/compareAsc/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInCalendarMonths/index.js","webpack://tool-base/../node_modules/date-fns/esm/isLastDayOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfDay/index.js","webpack://tool-base/../node_modules/date-fns/esm/endOfMonth/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/roundingMethods/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/assign/index.js","webpack://tool-base/../node_modules/date-fns/esm/formatDistance/index.js","webpack://tool-base/../node_modules/date-fns/esm/_lib/cloneObject/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInSeconds/index.js","webpack://tool-base/../node_modules/date-fns/esm/differenceInMilliseconds/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/util/AstroStatus.js","webpack://tool-base/../node_modules/@rails/actioncable/app/assets/javascripts/actioncable.esm.js","webpack://tool-base/../packages/openc3-tool-common/src/services/cable.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue","webpack://tool-base/../node_modules/date-fns/esm/formatDistanceToNow/index.js","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?7f57","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?35f7","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/Notifications.vue?68ea","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?9364","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?6931","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?2ffc","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue?4315","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?fe83","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?4ede","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?ee4e","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/AppNav.vue?e59f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?054f","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?bb40","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue?c676","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?2259","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?e925","webpack://tool-base/../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue?09ba","webpack://tool-base/src/App.vue","webpack://tool-base/./src/App.vue?b39b","webpack://tool-base/./src/App.vue","webpack://tool-base/./src/router.js","webpack://tool-base/../packages/openc3-tool-common/src/plugins/store.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://tool-base/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://tool-base/./src/plugins/vuetify.js","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?8f08","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?6e05","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue","webpack://tool-base/../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue?c50f","webpack://tool-base/./src/openc3-tool-base.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"tool-base:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nconst request = async function (\n method,\n url,\n { data, params = {}, headers, noAuth = false, noScope = false } = {}\n) {\n if (!noAuth) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n headers['Authorization'] = localStorage.openc3Token\n }\n if (!noScope && !params['scope']) {\n params['scope'] = window.openc3Scope\n }\n return axios({\n method,\n url,\n data,\n params,\n headers,\n })\n}\n\nconst acceptOnlyDefaultHeaders = {\n Accept: 'application/json',\n}\n\nconst fullDefaultHeaders = {\n ...acceptOnlyDefaultHeaders,\n 'Content-Type': 'application/json',\n}\n\nexport default {\n get: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('get', path, { params, headers, noScope, noAuth })\n },\n\n put: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('put', path, { data, params, headers, noScope, noAuth })\n },\n\n post: function (\n path,\n { data, params, headers = fullDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('post', path, { data, params, headers, noScope, noAuth })\n },\n\n delete: function (\n path,\n { params, headers = acceptOnlyDefaultHeaders, noScope, noAuth } = {}\n ) {\n return request('delete', path, { params, headers, noScope, noAuth })\n },\n}\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from 'axios'\nimport Vue from 'vue'\n\nconst vueInstance = new Vue()\n\nconst axiosInstance = axios.create({\n baseURL: location.origin,\n timeout: 60000,\n params: {},\n})\n\naxiosInstance.interceptors.response.use(\n (response) => response,\n (error) => {\n if (error.response) {\n if (error.response.status === 401) {\n OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity, true).then(\n function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n }\n )\n }\n // Individual tools can set 'Ignore-Errors' to an error code\n // they potentially expect, e.g. '500', in which case we ignore it\n // For example in CommandSender.vue:\n // obs = this.api.cmd(targetName, commandName, paramList, {\n // 'Ignore-Errors': '500',\n // })\n if (\n error.response.headers['ignore-errors'] &&\n error.response.headers['ignore-errors'].includes(\n error.response.status.toString()\n )\n ) {\n return Promise.reject(error)\n }\n let body = `HTTP ${error.response.status} - `\n if (error.response?.statusText) {\n body += `${error.response.statusText} `\n }\n if (error.response?.config?.data) {\n body += `${error.response.config.data} `\n }\n if (error.response?.data?.message) {\n body += `${error.response.data.message}`\n } else if (error.response?.data?.exception) {\n body += `${error.response.data.exception}`\n } else if (error.response?.data?.error?.message) {\n if (error.response.data.error.class) {\n body += `${error.response.data.error.class} `\n }\n body += `${error.response.data.error.message}`\n } else {\n body += `${error.response?.data}`\n }\n if (vueInstance.$notify) {\n vueInstance.$notify.serious({\n title: 'Network error',\n body,\n })\n }\n throw error\n } else {\n throw error\n }\n }\n)\n\nexport default axiosInstance\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_splash.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_variables.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_mixins.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_main.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_topbar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_sidebar.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_profile.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_menu.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_content.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_footer.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_responsive.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_utils.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/sass/_dashboard.scss\",\"webpack://./../packages/openc3-tool-common/src/assets/stylesheets/layout/_overrides.scss\"],\"names\":[],\"mappings\":\"AAAA,eCAA,UACI,CAAA,WACA,CAAA,cACA,CAAA,kBCiCgB,CAAA,+DC2BhB,CAAA,4GACA,CAAA,kEACA,CAAA,6DACA,CAAA,8DACA,CAAA,8DACA,CAAA,2GACA,CAAA,iCF/DA,UACI,CAAA,WACA,CAAA,eACA,CAAA,iBACA,CAAA,QACA,CAAA,OACA,CAAA,iBACA,CAAA,gBACA,CAAA,4EAIJ,UACI,CAAA,WACA,CAAA,iBACA,CAAA,qBCmBU,CAAA,UDjBV,CAAA,iBACA,CAAA,KACA,CAAA,MACA,CAAA,uDAEA,CAAA,+CACA,CAAA,sCAGJ,2BACI,CAAA,mBACA,CAAA,iCAGJ,QACI,0BAAA,CAAA,IACA,0BAAA,CAAA,CAAA,yBAGJ,QACI,kBACI,CAAA,0BACA,CAAA,IACF,kBACI,CAAA,0BACA,CAAA,CAAA,EGhDd,qBACE,CAAA,KAGF,WACE,CAAA,KAGF,mDACE,CAAA,cFRS,CAAA,UAEC,CAAA,QEUV,CAAA,SACA,CAAA,eACA,CAAA,kCACA,CAAA,iCACA,CAAA,EAGF,oBACE,CAAA,gBAGF,SACE,CAAA,qBAKF,uBACE,CAAA,eC/BF,cACE,CAAA,WACA,CAAA,4BACA,CAAA,UACA,CAAA,WACA,CAAA,OACA,CAAA,kBH8BkB,CAAA,+DC2BhB,CAAA,4GACA,CAAA,kEACA,CAAA,6DACA,CAAA,8DACA,CAAA,8DACA,CAAA,2GACA,CAAA,wBE5DF,CAAA,sBAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,qBFqHE,UACI,CAAA,aACA,CAAA,UACA,CAAA,oCEtHN,WACE,CAAA,aACA,CAAA,2BACA,CAAA,8BACA,CAAA,sBACA,CAAA,2CAEA,iBACE,CAAA,UHqBY,CAAA,gBGnBZ,CAAA,oBACA,CAAA,oBACA,CAAA,yBACA,CAAA,uBAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,iDAEA,aHeiB,CAAA,iDGXjB,cFoFF,CAAA,gBACA,CAAA,6BACA,CAAA,mEEjFI,aACE,CAAA,wEAGF,cACE,CAAA,YACA,CAAA,oEAGF,iBACE,CAAA,cACA,CAAA,UACA,CAAA,QACA,CAAA,UACA,CAAA,WACA,CAAA,iBACA,CAAA,gBACA,CAAA,UHba,CAAA,wBADE,CAAA,sBGiBQ,CAAA,yBAAA,CAAA,iBAAA,CAAA,0DAK7B,SACE,CAAA,iBACA,CAAA,oBACA,CAAA,QACA,CAAA,gEAEA,oBACE,CAAA,aACA,CAAA,cHnEG,CAAA,sBGqEH,CAAA,4BACA,CAAA,cACA,CAAA,uBACA,CAAA,eACA,CAAA,UH/BiB,CAAA,WGiCjB,CAAA,wBACA,CAAA,UACA,CAAA,sBACuB,CAAA,yBAAA,CAAA,iBAAA,CAAA,2FAEvB,UHtCiB,CAAA,UGwCf,CAAA,2BACA,CAAA,yBAAA,CAAA,8BAAA,CAAA,sBAAA,CAAA,iFAEF,UH3CiB,CAAA,UG6Cf,CAAA,2BACA,CAAA,yBAAA,CAAA,8BAAA,CAAA,sBAAA,CAAA,kFAEF,UHhDiB,CAAA,UGkDf,CAAA,2BACA,CAAA,yBAAA,CAAA,8BAAA,CAAA,sBAAA,CAAA,sFAEF,UHrDiB,CAAA,UGuDf,CAAA,2BACA,CAAA,yBAAA,CAAA,8BAAA,CAAA,sBAAA,CAAA,qFAIJ,cACE,CAAA,iBACA,CAAA,QACA,CAAA,SACA,CAAA,sEAIA,2BHtEe,CAAA,iGGwEb,SACE,CAAA,uFAEF,SACE,CAAA,wFAEF,SACE,CAAA,4FAEF,SACE,CAAA,2FAIJ,aHtFe,CAAA,mCG6FrB,cACE,CAAA,oBACA,CAAA,oBACA,CAAA,UHjGc,CAAA,yBGmGd,CAAA,uBAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,wCAEA,aACE,CAAA,yCAGF,aHxGmB,CAAA,sBG6GrB,cACE,CAAA,gBCvJJ,cACI,CAAA,WACA,CAAA,WACA,CAAA,WACA,CAAA,eACA,CAAA,gBACA,CAAA,qBACA,CAAA,wBACA,CAAA,6BACA,CAAA,2BAAA,CAAA,gCAAA,CAAA,wBAAA,CAAA,4CACgB,CAAA,yCAAA,CAAA,oCAAA,CAAA,6EAEhB,2BAEI,CAAA,6BAGJ,iBACI,CAAA,eACA,CAAA,gCAGJ,oBACI,CAAA,eACA,CAAA,cACA,CAAA,UACA,CAAA,WACA,CAAA,gBACA,CAAA,iBACA,CAAA,UJhBa,CAAA,wBADE,CAAA,sBIoBQ,CAAA,yBAAA,CAAA,iBAAA,CAAA,gBChC/B,iBACE,CAAA,qBACA,CAAA,oBAEA,UACE,CAAA,WACA,CAAA,qCAGF,cACE,CAAA,oBACA,CAAA,mBACA,CAAA,yBACA,CAAA,uBAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,uCAEA,oBACE,CAAA,cACA,CAAA,qBACA,CAAA,mBAIJ,oBACE,CAAA,SACA,CAAA,QACA,CAAA,6BAGE,UACE,CAAA,WACA,CAAA,aACA,CAAA,eACA,CAAA,cACA,CAAA,yBACA,CAAA,uBAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,mCAEA,aLfa,CAAA,kCKmBb,iBACE,CAAA,qBACA,CAAA,+BAGF,qBACE,CAAA,mGAKN,YAEE,CAAA,mGAGF,iBAEE,CAAA,uDAGF,eACE,CAAA,mDACA,CAAA,uDAGF,eACE,CAAA,oCACA,CAAA,2DAOF,aLvDY,CAAA,iEK0DV,aLzDe,CAAA,yCK8DjB,qBL5DoB,CAAA,mDKgEhB,aLnEQ,CAAA,yDKsEN,aLrEW,CAAA,0DKgFjB,ULxEgB,CAAA,gEK2Ed,aL1EmB,CAAA,wCK+ErB,wBL7EwB,CAAA,kDKiFpB,ULpFY,CAAA,wDKuFV,aLtFe,CAAA,uBM9BzB,oBACI,CAAA,aAGJ,oBACI,CAAA,QACA,CAAA,SACA,CAAA,kBAGI,cACI,CAAA,iBACA,CAAA,oBACA,CAAA,aACA,CAAA,yBACA,CAAA,uBAAA,CAAA,4BAAA,CAAA,oBAAA,CAAA,oBAEA,cACI,CAAA,qBACA,CAAA,uBAGJ,iBACI,CAAA,qBACA,CAAA,gBACA,CAAA,oBACA,CAAA,wCAGJ,iBACI,CAAA,OACA,CAAA,SACA,CAAA,eACA,CAAA,qCAGJ,eACI,CAAA,wBAGJ,cLgFR,CAAA,gBACA,CAAA,mCACA,CAAA,+DAxHA,WK8CuC,CAAA,kBAOnC,WACI,CAAA,uBAEA,cNzDD,CAAA,6BM+DC,4CACI,CAAA,mBAIR,oBACI,CAAA,QACA,CAAA,SACA,CAAA,kBACA,CAAA,wBAGI,cACI,CAAA,iBACA,CAAA,iBACA,CAAA,6BAEA,cNnEF,CAAA,iCMwEF,kBACI,CAAA,mGAIR,YAEI,CAAA,mGAGJ,iBAEI,CAAA,uDAGJ,eACI,CAAA,mDACA,CAAA,uDAGJ,eACI,CAAA,oCACA,CAAA,sBAMhB,kBNhGmB,CAAA,8DCkCf,CAAA,8GACA,CAAA,iEACA,CAAA,4DACA,CAAA,6DACA,CAAA,+DACA,CAAA,kHACA,CAAA,wCK6DQ,yCACI,CAAA,mDAIA,4CACI,CAAA,yCAIR,qBN1GY,CAAA,wCMgHZ,aNnHI,CAAA,2DMsHA,aN3HW,CAAA,8CM+HX,aNzHK,CAAA,wDM+HL,qBN7HQ,CAAA,aADF,CAAA,qBMuItB,kBNlIuB,CAAA,8DCyBnB,CAAA,8GACA,CAAA,iEACA,CAAA,4DACA,CAAA,6DACA,CAAA,+DACA,CAAA,kHACA,CAAA,uCKwGQ,sCACI,CAAA,kDAIA,yCACI,CAAA,wCAIR,wBN5IgB,CAAA,uCMkJhB,UNrJQ,CAAA,0DMwJJ,aNtKW,CAAA,6CM0KX,aN3JS,CAAA,uDMiKT,wBN/JY,CAAA,aADF,CAAA,aO/B1B,+BACE,CAAA,6BAAA,CAAA,kCAAA,CAAA,0BAAA,CAAA,2BACA,CAAA,eCFF,+BACI,CAAA,6BAAA,CAAA,kCAAA,CAAA,0BAAA,CAAA,wBR6CY,CAAA,eQ3CZ,CAAA,mBAEA,qBACI,CAAA,4BAGJ,qBACI,CAAA,0BCVR,8CAGY,MACI,CAAA,0FAGJ,aACI,CAAA,6EAIA,MACI,CAAA,4EAGJ,UACI,CAAA,6CAMR,UACI,CAAA,wFAGJ,iBACI,CAAA,4EAIA,MACI,CAAA,sJAGJ,aACI,CAAA,CAAA,0BAOpB,+BAEQ,MACI,CAAA,4DAGJ,aACI,CAAA,gCAGJ,wBACI,CAAA,sBAAA,CAAA,2BAAA,CAAA,mBAAA,CAAA,WACA,CAAA,eACA,CAAA,6BAGJ,YACI,CAAA,cACA,CAAA,UACA,CAAA,WACA,CAAA,QACA,CAAA,MACA,CAAA,WACA,CAAA,wBT3DE,CAAA,US6De,CAAA,wBRmCzB,CAAA,6DQ/BQ,MACI,CAAA,0DAGJ,aACI,CAAA,sBAKZ,eACI,CAAA,CAAA,GCnFR,kBACI,CAAA,QACA,CAAA,cACA,CAAA,GAGJ,cACI,CAAA,kBACA,CAAA,QACA,CAAA,MAGJ,qBACI,CAAA,WACA,CAAA,kBACA,CAAA,sBVXW,CAAA,yBAAA,CAAA,iBAAA,CAAA,mBUcX,kBACI,CAAA,SAGJ,mBACI,CAAA,+BACA,CAAA,YACA,CAAA,cACA,CAAA,qBAEA,iBACI,CAAA,4BAOR,oBACI,CAAA,sBACA,CAAA,gBACA,CAAA,iCAEA,kBACI,CAAA,eACA,CAAA,cACA,CAAA,oBC1CR,iBACI,CAAA,2BAEA,cACI,CAAA,4BAGJ,aXNa,CAAA,aWQT,CAAA,eACA,CAAA,2BAGJ,UACI,CAAA,iBACA,CAAA,QACA,CAAA,UACA,CAAA,cACA,CAAA,gBACA,CAAA,sBXjBG,CAAA,yBAAA,CAAA,iBAAA,CAAA,oCWoBH,wBACI,CAAA,qCAGJ,wBACI,CAAA,mCAGJ,wBACI,CAAA,0BAKZ,YACI,CAAA,gCVsFJ,UACI,CAAA,aACA,CAAA,UACA,CAAA,oCUtFA,WACI,CAAA,UACA,CAAA,SACA,CAAA,iBACA,CAAA,WACA,CAAA,yCAEA,cACI,CAAA,6CAIR,WACI,CAAA,qBACA,CAAA,UACA,CAAA,SACA,CAAA,WACA,CAAA,+CAEA,cACI,CAAA,qBACA,CAAA,kBACA,CAAA,oDAGJ,aXhES,CAAA,cWkEL,CAAA,aACA,CAAA,sBAKZ,oBACI,CAAA,QACA,CAAA,SACA,CAAA,yBAEA,kBACI,CAAA,+BACA,CAAA,+BV2CR,UACI,CAAA,aACA,CAAA,UACA,CAAA,kCU1CA,qBACI,CAAA,iBACA,CAAA,iCAGJ,qBACI,CAAA,wBAGJ,WACI,CAAA,cACA,CAAA,aX9FS,CAAA,uCWkGb,gBACI,CAAA,0CAKJ,gBACI,CAAA,wBAMJ,oBACI,CAAA,SACA,CAAA,QACA,CAAA,2BAEA,+BACI,CAAA,kCAEA,WACI,CAAA,UACA,CAAA,qBACA,CAAA,oBACA,CAAA,iBACA,CAAA,aACA,CAAA,sBACuB,CAAA,yBAAA,CAAA,iBAAA,CAAA,oCACvB,CAAA,kCAAA,CAAA,uCAAA,CAAA,+BAAA,CAAA,wCAEA,iBACI,CAAA,UACA,CAAA,QACA,CAAA,cACA,CAAA,yCAGJ,iBACI,CAAA,UACA,CAAA,QACA,CAAA,cACA,CAAA,aX5IH,CAAA,wCWgJD,cACI,CAAA,qBACA,CAAA,sCAIR,QACI,CAAA,sCAKZ,gBACI,CAAA,0BAIR,oBACI,CAAA,SACA,CAAA,QACA,CAAA,6BAEA,+BACI,CAAA,gBACA,CAAA,oCAEA,cACI,CAAA,UACA,CAAA,wBACA,CAAA,eACA,CAAA,oBACA,CAAA,kBACA,CAAA,sBX/KD,CAAA,yBAAA,CAAA,iBAAA,CAAA,yCWmLH,4BACI,CAAA,wCAGJ,QACI,CAAA,kDAGJ,cACI,CAAA,qBACA,CAAA,iDAGJ,gBACI,CAAA,aXlMK,CAAA,cYCrB,wBACE,CAAA,eAEF,wBACE,CAAA,YAEF,wBACE,CAAA,aAEF,qBACE,CAAA,eAEF,wBACE,CAAA,cAEF,qBACE,CAAA,cAEF,qBACE,CAAA,0BAIF,iDACE,CAAA,iCAEF,mDACE,CAAA,2EAEF,kDAIE,CAAA,yEAIF,oDAGE,CAAA,4QAEF,qDAUE,CAAA,MAGF,iBAEE,CAAA,gBAEA,CAAA,2BAIF,UACE\",\"sourcesContent\":[\".splash-screen{width:100%;height:100%;position:fixed;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 )}.splash-screen .splash-container{width:40px;height:40px;margin:0px auto;position:absolute;left:50%;top:50%;margin-left:-20px;margin-top:-20px}.splash-screen .splash-double-bounce1,.splash-screen .splash-double-bounce2{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;-webkit-animation:splash-bounce 2s infinite ease-in-out;animation:splash-bounce 2s infinite ease-in-out}.splash-screen .splash-double-bounce2{-webkit-animation-delay:-1s;animation-delay:-1s}@-webkit-keyframes splash-bounce{0%,100%{-webkit-transform:scale(0)}50%{-webkit-transform:scale(1)}}@keyframes splash-bounce{0%,100%{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}}*{box-sizing:border-box}html{height:100%}body{font-family:\\\"Open Sans\\\",\\\"Helvetica Neue\\\",sans-serif;font-size:14px;color:#333;margin:0;padding:0;min-height:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{text-decoration:none}.layout-wrapper{padding:0}.v-application--wrap{min-height:0 !important}.layout-topbar{position:fixed;height:80px;padding:.7em 1.5em 0em 1.5em;color:#fff;z-index:999;right:0;background:#001724;background:-moz-linear-gradient(left, #001724 0%, #001724 100%);background:-webkit-gradient(linear, left top, right top, color-stop(0%, #001724), color-stop(100%, #001724));background:-webkit-linear-gradient(left, #001724 0%, #001724 100%);background:-o-linear-gradient(left, #001724 0%, #001724 100%);background:-ms-linear-gradient(left, #001724 0%, #001724 100%);background:linear-gradient(to right, #001724 0%, #001724 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 );-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s}.layout-topbar:after{content:\\\"\\\";display:table;clear:both}.layout-topbar .layout-topbar-icons{float:right;display:block;-moz-animation-duration:.5s;-webkit-animation-duration:.5s;animation-duration:.5s}.layout-topbar .layout-topbar-icons button{position:relative;color:#fff;margin-left:20px;display:inline-block;text-decoration:none;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-topbar-icons button:hover{color:#c3e8fb}.layout-topbar .layout-topbar-icons button:focus{outline:0 none;outline-offset:0;box-shadow:0 0 0 .2em #8dcdff}.layout-topbar .layout-topbar-icons button span.layout-topbar-icon{font-size:2em}.layout-topbar .layout-topbar-icons button span.layout-topbar-item-text{font-size:20px;display:none}.layout-topbar .layout-topbar-icons button span.layout-topbar-badge{position:absolute;font-size:10px;right:-5px;top:-5px;width:16px;height:16px;text-align:center;line-height:16px;color:#fff;background-color:#ef6262;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-topbar .layout-topbar-icons .layout-topbar-search{padding:0;position:relative;display:inline-block;top:-4px}.layout-topbar .layout-topbar-icons .layout-topbar-search input{display:inline-block;border:0 none;font-size:14px;background:transparent;border-bottom:2px solid #fff;outline:0 none;-webkit-box-shadow:none;box-shadow:none;color:#fff;width:100px;padding:1px 20px 1px 1px;margin:0px;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-webkit-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input::-moz-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search input:-ms-input-placeholder{color:#fff;opacity:.7;-moz-transition:opacity .2s;-o-transition:opacity .2s;-webkit-transition:opacity .2s;transition:opacity .2s}.layout-topbar .layout-topbar-icons .layout-topbar-search .layout-topbar-search-icon{font-size:18px;position:absolute;top:-1px;right:0px}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input{border-bottom-color:#c3e8fb}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-webkit-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input::-moz-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover input:-ms-input-placeholder{opacity:1}.layout-topbar .layout-topbar-icons .layout-topbar-search:hover .layout-topbar-search-icon{color:#c3e8fb}.layout-topbar .layout-menu-button{cursor:pointer;display:inline-block;text-decoration:none;color:#fff;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-topbar .layout-menu-button span{font-size:2em}.layout-topbar .layout-menu-button:hover{color:#c3e8fb}.layout-topbar button{cursor:pointer}.layout-sidebar{position:fixed;width:250px;height:100%;z-index:999;overflow-y:auto;user-select:none;-moz-user-select:none;-webkit-user-select:none;-moz-transition:transform .2s;-o-transition:transform .2s;-webkit-transition:transform .2s;transition:transform .2s;-webkit-box-shadow:0 0 6px 0 rgba(0,0,0,.16);-moz-box-shadow:0 0 6px 0 rgba(0,0,0,.16);box-shadow:0 0 6px 0 rgba(0,0,0,.16)}.layout-sidebar.layout-sidebar-enter,.layout-sidebar.layout-sidebar-leave-to{transform:translateX(-100%)}.layout-sidebar .layout-logo{text-align:center;margin-top:24px}.layout-sidebar .menuitem-badge{display:inline-block;margin-left:4px;font-size:10px;width:16px;height:16px;line-height:16px;text-align:center;color:#fff;background-color:#007be5;-moz-border-radius:50%;-webkit-border-radius:50%;border-radius:50%}.layout-profile{text-align:center;padding:10px 0 10px 0}.layout-profile img{width:56px;margin:10px}.layout-profile .layout-profile-link{cursor:pointer;display:inline-block;margin-bottom:.75em;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile .layout-profile-link i{display:inline-block;font-size:16px;vertical-align:middle}.layout-profile ul{list-style-type:none;padding:0;margin:0}.layout-profile ul li button{width:100%;padding:1em;border:0 none;border-radius:0;cursor:pointer;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-profile ul li button:hover{color:#0388e5}.layout-profile ul li button span{margin-left:.25em;vertical-align:middle}.layout-profile ul li button i{vertical-align:middle}.layout-profile ul.layout-submenu-wrapper-enter,.layout-profile ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-profile ul.layout-submenu-wrapper-enter-to,.layout-profile ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-profile ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-profile ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light .layout-profile .layout-profile-link{color:#232428}.layout-sidebar-light .layout-profile .layout-profile-link:hover{color:#0388e5}.layout-sidebar-light .layout-profile ul{background-color:#fff}.layout-sidebar-light .layout-profile ul li button{color:#232428}.layout-sidebar-light .layout-profile ul li button:hover{color:#0388e5}.layout-sidebar-dark .layout-profile .layout-profile-link{color:#fff}.layout-sidebar-dark .layout-profile .layout-profile-link:hover{color:#005a8f}.layout-sidebar-dark .layout-profile ul{background-color:#002439}.layout-sidebar-dark .layout-profile ul li button{color:#fff}.layout-sidebar-dark .layout-profile ul li button:hover{color:#005a8f}.layout-menu-container{padding-bottom:120px}.layout-menu{list-style-type:none;margin:0;padding:0}.layout-menu li a{cursor:pointer;position:relative;text-decoration:none;display:block;-moz-transition:color .2s;-o-transition:color .2s;-webkit-transition:color .2s;transition:color .2s}.layout-menu li a i{font-size:18px;vertical-align:middle}.layout-menu li a span{margin-left:.25em;vertical-align:middle;line-height:18px;display:inline-block}.layout-menu li a .menuitem-toggle-icon{position:absolute;top:50%;right:1em;margin-top:-9px}.layout-menu li a.router-link-active{font-weight:700}.layout-menu li a:focus{outline:0 none;outline-offset:0;box-shadow:inset 0 0 0 .2em #8dcdff}.layout-menu li.active-menuitem>a .menuitem-toggle-icon:before{content:\\\"\\\"}.layout-menu>li>a{padding:1em}.layout-menu>li>a span{font-size:14px}.layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-menu>li ul{list-style-type:none;margin:0;padding:0;padding-left:1.5em}.layout-menu>li ul li a{cursor:pointer;padding:.75em 1em;border-top:0 none}.layout-menu>li ul li a span{font-size:13px}.layout-menu>li ul li:last-child{padding-bottom:1em}.layout-menu>li ul.layout-submenu-wrapper-enter,.layout-menu>li ul.layout-submenu-wrapper-leave-to{max-height:0}.layout-menu>li ul.layout-submenu-wrapper-enter-to,.layout-menu>li ul.layout-submenu-wrapper-leave{max-height:1000px}.layout-menu>li ul.layout-submenu-wrapper-leave-active{overflow:hidden;transition:max-height .45s cubic-bezier(0, 1, 0, 1)}.layout-menu>li ul.layout-submenu-wrapper-enter-active{overflow:hidden;transition:max-height 1s ease-in-out}.layout-sidebar-light{background:#f3f4f9;background:-moz-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #f3f4f9), color-stop(100%, #d7dbe8));background:-webkit-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-o-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:-ms-linear-gradient(top, #f3f4f9 0%, #d7dbe8 100%);background:linear-gradient(to bottom, #f3f4f9 0%, #d7dbe8 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-light .layout-menu>li>a{border-top:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li:last-child>a{border-bottom:1px solid rgba(207,211,224,.6)}.layout-sidebar-light .layout-menu>li ul{background-color:#fff}.layout-sidebar-light .layout-menu li a{color:#232428}.layout-sidebar-light .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-light .layout-menu li a:hover{color:#0388e5}.layout-sidebar-light .layout-menu li.active-menuitem>a{background-color:#fff;color:#0388e5}.layout-sidebar-dark{background:#001724;background:-moz-linear-gradient(top, #001724 0%, #003656 100%);background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #001724), color-stop(100%, #003656));background:-webkit-linear-gradient(top, #001724 0%, #003656 100%);background:-o-linear-gradient(top, #001724 0%, #003656 100%);background:-ms-linear-gradient(top, #001724 0%, #003656 100%);background:linear-gradient(to bottom, #001724 0%, #003656 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr=\\\"#ffffff\\\", endColorstr=\\\"#000000\\\",GradientType=0 )}.layout-sidebar-dark .layout-menu>li>a{border-top:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li:last-child>a{border-bottom:1px solid rgba(52,56,65,.6)}.layout-sidebar-dark .layout-menu>li ul{background-color:#002439}.layout-sidebar-dark .layout-menu li a{color:#fff}.layout-sidebar-dark .layout-menu li a.router-link-active{color:#4dacff}.layout-sidebar-dark .layout-menu li a:hover{color:#005a8f}.layout-sidebar-dark .layout-menu li.active-menuitem>a{background-color:#002439;color:#4dacff}.layout-main{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;padding:96px 16px 16px 16px}.layout-footer{-moz-transition:margin-left .2s;-o-transition:margin-left .2s;-webkit-transition:margin-left .2s;transition:margin-left .2s;background-color:#182635;padding:1em 2em}.layout-footer img{vertical-align:middle}.layout-footer .footer-text{vertical-align:middle}@media(min-width: 1025px){.layout-wrapper.layout-overlay .layout-topbar{left:0}.layout-wrapper.layout-overlay .layout-main,.layout-wrapper.layout-overlay .layout-footer{margin-left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-overlay.layout-overlay-sidebar-active .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-topbar{left:250px}.layout-wrapper.layout-static .layout-main,.layout-wrapper.layout-static .layout-footer{margin-left:250px}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-topbar{left:0}.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-main,.layout-wrapper.layout-static.layout-static-sidebar-inactive .layout-footer{margin-left:0}}@media(max-width: 1024px){.layout-wrapper .layout-topbar{left:0}.layout-wrapper .layout-main,.layout-wrapper .layout-footer{margin-left:0}.layout-wrapper .layout-sidebar{-moz-transition:left .2s;-o-transition:left .2s;-webkit-transition:left .2s;transition:left .2s;left:-250px;margin-top:50px}.layout-wrapper .layout-mask{display:none;position:fixed;width:100%;height:100%;top:50px;left:0;z-index:998;background-color:#424242;opacity:.7;filter:alpha(opacity=70)}.layout-wrapper.layout-mobile-sidebar-active .layout-sidebar{left:0}.layout-wrapper.layout-mobile-sidebar-active .layout-mask{display:block}.body-overflow-hidden{overflow:hidden}}h1{font-weight:normal;margin:0;font-size:24px}h2{font-size:20px;font-weight:normal;margin:0}.card{background-color:#fff;padding:1em;margin-bottom:16px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.card.card-w-title{padding-bottom:2em}.card h1{margin:1em 0 .5em 0;border-bottom:1px solid #d5d5d5;padding:.1em;font-size:24px}.card h1:first-child{margin:0 0 .5em 0}.docs pre[class*=language-]{padding:0 !important;background:transparent;overflow:visible}.docs pre[class*=language-]>code{border-left:0 none;box-shadow:none;font-size:14px}.dashboard .summary{position:relative}.dashboard .summary .title{font-size:20px}.dashboard .summary .detail{color:#707070;display:block;margin-top:10px}.dashboard .summary .count{color:#fff;position:absolute;top:10px;right:10px;font-size:24px;padding:7px 14px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .summary .count.visitors{background-color:#20d077}.dashboard .summary .count.purchases{background-color:#f9c851}.dashboard .summary .count.revenue{background-color:#007be5}.dashboard .highlight-box{height:100px}.dashboard .highlight-box:after{content:\\\"\\\";display:table;clear:both}.dashboard .highlight-box .initials{height:100%;float:left;width:50%;text-align:center;padding:1em}.dashboard .highlight-box .initials>span{font-size:48px}.dashboard .highlight-box .highlight-details{height:100%;background-color:#fff;float:left;width:50%;padding:1em}.dashboard .highlight-box .highlight-details i{font-size:24px;vertical-align:middle;margin-right:.25em}.dashboard .highlight-box .highlight-details .count{color:#707070;font-size:36px;display:block}.dashboard .task-list{list-style-type:none;margin:0;padding:0}.dashboard .task-list li{padding:.5em .25em;border-bottom:1px solid #e3e3e3}.dashboard .task-list li:after{content:\\\"\\\";display:table;clear:both}.dashboard .task-list .p-checkbox{vertical-align:middle;margin-right:.5em}.dashboard .task-list .task-name{vertical-align:middle}.dashboard .task-list i{float:right;font-size:24px;color:#707070}.dashboard .task-list .p-panel-content{min-height:256px}.dashboard .contact-form .p-panel-content{min-height:256px}.dashboard .contacts ul{list-style-type:none;padding:0;margin:0}.dashboard .contacts ul li{border-bottom:1px solid #e3e3e3}.dashboard .contacts ul li button{padding:9px;width:100%;box-sizing:border-box;text-decoration:none;position:relative;display:block;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-transition:background-color .2s;-o-transition:background-color .2s;-webkit-transition:background-color .2s;transition:background-color .2s}.dashboard .contacts ul li button .name{position:absolute;right:10px;top:10px;font-size:18px}.dashboard .contacts ul li button .email{position:absolute;right:10px;top:30px;font-size:14px;color:#707070}.dashboard .contacts ul li button:hover{cursor:pointer;background-color:#eee}.dashboard .contacts ul li:last-child{border:0}.dashboard .contacts .p-panel-content{min-height:256px}.dashboard .activity-list{list-style-type:none;padding:0;margin:0}.dashboard .activity-list li{border-bottom:1px solid #e3e3e3;padding:16px 8px}.dashboard .activity-list li .count{font-size:24px;color:#fff;background-color:#007be5;font-weight:700;display:inline-block;padding:.25em .5em;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.dashboard .activity-list li:first-child{border-top:1px solid #e3e3e3}.dashboard .activity-list li:last-child{border:0}.dashboard .activity-list li .p-col-6:first-child{font-size:18px;padding:.5em 0 0 .5em}.dashboard .activity-list li .p-col-6:last-child{text-align:right;color:#707070}.openc3-green{color:#00c800 !important}.openc3-yellow{color:#ffdc00 !important}.openc3-red{color:#ff2d2d !important}.openc3-blue{color:#09f !important}.openc3-purple{color:#c800c8 !important}.openc3-black{color:#000 !important}.openc3-white{color:#fff !important}.theme--dark.v-system-bar{background-color:var(--v-primary-base) !important}.theme--dark.v-system-bar.active{background-color:var(--v-secondary-base) !important}body,.theme--dark.v-application,.theme--dark.v-main,.theme--dark.v-content{background-color:var(--v-tertiary-base) !important}.theme--dark.v-sheet.v-list,.theme--dark.v-list,.theme--dark.v-list-item{background-color:var(--v-primary-darken2) !important}.theme--dark.v-data-table,.theme--dark.v-item-group,.theme--dark.v-dialog,.theme--dark.v-card,.theme--dark.v-tab,.theme--dark.v-sheet,.theme--dark.v-date-picker-header,.theme--dark.v-date-picker-table,.theme--dark.v-time-picker-clock__container,.theme--dark.p-menubar{background-color:var(--v-tertiary-darken2) !important}input{color-scheme:dark;caret-color:auto}.imo-modal-container input{color:#000}\",\".splash-screen {\\n width: 100%;\\n height: 100%;\\n position: fixed;\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n\\n .splash-container {\\n width: 40px;\\n height: 40px;\\n margin: 0px auto;\\n position: absolute;\\n left: 50%;\\n top: 50%;\\n margin-left: -20px;\\n margin-top: -20px;\\n\\n }\\n\\n .splash-double-bounce1, .splash-double-bounce2 {\\n width: 100%;\\n height: 100%;\\n border-radius: 50%;\\n background-color: $topbarItemColor;\\n opacity: 0.6;\\n position: absolute;\\n top: 0;\\n left: 0;\\n\\n -webkit-animation: splash-bounce 2.0s infinite ease-in-out;\\n animation: splash-bounce 2.0s infinite ease-in-out;\\n }\\n\\n .splash-double-bounce2 {\\n -webkit-animation-delay: -1.0s;\\n animation-delay: -1.0s;\\n }\\n\\n @-webkit-keyframes splash-bounce {\\n 0%, 100% { -webkit-transform: scale(0.0) }\\n 50% { -webkit-transform: scale(1.0) }\\n }\\n\\n @keyframes splash-bounce {\\n 0%, 100% {\\n transform: scale(0.0);\\n -webkit-transform: scale(0.0);\\n } 50% {\\n transform: scale(1.0);\\n -webkit-transform: scale(1.0);\\n }\\n }\\n}\\n\",\"/* General */\\n$fontSize: 14px;\\n$bodyBgColor: #edf0f5;\\n$textColor: #333333;\\n$textSecondaryColor: #707070;\\n$borderRadius: 3px;\\n$dividerColor: #e3e3e3;\\n$transitionDuration: 0.2s;\\n$maskBgColor: #424242;\\n$focusShadowColor: #8dcdff;\\n\\n/* Menu Common */\\n$menuitemBadgeBgColor: #007be5;\\n$menuitemBadgeColor: #ffffff;\\n$submenuFontSize: 13px;\\n$menuitemActiveRouteColor: rgb(77, 172, 255);\\n\\n/* Menu Light */\\n$menuBgColorFirst: #f3f4f9;\\n$menuBgColorLast: #d7dbe8;\\n$menuitemColor: #232428;\\n$menuitemHoverColor: #0388e5;\\n$menuitemActiveColor: #0388e5;\\n$menuitemActiveBgColor: #ffffff;\\n$menuitemBorderColor: rgba(207, 211, 224, 0.6);\\n\\n/* Menu Dark */\\n$menuDarkBgColorFirst: rgb(0, 23, 36);\\n$menuDarkBgColorLast: rgb(0, 54, 86);\\n$menuitemDarkColor: #ffffff;\\n$menuitemDarkHoverColor: rgb(0, 90, 143);\\n$menuitemDarkActiveColor: rgb(77, 172, 255);\\n$menuitemDarkActiveBgColor: rgb(0, 36, 57);\\n$menuitemDarkBorderColor: rgba(52, 56, 65, 0.6);\\n\\n/* Topbar */\\n$topbarLeftBgColor: rgb(0, 23, 36);\\n$topbarRightBgColor: rgb(0, 23, 36);\\n$topbarItemBadgeBgColor: #ef6262;\\n$topbarItemBadgeColor: #ffffff;\\n$topbarItemColor: #ffffff;\\n$topbarItemHoverColor: #c3e8fb;\\n$topbarSearchInputBorderBottomColor: #ffffff;\\n$topbarSearchInputColor: #ffffff;\\n\\n/* Footer */\\n$footerBgColor: rgb(24, 38, 53);\\n\",\"// Icon Override Mixin\\n@mixin icon-override($icon) {\\n &:before {\\n content: $icon;\\n }\\n}\\n\\n// === MIXINS === //\\n@mixin border-radius($val) {\\n -moz-border-radius: $val;\\n -webkit-border-radius: $val;\\n border-radius: $val;\\n}\\n\\n@mixin border-radius-right($val) {\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val; \\n}\\n\\n@mixin border-radius-left($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n}\\n\\n@mixin border-radius-top($val) {\\n -moz-border-radius-topleft: $val;\\n -webkit-border-top-left-radius: $val;\\n border-top-left-radius: $val;\\n -moz-border-radius-topright: $val;\\n -webkit-border-top-right-radius: $val;\\n border-top-right-radius: $val;\\n}\\n\\n@mixin border-radius-bottom($val) {\\n -moz-border-radius-bottomleft: $val;\\n -webkit-border-bottom-left-radius: $val;\\n border-bottom-left-radius: $val;\\n -moz-border-radius-bottomright: $val;\\n -webkit-border-bottom-right-radius: $val;\\n border-bottom-right-radius: $val;\\n}\\n\\n@mixin linear-gradient($top, $bottom){\\n background: $top; /* Old browsers */\\n background: -moz-linear-gradient(top, $top 0%, $bottom 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,$top), color-stop(100%,$bottom)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(top, $top 0%,$bottom 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(top, $top 0%,$bottom 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(top, $top 0%,$bottom 100%); /* IE10+ */\\n background: linear-gradient(to bottom, $top 0%,$bottom 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffffff', endColorstr='#000000',GradientType=0 ); /* IE6-9 */\\n}\\n\\n@mixin linear-gradient-left($left, $right){\\n background: $left; /* Old browsers */\\n background: -moz-linear-gradient(left, $left 0%, $right 100%); /* FF3.6+ */\\n background: -webkit-gradient(linear, left top, right top, color-stop(0%,$left), color-stop(100%,$right)); /* Chrome,Safari4+ */\\n background: -webkit-linear-gradient(left, $left 0%,$right 100%); /* Chrome10+,Safari5.1+ */\\n background: -o-linear-gradient(left, $left 0%,$right 100%); /* Opera 11.10+ */\\n background: -ms-linear-gradient(left, $left 0%,$right 100%); /* IE10+ */\\n background: linear-gradient(to right, $left 0%,$right 100%); /* W3C */\\n filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=$left, endColorstr=$right,GradientType=1 ); /* IE6-9 */\\n}\\n\\n@mixin transition($transition...) {\\n -moz-transition: $transition;\\n -o-transition: $transition;\\n -webkit-transition: $transition;\\n transition: $transition;\\n}\\n\\n@mixin transition-property($property) {\\n -webkit-transition-property: $property;\\n -moz-transition-property: $property;\\n -ms-transition-property: $property;\\n -o-transition-property: $property;\\n transition-property: $property;\\n}\\n\\n@mixin transition-duration($duration) {\\n -moz-transition-duration: $duration;\\n -webkit-transition-duration: $duration;\\n -o-transition-duration: $duration;\\n transition-duration: $duration;\\n}\\n\\n@mixin transition-timing-function($function) {\\n -webkit-transition-timing-function: $function;\\n -moz-transition-timing-function: $function;\\n -o-transition-timing-function: $function;\\n transition-timing-function: $function;\\n}\\n\\n@mixin opacity($opacity) {\\n opacity: $opacity;\\n $opacity-ie: $opacity * 100;\\n filter: alpha(opacity=$opacity-ie);\\n}\\n\\n@mixin shadow($value) {\\n -webkit-box-shadow: $value;\\n -moz-box-shadow: $value;\\n box-shadow: $value;\\n}\\n\\n@mixin focused() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin focused-inset() {\\n outline: 0 none;\\n outline-offset: 0;\\n box-shadow: inset 0 0 0 0.2em $focusShadowColor;\\n}\\n\\n@mixin clearfix {\\n &:after {\\n content: \\\"\\\";\\n display: table;\\n clear: both;\\n }\\n}\",\"* {\\n box-sizing: border-box;\\n}\\n\\nhtml {\\n height: 100%;\\n}\\n\\nbody {\\n font-family: 'Open Sans', 'Helvetica Neue', sans-serif;\\n font-size: $fontSize;\\n color: $textColor;\\n /* background-color: $bodyBgColor; */\\n margin: 0;\\n padding: 0;\\n min-height: 100%;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\na {\\n text-decoration: none;\\n}\\n\\n.layout-wrapper {\\n padding: 0;\\n}\\n\\n// Don't let the min-height be 100vh because it forces a scroll\\n// with our header and footer\\n.v-application--wrap {\\n min-height: 0 !important;\\n}\\n\",\".layout-topbar {\\n position: fixed;\\n height: 80px;\\n padding: 0.7em 1.5em 0em 1.5em;\\n color: #ffffff;\\n z-index: 999;\\n right: 0;\\n @include clearfix();\\n @include linear-gradient-left($topbarLeftBgColor, $topbarRightBgColor);\\n @include transition(left $transitionDuration);\\n\\n .layout-topbar-icons {\\n float: right;\\n display: block;\\n -moz-animation-duration: 0.5s;\\n -webkit-animation-duration: 0.5s;\\n animation-duration: 0.5s;\\n\\n button {\\n position: relative;\\n color: $topbarItemColor;\\n margin-left: 20px;\\n display: inline-block;\\n text-decoration: none;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n\\n &:focus {\\n @include focused();\\n }\\n\\n span {\\n &.layout-topbar-icon {\\n font-size: 2em;\\n }\\n\\n &.layout-topbar-item-text {\\n font-size: 20px;\\n display: none;\\n }\\n\\n &.layout-topbar-badge {\\n position: absolute;\\n font-size: 10px;\\n right: -5px;\\n top: -5px;\\n width: 16px;\\n height: 16px;\\n text-align: center;\\n line-height: 16px;\\n color: $topbarItemBadgeColor;\\n background-color: $topbarItemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n }\\n }\\n\\n .layout-topbar-search {\\n padding: 0;\\n position: relative;\\n display: inline-block;\\n top: -4px;\\n\\n input {\\n display: inline-block;\\n border: 0 none;\\n font-size: $fontSize;\\n background: transparent;\\n border-bottom: 2px solid $topbarSearchInputBorderBottomColor;\\n outline: 0 none;\\n -webkit-box-shadow: none;\\n box-shadow: none;\\n color: $topbarSearchInputColor;\\n width: 100px;\\n padding: 1px 20px 1px 1px;\\n margin: 0px;\\n @include border-radius(2px);\\n\\n &::-webkit-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &::-moz-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n &:-ms-input-placeholder {\\n color: $topbarSearchInputColor;\\n opacity: 0.7;\\n @include transition(opacity $transitionDuration);\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n font-size: 18px;\\n position: absolute;\\n top: -1px;\\n right: 0px;\\n }\\n\\n &:hover {\\n input {\\n border-bottom-color: $topbarItemHoverColor;\\n &::-webkit-input-placeholder {\\n opacity: 1;\\n }\\n &:-moz-placeholder {\\n opacity: 1;\\n }\\n &::-moz-placeholder {\\n opacity: 1;\\n }\\n &:-ms-input-placeholder {\\n opacity: 1;\\n }\\n }\\n\\n .layout-topbar-search-icon {\\n color: $topbarItemHoverColor;\\n }\\n }\\n }\\n }\\n\\n .layout-menu-button {\\n cursor: pointer;\\n display: inline-block;\\n text-decoration: none;\\n color: $topbarItemColor;\\n @include transition(color $transitionDuration);\\n\\n span {\\n font-size: 2em;\\n }\\n\\n &:hover {\\n color: $topbarItemHoverColor;\\n }\\n }\\n\\n button {\\n cursor: pointer;\\n }\\n}\\n\",\".layout-sidebar {\\n position: fixed;\\n width: 250px;\\n height: 100%;\\n z-index: 999;\\n overflow-y: auto;\\n user-select: none;\\n -moz-user-select: none;\\n -webkit-user-select: none;\\n @include transition(transform $transitionDuration);\\n @include shadow(0 0 6px 0 rgba(0, 0, 0, 0.16));\\n\\n &.layout-sidebar-enter,\\n &.layout-sidebar-leave-to {\\n transform: translateX(-100%);\\n }\\n\\n .layout-logo {\\n text-align: center;\\n margin-top: 24px;\\n }\\n\\n .menuitem-badge {\\n display: inline-block;\\n margin-left: 4px;\\n font-size: 10px;\\n width: 16px;\\n height: 16px;\\n line-height: 16px;\\n text-align: center;\\n color: $menuitemBadgeColor;\\n background-color: $menuitemBadgeBgColor;\\n @include border-radius(50%);\\n }\\n}\",\".layout-profile {\\n text-align: center;\\n padding: 10px 0 10px 0;\\n\\n img {\\n width: 56px;\\n margin: 10px;\\n }\\n\\n .layout-profile-link {\\n cursor: pointer;\\n display: inline-block;\\n margin-bottom: 0.75em;\\n @include transition(color $transitionDuration);\\n\\n i {\\n display: inline-block;\\n font-size: 16px;\\n vertical-align: middle;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n button {\\n width: 100%;\\n padding: 1em;\\n border: 0 none;\\n border-radius: 0;\\n cursor: pointer;\\n @include transition(color $transitionDuration);\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n\\n span {\\n margin-left: 0.25em;\\n vertical-align: middle;\\n }\\n\\n i {\\n vertical-align: middle;\\n }\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemColor;\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n .layout-profile {\\n .layout-profile-link {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n\\n li {\\n button {\\n color: $menuitemDarkColor;\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n }\\n }\\n }\\n}\\n\",\".layout-menu-container {\\n padding-bottom: 120px;\\n}\\n\\n.layout-menu {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n\\n li {\\n a {\\n cursor: pointer;\\n position: relative;\\n text-decoration: none;\\n display: block;\\n @include transition(color $transitionDuration);\\n\\n i {\\n font-size: 18px;\\n vertical-align: middle;\\n }\\n\\n span {\\n margin-left: .25em;\\n vertical-align: middle;\\n line-height: 18px;\\n display: inline-block;\\n }\\n\\n .menuitem-toggle-icon {\\n position: absolute;\\n top: 50%;\\n right: 1em;\\n margin-top: -9px;\\n }\\n\\n &.router-link-active {\\n font-weight: 700;\\n }\\n\\n &:focus {\\n @include focused-inset();\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n .menuitem-toggle-icon {\\n @include icon-override(\\\"\\\\e933\\\");\\n }\\n }\\n }\\n }\\n\\n > li {\\n > a {\\n padding: 1em;\\n\\n span {\\n font-size: $fontSize;\\n }\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n padding-left: 1.5em;\\n\\n li {\\n a {\\n cursor: pointer;\\n padding: .75em 1em;\\n border-top: 0 none;\\n\\n span {\\n font-size: $submenuFontSize;\\n }\\n }\\n\\n &:last-child {\\n padding-bottom: 1em;\\n }\\n }\\n\\n &.layout-submenu-wrapper-enter,\\n &.layout-submenu-wrapper-leave-to {\\n max-height: 0;\\n }\\n\\n &.layout-submenu-wrapper-enter-to,\\n &.layout-submenu-wrapper-leave {\\n max-height: 1000px;\\n }\\n\\n &.layout-submenu-wrapper-leave-active {\\n overflow: hidden;\\n transition: max-height 0.45s cubic-bezier(0, 1, 0, 1);\\n }\\n\\n &.layout-submenu-wrapper-enter-active {\\n overflow: hidden;\\n transition: max-height 1s ease-in-out;\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-light {\\n @include linear-gradient($menuBgColorFirst, $menuBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemActiveBgColor;\\n color: $menuitemActiveColor;\\n }\\n }\\n }\\n }\\n}\\n\\n.layout-sidebar-dark {\\n @include linear-gradient($menuDarkBgColorFirst, $menuDarkBgColorLast);\\n\\n .layout-menu {\\n > li {\\n > a {\\n border-top: 1px solid $menuitemDarkBorderColor;\\n }\\n\\n &:last-child {\\n > a {\\n border-bottom: 1px solid $menuitemDarkBorderColor;\\n }\\n }\\n\\n ul {\\n background-color: $menuitemDarkActiveBgColor;\\n }\\n }\\n\\n li {\\n a {\\n color: $menuitemDarkColor;\\n\\n &.router-link-active {\\n color: $menuitemActiveRouteColor;\\n }\\n\\n &:hover {\\n color: $menuitemDarkHoverColor;\\n }\\n }\\n\\n &.active-menuitem {\\n > a {\\n background-color: $menuitemDarkActiveBgColor;\\n color: $menuitemDarkActiveColor;\\n }\\n }\\n }\\n }\\n}\",\".layout-main {\\n @include transition(margin-left $transitionDuration);\\n padding: 96px 16px 16px 16px;\\n}\\n\",\".layout-footer {\\n @include transition(margin-left $transitionDuration);\\n background-color: $footerBgColor;\\n padding: 1em 2em;\\n\\n img {\\n vertical-align: middle;\\n }\\n\\n .footer-text {\\n vertical-align: middle;\\n }\\n}\",\"@media (min-width: 1025px) {\\n .layout-wrapper {\\n &.layout-overlay { \\n .layout-topbar {\\n left: 0;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n \\n &.layout-overlay-sidebar-active {\\n .layout-sidebar {\\n left: 0;\\n }\\n \\n .layout-topbar {\\n left: 250px;\\n }\\n }\\n }\\n\\n &.layout-static { \\n .layout-topbar {\\n left: 250px;\\n }\\n \\n .layout-main, .layout-footer {\\n margin-left: 250px;\\n }\\n \\n &.layout-static-sidebar-inactive { \\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n }\\n }\\n }\\n}\\n\\n@media (max-width: 1024px) {\\n .layout-wrapper {\\n .layout-topbar {\\n left: 0;\\n }\\n\\n .layout-main, .layout-footer {\\n margin-left: 0;\\n }\\n\\n .layout-sidebar {\\n @include transition(left $transitionDuration);\\n left: -250px;\\n margin-top: 50px;\\n }\\n\\n .layout-mask {\\n display: none;\\n position: fixed;\\n width: 100%;\\n height: 100%;\\n top: 50px;\\n left: 0;\\n z-index: 998;\\n background-color: $maskBgColor;\\n @include opacity(0.7);\\n }\\n\\n &.layout-mobile-sidebar-active {\\n .layout-sidebar {\\n left: -0;\\n }\\n\\n .layout-mask {\\n display: block;\\n }\\n }\\n }\\n\\n .body-overflow-hidden {\\n overflow: hidden;\\n }\\n}\",\"/* Typography */\\nh1 {\\n font-weight: normal;\\n margin: 0;\\n font-size: 24px;\\n}\\n\\nh2 {\\n font-size: 20px;\\n font-weight: normal;\\n margin: 0;\\n}\\n\\n.card {\\n background-color: #ffffff;\\n padding: 1em;\\n margin-bottom: 16px;\\n @include border-radius($borderRadius);\\n\\n &.card-w-title {\\n padding-bottom: 2em;\\n }\\n\\n h1 {\\n margin: 1em 0 .5em 0;\\n border-bottom: 1px solid #d5d5d5;\\n padding: .1em;\\n font-size: 24px;\\n\\n &:first-child {\\n margin: 0 0 .5em 0;\\n }\\n }\\n}\\n\\n/* Code Highlight */\\n.docs {\\n pre[class*=\\\"language-\\\"] {\\n padding: 0 !important;\\n background: transparent;\\n overflow: visible;\\n \\n > code {\\n border-left: 0 none;\\n box-shadow: none;\\n font-size: 14px;\\n }\\n }\\n}\\n\",\"/* Dashboard */\\n.dashboard {\\n \\n .summary {\\n position: relative;\\n \\n .title {\\n font-size: 20px;\\n }\\n \\n .detail {\\n color: $textSecondaryColor;\\n display: block;\\n margin-top: 10px;\\n }\\n \\n .count {\\n color: #ffffff;\\n position: absolute;\\n top: 10px;\\n right: 10px;\\n font-size: 24px;\\n padding: 7px 14px;\\n @include border-radius($borderRadius);\\n \\n &.visitors {\\n background-color: #20d077;\\n }\\n \\n &.purchases {\\n background-color: #f9c851;\\n }\\n \\n &.revenue {\\n background-color: #007be5;\\n }\\n }\\n }\\n\\n .highlight-box {\\n height: 100px;\\n @include clearfix();\\n \\n .initials {\\n height: 100%;\\n float: left;\\n width: 50%;\\n text-align: center;\\n padding: 1em;\\n\\n > span {\\n font-size: 48px;\\n }\\n }\\n \\n .highlight-details {\\n height: 100%;\\n background-color: #ffffff;\\n float: left;\\n width: 50%;\\n padding: 1em;\\n\\n i {\\n font-size: 24px;\\n vertical-align: middle;\\n margin-right: .25em;\\n }\\n \\n .count {\\n color: $textSecondaryColor;\\n font-size: 36px;\\n display: block;\\n }\\n }\\n }\\n \\n .task-list {\\n list-style-type: none;\\n margin: 0;\\n padding: 0;\\n \\n li {\\n padding: .5em .25em;\\n border-bottom: 1px solid $dividerColor;\\n @include clearfix();\\n }\\n \\n .p-checkbox {\\n vertical-align: middle;\\n margin-right: .5em;\\n }\\n \\n .task-name {\\n vertical-align: middle;\\n }\\n \\n i {\\n float: right;\\n font-size: 24px;\\n color: $textSecondaryColor;\\n }\\n\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contact-form {\\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n\\n .contacts {\\n\\n ul {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n\\n li {\\n border-bottom: 1px solid $dividerColor;\\n \\n button {\\n padding: 9px;\\n width: 100%;\\n box-sizing: border-box;\\n text-decoration: none;\\n position: relative;\\n display: block;\\n @include border-radius(2px);\\n @include transition(background-color .2s);\\n \\n .name {\\n position: absolute;\\n right: 10px;\\n top: 10px;\\n font-size: 18px;\\n }\\n \\n .email {\\n position: absolute;\\n right: 10px;\\n top: 30px;\\n font-size: 14px;\\n color: $textSecondaryColor;\\n }\\n \\n &:hover {\\n cursor: pointer;\\n background-color: #eeeeee;\\n }\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n }\\n }\\n \\n .p-panel-content {\\n min-height: 256px;\\n }\\n }\\n \\n .activity-list {\\n list-style-type: none;\\n padding: 0;\\n margin: 0;\\n \\n li {\\n border-bottom: 1px solid $dividerColor;\\n padding: 16px 8px;\\n \\n .count {\\n font-size: 24px;\\n color: #ffffff;\\n background-color: #007be5;\\n font-weight: 700;\\n display: inline-block;\\n padding: .25em .5em;\\n @include border-radius($borderRadius);\\n }\\n \\n &:first-child {\\n border-top: 1px solid $dividerColor;\\n }\\n \\n &:last-child {\\n border: 0;\\n }\\n\\n .p-col-6:first-child {\\n font-size: 18px;\\n padding: .5em 0 0 .5em;\\n }\\n \\n .p-col-6:last-child {\\n text-align: right;\\n color: $textSecondaryColor;\\n }\\n }\\n }\\n}\\n\",\"// This is for global overrides only. If it's contained to a component put it there.\\n// Also use the variables created by vueify like var(--v-primary-darken2) rather\\n// than something absolute so theming works. See vuetify.js for the base colors\\n// and note the variations are: base, lighten[1-5], and darken[1-4]\\n\\n.openc3-green {\\n color: rgb(0, 200, 0) !important;\\n}\\n.openc3-yellow {\\n color: rgb(255, 220, 0) !important;\\n}\\n.openc3-red {\\n color: rgb(255, 45, 45) !important;\\n}\\n.openc3-blue {\\n color: rgb(0, 153, 255) !important;\\n}\\n.openc3-purple {\\n color: rgb(200, 0, 200) !important;\\n}\\n.openc3-black {\\n color: black !important;\\n}\\n.openc3-white {\\n color: white !important;\\n}\\n\\n// Base colors\\n.theme--dark.v-system-bar {\\n background-color: var(--v-primary-base) !important;\\n}\\n.theme--dark.v-system-bar.active {\\n background-color: var(--v-secondary-base) !important;\\n}\\nbody,\\n.theme--dark.v-application,\\n.theme--dark.v-main,\\n.theme--dark.v-content {\\n background-color: var(--v-tertiary-base) !important;\\n}\\n\\n// Highlight colors\\n.theme--dark.v-sheet.v-list,\\n.theme--dark.v-list,\\n.theme--dark.v-list-item {\\n background-color: var(--v-primary-darken2) !important;\\n}\\n.theme--dark.v-data-table,\\n.theme--dark.v-item-group,\\n.theme--dark.v-dialog,\\n.theme--dark.v-card,\\n.theme--dark.v-tab,\\n.theme--dark.v-sheet,\\n.theme--dark.v-date-picker-header,\\n.theme--dark.v-date-picker-table,\\n.theme--dark.v-time-picker-clock__container,\\n.theme--dark.p-menubar {\\n background-color: var(--v-tertiary-darken2) !important;\\n}\\n\\ninput {\\n // This causes the browser to style input icons for a dark background\\n color-scheme: dark;\\n // Make the caret color be white instead of a dark blue\\n caret-color: auto;\\n}\\n\\n// Fix the single spa debug panel so the text is readable\\n.imo-modal-container input {\\n color: black;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.astro-icon[data-v-b942113a] {\\n fill: currentColor;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"],\"names\":[],\"mappings\":\";AAgDA;EACA,kBAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <rux-icon :icon=\\\"icon\\\" class=\\\"astro-icon\\\" />\\n</template>\\n\\n<script>\\nimport RuxIcon from './RuxIcon.vue'\\nimport { AstroIconLibrary } from '.'\\n\\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\\nexport default {\\n components: {\\n RuxIcon,\\n },\\n props: {\\n icon: {\\n type: String,\\n required: true,\\n validator: (val) => {\\n return AstroIconLibrary.includes(val)\\n },\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.astro-icon {\\n fill: currentColor;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n#footer[data-v-1f2e2c8b] {\\n z-index: 1000; /* On TOP! */\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppFooter.vue\"],\"names\":[],\"mappings\":\";AAoFA;EACA,aAAA,EAAA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2023, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <v-footer id=\\\"footer\\\" app color=\\\"tertiary darken-3\\\" height=\\\"33\\\">\\n <img :src=\\\"icon\\\" alt=\\\"OpenC3\\\" />\\n <span class=\\\"footer-text\\\" style=\\\"margin-left: 5px\\\">\\n OpenC3 {{ edition }} {{ openc3Version }} &copy; 2023 - License:\\n {{ license }}\\n </span>\\n <v-spacer />\\n <a :href=\\\"sourceUrl\\\" class=\\\"white--text text-decoration-underline\\\">\\n Source\\n </a>\\n <v-spacer />\\n <div class=\\\"justify-right\\\"><clock-footer /></div>\\n </v-footer>\\n</template>\\n\\n<script>\\nimport ClockFooter from './components/ClockFooter.vue'\\nimport { OpenC3Api } from '../../services/openc3-api'\\nimport icon from '../../../public/img/icon.png'\\n\\nexport default {\\n components: {\\n ClockFooter,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n license: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n icon: icon,\\n sourceUrl: '',\\n openc3Version: '',\\n }\\n },\\n created: function () {\\n this.getSourceUrl()\\n },\\n methods: {\\n getSourceUrl: function () {\\n new OpenC3Api()\\n .get_settings(['source_url', 'version'])\\n .then((response) => {\\n this.sourceUrl = response[0]\\n this.openc3Version = `(${response[1]})`\\n })\\n .catch(() => {\\n this.openc3Version = 'Unknown'\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n#footer {\\n z-index: 1000; /* On TOP! */\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\ndiv a[data-v-00ae1763] {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter[data-v-00ae1763] {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer[data-v-00ae1763] {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height[data-v-00ae1763] {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";AAkQA;EACA,YAAA;EACA,eAAA;EACA,cAAA;EACA,YAAA;EACA,WAAA;AACA;AACA;EACA,aAAA;AACA;AACA;EACA,0CAAA;AACA;AACA;EACA,gBAAA;EACA,4BAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/AppNav.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqRA,4EAAA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;;;EAKA,UAAA;AACA;AACA;;;EAGA,UAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-navigation-drawer v-model=\\\"drawer\\\" app id=\\\"openc3-nav-drawer\\\">\\n <v-list>\\n <v-list-item>\\n <v-list-item-icon\\n style=\\\"\\n margin-right: auto !important;\\n margin-left: auto;\\n margin-top: 0px;\\n margin-bottom: 0px;\\n \\\"\\n >\\n <img :src=\\\"logo\\\" alt=\\\"OpenC3\\\" />\\n </v-list-item-icon>\\n </v-list-item>\\n <div style=\\\"text-align: center; font-size: 18pt\\\">{{ edition }}</div>\\n <v-list-item class=\\\"my-0\\\">\\n <v-list-item-content>\\n <div v-for=\\\"(tool, name) in adminTools\\\" :key=\\\"name\\\">\\n <v-btn\\n block\\n small\\n :href=\\\"tool.url\\\"\\n onclick=\\\"singleSpaNavigate(event)\\\"\\n class=\\\"fixcenter\\\"\\n >\\n Admin\\n </v-btn>\\n </div>\\n </v-list-item-content>\\n </v-list-item>\\n <v-divider />\\n <v-treeview\\n :items=\\\"items\\\"\\n :open=\\\"initiallyOpen\\\"\\n item-key=\\\"name\\\"\\n dense\\n open-on-click\\n expand-icon=\\\"\\\"\\n >\\n <template v-slot:prepend=\\\"{ item, open }\\\">\\n <v-icon v-if=\\\"!item.icon\\\">\\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\\n </v-icon>\\n <a v-else :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n <v-icon> {{ item.icon }} </v-icon>\\n </a>\\n </template>\\n <template v-slot:label=\\\"{ item }\\\">\\n <a :href=\\\"item.url\\\" onclick=\\\"singleSpaNavigate(event)\\\">\\n {{ item.name }}\\n </a>\\n </template>\\n <template v-slot:append=\\\"{ item }\\\">\\n <a v-if=\\\"item.icon\\\" :href=\\\"newTabUrl(item)\\\" target=\\\"_blank\\\">\\n <v-icon>mdi-open-in-new</v-icon>\\n </a>\\n </template>\\n </v-treeview>\\n </v-list>\\n </v-navigation-drawer>\\n <v-app-bar app color=\\\"tertiary darken-3\\\" id=\\\"openc3-app-toolbar\\\">\\n <v-app-bar-nav-icon @click=\\\"drawer = !drawer\\\" />\\n <v-divider vertical class=\\\"top-bar-divider-full-height\\\" />\\n <span style=\\\"width: 100%\\\"><span id=\\\"openc3-menu\\\"></span></span>\\n <div class=\\\"justify-right mr-2 pt-2\\\"><scope-selector /></div>\\n <div class=\\\"justify-right\\\" data-test=\\\"alert-history\\\">\\n <alert-history />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"notifications\\\">\\n <notifications />\\n </div>\\n <div class=\\\"justify-right\\\" data-test=\\\"user-menu\\\"><user-menu /></div>\\n </v-app-bar>\\n </div>\\n</template>\\n\\n<script>\\nimport Api from '../../services/api'\\nimport logo from '../../../public/img/logo.png'\\nimport { registerApplication, start } from 'single-spa'\\nimport ScopeSelector from './components/ScopeSelector.vue'\\nimport AlertHistory from './components/AlertHistory.vue'\\nimport Notifications from './components/Notifications.vue'\\nimport UserMenu from './components/UserMenu.vue'\\n\\nexport default {\\n components: {\\n ScopeSelector,\\n AlertHistory,\\n Notifications,\\n UserMenu,\\n },\\n props: {\\n edition: {\\n type: String,\\n default: '',\\n },\\n },\\n data() {\\n return {\\n items: [],\\n drawer: true,\\n appNav: {},\\n logo: logo,\\n initiallyOpen: [],\\n }\\n },\\n computed: {\\n // a computed getter\\n shownTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n adminTools: function () {\\n let result = {}\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\\n result[key] = this.appNav[key]\\n }\\n }\\n return result\\n },\\n },\\n created() {\\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\\n (response) => {\\n this.appNav = response.data\\n\\n let id = 1\\n // Register apps and start single-spa\\n for (var key of Object.keys(this.appNav)) {\\n if (this.appNav[key].shown) {\\n if (\\n this.appNav[key].category &&\\n this.appNav[key].category !== 'Admin'\\n ) {\\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\\n this.initiallyOpen.push(this.appNav[key].category)\\n const result = this.items.filter(\\n (item) => item.name === this.appNav[key].category\\n )\\n if (result.length === 0) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].category,\\n children: [\\n {\\n id: id + 1,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n },\\n ],\\n })\\n id++\\n } else {\\n result[0].children.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n } else if (!this.appNav[key].category) {\\n this.items.push({\\n id: id,\\n name: this.appNav[key].name,\\n icon: this.appNav[key].icon,\\n url: this.appNav[key].url,\\n })\\n }\\n id++\\n\\n if (this.appNav[key].folder_name) {\\n let folder_name = this.appNav[key].folder_name\\n let name = '@openc3/tool-' + folder_name\\n registerApplication({\\n name: name,\\n app: () => System.import(name),\\n activeWhen: ['/tools/' + folder_name],\\n })\\n }\\n }\\n }\\n start({\\n urlRerouteOnly: true,\\n })\\n\\n // Redirect some base paths to the first tool\\n if (\\n window.location.pathname == '/' ||\\n window.location.pathname == '/tools' ||\\n window.location.pathname == '/tools/'\\n ) {\\n for (var key of Object.keys(this.shownTools)) {\\n if (this.appNav[key].shown) {\\n history.replaceState(null, '', this.appNav[key].url)\\n break\\n }\\n }\\n }\\n\\n // Check every minute if we need to update our token\\n setInterval(() => {\\n OpenC3Auth.updateToken(120).then(function (refreshed) {\\n if (refreshed) {\\n OpenC3Auth.setTokens()\\n }\\n })\\n }, 60000)\\n }\\n )\\n },\\n methods: {\\n newTabUrl(tool) {\\n let url = null\\n if (tool.url[0] == '/' && tool.url[1] != '/') {\\n url = new URL(tool.url, window.location.origin)\\n } else {\\n url = new URL(tool.url)\\n }\\n url.searchParams.set('scope', window.openc3Scope)\\n return url.href\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\ndiv a {\\n color: white;\\n font-size: 16px;\\n display: block;\\n height: 100%;\\n width: 100%;\\n}\\na.fixcenter {\\n display: flex;\\n}\\n.theme--dark.v-navigation-drawer {\\n background-color: var(--v-primary-darken2);\\n}\\n#openc3-app-toolbar .top-bar-divider-full-height {\\n margin: -4px 4px;\\n min-height: calc(100% + 8px);\\n}\\n</style>\\n<style>\\n/* Remove the padding on root level nodes since we removed the expand icon */\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__level {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview\\n > .v-treeview-node\\n > .v-treeview-node__root\\n > .v-treeview-node__toggle {\\n width: 0px;\\n}\\n#openc3-nav-drawer\\n .v-treeview-node__children\\n div.v-treeview-node__level:nth-child(1) {\\n width: 0px;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-3d0e2e40] {\\n height: 28px;\\n}\\n.v-badge[data-v-3d0e2e40] {\\n width: 100%;\\n}\\n.overlay[data-v-3d0e2e40] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"],\"names\":[],\"mappings\":\";AA4KA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showAlertPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showAlertPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Alert box icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-alert-box-outline </v-icon>\\n </v-btn>\\n </template>\\n\\n <!-- Alerts list -->\\n <v-card>\\n <v-card-title>\\n Alerts\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n @click=\\\"clearAlerts\\\"\\n class=\\\"ml-1\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n </v-card-title>\\n <v-card-text v-if=\\\"alerts.length === 0\\\"> No alerts </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n >\\n <template v-for=\\\"(alert, index) in alerts\\\">\\n <v-list-item\\n @click=\\\"openDialog(alert)\\\"\\n :key=\\\"`alert-${index}`\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title>\\n {{ alert.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ alert.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"alert.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full alert -->\\n <v-dialog v-model=\\\"alertDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedAlert.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedAlert.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-text>\\n {{ selectedAlert.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"alertDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n alerts: [],\\n alertDialog: false,\\n showAlertPane: false,\\n selectedAlert: {},\\n }\\n },\\n watch: {\\n showAlertPane: function (val) {\\n if (val) {\\n this.refreshList()\\n }\\n if (!val && this.selectedAlert.title) {\\n this.alertDialog = false\\n this.selectedAlert = {}\\n }\\n },\\n },\\n methods: {\\n refreshList: function () {\\n this.alerts = this.$store.state.notifyHistory\\n },\\n clearAlerts: function () {\\n this.$store.commit('notifyClearHistory')\\n this.refreshList()\\n this.showAlertPane = false\\n },\\n openDialog: function (alert, clearToast = false) {\\n this.selectedAlert = alert\\n this.alertDialog = true\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"],\"names\":[],\"mappings\":\";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0EA,wEAAA;AACA;;EAEA,4CAAA;AACA;AACA;EACA,qCAAA;AACA;AACA;EACA;;;GAGA;AACA;AACA;EACA,kDAAA;AACA;;AAEA,oCAAA;AACA;;EAEA,WAAA;EACA,eAAA;EACA,OAAA;EACA,QAAA;EACA,kBAAA;EACA,mCAAA;EACA,uCAAA;EACA,wDAAA;AACA;AACA;EACA,MAAA;EACA,uDAAA;EACA,wCAAA;AACA;AACA;EACA,SAAA;EACA,0DAAA;EACA,2CAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<script>\\nimport { OpenC3Api } from '../../../services/openc3-api'\\n\\nexport default {\\n data: function () {\\n return {\\n api: null,\\n classification: {\\n text: '',\\n fontColor: 'white',\\n backgroundColor: 'red',\\n topHeight: 0,\\n bottomHeight: 0,\\n },\\n }\\n },\\n computed: {\\n classificationStyles: function () {\\n // JavaScript can't access CSS psudo-elements (::before and ::after).\\n // This string sets these JS values to CSS variables, accessible to\\n // the style sheet via the style attribute on #app\\n return [\\n `--classification-text:\\\"${this.classification.text}\\\";`,\\n `--classification-font-color:${this.classification.fontColor};`,\\n `--classification-background-color:${this.classification.backgroundColor};`,\\n `--classification-height-top:${this.classification.topHeight}px;`,\\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\\n ].join('')\\n },\\n },\\n created: function () {\\n this.api = new OpenC3Api()\\n this.load()\\n },\\n methods: {\\n load: function () {\\n this.api\\n .get_setting('classification_banner')\\n .then((response) => {\\n if (response) {\\n this.classification = JSON.parse(response)\\n }\\n })\\n .catch((error) => {\\n // Do nothing\\n })\\n },\\n },\\n}\\n</script>\\n\\n<style>\\n/* push things up and down to make room for the classification banners */\\n#app,\\n#openc3-nav-drawer {\\n margin-top: var(--classification-height-top);\\n}\\n#openc3-app-toolbar {\\n top: var(--classification-height-top);\\n}\\n#openc3-nav-drawer .v-navigation-drawer__content {\\n height: calc(\\n 100% - var(--classification-height-top) -\\n var(--classification-height-bottom)\\n );\\n}\\n#footer {\\n margin-bottom: var(--classification-height-bottom);\\n}\\n\\n/* make the classification banners */\\n#app::before,\\n#app::after {\\n z-index: 99;\\n position: fixed;\\n left: 0;\\n right: 0;\\n text-align: center;\\n content: var(--classification-text);\\n color: var(--classification-font-color);\\n background-color: var(--classification-background-color);\\n}\\n#app::before {\\n top: 0;\\n font-size: calc(var(--classification-height-top) * 0.7);\\n height: var(--classification-height-top);\\n}\\n#app::after {\\n bottom: 0;\\n font-size: calc(var(--classification-height-bottom) * 0.7);\\n height: var(--classification-height-bottom);\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.v-subheader[data-v-eda8ca60] {\\n height: 28px;\\n}\\n.v-badge[data-v-eda8ca60] {\\n width: 100%;\\n}\\n.overlay[data-v-eda8ca60] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"],\"names\":[],\"mappings\":\";AAiZA;EACA,YAAA;AACA;AAEA;EACA,WAAA;AACA;AAEA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license\\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showNotificationPane\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showNotificationPane\\\"\\n transition=\\\"slide-y-transition\\\"\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"340\\\"\\n offset-y\\n :nudge-bottom=\\\"20\\\"\\n >\\n <!-- Bell icon -->\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon v-if=\\\"unreadCount === 0\\\" :size=\\\"size\\\">\\n mdi-bell-outline\\n </v-icon>\\n <v-badge\\n v-else\\n left\\n offset-x=\\\"24\\\"\\n offset-y=\\\"8\\\"\\n :color=\\\"badgeColor\\\"\\n bordered\\n :content=\\\"unreadCount\\\"\\n >\\n <v-icon :size=\\\"size\\\" :color=\\\"badgeColor\\\"> mdi-bell </v-icon>\\n </v-badge>\\n </v-btn>\\n </template>\\n\\n <!-- Notifications list -->\\n <v-card>\\n <v-card-title>\\n Notifications\\n <v-spacer />\\n <v-tooltip top open-delay=\\\"350\\\">\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn\\n icon\\n v-bind=\\\"attrs\\\"\\n v-on=\\\"on\\\"\\n class=\\\"ml-1\\\"\\n @click=\\\"clearNotifications\\\"\\n data-test=\\\"clear-notifications\\\"\\n >\\n <v-icon> mdi-notification-clear-all </v-icon>\\n </v-btn>\\n </template>\\n <span>Clear all</span>\\n </v-tooltip>\\n <v-btn\\n icon\\n @click=\\\"toggleSettingsDialog\\\"\\n class=\\\"ml-1\\\"\\n data-test=\\\"notification-settings\\\"\\n >\\n <v-icon> $astro-settings </v-icon>\\n </v-btn>\\n </v-card-title>\\n <v-card-text v-if=\\\"notifications.length === 0\\\">\\n No notifications\\n </v-card-text>\\n <v-list\\n v-else\\n two-line\\n width=\\\"388\\\"\\n max-height=\\\"80vh\\\"\\n class=\\\"overflow-y-auto\\\"\\n data-test=\\\"notification-list\\\"\\n >\\n <template v-for=\\\"(notification, index) in notificationList\\\">\\n <template v-if=\\\"notification.header\\\">\\n <v-divider v-if=\\\"index !== 0\\\" :key=\\\"index\\\" class=\\\"mb-2\\\" />\\n <v-subheader :key=\\\"notification.header\\\">\\n {{ notification.header }}\\n </v-subheader>\\n </template>\\n\\n <v-list-item\\n v-else\\n :key=\\\"`notification-${index}`\\\"\\n @click=\\\"openDialog(notification)\\\"\\n class=\\\"pl-2\\\"\\n >\\n <v-badge left inline color=\\\"transparent\\\">\\n <v-list-item-content class=\\\"pt-0 pb-0\\\">\\n <v-list-item-title\\n :class=\\\"{ 'text--secondary': notification.read }\\\"\\n >\\n {{ notification.title }}\\n </v-list-item-title>\\n <v-list-item-subtitle>\\n {{ notification.body }}\\n </v-list-item-subtitle>\\n </v-list-item-content>\\n <v-list-item-action class=\\\"mt-0\\\">\\n <v-list-item-action-text>\\n {{ notification.time | shortDateTime }}\\n </v-list-item-action-text>\\n <v-spacer />\\n </v-list-item-action>\\n <template v-slot:badge>\\n <astro-status-indicator\\n :status=\\\"notification.severity.toLowerCase()\\\"\\n />\\n </template>\\n </v-badge>\\n </v-list-item>\\n </template>\\n </v-list>\\n </v-card>\\n </v-menu>\\n\\n <!-- Dialog for viewing full notification -->\\n <v-dialog v-model=\\\"notificationDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title>\\n {{ selectedNotification.title }}\\n <v-spacer />\\n <astro-status-indicator\\n :status=\\\"selectedNotification.severity || 'normal'\\\"\\n />\\n </v-card-title>\\n <v-card-subtitle>\\n {{ selectedNotification.time | shortDateTime }}\\n </v-card-subtitle>\\n <v-card-text>\\n {{ selectedNotification.body }}\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn\\n color=\\\"primary\\\"\\n text\\n @click=\\\"navigate(selectedNotification.url)\\\"\\n >\\n Open\\n <v-icon right> mdi-open-in-new </v-icon>\\n </v-btn>\\n <v-btn color=\\\"primary\\\" text @click=\\\"notificationDialog = false\\\">\\n Dismiss\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n\\n <!-- Dialog for changing notification settings -->\\n <v-dialog v-model=\\\"settingsDialog\\\" width=\\\"600\\\">\\n <v-card>\\n <v-card-title> Notification settings </v-card-title>\\n <v-card-text>\\n <v-switch v-model=\\\"showToast\\\" label=\\\"Show toasts\\\" />\\n </v-card-text>\\n <v-divider />\\n <v-card-actions>\\n <v-btn color=\\\"primary\\\" text @click=\\\"toggleSettingsDialog\\\">\\n close\\n </v-btn>\\n </v-card-actions>\\n </v-card>\\n </v-dialog>\\n </div>\\n</template>\\n\\n<script>\\nimport { formatDistanceToNow } from 'date-fns'\\nimport { AstroStatusColors } from '../../../components/icons'\\nimport {\\n highestSeverity,\\n orderBySeverity,\\n groupBySeverity,\\n} from '../util/AstroStatus'\\nimport Cable from '../../../services/cable.js'\\n\\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\\n\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n return {\\n AstroStatusColors,\\n cable: new Cable(),\\n subscription: null,\\n notifications: [],\\n showNotificationPane: false,\\n toastNotification: {},\\n notificationDialog: false,\\n selectedNotification: {},\\n settingsDialog: false,\\n showToast: true,\\n }\\n },\\n computed: {\\n badgeColor: function () {\\n if (!this.unreadCount) {\\n return AstroStatusColors['off']\\n }\\n const severities = this.unreadNotifications\\n .map((notification) => notification.severity)\\n .filter((val, index, self) => {\\n return self.indexOf(val) === index // Unique values\\n })\\n return AstroStatusColors[highestSeverity(severities)]\\n },\\n readNotifications: function () {\\n return this.notifications\\n .filter((notification) => notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadNotifications: function () {\\n return this.notifications\\n .filter((notification) => !notification.read)\\n .sort((a, b) => b.time - a.time)\\n },\\n unreadCount: function () {\\n let result = this.unreadNotifications.length\\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\\n result += '+' // Indicate there are more\\n }\\n return result\\n },\\n notificationList: function () {\\n const groups = groupBySeverity(this.unreadNotifications)\\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\\n (severity) => {\\n const header = {\\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\\n }\\n return [header, ...groups[severity]]\\n }\\n )\\n if (this.readNotifications.length) {\\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\\n }\\n return result\\n },\\n },\\n watch: {\\n showNotificationPane: function (val) {\\n if (!val) {\\n if (this.selectedNotification.title) {\\n this.notificationDialog = false\\n this.selectedNotification = {}\\n } else {\\n this.markAllAsRead()\\n }\\n }\\n },\\n showToast: function (val) {\\n localStorage.notoast = !val\\n },\\n },\\n created: function () {\\n this.showToast = localStorage.notoast === 'false'\\n this.subscribe()\\n },\\n destroyed: function () {\\n if (this.subscription) {\\n this.subscription.unsubscribe()\\n }\\n this.cable.disconnect()\\n },\\n methods: {\\n markAllAsRead: function () {\\n this.notifications.forEach((notification) => {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n })\\n },\\n clearNotifications: function () {\\n this.markAllAsRead()\\n this.notifications = []\\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\\n this.showNotificationPane = false\\n },\\n toggleNotificationPane: function () {\\n this.showNotificationPane = !this.showNotificationPane\\n },\\n toggleSettingsDialog: function () {\\n this.settingsDialog = !this.settingsDialog\\n },\\n openDialog: function (notification, clearToast = false) {\\n notification.read = true\\n if (\\n !localStorage.lastReadNotification ||\\n localStorage.lastReadNotification < notification.msg_id\\n ) {\\n localStorage.lastReadNotification = notification.msg_id\\n }\\n this.selectedNotification = notification\\n this.notificationDialog = true\\n },\\n navigate: function (url) {\\n window.open(url, '_blank')\\n },\\n subscribe: function () {\\n this.cable\\n .createSubscription(\\n 'NotificationsChannel',\\n window.openc3Scope,\\n {\\n received: (data) => this.received(data),\\n },\\n {\\n start_offset:\\n localStorage.notificationStreamOffset ||\\n localStorage.lastReadNotification,\\n }\\n )\\n .then((subscription) => {\\n this.subscription = subscription\\n })\\n },\\n received: function (parsed) {\\n this.cable.recordPing()\\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\\n }\\n let foundToast = false\\n parsed.forEach((notification) => {\\n notification.read =\\n notification.msg_id <= localStorage.lastReadNotification\\n notification.severity = notification.severity || 'normal'\\n if (\\n !notification.read && // Don't toast read notifications\\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\\n ) {\\n foundToast = true\\n this.toastNotification = notification\\n }\\n })\\n\\n if (this.showToast && foundToast) {\\n this.$notify[this.toastNotification.severity]({\\n ...this.toastNotification,\\n type: 'notification',\\n duration:\\n this.toastNotification.severity === 'critical' ? null : 5000,\\n saveToHistory: false,\\n })\\n }\\n\\n if (\\n this.notifications.length + parsed.length >\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n ) {\\n this.notifications.splice(\\n 0,\\n this.notifications.length +\\n parsed.length -\\n NOTIFICATION_HISTORY_MAX_LENGTH\\n )\\n }\\n this.notifications = this.notifications.concat(parsed)\\n },\\n },\\n filters: {\\n shortDateTime: function (nsec) {\\n if (!nsec) return ''\\n const date = new Date(nsec / 1_000_000)\\n return formatDistanceToNow(date, { addSuffix: true })\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.v-subheader {\\n height: 28px;\\n}\\n\\n.v-badge {\\n width: 100%;\\n}\\n\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/cssWithMappingToString.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../openc3-tool-base/node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"\\n.overlay[data-v-26b5fc12] {\\n height: 100vh;\\n width: 100vw;\\n}\\n\", \"\",{\"version\":3,\"sources\":[\"webpack://./../packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"],\"names\":[],\"mappings\":\";AA+FA;EACA,aAAA;EACA,YAAA;AACA\",\"sourcesContent\":[\"<!--\\n# Copyright 2022 Ball Aerospace & Technologies Corp.\\n# All Rights Reserved.\\n#\\n# This program is free software; you can modify and/or redistribute it\\n# under the terms of the GNU Affero General Public License\\n# as published by the Free Software Foundation; version 3 with\\n# attribution addendums as found in the LICENSE.txt\\n#\\n# This program is distributed in the hope that it will be useful,\\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n# GNU Affero General Public License for more details.\\n\\n# Modified by OpenC3, Inc.\\n# All changes Copyright 2022, OpenC3, Inc.\\n# All Rights Reserved\\n#\\n# This file may also be used under the terms of a commercial license \\n# if purchased from OpenC3, Inc.\\n-->\\n\\n<template>\\n <div>\\n <v-overlay :value=\\\"showUserMenu\\\" class=\\\"overlay\\\" />\\n <v-menu\\n v-model=\\\"showUserMenu\\\"\\n transition=\\\"slide-y-transition\\\"\\n offset-y\\n :close-on-content-click=\\\"false\\\"\\n :nudge-width=\\\"120\\\"\\n :nudge-bottom=\\\"20\\\"\\n >\\n <template v-slot:activator=\\\"{ on, attrs }\\\">\\n <v-btn v-bind=\\\"attrs\\\" v-on=\\\"on\\\" icon>\\n <v-icon :size=\\\"size\\\"> mdi-account </v-icon>\\n </v-btn>\\n </template>\\n\\n <v-card>\\n <v-card-text class=\\\"text-center\\\">\\n <div style=\\\"text-align: center; margin: 5px\\\">{{ username }}</div>\\n <div v-if=\\\"authenticated\\\">\\n <v-btn block @click=\\\"logout\\\" color=\\\"primary\\\"> Logout </v-btn>\\n </div>\\n <div v-else>\\n <v-btn block @click=\\\"login\\\" color=\\\"primary\\\"> Login </v-btn>\\n </div>\\n <div>\\n <v-switch label=\\\"Colorblind mode\\\" v-model=\\\"colorblindMode\\\" />\\n </div>\\n </v-card-text>\\n </v-card>\\n </v-menu>\\n </div>\\n</template>\\n\\n<script>\\nexport default {\\n props: {\\n size: {\\n type: [String, Number],\\n default: 26,\\n },\\n },\\n data: function () {\\n let user = OpenC3Auth.user()\\n return {\\n showUserMenu: false,\\n authenticated: !!localStorage.openc3Token,\\n username: user['name'],\\n }\\n },\\n computed: {\\n colorblindMode: {\\n get: function () {\\n return localStorage.colorblindMode === 'true'\\n },\\n set: function (val) {\\n localStorage.colorblindMode = val\\n },\\n },\\n },\\n methods: {\\n logout: function () {\\n OpenC3Auth.logout()\\n },\\n login: function () {\\n OpenC3Auth.login(location.href)\\n },\\n },\\n}\\n</script>\\n\\n<style scoped>\\n.overlay {\\n height: 100vh;\\n width: 100vw;\\n}\\n</style>\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \" {\").concat(content, \"}\");\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery, dedupe) {\n if (typeof modules === \"string\") {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, \"\"]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = [].concat(modules[_i]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n if (mediaQuery) {\n if (!item[2]) {\n item[2] = mediaQuery;\n } else {\n item[2] = \"\".concat(mediaQuery, \" and \").concat(item[2]);\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nmodule.exports = function cssWithMappingToString(item) {\n var _item = _slicedToArray(item, 4),\n content = _item[1],\n cssMapping = _item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","const resolveDirectory = require(\"../public-path\").resolveDirectory;\n\nexports.autoPublicPath = function autoPublicPath(rootDirLevel) {\n if (!rootDirLevel) {\n rootDirLevel = 1;\n }\n\n if (typeof __webpack_public_path__ !== \"undefined\") {\n if (typeof __system_context__ === \"undefined\") {\n throw Error(\n \"systemjs-webpack-interop requires webpack@>=5.0.0-beta.15 and output.libraryTarget set to 'system'\"\n );\n }\n\n if (!__system_context__.meta || !__system_context__.meta.url) {\n console.error(\"__system_context__\", __system_context__);\n throw Error(\n \"systemjs-webpack-interop was provided an unknown SystemJS context. Expected context.meta.url, but none was provided\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(\n __system_context__.meta.url,\n rootDirLevel\n );\n }\n};\n","exports.setPublicPath = function setPublicPath(\n systemjsModuleName,\n rootDirectoryLevel\n) {\n if (!rootDirectoryLevel) {\n rootDirectoryLevel = 1;\n }\n if (\n typeof systemjsModuleName !== \"string\" ||\n systemjsModuleName.trim().length === 0\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName) must be called with a non-empty string 'systemjsModuleName'\"\n );\n }\n\n if (\n typeof rootDirectoryLevel !== \"number\" ||\n rootDirectoryLevel <= 0 ||\n isNaN(rootDirectoryLevel) ||\n !isInteger(rootDirectoryLevel)\n ) {\n throw Error(\n \"systemjs-webpack-interop: setPublicPath(systemjsModuleName, rootDirectoryLevel) must be called with a positive integer 'rootDirectoryLevel'\"\n );\n }\n\n var moduleUrl;\n try {\n moduleUrl = window.System.resolve(systemjsModuleName);\n if (!moduleUrl) {\n throw Error();\n }\n } catch (err) {\n throw Error(\n \"systemjs-webpack-interop: There is no such module '\" +\n systemjsModuleName +\n \"' in the SystemJS registry. Did you misspell the name of your module?\"\n );\n }\n\n __webpack_public_path__ = resolveDirectory(moduleUrl, rootDirectoryLevel);\n};\n\nfunction resolveDirectory(urlString, rootDirectoryLevel) {\n // Our friend IE11 doesn't support new URL()\n // https://github.com/single-spa/single-spa/issues/612\n // https://gist.github.com/jlong/2428561\n\n var a = document.createElement(\"a\");\n a.href = urlString;\n\n var pathname = a.pathname[0] === \"/\" ? a.pathname : \"/\" + a.pathname;\n var numDirsProcessed = 0,\n index = pathname.length;\n while (numDirsProcessed !== rootDirectoryLevel && index >= 0) {\n var char = pathname[--index];\n if (char === \"/\") {\n numDirsProcessed++;\n }\n }\n\n if (numDirsProcessed !== rootDirectoryLevel) {\n throw Error(\n \"systemjs-webpack-interop: rootDirectoryLevel (\" +\n rootDirectoryLevel +\n \") is greater than the number of directories (\" +\n numDirsProcessed +\n \") in the URL path \" +\n urlString\n );\n }\n\n var finalPath = pathname.slice(0, index + 1);\n\n return a.protocol + \"//\" + a.host + finalPath;\n}\n\nexports.resolveDirectory = resolveDirectory;\n\n// borrowed from https://github.com/parshap/js-is-integer/blob/master/index.js\nvar isInteger =\n Number.isInteger ||\n function isInteger(val) {\n return typeof val === \"number\" && isFinite(val) && Math.floor(val) === val;\n };\n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../openc3-tool-base/node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2eb15b17\", content, false, {});\n// Hot Module Replacement\nif(module.hot) {\n // When the styles change, update the <style> tags\n if(!content.locals) {\n module.hot.accept(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\", function() {\n var newContent = require(\"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js!../../../../../../openc3-tool-base/node_modules/sass-loader/dist/cjs.js!./layout.scss\");\n if(newContent.__esModule) newContent = newContent.default;\n if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];\n update(newContent);\n });\n }\n // When the module is disposed, remove the <style> tags\n module.hot.dispose(function() { update(); });\n}","/**\n * Translates the list format produced by css-loader into something\n * easier to manipulate.\n */\nexport default function listToStyles (parentId, list) {\n var styles = []\n var newStyles = {}\n for (var i = 0; i < list.length; i++) {\n var item = list[i]\n var id = item[0]\n var css = item[1]\n var media = item[2]\n var sourceMap = item[3]\n var part = {\n id: parentId + ':' + i,\n css: css,\n media: media,\n sourceMap: sourceMap\n }\n if (!newStyles[id]) {\n styles.push(newStyles[id] = { id: id, parts: [part] })\n } else {\n newStyles[id].parts.push(part)\n }\n }\n return styles\n}\n","/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n Modified by Evan You @yyx990803\n*/\n\nimport listToStyles from './listToStyles'\n\nvar hasDocument = typeof document !== 'undefined'\n\nif (typeof DEBUG !== 'undefined' && DEBUG) {\n if (!hasDocument) {\n throw new Error(\n 'vue-style-loader cannot be used in a non-browser environment. ' +\n \"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.\"\n ) }\n}\n\n/*\ntype StyleObject = {\n id: number;\n parts: Array<StyleObjectPart>\n}\n\ntype StyleObjectPart = {\n css: string;\n media: string;\n sourceMap: ?string\n}\n*/\n\nvar stylesInDom = {/*\n [id: number]: {\n id: number,\n refs: number,\n parts: Array<(obj?: StyleObjectPart) => void>\n }\n*/}\n\nvar head = hasDocument && (document.head || document.getElementsByTagName('head')[0])\nvar singletonElement = null\nvar singletonCounter = 0\nvar isProduction = false\nvar noop = function () {}\nvar options = null\nvar ssrIdKey = 'data-vue-ssr-id'\n\n// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n// tags it will allow on a page\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\b/.test(navigator.userAgent.toLowerCase())\n\nexport default function addStylesClient (parentId, list, _isProduction, _options) {\n isProduction = _isProduction\n\n options = _options || {}\n\n var styles = listToStyles(parentId, list)\n addStylesToDom(styles)\n\n return function update (newList) {\n var mayRemove = []\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n domStyle.refs--\n mayRemove.push(domStyle)\n }\n if (newList) {\n styles = listToStyles(parentId, newList)\n addStylesToDom(styles)\n } else {\n styles = []\n }\n for (var i = 0; i < mayRemove.length; i++) {\n var domStyle = mayRemove[i]\n if (domStyle.refs === 0) {\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j]()\n }\n delete stylesInDom[domStyle.id]\n }\n }\n }\n}\n\nfunction addStylesToDom (styles /* Array<StyleObject> */) {\n for (var i = 0; i < styles.length; i++) {\n var item = styles[i]\n var domStyle = stylesInDom[item.id]\n if (domStyle) {\n domStyle.refs++\n for (var j = 0; j < domStyle.parts.length; j++) {\n domStyle.parts[j](item.parts[j])\n }\n for (; j < item.parts.length; j++) {\n domStyle.parts.push(addStyle(item.parts[j]))\n }\n if (domStyle.parts.length > item.parts.length) {\n domStyle.parts.length = item.parts.length\n }\n } else {\n var parts = []\n for (var j = 0; j < item.parts.length; j++) {\n parts.push(addStyle(item.parts[j]))\n }\n stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }\n }\n }\n}\n\nfunction createStyleElement () {\n var styleElement = document.createElement('style')\n styleElement.type = 'text/css'\n head.appendChild(styleElement)\n return styleElement\n}\n\nfunction addStyle (obj /* StyleObjectPart */) {\n var update, remove\n var styleElement = document.querySelector('style[' + ssrIdKey + '~=\"' + obj.id + '\"]')\n\n if (styleElement) {\n if (isProduction) {\n // has SSR styles and in production mode.\n // simply do nothing.\n return noop\n } else {\n // has SSR styles but in dev mode.\n // for some reason Chrome can't handle source map in server-rendered\n // style tags - source maps in <style> only works if the style tag is\n // created and inserted dynamically. So we remove the server rendered\n // styles and inject new ones.\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n if (isOldIE) {\n // use singleton mode for IE9.\n var styleIndex = singletonCounter++\n styleElement = singletonElement || (singletonElement = createStyleElement())\n update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)\n remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)\n } else {\n // use multi-style-tag mode in all other cases\n styleElement = createStyleElement()\n update = applyToTag.bind(null, styleElement)\n remove = function () {\n styleElement.parentNode.removeChild(styleElement)\n }\n }\n\n update(obj)\n\n return function updateStyle (newObj /* StyleObjectPart */) {\n if (newObj) {\n if (newObj.css === obj.css &&\n newObj.media === obj.media &&\n newObj.sourceMap === obj.sourceMap) {\n return\n }\n update(obj = newObj)\n } else {\n remove()\n }\n }\n}\n\nvar replaceText = (function () {\n var textStore = []\n\n return function (index, replacement) {\n textStore[index] = replacement\n return textStore.filter(Boolean).join('\\n')\n }\n})()\n\nfunction applyToSingletonTag (styleElement, index, remove, obj) {\n var css = remove ? '' : obj.css\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = replaceText(index, css)\n } else {\n var cssNode = document.createTextNode(css)\n var childNodes = styleElement.childNodes\n if (childNodes[index]) styleElement.removeChild(childNodes[index])\n if (childNodes.length) {\n styleElement.insertBefore(cssNode, childNodes[index])\n } else {\n styleElement.appendChild(cssNode)\n }\n }\n}\n\nfunction applyToTag (styleElement, obj) {\n var css = obj.css\n var media = obj.media\n var sourceMap = obj.sourceMap\n\n if (media) {\n styleElement.setAttribute('media', media)\n }\n if (options.ssrId) {\n styleElement.setAttribute(ssrIdKey, obj.id)\n }\n\n if (sourceMap) {\n // https://developer.chrome.com/devtools/docs/javascript-debugging\n // this makes source maps inside style tags work properly in Chrome\n css += '\\n/*# sourceURL=' + sourceMap.sources[0] + ' */'\n // http://stackoverflow.com/a/26603875\n css += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'\n }\n\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild)\n }\n styleElement.appendChild(document.createTextNode(css))\n }\n}\n","module.exports = __WEBPACK_EXTERNAL_MODULE__8645__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4091__;","module.exports = __WEBPACK_EXTERNAL_MODULE__4688__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9731__;","module.exports = __WEBPACK_EXTERNAL_MODULE__9191__;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.y = __system_context__;","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \".openc3-tool-base.js\";\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunktool_base\"] = self[\"webpackChunktool_base\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","const autoPublicPath = require(\"./auto-public-path\").autoPublicPath;\n\nautoPublicPath(1);\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-app\",\n { style: _vm.classificationStyles },\n [\n _c(\"app-nav\", {\n staticClass: \"d-print-none\",\n attrs: { edition: \"COSMOS\" },\n }),\n _vm._v(\" \"),\n _c(\n \"v-main\",\n [\n _c(\"v-container\", { attrs: { fluid: \"\" } }, [\n _c(\"div\", { attrs: { id: \"openc3-tool\" } }),\n _vm._v(\" \"),\n _c(\"div\", [_c(\"router-view\")], 1),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"app-footer\", {\n staticClass: \"d-print-none\",\n attrs: { app: \"\", edition: \"COSMOS\", license: \"AGPLv3\" },\n }),\n _vm._v(\" \"),\n _c(\"time-check\"),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-footer\",\n {\n attrs: {\n id: \"footer\",\n app: \"\",\n color: \"tertiary darken-3\",\n height: \"33\",\n },\n },\n [\n _c(\"img\", { attrs: { src: _vm.icon, alt: \"OpenC3\" } }),\n _vm._v(\" \"),\n _c(\n \"span\",\n { staticClass: \"footer-text\", staticStyle: { \"margin-left\": \"5px\" } },\n [\n _vm._v(\n \"\\n OpenC3 \" +\n _vm._s(_vm.edition) +\n \" \" +\n _vm._s(_vm.openc3Version) +\n \" © 2023 - License:\\n \" +\n _vm._s(_vm.license) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"a\",\n {\n staticClass: \"white--text text-decoration-underline\",\n attrs: { href: _vm.sourceUrl },\n },\n [_vm._v(\"\\n Source\\n \")]\n ),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"div\", { staticClass: \"justify-right\" }, [_c(\"clock-footer\")], 1),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"span\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"font-weight-bold\",\n staticStyle: { cursor: \"context-menu\" },\n on: { contextmenu: _vm.openMenu },\n },\n \"span\",\n _vm.attrs,\n false\n ),\n _vm.on\n ),\n [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"date\")(\n _vm.displayLocal ? _vm.localDate : _vm.utcDate,\n _vm.formatString\n )\n ) +\n \"\\n (\" +\n _vm._s(_vm.displayLocal ? \"local\" : \"UTC\") +\n \")\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n \"position-x\": _vm.menuX,\n \"position-y\": _vm.menuY,\n absolute: \"\",\n \"offset-y\": \"\",\n },\n model: {\n value: _vm.showMenu,\n callback: function ($$v) {\n _vm.showMenu = $$v\n },\n expression: \"showMenu\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplayLocal },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.displayLocal ? \"UTC\" : \"local time\") +\n \"\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.toggleDisplay24h },\n },\n [\n _vm._v(\n \"\\n Display \" +\n _vm._s(_vm.display24h ? 12 : 24) +\n \" hour clock\\n \"\n ),\n ]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _vm.dateMode !== \"monthFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setMonthFirst },\n },\n [_vm._v(\"\\n Display mm/dd/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"dayFirst\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setDayFirst },\n },\n [_vm._v(\"\\n Display dd/mm/yyyy\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n _vm._v(\" \"),\n _vm.dateMode !== \"number\"\n ? _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-title\",\n {\n staticStyle: { cursor: \"pointer\" },\n on: { click: _vm.setNumber },\n },\n [_vm._v(\"\\n Display day of year\\n \")]\n ),\n ],\n 1\n )\n : _vm._e(),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = getUTCISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = getUTCWeek(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return lightFormatters.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nexport default formatters;","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = getUTCWeekYear(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, options);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = toDate(dirtyDate);\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <span\n v-bind=\"attrs\"\n v-on=\"on\"\n style=\"cursor: context-menu\"\n class=\"font-weight-bold\"\n @contextmenu=\"openMenu\"\n >\n {{ (displayLocal ? localDate : utcDate) | date(formatString) }}\n ({{ displayLocal ? 'local' : 'UTC' }})\n </span>\n <v-menu\n v-model=\"showMenu\"\n :position-x=\"menuX\"\n :position-y=\"menuY\"\n absolute\n offset-y\n >\n <v-list>\n <v-list-item>\n <v-list-item-title\n style=\"cursor: pointer\"\n @click=\"toggleDisplayLocal\"\n >\n Display {{ displayLocal ? 'UTC' : 'local time' }}\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item>\n <v-list-item-title style=\"cursor: pointer\" @click=\"toggleDisplay24h\">\n Display {{ display24h ? 12 : 24 }} hour clock\n </v-list-item-title>\n </v-list-item>\n <v-divider />\n <v-list-item v-if=\"dateMode !== 'monthFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setMonthFirst\">\n Display mm/dd/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'dayFirst'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setDayFirst\">\n Display dd/mm/yyyy\n </v-list-item-title>\n </v-list-item>\n <v-list-item v-if=\"dateMode !== 'number'\">\n <v-list-item-title style=\"cursor: pointer\" @click=\"setNumber\">\n Display day of year\n </v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n</template>\n\n<script>\nimport { format } from 'date-fns'\n\nexport default {\n data: function () {\n return {\n localDate: new Date(),\n displayLocal: localStorage.clock_zone === 'local',\n display24h: !localStorage.clock_12h,\n dateMode: localStorage.clock_dateMode || 'monthFirst',\n intervalCount: 0,\n showMenu: false,\n menuX: 0,\n menuY: 0,\n }\n },\n computed: {\n utcDate: function () {\n return new Date(\n this.localDate.getTime() + this.localDate.getTimezoneOffset() * 60000\n )\n },\n formatString: function () {\n let dateFormat\n switch (this.dateMode) {\n case 'monthFirst':\n dateFormat = 'LL/dd/yyy'\n break\n case 'dayFirst':\n dateFormat = 'dd/LL/yyy'\n break\n case 'number':\n dateFormat = 'D'\n break\n }\n\n let timeFormat\n if (this.display24h) {\n timeFormat = 'HH:mm:ss'\n } else {\n timeFormat = 'hh:mm:ss a'\n }\n\n return `${dateFormat} ${timeFormat}`\n },\n },\n watch: {\n displayLocal: function (val) {\n localStorage.clock_zone = val ? 'local' : 'utc'\n },\n display24h: function (val) {\n // store opposite because it makes default value (true) easier\n if (val) {\n delete localStorage.clock_12h\n } else {\n localStorage.clock_12h = true\n }\n },\n dateMode: function (val) {\n if (val.match(/^monthFirst$|^dayFirst$|^number$/)) {\n localStorage.clock_dateMode = val\n }\n },\n },\n created: function () {\n setInterval(\n () => {\n this.intervalCount++\n this.localDate = new Date()\n },\n this.intervalCount < 10 ? 100 : 1000 // get the seconds to about 100ms accuracy\n )\n },\n methods: {\n openMenu: function (event) {\n event.preventDefault()\n this.showMenu = false\n this.menuX = event.clientX\n this.menuY = event.clientY\n this.$nextTick(() => {\n this.showMenu = true\n })\n },\n toggleDisplayLocal: function () {\n this.displayLocal = !this.displayLocal\n },\n toggleDisplay24h: function () {\n this.display24h = !this.display24h\n },\n setMonthFirst: function () {\n this.dateMode = 'monthFirst'\n },\n setDayFirst: function () {\n this.dateMode = 'dayFirst'\n },\n setNumber: function () {\n this.dateMode = 'number'\n },\n },\n filters: {\n date: function (val, formatString) {\n return format(val, formatString, { useAdditionalDayOfYearTokens: true })\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClockFooter.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./ClockFooter.vue?vue&type=template&id=e0e3869e&\"\nimport script from \"./ClockFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./ClockFooter.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('e0e3869e')) {\n api.createRecord('e0e3869e', component.options)\n } else {\n api.reload('e0e3869e', component.options)\n }\n module.hot.accept(\"./ClockFooter.vue?vue&type=template&id=e0e3869e&\", function () {\n api.rerender('e0e3869e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClockFooter.vue\"\nexport default component.exports","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport axios from './axios.js'\n\nexport class OpenC3Api {\n id = 1\n\n constructor() {}\n\n async exec(\n method,\n params,\n kwparams = {},\n headerOptions = {},\n timeout = 60000\n ) {\n try {\n let refreshed = await OpenC3Auth.updateToken(\n OpenC3Auth.defaultMinValidity\n )\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n } catch (error) {\n OpenC3Auth.login()\n }\n this.id = this.id + 1\n try {\n kwparams['scope'] = window.openc3Scope\n const response = await axios.post(\n '/openc3-api/api',\n {\n jsonrpc: '2.0',\n method: method,\n params: params,\n id: this.id,\n keyword_params: kwparams,\n },\n {\n headers: {\n Authorization: localStorage.openc3Token,\n 'Content-Type': 'application/json-rpc',\n ...headerOptions,\n },\n timeout: timeout,\n }\n )\n // var data = response.data\n // if (data.error) {\n // var err = new Error()\n // err.name = data.error.data.class\n // err.message = data.error.data.message\n // console.log(data.error.data.backtrace.join('\\n'))\n // throw err\n // }\n return response.data.result\n } catch (error) {\n var err = new Error()\n if (error.response) {\n // The request was made and the server responded with a\n // status code that falls out of the range of 2xx\n err.name = error.response.data.error.data.class\n err.message = error.response.data.error.data.message\n } else if (error.request) {\n // The request was made but no response was received, `error.request`\n // is an instance of XMLHttpRequest in the browser and an instance\n // of http.ClientRequest in Node.js\n err.name = 'Request error'\n // NOTE: Openc3Screen.vue uses this specific message to determine\n // if the CmdTlmApi server is down. Don't change unless also changing there.\n err.message = 'Request error, no response received'\n } else {\n // Something happened in setting up the request and triggered an Error\n err.name = 'Unknown error'\n }\n throw err\n }\n }\n\n decode_openc3_type(val) {\n if (val !== null && typeof val === 'object') {\n if (val.json_class == 'Float' && val.raw) {\n if (val.raw == 'NaN') {\n return NaN\n } else if (val.raw == 'Infinity') {\n return Infinity\n } else if (val.raw == '-Infinity') {\n return -Infinity\n }\n }\n }\n return null\n }\n\n encode_openc3_type(val) {\n if (Number.isNaN(val)) {\n return { json_class: 'Float', raw: 'NaN' }\n } else if (val == Number.POSITIVE_INFINITY) {\n return { json_class: 'Float', raw: 'Infinity' }\n } else if (val == Number.NEGATIVE_INFINITY) {\n return { json_class: 'Float', raw: '-Infinity' }\n }\n return null\n }\n\n ensure_offline_access() {\n this.offline_access_needed().then((needed) => {\n if (needed) {\n if (localStorage.openc3OfflineToken) {\n this.set_offline_access(localStorage.openc3OfflineToken).then(() => {\n delete localStorage.openc3OfflineToken\n })\n } else {\n OpenC3Auth.getOfflineAccess()\n }\n }\n })\n }\n\n // ***********************************************\n // The following APIs are used by the CmdTlmServer\n // ***********************************************\n\n offline_access_needed() {\n return this.exec('offline_access_needed', [])\n }\n\n set_offline_access(offline_access_token) {\n return this.exec('set_offline_access', [offline_access_token])\n }\n\n get_all_interface_info() {\n return this.exec('get_all_interface_info', [])\n }\n\n map_target_to_interface(target_name, interface_name) {\n return this.exec('map_target_to_interface', [target_name, interface_name])\n }\n\n connect_interface(interface_name, ...interface_params) {\n if (interface_params.length > 0) {\n return this.exec('connect_interface', [\n interface_name,\n ...interface_params,\n ])\n } else {\n return this.exec('connect_interface', [interface_name])\n }\n }\n\n disconnect_interface(interface_name) {\n return this.exec('disconnect_interface', [interface_name])\n }\n\n get_all_router_info() {\n return this.exec('get_all_router_info', [])\n }\n\n connect_router(router_name) {\n return this.exec('connect_router', [router_name])\n }\n\n disconnect_router(router_name) {\n return this.exec('disconnect_router', [router_name])\n }\n\n get_target_interfaces() {\n return this.exec('get_target_interfaces', [])\n }\n\n // DEPRECATED\n get_all_target_info() {\n return this.exec('get_all_target_info', [])\n }\n\n get_tlm_cnts(target_commands) {\n return this.exec('get_tlm_cnts', [target_commands])\n }\n\n get_item(target, packet, item) {\n return this.exec('get_item', [target, packet, item])\n }\n\n get_parameter(target, packet, item) {\n return this.exec('get_parameter', [target, packet, item])\n }\n\n get_all_packet_logger_info() {\n return this.exec('get_all_packet_logger_info', [])\n }\n\n start_logging() {\n return this.exec('start_logging', [])\n }\n\n stop_logging() {\n return this.exec('stop_logging', [])\n }\n\n start_cmd_log(log_writer_name) {\n return this.exec('start_cmd_log', [log_writer_name])\n }\n\n start_tlm_log(log_writer_name) {\n return this.exec('start_tlm_log', [log_writer_name])\n }\n\n stop_cmd_log(log_writer_name) {\n return this.exec('stop_cmd_log', [log_writer_name])\n }\n\n stop_tlm_log(log_writer_name) {\n return this.exec('stop_tlm_log', [log_writer_name])\n }\n\n get_server_status() {\n return this.exec('get_server_status', [])\n }\n\n get_limits_sets() {\n return this.exec('get_limits_sets', [])\n }\n\n get_limits_set() {\n return this.exec('get_limits_set', [])\n }\n\n set_limits_set(limits_set) {\n return this.exec('set_limits_set', [limits_set])\n }\n\n get_background_tasks() {\n return this.exec('get_background_tasks', [])\n }\n\n start_background_task(name) {\n return this.exec('start_background_task', [name])\n }\n\n stop_background_task(name) {\n return this.exec('stop_background_task', [name])\n }\n\n // ***********************************************\n // End CmdTlmServer APIs\n // ***********************************************\n\n get_target(target_name) {\n return this.exec('get_target', [target_name])\n }\n\n get_target_list() {\n return this.exec('get_target_list', [])\n }\n\n get_telemetry(target_name, packet_name) {\n return this.exec('get_telemetry', [target_name, packet_name])\n }\n\n get_all_telemetry(target_name) {\n return this.exec('get_all_telemetry', [target_name])\n }\n\n get_all_telemetry_names(target_name) {\n return this.exec('get_all_telemetry_names', [target_name])\n }\n\n async get_tlm_packet(target_name, packet_name, value_type, stale_time = 30) {\n const data = await this.exec('get_tlm_packet', [target_name, packet_name], {\n type: value_type,\n stale_time: stale_time,\n })\n // Make sure data isn't null or undefined. Note this is the only valid use of == or !=\n if (data != null) {\n var len = data.length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[i][1])\n if (converted !== null) {\n data[i][1] = converted\n }\n }\n }\n return data\n }\n\n get_packet_derived_items(target_name, packet_name) {\n return this.exec('get_packet_derived_items', [target_name, packet_name])\n }\n\n get_tlm_buffer(target_name, packet_name) {\n return this.exec('get_tlm_buffer', [target_name, packet_name])\n }\n\n async get_tlm_values(items, stale_time = 30) {\n const data = await this.exec(\n 'get_tlm_values',\n [items],\n {\n stale_time: stale_time,\n },\n {},\n 10000 // 10s timeout ... should never be this long\n )\n var len = data[0].length\n var converted = null\n for (var i = 0; i < len; i++) {\n converted = this.decode_openc3_type(data[0][i])\n if (converted !== null) {\n data[0][i] = converted\n }\n }\n return data\n }\n\n get_limits(target_name, packet_name, item_name) {\n return this.exec('get_limits', [target_name, packet_name, item_name])\n }\n\n async tlm(target_name, packet_name, item_name, value_type = 'CONVERTED') {\n let data = null\n // Check for the single string syntax: tlm(\"TGT PKT ITEM\")\n if (packet_name === undefined) {\n data = await this.exec('tlm', [target_name])\n // Check for the single string syntax with type: tlm(\"TGT PKT ITEM\", \"RAW\")\n } else if (item_name === undefined) {\n if (\n ['RAW', 'CONVERTED', 'FORMATTED', 'WITH_UNITS'].includes(packet_name)\n ) {\n data = await this.exec('tlm', [target_name], { type: packet_name })\n } else {\n var err = new Error()\n err.name = 'TypeError'\n err.message = `Invalid data type ${packet_name}. Valid options are RAW, CONVERTED, FORMATTED, and WITH_UNITS.`\n throw err\n }\n } else {\n data = await this.exec('tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n var converted = this.decode_openc3_type(data)\n if (converted !== null) {\n data = converted\n }\n return data\n }\n\n async inject_tlm(\n target_name,\n packet_name,\n item_hash = null,\n value_type = 'CONVERTED'\n ) {\n data = await this.exec(\n 'inject_tlm',\n [target_name, packet_name, item_hash],\n {\n type: value_type,\n }\n )\n }\n\n set_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('set_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n override_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('override_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_overrides() {\n return this.exec('get_overrides')\n }\n\n normalize_tlm(target_name, packet_name, item_name, value_type) {\n return this.exec('normalize_tlm', [target_name, packet_name, item_name], {\n type: value_type,\n })\n }\n\n get_all_commands(target_name) {\n return this.exec('get_all_commands', [target_name])\n }\n\n get_all_command_names(target_name) {\n return this.exec('get_all_command_names', [target_name])\n }\n\n get_command(target_name, command_name) {\n return this.exec('get_command', [target_name, command_name])\n }\n\n get_cmd_cnts(target_commands) {\n return this.exec('get_cmd_cnts', [target_commands])\n }\n\n get_cmd_value(\n target_name,\n packet_name,\n parameter_name,\n value_type = 'CONVERTED'\n ) {\n return this.exec('get_cmd_value', [\n target_name,\n packet_name,\n parameter_name,\n value_type,\n ])\n }\n\n get_cmd_buffer(target_name, packet_name) {\n return this.exec('get_cmd_buffer', [target_name, packet_name])\n }\n\n // Implementation of functionality shared by cmd methods with param_lists.\n _cmd(method, target_name, command_name, param_list, headerOptions) {\n var converted = null\n for (var key in param_list) {\n if (Object.prototype.hasOwnProperty.call(param_list, key)) {\n converted = this.encode_openc3_type(param_list[key])\n if (converted !== null) {\n param_list[key] = converted\n }\n }\n }\n return this.exec(\n method,\n [target_name, command_name, param_list],\n {},\n headerOptions\n )\n }\n\n get_cmd_hazardous(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('get_cmd_hazardous', target_name)\n } else {\n return this._cmd(\n 'get_cmd_hazardous',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd(target_name, command_name, param_list, headerOptions = {}) {\n if (command_name === undefined) {\n return this.exec('cmd', target_name, {}, headerOptions)\n } else {\n return this._cmd(\n 'cmd',\n target_name,\n command_name,\n param_list,\n headerOptions\n )\n }\n }\n\n cmd_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw', target_name)\n } else {\n return this._cmd('cmd_raw', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_range_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_range_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_range_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_no_checks', target_name)\n } else {\n return this._cmd('cmd_no_checks', target_name, command_name, param_list)\n }\n }\n\n cmd_raw_no_hazardous_check(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_hazardous_check', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_hazardous_check',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n cmd_raw_no_checks(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('cmd_raw_no_checks', target_name)\n } else {\n return this._cmd(\n 'cmd_raw_no_checks',\n target_name,\n command_name,\n param_list\n )\n }\n }\n\n build_command(target_name, command_name, param_list) {\n if (command_name === undefined) {\n return this.exec('build_command', target_name)\n } else {\n return this._cmd('build_command', target_name, command_name, param_list)\n }\n }\n\n get_interface_names() {\n return this.exec('get_interface_names', [])\n }\n\n send_raw(interface_name, data) {\n return this.exec('send_raw', [interface_name, data])\n }\n\n list_configs(tool) {\n return this.exec('list_configs', [tool])\n }\n\n load_config(tool, name) {\n return this.exec('load_config', [tool, name])\n }\n\n save_config(tool, name, data) {\n return this.exec('save_config', [tool, name, data])\n }\n\n delete_config(tool, name) {\n return this.exec('delete_config', [tool, name])\n }\n\n enable_limits(target, packet, item) {\n return this.exec('enable_limits', [target, packet, item])\n }\n\n disable_limits(target, packet, item) {\n return this.exec('disable_limits', [target, packet, item])\n }\n\n get_out_of_limits() {\n return this.exec('get_out_of_limits', [])\n }\n\n get_overall_limits_state(ignored) {\n return this.exec('get_overall_limits_state', [ignored])\n }\n\n list_settings() {\n return this.exec('list_settings', [])\n }\n\n get_all_settings() {\n return this.exec('get_all_settings', [])\n }\n\n get_setting(name) {\n return this.exec('get_setting', [name])\n }\n\n get_settings(array) {\n return this.exec('get_settings', array)\n }\n\n save_setting(name, data) {\n return this.exec('save_setting', [name, data])\n }\n\n get_metrics() {\n return this.exec('get_metrics', [])\n }\n\n // TODO: Currently unused but seemed like a useful function\n async hashString(string) {\n if (window.isSecureContext) {\n // Encode the string as an arrayBuffer which the subtle crypto API uses\n const arrayBuffer = new TextEncoder().encode(string)\n // Use the subtle crypto API to perform a SHA256 Sum of the array buffer\n // The resulting hash is stored in an array buffer\n const hashAsArrayBuffer = await crypto.subtle.digest(\n 'SHA-256',\n arrayBuffer\n )\n // To create a string we will get the hexadecimal value of each byte of the array buffer\n // This gets us an array where each byte of the array buffer becomes one item in the array\n const uint8ViewOfHash = new Uint8Array(hashAsArrayBuffer)\n // We then convert it to a regular array so we can convert each item to hexadecimal strings\n // Where to characters of 0-9 or a-f represent a number between 0 and 16, containing 4 bits of information, so 2 of them is 8 bits (1 byte).\n return Array.from(uint8ViewOfHash)\n .map((b) => b.toString(16).padStart(2, '0'))\n .join('')\n }\n // else ?\n }\n}\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-footer id=\"footer\" app color=\"tertiary darken-3\" height=\"33\">\n <img :src=\"icon\" alt=\"OpenC3\" />\n <span class=\"footer-text\" style=\"margin-left: 5px\">\n OpenC3 {{ edition }} {{ openc3Version }} &copy; 2023 - License:\n {{ license }}\n </span>\n <v-spacer />\n <a :href=\"sourceUrl\" class=\"white--text text-decoration-underline\">\n Source\n </a>\n <v-spacer />\n <div class=\"justify-right\"><clock-footer /></div>\n </v-footer>\n</template>\n\n<script>\nimport ClockFooter from './components/ClockFooter.vue'\nimport { OpenC3Api } from '../../services/openc3-api'\nimport icon from '../../../public/img/icon.png'\n\nexport default {\n components: {\n ClockFooter,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n license: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n icon: icon,\n sourceUrl: '',\n openc3Version: '',\n }\n },\n created: function () {\n this.getSourceUrl()\n },\n methods: {\n getSourceUrl: function () {\n new OpenC3Api()\n .get_settings(['source_url', 'version'])\n .then((response) => {\n this.sourceUrl = response[0]\n this.openc3Version = `(${response[1]})`\n })\n .catch(() => {\n this.openc3Version = 'Unknown'\n })\n },\n },\n}\n</script>\n\n<style scoped>\n#footer {\n z-index: 1000; /* On TOP! */\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\"\nimport script from \"./AppFooter.vue?vue&type=script&lang=js&\"\nexport * from \"./AppFooter.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppFooter.vue?vue&type=style&index=0&id=1f2e2c8b&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f2e2c8b\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1f2e2c8b')) {\n api.createRecord('1f2e2c8b', component.options)\n } else {\n api.reload('1f2e2c8b', component.options)\n }\n module.hot.accept(\"./AppFooter.vue?vue&type=template&id=1f2e2c8b&scoped=true&\", function () {\n api.rerender('1f2e2c8b', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppFooter.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\n \"v-navigation-drawer\",\n {\n attrs: { app: \"\", id: \"openc3-nav-drawer\" },\n model: {\n value: _vm.drawer,\n callback: function ($$v) {\n _vm.drawer = $$v\n },\n expression: \"drawer\",\n },\n },\n [\n _c(\n \"v-list\",\n [\n _c(\n \"v-list-item\",\n [\n _c(\n \"v-list-item-icon\",\n {\n staticStyle: {\n \"margin-right\": \"auto !important\",\n \"margin-left\": \"auto\",\n \"margin-top\": \"0px\",\n \"margin-bottom\": \"0px\",\n },\n },\n [_c(\"img\", { attrs: { src: _vm.logo, alt: \"OpenC3\" } })]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticStyle: { \"text-align\": \"center\", \"font-size\": \"18pt\" },\n },\n [_vm._v(_vm._s(_vm.edition))]\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item\",\n { staticClass: \"my-0\" },\n [\n _c(\n \"v-list-item-content\",\n _vm._l(_vm.adminTools, function (tool, name) {\n return _c(\n \"div\",\n { key: name },\n [\n _c(\n \"v-btn\",\n {\n staticClass: \"fixcenter\",\n attrs: {\n block: \"\",\n small: \"\",\n href: tool.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [_vm._v(\"\\n Admin\\n \")]\n ),\n ],\n 1\n )\n }),\n 0\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\"v-treeview\", {\n attrs: {\n items: _vm.items,\n open: _vm.initiallyOpen,\n \"item-key\": \"name\",\n dense: \"\",\n \"open-on-click\": \"\",\n \"expand-icon\": \"\",\n },\n scopedSlots: _vm._u([\n {\n key: \"prepend\",\n fn: function (ref) {\n var item = ref.item\n var open = ref.open\n return [\n !item.icon\n ? _c(\"v-icon\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n open\n ? \"mdi-chevron-down\"\n : \"mdi-chevron-right\"\n ) +\n \"\\n \"\n ),\n ])\n : _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _c(\"v-icon\", [\n _vm._v(\" \" + _vm._s(item.icon) + \" \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n {\n key: \"label\",\n fn: function (ref) {\n var item = ref.item\n return [\n _c(\n \"a\",\n {\n attrs: {\n href: item.url,\n onclick: \"singleSpaNavigate(event)\",\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(item.name) +\n \"\\n \"\n ),\n ]\n ),\n ]\n },\n },\n {\n key: \"append\",\n fn: function (ref) {\n var item = ref.item\n return [\n item.icon\n ? _c(\n \"a\",\n {\n attrs: {\n href: _vm.newTabUrl(item),\n target: \"_blank\",\n },\n },\n [_c(\"v-icon\", [_vm._v(\"mdi-open-in-new\")])],\n 1\n )\n : _vm._e(),\n ]\n },\n },\n ]),\n }),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-app-bar\",\n {\n attrs: {\n app: \"\",\n color: \"tertiary darken-3\",\n id: \"openc3-app-toolbar\",\n },\n },\n [\n _c(\"v-app-bar-nav-icon\", {\n on: {\n click: function ($event) {\n _vm.drawer = !_vm.drawer\n },\n },\n }),\n _vm._v(\" \"),\n _c(\"v-divider\", {\n staticClass: \"top-bar-divider-full-height\",\n attrs: { vertical: \"\" },\n }),\n _vm._v(\" \"),\n _c(\"span\", { staticStyle: { width: \"100%\" } }, [\n _c(\"span\", { attrs: { id: \"openc3-menu\" } }),\n ]),\n _vm._v(\" \"),\n _c(\n \"div\",\n { staticClass: \"justify-right mr-2 pt-2\" },\n [_c(\"scope-selector\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"alert-history\" },\n },\n [_c(\"alert-history\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"notifications\" },\n },\n [_c(\"notifications\")],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n {\n staticClass: \"justify-right\",\n attrs: { \"data-test\": \"user-menu\" },\n },\n [_c(\"user-menu\")],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"v-select\", {\n attrs: {\n items: _vm.scopes,\n disabled: _vm.scopes.length <= 1,\n label: \"Scope\",\n dense: \"\",\n \"hide-details\": \"\",\n },\n model: {\n value: _vm.scope,\n callback: function ($$v) {\n _vm.scope = $$v\n },\n expression: \"scope\",\n },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-select\n v-model=\"scope\"\n :items=\"scopes\"\n :disabled=\"scopes.length <= 1\"\n label=\"Scope\"\n dense\n hide-details\n />\n</template>\n\n<script>\nexport default {\n data: function () {\n return {\n scopes: ['DEFAULT'],\n scope: 'DEFAULT',\n }\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\"\nimport script from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\nexport * from \"./ScopeSelector.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('1d174a8a')) {\n api.createRecord('1d174a8a', component.options)\n } else {\n api.reload('1d174a8a', component.options)\n }\n module.hot.accept(\"./ScopeSelector.vue?vue&type=template&id=1d174a8a&\", function () {\n api.rerender('1d174a8a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ScopeSelector.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showAlertPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-alert-box-outline \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showAlertPane,\n callback: function ($$v) {\n _vm.showAlertPane = $$v\n },\n expression: \"showAlertPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Alerts\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\" },\n on: { click: _vm.clearAlerts },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.alerts.length === 0\n ? _c(\"v-card-text\", [_vm._v(\" No alerts \")])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n },\n },\n [\n _vm._l(_vm.alerts, function (alert, index) {\n return [\n _c(\n \"v-list-item\",\n {\n key: \"alert-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(alert)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n alert.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\"v-list-item-title\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.title) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(alert.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.alertDialog,\n callback: function ($$v) {\n _vm.alertDialog = $$v\n },\n expression: \"alertDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedAlert.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: { status: _vm.selectedAlert.severity || \"normal\" },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" + _vm._s(_vm.selectedAlert.body) + \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.alertDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"rux-icon\", {\n staticClass: \"astro-icon\",\n attrs: { icon: _vm.icon },\n })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"span\",\n {\n style: _vm.style,\n attrs: { id: \"rux-icon\", title: _vm.label, size: _vm.size },\n },\n [\n _c(\n \"svg\",\n {\n attrs: {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 128 128\",\n preserveAspectRatio: \"xMidYMid meet\",\n focusable: \"false\",\n },\n },\n [_c(\"use\", { attrs: { href: _vm.getIcon(this.library, this.icon) } })]\n ),\n ]\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <span id=\"rux-icon\" :title=\"label\" :style=\"style\" :size=\"size\">\n <!-- Camel case props becase svg -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 128 128\"\n preserveAspectRatio=\"xMidYMid meet\"\n focusable=\"false\"\n >\n <use :href=\"getIcon(this.library, this.icon)\" />\n </svg>\n </span>\n</template>\n\n<script>\n// This component is a rewrite of the Astro UXDS RuxIcon into Vue\n// Prevents multiple customElement problem with single-spa\nexport default {\n props: {\n icon: {\n type: String,\n },\n size: {\n type: String,\n default: 'extra-small',\n },\n color: {\n type: String,\n },\n library: {\n type: String,\n default: '/icons/astro.svg',\n },\n label: {\n type: String,\n default: 'icon',\n },\n },\n computed: {\n style: function () {\n return '--iconColor=' + this.propscolor\n },\n },\n methods: {\n getIcon() {\n return this.library + '#' + this.icon\n },\n },\n}\n</script>\n","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./RuxIcon.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RuxIcon.vue?vue&type=template&id=342f670e&\"\nimport script from \"./RuxIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./RuxIcon.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('342f670e')) {\n api.createRecord('342f670e', component.options)\n } else {\n api.reload('342f670e', component.options)\n }\n module.hot.accept(\"./RuxIcon.vue?vue&type=template&id=342f670e&\", function () {\n api.rerender('342f670e', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/RuxIcon.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <rux-icon :icon=\"icon\" class=\"astro-icon\" />\n</template>\n\n<script>\nimport RuxIcon from './RuxIcon.vue'\nimport { AstroIconLibrary } from '.'\n\n// This component is a wrapper around the Astro UXDS RuxIcon to make it work with Vuetify\nexport default {\n components: {\n RuxIcon,\n },\n props: {\n icon: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroIconLibrary.includes(val)\n },\n },\n },\n}\n</script>\n\n<style scoped>\n.astro-icon {\n fill: currentColor;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\"\nimport script from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroIcon.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AstroIcon.vue?vue&type=style&index=0&id=b942113a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b942113a\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('b942113a')) {\n api.createRecord('b942113a', component.options)\n } else {\n api.reload('b942113a', component.options)\n }\n module.hot.accept(\"./AstroIcon.vue?vue&type=template&id=b942113a&scoped=true&\", function () {\n api.rerender('b942113a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroIcon.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport AstroIcon from './AstroIcon'\n\nconst AstroIconLibrary = [\n // These are from the IDs in the default RuxIcon library: https://github.com/RocketCommunicationsInc/astro-components/blob/master/static/icons/astro.svg\n 'altitude',\n 'antenna',\n 'antenna-off',\n 'antenna-receive',\n 'antenna-transmit',\n 'equipment',\n 'mission',\n 'payload',\n 'processor',\n 'processor-alt',\n 'netcom',\n 'propulsion-power',\n 'thermal',\n 'satellite-off',\n 'satellite-receive',\n 'satellite-transmit',\n 'add-large',\n 'add-small',\n 'close-large',\n 'close-small',\n 'collapse',\n 'expand',\n 'lock',\n 'unlock',\n 'search',\n 'caution',\n 'maintenance',\n 'notifications',\n 'settings',\n\n // These are in that SVG file, but they're broken in RuxIcon:\n // 'twitter', // the twitter logo\n // 'progress', // circle\n // 'resources', // filing cabinet\n // 'solar', // grid\n]\n\nconst AstroIconVuetifyValues = AstroIconLibrary.reduce((values, icon) => {\n return {\n [`astro-${icon}`]: {\n component: AstroIcon,\n props: {\n icon,\n },\n },\n ...values,\n }\n}, {})\n\nconst AstroStatusColors = {\n fatal: '#ff69B4',\n critical: '#ff3838',\n serious: '#ffb302',\n caution: '#fce83a',\n normal: '#56f000',\n standby: '#2dccff',\n off: '#9ea7ad',\n}\n\nconst getStatusColorContrast = function (severity) {\n const black = '#000000'\n const white = '#ffffff'\n\n const statusColor = AstroStatusColors[severity]\n if (statusColor) {\n const r = Number(`0x${statusColor.slice(1, 3)}`)\n const g = Number(`0x${statusColor.slice(3, 5)}`)\n const b = Number(`0x${statusColor.slice(5, 7)}`)\n const brightness = (r * 299 + g * 587 + b * 114) / 1000 // https://www.w3.org/TR/AERT/#color-contrast\n\n if (brightness > 128) return black\n }\n return white\n}\n\nconst AstroStatuses = Object.keys(AstroStatusColors)\n\nexport {\n AstroIconLibrary,\n AstroIconVuetifyValues,\n AstroStatuses,\n AstroStatusColors,\n getStatusColorContrast,\n}\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showAlertPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showAlertPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Alert box icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-alert-box-outline </v-icon>\n </v-btn>\n </template>\n\n <!-- Alerts list -->\n <v-card>\n <v-card-title>\n Alerts\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n @click=\"clearAlerts\"\n class=\"ml-1\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n </v-card-title>\n <v-card-text v-if=\"alerts.length === 0\"> No alerts </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n >\n <template v-for=\"(alert, index) in alerts\">\n <v-list-item\n @click=\"openDialog(alert)\"\n :key=\"`alert-${index}`\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title>\n {{ alert.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ alert.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"alert.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full alert -->\n <v-dialog v-model=\"alertDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedAlert.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedAlert.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-text>\n {{ selectedAlert.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"alertDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n alerts: [],\n alertDialog: false,\n showAlertPane: false,\n selectedAlert: {},\n }\n },\n watch: {\n showAlertPane: function (val) {\n if (val) {\n this.refreshList()\n }\n if (!val && this.selectedAlert.title) {\n this.alertDialog = false\n this.selectedAlert = {}\n }\n },\n },\n methods: {\n refreshList: function () {\n this.alerts = this.$store.state.notifyHistory\n },\n clearAlerts: function () {\n this.$store.commit('notifyClearHistory')\n this.refreshList()\n this.showAlertPane = false\n },\n openDialog: function (alert, clearToast = false) {\n this.selectedAlert = alert\n this.alertDialog = true\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\"\nimport script from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nexport * from \"./AlertHistory.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AlertHistory.vue?vue&type=style&index=0&id=3d0e2e40&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3d0e2e40\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3d0e2e40')) {\n api.createRecord('3d0e2e40', component.options)\n } else {\n api.reload('3d0e2e40', component.options)\n }\n module.hot.accept(\"./AlertHistory.vue?vue&type=template&id=3d0e2e40&scoped=true&\", function () {\n api.rerender('3d0e2e40', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/AlertHistory.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showNotificationPane },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"close-on-content-click\": false,\n \"nudge-width\": 340,\n \"offset-y\": \"\",\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _vm.unreadCount === 0\n ? _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\"\\n mdi-bell-outline\\n \"),\n ])\n : _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n \"offset-x\": \"24\",\n \"offset-y\": \"8\",\n color: _vm.badgeColor,\n bordered: \"\",\n content: _vm.unreadCount,\n },\n },\n [\n _c(\n \"v-icon\",\n {\n attrs: {\n size: _vm.size,\n color: _vm.badgeColor,\n },\n },\n [_vm._v(\" mdi-bell \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showNotificationPane,\n callback: function ($$v) {\n _vm.showNotificationPane = $$v\n },\n expression: \"showNotificationPane\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\"\\n Notifications\\n \"),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\n \"v-tooltip\",\n {\n attrs: { top: \"\", \"open-delay\": \"350\" },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b(\n {\n staticClass: \"ml-1\",\n attrs: {\n icon: \"\",\n \"data-test\": \"clear-notifications\",\n },\n on: { click: _vm.clearNotifications },\n },\n \"v-btn\",\n attrs,\n false\n ),\n on\n ),\n [\n _c(\"v-icon\", [\n _vm._v(\" mdi-notification-clear-all \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n },\n [_vm._v(\" \"), _c(\"span\", [_vm._v(\"Clear all\")])]\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n staticClass: \"ml-1\",\n attrs: { icon: \"\", \"data-test\": \"notification-settings\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_c(\"v-icon\", [_vm._v(\" $astro-settings \")])],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _vm.notifications.length === 0\n ? _c(\"v-card-text\", [\n _vm._v(\"\\n No notifications\\n \"),\n ])\n : _c(\n \"v-list\",\n {\n staticClass: \"overflow-y-auto\",\n attrs: {\n \"two-line\": \"\",\n width: \"388\",\n \"max-height\": \"80vh\",\n \"data-test\": \"notification-list\",\n },\n },\n [\n _vm._l(\n _vm.notificationList,\n function (notification, index) {\n return [\n notification.header\n ? [\n index !== 0\n ? _c(\"v-divider\", {\n key: index,\n staticClass: \"mb-2\",\n })\n : _vm._e(),\n _vm._v(\" \"),\n _c(\n \"v-subheader\",\n { key: notification.header },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.header) +\n \"\\n \"\n ),\n ]\n ),\n ]\n : _c(\n \"v-list-item\",\n {\n key: \"notification-\" + index,\n staticClass: \"pl-2\",\n on: {\n click: function ($event) {\n return _vm.openDialog(notification)\n },\n },\n },\n [\n _c(\n \"v-badge\",\n {\n attrs: {\n left: \"\",\n inline: \"\",\n color: \"transparent\",\n },\n scopedSlots: _vm._u(\n [\n {\n key: \"badge\",\n fn: function () {\n return [\n _c(\"astro-status-indicator\", {\n attrs: {\n status:\n notification.severity.toLowerCase(),\n },\n }),\n ]\n },\n proxy: true,\n },\n ],\n null,\n true\n ),\n },\n [\n _c(\n \"v-list-item-content\",\n { staticClass: \"pt-0 pb-0\" },\n [\n _c(\n \"v-list-item-title\",\n {\n class: {\n \"text--secondary\":\n notification.read,\n },\n },\n [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.title) +\n \"\\n \"\n ),\n ]\n ),\n _vm._v(\" \"),\n _c(\"v-list-item-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(notification.body) +\n \"\\n \"\n ),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-list-item-action\",\n { staticClass: \"mt-0\" },\n [\n _c(\"v-list-item-action-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(\n notification.time\n )\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-spacer\"),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ]\n }\n ),\n ],\n 2\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.notificationDialog,\n callback: function ($$v) {\n _vm.notificationDialog = $$v\n },\n expression: \"notificationDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\n \"v-card-title\",\n [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.title) +\n \"\\n \"\n ),\n _c(\"v-spacer\"),\n _vm._v(\" \"),\n _c(\"astro-status-indicator\", {\n attrs: {\n status: _vm.selectedNotification.severity || \"normal\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-card-subtitle\", [\n _vm._v(\n \"\\n \" +\n _vm._s(\n _vm._f(\"shortDateTime\")(_vm.selectedNotification.time)\n ) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-card-text\", [\n _vm._v(\n \"\\n \" +\n _vm._s(_vm.selectedNotification.body) +\n \"\\n \"\n ),\n ]),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n return _vm.navigate(_vm.selectedNotification.url)\n },\n },\n },\n [\n _vm._v(\"\\n Open\\n \"),\n _c(\"v-icon\", { attrs: { right: \"\" } }, [\n _vm._v(\" mdi-open-in-new \"),\n ]),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: {\n click: function ($event) {\n _vm.notificationDialog = false\n },\n },\n },\n [_vm._v(\"\\n Dismiss\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"v-dialog\",\n {\n attrs: { width: \"600\" },\n model: {\n value: _vm.settingsDialog,\n callback: function ($$v) {\n _vm.settingsDialog = $$v\n },\n expression: \"settingsDialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Notification settings \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Show toasts\" },\n model: {\n value: _vm.showToast,\n callback: function ($$v) {\n _vm.showToast = $$v\n },\n expression: \"showToast\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.toggleSettingsDialog },\n },\n [_vm._v(\"\\n close\\n \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Number} the result of the comparison\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport default function compareAsc(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var diff = dateLeft.getTime() - dateRight.getTime();\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarMonths from \"../differenceInCalendarMonths/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport isLastDayOfMonth from \"../isLastDayOfMonth/index.js\";\n/**\n * @name differenceInMonths\n * @category Month Helpers\n * @summary Get the number of full months between the given dates.\n *\n * @description\n * Get the number of full months between the given dates using trunc as a default rounding method.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInMonths(new Date(2014, 8, 1), new Date(2014, 0, 31))\n * //=> 7\n */\nexport default function differenceInMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarMonths(dateLeft, dateRight));\n var result;\n\n // Check for the difference of less than month\n if (difference < 1) {\n result = 0;\n } else {\n if (dateLeft.getMonth() === 1 && dateLeft.getDate() > 27) {\n // This will check if the date is end of Feb and assign a higher end of month date\n // to compare it with Jan\n dateLeft.setDate(30);\n }\n dateLeft.setMonth(dateLeft.getMonth() - sign * difference);\n\n // Math.abs(diff in full months - diff in calendar months) === 1 if last calendar month is not full\n // If so, result must be decreased by 1 in absolute value\n var isLastMonthNotFull = compareAsc(dateLeft, dateRight) === -sign;\n\n // Check for cases of one full calendar month\n if (isLastDayOfMonth(toDate(dirtyDateLeft)) && difference === 1 && compareAsc(dirtyDateLeft, dateRight) === 1) {\n isLastMonthNotFull = false;\n }\n result = sign * (difference - Number(isLastMonthNotFull));\n }\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInCalendarMonths\n * @category Month Helpers\n * @summary Get the number of calendar months between the given dates.\n *\n * @description\n * Get the number of calendar months between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar months\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar months are between 31 January 2014 and 1 September 2014?\n * const result = differenceInCalendarMonths(\n * new Date(2014, 8, 1),\n * new Date(2014, 0, 31)\n * )\n * //=> 8\n */\nexport default function differenceInCalendarMonths(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var yearDiff = dateLeft.getFullYear() - dateRight.getFullYear();\n var monthDiff = dateLeft.getMonth() - dateRight.getMonth();\n return yearDiff * 12 + monthDiff;\n}","import toDate from \"../toDate/index.js\";\nimport endOfDay from \"../endOfDay/index.js\";\nimport endOfMonth from \"../endOfMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isLastDayOfMonth\n * @category Month Helpers\n * @summary Is the given date the last day of a month?\n *\n * @description\n * Is the given date the last day of a month?\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is the last day of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Is 28 February 2014 the last day of a month?\n * const result = isLastDayOfMonth(new Date(2014, 1, 28))\n * //=> true\n */\nexport default function isLastDayOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n return endOfDay(date).getTime() === endOfMonth(date).getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function trunc(value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n};\n\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function assign(target, object) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n for (var property in object) {\n if (Object.prototype.hasOwnProperty.call(object, property)) {\n ;\n target[property] = object[property];\n }\n }\n return target;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport compareAsc from \"../compareAsc/index.js\";\nimport differenceInMonths from \"../differenceInMonths/index.js\";\nimport differenceInSeconds from \"../differenceInSeconds/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport cloneObject from \"../_lib/cloneObject/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MINUTES_IN_DAY = 1440;\nvar MINUTES_IN_ALMOST_TWO_DAYS = 2520;\nvar MINUTES_IN_MONTH = 43200;\nvar MINUTES_IN_TWO_MONTHS = 86400;\n\n/**\n * @name formatDistance\n * @category Common Helpers\n * @summary Return the distance between the given dates in words.\n *\n * @description\n * Return the distance between the given dates in words.\n *\n * | Distance between dates | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance between dates | Result |\n * |------------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * @param {Date|Number} date - the date\n * @param {Date|Number} baseDate - the date to compare with\n * @param {Object} [options] - an object with options.\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result indicates if the second date is earlier or later than the first\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `baseDate` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // What is the distance between 2 July 2014 and 1 January 2015?\n * const result = formatDistance(new Date(2014, 6, 2), new Date(2015, 0, 1))\n * //=> '6 months'\n *\n * @example\n * // What is the distance between 1 January 2015 00:00:15\n * // and 1 January 2015 00:00:00, including seconds?\n * const result = formatDistance(\n * new Date(2015, 0, 1, 0, 0, 15),\n * new Date(2015, 0, 1, 0, 0, 0),\n * { includeSeconds: true }\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // What is the distance from 1 January 2016\n * // to 1 January 2015, with a suffix?\n * const result = formatDistance(new Date(2015, 0, 1), new Date(2016, 0, 1), {\n * addSuffix: true\n * })\n * //=> 'about 1 year ago'\n *\n * @example\n * // What is the distance between 1 August 2016 and 1 January 2015 in Esperanto?\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = formatDistance(new Date(2016, 7, 1), new Date(2015, 0, 1), {\n * locale: eoLocale\n * })\n * //=> 'pli ol 1 jaro'\n */\n\nexport default function formatDistance(dirtyDate, dirtyBaseDate, options) {\n var _ref, _options$locale;\n requiredArgs(2, arguments);\n var defaultOptions = getDefaultOptions();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n if (!locale.formatDistance) {\n throw new RangeError('locale must contain formatDistance property');\n }\n var comparison = compareAsc(dirtyDate, dirtyBaseDate);\n if (isNaN(comparison)) {\n throw new RangeError('Invalid time value');\n }\n var localizeOptions = assign(cloneObject(options), {\n addSuffix: Boolean(options === null || options === void 0 ? void 0 : options.addSuffix),\n comparison: comparison\n });\n var dateLeft;\n var dateRight;\n if (comparison > 0) {\n dateLeft = toDate(dirtyBaseDate);\n dateRight = toDate(dirtyDate);\n } else {\n dateLeft = toDate(dirtyDate);\n dateRight = toDate(dirtyBaseDate);\n }\n var seconds = differenceInSeconds(dateRight, dateLeft);\n var offsetInSeconds = (getTimezoneOffsetInMilliseconds(dateRight) - getTimezoneOffsetInMilliseconds(dateLeft)) / 1000;\n var minutes = Math.round((seconds - offsetInSeconds) / 60);\n var months;\n\n // 0 up to 2 mins\n if (minutes < 2) {\n if (options !== null && options !== void 0 && options.includeSeconds) {\n if (seconds < 5) {\n return locale.formatDistance('lessThanXSeconds', 5, localizeOptions);\n } else if (seconds < 10) {\n return locale.formatDistance('lessThanXSeconds', 10, localizeOptions);\n } else if (seconds < 20) {\n return locale.formatDistance('lessThanXSeconds', 20, localizeOptions);\n } else if (seconds < 40) {\n return locale.formatDistance('halfAMinute', 0, localizeOptions);\n } else if (seconds < 60) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', 1, localizeOptions);\n }\n } else {\n if (minutes === 0) {\n return locale.formatDistance('lessThanXMinutes', 1, localizeOptions);\n } else {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n }\n }\n\n // 2 mins up to 0.75 hrs\n } else if (minutes < 45) {\n return locale.formatDistance('xMinutes', minutes, localizeOptions);\n\n // 0.75 hrs up to 1.5 hrs\n } else if (minutes < 90) {\n return locale.formatDistance('aboutXHours', 1, localizeOptions);\n\n // 1.5 hrs up to 24 hrs\n } else if (minutes < MINUTES_IN_DAY) {\n var hours = Math.round(minutes / 60);\n return locale.formatDistance('aboutXHours', hours, localizeOptions);\n\n // 1 day up to 1.75 days\n } else if (minutes < MINUTES_IN_ALMOST_TWO_DAYS) {\n return locale.formatDistance('xDays', 1, localizeOptions);\n\n // 1.75 days up to 30 days\n } else if (minutes < MINUTES_IN_MONTH) {\n var days = Math.round(minutes / MINUTES_IN_DAY);\n return locale.formatDistance('xDays', days, localizeOptions);\n\n // 1 month up to 2 months\n } else if (minutes < MINUTES_IN_TWO_MONTHS) {\n months = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('aboutXMonths', months, localizeOptions);\n }\n months = differenceInMonths(dateRight, dateLeft);\n\n // 2 months up to 12 months\n if (months < 12) {\n var nearestMonth = Math.round(minutes / MINUTES_IN_MONTH);\n return locale.formatDistance('xMonths', nearestMonth, localizeOptions);\n\n // 1 year up to max Date\n } else {\n var monthsSinceStartOfYear = months % 12;\n var years = Math.floor(months / 12);\n\n // N years up to 1 years 3 months\n if (monthsSinceStartOfYear < 3) {\n return locale.formatDistance('aboutXYears', years, localizeOptions);\n\n // N years 3 months up to N years 9 months\n } else if (monthsSinceStartOfYear < 9) {\n return locale.formatDistance('overXYears', years, localizeOptions);\n\n // N years 9 months up to N year 12 months\n } else {\n return locale.formatDistance('almostXYears', years + 1, localizeOptions);\n }\n }\n}","import assign from \"../assign/index.js\";\nexport default function cloneObject(object) {\n return assign({}, object);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","const _severities = [\n // order of severities from highest to lowest\n 'fatal',\n 'critical',\n 'serious',\n 'caution',\n 'normal',\n 'standby',\n 'off',\n]\n\nconst _getSeverityIndeces = function (severities) {\n return severities.map((severity) =>\n _severities.indexOf(severity.toLowerCase())\n )\n}\n\nconst highestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.min(...indeces)\n return _severities[index]\n}\n\nconst lowestSeverity = function (severities) {\n const indeces = _getSeverityIndeces(severities)\n const index = Math.max(...indeces)\n return _severities[index]\n}\n\nconst orderBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.sort((a, b) => {\n return (\n _severities.indexOf(severityGetter(a)) -\n _severities.indexOf(severityGetter(b))\n )\n })\n}\n\nconst groupBySeverity = function (objects, severityGetter = (x) => x.severity) {\n return objects.reduce((groups, obj) => {\n const severity = severityGetter(obj)\n groups[severity] ||= []\n groups[severity].push(obj)\n return groups\n }, {})\n}\n\nexport { highestSeverity, lowestSeverity, orderBySeverity, groupBySeverity }\n","var adapters = {\n logger: self.console,\n WebSocket: self.WebSocket\n};\n\nvar logger = {\n log(...messages) {\n if (this.enabled) {\n messages.push(Date.now());\n adapters.logger.log(\"[ActionCable]\", ...messages);\n }\n }\n};\n\nconst now = () => (new Date).getTime();\n\nconst secondsSince = time => (now() - time) / 1e3;\n\nclass ConnectionMonitor {\n constructor(connection) {\n this.visibilityDidChange = this.visibilityDidChange.bind(this);\n this.connection = connection;\n this.reconnectAttempts = 0;\n }\n start() {\n if (!this.isRunning()) {\n this.startedAt = now();\n delete this.stoppedAt;\n this.startPolling();\n addEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`);\n }\n }\n stop() {\n if (this.isRunning()) {\n this.stoppedAt = now();\n this.stopPolling();\n removeEventListener(\"visibilitychange\", this.visibilityDidChange);\n logger.log(\"ConnectionMonitor stopped\");\n }\n }\n isRunning() {\n return this.startedAt && !this.stoppedAt;\n }\n recordPing() {\n this.pingedAt = now();\n }\n recordConnect() {\n this.reconnectAttempts = 0;\n this.recordPing();\n delete this.disconnectedAt;\n logger.log(\"ConnectionMonitor recorded connect\");\n }\n recordDisconnect() {\n this.disconnectedAt = now();\n logger.log(\"ConnectionMonitor recorded disconnect\");\n }\n startPolling() {\n this.stopPolling();\n this.poll();\n }\n stopPolling() {\n clearTimeout(this.pollTimeout);\n }\n poll() {\n this.pollTimeout = setTimeout((() => {\n this.reconnectIfStale();\n this.poll();\n }), this.getPollInterval());\n }\n getPollInterval() {\n const {staleThreshold: staleThreshold, reconnectionBackoffRate: reconnectionBackoffRate} = this.constructor;\n const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10));\n const jitterMax = this.reconnectAttempts === 0 ? 1 : reconnectionBackoffRate;\n const jitter = jitterMax * Math.random();\n return staleThreshold * 1e3 * backoff * (1 + jitter);\n }\n reconnectIfStale() {\n if (this.connectionIsStale()) {\n logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`);\n this.reconnectAttempts++;\n if (this.disconnectedRecently()) {\n logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`);\n } else {\n logger.log(\"ConnectionMonitor reopening\");\n this.connection.reopen();\n }\n }\n }\n get refreshedAt() {\n return this.pingedAt ? this.pingedAt : this.startedAt;\n }\n connectionIsStale() {\n return secondsSince(this.refreshedAt) > this.constructor.staleThreshold;\n }\n disconnectedRecently() {\n return this.disconnectedAt && secondsSince(this.disconnectedAt) < this.constructor.staleThreshold;\n }\n visibilityDidChange() {\n if (document.visibilityState === \"visible\") {\n setTimeout((() => {\n if (this.connectionIsStale() || !this.connection.isOpen()) {\n logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`);\n this.connection.reopen();\n }\n }), 200);\n }\n }\n}\n\nConnectionMonitor.staleThreshold = 6;\n\nConnectionMonitor.reconnectionBackoffRate = .15;\n\nvar INTERNAL = {\n message_types: {\n welcome: \"welcome\",\n disconnect: \"disconnect\",\n ping: \"ping\",\n confirmation: \"confirm_subscription\",\n rejection: \"reject_subscription\"\n },\n disconnect_reasons: {\n unauthorized: \"unauthorized\",\n invalid_request: \"invalid_request\",\n server_restart: \"server_restart\"\n },\n default_mount_path: \"/cable\",\n protocols: [ \"actioncable-v1-json\", \"actioncable-unsupported\" ]\n};\n\nconst {message_types: message_types, protocols: protocols} = INTERNAL;\n\nconst supportedProtocols = protocols.slice(0, protocols.length - 1);\n\nconst indexOf = [].indexOf;\n\nclass Connection {\n constructor(consumer) {\n this.open = this.open.bind(this);\n this.consumer = consumer;\n this.subscriptions = this.consumer.subscriptions;\n this.monitor = new ConnectionMonitor(this);\n this.disconnected = true;\n }\n send(data) {\n if (this.isOpen()) {\n this.webSocket.send(JSON.stringify(data));\n return true;\n } else {\n return false;\n }\n }\n open() {\n if (this.isActive()) {\n logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`);\n return false;\n } else {\n logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`);\n if (this.webSocket) {\n this.uninstallEventHandlers();\n }\n this.webSocket = new adapters.WebSocket(this.consumer.url, protocols);\n this.installEventHandlers();\n this.monitor.start();\n return true;\n }\n }\n close({allowReconnect: allowReconnect} = {\n allowReconnect: true\n }) {\n if (!allowReconnect) {\n this.monitor.stop();\n }\n if (this.isOpen()) {\n return this.webSocket.close();\n }\n }\n reopen() {\n logger.log(`Reopening WebSocket, current state is ${this.getState()}`);\n if (this.isActive()) {\n try {\n return this.close();\n } catch (error) {\n logger.log(\"Failed to reopen WebSocket\", error);\n } finally {\n logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`);\n setTimeout(this.open, this.constructor.reopenDelay);\n }\n } else {\n return this.open();\n }\n }\n getProtocol() {\n if (this.webSocket) {\n return this.webSocket.protocol;\n }\n }\n isOpen() {\n return this.isState(\"open\");\n }\n isActive() {\n return this.isState(\"open\", \"connecting\");\n }\n isProtocolSupported() {\n return indexOf.call(supportedProtocols, this.getProtocol()) >= 0;\n }\n isState(...states) {\n return indexOf.call(states, this.getState()) >= 0;\n }\n getState() {\n if (this.webSocket) {\n for (let state in adapters.WebSocket) {\n if (adapters.WebSocket[state] === this.webSocket.readyState) {\n return state.toLowerCase();\n }\n }\n }\n return null;\n }\n installEventHandlers() {\n for (let eventName in this.events) {\n const handler = this.events[eventName].bind(this);\n this.webSocket[`on${eventName}`] = handler;\n }\n }\n uninstallEventHandlers() {\n for (let eventName in this.events) {\n this.webSocket[`on${eventName}`] = function() {};\n }\n }\n}\n\nConnection.reopenDelay = 500;\n\nConnection.prototype.events = {\n message(event) {\n if (!this.isProtocolSupported()) {\n return;\n }\n const {identifier: identifier, message: message, reason: reason, reconnect: reconnect, type: type} = JSON.parse(event.data);\n switch (type) {\n case message_types.welcome:\n this.monitor.recordConnect();\n return this.subscriptions.reload();\n\n case message_types.disconnect:\n logger.log(`Disconnecting. Reason: ${reason}`);\n return this.close({\n allowReconnect: reconnect\n });\n\n case message_types.ping:\n return this.monitor.recordPing();\n\n case message_types.confirmation:\n this.subscriptions.confirmSubscription(identifier);\n return this.subscriptions.notify(identifier, \"connected\");\n\n case message_types.rejection:\n return this.subscriptions.reject(identifier);\n\n default:\n return this.subscriptions.notify(identifier, \"received\", message);\n }\n },\n open() {\n logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`);\n this.disconnected = false;\n if (!this.isProtocolSupported()) {\n logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\");\n return this.close({\n allowReconnect: false\n });\n }\n },\n close(event) {\n logger.log(\"WebSocket onclose event\");\n if (this.disconnected) {\n return;\n }\n this.disconnected = true;\n this.monitor.recordDisconnect();\n return this.subscriptions.notifyAll(\"disconnected\", {\n willAttemptReconnect: this.monitor.isRunning()\n });\n },\n error() {\n logger.log(\"WebSocket onerror event\");\n }\n};\n\nconst extend = function(object, properties) {\n if (properties != null) {\n for (let key in properties) {\n const value = properties[key];\n object[key] = value;\n }\n }\n return object;\n};\n\nclass Subscription {\n constructor(consumer, params = {}, mixin) {\n this.consumer = consumer;\n this.identifier = JSON.stringify(params);\n extend(this, mixin);\n }\n perform(action, data = {}) {\n data.action = action;\n return this.send(data);\n }\n send(data) {\n return this.consumer.send({\n command: \"message\",\n identifier: this.identifier,\n data: JSON.stringify(data)\n });\n }\n unsubscribe() {\n return this.consumer.subscriptions.remove(this);\n }\n}\n\nclass SubscriptionGuarantor {\n constructor(subscriptions) {\n this.subscriptions = subscriptions;\n this.pendingSubscriptions = [];\n }\n guarantee(subscription) {\n if (this.pendingSubscriptions.indexOf(subscription) == -1) {\n logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`);\n this.pendingSubscriptions.push(subscription);\n } else {\n logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`);\n }\n this.startGuaranteeing();\n }\n forget(subscription) {\n logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`);\n this.pendingSubscriptions = this.pendingSubscriptions.filter((s => s !== subscription));\n }\n startGuaranteeing() {\n this.stopGuaranteeing();\n this.retrySubscribing();\n }\n stopGuaranteeing() {\n clearTimeout(this.retryTimeout);\n }\n retrySubscribing() {\n this.retryTimeout = setTimeout((() => {\n if (this.subscriptions && typeof this.subscriptions.subscribe === \"function\") {\n this.pendingSubscriptions.map((subscription => {\n logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`);\n this.subscriptions.subscribe(subscription);\n }));\n }\n }), 500);\n }\n}\n\nclass Subscriptions {\n constructor(consumer) {\n this.consumer = consumer;\n this.guarantor = new SubscriptionGuarantor(this);\n this.subscriptions = [];\n }\n create(channelName, mixin) {\n const channel = channelName;\n const params = typeof channel === \"object\" ? channel : {\n channel: channel\n };\n const subscription = new Subscription(this.consumer, params, mixin);\n return this.add(subscription);\n }\n add(subscription) {\n this.subscriptions.push(subscription);\n this.consumer.ensureActiveConnection();\n this.notify(subscription, \"initialized\");\n this.subscribe(subscription);\n return subscription;\n }\n remove(subscription) {\n this.forget(subscription);\n if (!this.findAll(subscription.identifier).length) {\n this.sendCommand(subscription, \"unsubscribe\");\n }\n return subscription;\n }\n reject(identifier) {\n return this.findAll(identifier).map((subscription => {\n this.forget(subscription);\n this.notify(subscription, \"rejected\");\n return subscription;\n }));\n }\n forget(subscription) {\n this.guarantor.forget(subscription);\n this.subscriptions = this.subscriptions.filter((s => s !== subscription));\n return subscription;\n }\n findAll(identifier) {\n return this.subscriptions.filter((s => s.identifier === identifier));\n }\n reload() {\n return this.subscriptions.map((subscription => this.subscribe(subscription)));\n }\n notifyAll(callbackName, ...args) {\n return this.subscriptions.map((subscription => this.notify(subscription, callbackName, ...args)));\n }\n notify(subscription, callbackName, ...args) {\n let subscriptions;\n if (typeof subscription === \"string\") {\n subscriptions = this.findAll(subscription);\n } else {\n subscriptions = [ subscription ];\n }\n return subscriptions.map((subscription => typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined));\n }\n subscribe(subscription) {\n if (this.sendCommand(subscription, \"subscribe\")) {\n this.guarantor.guarantee(subscription);\n }\n }\n confirmSubscription(identifier) {\n logger.log(`Subscription confirmed ${identifier}`);\n this.findAll(identifier).map((subscription => this.guarantor.forget(subscription)));\n }\n sendCommand(subscription, command) {\n const {identifier: identifier} = subscription;\n return this.consumer.send({\n command: command,\n identifier: identifier\n });\n }\n}\n\nclass Consumer {\n constructor(url) {\n this._url = url;\n this.subscriptions = new Subscriptions(this);\n this.connection = new Connection(this);\n }\n get url() {\n return createWebSocketURL(this._url);\n }\n send(data) {\n return this.connection.send(data);\n }\n connect() {\n return this.connection.open();\n }\n disconnect() {\n return this.connection.close({\n allowReconnect: false\n });\n }\n ensureActiveConnection() {\n if (!this.connection.isActive()) {\n return this.connection.open();\n }\n }\n}\n\nfunction createWebSocketURL(url) {\n if (typeof url === \"function\") {\n url = url();\n }\n if (url && !/^wss?:/i.test(url)) {\n const a = document.createElement(\"a\");\n a.href = url;\n a.href = a.href;\n a.protocol = a.protocol.replace(\"http\", \"ws\");\n return a.href;\n } else {\n return url;\n }\n}\n\nfunction createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n return new Consumer(url);\n}\n\nfunction getConfig(name) {\n const element = document.head.querySelector(`meta[name='action-cable-${name}']`);\n if (element) {\n return element.getAttribute(\"content\");\n }\n}\n\nexport { Connection, ConnectionMonitor, Consumer, INTERNAL, Subscription, SubscriptionGuarantor, Subscriptions, adapters, createConsumer, createWebSocketURL, getConfig, logger };\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport * as ActionCable from '@rails/actioncable'\n//ActionCable.logger.enabled = true\nActionCable.ConnectionMonitor.staleThreshold = 10\n\nexport default class Cable {\n constructor(url = '/openc3-api/cable') {\n this._cable = null\n this._url = url\n }\n disconnect() {\n if (this._cable) {\n this._cable.disconnect()\n }\n }\n createSubscription(channel, scope, callbacks = {}, additionalOptions = {}) {\n return OpenC3Auth.updateToken(OpenC3Auth.defaultMinValidity).then(\n (refreshed) => {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n if (this._cable == null) {\n let final_url =\n this._url +\n '?scope=' +\n window.openc3Scope +\n '&authorization=' +\n localStorage.openc3Token\n this._cable = ActionCable.createConsumer(final_url)\n }\n return this._cable.subscriptions.create(\n {\n channel,\n ...additionalOptions,\n },\n callbacks\n )\n }\n )\n }\n recordPing() {\n this._cable.connection.monitor.recordPing()\n }\n}\n","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showNotificationPane\" class=\"overlay\" />\n <v-menu\n v-model=\"showNotificationPane\"\n transition=\"slide-y-transition\"\n :close-on-content-click=\"false\"\n :nudge-width=\"340\"\n offset-y\n :nudge-bottom=\"20\"\n >\n <!-- Bell icon -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon v-if=\"unreadCount === 0\" :size=\"size\">\n mdi-bell-outline\n </v-icon>\n <v-badge\n v-else\n left\n offset-x=\"24\"\n offset-y=\"8\"\n :color=\"badgeColor\"\n bordered\n :content=\"unreadCount\"\n >\n <v-icon :size=\"size\" :color=\"badgeColor\"> mdi-bell </v-icon>\n </v-badge>\n </v-btn>\n </template>\n\n <!-- Notifications list -->\n <v-card>\n <v-card-title>\n Notifications\n <v-spacer />\n <v-tooltip top open-delay=\"350\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn\n icon\n v-bind=\"attrs\"\n v-on=\"on\"\n class=\"ml-1\"\n @click=\"clearNotifications\"\n data-test=\"clear-notifications\"\n >\n <v-icon> mdi-notification-clear-all </v-icon>\n </v-btn>\n </template>\n <span>Clear all</span>\n </v-tooltip>\n <v-btn\n icon\n @click=\"toggleSettingsDialog\"\n class=\"ml-1\"\n data-test=\"notification-settings\"\n >\n <v-icon> $astro-settings </v-icon>\n </v-btn>\n </v-card-title>\n <v-card-text v-if=\"notifications.length === 0\">\n No notifications\n </v-card-text>\n <v-list\n v-else\n two-line\n width=\"388\"\n max-height=\"80vh\"\n class=\"overflow-y-auto\"\n data-test=\"notification-list\"\n >\n <template v-for=\"(notification, index) in notificationList\">\n <template v-if=\"notification.header\">\n <v-divider v-if=\"index !== 0\" :key=\"index\" class=\"mb-2\" />\n <v-subheader :key=\"notification.header\">\n {{ notification.header }}\n </v-subheader>\n </template>\n\n <v-list-item\n v-else\n :key=\"`notification-${index}`\"\n @click=\"openDialog(notification)\"\n class=\"pl-2\"\n >\n <v-badge left inline color=\"transparent\">\n <v-list-item-content class=\"pt-0 pb-0\">\n <v-list-item-title\n :class=\"{ 'text--secondary': notification.read }\"\n >\n {{ notification.title }}\n </v-list-item-title>\n <v-list-item-subtitle>\n {{ notification.body }}\n </v-list-item-subtitle>\n </v-list-item-content>\n <v-list-item-action class=\"mt-0\">\n <v-list-item-action-text>\n {{ notification.time | shortDateTime }}\n </v-list-item-action-text>\n <v-spacer />\n </v-list-item-action>\n <template v-slot:badge>\n <astro-status-indicator\n :status=\"notification.severity.toLowerCase()\"\n />\n </template>\n </v-badge>\n </v-list-item>\n </template>\n </v-list>\n </v-card>\n </v-menu>\n\n <!-- Dialog for viewing full notification -->\n <v-dialog v-model=\"notificationDialog\" width=\"600\">\n <v-card>\n <v-card-title>\n {{ selectedNotification.title }}\n <v-spacer />\n <astro-status-indicator\n :status=\"selectedNotification.severity || 'normal'\"\n />\n </v-card-title>\n <v-card-subtitle>\n {{ selectedNotification.time | shortDateTime }}\n </v-card-subtitle>\n <v-card-text>\n {{ selectedNotification.body }}\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn\n color=\"primary\"\n text\n @click=\"navigate(selectedNotification.url)\"\n >\n Open\n <v-icon right> mdi-open-in-new </v-icon>\n </v-btn>\n <v-btn color=\"primary\" text @click=\"notificationDialog = false\">\n Dismiss\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n\n <!-- Dialog for changing notification settings -->\n <v-dialog v-model=\"settingsDialog\" width=\"600\">\n <v-card>\n <v-card-title> Notification settings </v-card-title>\n <v-card-text>\n <v-switch v-model=\"showToast\" label=\"Show toasts\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"toggleSettingsDialog\">\n close\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { formatDistanceToNow } from 'date-fns'\nimport { AstroStatusColors } from '../../../components/icons'\nimport {\n highestSeverity,\n orderBySeverity,\n groupBySeverity,\n} from '../util/AstroStatus'\nimport Cable from '../../../services/cable.js'\n\nconst NOTIFICATION_HISTORY_MAX_LENGTH = 100\n\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n return {\n AstroStatusColors,\n cable: new Cable(),\n subscription: null,\n notifications: [],\n showNotificationPane: false,\n toastNotification: {},\n notificationDialog: false,\n selectedNotification: {},\n settingsDialog: false,\n showToast: true,\n }\n },\n computed: {\n badgeColor: function () {\n if (!this.unreadCount) {\n return AstroStatusColors['off']\n }\n const severities = this.unreadNotifications\n .map((notification) => notification.severity)\n .filter((val, index, self) => {\n return self.indexOf(val) === index // Unique values\n })\n return AstroStatusColors[highestSeverity(severities)]\n },\n readNotifications: function () {\n return this.notifications\n .filter((notification) => notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadNotifications: function () {\n return this.notifications\n .filter((notification) => !notification.read)\n .sort((a, b) => b.time - a.time)\n },\n unreadCount: function () {\n let result = this.unreadNotifications.length\n if (result >= NOTIFICATION_HISTORY_MAX_LENGTH) {\n result += '+' // Indicate there are more\n }\n return result\n },\n notificationList: function () {\n const groups = groupBySeverity(this.unreadNotifications)\n let result = orderBySeverity(Object.keys(groups), (k) => k).flatMap(\n (severity) => {\n const header = {\n header: severity.charAt(0).toUpperCase() + severity.slice(1),\n }\n return [header, ...groups[severity]]\n }\n )\n if (this.readNotifications.length) {\n result = result.concat([{ header: 'Read' }, ...this.readNotifications])\n }\n return result\n },\n },\n watch: {\n showNotificationPane: function (val) {\n if (!val) {\n if (this.selectedNotification.title) {\n this.notificationDialog = false\n this.selectedNotification = {}\n } else {\n this.markAllAsRead()\n }\n }\n },\n showToast: function (val) {\n localStorage.notoast = !val\n },\n },\n created: function () {\n this.showToast = localStorage.notoast === 'false'\n this.subscribe()\n },\n destroyed: function () {\n if (this.subscription) {\n this.subscription.unsubscribe()\n }\n this.cable.disconnect()\n },\n methods: {\n markAllAsRead: function () {\n this.notifications.forEach((notification) => {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n })\n },\n clearNotifications: function () {\n this.markAllAsRead()\n this.notifications = []\n localStorage.notificationStreamOffset = localStorage.lastReadNotification\n this.showNotificationPane = false\n },\n toggleNotificationPane: function () {\n this.showNotificationPane = !this.showNotificationPane\n },\n toggleSettingsDialog: function () {\n this.settingsDialog = !this.settingsDialog\n },\n openDialog: function (notification, clearToast = false) {\n notification.read = true\n if (\n !localStorage.lastReadNotification ||\n localStorage.lastReadNotification < notification.msg_id\n ) {\n localStorage.lastReadNotification = notification.msg_id\n }\n this.selectedNotification = notification\n this.notificationDialog = true\n },\n navigate: function (url) {\n window.open(url, '_blank')\n },\n subscribe: function () {\n this.cable\n .createSubscription(\n 'NotificationsChannel',\n window.openc3Scope,\n {\n received: (data) => this.received(data),\n },\n {\n start_offset:\n localStorage.notificationStreamOffset ||\n localStorage.lastReadNotification,\n }\n )\n .then((subscription) => {\n this.subscription = subscription\n })\n },\n received: function (parsed) {\n this.cable.recordPing()\n if (parsed.length > NOTIFICATION_HISTORY_MAX_LENGTH) {\n parsed.splice(0, parsed.length - NOTIFICATION_HISTORY_MAX_LENGTH)\n }\n let foundToast = false\n parsed.forEach((notification) => {\n notification.read =\n notification.msg_id <= localStorage.lastReadNotification\n notification.severity = notification.severity || 'normal'\n if (\n !notification.read && // Don't toast read notifications\n (['critical', 'serious'].includes(notification.severity) || // Toast for these statuses\n notification.severity === 'critical') // Ok to override a toast only if this one is 'critical'\n ) {\n foundToast = true\n this.toastNotification = notification\n }\n })\n\n if (this.showToast && foundToast) {\n this.$notify[this.toastNotification.severity]({\n ...this.toastNotification,\n type: 'notification',\n duration:\n this.toastNotification.severity === 'critical' ? null : 5000,\n saveToHistory: false,\n })\n }\n\n if (\n this.notifications.length + parsed.length >\n NOTIFICATION_HISTORY_MAX_LENGTH\n ) {\n this.notifications.splice(\n 0,\n this.notifications.length +\n parsed.length -\n NOTIFICATION_HISTORY_MAX_LENGTH\n )\n }\n this.notifications = this.notifications.concat(parsed)\n },\n },\n filters: {\n shortDateTime: function (nsec) {\n if (!nsec) return ''\n const date = new Date(nsec / 1_000_000)\n return formatDistanceToNow(date, { addSuffix: true })\n },\n },\n}\n</script>\n\n<style scoped>\n.v-subheader {\n height: 28px;\n}\n\n.v-badge {\n width: 100%;\n}\n\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import distanceInWords from \"../formatDistance/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name formatDistanceToNow\n * @category Common Helpers\n * @summary Return the distance between the given date and now in words.\n * @pure false\n *\n * @description\n * Return the distance between the given date and now in words.\n *\n * | Distance to now | Result |\n * |-------------------------------------------------------------------|---------------------|\n * | 0 ... 30 secs | less than a minute |\n * | 30 secs ... 1 min 30 secs | 1 minute |\n * | 1 min 30 secs ... 44 mins 30 secs | [2..44] minutes |\n * | 44 mins ... 30 secs ... 89 mins 30 secs | about 1 hour |\n * | 89 mins 30 secs ... 23 hrs 59 mins 30 secs | about [2..24] hours |\n * | 23 hrs 59 mins 30 secs ... 41 hrs 59 mins 30 secs | 1 day |\n * | 41 hrs 59 mins 30 secs ... 29 days 23 hrs 59 mins 30 secs | [2..30] days |\n * | 29 days 23 hrs 59 mins 30 secs ... 44 days 23 hrs 59 mins 30 secs | about 1 month |\n * | 44 days 23 hrs 59 mins 30 secs ... 59 days 23 hrs 59 mins 30 secs | about 2 months |\n * | 59 days 23 hrs 59 mins 30 secs ... 1 yr | [2..12] months |\n * | 1 yr ... 1 yr 3 months | about 1 year |\n * | 1 yr 3 months ... 1 yr 9 month s | over 1 year |\n * | 1 yr 9 months ... 2 yrs | almost 2 years |\n * | N yrs ... N yrs 3 months | about N years |\n * | N yrs 3 months ... N yrs 9 months | over N years |\n * | N yrs 9 months ... N+1 yrs | almost N+1 years |\n *\n * With `options.includeSeconds == true`:\n * | Distance to now | Result |\n * |---------------------|----------------------|\n * | 0 secs ... 5 secs | less than 5 seconds |\n * | 5 secs ... 10 secs | less than 10 seconds |\n * | 10 secs ... 20 secs | less than 20 seconds |\n * | 20 secs ... 40 secs | half a minute |\n * | 40 secs ... 60 secs | less than a minute |\n * | 60 secs ... 90 secs | 1 minute |\n *\n * > ⚠️ Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the given date\n * @param {Object} [options] - the object with options\n * @param {Boolean} [options.includeSeconds=false] - distances less than a minute are more detailed\n * @param {Boolean} [options.addSuffix=false] - result specifies if now is earlier or later than the passed date\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @returns {String} the distance in words\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `formatDistance` property\n *\n * @example\n * // If today is 1 January 2015, what is the distance to 2 July 2014?\n * const result = formatDistanceToNow(\n * new Date(2014, 6, 2)\n * )\n * //=> '6 months'\n *\n * @example\n * // If now is 1 January 2015 00:00:00,\n * // what is the distance to 1 January 2015 00:00:15, including seconds?\n * const result = formatDistanceToNow(\n * new Date(2015, 0, 1, 0, 0, 15),\n * {includeSeconds: true}\n * )\n * //=> 'less than 20 seconds'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 January 2016, with a suffix?\n * const result = formatDistanceToNow(\n * new Date(2016, 0, 1),\n * {addSuffix: true}\n * )\n * //=> 'in about 1 year'\n *\n * @example\n * // If today is 1 January 2015,\n * // what is the distance to 1 August 2016 in Esperanto?\n * const eoLocale = require('date-fns/locale/eo')\n * const result = formatDistanceToNow(\n * new Date(2016, 7, 1),\n * {locale: eoLocale}\n * )\n * //=> 'pli ol 1 jaro'\n */\nexport default function formatDistanceToNow(dirtyDate, options) {\n requiredArgs(1, arguments);\n return distanceInWords(dirtyDate, Date.now(), options);\n}","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\"\nimport script from \"./Notifications.vue?vue&type=script&lang=js&\"\nexport * from \"./Notifications.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Notifications.vue?vue&type=style&index=0&id=eda8ca60&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eda8ca60\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('eda8ca60')) {\n api.createRecord('eda8ca60', component.options)\n } else {\n api.reload('eda8ca60', component.options)\n }\n module.hot.accept(\"./Notifications.vue?vue&type=template&id=eda8ca60&scoped=true&\", function () {\n api.rerender('eda8ca60', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/Notifications.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"div\",\n [\n _c(\"v-overlay\", {\n staticClass: \"overlay\",\n attrs: { value: _vm.showUserMenu },\n }),\n _vm._v(\" \"),\n _c(\n \"v-menu\",\n {\n attrs: {\n transition: \"slide-y-transition\",\n \"offset-y\": \"\",\n \"close-on-content-click\": false,\n \"nudge-width\": 120,\n \"nudge-bottom\": 20,\n },\n scopedSlots: _vm._u([\n {\n key: \"activator\",\n fn: function (ref) {\n var on = ref.on\n var attrs = ref.attrs\n return [\n _c(\n \"v-btn\",\n _vm._g(\n _vm._b({ attrs: { icon: \"\" } }, \"v-btn\", attrs, false),\n on\n ),\n [\n _c(\"v-icon\", { attrs: { size: _vm.size } }, [\n _vm._v(\" mdi-account \"),\n ]),\n ],\n 1\n ),\n ]\n },\n },\n ]),\n model: {\n value: _vm.showUserMenu,\n callback: function ($$v) {\n _vm.showUserMenu = $$v\n },\n expression: \"showUserMenu\",\n },\n },\n [\n _vm._v(\" \"),\n _c(\n \"v-card\",\n [\n _c(\"v-card-text\", { staticClass: \"text-center\" }, [\n _c(\n \"div\",\n { staticStyle: { \"text-align\": \"center\", margin: \"5px\" } },\n [_vm._v(_vm._s(_vm.username))]\n ),\n _vm._v(\" \"),\n _vm.authenticated\n ? _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.logout },\n },\n [_vm._v(\" Logout \")]\n ),\n ],\n 1\n )\n : _c(\n \"div\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { block: \"\", color: \"primary\" },\n on: { click: _vm.login },\n },\n [_vm._v(\" Login \")]\n ),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\n \"div\",\n [\n _c(\"v-switch\", {\n attrs: { label: \"Colorblind mode\" },\n model: {\n value: _vm.colorblindMode,\n callback: function ($$v) {\n _vm.colorblindMode = $$v\n },\n expression: \"colorblindMode\",\n },\n }),\n ],\n 1\n ),\n ]),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-overlay :value=\"showUserMenu\" class=\"overlay\" />\n <v-menu\n v-model=\"showUserMenu\"\n transition=\"slide-y-transition\"\n offset-y\n :close-on-content-click=\"false\"\n :nudge-width=\"120\"\n :nudge-bottom=\"20\"\n >\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn v-bind=\"attrs\" v-on=\"on\" icon>\n <v-icon :size=\"size\"> mdi-account </v-icon>\n </v-btn>\n </template>\n\n <v-card>\n <v-card-text class=\"text-center\">\n <div style=\"text-align: center; margin: 5px\">{{ username }}</div>\n <div v-if=\"authenticated\">\n <v-btn block @click=\"logout\" color=\"primary\"> Logout </v-btn>\n </div>\n <div v-else>\n <v-btn block @click=\"login\" color=\"primary\"> Login </v-btn>\n </div>\n <div>\n <v-switch label=\"Colorblind mode\" v-model=\"colorblindMode\" />\n </div>\n </v-card-text>\n </v-card>\n </v-menu>\n </div>\n</template>\n\n<script>\nexport default {\n props: {\n size: {\n type: [String, Number],\n default: 26,\n },\n },\n data: function () {\n let user = OpenC3Auth.user()\n return {\n showUserMenu: false,\n authenticated: !!localStorage.openc3Token,\n username: user['name'],\n }\n },\n computed: {\n colorblindMode: {\n get: function () {\n return localStorage.colorblindMode === 'true'\n },\n set: function (val) {\n localStorage.colorblindMode = val\n },\n },\n },\n methods: {\n logout: function () {\n OpenC3Auth.logout()\n },\n login: function () {\n OpenC3Auth.login(location.href)\n },\n },\n}\n</script>\n\n<style scoped>\n.overlay {\n height: 100vh;\n width: 100vw;\n}\n</style>\n","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\"\nimport script from \"./UserMenu.vue?vue&type=script&lang=js&\"\nexport * from \"./UserMenu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserMenu.vue?vue&type=style&index=0&id=26b5fc12&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"26b5fc12\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('26b5fc12')) {\n api.createRecord('26b5fc12', component.options)\n } else {\n api.reload('26b5fc12', component.options)\n }\n module.hot.accept(\"./UserMenu.vue?vue&type=template&id=26b5fc12&scoped=true&\", function () {\n api.rerender('26b5fc12', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/UserMenu.vue\"\nexport default component.exports","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div>\n <v-navigation-drawer v-model=\"drawer\" app id=\"openc3-nav-drawer\">\n <v-list>\n <v-list-item>\n <v-list-item-icon\n style=\"\n margin-right: auto !important;\n margin-left: auto;\n margin-top: 0px;\n margin-bottom: 0px;\n \"\n >\n <img :src=\"logo\" alt=\"OpenC3\" />\n </v-list-item-icon>\n </v-list-item>\n <div style=\"text-align: center; font-size: 18pt\">{{ edition }}</div>\n <v-list-item class=\"my-0\">\n <v-list-item-content>\n <div v-for=\"(tool, name) in adminTools\" :key=\"name\">\n <v-btn\n block\n small\n :href=\"tool.url\"\n onclick=\"singleSpaNavigate(event)\"\n class=\"fixcenter\"\n >\n Admin\n </v-btn>\n </div>\n </v-list-item-content>\n </v-list-item>\n <v-divider />\n <v-treeview\n :items=\"items\"\n :open=\"initiallyOpen\"\n item-key=\"name\"\n dense\n open-on-click\n expand-icon=\"\"\n >\n <template v-slot:prepend=\"{ item, open }\">\n <v-icon v-if=\"!item.icon\">\n {{ open ? 'mdi-chevron-down' : 'mdi-chevron-right' }}\n </v-icon>\n <a v-else :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n <v-icon> {{ item.icon }} </v-icon>\n </a>\n </template>\n <template v-slot:label=\"{ item }\">\n <a :href=\"item.url\" onclick=\"singleSpaNavigate(event)\">\n {{ item.name }}\n </a>\n </template>\n <template v-slot:append=\"{ item }\">\n <a v-if=\"item.icon\" :href=\"newTabUrl(item)\" target=\"_blank\">\n <v-icon>mdi-open-in-new</v-icon>\n </a>\n </template>\n </v-treeview>\n </v-list>\n </v-navigation-drawer>\n <v-app-bar app color=\"tertiary darken-3\" id=\"openc3-app-toolbar\">\n <v-app-bar-nav-icon @click=\"drawer = !drawer\" />\n <v-divider vertical class=\"top-bar-divider-full-height\" />\n <span style=\"width: 100%\"><span id=\"openc3-menu\"></span></span>\n <div class=\"justify-right mr-2 pt-2\"><scope-selector /></div>\n <div class=\"justify-right\" data-test=\"alert-history\">\n <alert-history />\n </div>\n <div class=\"justify-right\" data-test=\"notifications\">\n <notifications />\n </div>\n <div class=\"justify-right\" data-test=\"user-menu\"><user-menu /></div>\n </v-app-bar>\n </div>\n</template>\n\n<script>\nimport Api from '../../services/api'\nimport logo from '../../../public/img/logo.png'\nimport { registerApplication, start } from 'single-spa'\nimport ScopeSelector from './components/ScopeSelector.vue'\nimport AlertHistory from './components/AlertHistory.vue'\nimport Notifications from './components/Notifications.vue'\nimport UserMenu from './components/UserMenu.vue'\n\nexport default {\n components: {\n ScopeSelector,\n AlertHistory,\n Notifications,\n UserMenu,\n },\n props: {\n edition: {\n type: String,\n default: '',\n },\n },\n data() {\n return {\n items: [],\n drawer: true,\n appNav: {},\n logo: logo,\n initiallyOpen: [],\n }\n },\n computed: {\n // a computed getter\n shownTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category !== 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n adminTools: function () {\n let result = {}\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown && this.appNav[key].category === 'Admin') {\n result[key] = this.appNav[key]\n }\n }\n return result\n },\n },\n created() {\n Api.get('/openc3-api/tools/all', { params: { scope: 'DEFAULT' } }).then(\n (response) => {\n this.appNav = response.data\n\n let id = 1\n // Register apps and start single-spa\n for (var key of Object.keys(this.appNav)) {\n if (this.appNav[key].shown) {\n if (\n this.appNav[key].category &&\n this.appNav[key].category !== 'Admin'\n ) {\n // TODO: Make this initiallyOpen configurable like with a CATEGORY parameter?\n this.initiallyOpen.push(this.appNav[key].category)\n const result = this.items.filter(\n (item) => item.name === this.appNav[key].category\n )\n if (result.length === 0) {\n this.items.push({\n id: id,\n name: this.appNav[key].category,\n children: [\n {\n id: id + 1,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n },\n ],\n })\n id++\n } else {\n result[0].children.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n } else if (!this.appNav[key].category) {\n this.items.push({\n id: id,\n name: this.appNav[key].name,\n icon: this.appNav[key].icon,\n url: this.appNav[key].url,\n })\n }\n id++\n\n if (this.appNav[key].folder_name) {\n let folder_name = this.appNav[key].folder_name\n let name = '@openc3/tool-' + folder_name\n registerApplication({\n name: name,\n app: () => System.import(name),\n activeWhen: ['/tools/' + folder_name],\n })\n }\n }\n }\n start({\n urlRerouteOnly: true,\n })\n\n // Redirect some base paths to the first tool\n if (\n window.location.pathname == '/' ||\n window.location.pathname == '/tools' ||\n window.location.pathname == '/tools/'\n ) {\n for (var key of Object.keys(this.shownTools)) {\n if (this.appNav[key].shown) {\n history.replaceState(null, '', this.appNav[key].url)\n break\n }\n }\n }\n\n // Check every minute if we need to update our token\n setInterval(() => {\n OpenC3Auth.updateToken(120).then(function (refreshed) {\n if (refreshed) {\n OpenC3Auth.setTokens()\n }\n })\n }, 60000)\n }\n )\n },\n methods: {\n newTabUrl(tool) {\n let url = null\n if (tool.url[0] == '/' && tool.url[1] != '/') {\n url = new URL(tool.url, window.location.origin)\n } else {\n url = new URL(tool.url)\n }\n url.searchParams.set('scope', window.openc3Scope)\n return url.href\n },\n },\n}\n</script>\n\n<style scoped>\ndiv a {\n color: white;\n font-size: 16px;\n display: block;\n height: 100%;\n width: 100%;\n}\na.fixcenter {\n display: flex;\n}\n.theme--dark.v-navigation-drawer {\n background-color: var(--v-primary-darken2);\n}\n#openc3-app-toolbar .top-bar-divider-full-height {\n margin: -4px 4px;\n min-height: calc(100% + 8px);\n}\n</style>\n<style>\n/* Remove the padding on root level nodes since we removed the expand icon */\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__level {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview\n > .v-treeview-node\n > .v-treeview-node__root\n > .v-treeview-node__toggle {\n width: 0px;\n}\n#openc3-nav-drawer\n .v-treeview-node__children\n div.v-treeview-node__level:nth-child(1) {\n width: 0px;\n}\n</style>\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","\n import API from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppNav.vue?vue&type=style&index=1&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\"\nimport script from \"./AppNav.vue?vue&type=script&lang=js&\"\nexport * from \"./AppNav.vue?vue&type=script&lang=js&\"\nimport style0 from \"./AppNav.vue?vue&type=style&index=0&id=00ae1763&scoped=true&lang=css&\"\nimport style1 from \"./AppNav.vue?vue&type=style&index=1&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"00ae1763\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('00ae1763')) {\n api.createRecord('00ae1763', component.options)\n } else {\n api.reload('00ae1763', component.options)\n }\n module.hot.accept(\"./AppNav.vue?vue&type=template&id=00ae1763&scoped=true&\", function () {\n api.rerender('00ae1763', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/AppNav.vue\"\nexport default component.exports","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\n \"v-dialog\",\n {\n attrs: { width: \"500\" },\n model: {\n value: _vm.dialog,\n callback: function ($$v) {\n _vm.dialog = $$v\n },\n expression: \"dialog\",\n },\n },\n [\n _c(\n \"v-card\",\n [\n _c(\"v-card-title\", [_vm._v(\" Clock out of sync \")]),\n _vm._v(\" \"),\n _c(\n \"v-card-text\",\n [\n _vm._v(\n \"\\n We've detected that your clock is approximately\\n \" +\n _vm._s(Math.abs(_vm.approximateDiscrepancySec)) +\n \" seconds\\n \" +\n _vm._s(\n _vm.approximateDiscrepancySec > 0 ? \"behind\" : \"ahead of\"\n ) +\n \" server time.\\n This can cause issues and might have unknown side effects.\\n \"\n ),\n _c(\"v-checkbox\", {\n attrs: { label: \"Don't show this again\" },\n model: {\n value: _vm.suppress,\n callback: function ($$v) {\n _vm.suppress = $$v\n },\n expression: \"suppress\",\n },\n }),\n ],\n 1\n ),\n _vm._v(\" \"),\n _c(\"v-divider\"),\n _vm._v(\" \"),\n _c(\n \"v-card-actions\",\n [\n _c(\n \"v-btn\",\n {\n attrs: { color: \"primary\", text: \"\" },\n on: { click: _vm.dismiss },\n },\n [_vm._v(\" Dismiss \")]\n ),\n ],\n 1\n ),\n ],\n 1\n ),\n ],\n 1\n )\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./TimeCheck.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-dialog v-model=\"dialog\" width=\"500\">\n <v-card>\n <v-card-title> Clock out of sync </v-card-title>\n <v-card-text>\n We've detected that your clock is approximately\n {{ Math.abs(approximateDiscrepancySec) }} seconds\n {{ approximateDiscrepancySec > 0 ? 'behind' : 'ahead of' }} server time.\n This can cause issues and might have unknown side effects.\n <v-checkbox v-model=\"suppress\" label=\"Don't show this again\" />\n </v-card-text>\n <v-divider />\n <v-card-actions>\n <v-btn color=\"primary\" text @click=\"dismiss\"> Dismiss </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n</template>\n\n<script>\n// Directly use axios since we need no authentication or scope\nimport axios from 'axios'\n\nconst ALLOWABLE_DISCREPANCY_MS = 3000\n\nexport default {\n data: function () {\n return {\n dismissed: false,\n suppress: false,\n discrepancy: 0,\n }\n },\n created: function () {\n this.suppress =\n localStorage['suppresswarning__clock_out_of_sync_with_server'] === 'true'\n if (!this.suppress) {\n axios\n .get('/openc3-api/time')\n .then((response) => {\n this.discrepancy = response.data.now_nsec / 1_000_000 - Date.now()\n })\n .catch((error) => {\n // Silently fail\n this.dismissed = true\n })\n }\n },\n methods: {\n dismiss: function () {\n localStorage['suppresswarning__clock_out_of_sync_with_server'] =\n this.suppress\n this.dismissed = true\n },\n },\n computed: {\n approximateDiscrepancySec: function () {\n return (this.discrepancy / 1000).toFixed()\n },\n dialog: function () {\n return (\n !this.dismissed &&\n Math.abs(this.discrepancy) >= ALLOWABLE_DISCREPANCY_MS\n )\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./TimeCheck.vue?vue&type=template&id=2963a6a3&\"\nimport script from \"./TimeCheck.vue?vue&type=script&lang=js&\"\nexport * from \"./TimeCheck.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('2963a6a3')) {\n api.createRecord('2963a6a3', component.options)\n } else {\n api.reload('2963a6a3', component.options)\n }\n module.hot.accept(\"./TimeCheck.vue?vue&type=template&id=2963a6a3&\", function () {\n api.rerender('2963a6a3', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/TimeCheck.vue\"\nexport default component.exports","import mod from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<script>\nimport { OpenC3Api } from '../../../services/openc3-api'\n\nexport default {\n data: function () {\n return {\n api: null,\n classification: {\n text: '',\n fontColor: 'white',\n backgroundColor: 'red',\n topHeight: 0,\n bottomHeight: 0,\n },\n }\n },\n computed: {\n classificationStyles: function () {\n // JavaScript can't access CSS psudo-elements (::before and ::after).\n // This string sets these JS values to CSS variables, accessible to\n // the style sheet via the style attribute on #app\n return [\n `--classification-text:\"${this.classification.text}\";`,\n `--classification-font-color:${this.classification.fontColor};`,\n `--classification-background-color:${this.classification.backgroundColor};`,\n `--classification-height-top:${this.classification.topHeight}px;`,\n `--classification-height-bottom:${this.classification.bottomHeight}px;`,\n ].join('')\n },\n },\n created: function () {\n this.api = new OpenC3Api()\n this.load()\n },\n methods: {\n load: function () {\n this.api\n .get_setting('classification_banner')\n .then((response) => {\n if (response) {\n this.classification = JSON.parse(response)\n }\n })\n .catch((error) => {\n // Do nothing\n })\n },\n },\n}\n</script>\n\n<style>\n/* push things up and down to make room for the classification banners */\n#app,\n#openc3-nav-drawer {\n margin-top: var(--classification-height-top);\n}\n#openc3-app-toolbar {\n top: var(--classification-height-top);\n}\n#openc3-nav-drawer .v-navigation-drawer__content {\n height: calc(\n 100% - var(--classification-height-top) -\n var(--classification-height-bottom)\n );\n}\n#footer {\n margin-bottom: var(--classification-height-bottom);\n}\n\n/* make the classification banners */\n#app::before,\n#app::after {\n z-index: 99;\n position: fixed;\n left: 0;\n right: 0;\n text-align: center;\n content: var(--classification-text);\n color: var(--classification-font-color);\n background-color: var(--classification-background-color);\n}\n#app::before {\n top: 0;\n font-size: calc(var(--classification-height-top) * 0.7);\n height: var(--classification-height-top);\n}\n#app::after {\n bottom: 0;\n font-size: calc(var(--classification-height-bottom) * 0.7);\n height: var(--classification-height-bottom);\n}\n</style>\n","\n import API from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../../openc3-tool-base/node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../../openc3-tool-base/node_modules/css-loader/dist/cjs.js??clonedRuleSet-2[0].rules[0].use[1]!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\";\n export default content && content.locals ? content.locals : undefined;\n","var render, staticRenderFns\nimport script from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nexport * from \"./ClassificationBanners.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClassificationBanners.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('6e8d3d69')) {\n api.createRecord('6e8d3d69', component.options)\n } else {\n api.reload('6e8d3d69', component.options)\n }\n \n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/tools/base/components/ClassificationBanners.vue\"\nexport default component.exports","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license \n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <v-app :style=\"classificationStyles\">\n <app-nav class=\"d-print-none\" edition=\"COSMOS\" />\n\n <!-- Sizes your content based upon application components -->\n <v-main>\n <v-container fluid>\n <div id=\"openc3-tool\"></div>\n <div><router-view /></div>\n </v-container>\n </v-main>\n <app-footer app class=\"d-print-none\" edition=\"COSMOS\" license=\"AGPLv3\" />\n <time-check />\n </v-app>\n</template>\n\n<script>\nimport AppFooter from '../../packages/openc3-tool-common/src/tools/base/AppFooter'\nimport AppNav from '../../packages/openc3-tool-common/src/tools/base/AppNav'\nimport TimeCheck from '../../packages/openc3-tool-common/src/tools/base/components/TimeCheck'\nimport ClassificationBanners from '../../packages/openc3-tool-common/src/tools/base/components/ClassificationBanners'\nexport default {\n components: {\n AppFooter,\n AppNav,\n TimeCheck,\n },\n mixins: [ClassificationBanners],\n}\n</script>\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7ba5bd90&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('7ba5bd90')) {\n api.createRecord('7ba5bd90', component.options)\n } else {\n api.reload('7ba5bd90', component.options)\n }\n module.hot.accept(\"./App.vue?vue&type=template&id=7ba5bd90&\", function () {\n api.rerender('7ba5bd90', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/App.vue\"\nexport default component.exports","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2023, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\nexport default new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/login',\n name: 'Login',\n component: () =>\n import(\n '../../packages/openc3-tool-common/src/tools/base/components/Login'\n ),\n },\n ],\n})\n","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n*/\n\nimport Vue from 'vue'\nimport Vuex from 'vuex'\n\nVue.use(Vuex)\n\nconst NOTIFY_HISTORY_MAX_LENGTH = 100\n\nif (!window.hasOwnProperty('OpenC3Store')) {\n window.OpenC3Store = new Vuex.Store({\n state: {\n notifyHistory: [],\n },\n getters: {},\n mutations: {\n notifyAddHistory: function (state, notification) {\n if (state.notifyHistory.length >= NOTIFY_HISTORY_MAX_LENGTH) {\n state.notifyHistory.length = NOTIFY_HISTORY_MAX_LENGTH - 1\n }\n state.notifyHistory.unshift(notification)\n },\n notifyClearHistory: function (state) {\n state.notifyHistory = []\n },\n },\n modules: {},\n })\n}\n\nexport default window.OpenC3Store\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/*\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n*/\n\nimport Vue from 'vue'\nimport Vuetify from 'vuetify'\nimport { AstroIconVuetifyValues } from '../../../packages/openc3-tool-common/src/components/icons/index.js'\n\nVue.use(Vuetify)\n\nexport default new Vuetify({\n theme: {\n dark: true,\n options: {\n customProperties: true,\n },\n themes: {\n dark: {\n primary: '#005a8f',\n secondary: '#4dacff',\n tertiary: '#283f58',\n },\n light: {\n primary: '#cce6ff',\n secondary: '#cce6ff',\n },\n },\n },\n icons: {\n values: {\n ...AstroIconVuetifyValues,\n },\n },\n})\n","var render = function () {\n var _vm = this\n var _h = _vm.$createElement\n var _c = _vm._self._c || _h\n return _c(\"div\", { style: _vm.iconStyle })\n}\nvar staticRenderFns = []\nrender._withStripped = true\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../../openc3-tool-base/node_modules/babel-loader/lib/index.js!../../../../../openc3-tool-base/node_modules/vue-loader/lib/index.js??vue-loader-options!./AstroStatusIndicator.vue?vue&type=script&lang=js&\"","<!--\n# Copyright 2022 Ball Aerospace & Technologies Corp.\n# All Rights Reserved.\n#\n# This program is free software; you can modify and/or redistribute it\n# under the terms of the GNU Affero General Public License\n# as published by the Free Software Foundation; version 3 with\n# attribution addendums as found in the LICENSE.txt\n#\n# This program is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n# GNU Affero General Public License for more details.\n\n# Modified by OpenC3, Inc.\n# All changes Copyright 2022, OpenC3, Inc.\n# All Rights Reserved\n#\n# This file may also be used under the terms of a commercial license\n# if purchased from OpenC3, Inc.\n-->\n\n<template>\n <div :style=\"iconStyle\" />\n</template>\n\n<script>\nimport { AstroStatuses } from '.'\nimport dark from '../../../public/icons/status-dark.png'\nimport light from '../../../public/icons/status-light.png'\n\nexport default {\n props: {\n status: {\n type: String,\n required: true,\n validator: (val) => {\n return AstroStatuses.includes(val)\n },\n },\n large: {\n type: Boolean,\n },\n small: {\n type: Boolean,\n },\n scale: {\n type: Number,\n },\n },\n computed: {\n icons: function () {\n return dark // TODO: check theme\n },\n scaleFactor: function () {\n if (this.scale) {\n return this.scale\n } else if (this.large) {\n return 1\n } else if (this.small) {\n return 0.3\n } else {\n return 0.5\n }\n },\n iconStyle: function () {\n // The original png dimensions are 224x32 px\n const bgWidth = 224 * this.scaleFactor\n const bgHeight = 32 * this.scaleFactor\n const iconWidth = 32 * this.scaleFactor // Each icon in the png is 32px wide with no space in between\n const offset = AstroStatuses.indexOf(this.status)\n return [\n `background-image: url(${this.icons});`,\n `background-position-x: -${offset * iconWidth}px;`,\n `background-size: ${bgWidth}px ${bgHeight}px;`,\n `height: ${iconWidth}px;`,\n `width: ${iconWidth}px;`,\n ].join('')\n },\n },\n}\n</script>\n","import { render, staticRenderFns } from \"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\"\nimport script from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\nexport * from \"./AstroStatusIndicator.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../openc3-tool-base/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"/openc3/plugins/openc3-tool-base/node_modules/vue-hot-reload-api/dist/index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('3821337a')) {\n api.createRecord('3821337a', component.options)\n } else {\n api.reload('3821337a', component.options)\n }\n module.hot.accept(\"./AstroStatusIndicator.vue?vue&type=template&id=3821337a&\", function () {\n api.rerender('3821337a', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"packages/openc3-tool-common/src/components/icons/AstroStatusIndicator.vue\"\nexport default component.exports","import Vue from 'vue'\nimport App from './App.vue'\nimport router from './router'\n\nVue.config.productionTip = false\n\nimport store from '../../packages/openc3-tool-common/src/plugins/store'\nimport '../../packages/openc3-tool-common/src/assets/stylesheets/layout/layout.scss'\nimport vuetify from './plugins/vuetify'\n\nimport AstroStatusIndicator from '../../packages/openc3-tool-common/src/components/icons/AstroStatusIndicator'\nVue.component('astro-status-indicator', AstroStatusIndicator)\n\nconst options = OpenC3Auth.getInitOptions()\nOpenC3Auth.init(options).then(() => {\n // Set the scope variable that will be used for the life of this page load\n // It is always default in standard edition\n window.openc3Scope = 'DEFAULT'\n\n new Vue({\n router,\n store,\n vuetify,\n render: (h) => h(App),\n }).$mount('#openc3-main')\n})\n"],"names":["inProgress","dataWebpackPrefix","module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","process","toString","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","_ref2","_ref2$params","_ref2$noAuth","noAuth","_ref2$noScope","noScope","_args","wrap","_context","prev","next","OpenC3Auth","updateToken","defaultMinValidity","sent","setTokens","t0","login","localStorage","openc3Token","openc3Scope","abrupt","stop","_x","_x2","acceptOnlyDefaultHeaders","Accept","fullDefaultHeaders","_objectSpread","get","_ref3","_ref3$headers","put","_ref4","_ref4$headers","post","_ref5","_ref5$headers","delete","_ref6","_ref6$headers","vueInstance","Vue","axiosInstance","origin","_error$response","_error$response2","_error$response2$conf","_error$response3","_error$response3$data","_error$response4","_error$response4$data","_error$response5","_error$response5$data","_error$response5$data2","refreshed","includes","body","exception","class","_error$response6","$notify","serious","title","___CSS_LOADER_EXPORT___","cssWithMappingToString","list","map","item","modules","mediaQuery","dedupe","alreadyImportedModules","_i","_arrayLikeToArray","len","arr2","_item","_arrayWithHoles","Symbol","iterator","_s","_e","_arr","_n","_d","_iterableToArrayLimit","o","minLen","n","_unsupportedIterableToArray","_nonIterableRest","cssMapping","base64","sourceMapping","sourceURLs","sources","sourceRoot","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","identifiers","base","count","indexByIdentifier","css","media","sourceMap","supports","layer","references","updater","addElementStyle","byIndex","api","domAPI","update","newObj","lastIdentifiers","newList","newLastIdentifiers","_index","memo","insert","style","styleTarget","querySelector","HTMLIFrameElement","contentDocument","head","getTarget","appendChild","element","setAttributes","attributes","styleElement","nonce","insertStyleElement","needLayer","styleTagTransform","parentNode","removeChild","removeStyleElement","styleSheet","cssText","firstChild","createTextNode","resolveDirectory","rootDirLevel","meta","urlString","rootDirectoryLevel","numDirsProcessed","finalPath","Number","isInteger","normalizeComponent","scriptExports","render","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","hook","_compiled","functional","_scopeId","$vnode","ssrContext","parent","__VUE_SSR_CONTEXT__","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","_injectStyles","originalRender","existing","beforeCreate","__esModule","default","locals","listToStyles","parentId","styles","newStyles","part","hasDocument","DEBUG","stylesInDom","getElementsByTagName","singletonElement","singletonCounter","isProduction","noop","ssrIdKey","isOldIE","addStylesClient","_isProduction","_options","addStylesToDom","mayRemove","domStyle","refs","j","addStyle","createStyleElement","styleIndex","applyToSingletonTag","applyToTag","textStore","replaceText","replacement","Boolean","cssNode","childNodes","insertBefore","ssrId","__WEBPACK_EXTERNAL_MODULE__8645__","__WEBPACK_EXTERNAL_MODULE__4091__","__WEBPACK_EXTERNAL_MODULE__4688__","__WEBPACK_EXTERNAL_MODULE__9731__","__WEBPACK_EXTERNAL_MODULE__9191__","asyncGeneratorStep","gen","_next","_throw","arg","info","self","_defineProperty","enumerable","configurable","writable","_toPropertyKey","input","hint","prim","toPrimitive","res","_typeof","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","y","__system_context__","getter","d","definition","f","chunkId","reduce","u","script","needAttach","scripts","s","getAttribute","charset","nc","src","onScriptComplete","event","onload","clearTimeout","doneFns","r","toStringTag","p","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","autoPublicPath","_vm","_h","$createElement","_c","_self","classificationStyles","staticClass","attrs","edition","_v","fluid","app","license","_withStripped","color","height","icon","alt","staticStyle","openc3Version","sourceUrl","_g","_b","cursor","on","contextmenu","openMenu","_f","displayLocal","localDate","utcDate","formatString","menuX","menuY","absolute","model","showMenu","$$v","expression","click","toggleDisplayLocal","toggleDisplay24h","display24h","dateMode","setMonthFirst","setDayFirst","setNumber","requiredArgs","required","toDate","argument","argStr","getTime","NaN","toInteger","dirtyNumber","isNaN","ceil","startOfUTCISOWeek","dirtyDate","date","day","getUTCDay","diff","setUTCDate","getUTCDate","setUTCHours","getUTCISOWeekYear","year","getUTCFullYear","fourthOfJanuaryOfNextYear","setUTCFullYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","defaultOptions","getDefaultOptions","startOfUTCWeek","_options$weekStartsOn","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","weekStartsOn","locale","RangeError","getUTCWeekYear","_options$firstWeekCon","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","addLeadingZeros","targetLength","sign","output","abs","signedYear","month","getUTCMonth","getUTCHours","getUTCMinutes","getUTCSeconds","numberOfDigits","milliseconds","getUTCMilliseconds","pow","G","localize","era","width","ordinalNumber","unit","lightFormatters","Y","signedWeekYear","weekYear","R","Q","quarter","q","M","L","w","week","firstWeek","startOfUTCWeekYear","round","getUTCWeek","I","isoWeek","fourthOfJanuary","startOfUTCISOWeekYear","getUTCISOWeek","D","dayOfYear","timestamp","setUTCMonth","difference","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","dayPeriod","hours","B","H","K","k","S","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","x","O","formatTimezoneShort","z","t","originalDate","T","offset","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","formatLong","timeLongFormatter","time","P","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","getTimezoneOffsetInMilliseconds","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","protectedDayOfYearTokens","protectedWeekYearTokens","throwProtectedError","format","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","defaultWidth","formats","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","values","argumentCallback","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","string","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","object","findKey","valueCallback","rest","parsePattern","parseInt","parseResult","any","formatDistance","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","_options$locale2","_options$locale2$opti","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","formatStr","defaultLocale","isValid","dirtyAmount","amount","addMilliseconds","subMilliseconds","formatterOptions","substring","firstCharacter","longFormatter","matched","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","isProtectedDayOfYearToken","clock_zone","clock_12h","clock_dateMode","intervalCount","computed","dateFormat","timeFormat","watch","created","_this","setInterval","methods","_this2","preventDefault","clientX","clientY","$nextTick","filters","component","__file","_classCallCheck","Constructor","_defineProperties","descriptor","toPropertyKey","_createClass","protoProps","staticProps","OpenC3Api","_hashString","_inject_tlm","_tlm","_get_tlm_values","_get_tlm_packet","_exec","kwparams","headerOptions","jsonrpc","keyword_params","t1","json_class","raw","Infinity","POSITIVE_INFINITY","NEGATIVE_INFINITY","offline_access_needed","needed","openc3OfflineToken","set_offline_access","getOfflineAccess","offline_access_token","target_name","interface_name","_len","interface_params","_key","router_name","target_commands","packet","log_writer_name","limits_set","packet_name","_callee2","value_type","stale_time","converted","_args2","_context2","decode_openc3_type","_x3","_x4","_x5","_callee3","items","_args3","_context3","_x6","item_name","_callee4","_args4","_context4","_x7","_x8","_x9","_callee5","item_hash","_args5","_context5","_x10","_x11","command_name","parameter_name","param_list","encode_openc3_type","_cmd","tool","ignored","_callee6","arrayBuffer","hashAsArrayBuffer","uint8ViewOfHash","_context6","isSecureContext","TextEncoder","crypto","subtle","digest","padStart","_x12","components","ClockFooter","getSourceUrl","get_settings","catch","drawer","logo","_l","adminTools","block","small","onclick","initiallyOpen","dense","scopedSlots","_u","ref","newTabUrl","$event","vertical","scopes","disabled","label","scope","showAlertPane","transition","size","top","clearAlerts","alerts","alert","openDialog","left","inline","severity","proxy","alertDialog","selectedAlert","text","xmlns","viewBox","preserveAspectRatio","focusable","getIcon","library","propscolor","RuxIcon","AstroIconLibrary","AstroIconVuetifyValues","AstroIcon","AstroStatusColors","fatal","critical","caution","normal","standby","off","AstroStatuses","refreshList","$store","state","notifyHistory","commit","showNotificationPane","unreadCount","badgeColor","bordered","clearNotifications","toggleSettingsDialog","notifications","notificationList","notification","header","notificationDialog","selectedNotification","navigate","right","settingsDialog","showToast","iter","compareAsc","dirtyDateLeft","dirtyDateRight","dateLeft","dateRight","differenceInMonths","differenceInCalendarMonths","setDate","setMonth","isLastMonthNotFull","setHours","endOfDay","setFullYear","endOfMonth","isLastDayOfMonth","roundingMap","trunc","defaultRoundingMethod","property","MINUTES_IN_MONTH","dirtyBaseDate","localizeOptions","months","seconds","differenceInMilliseconds","roundingMethod","differenceInSeconds","offsetInSeconds","includeSeconds","days","nearestMonth","monthsSinceStartOfYear","years","_severities","adapters","logger","WebSocket","log","messages","enabled","secondsSince","ConnectionMonitor","connection","visibilityDidChange","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","staleThreshold","stopPolling","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","pollTimeout","reconnectIfStale","getPollInterval","reconnectionBackoffRate","min","random","connectionIsStale","refreshedAt","disconnectedRecently","reopen","visibilityState","isOpen","INTERNAL","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","supportedProtocols","Connection","consumer","subscriptions","monitor","disconnected","webSocket","isActive","getState","uninstallEventHandlers","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","isState","isProtocolSupported","states","eventName","events","handler","reconnect","reload","confirmSubscription","notify","notifyAll","willAttemptReconnect","Subscription","mixin","properties","perform","action","command","SubscriptionGuarantor","pendingSubscriptions","guarantee","subscription","startGuaranteeing","forget","stopGuaranteeing","retrySubscribing","retryTimeout","Subscriptions","guarantor","channelName","channel","ensureActiveConnection","findAll","sendCommand","callbackName","Consumer","_url","createWebSocketURL","connect","ActionCable","Cable","_cable","callbacks","additionalOptions","final_url","getConfig","NOTIFICATION_HISTORY_MAX_LENGTH","cable","toastNotification","severities","unreadNotifications","indeces","_getSeverityIndeces","_toConsumableArray","highestSeverity","readNotifications","sort","groups","objects","severityGetter","groupBySeverity","orderBySeverity","flatMap","markAllAsRead","notoast","destroyed","lastReadNotification","msg_id","notificationStreamOffset","toggleNotificationPane","createSubscription","received","start_offset","foundToast","duration","saveToHistory","shortDateTime","nsec","formatDistanceToNow","showUserMenu","margin","authenticated","logout","colorblindMode","user","set","ScopeSelector","AlertHistory","Notifications","UserMenu","appNav","shownTools","_Object$keys","shown","category","_i2","_Object$keys2","Api","_loop","_Object$keys3","_i3","children","folder_name","registerApplication","System","import","activeWhen","urlRerouteOnly","_i4","_Object$keys4","history","replaceState","URL","searchParams","dialog","approximateDiscrepancySec","suppress","dismiss","dismissed","discrepancy","now_nsec","toFixed","classification","fontColor","backgroundColor","topHeight","bottomHeight","load","get_setting","AppFooter","AppNav","TimeCheck","mixins","ClassificationBanners","cov_1khetde6f7","actualCoverage","Router","mode","routes","Vuex","OpenC3Store","getters","mutations","notifyAddHistory","NOTIFY_HISTORY_MAX_LENGTH","notifyClearHistory","cov_hlr4jmzey","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","Vuetify","theme","dark","customProperties","themes","primary","secondary","tertiary","light","icons","getOwnPropertyDescriptors","iconStyle","large","scale","scaleFactor","bgWidth","bgHeight","iconWidth","cov_14089wz6i9","productionTip","AstroStatusIndicator","getInitOptions","init","router","store","vuetify","App","$mount"],"sourceRoot":""}