{"version":3,"sources":["webpack:///v1-bundle-6e3864be8b3929d4e7fd.js","webpack:///webpack/bootstrap 67c75578a63d59dccf07","webpack:///./node_modules/preact/dist/preact.mjs","webpack:///./node_modules/has/src/index.js","webpack:///./node_modules/function-bind/index.js","webpack:///./node_modules/is-callable/index.js","webpack:///./node_modules/define-properties/index.js","webpack:///./node_modules/es-abstract/es6.js","webpack:///./node_modules/es-to-primitive/helpers/isPrimitive.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/es-abstract/GetIntrinsic.js","webpack:///./node_modules/es-abstract/helpers/isNaN.js","webpack:///./node_modules/es-abstract/helpers/isFinite.js","webpack:///./node_modules/es-abstract/helpers/sign.js","webpack:///./node_modules/es-abstract/helpers/mod.js","webpack:///./node_modules/array-includes/implementation.js","webpack:///./node_modules/array-includes/polyfill.js","webpack:///./src/v1/components/App.css","webpack:///./src/lib/provider.js","webpack:///./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","webpack:///./src/v1/client.polyfill.js","webpack:///./node_modules/intersection-observer/intersection-observer.js","webpack:///./node_modules/array-includes/index.js","webpack:///./node_modules/object-keys/index.js","webpack:///./node_modules/object-keys/isArguments.js","webpack:///./node_modules/es-abstract/es2015.js","webpack:///./node_modules/function-bind/implementation.js","webpack:///./node_modules/es-to-primitive/es6.js","webpack:///./node_modules/es-to-primitive/es2015.js","webpack:///./node_modules/is-date-object/index.js","webpack:///./node_modules/is-symbol/index.js","webpack:///./node_modules/has-symbols/index.js","webpack:///./node_modules/has-symbols/shams.js","webpack:///./node_modules/es-abstract/helpers/assign.js","webpack:///./node_modules/es-abstract/helpers/isPrimitive.js","webpack:///./node_modules/es-abstract/es5.js","webpack:///./node_modules/es-to-primitive/es5.js","webpack:///./node_modules/is-regex/index.js","webpack:///./node_modules/array-includes/shim.js","webpack:///./src/v1/client.js","webpack:///./node_modules/@nrk/feature-tests/dist/feature-tests.module.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/index.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/array.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/bem.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/scroll.js","webpack:///./node_modules/@nrk/dh-utils/dist/module/string.js","webpack:///./src/lib/errorReporting.js","webpack:///./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","webpack:///./src/v1/components/App.js","webpack:///./src/lib/bem.js","webpack:///./src/v1/components/MaxViewportRect.js","webpack:///./node_modules/@nrk/max-viewport-observable/dist/max-viewport-observable.module.js","webpack:///./src/v1/components/Background.js","webpack:///./src/v1/components/Background.css","webpack:///./src/v1/components/Map.js","webpack:///./src/v1/components/Map.css","webpack:///external \"mapboxgl\"","webpack:///./node_modules/@turf/great-circle/main.es.js","webpack:///./node_modules/@turf/invariant/main.es.js","webpack:///./node_modules/@turf/helpers/main.es.js","webpack:///./src/v1/components/chapters.js","webpack:///./src/lib/array.js","webpack:///./src/v1/components/PolopolyPicture.js","webpack:///./src/lib/image.js","webpack:///./src/lib/googleAnalytic.js","webpack:///./node_modules/@nrk/dh-analytics-utils/dist/dh-analytics-utils.min.js","webpack:///./src/lib/getContextId.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","__webpack_exports__","h","nodeName","attributes","lastSimple","child","simple","children","EMPTY_CHILDREN","arguments","length","stack","push","pop","undefined","String","VNode","key","options","vnode","extend","obj","props","cloneElement","slice","enqueueRender","component","_dirty","items","debounceRendering","defer","rerender","list","renderComponent","isSameNodeType","node","hydrating","splitText","_componentConstructor","isNamedNode","normalizedNodeName","toLowerCase","getNodeProps","defaultProps","createNode","isSvg","document","createElementNS","createElement","removeNode","parentNode","removeChild","setAccessor","old","value","style","cssText","IS_NON_DIMENSIONAL","test","innerHTML","__html","useCapture","replace","substring","addEventListener","eventProxy","removeEventListener","_listeners","e","removeAttribute","ns","removeAttributeNS","setAttributeNS","setAttribute","className","this","type","event","flushMounts","mounts","afterMount","componentDidMount","diff","dom","context","mountAll","parent","componentRoot","diffLevel","isSvgMode","ownerSVGElement","ret","idiff","appendChild","out","prevSvgMode","_component","nodeValue","createTextNode","replaceChild","recollectNodeTree","vnodeName","buildComponentFromVNode","firstChild","fc","vchildren","a","nextSibling","innerDiffNode","dangerouslySetInnerHTML","diffAttributes","isHydrating","j","f","vchild","originalChildren","childNodes","keyed","keyedLen","min","len","childrenLen","vlen","_child","__key","trim","insertBefore","unmountOnly","unmountComponent","ref","removeChildren","lastChild","next","previousSibling","attrs","createComponent","Ctor","inst","recyclerComponents","render","Component","constructor","doRender","nextBase","splice","state","setComponentProps","renderMode","_disable","__ref","getDerivedStateFromProps","base","componentWillMount","componentWillReceiveProps","prevContext","prevProps","syncComponentUpdates","isChild","rendered","cbase","previousProps","previousState","prevState","previousContext","isUpdate","initialBase","initialChildComponent","skip","snapshot","shouldComponentUpdate","componentWillUpdate","getChildContext","getSnapshotBeforeUpdate","toUnmount","childComponent","childProps","_parentComponent","baseParent","componentRef","t","unshift","componentDidUpdate","afterUpdate","_renderCallbacks","originalComponent","oldDom","isDirectOwner","isOwner","beforeUnmount","componentWillUnmount","inner","merge","Promise","resolve","then","bind","setTimeout","setState","callback","forceUpdate","preact","require","Function","implementation","_typeof","Symbol","iterator","fnToStr","toString","constructorRegex","isES6ClassFn","fnStr","tryFunctionObject","toStr","hasToStringTag","toStringTag","strClass","keys","hasSymbols","concat","Array","origDefineProperty","isFunction","fn","supportsDescriptors","_","x","predicate","writable","defineProperties","map","predicates","getOwnPropertySymbols","g","eval","window","generator","asyncGen","ThrowTypeError","getOwnPropertyDescriptor","TypeError","getProto","getPrototypeOf","__proto__","generatorFunction","asyncGenFunction","asyncGenIterator","TypedArray","Uint8Array","INTRINSICS","$ %Array%","$ %ArrayBuffer%","ArrayBuffer","$ %ArrayBufferPrototype%","$ %ArrayIteratorPrototype%","$ %ArrayPrototype%","$ %ArrayProto_entries%","entries","$ %ArrayProto_forEach%","forEach","$ %ArrayProto_keys%","$ %ArrayProto_values%","values","$ %AsyncFromSyncIteratorPrototype%","$ %AsyncFunction%","$ %AsyncFunctionPrototype%","$ %AsyncGenerator%","$ %AsyncGeneratorFunction%","$ %AsyncGeneratorPrototype%","$ %AsyncIteratorPrototype%","asyncIterator","$ %Atomics%","Atomics","$ %Boolean%","Boolean","$ %BooleanPrototype%","$ %DataView%","DataView","$ %DataViewPrototype%","$ %Date%","Date","$ %DatePrototype%","$ %decodeURI%","decodeURI","$ %decodeURIComponent%","decodeURIComponent","$ %encodeURI%","encodeURI","$ %encodeURIComponent%","encodeURIComponent","$ %Error%","Error","$ %ErrorPrototype%","$ %eval%","$ %EvalError%","EvalError","$ %EvalErrorPrototype%","$ %Float32Array%","Float32Array","$ %Float32ArrayPrototype%","$ %Float64Array%","Float64Array","$ %Float64ArrayPrototype%","$ %Function%","$ %FunctionPrototype%","$ %Generator%","$ %GeneratorFunction%","$ %GeneratorPrototype%","$ %Int8Array%","Int8Array","$ %Int8ArrayPrototype%","$ %Int16Array%","Int16Array","$ %Int16ArrayPrototype%","$ %Int32Array%","Int32Array","$ %Int32ArrayPrototype%","$ %isFinite%","isFinite","$ %isNaN%","isNaN","$ %IteratorPrototype%","$ %JSON%","JSON","$ %JSONParse%","parse","$ %Map%","Map","$ %MapIteratorPrototype%","$ %MapPrototype%","$ %Math%","Math","$ %Number%","Number","$ %NumberPrototype%","$ %Object%","$ %ObjectPrototype%","$ %ObjProto_toString%","$ %ObjProto_valueOf%","valueOf","$ %parseFloat%","parseFloat","$ %parseInt%","parseInt","$ %Promise%","$ %PromisePrototype%","$ %PromiseProto_then%","$ %Promise_all%","all","$ %Promise_reject%","reject","$ %Promise_resolve%","$ %Proxy%","Proxy","$ %RangeError%","RangeError","$ %RangeErrorPrototype%","$ %ReferenceError%","ReferenceError","$ %ReferenceErrorPrototype%","$ %Reflect%","Reflect","$ %RegExp%","RegExp","$ %RegExpPrototype%","$ %Set%","Set","$ %SetIteratorPrototype%","$ %SetPrototype%","$ %SharedArrayBuffer%","SharedArrayBuffer","$ %SharedArrayBufferPrototype%","$ %String%","$ %StringIteratorPrototype%","$ %StringPrototype%","$ %Symbol%","$ %SymbolPrototype%","$ %SyntaxError%","SyntaxError","$ %SyntaxErrorPrototype%","$ %ThrowTypeError%","$ %TypedArray%","$ %TypedArrayPrototype%","$ %TypeError%","$ %TypeErrorPrototype%","$ %Uint8Array%","$ %Uint8ArrayPrototype%","$ %Uint8ClampedArray%","Uint8ClampedArray","$ %Uint8ClampedArrayPrototype%","$ %Uint16Array%","Uint16Array","$ %Uint16ArrayPrototype%","$ %Uint32Array%","Uint32Array","$ %Uint32ArrayPrototype%","$ %URIError%","URIError","$ %URIErrorPrototype%","$ %WeakMap%","WeakMap","$ %WeakMapPrototype%","$ %WeakSet%","WeakSet","$ %WeakSetPrototype%","allowMissing","$isNaN","Infinity","number","modulo","remain","floor","global","ES","$isFinite","indexOf","searchElement","fromIndex","ToInteger","apply","O","ToObject","ToLength","k","max","SameValueZero","includes","root","app","root--js","app--visible","root--noJs","app__mediaContainer","app__mediaFallback","app__itemContainer","textSection","textSection__card","textSection__card--left","textSection__card--right","_objectWithoutProperties","target","_classCallCheck","instance","Constructor","_possibleConstructorReturn","self","_inherits","subClass","superClass","create","setPrototypeOf","connect","mapContextToProps","wrappedComponent","Connected","_Component2","_ref","_temp","_this2","_ret","_len","args","_key","ctx","_createClass","_preact","_extends","displayName","Provider","assign","source","descriptor","protoProps","staticProps","_Component","_props","__CTX__","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","__WEBPACK_AMD_DEFINE_RESULT__","factory","define","isPolopolyId","id","isPolopolyIdRegex","createUrl","ratio","width","quality","url","_baseUrl","queryString","createQueryString","_ref2","getClosestNumber","goal","targets","isValidGoal","isValidTargets","reduce","prev","curr","abs","isValid","isValidRatio","supportedRatios","isArray","isValidQuality","supportedQualities","createImageUrl","polopolyId","hasOption","ratios","qualities","isNumber","errorMessage","isSupportedWidth","widths","closestWidth","option","isInteger","shim","IntersectionObserverEntry","entry","time","rootBounds","boundingClientRect","intersectionRect","getEmptyRect","isIntersecting","targetRect","targetArea","height","intersectionArea","intersectionRatio","toFixed","IntersectionObserver","opt_options","nodeType","_checkForIntersections","throttle","THROTTLE_TIMEOUT","_callback","_observationTargets","_queuedEntries","_rootMarginValues","_parseRootMargin","rootMargin","thresholds","_initThresholds","threshold","margin","unit","join","now","performance","timeout","timer","addEvent","opt_useCapture","attachEvent","removeEvent","detatchEvent","computeRectIntersection","rect1","rect2","top","bottom","left","right","getBoundingClientRect","el","rect","err","containsDeep","getParentNode","host","registry","POLL_INTERVAL","USE_MUTATION_OBSERVER","observe","some","item","element","_registerInstance","_monitorIntersections","unobserve","filter","_unmonitorIntersections","_unregisterInstance","disconnect","takeRecords","records","opt_threshold","sort","opt_rootMargin","marginString","margins","split","parts","exec","_monitoringIntersections","_monitoringInterval","setInterval","_domObserver","MutationObserver","childList","characterData","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","index","getPolyfill","polyfill","boundIncludesShim","array","RequireObjectCoercible","has","isArgs","isEnumerable","propertyIsEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","ctor","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","equalsConstructorPrototypeIfNotBuggy","keysShim","isObject","isArguments","isString","theKeys","skipProto","skipConstructor","originalKeys","str","callee","toPrimitive","GetIntrinsic","$TypeError","$SyntaxError","$Array","$String","$Object","$Number","$Symbol","$RegExp","MAX_SAFE_INTEGER","pow","sign","mod","isPrimitive","parseInteger","arraySlice","strSlice","isBinary","isOctal","regexExec","nonWS","nonWSregex","hasNonWS","invalidHexLiteral","isInvalidHexLiteral","$charCodeAt","charCodeAt","$floor","$abs","$ObjectCreate","$gOPD","$isExtensible","isExtensible","ws","trimRegex","ES5","hasRegExpMatcher","ES6","Call","F","V","IsCallable","ToPrimitive","ToNumber","argument","NaN","trimmed","ToInt16","int16bit","ToUint16","ToInt8","int8bit","ToUint8","posInt","ToUint8Clamp","ToString","ToPropertyKey","CanonicalNumericIndexString","SameValue","CheckObjectCoercible","IsArray","IsConstructor","IsExtensible","preventExtensions","IsInteger","IsPropertyKey","IsRegExp","isRegExp","match","ToBoolean","y","GetV","P","GetMethod","func","Get","Type","SpeciesConstructor","defaultConstructor","C","S","species","CompletePropertyDescriptor","Desc","IsPropertyDescriptor","IsGenericDescriptor","IsDataDescriptor","Throw","HasOwnProperty","HasProperty","IsConcatSpreadable","isConcatSpreadable","spreadable","Invoke","argumentsList","GetIterator","method","actualMethod","IteratorNext","result","IteratorComplete","iterResult","IteratorValue","IteratorStep","IteratorClose","completion","completionThunk","iteratorReturn","completionRecord","innerResult","CreateIterResultObject","done","RegExpExec","R","ArraySpeciesCreate","originalArray","CreateDataProperty","oldDesc","extensible","newDesc","CreateDataPropertyOrThrow","success","ObjectCreate","proto","internalSlotsList","AdvanceStringIndex","unicode","first","second","that","bound","binder","boundLength","boundArgs","Empty","isCallable","isDate","isSymbol","ordinaryToPrimitive","hint","methodNames","input","exoticToPrim","getDay","tryDateObject","symToStr","symStringRegex","isSymbolObject","origSymbol","hasSymbolSham","sym","symObj","getOwnPropertyNames","syms","$assign","ToInt32","ToUint32","optMessage","allowed","[[Configurable]]","[[Enumerable]]","[[Get]]","[[Set]]","[[Value]]","[[Writable]]","isData","IsAccessor","IsAccessorDescriptor","FromPropertyDescriptor","set","ToPropertyDescriptor","Obj","desc","setter","ES5internalSlots","[[DefaultValue]]","actualHint","methods","gOPD","tryRegexExecCall","lastIndex","init","mapboxgl","findElements","rootElementClassName","_dhUtils","createUniqueId","getAttribute","preloadedState","errorTrackingEnabled","simpleErrorReport","_errorReporting","createErrorReporter","listenAndCatch","gaPropertyId","metadata","title","selfId","published","googleAnalyticsTracker","_dhAnalyticsUtils","createGoogleAnalyticsTracker","publishedDate","_getContextId","getContextId","location","href","sendError","message","sendErrorReport","sendGaEvent","eventObj","sendEvent","category","_featureTests","testPositionSticky","supported","_provider","_App","App","toArray","getElementsByClassName","isInitialized","_App2","initJordenRundtSeksSteg","testEventPassiveListener","hasSupportCache","opts","testJs","testJs$1","objectFit","position","testVideoAutoPlay","videoAutoPlayCache","videoElm","isPlaying","canPlayType","src","load","playPromise","play","catch","oncanplay","onplay","testReducedMotion","matchMedia","matches","testObjectFit","default","getScrollTop","getScrollLeft","bem","_array","_bem","_bem2","_scroll","_string","nodeList","_toConsumableArray","arr","arr2","from","toStrings","blockName","modifiers","strings","modifier","objects","objectString","b","pageXOffset","scrollLeft","pageYOffset","scrollTop","prefix","random","substr","isErrorReportingEnabled","SimpleErrorReport","dryRun","_dhSimpleErrorReport","r","register","u","parseStack","errorRegister","filename","lineno","colno","line","column","error","stackTrace","reason","console","log","stringify","isInRegisterWithinRange","addErrorToRegister","XMLHttpRequest","open","setRequestHeader","send","_interopRequireDefault","_App3","_MaxViewportRect","_MaxViewportRect2","_Background","_chapters","_PolopolyPicture","_PolopolyPicture2","_googleAnalytic","trackingName","_this","handleViewportChange","viewport","viewportHeight","visible","trackedInitial","chapters","createChapters","sectionElements","triggerElements","insersectionObserver","elm","setVisiblity","setIndex","triggerElm","_this3","trackAction","_this4","_state","mediaContainerInlineStyle","textSectionInlineStyle","paddingBottom","styles","onViewportChange","Background","chapterIndex","background","chapter","idx","imageId","fallbackPicture","section","textAlign","text","link","verticalAlign","aria-hidden","xlinkHref","connector","_maxViewportObservable","_maxViewportObservable2","MaxViewportRect","viewport$","MaxViewportObservable","dispose","subscribe","inlineStyle","getRect","Element","innerWidth","innerHeight","observer","isDynamicViewport","isTouching","listeners","orientationchange","resize","prevRect","scroll","touchstart","touchend","unsubscribe","_Background2","mapboxChapters","mapbox","mapElement","nextProps","setActiveChapter","media--active","_mapboxgl","_mapboxgl2","_greatCircle","_greatCircle2","mapEl","mapReady","addedPoints","startTime","progress","framesPerSecond","initialOpacity","opacity","initialRadius","radius","maxRadius","firstSymbolId","activeIndex","lineNames","animatedLineNames","polygonNames","multiPolygonNames","labelNames","animationLine","geometry","coordinates","animationProgress","currentLine","currentLineId","lineGeometries","accessToken","container","interactive","renderWorldCopies","attributionControl","on","addLayer","tiles","minzoom","maxzoom","animateMarker","chapterConfig","camera","cameraForBounds","bounds","zoom","center","lng","lat","point","getLayer","setPaintProperty","addPoint","addLine","greatCircle","addGreatCircle","mapColor","polygon","addPolygon","multiPolygon","addMultiPolygon","label","addLabel","labels","removePoint","removeLine","removeGreatCircle","polygonId","multiPolygonId","duration","addChapter","fadeOutChapter","fadeInChapter","removeChapter","activeChapter","adaptChapterConfigBounds","jumpTo","data","bbox","fitBounds","padding","animate","flyTo","getSource","setData","timestamp","requestAnimationFrame","getZoom","currentPointName","fill-color","fill-opacity","fill-outline-color","fill-pattern","labelId","layout","symbol-placement","text-font","text-field","properties","text-size","paint","text-color","text-halo-color","text-halo-width","lineId","line-cap","line-join","line-color","line-width","line-opacity","toPaint","pointId","addSource","lon","circle-radius","circle-radius-transition","circle-opacity-transition","circle-color","circle-opacity","removeLayer","removeSource","startStop","start","stop","line-dasharray","end","npoints","offset","_invariant","getCoord","GreatCircle","Arc","json","D2R","PI","R2D","Coord","view","antipode","anti_lat","anti_lon","LineString","coords","move_to","coord","geometries","multiline","wkt","wkt_string","collect","w","z","sin","cos","asin","sqrt","interpolate","A","B","atan2","first_pass","delta","step","pair","bHasBigDiff","dfMaxSmallDiffLong","dfDateLineOffset","dfLeftBorderX","dfRightBorderX","dfDiffSpace","dfPrevX","dfX","dfDiffLong","poMulti","poNewLS","dfX0","dfX1","dfY1","dfX2","dfY2","tmpX","tmpY","dfRatio","dfY","poNewLS0","arc","points","j0","getCoords","containsNumber","_helpers","geojsonType","featureOf","feature","collectionOf","featureCollection","features","getGeom","geojson","getGeomType","getType","validateBBox","validateId","feat","geom","lineString","multiPoint","multiLineString","ring","polygons","lineStrings","geometryCollection","round","num","precision","multiplier","radiansToLength","radians","units","factor","factors","lengthToRadians","distance","lengthToDegrees","radiansToDegrees","bearingToAzimuth","bearing","angle","degreesToRadians","degrees","convertLength","originalUnit","finalUnit","convertArea","area","startFactor","areaFactors","finalFactor","radians2degrees","degrees2radians","distanceToDegrees","distanceToRadians","radiansToDistance","bearingToAngle","convertDistance","meters","metres","millimeters","earthRadius","millimetres","centimeters","centimetres","kilometers","kilometres","miles","nauticalmiles","inches","yards","feet","unitsFactors","acres","gdocId","pitch","_serumImagecropUtils","_image","Picture","alt","parsedQuality","getQualityFromString","defaultUrl","desktopSourceSet","createSrcSet","supportedWidths","mobileSourceSet","media","srcSet","_ref$quality","qualityString","string","initialize","trackingEnabled","isTrackingEnabled","action","sendToGoogleAnalytics","ga","referrer","dimension1","dimension2","dimension3","getFullYear","dimension4","getMonth","dimension5","getDate","dimension6","dimension7","dimension10","v","trackingId","cookieDomain","eventCategory","eventAction","eventLabel","eventValue","nonInteraction","fieldsObject","shift","extractPolopolyIdFromString","POLOPOLY_ID_REGEX"],"mappings":"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O,MAAO,UACPN,MAAO,QACPG,MAAO,YACPC,KAAM,aACNF,OAAQ,e3DskNZl0C,G2Dv5LS0zC,YA3uBS,U3DmoNlB1zC,E2Dx5LsB8xC,U3Dy5LtB9xC,E2Dz5L+Bq0C,e3D05L/Br0C,E2D15L6C8yC,c3D25L7C9yC,E2D35L0DmwC,U3D45L1DnwC,E2D55LmE0lC,W3D65LnE1lC,E2D75L6EmnC,Q3D85L7EnnC,E2D95LoF4vC,S3D+5LpF5vC,E2D/5L4F2nC,U3Dg6L5F3nC,E2Dh6LqGmxC,W3Di6LrGnxC,E2Dj6L+G+wC,a3Dk6L/G/wC,E2Dl6L2HoxC,c3Dm6L3HpxC,E2Dn6LwIqwC,oB3Do6LxIrwC,E2Dp6L2JixC,kB3Dq6L3JjxC,E2Dr6L4KgxC,a3Ds6L5KhxC,E2Dt6LwL6nC,e3Du6LxL7nC,E2Dv6LsMqxC,qB3Dw6LtMrxC,E2Dx6L0NsxC,Q3Dy6L1NtxC,E2Dz6LiO0xC,kB3D06LjO1xC,E2D16LkP+xC,kB3D26LlP/xC,E2D36LmQiyC,kB3D46LnQjyC,E2D56LoRmyC,mB3D66LpRnyC,E2D76LsSkyC,mB3D86LtSlyC,E2D96LwTsyC,mB3D+6LxTtyC,E2D/6L0UwyC,gB3Dg7L1UxyC,E2Dh7LyV2yC,c3Di7LzV3yC,E2Dj7LsW0hB,W3Dk7LtW1hB,E2Dl7LgX2rB,W3Dm7LhX3rB,E2Dn7L0X2wC,e3Do7L1X3wC,E2Dp7LwY4wC,a3Dq7LxY5wC,E2Dr7LoZgzC,kB3Ds7LpZhzC,E2Dt7LqaizC,kB3Du7LrajzC,E2Dv7LsbkzC,oB3Dw7LtblzC,E2Dx7LycmzC,oB3Dy7LzcnzC,E2Dz7L4dozC,oB3D07L5dpzC,E2D17L+eqzC,iB3D27L/erzC,E2D37L+fszC,mB3D+7Lzf,SAAUrzC,EAAQD,EAASH,GAEjC,Y4D9gNO,SAASwgC,KACd,MAAOD,GAAStwB,IAAI,SAAA2xB,GAClB,MAAA/iB,MAAY+iB,K5D+gNhB9gC,OAAOC,eAAeZ,EAAS,cAC7B8E,OAAO,GAGT,IAAI4Z,GAAW/d,OAAOke,QAAU,SAAU7B,GAAU,IAAK,GAAI9c,GAAI,EAAGA,EAAI+B,UAAUC,OAAQhC,IAAK,C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","file":"v1-bundle-6e3864be8b3929d4e7fd.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// 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 = \"https://dh-static.mesos.nrk.no/dh-innafor-voldsepisoder-bergen/static/\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 18);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return h; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createElement\", function() { return h; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneElement\", function() { return cloneElement; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Component\", function() { return Component; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"render\", function() { return render; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"rerender\", function() { return rerender; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"options\", function() { return options; });\nvar VNode = function VNode() {};\n\nvar options = {};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p,\n\t list = items;\n\titems = [];\n\twhile (p = list.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {} else if (name === 'ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\ttry {\n\t\t\tnode[name] = value == null ? '' : value;\n\t\t} catch (e) {}\n\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\nvar mounts = [];\n\nvar diffLevel = 0;\n\nvar isSvgMode = false;\n\nvar hydrating = false;\n\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.pop()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t}\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\tunmountComponent(component);\n\t} else {\n\t\tif (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\nvar recyclerComponents = [];\n\nfunction createComponent(Ctor, props, context) {\n\tvar inst,\n\t i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t} else if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode !== 0) {\n\t\tif (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t snapshot = previousContext,\n\t rendered,\n\t inst,\n\t cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t} else if (!skip) {\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) {\n\t\tcomponent._renderCallbacks.pop().call(component);\n\t}if (!diffLevel && !isChild) flushMounts();\n}\n\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\tthis.context = context;\n\n\tthis.props = props;\n\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\nextend(Component.prototype, {\n\tsetState: function setState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\trender: function render() {}\n});\n\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (preact);\n\n//# sourceMappingURL=preact.mjs.map\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(2);\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(25);\n\nmodule.exports = Function.prototype.bind || implementation;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) {\n\t\t\treturn false;\n\t\t}\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) {\n\t\treturn false;\n\t}\n\tif (typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') {\n\t\treturn false;\n\t}\n\tif (typeof value === 'function' && !value.prototype) {\n\t\treturn true;\n\t}\n\tif (hasToStringTag) {\n\t\treturn tryFunctionObject(value);\n\t}\n\tif (isES6ClassFn(value)) {\n\t\treturn false;\n\t}\n\tvar strClass = toStr.call(value);\n\treturn strClass === fnClass || strClass === genClass;\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar keys = __webpack_require__(22);\nvar hasSymbols = typeof Symbol === 'function' && _typeof(Symbol('foo')) === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function isFunction(fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar arePropertyDescriptorsSupported = function arePropertyDescriptorsSupported() {\n\tvar obj = {};\n\ttry {\n\t\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) {\n\t\t\t// jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) {\n\t\t/* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && arePropertyDescriptorsSupported();\n\nvar defineProperty = function defineProperty(object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(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 defineProperties(object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(24);\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object';\n};\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar g;\n\n// This works in non-strict mode\ng = function () {\n\treturn this;\n}();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || Function(\"return this\")() || (1, eval)(\"this\");\n} catch (e) {\n\t// This works if the window reference is available\n\tif ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* globals\n\tSet,\n\tMap,\n\tWeakSet,\n\tWeakMap,\n\n\tPromise,\n\n\tSymbol,\n\tProxy,\n\n\tAtomics,\n\tSharedArrayBuffer,\n\n\tArrayBuffer,\n\tDataView,\n\tUint8Array,\n\tFloat32Array,\n\tFloat64Array,\n\tInt8Array,\n\tInt16Array,\n\tInt32Array,\n\tUint8ClampedArray,\n\tUint16Array,\n\tUint32Array,\n*/\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar undefined; // eslint-disable-line no-shadow-restricted-names\n\nvar ThrowTypeError = Object.getOwnPropertyDescriptor ? function () {\n\treturn Object.getOwnPropertyDescriptor(arguments, 'callee').get;\n}() : function () {\n\tthrow new TypeError();\n};\n\nvar hasSymbols = typeof Symbol === 'function' && _typeof(Symbol.iterator) === 'symbol';\n\nvar getProto = Object.getPrototypeOf || function (x) {\n\treturn x.__proto__;\n}; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'$ %Array%': Array,\n\t'$ %ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'$ %ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'$ %ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'$ %ArrayPrototype%': Array.prototype,\n\t'$ %ArrayProto_entries%': Array.prototype.entries,\n\t'$ %ArrayProto_forEach%': Array.prototype.forEach,\n\t'$ %ArrayProto_keys%': Array.prototype.keys,\n\t'$ %ArrayProto_values%': Array.prototype.values,\n\t'$ %AsyncFromSyncIteratorPrototype%': undefined,\n\t'$ %AsyncFunction%': asyncFunction,\n\t'$ %AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'$ %AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'$ %AsyncGeneratorFunction%': asyncGenFunction,\n\t'$ %AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'$ %AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'$ %Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'$ %Boolean%': Boolean,\n\t'$ %BooleanPrototype%': Boolean.prototype,\n\t'$ %DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'$ %DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'$ %Date%': Date,\n\t'$ %DatePrototype%': Date.prototype,\n\t'$ %decodeURI%': decodeURI,\n\t'$ %decodeURIComponent%': decodeURIComponent,\n\t'$ %encodeURI%': encodeURI,\n\t'$ %encodeURIComponent%': encodeURIComponent,\n\t'$ %Error%': Error,\n\t'$ %ErrorPrototype%': Error.prototype,\n\t'$ %eval%': eval, // eslint-disable-line no-eval\n\t'$ %EvalError%': EvalError,\n\t'$ %EvalErrorPrototype%': EvalError.prototype,\n\t'$ %Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'$ %Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'$ %Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'$ %Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'$ %Function%': Function,\n\t'$ %FunctionPrototype%': Function.prototype,\n\t'$ %Generator%': generator ? getProto(generator()) : undefined,\n\t'$ %GeneratorFunction%': generatorFunction,\n\t'$ %GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'$ %Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'$ %Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'$ %Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'$ %Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'$ %isFinite%': isFinite,\n\t'$ %isNaN%': isNaN,\n\t'$ %IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'$ %JSON%': JSON,\n\t'$ %JSONParse%': JSON.parse,\n\t'$ %Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'$ %MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'$ %MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'$ %Math%': Math,\n\t'$ %Number%': Number,\n\t'$ %NumberPrototype%': Number.prototype,\n\t'$ %Object%': Object,\n\t'$ %ObjectPrototype%': Object.prototype,\n\t'$ %ObjProto_toString%': Object.prototype.toString,\n\t'$ %ObjProto_valueOf%': Object.prototype.valueOf,\n\t'$ %parseFloat%': parseFloat,\n\t'$ %parseInt%': parseInt,\n\t'$ %Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'$ %PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'$ %PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'$ %Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'$ %Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'$ %Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'$ %Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'$ %RangeError%': RangeError,\n\t'$ %RangeErrorPrototype%': RangeError.prototype,\n\t'$ %ReferenceError%': ReferenceError,\n\t'$ %ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'$ %Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'$ %RegExp%': RegExp,\n\t'$ %RegExpPrototype%': RegExp.prototype,\n\t'$ %Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'$ %SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'$ %SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'$ %SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'$ %SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'$ %String%': String,\n\t'$ %StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'$ %StringPrototype%': String.prototype,\n\t'$ %Symbol%': hasSymbols ? Symbol : undefined,\n\t'$ %SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'$ %SyntaxError%': SyntaxError,\n\t'$ %SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'$ %ThrowTypeError%': ThrowTypeError,\n\t'$ %TypedArray%': TypedArray,\n\t'$ %TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'$ %TypeError%': TypeError,\n\t'$ %TypeErrorPrototype%': TypeError.prototype,\n\t'$ %Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'$ %Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'$ %Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'$ %Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'$ %Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'$ %Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'$ %Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'$ %Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'$ %URIError%': URIError,\n\t'$ %URIErrorPrototype%': URIError.prototype,\n\t'$ %WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'$ %WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'$ %WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'$ %WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar key = '$ ' + name;\n\tif (!(key in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[key] === 'undefined' && !allowMissing) {\n\t\tthrow new TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\treturn INTRINSICS[key];\n};\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar $isNaN = Number.isNaN || function (a) {\n return a !== a;\n};\n\nmodule.exports = Number.isFinite || function (x) {\n return typeof x === 'number' && !$isNaN(x) && x !== Infinity && x !== -Infinity;\n};\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\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/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar ES = __webpack_require__(5);\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/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar implementation = __webpack_require__(13);\n\nmodule.exports = function getPolyfill() {\n\treturn Array.prototype.includes || implementation;\n};\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"dh-innafor-voldsepisoder-bergen-root\",\"app\":\"dh-innafor-voldsepisoder-bergen-app\",\"root--js\":\"dh-innafor-voldsepisoder-bergen-root--js\",\"app--visible\":\"dh-innafor-voldsepisoder-bergen-app--visible\",\"root--noJs\":\"dh-innafor-voldsepisoder-bergen-root--noJs\",\"app__mediaContainer\":\"dh-innafor-voldsepisoder-bergen-app__mediaContainer\",\"app__mediaFallback\":\"dh-innafor-voldsepisoder-bergen-app__mediaFallback\",\"app__itemContainer\":\"dh-innafor-voldsepisoder-bergen-app__itemContainer\",\"textSection\":\"dh-innafor-voldsepisoder-bergen-textSection\",\"textSection__card\":\"dh-innafor-voldsepisoder-bergen-textSection__card\",\"textSection__card--left\":\"dh-innafor-voldsepisoder-bergen-textSection__card--left\",\"textSection__card--right\":\"dh-innafor-voldsepisoder-bergen-textSection__card--right\"};\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.connect = exports.Provider = 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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(0);\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // @jsx h\n\n\nvar Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n _classCallCheck(this, Provider);\n\n return _possibleConstructorReturn(this, (Provider.__proto__ || Object.getPrototypeOf(Provider)).apply(this, arguments));\n }\n\n _createClass(Provider, [{\n key: 'getChildContext',\n value: function getChildContext() {\n var _props = this.props,\n children = _props.children,\n props = _objectWithoutProperties(_props, ['children']);\n\n return { '__CTX__': props };\n }\n }, {\n key: 'render',\n value: function render() {\n return this.props.children[0];\n }\n }]);\n\n return Provider;\n}(_preact.Component);\n\nProvider.displayName = 'Provider';\n\nfunction connect(mapContextToProps) {\n return function (wrappedComponent) {\n var Connected = function (_Component2) {\n _inherits(Connected, _Component2);\n\n function Connected() {\n var _ref;\n\n var _temp, _this2, _ret;\n\n _classCallCheck(this, Connected);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this2 = _possibleConstructorReturn(this, (_ref = Connected.__proto__ || Object.getPrototypeOf(Connected)).call.apply(_ref, [this].concat(args))), _this2), _this2.mapContextToProps = function (ctx) {\n return mapContextToProps ? mapContextToProps(ctx) : ctx;\n }, _temp), _possibleConstructorReturn(_this2, _ret);\n }\n\n _createClass(Connected, [{\n key: 'render',\n value: function render() {\n return (0, _preact.h)(wrappedComponent, _extends({}, this.mapContextToProps(this.context['__CTX__']), this.props));\n }\n }]);\n\n return Connected;\n }(_preact.Component);\n\n Connected.displayName = 'connect(' + (wrappedComponent.displayName || wrappedComponent.name || 'Component') + ')';\n return Connected;\n };\n}\n\nexports.Provider = Provider;\nexports.connect = connect;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n(function (global, factory) {\n ( false ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : factory(global.nrkSerumImagecropUtils = {});\n})(undefined, function (exports) {\n '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 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/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(19);\nmodule.exports = __webpack_require__(38);\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(20);\n\n/* eslint-disable */\n\n__webpack_require__(21).shim();\n\nNumber.isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n};\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n\n(function (window, document) {\n 'use strict';\n\n // Exits early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function get() {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n }\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n var registry = [];\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function 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 // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\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 * Creates the global IntersectionObserver constructor.\n * https://w3c.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 */\n function 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(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 * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\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 */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\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 */\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\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 this._checkForIntersections();\n };\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = 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 * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\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 */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\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 */\n IntersectionObserver.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 * 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 */\n IntersectionObserver.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 * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\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(this._checkForIntersections, this.POLL_INTERVAL);\n } else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n\n if (this.USE_MUTATION_OBSERVER && '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 * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.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 * 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 */\n IntersectionObserver.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 && 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 * 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://w3c.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 */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = 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 ? 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 && parent != document.documentElement && 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 * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.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 * 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 */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : 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 * 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 */\n IntersectionObserver.prototype._hasCrossedThreshold = 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 ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? 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 || threshold < oldRatio !== threshold < newRatio) {\n return true;\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 */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\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 */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\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 */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n\n /**\n * Throttles a function and delays its execution, 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 */\n function 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 * 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 */\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\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 */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\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 */\n function 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 * 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 */\n function 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/w3c/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 * 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 */\n function 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 element (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 */\n function 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 * 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 */\n function 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 // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})(window, document);\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(4);\nvar ES = __webpack_require__(5);\n\nvar implementation = __webpack_require__(13);\nvar getPolyfill = __webpack_require__(14);\nvar polyfill = getPolyfill();\nvar shim = __webpack_require__(37);\n\nvar slice = Array.prototype.slice;\n\n/* eslint-disable no-unused-vars */\nvar boundIncludesShim = function includes(array, searchElement) {\n\t/* 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/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// modified from https://github.com/es-shims/es5-shim\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar has = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar slice = Array.prototype.slice;\nvar isArgs = __webpack_require__(23);\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\nvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\nvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\nvar dontEnums = ['toString', 'toLocaleString', 'valueOf', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'];\nvar equalsConstructorPrototype = function equalsConstructorPrototype(o) {\n\tvar ctor = o.constructor;\n\treturn ctor && ctor.prototype === o;\n};\nvar excludedKeys = {\n\t$applicationCache: true,\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') {\n\t\treturn false;\n\t}\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 equalsConstructorPrototypeIfNotBuggy(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 === 'undefined' ? 'undefined' : _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\t// eslint-disable-line func-name-matching\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/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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]' && value !== null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.length === 'number' && value.length >= 0 && toStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar has = __webpack_require__(1);\nvar toPrimitive = __webpack_require__(26);\n\nvar GetIntrinsic = __webpack_require__(8);\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $Array = GetIntrinsic('%Array%');\nvar $String = GetIntrinsic('%String%');\nvar $Object = GetIntrinsic('%Object%');\nvar $Number = GetIntrinsic('%Number%');\nvar $Symbol = GetIntrinsic('%Symbol%', true);\nvar $RegExp = GetIntrinsic('%RegExp%');\n\nvar hasSymbols = !!$Symbol;\n\nvar $isNaN = __webpack_require__(9);\nvar $isFinite = __webpack_require__(10);\nvar MAX_SAFE_INTEGER = $Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\nvar assign = __webpack_require__(32);\nvar sign = __webpack_require__(11);\nvar mod = __webpack_require__(12);\nvar isPrimitive = __webpack_require__(33);\nvar parseInteger = parseInt;\nvar bind = __webpack_require__(2);\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 = ['\\x85', '\\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);\nvar $charCodeAt = bind.call(Function.call, $String.prototype.charCodeAt);\n\nvar toStr = bind.call(Function.call, Object.prototype.toString);\n\nvar $floor = Math.floor;\nvar $abs = Math.abs;\n\nvar $ObjectCreate = Object.create;\nvar $gOPD = $Object.getOwnPropertyDescriptor;\n\nvar $isExtensible = $Object.isExtensible;\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 = ['\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003', '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028', '\\u2029\\uFEFF'].join('');\nvar trimRegex = new RegExp('(^[' + ws + ']+)|([' + ws + ']+$)', 'g');\nvar replace = bind.call(Function.call, $String.prototype.replace);\nvar trim = function trim(value) {\n\treturn replace(value, trimRegex, '');\n};\n\nvar ES5 = __webpack_require__(34);\n\nvar hasRegExpMatcher = __webpack_require__(36);\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// https://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 === 'undefined' ? 'undefined' : _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)) {\n\t\t\treturn 0;\n\t\t}\n\t\tvar posInt = sign(number) * $floor($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) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (number >= 0xFF) {\n\t\t\treturn 0xFF;\n\t\t}\n\t\tvar f = $floor(argument);\n\t\tif (f + 0.5 < number) {\n\t\t\treturn f + 1;\n\t\t}\n\t\tif (number < f + 0.5) {\n\t\t\treturn f;\n\t\t}\n\t\tif (f % 2 !== 0) {\n\t\t\treturn f + 1;\n\t\t}\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 === 'undefined' ? 'undefined' : _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 === 'undefined' ? 'undefined' : _typeof(key)) === 'symbol' ? 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) {\n\t\t\treturn 0;\n\t\t} // includes converting -0 to +0\n\t\tif (len > MAX_SAFE_INTEGER) {\n\t\t\treturn MAX_SAFE_INTEGER;\n\t\t}\n\t\treturn len;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring\n\tCanonicalNumericIndexString: function CanonicalNumericIndexString(argument) {\n\t\tif (toStr(argument) !== '[object String]') {\n\t\t\tthrow new $TypeError('must be a string');\n\t\t}\n\t\tif (argument === '-0') {\n\t\t\treturn -0;\n\t\t}\n\t\tvar n = this.ToNumber(argument);\n\t\tif (this.SameValue(this.ToString(n), argument)) {\n\t\t\treturn n;\n\t\t}\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(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: Object.preventExtensions ? function IsExtensible(obj) {\n\t\tif (isPrimitive(obj)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn $isExtensible(obj);\n\t} : function isExtensible(obj) {\n\t\treturn true;\n\t}, // eslint-disable-line no-unused-vars\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 = $abs(argument);\n\t\treturn $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 === 'undefined' ? 'undefined' : _typeof(argument)) === 'symbol';\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-isregexp\n\tIsRegExp: function IsRegExp(argument) {\n\t\tif (!argument || (typeof argument === 'undefined' ? 'undefined' : _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 * 7.3.2 GetV (V, P)\n * 1. Assert: IsPropertyKey(P) is true.\n * 2. Let O be ToObject(V).\n * 3. ReturnIfAbrupt(O).\n * 4. Return O.[[Get]](P, V).\n */\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 * 7.3.9 - https://ecma-international.org/ecma-262/6.0/#sec-getmethod\n * 1. Assert: IsPropertyKey(P) is true.\n * 2. Let func be GetV(O, P).\n * 3. ReturnIfAbrupt(func).\n * 4. If func is either undefined or null, return undefined.\n * 5. If IsCallable(func) is false, throw a TypeError exception.\n * 6. Return func.\n */\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 void 0;\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 * 7.3.1 Get (O, P) - https://ecma-international.org/ecma-262/6.0/#sec-get-o-p\n * 1. Assert: Type(O) is Object.\n * 2. Assert: IsPropertyKey(P) is true.\n * 3. Return O.[[Get]](P, O).\n */\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 === 'undefined' ? 'undefined' : _typeof(x)) === 'symbol') {\n\t\t\treturn 'Symbol';\n\t\t}\n\t\treturn ES5.Type(x);\n\t},\n\n\t// https://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] : void 0;\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// https://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// https://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// https://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// https://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// https://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// https://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// https://ecma-international.org/ecma-262/6.0/#sec-getiterator\n\tGetIterator: function GetIterator(obj, method) {\n\t\tif (!hasSymbols) {\n\t\t\tthrow new SyntaxError('ES.GetIterator depends on native iterator support.');\n\t\t}\n\n\t\tvar actualMethod = method;\n\t\tif (arguments.length < 2) {\n\t\t\tactualMethod = this.GetMethod(obj, $Symbol.iterator);\n\t\t}\n\t\tvar iterator = this.Call(actualMethod, obj);\n\t\tif (this.Type(iterator) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator must return an object');\n\t\t}\n\n\t\treturn iterator;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext\n\tIteratorNext: function IteratorNext(iterator, value) {\n\t\tvar result = this.Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);\n\t\tif (this.Type(result) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator next must return an object');\n\t\t}\n\t\treturn result;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete\n\tIteratorComplete: function IteratorComplete(iterResult) {\n\t\tif (this.Type(iterResult) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t\t}\n\t\treturn this.ToBoolean(this.Get(iterResult, 'done'));\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue\n\tIteratorValue: function IteratorValue(iterResult) {\n\t\tif (this.Type(iterResult) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t\t}\n\t\treturn this.Get(iterResult, 'value');\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep\n\tIteratorStep: function IteratorStep(iterator) {\n\t\tvar result = this.IteratorNext(iterator);\n\t\tvar done = this.IteratorComplete(result);\n\t\treturn done === true ? false : result;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose\n\tIteratorClose: function IteratorClose(iterator, completion) {\n\t\tif (this.Type(iterator) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterator) is not Object');\n\t\t}\n\t\tif (!this.IsCallable(completion)) {\n\t\t\tthrow new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');\n\t\t}\n\t\tvar completionThunk = completion;\n\n\t\tvar iteratorReturn = this.GetMethod(iterator, 'return');\n\n\t\tif (typeof iteratorReturn === 'undefined') {\n\t\t\treturn completionThunk();\n\t\t}\n\n\t\tvar completionRecord;\n\t\ttry {\n\t\t\tvar innerResult = this.Call(iteratorReturn, iterator, []);\n\t\t} catch (e) {\n\t\t\t// if we hit here, then \"e\" is the innerResult completion that needs re-throwing\n\n\t\t\t// if the completion is of type \"throw\", this will throw.\n\t\t\tcompletionRecord = completionThunk();\n\t\t\tcompletionThunk = null; // ensure it's not called twice.\n\n\t\t\t// if not, then return the innerResult completion\n\t\t\tthrow e;\n\t\t}\n\t\tcompletionRecord = completionThunk(); // if innerResult worked, then throw if the completion does\n\t\tcompletionThunk = null; // ensure it's not called twice.\n\n\t\tif (this.Type(innerResult) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator .return must return an object');\n\t\t}\n\n\t\treturn completionRecord;\n\t},\n\n\t// https://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// https://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\t// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate\n\tArraySpeciesCreate: function ArraySpeciesCreate(originalArray, length) {\n\t\tif (!this.IsInteger(length) || length < 0) {\n\t\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0');\n\t\t}\n\t\tvar len = length === 0 ? 0 : length;\n\t\tvar C;\n\t\tvar isArray = this.IsArray(originalArray);\n\t\tif (isArray) {\n\t\t\tC = this.Get(originalArray, 'constructor');\n\t\t\t// TODO: figure out how to make a cross-realm normal Array, a same-realm Array\n\t\t\t// if (this.IsConstructor(C)) {\n\t\t\t// \tif C is another realm's Array, C = undefined\n\t\t\t// \tObject.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?\n\t\t\t// }\n\t\t\tif (this.Type(C) === 'Object' && hasSymbols && $Symbol.species) {\n\t\t\t\tC = this.Get(C, $Symbol.species);\n\t\t\t\tif (C === null) {\n\t\t\t\t\tC = void 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (typeof C === 'undefined') {\n\t\t\treturn $Array(len);\n\t\t}\n\t\tif (!this.IsConstructor(C)) {\n\t\t\tthrow new $TypeError('C must be a constructor');\n\t\t}\n\t\treturn new C(len); // this.Construct(C, len);\n\t},\n\n\tCreateDataProperty: function CreateDataProperty(O, P, V) {\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\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\tvar oldDesc = $gOPD(O, P);\n\t\tvar extensible = oldDesc || typeof $isExtensible !== 'function' || $isExtensible(O);\n\t\tvar immutable = oldDesc && (!oldDesc.writable || !oldDesc.configurable);\n\t\tif (immutable || !extensible) {\n\t\t\treturn false;\n\t\t}\n\t\tvar newDesc = {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: V,\n\t\t\twritable: true\n\t\t};\n\t\tObject.defineProperty(O, P, newDesc);\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow\n\tCreateDataPropertyOrThrow: function CreateDataPropertyOrThrow(O, P, V) {\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\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\tvar success = this.CreateDataProperty(O, P, V);\n\t\tif (!success) {\n\t\t\tthrow new $TypeError('unable to create data property');\n\t\t}\n\t\treturn success;\n\t},\n\n\t// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate\n\tObjectCreate: function ObjectCreate(proto, internalSlotsList) {\n\t\tif (proto !== null && this.Type(proto) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: proto must be null or an object');\n\t\t}\n\t\tvar slots = arguments.length < 2 ? [] : internalSlotsList;\n\t\tif (slots.length > 0) {\n\t\t\tthrow new $SyntaxError('es-abstract does not yet support internal slots');\n\t\t}\n\n\t\tif (proto === null && !$ObjectCreate) {\n\t\t\tthrow new $SyntaxError('native Object.create support is required to create null objects');\n\t\t}\n\n\t\treturn $ObjectCreate(proto);\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex\n\tAdvanceStringIndex: function AdvanceStringIndex(S, index, unicode) {\n\t\tif (this.Type(S) !== 'String') {\n\t\t\tthrow new $TypeError('S must be a String');\n\t\t}\n\t\tif (!this.IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {\n\t\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0 and <= 2**53');\n\t\t}\n\t\tif (this.Type(unicode) !== 'Boolean') {\n\t\t\tthrow new $TypeError('Assertion failed: unicode must be a Boolean');\n\t\t}\n\t\tif (!unicode) {\n\t\t\treturn index + 1;\n\t\t}\n\t\tvar length = S.length;\n\t\tif (index + 1 >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t}\n});\n\ndelete ES6.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible\n\nmodule.exports = ES6;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint no-invalid-this: 1 */\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 binder() {\n if (this instanceof bound) {\n var result = target.apply(this, args.concat(slice.call(arguments)));\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(that, args.concat(slice.call(arguments)));\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/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = __webpack_require__(27);\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar hasSymbols = typeof Symbol === 'function' && _typeof(Symbol.iterator) === 'symbol';\n\nvar isPrimitive = __webpack_require__(6);\nvar isCallable = __webpack_require__(3);\nvar isDate = __webpack_require__(28);\nvar isSymbol = __webpack_require__(29);\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\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === 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/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\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 === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr.call(value) === dateClass;\n};\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = __webpack_require__(30)();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (_typeof(value.valueOf()) !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\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\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(global) {\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = __webpack_require__(31);\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') {\n\t\treturn false;\n\t}\n\tif (typeof Symbol !== 'function') {\n\t\treturn false;\n\t}\n\tif (_typeof(origSymbol('foo')) !== 'symbol') {\n\t\treturn false;\n\t}\n\tif (_typeof(Symbol('bar')) !== 'symbol') {\n\t\treturn false;\n\t}\n\n\treturn hasSymbolSham();\n};\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(7)))\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/* eslint complexity: [2, 17], max-statements: [2, 33] */\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') {\n\t\treturn false;\n\t}\n\tif (_typeof(Symbol.iterator) === 'symbol') {\n\t\treturn true;\n\t}\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') {\n\t\treturn false;\n\t}\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') {\n\t\treturn false;\n\t}\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') {\n\t\treturn false;\n\t}\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) {\n\t\treturn false;\n\t} // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) {\n\t\treturn false;\n\t}\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) {\n\t\treturn false;\n\t}\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) {\n\t\treturn false;\n\t}\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) {\n\t\treturn false;\n\t}\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n};\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(2);\nvar has = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\nvar $assign = Object.assign;\n\nmodule.exports = function assign(target, source) {\n\tif ($assign) {\n\t\treturn $assign(target, source);\n\t}\n\n\tfor (var key in source) {\n\t\tif (has(source, key)) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n};\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function isPrimitive(value) {\n\treturn value === null || typeof value !== 'function' && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object';\n};\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar GetIntrinsic = __webpack_require__(8);\n\nvar $Object = GetIntrinsic('%Object%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $String = GetIntrinsic('%String%');\n\nvar $isNaN = __webpack_require__(9);\nvar $isFinite = __webpack_require__(10);\n\nvar sign = __webpack_require__(11);\nvar mod = __webpack_require__(12);\n\nvar IsCallable = __webpack_require__(3);\nvar toPrimitive = __webpack_require__(35);\n\nvar has = __webpack_require__(1);\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 +value; // eslint-disable-line no-implicit-coercion\n\t},\n\tToInteger: function ToInteger(value) {\n\t\tvar number = this.ToNumber(value);\n\t\tif ($isNaN(number)) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (number === 0 || !$isFinite(number)) {\n\t\t\treturn number;\n\t\t}\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)) {\n\t\t\treturn 0;\n\t\t}\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) {\n\t\t\t// 0 === -0, but they are not identical.\n\t\t\tif (x === 0) {\n\t\t\t\treturn 1 / x === 1 / y;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn $isNaN(x) && $isNaN(y);\n\t},\n\n\t// https://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 === 'undefined' ? 'undefined' : _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// https://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) {\n\t\t\t// 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// https://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// https://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// https://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// https://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// https://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/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = __webpack_require__(6);\n\nvar isCallable = __webpack_require__(3);\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function DefaultValue(O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\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// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar has = __webpack_require__(1);\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 === 'undefined' ? 'undefined' : _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/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar define = __webpack_require__(4);\nvar getPolyfill = __webpack_require__(14);\n\nmodule.exports = function shimArrayPrototypeIncludes() {\n\tvar polyfill = getPolyfill();\n\tdefine(Array.prototype, { includes: polyfill }, { includes: function includes() {\n\t\t\treturn Array.prototype.includes !== polyfill;\n\t\t} });\n\treturn polyfill;\n};\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\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; }; /* global __HOT__ */\n/* eslint-disable import/no-unresolved */\n\n// @jsx h\n\nvar _preact = __webpack_require__(0);\n\nvar _featureTests = __webpack_require__(39);\n\nvar _dhUtils = __webpack_require__(40);\n\nvar _errorReporting = __webpack_require__(45);\n\nvar _App = __webpack_require__(47);\n\nvar _App2 = __webpack_require__(15);\n\nvar _dhAnalyticsUtils = __webpack_require__(64);\n\nvar _getContextId = __webpack_require__(65);\n\nvar _provider = __webpack_require__(16);\n\nwindow[_App2.root] = window[_App2.root] || {};\n\nfunction init(mapboxgl) {\n findElements(_App2.root).forEach(function (el) {\n el.id = (0, _dhUtils.createUniqueId)();\n window[_App2.root][el.id] = true;\n\n // Extract values sent from server\n var name = el.getAttribute('data-name');\n var preloadedState = JSON.parse(el.getAttribute('data-preloaded-state'));\n var errorTrackingEnabled = el.getAttribute('data-error-tracking-enabled') === 'true';\n\n // setup error reporting\n var simpleErrorReport = (0, _errorReporting.createErrorReporter)(name, errorTrackingEnabled);\n simpleErrorReport.listenAndCatch();\n\n // Extract metadata required to create google analytics tracker\n var gaPropertyId = el.getAttribute('data-ga-property-id');\n var metadata = JSON.parse(el.getAttribute('data-metadata'));\n var title = metadata.title,\n selfId = metadata.selfId,\n published = metadata.published;\n\n // create google analytics tracker\n\n var googleAnalyticsTracker = (0, _dhAnalyticsUtils.createGoogleAnalyticsTracker)({\n name: 'dh',\n gaPropertyId: gaPropertyId,\n self: {\n id: selfId,\n title: title,\n publishedDate: published ? new Date(published) : null\n },\n context: {\n id: (0, _getContextId.getContextId)(document.location.href)\n }\n });\n\n var sendError = function sendError(message) {\n simpleErrorReport.sendErrorReport({ message: message });\n };\n\n var sendGaEvent = function sendGaEvent(eventObj) {\n googleAnalyticsTracker.sendEvent(_extends({\n category: 'dh-modul-' + name\n }, eventObj));\n };\n\n // Test if the browser is modern enough\n (0, _featureTests.testPositionSticky)(function (supported) {\n if (!supported) {\n simpleErrorReport().sendErrorReport({ message: 'Warning: This browser does not support `position: sticky`' });\n\n return;\n }\n if (!mapboxgl.supported()) {\n simpleErrorReport().sendErrorReport({ message: 'Warning: This browser does not support mapbox-gl' });\n\n return;\n }\n\n // ... and render with the exact same props\n el.className = el.className.replace('noJs', 'js');\n // render(, el, el.firstChild)\n\n (0, _preact.render)((0, _preact.h)(\n _provider.Provider,\n { sendGaEvent: sendGaEvent, sendError: sendError },\n (0, _preact.h)(_App.App, preloadedState)\n ), el, el.firstChild);\n });\n\n // Enable webpack hot-reloading\n if (false) {\n // Reload and re-render preact application\n module.hot.accept('./client', function () {\n var _require = require('./components/App'),\n App = _require.App;\n\n var _require2 = require('../lib/provider'),\n CustomProvider = _require2.Provider;\n\n (0, _preact.render)((0, _preact.h)(\n CustomProvider,\n { sendGaEvent: sendGaEvent, sendError: sendError },\n (0, _preact.h)(App, preloadedState)\n ), el, el.firstChild);\n });\n }\n });\n}\n\nif (false) {\n require('preact/debug');\n}\n\nfunction findElements(className) {\n return (0, _dhUtils.toArray)(document.getElementsByClassName(className)).filter(function (el) {\n return !isInitialized(el, className);\n });\n}\n\nfunction isInitialized(el, className) {\n return el.id && window[className][el.id];\n}\n\nwindow.initJordenRundtSeksSteg = init;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar hasSupportCache = void 0;\n\nfunction testEventPassiveListener(callback) {\n if (hasSupportCache !== undefined) {\n callback(hasSupportCache);\n return;\n }\n\n hasSupportCache = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n hasSupportCache = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n callback(hasSupportCache);\n}\n\nfunction testJs(callback) {\n callback(true);\n}\n\nfunction testJs$1(callback) {\n var el = document.createElement('img');\n\n callback(el.style.objectFit !== undefined);\n}\n\nfunction testPositionSticky(callback) {\n var el = document.createElement('a');\n\n el.style.cssText = 'position: sticky; position: -webkit-sticky; position: -ms-sticky;';\n\n callback(el.style.position.indexOf('sticky') !== -1);\n}\n\nvar videoAutoPlayCache = null;\n\nfunction testVideoAutoPlay(callback) {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (videoAutoPlayCache !== null) {\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 var playPromise = videoElm.play();\n\n if (playPromise) {\n playPromise.catch(function (e) {\n // Do nothing\n });\n }\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n}\n\nfunction testReducedMotion(callback) {\n if (typeof window === 'undefined') {\n if (callback) {\n callback(false);\n }\n return false;\n }\n\n var test = !!window.matchMedia && window.matchMedia('(prefers-reduced-motion)').matches;\n if (callback) {\n callback(test);\n }\n return test;\n}\n\nvar index = {\n testEventPassiveListener: testEventPassiveListener,\n testJs: testJs,\n testObjectFit: testJs$1,\n testPositionSticky: testPositionSticky,\n testVideoAutoPlay: testVideoAutoPlay,\n testReducedMotion: testReducedMotion\n};\n\nexports.default = index;\nexports.testEventPassiveListener = testEventPassiveListener;\nexports.testJs = testJs;\nexports.testObjectFit = testJs$1;\nexports.testPositionSticky = testPositionSticky;\nexports.testVideoAutoPlay = testVideoAutoPlay;\nexports.testReducedMotion = testReducedMotion;\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.toArray = exports.getScrollTop = exports.getScrollLeft = exports.createUniqueId = exports.bem = undefined;\n\nvar _array = __webpack_require__(41);\n\nvar _bem = __webpack_require__(42);\n\nvar _bem2 = _interopRequireDefault(_bem);\n\nvar _scroll = __webpack_require__(43);\n\nvar _string = __webpack_require__(44);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.bem = _bem2.default;\nexports.createUniqueId = _string.createUniqueId;\nexports.getScrollLeft = _scroll.getScrollLeft;\nexports.getScrollTop = _scroll.getScrollTop;\nexports.toArray = _array.toArray;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = toArray;\nfunction toArray(nodeList) {\n return [].slice.call(nodeList);\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});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nfunction _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\nfunction toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexports.default = function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return (typeof modifier === 'undefined' ? 'undefined' : _typeof(modifier)) === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\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.getScrollLeft = getScrollLeft;\nexports.getScrollTop = getScrollTop;\nfunction getScrollLeft() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || 0;\n}\n\nfunction getScrollTop() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || 0;\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.createUniqueId = createUniqueId;\nfunction createUniqueId() {\n var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return '' + prefix + Math.random().toString(36).substr(2, len - prefix.length);\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.createErrorReporter = createErrorReporter;\n\nvar _dhSimpleErrorReport = __webpack_require__(46);\n\nfunction createErrorReporter(name, isErrorReportingEnabled) {\n return new _dhSimpleErrorReport.SimpleErrorReport({\n name: name,\n url: 'https://dh.nrk.no/catch',\n dryRun: !isErrorReportingEnabled\n });\n}\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (e, n) {\n \"object\" == ( false ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? n(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (n),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : n(e[\"simple-error-report\"] = {});\n}(undefined, function (e) {\n \"use strict\";\n var n = function () {\n function e(e, n) {\n for (var r = 0; r < n.length; r++) {\n var t = n[r];t.enumerable = t.enumerable || !1, t.configurable = !0, \"value\" in t && (t.writable = !0), Object.defineProperty(e, t.key, t);\n }\n }return function (n, r, t) {\n return r && e(n.prototype, r), t && e(n, t), n;\n };\n }();var r = function () {\n function e() {\n !function (e, n) {\n if (!(e instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.register = [];\n }return n(e, [{ key: \"addErrorToRegister\", value: function value(e) {\n this.register.push({ time: new Date(), message: e });\n } }, { key: \"isInRegisterWithinRange\", value: function value(e, n) {\n return this.register.filter(function (r) {\n return r.message === e && new Date() - r.time < n;\n }).length > 0;\n } }]), e;\n }(),\n t = Object.assign || function (e) {\n for (var n = 1; n < arguments.length; n++) {\n var r = arguments[n];for (var t in r) {\n Object.prototype.hasOwnProperty.call(r, t) && (e[t] = r[t]);\n }\n }return e;\n },\n i = function () {\n function e(e, n) {\n for (var r = 0; r < n.length; r++) {\n var t = n[r];t.enumerable = t.enumerable || !1, t.configurable = !0, \"value\" in t && (t.writable = !0), Object.defineProperty(e, t.key, t);\n }\n }return function (n, r, t) {\n return r && e(n.prototype, r), t && e(n, t), n;\n };\n }();var o = [],\n s = function () {\n function e(n) {\n var t = n.name,\n i = n.url,\n s = n.dryRun,\n a = void 0 === s || s,\n u = n.parseStack;!function (e, n) {\n if (!(e instanceof n)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.name = t, this.url = i, this.errorRegister = new r(), this.dryRun = a, u && (this.parseStack = u), o.push(this.name);\n }return i(e, [{ key: \"listenAndCatch\", value: function value() {\n var e = this;o.length <= 1 && (window.addEventListener(\"error\", function (n) {\n var r = n.message,\n i = n.filename,\n o = n.lineno,\n s = n.colno,\n a = { message: r };\"\" !== i && (a.url = i), o > 0 && (a.line = o), s > 0 && (a.column = s), n.error && \"function\" == typeof e.parseStack ? e.parseStack(n.error).then(function (n) {\n e.sendErrorReport(t({}, a, { stackTrace: n }));\n }) : e.sendErrorReport(a);\n }), window.addEventListener(\"unhandledrejection\", function (n) {\n e.sendErrorReport({ message: \"Unhandled Promise Rejection: \" + n.reason });\n }));\n } }, { key: \"sendErrorReport\", value: function value(e) {\n var n, r, t;this.dryRun ? \"undefined\" != typeof console && console.log(\"Dry run: \" + JSON.stringify(e)) : this.errorRegister.isInRegisterWithinRange(e.message, 500) || (this.errorRegister.addErrorToRegister(e.message), n = this.url + \"/\" + this.name, r = e, (t = new XMLHttpRequest()).open(\"POST\", n), t.setRequestHeader(\"Content-Type\", \"application/json\"), t.send(JSON.stringify(r)));\n } }]), e;\n }();e.SimpleErrorReport = s, Object.defineProperty(e, \"__esModule\", { value: !0 });\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.App = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(0);\n\nvar _App2 = __webpack_require__(15);\n\nvar _App3 = _interopRequireDefault(_App2);\n\nvar _provider = __webpack_require__(16);\n\nvar _bem = __webpack_require__(48);\n\nvar _MaxViewportRect = __webpack_require__(49);\n\nvar _MaxViewportRect2 = _interopRequireDefault(_MaxViewportRect);\n\nvar _Background = __webpack_require__(51);\n\nvar _chapters = __webpack_require__(59);\n\nvar _array = __webpack_require__(60);\n\nvar _PolopolyPicture = __webpack_require__(61);\n\nvar _PolopolyPicture2 = _interopRequireDefault(_PolopolyPicture);\n\nvar _googleAnalytic = __webpack_require__(63);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/** @jsx h */\n\n/* eslint-disable compat/compat */\n\n// import PolopolyPicture from './PolopolyPicture'\n\n\n// import type { Chapter } from './chapters'\n\nvar trackingName = 'dh-innafor-voldsepisoder-bergen';\n\nvar _App = function (_Component) {\n _inherits(_App, _Component);\n\n /* Example of how to send a click event to google analytics\n handleClick = () => {\n this.props.sendGaEvent({\n action: 'click'\n })\n }\n */\n\n function _App() {\n _classCallCheck(this, _App);\n\n var _this = _possibleConstructorReturn(this, (_App.__proto__ || Object.getPrototypeOf(_App)).call(this));\n\n _this.handleViewportChange = function (viewport) {\n if (_this.state.viewportHeight !== viewport.height) {\n _this.setState({ viewportHeight: viewport.height });\n }\n };\n\n _this.state = {\n visible: false,\n index: -1,\n trackedInitial: false,\n viewportHeight: null\n };\n var chapters = (0, _chapters.createChapters)();\n _this.sectionElements = (0, _array.toArray)(new Array(chapters.length));\n _this.triggerElements = (0, _array.toArray)(new Array(chapters.length));\n return _this;\n }\n\n _createClass(_App, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n this.insersectionObserver = new IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (entry.target === _this2.elm) {\n _this2.setVisiblity(entry.isIntersecting);\n } else if (entry.isIntersecting) {\n _this2.setIndex(_this2.triggerElements.indexOf(entry.target));\n }\n });\n }, {\n rootMargin: '-10px -10px -10px -10px',\n threshold: [0]\n });\n\n this.triggerElements.forEach(function (triggerElm) {\n return _this2.insersectionObserver.observe(triggerElm);\n });\n this.insersectionObserver.observe(this.elm);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var _this3 = this;\n\n this.triggerElements.forEach(function (triggerElm) {\n return _this3.insersectionObserver.unobserve(triggerElm);\n });\n this.insersectionObserver.unobserve(this.elm);\n this.insersectionObserver.disconnect();\n }\n }, {\n key: 'setIndex',\n value: function setIndex(index) {\n if (this.state.index !== index) {\n this.setState({ index: index });\n }\n }\n }, {\n key: 'setVisiblity',\n value: function setVisiblity(visible) {\n if (!this.state.trackedInitial && visible) {\n (0, _googleAnalytic.trackAction)(visible ? 'SCROLL_IN' : 'SCROLL_OUT', trackingName);\n (0, _googleAnalytic.trackAction)('LOAD_SUCCESS/index:' + this.state.index, trackingName);\n this.setState({ visible: visible, trackedInitial: true });\n } else if (this.state.visible !== visible) {\n (0, _googleAnalytic.trackAction)(visible ? 'SCROLL_IN' : 'SCROLL_OUT', trackingName);\n this.setState({ visible: visible });\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _state = this.state,\n visible = _state.visible,\n viewportHeight = _state.viewportHeight;\n\n var chapters = (0, _chapters.createChapters)();\n\n var mediaContainerInlineStyle = {};\n if (viewportHeight !== null) {\n mediaContainerInlineStyle.height = viewportHeight + 'px';\n }\n\n var textSectionInlineStyle = {};\n if (viewportHeight !== null) {\n textSectionInlineStyle.paddingBottom = 'calc(' + viewportHeight + 'px - 20px)';\n }\n return (0, _preact.h)(\n 'div',\n { className: (0, _bem.bem)(_App3.default.app, visible && 'visible'), ref: function ref(elm) {\n return _this4.elm = elm;\n } },\n (0, _preact.h)(_MaxViewportRect2.default, { height: '100', onViewportChange: this.handleViewportChange }),\n (0, _preact.h)(\n 'div',\n { className: _App3.default.app__mediaContainer, style: mediaContainerInlineStyle },\n (0, _preact.h)(_Background.Background, { chapters: chapters, chapterIndex: this.state.index, ref: function ref(elm) {\n _this4.background = elm;\n } }),\n chapters.map(function (chapter, idx) {\n return (0, _preact.h)(\n 'div',\n { key: idx, className: _App3.default.app__mediaFallback },\n (0, _preact.h)(_PolopolyPicture2.default, { imageId: chapter.fallbackPicture })\n );\n })\n ),\n (0, _preact.h)(\n 'div',\n { className: _App3.default.app__itemContainer },\n chapters.map(function (section, idx) {\n return (0, _preact.h)(\n 'section',\n {\n key: idx,\n className: _App3.default.textSection,\n style: textSectionInlineStyle,\n ref: function ref(elm) {\n _this4.sectionElements[idx] = elm;\n } },\n (0, _preact.h)(\n 'div',\n { className: (0, _bem.bem)(_App3.default.textSection__card, section.textAlign),\n ref: function ref(elm) {\n _this4.triggerElements[idx] = elm;\n } },\n section.title && (0, _preact.h)(\n 'h2',\n null,\n section.title\n ),\n section.text && (0, _preact.h)('p', { dangerouslySetInnerHTML: { __html: section.text } }),\n section.link && section.link.url && (0, _preact.h)(\n 'p',\n null,\n (0, _preact.h)(\n 'a',\n { href: section.link.url },\n section.link.text\n ),\n '\\xA0',\n (0, _preact.h)(\n 'svg',\n { style: { width: '1.5em', height: '1em', verticalAlign: 'middle' }, 'aria-hidden': 'true' },\n (0, _preact.h)('use', { xlinkHref: '#nrk-arrow-right' })\n )\n )\n )\n );\n })\n )\n );\n }\n }]);\n\n return _App;\n}(_preact.Component);\n\n/*\nconst mapContextToProps = context => ({\n ...context,\n sendCustomGaEvent: () => context.sendEvent({ action: 'my custom event action' })\n})\n*/\n\nvar connector = (0, _provider.connect)();\n// const connector = connect(mapContextToProps)\nvar App = exports.App = connector(_App);\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.bem = bem;\nfunction bem(blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n return [blockName].concat(modifiers.filter(Boolean).map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\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});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _maxViewportObservable = __webpack_require__(50);\n\nvar _maxViewportObservable2 = _interopRequireDefault(_maxViewportObservable);\n\nvar _preact = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/** @jsx h */\n\nvar MaxViewportRect = function (_Component) {\n _inherits(MaxViewportRect, _Component);\n\n function MaxViewportRect() {\n _classCallCheck(this, MaxViewportRect);\n\n return _possibleConstructorReturn(this, (MaxViewportRect.__proto__ || Object.getPrototypeOf(MaxViewportRect)).apply(this, arguments));\n }\n\n _createClass(MaxViewportRect, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this;\n\n this.viewport$ = _maxViewportObservable2.default.create({\n root: this.elm\n });\n\n this.dispose = this.viewport$.subscribe({\n next: function next(viewport) {\n _this2.props.onViewportChange(viewport);\n }\n });\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.dispose();\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n var height = this.props.height || 100;\n var inlineStyle = { height: height + 'vh', position: 'absolute' };\n return (0, _preact.h)('div', { ref: function ref(elm) {\n return _this3.elm = elm;\n }, style: inlineStyle });\n }\n }]);\n\n return MaxViewportRect;\n}(_preact.Component);\n\nexports.default = MaxViewportRect;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction create() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var root = opts.root;\n\n var getRect = function getRect() {\n if (root instanceof Element) {\n var rect = root.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height\n };\n }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n };\n\n var subscribe = function subscribe(observer) {\n var isDynamicViewport = false;\n var isTouching = false;\n var rect = { width: -1, height: -1 };\n\n var listeners = {\n orientationchange: function orientationchange() {\n rect = { width: -1, height: -1 };\n },\n resize: function resize() {\n var prevRect = rect;\n\n rect = getRect();\n\n if (isDynamicViewport && rect.height < prevRect.height) {\n rect.height = prevRect.height;\n }\n\n observer.next(rect);\n },\n scroll: function scroll() {\n if (isTouching) {\n isDynamicViewport = true;\n window.removeEventListener('scroll', listeners.scroll);\n }\n },\n touchstart: function touchstart() {\n isTouching = true;\n },\n touchend: function touchend() {\n isTouching = false;\n }\n };\n\n window.addEventListener('orientationchange', listeners.orientationchange);\n window.addEventListener('resize', listeners.resize);\n window.addEventListener('scroll', listeners.scroll);\n window.addEventListener('touchstart', listeners.touchstart);\n window.addEventListener('touchend', listeners.touchend);\n\n // Trigger initial \"resize\"\n listeners.resize();\n\n return {\n unsubscribe: function unsubscribe() {\n window.removeEventListener('orientationchange', listeners.orientationchange);\n window.removeEventListener('resize', listeners.resize);\n window.removeEventListener('scroll', listeners.scroll);\n window.removeEventListener('touchstart', listeners.touchstart);\n window.removeEventListener('touchend', listeners.touchend);\n }\n };\n };\n\n return { subscribe: subscribe };\n}\n\nvar index = { create: create };\n\nexports.create = create;\nexports.default = index;\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.Background = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(0);\n\nvar _Background = __webpack_require__(52);\n\nvar _Background2 = _interopRequireDefault(_Background);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n/** @jsx h */\n\n\nvar Background = exports.Background = function (_Component) {\n _inherits(Background, _Component);\n\n function Background() {\n _classCallCheck(this, Background);\n\n return _possibleConstructorReturn(this, (Background.__proto__ || Object.getPrototypeOf(Background)).apply(this, arguments));\n }\n\n _createClass(Background, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var Map = __webpack_require__(53).default;\n var mapboxChapters = this.props.chapters.map(function (chapter) {\n return chapter.mapbox;\n });\n this.map = new Map(this.mapElement, mapboxChapters);\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n // eslint-disable-line\n if (Number.isInteger(nextProps.chapterIndex) && nextProps.chapterIndex >= 0) {\n this.map.setActiveChapter(nextProps.chapterIndex);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n return (0, _preact.h)(\n 'div',\n { className: _Background2.default.background },\n (0, _preact.h)('div', { ref: function ref(elm) {\n return _this2.mapElement = elm;\n }, className: _Background2.default.map })\n );\n }\n }]);\n\n return Background;\n}(_preact.Component);\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"background\":\"dh-innafor-voldsepisoder-bergen-background\",\"root--noJs\":\"dh-innafor-voldsepisoder-bergen-root--noJs\",\"root--js\":\"dh-innafor-voldsepisoder-bergen-root--js\",\"app--visible\":\"dh-innafor-voldsepisoder-bergen-app--visible\",\"media--active\":\"dh-innafor-voldsepisoder-bergen-media--active\",\"map\":\"dh-innafor-voldsepisoder-bergen-map\"};\n\n/***/ }),\n/* 53 */\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 _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n/* eslint-disable import/no-unresolved */\n\n\n__webpack_require__(54);\n\nvar _mapboxgl = __webpack_require__(55);\n\nvar _mapboxgl2 = _interopRequireDefault(_mapboxgl);\n\nvar _greatCircle = __webpack_require__(56);\n\nvar _greatCircle2 = _interopRequireDefault(_greatCircle);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n// import '../../../static/back-pattern.png'\n\nvar Map = function () {\n function Map(mapEl, chapters) {\n var _this = this;\n\n _classCallCheck(this, Map);\n\n this.mapReady = false;\n this.addedPoints = [];\n this.startTime = 0;\n this.progress = 0;\n this.framesPerSecond = 15;\n this.initialOpacity = 1;\n this.opacity = this.initialOpacity;\n this.initialRadius = 12;\n this.radius = this.initialRadius;\n this.maxRadius = 25;\n this.firstSymbolId = null;\n this.activeIndex = 0;\n this.chapters = chapters;\n this.lineNames = [];\n this.animatedLineNames = [];\n this.polygonNames = [];\n this.multiPolygonNames = [];\n this.labelNames = [];\n this.mapEl = mapEl;\n this.animationLine = {\n 'type': 'Feature',\n 'geometry': {\n 'type': 'LineString',\n 'coordinates': []\n }\n };\n this.animationProgress = 0;\n this.currentLine = null;\n this.currentLineId = null;\n this.lineGeometries = [];\n // this.adaptChapterConfigBounds(this.chapters[0])\n\n _mapboxgl2.default.accessToken = 'pk.eyJ1IjoibnJrIiwiYSI6Ii14T3NfSzgifQ.0N5h3SI2b6bemxP_1YESIA';\n this.map = new _mapboxgl2.default.Map(_extends({}, this.chapters[this.activeIndex], {\n container: mapEl,\n // style: 'mapbox://styles/nrk/cjda0mdyv8mwk2spdhnfk8upp',\n // style: 'mapbox://styles/nrk/cj07whxya001b2rr3t3qn875e',\n // style: 'mapbox://styles/nrk/cjd5nkoti4kph2spd13z34tmd', // BLå\n // style: 'mapbox://styles/nrk/cizjr6t96006v2smn4qp3l430', // NRK blue with satellite shading\n // style: 'mapbox://styles/nrk/cj07whxya001b2rr3t3qn875e', // Flybilder\n style: 'mapbox://styles/nrk/cjoicstuv10bd2ss5maaqzoaw', // Innafor - flybilder\n interactive: false,\n renderWorldCopies: false,\n attributionControl: false\n\n }));\n\n this.map.on('load', function () {\n _this.map.addLayer({\n id: 'raster-layer',\n type: 'raster',\n source: {\n type: 'raster',\n tiles: ['https://api.mapbox.com/v4/nrk.6gen9l2a/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibnJrIiwiYSI6Ii14T3NfSzgifQ.0N5h3SI2b6bemxP_1YESIA']\n },\n minzoom: 12,\n maxzoom: 22\n });\n // const layers = this.map.getStyle().layers\n // Find the index of the first symbol layer in the map style\n _this.firstSymbolId = 2; // layers.find(layer => layer.type === 'symbol').id\n // this.map.addControl(new mapboxgl.ScaleControl())\n _this.animateMarker(0);\n _this.mapReady = true;\n _this.setActiveChapter(_this.activeIndex, 0);\n // this.animationLoop(0)\n });\n }\n\n _createClass(Map, [{\n key: 'adaptChapterConfigBounds',\n value: function adaptChapterConfigBounds(chapterConfig) {\n var camera = this.map.cameraForBounds(chapterConfig.bounds);\n chapterConfig.zoom = camera.zoom;\n chapterConfig.center = [camera.center.lng, camera.center.lat];\n }\n }, {\n key: 'addChapter',\n value: function addChapter(chapter) {\n var _this2 = this;\n\n if (chapter.point) {\n for (var i = 0; i < this.addedPoints.length; i++) {\n if (this.map.getLayer(this.addedPoints[i]) !== undefined) {\n this.map.setPaintProperty(this.addedPoints[i], 'circle-opacity', 0);\n }\n }\n this.addPoint(chapter.point, chapter.id);\n }\n\n if (chapter.line) {\n this.addLine(chapter.line, chapter.id);\n }\n\n if (chapter.greatCircle) {\n this.addGreatCircle(chapter.greatCircle, chapter.mapColor, chapter.id);\n } else {\n this.currentLineId = null;\n }\n\n if (chapter.polygon) {\n this.addPolygon(chapter.polygon, chapter.mapColor, chapter.id);\n }\n\n if (chapter.multiPolygon) {\n this.addMultiPolygon(chapter.multiPolygon, chapter.mapColor, chapter.id);\n }\n\n if (chapter.label) {\n this.addLabel(chapter.label, chapter.id);\n }\n\n if (chapter.labels) {\n chapter.labels.forEach(function (label, idx) {\n _this2.addLabel(label, chapter.id + '_' + idx);\n });\n }\n }\n }, {\n key: 'removeChapter',\n value: function removeChapter(chapter) {\n if (chapter.point) {\n this.removePoint(chapter.id);\n }\n\n if (chapter.line) {\n this.removeLine(chapter.id);\n }\n\n if (chapter.greatCircle) {\n this.removeGreatCircle(chapter.id);\n }\n }\n }, {\n key: 'fadeOutChapter',\n value: function fadeOutChapter(chapter) {\n if (chapter.polygon) {\n var polygonId = 'polygon-' + chapter.id;\n if (this.map.getLayer(polygonId) !== undefined) {\n this.map.setPaintProperty(polygonId, 'fill-opacity', 0.5);\n }\n }\n if (chapter.multiPolygon) {\n var multiPolygonId = 'multiPolygon-' + chapter.id;\n if (this.map.getLayer(multiPolygonId) !== undefined) {\n this.map.setPaintProperty(multiPolygonId, 'fill-opacity', 0.5);\n }\n }\n }\n }, {\n key: 'fadeInChapter',\n value: function fadeInChapter(chapter) {\n if (chapter.polygon) {\n var polygonId = 'polygon-' + chapter.id;\n if (this.map.getLayer(polygonId) !== undefined) {\n this.map.setPaintProperty(polygonId, 'fill-opacity', 1);\n }\n }\n if (chapter.multiPolygon) {\n var multiPolygonId = 'multiPolygon-' + chapter.id;\n if (this.map.getLayer(multiPolygonId) !== undefined) {\n this.map.setPaintProperty(multiPolygonId, 'fill-opacity', 1);\n }\n }\n }\n }, {\n key: 'setActiveChapter',\n value: function setActiveChapter(chapterIndex, duration) {\n var _this3 = this;\n\n this.activeIndex = chapterIndex;\n if (!this.mapReady) {\n return;\n }\n\n this.chapters.forEach(function (chapter, idx) {\n if (idx < chapterIndex) {\n _this3.addChapter(chapter);\n _this3.fadeOutChapter(chapter);\n } else if (idx === chapterIndex) {\n _this3.addChapter(chapter);\n _this3.fadeInChapter(chapter);\n } else {\n _this3.removeChapter(chapter);\n _this3.fadeOutChapter(chapter);\n }\n });\n\n var activeChapter = this.chapters[chapterIndex];\n if (activeChapter.bounds) {\n this.adaptChapterConfigBounds(activeChapter);\n }\n\n if (duration === 0) {\n this.map.jumpTo(activeChapter);\n } else {\n var data = (activeChapter.polygon || {}).data || (activeChapter.multiPolygon || {}).data;\n if (data && data.bbox) {\n this.map.fitBounds(data.bbox, {\n padding: 20,\n animate: true,\n duration: 2000\n });\n } else {\n this.map.flyTo(activeChapter);\n }\n }\n\n for (var i = 0; i < this.animatedLineNames.length; i++) {\n if (this.animatedLineNames[i] !== this.currentLineId) {\n this.map.getSource(this.animatedLineNames[i]).setData(this.lineGeometries[i]);\n }\n }\n }\n }, {\n key: 'animateMarker',\n value: function animateMarker(timestamp) {\n var _this4 = this;\n\n setTimeout(function () {\n requestAnimationFrame(_this4.animateMarker.bind(_this4));\n var opacity = _this4.map.getZoom() + 1 - 15;\n if (opacity < 0) {\n opacity = 0;\n } else if (opacity > 1) {\n opacity = 1;\n }\n\n _this4.map.setPaintProperty('raster-layer', 'raster-opacity', opacity);\n\n _this4.radius += (_this4.maxRadius - _this4.radius) / _this4.framesPerSecond;\n _this4.opacity -= 0.9 / _this4.framesPerSecond;\n\n if (_this4.opacity <= 0) {\n _this4.radius = _this4.initialRadius;\n _this4.opacity = _this4.initialOpacity;\n }\n\n if (_this4.activeIndex === 7) {\n for (var i = 0; i < _this4.addedPoints.length; i++) {\n if (_this4.map.getLayer(_this4.addedPoints[i]) !== undefined) {\n _this4.map.setPaintProperty(_this4.addedPoints[i], 'circle-radius', _this4.radius);\n _this4.map.setPaintProperty(_this4.addedPoints[i], 'circle-opacity', _this4.opacity);\n }\n }\n } else {\n var currentPointName = 'point-' + _this4.chapters[_this4.activeIndex].id;\n if (_this4.map.getLayer(currentPointName) !== undefined) {\n _this4.map.setPaintProperty(currentPointName, 'circle-radius', _this4.radius);\n _this4.map.setPaintProperty(currentPointName, 'circle-opacity', _this4.opacity);\n }\n }\n\n if (_this4.currentLine != null && _this4.currentLineId != null && _this4.animationProgress < _this4.currentLine.geometry.coordinates.length) {\n _this4.animationLine.geometry.coordinates.push(_this4.currentLine.geometry.coordinates[_this4.animationProgress]);\n _this4.map.getSource(_this4.currentLineId).setData(_this4.animationLine);\n _this4.animationProgress++;\n }\n }, 1000 / this.framesPerSecond);\n }\n }, {\n key: 'toPaint',\n value: function toPaint(mapColor) {\n switch (mapColor) {\n case 'dark':\n return {\n 'fill-color': '#2f0101',\n 'fill-opacity': 0.9,\n 'fill-outline-color': '#2f0101'\n };\n case 'pattern':\n return {\n 'fill-pattern': 'tiny-checkers',\n 'fill-outline-color': '#2f0101'\n };\n default:\n return {\n 'fill-color': '#E1192A',\n 'fill-opacity': 0.9,\n 'fill-outline-color': '#2f0101'\n };\n }\n }\n }, {\n key: 'addLabel',\n value: function addLabel(label, id) {\n var labelId = 'label-' + id;\n if (this.labelNames.indexOf(labelId) === -1) {\n this.map.addLayer({\n 'id': labelId,\n 'type': 'symbol',\n 'source': {\n 'type': 'geojson',\n 'data': label.data\n },\n 'layout': {\n 'symbol-placement': 'point',\n 'text-font': ['Open Sans Regular'],\n 'text-field': label.data.properties.name,\n 'text-size': 18\n },\n 'paint': {\n 'text-color': '#111',\n 'text-halo-color': '#fff',\n 'text-halo-width': 1\n }\n }, this.firstSymbolId);\n this.labelNames.push(labelId);\n }\n }\n }, {\n key: 'addLine',\n value: function addLine(line, id) {\n var lineId = 'line-' + id;\n if (this.lineNames.indexOf(lineId) === -1) {\n this.map.addLayer({\n 'id': lineId,\n 'type': 'line',\n 'source': {\n 'type': 'geojson',\n 'data': line.data\n },\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#bb1414',\n 'line-width': 5,\n 'line-opacity': 0.6\n }\n }, this.firstSymbolId);\n\n this.lineNames.push(lineId);\n }\n }\n }, {\n key: 'addPolygon',\n value: function addPolygon(polygon, mapColor, id) {\n var polygonId = 'polygon-' + id;\n if (this.polygonNames.indexOf(polygonId) === -1) {\n this.map.addLayer({\n 'id': polygonId,\n 'type': 'fill',\n 'source': {\n 'type': 'geojson',\n 'data': polygon.data\n },\n 'paint': this.toPaint(mapColor),\n 'layout': {}\n }, this.firstSymbolId);\n this.polygonNames.push(polygonId);\n }\n }\n }, {\n key: 'addMultiPolygon',\n value: function addMultiPolygon(multiPolygon, mapColor, id) {\n var multiPolygonId = 'multiPolygon-' + id;\n if (this.multiPolygonNames.indexOf(multiPolygonId) === -1) {\n this.map.addLayer({\n 'id': multiPolygonId,\n 'type': 'fill',\n 'source': {\n 'type': 'geojson',\n 'data': multiPolygon.data\n },\n 'paint': this.toPaint(mapColor),\n 'layout': {}\n }, this.firstSymbolId);\n this.multiPolygonNames.push(multiPolygonId);\n }\n }\n }, {\n key: 'addPoint',\n value: function addPoint(point, id) {\n var pointId = 'point-' + id;\n if (this.addedPoints.indexOf(pointId) === -1) {\n this.map.addSource(pointId, {\n 'type': 'geojson',\n 'data': {\n 'type': 'Point',\n 'coordinates': [point.lon, point.lat]\n }\n });\n\n this.map.addLayer({\n 'id': pointId,\n 'source': pointId,\n 'type': 'circle',\n 'paint': {\n 'circle-radius': this.initialRadius,\n 'circle-radius-transition': { duration: 0 },\n 'circle-opacity-transition': { duration: 0 },\n 'circle-color': '#dd0000'\n }\n });\n\n this.map.addLayer({\n 'id': pointId + '_base',\n 'source': pointId,\n 'type': 'circle',\n 'paint': {\n 'circle-radius': 10,\n 'circle-color': '#aa0000',\n 'circle-opacity': 0.7\n }\n });\n\n this.addedPoints.push(pointId);\n }\n }\n }, {\n key: 'removeLine',\n value: function removeLine(id) {\n var lineId = 'line-' + id;\n if (this.map.getLayer(lineId) !== undefined) {\n this.map.removeLayer(lineId);\n this.map.removeSource(lineId);\n\n this.lineNames.splice(this.lineNames.indexOf(lineId), 1);\n }\n }\n }, {\n key: 'removePoint',\n value: function removePoint(id) {\n var pointId = 'point-' + id;\n if (this.map.getLayer(pointId) !== undefined) {\n this.map.removeLayer(pointId);\n this.map.removeLayer(pointId + '_base');\n this.map.removeSource(pointId);\n\n this.addedPoints.splice(this.addedPoints.indexOf(pointId), 1);\n }\n }\n }, {\n key: 'addGreatCircle',\n value: function addGreatCircle(startStop, mapColor, id) {\n // const start = turf.point([-122, 48])\n // const end = turf.point([-77, 39])\n\n this.animationLine.geometry.coordinates = [];\n this.animationProgress = 0;\n this.currentLine = (0, _greatCircle2.default)(startStop.start, startStop.stop, { 'name': 'Oslo til New York' });\n\n var lineId = 'line-' + id;\n this.currentLineId = lineId;\n if (this.animatedLineNames.indexOf(lineId) === -1) {\n this.lineGeometries.push(this.currentLine);\n\n this.map.addLayer({\n 'id': lineId,\n 'type': 'line',\n 'source': {\n 'type': 'geojson',\n 'data': this.animationLine\n },\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#bb1414',\n 'line-width': 5,\n 'line-opacity': 0.6,\n 'line-dasharray': [2, 2]\n }\n }, this.firstSymbolId);\n\n this.animatedLineNames.push(lineId);\n }\n }\n }, {\n key: 'removeGreatCircle',\n value: function removeGreatCircle(id) {\n var lineId = 'line-' + id;\n if (this.map.getLayer(lineId) !== undefined) {\n this.map.removeLayer(lineId);\n // this.map.removeLayer(lineId + '_base')\n this.map.removeSource(lineId);\n\n var index = this.animatedLineNames.indexOf(lineId);\n this.animatedLineNames.splice(index, 1);\n this.lineGeometries.splice(index, 1);\n }\n }\n }]);\n\n return Map;\n}();\n\nexports.default = Map;\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\nmodule.exports = {\"map\":\"dh-innafor-voldsepisoder-bergen-map\"};\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\nmodule.exports = mapboxgl;\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _invariant = __webpack_require__(57);\n\nvar D2R = Math.PI / 180;\nvar R2D = 180 / Math.PI;\n\nvar Coord = function Coord(lon, lat) {\n this.lon = lon;\n this.lat = lat;\n this.x = D2R * lon;\n this.y = D2R * lat;\n};\n\nCoord.prototype.view = function () {\n return String(this.lon).slice(0, 4) + ',' + String(this.lat).slice(0, 4);\n};\n\nCoord.prototype.antipode = function () {\n var anti_lat = -1 * this.lat;\n var anti_lon = this.lon < 0 ? 180 + this.lon : (180 - this.lon) * -1;\n return new Coord(anti_lon, anti_lat);\n};\n\nvar LineString = function LineString() {\n this.coords = [];\n this.length = 0;\n};\n\nLineString.prototype.move_to = function (coord) {\n this.length++;\n this.coords.push(coord);\n};\n\nvar Arc = function Arc(properties) {\n this.properties = properties || {};\n this.geometries = [];\n};\n\nArc.prototype.json = function () {\n if (this.geometries.length <= 0) {\n return { 'geometry': { 'type': 'LineString', 'coordinates': null },\n 'type': 'Feature', 'properties': this.properties\n };\n } else if (this.geometries.length === 1) {\n return { 'geometry': { 'type': 'LineString', 'coordinates': this.geometries[0].coords },\n 'type': 'Feature', 'properties': this.properties\n };\n } else {\n var multiline = [];\n for (var i = 0; i < this.geometries.length; i++) {\n multiline.push(this.geometries[i].coords);\n }\n return { 'geometry': { 'type': 'MultiLineString', 'coordinates': multiline },\n 'type': 'Feature', 'properties': this.properties\n };\n }\n};\n\n// TODO - output proper multilinestring\nArc.prototype.wkt = function () {\n var wkt_string = '';\n var wkt = 'LINESTRING(';\n var collect = function collect(c) {\n wkt += c[0] + ' ' + c[1] + ',';\n };\n for (var i = 0; i < this.geometries.length; i++) {\n if (this.geometries[i].coords.length === 0) {\n return 'LINESTRING(empty)';\n } else {\n var coords = this.geometries[i].coords;\n coords.forEach(collect);\n wkt_string += wkt.substring(0, wkt.length - 1) + ')';\n }\n }\n return wkt_string;\n};\n\n/*\n * http://en.wikipedia.org/wiki/Great-circle_distance\n *\n */\nvar GreatCircle = function GreatCircle(start, end, properties) {\n if (!start || start.x === undefined || start.y === undefined) {\n throw new Error('GreatCircle constructor expects two args: start and end objects with x and y properties');\n }\n if (!end || end.x === undefined || end.y === undefined) {\n throw new Error('GreatCircle constructor expects two args: start and end objects with x and y properties');\n }\n this.start = new Coord(start.x, start.y);\n this.end = new Coord(end.x, end.y);\n this.properties = properties || {};\n\n var w = this.start.x - this.end.x;\n var h = this.start.y - this.end.y;\n var z = Math.pow(Math.sin(h / 2.0), 2) + Math.cos(this.start.y) * Math.cos(this.end.y) * Math.pow(Math.sin(w / 2.0), 2);\n this.g = 2.0 * Math.asin(Math.sqrt(z));\n\n if (this.g === Math.PI) {\n throw new Error('it appears ' + start.view() + ' and ' + end.view() + ' are \\'antipodal\\', e.g diametrically opposite, thus there is no single route but rather infinite');\n } else if (isNaN(this.g)) {\n throw new Error('could not calculate great circle between ' + start + ' and ' + end);\n }\n};\n\n/*\n * http://williams.best.vwh.net/avform.htm#Intermediate\n */\nGreatCircle.prototype.interpolate = function (f) {\n var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);\n var B = Math.sin(f * this.g) / Math.sin(this.g);\n var x = A * Math.cos(this.start.y) * Math.cos(this.start.x) + B * Math.cos(this.end.y) * Math.cos(this.end.x);\n var y = A * Math.cos(this.start.y) * Math.sin(this.start.x) + B * Math.cos(this.end.y) * Math.sin(this.end.x);\n var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);\n var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n var lon = R2D * Math.atan2(y, x);\n return [lon, lat];\n};\n\n/*\n * Generate points along the great circle\n */\nGreatCircle.prototype.Arc = function (npoints, options) {\n var first_pass = [];\n if (!npoints || npoints <= 2) {\n first_pass.push([this.start.lon, this.start.lat]);\n first_pass.push([this.end.lon, this.end.lat]);\n } else {\n var delta = 1.0 / (npoints - 1);\n for (var i = 0; i < npoints; ++i) {\n var step = delta * i;\n var pair = this.interpolate(step);\n first_pass.push(pair);\n }\n }\n /* partial port of dateline handling from:\n gdal/ogr/ogrgeometryfactory.cpp\n TODO - does not handle all wrapping scenarios yet\n */\n var bHasBigDiff = false;\n var dfMaxSmallDiffLong = 0;\n // from http://www.gdal.org/ogr2ogr.html\n // -datelineoffset:\n // (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)\n var dfDateLineOffset = options && options.offset ? options.offset : 10;\n var dfLeftBorderX = 180 - dfDateLineOffset;\n var dfRightBorderX = -180 + dfDateLineOffset;\n var dfDiffSpace = 360 - dfDateLineOffset;\n\n // https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342\n for (var j = 1; j < first_pass.length; ++j) {\n var dfPrevX = first_pass[j - 1][0];\n var dfX = first_pass[j][0];\n var dfDiffLong = Math.abs(dfX - dfPrevX);\n if (dfDiffLong > dfDiffSpace && (dfX > dfLeftBorderX && dfPrevX < dfRightBorderX || dfPrevX > dfLeftBorderX && dfX < dfRightBorderX)) {\n bHasBigDiff = true;\n } else if (dfDiffLong > dfMaxSmallDiffLong) {\n dfMaxSmallDiffLong = dfDiffLong;\n }\n }\n\n var poMulti = [];\n if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {\n var poNewLS = [];\n poMulti.push(poNewLS);\n for (var k = 0; k < first_pass.length; ++k) {\n var dfX0 = parseFloat(first_pass[k][0]);\n if (k > 0 && Math.abs(dfX0 - first_pass[k - 1][0]) > dfDiffSpace) {\n var dfX1 = parseFloat(first_pass[k - 1][0]);\n var dfY1 = parseFloat(first_pass[k - 1][1]);\n var dfX2 = parseFloat(first_pass[k][0]);\n var dfY2 = parseFloat(first_pass[k][1]);\n if (dfX1 > -180 && dfX1 < dfRightBorderX && dfX2 === 180 && k + 1 < first_pass.length && first_pass[k - 1][0] > -180 && first_pass[k - 1][0] < dfRightBorderX) {\n poNewLS.push([-180, first_pass[k][1]]);\n k++;\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n continue;\n } else if (dfX1 > dfLeftBorderX && dfX1 < 180 && dfX2 === -180 && k + 1 < first_pass.length && first_pass[k - 1][0] > dfLeftBorderX && first_pass[k - 1][0] < 180) {\n poNewLS.push([180, first_pass[k][1]]);\n k++;\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n continue;\n }\n\n if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX) {\n // swap dfX1, dfX2\n var tmpX = dfX1;\n dfX1 = dfX2;\n dfX2 = tmpX;\n // swap dfY1, dfY2\n var tmpY = dfY1;\n dfY1 = dfY2;\n dfY2 = tmpY;\n }\n if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {\n dfX2 += 360;\n }\n\n if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2) {\n var dfRatio = (180 - dfX1) / (dfX2 - dfX1);\n var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;\n poNewLS.push([first_pass[k - 1][0] > dfLeftBorderX ? 180 : -180, dfY]);\n poNewLS = [];\n poNewLS.push([first_pass[k - 1][0] > dfLeftBorderX ? -180 : 180, dfY]);\n poMulti.push(poNewLS);\n } else {\n poNewLS = [];\n poMulti.push(poNewLS);\n }\n poNewLS.push([dfX0, first_pass[k][1]]);\n } else {\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n }\n }\n } else {\n // add normally\n var poNewLS0 = [];\n poMulti.push(poNewLS0);\n for (var l = 0; l < first_pass.length; ++l) {\n poNewLS0.push([first_pass[l][0], first_pass[l][1]]);\n }\n }\n\n var arc = new Arc(this.properties);\n for (var m = 0; m < poMulti.length; ++m) {\n var line = new LineString();\n arc.geometries.push(line);\n var points = poMulti[m];\n for (var j0 = 0; j0 < points.length; ++j0) {\n line.move_to(points[j0]);\n }\n }\n return arc;\n};\n\n/**\n * Calculate great circles routes as {@link LineString}\n *\n * @name greatCircle\n * @param {Coord} start source point feature\n * @param {Coord} end destination point feature\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] line feature properties\n * @param {number} [options.npoints=100] number of points\n * @param {number} [options.offset=10] offset controls the likelyhood that lines will\n * be split which cross the dateline. The higher the number the more likely.\n * @returns {Feature} great circle line feature\n * @example\n * var start = turf.point([-122, 48]);\n * var end = turf.point([-77, 39]);\n *\n * var greatCircle = turf.greatCircle(start, end, {'name': 'Seattle to DC'});\n *\n * //addToMap\n * var addToMap = [start, end, greatCircle]\n */\nfunction greatCircle(start, end, options) {\n // Optional parameters\n options = options || {};\n if ((typeof options === 'undefined' ? 'undefined' : _typeof(options)) !== 'object') throw new Error('options is invalid');\n var properties = options.properties;\n var npoints = options.npoints;\n var offset = options.offset;\n\n start = (0, _invariant.getCoord)(start);\n end = (0, _invariant.getCoord)(end);\n properties = properties || {};\n npoints = npoints || 100;\n offset = offset || 10;\n\n var generator = new GreatCircle({ x: start[0], y: start[1] }, { x: end[0], y: end[1] }, properties);\n\n /* eslint-disable */\n var line = generator.Arc(npoints, { offset: offset });\n /* eslint-enable */\n\n return line.json();\n}\n\nexports.default = greatCircle;\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getType = exports.getGeomType = exports.getGeom = exports.collectionOf = exports.featureOf = exports.geojsonType = exports.containsNumber = exports.getCoords = exports.getCoord = undefined;\n\nvar _helpers = __webpack_require__(58);\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && (0, _helpers.isNumber)(coordinates[0]) && (0, _helpers.isNumber)(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexports.getCoord = getCoord;\nexports.getCoords = getCoords;\nexports.containsNumber = containsNumber;\nexports.geojsonType = geojsonType;\nexports.featureOf = featureOf;\nexports.collectionOf = collectionOf;\nexports.getGeom = getGeom;\nexports.getGeomType = getGeomType;\nexports.getType = getType;\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = { type: 'Feature' };\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point':\n geom = point(coordinates).geometry;break;\n case 'LineString':\n geom = lineString(coordinates).geometry;break;\n case 'Polygon':\n geom = polygon(coordinates).geometry;break;\n case 'MultiPoint':\n geom = multiPoint(coordinates).geometry;break;\n case 'MultiLineString':\n geom = multiLineString(coordinates).geometry;break;\n case 'MultiPolygon':\n geom = multiPolygon(coordinates).geometry;break;\n default:\n throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = { type: 'FeatureCollection' };\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return area / startFactor * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return !!input && input.constructor === Object;\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id === 'undefined' ? 'undefined' : _typeof(id)) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexports.earthRadius = earthRadius;\nexports.factors = factors;\nexports.unitsFactors = unitsFactors;\nexports.areaFactors = areaFactors;\nexports.feature = feature;\nexports.geometry = geometry;\nexports.point = point;\nexports.points = points;\nexports.polygon = polygon;\nexports.polygons = polygons;\nexports.lineString = lineString;\nexports.lineStrings = lineStrings;\nexports.featureCollection = featureCollection;\nexports.multiLineString = multiLineString;\nexports.multiPoint = multiPoint;\nexports.multiPolygon = multiPolygon;\nexports.geometryCollection = geometryCollection;\nexports.round = round;\nexports.radiansToLength = radiansToLength;\nexports.lengthToRadians = lengthToRadians;\nexports.lengthToDegrees = lengthToDegrees;\nexports.bearingToAzimuth = bearingToAzimuth;\nexports.radiansToDegrees = radiansToDegrees;\nexports.degreesToRadians = degreesToRadians;\nexports.convertLength = convertLength;\nexports.convertArea = convertArea;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.validateBBox = validateBBox;\nexports.validateId = validateId;\nexports.radians2degrees = radians2degrees;\nexports.degrees2radians = degrees2radians;\nexports.distanceToDegrees = distanceToDegrees;\nexports.distanceToRadians = distanceToRadians;\nexports.radiansToDistance = radiansToDistance;\nexports.bearingToAngle = bearingToAngle;\nexports.convertDistance = convertDistance;\n\n/***/ }),\n/* 59 */\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.createChapters = createChapters;\nvar chapters = exports.chapters = [{\n gdocId: 'bergen-oversikt',\n title: 'Bergen, laurdag 7. januar 2017',\n text: 'Bergen sentrum, det er natt til laurdag 7. januar 2017. På eit lite geografisk område, alt med gangavstand, skal fem valdstilfelle til å skje. Klokka bikkar tolv.',\n fallbackPicture: '1.14306106',\n mapbox: {\n id: 'bergen-oversikt',\n duration: 7000,\n center: [5.322830, 60.391191],\n // bounds: [[2, 40], [12, 65]],\n zoom: 13,\n pitch: 0,\n bearing: 0,\n mapColor: 'dark'\n }\n}, {\n gdocId: 'forste-tilfelle',\n title: 'Ca. 00:00',\n text: 'Ein mann (23) og kameraten går av bussen. Dei skal vidare til Loddefjord, men slik blir det ikkje.

Klokka 00:17 får politiet melding: Ein mann (23) skal ha komme i samanstøyt med 17-åringane. Først roping, deretter barka dei saman, midt i gata. 17-åringane følgde etter då dei to andre trekte seg tilbake. Dei skal ha slått og sparka mot kroppen og hovudet på 23-åringen, og han låg livlaus på bakken då dei to sprang vidare. Han blødde frå nasen, hadde ein kul i hovudet, og i ettertid sleit han med hovudverk.',\n fallbackPicture: '1.14306127',\n textAlign: 'left',\n mapbox: {\n id: 'hentiesbay',\n duration: 7000,\n center: [5.326523780822754, 60.393102034485416],\n // bounds: [[2, 40], [12, 65]],\n zoom: 18,\n bearing: 20,\n pitch: 0,\n point: {\n 'name': 'navn',\n 'lat': 60.393102034485416,\n 'lon': 5.326523780822754\n }\n }\n}, {\n gdocId: 'andre-tilfelle',\n title: 'Ca. 00:15',\n text: 'Ein mann i 50-åra har vore inne og sett på TV, og går ut for å bestille seg ein pizza. Medan han ventar på maten tar han seg ein tur til Torgallmenningen.

Ved McDonalds går mannen litt til sida for å gå forbi to gutar som han får inntrykk av at er gira. Ifølge vitne yppar 17-åringane, drar mannen til sida, og deretter går Benjamin roleg bort til mannen, gjer ei dreiing med kroppen, og slår til mannen i hovudet med olbogen. Mannen landar på bakken med heile kroppen samtidig, og smell hovudet i asfalten. Eit vitne seier det såg ut som om mannen ikkje var medviten då han landa.',\n fallbackPicture: '1.14306128',\n textAlign: 'left',\n mapbox: {\n id: 'durban',\n duration: 7000,\n center: [5.323251485824585, 60.39248186488759],\n bearing: 0,\n zoom: 18,\n pitch: 15,\n point: {\n 'name': 'navn2',\n 'lat': 60.39248186488759,\n 'lon': 5.323251485824585\n }\n }\n}, {\n gdocId: 'tredje-tilfelle',\n title: 'Ca. 00:17',\n text: 'Ein mann (21) har vore på McDonalds med ein kamerat. Dei ser ein mann ligge livlaus på bakken, og dei oppfattar at nokon skrik og hoiar. Dei tenker det er nok folk som hjelper mannen, og går vidare mot ein utestad.

I det dei kryssar vegen mot Xhibition kjem ein person skrått inn og seier «Do you have a problem». 21-åring svarar «Nei», og han blir han skalla i ansiktet. Den som skallar han ned er Benjamin. 21-åringen får eit kutt i augebrynet.',\n fallbackPicture: '1.14306129',\n textAlign: 'left',\n mapbox: {\n id: 'tromso',\n duration: 6000,\n center: [5.325295329093933, 60.39263823354951],\n bearing: 0,\n zoom: 18,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn3',\n 'lat': 60.39263823354951,\n 'lon': 5.325295329093933\n }\n }\n}, {\n gdocId: 'fjerde-tilfelle',\n title: 'Ca. 00:45',\n text: 'Ein mann (18) har vore med ein gjeng kjøpt seg kebab. På veg ut møter dei 17-åringane. Ein av dei to brukar skuldra til å dulte borti ein i gjengen. 18-åringen spør kvifor han gjorde det. «Er det eit problem med det», svarar den eine 17-åringen. «Ja», svarer 18-åringen.

Benjamin sitt svar til det er å slå, og han tar kvelartak på den andre. Petter kjem springande til, og skal ha dradd eller kasta 18-åringen i bakken. Deretter prøver Petter å slå̊ 18-åringen i ansiktet og på kroppen.',\n fallbackPicture: '1.14306131',\n textAlign: 'left',\n mapbox: {\n id: 'kristiansand',\n duration: 6000,\n center: [5.32213568687439, 60.390769711427204],\n bearing: 0,\n zoom: 18,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn3',\n 'lat': 60.390769711427204,\n 'lon': 5.32213568687439\n }\n }\n}, {\n gdocId: 'femte-tilfelle',\n title: 'Ca. 00:47',\n text: 'Nokon i gjengen kjem inn på kebabsjappa, og seier til dei som sit der at nokon køddar med ein kamerat av dei.

Ein av dei som er inne går ut og spør kva som skjer. Benjamin slår til han, med knytt hand, i ansiktet, og dyttar han over ende. Benjamin slår gjentatte gonger mot hovudet og kroppen til mannen. Den fornærma skal ha forklart i retten at han visste kven den eine av dei to 17-åringane var.',\n fallbackPicture: '1.14306133',\n textAlign: 'left',\n mapbox: {\n id: 'oslo',\n duration: 6000,\n center: [5.32207568687439, 60.390769711427204],\n bearing: 0,\n zoom: 18.6,\n pitch: 20,\n mapColor: 'red',\n point: {\n 'name': 'navn4',\n 'lat': 60.390769711427204,\n 'lon': 5.32207568687439\n }\n }\n}, {\n gdocId: 'paagripinga',\n title: 'Ca. 02:23',\n text: 'Petter blir pågripen og blir tatt med til arresten. Benjamin blir ikkje arrestert denne natta.',\n fallbackPicture: '1.14306135',\n textAlign: 'left',\n mapbox: {\n id: 'birmingham',\n duration: 6000,\n center: [5.3260087966918945, 60.393147089081396],\n bearing: 0,\n zoom: 16.5,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn5',\n 'lat': 60.393147089081396,\n 'lon': 5.3260087966918945\n }\n }\n}, {\n gdocId: 'slutt-oversikt',\n title: '',\n text: 'Fem tilfelle, frå klokka litt over tolv til litt før eitt. Mindre enn ein time. To 17-åringar, og fem som er skadd av vald.',\n fallbackPicture: '1.14306136',\n textAlign: 'left',\n mapbox: {\n id: 'birmingham',\n duration: 8000,\n center: [5.322830, 60.391191],\n bearing: 0,\n zoom: 14,\n pitch: 0,\n mapColor: 'red'\n }\n}];\n\nfunction createChapters() {\n return chapters.map(function (chapter) {\n return _extends({}, chapter);\n });\n}\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.toArray = toArray;\nfunction toArray(iterator) {\n return [].slice.call(iterator);\n}\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = __webpack_require__(0);\n\nvar _serumImagecropUtils = __webpack_require__(17);\n\nvar _image = __webpack_require__(62);\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n/** @jsx h */\n\n\nvar Picture = function (_Component) {\n _inherits(Picture, _Component);\n\n function Picture() {\n _classCallCheck(this, Picture);\n\n return _possibleConstructorReturn(this, (Picture.__proto__ || Object.getPrototypeOf(Picture)).apply(this, arguments));\n }\n\n _createClass(Picture, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n alt = _props.alt,\n imageId = _props.imageId;\n\n var quality = 'medium';\n\n if (!imageId) {\n return (0, _preact.h)(\n 'div',\n null,\n 'Mangler ID'\n );\n }\n\n var parsedQuality = (0, _image.getQualityFromString)(quality);\n var defaultUrl = (0, _serumImagecropUtils.createImageUrl)({ id: imageId, ratio: '16:9', width: 1600, parsedQuality: parsedQuality });\n var desktopSourceSet = (0, _image.createSrcSet)({ imageId: imageId, ratio: '16:9', supportedWidths: _image.supportedWidths, quality: parsedQuality });\n var mobileSourceSet = (0, _image.createSrcSet)({ imageId: imageId, ratio: '3:4', supportedWidths: _image.supportedWidths, quality: parsedQuality });\n\n return (0, _preact.h)(\n 'picture',\n null,\n (0, _preact.h)('source', { media: '(min-aspect-ratio: 3/4)', srcSet: desktopSourceSet }),\n (0, _preact.h)('img', { src: defaultUrl, srcSet: mobileSourceSet, alt: alt })\n );\n }\n }]);\n\n return Picture;\n}(_preact.Component);\n\nexports.default = Picture;\n\n/***/ }),\n/* 62 */\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.getQualityFromString = getQualityFromString;\n\nvar _serumImagecropUtils = __webpack_require__(17);\n\nvar supportedWidths = exports.supportedWidths = [320, 450, 650, 768, 900, 1280, 1600, 1920, 2400];\n\nfunction createSrcSet(_ref) {\n var imageId = _ref.imageId,\n ratio = _ref.ratio,\n supportedWidths = _ref.supportedWidths,\n _ref$quality = _ref.quality,\n quality = _ref$quality === undefined ? 0.7 : _ref$quality;\n\n return supportedWidths.map(function (width) {\n var imageUrl = (0, _serumImagecropUtils.createImageUrl)({ id: imageId, width: width, ratio: ratio, quality: quality });\n return imageUrl + ' ' + width + 'w';\n }).join(', ');\n}\n\nfunction getQualityFromString(qualityString) {\n var qualities = [{\n string: 'very-high',\n quality: 0.8\n }, {\n string: 'high',\n quality: 0.6\n }, {\n string: 'medium',\n quality: 0.3\n }, {\n string: 'low',\n quality: 0.2\n }];\n\n var q = qualities.filter(function (quality) {\n return quality.string === qualityString;\n })[0];\n return q.quality;\n}\n\n/***/ }),\n/* 63 */\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 isTrackingEnabled = false;\n// let label = null\n\nfunction initialize(trackingEnabled) {\n isTrackingEnabled = trackingEnabled;\n // label = name\n}\n\nfunction trackAction(action, label) {\n sendToGoogleAnalytics({\n category: 'dh-innafor-voldsepisoder-bergen',\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/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\nvar __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n!function (e, n) {\n \"object\" == ( false ? \"undefined\" : _typeof(exports)) && \"undefined\" != typeof module ? n(exports) : true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (n),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : n(e[\"dh-analytics-utils\"] = {});\n}(undefined, function (e) {\n \"use strict\";\n function n() {\n return window.ga;\n }var t = Object.assign || function (e) {\n for (var n = 1; n < arguments.length; n++) {\n var t = arguments[n];for (var o in t) {\n Object.prototype.hasOwnProperty.call(t, o) && (e[o] = t[o]);\n }\n }return e;\n };e.createGoogleAnalyticsTracker = function (e) {\n var o = [],\n r = e.name,\n a = e.gaPropertyId,\n i = e.self,\n l = e.context;if (!(r && a && i && l)) throw new Error(\"Unable to create google analytics tracker. Please pass an object containing name, gaPropertyId, self and context to createGoogleAnalyticsTracker method\");var c,\n s,\n d,\n u,\n f,\n g,\n p,\n y,\n w = (c = i.id, s = l.id, d = i.title, u = i.publishedDate, f = c === s, g = document.referrer, { dimension1: c ? \"pp:\" + c : null, dimension2: d || null, dimension3: u ? String(u.getFullYear()) : null, dimension4: u ? String(u.getMonth() + 1) : null, dimension5: u ? String(u.getDate()) : null, dimension6: g.replace(/^(https?:\\/\\/)?www./, \"$1\"), dimension7: g.replace(/^(https?:\\/\\/)/, \"\").replace(/^www./, \"\"), dimension10: f ? null : s ? \"pp:\" + s : null }),\n v = (p = o, y = !1, function (e, o, r, a, i) {\n if (!r.category || !r.action) throw new Error(\"Error sending event to google analytics: Event is missing mandatory fields category and/or action\");n() ? (y || (function (e, n) {\n window.ga(\"create\", { trackingId: n, cookieDomain: \"auto\", name: e }), window.ga(e + \".set\", \"anonymizeIp\", !0);\n }(e, o), y = !0), window.ga(e + \".send\", \"event\", function (e, n) {\n var o = {};e.hasOwnProperty(\"category\") && (o.eventCategory = e.category), e.hasOwnProperty(\"action\") && (o.eventAction = e.action), e.hasOwnProperty(\"label\") && (o.eventLabel = e.label), e.hasOwnProperty(\"value\") && (o.eventValue = e.value), o.nonInteraction = e.nonInteraction || !1;var r = t({}, n, e.fieldsObject);return t({}, o, r);\n }(r, a))) : p.push(r);\n }),\n m = setInterval(function () {\n if (n()) for (clearInterval(m); o.length;) {\n var e = o.shift();v(r, a, e, w);\n }\n }, 1e3);return { sendEvent: function sendEvent(e) {\n v(r, a, e, w);\n } };\n }, Object.defineProperty(e, \"__esModule\", { value: !0 });\n});\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getContextId = getContextId;\nvar POLOPOLY_ID_REGEX = /[1-9]{1,2}\\.\\d+/g;\n\nfunction getContextId(url) {\n return extractPolopolyIdFromString(url);\n}\n\nfunction extractPolopolyIdFromString(str) {\n var matches = str.match(POLOPOLY_ID_REGEX);\n if (matches && matches.length) {\n return matches[0];\n }\n return null;\n}\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// v1-bundle-6e3864be8b3929d4e7fd.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// 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 = \"https://dh-static.mesos.nrk.no/dh-innafor-voldsepisoder-bergen/static/\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 18);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 67c75578a63d59dccf07","var VNode = function VNode() {};\n\nvar options = {};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t lastSimple,\n\t child,\n\t simple,\n\t i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\nfunction extend(obj, props) {\n for (var i in props) {\n obj[i] = props[i];\n }return obj;\n}\n\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\nfunction cloneElement(vnode, props) {\n return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p,\n\t list = items;\n\titems = [];\n\twhile (p = list.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {} else if (name === 'ref') {\n\t\tif (old) old(null);\n\t\tif (value) value(node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\ttry {\n\t\t\tnode[name] = value == null ? '' : value;\n\t\t} catch (e) {}\n\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\nvar mounts = [];\n\nvar diffLevel = 0;\n\nvar isSvgMode = false;\n\nvar hydrating = false;\n\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.pop()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t prevSvgMode = isSvgMode;\n\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t}\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t props = out['__preactattr_'],\n\t vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t children = [],\n\t keyed = {},\n\t keyedLen = 0,\n\t min = 0,\n\t len = originalChildren.length,\n\t childrenLen = 0,\n\t vlen = vchildren ? vchildren.length : 0,\n\t j,\n\t c,\n\t f,\n\t vchild,\n\t child;\n\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t props = _child['__preactattr_'],\n\t\t\t key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\tunmountComponent(component);\n\t} else {\n\t\tif (node['__preactattr_'] != null && node['__preactattr_'].ref) node['__preactattr_'].ref(null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\nvar recyclerComponents = [];\n\nfunction createComponent(Ctor, props, context) {\n\tvar inst,\n\t i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t} else if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode !== 0) {\n\t\tif (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tif (component.__ref) component.__ref(component);\n}\n\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t state = component.state,\n\t context = component.context,\n\t previousProps = component.prevProps || props,\n\t previousState = component.prevState || state,\n\t previousContext = component.prevContext || context,\n\t isUpdate = component.base,\n\t nextBase = component.nextBase,\n\t initialBase = isUpdate || nextBase,\n\t initialChildComponent = component._component,\n\t skip = false,\n\t snapshot = previousContext,\n\t rendered,\n\t inst,\n\t cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t toUnmount,\n\t\t base;\n\n\t\tif (typeof childComponent === 'function') {\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.unshift(component);\n\t} else if (!skip) {\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) {\n\t\tcomponent._renderCallbacks.pop().call(component);\n\t}if (!diffLevel && !isChild) flushMounts();\n}\n\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t originalComponent = c,\n\t oldDom = dom,\n\t isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t isOwner = isDirectOwner,\n\t props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] && base['__preactattr_'].ref) base['__preactattr_'].ref(null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tif (component.__ref) component.__ref(null);\n}\n\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\tthis.context = context;\n\n\tthis.props = props;\n\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\nextend(Component.prototype, {\n\tsetState: function setState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\trender: function render() {}\n});\n\nfunction render(vnode, parent, merge) {\n return diff(merge, vnode, {}, false, parent, false);\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport default preact;\nexport { h, h as createElement, cloneElement, Component, render, rerender, options };\n//# sourceMappingURL=preact.mjs.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/preact/dist/preact.mjs\n// module id = 0\n// module chunks = 0","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/has/src/index.js","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/function-bind/index.js","'use strict';\n\nvar fnToStr = Function.prototype.toString;\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(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 (typeof value === 'function' && !value.prototype) { return true; }\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// WEBPACK FOOTER //\n// ./node_modules/is-callable/index.js","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\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\torigDefineProperty(obj, 'x', { enumerable: false, value: obj });\n\t\t// eslint-disable-next-line no-unused-vars, no-restricted-syntax\n\t\tfor (var _ in obj) { // jscs:ignore disallowUnusedVariables\n\t\t\treturn false;\n\t\t}\n\t\treturn obj.x === obj;\n\t} catch (e) { /* this is IE 8. */\n\t\treturn false;\n\t}\n};\nvar supportsDescriptors = origDefineProperty && 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\torigDefineProperty(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 = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/define-properties/index.js","'use strict';\n\nmodule.exports = require('./es2015');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/es6.js","module.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-to-primitive/helpers/isPrimitive.js","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// WEBPACK FOOTER //\n// (webpack)/buildin/global.js","'use strict';\n\n/* globals\n\tSet,\n\tMap,\n\tWeakSet,\n\tWeakMap,\n\n\tPromise,\n\n\tSymbol,\n\tProxy,\n\n\tAtomics,\n\tSharedArrayBuffer,\n\n\tArrayBuffer,\n\tDataView,\n\tUint8Array,\n\tFloat32Array,\n\tFloat64Array,\n\tInt8Array,\n\tInt16Array,\n\tInt32Array,\n\tUint8ClampedArray,\n\tUint16Array,\n\tUint32Array,\n*/\n\nvar undefined; // eslint-disable-line no-shadow-restricted-names\n\nvar ThrowTypeError = Object.getOwnPropertyDescriptor\n\t? (function () { return Object.getOwnPropertyDescriptor(arguments, 'callee').get; }())\n\t: function () { throw new TypeError(); };\n\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol';\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar generator; // = function * () {};\nvar generatorFunction = generator ? getProto(generator) : undefined;\nvar asyncFn; // async function() {};\nvar asyncFunction = asyncFn ? asyncFn.constructor : undefined;\nvar asyncGen; // async function * () {};\nvar asyncGenFunction = asyncGen ? getProto(asyncGen) : undefined;\nvar asyncGenIterator = asyncGen ? asyncGen() : undefined;\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'$ %Array%': Array,\n\t'$ %ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'$ %ArrayBufferPrototype%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer.prototype,\n\t'$ %ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'$ %ArrayPrototype%': Array.prototype,\n\t'$ %ArrayProto_entries%': Array.prototype.entries,\n\t'$ %ArrayProto_forEach%': Array.prototype.forEach,\n\t'$ %ArrayProto_keys%': Array.prototype.keys,\n\t'$ %ArrayProto_values%': Array.prototype.values,\n\t'$ %AsyncFromSyncIteratorPrototype%': undefined,\n\t'$ %AsyncFunction%': asyncFunction,\n\t'$ %AsyncFunctionPrototype%': asyncFunction ? asyncFunction.prototype : undefined,\n\t'$ %AsyncGenerator%': asyncGen ? getProto(asyncGenIterator) : undefined,\n\t'$ %AsyncGeneratorFunction%': asyncGenFunction,\n\t'$ %AsyncGeneratorPrototype%': asyncGenFunction ? asyncGenFunction.prototype : undefined,\n\t'$ %AsyncIteratorPrototype%': asyncGenIterator && hasSymbols && Symbol.asyncIterator ? asyncGenIterator[Symbol.asyncIterator]() : undefined,\n\t'$ %Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'$ %Boolean%': Boolean,\n\t'$ %BooleanPrototype%': Boolean.prototype,\n\t'$ %DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'$ %DataViewPrototype%': typeof DataView === 'undefined' ? undefined : DataView.prototype,\n\t'$ %Date%': Date,\n\t'$ %DatePrototype%': Date.prototype,\n\t'$ %decodeURI%': decodeURI,\n\t'$ %decodeURIComponent%': decodeURIComponent,\n\t'$ %encodeURI%': encodeURI,\n\t'$ %encodeURIComponent%': encodeURIComponent,\n\t'$ %Error%': Error,\n\t'$ %ErrorPrototype%': Error.prototype,\n\t'$ %eval%': eval, // eslint-disable-line no-eval\n\t'$ %EvalError%': EvalError,\n\t'$ %EvalErrorPrototype%': EvalError.prototype,\n\t'$ %Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'$ %Float32ArrayPrototype%': typeof Float32Array === 'undefined' ? undefined : Float32Array.prototype,\n\t'$ %Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'$ %Float64ArrayPrototype%': typeof Float64Array === 'undefined' ? undefined : Float64Array.prototype,\n\t'$ %Function%': Function,\n\t'$ %FunctionPrototype%': Function.prototype,\n\t'$ %Generator%': generator ? getProto(generator()) : undefined,\n\t'$ %GeneratorFunction%': generatorFunction,\n\t'$ %GeneratorPrototype%': generatorFunction ? generatorFunction.prototype : undefined,\n\t'$ %Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'$ %Int8ArrayPrototype%': typeof Int8Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'$ %Int16ArrayPrototype%': typeof Int16Array === 'undefined' ? undefined : Int8Array.prototype,\n\t'$ %Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'$ %Int32ArrayPrototype%': typeof Int32Array === 'undefined' ? undefined : Int32Array.prototype,\n\t'$ %isFinite%': isFinite,\n\t'$ %isNaN%': isNaN,\n\t'$ %IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'$ %JSON%': JSON,\n\t'$ %JSONParse%': JSON.parse,\n\t'$ %Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'$ %MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'$ %MapPrototype%': typeof Map === 'undefined' ? undefined : Map.prototype,\n\t'$ %Math%': Math,\n\t'$ %Number%': Number,\n\t'$ %NumberPrototype%': Number.prototype,\n\t'$ %Object%': Object,\n\t'$ %ObjectPrototype%': Object.prototype,\n\t'$ %ObjProto_toString%': Object.prototype.toString,\n\t'$ %ObjProto_valueOf%': Object.prototype.valueOf,\n\t'$ %parseFloat%': parseFloat,\n\t'$ %parseInt%': parseInt,\n\t'$ %Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'$ %PromisePrototype%': typeof Promise === 'undefined' ? undefined : Promise.prototype,\n\t'$ %PromiseProto_then%': typeof Promise === 'undefined' ? undefined : Promise.prototype.then,\n\t'$ %Promise_all%': typeof Promise === 'undefined' ? undefined : Promise.all,\n\t'$ %Promise_reject%': typeof Promise === 'undefined' ? undefined : Promise.reject,\n\t'$ %Promise_resolve%': typeof Promise === 'undefined' ? undefined : Promise.resolve,\n\t'$ %Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'$ %RangeError%': RangeError,\n\t'$ %RangeErrorPrototype%': RangeError.prototype,\n\t'$ %ReferenceError%': ReferenceError,\n\t'$ %ReferenceErrorPrototype%': ReferenceError.prototype,\n\t'$ %Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'$ %RegExp%': RegExp,\n\t'$ %RegExpPrototype%': RegExp.prototype,\n\t'$ %Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'$ %SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'$ %SetPrototype%': typeof Set === 'undefined' ? undefined : Set.prototype,\n\t'$ %SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'$ %SharedArrayBufferPrototype%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer.prototype,\n\t'$ %String%': String,\n\t'$ %StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'$ %StringPrototype%': String.prototype,\n\t'$ %Symbol%': hasSymbols ? Symbol : undefined,\n\t'$ %SymbolPrototype%': hasSymbols ? Symbol.prototype : undefined,\n\t'$ %SyntaxError%': SyntaxError,\n\t'$ %SyntaxErrorPrototype%': SyntaxError.prototype,\n\t'$ %ThrowTypeError%': ThrowTypeError,\n\t'$ %TypedArray%': TypedArray,\n\t'$ %TypedArrayPrototype%': TypedArray ? TypedArray.prototype : undefined,\n\t'$ %TypeError%': TypeError,\n\t'$ %TypeErrorPrototype%': TypeError.prototype,\n\t'$ %Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'$ %Uint8ArrayPrototype%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array.prototype,\n\t'$ %Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'$ %Uint8ClampedArrayPrototype%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray.prototype,\n\t'$ %Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'$ %Uint16ArrayPrototype%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array.prototype,\n\t'$ %Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'$ %Uint32ArrayPrototype%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array.prototype,\n\t'$ %URIError%': URIError,\n\t'$ %URIErrorPrototype%': URIError.prototype,\n\t'$ %WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'$ %WeakMapPrototype%': typeof WeakMap === 'undefined' ? undefined : WeakMap.prototype,\n\t'$ %WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\t'$ %WeakSetPrototype%': typeof WeakSet === 'undefined' ? undefined : WeakSet.prototype\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar key = '$ ' + name;\n\tif (!(key in INTRINSICS)) {\n\t\tthrow new SyntaxError('intrinsic ' + name + ' does not exist!');\n\t}\n\n\t// istanbul ignore if // hopefully this is impossible to test :-)\n\tif (typeof INTRINSICS[key] === 'undefined' && !allowMissing) {\n\t\tthrow new TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t}\n\treturn INTRINSICS[key];\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/GetIntrinsic.js","module.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/isNaN.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// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/isFinite.js","module.exports = function sign(number) {\n\treturn number >= 0 ? 1 : -1;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/sign.js","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// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/mod.js","'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// WEBPACK FOOTER //\n// ./node_modules/array-includes/implementation.js","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn Array.prototype.includes || implementation;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/array-includes/polyfill.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"root\":\"dh-innafor-voldsepisoder-bergen-root\",\"app\":\"dh-innafor-voldsepisoder-bergen-app\",\"root--js\":\"dh-innafor-voldsepisoder-bergen-root--js\",\"app--visible\":\"dh-innafor-voldsepisoder-bergen-app--visible\",\"root--noJs\":\"dh-innafor-voldsepisoder-bergen-root--noJs\",\"app__mediaContainer\":\"dh-innafor-voldsepisoder-bergen-app__mediaContainer\",\"app__mediaFallback\":\"dh-innafor-voldsepisoder-bergen-app__mediaFallback\",\"app__itemContainer\":\"dh-innafor-voldsepisoder-bergen-app__itemContainer\",\"textSection\":\"dh-innafor-voldsepisoder-bergen-textSection\",\"textSection__card\":\"dh-innafor-voldsepisoder-bergen-textSection__card\",\"textSection__card--left\":\"dh-innafor-voldsepisoder-bergen-textSection__card--left\",\"textSection__card--right\":\"dh-innafor-voldsepisoder-bergen-textSection__card--right\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/App.css\n// module id = 15\n// module chunks = 0","// @flow @jsx h\nimport { h, Component } from 'preact'\n\nclass Provider extends Component<{ children: Array }, {}> {\n getChildContext () {\n const { children, ...props } = this.props\n return { '__CTX__': props }\n }\n render () {\n return this.props.children[0]\n }\n}\n\nProvider.displayName = 'Provider'\n\ntype MapContextToProps = ({}) => Object\n\nfunction connect (mapContextToProps?: MapContextToProps) {\n return (wrappedComponent: any) => {\n class Connected extends Component<{}, {}> {\n mapContextToProps = (ctx: {}): Object => {\n return mapContextToProps ? mapContextToProps(ctx) : ctx\n }\n render () {\n return h(wrappedComponent, {\n ...this.mapContextToProps(this.context['__CTX__']),\n ...this.props\n })\n }\n }\n Connected.displayName = `connect(${wrappedComponent.displayName ||\n wrappedComponent.name ||\n 'Component'})`\n return Connected\n }\n}\n\nexport { Provider, connect }\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/provider.js","(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// WEBPACK FOOTER //\n// ./node_modules/@nrk/serum-imagecrop-utils/lib/index.js","/* eslint-disable */\n\nrequire('array-includes').shim()\n\nNumber.isInteger = Number.isInteger || function (value) {\n return typeof value === 'number' &&\n isFinite(value) &&\n Math.floor(value) === value\n}\n\nimport 'intersection-observer'\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/client.polyfill.js","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\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 window.IntersectionObserverEntry.prototype) {\n\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.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 observing 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://w3c.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 // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\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://w3c.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 * Use a mutation observer on the root element\n * to detect intersection changes.\n */\nIntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\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 var isTargetAlreadyObserved = this._observationTargets.some(function(item) {\n return item.element == target;\n });\n\n if (isTargetAlreadyObserved) {\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 this._checkForIntersections();\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 visibility state is visible.\n * @private\n */\nIntersectionObserver.prototype._monitorIntersections = function() {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\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 (this.USE_MUTATION_OBSERVER && '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://w3c.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 execution, 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/w3c/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 element (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// WEBPACK FOOTER //\n// ./node_modules/intersection-observer/intersection-observer.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// WEBPACK FOOTER //\n// ./node_modules/array-includes/index.js","'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$applicationCache: true,\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) { // eslint-disable-line func-name-matching\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// WEBPACK FOOTER //\n// ./node_modules/object-keys/index.js","'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// WEBPACK FOOTER //\n// ./node_modules/object-keys/isArguments.js","'use strict';\n\nvar has = require('has');\nvar toPrimitive = require('es-to-primitive/es6');\n\nvar GetIntrinsic = require('./GetIntrinsic');\n\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $SyntaxError = GetIntrinsic('%SyntaxError%');\nvar $Array = GetIntrinsic('%Array%');\nvar $String = GetIntrinsic('%String%');\nvar $Object = GetIntrinsic('%Object%');\nvar $Number = GetIntrinsic('%Number%');\nvar $Symbol = GetIntrinsic('%Symbol%', true);\nvar $RegExp = GetIntrinsic('%RegExp%');\n\nvar hasSymbols = !!$Symbol;\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 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);\nvar $charCodeAt = bind.call(Function.call, $String.prototype.charCodeAt);\n\nvar toStr = bind.call(Function.call, Object.prototype.toString);\n\nvar $floor = Math.floor;\nvar $abs = Math.abs;\n\nvar $ObjectCreate = Object.create;\nvar $gOPD = $Object.getOwnPropertyDescriptor;\n\nvar $isExtensible = $Object.isExtensible;\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// https://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) * $floor($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 = $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' ? 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// https://ecma-international.org/ecma-262/6.0/#sec-canonicalnumericindexstring\n\tCanonicalNumericIndexString: function CanonicalNumericIndexString(argument) {\n\t\tif (toStr(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(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: Object.preventExtensions\n\t\t? function IsExtensible(obj) {\n\t\t\tif (isPrimitive(obj)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn $isExtensible(obj);\n\t\t}\n\t\t: function isExtensible(obj) { return true; }, // eslint-disable-line no-unused-vars\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 = $abs(argument);\n\t\treturn $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// https://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 - https://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 void 0;\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) - https://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// https://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] : void 0;\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// https://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// https://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// https://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// https://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// https://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// https://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// https://ecma-international.org/ecma-262/6.0/#sec-getiterator\n\tGetIterator: function GetIterator(obj, method) {\n\t\tif (!hasSymbols) {\n\t\t\tthrow new SyntaxError('ES.GetIterator depends on native iterator support.');\n\t\t}\n\n\t\tvar actualMethod = method;\n\t\tif (arguments.length < 2) {\n\t\t\tactualMethod = this.GetMethod(obj, $Symbol.iterator);\n\t\t}\n\t\tvar iterator = this.Call(actualMethod, obj);\n\t\tif (this.Type(iterator) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator must return an object');\n\t\t}\n\n\t\treturn iterator;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratornext\n\tIteratorNext: function IteratorNext(iterator, value) {\n\t\tvar result = this.Invoke(iterator, 'next', arguments.length < 2 ? [] : [value]);\n\t\tif (this.Type(result) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator next must return an object');\n\t\t}\n\t\treturn result;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorcomplete\n\tIteratorComplete: function IteratorComplete(iterResult) {\n\t\tif (this.Type(iterResult) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t\t}\n\t\treturn this.ToBoolean(this.Get(iterResult, 'done'));\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorvalue\n\tIteratorValue: function IteratorValue(iterResult) {\n\t\tif (this.Type(iterResult) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterResult) is not Object');\n\t\t}\n\t\treturn this.Get(iterResult, 'value');\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorstep\n\tIteratorStep: function IteratorStep(iterator) {\n\t\tvar result = this.IteratorNext(iterator);\n\t\tvar done = this.IteratorComplete(result);\n\t\treturn done === true ? false : result;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-iteratorclose\n\tIteratorClose: function IteratorClose(iterator, completion) {\n\t\tif (this.Type(iterator) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: Type(iterator) is not Object');\n\t\t}\n\t\tif (!this.IsCallable(completion)) {\n\t\t\tthrow new $TypeError('Assertion failed: completion is not a thunk for a Completion Record');\n\t\t}\n\t\tvar completionThunk = completion;\n\n\t\tvar iteratorReturn = this.GetMethod(iterator, 'return');\n\n\t\tif (typeof iteratorReturn === 'undefined') {\n\t\t\treturn completionThunk();\n\t\t}\n\n\t\tvar completionRecord;\n\t\ttry {\n\t\t\tvar innerResult = this.Call(iteratorReturn, iterator, []);\n\t\t} catch (e) {\n\t\t\t// if we hit here, then \"e\" is the innerResult completion that needs re-throwing\n\n\t\t\t// if the completion is of type \"throw\", this will throw.\n\t\t\tcompletionRecord = completionThunk();\n\t\t\tcompletionThunk = null; // ensure it's not called twice.\n\n\t\t\t// if not, then return the innerResult completion\n\t\t\tthrow e;\n\t\t}\n\t\tcompletionRecord = completionThunk(); // if innerResult worked, then throw if the completion does\n\t\tcompletionThunk = null; // ensure it's not called twice.\n\n\t\tif (this.Type(innerResult) !== 'Object') {\n\t\t\tthrow new $TypeError('iterator .return must return an object');\n\t\t}\n\n\t\treturn completionRecord;\n\t},\n\n\t// https://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// https://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\t// https://ecma-international.org/ecma-262/6.0/#sec-arrayspeciescreate\n\tArraySpeciesCreate: function ArraySpeciesCreate(originalArray, length) {\n\t\tif (!this.IsInteger(length) || length < 0) {\n\t\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0');\n\t\t}\n\t\tvar len = length === 0 ? 0 : length;\n\t\tvar C;\n\t\tvar isArray = this.IsArray(originalArray);\n\t\tif (isArray) {\n\t\t\tC = this.Get(originalArray, 'constructor');\n\t\t\t// TODO: figure out how to make a cross-realm normal Array, a same-realm Array\n\t\t\t// if (this.IsConstructor(C)) {\n\t\t\t// \tif C is another realm's Array, C = undefined\n\t\t\t// \tObject.getPrototypeOf(Object.getPrototypeOf(Object.getPrototypeOf(Array))) === null ?\n\t\t\t// }\n\t\t\tif (this.Type(C) === 'Object' && hasSymbols && $Symbol.species) {\n\t\t\t\tC = this.Get(C, $Symbol.species);\n\t\t\t\tif (C === null) {\n\t\t\t\t\tC = void 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (typeof C === 'undefined') {\n\t\t\treturn $Array(len);\n\t\t}\n\t\tif (!this.IsConstructor(C)) {\n\t\t\tthrow new $TypeError('C must be a constructor');\n\t\t}\n\t\treturn new C(len); // this.Construct(C, len);\n\t},\n\n\tCreateDataProperty: function CreateDataProperty(O, P, V) {\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\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\tvar oldDesc = $gOPD(O, P);\n\t\tvar extensible = oldDesc || (typeof $isExtensible !== 'function' || $isExtensible(O));\n\t\tvar immutable = oldDesc && (!oldDesc.writable || !oldDesc.configurable);\n\t\tif (immutable || !extensible) {\n\t\t\treturn false;\n\t\t}\n\t\tvar newDesc = {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: true,\n\t\t\tvalue: V,\n\t\t\twritable: true\n\t\t};\n\t\tObject.defineProperty(O, P, newDesc);\n\t\treturn true;\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-createdatapropertyorthrow\n\tCreateDataPropertyOrThrow: function CreateDataPropertyOrThrow(O, P, V) {\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\tif (!this.IsPropertyKey(P)) {\n\t\t\tthrow new $TypeError('Assertion failed: IsPropertyKey(P) is not true');\n\t\t}\n\t\tvar success = this.CreateDataProperty(O, P, V);\n\t\tif (!success) {\n\t\t\tthrow new $TypeError('unable to create data property');\n\t\t}\n\t\treturn success;\n\t},\n\n\t// https://www.ecma-international.org/ecma-262/6.0/#sec-objectcreate\n\tObjectCreate: function ObjectCreate(proto, internalSlotsList) {\n\t\tif (proto !== null && this.Type(proto) !== 'Object') {\n\t\t\tthrow new $TypeError('Assertion failed: proto must be null or an object');\n\t\t}\n\t\tvar slots = arguments.length < 2 ? [] : internalSlotsList;\n\t\tif (slots.length > 0) {\n\t\t\tthrow new $SyntaxError('es-abstract does not yet support internal slots');\n\t\t}\n\n\t\tif (proto === null && !$ObjectCreate) {\n\t\t\tthrow new $SyntaxError('native Object.create support is required to create null objects');\n\t\t}\n\n\t\treturn $ObjectCreate(proto);\n\t},\n\n\t// https://ecma-international.org/ecma-262/6.0/#sec-advancestringindex\n\tAdvanceStringIndex: function AdvanceStringIndex(S, index, unicode) {\n\t\tif (this.Type(S) !== 'String') {\n\t\t\tthrow new $TypeError('S must be a String');\n\t\t}\n\t\tif (!this.IsInteger(index) || index < 0 || index > MAX_SAFE_INTEGER) {\n\t\t\tthrow new $TypeError('Assertion failed: length must be an integer >= 0 and <= 2**53');\n\t\t}\n\t\tif (this.Type(unicode) !== 'Boolean') {\n\t\t\tthrow new $TypeError('Assertion failed: unicode must be a Boolean');\n\t\t}\n\t\tif (!unicode) {\n\t\t\treturn index + 1;\n\t\t}\n\t\tvar length = S.length;\n\t\tif ((index + 1) >= length) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar first = $charCodeAt(S, index);\n\t\tif (first < 0xD800 || first > 0xDBFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\tvar second = $charCodeAt(S, index + 1);\n\t\tif (second < 0xDC00 || second > 0xDFFF) {\n\t\t\treturn index + 1;\n\t\t}\n\n\t\treturn index + 2;\n\t}\n});\n\ndelete ES6.CheckObjectCoercible; // renamed in ES6 to RequireObjectCoercible\n\nmodule.exports = ES6;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/es2015.js","'use strict';\n\n/* eslint no-invalid-this: 1 */\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// WEBPACK FOOTER //\n// ./node_modules/function-bind/implementation.js","'use strict';\n\nmodule.exports = require('./es2015');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-to-primitive/es6.js","'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\treturn void 0;\n};\n\n// http://www.ecma-international.org/ecma-262/6.0/#sec-toprimitive\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tvar hint = 'default';\n\tif (arguments.length > 1) {\n\t\tif (arguments[1] === String) {\n\t\t\thint = 'string';\n\t\t} else if (arguments[1] === 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// WEBPACK FOOTER //\n// ./node_modules/es-to-primitive/es2015.js","'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// WEBPACK FOOTER //\n// ./node_modules/is-date-object/index.js","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar hasSymbols = require('has-symbols')();\n\nif (hasSymbols) {\n\tvar symToStr = Symbol.prototype.toString;\n\tvar symStringRegex = /^Symbol\\(.*\\)$/;\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn symStringRegex.test(symToStr.call(value));\n\t};\n\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (toStr.call(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\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\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/is-symbol/index.js","'use strict';\n\nvar origSymbol = global.Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/has-symbols/index.js","'use strict';\n\n/* eslint complexity: [2, 17], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/has-symbols/shams.js","var bind = require('function-bind');\nvar has = bind.call(Function.call, Object.prototype.hasOwnProperty);\n\nvar $assign = Object.assign;\n\nmodule.exports = function assign(target, source) {\n\tif ($assign) {\n\t\treturn $assign(target, source);\n\t}\n\n\tfor (var key in source) {\n\t\tif (has(source, key)) {\n\t\t\ttarget[key] = source[key];\n\t\t}\n\t}\n\treturn target;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/assign.js","module.exports = function isPrimitive(value) {\n\treturn value === null || (typeof value !== 'function' && typeof value !== 'object');\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-abstract/helpers/isPrimitive.js","'use strict';\n\nvar GetIntrinsic = require('./GetIntrinsic');\n\nvar $Object = GetIntrinsic('%Object%');\nvar $TypeError = GetIntrinsic('%TypeError%');\nvar $String = GetIntrinsic('%String%');\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 +value; // eslint-disable-line no-implicit-coercion\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// https://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// https://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// https://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// https://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// https://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// https://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// https://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// WEBPACK FOOTER //\n// ./node_modules/es-abstract/es5.js","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nvar isPrimitive = require('./helpers/isPrimitive');\n\nvar isCallable = require('is-callable');\n\n// http://ecma-international.org/ecma-262/5.1/#sec-8.12.8\nvar ES5internalSlots = {\n\t'[[DefaultValue]]': function (O) {\n\t\tvar actualHint;\n\t\tif (arguments.length > 1) {\n\t\t\tactualHint = arguments[1];\n\t\t} else {\n\t\t\tactualHint = toStr.call(O) === '[object Date]' ? String : Number;\n\t\t}\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// http://ecma-international.org/ecma-262/5.1/#sec-9.1\nmodule.exports = function ToPrimitive(input) {\n\tif (isPrimitive(input)) {\n\t\treturn input;\n\t}\n\tif (arguments.length > 1) {\n\t\treturn ES5internalSlots['[[DefaultValue]]'](input, arguments[1]);\n\t}\n\treturn ES5internalSlots['[[DefaultValue]]'](input);\n};\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/es-to-primitive/es5.js","'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// WEBPACK FOOTER //\n// ./node_modules/is-regex/index.js","'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// WEBPACK FOOTER //\n// ./node_modules/array-includes/shim.js","/* global __HOT__ */\n/* eslint-disable import/no-unresolved */\n\n// @jsx h\n\nimport { h, render } from 'preact'\nimport { testPositionSticky } from '@nrk/feature-tests'\nimport { toArray, createUniqueId } from '@nrk/dh-utils'\nimport { createErrorReporter } from '../lib/errorReporting'\nimport { App } from './components/App'\nimport { root as rootElementClassName } from './components/App.css'\nimport { createGoogleAnalyticsTracker } from '@nrk/dh-analytics-utils'\nimport { getContextId } from '../lib/getContextId'\nimport { Provider as CustomProvider } from '../lib/provider'\n\nwindow[rootElementClassName] = window[rootElementClassName] || {}\n\nfunction init (mapboxgl) {\n findElements(rootElementClassName).forEach(el => {\n el.id = createUniqueId()\n window[rootElementClassName][el.id] = true\n\n // Extract values sent from server\n const name = el.getAttribute('data-name')\n const preloadedState = JSON.parse(el.getAttribute('data-preloaded-state'))\n const errorTrackingEnabled = el.getAttribute('data-error-tracking-enabled') === 'true'\n\n // setup error reporting\n const simpleErrorReport = createErrorReporter(name, errorTrackingEnabled)\n simpleErrorReport.listenAndCatch()\n\n // Extract metadata required to create google analytics tracker\n const gaPropertyId = el.getAttribute('data-ga-property-id')\n const metadata = JSON.parse(el.getAttribute('data-metadata'))\n const { title, selfId, published } = metadata\n\n // create google analytics tracker\n const googleAnalyticsTracker = createGoogleAnalyticsTracker({\n name: 'dh',\n gaPropertyId,\n self: {\n id: selfId,\n title,\n publishedDate: published ? new Date(published) : null\n },\n context: {\n id: getContextId(document.location.href)\n }\n })\n\n const sendError = (message) => {\n simpleErrorReport.sendErrorReport({ message })\n }\n\n const sendGaEvent = (eventObj) => {\n googleAnalyticsTracker.sendEvent({\n category: `dh-modul-${name}`,\n ...eventObj\n })\n }\n\n // Test if the browser is modern enough\n testPositionSticky(supported => {\n if (!supported) {\n simpleErrorReport().sendErrorReport({ message: 'Warning: This browser does not support `position: sticky`' })\n\n return\n }\n if (!mapboxgl.supported()) {\n simpleErrorReport().sendErrorReport({ message: 'Warning: This browser does not support mapbox-gl' })\n\n return\n }\n\n // ... and render with the exact same props\n el.className = el.className.replace('noJs', 'js')\n // render(, el, el.firstChild)\n\n render(\n \n \n , el, el.firstChild\n )\n })\n\n // Enable webpack hot-reloading\n if (__HOT__) {\n // Reload and re-render preact application\n module.hot.accept('./client', () => {\n const { App } = require('./components/App')\n const { Provider: CustomProvider } = require('../lib/provider')\n render(\n \n \n , el, el.firstChild)\n })\n }\n })\n}\n\nif (__HOT__) {\n require('preact/debug')\n}\n\nfunction findElements (className) {\n return toArray(document.getElementsByClassName(className)).filter(el => !isInitialized(el, className))\n}\n\nfunction isInitialized (el, className) {\n return el.id && window[className][el.id]\n}\n\nwindow.initJordenRundtSeksSteg = init\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/client.js","var hasSupportCache = void 0;\n\nfunction testEventPassiveListener(callback) {\n if (hasSupportCache !== undefined) {\n callback(hasSupportCache);\n return;\n }\n\n hasSupportCache = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n hasSupportCache = true;\n }\n });\n\n window.addEventListener('test', null, opts);\n } catch (e) {}\n\n callback(hasSupportCache);\n}\n\nfunction testJs(callback) {\n callback(true);\n}\n\nfunction testJs$1(callback) {\n var el = document.createElement('img');\n\n callback(el.style.objectFit !== undefined);\n}\n\nfunction testPositionSticky(callback) {\n var el = document.createElement('a');\n\n el.style.cssText = 'position: sticky; position: -webkit-sticky; position: -ms-sticky;';\n\n callback(el.style.position.indexOf('sticky') !== -1);\n}\n\nvar videoAutoPlayCache = null;\n\nfunction testVideoAutoPlay(callback) {\n if (typeof window === 'undefined') {\n return callback(false);\n }\n\n if (videoAutoPlayCache !== null) {\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 var playPromise = videoElm.play();\n\n if (playPromise) {\n playPromise.catch(function (e) {\n // Do nothing\n });\n }\n\n videoElm.oncanplay = function () {\n videoAutoPlayCache = isPlaying;\n callback(videoAutoPlayCache);\n };\n\n videoElm.onplay = function () {\n isPlaying = true;\n };\n}\n\nfunction testReducedMotion(callback) {\n if (typeof window === 'undefined') {\n if (callback) {\n callback(false);\n }\n return false;\n }\n\n var test = !!window.matchMedia && window.matchMedia('(prefers-reduced-motion)').matches;\n if (callback) {\n callback(test);\n }\n return test;\n}\n\nvar index = {\n testEventPassiveListener: testEventPassiveListener,\n testJs: testJs,\n testObjectFit: testJs$1,\n testPositionSticky: testPositionSticky,\n testVideoAutoPlay: testVideoAutoPlay,\n testReducedMotion: testReducedMotion\n};\n\nexport default index;\nexport { testEventPassiveListener, testJs, testJs$1 as testObjectFit, testPositionSticky, testVideoAutoPlay, testReducedMotion };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/feature-tests/dist/feature-tests.module.js","import { toArray } from './array';\nimport bem from './bem';\nimport { getScrollLeft, getScrollTop } from './scroll';\nimport { createUniqueId } from './string';\n\nexport { bem, createUniqueId, getScrollLeft, getScrollTop, toArray };\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/index.js","export function toArray(nodeList) {\n return [].slice.call(nodeList);\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/array.js","function _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 toStrings(object) {\n return Object.keys(object).filter(function (key) {\n return object[key];\n });\n}\n\nexport default (function (blockName) {\n for (var _len = arguments.length, modifiers = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n modifiers[_key - 1] = arguments[_key];\n }\n\n var strings = modifiers.filter(function (modifier) {\n return typeof modifier === 'string';\n });\n var objects = modifiers.filter(function (modifier) {\n return typeof modifier === 'object';\n });\n\n var objectString = objects.map(function (object) {\n return toStrings(object);\n }).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n\n return [blockName].concat(strings.map(function (modifier) {\n return blockName + '--' + modifier;\n })).concat(objectString.map(function (modifier) {\n return blockName + '--' + modifier;\n })).join(' ');\n});\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/bem.js","export function getScrollLeft() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageXOffset || document.documentElement && document.documentElement.scrollLeft || 0;\n}\n\nexport function getScrollTop() {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n return window.pageYOffset || document.documentElement && document.documentElement.scrollTop || 0;\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/scroll.js","export function createUniqueId() {\n var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 10;\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n return '' + prefix + Math.random().toString(36).substr(2, len - prefix.length);\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-utils/dist/module/string.js","// @flow\nimport { SimpleErrorReport } from '@nrk/dh-simple-error-report'\n\nexport function createErrorReporter (name: string, isErrorReportingEnabled: boolean): SimpleErrorReport {\n return new SimpleErrorReport({\n name: name,\n url: 'https://dh.nrk.no/catch',\n dryRun: !isErrorReportingEnabled\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/errorReporting.js","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n(e[\"simple-error-report\"]={})}(this,function(e){\"use strict\";var n=function(){function e(e,n){for(var r=0;r0}}]),e}(),t=Object.assign||function(e){for(var n=1;n0&&(a.line=o),s>0&&(a.column=s),n.error&&\"function\"==typeof e.parseStack?e.parseStack(n.error).then(function(n){e.sendErrorReport(t({},a,{stackTrace:n}))}):e.sendErrorReport(a)}),window.addEventListener(\"unhandledrejection\",function(n){e.sendErrorReport({message:\"Unhandled Promise Rejection: \"+n.reason})}))}},{key:\"sendErrorReport\",value:function(e){var n,r,t;this.dryRun?\"undefined\"!=typeof console&&console.log(\"Dry run: \"+JSON.stringify(e)):this.errorRegister.isInRegisterWithinRange(e.message,500)||(this.errorRegister.addErrorToRegister(e.message),n=this.url+\"/\"+this.name,r=e,(t=new XMLHttpRequest).open(\"POST\",n),t.setRequestHeader(\"Content-Type\",\"application/json\"),t.send(JSON.stringify(r)))}}]),e}();e.SimpleErrorReport=s,Object.defineProperty(e,\"__esModule\",{value:!0})});\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/dh-simple-error-report/dist/simple-error-report.min.js","// @flow\n\n/** @jsx h */\n\n/* eslint-disable compat/compat */\n\nimport { h, Component } from 'preact'\nimport styles from './App.css'\nimport { connect } from '../../lib/provider'\nimport { bem } from '../../lib/bem'\nimport MaxViewportRect from './MaxViewportRect'\nimport { Background } from './Background'\nimport { createChapters } from './chapters'\nimport { toArray } from '../../lib/array'\nimport PolopolyPicture from './PolopolyPicture'\n// import PolopolyPicture from './PolopolyPicture'\nimport { trackAction } from '../../lib/googleAnalytic'\n// import type { Chapter } from './chapters'\n\ntype Props = {\n sendGaEvent: (Object) => void\n}\n\ntype State = {\n visible: boolean,\n index: number,\n trackedInitial: boolean,\n viewportHeight: number | null\n}\n\nconst trackingName = 'dh-innafor-voldsepisoder-bergen'\n\nclass _App extends Component {\n /* Example of how to send a click event to google analytics\n handleClick = () => {\n this.props.sendGaEvent({\n action: 'click'\n })\n }\n */\n\n elm: HTMLDivElement\n background: any\n\n constructor () {\n super()\n this.state = {\n visible: false,\n index: -1,\n trackedInitial: false,\n viewportHeight: null\n }\n const chapters = createChapters()\n this.sectionElements = toArray(new Array(chapters.length))\n this.triggerElements = toArray(new Array(chapters.length))\n }\n\n componentDidMount () {\n this.insersectionObserver = new IntersectionObserver(\n entries => {\n entries.forEach(entry => {\n if (entry.target === this.elm) {\n this.setVisiblity(entry.isIntersecting)\n } else if (entry.isIntersecting) {\n this.setIndex(this.triggerElements.indexOf(entry.target))\n }\n })\n },\n {\n rootMargin: '-10px -10px -10px -10px',\n threshold: [0]\n }\n )\n\n this.triggerElements.forEach(triggerElm => this.insersectionObserver.observe(triggerElm))\n this.insersectionObserver.observe(this.elm)\n }\n\n componentWillUnmount () {\n this.triggerElements.forEach(triggerElm => this.insersectionObserver.unobserve(triggerElm))\n this.insersectionObserver.unobserve(this.elm)\n this.insersectionObserver.disconnect()\n }\n\n handleViewportChange = (viewport: any) => {\n if (this.state.viewportHeight !== viewport.height) {\n this.setState({ viewportHeight: viewport.height })\n }\n }\n\n setIndex (index: number) {\n if (this.state.index !== index) {\n this.setState({ index })\n }\n }\n\n setVisiblity (visible: boolean) {\n if (!this.state.trackedInitial && visible) {\n trackAction(visible ? 'SCROLL_IN' : 'SCROLL_OUT', trackingName)\n trackAction(`LOAD_SUCCESS/index:${this.state.index}`, trackingName)\n this.setState({ visible, trackedInitial: true })\n } else if (this.state.visible !== visible) {\n trackAction(visible ? 'SCROLL_IN' : 'SCROLL_OUT', trackingName)\n this.setState({ visible })\n }\n }\n\n render () {\n const { visible, viewportHeight } = this.state\n const chapters = createChapters()\n\n const mediaContainerInlineStyle = {}\n if (viewportHeight !== null) {\n mediaContainerInlineStyle.height = `${viewportHeight}px`\n }\n\n const textSectionInlineStyle = {}\n if (viewportHeight !== null) {\n textSectionInlineStyle.paddingBottom = `calc(${viewportHeight}px - 20px)`\n }\n return (\n
(this.elm = elm)}>\n \n
\n { this.background = elm }} />\n {\n chapters.map((chapter: Chapter, idx) => {\n return (\n
\n \n
\n )\n })\n }\n
\n\n
\n {\n chapters.map((section, idx) => {\n return (\n { this.sectionElements[idx] = elm }}>\n
{ this.triggerElements[idx] = elm }}>\n {section.title &&

{section.title}

}\n {section.text &&

}\n {section.link && section.link.url && (\n

\n {section.link.text}\n  \n \n

\n )}\n
\n \n )\n })\n }\n
\n
\n )\n }\n}\n\n/*\nconst mapContextToProps = context => ({\n ...context,\n sendCustomGaEvent: () => context.sendEvent({ action: 'my custom event action' })\n})\n*/\n\nconst connector = connect()\n// const connector = connect(mapContextToProps)\nexport const App = connector(_App)\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/App.js","// @flow\n\nexport function bem (blockName: string, ...modifiers: any[]) {\n return [blockName].concat(modifiers.filter(Boolean).map(modifier => `${blockName}--${modifier}`)).join(' ')\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/bem.js","// @flow\n\n/** @jsx h */\n\nimport MaxViewportObservable from '@nrk/max-viewport-observable'\nimport { Component, h } from 'preact'\n\ntype Props = {\n height?: string,\n onViewportChange: (viewport: any) => void\n}\n\nexport default class MaxViewportRect extends Component {\n dispose: () => void\n elm: HTMLDivElement\n viewport$: any\n\n componentDidMount () {\n this.viewport$ = MaxViewportObservable.create({\n root: this.elm\n })\n\n this.dispose = this.viewport$.subscribe({\n next: (viewport) => {\n this.props.onViewportChange(viewport)\n }\n })\n }\n\n componentWillUnmount () {\n this.dispose()\n }\n\n render () {\n const height = this.props.height || 100\n const inlineStyle = { height: `${height}vh`, position: 'absolute' }\n return
(this.elm = elm)} style={inlineStyle} />\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/MaxViewportRect.js","function create() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var root = opts.root;\n\n\n var getRect = function getRect() {\n if (root instanceof Element) {\n var rect = root.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height\n };\n }\n\n return {\n width: window.innerWidth,\n height: window.innerHeight\n };\n };\n\n var subscribe = function subscribe(observer) {\n var isDynamicViewport = false;\n var isTouching = false;\n var rect = { width: -1, height: -1 };\n\n var listeners = {\n orientationchange: function orientationchange() {\n rect = { width: -1, height: -1 };\n },\n resize: function resize() {\n var prevRect = rect;\n\n rect = getRect();\n\n if (isDynamicViewport && rect.height < prevRect.height) {\n rect.height = prevRect.height;\n }\n\n observer.next(rect);\n },\n scroll: function scroll() {\n if (isTouching) {\n isDynamicViewport = true;\n window.removeEventListener('scroll', listeners.scroll);\n }\n },\n touchstart: function touchstart() {\n isTouching = true;\n },\n touchend: function touchend() {\n isTouching = false;\n }\n };\n\n window.addEventListener('orientationchange', listeners.orientationchange);\n window.addEventListener('resize', listeners.resize);\n window.addEventListener('scroll', listeners.scroll);\n window.addEventListener('touchstart', listeners.touchstart);\n window.addEventListener('touchend', listeners.touchend);\n\n // Trigger initial \"resize\"\n listeners.resize();\n\n return {\n unsubscribe: function unsubscribe() {\n window.removeEventListener('orientationchange', listeners.orientationchange);\n window.removeEventListener('resize', listeners.resize);\n window.removeEventListener('scroll', listeners.scroll);\n window.removeEventListener('touchstart', listeners.touchstart);\n window.removeEventListener('touchend', listeners.touchend);\n }\n };\n };\n\n return { subscribe: subscribe };\n}\n\nvar index = { create: create };\n\nexport { create };\nexport default index;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@nrk/max-viewport-observable/dist/max-viewport-observable.module.js","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\n\nimport styles from './Background.css'\n\ntype BackgroundProps = {\n chapters: any,\n chapterIndex: number\n}\n\nexport class Background extends Component {\n mapElement: HTMLDivElement\n map: any\n\n componentDidMount () {\n const Map = require('./Map').default\n const mapboxChapters = this.props.chapters.map(chapter => chapter.mapbox)\n this.map = new Map(this.mapElement, mapboxChapters)\n }\n\n componentWillReceiveProps (nextProps: BackgroundProps) { // eslint-disable-line\n if (Number.isInteger(nextProps.chapterIndex) && nextProps.chapterIndex >= 0) {\n this.map.setActiveChapter(nextProps.chapterIndex)\n }\n }\n\n render () {\n return (\n
\n
(this.mapElement = elm)} className={styles.map} />\n
\n )\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Background.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"background\":\"dh-innafor-voldsepisoder-bergen-background\",\"root--noJs\":\"dh-innafor-voldsepisoder-bergen-root--noJs\",\"root--js\":\"dh-innafor-voldsepisoder-bergen-root--js\",\"app--visible\":\"dh-innafor-voldsepisoder-bergen-app--visible\",\"media--active\":\"dh-innafor-voldsepisoder-bergen-media--active\",\"map\":\"dh-innafor-voldsepisoder-bergen-map\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/Background.css\n// module id = 52\n// module chunks = 0","// @flow\n\n/* eslint-disable import/no-unresolved */\nimport './Map.css'\nimport mapboxgl from 'mapboxgl'\nimport greatCircle from '@turf/great-circle'\n// import '../../../static/back-pattern.png'\n\nexport default class Map {\n constructor (mapEl, chapters: Array) {\n this.mapReady = false\n this.addedPoints = []\n this.startTime = 0\n this.progress = 0\n this.framesPerSecond = 15\n this.initialOpacity = 1\n this.opacity = this.initialOpacity\n this.initialRadius = 12\n this.radius = this.initialRadius\n this.maxRadius = 25\n this.firstSymbolId = null\n this.activeIndex = 0\n this.chapters = chapters\n this.lineNames = []\n this.animatedLineNames = []\n this.polygonNames = []\n this.multiPolygonNames = []\n this.labelNames = []\n this.mapEl = mapEl\n this.animationLine = {\n 'type': 'Feature',\n 'geometry': {\n 'type': 'LineString',\n 'coordinates': []\n }\n }\n this.animationProgress = 0\n this.currentLine = null\n this.currentLineId = null\n this.lineGeometries = []\n // this.adaptChapterConfigBounds(this.chapters[0])\n\n mapboxgl.accessToken = 'pk.eyJ1IjoibnJrIiwiYSI6Ii14T3NfSzgifQ.0N5h3SI2b6bemxP_1YESIA'\n this.map = new mapboxgl.Map({\n ...this.chapters[this.activeIndex],\n container: mapEl,\n // style: 'mapbox://styles/nrk/cjda0mdyv8mwk2spdhnfk8upp',\n // style: 'mapbox://styles/nrk/cj07whxya001b2rr3t3qn875e',\n // style: 'mapbox://styles/nrk/cjd5nkoti4kph2spd13z34tmd', // BLå\n // style: 'mapbox://styles/nrk/cizjr6t96006v2smn4qp3l430', // NRK blue with satellite shading\n // style: 'mapbox://styles/nrk/cj07whxya001b2rr3t3qn875e', // Flybilder\n style: 'mapbox://styles/nrk/cjoicstuv10bd2ss5maaqzoaw', // Innafor - flybilder\n interactive: false,\n renderWorldCopies: false,\n attributionControl: false\n\n })\n\n this.map.on('load', () => {\n this.map.addLayer({\n id: 'raster-layer',\n type: 'raster',\n source: {\n type: 'raster',\n tiles: ['https://api.mapbox.com/v4/nrk.6gen9l2a/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibnJrIiwiYSI6Ii14T3NfSzgifQ.0N5h3SI2b6bemxP_1YESIA']\n },\n minzoom: 12,\n maxzoom: 22\n })\n // const layers = this.map.getStyle().layers\n // Find the index of the first symbol layer in the map style\n this.firstSymbolId = 2 // layers.find(layer => layer.type === 'symbol').id\n // this.map.addControl(new mapboxgl.ScaleControl())\n this.animateMarker(0)\n this.mapReady = true\n this.setActiveChapter(this.activeIndex, 0)\n // this.animationLoop(0)\n })\n }\n\n adaptChapterConfigBounds (chapterConfig) {\n const camera = this.map.cameraForBounds(chapterConfig.bounds)\n chapterConfig.zoom = camera.zoom\n chapterConfig.center = [camera.center.lng, camera.center.lat]\n }\n\n addChapter (chapter) {\n if (chapter.point) {\n for (let i = 0; i < this.addedPoints.length; i++) {\n if (this.map.getLayer(this.addedPoints[i]) !== undefined) {\n this.map.setPaintProperty(this.addedPoints[i], 'circle-opacity', 0)\n }\n }\n this.addPoint(chapter.point, chapter.id)\n }\n\n if (chapter.line) {\n this.addLine(chapter.line, chapter.id)\n }\n\n if (chapter.greatCircle) {\n this.addGreatCircle(chapter.greatCircle, chapter.mapColor, chapter.id)\n } else {\n this.currentLineId = null\n }\n\n if (chapter.polygon) {\n this.addPolygon(chapter.polygon, chapter.mapColor, chapter.id)\n }\n\n if (chapter.multiPolygon) {\n this.addMultiPolygon(chapter.multiPolygon, chapter.mapColor, chapter.id)\n }\n\n if (chapter.label) {\n this.addLabel(chapter.label, chapter.id)\n }\n\n if (chapter.labels) {\n chapter.labels.forEach((label, idx) => {\n this.addLabel(label, chapter.id + '_' + idx)\n })\n }\n }\n\n removeChapter (chapter) {\n if (chapter.point) {\n this.removePoint(chapter.id)\n }\n\n if (chapter.line) {\n this.removeLine(chapter.id)\n }\n\n if (chapter.greatCircle) {\n this.removeGreatCircle(chapter.id)\n }\n }\n\n fadeOutChapter (chapter) {\n if (chapter.polygon) {\n const polygonId = `polygon-${chapter.id}`\n if (this.map.getLayer(polygonId) !== undefined) {\n this.map.setPaintProperty(polygonId, 'fill-opacity', 0.5)\n }\n }\n if (chapter.multiPolygon) {\n const multiPolygonId = `multiPolygon-${chapter.id}`\n if (this.map.getLayer(multiPolygonId) !== undefined) {\n this.map.setPaintProperty(multiPolygonId, 'fill-opacity', 0.5)\n }\n }\n }\n\n fadeInChapter (chapter) {\n if (chapter.polygon) {\n const polygonId = `polygon-${chapter.id}`\n if (this.map.getLayer(polygonId) !== undefined) {\n this.map.setPaintProperty(polygonId, 'fill-opacity', 1)\n }\n }\n if (chapter.multiPolygon) {\n const multiPolygonId = `multiPolygon-${chapter.id}`\n if (this.map.getLayer(multiPolygonId) !== undefined) {\n this.map.setPaintProperty(multiPolygonId, 'fill-opacity', 1)\n }\n }\n }\n\n setActiveChapter (chapterIndex: number, duration) {\n this.activeIndex = chapterIndex\n if (!this.mapReady) {\n return\n }\n\n this.chapters.forEach((chapter, idx) => {\n if (idx < chapterIndex) {\n this.addChapter(chapter)\n this.fadeOutChapter(chapter)\n } else if (idx === chapterIndex) {\n this.addChapter(chapter)\n this.fadeInChapter(chapter)\n } else {\n this.removeChapter(chapter)\n this.fadeOutChapter(chapter)\n }\n })\n\n const activeChapter = this.chapters[chapterIndex]\n if (activeChapter.bounds) {\n this.adaptChapterConfigBounds(activeChapter)\n }\n\n if (duration === 0) {\n this.map.jumpTo(activeChapter)\n } else {\n const data = (activeChapter.polygon || {}).data || (activeChapter.multiPolygon || {}).data\n if (data && data.bbox) {\n this.map.fitBounds(data.bbox, {\n padding: 20,\n animate: true,\n duration: 2000\n })\n } else {\n this.map.flyTo(activeChapter)\n }\n }\n\n for (var i = 0; i < this.animatedLineNames.length; i++) {\n if (this.animatedLineNames[i] !== this.currentLineId) {\n this.map.getSource(this.animatedLineNames[i]).setData(this.lineGeometries[i])\n }\n }\n }\n\n animateMarker (timestamp) {\n setTimeout(() => {\n requestAnimationFrame(this.animateMarker.bind(this))\n let opacity = this.map.getZoom() + 1 - 15\n if (opacity < 0) {\n opacity = 0\n } else if (opacity > 1) {\n opacity = 1\n }\n\n this.map.setPaintProperty('raster-layer', 'raster-opacity', opacity)\n\n this.radius += (this.maxRadius - this.radius) / this.framesPerSecond\n this.opacity -= (0.9 / this.framesPerSecond)\n\n if (this.opacity <= 0) {\n this.radius = this.initialRadius\n this.opacity = this.initialOpacity\n }\n\n if (this.activeIndex === 7) {\n for (var i = 0; i < this.addedPoints.length; i++) {\n if (this.map.getLayer(this.addedPoints[i]) !== undefined) {\n this.map.setPaintProperty(this.addedPoints[i], 'circle-radius', this.radius)\n this.map.setPaintProperty(this.addedPoints[i], 'circle-opacity', this.opacity)\n }\n }\n } else {\n const currentPointName = `point-${this.chapters[this.activeIndex].id}`\n if (this.map.getLayer(currentPointName) !== undefined) {\n this.map.setPaintProperty(currentPointName, 'circle-radius', this.radius)\n this.map.setPaintProperty(currentPointName, 'circle-opacity', this.opacity)\n }\n }\n\n if (this.currentLine != null && this.currentLineId != null && this.animationProgress < this.currentLine.geometry.coordinates.length) {\n this.animationLine.geometry.coordinates.push(this.currentLine.geometry.coordinates[this.animationProgress])\n this.map.getSource(this.currentLineId).setData(this.animationLine)\n this.animationProgress++\n }\n }, 1000 / this.framesPerSecond)\n }\n\n toPaint (mapColor) {\n switch (mapColor) {\n case 'dark':\n return {\n 'fill-color': '#2f0101',\n 'fill-opacity': 0.9,\n 'fill-outline-color': '#2f0101'\n }\n case 'pattern':\n return {\n 'fill-pattern': 'tiny-checkers',\n 'fill-outline-color': '#2f0101'\n }\n default:\n return {\n 'fill-color': '#E1192A',\n 'fill-opacity': 0.9,\n 'fill-outline-color': '#2f0101'\n }\n }\n }\n\n addLabel (label, id) {\n const labelId = `label-${id}`\n if (this.labelNames.indexOf(labelId) === -1) {\n this.map.addLayer({\n 'id': labelId,\n 'type': 'symbol',\n 'source': {\n 'type': 'geojson',\n 'data': label.data\n },\n 'layout': {\n 'symbol-placement': 'point',\n 'text-font': ['Open Sans Regular'],\n 'text-field': label.data.properties.name,\n 'text-size': 18\n },\n 'paint': {\n 'text-color': '#111',\n 'text-halo-color': '#fff',\n 'text-halo-width': 1\n }\n }, this.firstSymbolId)\n this.labelNames.push(labelId)\n }\n }\n\n addLine (line, id) {\n const lineId = `line-${id}`\n if (this.lineNames.indexOf(lineId) === -1) {\n this.map.addLayer({\n 'id': lineId,\n 'type': 'line',\n 'source': {\n 'type': 'geojson',\n 'data': line.data\n },\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#bb1414',\n 'line-width': 5,\n 'line-opacity': 0.6\n }\n }, this.firstSymbolId)\n\n this.lineNames.push(lineId)\n }\n }\n\n addPolygon (polygon, mapColor, id) {\n const polygonId = `polygon-${id}`\n if (this.polygonNames.indexOf(polygonId) === -1) {\n this.map.addLayer({\n 'id': polygonId,\n 'type': 'fill',\n 'source': {\n 'type': 'geojson',\n 'data': polygon.data\n },\n 'paint': this.toPaint(mapColor),\n 'layout': {\n }\n }, this.firstSymbolId)\n this.polygonNames.push(polygonId)\n }\n }\n\n addMultiPolygon (multiPolygon, mapColor, id) {\n const multiPolygonId = `multiPolygon-${id}`\n if (this.multiPolygonNames.indexOf(multiPolygonId) === -1) {\n this.map.addLayer({\n 'id': multiPolygonId,\n 'type': 'fill',\n 'source': {\n 'type': 'geojson',\n 'data': multiPolygon.data\n },\n 'paint': this.toPaint(mapColor),\n 'layout': {\n }\n }, this.firstSymbolId)\n this.multiPolygonNames.push(multiPolygonId)\n }\n }\n\n addPoint (point, id) {\n const pointId = `point-${id}`\n if (this.addedPoints.indexOf(pointId) === -1) {\n this.map.addSource(pointId, {\n 'type': 'geojson',\n 'data': {\n 'type': 'Point',\n 'coordinates': [\n point.lon, point.lat\n ]\n }\n })\n\n this.map.addLayer({\n 'id': pointId,\n 'source': pointId,\n 'type': 'circle',\n 'paint': {\n 'circle-radius': this.initialRadius,\n 'circle-radius-transition': { duration: 0 },\n 'circle-opacity-transition': { duration: 0 },\n 'circle-color': '#dd0000'\n }\n })\n\n this.map.addLayer({\n 'id': pointId + '_base',\n 'source': pointId,\n 'type': 'circle',\n 'paint': {\n 'circle-radius': 10,\n 'circle-color': '#aa0000',\n 'circle-opacity': 0.7\n }\n })\n\n this.addedPoints.push(pointId)\n }\n }\n\n removeLine (id) {\n const lineId = `line-${id}`\n if (this.map.getLayer(lineId) !== undefined) {\n this.map.removeLayer(lineId)\n this.map.removeSource(lineId)\n\n this.lineNames.splice(this.lineNames.indexOf(lineId), 1)\n }\n }\n\n removePoint (id) {\n const pointId = `point-${id}`\n if (this.map.getLayer(pointId) !== undefined) {\n this.map.removeLayer(pointId)\n this.map.removeLayer(pointId + '_base')\n this.map.removeSource(pointId)\n\n this.addedPoints.splice(this.addedPoints.indexOf(pointId), 1)\n }\n }\n\n addGreatCircle (startStop, mapColor, id) {\n // const start = turf.point([-122, 48])\n // const end = turf.point([-77, 39])\n\n this.animationLine.geometry.coordinates = []\n this.animationProgress = 0\n this.currentLine = greatCircle(startStop.start, startStop.stop, { 'name': 'Oslo til New York' })\n\n const lineId = `line-${id}`\n this.currentLineId = lineId\n if (this.animatedLineNames.indexOf(lineId) === -1) {\n this.lineGeometries.push(this.currentLine)\n\n this.map.addLayer({\n 'id': lineId,\n 'type': 'line',\n 'source': {\n 'type': 'geojson',\n 'data': this.animationLine\n },\n 'layout': {\n 'line-cap': 'round',\n 'line-join': 'round'\n },\n 'paint': {\n 'line-color': '#bb1414',\n 'line-width': 5,\n 'line-opacity': 0.6,\n 'line-dasharray': [2, 2]\n }\n }, this.firstSymbolId)\n\n this.animatedLineNames.push(lineId)\n }\n }\n\n removeGreatCircle (id) {\n const lineId = `line-${id}`\n if (this.map.getLayer(lineId) !== undefined) {\n this.map.removeLayer(lineId)\n // this.map.removeLayer(lineId + '_base')\n this.map.removeSource(lineId)\n\n const index = this.animatedLineNames.indexOf(lineId)\n this.animatedLineNames.splice(index, 1)\n this.lineGeometries.splice(index, 1)\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/Map.js","// removed by extract-text-webpack-plugin\nmodule.exports = {\"map\":\"dh-innafor-voldsepisoder-bergen-map\"};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/v1/components/Map.css\n// module id = 54\n// module chunks = 0","module.exports = mapboxgl;\n\n\n//////////////////\n// WEBPACK FOOTER\n// external \"mapboxgl\"\n// module id = 55\n// module chunks = 0","import { getCoord } from '@turf/invariant';\n\nvar D2R = Math.PI / 180;\nvar R2D = 180 / Math.PI;\n\nvar Coord = function (lon, lat) {\n this.lon = lon;\n this.lat = lat;\n this.x = D2R * lon;\n this.y = D2R * lat;\n};\n\nCoord.prototype.view = function () {\n return String(this.lon).slice(0, 4) + ',' + String(this.lat).slice(0, 4);\n};\n\nCoord.prototype.antipode = function () {\n var anti_lat = -1 * this.lat;\n var anti_lon = (this.lon < 0) ? 180 + this.lon : (180 - this.lon) * -1;\n return new Coord(anti_lon, anti_lat);\n};\n\nvar LineString = function () {\n this.coords = [];\n this.length = 0;\n};\n\nLineString.prototype.move_to = function (coord) {\n this.length++;\n this.coords.push(coord);\n};\n\nvar Arc = function (properties) {\n this.properties = properties || {};\n this.geometries = [];\n};\n\nArc.prototype.json = function () {\n if (this.geometries.length <= 0) {\n return {'geometry': { 'type': 'LineString', 'coordinates': null },\n 'type': 'Feature', 'properties': this.properties\n };\n } else if (this.geometries.length === 1) {\n return {'geometry': { 'type': 'LineString', 'coordinates': this.geometries[0].coords },\n 'type': 'Feature', 'properties': this.properties\n };\n } else {\n var multiline = [];\n for (var i = 0; i < this.geometries.length; i++) {\n multiline.push(this.geometries[i].coords);\n }\n return {'geometry': { 'type': 'MultiLineString', 'coordinates': multiline },\n 'type': 'Feature', 'properties': this.properties\n };\n }\n};\n\n// TODO - output proper multilinestring\nArc.prototype.wkt = function () {\n var wkt_string = '';\n var wkt = 'LINESTRING(';\n var collect = function (c) { wkt += c[0] + ' ' + c[1] + ','; };\n for (var i = 0; i < this.geometries.length; i++) {\n if (this.geometries[i].coords.length === 0) {\n return 'LINESTRING(empty)';\n } else {\n var coords = this.geometries[i].coords;\n coords.forEach(collect);\n wkt_string += wkt.substring(0, wkt.length - 1) + ')';\n }\n }\n return wkt_string;\n};\n\n/*\n * http://en.wikipedia.org/wiki/Great-circle_distance\n *\n */\nvar GreatCircle = function (start, end, properties) {\n if (!start || start.x === undefined || start.y === undefined) {\n throw new Error('GreatCircle constructor expects two args: start and end objects with x and y properties');\n }\n if (!end || end.x === undefined || end.y === undefined) {\n throw new Error('GreatCircle constructor expects two args: start and end objects with x and y properties');\n }\n this.start = new Coord(start.x, start.y);\n this.end = new Coord(end.x, end.y);\n this.properties = properties || {};\n\n var w = this.start.x - this.end.x;\n var h = this.start.y - this.end.y;\n var z = Math.pow(Math.sin(h / 2.0), 2) +\n Math.cos(this.start.y) *\n Math.cos(this.end.y) *\n Math.pow(Math.sin(w / 2.0), 2);\n this.g = 2.0 * Math.asin(Math.sqrt(z));\n\n if (this.g === Math.PI) {\n throw new Error('it appears ' + start.view() + ' and ' + end.view() + ' are \\'antipodal\\', e.g diametrically opposite, thus there is no single route but rather infinite');\n } else if (isNaN(this.g)) {\n throw new Error('could not calculate great circle between ' + start + ' and ' + end);\n }\n};\n\n/*\n * http://williams.best.vwh.net/avform.htm#Intermediate\n */\nGreatCircle.prototype.interpolate = function (f) {\n var A = Math.sin((1 - f) * this.g) / Math.sin(this.g);\n var B = Math.sin(f * this.g) / Math.sin(this.g);\n var x = A * Math.cos(this.start.y) * Math.cos(this.start.x) + B * Math.cos(this.end.y) * Math.cos(this.end.x);\n var y = A * Math.cos(this.start.y) * Math.sin(this.start.x) + B * Math.cos(this.end.y) * Math.sin(this.end.x);\n var z = A * Math.sin(this.start.y) + B * Math.sin(this.end.y);\n var lat = R2D * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)));\n var lon = R2D * Math.atan2(y, x);\n return [lon, lat];\n};\n\n\n\n/*\n * Generate points along the great circle\n */\nGreatCircle.prototype.Arc = function (npoints, options) {\n var first_pass = [];\n if (!npoints || npoints <= 2) {\n first_pass.push([this.start.lon, this.start.lat]);\n first_pass.push([this.end.lon, this.end.lat]);\n } else {\n var delta = 1.0 / (npoints - 1);\n for (var i = 0; i < npoints; ++i) {\n var step = delta * i;\n var pair = this.interpolate(step);\n first_pass.push(pair);\n }\n }\n /* partial port of dateline handling from:\n gdal/ogr/ogrgeometryfactory.cpp\n\n TODO - does not handle all wrapping scenarios yet\n */\n var bHasBigDiff = false;\n var dfMaxSmallDiffLong = 0;\n // from http://www.gdal.org/ogr2ogr.html\n // -datelineoffset:\n // (starting with GDAL 1.10) offset from dateline in degrees (default long. = +/- 10deg, geometries within 170deg to -170deg will be splited)\n var dfDateLineOffset = options && options.offset ? options.offset : 10;\n var dfLeftBorderX = 180 - dfDateLineOffset;\n var dfRightBorderX = -180 + dfDateLineOffset;\n var dfDiffSpace = 360 - dfDateLineOffset;\n\n // https://github.com/OSGeo/gdal/blob/7bfb9c452a59aac958bff0c8386b891edf8154ca/gdal/ogr/ogrgeometryfactory.cpp#L2342\n for (var j = 1; j < first_pass.length; ++j) {\n var dfPrevX = first_pass[j - 1][0];\n var dfX = first_pass[j][0];\n var dfDiffLong = Math.abs(dfX - dfPrevX);\n if (dfDiffLong > dfDiffSpace &&\n ((dfX > dfLeftBorderX && dfPrevX < dfRightBorderX) || (dfPrevX > dfLeftBorderX && dfX < dfRightBorderX))) {\n bHasBigDiff = true;\n } else if (dfDiffLong > dfMaxSmallDiffLong) {\n dfMaxSmallDiffLong = dfDiffLong;\n }\n }\n\n var poMulti = [];\n if (bHasBigDiff && dfMaxSmallDiffLong < dfDateLineOffset) {\n var poNewLS = [];\n poMulti.push(poNewLS);\n for (var k = 0; k < first_pass.length; ++k) {\n var dfX0 = parseFloat(first_pass[k][0]);\n if (k > 0 && Math.abs(dfX0 - first_pass[k - 1][0]) > dfDiffSpace) {\n var dfX1 = parseFloat(first_pass[k - 1][0]);\n var dfY1 = parseFloat(first_pass[k - 1][1]);\n var dfX2 = parseFloat(first_pass[k][0]);\n var dfY2 = parseFloat(first_pass[k][1]);\n if (dfX1 > -180 && dfX1 < dfRightBorderX && dfX2 === 180 &&\n k + 1 < first_pass.length &&\n first_pass[k - 1][0] > -180 && first_pass[k - 1][0] < dfRightBorderX) {\n poNewLS.push([-180, first_pass[k][1]]);\n k++;\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n continue;\n } else if (dfX1 > dfLeftBorderX && dfX1 < 180 && dfX2 === -180 &&\n k + 1 < first_pass.length &&\n first_pass[k - 1][0] > dfLeftBorderX && first_pass[k - 1][0] < 180) {\n poNewLS.push([180, first_pass[k][1]]);\n k++;\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n continue;\n }\n\n if (dfX1 < dfRightBorderX && dfX2 > dfLeftBorderX) {\n // swap dfX1, dfX2\n var tmpX = dfX1;\n dfX1 = dfX2;\n dfX2 = tmpX;\n // swap dfY1, dfY2\n var tmpY = dfY1;\n dfY1 = dfY2;\n dfY2 = tmpY;\n }\n if (dfX1 > dfLeftBorderX && dfX2 < dfRightBorderX) {\n dfX2 += 360;\n }\n\n if (dfX1 <= 180 && dfX2 >= 180 && dfX1 < dfX2) {\n var dfRatio = (180 - dfX1) / (dfX2 - dfX1);\n var dfY = dfRatio * dfY2 + (1 - dfRatio) * dfY1;\n poNewLS.push([first_pass[k - 1][0] > dfLeftBorderX ? 180 : -180, dfY]);\n poNewLS = [];\n poNewLS.push([first_pass[k - 1][0] > dfLeftBorderX ? -180 : 180, dfY]);\n poMulti.push(poNewLS);\n } else {\n poNewLS = [];\n poMulti.push(poNewLS);\n }\n poNewLS.push([dfX0, first_pass[k][1]]);\n } else {\n poNewLS.push([first_pass[k][0], first_pass[k][1]]);\n }\n }\n } else {\n // add normally\n var poNewLS0 = [];\n poMulti.push(poNewLS0);\n for (var l = 0; l < first_pass.length; ++l) {\n poNewLS0.push([first_pass[l][0], first_pass[l][1]]);\n }\n }\n\n var arc = new Arc(this.properties);\n for (var m = 0; m < poMulti.length; ++m) {\n var line = new LineString();\n arc.geometries.push(line);\n var points = poMulti[m];\n for (var j0 = 0; j0 < points.length; ++j0) {\n line.move_to(points[j0]);\n }\n }\n return arc;\n};\n\n/**\n * Calculate great circles routes as {@link LineString}\n *\n * @name greatCircle\n * @param {Coord} start source point feature\n * @param {Coord} end destination point feature\n * @param {Object} [options={}] Optional parameters\n * @param {Object} [options.properties={}] line feature properties\n * @param {number} [options.npoints=100] number of points\n * @param {number} [options.offset=10] offset controls the likelyhood that lines will\n * be split which cross the dateline. The higher the number the more likely.\n * @returns {Feature} great circle line feature\n * @example\n * var start = turf.point([-122, 48]);\n * var end = turf.point([-77, 39]);\n *\n * var greatCircle = turf.greatCircle(start, end, {'name': 'Seattle to DC'});\n *\n * //addToMap\n * var addToMap = [start, end, greatCircle]\n */\nfunction greatCircle(start, end, options) {\n // Optional parameters\n options = options || {};\n if (typeof options !== 'object') throw new Error('options is invalid');\n var properties = options.properties;\n var npoints = options.npoints;\n var offset = options.offset;\n\n start = getCoord(start);\n end = getCoord(end);\n properties = properties || {};\n npoints = npoints || 100;\n offset = offset || 10;\n\n var generator = new GreatCircle({x: start[0], y: start[1]}, {x: end[0], y: end[1]}, properties);\n\n /* eslint-disable */\n var line = generator.Arc(npoints, {offset: offset});\n /* eslint-enable */\n\n return line.json();\n}\n\nexport default greatCircle;\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@turf/great-circle/main.es.js","import { isNumber } from '@turf/helpers';\n\n/**\n * Unwrap a coordinate from a Point Feature, Geometry or a single coordinate.\n *\n * @name getCoord\n * @param {Array|Geometry|Feature} coord GeoJSON Point or an Array of numbers\n * @returns {Array} coordinates\n * @example\n * var pt = turf.point([10, 10]);\n *\n * var coord = turf.getCoord(pt);\n * //= [10, 10]\n */\nfunction getCoord(coord) {\n if (!coord) throw new Error('coord is required');\n if (coord.type === 'Feature' && coord.geometry !== null && coord.geometry.type === 'Point') return coord.geometry.coordinates;\n if (coord.type === 'Point') return coord.coordinates;\n if (Array.isArray(coord) && coord.length >= 2 && coord[0].length === undefined && coord[1].length === undefined) return coord;\n\n throw new Error('coord must be GeoJSON Point or an Array of numbers');\n}\n\n/**\n * Unwrap coordinates from a Feature, Geometry Object or an Array\n *\n * @name getCoords\n * @param {Array|Geometry|Feature} coords Feature, Geometry Object or an Array\n * @returns {Array} coordinates\n * @example\n * var poly = turf.polygon([[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]);\n *\n * var coords = turf.getCoords(poly);\n * //= [[[119.32, -8.7], [119.55, -8.69], [119.51, -8.54], [119.32, -8.7]]]\n */\nfunction getCoords(coords) {\n if (!coords) throw new Error('coords is required');\n\n // Feature\n if (coords.type === 'Feature' && coords.geometry !== null) return coords.geometry.coordinates;\n\n // Geometry\n if (coords.coordinates) return coords.coordinates;\n\n // Array of numbers\n if (Array.isArray(coords)) return coords;\n\n throw new Error('coords must be GeoJSON Feature, Geometry Object or an Array');\n}\n\n/**\n * Checks if coordinates contains a number\n *\n * @name containsNumber\n * @param {Array} coordinates GeoJSON Coordinates\n * @returns {boolean} true if Array contains a number\n */\nfunction containsNumber(coordinates) {\n if (coordinates.length > 1 && isNumber(coordinates[0]) && isNumber(coordinates[1])) {\n return true;\n }\n\n if (Array.isArray(coordinates[0]) && coordinates[0].length) {\n return containsNumber(coordinates[0]);\n }\n throw new Error('coordinates must only contain numbers');\n}\n\n/**\n * Enforce expectations about types of GeoJSON objects for Turf.\n *\n * @name geojsonType\n * @param {GeoJSON} value any GeoJSON object\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction geojsonType(value, type, name) {\n if (!type || !name) throw new Error('type and name required');\n\n if (!value || value.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + value.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link Feature} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name featureOf\n * @param {Feature} feature a feature with an expected geometry type\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} error if value is not the expected type.\n */\nfunction featureOf(feature, type, name) {\n if (!feature) throw new Error('No feature passed');\n if (!name) throw new Error('.featureOf() requires a name');\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n}\n\n/**\n * Enforce expectations about types of {@link FeatureCollection} inputs for Turf.\n * Internally this uses {@link geojsonType} to judge geometry types.\n *\n * @name collectionOf\n * @param {FeatureCollection} featureCollection a FeatureCollection for which features will be judged\n * @param {string} type expected GeoJSON type\n * @param {string} name name of calling function\n * @throws {Error} if value is not the expected type.\n */\nfunction collectionOf(featureCollection, type, name) {\n if (!featureCollection) throw new Error('No featureCollection passed');\n if (!name) throw new Error('.collectionOf() requires a name');\n if (!featureCollection || featureCollection.type !== 'FeatureCollection') {\n throw new Error('Invalid input to ' + name + ', FeatureCollection required');\n }\n for (var i = 0; i < featureCollection.features.length; i++) {\n var feature = featureCollection.features[i];\n if (!feature || feature.type !== 'Feature' || !feature.geometry) {\n throw new Error('Invalid input to ' + name + ', Feature with geometry required');\n }\n if (!feature.geometry || feature.geometry.type !== type) {\n throw new Error('Invalid input to ' + name + ': must be a ' + type + ', given ' + feature.geometry.type);\n }\n }\n}\n\n/**\n * Get Geometry from Feature or Geometry Object\n *\n * @param {Feature|Geometry} geojson GeoJSON Feature or Geometry Object\n * @returns {Geometry|null} GeoJSON Geometry Object\n * @throws {Error} if geojson is not a Feature or Geometry Object\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getGeom(point)\n * //={\"type\": \"Point\", \"coordinates\": [110, 40]}\n */\nfunction getGeom(geojson) {\n if (!geojson) throw new Error('geojson is required');\n if (geojson.geometry !== undefined) return geojson.geometry;\n if (geojson.coordinates || geojson.geometries) return geojson;\n throw new Error('geojson must be a valid Feature or Geometry Object');\n}\n\n/**\n * Get Geometry Type from Feature or Geometry Object\n *\n * @throws {Error} **DEPRECATED** in v5.0.0 in favor of getType\n */\nfunction getGeomType() {\n throw new Error('invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType');\n}\n\n/**\n * Get GeoJSON object's type, Geometry type is prioritize.\n *\n * @param {GeoJSON} geojson GeoJSON object\n * @param {string} [name=\"geojson\"] name of the variable to display in error message\n * @returns {string} GeoJSON type\n * @example\n * var point = {\n * \"type\": \"Feature\",\n * \"properties\": {},\n * \"geometry\": {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 40]\n * }\n * }\n * var geom = turf.getType(point)\n * //=\"Point\"\n */\nfunction getType(geojson, name) {\n if (!geojson) throw new Error((name || 'geojson') + ' is required');\n // GeoJSON Feature & GeometryCollection\n if (geojson.geometry && geojson.geometry.type) return geojson.geometry.type;\n // GeoJSON Geometry & FeatureCollection\n if (geojson.type) return geojson.type;\n throw new Error((name || 'geojson') + ' is invalid');\n}\n\nexport { getCoord, getCoords, containsNumber, geojsonType, featureOf, collectionOf, getGeom, getGeomType, getType };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@turf/invariant/main.es.js","/**\n * Earth Radius used with the Harvesine formula and approximates using a spherical (non-ellipsoid) Earth.\n */\nvar earthRadius = 6371008.8;\n\n/**\n * Unit of measurement factors using a spherical (non-ellipsoid) earth radius.\n */\nvar factors = {\n meters: earthRadius,\n metres: earthRadius,\n millimeters: earthRadius * 1000,\n millimetres: earthRadius * 1000,\n centimeters: earthRadius * 100,\n centimetres: earthRadius * 100,\n kilometers: earthRadius / 1000,\n kilometres: earthRadius / 1000,\n miles: earthRadius / 1609.344,\n nauticalmiles: earthRadius / 1852,\n inches: earthRadius * 39.370,\n yards: earthRadius / 1.0936,\n feet: earthRadius * 3.28084,\n radians: 1,\n degrees: earthRadius / 111325,\n};\n\n/**\n * Units of measurement factors based on 1 meter.\n */\nvar unitsFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000,\n millimetres: 1000,\n centimeters: 100,\n centimetres: 100,\n kilometers: 1 / 1000,\n kilometres: 1 / 1000,\n miles: 1 / 1609.344,\n nauticalmiles: 1 / 1852,\n inches: 39.370,\n yards: 1 / 1.0936,\n feet: 3.28084,\n radians: 1 / earthRadius,\n degrees: 1 / 111325,\n};\n\n/**\n * Area of measurement factors based on 1 square meter.\n */\nvar areaFactors = {\n meters: 1,\n metres: 1,\n millimeters: 1000000,\n millimetres: 1000000,\n centimeters: 10000,\n centimetres: 10000,\n kilometers: 0.000001,\n kilometres: 0.000001,\n acres: 0.000247105,\n miles: 3.86e-7,\n yards: 1.195990046,\n feet: 10.763910417,\n inches: 1550.003100006\n};\n\n/**\n * Wraps a GeoJSON {@link Geometry} in a GeoJSON {@link Feature}.\n *\n * @name feature\n * @param {Geometry} geometry input geometry\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON Feature\n * @example\n * var geometry = {\n * \"type\": \"Point\",\n * \"coordinates\": [110, 50]\n * };\n *\n * var feature = turf.feature(geometry);\n *\n * //=feature\n */\nfunction feature(geometry, properties, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (geometry === undefined) throw new Error('geometry is required');\n if (properties && properties.constructor !== Object) throw new Error('properties must be an Object');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var feat = {type: 'Feature'};\n if (id) feat.id = id;\n if (bbox) feat.bbox = bbox;\n feat.properties = properties || {};\n feat.geometry = geometry;\n return feat;\n}\n\n/**\n * Creates a GeoJSON {@link Geometry} from a Geometry string type & coordinates.\n * For GeometryCollection type use `helpers.geometryCollection`\n *\n * @name geometry\n * @param {string} type Geometry Type\n * @param {Array} coordinates Coordinates\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Geometry\n * @returns {Geometry} a GeoJSON Geometry\n * @example\n * var type = 'Point';\n * var coordinates = [110, 50];\n *\n * var geometry = turf.geometry(type, coordinates);\n *\n * //=geometry\n */\nfunction geometry(type, coordinates, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n\n // Validation\n if (!type) throw new Error('type is required');\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (bbox) validateBBox(bbox);\n\n // Main\n var geom;\n switch (type) {\n case 'Point': geom = point(coordinates).geometry; break;\n case 'LineString': geom = lineString(coordinates).geometry; break;\n case 'Polygon': geom = polygon(coordinates).geometry; break;\n case 'MultiPoint': geom = multiPoint(coordinates).geometry; break;\n case 'MultiLineString': geom = multiLineString(coordinates).geometry; break;\n case 'MultiPolygon': geom = multiPolygon(coordinates).geometry; break;\n default: throw new Error(type + ' is invalid');\n }\n if (bbox) geom.bbox = bbox;\n return geom;\n}\n\n/**\n * Creates a {@link Point} {@link Feature} from a Position.\n *\n * @name point\n * @param {Array} coordinates longitude, latitude position (each in decimal degrees)\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a Point feature\n * @example\n * var point = turf.point([-75.343, 39.984]);\n *\n * //=point\n */\nfunction point(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n if (coordinates.length < 2) throw new Error('coordinates must be at least 2 numbers long');\n if (!isNumber(coordinates[0]) || !isNumber(coordinates[1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'Point',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Point} {@link FeatureCollection} from an Array of Point coordinates.\n *\n * @name points\n * @param {Array>} coordinates an array of Points\n * @param {Object} [properties={}] Translate these properties to each Feature\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Point Feature\n * @example\n * var points = turf.points([\n * [-75, 39],\n * [-80, 45],\n * [-78, 50]\n * ]);\n *\n * //=points\n */\nfunction points(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return point(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link Polygon} {@link Feature} from an Array of LinearRings.\n *\n * @name polygon\n * @param {Array>>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} Polygon Feature\n * @example\n * var polygon = turf.polygon([[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]], { name: 'poly1' });\n *\n * //=polygon\n */\nfunction polygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n for (var i = 0; i < coordinates.length; i++) {\n var ring = coordinates[i];\n if (ring.length < 4) {\n throw new Error('Each LinearRing of a Polygon must have 4 or more Positions.');\n }\n for (var j = 0; j < ring[ring.length - 1].length; j++) {\n // Check if first point of Polygon contains two numbers\n if (i === 0 && j === 0 && !isNumber(ring[0][0]) || !isNumber(ring[0][1])) throw new Error('coordinates must contain numbers');\n if (ring[ring.length - 1][j] !== ring[0][j]) {\n throw new Error('First and last Position are not equivalent.');\n }\n }\n }\n\n return feature({\n type: 'Polygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Polygon} {@link FeatureCollection} from an Array of Polygon coordinates.\n *\n * @name polygons\n * @param {Array>>>} coordinates an array of Polygon coordinates\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} Polygon FeatureCollection\n * @example\n * var polygons = turf.polygons([\n * [[[-5, 52], [-4, 56], [-2, 51], [-7, 54], [-5, 52]]],\n * [[[-15, 42], [-14, 46], [-12, 41], [-17, 44], [-15, 42]]],\n * ]);\n *\n * //=polygons\n */\nfunction polygons(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return polygon(coords, properties);\n }), options);\n}\n\n/**\n * Creates a {@link LineString} {@link Feature} from an Array of Positions.\n *\n * @name lineString\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} LineString Feature\n * @example\n * var linestring1 = turf.lineString([[-24, 63], [-23, 60], [-25, 65], [-20, 69]], {name: 'line 1'});\n * var linestring2 = turf.lineString([[-14, 43], [-13, 40], [-15, 45], [-10, 49]], {name: 'line 2'});\n *\n * //=linestring1\n * //=linestring2\n */\nfunction lineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (coordinates.length < 2) throw new Error('coordinates must be an array of two or more positions');\n // Check if first point of LineString contains two numbers\n if (!isNumber(coordinates[0][1]) || !isNumber(coordinates[0][1])) throw new Error('coordinates must contain numbers');\n\n return feature({\n type: 'LineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link LineString} {@link FeatureCollection} from an Array of LineString coordinates.\n *\n * @name lineStrings\n * @param {Array>} coordinates an array of LinearRings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the FeatureCollection\n * @param {string|number} [options.id] Identifier associated with the FeatureCollection\n * @returns {FeatureCollection} LineString FeatureCollection\n * @example\n * var linestrings = turf.lineStrings([\n * [[-24, 63], [-23, 60], [-25, 65], [-20, 69]],\n * [[-14, 43], [-13, 40], [-15, 45], [-10, 49]]\n * ]);\n *\n * //=linestrings\n */\nfunction lineStrings(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n if (!Array.isArray(coordinates)) throw new Error('coordinates must be an Array');\n\n return featureCollection(coordinates.map(function (coords) {\n return lineString(coords, properties);\n }), options);\n}\n\n/**\n * Takes one or more {@link Feature|Features} and creates a {@link FeatureCollection}.\n *\n * @name featureCollection\n * @param {Feature[]} features input features\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {FeatureCollection} FeatureCollection of Features\n * @example\n * var locationA = turf.point([-75.343, 39.984], {name: 'Location A'});\n * var locationB = turf.point([-75.833, 39.284], {name: 'Location B'});\n * var locationC = turf.point([-75.534, 39.123], {name: 'Location C'});\n *\n * var collection = turf.featureCollection([\n * locationA,\n * locationB,\n * locationC\n * ]);\n *\n * //=collection\n */\nfunction featureCollection(features, options) {\n // Optional Parameters\n options = options || {};\n if (!isObject(options)) throw new Error('options is invalid');\n var bbox = options.bbox;\n var id = options.id;\n\n // Validation\n if (!features) throw new Error('No features passed');\n if (!Array.isArray(features)) throw new Error('features must be an Array');\n if (bbox) validateBBox(bbox);\n if (id) validateId(id);\n\n // Main\n var fc = {type: 'FeatureCollection'};\n if (id) fc.id = id;\n if (bbox) fc.bbox = bbox;\n fc.features = features;\n return fc;\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiLineString\n * @param {Array>>} coordinates an array of LineStrings\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiLineString feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiLine = turf.multiLineString([[[0,0],[10,10]]]);\n *\n * //=multiLine\n */\nfunction multiLineString(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiLineString',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPoint\n * @param {Array>} coordinates an array of Positions\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a MultiPoint feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPt = turf.multiPoint([[0,0],[10,10]]);\n *\n * //=multiPt\n */\nfunction multiPoint(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPoint',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name multiPolygon\n * @param {Array>>>} coordinates an array of Polygons\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a multipolygon feature\n * @throws {Error} if no coordinates are passed\n * @example\n * var multiPoly = turf.multiPolygon([[[[0,0],[0,10],[10,10],[10,0],[0,0]]]]);\n *\n * //=multiPoly\n *\n */\nfunction multiPolygon(coordinates, properties, options) {\n if (!coordinates) throw new Error('coordinates is required');\n\n return feature({\n type: 'MultiPolygon',\n coordinates: coordinates\n }, properties, options);\n}\n\n/**\n * Creates a {@link Feature} based on a\n * coordinate array. Properties can be added optionally.\n *\n * @name geometryCollection\n * @param {Array} geometries an array of GeoJSON Geometries\n * @param {Object} [properties={}] an Object of key-value pairs to add as properties\n * @param {Object} [options={}] Optional Parameters\n * @param {Array} [options.bbox] Bounding Box Array [west, south, east, north] associated with the Feature\n * @param {string|number} [options.id] Identifier associated with the Feature\n * @returns {Feature} a GeoJSON GeometryCollection Feature\n * @example\n * var pt = {\n * \"type\": \"Point\",\n * \"coordinates\": [100, 0]\n * };\n * var line = {\n * \"type\": \"LineString\",\n * \"coordinates\": [ [101, 0], [102, 1] ]\n * };\n * var collection = turf.geometryCollection([pt, line]);\n *\n * //=collection\n */\nfunction geometryCollection(geometries, properties, options) {\n if (!geometries) throw new Error('geometries is required');\n if (!Array.isArray(geometries)) throw new Error('geometries must be an Array');\n\n return feature({\n type: 'GeometryCollection',\n geometries: geometries\n }, properties, options);\n}\n\n/**\n * Round number to precision\n *\n * @param {number} num Number\n * @param {number} [precision=0] Precision\n * @returns {number} rounded number\n * @example\n * turf.round(120.4321)\n * //=120\n *\n * turf.round(120.4321, 2)\n * //=120.43\n */\nfunction round(num, precision) {\n if (num === undefined || num === null || isNaN(num)) throw new Error('num is required');\n if (precision && !(precision >= 0)) throw new Error('precision must be a positive number');\n var multiplier = Math.pow(10, precision || 0);\n return Math.round(num * multiplier) / multiplier;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from radians to a more friendly unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name radiansToLength\n * @param {number} radians in radians across the sphere\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} distance\n */\nfunction radiansToLength(radians, units) {\n if (radians === undefined || radians === null) throw new Error('radians is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return radians * factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into radians\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @name lengthToRadians\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} radians\n */\nfunction lengthToRadians(distance, units) {\n if (distance === undefined || distance === null) throw new Error('distance is required');\n\n if (units && typeof units !== 'string') throw new Error('units must be a string');\n var factor = factors[units || 'kilometers'];\n if (!factor) throw new Error(units + ' units is invalid');\n return distance / factor;\n}\n\n/**\n * Convert a distance measurement (assuming a spherical Earth) from a real-world unit into degrees\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, centimeters, kilometres, feet\n *\n * @name lengthToDegrees\n * @param {number} distance in real units\n * @param {string} [units='kilometers'] can be degrees, radians, miles, or kilometers inches, yards, metres, meters, kilometres, kilometers.\n * @returns {number} degrees\n */\nfunction lengthToDegrees(distance, units) {\n return radiansToDegrees(lengthToRadians(distance, units));\n}\n\n/**\n * Converts any bearing angle from the north line direction (positive clockwise)\n * and returns an angle between 0-360 degrees (positive clockwise), 0 being the north line\n *\n * @name bearingToAzimuth\n * @param {number} bearing angle, between -180 and +180 degrees\n * @returns {number} angle between 0 and 360 degrees\n */\nfunction bearingToAzimuth(bearing) {\n if (bearing === null || bearing === undefined) throw new Error('bearing is required');\n\n var angle = bearing % 360;\n if (angle < 0) angle += 360;\n return angle;\n}\n\n/**\n * Converts an angle in radians to degrees\n *\n * @name radiansToDegrees\n * @param {number} radians angle in radians\n * @returns {number} degrees between 0 and 360 degrees\n */\nfunction radiansToDegrees(radians) {\n if (radians === null || radians === undefined) throw new Error('radians is required');\n\n var degrees = radians % (2 * Math.PI);\n return degrees * 180 / Math.PI;\n}\n\n/**\n * Converts an angle in degrees to radians\n *\n * @name degreesToRadians\n * @param {number} degrees angle between 0 and 360 degrees\n * @returns {number} angle in radians\n */\nfunction degreesToRadians(degrees) {\n if (degrees === null || degrees === undefined) throw new Error('degrees is required');\n\n var radians = degrees % 360;\n return radians * Math.PI / 180;\n}\n\n/**\n * Converts a length to the requested unit.\n * Valid units: miles, nauticalmiles, inches, yards, meters, metres, kilometers, centimeters, feet\n *\n * @param {number} length to be converted\n * @param {string} originalUnit of the length\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted length\n */\nfunction convertLength(length, originalUnit, finalUnit) {\n if (length === null || length === undefined) throw new Error('length is required');\n if (!(length >= 0)) throw new Error('length must be a positive number');\n\n return radiansToLength(lengthToRadians(length, originalUnit), finalUnit || 'kilometers');\n}\n\n/**\n * Converts a area to the requested unit.\n * Valid units: kilometers, kilometres, meters, metres, centimetres, millimeters, acres, miles, yards, feet, inches\n * @param {number} area to be converted\n * @param {string} [originalUnit='meters'] of the distance\n * @param {string} [finalUnit='kilometers'] returned unit\n * @returns {number} the converted distance\n */\nfunction convertArea(area, originalUnit, finalUnit) {\n if (area === null || area === undefined) throw new Error('area is required');\n if (!(area >= 0)) throw new Error('area must be a positive number');\n\n var startFactor = areaFactors[originalUnit || 'meters'];\n if (!startFactor) throw new Error('invalid original units');\n\n var finalFactor = areaFactors[finalUnit || 'kilometers'];\n if (!finalFactor) throw new Error('invalid final units');\n\n return (area / startFactor) * finalFactor;\n}\n\n/**\n * isNumber\n *\n * @param {*} num Number to validate\n * @returns {boolean} true/false\n * @example\n * turf.isNumber(123)\n * //=true\n * turf.isNumber('foo')\n * //=false\n */\nfunction isNumber(num) {\n return !isNaN(num) && num !== null && !Array.isArray(num);\n}\n\n/**\n * isObject\n *\n * @param {*} input variable to validate\n * @returns {boolean} true/false\n * @example\n * turf.isObject({elevation: 10})\n * //=true\n * turf.isObject('foo')\n * //=false\n */\nfunction isObject(input) {\n return (!!input) && (input.constructor === Object);\n}\n\n/**\n * Validate BBox\n *\n * @private\n * @param {Array} bbox BBox to validate\n * @returns {void}\n * @throws Error if BBox is not valid\n * @example\n * validateBBox([-180, -40, 110, 50])\n * //=OK\n * validateBBox([-180, -40])\n * //=Error\n * validateBBox('Foo')\n * //=Error\n * validateBBox(5)\n * //=Error\n * validateBBox(null)\n * //=Error\n * validateBBox(undefined)\n * //=Error\n */\nfunction validateBBox(bbox) {\n if (!bbox) throw new Error('bbox is required');\n if (!Array.isArray(bbox)) throw new Error('bbox must be an Array');\n if (bbox.length !== 4 && bbox.length !== 6) throw new Error('bbox must be an Array of 4 or 6 numbers');\n bbox.forEach(function (num) {\n if (!isNumber(num)) throw new Error('bbox must only contain numbers');\n });\n}\n\n/**\n * Validate Id\n *\n * @private\n * @param {string|number} id Id to validate\n * @returns {void}\n * @throws Error if Id is not valid\n * @example\n * validateId([-180, -40, 110, 50])\n * //=Error\n * validateId([-180, -40])\n * //=Error\n * validateId('Foo')\n * //=OK\n * validateId(5)\n * //=OK\n * validateId(null)\n * //=Error\n * validateId(undefined)\n * //=Error\n */\nfunction validateId(id) {\n if (!id) throw new Error('id is required');\n if (['string', 'number'].indexOf(typeof id) === -1) throw new Error('id must be a number or a string');\n}\n\n// Deprecated methods\nfunction radians2degrees() {\n throw new Error('method has been renamed to `radiansToDegrees`');\n}\n\nfunction degrees2radians() {\n throw new Error('method has been renamed to `degreesToRadians`');\n}\n\nfunction distanceToDegrees() {\n throw new Error('method has been renamed to `lengthToDegrees`');\n}\n\nfunction distanceToRadians() {\n throw new Error('method has been renamed to `lengthToRadians`');\n}\n\nfunction radiansToDistance() {\n throw new Error('method has been renamed to `radiansToLength`');\n}\n\nfunction bearingToAngle() {\n throw new Error('method has been renamed to `bearingToAzimuth`');\n}\n\nfunction convertDistance() {\n throw new Error('method has been renamed to `convertLength`');\n}\n\nexport { earthRadius, factors, unitsFactors, areaFactors, feature, geometry, point, points, polygon, polygons, lineString, lineStrings, featureCollection, multiLineString, multiPoint, multiPolygon, geometryCollection, round, radiansToLength, lengthToRadians, lengthToDegrees, bearingToAzimuth, radiansToDegrees, degreesToRadians, convertLength, convertArea, isNumber, isObject, validateBBox, validateId, radians2degrees, degrees2radians, distanceToDegrees, distanceToRadians, radiansToDistance, bearingToAngle, convertDistance };\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/@turf/helpers/main.es.js","// @flow\n\nexport type Chapter = {\n title: string,\n text: string,\n mapbox: any\n}\n\nexport const chapters: Array = [\n {\n gdocId: 'bergen-oversikt',\n title: 'Bergen, laurdag 7. januar 2017',\n text: 'Bergen sentrum, det er natt til laurdag 7. januar 2017. På eit lite geografisk område, alt med gangavstand, skal fem valdstilfelle til å skje. Klokka bikkar tolv.',\n fallbackPicture: '1.14306106',\n mapbox: {\n id: 'bergen-oversikt',\n duration: 7000,\n center: [5.322830, 60.391191],\n // bounds: [[2, 40], [12, 65]],\n zoom: 13,\n pitch: 0,\n bearing: 0,\n mapColor: 'dark'\n }\n }, {\n gdocId: 'forste-tilfelle',\n title: 'Ca. 00:00',\n text: 'Ein mann (23) og kameraten går av bussen. Dei skal vidare til Loddefjord, men slik blir det ikkje.

Klokka 00:17 får politiet melding: Ein mann (23) skal ha komme i samanstøyt med 17-åringane. Først roping, deretter barka dei saman, midt i gata. 17-åringane følgde etter då dei to andre trekte seg tilbake. Dei skal ha slått og sparka mot kroppen og hovudet på 23-åringen, og han låg livlaus på bakken då dei to sprang vidare. Han blødde frå nasen, hadde ein kul i hovudet, og i ettertid sleit han med hovudverk.',\n fallbackPicture: '1.14306127',\n textAlign: 'left',\n mapbox: {\n id: 'hentiesbay',\n duration: 7000,\n center: [5.326523780822754, 60.393102034485416],\n // bounds: [[2, 40], [12, 65]],\n zoom: 18,\n bearing: 20,\n pitch: 0,\n point: {\n 'name': 'navn',\n 'lat': 60.393102034485416,\n 'lon': 5.326523780822754\n }\n }\n }, {\n gdocId: 'andre-tilfelle',\n title: 'Ca. 00:15',\n text: 'Ein mann i 50-åra har vore inne og sett på TV, og går ut for å bestille seg ein pizza. Medan han ventar på maten tar han seg ein tur til Torgallmenningen.

Ved McDonalds går mannen litt til sida for å gå forbi to gutar som han får inntrykk av at er gira. Ifølge vitne yppar 17-åringane, drar mannen til sida, og deretter går Benjamin roleg bort til mannen, gjer ei dreiing med kroppen, og slår til mannen i hovudet med olbogen. Mannen landar på bakken med heile kroppen samtidig, og smell hovudet i asfalten. Eit vitne seier det såg ut som om mannen ikkje var medviten då han landa.',\n fallbackPicture: '1.14306128',\n textAlign: 'left',\n mapbox: {\n id: 'durban',\n duration: 7000,\n center: [5.323251485824585, 60.39248186488759],\n bearing: 0,\n zoom: 18,\n pitch: 15,\n point: {\n 'name': 'navn2',\n 'lat': 60.39248186488759,\n 'lon': 5.323251485824585\n }\n }\n }, {\n gdocId: 'tredje-tilfelle',\n title: 'Ca. 00:17',\n text: 'Ein mann (21) har vore på McDonalds med ein kamerat. Dei ser ein mann ligge livlaus på bakken, og dei oppfattar at nokon skrik og hoiar. Dei tenker det er nok folk som hjelper mannen, og går vidare mot ein utestad.

I det dei kryssar vegen mot Xhibition kjem ein person skrått inn og seier «Do you have a problem». 21-åring svarar «Nei», og han blir han skalla i ansiktet. Den som skallar han ned er Benjamin. 21-åringen får eit kutt i augebrynet.',\n fallbackPicture: '1.14306129',\n textAlign: 'left',\n mapbox: {\n id: 'tromso',\n duration: 6000,\n center: [5.325295329093933, 60.39263823354951],\n bearing: 0,\n zoom: 18,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn3',\n 'lat': 60.39263823354951,\n 'lon': 5.325295329093933\n }\n }\n }, {\n gdocId: 'fjerde-tilfelle',\n title: 'Ca. 00:45',\n text: 'Ein mann (18) har vore med ein gjeng kjøpt seg kebab. På veg ut møter dei 17-åringane. Ein av dei to brukar skuldra til å dulte borti ein i gjengen. 18-åringen spør kvifor han gjorde det. «Er det eit problem med det», svarar den eine 17-åringen. «Ja», svarer 18-åringen.

Benjamin sitt svar til det er å slå, og han tar kvelartak på den andre. Petter kjem springande til, og skal ha dradd eller kasta 18-åringen i bakken. Deretter prøver Petter å slå̊ 18-åringen i ansiktet og på kroppen.',\n fallbackPicture: '1.14306131',\n textAlign: 'left',\n mapbox: {\n id: 'kristiansand',\n duration: 6000,\n center: [5.32213568687439, 60.390769711427204],\n bearing: 0,\n zoom: 18,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn3',\n 'lat': 60.390769711427204,\n 'lon': 5.32213568687439\n }\n }\n }, {\n gdocId: 'femte-tilfelle',\n title: 'Ca. 00:47',\n text: 'Nokon i gjengen kjem inn på kebabsjappa, og seier til dei som sit der at nokon køddar med ein kamerat av dei.

Ein av dei som er inne går ut og spør kva som skjer. Benjamin slår til han, med knytt hand, i ansiktet, og dyttar han over ende. Benjamin slår gjentatte gonger mot hovudet og kroppen til mannen. Den fornærma skal ha forklart i retten at han visste kven den eine av dei to 17-åringane var.',\n fallbackPicture: '1.14306133',\n textAlign: 'left',\n mapbox: {\n id: 'oslo',\n duration: 6000,\n center: [5.32207568687439, 60.390769711427204],\n bearing: 0,\n zoom: 18.6,\n pitch: 20,\n mapColor: 'red',\n point: {\n 'name': 'navn4',\n 'lat': 60.390769711427204,\n 'lon': 5.32207568687439\n }\n }\n }, {\n gdocId: 'paagripinga',\n title: 'Ca. 02:23',\n text: 'Petter blir pågripen og blir tatt med til arresten. Benjamin blir ikkje arrestert denne natta.',\n fallbackPicture: '1.14306135',\n textAlign: 'left',\n mapbox: {\n id: 'birmingham',\n duration: 6000,\n center: [5.3260087966918945, 60.393147089081396],\n bearing: 0,\n zoom: 16.5,\n pitch: 0,\n mapColor: 'red',\n point: {\n 'name': 'navn5',\n 'lat': 60.393147089081396,\n 'lon': 5.3260087966918945\n }\n }\n }, {\n gdocId: 'slutt-oversikt',\n title: '',\n text: 'Fem tilfelle, frå klokka litt over tolv til litt før eitt. Mindre enn ein time. To 17-åringar, og fem som er skadd av vald.',\n fallbackPicture: '1.14306136',\n textAlign: 'left',\n mapbox: {\n id: 'birmingham',\n duration: 8000,\n center: [5.322830, 60.391191],\n bearing: 0,\n zoom: 14,\n pitch: 0,\n mapColor: 'red'\n }\n }\n]\n\nexport function createChapters (): Array {\n return chapters.map(chapter => {\n return { ...chapter }\n })\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/chapters.js","export function toArray (iterator) {\n return [].slice.call(iterator)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/array.js","// @flow\n/** @jsx h */\nimport { Component, h } from 'preact'\nimport { createImageUrl } from '@nrk/serum-imagecrop-utils'\nimport { createSrcSet, getQualityFromString, supportedWidths } from '../../lib/image'\n\ntype Props = {\n alt: string,\n imageId: string,\n}\n\nclass Picture extends Component {\n render () {\n const { alt, imageId } = this.props\n const quality = 'medium'\n\n if (!imageId) {\n return
Mangler ID
\n }\n\n const parsedQuality = getQualityFromString(quality)\n const defaultUrl = createImageUrl({ id: imageId, ratio: '16:9', width: 1600, parsedQuality })\n const desktopSourceSet = createSrcSet({ imageId, ratio: '16:9', supportedWidths, quality: parsedQuality })\n const mobileSourceSet = createSrcSet({ imageId, ratio: '3:4', supportedWidths, quality: parsedQuality })\n\n return (\n \n \n {alt}\n \n )\n }\n}\n\nexport default Picture\n\n\n\n// WEBPACK FOOTER //\n// ./src/v1/components/PolopolyPicture.js","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, quality = 0.7 }) {\n return supportedWidths\n .map(width => {\n const imageUrl = createImageUrl({ id: imageId, width, ratio, quality })\n return `${imageUrl} ${width}w`\n })\n .join(', ')\n}\n\nexport function getQualityFromString (qualityString) {\n const qualities = [\n {\n string: 'very-high',\n quality: 0.8\n },\n {\n string: 'high',\n quality: 0.6\n },\n {\n string: 'medium',\n quality: 0.3\n },\n {\n string: 'low',\n quality: 0.2\n }\n ]\n\n const q = qualities.filter(quality => quality.string === qualityString)[0]\n return q.quality\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/lib/image.js","let isTrackingEnabled = false\n// let label = null\n\nexport function initialize (trackingEnabled) {\n isTrackingEnabled = trackingEnabled\n // label = name\n}\n\nexport function trackAction (action, label) {\n sendToGoogleAnalytics({\n category: 'dh-innafor-voldsepisoder-bergen',\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/lib/googleAnalytic.js","!function(e,n){\"object\"==typeof exports&&\"undefined\"!=typeof module?n(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],n):n(e[\"dh-analytics-utils\"]={})}(this,function(e){\"use strict\";function n(){return window.ga}var t=Object.assign||function(e){for(var n=1;n