{"version":3,"sources":["webpack://TrvLocalization/webpack/bootstrap","webpack://TrvLocalization/external \"jQuery\"","webpack://TrvLocalization/external \"Trv\"","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://TrvLocalization/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://TrvLocalization/./node_modules/i18next/dist/esm/i18next.js","webpack://TrvLocalization/./node_modules/whatwg-fetch/fetch.js","webpack://TrvLocalization/./src/canada/utilities/pubsub.js","webpack://TrvLocalization/./src/canada/services/localizationService.js","webpack://TrvLocalization/./src/canada/services/runRequest.js","webpack://TrvLocalization/./src/canada/constants/paidSearchParams.js","webpack://TrvLocalization/./src/canada/constants/searchEngines.js","webpack://TrvLocalization/./src/canada/constants/paramValues.js","webpack://TrvLocalization/./src/canada/constants/trafficTypes.js","webpack://TrvLocalization/./src/canada/transactions/paidSearch.js","webpack://TrvLocalization/./src/canada/components/header.js","webpack://TrvLocalization/./src/canada/transactions/findabroker.js","webpack://TrvLocalization/./src/canada/constants/productTypes.js","webpack://TrvLocalization/./src/canada/constants/policyTypeMapping.js","webpack://TrvLocalization/./src/canada/transactions/session.js","webpack://TrvLocalization/./src/canada/transactions/catransaction.js","webpack://TrvLocalization/./src/canada/constants/adamAndKnightParams.js","webpack://TrvLocalization/./src/canada/index.js","webpack://TrvLocalization/./src/canada/transactions/buildTfnNumber.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","jQuery","Trv","_typeof","obj","iterator","constructor","_toPropertyKey","arg","input","hint","prim","toPrimitive","undefined","res","TypeError","String","Number","_defineProperty","configurable","writable","_objectSpread","target","arguments","length","source","ownKeys","keys","getOwnPropertySymbols","push","apply","filter","sym","getOwnPropertyDescriptor","forEach","_classCallCheck","instance","Constructor","_defineProperties","props","descriptor","_createClass","protoProps","staticProps","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","_inherits","subClass","superClass","consoleLogger","type","log","args","this","output","warn","error","console","baseLogger","Logger","concreteLogger","options","init","prefix","logger","debug","bool","_len","Array","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","concat","moduleName","EventEmitter","observers","events","listener","_this","split","event","cloned","observer","_cloned","defer","rej","promise","Promise","resolve","reject","makeString","a","getLastOfPath","path","Empty","cleanKey","indexOf","replace","canNotTraverseDeeper","stack","shift","k","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","getPathWithDefaults","data","defaultData","deepExtend","overwrite","prop","regexEscape","str","_entityMap","isIE10","window","navigator","userAgent","_EventEmitter","ResourceStore","defaultNS","keySeparator","index","splice","lng","silent","addNamespaces","emit","resources","toString","addResource","deep","pack","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","postProcessor","processors","addPostProcessor","handle","translator","processor","process","checkedLoadedFor","Translator","services","language","interpolation","resolved","nsSeparator","namespaces","match","interpolator","nestingRegexp","parts","join","lastKey","_this2","overloadTranslationOptionHandler","isArray","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","toLowerCase","resUsedKey","usedKey","resExactUsedKey","exactUsedKey","resType","noObject","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","copy","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","fallbackValue","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","usedLng","usedNS","skipInterpolation","nestBef","skipOnVariables","nb","defaultVariables","interpolate","na","nest","context","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsContextHandling","codes","utils","hasLoadedNamespace","code","pluralSuffix","possibleKey","finalKey","finalKeys","addLookupKeys","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","option","substring","capitalize","string","charAt","toUpperCase","slice","LanguageUtil","whitelist","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","map","part","cleanCode","deprecate","isSupportedCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","lngOnly","find","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","createRules","rules","set","numbers","plurals","PluralResolver","rule","getRule","number","idx","noAbs","Math","abs","simplifyPluralSuffix","returnSuffix","prepend","compatibilityJSON","Interpolator","format","escapeValue","iOpts","escape","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","RegExp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","trim","f","missingInterpolationHandler","regex","safeValue","todo","exec","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","JSON","e","formatters","doReduce","includes","test","elem","reduce","v","Connector","backend","store","state","queue","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","loaded","errors","err","addResourceBundle","q","_getLastOfPath2","arr","what","remove","done","fcName","tried","wait","setTimeout","read","queueLoad","loadOne","prepareLoading","_this5","isUpdate","initImmediate","nonExplicitWhitelist","preload","pluralSeparator","partialBundledLanguages","ret","tDescription","_format","transformOptions","noop","I18n","external","isInitialized","isClone","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","changeLanguage","usedCallback","append","Error","isLanguageChangingTo","setLng","getBestMatchFromCodes","cacheUserLanguage","loadResources","async","detect","fixedT","opts","rest","_this$translator","_this$translator2","exists","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","_this8","mergedOptions","clone","membersToCopy","global","globalThis","support","Blob","viewClasses","isArrayBufferView","ArrayBuffer","isView","normalizeName","normalizeValue","iteratorFor","items","next","Headers","headers","header","getOwnPropertyNames","consumed","body","bodyUsed","fileReaderReady","reader","onload","result","onerror","readBlobAsArrayBuffer","blob","FileReader","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","isPrototypeOf","_bodyBlob","FormData","_bodyFormData","URLSearchParams","DataView","_bodyArrayBuffer","rejected","arrayBuffer","isConsumed","byteOffset","then","text","readAsText","chars","fromCharCode","readArrayBufferAsText","formData","decode","json","oldValue","has","thisArg","values","entries","methods","Request","method","upcased","url","credentials","signal","referrer","cache","reParamSearch","Date","getTime","form","bytes","decodeURIComponent","Response","bodyInit","status","ok","statusText","response","redirectStatuses","redirect","RangeError","location","DOMException","message","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","rawHeaders","getAllResponseHeaders","substr","line","responseURL","responseText","ontimeout","onabort","open","href","fixUrl","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","polyfill","fetch","_i18Promise","_translator","topics","freeze","subscribe","topic","publish","info","resourcesFound","_requestedNamespaces","runRequest","stringify","i18nOptions","document","documentElement","lang","i18next","use","resolvePromise","_doLoad","nsToLoad","preLoadNsCount","loadNamespaces","setDefaultNamespace","_content","whenReady","replacements","isInteger","contentService","_t","PaidSearchParamKeys","SOURCE","MEDIUM","CAMPAIGN","CONTENT","TERM","TFN","GCLID","SearchEngines","DefaultParamValues","utm_source","utm_medium","utm_campaign","utm_content","utm_term","tfn","DirectLoadParamValues","TrafficTypes","getCurrentTrafficType","some","searchEngine","getDomain","getCurrentTrafficParams","trafficType","URL","hostname","handleLanguageToggle","safe_url","headerToggleButton","getElementById","footerToggleButton","mobileHeaderToggleButton","getElementsByClassName","link","sanitized_search","encodeURIComponent","replaceAll","sanitizeQueryParams","search","setAttribute","$","ready","click","findBrokerForm","parent","zip","attr","captionError","errorMessage","appendTo","height","outerHeight","addClass","focus","each","not","toggleClass","closest","removeClass","scrollTop","offset","top","hasClass","POLICY_TYPE_MAPPING","getAndSetSessionValue","allParams","paramToCheckFor","paramToSet","sessionStorage","setItem","getItem","Transactions","GetAQuote","submit","ctaForm","strPostal","postalCodePattern","postalcode","postalCodeVal","select","invalidPostalCode","productType","$elem","Validate","clearErrorMessage","FIND_A_BROKER_URL","displayErrorMessage","Config","ontarioPostalCodePattern","Common","openExternalUrl","baseUrl","postalCode","queryParams","paramName","localStorage","productTypeValue","params","getQuickQuoteURL","queryString","_step","caseSensitiveUrlSearchParams","urlSearchParams","_iterator","_createForOfIteratorHelper","_step$value","_slicedToArray","paidSearchParams","isPaidSearch","isFromBroker","removeItem","previousTrafficType","currentTrafficType","newTrafficParams","storePaidSearchParams","start","fromBroker","utmTerm","cta","lptfn","pathParts","pathname","currentPage","isAutoPage","isHomeownersPage","isCondoPage","isTenantsPage","pair","tuple","$selfDirected","$findABrokerCTA","$brokerDirected","$personalizedAgentDirected","personalizedAgentDirectedUrl","domain","$FindBrokercta","$TFNQuote","$GetQuotecta","queryparams","_i","_Object$entries","_Object$entries$_i","retriveQuoteLine","ajax","innerHtml","parseHTML","html","show","fail","clingify","breakpointHeight","cta_top","_loadTransaction","phoneParts","intlCode","formattedTfn","phoneList","_buildTfnNumber"],"mappings":"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","file":"bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\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\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\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n","module.exports = jQuery;","module.exports = Trv;","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 _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}","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 defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n return target;\n}","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}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n return getPath(this.data, path);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, options) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, fallbackValue) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && typeof options.context === 'string' && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'kk', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map(function (suffix) {\n return key + suffix;\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, options);\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n str = str.replace(match[0], todo.safeValue(value));\n todo.regex.lastIndex = 0;\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].includes(this.formatSeparator) && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, options);\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","var global =\n (typeof globalThis !== 'undefined' && globalThis) ||\n (typeof self !== 'undefined' && self) ||\n (typeof global !== 'undefined' && global)\n\nvar support = {\n searchParams: 'URLSearchParams' in global,\n iterable: 'Symbol' in global && 'iterator' in Symbol,\n blob:\n 'FileReader' in global &&\n 'Blob' in global &&\n (function() {\n try {\n new Blob()\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in global,\n arrayBuffer: 'ArrayBuffer' in global\n}\n\nfunction isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ]\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n}\n\nfunction normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~!]/i.test(name) || name === '') {\n throw new TypeError('Invalid character in header field name: \"' + name + '\"')\n }\n return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value)\n }\n return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift()\n return {done: value === undefined, value: value}\n }\n }\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n }\n }\n\n return iterator\n}\n\nexport function Headers(headers) {\n this.map = {}\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value)\n }, this)\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1])\n }, this)\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name])\n }, this)\n }\n}\n\nHeaders.prototype.append = function(name, value) {\n name = normalizeName(name)\n value = normalizeValue(value)\n var oldValue = this.map[name]\n this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this)\n }\n }\n}\n\nHeaders.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push(name)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n var items = []\n this.forEach(function(value) {\n items.push(value)\n })\n return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) {\n items.push([name, value])\n })\n return iteratorFor(items)\n}\n\nif (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result)\n }\n reader.onerror = function() {\n reject(reader.error)\n }\n })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n}\n\nfunction readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf)\n var chars = new Array(view.length)\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i])\n }\n return chars.join('')\n}\n\nfunction bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength)\n view.set(new Uint8Array(buf))\n return view.buffer\n }\n}\n\nfunction Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\n /*\n fetch-mock wraps the Response object in an ES6 Proxy to\n provide useful test harness features such as flush. However, on\n ES5 browsers without fetch or Proxy support pollyfills must be used;\n the proxy-pollyfill is unable to proxy an attribute unless it exists\n on the object before the Proxy is created. This change ensures\n Response.bodyUsed exists on the instance, while maintaining the\n semantic of setting Request.bodyUsed in the constructor before\n _initBody is called.\n */\n this.bodyUsed = this.bodyUsed\n this._bodyInit = body\n if (!body) {\n this._bodyText = ''\n } else if (typeof body === 'string') {\n this._bodyText = body\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString()\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer)\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer])\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body)\n } else {\n this._bodyText = body = Object.prototype.toString.call(body)\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8')\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type)\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n }\n }\n }\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n }\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n var isConsumed = consumed(this)\n if (isConsumed) {\n return isConsumed\n }\n if (ArrayBuffer.isView(this._bodyArrayBuffer)) {\n return Promise.resolve(\n this._bodyArrayBuffer.buffer.slice(\n this._bodyArrayBuffer.byteOffset,\n this._bodyArrayBuffer.byteOffset + this._bodyArrayBuffer.byteLength\n )\n )\n } else {\n return Promise.resolve(this._bodyArrayBuffer)\n }\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n }\n }\n\n this.text = function() {\n var rejected = consumed(this)\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n }\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n }\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n }\n\n return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n if (!(this instanceof Request)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n\n options = options || {}\n var body = options.body\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url\n this.credentials = input.credentials\n if (!options.headers) {\n this.headers = new Headers(input.headers)\n }\n this.method = input.method\n this.mode = input.mode\n this.signal = input.signal\n if (!body && input._bodyInit != null) {\n body = input._bodyInit\n input.bodyUsed = true\n }\n } else {\n this.url = String(input)\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin'\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers)\n }\n this.method = normalizeMethod(options.method || this.method || 'GET')\n this.mode = options.mode || this.mode || null\n this.signal = options.signal || this.signal\n this.referrer = null\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body)\n\n if (this.method === 'GET' || this.method === 'HEAD') {\n if (options.cache === 'no-store' || options.cache === 'no-cache') {\n // Search for a '_' parameter in the query string\n var reParamSearch = /([?&])_=[^&]*/\n if (reParamSearch.test(this.url)) {\n // If it already exists then set the value with the current time\n this.url = this.url.replace(reParamSearch, '$1_=' + new Date().getTime())\n } else {\n // Otherwise add a new '_' parameter to the end with the current time\n var reQueryString = /\\?/\n this.url += (reQueryString.test(this.url) ? '&' : '?') + '_=' + new Date().getTime()\n }\n }\n }\n}\n\nRequest.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n var form = new FormData()\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=')\n var name = split.shift().replace(/\\+/g, ' ')\n var value = split.join('=').replace(/\\+/g, ' ')\n form.append(decodeURIComponent(name), decodeURIComponent(value))\n }\n })\n return form\n}\n\nfunction parseHeaders(rawHeaders) {\n var headers = new Headers()\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function(header) {\n return header.indexOf('\\n') === 0 ? header.substr(1, header.length) : header\n })\n .forEach(function(line) {\n var parts = line.split(':')\n var key = parts.shift().trim()\n if (key) {\n var value = parts.join(':').trim()\n headers.append(key, value)\n }\n })\n return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n if (!(this instanceof Response)) {\n throw new TypeError('Please use the \"new\" operator, this DOM object constructor cannot be called as a function.')\n }\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = options.status === undefined ? 200 : options.status\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = options.statusText === undefined ? '' : '' + options.statusText\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n}\n\nResponse.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = global.DOMException\ntry {\n new DOMException()\n} catch (err) {\n DOMException = function(message, name) {\n this.message = message\n this.name = name\n var error = Error(message)\n this.stack = error.stack\n }\n DOMException.prototype = Object.create(Error.prototype)\n DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n\n if (request.signal && request.signal.aborted) {\n return reject(new DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest()\n\n function abortXhr() {\n xhr.abort()\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n }\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n var body = 'response' in xhr ? xhr.response : xhr.responseText\n setTimeout(function() {\n resolve(new Response(body, options))\n }, 0)\n }\n\n xhr.onerror = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.ontimeout = function() {\n setTimeout(function() {\n reject(new TypeError('Network request failed'))\n }, 0)\n }\n\n xhr.onabort = function() {\n setTimeout(function() {\n reject(new DOMException('Aborted', 'AbortError'))\n }, 0)\n }\n\n function fixUrl(url) {\n try {\n return url === '' && global.location.href ? global.location.href : url\n } catch (e) {\n return url\n }\n }\n\n xhr.open(request.method, fixUrl(request.url), true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false\n }\n\n if ('responseType' in xhr) {\n if (support.blob) {\n xhr.responseType = 'blob'\n } else if (\n support.arrayBuffer &&\n request.headers.get('Content-Type') &&\n request.headers.get('Content-Type').indexOf('application/octet-stream') !== -1\n ) {\n xhr.responseType = 'arraybuffer'\n }\n }\n\n if (init && typeof init.headers === 'object' && !(init.headers instanceof Headers)) {\n Object.getOwnPropertyNames(init.headers).forEach(function(name) {\n xhr.setRequestHeader(name, normalizeValue(init.headers[name]))\n })\n } else {\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n }\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr)\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr)\n }\n }\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n}\n\nfetch.polyfill = true\n\nif (!global.fetch) {\n global.fetch = fetch\n global.Headers = Headers\n global.Request = Request\n global.Response = Response\n}\n","/**\n * @see https://davidwalsh.name/pubsub-javascript\n */\n\nconst topics = {};\n\nexport const events = Object.freeze({\n subscribe: function (topic, listener) {\n //create topic subscribers if needed\n const subscribers = topics[topic] || (topics[topic] = []);\n\n // Add the listener to queue\n subscribers.push(listener);\n\n // Provide handle back for removal of topic\n return () => {\n const index = (topics[topic] || []).indexOf(listener);\n if (index > -1) {\n delete topics[topic][index];\n }\n };\n },\n publish: function (topic, info) {\n // If the topic doesn't exist, or there's no listeners in queue, just leave\n if (!topics.hasOwnProperty(topic)) return;\n //fire event asynchronously\n setTimeout(() => {\n // Cycle through topics queue, fire event\n topics[topic].forEach((listener) => {\n if (typeof info === 'undefined') {\n listener();\n } else {\n listener(info);\n }\n });\n });\n }\n});","/**\n * This module encapsulates the externalization and translation of human-readable content rendered on the browser.\n *\n * Resource files are maintained by namespaces. Example: Common, Home, Search, etc. This provides more structure\n * to the content, reduces the chance for name contention, and allow for a smaller download than having a single\n * resource file will all value for the application.\n *\n * INITIALIZATION\n * This component self-initializes and loads resources from the 'common' namespace.\n *\n * PAGE OR COMPONENT INITIALIZATION\n * Each page or component ensures resources for its namespaces are loaded by calling contentService.load() passing\n * one or more namespaces needed. This component tracks namespaces already loaded, so a component using this component\n * only needs to be aware of its namespace requirements.\n *\n * Example: contentService.load('search', 'newsarchive')\n *\n * load() returns a promise that resolves when the content is ready. For performance reasons, you can call\n * load() without waiting for the promise to resolve, run one or more queries to get page data, then call\n * contentService.whenReady() which also returns a promise that resolves when the content is ready.\n *\n * Example:\n * contentService.load('search')\n * initialPageLoad.then((...) => {\n * contentService.whenReady().then() => {(render the page)}\n * })\n *\n * TRANSLATING DATA\n * Use either contentService.get() or the shorthand function _t(). Text returned is assumed to be already HTML\n * encoded. @see @_content.init for details on calling this function.\n *\n * Content Service uses i18next to implement the translation. But, in order to use resource files\n * that can also be used on the server, we use a limited set of i18next conventions.\n * - We do not use the context convention\n * - We do not pass JSON objects for interpolation. Instead, we use positional arguments similar\n * to .NET String.Format. So, the text in the resource file would read: \"People related to {0}\", not\n * \"People related to {{searchTerm}}\n * - As shown with the example above, we use single curly braces ({}) to identify interpolated content.\n * - We DO use the '_plural' conventions for choosing plural or singular test, but instead of passing\n * count: value, we treat the first numeric argument as count.\n */\nimport i18next from 'i18next';\nimport {\n runRequest\n} from './runRequest';\n\nconst COMMON_NS = 'common';\nconst GET_LOCALE_URL = '/Localization/getResource';\n\nconst backend = {\n type: 'backend',\n resourcesFound: 0,\n init: () => {\n /* noop for now. See http://i18next.com/docs/ownplugin/#backend for details */\n },\n read: (language, namespace, callback) => {\n // The server returns a single JSON for a namespace that will combine and resolve resource values for language-country,\n // language, and english backup. i18next will call multiple times as it is designed to do, but since the one resource\n // will have all the values we need, only allow one call.\n if (_requestedNamespaces.indexOf(namespace) === -1) {\n //capture namespace before request returns because i18Next sends multiple requests at once.\n _requestedNamespaces.push(namespace);\n runRequest(`${GET_LOCALE_URL}?preferredLang=${language}&resourceName=${namespace}`)\n .then((result) => {\n backend.resourcesFound++;\n callback(null, result);\n })\n .catch((err) => callback(null, false));\n } else {\n callback(null, {});\n }\n },\n create: (lng, ns, key, fallbackValue) => {\n //todo: strategy for missing key\n console.error('missingKey: ' + JSON.stringify({\n lng,\n ns,\n key,\n fallbackValue\n }));\n }\n};\n\nexport const init = () => {\n if (_i18Promise || _translator) {\n return Promise.reject(\"Initialize already called\")\n }\n\n return _i18Promise = new Promise((resolve, reject) => {\n const i18nOptions = {\n lng: document.documentElement.lang || 'en',\n fallbackLng: 'en',\n saveMissing: true,\n ns: COMMON_NS,\n defaultNS: COMMON_NS,\n fallbackNS: COMMON_NS,\n keySeparator: false,\n interpolation: { //configure to support our {0} interpolation standard\n prefix: '{',\n suffix: '}'\n }\n };\n\n i18next\n .use(backend)\n .init(i18nOptions, (err, t) => {\n if (err || !backend.resourcesFound) {\n reject(err || new Error(`Could not load resources for language ${i18nOptions.lng}`));\n } else {\n _translator = t;\n resolvePromise(resolve);\n }\n });\n });\n};\n\nconst _doLoad = (...namespaces) => {\n return new Promise((resolve, reject) => {\n const nsToLoad = namespaces.filter((ns) => _requestedNamespaces.indexOf(ns) === -1);\n if (nsToLoad.length) {\n const preLoadNsCount = _requestedNamespaces.length;\n i18next.loadNamespaces(nsToLoad, (err, t) => {\n if (err) {\n reject(err);\n } else {\n if (preLoadNsCount == 1 && _requestedNamespaces.length > 1) {\n // assume second namespace is for the page. Treat that as default namespace\n // (Not sure if that is best assumption or even necessary since we should\n // include namespace in the key value as a best practice)\n i18next.setDefaultNamespace(_requestedNamespaces[1]);\n }\n _translator = t;\n resolvePromise(resolve);\n }\n });\n } else {\n resolvePromise(resolve);\n }\n });\n};\n\nconst resolvePromise = (resolve) => {\n _i18Promise = null;\n resolve(_content);\n};\n\nlet _i18Promise;\nlet _translator;\nlet _requestedNamespaces = [];\n\nconst _content = {\n /**\n * Initializes content service with the given namespaces\n * FOR UNIT TESTING ONLY. Module self-initializes\n */\n init: init,\n\n /**\n * Returns a promise that resolves when the content service has loaded its resources. If init()\n * has not been called, initializes without any namespaces other than common\n * @return Promise\n */\n whenReady: () => {\n return _i18Promise || (_translator && Promise.resolve(_content)) || init();\n },\n\n /**\n * Loads namespace resources if they have not already been loaded\n * @param namespaces\n * @return {*} Prmoise tht resolves when namespace is loaded\n */\n load: (...namespaces) => {\n return _i18Promise = _i18Promise ?\n _i18Promise.then(() => _doLoad(...namespaces)) :\n _doLoad(...namespaces);\n },\n\n\n /**\n * Gets the content for the key.\n * Examples:\n *\n * BASIC:\n * \"keyA\": \"valueA\"\n * _t('common:keyA'); returns \"valueA\".\n * A note on namespace. This module uses the i18next convention of pre-pending namespace: in front of the\n * key. if a namespace is not provided, it will default to the first namespace passed to in and fallback to\n * common if not found. So their is no confusion, it is best to always include the namespace.\n *\n * A note on Object notation. While we do not do anything to prevent the i18next support for object notation,\n * (for example: _'t(\"someObject.someProperty\")), the resource file from the server will be flat. So, in that\n * send, object notation is not supported.\n *\n * INTERPOLATION:\n * \"greeting\" = \"Hello, {0} {1}\"\n * _t(\"common:greeting, \"John\", \"Smith\"); //returns \"Hello, John Smith\n * Replacement parameters will be HTML encoded. So...\n * _t(\"common:greeting, \"John & Mary\", \"Smith\"); //returns \"Hello, John & Mary Smith\"\n * Do not encode the values beforehand, otherwise the above would return \"Hello, John &amp; Mary Smith\"\n *\n * Plural\n * When determining whether to use the plural version of a text, the first integer is used passed is used.\n * When the number is not 1, appends \"_plural\" to the end of the key.\n * Example:\n * \"resultsFound_people\": \"One person found\"\n * \"resultsFound_people_plural\": \"{0} people found\"\n * _t(\"resultsFound_people\", 1}; //returns \"One person found\"\n * _t(\"resultsFound_people\", 3}; //returns \"3 people found\"\n * _t(\"resultsFound_people\", 0}; //returns \"0 people found\"\n *\n * NOTE: i18next offers more flexibility with plurality that is not supported by this module.\n *\n * @see http://i18next.com/docs/\n * @param key - The key identifier for the content\n * @param ...replacements - positional content to interpolate into text string. replacement[0]=>{0},replacement[1]=>{1},etc.\n */\n get: (key, ...replacements) => {\n // copy replacements as a new array. This will be the options for i18next.\n // Passing replacement values as positional items in an array alows us to use i18next\n // with the {0} format.\n const options = [].concat(replacements);\n\n // Assume the first integer object is the count for determining plurals\n for (let i = 0; i < options.length; i++) {\n if (Number.isInteger(options[i])) {\n options.count = options[i];\n break;\n }\n }\n\n return i18next.t(key, options);\n }\n};\n\nexport const contentService = _content;\n\n/**\n * Shorthand method to call @contentService.get\n * _t can be short for text or translate\n */\nexport const _t = (key, ...replacements) => _content.get(key, ...replacements);\n\n//istanbul ignore if\nif (typeof document !== 'undefined') {\n init();\n}","import 'whatwg-fetch';\nimport {\n events\n} from '../utilities/pubsub';\n\n/**\n * Runs the fetch request.\n * @param url\n * @param options\n * @returns {Promise|*|Promise.}\n */\nexport const runRequest = (url, options = {}) => {\n options.credentials = options.credentials || 'same-origin';\n options.headers = options.headers || {};\n //only set this for local requests...\n if (url.indexOf('http') !== 0) {\n options.headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n\n return fetch(url, options).then((response) => {\n if (response.ok) { //response.ok is true if status is in 200-299 range\n const contentLength = response.headers && response.headers.get('Content-Length');\n return contentLength === '0' ? null : response.json();\n }\n if (response.status === 400) {\n return response.json().then(function (data) {\n const error = data.message || response.statusText;\n return Promise.reject(new Error(`${error}`));\n });\n }\n\n if (response.status === 403) {\n return response.json().then(function (data) {\n return data;\n });\n }\n events.publish('apiErrorResponse', {\n url,\n options,\n status: response.status\n });\n return Promise.reject(new Error(`HTTP error status: ${response.status} - ${response.statusText}`));\n });\n};","export const PaidSearchParamKeys = {\n SOURCE: \"utm_source\",\n MEDIUM: \"utm_medium\",\n CAMPAIGN: \"utm_campaign\",\n CONTENT: \"utm_content\",\n TERM: \"utm_term\",\n TFN: \"tfn\",\n GCLID: \"gclid\"\n};\n\n","export const SearchEngines = [\n \"www.google.com\",\n \"www.google.ca\",\n \"duckduckgo.com\",\n \"www.bing.com\",\n \"ca.search.yahoo.com\",\n \"www.info.com\",\n \"www.ecosia.org\",\n];\n","export const DefaultParamValues = {\n utm_source: \"Default\",\n utm_medium: \"unknown\",\n utm_campaign: \"unknown\",\n utm_content: \"unknown\",\n utm_term: \"unknown\",\n tfn: \"8662749128\",\n};\n\nexport const getOrganicSearchParamValues = (searchEngine) => {\n return {\n utm_source: searchEngine,\n utm_medium: \"UnpaidDigital\",\n utm_campaign: \"Organic\",\n utm_content: \"NaturalSearch\",\n tfn: \"8442879118\",\n };\n};\n\nexport const getReferralParamValues = (referralDomain) => {\n return {\n utm_source: referralDomain,\n utm_medium: \"UnpaidDigital\",\n utm_campaign: \"Organic\",\n utm_content: \"Referral\",\n tfn: \"8662776832\",\n };\n};\n\nexport const DirectLoadParamValues = {\n utm_source: \"travelerscanada.ca\",\n utm_medium: \"UnpaidDigital\",\n utm_campaign: \"Organic\",\n utm_content: \"DirectLoad\",\n tfn: \"8662839210\",\n};\n","\nexport const TrafficTypes = { \n Natural: \"NaturalSearch\",\n Referral: \"Referral\",\n DirectLoad: \"DirectLoad\",\n PaidSearch: \"PaidSearch\"\n}\n\nexport const TrafficTypeKey = \"TrafficType\";","import { PaidSearchParamKeys } from \"../constants/paidSearchParams\";\nimport { SearchEngines } from \"../constants/searchEngines\";\nimport {\n DirectLoadParamValues,\n getOrganicSearchParamValues,\n getReferralParamValues,\n} from \"../constants/paramValues\";\nimport { TrafficTypes, TrafficTypeKey } from \"../constants/trafficTypes\";\n\nimport { FromBroker, UtmTerm } from \"../constants/adamAndKnightParams\";\n\nexport function storePaidSearchParams(queryString) {\n const caseSensitiveUrlSearchParams = new URLSearchParams(queryString);\n\n const urlSearchParams = new URLSearchParams();\n\n //convert all the query string parameters to lowercase\n for (const [name, value] of caseSensitiveUrlSearchParams) {\n urlSearchParams.append(name.toLowerCase(), value);\n }\n\n const paidSearchParams = Object.getOwnPropertyNames(PaidSearchParamKeys);\n\n let isPaidSearch = paidSearchParams.some((key) =>\n urlSearchParams.has(PaidSearchParamKeys[key])\n );\n\n const isFromBroker = urlSearchParams.get(FromBroker);\n const utm_term = urlSearchParams.get(UtmTerm);\n\n //if from Adams & Knight, don't consider as paid search\n if (\n isFromBroker != null &&\n isFromBroker.toLowerCase() == \"true\" &&\n utm_term != null\n ) {\n isPaidSearch = false;\n }\n\n if (isPaidSearch === true) {\n //store values to local storage\n paidSearchParams.forEach((paramName) => {\n const key = PaidSearchParamKeys[paramName];\n\n //if the param is present, save its value\n if (urlSearchParams.has(key)) {\n window.localStorage.setItem(key, urlSearchParams.get(key));\n } else {\n //if param is not present in query string, but key is in local storage (from a previous paid search) remove the item\n if (key in window.localStorage) {\n window.localStorage.removeItem(key);\n }\n }\n });\n\n window.localStorage.setItem(TrafficTypeKey, TrafficTypes.PaidSearch);\n } else {\n //check what was the previous traffic type\n const previousTrafficType = window.localStorage.getItem(TrafficTypeKey);\n\n //previous traffic was not paid search, so we can overwrite the values\n if (previousTrafficType != TrafficTypes.PaidSearch) {\n const currentTrafficType = getCurrentTrafficType();\n\n //save new params when current traffic is organic search, referral or when no previous traffic is stored and current traffic is direct load\n if (\n currentTrafficType == TrafficTypes.Referral ||\n currentTrafficType == TrafficTypes.Natural ||\n (previousTrafficType == null &&\n currentTrafficType == TrafficTypes.DirectLoad)\n ) {\n const newTrafficParams = getCurrentTrafficParams(currentTrafficType);\n\n const paramNames = Object.getOwnPropertyNames(newTrafficParams);\n\n paramNames.forEach((key) => {\n window.localStorage.setItem(key, newTrafficParams[key]);\n });\n\n window.localStorage.setItem(TrafficTypeKey, currentTrafficType);\n }\n }\n }\n}\n\nconst getCurrentTrafficType = () => {\n if (\n SearchEngines.some(\n (searchEngine) => getDomain(document.referrer) == searchEngine\n )\n ) {\n return TrafficTypes.Natural;\n } else if (document.referrer != \"\" && !document.referrer.includes(\".travelerscanada.ca\")) {\n return TrafficTypes.Referral;\n } else {\n return TrafficTypes.DirectLoad;\n }\n};\n\nconst getCurrentTrafficParams = (trafficType) => {\n switch (trafficType) {\n case TrafficTypes.Natural:\n return getOrganicSearchParamValues(document.referrer);\n\n case TrafficTypes.Referral:\n return getReferralParamValues(document.referrer);\n\n default:\n return DirectLoadParamValues;\n }\n};\n\nconst getDomain = (referrer) => {\n if (referrer == \"\") return \"\";\n\n const url = new URL(referrer);\n return url.hostname;\n};\n","export function handleLanguageToggle() {\n const headerToggleButton = document.getElementById(\"lang-toggle-btn\");\n const footerToggleButton = document.getElementById(\"lang-toggle-footer\");\n const mobileHeaderToggleButton = document.getElementsByClassName(\"languageA\")[0];\n const link = footerToggleButton.href;\n const sanitized_search = sanitizeQueryParams(location.search)\n\n var safe_url;\n \n if(sanitized_search) safe_url = `${link}?${sanitized_search}`\n else safe_url = link\n \n //desktop view for toggle button\n if (headerToggleButton != null){\n headerToggleButton.setAttribute(\"href\",safe_url);\n }\n\n if (footerToggleButton != null){\n footerToggleButton.setAttribute(\"href\",safe_url);\n } \n\n // //mobile view for toggle button\n if (mobileHeaderToggleButton != null){\n mobileHeaderToggleButton.setAttribute(\"href\",safe_url);\n }\n}\n\nfunction sanitizeQueryParams(str) {\n var sanitized_search = encodeURIComponent(str.substring(1))\n sanitized_search = sanitized_search.replaceAll(\"%3D\", '=')\n sanitized_search = sanitized_search.replaceAll(\"%26\", '&')\n sanitized_search = sanitized_search.replaceAll(\"%20\", ' ')\n sanitized_search = sanitized_search.replaceAll(\"%25\", '%')\n return sanitized_search;\n}\n","import $ from \"jQuery\";\nimport { _t } from \"../services/localizationService\";\nimport Trv from \"Trv\";\n\n$(document).ready(() => {\n $(\".btn-findbroker\").click(function () {\n //-------- Coremetrics variables --------------//\n const cmCat = \"TCOM-CLICKS\",\n cmElem = \"TCOM_FIND_BROKER_CLICK_SEARCH\";\n //------- .end Coremetrics variables ----------//\n const findBrokerForm = $(this).parent().parent();\n\n const zip = findBrokerForm.find(\".txtPostalCode\").val();\n\n const reg = /^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$/i;\n\n if (zip.match(reg)) {\n const baseUrl = findBrokerForm.attr(\"action\");\n const url = baseUrl + zip + \"/\";\n findBrokerForm.find(\".txtPostalCode\").val(\"\");\n setTimeout(function () {\n window.location = url;\n }, 0);\n } else {\n const captionError = $(this).parent().find(\".caption.error\");\n const errorMessage = _t(\"canada:Please provide a valid postal code.\");\n if ($(captionError).length < 1) {\n $(\n \"
\"\n ).appendTo(findBrokerForm.find(\".input-group\"));\n $(\".sticky-div-placeholder\").height($(\".sticky-div > .wrap\").outerHeight())\n findBrokerForm.find(\".input-group\").addClass(\"error\");\n findBrokerForm.find(\".txt-findagent\").val(\"\").focus();\n } else {\n $(captionError).text(errorMessage);\n }\n }\n return false;\n });\n\n $(window).on(\"resize\", function() {\n $(\".sticky-div-placeholder\")\n .height($(\".sticky-div > .wrap\").outerHeight());\n });\n \n //Accordion Click event functionality for Canada Dyanamic CTA\n $(\".sticky-div.sticky-ca\").each(function () {\n $(this)\n .not(\".find-an-agent\") // find a broker sticky cta has different markup & expected behavior so this will not work for it\n .find(\".wrap .expander\")\n .click(function () {\n $(this)\n .parent()\n .find(\".col.one>.form-get-quote, .col.two\")\n .toggleClass(\"hide-show\");\n $(\".retrieve-motorcycle-quote\").toggleClass(\"hide-show\");\n $(this)\n .toggleClass(\"icon-arrow-up icon-arrow-down\")\n .closest(\".sticky-div-placeholder\")\n .height($(\".sticky-div-wrapper\").outerHeight());\n\n $(this).parent().parent().addClass(\"clicked\");\n setTimeout(function () {\n $(\".sticky-div\").removeClass(\"clicked\");\n }, 50);\n });\n });\n\n //Scroll event of accordion for Canada Dynamic CTA\n $(window).on(\"scroll\", function () {\n $(\".sticky-div.sticky-ca\").each(function () {\n if (\n $(window).scrollTop() >= $(this).offset().top &&\n !$(this).hasClass(\"clicked\")\n ) {\n $(this)\n .parent()\n .find(\".col.one>.form-get-quote,.col.two\")\n .not(\".col.two.landlord\")\n .addClass(\"hide-show\");\n $(\".retrieve-motorcycle-quote\").addClass(\"hide-show\");\n $(this)\n .find(\".expander\")\n .addClass(\"icon-arrow-down\")\n .removeClass(\"icon-arrow-up\");\n $(\".sticky-div-placeholder\").height(\n $(this).find(\".sticky-div-wrapper\").outerHeight()\n );\n $(this)\n .closest(\".sticky-div-placeholder\")\n .height($(\".sticky-div-wrapper\").outerHeight());\n }\n });\n });\n\n});\n","\nexport const AUTO = \"AUTO\";\nexport const HOME = \"HOME\";\nexport const CONDO = \"CONDO\";\nexport const RENTER = \"RENTER\";","export const POLICY_TYPE_MAPPING = {\n \"HOME\": \"H\",\n \"CONDO\": \"C\",\n \"RENTER\": \"T\"\n}","export function getAndSetSessionValue(allParams, paramToCheckFor) {\n let paramToSet = null; \n if (allParams && allParams[paramToCheckFor]) {\n paramToSet = allParams[paramToCheckFor].toLowerCase();\n\n if (window.sessionStorage) {\n sessionStorage.setItem(paramToCheckFor, paramToSet);\n }\n } else if (\n window.sessionStorage &&\n sessionStorage.getItem(paramToCheckFor)\n ) {\n paramToSet = sessionStorage.getItem(paramToCheckFor);\n } \n return paramToSet;\n}\n","import $ from \"jQuery\";\nimport { _t } from \"../services/localizationService\";\nimport { PaidSearchParamKeys } from \"../constants/paidSearchParams\";\nimport { DefaultParamValues } from \"../constants/paramValues\";\nimport { AUTO, CONDO, HOME, RENTER } from \"../constants/productTypes\";\nimport { POLICY_TYPE_MAPPING } from \"../constants/policyTypeMapping\";\nimport { POSTAL_CODE, POLICY_TYPE } from \"../constants/quickQuoteParams\";\nimport { getAndSetSessionValue } from \"./session\";\nimport Trv from \"Trv\";\n\n//TODO: remove usage of ES5 namespaces. Not needed in ES6\nTrv.Transactions = Trv.Transactions || {};\nTrv.Transactions.GetAQuote = Trv.Transactions.GetAQuote || {};\n\nexport const _loadTransaction = () => {\n let pathParts = window.location.pathname.toLowerCase().split(\"/\");\n let currentPage = pathParts[pathParts.length - 1].toLowerCase();\n let autoPageName = \"auto\";\n let homeownersPageName = _t(\"canada:HomeownersPageName\");\n let condoPageName = _t(\"canada:CondoPageName\");\n let tenantsPageName = _t(\"canada:TenantsPageName\");\n\n let isAutoPage = autoPageName === currentPage;\n let isHomeownersPage = homeownersPageName === currentPage;\n let isCondoPage = condoPageName === currentPage;\n let isTenantsPage = tenantsPageName === currentPage;\n\n // collect params\n let params = document.location.search\n .replace(/(^\\?)/, \"\")\n .split(\"&\")\n .reduce(function (obj, pair) {\n let tuple = pair.split(\"=\");\n obj[tuple[0]] = tuple[1] || true;\n return obj;\n }, {});\n let fromBroker;\n let fromBrokerName = \"fromBroker\";\n let utmTerm;\n let utmTermName = \"utm_term\";\n let cta;\n let ctaName = \"cta\";\n let lptfn;\n let lptfnName = \"lp_tfn\";\n let $selfDirected = $(\".personalized-canada-cta\");\n let $findABrokerCTA = $(\".transaction-module.sticky-div.find-an-agent\");\n let $brokerDirected = $(\n \".broker-directed.sticky-div-placeholder:not(.personalized)\"\n );\n let $personalizedAgentDirected = $(\n \".broker-directed.personalized.sticky-div-placeholder\"\n );\n let personalizedAgentDirectedUrl = $personalizedAgentDirected.data(\"url\");\n let hostname = window.location.hostname;\n let domain = hostname.match(\n /^(?:.*?\\.)?([a-zA-Z0-9\\-_]{3,}\\.(?:\\w{2,8}|\\w{2,4}\\.\\w{2,4}))$/\n )[1];\n\n let $FindBrokercta = $(\".col.two.cta\");\n let $TFNQuote = $(\".retrieve-quote-css\");\n let $GetQuotecta = $(\n \".transaction-module.sticky-div.gaq.ca-sticky-cta .wrap\"\n );\n\n // ------------------- Logic for hiding Find a broker and Centering Get a quote ----------------------\n let isCaProductPage =\n isAutoPage || isHomeownersPage || isCondoPage || isTenantsPage;\n\n if (isCaProductPage) {\n $FindBrokercta.remove();\n $GetQuotecta.addClass(\"ca-product-wrapper\");\n //----------------------logic for hiding retrieve quote line from CTA based on lp_tfn value----------------------\n //convert all the query string parameters to lowercase\n let queryparams = {};\n for (const [key, value] of Object.entries(params)) {\n queryparams[key.toLowerCase()] = value;\n }\n\n lptfn = getAndSetSessionValue(queryparams, lptfnName);\n\n if (lptfn && lptfn === \"false\") {\n const retriveQuoteLine =\n document.getElementsByClassName(\"retrieve-quote-css\");\n if (retriveQuoteLine.length > 0) retriveQuoteLine[0].remove();\n }\n }\n else {\n $TFNQuote.remove();\n }\n\n // ------------------- Logic for displaying CTA for Different scenarios ----------------------\n\n fromBroker = getAndSetSessionValue(params, fromBrokerName);\n\n utmTerm = getAndSetSessionValue(params, utmTermName);\n\n cta = getAndSetSessionValue(params, ctaName);\n\n if (cta && cta === \"false\") {\n if ($selfDirected.length > 0) $selfDirected.remove();\n if ($findABrokerCTA.length > 0) $findABrokerCTA.remove();\n $brokerDirected.remove();\n $personalizedAgentDirected.remove();\n }\n\n //check for adam and knights for travelerscanada.ca\n else if (\n $personalizedAgentDirected.length > 0 &&\n utmTerm &&\n fromBroker === \"true\" &&\n domain == \"travelerscanada.ca\" &&\n personalizedAgentDirectedUrl\n ) {\n $.ajax({\n url: personalizedAgentDirectedUrl + \"/\" + utmTerm,\n async: false,\n })\n .done(function (data) {\n let innerHtml = $($.parseHTML($.trim(data))).html();\n $personalizedAgentDirected.html(innerHtml);\n $personalizedAgentDirected.data(\"url\", \"\");\n\n $selfDirected.remove();\n $brokerDirected.remove();\n\n $personalizedAgentDirected.show();\n })\n .fail(function () {\n if ($brokerDirected.length > 0 && domain == \"travelerscanada.ca\") {\n $selfDirected.remove();\n $personalizedAgentDirected.remove();\n\n $brokerDirected.show();\n }\n });\n }\n\n //check from broker for travelerscanada.ca\n else if (\n $brokerDirected.length > 0 &&\n fromBroker === \"true\" &&\n domain == \"travelerscanada.ca\"\n ) {\n $selfDirected.remove();\n $personalizedAgentDirected.remove();\n\n $brokerDirected.show();\n }\n\n //Default self directed should hide everything else\n else if ($selfDirected.length > 0) {\n $brokerDirected.remove();\n $personalizedAgentDirected.remove();\n\n $selfDirected.show();\n }\n\n // ----- sticky promo/cta/div For Canada Pages Only ----- //\n // ----- Here We seperated the clingify for Travelerscanada for specific reason to resolve the misfunctioning of CTA -> Clingify functionality for travelerscanada should only be invoked only while the catransaction loaded, inorder to run the commands above this function first before clingify----\n if (domain == \"travelerscanada.ca\") {\n $(\".sticky-div\").each(function () {\n $(this).clingify({\n breakpointHeight: 400,\n });\n });\n }\n\n //stciky functionality for adams & knight - canada\n if ($(\".broker-directed.personalized\").length) {\n let cta_top = $(\".broker-directed.personalized\").offset().top;\n $(window).on(\"scroll\", function () {\n $(\".broker-directed.personalized\").each(function () {\n if ($(window).scrollTop() >= cta_top) {\n $(\".broker-directed.personalized\").addClass(\"ca-sticky-div-locked\");\n } else {\n $(\".broker-directed.personalized\").removeClass(\n \"ca-sticky-div-locked\"\n );\n }\n });\n });\n }\n};\n\nfunction isOntarioPostalCode(strPostal) {\n let postalCodePattern = new RegExp(Trv.Config.ontarioPostalCodePattern);\n let match = strPostal.match(postalCodePattern);\n return match && strPostal === match[0];\n}\n\nTrv.Transactions.GetAQuote.submit = function (ctaForm) {\n let form = $(ctaForm);\n let postalcode = form.find(\"input[id=quote-postal-code]\");\n let postalCodeVal = postalcode.val();\n let select = form.find(\"select\");\n let invalidPostalCode = _t(\"canada:Please provide a valid postal code.\");\n let productType = select.val().toUpperCase();\n const reg = /^[ABCEGHJKLMNPRSTVXY]{1}\\d{1}[A-Z]{1} *\\d{1}[A-Z]{1}\\d{1}$/i;\n\n let $elem = $(\".self-directed #trans-select-get-quote\");\n if ($elem.length) {\n let url = $elem.find(\":selected\").data(\"url\");\n Trv.Validate.clearErrorMessage(postalcode);\n Trv.Validate.clearErrorMessage(select);\n\n const FIND_A_BROKER_URL = _t(\"canada:/find-a-broker/\");\n\n if (!postalCodeVal.match(reg)) {\n Trv.Validate.displayErrorMessage(postalcode, invalidPostalCode);\n return false;\n }\n\n //if not Ontario Postal code, open find broker page\n if (!isOntarioPostalCode(postalCodeVal)) {\n setTimeout(function () {\n Trv.Common.openExternalUrl(\n FIND_A_BROKER_URL +\n \"?zipCode=\" +\n postalCodeVal +\n \"&isNonOntario=\" +\n true\n );\n }, 200);\n } else {\n switch (productType) {\n case AUTO:\n case HOME:\n case RENTER:\n case CONDO:\n setTimeout(() => {\n Trv.Common.openExternalUrl(\n getQuickQuoteURL(url, productType, postalCodeVal)\n );\n }, 200);\n break;\n }\n }\n }\n};\n\nexport function getQuickQuoteURL(baseUrl, productType, postalCode) {\n let queryParams = {};\n\n const paidSearchParams = Object.getOwnPropertyNames(PaidSearchParamKeys);\n\n paidSearchParams.forEach((paramName) => {\n const key = PaidSearchParamKeys[paramName];\n\n //if the param is present in local storage, get its value\n const value = window.localStorage.getItem(key);\n if (value != null) {\n queryParams[key] = value;\n }\n });\n\n //if there isn't any param stored in the local storage, then we use default values\n if (Object.getOwnPropertyNames(queryParams).length === 0) {\n queryParams = DefaultParamValues;\n }\n const productTypeValue = POLICY_TYPE_MAPPING[productType];\n\n if (productTypeValue != null) {\n queryParams[POLICY_TYPE] = productTypeValue;\n }\n\n queryParams[POSTAL_CODE] = postalCode;\n\n const params = new URLSearchParams(queryParams);\n\n return `${baseUrl}?${params.toString()}`;\n}\n","export const FromBroker = \"frombroker\";\nexport const UtmTerm = \"utm_term\";","import { contentService, _t } from \"./services/localizationService\";\n\nimport {storePaidSearchParams} from \"./transactions/paidSearch\";\nimport \"./transactions/findabroker\";\nimport \"./components/header\";\nimport {_loadTransaction} from \"./transactions/catransaction\";\nimport {_buildTfnNumber} from \"./transactions/buildTfnNumber\";\nimport { handleLanguageToggle } from \"./components/header\";\n\nstorePaidSearchParams(window.location.search);\n\nconst whenDocumentReady = (callback) => {\n //no way to unit test readyState loading for now\n /* istanbul ignore if */\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", callback);\n } else {\n callback();\n }\n};\n\nexport const start = () => {\n if (typeof document !== \"undefined\") {\n whenDocumentReady(() => {\n handleLanguageToggle();\n contentService.whenReady().then((response) => {\n console.log(\"ready\"); \n _loadTransaction();\n _buildTfnNumber(); \n });\n });\n }\n};\n\nexport const t = _t;\n\nexport const load = contentService.load;\n\nexport const whenReady = contentService.whenReady;","// ------------------- Logic to set TFN number for CTA from local storage ----------------------\nexport function _buildTfnNumber() {\n if (localStorage === null) { return; }\n\n let tfn = localStorage.getItem('tfn');\n if (tfn === null || tfn === 'null') { return; }\n\n let phoneParts = tfn.match(/^(1|)?(\\d{3})(\\d{3})(\\d{4})$/);\n if (!phoneParts) { return; }\n\n let intlCode = (phoneParts[1] ? '.' : '');\n let formattedTfn = [phoneParts[1], intlCode, phoneParts[2], '.', phoneParts[3], '.', phoneParts[4]].join('');\n let phoneList = document.getElementsByClassName(\"phone-number type1\");\n for (let i = 0; i < phoneList.length; i++) {\n phoneList[0].href = 'tel:' + tfn;\n phoneList[0].text = formattedTfn;\n }\n}"],"sourceRoot":""}