{"version":3,"sources":["webpack:///index-6d55ca.js","webpack:///webpack/bootstrap 6d55ca035541536162b0","webpack:///./src/shared/stylesheets/background.css","webpack:///./~/define-properties/index.js","webpack:///./~/es-abstract/es6.js","webpack:///./src/shared/stylesheets/alignment/index.css","webpack:///./src/shared/utils/imageUtils.js","webpack:///./src/shared/stylesheets/video.css","webpack:///./src/shared/utils/googleAnalytics.js","webpack:///./src/shared/utils/renderUtils.js","webpack:///./~/has/src/index.js","webpack:///./~/is-callable/index.js","webpack:///./~/lodash/isObject.js","webpack:///./~/lodash/throttle.js","webpack:///(webpack)/buildin/global.js","webpack:///./~/@nrk/serum-imagecrop-utils/lib/index.js","webpack:///./~/array-includes/implementation.js","webpack:///./~/array-includes/polyfill.js","webpack:///./~/array.from/implementation.js","webpack:///./~/array.from/polyfill.js","webpack:///./~/array.prototype.find/implementation.js","webpack:///./~/array.prototype.find/polyfill.js","webpack:///./src/shared/components/index.js","webpack:///./src/shared/utils/general.js","webpack:///./~/es-abstract/helpers/isFinite.js","webpack:///./~/es-abstract/helpers/isNaN.js","webpack:///./~/es-abstract/helpers/mod.js","webpack:///./~/es-abstract/helpers/sign.js","webpack:///./~/es-to-primitive/helpers/isPrimitive.js","webpack:///./src/shared/index.css","webpack:///./~/function-bind/index.js","webpack:///./~/lodash/_Symbol.js","webpack:///./~/lodash/_root.js","webpack:///./~/lodash/debounce.js","webpack:///./config/polyfills.js","webpack:///./src/client/index.js","webpack:///./~/array-includes/index.js","webpack:///./~/array-includes/shim.js","webpack:///./~/array.from/index.js","webpack:///./~/array.from/shim.js","webpack:///./~/array.prototype.find/index.js","webpack:///./~/array.prototype.find/shim.js","webpack:///./src/client/intersection.js","webpack:///./src/client/reducer.js","webpack:///./src/client/transitionManager.js","webpack:///./src/client/utils/featuretests.js","webpack:///./src/shared/components/animateVideo.js","webpack:///./src/shared/components/color.js","webpack:///./src/shared/components/flipScroll.js","webpack:///./src/shared/components/image.js","webpack:///./src/shared/components/panorama.js","webpack:///./src/shared/components/polopoly.js","webpack:///./src/shared/components/renderless/activeClass.js","webpack:///./src/shared/components/triggerOnScroll.js","webpack:///./src/shared/components/video.js","webpack:///./src/shared/utils/muteButtons.js","webpack:///./~/es-abstract/es2015.js","webpack:///./~/es-abstract/es5.js","webpack:///./~/es-abstract/helpers/assign.js","webpack:///./~/es-abstract/helpers/isPrimitive.js","webpack:///./~/es-to-primitive/es5.js","webpack:///./~/es-to-primitive/es6.js","webpack:///./~/es6-promise/dist/es6-promise.js","webpack:///./src/shared/stylesheets/animations.css","webpack:///./src/shared/stylesheets/block.css","webpack:///./src/shared/stylesheets/byline.css","webpack:///./src/shared/stylesheets/transitions.css","webpack:///./~/foreach/index.js","webpack:///./~/function-bind/implementation.js","webpack:///./~/intersection-observer/intersection-observer.js","webpack:///./~/is-date-object/index.js","webpack:///./~/is-regex/index.js","webpack:///./~/is-symbol/index.js","webpack:///./~/lodash/_baseGetTag.js","webpack:///./~/lodash/_freeGlobal.js","webpack:///./~/lodash/_getRawTag.js","webpack:///./~/lodash/_objectToString.js","webpack:///./~/lodash/isObjectLike.js","webpack:///./~/lodash/isSymbol.js","webpack:///./~/lodash/now.js","webpack:///./~/lodash/toNumber.js","webpack:///./~/object-keys/index.js","webpack:///./~/object-keys/isArguments.js","webpack:///./~/process/browser.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","backgrounds","background","visible","background--active","backgroundActive","background--ready","backgroundReady","superoverlay","backgroundGradient","uncropped-image-container","uncroppedImageContainer","panorama-image-container","panoramaImageContainer","trigger-on-scroll-container","triggerOnScrollContainer","background-overlay","backgroundOverlay","keys","foreach","hasSymbols","Symbol","toStr","toString","isFunction","fn","supportsDescriptors","obj","_","x","e","predicate","writable","defineProperties","map","predicates","arguments","length","props","concat","getOwnPropertySymbols","align-top","alignTop","align-center","alignCenter","align-left","alignLeft","align-right","alignRight","align-middle","alignMiddle","align-bottom","alignBottom","mobile-align-top","mobileAlignTop","mobile-align-center","mobileAlignCenter","mobile-align-left","mobileAlignLeft","mobile-align-right","mobileAlignRight","mobile-align-middle","mobileAlignMiddle","mobile-align-bottom","mobileAlignBottom","createSrcSet","imageId","ratio","supportedWidths","width","_serumImagecropUtils","createImageUrl","id","quality","join","prepareUrl","url","replace","getPolopolyImageElement","polopolyId","alignmentClasses","undefined","imgStyle","pictureStyle","defaultUrl","getImageElement","imageUrl","video","darkedout","fullscreen--video","fullscreenVideo","fullscreen--video--container","fullscreenVideoContainer","video-mute-button","videoMuteButton","video-mute-svg-muted-hover","videoMuteSvgMutedHover","video-mute-svg-unmuted-hover","videoMuteSvgUnmutedHover","hide-play","hidePlay","subtitlescontainer","subtitles","initialize","trackingEnabled","isTrackingEnabled","trackAction","action","sendToGoogleAnalytics","category","label","_ref","window","ga","console","log","getOverlayElement","_background","overlay","defaultOverlay","opacity","color","assign","bind","Function","fnToStr","constructorRegex","isES6ClassFn","fnStr","singleStripped","multiStripped","spaceStripped","test","tryFunctionObject","hasToStringTag","toStringTag","strClass","isObject","type","throttle","func","wait","options","leading","trailing","TypeError","FUNC_ERROR_TEXT","debounce","maxWait","g","this","eval","global","factory","isPolopolyId","isPolopolyIdRegex","createUrl","_baseUrl","queryString","createQueryString","_ref2","getClosestNumber","goal","targets","isValidGoal","Error","isValidTargets","reduce","prev","curr","Math","abs","isValid","isValidRatio","supportedRatios","Array","isArray","includes","isValidQuality","supportedQualities","args","hasOption","ratios","qualities","isNumber","errorMessage","isSupportedWidth","widths","closestWidth","option","number","Number","isInteger","ES","$isNaN","isNaN","a","$isFinite","isFinite","indexOf","searchElement","fromIndex","ToInteger","apply","O","ToObject","ToLength","k","max","SameValueZero","implementation","arrayLike","key","descriptor","C","mapFn","T","items","IsCallable","kValue","mappedValue","len","A","Call","tryCall","from","Infinity","list","thisArg","find","components","_image","_color","_video","_panorama","_flipScroll","_triggerOnScroll","_animateVideo","_activeClass","setActiveElementClass","imageComponent","colorComponent","videoComponent","panoramaComponent","triggerOnScrollComponent","flipScrollComponent","animateVideoComponent","constrain","min","modulo","remain","floor","sections","section","section--no-min-height","sectionNoMinHeight","section--ready","sectionReady","section--active","sectionActive","sectionAfterStandup","sectionBeforeStandup","standup","super","super__content","superContent","blurred","NRKlogo","nrKlogo","shareButtonGroup","shareButton","to-top","toTop","intro-block-arrow","introBlockArrow","fadeIn","arrowBlink","root","freeGlobal","freeSelf","self","invokeFunc","time","lastArgs","lastThis","lastInvokeTime","result","leadingEdge","timerId","setTimeout","timerExpired","remainingWait","timeSinceLastCall","lastCallTime","timeSinceLastInvoke","maxing","nativeMin","shouldInvoke","now","trailingEdge","cancel","clearTimeout","flush","debounced","isInvoking","toNumber","nativeMax","shim","Promise","polyfill","_interopRequireDefault","default","_toConsumableArray","arr","arr2","_classCallCheck","instance","Constructor","_extends","target","source","_index","_index2","_video2","_muteButtons","_googleAnalytics","_intersection","_reducer","_components","App","container","initialState","_this","setSectionId","sectionId","mount","sectionElements","document","querySelectorAll","state","canAutoplay","foregroundElement","backgroundElement","getElementById","shareButtons","querySelector","muteButton","addEventListener","toggleMuteVideo","initializeGoogleAnalytic","mountListeners","error","renderError","gaInitialized","getAttribute","unmount","unmountListeners","innerHTML","ioCallback","changes","intersectionObserverCallback","dispatch","threshold","observer","IntersectionObserver","POLL_INTERVAL","forEach","observe","render","stopPropagation","muted","onStateChanged","showMuteButton","classList","add","remove","showShareButtons","getMutedButton","getUnmutedButton","filter","component","videoElements","appParams","mountingNode","ROOT_MOUNT_ID","JSON","parse","style","transition","define","getPolyfill","slice","boundIncludesShim","array","RequireObjectCoercible","boundFromShim","boundFindShim","_transitionManager","currentSection","change","isIntersecting","nextSection","pop","currentIndex","previousIndex","direction","previousSection","transitionManager","shareIcons","onCurrentChanged","_transitions","_transitions2","currentElement","previousElement","transitionClass","animateInto","allTransitionClasses","tClass","animateAway","callback","videoAutoPlayCache","videoElm","createElement","isPlaying","setAttribute","canPlayType","src","load","play","oncanplay","onplay","_debounce","eventListener","handleAnimateVideo","bgInnerHTML","alignment","mp4","poster","webm","trackElement","hasSound","removeEventListener","requestAnimationFrame","_section$foregroundEl","getBoundingClientRect","y","top","height","_window","innerHeight","videoElement","innerWidth","pxInViewFromStart","howMuchBigger","percentInView","newCurrentTime","duration","currentTime","backgroundColor","handleFlipScroll","_throttle","_throttle2","_imageUtils","_renderUtils","_general","polopolyIds","uncropped","_props$flipFade","flipFade","imageStyle","imageElements","passive","element","_element$foregroundEl","getElementsByTagName","numberOfImages","pxInView","idx","backgroundImage","_props$uncropped","imageElement","_polopoly","handlePanoramaScroll","_props$backgroundColo","imgElement","_imgElement$getBoundi","elWidth","translateX","transform","webkitTransform","msTransform","polopolyComponent","desktopSourceSet","mobileSourceSet","overlayElement","addOrRemoveClass","el","className","contains","shouldBeActive","index","fgEls","bgEls","buffer","fg","bg","_background2","activeEls","fgEl","bgEl","handleTriggerOnScroll","_section$props$onScro","onScroll","actions","lastParsedHeight","lastScroll","actionsToDo","parsedWhen","parseWhen","when","parsedBreakpoints","reverse","breakpoint","isAnimated","classes","isBetweenBreakpoints","to","shouldAnimateIn","targetElement","getTarget","doAnimation","once","undoAnimation","bp","parseFunction","val","parseFloat","parseInt","isTargetArray","tE","bgVideos","v","pause","bgVideo","catch","paused","push","getInitialMuteButton","has","iterator","symbolToStr","MAX_SAFE_INTEGER","pow","sign","mod","isPrimitive","toPrimitive","parseInteger","arraySlice","strSlice","String","isBinary","RegExp","isOctal","regexExec","exec","nonWS","nonWSregex","hasNonWS","invalidHexLiteral","isInvalidHexLiteral","ws","trimRegex","trim","ES5","hasRegExpMatcher","ES6","F","V","ToPrimitive","ToNumber","argument","NaN","trimmed","ToInt16","int16bit","ToUint16","ToInt8","int8bit","ToUint8","posInt","ToUint8Clamp","f","ToString","ToPropertyKey","CanonicalNumericIndexString","SameValue","CheckObjectCoercible","IsArray","IsConstructor","IsExtensible","preventExtensions","isExtensible","IsInteger","IsPropertyKey","IsRegExp","isRegExp","match","ToBoolean","GetV","P","GetMethod","Get","Type","SpeciesConstructor","defaultConstructor","constructor","S","species","CompletePropertyDescriptor","Desc","IsPropertyDescriptor","IsGenericDescriptor","IsDataDescriptor","Set","Throw","HasOwnProperty","HasProperty","IsConcatSpreadable","isConcatSpreadable","spreadable","Invoke","argumentsList","CreateIterResultObject","done","RegExpExec","R","ToInt32","ToUint32","optMessage","allowed","[[Configurable]]","[[Enumerable]]","[[Get]]","[[Set]]","[[Value]]","[[Writable]]","isData","IsAccessor","IsAccessorDescriptor","FromPropertyDescriptor","set","ToPropertyDescriptor","Obj","desc","setter","isCallable","ES5internalSlots","[[DefaultValue]]","hint","actualHint","methods","input","PreferredType","isDate","isSymbol","ordinaryToPrimitive","method","methodNames","exoticToPrim","valueOf","process","objectOrFunction","setScheduler","scheduleFn","customSchedulerFn","setAsap","asapFn","asap","useVertxTimer","vertxNext","useSetTimeout","globalSetTimeout","queue","then","onFulfillment","onRejection","_arguments","parent","child","noop","PROMISE_ID","makePromise","_state","invokeCallback","_result","subscribe","resolve$1","promise","resolve","selfFulfillment","cannotReturnOwn","getThen","GET_THEN_ERROR","tryThen","then$$1","fulfillmentHandler","rejectionHandler","handleForeignThenable","thenable","sealed","fulfill","reason","reject","_label","handleOwnThenable","FULFILLED","REJECTED","handleMaybeThenable","maybeThenable","publishRejection","_onerror","publish","PENDING","_subscribers","subscribers","settled","detail","ErrorObject","tryCatch","TRY_CATCH_ERROR","hasCallback","succeeded","failed","initializePromise","resolver","nextId","Enumerator$1","_instanceConstructor","_remaining","_enumerate","validationError","all$1","entries","race$1","reject$1","needsResolver","needsNew","Promise$2","polyfill$1","local","promiseToString","cast","_isArray","arg","scheduleFlush","browserWindow","browserGlobal","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","isNode","isWorker","Uint8ClampedArray","importScripts","MessageChannel","nextTick","iterations","node","createTextNode","characterData","data","channel","port1","onmessage","port2","postMessage","vertx","runOnLoop","runOnContext","random","substring","_eachEntry","entry","resolve$$1","_then","_settledAt","_willSettleAt","enumerator","all","race","_setScheduler","_setAsap","_asap","animate-pulsate","animatePulsate","pulsateAndRotate","intro-block","introBlock","heading-block","headingBlock","block","block--shadow","blockShadow","block__right","blockRight","block__left","blockLeft","block__spaceAfter","blockSpaceAfter","block__lessPadding","blockLessPadding","block__map","blockMap","block__noMarginBottom","blockNoMarginBottom","block__lastBlock","blockLastBlock","block__full-width","blockFullWidth","block__inverse","blockInverse","blockqoute","blockqoute--sm","blockqouteSm","blockqoute--regular","blockqouteRegular","blockqoute--pullqoute","blockqoutePullqoute","cite--fancy","citeFancy","block--no-bg","blockNoBg","block--big-font","blockBigFont","block--xl-font","blockXlFont","block--left","block--right","block--center","blockCenter","bylineSection","byline--sharebutton--container","bylineSharebuttonContainer","byline--sharebutton--group","bylineSharebuttonGroup","byline--sharebutton--item","bylineSharebuttonItem","seemore--block","seemoreBlock","byline--block","bylineBlock","seemore--heading","seemoreHeading","seemore--heading-link","seemoreHeadingLink","seemore--link--list--wrapper","seemoreLinkListWrapper","seemore--link--list","seemoreLinkList","seemore--link--item","seemoreLinkItem","seemore--link--image","seemoreLinkImage","byline--credit--list","bylineCreditList","byline--credit--list--item","bylineCreditListItem","byline--credit--list--item--role","bylineCreditListItemRole","byline--credit--list--item--names","bylineCreditListItemNames","fade","animate-into","animate-away","none","actually-none","actuallyNone","blur","swipe","swipe-left","swipeLeft","swipe-right","swipeRight","swipe-down","swipeDown","swipe-up","swipeUp","zoom","zoom-in","zoomIn","zoom-out","zoomOut","hasOwn","ctx","that","bound","binder","boundLength","boundArgs","Empty","IntersectionObserverEntry","rootBounds","boundingClientRect","intersectionRect","getEmptyRect","targetRect","targetArea","intersectionArea","intersectionRatio","opt_options","nodeType","_checkForIntersections","THROTTLE_TIMEOUT","_callback","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","margin","unit","performance","timeout","timer","addEvent","event","opt_useCapture","attachEvent","removeEvent","detatchEvent","computeRectIntersection","rect1","rect2","bottom","left","right","rect","err","containsDeep","getParentNode","parentNode","host","registry","some","item","_registerInstance","_monitorIntersections","unobserve","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","opt_threshold","sort","t","opt_rootMargin","marginString","margins","split","parts","_monitoringIntersections","_monitoringInterval","setInterval","_domObserver","attributes","childList","subtree","clearInterval","rootIsInDom","_rootIsInDom","rootRect","_getRootRect","rootContainsTarget","_rootContainsTarget","oldEntry","_computeTargetAndRootIntersection","newEntry","_hasCrossedThreshold","getComputedStyle","display","atRoot","parentRect","parentComputedStyle","body","documentElement","overflow","html","clientWidth","clientHeight","_expandRectByRootMargin","newRect","oldRatio","newRatio","splice","getDay","Date","tryDateObject","gOPD","getOwnPropertyDescriptor","tryRegexExecCall","lastIndex","symToStr","symStringRegex","isSymbolObject","baseGetTag","undefinedTag","nullTag","symToStringTag","getRawTag","objectToString","isOwn","tag","unmasked","nativeObjectToString","objectProto","isObjectLike","symbolTag","NAN","other","reTrim","reIsBinary","reIsOctal","freeParseInt","reIsBadHex","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","isArguments","isString","theKeys","skipProto","j","skipConstructor","originalKeys","str","callee","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queueIndex","drainQueue","run","Item","title","browser","env","argv","version","versions","on","addListener","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask"],"mappings":"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","file":"index-6d55ca.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \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// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\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 = 83);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"backgrounds\":\"nrk-filmavis-snap-backgrounds\",\"background\":\"nrk-filmavis-snap-background\",\"visible\":\"nrk-filmavis-snap-visible\",\"background--active\":\"nrk-filmavis-snap-background--active\",\"backgroundActive\":\"nrk-filmavis-snap-background--active\",\"background--ready\":\"nrk-filmavis-snap-background--ready\",\"backgroundReady\":\"nrk-filmavis-snap-background--ready\",\"superoverlay\":\"nrk-filmavis-snap-superoverlay\",\"backgroundGradient\":\"nrk-filmavis-snap-backgroundGradient\",\"uncropped-image-container\":\"nrk-filmavis-snap-uncropped-image-container\",\"uncroppedImageContainer\":\"nrk-filmavis-snap-uncropped-image-container\",\"panorama-image-container\":\"nrk-filmavis-snap-panorama-image-container\",\"panoramaImageContainer\":\"nrk-filmavis-snap-panorama-image-container\",\"trigger-on-scroll-container\":\"nrk-filmavis-snap-trigger-on-scroll-container\",\"triggerOnScrollContainer\":\"nrk-filmavis-snap-trigger-on-scroll-container\",\"background-overlay\":\"nrk-filmavis-snap-background-overlay\",\"backgroundOverlay\":\"nrk-filmavis-snap-background-overlay\"};\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar keys = __webpack_require__(79);\nvar foreach = __webpack_require__(65);\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(54);\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"align-top\":\"nrk-filmavis-snap-align-top\",\"alignTop\":\"nrk-filmavis-snap-align-top\",\"align-center\":\"nrk-filmavis-snap-align-center\",\"alignCenter\":\"nrk-filmavis-snap-align-center\",\"align-left\":\"nrk-filmavis-snap-align-left\",\"alignLeft\":\"nrk-filmavis-snap-align-left\",\"align-right\":\"nrk-filmavis-snap-align-right\",\"alignRight\":\"nrk-filmavis-snap-align-right\",\"align-middle\":\"nrk-filmavis-snap-align-middle\",\"alignMiddle\":\"nrk-filmavis-snap-align-middle\",\"align-bottom\":\"nrk-filmavis-snap-align-bottom\",\"alignBottom\":\"nrk-filmavis-snap-align-bottom\",\"mobile-align-top\":\"nrk-filmavis-snap-mobile-align-top\",\"mobileAlignTop\":\"nrk-filmavis-snap-mobile-align-top\",\"mobile-align-center\":\"nrk-filmavis-snap-mobile-align-center\",\"mobileAlignCenter\":\"nrk-filmavis-snap-mobile-align-center\",\"mobile-align-left\":\"nrk-filmavis-snap-mobile-align-left\",\"mobileAlignLeft\":\"nrk-filmavis-snap-mobile-align-left\",\"mobile-align-right\":\"nrk-filmavis-snap-mobile-align-right\",\"mobileAlignRight\":\"nrk-filmavis-snap-mobile-align-right\",\"mobile-align-middle\":\"nrk-filmavis-snap-mobile-align-middle\",\"mobileAlignMiddle\":\"nrk-filmavis-snap-mobile-align-middle\",\"mobile-align-bottom\":\"nrk-filmavis-snap-mobile-align-bottom\",\"mobileAlignBottom\":\"nrk-filmavis-snap-mobile-align-bottom\"};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.supportedWidths = undefined;\nexports.createSrcSet = createSrcSet;\nexports.prepareUrl = prepareUrl;\nexports.getPolopolyImageElement = getPolopolyImageElement;\nexports.getImageElement = getImageElement;\n\nvar _serumImagecropUtils = __webpack_require__(13);\n\nvar supportedWidths = exports.supportedWidths = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400];\n\nfunction createSrcSet(imageId, ratio, supportedWidths) {\n return supportedWidths.map(function (width) {\n var imageUrl = (0, _serumImagecropUtils.createImageUrl)({ id: imageId, width: width, ratio: ratio, quality: 0.7 });\n return imageUrl + ' ' + width + 'w';\n }).join(', ');\n}\n\nfunction prepareUrl(url, ratio, width) {\n return url.replace('{{ratio}}', ratio).replace('{{width}}', width);\n}\n\nfunction getPolopolyImageElement(polopolyId) {\n var alignmentClasses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var imgStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var pictureStyle = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n\n // const defaultUrl = createImageUrl({ id: polopolyId, width: 1600, ratio: '1:1', quality: 0.7 })\n // const desktopSourceSet = createSrcSet(polopolyId, '1:1', supportedWidths)\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)({\n id: polopolyId,\n width: 1600,\n ratio: '16:9',\n quality: 0.7\n });\n var desktopSourceSet = createSrcSet(polopolyId, '16:9', supportedWidths);\n\n var mobileSourceSet = createSrcSet(polopolyId, '3:4', supportedWidths);\n\n return '\\n \\n \\n \\n ';\n}\n\nfunction getImageElement(imageUrl) {\n var alignmentClasses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var imgStyle = 'min-width: 100%; min-height: 100%; position: relative;';\n return '';\n}\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"video\":\"nrk-filmavis-snap-video\",\"darkedout\":\"nrk-filmavis-snap-darkedout\",\"fullscreen--video\":\"nrk-filmavis-snap-fullscreen--video\",\"fullscreenVideo\":\"nrk-filmavis-snap-fullscreen--video\",\"fullscreen--video--container\":\"nrk-filmavis-snap-fullscreen--video--container\",\"fullscreenVideoContainer\":\"nrk-filmavis-snap-fullscreen--video--container\",\"video-mute-button\":\"nrk-filmavis-snap-video-mute-button\",\"videoMuteButton\":\"nrk-filmavis-snap-video-mute-button\",\"video-mute-svg-muted-hover\":\"nrk-filmavis-snap-video-mute-svg-muted-hover\",\"videoMuteSvgMutedHover\":\"nrk-filmavis-snap-video-mute-svg-muted-hover\",\"video-mute-svg-unmuted-hover\":\"nrk-filmavis-snap-video-mute-svg-unmuted-hover\",\"videoMuteSvgUnmutedHover\":\"nrk-filmavis-snap-video-mute-svg-unmuted-hover\",\"visible\":\"nrk-filmavis-snap-visible\",\"hide-play\":\"nrk-filmavis-snap-hide-play\",\"hidePlay\":\"nrk-filmavis-snap-hide-play\",\"subtitlescontainer\":\"nrk-filmavis-snap-subtitlescontainer\",\"subtitles\":\"nrk-filmavis-snap-subtitles\"};\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.initialize = initialize;\nexports.trackAction = trackAction;\nvar label = 'snapchat-saken';\nvar isTrackingEnabled = false;\n\nfunction initialize(trackingEnabled) {\n isTrackingEnabled = trackingEnabled;\n // label = name\n}\n\nfunction trackAction(action) {\n sendToGoogleAnalytics({\n category: 'dh-richer-feature',\n action: action,\n label: label\n });\n}\n\nfunction sendToGoogleAnalytics(_ref) {\n var category = _ref.category,\n action = _ref.action,\n label = _ref.label;\n\n if (window.ga && isTrackingEnabled) {\n window.ga('send', 'event', category, action, label);\n } else {\n if (typeof console !== 'undefined') {\n console.log(category, action, label);\n }\n }\n}\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getOverlayElement = undefined;\n\nvar _background = __webpack_require__(0);\n\nvar getOverlayElement = exports.getOverlayElement = function getOverlayElement(overlay) {\n var defaultOverlay = {\n opacity: 0.8,\n color: '#000'\n };\n\n if (overlay === true) {\n return '
';\n }\n\n if (overlay) {\n Object.assign(defaultOverlay, overlay);\n return '
';\n }\n\n return '';\n};\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar bind = __webpack_require__(28);\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class /;\nvar isES6ClassFn = function isES6ClassFn(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\tvar singleStripped = fnStr.replace(/\\/\\/.*\\n/g, '');\n\t\tvar multiStripped = singleStripped.replace(/\\/\\*[.\\s\\S]*\\*\\//g, '');\n\t\tvar spaceStripped = multiStripped.replace(/\\n/mg, ' ').replace(/ {2}/g, ' ');\n\t\treturn constructorRegex.test(spaceStripped);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionObject(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports) {\n\n/**\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/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar debounce = __webpack_require__(31),\n isObject = __webpack_require__(10);\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/* 12 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function (global, factory) {\n true ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.nrkSerumImagecropUtils = {})));\n}(this, (function (exports) { 'use strict';\n\n var isPolopolyIdRegex = /^[1-9]{1,2}\\.\\d+$/;\n\n function isPolopolyId(id) {\n if (!id) {\n return false;\n }\n return isPolopolyIdRegex.test(id);\n }\n\n // prettier-ignore\n var widths = [100, 120, 150, 174, 200, 206, 225, 244, 250, 252, 300, 320, 350, 400, 450, 452, 460, 462, 500, 600, 650, 665, 682, 700, 734, 768, 900, 974, 1200, 1280, 1360, 1450, 1550, 1600, 1700, 1800, 1920, 2000, 2100, 2200, 2300, 2400];\n\n // prettier-ignore\n var ratios = ['1:1', '11', '16:9', '169', '16:3', '163', '3:4', '34'];\n\n // prettier-ignore\n var qualities = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n var _baseUrl = 'https://nrk.no/serum/api/imagecrop/';\n\n function createUrl(_ref) {\n var id = _ref.id,\n ratio = _ref.ratio,\n width = _ref.width,\n quality = _ref.quality;\n\n var url = '' + _baseUrl + id;\n var queryString = createQueryString({ ratio: ratio, width: width, quality: quality });\n if (queryString) {\n url += '?' + queryString;\n }\n return url;\n }\n\n function createQueryString(_ref2) {\n var ratio = _ref2.ratio,\n width = _ref2.width,\n quality = _ref2.quality;\n\n if (!ratio && !width) {\n return quality ? 'quality=' + quality : '';\n }\n var ratioPart = ratio ? 'f' + ratio.replace(':', '') : '';\n var widthPart = width ? 'w' + width : '';\n var qualityPart = quality ? '&quality=' + quality : '';\n return 'cropid=' + ratioPart + widthPart + qualityPart;\n }\n\n function getClosestNumber(goal, targets) {\n if (!isValidGoal(goal)) {\n throw new Error('\\n getClosestNumber(goal, targets): passing a goal of ' + goal + '\\n is not supported. Pass a number');\n }\n if (!isValidTargets(targets)) {\n throw new Error('\\n getClosestNumber(goal, targets): targets ' + targets.toString() + ' is invald.\\n Pass an array of numbers');\n }\n if (!targets.length) {\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n return targets.reduce(function (prev, curr) {\n return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n });\n }\n\n function isValidGoal(goal) {\n return typeof goal === 'number';\n }\n\n function isValidTargets(targets) {\n if (!targets) {\n return false;\n }\n var isValid = true;\n for (var i = 0; i < targets.length; i++) {\n if (typeof targets[i] !== 'number') {\n isValid = false;\n break;\n }\n }\n // return targets.some((target) => {\n // return (typeof target !== 'number')\n // })\n return isValid;\n }\n\n function isValidRatio(ratio, supportedRatios) {\n if (!Array.isArray(supportedRatios)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidRatio(ratio, supportedRatios): supportedRatios '\" + supportedRatios + \"' is not supported. Pass an array of supported ratios\");\n }\n if (!ratio) {\n return false;\n }\n return supportedRatios.includes(ratio);\n }\n\n function isValidQuality(quality, supportedQualities) {\n if (!Array.isArray(supportedQualities)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidQuality(quality, supportedQualities): supportedQualities '\" + supportedQualities + \"' is not supported. Pass an array of supported qualities\");\n }\n if (!quality) {\n return false;\n }\n return supportedQualities.includes(quality);\n }\n\n function createImageUrl(options) {\n var polopolyId = options.id,\n width = options.width,\n ratio = options.ratio,\n quality = options.quality;\n\n\n if (!isPolopolyId(polopolyId)) {\n throw new Error('createSerumImageUrl(): invalid polopolyId. Got ' + polopolyId);\n }\n\n var args = {\n id: polopolyId,\n ratio: null,\n quality: 0.8,\n width: 0\n\n // If a ratio is provided, ensure that it is valid\n };if (hasOption(ratio)) {\n if (!isValidRatio(ratio, ratios)) {\n throw new Error('\\n createSerumImageUrl(): ratio ' + ratio + ' is not supported.\\n Supported ratios are ' + ratios.toString());\n }\n args.ratio = ratio;\n }\n\n // If a quality is provided, ensure that it is valid\n if (hasOption(quality)) {\n if (!isValidQuality(quality, qualities)) {\n throw new Error('\\n createSerumImageUrl(): quality ' + quality + ' is not supported.\\n Supported qualities are ' + qualities.toString());\n }\n args.quality = quality;\n }\n\n // If a width is provided, ensure that is is a positive integer\n if (hasOption(width)) {\n if (!isNumber(width) || width <= 0) {\n var errorMessage = 'createSerumImageUrl(): width must be a positive integer, got ' + width;\n throw new Error(errorMessage);\n }\n var isSupportedWidth = widths.includes(width);\n var closestWidth = getClosestNumber(width, widths);\n if (typeof closestWidth !== 'undefined' && closestWidth) {\n args.width = isSupportedWidth ? width : closestWidth;\n }\n }\n\n return createUrl(args);\n }\n\n function hasOption(option) {\n return typeof option !== 'undefined' && option;\n }\n\n function isNumber(number) {\n return Number.isInteger(number);\n }\n\n exports.createImageUrl = createImageUrl;\n exports.ratios = ratios;\n exports.widths = widths;\n exports.qualities = qualities;\n exports.isPolopolyId = isPolopolyId;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar ES = __webpack_require__(2);\nvar $isNaN = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\nvar $isFinite = Number.isFinite || function isFinite(n) {\n\treturn typeof n === 'number' && global.isFinite(n);\n};\nvar indexOf = Array.prototype.indexOf;\n\nmodule.exports = function includes(searchElement) {\n\tvar fromIndex = arguments.length > 1 ? ES.ToInteger(arguments[1]) : 0;\n\tif (indexOf && !$isNaN(searchElement) && $isFinite(fromIndex) && typeof searchElement !== 'undefined') {\n\t\treturn indexOf.apply(this, arguments) > -1;\n\t}\n\n\tvar O = ES.ToObject(this);\n\tvar length = ES.ToLength(O.length);\n\tif (length === 0) {\n\t\treturn false;\n\t}\n\tvar k = fromIndex >= 0 ? fromIndex : Math.max(0, length + fromIndex);\n\twhile (k < length) {\n\t\tif (ES.SameValueZero(searchElement, O[k])) {\n\t\t\treturn true;\n\t\t}\n\t\tk += 1;\n\t}\n\treturn false;\n};\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(12)))\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(14);\n\nmodule.exports = function getPolyfill() {\n\treturn Array.prototype.includes || implementation;\n};\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar ES = __webpack_require__(2);\nvar supportsDescriptors = __webpack_require__(1).supportsDescriptors;\n\n/*! https://mths.be/array-from v0.2.0 by @mathias */\nmodule.exports = function from(arrayLike) {\n\tvar defineProperty = supportsDescriptors ? Object.defineProperty : function put(object, key, descriptor) {\n\t\tobject[key] = descriptor.value;\n\t};\n\tvar C = this;\n\tif (arrayLike === null || typeof arrayLike === 'undefined') {\n\t\tthrow new TypeError('`Array.from` requires an array-like object, not `null` or `undefined`');\n\t}\n\tvar items = ES.ToObject(arrayLike);\n\n\tvar mapFn, T;\n\tif (typeof arguments[1] !== 'undefined') {\n\t\tmapFn = arguments[1];\n\t\tif (!ES.IsCallable(mapFn)) {\n\t\t\tthrow new TypeError('When provided, the second argument to `Array.from` must be a function');\n\t\t}\n\t\tif (arguments.length > 2) {\n\t\t\tT = arguments[2];\n\t\t}\n\t}\n\n\tvar len = ES.ToLength(items.length);\n\tvar A = ES.IsCallable(C) ? ES.ToObject(new C(len)) : new Array(len);\n\tvar k = 0;\n\tvar kValue, mappedValue;\n\twhile (k < len) {\n\t\tkValue = items[k];\n\t\tif (mapFn) {\n\t\t\tmappedValue = typeof T === 'undefined' ? mapFn(kValue, k) : ES.Call(mapFn, T, [kValue, k]);\n\t\t} else {\n\t\t\tmappedValue = kValue;\n\t\t}\n\t\tdefineProperty(A, k, {\n\t\t\t'configurable': true,\n\t\t\t'enumerable': true,\n\t\t\t'value': mappedValue,\n\t\t\t'writable': true\n\t\t});\n\t\tk += 1;\n\t}\n\tA.length = len;\n\treturn A;\n};\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ES = __webpack_require__(2);\nvar implementation = __webpack_require__(16);\n\nvar tryCall = function (fn) {\n\ttry {\n\t\tfn();\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tvar implemented = ES.IsCallable(Array.from)\n\t\t&& tryCall(function () { Array.from({ 'length': -Infinity }); })\n\t\t&& !tryCall(function () { Array.from([], undefined); });\n\n\treturn implemented ? Array.from : implementation;\n};\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar ES = __webpack_require__(2);\n\nmodule.exports = function find(predicate) {\n\tvar list = ES.ToObject(this);\n\tvar length = ES.ToInteger(ES.ToLength(list.length));\n\tif (!ES.IsCallable(predicate)) {\n\t\tthrow new TypeError('Array#find: predicate must be a function');\n\t}\n\tif (length === 0) {\n\t\treturn undefined;\n\t}\n\tvar thisArg = arguments[1];\n\tfor (var i = 0, value; i < length; i++) {\n\t\tvalue = list[i];\n\t\tif (ES.Call(predicate, thisArg, [value, i, list])) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n};\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function getPolyfill() {\n\t// Detect if an implementation exists\n\t// Detect early implementations which skipped holes in sparse arrays\n // eslint-disable-next-line no-sparse-arrays\n\tvar implemented = Array.prototype.find && [, 1].find(function () {\n\t\treturn true;\n\t}) !== 1;\n\n // eslint-disable-next-line global-require\n\treturn implemented ? Array.prototype.find : __webpack_require__(18);\n};\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.components = undefined;\n\nvar _image = __webpack_require__(47);\n\nvar _color = __webpack_require__(45);\n\nvar _video = __webpack_require__(52);\n\nvar _panorama = __webpack_require__(48);\n\nvar _flipScroll = __webpack_require__(46);\n\nvar _triggerOnScroll = __webpack_require__(51);\n\nvar _animateVideo = __webpack_require__(44);\n\nvar _activeClass = __webpack_require__(50);\n\nvar components = exports.components = [_activeClass.setActiveElementClass, _image.imageComponent, _color.colorComponent, _video.videoComponent,\n// polopolyComponent,\n// uncroppedComponent,\n_panorama.panoramaComponent, _triggerOnScroll.triggerOnScrollComponent, _flipScroll.flipScrollComponent, _animateVideo.animateVideoComponent];\n// import { polopolyComponent } from './polopoly'\n// import { uncroppedComponent } from './uncropped'\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.constrain = constrain;\nfunction constrain(value, min, max) {\n return Math.min(Math.max(value, min), max);\n}\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports) {\n\nvar $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports) {\n\nmodule.exports = function mod(number, modulo) {\n\tvar remain = number % modulo;\n\treturn Math.floor(remain >= 0 ? remain : remain + modulo);\n};\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports) {\n\nmodule.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports) {\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"sections\":\"nrk-filmavis-snap-sections\",\"section\":\"nrk-filmavis-snap-section\",\"section--no-min-height\":\"nrk-filmavis-snap-section--no-min-height\",\"sectionNoMinHeight\":\"nrk-filmavis-snap-section--no-min-height\",\"section--ready\":\"nrk-filmavis-snap-section--ready\",\"sectionReady\":\"nrk-filmavis-snap-section--ready\",\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"sectionAfterStandup\":\"nrk-filmavis-snap-sectionAfterStandup\",\"sectionBeforeStandup\":\"nrk-filmavis-snap-sectionBeforeStandup\",\"standup\":\"nrk-filmavis-snap-standup\",\"super\":\"nrk-filmavis-snap-super\",\"super__content\":\"nrk-filmavis-snap-super__content\",\"superContent\":\"nrk-filmavis-snap-super__content\",\"blurred\":\"nrk-filmavis-snap-blurred\",\"overlay\":\"nrk-filmavis-snap-overlay\",\"darkedout\":\"nrk-filmavis-snap-darkedout\",\"NRKlogo\":\"nrk-filmavis-snap-NRKlogo\",\"nrKlogo\":\"nrk-filmavis-snap-NRKlogo\",\"shareButtonGroup\":\"nrk-filmavis-snap-shareButtonGroup\",\"visible\":\"nrk-filmavis-snap-visible\",\"shareButton\":\"nrk-filmavis-snap-shareButton\",\"to-top\":\"nrk-filmavis-snap-to-top\",\"toTop\":\"nrk-filmavis-snap-to-top\",\"intro-block-arrow\":\"nrk-filmavis-snap-intro-block-arrow\",\"introBlockArrow\":\"nrk-filmavis-snap-intro-block-arrow\",\"fadeIn\":\"nrk-filmavis-snap-fadeIn\",\"arrowBlink\":\"nrk-filmavis-snap-arrowBlink\"};\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar implementation = __webpack_require__(66);\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(30);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar freeGlobal = __webpack_require__(72);\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/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(10),\n now = __webpack_require__(77),\n toNumber = __webpack_require__(78);\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/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint-disable global-require */\n\n__webpack_require__(38).shim();\n__webpack_require__(36).shim();\n__webpack_require__(34).shim();\n\n__webpack_require__(67);\n\n// Object.assign() is commonly used.\n// This polyfill use the native implementation if it's present and isn't buggy.\n// Object.assign = require('object-assign')\n\nif (typeof Promise === 'undefined') {\n __webpack_require__(60).polyfill();\n}\n\nNumber.isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _index = __webpack_require__(27);\n\nvar _index2 = _interopRequireDefault(_index);\n\n__webpack_require__(63);\n\nvar _background = __webpack_require__(0);\n\n__webpack_require__(3);\n\nvar _video = __webpack_require__(5);\n\nvar _video2 = _interopRequireDefault(_video);\n\n__webpack_require__(61);\n\n__webpack_require__(62);\n\nvar _muteButtons = __webpack_require__(53);\n\nvar _googleAnalytics = __webpack_require__(6);\n\nvar _featuretests = __webpack_require__(43);\n\nvar _intersection = __webpack_require__(40);\n\nvar _reducer = __webpack_require__(41);\n\nvar _components = __webpack_require__(20);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } } /* global __NAMESPACE__, ROOT_MOUNT_ID */\n/* eslint-disable max-params */\n\nvar App = function App(container, initialState) {\n var _this = this;\n\n _classCallCheck(this, App);\n\n this.setSectionId = function (id) {\n _this.sectionId = id;\n };\n\n this.mount = function () {\n try {\n var sectionElements = [].concat(_toConsumableArray(document.querySelectorAll('.' + _index2.default.section)));\n\n _this.state.sections = _this.state.sections.map(function (s, i) {\n return _extends({}, s, {\n canAutoplay: _this.state.canAutoplay,\n foregroundElement: sectionElements[i],\n backgroundElement: document.getElementById(s.id)\n });\n });\n\n _this.shareButtons = document.querySelector('.' + _index2.default.shareButtonGroup);\n var muteButton = document.querySelector('.' + _video2.default.videoMuteButton);\n if (muteButton) {\n _this.muteButton = muteButton;\n _this.muteButton.addEventListener('click', _this.toggleMuteVideo, false);\n }\n\n _this.initializeGoogleAnalytic();\n _this.mountListeners();\n } catch (error) {\n console.error(error);\n _this.renderError();\n }\n };\n\n this.initializeGoogleAnalytic = function () {\n if (!_this.gaInitialized) {\n (0, _googleAnalytics.initialize)(_this.container.getAttribute('data-tracking'));\n }\n _this.gaInitialized = true;\n };\n\n this.unmount = function () {\n _this.unmountListeners();\n _this.container.innerHTML = '';\n };\n\n this.ioCallback = function (changes) {\n return (0, _intersection.intersectionObserverCallback)(changes, _this.state, _this.dispatch);\n };\n\n this.mountListeners = function () {\n var options = {\n threshold: [0]\n };\n\n _this.observer = new IntersectionObserver(_this.ioCallback, options);\n _this.observer.POLL_INTERVAL = 500;\n _this.state.sections.forEach(function (_ref) {\n var foregroundElement = _ref.foregroundElement;\n return _this.observer.observe(foregroundElement);\n });\n\n var muteButton = document.querySelector('.' + _video2.default.videoMuteButton);\n if (muteButton) {\n _this.muteButton = muteButton;\n _this.muteButton.addEventListener('click', _this.toggleMuteVideo, false);\n }\n };\n\n this.render = function () {\n if (_this.error) {\n _this.renderError();\n }\n };\n\n this.renderError = function () {\n _this.container.innerHTML = '
' + _this.error + '
';\n };\n\n this.toggleMuteVideo = function (e) {\n e.stopPropagation();\n\n _this.dispatch({ type: 'toggleMute' });\n if (_this.state.muted) {\n (0, _googleAnalytics.trackAction)('MUTE/' + _this.sectionId);\n } else {\n (0, _googleAnalytics.trackAction)('UNMUTE/' + _this.sectionId);\n }\n };\n\n this.dispatch = function (action) {\n _this.state = (0, _reducer.reduce)(_this.state, action);\n _this.onStateChanged(_this.state);\n };\n\n this.onStateChanged = function (state) {\n if (state.showMuteButton) {\n _this.muteButton.classList.add(_background.visible);\n } else {\n _this.muteButton.classList.remove(_background.visible);\n }\n\n if (_this.shareButtons && state.showShareButtons) {\n _this.shareButtons.classList.add(_background.visible);\n } else {\n _this.shareButtons.classList.remove(_background.visible);\n }\n\n if (state.muted) {\n _this.muteButton.innerHTML = (0, _muteButtons.getMutedButton)();\n } else {\n _this.muteButton.innerHTML = (0, _muteButtons.getUnmutedButton)();\n }\n\n _components.components.filter(function (component) {\n return component.onStateChanged;\n }).forEach(function (component) {\n return component.onStateChanged(state);\n });\n };\n\n this.container = container;\n this.error = null;\n this.muted = true;\n this.videoElements = [];\n this.state = initialState;\n\n this.gaInitialized = false;\n this.sectionId = 0;\n window.appParams = this;\n};\n\nexports.default = App;\n\n\nwindow.App = App;\n\nif (false) module.hot.accept();\n\nvar mountingNode = document.getElementById(ROOT_MOUNT_ID);\nvar initialState = JSON.parse(mountingNode.getAttribute('data-initial-state'));\n\nvar app = new App(mountingNode, initialState);\napp.mount();\n\nmountingNode.style.transition = '.5s .5s opacity ease-in';\nmountingNode.style.opacity = 1;\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\nvar ES = __webpack_require__(2);\n\nvar implementation = __webpack_require__(14);\nvar getPolyfill = __webpack_require__(15);\nvar polyfill = getPolyfill();\nvar shim = __webpack_require__(35);\n\nvar slice = Array.prototype.slice;\n\n/* eslint-disable no-unused-vars */\nvar boundIncludesShim = function includes(array, searchElement) {\n/* eslint-enable no-unused-vars */\n\tES.RequireObjectCoercible(array);\n\treturn polyfill.apply(array, slice.call(arguments, 1));\n};\ndefine(boundIncludesShim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundIncludesShim;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\nvar getPolyfill = __webpack_require__(15);\n\nmodule.exports = function shimArrayPrototypeIncludes() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ includes: polyfill },\n\t\t{ includes: function () { return Array.prototype.includes !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\n\nvar implementation = __webpack_require__(16);\nvar getPolyfill = __webpack_require__(17);\nvar shim = __webpack_require__(37);\n\n// eslint-disable-next-line no-unused-vars\nvar boundFromShim = function from(array) {\n // eslint-disable-next-line no-invalid-this\n\treturn implementation.apply(this || Array, arguments);\n};\n\ndefine(boundFromShim, {\n\t'getPolyfill': getPolyfill,\n\t'implementation': implementation,\n\t'shim': shim\n});\n\nmodule.exports = boundFromShim;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\nvar getPolyfill = __webpack_require__(17);\n\nmodule.exports = function shimArrayFrom() {\n\tvar polyfill = getPolyfill();\n\n\tdefine(Array, { 'from': polyfill }, {\n\t\t'from': function () {\n\t\t\treturn Array.from !== polyfill;\n\t\t}\n\t});\n\n\treturn polyfill;\n};\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\nvar ES = __webpack_require__(2);\n\nvar implementation = __webpack_require__(18);\nvar getPolyfill = __webpack_require__(19);\nvar shim = __webpack_require__(39);\n\nvar slice = Array.prototype.slice;\n\nvar polyfill = getPolyfill();\n\nvar boundFindShim = function find(array, predicate) { // eslint-disable-line no-unused-vars\n\tES.RequireObjectCoercible(array);\n\tvar args = slice.call(arguments, 1);\n\treturn polyfill.apply(array, args);\n};\n\ndefine(boundFindShim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundFindShim;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(1);\nvar getPolyfill = __webpack_require__(19);\n\nmodule.exports = function shimArrayPrototypeFind() {\n\tvar polyfill = getPolyfill();\n\n\tdefine(Array.prototype, { find: polyfill }, {\n\t\tfind: function () {\n\t\t\treturn Array.prototype.find !== polyfill;\n\t\t}\n\t});\n\n\treturn polyfill;\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.intersectionObserverCallback = undefined;\n\nvar _transitionManager = __webpack_require__(42);\n\nvar _components = __webpack_require__(20);\n\nvar _googleAnalytics = __webpack_require__(6);\n\nvar currentSection = null;\n\nvar intersectionObserverCallback = exports.intersectionObserverCallback = function intersectionObserverCallback(changes, state, dispatch) {\n if (!changes) return;\n\n var sections = state.sections;\n\n // Update state\n changes.forEach(function (change) {\n var changedElement = sections.find(function (_ref) {\n var foregroundElement = _ref.foregroundElement;\n return change.target === foregroundElement;\n });\n changedElement.isIntersecting = change.isIntersecting;\n });\n\n var nextSection = sections.filter(function (e) {\n return e.isIntersecting;\n }).pop();\n\n if (!currentSection || currentSection.foregroundElement !== nextSection.foregroundElement) {\n (0, _googleAnalytics.trackAction)('LOAD_SUCCESS/' + nextSection.foregroundElement.getAttribute('data-background-id'));\n\n var currentIndex = sections.indexOf(nextSection);\n var previousIndex = currentSection ? sections.indexOf(currentSection) : null;\n\n var direction = currentIndex > previousIndex ? 'forwards' : 'backwards';\n\n var previousSection = sections[previousIndex];\n\n currentSection = nextSection;\n\n (0, _transitionManager.transitionManager)(nextSection, previousSection, direction);\n\n dispatch({ type: 'showShareButtons', value: nextSection.props.shareIcons });\n _components.components.filter(function (component) {\n return component.onCurrentChanged;\n }).forEach(function (component) {\n component.onCurrentChanged(nextSection, dispatch);\n });\n }\n};\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.reduce = reduce;\nfunction reduce(state, action) {\n switch (action.type) {\n case 'showMuteButton':\n return _extends({}, state, {\n showMuteButton: action.value\n });\n\n case 'showShareButtons':\n return _extends({}, state, {\n showShareButtons: action.value\n });\n\n case 'toggleMute':\n return _extends({}, state, {\n muted: !state.muted\n });\n\n default:\n return state;\n }\n}\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transitionManager = undefined;\n\nvar _transitions = __webpack_require__(64);\n\nvar _transitions2 = _interopRequireDefault(_transitions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar transitionManager = exports.transitionManager = function transitionManager(currentElement, previousElement) {\n var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'forwards';\n\n if (!previousElement || previousElement === currentElement) {\n var _transitionClass = currentElement.props.transition;\n\n currentElement.backgroundElement.classList.add(_transitions2.default.animateInto);\n currentElement.backgroundElement.classList.add(_transitionClass);\n return;\n }\n\n var allTransitionClasses = Object.keys(_transitions2.default).map(function (key) {\n return _transitions2.default[key];\n });\n\n var transitionClass = direction === 'forwards' ? currentElement.props.transition : previousElement.props.transition;\n\n allTransitionClasses.forEach(function (tClass) {\n previousElement.backgroundElement.classList.remove(tClass);\n currentElement.backgroundElement.classList.remove(tClass);\n });\n\n previousElement.backgroundElement.classList.add(_transitions2.default.animateAway);\n previousElement.backgroundElement.classList.add(transitionClass);\n\n currentElement.backgroundElement.classList.add(_transitions2.default.animateInto);\n currentElement.backgroundElement.classList.add(transitionClass);\n};\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.canAutoplay = canAutoplay;\n\n\nvar videoAutoPlayCache = null;\n\n/* eslint-disable standard/no-callback-literal */\n\nfunction canAutoplay(callback) {\n try {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (typeof videoAutoPlayCache === 'boolean') {\n return callback(videoAutoPlayCache);\n }\n\n var videoElm = document.createElement('video');\n\n var isPlaying = false;\n\n videoElm.setAttribute('autoplay', '');\n videoElm.setAttribute('muted', '');\n videoElm.setAttribute('webkit-playsinline', 'webkit-playsinline');\n videoElm.setAttribute('playsinline', 'playsinline');\n\n try {\n if (videoElm.canPlayType('video/ogg')) {\n videoElm.src = 'data:video/ogg;base64,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';\n } else if (videoElm.canPlayType('video/mp4')) {\n videoElm.src = 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ==';\n } else {\n return callback(false);\n }\n } catch (_) {\n return callback(false);\n }\n\n videoElm.load();\n videoElm.play();\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n } catch (error) {\n return callback(false);\n }\n}\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.animateVideoComponent = undefined;\n\nvar _debounce = __webpack_require__(31);\n\nvar _debounce2 = _interopRequireDefault(_debounce);\n\nvar _imageUtils = __webpack_require__(4);\n\nvar _general = __webpack_require__(21);\n\nvar _video = __webpack_require__(5);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _background = __webpack_require__(0);\n\nvar _index = __webpack_require__(3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eventListener = null;\n\nvar animateVideoComponent = exports.animateVideoComponent = {\n type: 'animate-video',\n\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var video = props.video,\n alignment = props.alignment;\n var mp4 = video.mp4,\n webm = video.webm,\n poster = video.poster,\n subtitles = video.subtitles,\n hasSound = video.hasSound;\n\n\n var trackElement = subtitles ? '' : '';\n\n var alignmentClasses = alignment.join(' ');\n\n return '\\n
\\n \\n \\n ' + trackElement + '\\n Your browser does not support the video tag. We suggest you upgrade your browser.\\n \\n
\\n ' + bgInnerHTML + '\\n
\\n ';\n },\n onCurrentChanged: function onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener);\n eventListener = null;\n }\n\n var type = currentSection.type;\n\n if (type === 'animate-video') {\n eventListener = function eventListener() {\n return window.requestAnimationFrame(function () {\n return handleAnimateVideo(currentSection);\n });\n };\n document.addEventListener('scroll', eventListener);\n }\n }\n};\nvar i = 0;\nvar handleAnimateVideo = function handleAnimateVideo(section, e) {\n var _section$foregroundEl = section.foregroundElement.getBoundingClientRect(),\n y = _section$foregroundEl.y,\n top = _section$foregroundEl.top,\n height = _section$foregroundEl.height;\n\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n\n\n var videoElement = document.querySelector('video');\n\n var pxInViewFromStart = height + (top || y) - innerHeight;\n var howMuchBigger = height - innerHeight;\n\n if (pxInViewFromStart >= howMuchBigger - 1) {\n pxInViewFromStart = howMuchBigger;\n } else if (pxInViewFromStart <= 0) {\n pxInViewFromStart = 0;\n }\n var percentInView = 1 - pxInViewFromStart / howMuchBigger;\n\n var newCurrentTime = videoElement.duration * percentInView;\n // videoElement.play()\n if (!isNaN(newCurrentTime)) {\n videoElement.currentTime = newCurrentTime;\n }\n // console.log('asd', newCurrentTime)\n};\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.colorComponent = undefined;\n\nvar _background = __webpack_require__(0);\n\nvar colorComponent = exports.colorComponent = {\n type: 'color',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var backgroundColor = props.backgroundColor;\n\n var style = 'background-color: ' + backgroundColor + ';';\n\n return '\\n
\\n ' + bgInnerHTML + '\\n
\\n ';\n }\n};\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.handleFlipScroll = exports.flipScrollComponent = undefined;\n\nvar _throttle = __webpack_require__(11);\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _imageUtils = __webpack_require__(4);\n\nvar _renderUtils = __webpack_require__(7);\n\nvar _general = __webpack_require__(21);\n\nvar _background = __webpack_require__(0);\n\nvar _index = __webpack_require__(3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eventListener = null;\nvar flipScrollComponent = exports.flipScrollComponent = {\n type: 'flip-scroll',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var alignment = props.alignment,\n polopolyIds = props.polopolyIds,\n overlay = props.overlay,\n uncropped = props.uncropped,\n _props$flipFade = props.flipFade,\n flipFade = _props$flipFade === undefined ? false : _props$flipFade;\n\n var alignmentClasses = alignment ? alignment.join(' ') : [_index.alignMiddle, _index.alignCenter].join(' ');\n\n var imageStyle = uncropped ? 'position: absolute' : 'min-width: 100%; min-height: 100%; position: absolute;';\n\n var imageElements = polopolyIds.map(function (polopolyId) {\n return (0, _imageUtils.getPolopolyImageElement)(polopolyId, alignmentClasses, imageStyle, flipFade ? 'transition: .5s opacity ease-in-out' : '');\n });\n\n return '\\n
\\n ' + (uncropped ? '
' : '') + '\\n ' + imageElements.join('') + '\\n ' + (uncropped ? '
' : '') + '\\n ' + bgInnerHTML + '\\n ' + (0, _renderUtils.getOverlayElement)(overlay) + '\\n
\\n ';\n },\n onCurrentChanged: function onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener);\n eventListener = null;\n }\n\n var type = currentSection.type;\n\n if (type === 'flip-scroll') {\n eventListener = (0, _throttle2.default)(function () {\n return handleFlipScroll(currentSection);\n }, 30);\n document.addEventListener('scroll', eventListener, {\n passive: true\n });\n }\n }\n};\n\nvar handleFlipScroll = exports.handleFlipScroll = function handleFlipScroll(element) {\n var _element$foregroundEl = element.foregroundElement.getBoundingClientRect(),\n y = _element$foregroundEl.y,\n top = _element$foregroundEl.top;\n\n var _window = window,\n innerHeight = _window.innerHeight;\n\n var imageElements = element.backgroundElement.getElementsByTagName('picture');\n var numberOfImages = imageElements.length;\n\n var pxInView = innerHeight - (y || top);\n var percentInView = (0, _general.constrain)(pxInView / innerHeight, 0, 0.99);\n var idx = Math.floor(percentInView * numberOfImages);\n\n for (var i = 0; i < numberOfImages; i++) {\n imageElements[i].style.opacity = i === idx ? '1' : '0';\n }\n};\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.imageComponent = undefined;\n\nvar _imageUtils = __webpack_require__(4);\n\nvar _renderUtils = __webpack_require__(7);\n\nvar _index = __webpack_require__(3);\n\nvar _background = __webpack_require__(0);\n\nvar imageComponent = exports.imageComponent = {\n type: 'image',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var backgroundImage = props.backgroundImage,\n polopolyId = props.polopolyId,\n _props$uncropped = props.uncropped,\n uncropped = _props$uncropped === undefined ? false : _props$uncropped,\n overlay = props.overlay,\n alignment = props.alignment;\n\n\n var alignmentClasses = alignment ? alignment.join(' ') : [_index.alignMiddle, _index.alignCenter].join(' ');\n\n var imageStyle = uncropped ? 'position: relative' : 'min-width: 100%; min-height: 100%; position: relative;';\n\n var imageElement = '';\n if (polopolyId) {\n imageElement = (0, _imageUtils.getPolopolyImageElement)(polopolyId, alignmentClasses, imageStyle);\n } else if (backgroundImage) {\n imageElement = (0, _imageUtils.getImageElement)(backgroundImage, alignmentClasses, imageStyle);\n }\n\n return '\\n
\\n ' + (uncropped ? '
' : '') + '\\n ' + imageElement + '\\n ' + (uncropped ? '
' : '') + '\\n ' + (0, _renderUtils.getOverlayElement)(overlay) + '\\n ' + bgInnerHTML + '\\n
\\n ';\n }\n};\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.panoramaComponent = undefined;\n\nvar _throttle = __webpack_require__(11);\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _background = __webpack_require__(0);\n\nvar _polopoly = __webpack_require__(49);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar eventListener = null;\nvar panoramaComponent = exports.panoramaComponent = {\n type: 'panorama',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var backgroundImage = props.backgroundImage,\n polopolyId = props.polopolyId,\n _props$backgroundColo = props.backgroundColor,\n backgroundColor = _props$backgroundColo === undefined ? '#333' : _props$backgroundColo;\n\n var style = 'background-color: ' + backgroundColor + ';';\n\n var imageElement = '';\n\n if (!backgroundImage && polopolyId) {\n imageElement = (0, _polopoly.getPolopolyImageElement)(polopolyId);\n }\n\n return '\\n
\\n
\\n ' + imageElement + '\\n ' + bgInnerHTML + '\\n
\\n
\\n ';\n },\n onCurrentChanged: function onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener);\n eventListener = null;\n }\n\n var type = currentSection.type;\n\n if (type === 'panorama') {\n eventListener = (0, _throttle2.default)(function () {\n return handlePanoramaScroll(currentSection);\n }, 30);\n document.addEventListener('scroll', eventListener, {\n passive: true\n });\n }\n }\n};\n\nvar handlePanoramaScroll = function handlePanoramaScroll(element) {\n var _element$foregroundEl = element.foregroundElement.getBoundingClientRect(),\n y = _element$foregroundEl.y,\n top = _element$foregroundEl.top,\n height = _element$foregroundEl.height;\n\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n\n\n var pxInView = innerHeight - (y || top);\n\n if (pxInView >= height) {\n pxInView = height;\n } else if (pxInView <= 0) {\n pxInView = 0;\n }\n var percentInView = pxInView / height * 100;\n if (percentInView >= 100) percentInView = 100;\n if (percentInView <= 0) percentInView = 0;\n\n var imgElement = element.backgroundElement.querySelector('img');\n\n var _imgElement$getBoundi = imgElement.getBoundingClientRect(),\n elWidth = _imgElement$getBoundi.width;\n\n var translateX = -(elWidth - innerWidth) * percentInView / 100;\n imgElement.style.transform = 'translateX(' + translateX + 'px)';\n imgElement.style.webkitTransform = 'translateX(' + translateX + 'px)';\n imgElement.style.msTransform = 'translateX(' + translateX + 'px)';\n};\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.polopolyComponent = undefined;\nexports.getPolopolyImageElement = getPolopolyImageElement;\n\nvar _serumImagecropUtils = __webpack_require__(13);\n\nvar _background = __webpack_require__(0);\n\nvar _index = __webpack_require__(3);\n\nvar _imageUtils = __webpack_require__(4);\n\nvar polopolyComponent = exports.polopolyComponent = {\n type: 'polopoly',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var polopolyId = props.polopolyId,\n alignment = props.alignment,\n overlay = props.overlay;\n\n\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)({ id: polopolyId, width: 1600, ratio: '1:1' });\n var desktopSourceSet = (0, _imageUtils.createSrcSet)(polopolyId, '1:1', _imageUtils.supportedWidths);\n var mobileSourceSet = (0, _imageUtils.createSrcSet)(polopolyId, '3:4', _imageUtils.supportedWidths);\n\n var overlayElement = overlay ? '
' : '';\n\n var imgStyle = 'min-width: 100%; min-height: 100%; position: relative;';\n var alignmentClasses = alignment ? alignment.join(' ') : [_index.alignMiddle, _index.alignCenter].join(' ');\n\n return '\\n
\\n \\n \\n \\n \\n ' + bgInnerHTML + '\\n ' + overlayElement + '\\n
';\n }\n};\n\nfunction getPolopolyImageElement(polopolyId) {\n var alignmentClasses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)({ id: polopolyId, width: 1600, ratio: '1:1' });\n var desktopSourceSet = (0, _imageUtils.createSrcSet)(polopolyId, '1:1', _imageUtils.supportedWidths);\n var mobileSourceSet = (0, _imageUtils.createSrcSet)(polopolyId, '3:4', _imageUtils.supportedWidths);\n\n var imgStyle = 'position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);';\n return '\\n \\n \\n \\n ';\n}\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.setActiveElementClass = undefined;\n\nvar _index = __webpack_require__(27);\n\nvar _index2 = _interopRequireDefault(_index);\n\nvar _background = __webpack_require__(0);\n\nvar _background2 = _interopRequireDefault(_background);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar fgEls = [];\nvar bgEls = [];\n\nvar setActiveElementClass = exports.setActiveElementClass = {\n onCurrentChanged: function onCurrentChanged(currentSection, dispatch) {\n var foregroundElement = currentSection.foregroundElement,\n backgroundElement = currentSection.backgroundElement;\n\n\n if (!fgEls || !fgEls.length) {\n fgEls = [].concat(_toConsumableArray(document.querySelectorAll('.' + _index2.default.section)));\n bgEls = [].concat(_toConsumableArray(document.querySelectorAll('.' + _background2.default.background)));\n }\n\n var index = fgEls.indexOf(foregroundElement);\n var activeEls = shouldBeActive(index, fgEls, bgEls);\n\n fgEls.forEach(function (fgEl) {\n if (fgEl === foregroundElement) {\n addOrRemoveClass(fgEl, _index2.default['section--ready'], 'remove');\n addOrRemoveClass(fgEl, _index2.default['section--active'], 'add');\n } else if (activeEls.fgEls.indexOf(fgEl) >= 0) {\n addOrRemoveClass(fgEl, _index2.default['section--active'], 'remove');\n addOrRemoveClass(fgEl, _index2.default['section--ready'], 'add');\n } else {\n addOrRemoveClass(fgEl, _index2.default['section--ready'], 'remove');\n addOrRemoveClass(fgEl, _index2.default['section--active'], 'remove');\n }\n });\n\n bgEls.forEach(function (bgEl) {\n if (bgEl === backgroundElement) {\n addOrRemoveClass(bgEl, _background2.default['background--ready'], 'remove');\n addOrRemoveClass(bgEl, _background2.default['background--active'], 'add');\n } else if (activeEls.bgEls.indexOf(bgEl) >= 0) {\n addOrRemoveClass(bgEl, _background2.default['background--active'], 'remove');\n addOrRemoveClass(bgEl, _background2.default['background--ready'], 'add');\n } else {\n addOrRemoveClass(bgEl, _background2.default['background--active'], 'remove');\n addOrRemoveClass(bgEl, _background2.default['background--ready'], 'remove');\n }\n });\n }\n};\n\nfunction addOrRemoveClass(el, className) {\n var action = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'add';\n\n if (!el || !el.classList || !className) return;\n if (action === 'remove') {\n return el.classList.contains(className) && el.classList.remove(className);\n }\n if (!el.classList.contains(className)) return el.classList.add(className);\n}\n\nfunction shouldBeActive(index, fgEls, bgEls) {\n var buffer = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 3;\n\n if (index < 0) return { fg: [], bg: [] };\n if (index === 0 && fgEls.length > buffer) {\n return {\n fgEls: fgEls.slice(0, buffer + 1),\n bgEls: bgEls.slice(0, buffer + 1)\n };\n } else if (index > 0) {\n if (fgEls.length > index + buffer) {\n var root = index - buffer;\n return {\n fgEls: fgEls.slice(root > 0 ? root : 0, index + buffer + 1),\n bgEls: bgEls.slice(root > 0 ? root : 0, index + buffer + 1)\n };\n }\n return {\n fgEls: fgEls.slice(index - buffer, fgEls.length),\n bgEls: bgEls.slice(index - buffer, fgEls.length)\n };\n }\n return { fgEls: [], bgEls: [] };\n}\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.triggerOnScrollComponent = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _imageUtils = __webpack_require__(4);\n\nvar _throttle = __webpack_require__(11);\n\nvar _throttle2 = _interopRequireDefault(_throttle);\n\nvar _background = __webpack_require__(0);\n\nvar _index = __webpack_require__(3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nvar eventListener = null;\n\nvar triggerOnScrollComponent = exports.triggerOnScrollComponent = {\n type: 'trigger-on-scroll',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var backgroundImage = props.backgroundImage,\n polopolyId = props.polopolyId,\n alignment = props.alignment,\n uncropped = props.uncropped,\n _props$backgroundColo = props.backgroundColor,\n backgroundColor = _props$backgroundColo === undefined ? '#333' : _props$backgroundColo;\n\n var style = 'background-color: ' + (backgroundColor || '') + ';';\n // const style = `background-color: ${backgroundColor};`\n\n var alignmentClasses = alignment ? alignment.join(' ') : [_index.alignMiddle, _index.alignCenter].join(' ');\n\n var imageStyle = uncropped ? 'position: relative' : 'min-width: 100%; min-height: 100%; position: relative;';\n\n var imageElement = '';\n if (polopolyId) {\n imageElement = (0, _imageUtils.getPolopolyImageElement)(polopolyId, alignmentClasses, imageStyle);\n } else if (backgroundImage) {\n imageElement = (0, _imageUtils.getImageElement)(backgroundImage, alignmentClasses, imageStyle);\n }\n\n return '\\n
\\n ' + (uncropped ? '
' : '') + '\\n ' + imageElement + '\\n ' + (uncropped ? '
' : '') + '\\n\\n ' + bgInnerHTML + '\\n
\\n ';\n },\n onCurrentChanged: function onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener);\n eventListener = null;\n }\n\n var type = currentSection.type;\n\n if (type === 'trigger-on-scroll') {\n eventListener = (0, _throttle2.default)(function () {\n return handleTriggerOnScroll(currentSection);\n }, 30, {\n passive: true\n });\n document.addEventListener('scroll', eventListener);\n }\n }\n};\n\nvar handleTriggerOnScroll = function handleTriggerOnScroll(section) {\n var _section$foregroundEl = section.foregroundElement.getBoundingClientRect(),\n y = _section$foregroundEl.y,\n top = _section$foregroundEl.top,\n height = _section$foregroundEl.height;\n\n var _window = window,\n innerHeight = _window.innerHeight,\n innerWidth = _window.innerWidth;\n var _section$props$onScro = section.props.onScroll,\n actions = _section$props$onScro.actions,\n lastParsedHeight = _section$props$onScro.lastParsedHeight,\n lastScroll = _section$props$onScro.lastScroll;\n\n\n var actionsToDo = actions;\n var direction = lastScroll > (y || top) ? 'forwards' : 'backwards';\n\n var shouldReparseWhen = !lastParsedHeight || lastParsedHeight > innerWidth + 50 || lastParsedHeight < innerWidth - 50;\n\n if (shouldReparseWhen) {\n section.props.onScroll.lastParsedHeight = innerWidth;\n\n actionsToDo = actions.map(function (action) {\n return _extends({}, action, {\n parsedWhen: parseWhen(action.when, height),\n parsedBreakpoints: innerWidth\n });\n });\n }\n\n if (direction !== section.props.onScroll.direction) actionsToDo.reverse();\n\n section.props.onScroll.lastScroll = y || top;\n section.props.onScroll.direction = direction;\n\n var pxInView = innerHeight - (y || top);\n\n if (pxInView >= height) {\n pxInView = height;\n } else if (pxInView <= 0) {\n pxInView = 0;\n }\n\n section.props.onScroll.actions = actionsToDo.map(function (action, i) {\n var breakpoint = action.breakpoint,\n parsedWhen = action.parsedWhen,\n isAnimated = action.isAnimated,\n classes = action.classes,\n style = action.style;\n\n\n var isBetweenBreakpoints = innerWidth > breakpoint.from && innerWidth < breakpoint.to;\n\n var shouldAnimateIn = parsedWhen.from < pxInView && parsedWhen.to > pxInView;\n if (direction === 'backwards') {\n shouldAnimateIn = parsedWhen.to > pxInView && parsedWhen.from < pxInView;\n }\n\n if (shouldAnimateIn && !isAnimated && isBetweenBreakpoints) {\n // DO ANIMATION\n\n var targetElement = getTarget(action, section);\n\n doAnimation(targetElement, classes, style);\n isAnimated = true;\n } else if (!shouldAnimateIn && isAnimated) {\n // UNDO ANIMATION\n if (!action.once) {\n var _targetElement = getTarget(action, section);\n\n isAnimated = false;\n undoAnimation(_targetElement, classes, style);\n }\n }\n return _extends({}, action, {\n isAnimated: isAnimated\n });\n });\n};\n\nvar parseWhen = function parseWhen(bp) {\n var height = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var parseFunction = function parseFunction(val) {\n if (typeof val !== 'number') {\n if (val.indexOf('%') > -1) {\n return height * (parseFloat(val) / 100);\n }\n return parseInt(val);\n }\n };\n\n return {\n to: parseFunction(bp.to),\n from: parseFunction(bp.from)\n };\n};\n\nvar getTarget = function getTarget(action, section) {\n var target = action.target;\n\n\n if (!target) return section.backgroundElement;\n if (Array.isArray(target)) {\n if (target.length > 1) {\n var foregroundOrBackground = target[1] === 'foreground' ? 'foregroundElement' : 'backgroundElement';\n\n return [].concat(_toConsumableArray(section[foregroundOrBackground].querySelectorAll(target[0])));\n }\n return [].concat(_toConsumableArray(section.foregroundElement.querySelectorAll(target[0])));\n }\n if (typeof target === 'string') {\n if (target === 'foreground') return section.foregroundElement;\n if (target === 'background') return section.backgroundElement;\n return document.querySelector(target);\n }\n};\n\nvar undoAnimation = function undoAnimation(targetElement, classes, style) {\n var isTargetArray = Array.isArray(targetElement);\n\n if (targetElement && classes) {\n if (isTargetArray) {\n targetElement.map(function (tE) {\n return tE.classList.remove(classes);\n });\n } else {\n targetElement.classList.remove(classes);\n }\n }\n if (targetElement && style) {\n if (isTargetArray) {\n targetElement.map(function (tE) {\n Object.keys(style).forEach(function (s) {\n tE.style[s] = null;\n });\n });\n } else {\n Object.keys(style).forEach(function (s) {\n targetElement.style[s] = null;\n });\n }\n }\n};\n\nvar doAnimation = function doAnimation(targetElement, classes, style) {\n var isTargetArray = Array.isArray(targetElement);\n if (targetElement && classes) {\n if (isTargetArray) {\n targetElement.map(function (tE) {\n return tE.classList.add(classes);\n });\n } else {\n targetElement.classList.add(classes);\n }\n }\n if (targetElement && style) {\n if (isTargetArray) {\n targetElement.map(function (tE) {\n Object.keys(style).forEach(function (s) {\n tE.style[s] = style[s];\n });\n });\n } else {\n Object.keys(style).forEach(function (s) {\n targetElement.style[s] = style[s];\n });\n }\n }\n};\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.videoComponent = undefined;\n\nvar _background = __webpack_require__(0);\n\nvar _video = __webpack_require__(5);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _googleAnalytics = __webpack_require__(6);\n\nvar _renderUtils = __webpack_require__(7);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar bgVideos = [];\n\nvar videoComponent = exports.videoComponent = {\n type: 'video',\n render: function render(id, props) {\n var bgInnerHTML = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';\n var video = props.video,\n alignment = props.alignment,\n overlay = props.overlay;\n var mp4 = video.mp4,\n webm = video.webm,\n poster = video.poster,\n subtitles = video.subtitles,\n hasSound = video.hasSound;\n\n\n var trackElement = subtitles ? '' : '';\n\n var alignmentClasses = alignment.join(' ');\n\n return '\\n
\\n \\n \\n \\n ' + trackElement + '\\n Your browser does not support the video tag. We suggest you upgrade your browser.\\n \\n
\\n ' + bgInnerHTML + '\\n ' + (0, _renderUtils.getOverlayElement)(overlay) + '\\n \\n
\\n ';\n },\n onCurrentChanged: function onCurrentChanged(currentSection, dispatch) {\n var id = currentSection.id,\n type = currentSection.type,\n props = currentSection.props,\n backgroundElement = currentSection.backgroundElement;\n var video = props.video;\n\n\n dispatch({ type: 'showMuteButton', value: video && video.hasSound });\n\n try {\n bgVideos.forEach(function (v) {\n v.pause();\n });\n } catch (error) {\n console.error('error in pause', error);\n }\n\n if (type === 'video') {\n var bgVideo = backgroundElement.querySelector('video');\n if (!bgVideo) return;\n\n try {\n bgVideo.play().catch(console.error);\n } catch (error) {\n console.error('error while playing', error);\n }\n\n if (!bgVideo.paused) {\n (0, _googleAnalytics.trackAction)('VIDEO_PLAYING/' + id);\n }\n\n if (bgVideos.indexOf(bgVideo) === -1) {\n bgVideos.push(bgVideo);\n }\n }\n },\n onStateChanged: function onStateChanged(state) {\n if (state.muted) {\n bgVideos.forEach(function (v) {\n return v.muted = true;\n });\n } else {\n bgVideos.forEach(function (v) {\n return v.muted = false;\n });\n }\n }\n};\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getUnmutedButton = exports.getMutedButton = exports.getInitialMuteButton = undefined;\n\nvar _video = __webpack_require__(5);\n\nvar _video2 = _interopRequireDefault(_video);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar getInitialMuteButton = exports.getInitialMuteButton = function getInitialMuteButton() {\n return '\\n \\n ';\n};\n\nvar getMutedButton = exports.getMutedButton = function getMutedButton() {\n return '\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n ';\n};\n\nvar getUnmutedButton = exports.getUnmutedButton = function getUnmutedButton() {\n return '\\n \\n \\n \\n \\n \\n \\n \\n \\n\\n \\n \\n \\n \\n \\n ';\n};\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = __webpack_require__(8);\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\nvar symbolToStr = hasSymbols ? Symbol.prototype.toString : toStr;\n\nvar $isNaN = __webpack_require__(23);\nvar $isFinite = __webpack_require__(22);\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\nvar assign = __webpack_require__(56);\nvar sign = __webpack_require__(25);\nvar mod = __webpack_require__(24);\nvar isPrimitive = __webpack_require__(57);\nvar toPrimitive = __webpack_require__(59);\nvar parseInteger = parseInt;\nvar bind = __webpack_require__(28);\nvar arraySlice = bind.call(Function.call, Array.prototype.slice);\nvar strSlice = bind.call(Function.call, String.prototype.slice);\nvar isBinary = bind.call(Function.call, RegExp.prototype.test, /^0b[01]+$/i);\nvar isOctal = bind.call(Function.call, RegExp.prototype.test, /^0o[0-7]+$/i);\nvar regexExec = bind.call(Function.call, RegExp.prototype.exec);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = bind.call(Function.call, RegExp.prototype.test, nonWSregex);\nvar invalidHexLiteral = /^[-+]0x[0-9a-f]+$/i;\nvar isInvalidHexLiteral = bind.call(Function.call, RegExp.prototype.test, invalidHexLiteral);\n\n// whitespace from: http://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar replace = bind.call(Function.call, String.prototype.replace);\nvar trim = function (value) {\n\treturn replace(value, trimRegex, '');\n};\n\nvar ES5 = __webpack_require__(55);\n\nvar hasRegExpMatcher = __webpack_require__(69);\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-abstract-operations\nvar ES6 = assign(assign({}, ES5), {\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-call-f-v-args\n\tCall: function Call(F, V) {\n\t\tvar args = arguments.length > 2 ? arguments[2] : [];\n\t\tif (!this.IsCallable(F)) {\n\t\t\tthrow new TypeError(F + ' is not a function');\n\t\t}\n\t\treturn F.apply(V, args);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toprimitive\n\tToPrimitive: toPrimitive,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toboolean\n\t// ToBoolean: ES5.ToBoolean,\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-tonumber\n\tToNumber: function ToNumber(argument) {\n\t\tvar value = isPrimitive(argument) ? argument : toPrimitive(argument, 'number');\n\t\tif (typeof value === 'symbol') {\n\t\t\tthrow new TypeError('Cannot convert a Symbol value to a number');\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tif (isBinary(value)) {\n\t\t\t\treturn this.ToNumber(parseInteger(strSlice(value, 2), 2));\n\t\t\t} else if (isOctal(value)) {\n\t\t\t\treturn this.ToNumber(parseInteger(strSlice(value, 2), 8));\n\t\t\t} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {\n\t\t\t\treturn NaN;\n\t\t\t} else {\n\t\t\t\tvar trimmed = trim(value);\n\t\t\t\tif (trimmed !== value) {\n\t\t\t\t\treturn this.ToNumber(trimmed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Number(value);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tointeger\n\t// ToInteger: ES5.ToNumber,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint32\n\t// ToInt32: ES5.ToInt32,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint32\n\t// ToUint32: ES5.ToUint32,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint16\n\tToInt16: function ToInt16(argument) {\n\t\tvar int16bit = this.ToUint16(argument);\n\t\treturn int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint16\n\t// ToUint16: ES5.ToUint16,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint8\n\tToInt8: function ToInt8(argument) {\n\t\tvar int8bit = this.ToUint8(argument);\n\t\treturn int8bit >= 0x80 ? int8bit - 0x100 : int8bit;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint8\n\tToUint8: function ToUint8(argument) {\n\t\tvar number = this.ToNumber(argument);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x100);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint8clamp\n\tToUint8Clamp: function ToUint8Clamp(argument) {\n\t\tvar number = this.ToNumber(argument);\n\t\tif ($isNaN(number) || number <= 0) { return 0; }\n\t\tif (number >= 0xFF) { return 0xFF; }\n\t\tvar f = Math.floor(argument);\n\t\tif (f + 0.5 < number) { return f + 1; }\n\t\tif (number < f + 0.5) { return f; }\n\t\tif (f % 2 !== 0) { return f + 1; }\n\t\treturn f;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tostring\n\tToString: function ToString(argument) {\n\t\tif (typeof argument === 'symbol') {\n\t\t\tthrow new TypeError('Cannot convert a Symbol value to a string');\n\t\t}\n\t\treturn String(argument);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toobject\n\tToObject: function ToObject(value) {\n\t\tthis.RequireObjectCoercible(value);\n\t\treturn Object(value);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertykey\n\tToPropertyKey: function ToPropertyKey(argument) {\n\t\tvar key = this.ToPrimitive(argument, String);\n\t\treturn typeof key === 'symbol' ? symbolToStr.call(key) : this.ToString(key);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n\tToLength: function ToLength(argument) {\n\t\tvar len = this.ToInteger(argument);\n\t\tif (len <= 0) { return 0; } // includes converting -0 to +0\n\t\tif (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }\n\t\treturn len;\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring\n\tCanonicalNumericIndexString: function CanonicalNumericIndexString(argument) {\n\t\tif (toStr.call(argument) !== '[object String]') {\n\t\t\tthrow new TypeError('must be a string');\n\t\t}\n\t\tif (argument === '-0') { return -0; }\n\t\tvar n = this.ToNumber(argument);\n\t\tif (this.SameValue(this.ToString(n), argument)) { return n; }\n\t\treturn void 0;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-requireobjectcoercible\n\tRequireObjectCoercible: ES5.CheckObjectCoercible,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isarray\n\tIsArray: Array.isArray || function IsArray(argument) {\n\t\treturn toStr.call(argument) === '[object Array]';\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-iscallable\n\t// IsCallable: ES5.IsCallable,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor\n\tIsConstructor: function IsConstructor(argument) {\n\t\treturn typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument`\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isextensible-o\n\tIsExtensible: function IsExtensible(obj) {\n\t\tif (!Object.preventExtensions) { return true; }\n\t\tif (isPrimitive(obj)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Object.isExtensible(obj);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isinteger\n\tIsInteger: function IsInteger(argument) {\n\t\tif (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar abs = Math.abs(argument);\n\t\treturn Math.floor(abs) === abs;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ispropertykey\n\tIsPropertyKey: function IsPropertyKey(argument) {\n\t\treturn typeof argument === 'string' || typeof argument === 'symbol';\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-isregexp\n\tIsRegExp: function IsRegExp(argument) {\n\t\tif (!argument || typeof argument !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasSymbols) {\n\t\t\tvar isRegExp = argument[Symbol.match];\n\t\t\tif (typeof isRegExp !== 'undefined') {\n\t\t\t\treturn ES5.ToBoolean(isRegExp);\n\t\t\t}\n\t\t}\n\t\treturn hasRegExpMatcher(argument);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevalue\n\t// SameValue: ES5.SameValue,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero\n\tSameValueZero: function SameValueZero(x, y) {\n\t\treturn (x === y) || ($isNaN(x) && $isNaN(y));\n\t},\n\n\t/**\n\t * 7.3.2 GetV (V, P)\n\t * 1. Assert: IsPropertyKey(P) is true.\n\t * 2. Let O be ToObject(V).\n\t * 3. ReturnIfAbrupt(O).\n\t * 4. Return O.[[Get]](P, V).\n\t */\n\tGetV: function GetV(V, P) {\n\t\t// 7.3.2.1\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\n\t\t// 7.3.2.2-3\n\t\tvar O = this.ToObject(V);\n\n\t\t// 7.3.2.4\n\t\treturn O[P];\n\t},\n\n\t/**\n\t * 7.3.9 - http://www.ecma-international.org/ecma-262/6.0/#sec-getmethod\n\t * 1. Assert: IsPropertyKey(P) is true.\n\t * 2. Let func be GetV(O, P).\n\t * 3. ReturnIfAbrupt(func).\n\t * 4. If func is either undefined or null, return undefined.\n\t * 5. If IsCallable(func) is false, throw a TypeError exception.\n\t * 6. Return func.\n\t */\n\tGetMethod: function GetMethod(O, P) {\n\t\t// 7.3.9.1\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\n\t\t// 7.3.9.2\n\t\tvar func = this.GetV(O, P);\n\n\t\t// 7.3.9.4\n\t\tif (func == null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// 7.3.9.5\n\t\tif (!this.IsCallable(func)) {\n\t\t\tthrow new TypeError(P + 'is not a function');\n\t\t}\n\n\t\t// 7.3.9.6\n\t\treturn func;\n\t},\n\n\t/**\n\t * 7.3.1 Get (O, P) - http://www.ecma-international.org/ecma-262/6.0/#sec-get-o-p\n\t * 1. Assert: Type(O) is Object.\n\t * 2. Assert: IsPropertyKey(P) is true.\n\t * 3. Return O.[[Get]](P, O).\n\t */\n\tGet: function Get(O, P) {\n\t\t// 7.3.1.1\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('Assertion failed: Type(O) is not Object');\n\t\t}\n\t\t// 7.3.1.2\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\t// 7.3.1.3\n\t\treturn O[P];\n\t},\n\n\tType: function Type(x) {\n\t\tif (typeof x === 'symbol') {\n\t\t\treturn 'Symbol';\n\t\t}\n\t\treturn ES5.Type(x);\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-speciesconstructor\n\tSpeciesConstructor: function SpeciesConstructor(O, defaultConstructor) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('Assertion failed: Type(O) is not Object');\n\t\t}\n\t\tvar C = O.constructor;\n\t\tif (typeof C === 'undefined') {\n\t\t\treturn defaultConstructor;\n\t\t}\n\t\tif (this.Type(C) !== 'Object') {\n\t\t\tthrow new TypeError('O.constructor is not an Object');\n\t\t}\n\t\tvar S = hasSymbols && Symbol.species ? C[Symbol.species] : undefined;\n\t\tif (S == null) {\n\t\t\treturn defaultConstructor;\n\t\t}\n\t\tif (this.IsConstructor(S)) {\n\t\t\treturn S;\n\t\t}\n\t\tthrow new TypeError('no constructor found');\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor\n\tCompletePropertyDescriptor: function CompletePropertyDescriptor(Desc) {\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (this.IsGenericDescriptor(Desc) || this.IsDataDescriptor(Desc)) {\n\t\t\tif (!has(Desc, '[[Value]]')) {\n\t\t\t\tDesc['[[Value]]'] = void 0;\n\t\t\t}\n\t\t\tif (!has(Desc, '[[Writable]]')) {\n\t\t\t\tDesc['[[Writable]]'] = false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (!has(Desc, '[[Get]]')) {\n\t\t\t\tDesc['[[Get]]'] = void 0;\n\t\t\t}\n\t\t\tif (!has(Desc, '[[Set]]')) {\n\t\t\t\tDesc['[[Set]]'] = void 0;\n\t\t\t}\n\t\t}\n\t\tif (!has(Desc, '[[Enumerable]]')) {\n\t\t\tDesc['[[Enumerable]]'] = false;\n\t\t}\n\t\tif (!has(Desc, '[[Configurable]]')) {\n\t\t\tDesc['[[Configurable]]'] = false;\n\t\t}\n\t\treturn Desc;\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw\n\tSet: function Set(O, P, V, Throw) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\tif (this.Type(Throw) !== 'Boolean') {\n\t\t\tthrow new TypeError('Throw must be a Boolean');\n\t\t}\n\t\tif (Throw) {\n\t\t\tO[P] = V;\n\t\t\treturn true;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tO[P] = V;\n\t\t\t} catch (e) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-hasownproperty\n\tHasOwnProperty: function HasOwnProperty(O, P) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\treturn has(O, P);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\tHasProperty: function HasProperty(O, P) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\treturn P in O;\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable\n\tIsConcatSpreadable: function IsConcatSpreadable(O) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasSymbols && typeof Symbol.isConcatSpreadable === 'symbol') {\n\t\t\tvar spreadable = this.Get(O, Symbol.isConcatSpreadable);\n\t\t\tif (typeof spreadable !== 'undefined') {\n\t\t\t\treturn this.ToBoolean(spreadable);\n\t\t\t}\n\t\t}\n\t\treturn this.IsArray(O);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-invoke\n\tInvoke: function Invoke(O, P) {\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\tvar argumentsList = arraySlice(arguments, 2);\n\t\tvar func = this.GetV(O, P);\n\t\treturn this.Call(func, O, argumentsList);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject\n\tCreateIterResultObject: function CreateIterResultObject(value, done) {\n\t\tif (this.Type(done) !== 'Boolean') {\n\t\t\tthrow new TypeError('Assertion failed: Type(done) is not Boolean');\n\t\t}\n\t\treturn {\n\t\t\tvalue: value,\n\t\t\tdone: done\n\t\t};\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-regexpexec\n\tRegExpExec: function RegExpExec(R, S) {\n\t\tif (this.Type(R) !== 'Object') {\n\t\t\tthrow new TypeError('R must be an Object');\n\t\t}\n\t\tif (this.Type(S) !== 'String') {\n\t\t\tthrow new TypeError('S must be a String');\n\t\t}\n\t\tvar exec = this.Get(R, 'exec');\n\t\tif (this.IsCallable(exec)) {\n\t\t\tvar result = this.Call(exec, R, [S]);\n\t\t\tif (result === null || this.Type(result) === 'Object') {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow new TypeError('\"exec\" method must return `null` or an Object');\n\t\t}\n\t\treturn regexExec(R, S);\n\t}\n});\n\ndelete ES6.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible\n\nmodule.exports = ES6;\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $isNaN = __webpack_require__(23);\nvar $isFinite = __webpack_require__(22);\n\nvar sign = __webpack_require__(25);\nvar mod = __webpack_require__(24);\n\nvar IsCallable = __webpack_require__(9);\nvar toPrimitive = __webpack_require__(58);\n\nvar has = __webpack_require__(8);\n\n// https://es5.github.io/#x9\nvar ES5 = {\n\tToPrimitive: toPrimitive,\n\n\tToBoolean: function ToBoolean(value) {\n\t\treturn !!value;\n\t},\n\tToNumber: function ToNumber(value) {\n\t\treturn Number(value);\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) { return 0; }\n\t\tif (number === 0 || !$isFinite(number)) { return number; }\n\t\treturn sign(number) * Math.floor(Math.abs(number));\n\t},\n\tToInt32: function ToInt32(x) {\n\t\treturn this.ToNumber(x) >> 0;\n\t},\n\tToUint32: function ToUint32(x) {\n\t\treturn this.ToNumber(x) >>> 0;\n\t},\n\tToUint16: function ToUint16(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x10000);\n\t},\n\tToString: function ToString(value) {\n\t\treturn String(value);\n\t},\n\tToObject: function ToObject(value) {\n\t\tthis.CheckObjectCoercible(value);\n\t\treturn Object(value);\n\t},\n\tCheckObjectCoercible: function CheckObjectCoercible(value, optMessage) {\n\t\t/* jshint eqnull:true */\n\t\tif (value == null) {\n\t\t\tthrow new TypeError(optMessage || 'Cannot call method on ' + value);\n\t\t}\n\t\treturn value;\n\t},\n\tIsCallable: IsCallable,\n\tSameValue: function SameValue(x, y) {\n\t\tif (x === y) { // 0 === -0, but they are not identical.\n\t\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/5.1/#sec-8\n\tType: function Type(x) {\n\t\tif (x === null) {\n\t\t\treturn 'Null';\n\t\t}\n\t\tif (typeof x === 'undefined') {\n\t\t\treturn 'Undefined';\n\t\t}\n\t\tif (typeof x === 'function' || typeof x === 'object') {\n\t\t\treturn 'Object';\n\t\t}\n\t\tif (typeof x === 'number') {\n\t\t\treturn 'Number';\n\t\t}\n\t\tif (typeof x === 'boolean') {\n\t\t\treturn 'Boolean';\n\t\t}\n\t\tif (typeof x === 'string') {\n\t\t\treturn 'String';\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n\tIsPropertyDescriptor: function IsPropertyDescriptor(Desc) {\n\t\tif (this.Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\t\t// jscs:disable\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// jscs:enable\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.1\n\tIsAccessorDescriptor: function IsAccessorDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.2\n\tIsDataDescriptor: function IsDataDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.3\n\tIsGenericDescriptor: function IsGenericDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!this.IsAccessorDescriptor(Desc) && !this.IsDataDescriptor(Desc)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.4\n\tFromPropertyDescriptor: function FromPropertyDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn Desc;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (this.IsDataDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tvalue: Desc['[[Value]]'],\n\t\t\t\twritable: !!Desc['[[Writable]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else if (this.IsAccessorDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tget: Desc['[[Get]]'],\n\t\t\t\tset: Desc['[[Set]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.5\n\tToPropertyDescriptor: function ToPropertyDescriptor(Obj) {\n\t\tif (this.Type(Obj) !== 'Object') {\n\t\t\tthrow new TypeError('ToPropertyDescriptor requires an object');\n\t\t}\n\n\t\tvar desc = {};\n\t\tif (has(Obj, 'enumerable')) {\n\t\t\tdesc['[[Enumerable]]'] = this.ToBoolean(Obj.enumerable);\n\t\t}\n\t\tif (has(Obj, 'configurable')) {\n\t\t\tdesc['[[Configurable]]'] = this.ToBoolean(Obj.configurable);\n\t\t}\n\t\tif (has(Obj, 'value')) {\n\t\t\tdesc['[[Value]]'] = Obj.value;\n\t\t}\n\t\tif (has(Obj, 'writable')) {\n\t\t\tdesc['[[Writable]]'] = this.ToBoolean(Obj.writable);\n\t\t}\n\t\tif (has(Obj, 'get')) {\n\t\t\tvar getter = Obj.get;\n\t\t\tif (typeof getter !== 'undefined' && !this.IsCallable(getter)) {\n\t\t\t\tthrow new TypeError('getter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Get]]'] = getter;\n\t\t}\n\t\tif (has(Obj, 'set')) {\n\t\t\tvar setter = Obj.set;\n\t\t\tif (typeof setter !== 'undefined' && !this.IsCallable(setter)) {\n\t\t\t\tthrow new TypeError('setter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Set]]'] = setter;\n\t\t}\n\n\t\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\t\tthrow new TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t\t}\n\t\treturn desc;\n\t}\n};\n\nmodule.exports = ES5;\n\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports) {\n\nvar has = Object.prototype.hasOwnProperty;\nmodule.exports = function assign(target, source) {\n\tif (Object.assign) {\n\t\treturn Object.assign(target, source);\n\t}\n\tfor (var key in source) {\n\t\tif (has.call(source, key)) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n};\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports) {\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = __webpack_require__(26);\n\nvar isCallable = __webpack_require__(9);\n\n// https://es5.github.io/#x8.12\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O, hint) {\n\t\tvar actualHint = hint || (toStr.call(O) === '[object Date]' ? String : Number);\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// https://es5.github.io/#x9\nmodule.exports = function ToPrimitive(input, PreferredType) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input, PreferredType);\n};\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = __webpack_require__(26);\nvar isCallable = __webpack_require__(9);\nvar isDate = __webpack_require__(68);\nvar isSymbol = __webpack_require__(70);\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input, PreferredType) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (PreferredType === String) {\n\t\t\thint = 'string';\n\t\t} else if (PreferredType === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(process, global) {var require;/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\t true ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = __webpack_require__(82);\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && \"function\" === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(81), __webpack_require__(12)))\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"animate-pulsate\":\"nrk-filmavis-snap-animate-pulsate\",\"animatePulsate\":\"nrk-filmavis-snap-animate-pulsate\",\"pulsateAndRotate\":\"nrk-filmavis-snap-pulsateAndRotate\"};\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"intro-block\":\"nrk-filmavis-snap-intro-block\",\"introBlock\":\"nrk-filmavis-snap-intro-block\",\"section--ready\":\"nrk-filmavis-snap-section--ready\",\"sectionReady\":\"nrk-filmavis-snap-section--ready\",\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"heading-block\":\"nrk-filmavis-snap-heading-block\",\"headingBlock\":\"nrk-filmavis-snap-heading-block\",\"block\":\"nrk-filmavis-snap-block\",\"block--shadow\":\"nrk-filmavis-snap-block--shadow\",\"blockShadow\":\"nrk-filmavis-snap-block--shadow\",\"block__right\":\"nrk-filmavis-snap-block__right\",\"blockRight\":\"nrk-filmavis-snap-block--right\",\"block__left\":\"nrk-filmavis-snap-block__left\",\"blockLeft\":\"nrk-filmavis-snap-block--left\",\"block__spaceAfter\":\"nrk-filmavis-snap-block__spaceAfter\",\"blockSpaceAfter\":\"nrk-filmavis-snap-block__spaceAfter\",\"block__lessPadding\":\"nrk-filmavis-snap-block__lessPadding\",\"blockLessPadding\":\"nrk-filmavis-snap-block__lessPadding\",\"block__map\":\"nrk-filmavis-snap-block__map\",\"blockMap\":\"nrk-filmavis-snap-block__map\",\"block__noMarginBottom\":\"nrk-filmavis-snap-block__noMarginBottom\",\"blockNoMarginBottom\":\"nrk-filmavis-snap-block__noMarginBottom\",\"block__lastBlock\":\"nrk-filmavis-snap-block__lastBlock\",\"blockLastBlock\":\"nrk-filmavis-snap-block__lastBlock\",\"block__full-width\":\"nrk-filmavis-snap-block__full-width\",\"blockFullWidth\":\"nrk-filmavis-snap-block__full-width\",\"block__inverse\":\"nrk-filmavis-snap-block__inverse\",\"blockInverse\":\"nrk-filmavis-snap-block__inverse\",\"blockqoute\":\"nrk-filmavis-snap-blockqoute\",\"blockqoute--sm\":\"nrk-filmavis-snap-blockqoute--sm\",\"blockqouteSm\":\"nrk-filmavis-snap-blockqoute--sm\",\"blockqoute--regular\":\"nrk-filmavis-snap-blockqoute--regular\",\"blockqouteRegular\":\"nrk-filmavis-snap-blockqoute--regular\",\"blockqoute--pullqoute\":\"nrk-filmavis-snap-blockqoute--pullqoute\",\"blockqoutePullqoute\":\"nrk-filmavis-snap-blockqoute--pullqoute\",\"cite--fancy\":\"nrk-filmavis-snap-cite--fancy\",\"citeFancy\":\"nrk-filmavis-snap-cite--fancy\",\"block--no-bg\":\"nrk-filmavis-snap-block--no-bg\",\"blockNoBg\":\"nrk-filmavis-snap-block--no-bg\",\"block--big-font\":\"nrk-filmavis-snap-block--big-font\",\"blockBigFont\":\"nrk-filmavis-snap-block--big-font\",\"block--xl-font\":\"nrk-filmavis-snap-block--xl-font\",\"blockXlFont\":\"nrk-filmavis-snap-block--xl-font\",\"block--left\":\"nrk-filmavis-snap-block--left\",\"block--right\":\"nrk-filmavis-snap-block--right\",\"block--center\":\"nrk-filmavis-snap-block--center\",\"blockCenter\":\"nrk-filmavis-snap-block--center\"};\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"bylineSection\":\"nrk-filmavis-snap-bylineSection\",\"byline--sharebutton--container\":\"nrk-filmavis-snap-byline--sharebutton--container\",\"bylineSharebuttonContainer\":\"nrk-filmavis-snap-byline--sharebutton--container\",\"byline--sharebutton--group\":\"nrk-filmavis-snap-byline--sharebutton--group\",\"bylineSharebuttonGroup\":\"nrk-filmavis-snap-byline--sharebutton--group\",\"byline--sharebutton--item\":\"nrk-filmavis-snap-byline--sharebutton--item\",\"bylineSharebuttonItem\":\"nrk-filmavis-snap-byline--sharebutton--item\",\"seemore--block\":\"nrk-filmavis-snap-seemore--block\",\"seemoreBlock\":\"nrk-filmavis-snap-seemore--block\",\"byline--block\":\"nrk-filmavis-snap-byline--block\",\"bylineBlock\":\"nrk-filmavis-snap-byline--block\",\"seemore--heading\":\"nrk-filmavis-snap-seemore--heading\",\"seemoreHeading\":\"nrk-filmavis-snap-seemore--heading\",\"seemore--heading-link\":\"nrk-filmavis-snap-seemore--heading-link\",\"seemoreHeadingLink\":\"nrk-filmavis-snap-seemore--heading-link\",\"seemore--link--list--wrapper\":\"nrk-filmavis-snap-seemore--link--list--wrapper\",\"seemoreLinkListWrapper\":\"nrk-filmavis-snap-seemore--link--list--wrapper\",\"seemore--link--list\":\"nrk-filmavis-snap-seemore--link--list\",\"seemoreLinkList\":\"nrk-filmavis-snap-seemore--link--list\",\"seemore--link--item\":\"nrk-filmavis-snap-seemore--link--item\",\"seemoreLinkItem\":\"nrk-filmavis-snap-seemore--link--item\",\"seemore--link--image\":\"nrk-filmavis-snap-seemore--link--image\",\"seemoreLinkImage\":\"nrk-filmavis-snap-seemore--link--image\",\"byline--credit--list\":\"nrk-filmavis-snap-byline--credit--list\",\"bylineCreditList\":\"nrk-filmavis-snap-byline--credit--list\",\"byline--credit--list--item\":\"nrk-filmavis-snap-byline--credit--list--item\",\"bylineCreditListItem\":\"nrk-filmavis-snap-byline--credit--list--item\",\"byline--credit--list--item--role\":\"nrk-filmavis-snap-byline--credit--list--item--role\",\"bylineCreditListItemRole\":\"nrk-filmavis-snap-byline--credit--list--item--role\",\"byline--credit--list--item--names\":\"nrk-filmavis-snap-byline--credit--list--item--names\",\"bylineCreditListItemNames\":\"nrk-filmavis-snap-byline--credit--list--item--names\"};\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"fade\":\"nrk-filmavis-snap-fade\",\"animate-into\":\"nrk-filmavis-snap-animate-into\",\"animateInto\":\"nrk-filmavis-snap-animate-into\",\"animate-away\":\"nrk-filmavis-snap-animate-away\",\"animateAway\":\"nrk-filmavis-snap-animate-away\",\"none\":\"nrk-filmavis-snap-none\",\"actually-none\":\"nrk-filmavis-snap-actually-none\",\"actuallyNone\":\"nrk-filmavis-snap-actually-none\",\"blur\":\"nrk-filmavis-snap-blur\",\"swipe\":\"nrk-filmavis-snap-swipe\",\"swipe-left\":\"nrk-filmavis-snap-swipe-left\",\"swipeLeft\":\"nrk-filmavis-snap-swipe-left\",\"swipe-right\":\"nrk-filmavis-snap-swipe-right\",\"swipeRight\":\"nrk-filmavis-snap-swipe-right\",\"swipe-down\":\"nrk-filmavis-snap-swipe-down\",\"swipeDown\":\"nrk-filmavis-snap-swipe-down\",\"swipe-up\":\"nrk-filmavis-snap-swipe-up\",\"swipeUp\":\"nrk-filmavis-snap-swipe-up\",\"zoom\":\"nrk-filmavis-snap-zoom\",\"zoom-in\":\"nrk-filmavis-snap-zoom-in\",\"zoomIn\":\"nrk-filmavis-snap-zoom-in\",\"zoom-out\":\"nrk-filmavis-snap-zoom-out\",\"zoomOut\":\"nrk-filmavis-snap-zoom-out\"};\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports) {\n\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports) {\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports) {\n\n/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/WICG/IntersectionObserver/issues/211\n if (!('isIntersecting' in IntersectionObserverEntry.prototype)) {\n Object.defineProperty(IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://wicg.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea;\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://wicg.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n // If the target is already being observed, do nothing.\n if (this._observationTargets.some(function(item) {\n return item.element == target;\n })) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n this._checkForIntersections();\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if ('MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://wicg.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/WICG/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar has = __webpack_require__(8);\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') { return false; }\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') { return true; }\n\t\tif (toStr.call(value) !== '[object Symbol]') { return false; }\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false;\n\t};\n}\n\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(29),\n getRawTag = __webpack_require__(73),\n objectToString = __webpack_require__(74);\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/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(12)))\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Symbol = __webpack_require__(29);\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/* 74 */\n/***/ (function(module, exports) {\n\n/** 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/* 75 */\n/***/ (function(module, exports) {\n\n/**\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/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar baseGetTag = __webpack_require__(71),\n isObjectLike = __webpack_require__(75);\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/* 77 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar root = __webpack_require__(30);\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/* 78 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(10),\n isSymbol = __webpack_require__(76);\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/* 79 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(80);\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\n/* (ignored) */\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(32);\nmodule.exports = __webpack_require__(33);\n\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// index-6d55ca.js"," \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// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\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 = 83);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6d55ca035541536162b0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"backgrounds\":\"nrk-filmavis-snap-backgrounds\",\"background\":\"nrk-filmavis-snap-background\",\"visible\":\"nrk-filmavis-snap-visible\",\"background--active\":\"nrk-filmavis-snap-background--active\",\"backgroundActive\":\"nrk-filmavis-snap-background--active\",\"background--ready\":\"nrk-filmavis-snap-background--ready\",\"backgroundReady\":\"nrk-filmavis-snap-background--ready\",\"superoverlay\":\"nrk-filmavis-snap-superoverlay\",\"backgroundGradient\":\"nrk-filmavis-snap-backgroundGradient\",\"uncropped-image-container\":\"nrk-filmavis-snap-uncropped-image-container\",\"uncroppedImageContainer\":\"nrk-filmavis-snap-uncropped-image-container\",\"panorama-image-container\":\"nrk-filmavis-snap-panorama-image-container\",\"panoramaImageContainer\":\"nrk-filmavis-snap-panorama-image-container\",\"trigger-on-scroll-container\":\"nrk-filmavis-snap-trigger-on-scroll-container\",\"triggerOnScrollContainer\":\"nrk-filmavis-snap-trigger-on-scroll-container\",\"background-overlay\":\"nrk-filmavis-snap-background-overlay\",\"backgroundOverlay\":\"nrk-filmavis-snap-background-overlay\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/background.css\n// module id = 0\n// module chunks = 0","'use strict';\n\nvar keys = require('object-keys');\nvar foreach = require('foreach');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nvar toStr = Object.prototype.toString;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function () {\n\tvar obj = {};\n\ttry {\n\t\tObject.defineProperty(obj, 'x', { enumerable: false, value: obj });\n /* eslint-disable no-unused-vars, no-restricted-syntax */\n for (var _ in obj) { return false; }\n /* eslint-enable no-unused-vars, no-restricted-syntax */\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = Object.defineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\tObject.defineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value;\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = props.concat(Object.getOwnPropertySymbols(map));\n\t}\n\tforeach(props, function (name) {\n\t\tdefineProperty(object, name, map[name], predicates[name]);\n\t});\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/define-properties/index.js\n// module id = 1\n// module chunks = 0","'use strict';\n\nmodule.exports = require('./es2015');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/es6.js\n// module id = 2\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"align-top\":\"nrk-filmavis-snap-align-top\",\"alignTop\":\"nrk-filmavis-snap-align-top\",\"align-center\":\"nrk-filmavis-snap-align-center\",\"alignCenter\":\"nrk-filmavis-snap-align-center\",\"align-left\":\"nrk-filmavis-snap-align-left\",\"alignLeft\":\"nrk-filmavis-snap-align-left\",\"align-right\":\"nrk-filmavis-snap-align-right\",\"alignRight\":\"nrk-filmavis-snap-align-right\",\"align-middle\":\"nrk-filmavis-snap-align-middle\",\"alignMiddle\":\"nrk-filmavis-snap-align-middle\",\"align-bottom\":\"nrk-filmavis-snap-align-bottom\",\"alignBottom\":\"nrk-filmavis-snap-align-bottom\",\"mobile-align-top\":\"nrk-filmavis-snap-mobile-align-top\",\"mobileAlignTop\":\"nrk-filmavis-snap-mobile-align-top\",\"mobile-align-center\":\"nrk-filmavis-snap-mobile-align-center\",\"mobileAlignCenter\":\"nrk-filmavis-snap-mobile-align-center\",\"mobile-align-left\":\"nrk-filmavis-snap-mobile-align-left\",\"mobileAlignLeft\":\"nrk-filmavis-snap-mobile-align-left\",\"mobile-align-right\":\"nrk-filmavis-snap-mobile-align-right\",\"mobileAlignRight\":\"nrk-filmavis-snap-mobile-align-right\",\"mobile-align-middle\":\"nrk-filmavis-snap-mobile-align-middle\",\"mobileAlignMiddle\":\"nrk-filmavis-snap-mobile-align-middle\",\"mobile-align-bottom\":\"nrk-filmavis-snap-mobile-align-bottom\",\"mobileAlignBottom\":\"nrk-filmavis-snap-mobile-align-bottom\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/alignment/index.css\n// module id = 3\n// module chunks = 0","import { createImageUrl } from '@nrk/serum-imagecrop-utils'\n\nexport const supportedWidths = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400]\n\nexport function createSrcSet(imageId, ratio, supportedWidths) {\n return supportedWidths\n .map(width => {\n const imageUrl = createImageUrl({ id: imageId, width, ratio, quality: 0.7 })\n return `${imageUrl} ${width}w`\n })\n .join(', ')\n}\n\nexport function prepareUrl(url, ratio, width) {\n return url.replace('{{ratio}}', ratio).replace('{{width}}', width)\n}\n\nexport function getPolopolyImageElement(\n polopolyId: string,\n alignmentClasses: string = '',\n imgStyle: string = '',\n pictureStyle: string = ''\n): string {\n // const defaultUrl = createImageUrl({ id: polopolyId, width: 1600, ratio: '1:1', quality: 0.7 })\n // const desktopSourceSet = createSrcSet(polopolyId, '1:1', supportedWidths)\n const defaultUrl = createImageUrl({\n id: polopolyId,\n width: 1600,\n ratio: '16:9',\n quality: 0.7\n })\n const desktopSourceSet = createSrcSet(polopolyId, '16:9', supportedWidths)\n\n const mobileSourceSet = createSrcSet(polopolyId, '3:4', supportedWidths)\n\n return `\n \n \n \n `\n}\n\nexport function getImageElement(imageUrl: string, alignmentClasses: string = ''): string {\n const imgStyle = 'min-width: 100%; min-height: 100%; position: relative;'\n return ``\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils/imageUtils.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"video\":\"nrk-filmavis-snap-video\",\"darkedout\":\"nrk-filmavis-snap-darkedout\",\"fullscreen--video\":\"nrk-filmavis-snap-fullscreen--video\",\"fullscreenVideo\":\"nrk-filmavis-snap-fullscreen--video\",\"fullscreen--video--container\":\"nrk-filmavis-snap-fullscreen--video--container\",\"fullscreenVideoContainer\":\"nrk-filmavis-snap-fullscreen--video--container\",\"video-mute-button\":\"nrk-filmavis-snap-video-mute-button\",\"videoMuteButton\":\"nrk-filmavis-snap-video-mute-button\",\"video-mute-svg-muted-hover\":\"nrk-filmavis-snap-video-mute-svg-muted-hover\",\"videoMuteSvgMutedHover\":\"nrk-filmavis-snap-video-mute-svg-muted-hover\",\"video-mute-svg-unmuted-hover\":\"nrk-filmavis-snap-video-mute-svg-unmuted-hover\",\"videoMuteSvgUnmutedHover\":\"nrk-filmavis-snap-video-mute-svg-unmuted-hover\",\"visible\":\"nrk-filmavis-snap-visible\",\"hide-play\":\"nrk-filmavis-snap-hide-play\",\"hidePlay\":\"nrk-filmavis-snap-hide-play\",\"subtitlescontainer\":\"nrk-filmavis-snap-subtitlescontainer\",\"subtitles\":\"nrk-filmavis-snap-subtitles\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/video.css\n// module id = 5\n// module chunks = 0","const label = 'snapchat-saken'\nlet isTrackingEnabled = false\n\nexport function initialize(trackingEnabled) {\n isTrackingEnabled = trackingEnabled\n // label = name\n}\n\nexport function trackAction(action) {\n sendToGoogleAnalytics({\n category: 'dh-richer-feature',\n action,\n label\n })\n}\n\nfunction sendToGoogleAnalytics({ category, action, label }) {\n if (window.ga && isTrackingEnabled) {\n window.ga('send', 'event', category, action, label)\n } else {\n if (typeof console !== 'undefined') {\n console.log(category, action, label)\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils/googleAnalytics.js","// @flow\nimport { backgroundOverlay } from '../stylesheets/background.css'\n\nexport const getOverlayElement = (overlay: ?boolean | ?Object): string => {\n let defaultOverlay = {\n opacity: 0.8,\n color: '#000'\n }\n\n if (overlay === true) {\n return `
`\n }\n\n if (overlay) {\n Object.assign(defaultOverlay, overlay)\n return `
`\n }\n\n return ''\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils/renderUtils.js","var bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/has/src/index.js\n// module id = 8\n// module chunks = 0","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class /;\nvar isES6ClassFn = function isES6ClassFn(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\tvar singleStripped = fnStr.replace(/\\/\\/.*\\n/g, '');\n\t\tvar multiStripped = singleStripped.replace(/\\/\\*[.\\s\\S]*\\*\\//g, '');\n\t\tvar spaceStripped = multiStripped.replace(/\\n/mg, ' ').replace(/ {2}/g, ' ');\n\t\treturn constructorRegex.test(spaceStripped);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionObject(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isCallable(value) {\n\tif (!value) { return false; }\n\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\tif (hasToStringTag) { return tryFunctionObject(value); }\n\tif (isES6ClassFn(value)) { return false; }\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-callable/index.js\n// module id = 9\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// ./~/lodash/isObject.js\n// module id = 10\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// ./~/lodash/throttle.js\n// module id = 11\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 12\n// module chunks = 0","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (factory((global.nrkSerumImagecropUtils = {})));\n}(this, (function (exports) { 'use strict';\n\n var isPolopolyIdRegex = /^[1-9]{1,2}\\.\\d+$/;\n\n function isPolopolyId(id) {\n if (!id) {\n return false;\n }\n return isPolopolyIdRegex.test(id);\n }\n\n // prettier-ignore\n var widths = [100, 120, 150, 174, 200, 206, 225, 244, 250, 252, 300, 320, 350, 400, 450, 452, 460, 462, 500, 600, 650, 665, 682, 700, 734, 768, 900, 974, 1200, 1280, 1360, 1450, 1550, 1600, 1700, 1800, 1920, 2000, 2100, 2200, 2300, 2400];\n\n // prettier-ignore\n var ratios = ['1:1', '11', '16:9', '169', '16:3', '163', '3:4', '34'];\n\n // prettier-ignore\n var qualities = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0];\n\n var _baseUrl = 'https://nrk.no/serum/api/imagecrop/';\n\n function createUrl(_ref) {\n var id = _ref.id,\n ratio = _ref.ratio,\n width = _ref.width,\n quality = _ref.quality;\n\n var url = '' + _baseUrl + id;\n var queryString = createQueryString({ ratio: ratio, width: width, quality: quality });\n if (queryString) {\n url += '?' + queryString;\n }\n return url;\n }\n\n function createQueryString(_ref2) {\n var ratio = _ref2.ratio,\n width = _ref2.width,\n quality = _ref2.quality;\n\n if (!ratio && !width) {\n return quality ? 'quality=' + quality : '';\n }\n var ratioPart = ratio ? 'f' + ratio.replace(':', '') : '';\n var widthPart = width ? 'w' + width : '';\n var qualityPart = quality ? '&quality=' + quality : '';\n return 'cropid=' + ratioPart + widthPart + qualityPart;\n }\n\n function getClosestNumber(goal, targets) {\n if (!isValidGoal(goal)) {\n throw new Error('\\n getClosestNumber(goal, targets): passing a goal of ' + goal + '\\n is not supported. Pass a number');\n }\n if (!isValidTargets(targets)) {\n throw new Error('\\n getClosestNumber(goal, targets): targets ' + targets.toString() + ' is invald.\\n Pass an array of numbers');\n }\n if (!targets.length) {\n // eslint-disable-next-line no-undefined\n return undefined;\n }\n return targets.reduce(function (prev, curr) {\n return Math.abs(curr - goal) < Math.abs(prev - goal) ? curr : prev;\n });\n }\n\n function isValidGoal(goal) {\n return typeof goal === 'number';\n }\n\n function isValidTargets(targets) {\n if (!targets) {\n return false;\n }\n var isValid = true;\n for (var i = 0; i < targets.length; i++) {\n if (typeof targets[i] !== 'number') {\n isValid = false;\n break;\n }\n }\n // return targets.some((target) => {\n // return (typeof target !== 'number')\n // })\n return isValid;\n }\n\n function isValidRatio(ratio, supportedRatios) {\n if (!Array.isArray(supportedRatios)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidRatio(ratio, supportedRatios): supportedRatios '\" + supportedRatios + \"' is not supported. Pass an array of supported ratios\");\n }\n if (!ratio) {\n return false;\n }\n return supportedRatios.includes(ratio);\n }\n\n function isValidQuality(quality, supportedQualities) {\n if (!Array.isArray(supportedQualities)) {\n // eslint-disable-next-line no-useless-escape\n throw new Error(\"isValidQuality(quality, supportedQualities): supportedQualities '\" + supportedQualities + \"' is not supported. Pass an array of supported qualities\");\n }\n if (!quality) {\n return false;\n }\n return supportedQualities.includes(quality);\n }\n\n function createImageUrl(options) {\n var polopolyId = options.id,\n width = options.width,\n ratio = options.ratio,\n quality = options.quality;\n\n\n if (!isPolopolyId(polopolyId)) {\n throw new Error('createSerumImageUrl(): invalid polopolyId. Got ' + polopolyId);\n }\n\n var args = {\n id: polopolyId,\n ratio: null,\n quality: 0.8,\n width: 0\n\n // If a ratio is provided, ensure that it is valid\n };if (hasOption(ratio)) {\n if (!isValidRatio(ratio, ratios)) {\n throw new Error('\\n createSerumImageUrl(): ratio ' + ratio + ' is not supported.\\n Supported ratios are ' + ratios.toString());\n }\n args.ratio = ratio;\n }\n\n // If a quality is provided, ensure that it is valid\n if (hasOption(quality)) {\n if (!isValidQuality(quality, qualities)) {\n throw new Error('\\n createSerumImageUrl(): quality ' + quality + ' is not supported.\\n Supported qualities are ' + qualities.toString());\n }\n args.quality = quality;\n }\n\n // If a width is provided, ensure that is is a positive integer\n if (hasOption(width)) {\n if (!isNumber(width) || width <= 0) {\n var errorMessage = 'createSerumImageUrl(): width must be a positive integer, got ' + width;\n throw new Error(errorMessage);\n }\n var isSupportedWidth = widths.includes(width);\n var closestWidth = getClosestNumber(width, widths);\n if (typeof closestWidth !== 'undefined' && closestWidth) {\n args.width = isSupportedWidth ? width : closestWidth;\n }\n }\n\n return createUrl(args);\n }\n\n function hasOption(option) {\n return typeof option !== 'undefined' && option;\n }\n\n function isNumber(number) {\n return Number.isInteger(number);\n }\n\n exports.createImageUrl = createImageUrl;\n exports.ratios = ratios;\n exports.widths = widths;\n exports.qualities = qualities;\n exports.isPolopolyId = isPolopolyId;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@nrk/serum-imagecrop-utils/lib/index.js\n// module id = 13\n// module chunks = 0","'use strict';\n\nvar ES = require('es-abstract/es6');\nvar $isNaN = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\nvar $isFinite = Number.isFinite || function isFinite(n) {\n\treturn typeof n === 'number' && global.isFinite(n);\n};\nvar indexOf = Array.prototype.indexOf;\n\nmodule.exports = function includes(searchElement) {\n\tvar fromIndex = arguments.length > 1 ? ES.ToInteger(arguments[1]) : 0;\n\tif (indexOf && !$isNaN(searchElement) && $isFinite(fromIndex) && typeof searchElement !== 'undefined') {\n\t\treturn indexOf.apply(this, arguments) > -1;\n\t}\n\n\tvar O = ES.ToObject(this);\n\tvar length = ES.ToLength(O.length);\n\tif (length === 0) {\n\t\treturn false;\n\t}\n\tvar k = fromIndex >= 0 ? fromIndex : Math.max(0, length + fromIndex);\n\twhile (k < length) {\n\t\tif (ES.SameValueZero(searchElement, O[k])) {\n\t\t\treturn true;\n\t\t}\n\t\tk += 1;\n\t}\n\treturn false;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array-includes/implementation.js\n// module id = 14\n// module chunks = 0","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn Array.prototype.includes || implementation;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array-includes/polyfill.js\n// module id = 15\n// module chunks = 0","'use strict';\nvar ES = require('es-abstract/es6');\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\n\n/*! https://mths.be/array-from v0.2.0 by @mathias */\nmodule.exports = function from(arrayLike) {\n\tvar defineProperty = supportsDescriptors ? Object.defineProperty : function put(object, key, descriptor) {\n\t\tobject[key] = descriptor.value;\n\t};\n\tvar C = this;\n\tif (arrayLike === null || typeof arrayLike === 'undefined') {\n\t\tthrow new TypeError('`Array.from` requires an array-like object, not `null` or `undefined`');\n\t}\n\tvar items = ES.ToObject(arrayLike);\n\n\tvar mapFn, T;\n\tif (typeof arguments[1] !== 'undefined') {\n\t\tmapFn = arguments[1];\n\t\tif (!ES.IsCallable(mapFn)) {\n\t\t\tthrow new TypeError('When provided, the second argument to `Array.from` must be a function');\n\t\t}\n\t\tif (arguments.length > 2) {\n\t\t\tT = arguments[2];\n\t\t}\n\t}\n\n\tvar len = ES.ToLength(items.length);\n\tvar A = ES.IsCallable(C) ? ES.ToObject(new C(len)) : new Array(len);\n\tvar k = 0;\n\tvar kValue, mappedValue;\n\twhile (k < len) {\n\t\tkValue = items[k];\n\t\tif (mapFn) {\n\t\t\tmappedValue = typeof T === 'undefined' ? mapFn(kValue, k) : ES.Call(mapFn, T, [kValue, k]);\n\t\t} else {\n\t\t\tmappedValue = kValue;\n\t\t}\n\t\tdefineProperty(A, k, {\n\t\t\t'configurable': true,\n\t\t\t'enumerable': true,\n\t\t\t'value': mappedValue,\n\t\t\t'writable': true\n\t\t});\n\t\tk += 1;\n\t}\n\tA.length = len;\n\treturn A;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.from/implementation.js\n// module id = 16\n// module chunks = 0","'use strict';\n\nvar ES = require('es-abstract/es6');\nvar implementation = require('./implementation');\n\nvar tryCall = function (fn) {\n\ttry {\n\t\tfn();\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nmodule.exports = function getPolyfill() {\n\tvar implemented = ES.IsCallable(Array.from)\n\t\t&& tryCall(function () { Array.from({ 'length': -Infinity }); })\n\t\t&& !tryCall(function () { Array.from([], undefined); });\n\n\treturn implemented ? Array.from : implementation;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.from/polyfill.js\n// module id = 17\n// module chunks = 0","'use strict';\n\nvar ES = require('es-abstract/es6');\n\nmodule.exports = function find(predicate) {\n\tvar list = ES.ToObject(this);\n\tvar length = ES.ToInteger(ES.ToLength(list.length));\n\tif (!ES.IsCallable(predicate)) {\n\t\tthrow new TypeError('Array#find: predicate must be a function');\n\t}\n\tif (length === 0) {\n\t\treturn undefined;\n\t}\n\tvar thisArg = arguments[1];\n\tfor (var i = 0, value; i < length; i++) {\n\t\tvalue = list[i];\n\t\tif (ES.Call(predicate, thisArg, [value, i, list])) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn undefined;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.prototype.find/implementation.js\n// module id = 18\n// module chunks = 0","'use strict';\n\nmodule.exports = function getPolyfill() {\n\t// Detect if an implementation exists\n\t// Detect early implementations which skipped holes in sparse arrays\n // eslint-disable-next-line no-sparse-arrays\n\tvar implemented = Array.prototype.find && [, 1].find(function () {\n\t\treturn true;\n\t}) !== 1;\n\n // eslint-disable-next-line global-require\n\treturn implemented ? Array.prototype.find : require('./implementation');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.prototype.find/polyfill.js\n// module id = 19\n// module chunks = 0","import { imageComponent } from './image'\nimport { colorComponent } from './color'\nimport { videoComponent } from './video'\n// import { polopolyComponent } from './polopoly'\n// import { uncroppedComponent } from './uncropped'\nimport { panoramaComponent } from './panorama'\nimport { flipScrollComponent } from './flipScroll'\nimport { triggerOnScrollComponent } from './triggerOnScroll'\nimport { animateVideoComponent } from './animateVideo'\nimport { setActiveElementClass } from './renderless/activeClass'\n\nexport const components = [\n setActiveElementClass,\n imageComponent,\n colorComponent,\n videoComponent,\n // polopolyComponent,\n // uncroppedComponent,\n panoramaComponent,\n triggerOnScrollComponent,\n flipScrollComponent,\n animateVideoComponent\n]\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/index.js","export function constrain(value, min, max) {\n return Math.min(Math.max(value, min), max)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils/general.js","var $isNaN = Number.isNaN || function (a) { return a !== a; };\n\nmodule.exports = Number.isFinite || function (x) { return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/isFinite.js\n// module id = 22\n// module chunks = 0","module.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/isNaN.js\n// module id = 23\n// module chunks = 0","module.exports = function mod(number, modulo) {\n\tvar remain = number % modulo;\n\treturn Math.floor(remain >= 0 ? remain : remain + modulo);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/mod.js\n// module id = 24\n// module chunks = 0","module.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/sign.js\n// module id = 25\n// module chunks = 0","module.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-to-primitive/helpers/isPrimitive.js\n// module id = 26\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"sections\":\"nrk-filmavis-snap-sections\",\"section\":\"nrk-filmavis-snap-section\",\"section--no-min-height\":\"nrk-filmavis-snap-section--no-min-height\",\"sectionNoMinHeight\":\"nrk-filmavis-snap-section--no-min-height\",\"section--ready\":\"nrk-filmavis-snap-section--ready\",\"sectionReady\":\"nrk-filmavis-snap-section--ready\",\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"sectionAfterStandup\":\"nrk-filmavis-snap-sectionAfterStandup\",\"sectionBeforeStandup\":\"nrk-filmavis-snap-sectionBeforeStandup\",\"standup\":\"nrk-filmavis-snap-standup\",\"super\":\"nrk-filmavis-snap-super\",\"super__content\":\"nrk-filmavis-snap-super__content\",\"superContent\":\"nrk-filmavis-snap-super__content\",\"blurred\":\"nrk-filmavis-snap-blurred\",\"overlay\":\"nrk-filmavis-snap-overlay\",\"darkedout\":\"nrk-filmavis-snap-darkedout\",\"NRKlogo\":\"nrk-filmavis-snap-NRKlogo\",\"nrKlogo\":\"nrk-filmavis-snap-NRKlogo\",\"shareButtonGroup\":\"nrk-filmavis-snap-shareButtonGroup\",\"visible\":\"nrk-filmavis-snap-visible\",\"shareButton\":\"nrk-filmavis-snap-shareButton\",\"to-top\":\"nrk-filmavis-snap-to-top\",\"toTop\":\"nrk-filmavis-snap-to-top\",\"intro-block-arrow\":\"nrk-filmavis-snap-intro-block-arrow\",\"introBlockArrow\":\"nrk-filmavis-snap-intro-block-arrow\",\"fadeIn\":\"nrk-filmavis-snap-fadeIn\",\"arrowBlink\":\"nrk-filmavis-snap-arrowBlink\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/index.css\n// module id = 27\n// module chunks = 0","var implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/function-bind/index.js\n// module id = 28\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// ./~/lodash/_Symbol.js\n// module id = 29\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// ./~/lodash/_root.js\n// module id = 30\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// ./~/lodash/debounce.js\n// module id = 31\n// module chunks = 0","/* eslint-disable global-require */\n\nrequire('array.prototype.find').shim()\nrequire('array.from').shim()\nrequire('array-includes').shim()\n\nrequire('intersection-observer')\n\n// Object.assign() is commonly used.\n// This polyfill use the native implementation if it's present and isn't buggy.\n// Object.assign = require('object-assign')\n\nif (typeof Promise === 'undefined') {\n require('es6-promise').polyfill()\n}\n\nNumber.isInteger = Number.isInteger || function(value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value\n}\n\n\n\n// WEBPACK FOOTER //\n// ./config/polyfills.js","/* global __NAMESPACE__, ROOT_MOUNT_ID */\n/* eslint-disable max-params */\n\nimport styles from '../shared/index.css'\nimport '../shared/stylesheets/byline.css'\nimport { visible } from '../shared/stylesheets/background.css'\nimport '../shared/stylesheets/alignment/index.css'\nimport videoStyles from '../shared/stylesheets/video.css'\nimport '../shared/stylesheets/animations.css'\nimport '../shared/stylesheets/block.css'\nimport { getMutedButton, getUnmutedButton } from '../shared/utils/muteButtons'\nimport { initialize as gaInitialize, trackAction } from '../shared/utils/googleAnalytics'\nimport { canAutoplay } from './utils/featuretests'\nimport { intersectionObserverCallback } from './intersection'\nimport { reduce } from './reducer'\nimport { components } from '../shared/components'\n\nexport default class App {\n constructor(container, initialState) {\n this.container = container\n this.error = null\n this.muted = true\n this.videoElements = []\n this.state = initialState\n\n this.gaInitialized = false\n this.sectionId = 0\n window.appParams = this\n }\n\n setSectionId = id => {\n this.sectionId = id\n }\n\n mount = () => {\n try {\n const sectionElements = [...document.querySelectorAll(`.${styles.section}`)]\n\n this.state.sections = this.state.sections.map((s, i) => {\n return {\n ...s,\n canAutoplay: this.state.canAutoplay,\n foregroundElement: sectionElements[i],\n backgroundElement: document.getElementById(s.id)\n }\n })\n\n this.shareButtons = document.querySelector(`.${styles.shareButtonGroup}`)\n const muteButton = document.querySelector(`.${videoStyles.videoMuteButton}`)\n if (muteButton) {\n this.muteButton = muteButton\n this.muteButton.addEventListener('click', this.toggleMuteVideo, false)\n }\n\n this.initializeGoogleAnalytic()\n this.mountListeners()\n } catch (error) {\n console.error(error)\n this.renderError()\n }\n }\n initializeGoogleAnalytic = () => {\n if (!this.gaInitialized) {\n gaInitialize(this.container.getAttribute('data-tracking'))\n }\n this.gaInitialized = true\n }\n\n unmount = () => {\n this.unmountListeners()\n this.container.innerHTML = ''\n }\n\n ioCallback = changes => intersectionObserverCallback(changes, this.state, this.dispatch)\n\n mountListeners = () => {\n const options = {\n threshold: [0]\n }\n\n this.observer = new IntersectionObserver(this.ioCallback, options)\n this.observer.POLL_INTERVAL = 500\n this.state.sections.forEach(({ foregroundElement }) =>\n this.observer.observe(foregroundElement)\n )\n\n const muteButton = document.querySelector(`.${videoStyles.videoMuteButton}`)\n if (muteButton) {\n this.muteButton = muteButton\n this.muteButton.addEventListener('click', this.toggleMuteVideo, false)\n }\n }\n\n render = () => {\n if (this.error) {\n this.renderError()\n }\n }\n\n renderError = () => {\n this.container.innerHTML = `
${this.error}
`\n }\n toggleMuteVideo = e => {\n e.stopPropagation()\n\n this.dispatch({ type: 'toggleMute' })\n if (this.state.muted) {\n trackAction(`MUTE/${this.sectionId}`)\n } else {\n trackAction(`UNMUTE/${this.sectionId}`)\n }\n }\n dispatch = action => {\n this.state = reduce(this.state, action)\n this.onStateChanged(this.state)\n }\n\n onStateChanged = state => {\n if (state.showMuteButton) {\n this.muteButton.classList.add(visible)\n } else {\n this.muteButton.classList.remove(visible)\n }\n\n if (this.shareButtons && state.showShareButtons) {\n this.shareButtons.classList.add(visible)\n } else {\n this.shareButtons.classList.remove(visible)\n }\n\n if (state.muted) {\n this.muteButton.innerHTML = getMutedButton()\n } else {\n this.muteButton.innerHTML = getUnmutedButton()\n }\n\n components\n .filter(component => component.onStateChanged)\n .forEach(component => component.onStateChanged(state))\n }\n}\n\nwindow.App = App\n\nif (module.hot) module.hot.accept()\n\nconst mountingNode = document.getElementById(ROOT_MOUNT_ID)\nconst initialState = JSON.parse(mountingNode.getAttribute('data-initial-state'))\n\nconst app = new App(mountingNode, initialState)\napp.mount()\n\nmountingNode.style.transition = '.5s .5s opacity ease-in'\nmountingNode.style.opacity = 1\n\n\n\n// WEBPACK FOOTER //\n// ./src/client/index.js","'use strict';\n\nvar define = require('define-properties');\nvar ES = require('es-abstract/es6');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar polyfill = getPolyfill();\nvar shim = require('./shim');\n\nvar slice = Array.prototype.slice;\n\n/* eslint-disable no-unused-vars */\nvar boundIncludesShim = function includes(array, searchElement) {\n/* eslint-enable no-unused-vars */\n\tES.RequireObjectCoercible(array);\n\treturn polyfill.apply(array, slice.call(arguments, 1));\n};\ndefine(boundIncludesShim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundIncludesShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array-includes/index.js\n// module id = 34\n// module chunks = 0","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimArrayPrototypeIncludes() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tArray.prototype,\n\t\t{ includes: polyfill },\n\t\t{ includes: function () { return Array.prototype.includes !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array-includes/shim.js\n// module id = 35\n// module chunks = 0","'use strict';\n\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\n// eslint-disable-next-line no-unused-vars\nvar boundFromShim = function from(array) {\n // eslint-disable-next-line no-invalid-this\n\treturn implementation.apply(this || Array, arguments);\n};\n\ndefine(boundFromShim, {\n\t'getPolyfill': getPolyfill,\n\t'implementation': implementation,\n\t'shim': shim\n});\n\nmodule.exports = boundFromShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.from/index.js\n// module id = 36\n// module chunks = 0","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimArrayFrom() {\n\tvar polyfill = getPolyfill();\n\n\tdefine(Array, { 'from': polyfill }, {\n\t\t'from': function () {\n\t\t\treturn Array.from !== polyfill;\n\t\t}\n\t});\n\n\treturn polyfill;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.from/shim.js\n// module id = 37\n// module chunks = 0","'use strict';\n\nvar define = require('define-properties');\nvar ES = require('es-abstract/es6');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar slice = Array.prototype.slice;\n\nvar polyfill = getPolyfill();\n\nvar boundFindShim = function find(array, predicate) { // eslint-disable-line no-unused-vars\n\tES.RequireObjectCoercible(array);\n\tvar args = slice.call(arguments, 1);\n\treturn polyfill.apply(array, args);\n};\n\ndefine(boundFindShim, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = boundFindShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.prototype.find/index.js\n// module id = 38\n// module chunks = 0","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimArrayPrototypeFind() {\n\tvar polyfill = getPolyfill();\n\n\tdefine(Array.prototype, { find: polyfill }, {\n\t\tfind: function () {\n\t\t\treturn Array.prototype.find !== polyfill;\n\t\t}\n\t});\n\n\treturn polyfill;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/array.prototype.find/shim.js\n// module id = 39\n// module chunks = 0","import { transitionManager } from './transitionManager'\nimport { components } from '../shared/components'\nimport { trackAction } from '../shared/utils/googleAnalytics'\n\nlet currentSection = null\n\nexport const intersectionObserverCallback = (changes, state, dispatch) => {\n if (!changes) return\n\n const sections = state.sections\n\n // Update state\n changes.forEach(change => {\n const changedElement = sections.find(\n ({ foregroundElement }) => change.target === foregroundElement\n )\n changedElement.isIntersecting = change.isIntersecting\n })\n\n const nextSection = sections.filter(e => e.isIntersecting).pop()\n\n if (\n !currentSection ||\n currentSection.foregroundElement !== nextSection.foregroundElement\n ) {\n trackAction(\n `LOAD_SUCCESS/${nextSection.foregroundElement.getAttribute('data-background-id')}`\n )\n\n const currentIndex = sections.indexOf(nextSection)\n const previousIndex = currentSection ? sections.indexOf(currentSection) : null\n\n const direction = currentIndex > previousIndex ? 'forwards' : 'backwards'\n\n const previousSection = sections[previousIndex]\n\n currentSection = nextSection\n\n transitionManager(nextSection, previousSection, direction)\n\n dispatch({ type: 'showShareButtons', value: nextSection.props.shareIcons })\n components.filter(component => component.onCurrentChanged).forEach(component => {\n component.onCurrentChanged(nextSection, dispatch)\n })\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/client/intersection.js","export function reduce(state, action) {\n switch (action.type) {\n case 'showMuteButton':\n return {\n ...state,\n showMuteButton: action.value\n }\n\n case 'showShareButtons':\n return {\n ...state,\n showShareButtons: action.value\n }\n\n case 'toggleMute':\n return {\n ...state,\n muted: !state.muted\n }\n\n default:\n return state\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/client/reducer.js","import transitionStyles from '../shared/stylesheets/transitions.css'\n\nexport const transitionManager = (\n currentElement,\n previousElement,\n direction = 'forwards'\n) => {\n if (!previousElement || previousElement === currentElement) {\n const transitionClass = currentElement.props.transition\n\n currentElement.backgroundElement.classList.add(transitionStyles.animateInto)\n currentElement.backgroundElement.classList.add(transitionClass)\n return\n }\n\n const allTransitionClasses = Object.keys(transitionStyles).map(\n key => transitionStyles[key]\n )\n\n const transitionClass =\n direction === 'forwards' ?\n currentElement.props.transition :\n previousElement.props.transition\n\n allTransitionClasses.forEach(tClass => {\n previousElement.backgroundElement.classList.remove(tClass)\n currentElement.backgroundElement.classList.remove(tClass)\n })\n\n previousElement.backgroundElement.classList.add(transitionStyles.animateAway)\n previousElement.backgroundElement.classList.add(transitionClass)\n\n currentElement.backgroundElement.classList.add(transitionStyles.animateInto)\n currentElement.backgroundElement.classList.add(transitionClass)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/client/transitionManager.js","// @flow\n\n/* eslint-disable standard/no-callback-literal */\n\ntype TestCallback = (supported: boolean) => void\n\nlet videoAutoPlayCache = null\nexport function canAutoplay(callback: TestCallback) {\n try {\n if (typeof window === 'undefined') {\n return callback(false)\n }\n\n if (typeof videoAutoPlayCache === 'boolean') {\n return callback(videoAutoPlayCache)\n }\n\n const videoElm = document.createElement('video')\n\n let isPlaying = false\n\n videoElm.setAttribute('autoplay', '')\n videoElm.setAttribute('muted', '')\n videoElm.setAttribute('webkit-playsinline', 'webkit-playsinline')\n videoElm.setAttribute('playsinline', 'playsinline')\n\n try {\n if (videoElm.canPlayType('video/ogg')) {\n videoElm.src =\n 'data:video/ogg;base64,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'\n } else if (videoElm.canPlayType('video/mp4')) {\n videoElm.src =\n 'data:video/mp4;base64,AAAAIGZ0eXBpc29tAAACAGlzb21pc28yYXZjMW1wNDEAAAAIZnJlZQAAAs1tZGF0AAACrgYF//+q3EXpvebZSLeWLNgg2SPu73gyNjQgLSBjb3JlIDE0OCByMjYwMSBhMGNkN2QzIC0gSC4yNjQvTVBFRy00IEFWQyBjb2RlYyAtIENvcHlsZWZ0IDIwMDMtMjAxNSAtIGh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL3gyNjQuaHRtbCAtIG9wdGlvbnM6IGNhYmFjPTEgcmVmPTMgZGVibG9jaz0xOjA6MCBhbmFseXNlPTB4MzoweDExMyBtZT1oZXggc3VibWU9NyBwc3k9MSBwc3lfcmQ9MS4wMDowLjAwIG1peGVkX3JlZj0xIG1lX3JhbmdlPTE2IGNocm9tYV9tZT0xIHRyZWxsaXM9MSA4eDhkY3Q9MSBjcW09MCBkZWFkem9uZT0yMSwxMSBmYXN0X3Bza2lwPTEgY2hyb21hX3FwX29mZnNldD0tMiB0aHJlYWRzPTEgbG9va2FoZWFkX3RocmVhZHM9MSBzbGljZWRfdGhyZWFkcz0wIG5yPTAgZGVjaW1hdGU9MSBpbnRlcmxhY2VkPTAgYmx1cmF5X2NvbXBhdD0wIGNvbnN0cmFpbmVkX2ludHJhPTAgYmZyYW1lcz0zIGJfcHlyYW1pZD0yIGJfYWRhcHQ9MSBiX2JpYXM9MCBkaXJlY3Q9MSB3ZWlnaHRiPTEgb3Blbl9nb3A9MCB3ZWlnaHRwPTIga2V5aW50PTI1MCBrZXlpbnRfbWluPTEwIHNjZW5lY3V0PTQwIGludHJhX3JlZnJlc2g9MCByY19sb29rYWhlYWQ9NDAgcmM9Y3JmIG1idHJlZT0xIGNyZj0yMy4wIHFjb21wPTAuNjAgcXBtaW49MCBxcG1heD02OSBxcHN0ZXA9NCBpcF9yYXRpbz0xLjQwIGFxPTE6MS4wMACAAAAAD2WIhAA3//728P4FNjuZQQAAAu5tb292AAAAbG12aGQAAAAAAAAAAAAAAAAAAAPoAAAAZAABAAABAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAACGHRyYWsAAABcdGtoZAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAZAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAEAAAAAAAgAAAAIAAAAAACRlZHRzAAAAHGVsc3QAAAAAAAAAAQAAAGQAAAAAAAEAAAAAAZBtZGlhAAAAIG1kaGQAAAAAAAAAAAAAAAAAACgAAAAEAFXEAAAAAAAtaGRscgAAAAAAAAAAdmlkZQAAAAAAAAAAAAAAAFZpZGVvSGFuZGxlcgAAAAE7bWluZgAAABR2bWhkAAAAAQAAAAAAAAAAAAAAJGRpbmYAAAAcZHJlZgAAAAAAAAABAAAADHVybCAAAAABAAAA+3N0YmwAAACXc3RzZAAAAAAAAAABAAAAh2F2YzEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAgACAEgAAABIAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAY//8AAAAxYXZjQwFkAAr/4QAYZ2QACqzZX4iIhAAAAwAEAAADAFA8SJZYAQAGaOvjyyLAAAAAGHN0dHMAAAAAAAAAAQAAAAEAAAQAAAAAHHN0c2MAAAAAAAAAAQAAAAEAAAABAAAAAQAAABRzdHN6AAAAAAAAAsUAAAABAAAAFHN0Y28AAAAAAAAAAQAAADAAAABidWR0YQAAAFptZXRhAAAAAAAAACFoZGxyAAAAAAAAAABtZGlyYXBwbAAAAAAAAAAAAAAAAC1pbHN0AAAAJal0b28AAAAdZGF0YQAAAAEAAAAATGF2ZjU2LjQwLjEwMQ=='\n } else {\n return callback(false)\n }\n } catch (_) {\n return callback(false)\n }\n\n videoElm.load()\n videoElm.play()\n\n videoElm.oncanplay = () => {\n videoAutoPlayCache = isPlaying\n callback(videoAutoPlayCache)\n }\n\n videoElm.onplay = () => {\n isPlaying = true\n }\n } catch (error) {\n return callback(false)\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/client/utils/featuretests.js","// @flow\n\nimport debounce from 'lodash/debounce'\nimport { getPolopolyImageElement, getImageElement } from '../utils/imageUtils'\nimport { constrain } from '../utils/general'\n\nimport videoStyles from '../stylesheets/video.css'\nimport { background, uncroppedImageContainer } from '../stylesheets/background.css'\nimport { alignCenter, alignMiddle } from '../stylesheets/alignment/index.css'\n\nlet eventListener = null\n\ntype videoType = {\n mp4: string,\n webm: string,\n poster: string,\n subtitles: ?Object\n}\n\ntype videoHandlerTypeProps = {\n video: videoType,\n alignment: ?Array\n}\n\nexport const animateVideoComponent = {\n type: 'animate-video',\n\n render(id: string, props: videoHandlerTypeProps, bgInnerHTML: ?string = '') {\n const { video, alignment } = props\n const { mp4, webm, poster, subtitles, hasSound } = video\n\n const trackElement = subtitles ?\n `` :\n ''\n\n const alignmentClasses = alignment.join(' ')\n\n return `\n
\n \n \n ${trackElement}\n Your browser does not support the video tag. We suggest you upgrade your browser.\n \n
\n ${bgInnerHTML}\n
\n `\n },\n onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener)\n eventListener = null\n }\n\n const { type } = currentSection\n if (type === 'animate-video') {\n eventListener = () =>\n window.requestAnimationFrame(() => handleAnimateVideo(currentSection))\n document.addEventListener('scroll', eventListener)\n }\n }\n}\nlet i = 0\nconst handleAnimateVideo = (section, e) => {\n const { y, top, height } = section.foregroundElement.getBoundingClientRect()\n const { innerHeight, innerWidth } = window\n\n const videoElement = document.querySelector('video')\n\n let pxInViewFromStart = height + (top || y) - innerHeight\n const howMuchBigger = height - innerHeight\n\n if (pxInViewFromStart >= howMuchBigger - 1) {\n pxInViewFromStart = howMuchBigger\n } else if (pxInViewFromStart <= 0) {\n pxInViewFromStart = 0\n }\n const percentInView = 1 - pxInViewFromStart / howMuchBigger\n\n const newCurrentTime = videoElement.duration * percentInView\n // videoElement.play()\n if (!isNaN(newCurrentTime)) {\n videoElement.currentTime = newCurrentTime\n }\n // console.log('asd', newCurrentTime)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/animateVideo.js","// @flow\n\nimport { background } from '../stylesheets/background.css'\n\ntype colorHandlerTypeProps = {\n backgroundColor: string\n}\n\nexport const colorComponent = {\n type: 'color',\n render(id: string, props: colorHandlerTypeProps, bgInnerHTML: ?string = ''): string {\n const { backgroundColor } = props\n const style = `background-color: ${backgroundColor};`\n\n return `\n
\n ${bgInnerHTML}\n
\n `\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/color.js","// @flow\n\nimport throttle from 'lodash/throttle'\n\nimport { getPolopolyImageElement } from '../utils/imageUtils'\nimport { getOverlayElement } from '../utils/renderUtils'\nimport { constrain } from '../utils/general'\n\nimport { background, uncroppedImageContainer } from '../stylesheets/background.css'\nimport { alignCenter, alignMiddle } from '../stylesheets/alignment/index.css'\n\ntype flipScrollHandlerTypeProps = {\n alignment: ?Array,\n polopolyIds: Array,\n overlay: ?Boolean | Object,\n uncropped: ?Boolean,\n flipFade: ?Boolean\n}\n\nlet eventListener = null\nexport const flipScrollComponent = {\n type: 'flip-scroll',\n render(\n id: string,\n props: flipScrollHandlerTypeProps,\n bgInnerHTML: ?string = ''\n ): string {\n const { alignment, polopolyIds, overlay, uncropped, flipFade = false } = props\n const alignmentClasses = alignment ?\n alignment.join(' ') :\n [alignMiddle, alignCenter].join(' ')\n\n let imageStyle = uncropped ?\n 'position: absolute' :\n 'min-width: 100%; min-height: 100%; position: absolute;'\n\n const imageElements = polopolyIds.map(polopolyId =>\n getPolopolyImageElement(\n polopolyId,\n alignmentClasses,\n imageStyle,\n flipFade ? 'transition: .5s opacity ease-in-out' : ''\n )\n )\n\n return `\n
\n ${uncropped ? `
` : ''}\n ${imageElements.join('')}\n ${uncropped ? '
' : ''}\n ${bgInnerHTML}\n ${getOverlayElement(overlay)}\n
\n `\n },\n onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener)\n eventListener = null\n }\n\n const { type } = currentSection\n if (type === 'flip-scroll') {\n eventListener = throttle(() => handleFlipScroll(currentSection), 30)\n document.addEventListener('scroll', eventListener, {\n passive: true\n })\n }\n }\n}\n\nexport const handleFlipScroll = element => {\n const { y, top } = element.foregroundElement.getBoundingClientRect()\n\n const { innerHeight } = window\n const imageElements = element.backgroundElement.getElementsByTagName('picture')\n const numberOfImages = imageElements.length\n\n const pxInView = innerHeight - (y || top)\n const percentInView = constrain(pxInView / innerHeight, 0, 0.99)\n const idx = Math.floor(percentInView * numberOfImages)\n\n for (let i = 0; i < numberOfImages; i++) {\n imageElements[i].style.opacity = i === idx ? '1' : '0'\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/flipScroll.js","// @flow\n\nimport { getPolopolyImageElement, getImageElement } from '../utils/imageUtils'\nimport { getOverlayElement } from '../utils/renderUtils'\n\nimport { alignCenter, alignMiddle } from '../stylesheets/alignment/index.css'\nimport { background, uncroppedImageContainer } from '../stylesheets/background.css'\n\ntype propTypes = {\n backgroundImage: ?string,\n polopolyId: ?string,\n uncropped: ?Boolean,\n overlay: ?Object | ?Boolean,\n alignment: ?Array\n}\n\nexport const imageComponent = {\n type: 'image',\n render(id: string, props: propTypes, bgInnerHTML: ?string = ''): string {\n const { backgroundImage, polopolyId, uncropped = false, overlay, alignment } = props\n\n const alignmentClasses = alignment ?\n alignment.join(' ') :\n [alignMiddle, alignCenter].join(' ')\n\n const imageStyle = uncropped ?\n 'position: relative' :\n 'min-width: 100%; min-height: 100%; position: relative;'\n\n let imageElement = ''\n if (polopolyId) {\n imageElement = getPolopolyImageElement(polopolyId, alignmentClasses, imageStyle)\n } else if (backgroundImage) {\n imageElement = getImageElement(backgroundImage, alignmentClasses, imageStyle)\n }\n\n return `\n
\n ${uncropped ? `
` : ''}\n ${imageElement}\n ${uncropped ? '
' : ''}\n ${getOverlayElement(overlay)}\n ${bgInnerHTML}\n
\n `\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/image.js","// @flow\nimport throttle from 'lodash/throttle'\n\nimport { background, panoramaImageContainer } from '../stylesheets/background.css'\nimport { getPolopolyImageElement } from './polopoly'\n\ntype propType = {\n polopolyId: ?string,\n backgroundImage: ?string,\n backgroundColor: ?string\n}\n\nlet eventListener = null\n\nexport const panoramaComponent = {\n type: 'panorama',\n render(id: string, props: propType, bgInnerHTML: ?string = ''): string {\n const { backgroundImage, polopolyId, backgroundColor = '#333' } = props\n const style = `background-color: ${backgroundColor};`\n\n let imageElement = ``\n\n if (!backgroundImage && polopolyId) {\n imageElement = getPolopolyImageElement(polopolyId)\n }\n\n return `\n
\n
\n ${imageElement}\n ${bgInnerHTML}\n
\n
\n `\n },\n\n onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener)\n eventListener = null\n }\n\n const { type } = currentSection\n if (type === 'panorama') {\n eventListener = throttle(() => handlePanoramaScroll(currentSection), 30)\n document.addEventListener('scroll', eventListener, {\n passive: true\n })\n }\n }\n}\n\nconst handlePanoramaScroll = element => {\n const { y, top, height } = element.foregroundElement.getBoundingClientRect()\n\n const { innerHeight, innerWidth } = window\n\n let pxInView = innerHeight - (y || top)\n\n if (pxInView >= height) {\n pxInView = height\n } else if (pxInView <= 0) {\n pxInView = 0\n }\n let percentInView = pxInView / height * 100\n if (percentInView >= 100) percentInView = 100\n if (percentInView <= 0) percentInView = 0\n\n const imgElement = element.backgroundElement.querySelector('img')\n\n const { width: elWidth } = imgElement.getBoundingClientRect()\n const translateX = -(elWidth - innerWidth) * percentInView / 100\n imgElement.style.transform = `translateX(${translateX}px)`\n imgElement.style.webkitTransform = `translateX(${translateX}px)`\n imgElement.style.msTransform = `translateX(${translateX}px)`\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/panorama.js","// @flow\n\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils'\nimport { background, backgroundOverlay } from '../stylesheets/background.css'\nimport { alignCenter, alignMiddle } from '../stylesheets/alignment/index.css'\nimport { createSrcSet, supportedWidths } from '../utils/imageUtils'\n\ntype overlayType = {\n opacity: ?string | ?number,\n color: ?string\n}\n\ntype polopolyHandlerTypeProps = {\n polopolyId: string,\n backgroundColor: ?string,\n alignment: ?Array,\n overlay: ?overlayType\n}\n\nexport const polopolyComponent = {\n type: 'polopoly',\n render(id: string, props: polopolyHandlerTypeProps, bgInnerHTML: ?string = ''): string {\n const { polopolyId, alignment, overlay } = props\n\n const defaultUrl = createImageUrl({ id: polopolyId, width: 1600, ratio: '1:1' })\n const desktopSourceSet = createSrcSet(polopolyId, '1:1', supportedWidths)\n const mobileSourceSet = createSrcSet(polopolyId, '3:4', supportedWidths)\n\n const overlayElement = overlay ?\n `
` :\n ''\n\n const imgStyle = 'min-width: 100%; min-height: 100%; position: relative;'\n const alignmentClasses = alignment ?\n alignment.join(' ') :\n [alignMiddle, alignCenter].join(' ')\n\n return `\n
\n \n \n \n \n ${bgInnerHTML}\n ${overlayElement}\n
`\n }\n}\n\nexport function getPolopolyImageElement(\n polopolyId: string,\n alignmentClasses: string = ''\n): string {\n const defaultUrl = createImageUrl({ id: polopolyId, width: 1600, ratio: '1:1' })\n const desktopSourceSet = createSrcSet(polopolyId, '1:1', supportedWidths)\n const mobileSourceSet = createSrcSet(polopolyId, '3:4', supportedWidths)\n\n const imgStyle =\n 'position: absolute; top: 50%; left: 50%; -webkit-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);transform: translate(-50%, -50%);'\n return `\n \n \n \n `\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/polopoly.js","import style from '../../index.css'\nimport bgStyle from '../../stylesheets/background.css'\n\nlet fgEls = []\nlet bgEls = []\n\nexport const setActiveElementClass = {\n onCurrentChanged(currentSection, dispatch) {\n const { foregroundElement, backgroundElement } = currentSection\n\n if (!fgEls || !fgEls.length) {\n fgEls = [...document.querySelectorAll(`.${style.section}`)]\n bgEls = [...document.querySelectorAll(`.${bgStyle.background}`)]\n }\n\n const index = fgEls.indexOf(foregroundElement)\n const activeEls = shouldBeActive(index, fgEls, bgEls)\n\n fgEls.forEach(fgEl => {\n if (fgEl === foregroundElement) {\n addOrRemoveClass(fgEl, style['section--ready'], 'remove')\n addOrRemoveClass(fgEl, style['section--active'], 'add')\n } else if (activeEls.fgEls.indexOf(fgEl) >= 0) {\n addOrRemoveClass(fgEl, style['section--active'], 'remove')\n addOrRemoveClass(fgEl, style['section--ready'], 'add')\n } else {\n addOrRemoveClass(fgEl, style['section--ready'], 'remove')\n addOrRemoveClass(fgEl, style['section--active'], 'remove')\n }\n })\n\n bgEls.forEach(bgEl => {\n if (bgEl === backgroundElement) {\n addOrRemoveClass(bgEl, bgStyle['background--ready'], 'remove')\n addOrRemoveClass(bgEl, bgStyle['background--active'], 'add')\n } else if (activeEls.bgEls.indexOf(bgEl) >= 0) {\n addOrRemoveClass(bgEl, bgStyle['background--active'], 'remove')\n addOrRemoveClass(bgEl, bgStyle['background--ready'], 'add')\n } else {\n addOrRemoveClass(bgEl, bgStyle['background--active'], 'remove')\n addOrRemoveClass(bgEl, bgStyle['background--ready'], 'remove')\n }\n })\n }\n}\n\nfunction addOrRemoveClass(el, className, action = 'add') {\n if (!el || !el.classList || !className) return\n if (action === 'remove') {\n return el.classList.contains(className) && el.classList.remove(className)\n }\n if (!el.classList.contains(className)) return el.classList.add(className)\n}\n\nfunction shouldBeActive(index, fgEls, bgEls, buffer = 3) {\n if (index < 0) return { fg: [], bg: [] }\n if (index === 0 && fgEls.length > buffer) {\n return {\n fgEls: fgEls.slice(0, buffer + 1),\n bgEls: bgEls.slice(0, buffer + 1)\n }\n } else if (index > 0) {\n if (fgEls.length > index + buffer) {\n const root = index - buffer\n return {\n fgEls: fgEls.slice(root > 0 ? root : 0, index + buffer + 1),\n bgEls: bgEls.slice(root > 0 ? root : 0, index + buffer + 1)\n }\n }\n return {\n fgEls: fgEls.slice(index - buffer, fgEls.length),\n bgEls: bgEls.slice(index - buffer, fgEls.length)\n }\n }\n return { fgEls: [], bgEls: [] }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/renderless/activeClass.js","// @flow\n\nimport { getPolopolyImageElement, getImageElement } from '../utils/imageUtils'\nimport throttle from 'lodash/throttle'\n\nimport { background, uncroppedImageContainer } from '../stylesheets/background.css'\nimport { alignCenter, alignMiddle } from '../stylesheets/alignment/index.css'\n\nlet eventListener = null\n\ntype onScrollHandlerTypeProps = {\n polopolyId: ?string,\n backgroundImage?: string,\n backgroundColor: ?string,\n alignment?: Array,\n uncropped?: boolean\n}\n\nexport const triggerOnScrollComponent = {\n type: 'trigger-on-scroll',\n render(id: string, props: onScrollHandlerTypeProps, bgInnerHTML: ?string = ''): string {\n const {\n backgroundImage,\n polopolyId,\n alignment,\n uncropped,\n backgroundColor = '#333'\n } = props\n const style = `background-color: ${backgroundColor || ''};`\n // const style = `background-color: ${backgroundColor};`\n\n const alignmentClasses = alignment ?\n alignment.join(' ') :\n [alignMiddle, alignCenter].join(' ')\n\n const imageStyle = uncropped ?\n 'position: relative' :\n 'min-width: 100%; min-height: 100%; position: relative;'\n\n let imageElement = ''\n if (polopolyId) {\n imageElement = getPolopolyImageElement(polopolyId, alignmentClasses, imageStyle)\n } else if (backgroundImage) {\n imageElement = getImageElement(backgroundImage, alignmentClasses, imageStyle)\n }\n\n return `\n
\n ${uncropped ? `
` : ''}\n ${imageElement}\n ${uncropped ? `
` : ''}\n\n ${bgInnerHTML}\n
\n `\n },\n onCurrentChanged(currentSection) {\n if (eventListener) {\n document.removeEventListener('scroll', eventListener)\n eventListener = null\n }\n\n const { type } = currentSection\n if (type === 'trigger-on-scroll') {\n eventListener = throttle(() => handleTriggerOnScroll(currentSection), 30, {\n passive: true\n })\n document.addEventListener('scroll', eventListener)\n }\n }\n}\n\nconst handleTriggerOnScroll = section => {\n const { y, top, height } = section.foregroundElement.getBoundingClientRect()\n const { innerHeight, innerWidth } = window\n const { actions, lastParsedHeight, lastScroll } = section.props.onScroll\n\n let actionsToDo = actions\n const direction = lastScroll > (y || top) ? 'forwards' : 'backwards'\n\n const shouldReparseWhen =\n !lastParsedHeight ||\n lastParsedHeight > innerWidth + 50 ||\n lastParsedHeight < innerWidth - 50\n\n if (shouldReparseWhen) {\n section.props.onScroll.lastParsedHeight = innerWidth\n\n actionsToDo = actions.map(action => {\n return {\n ...action,\n parsedWhen: parseWhen(action.when, height),\n parsedBreakpoints: innerWidth\n }\n })\n }\n\n if (direction !== section.props.onScroll.direction) actionsToDo.reverse()\n\n section.props.onScroll.lastScroll = y || top\n section.props.onScroll.direction = direction\n\n let pxInView = innerHeight - (y || top)\n\n if (pxInView >= height) {\n pxInView = height\n } else if (pxInView <= 0) {\n pxInView = 0\n }\n\n section.props.onScroll.actions = actionsToDo.map((action, i) => {\n let { breakpoint, parsedWhen, isAnimated, classes, style } = action\n\n const isBetweenBreakpoints =\n innerWidth > breakpoint.from && innerWidth < breakpoint.to\n\n let shouldAnimateIn = parsedWhen.from < pxInView && parsedWhen.to > pxInView\n if (direction === 'backwards') {\n shouldAnimateIn = parsedWhen.to > pxInView && parsedWhen.from < pxInView\n }\n\n if (shouldAnimateIn && !isAnimated && isBetweenBreakpoints) {\n // DO ANIMATION\n\n const targetElement = getTarget(action, section)\n\n doAnimation(targetElement, classes, style)\n isAnimated = true\n } else if (!shouldAnimateIn && isAnimated) {\n // UNDO ANIMATION\n if (!action.once) {\n const targetElement = getTarget(action, section)\n\n isAnimated = false\n undoAnimation(targetElement, classes, style)\n }\n }\n return {\n ...action,\n isAnimated\n }\n })\n}\n\nconst parseWhen = (bp, height = 1) => {\n const parseFunction = val => {\n if (typeof val !== 'number') {\n if (val.indexOf('%') > -1) {\n return height * (parseFloat(val) / 100)\n }\n return parseInt(val)\n }\n }\n\n return {\n to: parseFunction(bp.to),\n from: parseFunction(bp.from)\n }\n}\n\nconst getTarget = (action, section) => {\n const { target } = action\n\n if (!target) return section.backgroundElement\n if (Array.isArray(target)) {\n if (target.length > 1) {\n const foregroundOrBackground =\n target[1] === 'foreground' ? 'foregroundElement' : 'backgroundElement'\n\n return [...section[foregroundOrBackground].querySelectorAll(target[0])]\n }\n return [...section.foregroundElement.querySelectorAll(target[0])]\n }\n if (typeof target === 'string') {\n if (target === 'foreground') return section.foregroundElement\n if (target === 'background') return section.backgroundElement\n return document.querySelector(target)\n }\n}\n\nconst undoAnimation = (targetElement, classes, style) => {\n const isTargetArray = Array.isArray(targetElement)\n\n if (targetElement && classes) {\n if (isTargetArray) {\n targetElement.map(tE => tE.classList.remove(classes))\n } else {\n targetElement.classList.remove(classes)\n }\n }\n if (targetElement && style) {\n if (isTargetArray) {\n targetElement.map(tE => {\n Object.keys(style).forEach(s => {\n tE.style[s] = null\n })\n })\n } else {\n Object.keys(style).forEach(s => {\n targetElement.style[s] = null\n })\n }\n }\n}\n\nconst doAnimation = (targetElement, classes, style) => {\n const isTargetArray = Array.isArray(targetElement)\n if (targetElement && classes) {\n if (isTargetArray) {\n targetElement.map(tE => tE.classList.add(classes))\n } else {\n targetElement.classList.add(classes)\n }\n }\n if (targetElement && style) {\n if (isTargetArray) {\n targetElement.map(tE => {\n Object.keys(style).forEach(s => {\n tE.style[s] = style[s]\n })\n })\n } else {\n Object.keys(style).forEach(s => {\n targetElement.style[s] = style[s]\n })\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/triggerOnScroll.js","// @flow\nimport { background } from '../stylesheets/background.css'\nimport videoStyles from '../stylesheets/video.css'\nimport { trackAction } from '../utils/googleAnalytics'\nimport { getOverlayElement } from '../utils/renderUtils'\n\ntype videoType = {\n mp4: string,\n webm: string,\n poster: string,\n subtitles: ?Object\n}\n\ntype videoHandlerTypeProps = {\n video: videoType,\n alignment: ?Array\n}\n\nconst bgVideos = []\n\nexport const videoComponent = {\n type: 'video',\n render(id: string, props: videoHandlerTypeProps, bgInnerHTML: ?string = '') {\n const { video, alignment, overlay } = props\n const { mp4, webm, poster, subtitles, hasSound } = video\n\n const trackElement = subtitles ?\n `` :\n ''\n\n const alignmentClasses = alignment.join(' ')\n\n return `\n
\n \n \n \n ${trackElement}\n Your browser does not support the video tag. We suggest you upgrade your browser.\n \n
\n ${bgInnerHTML}\n ${getOverlayElement(overlay)}\n \n
\n `\n },\n\n onCurrentChanged(currentSection, dispatch) {\n const { id, type, props, backgroundElement } = currentSection\n const { video } = props\n\n dispatch({ type: 'showMuteButton', value: video && video.hasSound })\n\n try {\n bgVideos.forEach(v => {\n v.pause()\n })\n } catch (error) {\n console.error('error in pause', error)\n }\n\n if (type === 'video') {\n const bgVideo = backgroundElement.querySelector('video')\n if (!bgVideo) return\n\n try {\n bgVideo.play().catch(console.error)\n } catch (error) {\n console.error('error while playing', error)\n }\n\n if (!bgVideo.paused) {\n trackAction(`VIDEO_PLAYING/${id}`)\n }\n\n if (bgVideos.indexOf(bgVideo) === -1) {\n bgVideos.push(bgVideo)\n }\n }\n },\n\n onStateChanged(state) {\n if (state.muted) {\n bgVideos.forEach(v => (v.muted = true))\n } else {\n bgVideos.forEach(v => (v.muted = false))\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/components/video.js","import videoStyles from '../stylesheets/video.css'\n\nexport const getInitialMuteButton = () => {\n return `\n \n `\n}\n\nexport const getMutedButton = () => {\n return `\n \n \n \n \n \n \n \n \n \n \n \n \n `\n}\n\nexport const getUnmutedButton = () => {\n return `\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n `\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/shared/utils/muteButtons.js","'use strict';\n\nvar has = require('has');\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\nvar symbolToStr = hasSymbols ? Symbol.prototype.toString : toStr;\n\nvar $isNaN = require('./helpers/isNaN');\nvar $isFinite = require('./helpers/isFinite');\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\nvar assign = require('./helpers/assign');\nvar sign = require('./helpers/sign');\nvar mod = require('./helpers/mod');\nvar isPrimitive = require('./helpers/isPrimitive');\nvar toPrimitive = require('es-to-primitive/es6');\nvar parseInteger = parseInt;\nvar bind = require('function-bind');\nvar arraySlice = bind.call(Function.call, Array.prototype.slice);\nvar strSlice = bind.call(Function.call, String.prototype.slice);\nvar isBinary = bind.call(Function.call, RegExp.prototype.test, /^0b[01]+$/i);\nvar isOctal = bind.call(Function.call, RegExp.prototype.test, /^0o[0-7]+$/i);\nvar regexExec = bind.call(Function.call, RegExp.prototype.exec);\nvar nonWS = ['\\u0085', '\\u200b', '\\ufffe'].join('');\nvar nonWSregex = new RegExp('[' + nonWS + ']', 'g');\nvar hasNonWS = bind.call(Function.call, RegExp.prototype.test, nonWSregex);\nvar invalidHexLiteral = /^[-+]0x[0-9a-f]+$/i;\nvar isInvalidHexLiteral = bind.call(Function.call, RegExp.prototype.test, invalidHexLiteral);\n\n// whitespace from: http://es5.github.io/#x15.5.4.20\n// implementation from https://github.com/es-shims/es5-shim/blob/v3.4.0/es5-shim.js#L1304-L1324\nvar ws = [\n\t'\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003',\n\t'\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028',\n\t'\\u2029\\uFEFF'\n].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar replace = bind.call(Function.call, String.prototype.replace);\nvar trim = function (value) {\n\treturn replace(value, trimRegex, '');\n};\n\nvar ES5 = require('./es5');\n\nvar hasRegExpMatcher = require('is-regex');\n\n// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-abstract-operations\nvar ES6 = assign(assign({}, ES5), {\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-call-f-v-args\n\tCall: function Call(F, V) {\n\t\tvar args = arguments.length > 2 ? arguments[2] : [];\n\t\tif (!this.IsCallable(F)) {\n\t\t\tthrow new TypeError(F + ' is not a function');\n\t\t}\n\t\treturn F.apply(V, args);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toprimitive\n\tToPrimitive: toPrimitive,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toboolean\n\t// ToBoolean: ES5.ToBoolean,\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-tonumber\n\tToNumber: function ToNumber(argument) {\n\t\tvar value = isPrimitive(argument) ? argument : toPrimitive(argument, 'number');\n\t\tif (typeof value === 'symbol') {\n\t\t\tthrow new TypeError('Cannot convert a Symbol value to a number');\n\t\t}\n\t\tif (typeof value === 'string') {\n\t\t\tif (isBinary(value)) {\n\t\t\t\treturn this.ToNumber(parseInteger(strSlice(value, 2), 2));\n\t\t\t} else if (isOctal(value)) {\n\t\t\t\treturn this.ToNumber(parseInteger(strSlice(value, 2), 8));\n\t\t\t} else if (hasNonWS(value) || isInvalidHexLiteral(value)) {\n\t\t\t\treturn NaN;\n\t\t\t} else {\n\t\t\t\tvar trimmed = trim(value);\n\t\t\t\tif (trimmed !== value) {\n\t\t\t\t\treturn this.ToNumber(trimmed);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn Number(value);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tointeger\n\t// ToInteger: ES5.ToNumber,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint32\n\t// ToInt32: ES5.ToInt32,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint32\n\t// ToUint32: ES5.ToUint32,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint16\n\tToInt16: function ToInt16(argument) {\n\t\tvar int16bit = this.ToUint16(argument);\n\t\treturn int16bit >= 0x8000 ? int16bit - 0x10000 : int16bit;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint16\n\t// ToUint16: ES5.ToUint16,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toint8\n\tToInt8: function ToInt8(argument) {\n\t\tvar int8bit = this.ToUint8(argument);\n\t\treturn int8bit >= 0x80 ? int8bit - 0x100 : int8bit;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint8\n\tToUint8: function ToUint8(argument) {\n\t\tvar number = this.ToNumber(argument);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x100);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-touint8clamp\n\tToUint8Clamp: function ToUint8Clamp(argument) {\n\t\tvar number = this.ToNumber(argument);\n\t\tif ($isNaN(number) || number <= 0) { return 0; }\n\t\tif (number >= 0xFF) { return 0xFF; }\n\t\tvar f = Math.floor(argument);\n\t\tif (f + 0.5 < number) { return f + 1; }\n\t\tif (number < f + 0.5) { return f; }\n\t\tif (f % 2 !== 0) { return f + 1; }\n\t\treturn f;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tostring\n\tToString: function ToString(argument) {\n\t\tif (typeof argument === 'symbol') {\n\t\t\tthrow new TypeError('Cannot convert a Symbol value to a string');\n\t\t}\n\t\treturn String(argument);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-toobject\n\tToObject: function ToObject(value) {\n\t\tthis.RequireObjectCoercible(value);\n\t\treturn Object(value);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-topropertykey\n\tToPropertyKey: function ToPropertyKey(argument) {\n\t\tvar key = this.ToPrimitive(argument, String);\n\t\treturn typeof key === 'symbol' ? symbolToStr.call(key) : this.ToString(key);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n\tToLength: function ToLength(argument) {\n\t\tvar len = this.ToInteger(argument);\n\t\tif (len <= 0) { return 0; } // includes converting -0 to +0\n\t\tif (len > MAX_SAFE_INTEGER) { return MAX_SAFE_INTEGER; }\n\t\treturn len;\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring\n\tCanonicalNumericIndexString: function CanonicalNumericIndexString(argument) {\n\t\tif (toStr.call(argument) !== '[object String]') {\n\t\t\tthrow new TypeError('must be a string');\n\t\t}\n\t\tif (argument === '-0') { return -0; }\n\t\tvar n = this.ToNumber(argument);\n\t\tif (this.SameValue(this.ToString(n), argument)) { return n; }\n\t\treturn void 0;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-requireobjectcoercible\n\tRequireObjectCoercible: ES5.CheckObjectCoercible,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isarray\n\tIsArray: Array.isArray || function IsArray(argument) {\n\t\treturn toStr.call(argument) === '[object Array]';\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-iscallable\n\t// IsCallable: ES5.IsCallable,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isconstructor\n\tIsConstructor: function IsConstructor(argument) {\n\t\treturn typeof argument === 'function' && !!argument.prototype; // unfortunately there's no way to truly check this without try/catch `new argument`\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isextensible-o\n\tIsExtensible: function IsExtensible(obj) {\n\t\tif (!Object.preventExtensions) { return true; }\n\t\tif (isPrimitive(obj)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Object.isExtensible(obj);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-isinteger\n\tIsInteger: function IsInteger(argument) {\n\t\tif (typeof argument !== 'number' || $isNaN(argument) || !$isFinite(argument)) {\n\t\t\treturn false;\n\t\t}\n\t\tvar abs = Math.abs(argument);\n\t\treturn Math.floor(abs) === abs;\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-ispropertykey\n\tIsPropertyKey: function IsPropertyKey(argument) {\n\t\treturn typeof argument === 'string' || typeof argument === 'symbol';\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-isregexp\n\tIsRegExp: function IsRegExp(argument) {\n\t\tif (!argument || typeof argument !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasSymbols) {\n\t\t\tvar isRegExp = argument[Symbol.match];\n\t\t\tif (typeof isRegExp !== 'undefined') {\n\t\t\t\treturn ES5.ToBoolean(isRegExp);\n\t\t\t}\n\t\t}\n\t\treturn hasRegExpMatcher(argument);\n\t},\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevalue\n\t// SameValue: ES5.SameValue,\n\n\t// https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero\n\tSameValueZero: function SameValueZero(x, y) {\n\t\treturn (x === y) || ($isNaN(x) && $isNaN(y));\n\t},\n\n\t/**\n\t * 7.3.2 GetV (V, P)\n\t * 1. Assert: IsPropertyKey(P) is true.\n\t * 2. Let O be ToObject(V).\n\t * 3. ReturnIfAbrupt(O).\n\t * 4. Return O.[[Get]](P, V).\n\t */\n\tGetV: function GetV(V, P) {\n\t\t// 7.3.2.1\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\n\t\t// 7.3.2.2-3\n\t\tvar O = this.ToObject(V);\n\n\t\t// 7.3.2.4\n\t\treturn O[P];\n\t},\n\n\t/**\n\t * 7.3.9 - http://www.ecma-international.org/ecma-262/6.0/#sec-getmethod\n\t * 1. Assert: IsPropertyKey(P) is true.\n\t * 2. Let func be GetV(O, P).\n\t * 3. ReturnIfAbrupt(func).\n\t * 4. If func is either undefined or null, return undefined.\n\t * 5. If IsCallable(func) is false, throw a TypeError exception.\n\t * 6. Return func.\n\t */\n\tGetMethod: function GetMethod(O, P) {\n\t\t// 7.3.9.1\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\n\t\t// 7.3.9.2\n\t\tvar func = this.GetV(O, P);\n\n\t\t// 7.3.9.4\n\t\tif (func == null) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// 7.3.9.5\n\t\tif (!this.IsCallable(func)) {\n\t\t\tthrow new TypeError(P + 'is not a function');\n\t\t}\n\n\t\t// 7.3.9.6\n\t\treturn func;\n\t},\n\n\t/**\n\t * 7.3.1 Get (O, P) - http://www.ecma-international.org/ecma-262/6.0/#sec-get-o-p\n\t * 1. Assert: Type(O) is Object.\n\t * 2. Assert: IsPropertyKey(P) is true.\n\t * 3. Return O.[[Get]](P, O).\n\t */\n\tGet: function Get(O, P) {\n\t\t// 7.3.1.1\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('Assertion failed: Type(O) is not Object');\n\t\t}\n\t\t// 7.3.1.2\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\t// 7.3.1.3\n\t\treturn O[P];\n\t},\n\n\tType: function Type(x) {\n\t\tif (typeof x === 'symbol') {\n\t\t\treturn 'Symbol';\n\t\t}\n\t\treturn ES5.Type(x);\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/6.0/#sec-speciesconstructor\n\tSpeciesConstructor: function SpeciesConstructor(O, defaultConstructor) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('Assertion failed: Type(O) is not Object');\n\t\t}\n\t\tvar C = O.constructor;\n\t\tif (typeof C === 'undefined') {\n\t\t\treturn defaultConstructor;\n\t\t}\n\t\tif (this.Type(C) !== 'Object') {\n\t\t\tthrow new TypeError('O.constructor is not an Object');\n\t\t}\n\t\tvar S = hasSymbols && Symbol.species ? C[Symbol.species] : undefined;\n\t\tif (S == null) {\n\t\t\treturn defaultConstructor;\n\t\t}\n\t\tif (this.IsConstructor(S)) {\n\t\t\treturn S;\n\t\t}\n\t\tthrow new TypeError('no constructor found');\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-completepropertydescriptor\n\tCompletePropertyDescriptor: function CompletePropertyDescriptor(Desc) {\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (this.IsGenericDescriptor(Desc) || this.IsDataDescriptor(Desc)) {\n\t\t\tif (!has(Desc, '[[Value]]')) {\n\t\t\t\tDesc['[[Value]]'] = void 0;\n\t\t\t}\n\t\t\tif (!has(Desc, '[[Writable]]')) {\n\t\t\t\tDesc['[[Writable]]'] = false;\n\t\t\t}\n\t\t} else {\n\t\t\tif (!has(Desc, '[[Get]]')) {\n\t\t\t\tDesc['[[Get]]'] = void 0;\n\t\t\t}\n\t\t\tif (!has(Desc, '[[Set]]')) {\n\t\t\t\tDesc['[[Set]]'] = void 0;\n\t\t\t}\n\t\t}\n\t\tif (!has(Desc, '[[Enumerable]]')) {\n\t\t\tDesc['[[Enumerable]]'] = false;\n\t\t}\n\t\tif (!has(Desc, '[[Configurable]]')) {\n\t\t\tDesc['[[Configurable]]'] = false;\n\t\t}\n\t\treturn Desc;\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-set-o-p-v-throw\n\tSet: function Set(O, P, V, Throw) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\tif (this.Type(Throw) !== 'Boolean') {\n\t\t\tthrow new TypeError('Throw must be a Boolean');\n\t\t}\n\t\tif (Throw) {\n\t\t\tO[P] = V;\n\t\t\treturn true;\n\t\t} else {\n\t\t\ttry {\n\t\t\t\tO[P] = V;\n\t\t\t} catch (e) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-hasownproperty\n\tHasOwnProperty: function HasOwnProperty(O, P) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\treturn has(O, P);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-hasproperty\n\tHasProperty: function HasProperty(O, P) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\tthrow new TypeError('O must be an Object');\n\t\t}\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\treturn P in O;\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-isconcatspreadable\n\tIsConcatSpreadable: function IsConcatSpreadable(O) {\n\t\tif (this.Type(O) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tif (hasSymbols && typeof Symbol.isConcatSpreadable === 'symbol') {\n\t\t\tvar spreadable = this.Get(O, Symbol.isConcatSpreadable);\n\t\t\tif (typeof spreadable !== 'undefined') {\n\t\t\t\treturn this.ToBoolean(spreadable);\n\t\t\t}\n\t\t}\n\t\treturn this.IsArray(O);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-invoke\n\tInvoke: function Invoke(O, P) {\n\t\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new TypeError('P must be a Property Key');\n\t\t}\n\t\tvar argumentsList = arraySlice(arguments, 2);\n\t\tvar func = this.GetV(O, P);\n\t\treturn this.Call(func, O, argumentsList);\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-createiterresultobject\n\tCreateIterResultObject: function CreateIterResultObject(value, done) {\n\t\tif (this.Type(done) !== 'Boolean') {\n\t\t\tthrow new TypeError('Assertion failed: Type(done) is not Boolean');\n\t\t}\n\t\treturn {\n\t\t\tvalue: value,\n\t\t\tdone: done\n\t\t};\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-regexpexec\n\tRegExpExec: function RegExpExec(R, S) {\n\t\tif (this.Type(R) !== 'Object') {\n\t\t\tthrow new TypeError('R must be an Object');\n\t\t}\n\t\tif (this.Type(S) !== 'String') {\n\t\t\tthrow new TypeError('S must be a String');\n\t\t}\n\t\tvar exec = this.Get(R, 'exec');\n\t\tif (this.IsCallable(exec)) {\n\t\t\tvar result = this.Call(exec, R, [S]);\n\t\t\tif (result === null || this.Type(result) === 'Object') {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tthrow new TypeError('\"exec\" method must return `null` or an Object');\n\t\t}\n\t\treturn regexExec(R, S);\n\t}\n});\n\ndelete ES6.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible\n\nmodule.exports = ES6;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/es2015.js\n// module id = 54\n// module chunks = 0","'use strict';\n\nvar $isNaN = require('./helpers/isNaN');\nvar $isFinite = require('./helpers/isFinite');\n\nvar sign = require('./helpers/sign');\nvar mod = require('./helpers/mod');\n\nvar IsCallable = require('is-callable');\nvar toPrimitive = require('es-to-primitive/es5');\n\nvar has = require('has');\n\n// https://es5.github.io/#x9\nvar ES5 = {\n\tToPrimitive: toPrimitive,\n\n\tToBoolean: function ToBoolean(value) {\n\t\treturn !!value;\n\t},\n\tToNumber: function ToNumber(value) {\n\t\treturn Number(value);\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) { return 0; }\n\t\tif (number === 0 || !$isFinite(number)) { return number; }\n\t\treturn sign(number) * Math.floor(Math.abs(number));\n\t},\n\tToInt32: function ToInt32(x) {\n\t\treturn this.ToNumber(x) >> 0;\n\t},\n\tToUint32: function ToUint32(x) {\n\t\treturn this.ToNumber(x) >>> 0;\n\t},\n\tToUint16: function ToUint16(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number) || number === 0 || !$isFinite(number)) { return 0; }\n\t\tvar posInt = sign(number) * Math.floor(Math.abs(number));\n\t\treturn mod(posInt, 0x10000);\n\t},\n\tToString: function ToString(value) {\n\t\treturn String(value);\n\t},\n\tToObject: function ToObject(value) {\n\t\tthis.CheckObjectCoercible(value);\n\t\treturn Object(value);\n\t},\n\tCheckObjectCoercible: function CheckObjectCoercible(value, optMessage) {\n\t\t/* jshint eqnull:true */\n\t\tif (value == null) {\n\t\t\tthrow new TypeError(optMessage || 'Cannot call method on ' + value);\n\t\t}\n\t\treturn value;\n\t},\n\tIsCallable: IsCallable,\n\tSameValue: function SameValue(x, y) {\n\t\tif (x === y) { // 0 === -0, but they are not identical.\n\t\t\tif (x === 0) { return 1 / x === 1 / y; }\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// http://www.ecma-international.org/ecma-262/5.1/#sec-8\n\tType: function Type(x) {\n\t\tif (x === null) {\n\t\t\treturn 'Null';\n\t\t}\n\t\tif (typeof x === 'undefined') {\n\t\t\treturn 'Undefined';\n\t\t}\n\t\tif (typeof x === 'function' || typeof x === 'object') {\n\t\t\treturn 'Object';\n\t\t}\n\t\tif (typeof x === 'number') {\n\t\t\treturn 'Number';\n\t\t}\n\t\tif (typeof x === 'boolean') {\n\t\t\treturn 'Boolean';\n\t\t}\n\t\tif (typeof x === 'string') {\n\t\t\treturn 'String';\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/6.0/#sec-property-descriptor-specification-type\n\tIsPropertyDescriptor: function IsPropertyDescriptor(Desc) {\n\t\tif (this.Type(Desc) !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\tvar allowed = {\n\t\t\t'[[Configurable]]': true,\n\t\t\t'[[Enumerable]]': true,\n\t\t\t'[[Get]]': true,\n\t\t\t'[[Set]]': true,\n\t\t\t'[[Value]]': true,\n\t\t\t'[[Writable]]': true\n\t\t};\n\t\t// jscs:disable\n\t\tfor (var key in Desc) { // eslint-disable-line\n\t\t\tif (has(Desc, key) && !allowed[key]) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\t// jscs:enable\n\t\tvar isData = has(Desc, '[[Value]]');\n\t\tvar IsAccessor = has(Desc, '[[Get]]') || has(Desc, '[[Set]]');\n\t\tif (isData && IsAccessor) {\n\t\t\tthrow new TypeError('Property Descriptors may not be both accessor and data descriptors');\n\t\t}\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.1\n\tIsAccessorDescriptor: function IsAccessorDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!has(Desc, '[[Get]]') && !has(Desc, '[[Set]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.2\n\tIsDataDescriptor: function IsDataDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!has(Desc, '[[Value]]') && !has(Desc, '[[Writable]]')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.3\n\tIsGenericDescriptor: function IsGenericDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (!this.IsAccessorDescriptor(Desc) && !this.IsDataDescriptor(Desc)) {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.4\n\tFromPropertyDescriptor: function FromPropertyDescriptor(Desc) {\n\t\tif (typeof Desc === 'undefined') {\n\t\t\treturn Desc;\n\t\t}\n\n\t\tif (!this.IsPropertyDescriptor(Desc)) {\n\t\t\tthrow new TypeError('Desc must be a Property Descriptor');\n\t\t}\n\n\t\tif (this.IsDataDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tvalue: Desc['[[Value]]'],\n\t\t\t\twritable: !!Desc['[[Writable]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else if (this.IsAccessorDescriptor(Desc)) {\n\t\t\treturn {\n\t\t\t\tget: Desc['[[Get]]'],\n\t\t\t\tset: Desc['[[Set]]'],\n\t\t\t\tenumerable: !!Desc['[[Enumerable]]'],\n\t\t\t\tconfigurable: !!Desc['[[Configurable]]']\n\t\t\t};\n\t\t} else {\n\t\t\tthrow new TypeError('FromPropertyDescriptor must be called with a fully populated Property Descriptor');\n\t\t}\n\t},\n\n\t// http://ecma-international.org/ecma-262/5.1/#sec-8.10.5\n\tToPropertyDescriptor: function ToPropertyDescriptor(Obj) {\n\t\tif (this.Type(Obj) !== 'Object') {\n\t\t\tthrow new TypeError('ToPropertyDescriptor requires an object');\n\t\t}\n\n\t\tvar desc = {};\n\t\tif (has(Obj, 'enumerable')) {\n\t\t\tdesc['[[Enumerable]]'] = this.ToBoolean(Obj.enumerable);\n\t\t}\n\t\tif (has(Obj, 'configurable')) {\n\t\t\tdesc['[[Configurable]]'] = this.ToBoolean(Obj.configurable);\n\t\t}\n\t\tif (has(Obj, 'value')) {\n\t\t\tdesc['[[Value]]'] = Obj.value;\n\t\t}\n\t\tif (has(Obj, 'writable')) {\n\t\t\tdesc['[[Writable]]'] = this.ToBoolean(Obj.writable);\n\t\t}\n\t\tif (has(Obj, 'get')) {\n\t\t\tvar getter = Obj.get;\n\t\t\tif (typeof getter !== 'undefined' && !this.IsCallable(getter)) {\n\t\t\t\tthrow new TypeError('getter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Get]]'] = getter;\n\t\t}\n\t\tif (has(Obj, 'set')) {\n\t\t\tvar setter = Obj.set;\n\t\t\tif (typeof setter !== 'undefined' && !this.IsCallable(setter)) {\n\t\t\t\tthrow new TypeError('setter must be a function');\n\t\t\t}\n\t\t\tdesc['[[Set]]'] = setter;\n\t\t}\n\n\t\tif ((has(desc, '[[Get]]') || has(desc, '[[Set]]')) && (has(desc, '[[Value]]') || has(desc, '[[Writable]]'))) {\n\t\t\tthrow new TypeError('Invalid property descriptor. Cannot both specify accessors and a value or writable attribute');\n\t\t}\n\t\treturn desc;\n\t}\n};\n\nmodule.exports = ES5;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/es5.js\n// module id = 55\n// module chunks = 0","var has = Object.prototype.hasOwnProperty;\nmodule.exports = function assign(target, source) {\n\tif (Object.assign) {\n\t\treturn Object.assign(target, source);\n\t}\n\tfor (var key in source) {\n\t\tif (has.call(source, key)) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/assign.js\n// module id = 56\n// module chunks = 0","module.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-abstract/helpers/isPrimitive.js\n// module id = 57\n// module chunks = 0","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// https://es5.github.io/#x8.12\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O, hint) {\n\t\tvar actualHint = hint || (toStr.call(O) === '[object Date]' ? String : Number);\n\n\t\tif (actualHint === String || actualHint === Number) {\n\t\t\tvar methods = actualHint === String ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\t\t\tvar value, i;\n\t\t\tfor (i = 0; i < methods.length; ++i) {\n\t\t\t\tif (isCallable(O[methods[i]])) {\n\t\t\t\t\tvalue = O[methods[i]]();\n\t\t\t\t\tif (isPrimitive(value)) {\n\t\t\t\t\t\treturn value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthrow new TypeError('No default value');\n\t\t}\n\t\tthrow new TypeError('invalid [[DefaultValue]] hint supplied');\n\t}\n};\n\n// https://es5.github.io/#x9\nmodule.exports = function ToPrimitive(input, PreferredType) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input, PreferredType);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-to-primitive/es5.js\n// module id = 58\n// module chunks = 0","'use strict';\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar isPrimitive = require('./helpers/isPrimitive');\nvar isCallable = require('is-callable');\nvar isDate = require('is-date-object');\nvar isSymbol = require('is-symbol');\n\nvar ordinaryToPrimitive = function OrdinaryToPrimitive(O, hint) {\n\tif (typeof O === 'undefined' || O === null) {\n\t\tthrow new TypeError('Cannot call method on ' + O);\n\t}\n\tif (typeof hint !== 'string' || (hint !== 'number' && hint !== 'string')) {\n\t\tthrow new TypeError('hint must be \"string\" or \"number\"');\n\t}\n\tvar methodNames = hint === 'string' ? ['toString', 'valueOf'] : ['valueOf', 'toString'];\n\tvar method, result, i;\n\tfor (i = 0; i < methodNames.length; ++i) {\n\t\tmethod = O[methodNames[i]];\n\t\tif (isCallable(method)) {\n\t\t\tresult = method.call(O);\n\t\t\tif (isPrimitive(result)) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\t}\n\tthrow new TypeError('No default value');\n};\n\nvar GetMethod = function GetMethod(O, P) {\n\tvar func = O[P];\n\tif (func !== null && typeof func !== 'undefined') {\n\t\tif (!isCallable(func)) {\n\t\t\tthrow new TypeError(func + ' returned for property ' + P + ' of object ' + O + ' is not a function');\n\t\t}\n\t\treturn func;\n\t}\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input, PreferredType) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (PreferredType === String) {\n\t\t\thint = 'string';\n\t\t} else if (PreferredType === Number) {\n\t\t\thint = 'number';\n\t\t}\n\t}\n\n\tvar exoticToPrim;\n\tif (hasSymbols) {\n\t\tif (Symbol.toPrimitive) {\n\t\t\texoticToPrim = GetMethod(input, Symbol.toPrimitive);\n\t\t} else if (isSymbol(input)) {\n\t\t\texoticToPrim = Symbol.prototype.valueOf;\n\t\t}\n\t}\n\tif (typeof exoticToPrim !== 'undefined') {\n\t\tvar result = exoticToPrim.call(input, hint);\n\t\tif (isPrimitive(result)) {\n\t\t\treturn result;\n\t\t}\n\t\tthrow new TypeError('unable to convert exotic object to primitive');\n\t}\n\tif (hint === 'default' && (isDate(input) || isSymbol(input))) {\n\t\thint = 'string';\n\t}\n\treturn ordinaryToPrimitive(input, hint === 'default' ? 'number' : hint);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es-to-primitive/es6.js\n// module id = 59\n// module chunks = 0","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license Licensed under MIT license\n * See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version 4.1.1\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n var type = typeof x;\n return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n return typeof x === 'function';\n}\n\nvar _isArray = undefined;\nif (Array.isArray) {\n _isArray = Array.isArray;\n} else {\n _isArray = function (x) {\n return Object.prototype.toString.call(x) === '[object Array]';\n };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = undefined;\nvar customSchedulerFn = undefined;\n\nvar asap = function asap(callback, arg) {\n queue[len] = callback;\n queue[len + 1] = arg;\n len += 2;\n if (len === 2) {\n // If len is 2, that means that we need to schedule an async flush.\n // If additional callbacks are queued before the queue is flushed, they\n // will be processed by this flush that we are scheduling.\n if (customSchedulerFn) {\n customSchedulerFn(flush);\n } else {\n scheduleFlush();\n }\n }\n};\n\nfunction setScheduler(scheduleFn) {\n customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && ({}).toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n // see https://github.com/cujojs/when/issues/410 for details\n return function () {\n return process.nextTick(flush);\n };\n}\n\n// vertx\nfunction useVertxTimer() {\n if (typeof vertxNext !== 'undefined') {\n return function () {\n vertxNext(flush);\n };\n }\n\n return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n var iterations = 0;\n var observer = new BrowserMutationObserver(flush);\n var node = document.createTextNode('');\n observer.observe(node, { characterData: true });\n\n return function () {\n node.data = iterations = ++iterations % 2;\n };\n}\n\n// web worker\nfunction useMessageChannel() {\n var channel = new MessageChannel();\n channel.port1.onmessage = flush;\n return function () {\n return channel.port2.postMessage(0);\n };\n}\n\nfunction useSetTimeout() {\n // Store setTimeout reference so es6-promise will be unaffected by\n // other code modifying setTimeout (like sinon.useFakeTimers())\n var globalSetTimeout = setTimeout;\n return function () {\n return globalSetTimeout(flush, 1);\n };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n for (var i = 0; i < len; i += 2) {\n var callback = queue[i];\n var arg = queue[i + 1];\n\n callback(arg);\n\n queue[i] = undefined;\n queue[i + 1] = undefined;\n }\n\n len = 0;\n}\n\nfunction attemptVertx() {\n try {\n var r = require;\n var vertx = r('vertx');\n vertxNext = vertx.runOnLoop || vertx.runOnContext;\n return useVertxTimer();\n } catch (e) {\n return useSetTimeout();\n }\n}\n\nvar scheduleFlush = undefined;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n scheduleFlush = attemptVertx();\n} else {\n scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n var _arguments = arguments;\n\n var parent = this;\n\n var child = new this.constructor(noop);\n\n if (child[PROMISE_ID] === undefined) {\n makePromise(child);\n }\n\n var _state = parent._state;\n\n if (_state) {\n (function () {\n var callback = _arguments[_state - 1];\n asap(function () {\n return invokeCallback(_state, child, callback, parent._result);\n });\n })();\n } else {\n subscribe(parent, child, onFulfillment, onRejection);\n }\n\n return child;\n}\n\n/**\n `Promise.resolve` returns a promise that will become resolved with the\n passed `value`. It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n resolve(1);\n });\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.resolve(1);\n\n promise.then(function(value){\n // value === 1\n });\n ```\n\n @method resolve\n @static\n @param {Any} value value that the returned promise will be resolved with\n Useful for tooling.\n @return {Promise} a promise that will become fulfilled with the given\n `value`\n*/\nfunction resolve$1(object) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (object && typeof object === 'object' && object.constructor === Constructor) {\n return object;\n }\n\n var promise = new Constructor(noop);\n resolve(promise, object);\n return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(16);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar GET_THEN_ERROR = new ErrorObject();\n\nfunction selfFulfillment() {\n return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n try {\n return promise.then;\n } catch (error) {\n GET_THEN_ERROR.error = error;\n return GET_THEN_ERROR;\n }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n try {\n then$$1.call(value, fulfillmentHandler, rejectionHandler);\n } catch (e) {\n return e;\n }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n asap(function (promise) {\n var sealed = false;\n var error = tryThen(then$$1, thenable, function (value) {\n if (sealed) {\n return;\n }\n sealed = true;\n if (thenable !== value) {\n resolve(promise, value);\n } else {\n fulfill(promise, value);\n }\n }, function (reason) {\n if (sealed) {\n return;\n }\n sealed = true;\n\n reject(promise, reason);\n }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n if (!sealed && error) {\n sealed = true;\n reject(promise, error);\n }\n }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n if (thenable._state === FULFILLED) {\n fulfill(promise, thenable._result);\n } else if (thenable._state === REJECTED) {\n reject(promise, thenable._result);\n } else {\n subscribe(thenable, undefined, function (value) {\n return resolve(promise, value);\n }, function (reason) {\n return reject(promise, reason);\n });\n }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n handleOwnThenable(promise, maybeThenable);\n } else {\n if (then$$1 === GET_THEN_ERROR) {\n reject(promise, GET_THEN_ERROR.error);\n GET_THEN_ERROR.error = null;\n } else if (then$$1 === undefined) {\n fulfill(promise, maybeThenable);\n } else if (isFunction(then$$1)) {\n handleForeignThenable(promise, maybeThenable, then$$1);\n } else {\n fulfill(promise, maybeThenable);\n }\n }\n}\n\nfunction resolve(promise, value) {\n if (promise === value) {\n reject(promise, selfFulfillment());\n } else if (objectOrFunction(value)) {\n handleMaybeThenable(promise, value, getThen(value));\n } else {\n fulfill(promise, value);\n }\n}\n\nfunction publishRejection(promise) {\n if (promise._onerror) {\n promise._onerror(promise._result);\n }\n\n publish(promise);\n}\n\nfunction fulfill(promise, value) {\n if (promise._state !== PENDING) {\n return;\n }\n\n promise._result = value;\n promise._state = FULFILLED;\n\n if (promise._subscribers.length !== 0) {\n asap(publish, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state !== PENDING) {\n return;\n }\n promise._state = REJECTED;\n promise._result = reason;\n\n asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n var _subscribers = parent._subscribers;\n var length = _subscribers.length;\n\n parent._onerror = null;\n\n _subscribers[length] = child;\n _subscribers[length + FULFILLED] = onFulfillment;\n _subscribers[length + REJECTED] = onRejection;\n\n if (length === 0 && parent._state) {\n asap(publish, parent);\n }\n}\n\nfunction publish(promise) {\n var subscribers = promise._subscribers;\n var settled = promise._state;\n\n if (subscribers.length === 0) {\n return;\n }\n\n var child = undefined,\n callback = undefined,\n detail = promise._result;\n\n for (var i = 0; i < subscribers.length; i += 3) {\n child = subscribers[i];\n callback = subscribers[i + settled];\n\n if (child) {\n invokeCallback(settled, child, callback, detail);\n } else {\n callback(detail);\n }\n }\n\n promise._subscribers.length = 0;\n}\n\nfunction ErrorObject() {\n this.error = null;\n}\n\nvar TRY_CATCH_ERROR = new ErrorObject();\n\nfunction tryCatch(callback, detail) {\n try {\n return callback(detail);\n } catch (e) {\n TRY_CATCH_ERROR.error = e;\n return TRY_CATCH_ERROR;\n }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n var hasCallback = isFunction(callback),\n value = undefined,\n error = undefined,\n succeeded = undefined,\n failed = undefined;\n\n if (hasCallback) {\n value = tryCatch(callback, detail);\n\n if (value === TRY_CATCH_ERROR) {\n failed = true;\n error = value.error;\n value.error = null;\n } else {\n succeeded = true;\n }\n\n if (promise === value) {\n reject(promise, cannotReturnOwn());\n return;\n }\n } else {\n value = detail;\n succeeded = true;\n }\n\n if (promise._state !== PENDING) {\n // noop\n } else if (hasCallback && succeeded) {\n resolve(promise, value);\n } else if (failed) {\n reject(promise, error);\n } else if (settled === FULFILLED) {\n fulfill(promise, value);\n } else if (settled === REJECTED) {\n reject(promise, value);\n }\n}\n\nfunction initializePromise(promise, resolver) {\n try {\n resolver(function resolvePromise(value) {\n resolve(promise, value);\n }, function rejectPromise(reason) {\n reject(promise, reason);\n });\n } catch (e) {\n reject(promise, e);\n }\n}\n\nvar id = 0;\nfunction nextId() {\n return id++;\n}\n\nfunction makePromise(promise) {\n promise[PROMISE_ID] = id++;\n promise._state = undefined;\n promise._result = undefined;\n promise._subscribers = [];\n}\n\nfunction Enumerator$1(Constructor, input) {\n this._instanceConstructor = Constructor;\n this.promise = new Constructor(noop);\n\n if (!this.promise[PROMISE_ID]) {\n makePromise(this.promise);\n }\n\n if (isArray(input)) {\n this.length = input.length;\n this._remaining = input.length;\n\n this._result = new Array(this.length);\n\n if (this.length === 0) {\n fulfill(this.promise, this._result);\n } else {\n this.length = this.length || 0;\n this._enumerate(input);\n if (this._remaining === 0) {\n fulfill(this.promise, this._result);\n }\n }\n } else {\n reject(this.promise, validationError());\n }\n}\n\nfunction validationError() {\n return new Error('Array Methods must be provided an Array');\n}\n\nEnumerator$1.prototype._enumerate = function (input) {\n for (var i = 0; this._state === PENDING && i < input.length; i++) {\n this._eachEntry(input[i], i);\n }\n};\n\nEnumerator$1.prototype._eachEntry = function (entry, i) {\n var c = this._instanceConstructor;\n var resolve$$1 = c.resolve;\n\n if (resolve$$1 === resolve$1) {\n var _then = getThen(entry);\n\n if (_then === then && entry._state !== PENDING) {\n this._settledAt(entry._state, i, entry._result);\n } else if (typeof _then !== 'function') {\n this._remaining--;\n this._result[i] = entry;\n } else if (c === Promise$2) {\n var promise = new c(noop);\n handleMaybeThenable(promise, entry, _then);\n this._willSettleAt(promise, i);\n } else {\n this._willSettleAt(new c(function (resolve$$1) {\n return resolve$$1(entry);\n }), i);\n }\n } else {\n this._willSettleAt(resolve$$1(entry), i);\n }\n};\n\nEnumerator$1.prototype._settledAt = function (state, i, value) {\n var promise = this.promise;\n\n if (promise._state === PENDING) {\n this._remaining--;\n\n if (state === REJECTED) {\n reject(promise, value);\n } else {\n this._result[i] = value;\n }\n }\n\n if (this._remaining === 0) {\n fulfill(promise, this._result);\n }\n};\n\nEnumerator$1.prototype._willSettleAt = function (promise, i) {\n var enumerator = this;\n\n subscribe(promise, undefined, function (value) {\n return enumerator._settledAt(FULFILLED, i, value);\n }, function (reason) {\n return enumerator._settledAt(REJECTED, i, reason);\n });\n};\n\n/**\n `Promise.all` accepts an array of promises, and returns a new promise which\n is fulfilled with an array of fulfillment values for the passed promises, or\n rejected with the reason of the first passed promise to be rejected. It casts all\n elements of the passed iterable to promises as it runs this algorithm.\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = resolve(2);\n let promise3 = resolve(3);\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // The array here would be [ 1, 2, 3 ];\n });\n ```\n\n If any of the `promises` given to `all` are rejected, the first promise\n that is rejected will be given as an argument to the returned promises's\n rejection handler. For example:\n\n Example:\n\n ```javascript\n let promise1 = resolve(1);\n let promise2 = reject(new Error(\"2\"));\n let promise3 = reject(new Error(\"3\"));\n let promises = [ promise1, promise2, promise3 ];\n\n Promise.all(promises).then(function(array){\n // Code here never runs because there are rejected promises!\n }, function(error) {\n // error.message === \"2\"\n });\n ```\n\n @method all\n @static\n @param {Array} entries array of promises\n @param {String} label optional string for labeling the promise.\n Useful for tooling.\n @return {Promise} promise that is fulfilled when all `promises` have been\n fulfilled, or rejected if any of them become rejected.\n @static\n*/\nfunction all$1(entries) {\n return new Enumerator$1(this, entries).promise;\n}\n\n/**\n `Promise.race` returns a new promise which is settled in the same way as the\n first passed promise to settle.\n\n Example:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 2');\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // result === 'promise 2' because it was resolved before promise1\n // was resolved.\n });\n ```\n\n `Promise.race` is deterministic in that only the state of the first\n settled promise matters. For example, even if other promises given to the\n `promises` array argument are resolved, but the first settled promise has\n become rejected before the other promises became fulfilled, the returned\n promise will become rejected:\n\n ```javascript\n let promise1 = new Promise(function(resolve, reject){\n setTimeout(function(){\n resolve('promise 1');\n }, 200);\n });\n\n let promise2 = new Promise(function(resolve, reject){\n setTimeout(function(){\n reject(new Error('promise 2'));\n }, 100);\n });\n\n Promise.race([promise1, promise2]).then(function(result){\n // Code here never runs\n }, function(reason){\n // reason.message === 'promise 2' because promise 2 became rejected before\n // promise 1 became fulfilled\n });\n ```\n\n An example real-world use case is implementing timeouts:\n\n ```javascript\n Promise.race([ajax('foo.json'), timeout(5000)])\n ```\n\n @method race\n @static\n @param {Array} promises array of promises to observe\n Useful for tooling.\n @return {Promise} a promise which settles in the same way as the first passed\n promise to settle.\n*/\nfunction race$1(entries) {\n /*jshint validthis:true */\n var Constructor = this;\n\n if (!isArray(entries)) {\n return new Constructor(function (_, reject) {\n return reject(new TypeError('You must pass an array to race.'));\n });\n } else {\n return new Constructor(function (resolve, reject) {\n var length = entries.length;\n for (var i = 0; i < length; i++) {\n Constructor.resolve(entries[i]).then(resolve, reject);\n }\n });\n }\n}\n\n/**\n `Promise.reject` returns a promise rejected with the passed `reason`.\n It is shorthand for the following:\n\n ```javascript\n let promise = new Promise(function(resolve, reject){\n reject(new Error('WHOOPS'));\n });\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n Instead of writing the above, your code now simply becomes the following:\n\n ```javascript\n let promise = Promise.reject(new Error('WHOOPS'));\n\n promise.then(function(value){\n // Code here doesn't run because the promise is rejected!\n }, function(reason){\n // reason.message === 'WHOOPS'\n });\n ```\n\n @method reject\n @static\n @param {Any} reason value that the returned promise will be rejected with.\n Useful for tooling.\n @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n /*jshint validthis:true */\n var Constructor = this;\n var promise = new Constructor(noop);\n reject(promise, reason);\n return promise;\n}\n\nfunction needsResolver() {\n throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n Promise objects represent the eventual result of an asynchronous operation. The\n primary way of interacting with a promise is through its `then` method, which\n registers callbacks to receive either a promise's eventual value or the reason\n why the promise cannot be fulfilled.\n\n Terminology\n -----------\n\n - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n - `thenable` is an object or function that defines a `then` method.\n - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n - `exception` is a value that is thrown using the throw statement.\n - `reason` is a value that indicates why a promise was rejected.\n - `settled` the final resting state of a promise, fulfilled or rejected.\n\n A promise can be in one of three states: pending, fulfilled, or rejected.\n\n Promises that are fulfilled have a fulfillment value and are in the fulfilled\n state. Promises that are rejected have a rejection reason and are in the\n rejected state. A fulfillment value is never a thenable.\n\n Promises can also be said to *resolve* a value. If this value is also a\n promise, then the original promise's settled state will match the value's\n settled state. So a promise that *resolves* a promise that rejects will\n itself reject, and a promise that *resolves* a promise that fulfills will\n itself fulfill.\n\n\n Basic Usage:\n ------------\n\n ```js\n let promise = new Promise(function(resolve, reject) {\n // on success\n resolve(value);\n\n // on failure\n reject(reason);\n });\n\n promise.then(function(value) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Advanced Usage:\n ---------------\n\n Promises shine when abstracting away asynchronous interactions such as\n `XMLHttpRequest`s.\n\n ```js\n function getJSON(url) {\n return new Promise(function(resolve, reject){\n let xhr = new XMLHttpRequest();\n\n xhr.open('GET', url);\n xhr.onreadystatechange = handler;\n xhr.responseType = 'json';\n xhr.setRequestHeader('Accept', 'application/json');\n xhr.send();\n\n function handler() {\n if (this.readyState === this.DONE) {\n if (this.status === 200) {\n resolve(this.response);\n } else {\n reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n }\n }\n };\n });\n }\n\n getJSON('/posts.json').then(function(json) {\n // on fulfillment\n }, function(reason) {\n // on rejection\n });\n ```\n\n Unlike callbacks, promises are great composable primitives.\n\n ```js\n Promise.all([\n getJSON('/posts'),\n getJSON('/comments')\n ]).then(function(values){\n values[0] // => postsJSON\n values[1] // => commentsJSON\n\n return values;\n });\n ```\n\n @class Promise\n @param {function} resolver\n Useful for tooling.\n @constructor\n*/\nfunction Promise$2(resolver) {\n this[PROMISE_ID] = nextId();\n this._result = this._state = undefined;\n this._subscribers = [];\n\n if (noop !== resolver) {\n typeof resolver !== 'function' && needsResolver();\n this instanceof Promise$2 ? initializePromise(this, resolver) : needsNew();\n }\n}\n\nPromise$2.all = all$1;\nPromise$2.race = race$1;\nPromise$2.resolve = resolve$1;\nPromise$2.reject = reject$1;\nPromise$2._setScheduler = setScheduler;\nPromise$2._setAsap = setAsap;\nPromise$2._asap = asap;\n\nPromise$2.prototype = {\n constructor: Promise$2,\n\n /**\n The primary way of interacting with a promise is through its `then` method,\n which registers callbacks to receive either a promise's eventual value or the\n reason why the promise cannot be fulfilled.\n \n ```js\n findUser().then(function(user){\n // user is available\n }, function(reason){\n // user is unavailable, and you are given the reason why\n });\n ```\n \n Chaining\n --------\n \n The return value of `then` is itself a promise. This second, 'downstream'\n promise is resolved with the return value of the first promise's fulfillment\n or rejection handler, or rejected if the handler throws an exception.\n \n ```js\n findUser().then(function (user) {\n return user.name;\n }, function (reason) {\n return 'default name';\n }).then(function (userName) {\n // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n // will be `'default name'`\n });\n \n findUser().then(function (user) {\n throw new Error('Found user, but still unhappy');\n }, function (reason) {\n throw new Error('`findUser` rejected and we're unhappy');\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n });\n ```\n If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n \n ```js\n findUser().then(function (user) {\n throw new PedagogicalException('Upstream error');\n }).then(function (value) {\n // never reached\n }).then(function (value) {\n // never reached\n }, function (reason) {\n // The `PedgagocialException` is propagated all the way down to here\n });\n ```\n \n Assimilation\n ------------\n \n Sometimes the value you want to propagate to a downstream promise can only be\n retrieved asynchronously. This can be achieved by returning a promise in the\n fulfillment or rejection handler. The downstream promise will then be pending\n until the returned promise is settled. This is called *assimilation*.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // The user's comments are now available\n });\n ```\n \n If the assimliated promise rejects, then the downstream promise will also reject.\n \n ```js\n findUser().then(function (user) {\n return findCommentsByAuthor(user);\n }).then(function (comments) {\n // If `findCommentsByAuthor` fulfills, we'll have the value here\n }, function (reason) {\n // If `findCommentsByAuthor` rejects, we'll have the reason here\n });\n ```\n \n Simple Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let result;\n \n try {\n result = findResult();\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n findResult(function(result, err){\n if (err) {\n // failure\n } else {\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findResult().then(function(result){\n // success\n }, function(reason){\n // failure\n });\n ```\n \n Advanced Example\n --------------\n \n Synchronous Example\n \n ```javascript\n let author, books;\n \n try {\n author = findAuthor();\n books = findBooksByAuthor(author);\n // success\n } catch(reason) {\n // failure\n }\n ```\n \n Errback Example\n \n ```js\n \n function foundBooks(books) {\n \n }\n \n function failure(reason) {\n \n }\n \n findAuthor(function(author, err){\n if (err) {\n failure(err);\n // failure\n } else {\n try {\n findBoooksByAuthor(author, function(books, err) {\n if (err) {\n failure(err);\n } else {\n try {\n foundBooks(books);\n } catch(reason) {\n failure(reason);\n }\n }\n });\n } catch(error) {\n failure(err);\n }\n // success\n }\n });\n ```\n \n Promise Example;\n \n ```javascript\n findAuthor().\n then(findBooksByAuthor).\n then(function(books){\n // found books\n }).catch(function(reason){\n // something went wrong\n });\n ```\n \n @method then\n @param {Function} onFulfilled\n @param {Function} onRejected\n Useful for tooling.\n @return {Promise}\n */\n then: then,\n\n /**\n `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n as the catch block of a try/catch statement.\n \n ```js\n function findAuthor(){\n throw new Error('couldn't find that author');\n }\n \n // synchronous\n try {\n findAuthor();\n } catch(reason) {\n // something went wrong\n }\n \n // async with promises\n findAuthor().catch(function(reason){\n // something went wrong\n });\n ```\n \n @method catch\n @param {Function} onRejection\n Useful for tooling.\n @return {Promise}\n */\n 'catch': function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\n/*global self*/\nfunction polyfill$1() {\n var local = undefined;\n\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n\n var P = local.Promise;\n\n if (P) {\n var promiseToString = null;\n try {\n promiseToString = Object.prototype.toString.call(P.resolve());\n } catch (e) {\n // silently ignored\n }\n\n if (promiseToString === '[object Promise]' && !P.cast) {\n return;\n }\n }\n\n local.Promise = Promise$2;\n}\n\n// Strange compat..\nPromise$2.polyfill = polyfill$1;\nPromise$2.Promise = Promise$2;\n\nreturn Promise$2;\n\n})));\n\n//# sourceMappingURL=es6-promise.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/es6-promise/dist/es6-promise.js\n// module id = 60\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"animate-pulsate\":\"nrk-filmavis-snap-animate-pulsate\",\"animatePulsate\":\"nrk-filmavis-snap-animate-pulsate\",\"pulsateAndRotate\":\"nrk-filmavis-snap-pulsateAndRotate\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/animations.css\n// module id = 61\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"intro-block\":\"nrk-filmavis-snap-intro-block\",\"introBlock\":\"nrk-filmavis-snap-intro-block\",\"section--ready\":\"nrk-filmavis-snap-section--ready\",\"sectionReady\":\"nrk-filmavis-snap-section--ready\",\"section--active\":\"nrk-filmavis-snap-section--active\",\"sectionActive\":\"nrk-filmavis-snap-section--active\",\"heading-block\":\"nrk-filmavis-snap-heading-block\",\"headingBlock\":\"nrk-filmavis-snap-heading-block\",\"block\":\"nrk-filmavis-snap-block\",\"block--shadow\":\"nrk-filmavis-snap-block--shadow\",\"blockShadow\":\"nrk-filmavis-snap-block--shadow\",\"block__right\":\"nrk-filmavis-snap-block__right\",\"blockRight\":\"nrk-filmavis-snap-block--right\",\"block__left\":\"nrk-filmavis-snap-block__left\",\"blockLeft\":\"nrk-filmavis-snap-block--left\",\"block__spaceAfter\":\"nrk-filmavis-snap-block__spaceAfter\",\"blockSpaceAfter\":\"nrk-filmavis-snap-block__spaceAfter\",\"block__lessPadding\":\"nrk-filmavis-snap-block__lessPadding\",\"blockLessPadding\":\"nrk-filmavis-snap-block__lessPadding\",\"block__map\":\"nrk-filmavis-snap-block__map\",\"blockMap\":\"nrk-filmavis-snap-block__map\",\"block__noMarginBottom\":\"nrk-filmavis-snap-block__noMarginBottom\",\"blockNoMarginBottom\":\"nrk-filmavis-snap-block__noMarginBottom\",\"block__lastBlock\":\"nrk-filmavis-snap-block__lastBlock\",\"blockLastBlock\":\"nrk-filmavis-snap-block__lastBlock\",\"block__full-width\":\"nrk-filmavis-snap-block__full-width\",\"blockFullWidth\":\"nrk-filmavis-snap-block__full-width\",\"block__inverse\":\"nrk-filmavis-snap-block__inverse\",\"blockInverse\":\"nrk-filmavis-snap-block__inverse\",\"blockqoute\":\"nrk-filmavis-snap-blockqoute\",\"blockqoute--sm\":\"nrk-filmavis-snap-blockqoute--sm\",\"blockqouteSm\":\"nrk-filmavis-snap-blockqoute--sm\",\"blockqoute--regular\":\"nrk-filmavis-snap-blockqoute--regular\",\"blockqouteRegular\":\"nrk-filmavis-snap-blockqoute--regular\",\"blockqoute--pullqoute\":\"nrk-filmavis-snap-blockqoute--pullqoute\",\"blockqoutePullqoute\":\"nrk-filmavis-snap-blockqoute--pullqoute\",\"cite--fancy\":\"nrk-filmavis-snap-cite--fancy\",\"citeFancy\":\"nrk-filmavis-snap-cite--fancy\",\"block--no-bg\":\"nrk-filmavis-snap-block--no-bg\",\"blockNoBg\":\"nrk-filmavis-snap-block--no-bg\",\"block--big-font\":\"nrk-filmavis-snap-block--big-font\",\"blockBigFont\":\"nrk-filmavis-snap-block--big-font\",\"block--xl-font\":\"nrk-filmavis-snap-block--xl-font\",\"blockXlFont\":\"nrk-filmavis-snap-block--xl-font\",\"block--left\":\"nrk-filmavis-snap-block--left\",\"block--right\":\"nrk-filmavis-snap-block--right\",\"block--center\":\"nrk-filmavis-snap-block--center\",\"blockCenter\":\"nrk-filmavis-snap-block--center\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/block.css\n// module id = 62\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"bylineSection\":\"nrk-filmavis-snap-bylineSection\",\"byline--sharebutton--container\":\"nrk-filmavis-snap-byline--sharebutton--container\",\"bylineSharebuttonContainer\":\"nrk-filmavis-snap-byline--sharebutton--container\",\"byline--sharebutton--group\":\"nrk-filmavis-snap-byline--sharebutton--group\",\"bylineSharebuttonGroup\":\"nrk-filmavis-snap-byline--sharebutton--group\",\"byline--sharebutton--item\":\"nrk-filmavis-snap-byline--sharebutton--item\",\"bylineSharebuttonItem\":\"nrk-filmavis-snap-byline--sharebutton--item\",\"seemore--block\":\"nrk-filmavis-snap-seemore--block\",\"seemoreBlock\":\"nrk-filmavis-snap-seemore--block\",\"byline--block\":\"nrk-filmavis-snap-byline--block\",\"bylineBlock\":\"nrk-filmavis-snap-byline--block\",\"seemore--heading\":\"nrk-filmavis-snap-seemore--heading\",\"seemoreHeading\":\"nrk-filmavis-snap-seemore--heading\",\"seemore--heading-link\":\"nrk-filmavis-snap-seemore--heading-link\",\"seemoreHeadingLink\":\"nrk-filmavis-snap-seemore--heading-link\",\"seemore--link--list--wrapper\":\"nrk-filmavis-snap-seemore--link--list--wrapper\",\"seemoreLinkListWrapper\":\"nrk-filmavis-snap-seemore--link--list--wrapper\",\"seemore--link--list\":\"nrk-filmavis-snap-seemore--link--list\",\"seemoreLinkList\":\"nrk-filmavis-snap-seemore--link--list\",\"seemore--link--item\":\"nrk-filmavis-snap-seemore--link--item\",\"seemoreLinkItem\":\"nrk-filmavis-snap-seemore--link--item\",\"seemore--link--image\":\"nrk-filmavis-snap-seemore--link--image\",\"seemoreLinkImage\":\"nrk-filmavis-snap-seemore--link--image\",\"byline--credit--list\":\"nrk-filmavis-snap-byline--credit--list\",\"bylineCreditList\":\"nrk-filmavis-snap-byline--credit--list\",\"byline--credit--list--item\":\"nrk-filmavis-snap-byline--credit--list--item\",\"bylineCreditListItem\":\"nrk-filmavis-snap-byline--credit--list--item\",\"byline--credit--list--item--role\":\"nrk-filmavis-snap-byline--credit--list--item--role\",\"bylineCreditListItemRole\":\"nrk-filmavis-snap-byline--credit--list--item--role\",\"byline--credit--list--item--names\":\"nrk-filmavis-snap-byline--credit--list--item--names\",\"bylineCreditListItemNames\":\"nrk-filmavis-snap-byline--credit--list--item--names\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/byline.css\n// module id = 63\n// module chunks = 0","// removed by extract-text-webpack-plugin\nmodule.exports = {\"fade\":\"nrk-filmavis-snap-fade\",\"animate-into\":\"nrk-filmavis-snap-animate-into\",\"animateInto\":\"nrk-filmavis-snap-animate-into\",\"animate-away\":\"nrk-filmavis-snap-animate-away\",\"animateAway\":\"nrk-filmavis-snap-animate-away\",\"none\":\"nrk-filmavis-snap-none\",\"actually-none\":\"nrk-filmavis-snap-actually-none\",\"actuallyNone\":\"nrk-filmavis-snap-actually-none\",\"blur\":\"nrk-filmavis-snap-blur\",\"swipe\":\"nrk-filmavis-snap-swipe\",\"swipe-left\":\"nrk-filmavis-snap-swipe-left\",\"swipeLeft\":\"nrk-filmavis-snap-swipe-left\",\"swipe-right\":\"nrk-filmavis-snap-swipe-right\",\"swipeRight\":\"nrk-filmavis-snap-swipe-right\",\"swipe-down\":\"nrk-filmavis-snap-swipe-down\",\"swipeDown\":\"nrk-filmavis-snap-swipe-down\",\"swipe-up\":\"nrk-filmavis-snap-swipe-up\",\"swipeUp\":\"nrk-filmavis-snap-swipe-up\",\"zoom\":\"nrk-filmavis-snap-zoom\",\"zoom-in\":\"nrk-filmavis-snap-zoom-in\",\"zoomIn\":\"nrk-filmavis-snap-zoom-in\",\"zoom-out\":\"nrk-filmavis-snap-zoom-out\",\"zoomOut\":\"nrk-filmavis-snap-zoom-out\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/shared/stylesheets/transitions.css\n// module id = 64\n// module chunks = 0","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/foreach/index.js\n// module id = 65\n// module chunks = 0","var ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/function-bind/implementation.js\n// module id = 66\n// module chunks = 0","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n(function(window, document) {\n'use strict';\n\n\n// Exits early if all IntersectionObserver and IntersectionObserverEntry\n// features are natively supported.\nif ('IntersectionObserver' in window &&\n 'IntersectionObserverEntry' in window &&\n 'intersectionRatio' in IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/WICG/IntersectionObserver/issues/211\n if (!('isIntersecting' in IntersectionObserverEntry.prototype)) {\n Object.defineProperty(IntersectionObserverEntry.prototype,\n 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n}\n\n\n/**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observering a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\nvar registry = [];\n\n\n/**\n * Creates the global IntersectionObserverEntry constructor.\n * https://wicg.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\nfunction IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n this.intersectionRatio = intersectionArea / targetArea;\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n}\n\n\n/**\n * Creates the global IntersectionObserver constructor.\n * https://wicg.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\nfunction IntersectionObserver(callback, opt_options) {\n\n var options = opt_options || {};\n\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(\n this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function(margin) {\n return margin.value + margin.unit;\n }).join(' ');\n}\n\n\n/**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\nIntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n\n/**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\nIntersectionObserver.prototype.POLL_INTERVAL = null;\n\n\n/**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.observe = function(target) {\n // If the target is already being observed, do nothing.\n if (this._observationTargets.some(function(item) {\n return item.element == target;\n })) {\n return;\n }\n\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n\n this._registerInstance();\n this._observationTargets.push({element: target, entry: null});\n this._monitorIntersections();\n};\n\n\n/**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\nIntersectionObserver.prototype.unobserve = function(target) {\n this._observationTargets =\n this._observationTargets.filter(function(item) {\n\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n};\n\n\n/**\n * Stops observing all target elements for intersection changes.\n */\nIntersectionObserver.prototype.disconnect = function() {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n};\n\n\n/**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\nIntersectionObserver.prototype.takeRecords = function() {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n};\n\n\n/**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\nIntersectionObserver.prototype._initThresholds = function(opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n\n return threshold.sort().filter(function(t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n};\n\n\n/**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\nIntersectionObserver.prototype._parseRootMargin = function(opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function(margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {value: parseFloat(parts[1]), unit: parts[2]};\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n\n return margins;\n};\n\n\n/**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibilty state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n this._checkForIntersections();\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(\n this._checkForIntersections, this.POLL_INTERVAL);\n }\n else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if ('MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n};\n\n\n/**\n * Stops polling for intersection changes.\n * @private\n */\nIntersectionObserver.prototype._unmonitorIntersections = function() {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n};\n\n\n/**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\nIntersectionObserver.prototype._checkForIntersections = function() {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n\n this._observationTargets.forEach(function(item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget &&\n this._computeTargetAndRootIntersection(target, rootRect);\n\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n};\n\n\n/**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://wicg.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\nIntersectionObserver.prototype._computeTargetAndRootIntersection =\n function(target, rootRect) {\n\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ?\n window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body &&\n parent != document.documentElement &&\n parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n};\n\n\n/**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\nIntersectionObserver.prototype._getRootRect = function() {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n};\n\n\n/**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\nIntersectionObserver.prototype._expandRectByRootMargin = function(rect) {\n var margins = this._rootMarginValues.map(function(margin, i) {\n return margin.unit == 'px' ? margin.value :\n margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n\n return newRect;\n};\n\n\n/**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\nIntersectionObserver.prototype._hasCrossedThreshold =\n function(oldEntry, newEntry) {\n\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ?\n oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ?\n newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio ||\n threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n};\n\n\n/**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\nIntersectionObserver.prototype._rootIsInDom = function() {\n return !this.root || containsDeep(document, this.root);\n};\n\n\n/**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\nIntersectionObserver.prototype._rootContainsTarget = function(target) {\n return containsDeep(this.root || document, target);\n};\n\n\n/**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\nIntersectionObserver.prototype._registerInstance = function() {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n};\n\n\n/**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\nIntersectionObserver.prototype._unregisterInstance = function() {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n};\n\n\n/**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\nfunction now() {\n return window.performance && performance.now && performance.now();\n}\n\n\n/**\n * Throttles a function and delays its executiong, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\nfunction throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function() {\n fn();\n timer = null;\n }, timeout);\n }\n };\n}\n\n\n/**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\nfunction addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\nfunction removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n }\n else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n}\n\n\n/**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\nfunction computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n\n return (width >= 0 && height >= 0) && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n}\n\n\n/**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\nfunction getBoundingClientRect(el) {\n var rect;\n\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/WICG/IntersectionObserver/pull/205\n }\n\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n}\n\n\n/**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\nfunction getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n}\n\n/**\n * Checks to see if a parent element contains a child elemnt (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\nfunction containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n\n node = getParentNode(node);\n }\n return false;\n}\n\n\n/**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\nfunction getParentNode(node) {\n var parent = node.parentNode;\n\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n return parent;\n}\n\n\n// Exposes the constructors globally.\nwindow.IntersectionObserver = IntersectionObserver;\nwindow.IntersectionObserverEntry = IntersectionObserverEntry;\n\n}(window, document));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/intersection-observer/intersection-observer.js\n// module id = 67\n// module chunks = 0","'use strict';\n\nvar getDay = Date.prototype.getDay;\nvar tryDateObject = function tryDateObject(value) {\n\ttry {\n\t\tgetDay.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar toStr = Object.prototype.toString;\nvar dateClass = '[object Date]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) { return false; }\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-date-object/index.js\n// module id = 68\n// module chunks = 0","'use strict';\n\nvar has = require('has');\nvar regexExec = RegExp.prototype.exec;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar tryRegexExecCall = function tryRegexExec(value) {\n\ttry {\n\t\tvar lastIndex = value.lastIndex;\n\t\tvalue.lastIndex = 0;\n\n\t\tregexExec.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\tvalue.lastIndex = lastIndex;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar regexClass = '[object RegExp]';\nvar hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';\n\nmodule.exports = function isRegex(value) {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\tif (!hasToStringTag) {\n\t\treturn toStr.call(value) === regexClass;\n\t}\n\n\tvar descriptor = gOPD(value, 'lastIndex');\n\tvar hasLastIndexDataProperty = descriptor && has(descriptor, 'value');\n\tif (!hasLastIndexDataProperty) {\n\t\treturn false;\n\t}\n\n\treturn tryRegexExecCall(value);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-regex/index.js\n// module id = 69\n// module chunks = 0","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol() === 'symbol';\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') { return false; }\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') { return true; }\n\t\tif (toStr.call(value) !== '[object Symbol]') { return false; }\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false;\n\t};\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/is-symbol/index.js\n// module id = 70\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// ./~/lodash/_baseGetTag.js\n// module id = 71\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// ./~/lodash/_freeGlobal.js\n// module id = 72\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// ./~/lodash/_getRawTag.js\n// module id = 73\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// ./~/lodash/_objectToString.js\n// module id = 74\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// ./~/lodash/isObjectLike.js\n// module id = 75\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// ./~/lodash/isSymbol.js\n// module id = 76\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// ./~/lodash/now.js\n// module id = 77\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// ./~/lodash/toNumber.js\n// module id = 78\n// module chunks = 0","'use strict';\n\n// modified from https://github.com/es-shims/es5-shim\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = [\n\t'toString',\n\t'toLocaleString',\n\t'valueOf',\n\t'hasOwnProperty',\n\t'isPrototypeOf',\n\t'propertyIsEnumerable',\n\t'constructor'\n];\nvar equalsConstructorPrototype = function (o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$console: true,\n\t$external: true,\n\t$frame: true,\n\t$frameElement: true,\n\t$frames: true,\n\t$innerHeight: true,\n\t$innerWidth: true,\n\t$outerHeight: true,\n\t$outerWidth: true,\n\t$pageXOffset: true,\n\t$pageYOffset: true,\n\t$parent: true,\n\t$scrollLeft: true,\n\t$scrollTop: true,\n\t$scrollX: true,\n\t$scrollY: true,\n\t$self: true,\n\t$webkitIndexedDB: true,\n\t$webkitStorageInfo: true,\n\t$window: true\n};\nvar hasAutomationEqualityBug = (function () {\n\t/* global window */\n\tif (typeof window === 'undefined') { return false; }\n\tfor (var k in window) {\n\t\ttry {\n\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\ttry {\n\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}());\nvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t/* global window */\n\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\treturn equalsConstructorPrototype(o);\n\t}\n\ttry {\n\t\treturn equalsConstructorPrototype(o);\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar keysShim = function keys(object) {\n\tvar isObject = object !== null && typeof object === 'object';\n\tvar isFunction = toStr.call(object) === '[object Function]';\n\tvar isArguments = isArgs(object);\n\tvar isString = isObject && toStr.call(object) === '[object String]';\n\tvar theKeys = [];\n\n\tif (!isObject && !isFunction && !isArguments) {\n\t\tthrow new TypeError('Object.keys called on a non-object');\n\t}\n\n\tvar skipProto = hasProtoEnumBug && isFunction;\n\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\ttheKeys.push(String(i));\n\t\t}\n\t}\n\n\tif (isArguments && object.length > 0) {\n\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\ttheKeys.push(String(j));\n\t\t}\n\t} else {\n\t\tfor (var name in object) {\n\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\ttheKeys.push(String(name));\n\t\t\t}\n\t\t}\n\t}\n\n\tif (hasDontEnumBug) {\n\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t}\n\t\t}\n\t}\n\treturn theKeys;\n};\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\treturn (Object.keys(arguments) || '').length === 2;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tvar originalKeys = Object.keys;\n\t\t\tObject.keys = function keys(object) {\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t} else {\n\t\t\t\t\treturn originalKeys(object);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-keys/index.js\n// module id = 79\n// module chunks = 0","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/object-keys/isArguments.js\n// module id = 80\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process/browser.js\n// module id = 81\n// module chunks = 0"],"sourceRoot":""}