{"version":3,"sources":["webpack:///webpack/bootstrap 5ed8ee376dc52498f307","webpack:///./node_modules/decode-uri-component/index.js","webpack:///./node_modules/detect-hover/lib/index.js","webpack:///./node_modules/detect-it/lib/index.js","webpack:///./node_modules/detect-passive-events/lib/index.js","webpack:///./node_modules/detect-pointer/lib/index.js","webpack:///./node_modules/detect-touch-events/lib/index.js","webpack:///./node_modules/lodash/_Symbol.js","webpack:///./node_modules/lodash/_arrayEach.js","webpack:///./node_modules/lodash/_arrayLikeKeys.js","webpack:///./node_modules/lodash/_baseEach.js","webpack:///./node_modules/lodash/_baseFor.js","webpack:///./node_modules/lodash/_baseForOwn.js","webpack:///./node_modules/lodash/_baseGetTag.js","webpack:///./node_modules/lodash/_baseIsArguments.js","webpack:///./node_modules/lodash/_baseIsTypedArray.js","webpack:///./node_modules/lodash/_baseKeys.js","webpack:///./node_modules/lodash/_baseTimes.js","webpack:///./node_modules/lodash/_baseUnary.js","webpack:///./node_modules/lodash/_castFunction.js","webpack:///./node_modules/lodash/_createBaseEach.js","webpack:///./node_modules/lodash/_createBaseFor.js","webpack:///./node_modules/lodash/_freeGlobal.js","webpack:///./node_modules/lodash/_getRawTag.js","webpack:///./node_modules/lodash/_isIndex.js","webpack:///./node_modules/lodash/_isPrototype.js","webpack:///./node_modules/lodash/_nativeKeys.js","webpack:///./node_modules/lodash/_nodeUtil.js","webpack:///./node_modules/lodash/_objectToString.js","webpack:///./node_modules/lodash/_overArg.js","webpack:///./node_modules/lodash/_root.js","webpack:///./node_modules/lodash/debounce.js","webpack:///./node_modules/lodash/forEach.js","webpack:///./node_modules/lodash/identity.js","webpack:///./node_modules/lodash/isArguments.js","webpack:///./node_modules/lodash/isArray.js","webpack:///./node_modules/lodash/isArrayLike.js","webpack:///./node_modules/lodash/isBuffer.js","webpack:///./node_modules/lodash/isFunction.js","webpack:///./node_modules/lodash/isLength.js","webpack:///./node_modules/lodash/isObject.js","webpack:///./node_modules/lodash/isObjectLike.js","webpack:///./node_modules/lodash/isSymbol.js","webpack:///./node_modules/lodash/isTypedArray.js","webpack:///./node_modules/lodash/keys.js","webpack:///./node_modules/lodash/now.js","webpack:///./node_modules/lodash/stubFalse.js","webpack:///./node_modules/lodash/throttle.js","webpack:///./node_modules/lodash/toNumber.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/query-string/index.js","webpack:///./node_modules/strict-uri-encode/index.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./node_modules/whatwg-fetch/fetch.js","webpack:///./src/js/app.js","webpack:///./src/js/modules/accordion.js","webpack:///./src/js/modules/analytics.js","webpack:///./src/js/modules/calculator.js","webpack:///./src/js/modules/cookiepolicy.js","webpack:///./src/js/modules/custom-select-controller.js","webpack:///./src/js/modules/custom-select.js","webpack:///./src/js/modules/image-loader.js","webpack:///./src/js/modules/navigation.js","webpack:///./src/js/modules/search.js","webpack:///./src/js/modules/share.js","webpack:///./src/js/modules/tab.js","webpack:///./src/js/modules/tooltip-controller.js","webpack:///./src/js/modules/tooltip.js","webpack:///./src/js/modules/video.js","webpack:///./src/js/modules/wizard-logic.js","webpack:///./src/js/utils/camelcase.js","webpack:///./src/js/utils/cookie-handling.js","webpack:///./src/js/utils/develop.js","webpack:///./src/js/utils/device-properties.js","webpack:///./src/js/utils/helper.js","webpack:///./src/js/utils/live-event-binding.js","webpack:///./src/js/utils/object-fit.js","webpack:///./src/js/utils/request-timeout.js","webpack:///./src/js/utils/svg-sprite-loader.js","webpack:///./src/js/utils/within-viewport.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","singleMatcher","RegExp","multiMatcher","decodeComponents","components","split","decodeURIComponent","join","err","length","left","slice","right","Array","concat","decode","input","tokens","match","encodedURI","TypeError","replace","replaceMap","%FE%FF","%FF%FE","exec","result","entries","keys","key","customDecodeURIComponent","value","detectHover","update","window","matchMedia","hover","matches","none","anyHover","anyNone","default","_detectHover2","_interopRequireDefault","_detectPointer2","_detectTouchEvents2","_detectPassiveEvents2","obj","detectIt","state","detectPointer","detectTouchEvents","detectPassiveEvents","updateOnlyOwnProperties","hasTouch","anyFine","passiveEvents","hasSupport","deviceType","filter","every","navigator","test","userAgent","toLowerCase","hasMouse","primaryInput","parseInt","addEventListener","passive","options","noop","removeEventListener","fine","coarse","anyCoarse","browserSupportsApi","Boolean","TouchEvent","Symbol","array","iteratee","index","baseTimes","isArguments","isArray","isBuffer","isIndex","isTypedArray","inherited","isArr","isArg","isBuff","isType","skipIndexes","String","push","baseForOwn","baseEach","createBaseEach","baseFor","createBaseFor","getRawTag","objectToString","nullTag","undefinedTag","symToStringTag","toStringTag","undefined","baseGetTag","isObjectLike","argsTag","isLength","typedArrayTags","isPrototype","nativeKeys","func","identity","isArrayLike","eachFunc","fromRight","collection","iterable","keysFunc","props","global","freeGlobal","objectProto","nativeObjectToString","toString","isOwn","tag","unmasked","e","MAX_SAFE_INTEGER","reIsUint","Ctor","constructor","overArg","freeExports","nodeType","freeModule","freeProcess","process","nodeUtil","binding","transform","arg","freeSelf","self","root","Function","isObject","now","toNumber","FUNC_ERROR_TEXT","nativeMax","Math","max","nativeMin","min","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","invokeFunc","time","args","thisArg","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","debounced","isInvoking","arguments","this","leadingEdge","cancel","clearTimeout","flush","arrayEach","castFunction","baseIsArguments","propertyIsEnumerable","isFunction","stubFalse","Buffer","asyncTag","funcTag","genTag","proxyTag","type","symbolTag","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","Date","debounce","isSymbol","NAN","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","other","valueOf","isBinary","getOwnPropertySymbols","propIsEnumerable","assign","test1","getOwnPropertyNames","test2","fromCharCode","map","test3","forEach","letter","shouldUseNative","target","source","from","symbols","to","val","toObject","strictUriEncode","objectAssign","decodeComponent","encode","opts","strict","encodeURIComponent","extract","str","queryStart","indexOf","parse","formatter","arrayFormat","accumulator","parserForArrayFormat","ret","create","trim","param","parts","shift","sort","reduce","keysSorter","a","b","Number","stringify","encoderForArrayFormat","val2","x","charCodeAt","toUpperCase","g","eval","webpackPolyfill","deprecate","paths","children","fetch","support","searchParams","blob","Blob","formData","arrayBuffer","viewClasses","isDataView","DataView","isPrototypeOf","isArrayBufferView","ArrayBuffer","isView","Headers","append","normalizeName","normalizeValue","oldValue","has","set","callback","items","iteratorFor","values","iterator","methods","Request","clone","body","_bodyInit","Body","Response","status","statusText","headers","url","error","response","redirectStatuses","redirect","RangeError","location","init","Promise","resolve","reject","request","xhr","XMLHttpRequest","onload","rawHeaders","getAllResponseHeaders","line","responseURL","responseText","onerror","ontimeout","open","method","credentials","withCredentials","responseType","setRequestHeader","send","polyfill","next","done","header","consumed","bodyUsed","fileReaderReady","reader","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","bufferClone","buf","view","Uint8Array","byteLength","buffer","_initBody","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","Error","rejected","then","text","readAsText","chars","readArrayBufferAsText","json","JSON","upcased","mode","referrer","form","bytes","bodyInit","ok","__webpack_exports__","__WEBPACK_IMPORTED_MODULE_0__utils_helper__","__WEBPACK_IMPORTED_MODULE_1__utils_cookie_handling__","__WEBPACK_IMPORTED_MODULE_2__modules_search__","__WEBPACK_IMPORTED_MODULE_3__modules_share__","__WEBPACK_IMPORTED_MODULE_4__modules_navigation__","__WEBPACK_IMPORTED_MODULE_5__modules_calculator__","__WEBPACK_IMPORTED_MODULE_6__modules_accordion__","__WEBPACK_IMPORTED_MODULE_7__modules_custom_select_controller__","__WEBPACK_IMPORTED_MODULE_8__modules_wizard_logic__","__WEBPACK_IMPORTED_MODULE_9__modules_tooltip_controller__","__WEBPACK_IMPORTED_MODULE_10__modules_tab__","__WEBPACK_IMPORTED_MODULE_11__modules_image_loader__","__WEBPACK_IMPORTED_MODULE_12__modules_analytics__","__WEBPACK_IMPORTED_MODULE_13__modules_video__","__WEBPACK_IMPORTED_MODULE_14__modules_cookiepolicy__","OPT_COOKIE","CP_COOKIE","getCurrentPage","document","getAttribute","helper","customSelectController","navigation","analytics","imageLoader","accordion","search","tooltipController","share","cookiePolicy","calculatorBlock","querySelector","cookiePolicyBanner","calculator","cookieHandling","checkCookie","informationBlock","classList","remove","removeChild","wizardLogic","tab","video","__WEBPACK_IMPORTED_MODULE_0_lodash_forEach__","__WEBPACK_IMPORTED_MODULE_0_lodash_forEach___default","COLLAPSED_CLASS","onClickBind","toggleAccordion","bind","onKeyUpBind","cancelKeyup","initBindings","initDOMElements","accordionWrapper","querySelectorAll","accordionButtons","addBindings","element","contains","id","content","setContentAccessibility","isActive","link","removeAttribute","setAttribute","destroyBindings","keyCode","preventDefault","currentTarget","buttonId","isCollapsed","add","style","height","scrollHeight","__WEBPACK_IMPORTED_MODULE_0__utils_live_event_binding__","__WEBPACK_IMPORTED_MODULE_1__utils_request_timeout__","LOCAL_TEST","ENV","hostname","trackEvent","eventObject","event_category","eventCategory","event_action","eventAction","event_content","eventContent","page_name","pageName","page_url","eventUri","pathname","getUriForEvents","event_other","eventOther","utag","account","profile","utagSyncURI","utagURI","pageUrl","protocol","host","rawUtagData","page_channel","site_domain","site_region","site_subregion","site_country","site_entity","site_brand","page_language","page_security_level","page_business_line","page_customer_group","site_type","ib_type","page_type","requestTimeout","loadUtagSync","initStaticPageData","initDynamicPageData","loadUtag","handleUtagSyncErr","createElement","src","async","getElementsByTagName","parentNode","insertBefore","successCallback","errorCallback","script","head","appendChild","appendScript","utag_data","data","innerHTML","liveBinding","el","getUrlForTealium","urlChunks","__WEBPACK_IMPORTED_MODULE_0_lodash_throttle__","__WEBPACK_IMPORTED_MODULE_0_lodash_throttle___default","__WEBPACK_IMPORTED_MODULE_1_detect_it__","__WEBPACK_IMPORTED_MODULE_1_detect_it___default","ENABLED_KEYS","SALARY_LIMIT","CONTRIBUTION_CAP","MAX_WORKING_HOURS","isInputVisible","isDragActive","currentX","dragEndX","actualWorkHours","inFocus","parseInput","salaryLimit","capLimit","maxWorkHours","formattedSalaryLimit","toFixed","formattedCapLimit","hsbcContribution","hsbcContributionMod","hsbcContributionLimited","hsbcContributionText","hsbcMatch","contributionValue","calculatorSlider","updateSlider","calculatorMax","sliderWidth","sliderValue","calculatorShowLabelText","calculatorHideLabelText","calculatorYourContributionInput","calculatorWorkingHoursInput","calculatorHide","calculatorHsbcContributionVal","calculatorHsbcContributionResult","calculatorYourContributionResult","calculatorYourContributionValue","calculatorHsbcMatchValue","calculatorHsbcMatchResult","calculatorOverallPercentage","calculatorOverallResult","calculatorHideLabel","offsetWidth","calculatorBullet","calculatorBar","calculatorAxis","updateInput","toggleMask","evaluateKeyEvent","salaryValue","doCalculation","rect","getBoundingClientRect","posX","pageX","stopPropagation","onStart","capture","onEnd","onMove","throttle","cursorStep","event","inputName","shiftKey","includes","activeElement","currentPosition","step","dragStartX","clientX","touches","handleDrag","charAt","readOnly","textContent","repeat","parseFloat","contributedSalary","hsbcContributionTxt","hsbcContributionResult","hsbcContributionDiff","hsbcMatchResult","overallResult","round","formattedResult","distance","percentageX","xPos","labelPercentage","stylePercentage","width","number","lastTwoDigit","floor","__WEBPACK_IMPORTED_MODULE_0__utils_cookie_handling__","closeButton","closeCookiePolicy","createCookie","__WEBPACK_IMPORTED_MODULE_1__custom_select__","customSelects","initCustomSelects","elem","select","CustomSelect","getSelectByName","__WEBPACK_IMPORTED_MODULE_1_lodash_debounce__","__WEBPACK_IMPORTED_MODULE_1_lodash_debounce___default","__WEBPACK_IMPORTED_MODULE_2_detect_it__","__WEBPACK_IMPORTED_MODULE_2_detect_it___default","ACTIVE_CLASS","ACTIVATE_KEYCODES","DEACTIVATE_KEYCODES","SELECT_KEYCODES","NAVIGATION_KEYCODES","ITEM_HEIGHT","isIEorEdge","nodeName","isSelectActive","selectedIndex","navigateIndex","dropDownDirection","checkSpace","selected","nativeSelect","toggleOptions","openOptions","closeOptions","resetOptions","selectOption","navigateOptions","relatedTarget","updateSelectFromNative","item","option","updateSelected","innerText","changeCallback","listHeight","selectOffsetY","top","scrollY","innerHeight","fixIEOptions","display","newIndex","resetSelection","onlyHover","customLabel","label","setChangeCallback","__WEBPACK_IMPORTED_MODULE_1_lodash_throttle__","__WEBPACK_IMPORTED_MODULE_1_lodash_throttle___default","__WEBPACK_IMPORTED_MODULE_3__utils_device_properties__","__WEBPACK_IMPORTED_MODULE_4__utils_within_viewport__","URL","TOKEN","TOKEN_MODE","RANGES","isIE","devicePixelRatio","deviceProperties","pixelRatio","screenWidth","activeXHRs","checkAndLoad","innerWidth","imgSrc","WithinViewport","container","sides","bottom","isWithin","updateImage","viewportHandler","imageSrc","hasAttribute","loadImage","img","Image","onreadystatechange","readyState","DONE","createObjectURL","getXHRBySrc","tagName","clientWidth","getClosestSize","updatedImageSrc","catch","refreshImage","originalSize","selectedSize","range","OPEN_DROPDOWN_CLASS","isMobileMenuActive","setMobilmenuFocus","mobileToggle","advisorLink","dropdownMenuContainer","desktopMenuButtons","dropdownMenu","dropdownMenuExpander","previousElementSibling","dropdownUrl","setDropdownAria","allMenuButtons","focus","dropDownActive","hideDropdown","bindTabletDropdown","tabletDropdown","toggleMobileMenu","logo","nextElementSibling","showDropdown","stateObj","aria","tabindex","initialGlossaryContent","searchForm","searchSection","searchAriaResult","searchField","resetButton","rows","noResultSection","searchText","getContent","blur","fieldValue","searchInArray","resetList","setFilledStatus","clearSearch","glossaryContent","updateList","list","markup","timeoutTid","shareButton","copyButton","toggleShare","copyToClipboard","tempElement","href","execCommand","__WEBPACK_IMPORTED_MODULE_2_whatwg_fetch__","__WEBPACK_IMPORTED_MODULE_3__custom_select_controller__","__WEBPACK_IMPORTED_MODULE_4__accordion__","__WEBPACK_IMPORTED_MODULE_5__video__","__WEBPACK_IMPORTED_MODULE_6__image_loader__","isLoading","activeTab","tabSection","tabButtons","tabContent","setActiveTab","bindPagers","pager","fromHistory","button","all","fetchTabContent","history","pushState","title","updateTabButton","callTealiumView","reason","tabUrl","checkStatus","responseHtml","parseAndReplaceContent","html","pieces","currentTab","selectedTab","__WEBPACK_IMPORTED_MODULE_1__tooltip__","tooltips","initTooltips","tooltip","Tooltip","closeAllTooltips","close","__WEBPACK_IMPORTED_MODULE_0_whatwg_fetch__","__WEBPACK_IMPORTED_MODULE_1_query_string__","__WEBPACK_IMPORTED_MODULE_1_query_string___default","__WEBPACK_IMPORTED_MODULE_2_lodash_throttle__","__WEBPACK_IMPORTED_MODULE_2_lodash_throttle___default","__WEBPACK_IMPORTED_MODULE_3_detect_it__","__WEBPACK_IMPORTED_MODULE_3_detect_it___default","__WEBPACK_IMPORTED_MODULE_4__tooltip_controller__","APIHOST","isTooltipActive","tooltipDirection","contentLoaded","wrapper","keycode","loadTooltip","doNotOpen","Accept","Content-Type","queryString","IsSuccess","Result","Text","showTooltip","setMobileFocus","wrapperHeight","offsetHeight","boundingRectangle","wrapperOffsetY","correctionX","abs","__WEBPACK_IMPORTED_MODULE_1__analytics__","currentVideo","hsbcPlayer","videojs","isOverlayActive","activatedVideoId","bindPlayOverlayVideo","playOverlayVideo","bindCloseOverlay","closeOverlay","bindButtonPress","buttonPress","bindPlayButtonPress","playButtonPress","playButtons","videoContainer","videoOverlay","overlayCloseButton","parseVideoInfos","on","trackVideoEvent","currentTime","duration","targetVideoId","catalog","getVideo","load","play","videoId","imgWrapper","imgElement","poster","newImg","reset","sourceItem","action","__WEBPACK_IMPORTED_MODULE_1__custom_select_controller__","__WEBPACK_IMPORTED_MODULE_2__utils_cookie_handling__","__WEBPACK_IMPORTED_MODULE_3__utils_object_fit__","__WEBPACK_IMPORTED_MODULE_4__utils_camelcase__","__WEBPACK_IMPORTED_MODULE_5__analytics__","PRE_JOINER","ACTIVE_HYBRID","DEFERRED_HYBRID","ACTIVE_DC","DEFERRED_DC","DEFERRED_DB","PENSIONER","currentStep","choice","optOut","currentState","getInitialState","wizardDropdowns","wizard","setState","eraseCookie","endStep","cta","optOutBlock","checkbox","wizardData","cookieName","defaultLabel","onChange","checked","setIdAndUrl","wizardSelect","camelCase","resetSelects","resetState","resetOptOut","objectFit","personType","started","joinedV1","joinedV2","leaving","customSelect","hideEndStep","hideSelect","showSelect","setEndState","showOptOut","setEndStepInfo","showEndStep","profileInfo","getProfileInfo","setLabelInfo","WizardText","setCTA","WizardButtonTitle","hideOptOut","ID","Url","Id","getProfileByName","$1","days","date","expires","setTime","getTime","toUTCString","cookie","getCookie","start","end","decodeURI","substring","__WEBPACK_IMPORTED_MODULE_0_detect_it__","__WEBPACK_IMPORTED_MODULE_0_detect_it___default","develop","toggleDebug","which","toggle","listenersAdded","w","documentElement","W","H","clientHeight","updateProperties","connection","scrollbarWidth","scrollDiv","measureScrollbar","initDeviceProperties","getDeviceProperties","__WEBPACK_IMPORTED_MODULE_2__object_fit__","__WEBPACK_IMPORTED_MODULE_3__develop__","__WEBPACK_IMPORTED_MODULE_4__svg_sprite_loader__","DEBUG_HOSTS","scrollTimerId","inited","loadSvgSprite","onScrollBind","onScroll","initScrollPerformance","disableHover","enableHover","getParentNode","selector","elements","hasSelector","parentElement","Node","ELEMENT_NODE","selectorMatches","Element","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","lightenDarkenColor","col","amt","usePound","num","r","isLightColor","colorToHex","color","substr","digits","red","green","rgb","toArray","nodeList","res","eventType","selectorException","nodeListExceptions","matchesException","media","mediaType","complete","checkParentContainer","styles","getComputedStyle","position","getPropertyValue","overflow","className","checkMediaProperties","constraints","max-width","max-height","min-width","min-height","margin-top","margin-right","margin-bottom","margin-left","setPosition","axis","objectPosition","side","fit","dataset","marginTop","marginLeft","fn","delay","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","mozCancelRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","handle","loop","httpRequest","sprite","svgElement","addSpriteToDOM","metadata","config","settings","isContainerTheWindow","elemBoundingRect","containerBoundingRect","scrollBarWidths","containerScrollTop","scrollTop","containerScrollLeft","scrollLeft","sideNamesPattern","isWithinTop","isWithinBottom","isWithinLeft","isWithinRight","containerHeight","isWithinAll"],"mappings":"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","file":"app.bundle.min.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, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 5ed8ee376dc52498f307","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/decode-uri-component/index.js\n// module id = ./node_modules/decode-uri-component/index.js\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar detectHover = {\n update: function update() {\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n detectHover.hover = window.matchMedia('(hover: hover)').matches;\n detectHover.none = window.matchMedia('(hover: none)').matches || window.matchMedia('(hover: on-demand)').matches;\n detectHover.anyHover = window.matchMedia('(any-hover: hover)').matches;\n detectHover.anyNone = window.matchMedia('(any-hover: none)').matches || window.matchMedia('(any-hover: on-demand)').matches;\n }\n }\n};\n\ndetectHover.update();\nexports.default = detectHover;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/detect-hover/lib/index.js\n// module id = ./node_modules/detect-hover/lib/index.js\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _detectHover = require('detect-hover');\n\nvar _detectHover2 = _interopRequireDefault(_detectHover);\n\nvar _detectPointer = require('detect-pointer');\n\nvar _detectPointer2 = _interopRequireDefault(_detectPointer);\n\nvar _detectTouchEvents = require('detect-touch-events');\n\nvar _detectTouchEvents2 = _interopRequireDefault(_detectTouchEvents);\n\nvar _detectPassiveEvents = require('detect-passive-events');\n\nvar _detectPassiveEvents2 = _interopRequireDefault(_detectPassiveEvents);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/*\n * detectIt object structure\n * const detectIt = {\n * deviceType: 'mouseOnly' / 'touchOnly' / 'hybrid',\n * passiveEvents: boolean,\n * hasTouch: boolean,\n * hasMouse: boolean,\n * maxTouchPoints: number,\n * primaryHover: 'hover' / 'none',\n * primaryPointer: 'fine' / 'coarse' / 'none',\n * state: {\n * detectHover,\n * detectPointer,\n * detectTouchEvents,\n * detectPassiveEvents,\n * },\n * update() {...},\n * }\n */\n\nfunction determineDeviceType(hasTouch, anyHover, anyFine, state) {\n // A hybrid device is one that both hasTouch and any input device can hover\n // or has a fine pointer.\n if (hasTouch && (anyHover || anyFine)) return 'hybrid';\n\n // workaround for browsers that have the touch events api,\n // and have implemented Level 4 media queries but not the\n // hover and pointer media queries, so the tests are all false (notable Firefox)\n // if it hasTouch, no pointer and hover support, and on an android assume it's touchOnly\n // if it hasTouch, no pointer and hover support, and not on an android assume it's a hybrid\n if (hasTouch && Object.keys(state.detectHover).filter(function (key) {\n return key !== 'update';\n }).every(function (key) {\n return state.detectHover[key] === false;\n }) && Object.keys(state.detectPointer).filter(function (key) {\n return key !== 'update';\n }).every(function (key) {\n return state.detectPointer[key] === false;\n })) {\n if (window.navigator && /android/.test(window.navigator.userAgent.toLowerCase())) {\n return 'touchOnly';\n }\n return 'hybrid';\n }\n\n // In almost all cases a device that doesn’t support touch will have a mouse,\n // but there may be rare exceptions. Note that it doesn’t work to do additional tests\n // based on hover and pointer media queries as older browsers don’t support these.\n // Essentially, 'mouseOnly' is the default.\n return hasTouch ? 'touchOnly' : 'mouseOnly';\n}\n\nvar detectIt = {\n state: {\n detectHover: _detectHover2.default,\n detectPointer: _detectPointer2.default,\n detectTouchEvents: _detectTouchEvents2.default,\n detectPassiveEvents: _detectPassiveEvents2.default\n },\n update: function update() {\n detectIt.state.detectHover.update();\n detectIt.state.detectPointer.update();\n detectIt.state.detectTouchEvents.update();\n detectIt.state.detectPassiveEvents.update();\n detectIt.updateOnlyOwnProperties();\n },\n updateOnlyOwnProperties: function updateOnlyOwnProperties() {\n if (typeof window !== 'undefined') {\n detectIt.passiveEvents = detectIt.state.detectPassiveEvents.hasSupport || false;\n\n detectIt.hasTouch = detectIt.state.detectTouchEvents.hasSupport || false;\n\n detectIt.deviceType = determineDeviceType(detectIt.hasTouch, detectIt.state.detectHover.anyHover, detectIt.state.detectPointer.anyFine, detectIt.state);\n\n detectIt.hasMouse = detectIt.deviceType !== 'touchOnly';\n\n detectIt.primaryInput = detectIt.deviceType === 'mouseOnly' && 'mouse' || detectIt.deviceType === 'touchOnly' && 'touch' ||\n // deviceType is hybrid:\n detectIt.state.detectHover.hover && 'mouse' || detectIt.state.detectHover.none && 'touch' ||\n // if there's no support for hover media queries but detectIt determined it's\n // a hybrid device, then assume it's a mouse first device\n 'mouse';\n\n // issue with Windows Chrome on hybrid devices starting in version 59 where\n // media queries represent a touch only device, so if the browser is an\n // affected Windows Chrome version and hasTouch,\n // then assume it's a hybrid with primaryInput mouse\n // see https://github.com/rafrex/detect-it/issues/8\n var isAffectedWindowsChromeVersion = /windows/.test(window.navigator.userAgent.toLowerCase()) && /chrome/.test(window.navigator.userAgent.toLowerCase()) && parseInt(/Chrome\\/([0-9.]+)/.exec(navigator.userAgent)[1], 10) >= 59;\n\n if (isAffectedWindowsChromeVersion && detectIt.hasTouch) {\n detectIt.deviceType = 'hybrid';\n detectIt.hasMouse = true;\n detectIt.primaryInput = 'mouse';\n }\n }\n }\n};\n\ndetectIt.updateOnlyOwnProperties();\nexports.default = detectIt;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/detect-it/lib/index.js\n// module id = ./node_modules/detect-it/lib/index.js\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// adapted from https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\nvar detectPassiveEvents = {\n update: function update() {\n if (typeof window !== 'undefined' && typeof window.addEventListener === 'function') {\n var passive = false;\n var options = Object.defineProperty({}, 'passive', {\n get: function get() {\n passive = true;\n }\n });\n // note: have to set and remove a no-op listener instead of null\n // (which was used previously), becasue Edge v15 throws an error\n // when providing a null callback.\n // https://github.com/rafrex/detect-passive-events/pull/3\n var noop = function noop() {};\n window.addEventListener('testPassiveEventSupport', noop, options);\n window.removeEventListener('testPassiveEventSupport', noop, options);\n detectPassiveEvents.hasSupport = passive;\n }\n }\n};\n\ndetectPassiveEvents.update();\nexports.default = detectPassiveEvents;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/detect-passive-events/lib/index.js\n// module id = ./node_modules/detect-passive-events/lib/index.js\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar detectPointer = {\n update: function update() {\n if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {\n detectPointer.fine = window.matchMedia('(pointer: fine)').matches;\n detectPointer.coarse = window.matchMedia('(pointer: coarse)').matches;\n detectPointer.none = window.matchMedia('(pointer: none)').matches;\n detectPointer.anyFine = window.matchMedia('(any-pointer: fine)').matches;\n detectPointer.anyCoarse = window.matchMedia('(any-pointer: coarse)').matches;\n detectPointer.anyNone = window.matchMedia('(any-pointer: none)').matches;\n }\n }\n};\n\ndetectPointer.update();\nexports.default = detectPointer;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/detect-pointer/lib/index.js\n// module id = ./node_modules/detect-pointer/lib/index.js\n// module chunks = 0","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar detectTouchEvents = {\n update: function update() {\n if (typeof window !== 'undefined') {\n detectTouchEvents.hasSupport = 'ontouchstart' in window;\n detectTouchEvents.browserSupportsApi = Boolean(window.TouchEvent);\n }\n }\n};\n\ndetectTouchEvents.update();\nexports.default = detectTouchEvents;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/detect-touch-events/lib/index.js\n// module id = ./node_modules/detect-touch-events/lib/index.js\n// module chunks = 0","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_Symbol.js\n// module id = ./node_modules/lodash/_Symbol.js\n// module chunks = 0","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayEach.js\n// module id = ./node_modules/lodash/_arrayEach.js\n// module chunks = 0","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_arrayLikeKeys.js\n// module id = ./node_modules/lodash/_arrayLikeKeys.js\n// module chunks = 0","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseEach.js\n// module id = ./node_modules/lodash/_baseEach.js\n// module chunks = 0","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseFor.js\n// module id = ./node_modules/lodash/_baseFor.js\n// module chunks = 0","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseForOwn.js\n// module id = ./node_modules/lodash/_baseForOwn.js\n// module chunks = 0","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseGetTag.js\n// module id = ./node_modules/lodash/_baseGetTag.js\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsArguments.js\n// module id = ./node_modules/lodash/_baseIsArguments.js\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseIsTypedArray.js\n// module id = ./node_modules/lodash/_baseIsTypedArray.js\n// module chunks = 0","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseKeys.js\n// module id = ./node_modules/lodash/_baseKeys.js\n// module chunks = 0","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseTimes.js\n// module id = ./node_modules/lodash/_baseTimes.js\n// module chunks = 0","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_baseUnary.js\n// module id = ./node_modules/lodash/_baseUnary.js\n// module chunks = 0","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_castFunction.js\n// module id = ./node_modules/lodash/_castFunction.js\n// module chunks = 0","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createBaseEach.js\n// module id = ./node_modules/lodash/_createBaseEach.js\n// module chunks = 0","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_createBaseFor.js\n// module id = ./node_modules/lodash/_createBaseFor.js\n// module chunks = 0","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_freeGlobal.js\n// module id = ./node_modules/lodash/_freeGlobal.js\n// module chunks = 0","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_getRawTag.js\n// module id = ./node_modules/lodash/_getRawTag.js\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isIndex.js\n// module id = ./node_modules/lodash/_isIndex.js\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_isPrototype.js\n// module id = ./node_modules/lodash/_isPrototype.js\n// module chunks = 0","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nativeKeys.js\n// module id = ./node_modules/lodash/_nativeKeys.js\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_nodeUtil.js\n// module id = ./node_modules/lodash/_nodeUtil.js\n// module chunks = 0","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_objectToString.js\n// module id = ./node_modules/lodash/_objectToString.js\n// module chunks = 0","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_overArg.js\n// module id = ./node_modules/lodash/_overArg.js\n// module chunks = 0","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/_root.js\n// module id = ./node_modules/lodash/_root.js\n// module chunks = 0","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/debounce.js\n// module id = ./node_modules/lodash/debounce.js\n// module chunks = 0","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/forEach.js\n// module id = ./node_modules/lodash/forEach.js\n// module chunks = 0","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/identity.js\n// module id = ./node_modules/lodash/identity.js\n// module chunks = 0","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArguments.js\n// module id = ./node_modules/lodash/isArguments.js\n// module chunks = 0","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArray.js\n// module id = ./node_modules/lodash/isArray.js\n// module chunks = 0","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isArrayLike.js\n// module id = ./node_modules/lodash/isArrayLike.js\n// module chunks = 0","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isBuffer.js\n// module id = ./node_modules/lodash/isBuffer.js\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isFunction.js\n// module id = ./node_modules/lodash/isFunction.js\n// module chunks = 0","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isLength.js\n// module id = ./node_modules/lodash/isLength.js\n// module chunks = 0","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObject.js\n// module id = ./node_modules/lodash/isObject.js\n// module chunks = 0","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isObjectLike.js\n// module id = ./node_modules/lodash/isObjectLike.js\n// module chunks = 0","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isSymbol.js\n// module id = ./node_modules/lodash/isSymbol.js\n// module chunks = 0","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/isTypedArray.js\n// module id = ./node_modules/lodash/isTypedArray.js\n// module chunks = 0","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/keys.js\n// module id = ./node_modules/lodash/keys.js\n// module chunks = 0","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/now.js\n// module id = ./node_modules/lodash/now.js\n// module chunks = 0","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/stubFalse.js\n// module id = ./node_modules/lodash/stubFalse.js\n// module chunks = 0","var debounce = require('./debounce'),\n isObject = require('./isObject');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/throttle.js\n// module id = ./node_modules/lodash/throttle.js\n// module chunks = 0","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lodash/toNumber.js\n// module id = ./node_modules/lodash/toNumber.js\n// module chunks = 0","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/object-assign/index.js\n// module id = ./node_modules/object-assign/index.js\n// module chunks = 0","'use strict';\nvar strictUriEncode = require('strict-uri-encode');\nvar objectAssign = require('object-assign');\nvar decodeComponent = require('decode-uri-component');\n\nfunction encoderForArrayFormat(opts) {\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, index) {\n\t\t\t\treturn value === null ? [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tindex,\n\t\t\t\t\t']'\n\t\t\t\t].join('') : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[',\n\t\t\t\t\tencode(index, opts),\n\t\t\t\t\t']=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'[]=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value) {\n\t\t\t\treturn value === null ? encode(key, opts) : [\n\t\t\t\t\tencode(key, opts),\n\t\t\t\t\t'=',\n\t\t\t\t\tencode(value, opts)\n\t\t\t\t].join('');\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(opts) {\n\tvar result;\n\n\tswitch (opts.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t} else if (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn function (key, value, accumulator) {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction encode(value, opts) {\n\tif (opts.encode) {\n\t\treturn opts.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t} else if (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input)).sort(function (a, b) {\n\t\t\treturn Number(a) - Number(b);\n\t\t}).map(function (key) {\n\t\t\treturn input[key];\n\t\t});\n\t}\n\n\treturn input;\n}\n\nexports.extract = function (str) {\n\tvar queryStart = str.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\treturn str.slice(queryStart + 1);\n};\n\nexports.parse = function (str, opts) {\n\topts = objectAssign({arrayFormat: 'none'}, opts);\n\n\tvar formatter = parserForArrayFormat(opts);\n\n\t// Create an object with no prototype\n\t// https://github.com/sindresorhus/query-string/issues/47\n\tvar ret = Object.create(null);\n\n\tif (typeof str !== 'string') {\n\t\treturn ret;\n\t}\n\n\tstr = str.trim().replace(/^[?#&]/, '');\n\n\tif (!str) {\n\t\treturn ret;\n\t}\n\n\tstr.split('&').forEach(function (param) {\n\t\tvar parts = param.replace(/\\+/g, ' ').split('=');\n\t\t// Firefox (pre 40) decodes `%3D` to `=`\n\t\t// https://github.com/sindresorhus/query-string/pull/37\n\t\tvar key = parts.shift();\n\t\tvar val = parts.length > 0 ? parts.join('=') : undefined;\n\n\t\t// missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tval = val === undefined ? null : decodeComponent(val);\n\n\t\tformatter(decodeComponent(key), val, ret);\n\t});\n\n\treturn Object.keys(ret).sort().reduce(function (result, key) {\n\t\tvar val = ret[key];\n\t\tif (Boolean(val) && typeof val === 'object' && !Array.isArray(val)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(val);\n\t\t} else {\n\t\t\tresult[key] = val;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n};\n\nexports.stringify = function (obj, opts) {\n\tvar defaults = {\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none'\n\t};\n\n\topts = objectAssign(defaults, opts);\n\n\tvar formatter = encoderForArrayFormat(opts);\n\n\treturn obj ? Object.keys(obj).sort().map(function (key) {\n\t\tvar val = obj[key];\n\n\t\tif (val === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (val === null) {\n\t\t\treturn encode(key, opts);\n\t\t}\n\n\t\tif (Array.isArray(val)) {\n\t\t\tvar result = [];\n\n\t\t\tval.slice().forEach(function (val2) {\n\t\t\t\tif (val2 === undefined) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tresult.push(formatter(key, val2, result.length));\n\t\t\t});\n\n\t\t\treturn result.join('&');\n\t\t}\n\n\t\treturn encode(key, opts) + '=' + encode(val, opts);\n\t}).filter(function (x) {\n\t\treturn x.length > 0;\n\t}).join('&') : '';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/query-string/index.js\n// module id = ./node_modules/query-string/index.js\n// module chunks = 0","'use strict';\nmodule.exports = function (str) {\n\treturn encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n\t\treturn '%' + c.charCodeAt(0).toString(16).toUpperCase();\n\t});\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/strict-uri-encode/index.js\n// module id = ./node_modules/strict-uri-encode/index.js\n// module chunks = 0","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\n} catch(e) {\n\t// This works if the window reference is available\n\tif(typeof window === \"object\")\n\t\tg = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = ./node_modules/webpack/buildin/global.js\n// module chunks = 0","module.exports = function(module) {\n\tif(!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif(!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = ./node_modules/webpack/buildin/module.js\n// module chunks = 0","(function(self) {\n 'use strict';\n\n if (self.fetch) {\n return\n }\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob: 'FileReader' in self && 'Blob' in self && (function() {\n try {\n new Blob()\n return true\n } catch(e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n }\n\n if (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 isDataView = function(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n }\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name)\n }\n if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function 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\n function 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\n 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\n Headers.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\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)]\n }\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name)\n return this.has(name) ? this.map[name] : null\n }\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n }\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value)\n }\n\n Headers.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\n Headers.prototype.keys = function() {\n var items = []\n this.forEach(function(value, name) { items.push(name) })\n return iteratorFor(items)\n }\n\n Headers.prototype.values = function() {\n var items = []\n this.forEach(function(value) { items.push(value) })\n return iteratorFor(items)\n }\n\n Headers.prototype.entries = function() {\n var items = []\n this.forEach(function(value, name) { items.push([name, value]) })\n return iteratorFor(items)\n }\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true\n }\n\n function 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\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsArrayBuffer(blob)\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader()\n var promise = fileReaderReady(reader)\n reader.readAsText(blob)\n return promise\n }\n\n function 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\n function 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\n function Body() {\n this.bodyUsed = false\n\n this._initBody = function(body) {\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 throw new Error('unsupported BodyInit type')\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 return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\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\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase()\n return (methods.indexOf(upcased) > -1) ? upcased : method\n }\n\n function Request(input, options) {\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 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 || 'omit'\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.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\n Request.prototype.clone = function() {\n return new Request(this, { body: this._bodyInit })\n }\n\n function decode(body) {\n var form = new FormData()\n body.trim().split('&').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\n function parseHeaders(rawHeaders) {\n var headers = new Headers()\n rawHeaders.split(/\\r?\\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\n Body.call(Request.prototype)\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {}\n }\n\n this.type = 'default'\n this.status = 'status' in options ? options.status : 200\n this.ok = this.status >= 200 && this.status < 300\n this.statusText = 'statusText' in options ? options.statusText : 'OK'\n this.headers = new Headers(options.headers)\n this.url = options.url || ''\n this._initBody(bodyInit)\n }\n\n Body.call(Response.prototype)\n\n Response.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\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''})\n response.type = 'error'\n return response\n }\n\n var redirectStatuses = [301, 302, 303, 307, 308]\n\n Response.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\n self.Headers = Headers\n self.Request = Request\n self.Response = Response\n\n self.fetch = function(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init)\n var xhr = new XMLHttpRequest()\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 resolve(new Response(body, options))\n }\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'))\n }\n\n xhr.open(request.method, request.url, true)\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob'\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value)\n })\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n })\n }\n self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/whatwg-fetch/fetch.js\n// module id = ./node_modules/whatwg-fetch/fetch.js\n// module chunks = 0","/**\n * @fileOverview Main app module\n *\n * @author Peter Schmiz \n *\n * @requires modules/navigation\n * @requires modules/custom-select-controller\n * @requires modules/wizard-logic\n * @requires utils/helper\n * @requires utils/cookie-handling\n */\n\nimport { helper } from './utils/helper';\nimport { cookieHandling } from './utils/cookie-handling';\nimport { search } from './modules/search';\nimport { share } from './modules/share';\nimport { navigation } from './modules/navigation';\nimport { calculator } from './modules/calculator';\nimport { accordion } from './modules/accordion';\nimport { customSelectController } from './modules/custom-select-controller';\nimport { wizardLogic } from './modules/wizard-logic';\nimport { tooltipController } from './modules/tooltip-controller';\nimport { tab } from './modules/tab';\nimport { imageLoader } from './modules/image-loader';\nimport { analytics } from './modules/analytics';\nimport { video } from './modules/video';\nimport { cookiePolicy } from './modules/cookiepolicy';\n\nconst OPT_COOKIE = 'pensionOptout';\nconst CP_COOKIE = 'cookiepolicy_banner';\n\nconst getCurrentPage = () => (document.body.getAttribute('data-page').toLowerCase());\n\nclass App {\n constructor() {\n helper.init();\n customSelectController.init();\n navigation.init();\n analytics.init();\n imageLoader.init();\n accordion.init();\n search.init();\n tooltipController.init();\n share.init();\n cookiePolicy.init();\n\n const calculatorBlock = document.querySelector('[data-calculator]');\n const cookiePolicyBanner = document.querySelector('[data-cookiepolicy]');\n\n if (calculatorBlock !== null) {\n calculator.init();\n }\n\n if (cookieHandling.checkCookie(OPT_COOKIE)) {\n const informationBlock = document.querySelector('section.information');\n if (informationBlock !== null) {\n informationBlock.classList.remove('information--hidden');\n }\n }\n\n if (cookieHandling.checkCookie(CP_COOKIE) && cookiePolicyBanner !== null) {\n document.body.removeChild(cookiePolicyBanner);\n } else if (cookiePolicyBanner !== null) {\n cookiePolicyBanner.classList.remove('cookiepolicy--hidden');\n }\n\n switch (getCurrentPage()) {\n case 'wizard':\n wizardLogic.init();\n break;\n case 'media':\n tab.init();\n video.init();\n break;\n default:\n break;\n }\n }\n}\n\nwindow.addEventListener('load', () => new App());\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/app.js","/**\n * @fileOverview Accordion module\n *\n * @author Andras Muk \n */\n\nimport forEach from 'lodash/forEach';\n\nconst COLLAPSED_CLASS = 'collapsible__box--collapsed';\n\nclass Accordion {\n init() {\n this.onClickBind = this.toggleAccordion.bind(this);\n this.onKeyUpBind = this.cancelKeyup.bind(this);\n this.initBindings();\n }\n\n initDOMElements() {\n this.accordionWrapper = document.querySelectorAll('[data-accordion]');\n if (this.accordionWrapper) {\n this.accordionButtons = document.body.querySelectorAll('[data-accordion] button');\n }\n }\n\n initBindings() {\n this.initDOMElements();\n if (this.accordionWrapper) {\n this.addBindings();\n }\n }\n\n addBindings() {\n forEach(this.accordionButtons, (element) => {\n if (document.body.classList.contains('pagemode-edit') === true) {\n element.addEventListener('keyup', this.onKeyUpBind, false);\n } else {\n element.addEventListener('click', this.onClickBind, false);\n }\n const id = element.getAttribute('id');\n const content = document.querySelector(`[aria-labelledby=\"${id}\"]`);\n if (content !== null) {\n this.setContentAccessibility(content, false);\n }\n });\n }\n\n setContentAccessibility(content, isActive) {\n forEach(content.querySelectorAll('a'), (link) => {\n if (isActive === true) {\n link.removeAttribute('tabindex');\n } else {\n link.setAttribute('tabindex', '-1');\n }\n });\n\n forEach(content.querySelectorAll('input'), (link) => {\n if (isActive === true) {\n link.removeAttribute('tabindex');\n link.removeAttribute('disabled');\n } else {\n link.setAttribute('tabindex', '-1');\n link.setAttribute('disabled', '');\n }\n });\n }\n\n destroyBindings() {\n forEach(this.accordionButtons, (element) => {\n element.removeEventListener('keyup', this.onKeyUpBind);\n element.removeEventListener('click', this.onClickBind);\n });\n }\n\n cancelKeyup(e) {\n if (e.keyCode === 32) {\n e.preventDefault();\n }\n return false;\n }\n\n toggleAccordion(e) {\n const element = e.currentTarget;\n const buttonId = element.getAttribute('id');\n const target = document.querySelector(`[aria-labelledby=\"${buttonId}\"]`);\n const isCollapsed = target.classList.contains(COLLAPSED_CLASS);\n\n element.setAttribute('aria-expanded', isCollapsed.toString());\n\n if (isCollapsed) {\n element.classList.add('active');\n target.style.height = `${target.scrollHeight + 55}px`;\n target.classList.remove(COLLAPSED_CLASS);\n target.setAttribute('aria-expanded', true);\n this.setContentAccessibility(target, true);\n } else {\n element.classList.remove('active');\n target.style.height = 0;\n target.classList.add(COLLAPSED_CLASS);\n target.setAttribute('aria-expanded', false);\n this.setContentAccessibility(target, false);\n }\n }\n}\n\nexport const accordion = new Accordion();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/accordion.js","/**\n * @fileOverview Analytics module\n *\n * @author Daniel Jung \n *\n * @requires NPM:lodash\n */\n\nimport liveBinding from '../utils/live-event-binding';\nimport { requestTimeout } from '../utils/request-timeout';\n\nconst LOCAL_TEST = false;\nconst ENV = window.location.hostname.match(/localhost|10\\.|127\\./ig) ? 'dev' : 'prod';\n\nexport const getUriForEvents = () => {\n let eventUri = window.location.pathname;\n if (eventUri === '/') {\n eventUri = '/home/';\n }\n return eventUri;\n};\n\nexport const trackEvent = (obj) => {\n const eventObject = {\n event_category: (obj && obj.eventCategory) || '',\n event_action: (obj && obj.eventAction) || '',\n event_content: (obj && obj.eventContent) || '',\n page_name: (obj && obj.pageName) || '',\n page_url: getUriForEvents(),\n event_other: (obj && obj.eventOther) || '',\n };\n window.utag.link(eventObject);\n};\n\nclass Analytics {\n constructor() {\n const account =\n document.body.getAttribute('data-account') || 'hsbc';\n const profile =\n document.body.getAttribute('data-profile') || 'uk-staff-future-focus';\n\n this.utagSyncURI\n = `//tags.tiqcdn.com/utag/${account}/${profile}/${ENV}/utag.sync.js`;\n\n this.utagURI\n = `//tags.tiqcdn.com/utag/${account}/${profile}/${ENV}/utag.js`;\n\n let pageUrl = document.body.getAttribute('data-page-url').replace(`${window.location.protocol}//${window.location.host}`, '');\n pageUrl = pageUrl.replace(':443', '');\n\n if (pageUrl === '/') {\n pageUrl = '/wizard';\n }\n\n this.rawUtagData = {\n page_channel: 'web',\n site_domain: 'pensions',\n site_region: 'Europe',\n site_subregion: 'UK',\n site_country: 'United Kingdom',\n site_entity: 'pensions',\n site_brand: 'pensions',\n page_language: 'en_GB',\n page_security_level: 30,\n page_business_line: 'hsbc internal',\n page_customer_group: 'hsbc internal',\n site_type: 'hsbc internal',\n ib_type: 'none-ib',\n page_name: document.body.getAttribute('data-page-name'),\n page_url: pageUrl,\n page_type: document.body.getAttribute('data-page-type'),\n };\n }\n\n init() {\n requestTimeout(() => {\n this.loadUtagSync(() => {\n this.initStaticPageData();\n this.initDynamicPageData();\n this.loadUtag();\n }, this.handleUtagSyncErr);\n }, 1000);\n }\n\n loadUtag(a, b, c, d) {\n /* eslint-disable no-param-reassign, prefer-destructuring */\n a = this.utagURI;\n b = document;\n c = 'script';\n d = b.createElement(c);\n d.src = a;\n d.type = `text/java${c}`;\n d.async = true;\n a = b.getElementsByTagName(c)[0];\n a.parentNode.insertBefore(d, a);\n /* eslint-enable */\n }\n\n loadUtagSync(successCallback, errorCallback) {\n const script = document.createElement('script');\n script.onload = successCallback;\n script.onerror = errorCallback;\n script.src = this.utagSyncURI;\n\n document.head.appendChild(script);\n }\n\n initStaticPageData() {\n if (LOCAL_TEST) {\n this.appendScript(this.rawUtagData);\n } else {\n window.utag_data = this.rawUtagData;\n }\n }\n\n appendScript(data) {\n const script = document.createElement('script');\n script.innerHTML = `var utag_data = ${JSON.stringify(data).replace(/,/g, ',\\n')}`;\n document.head.appendChild(script);\n }\n\n initDynamicPageData() {\n liveBinding('[data-event-category]', 'click', (e, el) => {\n if (el.getAttribute('data-event-category') === 'share') {\n trackEvent({\n eventCategory: el.getAttribute('data-event-category'),\n eventAction: el.getAttribute('data-event-action'),\n eventContent: el.getAttribute('data-event-content'),\n pageName: `futurefocus:${this.getUrlForTealium()}`,\n });\n } else {\n trackEvent({\n eventCategory: el.getAttribute('data-event-category'),\n eventAction: el.getAttribute('data-event-action'),\n eventContent: el.getAttribute('data-event-content'),\n });\n }\n });\n }\n\n getUrlForTealium() {\n const urlWithoutParams = window.location.toString().split('?')[0];\n const urlChunks = urlWithoutParams.split('/');\n return urlChunks[urlChunks.length - 1];\n }\n\n handleUtagSyncErr() {\n /* eslint-disable no-console */\n console.error(`Could not load: ${this.utagSyncURI}`);\n /* eslint-enable */\n }\n}\n\nexport const analytics = new Analytics();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/analytics.js","/**\n * @fileOverview Calculator module\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n * @requires NPM:detect-it\n */\n\nimport throttle from 'lodash/throttle';\nimport detectIt from 'detect-it';\n\nconst ENABLED_KEYS = [8, 9, 36, 37, 38, 39, 40, 46];\nconst SALARY_LIMIT = 20600;\nconst CONTRIBUTION_CAP = 140000;\nconst MAX_WORKING_HOURS = 35;\n\nclass Calculator {\n constructor() {\n this.isInputVisible = true;\n this.isDragActive = false;\n this.currentX = 0;\n this.dragEndX = 0;\n this.name = 'salary';\n this.actualWorkHours = 0;\n }\n\n init() {\n this.initDOMElements();\n if (this.calculator) {\n this.inFocus = false;\n this.parseInput(this.name);\n\n this.salaryLimit = parseInt(this.calculator.getAttribute('data-hsbc-salary-limit') || SALARY_LIMIT, 10);\n this.capLimit = parseInt(this.calculator.getAttribute('data-hsbc-cap-limit') || CONTRIBUTION_CAP, 10);\n this.maxWorkHours = parseInt(this.calculator.getAttribute('data-hsbc-max-working-hours') || MAX_WORKING_HOURS, 10);\n this.actualWorkHours = this.maxWorkHours;\n\n this.formattedSalaryLimit = this.salaryLimit.toFixed(2).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,').slice(0, -3);\n this.formattedCapLimit = this.capLimit.toFixed(2).replace(/(\\d)(?=(\\d{3})+\\.)/g, '$1,').slice(0, -3);\n\n this.hsbcContribution = parseInt(this.calculator.getAttribute('data-hsbc-contribution') || 10, 10);\n this.hsbcContributionMod = this.hsbcContribution;\n this.hsbcContributionLimited = parseInt(this.calculator.getAttribute('data-hsbc-contribution-limit') || 9, 10);\n this.hsbcContributionText =\n this.calculator.getAttribute('data-hsbc-contribution-text') ||\n `(${this.hsbcContribution}% of first £${this.formattedSalaryLimit} and ${this.hsbcContributionLimited}% after that, capped at £${this.formattedSalaryLimit} up to the scheme earnings cap, currently £${this.formattedCapLimit})`;\n this.hsbcMatch = parseInt(this.calculator.getAttribute('data-hsbc-match') || 7, 10);\n this.contributionValue = parseInt(this.calculatorSlider.getAttribute('data-calculator-contribution') || 0, 10);\n this.updateSlider(this.contributionValue / this.calculatorMax);\n this.currentX = (this.contributionValue / this.calculatorMax) * this.sliderWidth;\n this.dragEndX = this.currentX;\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.calculator = document.body.querySelector('[data-calculator]');\n this.sliderValue = document.body.querySelector('#slider-value');\n if (this.calculator !== null) {\n this.calculatorShowLabelText = this.calculator.getAttribute('data-calculator-show-label') || 'Show';\n this.calculatorHideLabelText = this.calculator.getAttribute('data-calculator-hide-label') || 'Hide';\n this.calculatorYourContributionInput = this.calculator.querySelector('[data-your-contribution]');\n this.calculatorWorkingHoursInput = this.calculator.querySelector('[data-working-hours]');\n this.calculatorHide = this.calculator.querySelector('[data-calculator-hide]');\n this.calculatorSlider = this.calculator.querySelector('[data-calculator-slider]');\n this.calculatorHsbcContributionVal = this.calculator.querySelector('[data-hsbc-contribution-val]');\n this.calculatorHsbcContributionResult = this.calculator.querySelector('[data-hsbc-contribution-result]');\n this.calculatorYourContributionResult = this.calculator.querySelector('[data-your-contribution-result]');\n this.calculatorYourContributionValue = this.calculator.querySelector('[data-your-contribution-val]');\n this.calculatorHsbcMatchValue = this.calculator.querySelector('[data-hsbc-match-val]');\n this.calculatorHsbcMatchResult = this.calculator.querySelector('[data-hsbc-match-result]');\n this.calculatorOverallPercentage = this.calculator.querySelector('[data-overall-percentage]');\n this.calculatorOverallResult = this.calculator.querySelector('[data-overall-result]');\n\n if (this.calculatorHide !== null) {\n this.calculatorHideLabel = this.calculatorHide.querySelector('[data-calculator-hide-label]');\n }\n\n if (this.calculatorSlider !== null) {\n this.sliderWidth = this.calculatorSlider.offsetWidth;\n this.calculatorBullet = this.calculatorSlider.querySelector('[data-calculator-bullet]');\n this.calculatorBar = this.calculatorSlider.querySelector('[data-calculator-bar]');\n this.calculatorAxis = this.calculatorSlider.querySelector('[data-calculator-axis]');\n\n if (this.calculatorAxis !== null) {\n this.calculatorMax = parseInt(this.calculatorAxis.getAttribute('data-calculator-max') || 30, 10);\n }\n }\n }\n }\n\n initBindings() {\n this.calculatorHide.addEventListener('click', (e) => {\n e.preventDefault();\n if (this.isInputVisible) {\n this.updateInput(this.name);\n }\n this.toggleMask();\n }, false);\n\n this.calculatorYourContributionInput.addEventListener('keydown', (e) => {\n this.evaluateKeyEvent(e, e.currentTarget);\n }, false);\n\n this.calculatorWorkingHoursInput.addEventListener('keydown', (e) => {\n this.evaluateKeyEvent(e, e.currentTarget);\n }, false);\n\n this.calculatorYourContributionInput.addEventListener('keyup', (e) => {\n if (this.calculatorYourContributionInput.value > this.capLimit) {\n this.calculatorYourContributionInput.value = this.capLimit;\n }\n if (this.calculatorYourContributionInput.value.length > 6) {\n this.calculatorYourContributionInput.value = this.salaryValue;\n return false;\n }\n if (this.isInputVisible === true) {\n const name = e.currentTarget.getAttribute('name');\n this.updateInput(name);\n this.doCalculation();\n }\n return true;\n }, false);\n\n this.calculatorWorkingHoursInput.addEventListener('keyup', (e) => {\n const name = e.currentTarget.getAttribute('name');\n if (this.calculatorWorkingHoursInput.value > this.maxWorkHours) {\n this.calculatorWorkingHoursInput.value = this.maxWorkHours;\n }\n if (this.isInputVisible === true) {\n this.updateInput(name);\n this.doCalculation();\n }\n return true;\n }, false);\n\n this.calculatorSlider.addEventListener('click', (e) => {\n e.preventDefault();\n const rect = e.target.getBoundingClientRect();\n const posX = e.pageX - rect.left;\n this.currentX = posX;\n this.dragEndX = this.currentX;\n this.updateSlider(posX / this.sliderWidth);\n }, false);\n\n this.calculatorBullet.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n }, false);\n\n this.calculatorBullet.addEventListener('mousedown', (e) => {\n this.onStart(e);\n }, detectIt.passiveEvents && this.isDragActive === false ? {\n capture: false,\n passive: true,\n } : false);\n\n this.calculatorBullet.addEventListener('touchstart', (e) => {\n this.onStart(e);\n }, detectIt.passiveEvents ? {\n capture: false,\n passive: true,\n } : false);\n\n document.body.addEventListener('mouseup', (e) => {\n this.onEnd(e);\n }, false);\n\n document.body.addEventListener('touchstart', (e) => {\n if (this.inFocus === true) {\n this.onStart(e);\n }\n }, false);\n\n document.body.addEventListener('touchend', (e) => {\n this.onEnd(e);\n }, false);\n\n this.calculatorBullet.addEventListener('focus', () => {\n this.inFocus = true;\n }, false);\n\n this.calculatorBullet.addEventListener('blur', () => {\n this.isDragActive = false;\n this.inFocus = false;\n }, false);\n\n this.calculator.addEventListener('mousemove', (e) => {\n this.onMove(e);\n }, false);\n\n this.calculator.addEventListener('touchmove', (e) => {\n this.onMove(e);\n }, false);\n\n window.addEventListener('resize', throttle(() => {\n this.sliderWidth = this.calculatorSlider.offsetWidth;\n }, 50), detectIt.passiveEvents ? { capture: false, passive: true } : false);\n\n document.body.addEventListener('keydown', (e) => {\n this.cursorStep(e);\n }, false);\n }\n\n evaluateKeyEvent(event, target) {\n const inputName = target.getAttribute('name');\n if (\n (event.keyCode < 96 || event.keyCode > 105) &&\n (event.shiftKey === true || (event.keyCode < 48 || event.keyCode > 57)) &&\n ((event.shiftKey === true || event.keyCode !== 190) || inputName.toLowerCase() !== 'working-hours') &&\n (ENABLED_KEYS.includes(event.keyCode) === false || this.isInputVisible === false)\n ) {\n event.preventDefault();\n return false;\n }\n return true;\n }\n\n cursorStep(e) {\n if (\n (e.keyCode === 37 || e.keyCode === 39) &&\n this.calculatorBullet === document.activeElement\n ) {\n const currentPosition = this.currentX / this.sliderWidth;\n const step = (1 / 30) * (e.keyCode === 37 ? -1 : 1);\n\n this.currentX += this.sliderWidth * step;\n\n if (this.currentX < 0) {\n this.currentX = 0;\n }\n\n if (this.currentX > this.sliderWidth) {\n this.currentX = this.sliderWidth;\n }\n\n this.updateSlider(currentPosition + step);\n e.preventDefault();\n return false;\n }\n return true;\n }\n\n onStart(e) {\n this.isDragActive = true;\n this.calculator.classList.add('calculator--drag-active');\n this.dragStartX = e.type === 'mousedown' ? e.clientX : e.touches[0].clientX;\n }\n\n onMove(e) {\n if (this.isDragActive) {\n e.preventDefault();\n this.handleDrag(e);\n }\n }\n\n onEnd() {\n if (this.isDragActive) {\n this.calculator.classList.remove('calculator--drag-active');\n this.isDragActive = false;\n this.dragEndX = this.currentX;\n this.inFocus = false;\n }\n }\n\n updateInput(name) {\n this.parseInput(name);\n if (this.calculatorYourContributionInput.value.charAt(0) === '0') {\n this.calculatorYourContributionInput.value = this.salaryValue;\n }\n }\n\n toggleMask() {\n this.isInputVisible = !this.isInputVisible;\n if (this.isInputVisible) {\n this.calculatorYourContributionInput.classList.remove('hidden');\n this.calculatorYourContributionInput.type = 'number';\n this.calculatorYourContributionInput.readOnly = false;\n this.calculatorYourContributionInput.value = parseInt(this.salaryValue, 10);\n this.calculatorHide.classList.remove('hide-button--active');\n this.calculatorHide.setAttribute('aria-label', 'Hide field value');\n this.calculatorHideLabel.textContent = this.calculatorHideLabelText;\n } else {\n this.calculatorYourContributionInput.classList.add('hidden');\n this.calculatorYourContributionInput.type = 'text';\n this.calculatorYourContributionInput.readOnly = true;\n this.calculatorYourContributionInput.value = '*'.repeat(this.salaryValue.toString().length);\n this.calculatorHide.classList.add('hide-button--active');\n this.calculatorHideLabel.textContent = this.calculatorShowLabelText;\n this.calculatorHide.setAttribute('aria-label', 'Show field value');\n }\n }\n\n parseInput(name) {\n if (name === 'salary') {\n this.salaryValue = parseInt(this.calculatorYourContributionInput.value || 0, 10);\n }\n if (name === 'working-hours') {\n this.actualWorkHours = parseFloat(\n this.calculatorWorkingHoursInput.value ||\n this.maxWorkHours, 10\n );\n }\n }\n\n doCalculation() {\n const contributedSalary = ((this.salaryValue / 100) * this.contributionValue) / 12;\n const hsbcContributionTxt = `${this.hsbcContributionText}`;\n\n let hsbcContributionResult = 0;\n let hsbcContributionDiff = 0;\n\n if (this.salaryValue <= this.salaryLimit) {\n hsbcContributionResult = (\n ((this.actualWorkHours / this.maxWorkHours) * (this.salaryValue / 100))\n * this.hsbcContribution\n ) / 12;\n } else {\n hsbcContributionResult = (\n (((this.actualWorkHours / this.maxWorkHours) * this.salaryLimit) / 100)\n * this.hsbcContribution\n ) / 12;\n hsbcContributionDiff = this.salaryValue - (\n (this.actualWorkHours / this.maxWorkHours) * this.salaryLimit\n );\n\n if (hsbcContributionDiff > this.capLimit) {\n hsbcContributionDiff = this.capLimit;\n }\n hsbcContributionResult += ((hsbcContributionDiff / 100) * this.hsbcContributionLimited) / 12;\n }\n\n let hsbcMatchResult = 0;\n\n if (this.contributionValue <= this.hsbcMatch) {\n hsbcMatchResult = contributedSalary;\n } else {\n hsbcMatchResult = ((this.salaryValue / 100) * this.hsbcMatch) / 12;\n }\n\n const overallResult = (contributedSalary + hsbcContributionResult + hsbcMatchResult);\n\n if (contributedSalary > 0) {\n this.hsbcContributionMod = Math.round(\n (((hsbcContributionResult * 12) / this.salaryValue) * 100) * 100\n ) / 100;\n }\n\n this.calculatorHsbcContributionVal.innerHTML = `${this.salaryValue <= this.salaryLimit ? `${this.hsbcContribution}%`\n : `${this.hsbcContributionMod}%`} ${hsbcContributionTxt}`;\n this.calculatorHsbcContributionResult.innerHTML = this.formattedResult(hsbcContributionResult);\n this.calculatorHsbcMatchValue.innerHTML = `${this.contributionValue < this.hsbcMatch ? this.contributionValue\n : this.hsbcMatch}%`;\n this.calculatorHsbcMatchResult.innerHTML = this.formattedResult(hsbcMatchResult);\n this.calculatorOverallResult.innerHTML = this.formattedResult(overallResult);\n this.calculatorYourContributionValue.innerHTML = `${this.contributionValue}%`;\n this.calculatorYourContributionResult.innerHTML = this.formattedResult(contributedSalary);\n this.calculatorOverallPercentage.innerHTML = `${Math.round(\n (\n this.contributionValue + (this.salaryValue <= this.salaryLimit ? this.hsbcContribution\n : this.hsbcContributionMod) + (this.contributionValue < this.hsbcMatch\n ? this.contributionValue : this.hsbcMatch)\n ) * 100\n ) / 100}%`;\n }\n\n handleDrag(e) {\n const distance = (this.dragEndX || 0) + ((e.type === 'mousemove' ? e.clientX\n : e.touches[0].clientX) - this.dragStartX);\n const percentageX = distance > 0 ? distance / this.sliderWidth : 0;\n\n this.currentX = distance;\n\n if (this.currentX < 0) {\n this.currentX = 0;\n }\n\n if (this.currentX > this.sliderWidth) {\n this.currentX = this.sliderWidth;\n }\n\n this.updateSlider(percentageX);\n }\n\n updateSlider(percentageX) {\n let xPos = percentageX;\n\n if (xPos < 0) {\n xPos = 0;\n }\n\n if (xPos > 1) {\n xPos = 1;\n }\n\n const labelPercentage = Math.round((this.calculatorMax / 100) * Math.round(xPos * 100));\n const stylePercentage = Math.round(xPos * 100);\n\n this.contributionValue = labelPercentage;\n this.calculatorBullet.setAttribute('data-contribution-percent', `${labelPercentage}%`);\n this.calculatorSlider.setAttribute('aria-valuetext', `${labelPercentage}%`);\n this.calculatorSlider.setAttribute('aria-valuenow', labelPercentage);\n this.calculatorBullet.style.left = `${stylePercentage}%`;\n this.calculatorBar.style.width = `${stylePercentage}%`;\n this.sliderValue.innerHTML = `${labelPercentage}%`;\n\n this.doCalculation();\n }\n\n formattedResult(number) {\n\t let lastTwoDigit = number.toFixed(2);\n\t lastTwoDigit = (lastTwoDigit + \"\").split(\".\")[1];\n return `${Math.floor(number)}.${lastTwoDigit}`;\n }\n}\n\nexport const calculator = new Calculator();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/calculator.js","/**\n * @fileOverview Cookie Policy Cookie\n *\n * @author Andras Muk \n */\n\nimport { cookieHandling } from '../utils/cookie-handling';\n\nconst CP_COOKIE = 'cookiepolicy_banner';\n\nclass CookiePolicy {\n init() {\n this.initDOMElements();\n if (this.closeButton !== null) {\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.cookiePolicyBanner = document.body.querySelector('[data-cookiepolicy]');\n this.closeButton = document.body.querySelector('[data-cookiepolicy-close]');\n }\n\n initBindings() {\n this.closeButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.closeCookiePolicy();\n }, false);\n }\n\n closeCookiePolicy() {\n cookieHandling.createCookie(CP_COOKIE, 'closed', 365);\n if (this.cookiePolicyBanner !== null) {\n document.body.removeChild(this.cookiePolicyBanner);\n }\n }\n}\n\nexport const cookiePolicy = new CookiePolicy();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/cookiepolicy.js","/**\n * @fileOverview Custom dropdown select controller\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n */\n\nimport forEach from 'lodash/forEach';\nimport CustomSelect from './custom-select';\n\nclass CustomSelectController {\n constructor() {\n this.customSelects = [];\n }\n\n init() {\n this.initCustomSelects();\n }\n\n initCustomSelects() {\n forEach(document.querySelectorAll('[data-custom-select]'), (elem) => {\n this.customSelects.push({\n name: elem.getAttribute('data-custom-select').toLowerCase(),\n select: new CustomSelect(elem),\n });\n });\n }\n\n getSelectByName(name) {\n const result = this.customSelects.filter(select => (select.name === name));\n\n if (result && result[0] && result[0].select) {\n return result[0].select;\n }\n return null;\n }\n}\n\nexport const customSelectController = new CustomSelectController();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/custom-select-controller.js","/**\n * @fileOverview Custom select handler\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n * @requires NPM:detect-it\n */\n\nimport forEach from 'lodash/forEach';\nimport debounce from 'lodash/debounce';\nimport detectIt from 'detect-it';\n\nconst ACTIVE_CLASS = 'select--active';\nconst ACTIVATE_KEYCODES = [32, 38, 40];\nconst DEACTIVATE_KEYCODES = [27];\nconst SELECT_KEYCODES = [13, 32];\nconst NAVIGATION_KEYCODES = [38, 40];\n\nconst ITEM_HEIGHT = 70;\n\nconst isIEorEdge = () => (\n /MSIE 10/i.test(navigator.userAgent) ||\n /MSIE 9/i.test(navigator.userAgent) ||\n /rv:11.0/i.test(navigator.userAgent) ||\n /Edge\\/\\d./i.test(navigator.userAgent)\n);\n\nclass CustomSelect {\n constructor(el) {\n if (!(typeof el && el.nodeName)) {\n throw TypeError('Constructor parameter should be a valid DOM element!');\n }\n\n this.isSelectActive = false;\n this.selectedIndex = -1;\n this.navigateIndex = -1;\n\n this.dropDownDirection = 'down';\n\n this.select = el;\n\n this.initDOMElements();\n this.initBindings();\n this.checkSpace();\n }\n\n initDOMElements() {\n this.selected = this.select.querySelector('[data-custom-select-selected]');\n this.nativeSelect = this.select.querySelector('[data-custom-select-native-input]');\n this.options = this.select.querySelectorAll('[data-custom-select-option]');\n }\n\n initBindings() {\n this.select.addEventListener('click', () => {\n this.toggleOptions();\n }, detectIt.passiveEvents ? {\n capture: false,\n passive: true,\n } : false);\n\n this.select.addEventListener('keydown', (e) => {\n if (\n [...ACTIVATE_KEYCODES, ...SELECT_KEYCODES].includes(e.keyCode) ||\n (e.keyCode === 9 && this.isSelectActive === true)\n ) {\n e.preventDefault();\n }\n if (ACTIVATE_KEYCODES.includes(e.keyCode) && this.isSelectActive === false) {\n this.openOptions();\n } else if (DEACTIVATE_KEYCODES.includes(e.keyCode) && this.isSelectActive === true) {\n this.closeOptions();\n this.resetOptions();\n } else if (SELECT_KEYCODES.includes(e.keyCode) && this.isSelectActive === true) {\n this.selectOption(this.options[this.navigateIndex]);\n this.closeOptions();\n } else if (NAVIGATION_KEYCODES.includes(e.keyCode) && this.isSelectActive === true) {\n this.navigateOptions(e.keyCode);\n }\n }, false);\n\n this.select.addEventListener('blur', (e) => {\n if (!isIEorEdge()) {\n if (\n e.relatedTarget === null ||\n (\n e.relatedTarget !== null && e.relatedTarget && e.relatedTarget.getAttribute('data-custom-select') !== null\n )\n ) {\n this.closeOptions();\n }\n }\n }, false);\n\n this.nativeSelect.addEventListener('blur', () => {\n this.updateSelectFromNative();\n }, false);\n\n this.nativeSelect.addEventListener('change', () => {\n this.updateSelectFromNative();\n }, false);\n\n window.addEventListener(\n 'resize',\n debounce(() => {\n this.checkSpace();\n }, 200),\n detectIt.passiveEvents ? { capture: false, passive: true } : false\n );\n\n window.addEventListener(\n 'scroll',\n debounce(() => {\n this.checkSpace();\n }, 200),\n detectIt.passiveEvents ? { capture: false, passive: true } : false\n );\n\n forEach(this.select.querySelectorAll('[data-custom-select-options] [data-custom-select-option]'), (item) => {\n item.addEventListener('click', (e) => {\n this.selectOption(e.currentTarget);\n }, detectIt.passiveEvents ? {\n capture: false,\n passive: true,\n } : false);\n });\n }\n\n updateSelectFromNative() {\n const option = this.nativeSelect.querySelector('option:checked');\n const value = option.getAttribute('value');\n this.updateSelected(option.innerText);\n if (detectIt.deviceType !== 'mouseOnly') {\n if (this.changeCallback && typeof this.changeCallback === 'function') {\n this.changeCallback(this.select, value);\n }\n }\n }\n\n checkSpace() {\n const listHeight = this.options.length * ITEM_HEIGHT;\n const selectOffsetY = this.select.getBoundingClientRect().top + window.scrollY;\n\n if ((window.innerHeight - selectOffsetY - ITEM_HEIGHT) + window.scrollY < listHeight) {\n this.dropDownDirection = 'up';\n } else {\n this.dropDownDirection = 'down';\n }\n\n this.select.classList.remove('direction-up');\n this.select.classList.remove('direction-down');\n this.select.classList.add(`direction-${this.dropDownDirection}`);\n }\n\n toggleOptions() {\n if (this.select.classList.contains(ACTIVE_CLASS)) {\n this.closeOptions();\n } else {\n this.openOptions();\n }\n }\n\n openOptions() {\n this.isSelectActive = true;\n this.select.setAttribute('aria-expanded', true);\n this.select.classList.add(ACTIVE_CLASS);\n if (this.selectedIndex > -1) {\n this.options[this.selectedIndex].classList.add('selected');\n }\n this.navigateIndex = this.selectedIndex;\n\n if (isIEorEdge()) {\n this.fixIEOptions();\n }\n }\n\n fixIEOptions() {\n forEach(this.options, (option) => {\n /* eslint-disable no-param-reassign */\n option.style.display = 'none';\n /* eslint-enable no-param-reassign */\n });\n\n window.setTimeout(() => {\n forEach(this.options, (option) => {\n /* eslint-disable no-param-reassign */\n option.style.display = 'flex';\n /* eslint-enable no-param-reassign */\n });\n }, 10);\n }\n\n closeOptions() {\n this.isSelectActive = false;\n this.select.setAttribute('aria-expanded', false);\n this.select.classList.remove(ACTIVE_CLASS);\n }\n\n navigateOptions(keyCode) {\n let newIndex = this.navigateIndex + (keyCode === 38 ? -1 : 1);\n\n if (newIndex < 0) {\n newIndex = 0;\n }\n\n if (newIndex > this.options.length - 1) {\n newIndex = this.options.length - 1;\n }\n\n this.resetOptions(true);\n this.navigateIndex = newIndex;\n this.options[this.navigateIndex].classList.add('hover');\n }\n\n selectOption(item) {\n const value = item.getAttribute('data-custom-select-option');\n const option = this.nativeSelect.querySelector(`option[value='${value}']`);\n\n this.resetOptions();\n this.resetSelection();\n item.classList.add('selected');\n\n if (option !== null) {\n option.setAttribute('selected', true);\n this.nativeSelect.value = value;\n this.select.setAttribute('aria-activedescendant', value);\n this.updateSelected(option.innerText);\n\n if (this.nativeSelect.options && this.nativeSelect[0].value === '') {\n this.selectedIndex = this.nativeSelect.selectedIndex - 1;\n } else {\n this.selectedIndex = this.nativeSelect.selectedIndex;\n }\n this.navigateIndex = this.selectedIndex;\n\n if (this.changeCallback && typeof this.changeCallback === 'function') {\n this.changeCallback(this.select, value);\n }\n }\n }\n\n resetOptions(onlyHover = false) {\n forEach(this.options, (option) => {\n if (onlyHover === false) {\n option.classList.remove('selected');\n }\n option.classList.remove('hover');\n });\n }\n\n resetSelection(customLabel) {\n this.resetOptions();\n this.updateSelected(customLabel || 'please select');\n forEach(this.nativeSelect.querySelectorAll('option'), (option) => {\n option.removeAttribute('selected');\n /* eslint-disable no-param-reassign */\n option.selected = false;\n /* eslint-enable no-param-reassign */\n });\n }\n\n updateSelected(label) {\n this.selected.querySelector('.label').innerHTML = label;\n }\n\n setChangeCallback(callback = null) {\n if (callback && typeof callback === 'function') {\n this.changeCallback = callback;\n }\n }\n}\n\nexport default CustomSelect;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/custom-select.js","/**\n * @fileOverview Image loader module\n *\n * @author Daniel Jung \n *\n * @requires NPM:lodash\n * @requires NPM:in-view\n */\n\nimport forEach from 'lodash/forEach';\nimport throttle from 'lodash/throttle';\nimport detectIt from 'detect-it';\nimport deviceProperties from '../utils/device-properties';\nimport WithinViewport from '../utils/within-viewport';\n\nconst URL = window.location.hostname.match(/localhost|10\\.|127\\./ig)\n ? 'https://futurefocus-staging.staff.hsbc.co.uk/'\n : '';\nconst TOKEN = document.body && document.body.getAttribute('data-token');\nconst TOKEN_MODE = 'header';\n\nconst RANGES = [\n 320, 480, 568, 640, 720, 768,\n 800, 960, 1080, 1200, 1366,\n 1440, 1536, 1600, 1720, 1920,\n 2048, 2160, 2560, 2880, 3000,\n 3200, 3600, 3840, 4000, 5120,\n];\n\nconst isIE = () => (\n /MSIE 10/i.test(navigator.userAgent) ||\n /MSIE 9/i.test(navigator.userAgent) ||\n /rv:11.0/i.test(navigator.userAgent)\n);\n\nclass ImageLoader {\n init() {\n this.devicePixelRatio = deviceProperties.pixelRatio;\n this.screenWidth = deviceProperties.window.width;\n this.activeXHRs = [];\n this.initBindings();\n this.checkAndLoad();\n }\n\n initBindings() {\n window.addEventListener('scroll', throttle(() => {\n this.checkAndLoad();\n }, 50), detectIt.passiveEvents ? { capture: false, passive: false } : false);\n\n window.addEventListener('resize', () => {\n const proportion = 1.2;\n if (this.screenWidth * proportion < window.innerWidth) {\n this.screenWidth = window.innerWidth;\n this.checkAndLoad();\n }\n });\n }\n\n checkAndLoad() {\n forEach(document.body.querySelectorAll('[data-img-src]:not([data-img-loaded])'), (el) => {\n el.removeAttribute('data-img-loaded');\n const imgSrc = el.getAttribute('data-img-src');\n const withinViewport = new WithinViewport(el, {\n container: document.body,\n sides: 'top bottom',\n bottom: -200,\n });\n const imageVisible = withinViewport.isWithin();\n if (imageVisible) {\n this.updateImage(el, imgSrc);\n }\n });\n }\n\n viewportHandler(element) {\n const imageSrc = element.getAttribute('data-img-src');\n if (element.hasAttribute('data-img-loaded')) {\n return false;\n }\n this.updateImage(element, imageSrc);\n return true;\n }\n\n loadImage(src) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n const xhr = new XMLHttpRequest();\n\n xhr.onreadystatechange = () => {\n if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {\n img.src = window.URL.createObjectURL(xhr.response);\n }\n };\n\n img.onload = () => {\n resolve('Image loaded');\n };\n\n img.onerror = () => {\n reject(new Error('Could not load image'));\n };\n\n if (isIE()) {\n if (TOKEN_MODE === 'header') {\n xhr.open('GET', src, true);\n } else {\n img.src = src;\n }\n } else if (TOKEN_MODE === 'header') {\n xhr.open('GET', src, true);\n } else {\n img.src = src;\n }\n\n if (TOKEN_MODE === 'header') {\n if (this.getXHRBySrc(src) === null || this.getXHRBySrc(src) === src) {\n xhr.responseType = 'blob';\n xhr.withCredentials = true;\n xhr.setRequestHeader('token', TOKEN);\n xhr.send();\n this.activeXHRs.push({ xhr, src });\n }\n }\n });\n }\n\n updateImage(element, imageSrc) {\n let width;\n\n if (isIE() && element.tagName.toLowerCase() === 'img') {\n width = Math.floor(element.parentNode.clientWidth * 1.1 * this.devicePixelRatio);\n } else {\n width = Math.floor(element.clientWidth * 1.1 * this.devicePixelRatio);\n }\n\n width = this.getClosestSize(width);\n\n let updatedImageSrc = `${imageSrc.split('?')[0]}?width=${width}&quality=70`;\n\n if (TOKEN_MODE !== 'header') {\n updatedImageSrc += `&token=${TOKEN}`;\n }\n\n if (updatedImageSrc.match(/futurefocus.possible.hu|futurefocus-staging/) === null && URL !== '') {\n updatedImageSrc = `${URL}${updatedImageSrc}`;\n }\n\n this.loadImage(updatedImageSrc)\n .then(() => {\n element.setAttribute('src', updatedImageSrc);\n element.setAttribute('data-img-loaded', 'true');\n })\n .catch(() => {\n if (element.getAttribute('data-img-loaded') === null) {\n element.setAttribute('src', '');\n element.setAttribute('data-img-loaded', 'true');\n element.setAttribute('data-fail-src', imageSrc.split('?')[0]);\n console.warn(`Cannot load image: ${updatedImageSrc}`);\n }\n });\n }\n\n refreshImage() {\n forEach(document.body.querySelectorAll('[data-img-src]:not([data-img-loaded])'), (el) => {\n const imgSrc = el.getAttribute('data-img-src');\n this.updateImage(el, imgSrc);\n });\n }\n\n getClosestSize(originalSize) {\n let selectedSize = false;\n\n forEach(RANGES, (range) => {\n if (originalSize < range && !selectedSize) {\n selectedSize = range;\n }\n });\n return selectedSize;\n }\n\n getXHRBySrc(src) {\n const result = this.activeXHRs.filter(xhr => (xhr.src === src));\n\n if (result && result[0] && result[0].src) {\n return result[0].src;\n }\n return null;\n }\n}\n\nexport const imageLoader = new ImageLoader();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/image-loader.js","/**\n * @fileOverview Navigation handler\n *\n * @author Peter Schmiz \n *\n */\n\nimport forEach from 'lodash/forEach';\nimport detectIt from 'detect-it';\n\nconst OPEN_DROPDOWN_CLASS = 'show-submenu';\n\nclass Navigation {\n init() {\n this.isMobileMenuActive = false;\n this.initDOMElements();\n this.initBindings();\n if (detectIt.deviceType !== 'mouseOnly') {\n this.setMobilmenuFocus('hidden');\n }\n }\n\n initDOMElements() {\n this.header = document.body.querySelector('header');\n this.mobileToggle = document.body.querySelector('[data-header-mobile-toggle]');\n this.advisorLink = document.body.querySelector('[data-header-advisor]');\n this.dropdownMenuContainer = document.body.querySelector('[data-dropdownmenu-container]');\n if (this.dropdownMenuContainer !== null) {\n this.desktopMenuButtons = this.dropdownMenuContainer.querySelectorAll('li.always-visible > a');\n this.dropdownMenu = this.dropdownMenuContainer.querySelector('li ul');\n if (this.dropdownMenu !== null) {\n this.dropdownMenu.setAttribute('data-dropdownmenu', '');\n this.dropdownMenuExpander = this.dropdownMenu.previousElementSibling;\n if (this.dropdownMenuExpander !== null && this.dropdownMenuExpander !== undefined) {\n this.dropdownUrl = this.dropdownMenuExpander.getAttribute('href');\n if (this.dropdownMenu !== null) {\n this.setDropdownAria(false);\n }\n }\n }\n this.allMenuButtons = this.dropdownMenuContainer.querySelectorAll('li a');\n }\n }\n\n initBindings() {\n document.body.querySelector('main').addEventListener('focus', () => {\n if (this.isMobileMenuActive === true) {\n this.mobileToggle.focus();\n }\n }, false);\n\n document.body.addEventListener('click', (e) => {\n if (this.dropDownActive === true && e.target !== this.dropdownMenuExpander) {\n this.hideDropdown();\n }\n }, false);\n\n if (\n this.dropdownMenuExpander !== null &&\n this.dropdownMenuExpander !== undefined &&\n detectIt.deviceType !== 'mouseOnly'\n ) {\n this.bindTabletDropdown = this.tabletDropdown.bind(this);\n this.dropdownMenuExpander.addEventListener('click', this.bindTabletDropdown, false);\n }\n\n if (this.mobileToggle !== null) {\n this.mobileToggle.addEventListener('click', (e) => {\n e.preventDefault();\n if (this.header.classList.contains('header--mobile-menu-active')) {\n this.toggleMobileMenu('close');\n } else {\n this.toggleMobileMenu('open');\n }\n }, false);\n }\n\n window.addEventListener('resize', () => {\n if (this.header.classList.contains('header--mobile-menu-active')) {\n this.toggleMobileMenu('close');\n }\n\n this.hideDropdown();\n });\n\n if (this.advisorLink !== null) {\n this.advisorLink.addEventListener('click', (e) => {\n if (detectIt.deviceType !== 'mouseOnly') {\n e.preventDefault();\n }\n\n if (this.header.classList.contains('header--advisor-menu-active')) {\n this.header.classList.remove('header--advisor-menu-active');\n } else {\n this.header.classList.add('header--advisor-menu-active');\n }\n }, false);\n }\n\n if (this.header !== null) {\n const logo = this.header.querySelector('.header__logo a');\n if (logo !== null) {\n logo.addEventListener('focus', () => {\n this.hideDropdown();\n }, false);\n }\n }\n\n if (this.dropdownMenuContainer !== null && this.desktopMenuButtons !== null && detectIt.deviceType === 'mouseOnly') {\n forEach(this.desktopMenuButtons, (element) => {\n element.addEventListener('focus', () => {\n this.hideDropdown();\n if (element.nextElementSibling !== null) {\n this.showDropdown();\n }\n }, false);\n });\n this.dropdownMenuContainer.querySelector('li:first-of-type').addEventListener('mouseover', () => {\n this.showDropdown();\n });\n this.dropdownMenuContainer.querySelector('li:first-of-type').addEventListener('mouseout', () => {\n this.hideDropdown();\n });\n }\n }\n\n showDropdown() {\n this.dropDownActive = true;\n this.setDropdownAria(true);\n if (this.dropdownMenu) {\n this.dropdownMenu.classList.add(OPEN_DROPDOWN_CLASS);\n }\n }\n\n hideDropdown() {\n this.dropDownActive = false;\n this.setDropdownAria(false);\n if (this.dropdownMenu) {\n this.dropdownMenu.classList.remove(OPEN_DROPDOWN_CLASS);\n }\n }\n\n setDropdownAria(value) {\n if (detectIt.deviceType === 'mouseOnly' && this.dropdownMenuExpander) {\n this.dropdownMenuExpander.setAttribute('aria-expanded', value);\n }\n }\n\n setMobilmenuFocus(state) {\n let stateObj = {};\n\n if (state === 'hidden') {\n stateObj = {\n aria: 'true',\n tabindex: -1,\n };\n } else {\n stateObj = {\n aria: '',\n tabindex: 0,\n };\n }\n\n forEach(this.allMenuButtons, (element) => {\n element.setAttribute('aria-hidden', stateObj.aria);\n element.setAttribute('tabindex', stateObj.tabindex);\n });\n }\n\n toggleMobileMenu(state) {\n if (state === 'close') {\n this.isMobileMenuActive = false;\n this.header.classList.remove('header--mobile-menu-active');\n document.body.classList.remove('fullscreen-active');\n this.mobileToggle.setAttribute('aria-label', 'Open menu');\n this.setMobilmenuFocus('hidden');\n } else {\n this.isMobileMenuActive = true;\n this.header.classList.add('header--mobile-menu-active');\n document.body.classList.add('fullscreen-active');\n this.mobileToggle.setAttribute('aria-label', 'Close menu');\n this.setMobilmenuFocus('visible');\n }\n }\n\n tabletDropdown(e) {\n if (\n detectIt.deviceType !== 'mouseOnly' &&\n window.innerWidth > 768 &&\n this.dropdownMenu.classList.contains(OPEN_DROPDOWN_CLASS) === false\n ) {\n e.preventDefault();\n this.showDropdown();\n return false;\n }\n return true;\n }\n}\n\nexport const navigation = new Navigation();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/navigation.js","/**\n * @fileOverview search module\n *\n * @author Andras Muk \n */\n\nimport forEach from 'lodash/forEach';\nimport detectIt from 'detect-it';\n\nclass Search {\n constructor() {\n this.initialGlossaryContent = '';\n }\n\n init() {\n this.initDOMElements();\n if (this.searchForm !== null) {\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.searchForm = document.body.querySelector('[data-search]');\n this.searchSection = document.body.querySelector('[data-content-search]');\n this.searchAriaResult = document.body.querySelector('[data-search-aria-result]');\n if (this.searchForm !== null) {\n this.searchField = this.searchForm.querySelector('[data-search-input]');\n this.resetButton = this.searchForm.querySelector('[data-search-reset]');\n }\n if (this.searchSection !== null) {\n this.rows = this.searchSection.querySelectorAll('.row');\n }\n this.noResultSection = document.body.querySelector('[data-search-noresults]');\n if (this.noResultSection !== null) {\n this.searchText = this.noResultSection.querySelector('span');\n }\n }\n\n initBindings() {\n const content = this.getContent(this.rows);\n\n this.searchField.addEventListener('keydown', (e) => {\n if ((e.key === 'Enter' || e.keyCode === 13) && detectIt.deviceType !== 'mouseOnly') {\n this.searchField.blur();\n }\n\n if (e.keyCode === 13) {\n e.stopPropagation();\n e.preventDefault();\n }\n });\n\n this.searchField.addEventListener('keyup', (e) => {\n const fieldValue = e.currentTarget.value;\n\n if (fieldValue.length >= 3) {\n this.searchInArray(content, fieldValue);\n } else {\n this.resetList();\n }\n });\n\n this.searchField.addEventListener('blur', () => {\n this.setFilledStatus(this.searchField);\n });\n\n this.resetButton.addEventListener('click', (e) => {\n e.preventDefault();\n this.resetList();\n this.clearSearch();\n this.setFilledStatus(this.searchField);\n });\n }\n\n getContent(rows) {\n const glossaryContent = [];\n\n forEach(rows, (element) => {\n glossaryContent.push(element.innerHTML);\n this.initialGlossaryContent += `
${element.innerHTML}
`;\n });\n\n return glossaryContent;\n }\n\n setFilledStatus(input) {\n if (input.value.length > 0) {\n input.classList.add('filled');\n } else {\n input.classList.remove('filled');\n }\n }\n\n searchInArray(array, text) {\n this.updateList(array.filter(item => item.toLowerCase().includes(text.toLowerCase())), text);\n }\n\n updateList(list, text) {\n let markup = '';\n\n if (list.length === 0) {\n markup = '';\n if (this.noResultSection !== null) {\n this.noResultSection.classList.remove('grid--hidden');\n this.noResultSection.setAttribute('aria-live', 'polite');\n }\n this.searchText.innerHTML = text;\n } else {\n forEach(list, (element) => {\n markup += `
${element}
`;\n });\n this.noResultSection.classList.add('grid--hidden');\n this.noResultSection.removeAttribute('aria-live');\n this.searchText.innerHTML = '';\n }\n\n if (this.searchAriaResult !== null) {\n this.searchAriaResult.setAttribute('aria-live', 'off');\n this.searchAriaResult.setAttribute('role', 'region');\n this.searchAriaResult.innerHTML = 'Searching...';\n window.clearTimeout(this.timeoutTid);\n this.timeoutTid = window.setTimeout(() => {\n if (list.length === 0) {\n this.searchAriaResult.setAttribute('role', 'alert');\n this.searchAriaResult.setAttribute('aria-live', 'assertive');\n this.searchAriaResult.innerHTML = 'No results found.';\n } else {\n this.searchAriaResult.setAttribute('role', 'alert');\n this.searchAriaResult.setAttribute('aria-live', 'assertive');\n this.searchAriaResult.innerHTML = `Search found ${list.length} results.`;\n }\n }, 1000);\n }\n\n this.searchSection.innerHTML = markup;\n }\n\n resetList() {\n this.searchSection.innerHTML = this.initialGlossaryContent;\n if (this.noResultSection !== null) {\n this.noResultSection.classList.add('grid--hidden');\n this.noResultSection.removeAttribute('aria-live');\n }\n }\n\n clearSearch() {\n this.searchField.value = '';\n }\n}\n\nexport const search = new Search();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/search.js","/**\n * @fileOverview Share module\n *\n * @author Andras Muk \n */\n\nclass Share {\n init() {\n this.initDOMElements();\n if (this.share !== null) {\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.share = document.body.querySelector('[data-share]');\n if (this.share !== null) {\n this.shareButton = this.share.querySelector('[data-share-open]');\n this.copyButton = this.share.querySelector('[data-share-copy]');\n }\n }\n\n initBindings() {\n this.shareButton.addEventListener('keyup', (e) => {\n this.toggleShare(this.share, e);\n });\n this.copyButton.addEventListener('click', () => {\n this.copyToClipboard();\n });\n this.copyButton.addEventListener('keyup', (e) => {\n if (e.keyCode === 13) {\n this.copyToClipboard();\n }\n });\n }\n\n copyToClipboard() {\n const tempElement = document.createElement('input');\n tempElement.setAttribute('id', 'tempInput');\n tempElement.setAttribute('value', window.location.href);\n document.body.appendChild(tempElement);\n tempElement.select();\n document.execCommand('copy');\n document.body.removeChild(tempElement);\n }\n\n toggleShare(target, event) {\n if (event.keyCode === 13) {\n if (target.classList.contains('share--active')) {\n target.classList.remove('share--active');\n } else {\n target.classList.add('share--active');\n }\n }\n }\n}\n\nexport const share = new Share();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/share.js","/**\n * @fileOverview tab module\n *\n * @author Andras Muk \n */\n\nimport forEach from 'lodash/forEach';\nimport detectIt from 'detect-it';\nimport 'whatwg-fetch';\nimport { customSelectController } from './custom-select-controller';\nimport { accordion } from './accordion';\nimport { video } from './video';\nimport { imageLoader } from './image-loader';\n\nconst URL = window.location.hostname.match(/localhost|10\\.|127\\./ig) ? 'http://futurefocus.possible.hu' : '';\n\nclass Tab {\n init() {\n this.isLoading = false;\n this.activeTab = null;\n this.initDOMElements();\n if (this.tabSection !== null) {\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.tabSection = document.body.querySelector('[data-tab]');\n if (this.tabSection !== null) {\n this.tabButtons = this.tabSection.querySelectorAll('[data-tab-button]');\n this.tabContent = this.tabSection.querySelector('[data-tab-content]');\n }\n }\n\n initBindings() {\n this.select = customSelectController.getSelectByName('information-centre');\n this.select.setChangeCallback((select, url) => {\n this.setActiveTab(url);\n });\n\n this.bindPagers();\n\n window.addEventListener('popstate', (e) => {\n if (e.state && e.state.url) {\n this.setActiveTab(e.state.url, true);\n }\n }, false);\n\n forEach(this.tabButtons, (link) => {\n link.addEventListener('click', (e) => {\n e.preventDefault();\n this.setActiveTab(link.getAttribute('href'));\n }, false);\n\n if (detectIt.deviceType !== 'mouseOnly') {\n link.addEventListener('touchend', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.setActiveTab(link.getAttribute('href'));\n }, false);\n }\n });\n }\n\n bindPagers() {\n forEach(this.tabSection.querySelectorAll('[data-tab-pager] [data-tab-page]'), (pager) => {\n pager.addEventListener('click', (e) => {\n e.preventDefault();\n this.setActiveTab(pager.getAttribute('href'));\n }, false);\n });\n }\n\n setActiveTab(url, fromHistory = false) {\n if (this.tabButtons !== null) {\n forEach(this.tabButtons, (button) => {\n button.classList.remove('active');\n button.blur();\n button.setAttribute('aria-selected', 'false');\n });\n }\n\n if (this.isLoading === false && this.activeTab !== url) {\n Promise.all([this.fetchTabContent(url)]).then(() => {\n this.isLoading = false;\n this.activeTab = url;\n\n if (fromHistory === false) {\n window.history.pushState({\n url,\n }, document.title, url);\n }\n\n this.updateTabButton(url);\n this.callTealiumView(url);\n }).catch((reason) => {\n this.isLoading = false;\n console.warn(reason);\n });\n }\n }\n\n fetchTabContent(tabUrl) {\n this.isLoading = true;\n\n if (tabUrl.match(/page=/ig) === null) {\n /* eslint-disable no-param-reassign */\n tabUrl += '?page=1';\n /* eslint-enable no-param-reassign */\n }\n\n return fetch(`${URL}${tabUrl}&a=1`, { credentials: 'same-origin' })\n .then(this.checkStatus)\n .then(response => (response.text()))\n .then((responseHtml) => {\n this.parseAndReplaceContent(responseHtml);\n });\n }\n\n checkStatus(response) {\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n const error = new Error(response.statusText);\n error.response = response;\n throw error;\n }\n\n parseAndReplaceContent(html) {\n const tempElement = document.createElement('div');\n tempElement.style.display = 'none';\n tempElement.innerHTML = html;\n\n const content = tempElement.querySelector('[data-tab-content]').innerHTML;\n\n if (content !== null && content !== undefined) {\n this.tabContent.innerHTML = content;\n this.tabContent = this.tabSection.querySelector('[data-tab-content]');\n\n this.bindPagers();\n\n if (this.tabContent.querySelectorAll('[data-img-src]').length > 0) {\n imageLoader.refreshImage();\n }\n\n if (this.tabContent.querySelectorAll('[data-accordion]').length > 0) {\n accordion.destroyBindings();\n accordion.initBindings();\n }\n\n if (this.tabContent.querySelectorAll('[data-video-id]').length > 0) {\n video.initDOMElements();\n video.destroyBindings();\n video.initBindings();\n }\n }\n }\n\n callTealiumView(url) {\n const pieces = url.split('/');\n const currentTab = pieces[pieces.length - 1];\n window.utag.view({\n page_name: `pensions : information_centre : ${currentTab}`,\n page_url: `${url}`,\n page_type: 'article',\n });\n }\n\n updateTabButton(url) {\n const selectedTab = this.tabSection.querySelector(`[href=\"${url.split('?')[0]}\"]`);\n selectedTab.classList.add('active');\n selectedTab.setAttribute('aria-selected', 'true');\n }\n}\n\nexport const tab = new Tab();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/tab.js","/**\n * @fileOverview Tooltip controller\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n */\n\nimport forEach from 'lodash/forEach';\nimport Tooltip from './tooltip';\n\nclass TooltipController {\n constructor() {\n this.tooltips = [];\n }\n\n init() {\n this.initTooltips();\n }\n\n initTooltips() {\n forEach(document.querySelectorAll('[data-tooltip]'), (elem) => {\n this.tooltips.push({\n name: (elem.getAttribute('aria-label') || '').toLowerCase(),\n id: elem.getAttribute('data-tooltip'),\n tooltip: new Tooltip(elem),\n });\n });\n }\n\n closeAllTooltips() {\n forEach(this.tooltips, (elem) => {\n elem.tooltip.close();\n });\n }\n\n getSelectByName(name) {\n const result = this.customSelects.filter(select => (select.name === name));\n\n if (result && result[0] && result[0].select) {\n return result[0].select;\n }\n return null;\n }\n}\n\nexport const tooltipController = new TooltipController();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/tooltip-controller.js","/**\n * @fileOverview Tooltip handler\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n * @requires NPM:detect-it\n */\n\nimport 'whatwg-fetch';\nimport queryString from 'query-string';\nimport throttle from 'lodash/throttle';\nimport detectIt from 'detect-it';\nimport { tooltipController } from './tooltip-controller';\n\nconst ACTIVE_CLASS = 'tooltip--active';\n\nconst ACTIVATE_KEYCODES = [13, 32, 38, 40];\nconst DEACTIVATE_KEYCODES = [27];\n\nconst APIHOST = window.location.hostname.match(/localhost|10\\.|127\\./ig) ? 'http://futurefocus.possible.hu' : '';\n\nclass Tooltip {\n constructor(el) {\n if (!(typeof el && el.nodeName)) {\n throw TypeError('Constructor parameter should be a valid DOM element!');\n }\n\n this.isTooltipActive = false;\n this.tooltipDirection = 'down';\n this.contentLoaded = false;\n this.isLoading = false;\n this.tooltip = el;\n this.id = el.getAttribute('data-tooltip');\n\n this.initDOMElements();\n this.initBindings();\n }\n\n initDOMElements() {\n this.wrapper = this.tooltip.querySelector('[data-tooltip-wrapper]');\n this.body = this.tooltip.querySelector('[data-tooltip-body]');\n this.closeButton = this.tooltip.querySelector('[data-tooltip-close]');\n }\n\n initBindings() {\n this.tooltip.addEventListener('click', (e) => {\n e.preventDefault();\n this.open();\n }, false);\n\n this.tooltip.addEventListener('focus', (e) => {\n e.preventDefault();\n this.open(true);\n }, false);\n\n this.tooltip.addEventListener('keydown', (e) => {\n if (ACTIVATE_KEYCODES.includes(e.keyCode) && this.isTooltipActive === false) {\n this.open();\n } else if (DEACTIVATE_KEYCODES.includes(e.keyCode) && this.isTooltipActive === true) {\n this.close();\n }\n }, false);\n\n if (this.wrapper !== null) {\n this.wrapper.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n }, false);\n\n this.wrapper.addEventListener('blur', () => {\n if (this.isTooltipActive === true && detectIt.deviceType !== 'mouseOnly') {\n this.closeButton.focus();\n }\n }, false);\n }\n\n if (this.closeButton !== null) {\n this.closeButton.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n this.close();\n }, false);\n\n this.closeButton.addEventListener('keydown', (e) => {\n e.preventDefault();\n if (detectIt.deviceType !== 'mouseOnly') {\n if ((e.keycode === 9) || (e.keycode === 9 && e.keycode === 16)) {\n e.preventDefault();\n this.closeButton.focus();\n }\n } else if (e.keycode === 13) {\n this.close();\n }\n }, false);\n }\n\n window.addEventListener('resize', throttle(() => {\n if (this.isTooltipActive) {\n this.wrapper.removeAttribute('style');\n this.checkSpace();\n }\n }, 50), detectIt.passiveEvents ? { capture: false, passive: true } : false);\n }\n\n loadTooltip(doNotOpen = false) {\n if (doNotOpen === false) {\n this.isLoading = true;\n }\n return fetch(`${APIHOST}/api/tooltip`, {\n method: 'POST',\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n body: queryString.stringify({ id: this.id }),\n });\n }\n\n open(doNotOpen = false) {\n if (this.contentLoaded === false && this.isLoading === false) {\n this.loadTooltip(doNotOpen).then(response => response.json()).then((body) => {\n if (body.IsSuccess === true && body.Result) {\n this.body.innerHTML = JSON.parse(body.Result).Text;\n this.contentLoaded = true;\n this.isLoading = false;\n if (doNotOpen !== true) {\n this.showTooltip();\n }\n }\n }).catch((result) => {\n this.isLoading = false;\n console.warn(result);\n });\n } else if (doNotOpen !== true && this.contentLoaded === true) {\n this.showTooltip();\n }\n }\n\n showTooltip() {\n tooltipController.closeAllTooltips();\n this.isTooltipActive = true;\n this.wrapper.setAttribute('aria-hidden', false);\n this.tooltip.classList.remove('tooltip--direction-up');\n this.tooltip.classList.remove('tooltip--direction-down');\n this.tooltip.classList.add(ACTIVE_CLASS);\n if (detectIt.deviceType !== 'mouseOnly') {\n this.setMobileFocus(true);\n }\n this.checkSpace();\n }\n\n close() {\n this.isTooltipActive = false;\n this.wrapper.setAttribute('aria-hidden', true);\n this.wrapper.removeAttribute('style');\n this.tooltip.classList.remove(ACTIVE_CLASS);\n this.tooltip.classList.remove('tooltip--direction-up');\n this.tooltip.classList.remove('tooltip--direction-down');\n if (detectIt.deviceType !== 'mouseOnly') {\n this.setMobileFocus(false);\n }\n }\n\n checkSpace() {\n const wrapperHeight = this.wrapper.offsetHeight;\n const boundingRectangle = this.wrapper.getBoundingClientRect();\n const wrapperOffsetY = boundingRectangle.top + window.scrollY;\n let correctionX = null;\n\n if (detectIt.deviceType === 'mouseOnly') {\n if (boundingRectangle.x + boundingRectangle.width > window.innerWidth) {\n correctionX = ((boundingRectangle.x + boundingRectangle.width) - window.innerWidth);\n this.wrapper.style.left = `calc(50% - ${correctionX}px)`;\n } else if (boundingRectangle.x < 0) {\n correctionX = Math.abs(boundingRectangle.x);\n this.wrapper.style.left = `calc(50% + ${correctionX}px)`;\n }\n }\n\n if ((window.innerHeight - wrapperOffsetY) + window.scrollY < wrapperHeight) {\n this.tooltipDirection = 'up';\n } else {\n this.tooltipDirection = 'down';\n }\n this.tooltip.classList.add(`tooltip--direction-${this.tooltipDirection}`);\n }\n\n setMobileFocus(status = false) {\n if (status === true) {\n this.wrapper.setAttribute('tabindex', 0);\n this.closeButton.focus();\n } else {\n this.wrapper.removeAttribute('tabindex');\n this.tooltip.focus();\n }\n }\n}\n\nexport default Tooltip;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/tooltip.js","/**\n * @fileOverview video module\n *\n * @author Andras Muk \n */\n\nimport forEach from 'lodash/forEach';\nimport { trackEvent } from './analytics';\n\nclass Video {\n constructor() {\n this.currentVideo = {};\n }\n\n init() {\n this.hsbcPlayer = videojs('hsbc-player');\n this.isOverlayActive = false;\n this.activatedVideoId = '';\n\n this.initDOMElements();\n\n this.bindPlayOverlayVideo = this.playOverlayVideo.bind(this);\n this.bindCloseOverlay = this.closeOverlay.bind(this);\n this.bindButtonPress = this.buttonPress.bind(this);\n this.bindPlayButtonPress = this.playButtonPress.bind(this);\n\n if (this.playButtons.length > 0) {\n this.initBindings();\n }\n }\n\n initDOMElements() {\n this.videoContainer = document.body.querySelector('[data-video-player-container]');\n this.playButtons = document.body.querySelectorAll('[data-video-play]');\n this.videoOverlay = document.body.querySelector('[data-video-overlay]');\n if (this.videoOverlay !== null) {\n this.videoOverlay.querySelector('div[data-video-id]').style.display = 'block';\n this.videoOverlay.querySelector('video[data-video-id]').style.display = 'block';\n }\n this.overlayCloseButton = document.body.querySelector('[data-video-close]');\n }\n\n initBindings() {\n this.addBindings();\n\n document.body.querySelector('.header__logo a').addEventListener('focus', () => {\n if (this.isOverlayActive === true) {\n this.overlayCloseButton.focus();\n }\n }, false);\n }\n\n addBindings() {\n forEach(this.playButtons, (element) => {\n element.addEventListener('click', this.bindPlayOverlayVideo, false);\n element.addEventListener('keydown', this.bindPlayButtonPress, false);\n this.parseVideoInfos(element.getAttribute('data-video-id'), element);\n });\n window.addEventListener('keydown', this.bindButtonPress, false);\n if (this.videoOverlay !== null) {\n this.videoOverlay.addEventListener('click', this.bindCloseOverlay, false);\n this.overlayCloseButton.addEventListener('click', this.bindCloseOverlay, false);\n }\n if (this.videoContainer !== null) {\n this.videoContainer.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n }, false);\n }\n if (this.videoContainer !== null) {\n this.videoContainer.addEventListener('focus', () => {\n this.overlayCloseButton.focus();\n }, false);\n }\n this.hsbcPlayer.on('play', () => {\n this.trackVideoEvent('play', this.currentVideo.name, this.currentVideo.id);\n });\n this.hsbcPlayer.on('pause', () => {\n this.trackVideoEvent('stop', this.hsbcPlayer.currentTime(), `${this.currentVideo.id} : ${this.hsbcPlayer.duration()}`);\n });\n }\n\n destroyBindings() {\n forEach(this.playButtons, (element) => {\n element.removeEventListener('click', this.bindPlayOverlayVideo);\n });\n if (this.videoOverlay !== null) {\n this.videoOverlay.removeEventListener('click', this.bindCloseOverlay);\n }\n window.removeEventListener('keydown', this.bindButtonPress);\n }\n\n playOverlayVideo(e) {\n this.isOverlayActive = true;\n this.videoOverlay.classList.add('video__overlay--visible');\n const targetVideoId = e.currentTarget.getAttribute('data-video-id');\n this.hsbcPlayer.catalog.getVideo(targetVideoId, (error, currentVideo) => {\n this.currentVideo = currentVideo;\n this.activatedVideoId = currentVideo.id;\n this.hsbcPlayer.catalog.load(currentVideo);\n this.hsbcPlayer.play();\n this.hsbcPlayer.setAttribute('aria-label', currentVideo.name);\n this.trackVideoEvent('pop up', currentVideo.name, currentVideo.id);\n });\n this.overlayCloseButton.focus();\n this.overlayCloseButton.blur();\n }\n\n parseVideoInfos(videoId, element) {\n this.hsbcPlayer.catalog.getVideo(videoId, (error, currentVideo) => {\n this.currentVideo = currentVideo;\n const imgWrapper = element.querySelector('.cover-image__wrapper');\n const imgElement = imgWrapper.querySelector('img');\n\n if (error !== null) {\n console.warn(`Video load error: ${error.statusText}!`);\n } else if (currentVideo.poster && imgWrapper) {\n if (imgElement !== null) {\n imgElement.setAttribute('src', currentVideo.poster);\n imgElement.removeAttribute('data-img-src');\n imgElement.setAttribute('data-img-loaded', 'true');\n } else {\n const newImg = document.createElement('img');\n newImg.setAttribute('src', currentVideo.poster);\n imgWrapper.appendChild(newImg);\n newImg.setAttribute('data-img-loaded', 'true');\n }\n }\n });\n }\n\n buttonPress(e) {\n if (this.isOverlayActive === true) {\n if (e.keyCode === 27) {\n this.closeOverlay();\n }\n }\n }\n\n playButtonPress(e) {\n if (e.keyCode === 13) {\n e.currentTarget.blur();\n this.playOverlayVideo(e);\n }\n if (e.keyCode === 32) {\n e.preventDefault();\n e.currentTarget.blur();\n this.playOverlayVideo(e);\n }\n }\n\n closeOverlay() {\n this.isOverlayActive = false;\n this.videoOverlay.classList.remove('video__overlay--visible');\n this.trackVideoEvent('close', this.hsbcPlayer.currentTime(), `${this.currentVideo.id} : ${this.currentVideo.duration}`);\n this.hsbcPlayer.reset();\n const sourceItem = document.body.querySelector(`[data-video-id=\"${this.activatedVideoId}\"]:not([data-player])`);\n this.videoOverlay.querySelector('video').setAttribute('data-video-id', '');\n if (sourceItem !== null) {\n sourceItem.focus();\n }\n }\n\n trackVideoEvent(action, content, other = '') {\n trackEvent({\n eventCategory: 'video',\n eventAction: action,\n eventContent: content,\n eventOther: other,\n });\n }\n}\n\nexport const video = new Video();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/video.js","/**\n * @fileOverview Wizard logic handler\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n */\n\nimport forEach from 'lodash/forEach';\nimport { customSelectController } from './custom-select-controller';\nimport { cookieHandling } from '../utils/cookie-handling';\nimport { objectFit } from '../utils/object-fit';\nimport camelCase from '../utils/camelcase';\nimport { trackEvent } from './analytics';\n\nconst PRE_JOINER = 'preJoiner';\nconst ACTIVE_HYBRID = 'activeHybrid';\nconst DEFERRED_HYBRID = 'deferredHybrid';\nconst ACTIVE_DC = 'activeDC';\nconst DEFERRED_DC = 'deferredDC';\nconst DEFERRED_DB = 'deferredDB';\nconst PENSIONER = 'pensioner';\n\nconst OPT_COOKIE = 'pensionOptout';\n\nclass WizardLogic {\n constructor() {\n this.currentStep = 0;\n this.choice = null;\n this.optOut = false;\n this.currentState = this.getInitialState();\n this.wizardDropdowns = [];\n }\n\n init() {\n this.initDOMElements();\n if (this.wizard !== null) {\n this.initBindings();\n this.setState();\n if (window.location && window.location.search && window.location.search.match(/\\?member=new/)) {\n cookieHandling.eraseCookie(OPT_COOKIE);\n }\n }\n }\n\n initDOMElements() {\n this.wizard = document.body.querySelector('[data-wizard]');\n\n if (this.wizard !== null) {\n this.endStep = this.wizard.querySelector('[data-wizard-endstep]');\n this.cta = this.endStep.querySelector('[data-wizard-endstep-cta]');\n this.label = this.endStep.querySelector('[data-wizard-endstep-label]');\n this.optOutBlock = this.endStep.querySelector('[data-wizard-endstep-opt-out]');\n this.checkbox = this.optOutBlock.querySelector('input');\n\n this.wizardData = JSON.parse(this.wizard.getAttribute('data-wizard-data'));\n this.cookieName = this.wizard.getAttribute('data-wizard-cookie-key') || 'pensionTypeCookie';\n this.defaultLabel = this.wizard.getAttribute('data-wizard-default-label') || 'please select';\n\n forEach(this.wizard.querySelectorAll('[data-wizard-select]'), (item) => {\n this.wizardDropdowns.push({\n item,\n name: item.getAttribute('data-wizard-select'),\n });\n });\n }\n }\n\n initBindings() {\n forEach(this.wizardDropdowns, (item) => {\n const customSelect = customSelectController.getSelectByName(item.name);\n customSelect.setChangeCallback(this.onChange.bind(this));\n });\n\n this.checkbox.addEventListener('change', (e) => {\n this.optOut = e.currentTarget.checked;\n\n if (this.optOut) {\n cookieHandling.createCookie(OPT_COOKIE, 1, 30);\n } else {\n cookieHandling.eraseCookie(OPT_COOKIE);\n }\n\n this.setState();\n trackEvent({ eventCategory: 'content', eventAction: 'button click', eventContent: `option : ${this.optOut}` });\n }, false);\n\n if (this.cta) {\n this.cta.addEventListener('click', () => {\n if (this.choice !== null) {\n this.setIdAndUrl();\n }\n }, false);\n }\n }\n\n onChange(select, value) {\n const wizardSelect = select && camelCase(select.getAttribute('data-wizard-select').toLowerCase());\n\n if (wizardSelect === 'personType') {\n this.choice = null;\n this.resetSelects();\n this.resetState();\n }\n\n this.currentState[wizardSelect] = value;\n\n switch (wizardSelect) {\n case 'personType':\n this.currentStep = 1;\n break;\n case 'started':\n this.resetOptOut();\n this.currentStep = 2;\n break;\n case 'joinedV1':\n case 'joinedV2':\n case 'leaving':\n this.currentStep = 3;\n break;\n default:\n break;\n }\n\n this.setState();\n objectFit.update();\n }\n\n getInitialState() {\n return {\n personType: null,\n started: null,\n joinedV1: null,\n joinedV2: null,\n leaving: null,\n };\n }\n\n resetSelects() {\n forEach(this.wizardDropdowns, (item) => {\n const customSelect = customSelectController.getSelectByName(item.name);\n if (item.name !== 'person-type') {\n customSelect.resetSelection(this.defaultLabel);\n }\n });\n }\n\n resetOptOut() {\n this.checkbox.checked = false;\n this.optOut = false;\n }\n\n resetState() {\n this.currentState = this.getInitialState();\n }\n\n setState() {\n this.hideEndStep();\n\n this.hideSelect('person-type');\n this.hideSelect('started');\n this.hideSelect('joined-v1');\n this.hideSelect('joined-v2');\n this.hideSelect('leaving');\n\n switch (this.currentStep) {\n case 0:\n this.showSelect('person-type');\n break;\n case 1:\n this.showSelect('person-type');\n if (this.currentState.personType === 'thinking-about') {\n this.setEndState(PRE_JOINER);\n } else if (this.currentState.personType === 'pensioner') {\n this.setEndState(PENSIONER);\n } else if (\n this.currentState.personType === 'current-employee' ||\n this.currentState.personType === 'former-employee'\n ) {\n this.showSelect('started');\n }\n break;\n case 2:\n this.showSelect('person-type');\n this.showSelect('started');\n\n if (this.currentState.personType === 'current-employee') {\n if (this.currentState.started === 'before-july-1996') {\n this.showSelect('joined-v1');\n } else if (this.currentState.started === 'after-july-1996') {\n this.showSelect('joined-v2');\n }\n } else if (this.currentState.personType === 'former-employee') {\n if (this.currentState.started === 'before-july-1996') {\n this.showSelect('leaving');\n } else if (this.currentState.started === 'after-july-1996') {\n this.setEndState(DEFERRED_DC);\n }\n }\n break;\n case 3:\n this.showSelect('person-type');\n this.showSelect('started');\n if (this.currentState.personType === 'current-employee') {\n if (this.currentState.started === 'before-july-1996') {\n this.showSelect('joined-v1');\n if (this.currentState.joinedV1 === 'directly-from-hsbc') {\n if (this.optOut) {\n this.setEndState(DEFERRED_HYBRID);\n } else {\n this.setEndState(ACTIVE_HYBRID);\n }\n } else if (this.currentState.joinedV1 === 'from-first-district') {\n if (this.optOut) {\n this.setEndState(DEFERRED_DC);\n } else {\n this.setEndState(ACTIVE_DC);\n }\n }\n } else if (this.currentState.started === 'after-july-1996') {\n this.showSelect('joined-v2');\n if (this.currentState.joinedV2 === 'directly-from-hsbc-2') {\n if (this.optOut) {\n this.setEndState(DEFERRED_DC);\n } else {\n this.setEndState(ACTIVE_DC);\n }\n } else if (this.currentState.joinedV2 === 'from-m-and-s-bank') {\n if (this.optOut) {\n this.setEndState(DEFERRED_DB);\n } else {\n this.setEndState(ACTIVE_HYBRID);\n }\n }\n }\n } else if (this.currentState.personType === 'former-employee') {\n this.showSelect('leaving');\n if (this.currentState.leaving === 'before-30-june-2015') {\n this.setEndState(DEFERRED_DB);\n } else if (this.currentState.leaving === 'after-1-july-2015') {\n this.setEndState(DEFERRED_HYBRID);\n }\n }\n break;\n default:\n this.showSelect('person-type');\n break;\n }\n }\n\n hideSelect(name) {\n const select = this.getSelectByName(name);\n\n if (select) {\n select.classList.add('hidden');\n }\n }\n\n showSelect(name) {\n const select = this.getSelectByName(name);\n\n if (select) {\n select.classList.remove('hidden');\n }\n }\n\n setEndState(choice) {\n this.currentStep = 3;\n this.choice = choice;\n this.showOptOut();\n this.setEndStepInfo();\n this.showEndStep();\n }\n\n setEndStepInfo() {\n const profileInfo = this.getProfileInfo();\n\n this.setLabelInfo(profileInfo.WizardText);\n this.setCTA(profileInfo.WizardButtonTitle);\n\n switch (this.choice) {\n case PRE_JOINER:\n this.hideOptOut();\n break;\n case PENSIONER:\n this.hideOptOut();\n break;\n case ACTIVE_DC:\n break;\n case DEFERRED_DC:\n if (this.currentState.personType !== 'current-employee') {\n this.hideOptOut();\n }\n break;\n case DEFERRED_DB:\n if (this.currentState.personType !== 'current-employee') {\n this.hideOptOut();\n }\n break;\n case ACTIVE_HYBRID:\n break;\n case DEFERRED_HYBRID:\n if (this.currentState.personType !== 'current-employee') {\n this.hideOptOut();\n }\n break;\n default:\n break;\n }\n }\n\n setIdAndUrl() {\n const profileInfo = this.getProfileInfo();\n const id = profileInfo.ID;\n const url = profileInfo.Url;\n\n cookieHandling.eraseCookie(this.cookieName);\n cookieHandling.createCookie(this.cookieName, id, 30);\n window.location.href = url;\n }\n\n getProfileInfo() {\n let data = {\n WizardButtonTitle: 'Enter',\n WizardText: '

',\n Id: '',\n Url: '/',\n };\n\n if (this.wizardData) {\n data = this.getProfileByName(this.choice);\n }\n return data;\n }\n\n hideOptOut() {\n this.optOutBlock.classList.add('hidden');\n }\n\n showOptOut() {\n this.optOutBlock.classList.remove('hidden');\n }\n\n showEndStep() {\n this.endStep.classList.remove('hidden');\n }\n\n hideEndStep() {\n this.endStep.classList.add('hidden');\n }\n\n setCTA(label) {\n this.cta.setAttribute('data-event-content', label);\n this.cta.innerHTML = label && label !== '' ? label : 'Enter';\n }\n\n setLabelInfo(label) {\n this.label.innerHTML = label && label !== '' ? label : '';\n }\n\n getSelectByName(name) {\n const result = this.wizardDropdowns.filter(select => (select.name === name));\n\n if (result && result[0] && result[0].item) {\n return result[0].item;\n }\n return null;\n }\n\n getProfileByName(name) {\n const result = this.wizardData.filter(data => (Object.keys(data)[0] === name));\n\n if (result && result[0] && result[0][name]) {\n return result[0][name];\n }\n return null;\n }\n}\n\nexport const wizardLogic = new WizardLogic();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/modules/wizard-logic.js","/**\n * @fileOverview Camelcase helper\n *\n * @author Peter Schmiz \n *\n */\n\nconst camelCase = item => (\n item.replace(/(-[a-z])/g, $1 => (\n $1.toUpperCase().replace('-', '')\n )));\n\nexport default camelCase;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/camelcase.js","/**\n * @fileOverview Cookie handler utility\n *\n * @author Andras Muk \n */\n\nclass CookieHandling {\n createCookie(name, value, days) {\n const date = new Date();\n let expires = '';\n\n if (days) {\n date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));\n expires = `; expires= ${date.toUTCString()};`;\n }\n document.cookie = `${name} = ${value} ${expires}; path=/`;\n }\n\n eraseCookie(name) {\n this.createCookie(name, '', -1);\n }\n\n getCookie(name) {\n if (document.cookie.length > 0) {\n let start = document.cookie.indexOf(`${name}=`);\n\n if (start !== -1) {\n start = start + name.length + 1;\n let end = document.cookie.indexOf(';', start);\n\n if (end === -1) {\n end = document.cookie.length;\n }\n return decodeURI(document.cookie.substring(start, end));\n }\n }\n return '';\n }\n\n checkCookie(name) {\n const cookieName = this.getCookie(name);\n return cookieName !== null && cookieName !== '';\n }\n}\n\nexport const cookieHandling = new CookieHandling();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/cookie-handling.js","/**\n * @fileOverview Development helper\n *\n * @author Peter Schmiz \n *\n * @requires NPM:detect-it\n */\n\nimport detectIt from 'detect-it';\n\nclass Develop {\n init() {\n if (detectIt.passiveEvents === true) {\n document.body.addEventListener('keyup', this.toggleDebug, { capture: false, passive: true });\n } else {\n document.body.addEventListener('keyup', this.toggleDebug, false);\n }\n }\n\n toggleDebug(event) {\n if (event.which === 71) {\n document.body.classList.toggle('debug');\n }\n }\n}\n\nexport const develop = new Develop();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/develop.js","/**\n * @fileOverview Device properties helper\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n * @requires NPM:detect-it\n */\n\nimport throttle from 'lodash/throttle';\nimport detectIt from 'detect-it';\n\nlet deviceProperties;\nlet listenersAdded = false;\n\nconst measureScrollbar = () => {\n const scrollDiv = document.createElement('div');\n let scrollbarWidth = 0;\n\n scrollDiv.classList.add('scrollbar-measure');\n document.body.appendChild(scrollDiv);\n scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n\n return scrollbarWidth;\n};\n\nconst updateProperties = () => {\n const w = window;\n const d = document;\n const e = d.documentElement;\n const g = d.getElementsByTagName('body')[0];\n const W = w.innerWidth || e.clientWidth || g.clientWidth;\n const H = w.innerHeight || e.clientHeight || g.clientHeight;\n\n deviceProperties.window.width = W;\n deviceProperties.window.height = H;\n};\n\nconst initDeviceProperties = () => {\n const w = window;\n const d = document;\n const e = d.documentElement;\n const g = d.getElementsByTagName('body')[0];\n const W = w.innerWidth || e.clientWidth || g.clientWidth;\n const H = w.innerHeight || e.clientHeight || g.clientHeight;\n\n if (listenersAdded === false) {\n listenersAdded = true;\n window.addEventListener('resize', throttle(() => {\n updateProperties();\n }, 50), detectIt.passiveEvents ? { capture: false, passive: true } : false);\n }\n\n deviceProperties = {\n connection: navigator.connection ? navigator.connection : 'unknown',\n pixelRatio: window.devicePixelRatio,\n scrollbarWidth: measureScrollbar(),\n window: {\n width: W,\n height: H,\n },\n };\n};\n\nconst getDeviceProperties = () => deviceProperties;\n\ninitDeviceProperties();\n\nexport default getDeviceProperties();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/device-properties.js","/**\n * @fileOverview General helper functions\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n * @requires NPM:detect-it\n * @requires utils/object-fit\n * @requires utils/develop\n * @requires utils/svg-sprite-loader\n */\n\nimport detectIt from 'detect-it';\nimport throttle from 'lodash/throttle';\nimport { objectFit } from './object-fit';\nimport { develop } from './develop';\nimport loadSvgSprite from './svg-sprite-loader';\n\nconst DEBUG_HOSTS = /localhost/ig;\nlet scrollTimerId;\n\n/**\n * General page helper methods and utilities\n */\n\nclass Helper {\n constructor() {\n this.inited = false;\n }\n\n init() {\n loadSvgSprite();\n\n if ('objectFit' in document.documentElement.style === false) {\n window.setTimeout(() => {\n objectFit.init();\n }, 500);\n window.addEventListener('resize', throttle(() => {\n objectFit.update();\n }, 100));\n }\n\n this.onScrollBind = this.onScroll.bind(this);\n if (detectIt.deviceType === 'mouseOnly') {\n this.initScrollPerformance();\n }\n\n if (detectIt.deviceType !== 'mouseOnly') {\n document.documentElement.classList.remove('no-touch');\n document.documentElement.classList.add('touch');\n }\n\n if (\n window.location &&\n window.location.host &&\n window.location.host.match(DEBUG_HOSTS) !== null &&\n this.inited === false\n ) {\n develop.init();\n }\n }\n\n initScrollPerformance() {\n window.addEventListener(\n 'scroll',\n this.onScrollBind,\n detectIt.passiveEvents ? { capture: false, passive: true } : false\n );\n }\n\n onScroll() {\n window.clearTimeout(scrollTimerId);\n if (document.body.querySelector('main').classList.contains('no-hover') === false) {\n this.disableHover();\n }\n\n scrollTimerId = setTimeout(() => {\n this.enableHover();\n }, 500);\n }\n\n disableHover() {\n document.body.querySelector('main').classList.add('no-hover');\n }\n\n enableHover() {\n document.body.querySelector('main').classList.remove('no-hover');\n }\n\n getParentNode(elem, selector) {\n const elements = [];\n const hasSelector = selector !== undefined;\n let element = elem;\n\n /* eslint-disable no-cond-assign, no-continue */\n while ((element = element.parentElement) !== null) {\n if (element.nodeType !== Node.ELEMENT_NODE) {\n continue;\n }\n if (!hasSelector || this.selectorMatches(element, selector)) {\n elements.push(element);\n }\n }\n /* eslint-enable no-cond-assign, no-continue */\n\n return elements;\n }\n\n selectorMatches(el, selector) {\n const p = Element.prototype;\n const m = s => (\n [].indexOf.call(document.querySelectorAll(s), this) !== -1\n );\n const f = p.matches ||\n p.webkitMatchesSelector ||\n p.mozMatchesSelector ||\n p.msMatchesSelector ||\n m;\n\n return f.call(el, selector);\n }\n\n /* eslint-disable no-bitwise, no-param-reassign */\n\n lightenDarkenColor(col, amt) {\n let usePound = false;\n\n if (col[0] === '#') {\n col = col.slice(1);\n usePound = true;\n }\n\n const num = parseInt(col, 16);\n let r = (num >> 16) + amt;\n if (r > 255) {\n r = 255;\n } else if (r < 0) {\n r = 0;\n }\n\n let b = ((num >> 8) & 0x00FF) + amt;\n\n if (b > 255) {\n b = 255;\n } else if (b < 0) {\n b = 0;\n }\n\n let g = (num & 0x0000FF) + amt;\n\n if (g > 255) {\n g = 255;\n } else if (g < 0) {\n g = 0;\n }\n\n return (usePound ? '#' : '') + (g | (b << 8) | (r << 16)).toString(16);\n }\n\n isLightColor(col) {\n if (col[0] === '#') {\n col = col.slice(1);\n }\n\n const num = parseInt(col, 16);\n const r = (num >> 16);\n const g = ((num >> 8) & 0x00FF);\n const b = (num & 0x0000FF);\n\n return (r > 200 && g > 200 && b > 200);\n }\n\n colorToHex(color) {\n if (color.substr(0, 1) === '#') {\n return color;\n }\n let digits = /(.*?)rgb\\((\\d+), (\\d+), (\\d+)\\)/.exec(color);\n if (!digits) {\n digits = /(.*?)rgba\\((\\d+), (\\d+), (\\d+), (\\d+)\\)/.exec(color);\n }\n\n const red = parseInt(digits[2], 10);\n const green = parseInt(digits[3], 10);\n const blue = parseInt(digits[4], 10);\n\n const rgb = blue | (green << 8) | (red << 16);\n\n return `${digits[1]}#${rgb.toString(16)}`;\n }\n\n /* eslint-enable no-bitwise */\n}\n\nexport const helper = new Helper();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/helper.js","/**\n * @fileOverview liveBinding module\n *\n * @author Daniel Jung \n *\n */\n\nconst toArray = (nodeList) => {\n const res = [];\n let i = 0;\n const l = (nodeList && nodeList.length) || 0;\n for (i; i < l; i++) {\n res.push(nodeList[i]);\n }\n return res;\n};\n\nconst liveBinding = (selector, eventType, callback, selectorException) => {\n document.addEventListener(eventType, (event) => {\n const nodeList = document.querySelectorAll(selector);\n const matches = toArray(nodeList);\n let nodeListExceptions = null;\n let matchesException = null;\n if (selectorException) {\n nodeListExceptions = document.querySelectorAll(selectorException);\n matchesException = toArray(nodeListExceptions);\n }\n\n if (matches) {\n let element = event.target;\n let index = matches.indexOf(element);\n let stopPropagation = false;\n\n while (element && index === -1) {\n element = element.parentElement;\n index = matches.indexOf(element);\n if (matchesException && matchesException.indexOf(element) === -1) {\n stopPropagation = true;\n }\n }\n\n if (index > -1 && !stopPropagation) {\n callback.call(element, event, element);\n }\n }\n }, false);\n};\n\nexport default liveBinding;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/live-event-binding.js","/**\n * @fileOverview Object fit polyfill\n *\n * @author Peter Schmiz \n *\n * @requires NPM:lodash\n */\n\n/* eslint-disable no-param-reassign, prefer-destructuring */\nimport forEach from 'lodash/forEach';\n\nclass ObjectFit {\n init() {\n this.media = document.body.querySelectorAll('[data-object-fit]');\n\n for (let i = 0; i < this.media.length; i++) {\n const mediaType = this.media[i].nodeName.toLowerCase();\n\n if (mediaType === 'img') {\n if (this.media[i].complete) {\n this.objectFit(this.media[i]);\n } else if (this.media[i].set !== true) {\n this.media[i].addEventListener('load', () => {\n this.objectFit(this.media[i]);\n });\n this.media[i].set = true;\n }\n } else if (mediaType === 'video') {\n if (this.media[i].readyState > 0) {\n this.objectFit(this.media[i]);\n } else {\n this.media[i].addEventListener('loadedmetadata', () => {\n this.objectFit(this.media[i]);\n });\n }\n }\n }\n }\n\n update() {\n if (this.media) {\n for (let i = 0; i < this.media.length; i++) {\n this.objectFit(this.media[i]);\n }\n }\n }\n\n checkParentContainer(container) {\n const styles = window.getComputedStyle(container, null);\n const position = styles.getPropertyValue('position');\n const overflow = styles.getPropertyValue('overflow');\n const display = styles.getPropertyValue('display');\n\n if (!position || position === 'static') {\n container.style.position = 'relative';\n }\n\n if (overflow !== 'hidden') {\n container.style.overflow = 'hidden';\n }\n\n if (!display || display === 'inline') {\n container.style.display = 'block';\n }\n\n if (container.clientHeight === 0) {\n container.style.height = '100%';\n }\n\n if (container.className.indexOf('object-fit-polyfill') === -1) {\n container.className = `${container.className} object-fit-polyfill`;\n }\n }\n\n checkMediaProperties(media) {\n const styles = window.getComputedStyle(media, null);\n const constraints = {\n 'max-width': 'none',\n 'max-height': 'none',\n 'min-width': '0px',\n 'min-height': '0px',\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto',\n 'margin-top': '0px',\n 'margin-right': '0px',\n 'margin-bottom': '0px',\n 'margin-left': '0px',\n };\n\n forEach(constraints, (property) => {\n const constraint = styles.getPropertyValue(property);\n\n if (constraint !== constraints[property]) {\n media.style[property] = constraints[property];\n }\n });\n }\n\n setPosition(axis, media, objectPosition) {\n let position;\n let other;\n let start;\n let end;\n let side;\n\n objectPosition = objectPosition.split(' ');\n\n if (objectPosition.length < 2) {\n objectPosition[1] = objectPosition[0];\n }\n\n if (axis === 'x') {\n position = objectPosition[0];\n other = objectPosition[1];\n start = 'left';\n end = 'right';\n side = media.clientWidth;\n } else if (axis === 'y') {\n position = objectPosition[1];\n other = objectPosition[0];\n start = 'top';\n end = 'bottom';\n side = media.clientHeight;\n } else {\n return;\n }\n\n if (position === start || other === start) {\n media.style[start] = '0';\n return;\n }\n\n if (position === end || other === end) {\n media.style[end] = '0';\n return;\n }\n\n if (position === 'center' || position === '50%') {\n media.style[start] = '50%';\n media.style[`margin-${start}`] = `${(side / -2)}px`;\n return;\n }\n\n if (position.indexOf('%') >= 0) {\n position = parseInt(position, 10);\n if (position < 50) {\n media.style[start] = `${position}%`;\n media.style[`margin-${start}`] = `${side * (position / -100)}px`;\n } else {\n position = 100 - position;\n media.style[end] = `${position}%`;\n media.style[`margin-${end}`] = `${side * (position / -100)}px`;\n }\n } else {\n media.style[start] = position;\n }\n }\n\n objectFit(media) {\n let fit = (media.dataset) ? media.dataset.objectFit : media.getAttribute('data-object-fit');\n let position = (media.dataset) ? media.dataset.objectPosition : media.getAttribute('data-object-position');\n fit = fit || 'cover';\n position = position || '50% 50%';\n\n const container = media.parentNode;\n this.checkParentContainer(container);\n this.checkMediaProperties(media);\n\n media.style.position = 'absolute';\n media.style.height = '100%';\n media.style.width = 'auto';\n\n if (fit === 'scale-down') {\n media.style.height = 'auto';\n\n if (\n media.clientWidth < container.clientWidth &&\n media.clientHeight < container.clientHeight\n ) {\n this.setPosition('x', media, position);\n this.setPosition('y', media, position);\n } else {\n fit = 'contain';\n media.style.height = '100%';\n }\n }\n\n if (fit === 'none') {\n media.style.width = 'auto';\n media.style.height = 'auto';\n this.setPosition('x', media, position);\n this.setPosition('y', media, position);\n } else if (\n (\n fit === 'cover' && media.clientWidth > container.clientWidth\n ) ||\n (\n fit === 'contain' && media.clientWidth < container.clientWidth\n )\n ) {\n media.style.top = '0';\n media.style.marginTop = '0';\n this.setPosition('x', media, position);\n } else if (fit !== 'scale-down') {\n media.style.width = '100%';\n media.style.height = 'auto';\n media.style.left = '0';\n media.style.marginLeft = '0';\n this.setPosition('y', media, position);\n }\n }\n}\n\nexport const objectFit = new ObjectFit();\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/object-fit.js","/**\n * @fileOverview XHR based SVG loader\n *\n * @author Peter Schmiz \n */\n\nexport const requestTimeout = (fn, delay) => {\n if (\n !window.requestAnimationFrame && !window.webkitRequestAnimationFrame && !(\n window.mozRequestAnimationFrame &&\n window.mozCancelRequestAnimationFrame\n ) && !window.oRequestAnimationFrame && !window.msRequestAnimationFrame\n ) {\n return window.setTimeout(fn, delay);\n }\n\n const start = new Date().getTime();\n const handle = {};\n\n function loop() {\n const current = new Date().getTime();\n const delta = current - start;\n\n if (delta >= delay) {\n fn.call();\n } else {\n handle.value = window.requestAnimationFrame(loop);\n }\n }\n\n handle.value = window.requestAnimationFrame(loop);\n return handle;\n};\n\n/* eslint-disable no-nested-ternary, no-unused-expressions */\nexport const clearRequestTimeout = (handle) => {\n window.cancelAnimationFrame ?\n window.cancelAnimationFrame(handle.value) :\n window.webkitCancelAnimationFrame ?\n window.webkitCancelAnimationFrame(handle.value) :\n window.webkitCancelRequestAnimationFrame ?\n window.webkitCancelRequestAnimationFrame(handle.value) :\n window.mozCancelRequestAnimationFrame ?\n window.mozCancelRequestAnimationFrame(handle.value) :\n window.oCancelRequestAnimationFrame ?\n window.oCancelRequestAnimationFrame(handle.value) :\n window.msCancelRequestAnimationFrame ?\n window.msCancelRequestAnimationFrame(handle.value) :\n clearTimeout(handle);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/request-timeout.js","/**\n * @fileOverview XHR based SVG loader\n *\n * @author Peter Schmiz \n */\n\nconst httpRequest = new XMLHttpRequest();\n\nconst addSpriteToDOM = (sprite) => {\n const svgElement = document.createElement('div');\n\n svgElement.style.display = 'none';\n svgElement.innerHTML = sprite;\n document.body.appendChild(svgElement);\n};\n\nconst onChange = () => {\n if (httpRequest.readyState === XMLHttpRequest.DONE && httpRequest.status === 200) {\n addSpriteToDOM(httpRequest.responseText);\n }\n};\n\nconst makeRequest = (url) => {\n httpRequest.onreadystatechange = onChange;\n httpRequest.open('GET', url);\n httpRequest.send();\n};\n\nconst loadSvgSprite = () => {\n makeRequest(document.body.getAttribute('data-svg-url') || '/images/svg-sprite.svg');\n document.body.classList.add('svg-loaded');\n};\n\nexport default loadSvgSprite;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/svg-sprite-loader.js","/**\n * @fileOverview Within viewport port\n *\n * @author Peter Schmiz \n *\n */\n\nclass WithinViewport {\n constructor(elem, options) {\n this.result = false;\n this.metadata = {};\n this.config = {};\n this.settings = {};\n this.isContainerTheWindow = null;\n this.elemBoundingRect = null;\n this.containerBoundingRect = null;\n this.scrollBarWidths = [0, 0];\n\n this.settings = options || {};\n\n if (typeof elem !== 'object' || elem.nodeType !== 1) {\n throw new Error('First argument must be an element');\n }\n\n this.elemBoundingRect = elem.getBoundingClientRect();\n\n this.config.container = this.settings.container || this.metadata.container || window;\n this.config.sides = this.settings.sides || this.metadata.sides || 'all';\n this.config.top = this.settings.top || this.metadata.top || 0;\n this.config.right = this.settings.right || this.metadata.right || 0;\n this.config.bottom = this.settings.bottom || this.metadata.bottom || 0;\n this.config.left = this.settings.left || this.metadata.left || 0;\n\n if (this.config.container === document.body || !this.config.container.nodeType === 1) {\n this.config.container = window;\n }\n\n this.isContainerTheWindow = (this.config.container === window);\n\n if (this.isContainerTheWindow) {\n this.containerBoundingRect = document.documentElement.getBoundingClientRect();\n this.containerScrollTop = document.body.scrollTop;\n this.containerScrollLeft = document.body.scrollLeft;\n } else {\n this.containerBoundingRect = this.config.container.getBoundingClientRect();\n this.containerScrollTop = this.config.container.scrollTop;\n this.containerScrollLeft = this.config.container.scrollLeft;\n }\n\n if (this.containerScrollLeft) {\n this.scrollBarWidths[0] = 18;\n }\n\n if (this.containerScrollTop) {\n this.scrollBarWidths[1] = 16;\n }\n }\n\n isWithin() {\n const sideNamesPattern = /^top$|^right$|^bottom$|^left$|^all$/;\n const sides = this.config.sides.split(' ');\n let i = sides.length;\n let result = false;\n\n while (i--) {\n const side = sides[i].toLowerCase();\n\n if (sideNamesPattern.test(side)) {\n if (side === 'top') {\n if (this.isWithinTop() === true) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n\n if (side === 'bottom') {\n if (this.isWithinBottom() === true) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n\n if (side === 'left') {\n if (this.isWithinLeft() === true) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n\n if (side === 'right') {\n if (this.isWithinRight() === true) {\n result = true;\n } else {\n result = false;\n break;\n }\n }\n }\n }\n\n return result;\n }\n\n isWithinTop() {\n if (this.isContainerTheWindow) {\n return (this.elemBoundingRect.top >= this.config.top);\n }\n\n return (\n this.elemBoundingRect.top >= this.containerScrollTop - (\n (this.containerScrollTop - this.containerBoundingRect.top) + this.config.top\n )\n );\n }\n\n isWithinBottom() {\n let containerHeight;\n\n if (this.isContainerTheWindow) {\n containerHeight = this.config.container.innerHeight;\n } else {\n containerHeight = this.containerBoundingRect.bottom;\n }\n return (\n this.elemBoundingRect.bottom <= containerHeight - this.scrollBarWidths[1] - this.config.bottom\n );\n }\n\n isWithinLeft() {\n if (this.isContainerTheWindow) {\n return (this.elemBoundingRect.left >= this.config.left);\n }\n return (\n this.elemBoundingRect.left >= this.containerScrollLeft - (\n (this.containerScrollLeft - this.containerBoundingRect.left) + this.config.left)\n );\n }\n\n isWithinRight() {\n if (this.isContainerTheWindow) {\n return (\n this.elemBoundingRect.right <= (\n (this.containerBoundingRect.right + this.containerScrollLeft) - this.config.right\n )\n );\n }\n return (\n this.elemBoundingRect.right <= (\n this.containerBoundingRect.right - this.scrollBarWidths[0]\n ) - this.config.right\n );\n }\n\n isWithinAll() {\n return (\n this.isWithinTop() &&\n this.isWithinBottom() &&\n this.isWithinLeft() &&\n this.isWithinRight()\n );\n }\n}\n\nexport default WithinViewport;\n\n\n\n// WEBPACK FOOTER //\n// ./src/js/utils/within-viewport.js"],"sourceRoot":""}