{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/components/App/App.html","webpack:///./src/components/App/App.js","webpack:///./src/components/App/App.js?eede","webpack:///./src/components/App/index.vue","webpack:///./src/services/AchievementsService.js","webpack:///./src/assets/s2me-logo-white.svg","webpack:///./src/services/AuthManager.js","webpack:///./src/routes.js","webpack:///./src/main.js","webpack:///./src/components/App/App.scss?5b8f","webpack:///./src/services/StateService.js","webpack:///./src/services/HelperTextService.js","webpack:///./src/plugins/vuetify/assets/colors.scss","webpack:///./src/services/ConfigService.js","webpack:///./src/plugins/vuetify/vuetify.js","webpack:///./src/services/APIService.js","webpack:///./src/services/ScoreService.js","webpack:///./src/global.scss?470b"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","attrs","staticClass","$state","class","hidden","navigationMenu","show","_v","on","signOut","selected","$route","path","startsWith","_s","progress","isSubmitted","_e","toggleUserMenu","userMenu","active","toggleNavMenu","staticRenderFns","components","Vuetify","topicCompletion","targetElementClass","loading","dataLoaded","authenticated","watch","to","from","sessionStorage","lastKnownUrl","indexOf","setItem","computed","beforeCreate","self","$authManager","getUser","user","showWelcomeScreenKey","profile","sub","showWelcomeScreen","localStorage","getItem","show_welcome_screen","set","$router","replace","idp","matched","some","record","meta","requiresAuth","manager","settings","post_logout_redirect_uri","_redirect_uri","query","scope","login","created","onDocumentClick","mounted","addEventListener","beforeDestroy","removeEventListener","methods","isWelcomeScreen","querySelector","contains","toggleTopicCompletion","signout","changePassword","component","VApp","AchievementsService","context","questionnaire","topics","userInteractions","profileCompleted","recommendationCompleted","recommendationCompletedCount","items","assessment","recommendation","hasAny","count","goodTopicScore","excellentTopicScore","goodScore","excellentScore","$api","getUserInteraction","interactionInfo","hasRecommendationCompleted","buildAchievementItems","hasProfileComplete","hasAssessmentComplete","hasRecommendationComplete","hasGoodTopicScore","hasExcellentTopicScore","hasGoodScore","hasExcellentScore","completedCount","getCompletedCount","filter","topic","isCompleted","$scoreService","getItemByScore","score","view","label","map","Good","Excellent","achievements","factory","Vue","mixin","$achievements","AuthManager","Oidc","UserManager","authority","configService","client_id","redirect_uri","location","origin","response_type","automaticSilentRenew","silent_redirect_uri","loadUserInfo","events","addAccessTokenExpiring","log","addAccessTokenExpired","signinRedirect","addSilentRenewError","callback","signoutRedirect","id_token","removeItem","customClient","promoCode","encodeURIComponent","generateChanllenge","str","toString","buffer","crypto","createHash","update","digest","verifier","base64URLEncode","randomBytes","sha256","authManager","MyAssessment","AppSettings","Recommendations","ThreatMonitoring","ScoreReport","TopicPreview","Login","Register","AuthCallback","AuthRenewToken","WelcomeScreen","redirect","gtm","cssVars","rootElement","shadowDOM","include","exclude","variables","onlyLegacy","preserveStatic","preserveVars","silent","updateDOM","updateURLs","router","VueRouter","routes","VueClipboard","config","autoSetContainer","use","VueSocialSharing","APIService","ScoreService","State","HelperTextService","VueGtm","id","enabled","vueRouter","productionTip","h","App","vuetify","$mount","StateService","_component","eval","$forceUpdate","_triggerParentUpdate","$parent","parent","$stateVal","text","getText","find","item","$helperTextService","ConfigService","_config","configProd","keyPath","tplVars","val","RegExp","$config","VAutocomplete","VAvatar","VBadge","VBtn","VBtnToggle","VCard","VCardActions","VCardText","VCardTitle","VCardSubtitle","VCheckbox","VCol","VContainer","VDivider","VExpansionPanels","VExpansionPanel","VExpansionPanelContent","VExpansionPanelHeader","VForm","VHover","VIcon","VImg","VList","VListItem","VListItemAvatar","VListItemContent","VListItemGroup","VListItemSubtitle","VListItemTitle","VNavigationDrawer","VProgressCircular","VProgressLinear","VRadio","VRadioGroup","VResponsive","VRow","VSelect","VSpacer","VStepper","VStepperStep","VStepperItems","VStepperContent","VTabs","VTabsSlider","VTab","VTabItem","VTextField","VTextarea","VDialog","VSheet","VBottomSheet","directives","Resize","opts","theme","dark","default","disable","options","cspNonce","customProperties","themeCache","themes","light","primary","base","VuetifyColors","lighten1","lighten2","lighten3","lighten4","darken1","darken2","darken3","darken4","secondary","icons","iconfont","mockData","axios","headers","assign","Pragma","method","url","contentType","responseType","catch","response","status","alert","baseAPIAddress","baseSharingAddress","baseAuthorityAddress","executeAuthorized","_request","Authorization","access_token","_getActionUrl","userId","model","topicId","questionId","questionnaireId","startDate","question","expired","payload","body","JSON","stringify","api","VeryPoor","Poor","Fair","color","scale","description","getDescriptionByScore"],"mappings":"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","file":"js/app.d942a30b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0286eaed\":\"984a3c61\",\"chunk-19dc4f97\":\"e3ff7ece\",\"chunk-22b05d10\":\"0a9cb9f3\",\"chunk-36ab9bb8\":\"02dd7fbf\",\"chunk-b4091e42\":\"b4877352\",\"chunk-34f9e2d1\":\"810bf6d7\",\"chunk-5553c94a\":\"235395bd\",\"chunk-7c5a7250\":\"eeb6c15f\",\"chunk-c3a92aea\":\"0fc24421\",\"chunk-6b8cd399\":\"ef0ae0b3\",\"chunk-1739a72e\":\"019d7cfd\",\"chunk-c78f4448\":\"a8a83f98\",\"chunk-afa2660c\":\"338b3b1c\",\"chunk-599261d8\":\"4c24fcc4\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-0286eaed\":1,\"chunk-19dc4f97\":1,\"chunk-36ab9bb8\":1,\"chunk-b4091e42\":1,\"chunk-34f9e2d1\":1,\"chunk-5553c94a\":1,\"chunk-7c5a7250\":1,\"chunk-6b8cd399\":1,\"chunk-1739a72e\":1,\"chunk-c78f4448\":1,\"chunk-afa2660c\":1,\"chunk-599261d8\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0286eaed\":\"0e433876\",\"chunk-19dc4f97\":\"039f3b99\",\"chunk-22b05d10\":\"31d6cfe0\",\"chunk-36ab9bb8\":\"46c645df\",\"chunk-b4091e42\":\"5c56b819\",\"chunk-34f9e2d1\":\"c56b5242\",\"chunk-5553c94a\":\"5cf78c9a\",\"chunk-7c5a7250\":\"c5fecebc\",\"chunk-c3a92aea\":\"31d6cfe0\",\"chunk-6b8cd399\":\"ff8901f0\",\"chunk-1739a72e\":\"2b6e718f\",\"chunk-c78f4448\":\"d862b84e\",\"chunk-afa2660c\":\"6514c162\",\"chunk-599261d8\":\"279d77ab\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\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\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.authenticated)?_c('v-app',{attrs:{\"id\":\"app\"}},[_c('div',{staticClass:\"nav-bar\"},[_c('div',{staticClass:\"nav-home\"},[_c('router-link',{attrs:{\"tag\":\"a\",\"to\":'/my-assessment/'}},[_c('img',{staticClass:\"nav-logo\",attrs:{\"src\":require(\"../../assets/s2me-logo-white.svg\")}})])],1),_c('div',{staticClass:\"nav-buttons\"},[(_vm.$state.get('welcome') == true)?_c('div',{staticClass:\"nav-menu\",class:{hidden: !_vm.navigationMenu.show}},[_c('span',{staticClass:\"nav-button\",attrs:{\"disabled\":\"\"}},[_vm._v(\"My Assessment\")]),_c('span',{staticClass:\"nav-button\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Recommendations\")]),_c('span',{staticClass:\"nav-button\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Full Report\")]),_c('span',{staticClass:\"nav-button mobile\",attrs:{\"disabled\":\"\"}},[_vm._v(\"My Profile\")]),_c('a',{staticClass:\"nav-button mobile\",on:{\"click\":_vm.signOut}},[_c('span',[_vm._v(\"\\r\\n Sign Out\\r\\n \")])])]):_c('div',{staticClass:\"nav-menu\",class:{hidden: !_vm.navigationMenu.show}},[_c('router-link',{staticClass:\"nav-button\",class:{selected: _vm.$route.path.startsWith('/my-assessment') || _vm.$route.path.startsWith('/topic')},attrs:{\"tag\":\"a\",\"to\":'/my-assessment/'}},[_c('span',[_c('span',{staticClass:\"nav-button-title\"},[_vm._v(\"My Assessment\")]),_c('span',{staticClass:\"nav-button-subtitle\"},[_vm._v(_vm._s((_vm.$state.get('questionnaire').progress || '0') + '% COMPLETE'))])])]),(!_vm.$state.get('questionnaire').isSubmitted)?_c('span',{staticClass:\"nav-button\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Recommendations\")]):_vm._e(),(_vm.$state.get('questionnaire').isSubmitted)?_c('router-link',{staticClass:\"nav-button\",class:{selected: _vm.$route.path.startsWith('/recommendations')},attrs:{\"tag\":\"a\",\"to\":'/recommendations/'}},[_c('span',[_vm._v(\"\\r\\n Recommendations\\r\\n \")]),_c('span',{staticClass:\"badge badge-success badge-ready\"},[_vm._v(\"Ready\")])]):_vm._e(),(!_vm.$state.get('questionnaire').isSubmitted)?_c('span',{staticClass:\"nav-button\",attrs:{\"disabled\":\"\"}},[_vm._v(\"Full Report\")]):_vm._e(),(_vm.$state.get('questionnaire').isSubmitted)?_c('router-link',{staticClass:\"nav-button\",class:{selected: _vm.$route.path.startsWith('/report')},attrs:{\"tag\":\"a\",\"to\":'/report/'}},[_c('span',[_vm._v(\"\\r\\n Full Report\\r\\n \")]),_c('span',{staticClass:\"badge badge-success badge-ready\"},[_vm._v(\"Ready\")])]):_vm._e(),_c('router-link',{staticClass:\"nav-button\",class:{selected: _vm.$route.path.startsWith('/threat-monitoring')},attrs:{\"tag\":\"a\",\"to\":'/threat-monitoring/'}},[_c('span',[_c('i',{staticClass:\"icon thread-icon\"}),_vm._v(\"Threat Monitoring\\r\\n \")])]),_c('a',{staticClass:\"nav-button mobile\",class:{selected: _vm.$route.path === '/settings'},attrs:{\"href\":\"#/settings\"}},[_c('span',[_vm._v(\"\\r\\n My Profile\\r\\n \")])]),_c('a',{staticClass:\"nav-button mobile\",on:{\"click\":_vm.signOut}},[_c('span',[_vm._v(\"\\r\\n Sign Out\\r\\n \")])])],1),_c('div',{staticClass:\"nav-score desktop\"},[_c('div',{staticClass:\"score-info\"},[_c('button',{staticClass:\"score score-info-button\",on:{\"click\":_vm.toggleUserMenu}},[_c('i',{staticClass:\"icon\"})]),_c('div',{staticClass:\"user-menu-list\",attrs:{\"hidden\":!_vm.userMenu.show}},[_c('div',{staticClass:\"item\",class:{active: !(_vm.$state.get('welcome') == true)}},[(_vm.$state.get('welcome') == true)?_c('div',{attrs:{\"disabled\":\"\"}},[_vm._v(\"My Profile\")]):_vm._e(),(!(_vm.$state.get('welcome') == true))?_c('router-link',{class:{selected: _vm.$route.path === '/settings'},attrs:{\"tag\":\"a\",\"to\":'/settings/'}},[_c('div',{staticClass:\"topic\"},[_vm._v(\"My Profile\")])]):_vm._e()],1),_c('div',{staticClass:\"item active\"},[_c('div',{staticClass:\"topic\",on:{\"click\":_vm.signOut}},[_vm._v(\"Sign Out\")])])])])]),_c('div',{staticClass:\"nav-button nav-drop-down\"},[_c('button',{staticClass:\"navigation-menu-button\",on:{\"click\":_vm.toggleNavMenu}},[_c('i',{staticClass:\"fas fa-align-justify\"})])])])]),_c('div',{staticClass:\"content\"},[_c('router-view')],1),_c('div',{staticClass:\"footer\"}),(_vm.$state.get('loading') == true)?_c('div',{staticClass:\"loading\"},[_c('div',{staticClass:\"spinner\"},[_c('div'),_c('div')])]):_vm._e()]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Vuetify from 'vuetify/lib';\r\n\r\nexport default {\r\n name: 'app',\r\n components: {\r\n Vuetify\r\n },\r\n data() {\r\n return {\r\n topicCompletion: {\r\n targetElementClass: '.score-info-button',\r\n show: false\r\n },\r\n userMenu: {\r\n targetElementClass: '.score-info-button',\r\n show: false\r\n },\r\n navigationMenu: {\r\n targetElementClass: '.navigation-menu-button',\r\n show: false,\r\n },\r\n loading: false,\r\n dataLoaded: false,\r\n authenticated: false\r\n }\r\n },\r\n\r\n watch: {\r\n '$route'(to, from) {\r\n if (sessionStorage.lastKnownUrl === undefined && to.path.indexOf('callback') === -1) {\r\n sessionStorage.setItem('lastKnownUrl', to.path);\r\n }\r\n }\r\n },\r\n\r\n computed: {\r\n },\r\n beforeCreate() {\r\n let self = this;\r\n\r\n self.$authManager.getUser(function (user) {\r\n var showWelcomeScreenKey = user ? 'showWelcome-' + user.profile.sub : null;\r\n var showWelcomeScreen = user ? (localStorage.getItem(showWelcomeScreenKey) || null) : null;\r\n\r\n if (user && (showWelcomeScreen === null || showWelcomeScreen === 'true') && user.profile.show_welcome_screen === 'true') {\r\n if (showWelcomeScreen === null) {\r\n localStorage.setItem(showWelcomeScreenKey, user.profile.show_welcome_screen);\r\n }\r\n self.$state.set(\"welcome\", true);\r\n self.$router.replace('welcome?source=' + user.profile.idp);\r\n }\r\n if (self.$route.matched.some(record => record.meta.requiresAuth)) {\r\n if (!user) {\r\n if (!((self.$authManager.manager.settings.post_logout_redirect_uri + '/#' + self.$route.path) == self.$authManager.manager.settings._redirect_uri &&\r\n self.$route.query.scope == self.$authManager.manager.settings.scope)) {\r\n self.$authManager.login();\r\n } else {\r\n self.authenticated = true;\r\n self.$state.set('loading', true);\r\n }\r\n } else {\r\n self.authenticated = true;\r\n self.$state.set('loading', true);\r\n }\r\n } else {\r\n self.authenticated = true;\r\n self.$state.set('loading', true);\r\n }\r\n });\r\n },\r\n\r\n created() {\r\n this.onDocumentClick = this.onDocumentClick.bind(this);\r\n },\r\n\r\n mounted() {\r\n document.addEventListener('click', this.onDocumentClick);\r\n },\r\n\r\n beforeDestroy() {\r\n document.removeEventListener('click', this.onDocumentClick);\r\n },\r\n\r\n methods: {\r\n onDocumentClick(e) {\r\n let isWelcomeScreen = this.$route.matched.some(({ name }) => name === 'welcome');\r\n if (!isWelcomeScreen) {\r\n if (document.querySelector(this.topicCompletion.targetElementClass) !== e.target &&\r\n !document.querySelector(this.topicCompletion.targetElementClass).contains(e.target)) {\r\n this.topicCompletion.show = false;\r\n }\r\n\r\n if (document.querySelector(this.navigationMenu.targetElementClass) !== e.target &&\r\n !document.querySelector(this.navigationMenu.targetElementClass).contains(e.target)) {\r\n this.navigationMenu.show = false;\r\n }\r\n\r\n if (document.querySelector(this.userMenu.targetElementClass) !== e.target &&\r\n !document.querySelector(this.userMenu.targetElementClass).contains(e.target)) {\r\n this.userMenu.show = false;\r\n }\r\n }\r\n },\r\n\r\n toggleUserMenu() {\r\n let self = this;\r\n\r\n setTimeout(() => {\r\n self.userMenu.show = !self.userMenu.show;\r\n });\r\n },\r\n\r\n toggleTopicCompletion() {\r\n let self = this;\r\n\r\n setTimeout(() => {\r\n self.topicCompletion.show = !self.topicCompletion.show;\r\n });\r\n },\r\n\r\n toggleNavMenu() {\r\n let self = this;\r\n\r\n setTimeout(() => {\r\n self.navigationMenu.show = !self.navigationMenu.show;\r\n });\r\n },\r\n\r\n signOut() {\r\n this.$authManager.signout();\r\n },\r\n\r\n changePassword() {\r\n this.$authManager.changePassword();\r\n }\r\n }\r\n}","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./App.js?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/eslint-loader/index.js??ref--13-0!./App.js?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.html?vue&type=template&id=44cf94b8&scoped=true&\"\nimport script from \"./App.js?vue&type=script&lang=js&\"\nexport * from \"./App.js?vue&type=script&lang=js&\"\nimport style0 from \"./App.scss?vue&type=style&index=0&id=44cf94b8&scoped=true&lang=scss&\"\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 \"44cf94b8\",\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\ninstallComponents(component, {VApp})\n","class AchievementsService {\r\n constructor() {\r\n let self = this;\r\n\r\n self.context = null;\r\n self.questionnaire = {},\r\n self.topics = [],\r\n self.userInteractions = {\r\n profileCompleted: false,\r\n recommendationCompleted: false,\r\n recommendationCompletedCount: 0\r\n },\r\n self.items = {\r\n profile: false,\r\n assessment: false,\r\n recommendation: {\r\n hasAny: false,\r\n count: 0\r\n },\r\n goodTopicScore: false,\r\n excellentTopicScore: false,\r\n goodScore: false,\r\n excellentScore: false,\r\n };\r\n }\r\n\r\n initialize(context, questionnaire, topics) {\r\n let self = this;\r\n\r\n self.context = context\r\n self.questionnaire = questionnaire;\r\n self.topics = topics;\r\n\r\n //self.buildAchievementItems();\r\n\r\n self.context.$authManager.getUser(function (user) {\r\n self.context.$api.getUserInteraction(user).then(function (interactionInfo) {\r\n self.userInteractions.profileCompleted = interactionInfo.profileCompleted;\r\n self.userInteractions.recommendationCompleted = interactionInfo.hasRecommendationCompleted;\r\n self.userInteractions.recommendationCompletedCount = interactionInfo.recommendationCompletedCount;\r\n\r\n self.buildAchievementItems();\r\n });\r\n });\r\n }\r\n\r\n buildAchievementItems() {\r\n let self = this;\r\n\r\n self.items.profile = this.hasProfileComplete();\r\n self.items.assessment = this.hasAssessmentComplete();\r\n self.items.recommendation = this.hasRecommendationComplete();\r\n self.items.goodTopicScore = this.hasGoodTopicScore();\r\n self.items.excellentTopicScore = this.hasExcellentTopicScore();\r\n self.items.goodScore = this.hasGoodScore();\r\n self.items.excellentScore = this.hasExcellentScore();\r\n\r\n self.context.$state.set('achievements', {\r\n items: self.items || [],\r\n completedCount: self.getCompletedCount()\r\n });\r\n }\r\n\r\n getAchievements() {\r\n return this.items;\r\n }\r\n\r\n getCompletedCount() {\r\n let result = 0;\r\n\r\n for (const key in this.items) {\r\n if (this.items.hasOwnProperty(key)) {\r\n if (key !== 'recommendation') {\r\n if (this.items[key]) {\r\n result++;\r\n }\r\n } else {\r\n if (this.items[key].hasAny) {\r\n result++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n }\r\n\r\n hasProfileComplete() {\r\n return this.userInteractions.profileCompleted;\r\n }\r\n\r\n hasAssessmentComplete() {\r\n return this.questionnaire.isSubmitted;\r\n }\r\n\r\n hasRecommendationComplete() {\r\n return {\r\n hasAny: this.userInteractions.recommendationCompleted,\r\n count: this.userInteractions.recommendationCompletedCount\r\n };\r\n }\r\n\r\n hasGoodTopicScore() {\r\n let self = this,\r\n result = false;\r\n\r\n if (!self.hasExcellentTopicScore()) {\r\n result = self.topics.filter(function (topic) {\r\n if (topic.isCompleted &&\r\n self.context.$scoreService.getItemByScore(topic.score).view.label == self.context.$scoreService.map.Good) {\r\n return topic;\r\n }\r\n }).length > 0;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n hasExcellentTopicScore() {\r\n let self = this;\r\n\r\n return this.topics.filter(function (topic) {\r\n if (topic.isCompleted &&\r\n (self.context.$scoreService.getItemByScore(topic.score).view.label == self.context.$scoreService.map.Excellent)) {\r\n return topic;\r\n }\r\n }).length > 0;\r\n }\r\n\r\n hasGoodScore() {\r\n let self = this,\r\n result = false;\r\n\r\n if (!self.hasExcellentScore()) {\r\n result = self.questionnaire.isSubmitted &&\r\n self.context.$scoreService.getItemByScore(self.questionnaire.score).view.label == self.context.$scoreService.map.Good;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n hasExcellentScore() {\r\n let self = this;\r\n\r\n return self.questionnaire.isSubmitted &&\r\n (self.context.$scoreService.getItemByScore(self.questionnaire.score).view.label == self.context.$scoreService.map.Excellent);\r\n }\r\n}\r\n\r\nexport const achievements = new AchievementsService();\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$achievements = achievements;\r\n }\r\n });\r\n}","module.exports = __webpack_public_path__ + \"img/s2me-logo-white.811d01ac.svg\";","import Oidc from 'oidc-client';\r\nimport crypto from 'crypto-browserify';\r\nimport { configService } from './ConfigService';\r\n\r\nclass AuthManager {\r\n constructor() {\r\n let self = this;\r\n\r\n //Oidc.Log.logger = console;\r\n //Oidc.Log.level = Oidc.Log.INFO;\r\n\r\n self.manager = new Oidc.UserManager({\r\n authority: configService.get('api.baseAuthorityAddress'),\r\n client_id: \"js\",\r\n redirect_uri: window.location.origin + \"/#/callback\",\r\n response_type: \"code\",\r\n scope: \"openid profile FisascoreIndividual.API offline_access\",\r\n post_logout_redirect_uri: window.location.origin,\r\n automaticSilentRenew: true,\r\n silent_redirect_uri: window.location.origin + \"/#/renewtoken\",\r\n loadUserInfo: true\r\n });\r\n\r\n self.manager.events.addAccessTokenExpiring(function () {\r\n window.console.log(\"token expiring...\");\r\n //self.manager.signinRedirect();\r\n });\r\n\r\n self.manager.events.addAccessTokenExpired(function () {\r\n window.console.log(\"token expired...\");\r\n //window.location.reload(true);\r\n self.manager.signinRedirect();\r\n //self.manager.signinSilent({ scope: self.manager.settings.scope, response_type: self.manager.settings.response_type });\r\n });\r\n\r\n self.manager.events.addSilentRenewError(function () {\r\n window.console.log(\"silent renew error...\");\r\n //window.location.reload(true);\r\n //self.manager.signinSilent({ scope: self.manager.settings.scope, response_type: self.manager.settings.response_type });\r\n self.manager.signinRedirect();\r\n });\r\n }\r\n\r\n async userIsAuthenticated(callback) {\r\n await this.manager.getUser().then(function (user) {\r\n if (callback) {\r\n callback(user);\r\n }\r\n });\r\n }\r\n\r\n async getUser(callback) {\r\n await this.manager.getUser().then(function (user) {\r\n if (callback) {\r\n callback(user);\r\n }\r\n });\r\n }\r\n\r\n login() {\r\n let self = this;\r\n\r\n self.manager.getUser().then(function (user) {\r\n if (user) {\r\n self.manager.signoutRedirect({ 'id_token_hint': user.id_token });\r\n } else {\r\n self.manager.signinRedirect();\r\n }\r\n });\r\n }\r\n\r\n signout() {\r\n let self = this;\r\n\r\n self.manager.getUser().then(function (user) {\r\n if (user) {\r\n localStorage.removeItem('showWelcome-' + user.profile.sub);\r\n } else {\r\n localStorage.removeItem('showWelcome');\r\n }\r\n });\r\n this.manager.signoutRedirect();\r\n }\r\n\r\n signup(customClient, promoCode) {\r\n\r\n window.location =\r\n this.manager.settings.authority + '/account/register' + encodeURIComponent(customClient ? ('-' + customClient) : '') +\r\n '?promocode=' + encodeURIComponent(promoCode || '') +\r\n '&returnUrl=' + encodeURIComponent(\r\n '/connect/authorize/callback?client_id=' + encodeURIComponent(this.manager.settings.client_id) +\r\n '&redirect_uri=' + encodeURIComponent(this.manager.settings.redirect_uri) +\r\n '&response_type=code' +\r\n '&scope=' + encodeURIComponent(this.manager.settings.scope) +\r\n '&code_challenge=' + this.generateChanllenge() +\r\n '&code_challenge_method=S256');\r\n }\r\n\r\n changePassword() {\r\n\r\n window.location =\r\n this.manager.settings.authority + '/account/changepassword?returnUrl=' + encodeURIComponent(\r\n '/connect/authorize/callback?client_id=' + encodeURIComponent(this.manager.settings.client_id) +\r\n '&redirect_uri=' + encodeURIComponent(this.manager.settings.redirect_uri) +\r\n '&response_type=code' +\r\n '&scope=' + encodeURIComponent(this.manager.settings.scope) +\r\n '&code_challenge=' + this.generateChanllenge() +\r\n '&code_challenge_method=S256');\r\n }\r\n\r\n base64URLEncode(str) {\r\n return str.toString('base64')\r\n .replace(/\\+/g, '-')\r\n .replace(/\\//g, '_')\r\n .replace(/=/g, '');\r\n }\r\n\r\n sha256(buffer) {\r\n return crypto.createHash('sha256').update(buffer).digest();\r\n }\r\n\r\n generateChanllenge() {\r\n let verifier = this.base64URLEncode(crypto.randomBytes(32));\r\n\r\n return this.base64URLEncode(this.sha256(verifier));\r\n }\r\n}\r\n\r\nexport const authManager = new AuthManager();\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$authManager = authManager;\r\n }\r\n });\r\n}","const MyAssessment = () => import('./components/MyAssessment');\r\nconst AppSettings = () => import('./components/AppSettings');\r\nconst Recommendations = () => import('./components/Recommendations');\r\nconst ThreatMonitoring = () => import('./components/ThreatMonitoring');\r\nconst ScoreReport = () => import('./components/ScoreReport');\r\nconst TopicPreview = () => import('./components/TopicPreview');\r\nconst Login = () => import('./components/Login');\r\nconst Register = () => import('./components/Register');\r\nconst AuthCallback = () => import('./components/AuthCallback');\r\nconst AuthRenewToken = () => import('./components/AuthRenewToken');\r\nconst WelcomeScreen = () => import('./components/WelcomeScreen');\r\n\r\nexport default [\r\n { path: '/', redirect: '/my-assessment', meta: { gtm: 'MyAssessment', requiresAuth: true } },\r\n { path: '/my-assessment', component: MyAssessment, meta: { gtm: 'MyAssessment', requiresAuth: true } },\r\n { path: '/topic/:number/:id', component: TopicPreview, meta: { gtm: 'TopicQuestions', requiresAuth: true } },\r\n { path: '/recommendations', component: Recommendations, meta: { gtm: 'Recommendations', requiresAuth: true } },\r\n { path: '/threat-monitoring', component: ThreatMonitoring, meta: { gtm: 'ThreatMonitoring', requiresAuth: true } },\r\n { path: '/report', component: ScoreReport, meta: { gtm: 'Report', requiresAuth: true } },\r\n { path: '/settings', component: AppSettings, meta: { gtm: 'Settings', requiresAuth: true } },\r\n { path: '/login', component: Login, meta: { gtm: 'Login' } },\r\n { path: '/register', component: Register, meta: { gtm: 'Register' } },\r\n { path: '/register-:customclient(.*)', component: Register, meta: { gtm: 'Register' } },\r\n { path: '/register/:promocode', component: Register, meta: { gtm: 'Register' } },\r\n { path: '/register-:customclient(.*)/:promocode', component: Register, meta: { gtm: 'Register' } },\r\n { path: '/callback', component: AuthCallback, meta: { gtm: 'AuthCallback' } },\r\n { path: '/renewtoken', component: AuthRenewToken, meta: { gtm: 'AuthRenewToken' } },\r\n { path: '/welcome', name: 'welcome', component: WelcomeScreen, meta: { gtm: 'WelcomeScreen', requiresAuth: true } }\r\n];","import '@babel/polyfill/dist/polyfill';\r\nimport cssVars from 'css-vars-ponyfill';\r\n\r\nimport Vue from 'vue';\r\nimport VueGtm from 'vue-gtm';\r\nimport VueRouter from 'vue-router';\r\nimport VueClipboard from 'vue-clipboard2'\r\nimport VueSocialSharing from 'vue-social-sharing';\r\n\r\nimport '@fortawesome/fontawesome-free/css/all.css';\r\nimport 'roboto-fontface/css/roboto/roboto-fontface.css';\r\nimport './global.scss';\r\nimport { configService } from './services/ConfigService';\r\nimport App from './components/App';\r\nimport routes from './routes';\r\nimport APIService from './services/APIService';\r\nimport AuthManager from './services/AuthManager';\r\nimport State from './services/StateService';\r\nimport ScoreService from './services/ScoreService';\r\nimport AchievementsService from './services/AchievementsService';\r\nimport HelperTextService from './services/HelperTextService';\r\nimport vuetify from './plugins/vuetify/vuetify';\r\n\r\ncssVars({\r\n // Targets\r\n rootElement: document,\r\n shadowDOM: false,\r\n\r\n // Sources\r\n include: 'link[rel=stylesheet],style',\r\n exclude: '',\r\n variables: {},\r\n\r\n // Options\r\n onlyLegacy: true,\r\n preserveStatic: true,\r\n preserveVars: false,\r\n silent: false,\r\n updateDOM: true,\r\n updateURLs: true,\r\n watch: false\r\n});\r\n\r\nconst router = new VueRouter({\r\n routes: routes\r\n});\r\n\r\nVueClipboard.config.autoSetContainer = true; // add this line\r\n\r\nVue.use(VueRouter);\r\nVue.use(VueClipboard)\r\nVue.use(VueSocialSharing);\r\nVue.use(APIService);\r\nVue.use(AuthManager);\r\nVue.use(ScoreService);\r\nVue.use(AchievementsService);\r\nVue.use(State);\r\nVue.use(HelperTextService);\r\n\r\nVue.use(VueGtm, {\r\n id: configService.get('gtm.key'),\r\n enabled: !!configService.get('gtm.key'),\r\n //debug: true,\r\n vueRouter: router\r\n //ignoredViews: ['homepage']\r\n});\r\n\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n render: h => h(App),\r\n vuetify,\r\n router: router\r\n}).$mount('#app')\r\n","import mod from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./App.scss?vue&type=style&index=0&id=44cf94b8&scoped=true&lang=scss&\"; export default mod; export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/index.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!./App.scss?vue&type=style&index=0&id=44cf94b8&scoped=true&lang=scss&\"","let State = {\r\n questionnaire: {},\r\n topics: []\r\n};\r\n\r\nclass StateService {\r\n constructor(component) {\r\n this._component = component;\r\n }\r\n\r\n // eslint-disable-next-line\r\n set(key, value) {\r\n eval(`State.${key} = (value || {})`);\r\n this._component.$forceUpdate();\r\n this._triggerParentUpdate(this._component.$parent);\r\n }\r\n\r\n get(key) {\r\n return eval(`State.${key}`);\r\n }\r\n\r\n _triggerParentUpdate(parent) {\r\n if(parent) {\r\n parent.$forceUpdate();\r\n\r\n if(parent.$parent) {\r\n this._triggerParentUpdate(parent.$parent);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$state = new StateService(this);\r\n this.$stateVal = State;\r\n }\r\n });\r\n}","const HelperTextService = {\r\n items: [\r\n {\r\n name: 'lastName',\r\n text: `We know you are very special. Just like all the other people named !\r\n \r\n We need your last name to help us create a unique profile just for you.`\r\n },\r\n {\r\n name: 'genderId',\r\n text: `Don't sweat this one. We're just curious.\r\n \r\n We want to make sure everyone has the opportunity to improve their security savviness.`\r\n },\r\n {\r\n name: 'dateOfBirth',\r\n text: `Don't worry. We won't tell anyone.\r\n \r\n This helps us hone in on the best approach for each age range, whether you are a Boomer or Gen-Z.`\r\n },\r\n {\r\n name: 'postalCode',\r\n text: `Tell us where you're from! We're just nosey.\r\n \r\n Wouldn't it be fun to know how your security savviness compares to your neighbors'? What about the next state over?`\r\n },\r\n {\r\n name: 'countryId',\r\n text: `Yes, security savviness, or the lack thereof, is universal!\r\n \r\n Isn't it cool that we all have something in common?`\r\n },\r\n {\r\n name: 'jobLevelId',\r\n text: `Are you more secure than the boss?\r\n\r\n We want to know how a person's security savviness compares to their position on the job scale.`\r\n },\r\n {\r\n name: 'jobIndustryId',\r\n text: `Let the industry battles begin!\r\n\r\n Help us find out which industry have more security know-how.`\r\n },\r\n {\r\n name: 'departmentId',\r\n text: `Let the office battles begin!\r\n\r\n Help us find out which departments have more security know-how.`\r\n },\r\n {\r\n name: 'phoneNumber',\r\n text: `A security company needs to follow their own advice.\r\n \r\n Two-factor authentication helps us make sure you are really YOU!\r\n \r\n Just let us know what method is most convenient.`\r\n },\r\n ],\r\n\r\n getText: function (name) {\r\n let result = this.items.find((item) => {\r\n return item.name === name;\r\n });\r\n\r\n return result? result.text : '';\r\n }\r\n}\r\n\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$helperTextService = HelperTextService;\r\n }\r\n });\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#5d37b5\",\"secondary\":\"#d6eef4\",\"links\":\"#1746de\",\"primaryText\":\"#212529\",\"secondaryText\":\"#03628a\",\"accent\":\"#82b1ff\",\"error\":\"#ac0c0a\",\"info\":\"#2196f3\",\"success\":\"#4caf50\",\"warning\":\"#ffc107\"};","import config from '../config.json';\r\nimport configDev from '../config.development.json';\r\nimport configQA from '../config.qa.json';\r\nimport configStable from '../config.stable.json';\r\nimport configProd from '../config.production.json';\r\n\r\nclass ConfigService {\r\n constructor() {\r\n\r\n if (process.env.VUE_APP_ENV_CONFIG === \"development\") {\r\n this._config = configDev;\r\n } else if (process.env.VUE_APP_ENV_CONFIG === \"qa\") {\r\n this._config = configQA;\r\n } else if (process.env.VUE_APP_ENV_CONFIG === \"stable\") {\r\n this._config = configStable;\r\n } else if (process.env.VUE_APP_ENV_CONFIG === \"production\") {\r\n this._config = configProd;\r\n } else {\r\n this._config = config;\r\n }\r\n }\r\n\r\n get(keyPath, tplVars = null) {\r\n let val = eval(`this._config.${keyPath}`);\r\n if (tplVars) {\r\n for (let key in tplVars) {\r\n val = val.replace(new RegExp(`\\\\$\\\\{${key}\\\\}`, 'g'), tplVars[key] || '');\r\n }\r\n }\r\n\r\n return val;\r\n }\r\n}\r\n\r\n\r\nexport const configService = new ConfigService();\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$config = configService;\r\n }\r\n });\r\n}","// src/plugins/vuetify/vuetify.js\r\n\r\nimport Vue from 'vue'\r\nimport Vuetify, {\r\n VApp, VAvatar, VTextField, VTextarea, VContainer, VRow, VCol, VResponsive, VHover, VCardText, VCard, VNavigationDrawer, VBtn, VBadge,\r\n VTabs, VTabsSlider, VTab, VTabItem, VDivider, VRadioGroup, VRadio, VIcon, VProgressCircular, VProgressLinear,\r\n VStepper, VStepperStep, VStepperItems, VStepperContent, VForm, VSelect, VBtnToggle, VAutocomplete, VCheckbox, VSpacer,\r\n VList, VListItem, VListItemContent, VListItemGroup, VListItemTitle, VListItemSubtitle, VListItemAvatar, VImg,\r\n VExpansionPanels, VExpansionPanel, VExpansionPanelContent, VExpansionPanelHeader, VCardTitle, VCardSubtitle, VCardActions,\r\n VDialog, VSheet, VBottomSheet\r\n} from 'vuetify/lib'\r\nimport { Resize } from 'vuetify/lib/directives'\r\nimport VuetifyColors from './assets/colors.scss';\r\nimport 'vuetify/dist/vuetify.min.css';\r\nimport '@mdi/font/css/materialdesignicons.css';\r\n\r\nVue.use(Vuetify, {\r\n components: {\r\n VApp,\r\n VAutocomplete,\r\n VAvatar,\r\n VBadge,\r\n VBtn,\r\n VBtnToggle,\r\n VCard,\r\n VCardActions,\r\n VCardText,\r\n VCardTitle,\r\n VCardSubtitle,\r\n VCheckbox,\r\n VCol,\r\n VContainer,\r\n VDivider,\r\n VExpansionPanels,\r\n VExpansionPanel,\r\n VExpansionPanelContent,\r\n VExpansionPanelHeader,\r\n VForm,\r\n VHover,\r\n VIcon,\r\n VImg,\r\n VList,\r\n VListItem,\r\n VListItemAvatar,\r\n VListItemContent,\r\n VListItemGroup,\r\n VListItemSubtitle,\r\n VListItemTitle,\r\n VNavigationDrawer,\r\n VProgressCircular,\r\n VProgressLinear,\r\n VRadio,\r\n VRadioGroup,\r\n VResponsive,\r\n VRow,\r\n VSelect,\r\n VSpacer,\r\n VStepper,\r\n VStepperStep,\r\n VStepperItems,\r\n VStepperContent,\r\n VTabs,\r\n VTabsSlider,\r\n VTab,\r\n VTabItem,\r\n VTextField,\r\n VTextarea,\r\n VDialog,\r\n VSheet,\r\n VBottomSheet\r\n },\r\n directives: {\r\n Resize: Resize\r\n }\r\n})\r\n\r\nconst opts = {\r\n theme: {\r\n dark: false,\r\n default: 'light',\r\n disable: false,\r\n options: {\r\n cspNonce: 'dQw4w9WgXcQ',\r\n customProperties: true,\r\n themeCache: undefined,\r\n },\r\n themes: {\r\n light: {\r\n primary: {\r\n base: VuetifyColors.primary,\r\n lighten1: VuetifyColors.primary,\r\n lighten2: VuetifyColors.primary,\r\n lighten3: VuetifyColors.primary,\r\n lighten4: VuetifyColors.primary,\r\n darken1: VuetifyColors.primary,\r\n darken2: VuetifyColors.primary,\r\n darken3: VuetifyColors.primary,\r\n darken4: VuetifyColors.primary,\r\n },\r\n secondary: VuetifyColors.secondary,\r\n //tertiary: VuetifyColors.tertiary,\r\n //accent: VuetifyColors.accent,\r\n error: VuetifyColors.error,\r\n //info: VuetifyColors.info,\r\n //success: VuetifyColors.success,\r\n //warning: VuetifyColors.warning\r\n }\r\n }\r\n },\r\n icons: {\r\n iconfont: 'mdiSvg', // 'mdi' || 'mdiSvg' || 'md' || 'fa' || 'fa4' || 'faSvg'\r\n },\r\n}\r\n\r\nexport default new Vuetify(opts)","import { configService } from './ConfigService';\r\nimport { authManager } from './AuthManager';\r\nimport axios from 'axios';\r\n\r\nclass APIService {\r\n constructor() {\r\n this.authManager = authManager;\r\n }\r\n\r\n _request(options = {}) {\r\n if (options.mockData) {\r\n return new Promise((resolve) => {\r\n setTimeout(() => {\r\n resolve({data: options.mockData});\r\n }, 1000);\r\n });\r\n }\r\n\r\n return axios.request({\r\n headers: Object.assign(options.headers, {\r\n 'Cache-Control': 'no-cache',\r\n Pragma: 'no-cache'\r\n }),\r\n method: options.method || 'GET',\r\n url: options.url,\r\n contentType: options.contentType || 'application/json',\r\n responseType: options.responseType || 'json',\r\n data: options.data || null\r\n }).catch(error => {\r\n if (error && error.response && error.response.status == 401) {\r\n options.context.authManager.login();\r\n } else {\r\n if (options.callback) {\r\n options.callback(error.response);\r\n } else {\r\n alert(error.message);\r\n }\r\n }\r\n });\r\n }\r\n\r\n _getActionUrl(keyPath, tplVars = null) {\r\n let baseAPIAddress = configService.get('api.baseAPIAddress');\r\n let baseSharingAddress = configService.get('api.baseSharingAddress');\r\n let baseAuthorityAddress = configService.get('api.baseAuthorityAddress');\r\n\r\n tplVars = tplVars || { };\r\n tplVars['baseAPIAddress'] = baseAPIAddress;\r\n tplVars['baseSharingAddress'] = baseSharingAddress;\r\n tplVars['baseAuthorityAddress'] = baseAuthorityAddress;\r\n\r\n return configService.get(keyPath, tplVars)\r\n }\r\n\r\n async getCountries(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.countries')\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getGlobalTypesByName(user, name) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.globalTypes') + '?name=' + name\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getUser(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.userInfo', { userId: user.profile.sub })\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getUserInteraction(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.userInteractionInfo', { userId: user.profile.sub })\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async saveUser(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.auth'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async saveCompanyInfo(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.companyInfo'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async sendCode(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.sendCode'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async sendEmailVerificationCode(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.sendEmailVerificationCode'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async verifyUserEmail(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.verifyUserEmail'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async removeUserEmail(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.removeUserEmail'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async manageAuth(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.manageAuth'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async setProperty(user, model, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.setProperty'),\r\n method: 'POST',\r\n data: model,\r\n callback: callback\r\n });\r\n\r\n return response ? response.data : null;\r\n });\r\n }\r\n\r\n async getQuestionnaire(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.questionnaire', { userId: user.profile.sub }),\r\n // mockData: (await import('../mocked-data/api.questionnaire.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getTopics(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.topics', { userId: user.profile.sub }),\r\n //mockData: (await import('../mocked-data/api.topics.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getTopic(topicId, user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.topic', { topicId: topicId }),\r\n //mockData: (await import('../mocked-data/api.topic.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getTopicQuestions(topicId, user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.questions', { topicId: topicId }),\r\n //mockData: (await import('../mocked-data/api.topic.questions.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getRecommendations(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.recommendations', { userId: user.profile.sub }),\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async recommendationsMarkAsComplete(user, questionId, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.recommendationsMarkAsComplete', { userId: user.profile.sub }),\r\n method: 'POST',\r\n data: {\r\n id: questionId\r\n }\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async getDataBreaches(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.dataBreaches', { userId: user.profile.sub }),\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async dataBreachesMarkAsRead(user, data, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.dataBreachesMarkAsRead', data),\r\n method: 'POST'\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async dataBreachesMarkAsPasswordChanged(user, data, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.dataBreachesMarkAsPasswordChanged', data),\r\n method: 'POST'\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async dataBreachesMarkAsSubscribed(user, data, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.dataBreachesMarkAsSubscribed', data),\r\n method: 'POST'\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async getReport(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.report', { userId: user.profile.sub }),\r\n //mockData: (await import('../mocked-data/api.questionnaire.report.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getQuestionnaireScores(questionnaireId, startDate, user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.questionnaireScores', { questionnaireId: questionnaireId, startDate: encodeURIComponent(startDate) }),\r\n //mockData: (await import('../mocked-data/api.questionnaire.report.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getQuestionnaireAgeScores(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.questionnaireAgeScores', { userId: user.profile.sub }),\r\n //mockData: (await import('../mocked-data/api.questionnaire.report.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getQuestionnaireLocationScores(user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.questionnaireLocationScores', { userId: user.profile.sub }),\r\n //mockData: (await import('../mocked-data/api.questionnaire.report.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async getTopicScores(topicId, startDate, user) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.topicScores', { topicId: topicId, startDate: encodeURIComponent(startDate) }),\r\n //mockData: (await import('../mocked-data/api.questionnaire.report.json')).default\r\n });\r\n\r\n return response.data;\r\n });\r\n }\r\n\r\n async submitAnswer(question, user, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.submitAnswer'),\r\n method: 'POST',\r\n data: question\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async submitAssessment(questionnaireId, user, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.submitAssessment'),\r\n method: 'POST',\r\n data: {\r\n id: questionnaireId\r\n }\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async sendFeedback(topicId, message, user, callback) {\r\n return await this.executeAuthorized(user, async () => {\r\n let response = await this._request({\r\n context: this,\r\n headers: { Authorization: \"Bearer \" + user.access_token },\r\n url: this._getActionUrl('api.sendFeedback'),\r\n method: 'POST',\r\n data: {\r\n userId: user.profile.sub,\r\n topicId: topicId,\r\n message: message\r\n }\r\n });\r\n\r\n if (callback) {\r\n callback(response);\r\n }\r\n });\r\n }\r\n\r\n async executeAuthorized(user, request) {\r\n if (!user || user.expired) {\r\n return this.authManager.login();\r\n } else {\r\n if (request) {\r\n return await request();\r\n }\r\n }\r\n }\r\n\r\n async postTopic(payload) {\r\n return await this._request({\r\n context: this,\r\n headers: { },\r\n url: this._getActionUrl('api.topic', { id: payload.id }),\r\n method: 'POST',\r\n body: JSON.stringify(payload)\r\n });\r\n }\r\n}\r\n\r\nexport const api = new APIService();\r\nexport default function factory(Vue) { \r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$api = api;\r\n }\r\n });\r\n}","const ScoreService = {\r\n map: {\r\n VeryPoor: 'Very Poor',\r\n Poor: 'Poor',\r\n Fair: 'Fair',\r\n Good: 'Good',\r\n Excellent: 'Excellent',\r\n },\r\n items: [\r\n {\r\n length: 499 - 300,\r\n color: '#ED250A',\r\n view: {\r\n label: 'Very Poor',\r\n scale: [300, 499],\r\n description: 'You have a \"very poor\" S2SCORE. A very poor score is as bad as it gets, and significant improvements must be made immediately if you want to protect yourself and your loved ones from harm. The harm is inevitable for people in this score range. Accept the reality of your score, accept responsibility, and commit to improvement. Although there is much work to be done, don\\'t get overwhelmed! This is a learning journey for you and it can be enjoyable (trust us on this). You should seek guidance from friends and/or family that you trust, and seek professional help as necessary. Each change that you make, whether it be a habit or technology, will result in significant improvements and better protection. You can do this! The people around you (family, friends, co-workers, employer, etc.) will be grateful too.'\r\n }\r\n },\r\n {\r\n length: 599 - 500,\r\n color: '#FFAA00',\r\n view: {\r\n label: 'Poor',\r\n scale: [500, 599],\r\n description: 'You have a \"poor\" S2SCORE. A poor score means that you need to take information security and safety more seriously than you have in the past. You and your loved ones are all facing more risk than you or they should. The consequences could become quite severe. Commit to improvement, and do it now. Get serious about information security and safety by reviewing the recommendations made for you in your S2SCORE report, then commit to a gameplan for improvement. If you need help from someone, get it. Ask friends and family for assistance or seek help from a professional service provider in your area. In the long run, everyone (family, friends, co-workers, employer, etc.) will benefit from your choice to improve.'\r\n }\r\n },\r\n {\r\n length: 659 - 600,\r\n color: '#AFAFAF',\r\n view: {\r\n label: 'Fair',\r\n scale: [600, 659],\r\n description: 'You have a \"fair\" S2SCORE. A fair score isn\\'t bad, but it isn\\'t good either. You appear to do some information security and safety things well, but there are some blind spots that require your attention. Although most people have S2SCOREs that are rated as fair, it doesn\\'t mean that it\\'s acceptable. Review all the recommendations made for you in your S2SCORE report, and make a gameplan for improvement. If you need outside help, seek it from a trusted and skilled friend or a professional service provider in your area. Information security and safety are more important today than ever, and they will only become more important in the future. As you improve, the people around you (family, friends, co-workers, employer, etc.) will all benefit.'\r\n }\r\n },\r\n {\r\n length: 779 - 660,\r\n color: '#3198FF',\r\n view: {\r\n label: 'Good',\r\n scale: [660, 779],\r\n description: 'You have a \"good\" S2SCORE. A good score is acceptable to many people, and it shows that you are aware of most information security and safety threats. Good job! Although you have taken some of the most important steps to protect yourself and your loved ones from attacks, there\\'s room for improvement. Give serious consideration to the recommendations made for you in your S2SCORE report. The better your security, the better off the people around (family, friends, co-workers, employer, etc.) you will be. The next step on your information security and safety journey should be to achieve an \"excellent\" rating.'\r\n }\r\n },\r\n {\r\n length: 850 - 780,\r\n color: '#0EC149',\r\n view: {\r\n label: 'Excellent',\r\n scale: [780, 850],\r\n description: 'You have an \"excellent\" S2SCORE. An excellent score means that it\\'s much less likely that you will suffer directly from an attack, and even if you did, the damage would be limited to the extent that you are able to limit it. Congratulations! It\\'s obvious that you take information security and safety very seriously. The people around you (family, friends, co-workers, employer, etc.) all benefit from your prudent approach, even if you or they don\\'t necessarily realize it. Keep doing what you\\'re doing and look for opportunities to help others do the same. You are a champion of information security and safety for others to follow!'\r\n }\r\n }\r\n ],\r\n\r\n getItemByScore: function (score) {\r\n return this.items.find((item) => {\r\n return score >= item.view.scale[0] && score <= item.view.scale[1];\r\n }) || {\r\n length: 300 - 300,\r\n color: '#ED250A',\r\n view: { label: 'Very Poor', scale: [300, 300] }\r\n };\r\n },\r\n\r\n getDescriptionByScore: function (score) {\r\n var item = this.items.find((item) => {\r\n return score >= item.view.scale[0] && score <= item.view.scale[1];\r\n });\r\n\r\n return item ? item.view.description : '';\r\n }\r\n}\r\n\r\nexport default function factory(Vue) {\r\n Vue.mixin({\r\n beforeCreate() {\r\n this.$scoreService = ScoreService;\r\n }\r\n });\r\n}","// extracted by mini-css-extract-plugin\nmodule.exports = {\"primary\":\"#5d37b5\",\"secondary\":\"#d6eef4\",\"links\":\"#1746de\",\"primaryText\":\"#212529\",\"secondaryText\":\"#03628a\",\"accent\":\"#82b1ff\",\"error\":\"#ac0c0a\",\"info\":\"#2196f3\",\"success\":\"#4caf50\",\"warning\":\"#ffc107\"};"],"sourceRoot":""}