{"version":3,"sources":["webpack:///./node_modules/core-js/internals/function-bind.js","webpack:///./src/views/VideoPlaylist.vue?bfff","webpack:///src/views/VideoPlaylist.vue","webpack:///./src/views/VideoPlaylist.vue?d3d2","webpack:///./src/views/VideoPlaylist.vue","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/xhr/lib/index.js","webpack:///./node_modules/mux.js/lib/utils/clock.js","webpack:///./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack:///./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack:///./node_modules/core-js/modules/es.reflect.construct.js","webpack:///./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack:///./src/components/LiveVideoPlayer.vue?42c2","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/conventions.js","webpack:///./node_modules/@videojs/xhr/lib/http-handler.js","webpack:///./node_modules/safe-json-parse/tuple.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/@babel/runtime/helpers/extends.js","webpack:///./src/views/LiveVideo.vue?7b8c","webpack:///./node_modules/@videojs/vhs-utils/es/mp4-helpers.js","webpack:///./src/components/LiveVideoPlayer.vue?b5d4","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/@videojs/vhs-utils/es/stream.js","webpack:///./node_modules/m3u8-parser/dist/m3u8-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/byte-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/opus-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/ebml-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/nal-helpers.js","webpack:///./node_modules/@videojs/vhs-utils/es/containers.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///src/components/LiveVideoPlayer.vue","webpack:///./src/components/LiveVideoPlayer.vue?dd2f","webpack:///./src/components/LiveVideoPlayer.vue","webpack:///src/views/LiveVideo.vue","webpack:///./src/views/LiveVideo.vue?5b67","webpack:///./src/views/LiveVideo.vue","webpack:///./node_modules/videojs-vtt.js/lib/vttcue.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom-parser.js","webpack:///./node_modules/@babel/runtime/helpers/construct.js","webpack:///./node_modules/@xmldom/xmldom/lib/entities.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/global/window.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.js","webpack:///./node_modules/keycode/index.js","webpack:///./node_modules/@xmldom/xmldom/lib/sax.js","webpack:///./node_modules/@xmldom/xmldom/lib/dom.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js"],"names":["aFunction","isObject","slice","factories","construct","C","argsLength","args","list","i","Function","join","module","exports","bind","that","fn","this","partArgs","call","arguments","boundFunction","concat","length","apply","prototype","render","_vm","_h","$createElement","_c","_self","staticClass","attrs","_v","_s","title","lang","Object","keys","featuredItem","resolveUrl","resolveBgmg","scopedSlots","_u","key","resolveTitle","proxy","resolveDate","_e","_l","mainItem","class","sideItem","sideItems","on","requestPlaylist","slot","staticRenderFns","components","FeaturedBox","MediumBox","InfiniteLoading","mixins","mounted","initData","eventBus","data","lat","cir","translatedSlug","methods","item","snippet","resolveDescription","description","setSideItemData","pagination","nextPage","nextPageToken","url","requestData","items","setPageData","urlc","getFormatedDate","publishedAt","component","byteLength","toByteArray","fromByteArray","lookup","revLookup","Arr","Uint8Array","Array","code","len","charCodeAt","getLens","b64","Error","validLen","indexOf","placeHoldersLen","lens","_byteLength","tmp","arr","curByte","tripletToBase64","num","encodeChunk","uint8","start","end","output","push","extraBytes","parts","maxChunkLength","len2","dom","DOMImplementation","XMLSerializer","DOMParser","window","vttjs","WebVTT","VTTCue","VTTRegion","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","_extends","isFunction","createXHR","httpHandler","parseHeaders","headers","result","trim","split","forEach","row","index","toLowerCase","value","isArray","forEachArray","array","iterator","isEmpty","obj","hasOwnProperty","initParams","uri","options","callback","params","_createXHR","called","err","response","body","readystatechange","xhr","readyState","setTimeout","loadFunc","getBody","undefined","responseText","getXml","isJson","JSON","parse","e","errorFunc","evt","clearTimeout","timeoutTimer","statusCode","failureResponse","aborted","status","useXDR","method","rawRequest","getAllResponseHeaders","cors","XDomainRequest","XMLHttpRequest","sync","json","stringify","onreadystatechange","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","setRequestHeader","responseType","beforeSend","send","responseXML","firefoxBugTakenEffect","documentElement","nodeName","noop","default","toUpperCase","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","ONE_SECOND_IN_TS","seconds","sampleRate","timestamp","timelineStartPts","keepOriginalTimestamps","_assertThisInitialized","self","ReferenceError","__esModule","_setPrototypeOf","o","p","setPrototypeOf","__proto__","$","getBuiltIn","anObject","create","fails","nativeConstruct","NEW_TARGET_BUG","F","ARGS_BUG","FORCED","target","stat","forced","sham","Target","newTarget","$args","proto","instance","require","_inheritsLoose","subClass","superClass","constructor","_isNativeReflectConstruct","Reflect","Proxy","Boolean","valueOf","MAX_UINT32","Math","pow","parseSidx","view","DataView","buffer","byteOffset","version","flags","subarray","references","referenceId","getUint32","timescale","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","toString","string","alert","confirm","prompt","freeze","object","oc","MIME_TYPE","HTML","isHTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","NAMESPACE","SVG","XML","XMLNS","httpResponseHandler","decodeResponseBody","responseBody","cause","TextDecoder","charset","getCharset","decode","String","fromCharCode","contentTypeHeader","reduce","contentType","_contentType$split","type","SafeParseTuple","reviver","error","read","offset","isLE","mLen","nBytes","m","eLen","eMax","eBias","nBits","d","s","NaN","Infinity","write","c","rt","abs","isNaN","floor","log","LN2","assign","source","DESCRIPTORS","halfCont","channel","SideBar","Title","Source","Poster","Width","Height","hdvideoplayer","ref","vwidth","vheight","poster","DEFAULT_LOCATION","baseUrl","relativeUrl","test","location","href","nativeURL","URL","protocolLess","removeLocation","buildAbsoluteURL","newUrl","protocol","Stream","listeners","_proto","listener","off","splice","trigger","callbacks","_length","_i","dispose","pipe","destination","_Stream","LineStream","_this","nextNewline","substring","TAB","parseByterange","byterangeString","match","exec","parseInt","attributeSeparator","keyvalue","RegExp","parseAttributes","attributes","attr","replace","ParseStream","customParsers","tagMappers","line","event","_this2","newLines","acc","mapper","mappedLine","newLine","tagType","duration","parseFloat","number","playlistType","allowed","URI","BYTERANGE","byterange","RESOLUTION","resolution","width","height","BANDWIDTH","dateTimeString","dateTimeObject","Date","IV","Uint32Array","PRECISE","subkey","text","addParser","_ref","_this3","expression","customType","dataParser","segment","addTagMapper","_ref2","map","mapFn","camelCase","str","a","camelCaseKeys","setHoldBack","manifest","serverControl","targetDuration","partTargetDuration","tag","hb","phb","minTargetDuration","minPartDuration","message","Parser","lineStream","parseStream","currentMap","_key","uris","currentUri","hasParts","defaultMediaGroups","widevineUuid","currentTimeline","allowCache","discontinuityStarts","segments","lastByterangeEnd","lastPartByterangeEnd","preloadHints","timeline","preloadSegment","entry","mediaGroup","rendition","endlist","endList","inf","mediaSequence","discontinuitySequence","METHOD","KEYFORMAT","contentProtection","VALID_METHODS","KEYID","schemeIdUri","keyId","pssh","iv","isFinite","playlist","playlists","mediaGroups","media","TYPE","NAME","mediaGroupType","DEFAULT","autoselect","AUTOSELECT","LANGUAGE","language","instreamId","CHARACTERISTICS","characteristics","discontinuity","targetduration","timeOffset","precise","cueOut","cueOutCont","cueIn","skip","warnOnMissingAttributes_","segmentIndex","part","partIndex","renditionReports","r","canBlockReload","canSkipDateranges","hint","isPart","otherHint","report","required","partInf","partTarget","comment","custom","identifier","missing","chunk","regexs","mp4","webm","ogg","video","audio","muxerVideo","muxerAudio","muxerText","mediaTypes","upperMediaTypes","translateLegacyCodec","codec","orig","profile","avcLevel","profileHex","Number","avcLevelHex","parseCodecs","codecString","codecs","codecType","name","details","mediaType","codecsFromDefault","master","audioGroupId","AUDIO","audioGroup","audioType","CODECS","isAudioCodec","isTextCodec","getMimeForCodec","container","every","MediaSource","isTypeSupported","muxerSupportsCodec","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","merge","_len","objects","k","flatten","lists","x","y","from","findIndexes","l","INVALID_NUMBER_OF_PERIOD","DASH_EMPTY_MANIFEST","DASH_INVALID_XML","NO_BASE_URL","MISSING_SEGMENT_INFORMATION","SEGMENT_TIME_UNSPECIFIED","UNSUPPORTED_UTC_TIMING_SCHEME","_ref$baseUrl","_ref$source","_ref$range","range","_ref$indexRange","indexRange","resolvedUri","rangeStr","ranges","startRange","endRange","byteRangeToString","parseEndNumber","endNumber","segmentRange","static","_attributes$timescale","sourceDuration","periodDuration","segmentDuration","dynamic","NOW","clientOffset","availabilityStartTime","_attributes$timescale2","_attributes$start","_attributes$minimumUp","minimumUpdatePeriod","_attributes$timeShift","timeShiftBufferDepth","now","periodStartWC","periodEndWC","segmentCount","ceil","availableStart","availableEnd","max","min","toSegments","_attributes$timescale3","periodIndex","_attributes$startNumb","startNumber","time","parseByDuration","_attributes$timescale4","_segmentRange$type","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","initSegment","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist","sidx","sidxByteRange","sidxEnd","mediaReferences","filter","startIndex","reference","size","endIndex","generateSidxKey","mergeDiscontiguousPlaylists","mergedPlaylists","_acc$name$segments","id","addSidxSegmentsToPlaylist$1","sidxMapping","sidxKey","sidxMatch","addSidxSegmentsToPlaylists","formatAudioPlaylist","isAudioOnly","_attributes","bandwidth","SUBTITLES","formatVttPlaylist","_m3u8Attributes","m3u8Attributes","organizeAudioPlaylists","mainPlaylist","formattedPlaylists","role","label","roleLabel","formatted","firstLabel","organizeVttPlaylists","organizeCaptionServices","captionServices","svcObj","svc","service","aspectRatio","easyReader","formatVideoPlaylist","_ref3","_attributes2","videoOnly","_ref4","mimeType","audioOnly","_ref5","vttOnly","_ref6","toM3u8","dashPlaylists","locations","_mediaGroups","_dashPlaylists$0$attr","suggestedPresentationDelay","videoPlaylists","audioPlaylists","vttPlaylists","captions","VIDEO","subs","cc","getLiveRValue","parseByTimeline","segmentTimeline","_attributes$minimumUp2","_attributes$media","sIndex","S","repeat","segmentTime","t","count","nextS","identifierPattern","identifierReplacement","values","format","constructTemplateUrl","parseTemplateInfo","templateValues","RepresentationID","Bandwidth","mapSegment","Time","presentationTimeOffset","presentationTime","periodStart","SegmentURLToSegmentObject","segmentUrl","mediaRange","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","generateSegments","segmentAttributes","segmentsFn","segmentInfo","template","base","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","toPlaylists","representations","findChildren","element","childNodes","tagName","getContent","textContent","parseDuration","SECONDS_IN_YEAR","SECONDS_IN_MONTH","SECONDS_IN_DAY","SECONDS_IN_HOUR","SECONDS_IN_MIN","durationRegex","_match$slice","year","month","day","hour","minute","second","parseDate","dateRegex","parsers","mediaPresentationDuration","parsedValue","el","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","inheritBaseUrls","adaptationSetAttributes","adaptationSetBaseUrls","adaptationSetSegmentInfo","representation","repBaseUrlElements","repBaseUrls","representationSegmentInfo","contentProtectionNodes","node","keySystem","psshNode","psshBuffer","parseCaptionServiceMetadata","_value$split","_values","_value$split2","_value$split2$","opts","opt","_opt$split","val","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","roleAttributes","accessibility","labelVal","nodeValue","mpdAttributes","mpdBaseUrls","period","parsedPeriodId","adaptationSets","getPeriodStart","priorPeriodAttributes","mpdType","inheritAttributes","mpd","_options","_options$manifestUri","manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","representationInfo","manifestString","xml","parser","parseFromString","getElementsByTagName","parseUTCTimingScheme","UTCTimingNode","parsedManifestInfo","parseUTCTiming","countBits","countBytes","isTypedArray","ArrayBuffer","isView","toUint8","bytes","BigInt","BYTE_TABLE","bytesToNumber","Uint16Array","b","_temp","_ref$signed","signed","_ref$le","le","total","byte","exponent","numberToBytes","_temp2","_ref2$le","byteCount","byteIndex","bytesToString","decodeURIComponent","escape","stringToBytes","stringIsBytes","unescape","encodeURIComponent","concatTypedArrays","buffers","totalLen","buf","tempBuffer","set","bytesMatch","_temp3","_ref3$offset","_ref3$mask","mask","bByte","aByte","ID3","returnSize","footerPresent","getId3Offset","path","normalizePaths","paths","results","headerSize","z","_DESCRIPTORS$z","desc","dependsOnEsId","ocrEsId","descriptors","oti","streamType","bufferSize","maxBitrate","avgBitrate","findBox","complete","EBML_TAGS","EBML","DocType","Segment","SegmentInfo","Tracks","Track","TrackNumber","DefaultDuration","TrackEntry","TrackType","FlagDefault","CodecID","CodecPrivate","VideoTrack","AudioTrack","Cluster","Timestamp","TimestampScale","BlockGroup","BlockDuration","Block","SimpleBlock","LENGTH_TABLE","getLength","removeLength","valueBytes","normalizePath","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","totalLength","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","newLength","newData","sourceIndex","shift","dataType","types","nalLimit","nalStart","nalsFound","nalOffset","nalType","findH264Nal","findH265Nal","CONSTANTS","_isLikely","aac","mp3","docType","mkv","matroska","mov","fmp4","moof","moov","ac3","ts","flac","avi","riff","wav","isLikelyTypes","isLikelyFn","browserApi","isLikely","version$5","hooks_","hooks","hook","removeHook","hookOnce","original","wrapper","FullscreenApi","prefixed","apiMap","specApi","level","lvl","levels","lvlRegExp","unshift","console","info","createLogger$1","logByType","createLogger","subname","all","debug","warn","history","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","log$1","each","initial","accum","sources","isPlain","computedStyle","prop","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","pop","IS_IPOD","IOS_VERSION","IS_ANDROID","ANDROID_VERSION","major","minor","IS_NATIVE_ANDROID","IS_FIREFOX","IS_EDGE","IS_CHROME","CHROME_VERSION","IE_VERSION","IS_SAFARI","IS_WINDOWS","TOUCH_ENABLED","isReal","maxTouchPoints","DocumentTouch","document","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","isNonBlankString","throwIfWhitespace","classRegExp","className","isEl","nodeType","isInFrame","parent","createQuerier","selector","context","querySelector","ctx","properties","content","createElement","getOwnPropertyNames","propName","setAttribute","attrName","appendContent","innerText","prependTo","child","firstChild","insertBefore","appendChild","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","remove","toggleClass","classToToggle","predicate","has","setAttributes","attrValue","removeAttribute","getAttributes","knownBooleans","attrVal","getAttribute","attribute","blockTextSelection","focus","onselectstart","unblockTextSelection","getBoundingClientRect","parentNode","rect","findPosition","offsetParent","left","top","offsetWidth","offsetHeight","fullscreenElement","offsetLeft","offsetTop","getPointerPosition","translated","transform","position","boxTarget","box","boxW","boxH","offsetY","offsetX","changedTouches","pageX","pageY","isTextNode","emptyEl","removeChild","normalizeContent","createTextNode","insertContent","isSingleLeftClick","button","buttons","videojs$1","$$","Dom","createEl","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setWindowLoaded","removeEventListener","addEventListener","style","setTextContent","styleSheet","cssText","_initialGuid","_guid","newGUID","WeakMap","FakeWeakMap","vdata","performance","access","get","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","old","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","doc","scrollLeft","clientLeft","clientY","scrollTop","clientTop","which","charCode","keyCode","defineProperty","passiveEvents","guid","hash","handlersCopy","n","passive","attachEvent","removeType","elemData","ownerDocument","bubbles","targetData","one","func","any","EVENT_MAP","Events","UPDATE_REFRESH_INTERVAL","uid","bound","last","throttled","immediate","cancel","debounced","_later","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","Map","oldTimeout","objName","name_","isEvented","eventBusEl_","addEventedCallback","eventedCallbacks","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","el_","StatefulMixin","state","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","titleCaseEquals","str1","str2","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set","Component$1","Component","ready","play","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","getDescendant","names","currentChild","addChild","componentName","componentClassName","componentClass","ComponentClass","getComponent","refNode","childFound","compEl","workingChildren","parentOptions","handleAdd","playerOptions","newChild","Tech","some","wchild","isTech","buildCSSClass","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","tapMovementThreshold","touchTimeThreshold","touches","xdiff","ydiff","touchDistance","sqrt","noTap","touchTime","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","supportsRaf_","requestNamedAnimationFrame","_this4","cancelNamedAnimationFrame","cancelAnimationFrame","_this5","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","rangeCheck","maxIndex","getRange","valueIndex","rangeIndex","createTimeRangesObj","timeRangesObj","Symbol","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","track","cues","cue","startTime","endTime","textTracksToJson","tech","trackEls","trackObjs","tracks","trackEl","src","textTracks","jsonToTextTracks","addedTrack","addRemoteTextTrack","addCue","textTrackConverter","MODAL_CLASS_NAME","_Component","ModalDialog","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","descEl_","tabIndex","previouslyActiveEl_","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","nextSibling","empty","closeButton","content_","activeEl","activeElement","playerEl","isEventKey","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","hasAttribute","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","_EventTarget","TrackList","tracks_","addTrack","labelchange_","removeTrack","rtrack","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","_TrackList","AudioTrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","nonLanguageTextTrackKind","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","trackProps","_loop","newLabel","props","host","getFileExtension","splitPathRe","pathParts","winLoc","urlInfo","srcProtocol","crossOrigin","Url","parseUrl","getAbsoluteURL","isCrossOrigin","srcContent","StringDecoder","errors","oncue","onparsingerror","onflush","groupCollapsed","groupEnd","flush","tech_","loaded_","_Track","TextTrack","settings","srclang","mode","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","disposeHandler","defineProperties","newMode","ct","currentTime","active","originalCue","originalCue_","removeCue","_removeCue","cuechange","newEnabled","newSelected","NONE","LOADING","LOADED","ERROR","HTMLTrackElement","load","NORMAL","ListClass","TrackClass","capitalName","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","createTrackHelper","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","hasStarted_","featuresProgressEvents","manualProgressOn","featuresTimeupdateEvents","manualTimeUpdatesOn","nativeCaptions","nativeTextTracks","featuresNativeTextTracks","emulateTextTracks","autoRemoteTextTracks_","initTrackListeners","nativeControlsForTouch","triggerSourceset","manualProgress","manualProgressOff","stopTrackingProgress","progressInterval","numBufferedPercent","bufferedPercent_","duration_","manualTimeUpdates","manualTimeUpdatesOff","currentTimeInterval","manuallyTriggered","clearTracks","removeRemoteTextTrack","cleanupAutoTextTracks","reset","setCrossOrigin","error_","played","setScrubbing","scrubbing","setCurrentTime","trackListChanges","addWebVttScript_","script","_this6","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","deferrable","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","use","middleware","next","setSourceHelper","setTech","mw","reduceRight","middlewareIterator","arg","mediate","callMethod","middlewareValue","terminated","executeRight","allowedGetters","muted","seekable","volume","ended","allowedSetters","setMuted","setVolume","allowedMediators","mws","clearCacheForPlayer","getOrCreateFactory","mwFactory","_mws$i","mwf","mwi","lastRun","_middleware","mwrest","_src","MimetypesKind","opus","ogv","m4v","m4a","caf","oga","m3u8","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","mimetype","findMimetype","cache_","matchingSources","filterSource","newsrc","srcobj","fixSource","MediaLoader","j","techOrder","techName","isSupported","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","_ClickableComponent","PosterImage","update","update_","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","darkGray","lightGray","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","color","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","trackList","userPref","selectedLanguage","clearDisplay","processCues","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","cueDiv","displayState","textOpacity","backgroundColor","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontSize","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","dir","Button","_Button","BigPlayButton","mouseused_","handleMouseDown","playPromise","cb","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","guide","h","gm","gh","implementation","setFormatTime","customImplementation","resetFormatTime","formatTime","TimeDisplay","updateContent","updateTextNode_","span","labelText_","textNode_","formattedTime_","oldNode","replaceChild","_TimeDisplay","CurrentTimeDisplay","getCache","DurationDisplay","TimeDivider","div","RemainingTimeDisplay","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","vertical","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","right","pullTooltipBy","round","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","STEP_SECONDS","PAGE_KEY_MULTIPLIER","_Slider","SeekBar","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","codes","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","pictureInPictureEnabled","isInPictureInPicture","exitPictureInPicture","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","checkVolumeSupport","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","bottom","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","throttledHandleMouseMove","orientationClass","checkMuteSupport","MuteToggle","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","soundOff","VolumePanel","inline","volumeControl","handleKeyPressHandler_","volumePanelState_","muteToggle","handleVolumeControlKeyUp","sliderActive_","sliderInactive_","Menu","menuButton_","menuButton","focusedChild_","boundHandleBlur_","handleBlur","boundHandleTapClick_","handleTapClick","addEventListenerForItem","removeEventListenerForItem","addItem","childComponent","contentElType","append","btn","buttonPressed_","unpressButton","childComponents","foundComponent","stepChild","haveTitle","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","_MenuButton","TrackButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","_MenuItem","TextTrackMenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","_TextTrackMenuItem","OffTextTrackMenuItem","allHidden","_TrackButton","TextTrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","_TextTrackButton","ChaptersButton","track_","setTrack","findChaptersTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","newRate","playbackRateSupported","Spacer","_Spacer","CustomControlSpacer","ControlBar","_ModalDialog","ErrorDisplay","LOCAL_STORAGE_KEY$1","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","v","parseOptionValue","getSelectedOptionValue","selectedIndex","setSelectedOption","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","config","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","innerHTML","createElFont_","createElControls_","defaultsDescription","setValues","localStorage","getItem","setItem","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","stopTracking","startTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","sort","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","cloneNode","dummy","docFrag","createDocumentFragment","Element","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","enumerable","configurable","HTMLMediaElement","firstSourceWatch","resetSourceWatch_","innerDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","getValue","setter","writable","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","hasChildNodes","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","elTracks","proxyNativeTracksForType_","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","tagAttributes","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","mpegurlRE","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","charAt","DEFAULT_BREAKPOINTS","tiny","xsmall","small","medium","large","xlarge","huge","getTagSettings","closest","boundDocumentFullscreenChange_","documentFullscreenChange_","boundFullWindowOnEscKey_","fullWindowOnEscKey","boundUpdateStyleEl_","updateStyleEl_","boundApplyInitTime_","applyInitTime_","boundUpdateCurrentBreakpoint_","updateCurrentBreakpoint_","boundHandleTechClick_","handleTechClick_","boundHandleTechDoubleClick_","handleTechDoubleClick_","boundHandleTechTouchStart_","handleTechTouchStart_","boundHandleTechTouchMove_","handleTechTouchMove_","boundHandleTechTouchEnd_","handleTechTouchEnd_","boundHandleTechTap_","handleTechTap_","isFullscreen_","isPosterFromTech_","queuedCallbacks_","userActive_","debugEnabled_","languagesToLower","languages_","resetCache_","poster_","controls_","changingSrc_","playCallbacks_","playTerminatedQueue_","autoplay","plugins","scrubbing_","fullscreenchange","fluid_","playerOptionsCopy","middleware_","flexNotSupported_","majorVersion","userActive","listenForUserActivity_","handleStageClick_","breakpoints","responsive","styleEl_","playerElIngest_","divEmbed","tabindex","VIDEOJS_NO_DYNAMIC_STYLE","defaultsStyleEl","head","fill_","fluid","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","videoWidth","videoHeight","ratioParts","ratioMultiplier","width_","height_","_width","_height","techEl","unloadTech_","titleTechName","camelTechName","techName_","normalizeAutoplay","techOptions","loop","techCanOverridePoster","TechClass","handleTechReady_","textTracksJson_","eventObj","seeking","handleTechLoadStart_","handleTechSourceset_","handleTechWaiting_","handleTechEnded_","handleTechSeeking_","handleTechPlay_","handleTechFirstPlay_","handleTechPause_","handleTechDurationChange_","handleTechFullscreenChange_","handleTechFullscreenError_","handleTechEnterPictureInPicture_","handleTechLeavePictureInPicture_","handleTechError_","handleTechPosterChange_","handleTechTextData_","handleTechRateChange_","usingNativeControls","addTechControlsListeners_","safety","removeTechControlsListeners_","manualAutoplay_","promise","resolveMuted","previouslyMuted","restoreMuted","mutedPromise","updateSourceCaches_","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","_this8","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","inAllowedEls","userActions","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","matches","fullscreen","msMatchesSelector","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","_this9","resolve","play_","_this10","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","errorHandler","requestFullscreenHelper_","fsOptions","_this11","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this12","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","excludeElement","isContentEditable","allowedInputTypes","excludedTags","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","foundSourceAndTech","_this13","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","flip","finder","sourceOrder","handleSrc_","isRetry","_this14","resetRetryOnError_","middlewareSource","src_","notSupportedMessage","retryOnError","retry","stopListeningForErrors","_this15","sourceTech","_this16","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","_this$controlBar","durationDisplay","currentSources","currentType","techAutoplay","newPoster","usingNativeControls_","_this17","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","screenX","screenY","handleMouseUpAndMouseLeave","isAudio_","_obj","toJSON","createModal","_this18","modal","currentBreakpoint","candidateBreakpoint","maxWidth","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","current","loadMedia","_this19","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","BASE_PLUGIN_NAME","PLUGIN_CACHE_KEY","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createBasicPlugin","plugin","basicPluginWrapper","PluginSubClass","getEventHash","Plugin","VERSION","isBasic","registerPlugin","deregisterPlugin","getPlugins","getPluginVersion","hasPlugin","subClassMethods","super_","normalizeId","getPlayer","TypeError","defaultView","PlayerComponent","getPlayers","nId","_tag","_player","getAllPlayers","comp","writeable","extend","mergeOptions","addLanguage","_mergeOptions","createTimeRange","EventTarget","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","TIME_FUDGE_FACTOR","SAFE_TIME_DELTA","filterRanges","timeRanges","findRange","findNextRange","findGaps","bufferIntersection","bufferA","bufferB","arity","extents","printableRange","strArr","timeUntilRebuffer","timeRangesToArray","timeRangesList","isRangeDifferent","lastBufferedEnd","getPartsAndSegments","si","pi","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","partHoldBack","holdBack","backwardDuration","endSequence","forwardDuration","intervalDuration","expired","backward","forward","totalDuration","sumDurations","defaultDuration","durationList","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentTime","getMediaInfoForTime","startingSegmentIndex","startingPartIndex","experimentalExactManifestTimings","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isDisabled","isAes","estimateSegmentRequestTime","bytesReceived","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","someAudioVariant","groupName","variant","_ret","Playlist","createPlaylistID","onwarn","oninfo","_ref$customTagParsers","customTagParsers","_ref$customTagMappers","customTagMappers","experimentalLLHLS","customParser","forEachMediaGroup","groupKey","labelKey","mediaProperties","setupMediaPlaylist","playlistErrors_","setupMediaPlaylists","resolveMediaGroupUris","phonyUri","audioOnlyMaster","groupId","mergeOptions$2","EventTarget$1","addLLHLSQueryDirectives","query","nextMSN","nextPart","canSkipUntil","symbol","updateSegment","skipped","updateSegments","oldSegments","newSegments","newIndex","oldSegment","newSegment","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","handleMediaupdatetimeout_","playlistRequestError","haveMetadata","playlistString","startingState","parseManifest_","playlistObject","lastRequest","media_","updateMediaUpdateTimeout_","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseTime","roundTripTime","requestTime","responseHeaders","timedout","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","xhrMethod","originalAbort","byterangeStr","byterangeEnd","byterangeStart","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","segmentKeyId","hexDump","ascii","step","tagDump","textRanges","utils","SEGMENT_END_FUDGE_PERCENT","playerTimeToProgramTime","playerTime","transmuxerPrependedSeconds","videoTimingInfo","transmuxedStart","transmuxedPresentationStart","startOfSegment","offsetFromSegmentStart","getTime","originalSegmentVideoDuration","transmuxedPresentationEnd","findSegmentForProgramTime","programTime","nextSegmentStart","lastSegmentStart","lastSegmentDuration","lastSegmentEnd","estimatedStart","findSegmentForPlayerTime","segmentEnd","getOffsetFromTimestamp","comparisonTimeStamp","segmentDateTime","programDateTime","segmentTimeEpoch","programTimeEpoch","verifyProgramDateTimeTags","getProgramTime","_ref$time","matchedSegment","seekTime","programTimeObject","mediaSeconds","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","mediaOffset","seekToTime","seekedCallback","callbackOnCompleted","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","overrideMimeType","loaded","dashPlaylistUnchanged","aSegment","bSegment","aByterange","bByterange","masterXml","srcUrl","oldMaster","newMaster","noChanges","playlistUpdate","group","_playlistUpdate","equivalentSidx","neitherMap","equivalentMap","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","filterChangedSidxMappings","videoSidx","mediaGroupSidx","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","fin","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","mpl","mup","createMUPTimeout_","mediaID","mediaChanged","createMediaUpdateTimeout","Config","GOAL_BUFFER_LENGTH","MAX_GOAL_BUFFER_LENGTH","BACK_BUFFER_LENGTH","GOAL_BUFFER_LENGTH_RATE","INITIAL_BANDWIDTH","BANDWIDTH_VARIANCE","BUFFER_LOW_WATER_LINE","MAX_BUFFER_LOW_WATER_LINE","EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE","BUFFER_LOW_WATER_LINE_RATE","BUFFER_HIGH_WATER_LINE","stringToArrayBuffer","browserWorkerPolyFill","workerObj","createObjectURL","Blob","blob","BlobBuilder","getBlob","factory","objectUrl","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","workerCode$1","init","flushSource","partialFlush","endTimeline","dinf","esds","ftyp","mdat","mfhd","minf","mvex","mvhd","trak","tkhd","mdia","mdhd","hdlr","sdtp","stbl","stsd","traf","trex","trun$1","MAJOR_BRAND","MINOR_VERSION","AVC1_BRAND","VIDEO_HDLR","AUDIO_HDLR","HDLR_TYPES","VMHD","SMHD","DREF","STCO","STSC","STSZ","STTS","stream","UINT32_MAX","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","boxes","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","dataOffset","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","mp4Generator","fileType","movie","groupNalsIntoFrames","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","dts","pts","keyFrame","groupFramesIntoGops","currentGop","gops","extendFirstKeyFrame","createDefaultSample","sampleForFrame","frame","generateSampleTable$1","baseDataOffset","concatenateNalData","nalsByteLength","numberOfNals","totalByteLength","generateSampleTableForFrame","concatenateNalDataForFrame","frameUtils","generateSampleTable","highPrefix","lowPrefix","zeroFill","makeTable","metaTable","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","ONE_SECOND_IN_TS$4","clock","sumFrameByteLengths","currentObj","sum","prefixWithSilence","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","silentFrame","firstFrame","frameDuration","audioGapDuration","audioFillFrameCount","audioFillDuration","trimAdtsFramesByEarliestDts","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","concatenateFrameData","audioFrameUtils","ONE_SECOND_IN_TS$3","collectDtsInfo","timelineStartInfo","maxSegmentPts","maxSegmentDts","clearDtsInfo","calculateTrackBaseMediaDecodeTime","scale","trackDecodeInfo","USER_DATA_REGISTERED_ITU_T_T35","RBSP_TRAILING_BITS","parseSei","payloadType","payloadSize","userIdentifier","parseUserData","sei","parseCaptionPackets","userData","ccData","discardEmulationPreventionBytes$1","emulationPreventionBytesPositions","captionPacketParser","discardEmulationPreventionBytes","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","get708CharFromCode","newCode","within708TextBlock","Cea708Window","windowNum","clearText","pendingNewLine","winAttr","penAttr","penLoc","penColor","visible","rowLock","columnLock","relativePositioning","anchorVertical","anchorHorizontal","anchorPoint","rowCount","virtualRowCount","columnCount","windowStyle","penStyle","getText","rows","rowIdx","beforeRowOverflow","addText","backspace","substr","Cea708Service","serviceNum","currentWindow","windows","startPts","win","setCurrentWindow","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","initService","handleText","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","getPts","flushDisplayed","isExtended","extended","_char","fillOpacity","fillRed","fillGreen","fillBlue","borderType","borderRed","borderGreen","borderBlue","wordWrap","printDirection","scrollDirection","justify","effectSpeed","effectDirection","displayEffect","displayedText","winId","endPts","pushCaption","textTag","penSize","italics","underline","edgeType","fontStyle","fgOpacity","fgRed","fgGreen","fgBlue","bgOpacity","bgRed","bgGreen","bgBlue","edgeRed","edgeGreen","edgeBlue","column","CHARACTER_TRANSLATION","getCharFromCode","BOTTOM_ROW","ROWS","createDisplayBuffer","field","dataChannel","field_","dataChannel_","setConstants","swap","char0","char1","lastControlCode_","PADDING_","RESUME_CAPTION_LOADING_","mode_","END_OF_CAPTION_","clearFormatting","displayed_","nonDisplayed_","startPts_","ROLL_UP_2_ROWS_","rollUpRows_","setRollUp","ROLL_UP_3_ROWS_","ROLL_UP_4_ROWS_","CARRIAGE_RETURN_","shiftRowsUp_","BACKSPACE_","row_","ERASE_DISPLAYED_MEMORY_","ERASE_NON_DISPLAYED_MEMORY_","RESUME_DIRECT_CAPTIONING_","isSpecialCharacter","column_","isExtCharacter","isMidRowCode","addFormatting","isOffsetControlCode","isPAC","formatting_","isColorPAC","isNormalChar","topRow_","BASE_","EXT_","CONTROL_","OFFSET_","_char2","newBaseRow","reverse","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","MAX_TS","RO_THRESH","TYPE_SHARED","handleRollover$1","direction","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","handleRollover","percentEncode$1","parseUtf8","parseIso88591$1","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","dispatchType","frameStart","frameSize","frameHeader","dataAlignmentIndicator","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","MP2T_PACKET_LENGTH$1","SYNC_BYTE$1","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","psi","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","sectionLength","tableEnd","programInfoLength","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","parsePes","pes","ptsDtsFlags","startPrefix","packetLength","forceFlush","fragment","packetFlushable","trackId","flushStreams_","m2ts","PAT_PID","MP2T_PACKET_LENGTH","TransportPacketStream","TransportParseStream","ElementaryStream","MetadataStream","_AdtsStream","m2ts_1","ONE_SECOND_IN_TS$2","ADTS_SAMPLING_FREQUENCIES$1","handlePartialSegments","frameNum","skipWarn_","frameLength","protectionSkipBytes","oldBuffer","sampleCount","adtsFrameDuration","ExpGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","deltaScale","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","aspectRatioIdc","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","isLikelyAacData$1","parseSyncSafeInteger","percentEncode","parseIso88591","parseAdtsSize","lowThree","middle","highTwo","parseType$2","parseSampleRate","parseAacTimestamp","isLikelyAacData","parseType","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","AUDIO_PROPERTIES","audioProperties","VIDEO_PROPERTIES","videoProperties","ONE_SECOND_IN_TS$1","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","ptsOffsetFromDts","decodeDuration","presentationDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","halfSecond","allowableOverlap","nearestDistance","alignIndex","gopIndex","align","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","pipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","compositionStartTime","getVideoTrackIds","getTracks","getTimescaleFromMediaHeader","transmuxer","Transmuxer","VideoSegmentStream","AudioSegmentStream","toUnsigned$3","toHexString$1","bin","toUnsigned","toHexString","parseType$1","parseType_1","toUnsigned$2","subresults","findBox_1","toUnsigned$1","parseTfdt","parseSampleFlags","parseSampleFlags_1","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTrun","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","parseTfhd","mapToSample","approximateOffset","findSeiNals","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","parseSamples","truns","allSamples","trackRun","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","parseEmbeddedCaptions","trackNals","CaptionParser","segmentCache","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","captionParser","traks","baseTimes","baseTime","trafBoxes","parsedTfhd","parsedTfdt","parsedTrun","hdlrs","tkhds","handlerType","getUint8","tkhdVersion","sampleDescriptions","codecConfig","codecConfigType","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","pusi","payloadOffset","parsePesType","parsePesTime","parseNalUnitType","videoPacketContainsKeyFrame","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","probe$1","probe","SYNC_BYTE","parsePsi_","table","parseAudioPes_","pesType","parsed","endLoop","parseVideoPes_","firstKeyFrame","adjustTimestamp_","baseTimestamp","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","inspectAac_","audioCount","audioTimescale","inspectTs_","inspect","isAacData","tsInspector","wireTransmuxerEvents","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","MessageHandlers","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","TransmuxWorker","handleData_","transmuxedData","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleDone_","handleGopInfo_","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","waitForEndedTimelineEvent","handleMessage","currentTransmux","dequeue","transmuxQueue","processAction","enqueueAction","transmux","createTransmuxer","term","segmentTransmuxer","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","FAILURE","TIMEOUT","ABORTED","abortAll","activeXhrs","getRequestStats","getProgressStats","progressEvent","stats","handleErrors","handleKeyResponse","finishProcessingFn","errorObj","_callback","handleInitSegmentResponse","encryptedBytes","parseError","handleSegmentResponse","newBytes","lastReachedChar","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","finish","id3Frames","probeResult","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","decrypt","_ref7","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","decryptSegment","_ref8","requestId","decryptedBytes","waitForCompletion","_ref9","didError","segmentFinish","endOfAllRequests","handleLoadEnd","_ref10","loadendState","abortFn","calledAbortFn","handleProgress","_ref11","progressFn","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","keyRequestOptions","keyRequestCallback","keyXhr","differentMapKey","mapKeyRequestOptions","mapKeyRequestCallback","mapKeyXhr","initSegmentOptions","initSegmentRequestCallback","initSegmentXhr","segmentRequestOptions","segmentRequestCallback","segmentXhr","activeXhr","logFn$1","mediaAttributes","isMaat","codecList","codecCount","codecObj","codecInfo","defaultCodecs","logFn","representationToString","property","stableSort","sortFn","newArray","cmp","leftBandwidth","rightBandwidth","leftWidth","rightWidth","playerBandwidth","playerWidth","playerHeight","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","sortedPlaylistReps","rep","enabledPlaylistReps","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","resolutionBestRep","experimentalLeastPixelDiffSelector","leastPixelDiffList","pixelDiff","chosenRep","_type","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","decay","average","lastSystemBandwidth","minRebufferMaxBandwidthSelector","syncController","compatiblePlaylists","enabledPlaylists","bandwidthPlaylists","rebufferingEstimates","getSyncPoint","numRequests","requestTimeEstimate","rebufferingImpact","noRebufferingPlaylists","estimate","lowestBitrateCompatibleVariantSelector","playlistsWithVideo","concatSegments","segmentObj","createCaptionsTrackIfNotExists","inbandTextTracks","def","captionService","captionArray","Cue","WebKitDataCue","deprecateOldCue","metadataArray","videoDuration","metadataTrack","metadataTrack_","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","createMetadataTrackIfNotExists","inBandMetadataTrackDispatchType","removeCuesFromTrack","removeDuplicateCuesFromTrack","duplicates","occurrences","dupe","mapping","currentTimePts","updateGopBuffer","updatedBuffer","shallowEqual","akeys","bkeys","QUOTA_EXCEEDED_ERR","getSyncSegmentCandidate","targetTime","timelineSegments","MIN_BACK_BUFFER","CHECK_BUFFER_DELAY","finite","MIN_SEGMENT_DURATION_TO_SAVE_STATS","illegalMediaSwitch","loaderType","startingMedia","safeBackBufferTrimTime","trimTime","maxTrimTime","segmentInfoString","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","timestampOffsetForSegment","overrideCheck","shouldWaitForTimelineChange","timelineChangeController","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","mediaDuration","audioDuration","segmentTooLong","maxDuration","getTroublesomeSegmentDurationMessage","sourceType","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","_videojs$EventTarget","SegmentLoader","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","checkBufferTimeout_","currentTimeline_","pendingSegment_","xhrOptions_","pendingSegments_","audioDisabled_","isPendingTimestampOffset_","gopBuffer_","timeMapping_","safeAppend_","appendInitSegment_","playlistOfLastInitSegment_","callQueue_","loadQueue_","metadataQueue_","waitingOnRemove_","quotaExceededErrorRetryTimeout_","activeInitSegmentId_","initSegments_","cacheEncryptionKeys_","cacheEncryptionKeys","keyCache_","decrypter_","decrypter","syncController_","syncPoint_","transmuxer_","createTransmuxer_","triggerSyncInfoUpdate_","isEndOfStream_","ended_","fetchAtBuffer_","newState","hasEnoughInfoToAppend_","processCallQueue_","hasEnoughInfoToLoad_","processLoadQueue_","mediaBytesTransferred","mediaRequests","mediaRequestsAborted","mediaRequestsTimedout","mediaRequestsErrored","mediaTransferDuration","mediaSecondsLoaded","mediaAppends","abort_","setAudio","removeAudio","monitorBuffer_","abortRequests","clearPendingTimelineChange","checkForAbort_","_error","endOfStream","buffered_","getMediaInfo_","videoBuffered","audioBuffered","initSegmentForMap","storedMap","segmentKey","storedKey","couldBeginLoading_","playlist_","init_","resetEverything","newPlaylist","oldPlaylist","syncInfo","setDateTimeMappingForStart","oldId","resyncLoader","mediaSequenceDiff","resetLoader","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","_Playlist$getMediaInf","_partIndex","nextSegment","generateSegmentInfo_","forceTimestampOffset","random","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","videoTimestampOffset","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","switchCandidate","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","handleId3_","processMetadataQueue_","callQueue","fun","loadQueue","getCurrentMediaInfo_","setTimeMapping_","updateMediaSecondsLoaded_","firstVideoFrameTimeForData","useVideoTimingInfo","trueSegmentStart_","currentStart","currentVideoTimestampOffset","updateAppendInitSegmentStatus","updateSourceBufferTimestampOffset_","updateTimingInfoEnd_","saveSegmentTimingInfo","shouldSaveTimelineMapping","appendData_","changedTimestampOffset","getInitSegmentAndUpdateState_","handleQuotaExceededError_","audioBufferStart","audioBufferEnd","videoBufferStart","videoBufferEnd","appendToSourceBuffer_","timeToRemoveUntil","handleAppendError_","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","didChange","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","nextQueueIndexOfType","queueEntry","shiftQueue","queueIndex","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","addSourceBuffer","mime","removeSourceBuffer","changeType","pushQueue","onUpdateend","SourceUpdater","sourceopenListener_","audioTimestampOffset_","videoTimestampOffset_","delayedAudioAppendQueue_","videoAppendQueued_","onVideoUpdateEnd_","onAudioUpdateEnd_","onVideoError_","videoError_","onAudioError_","audioError_","createdSourceBuffers_","initializedEme_","triggeredReady_","initializedEme","hasCreatedSourceBuffers","hasInitializedAnyEme","createSourceBuffers","addOrChangeSourceBuffers","canRemoveSourceBuffer","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","_SegmentLoader","VTTSegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","combinedByteLength","combinedSegment","timestampOffsetForTimeline","checkTimestampOffset","skipEmptySegments_","stopForError","loadHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","decoder","decodeBytesToString","timestampmap","MPEGTS","LOCAL","ontimestampmap","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","_segment$cueOutCont$s","adOffset","adTotal","syncPointStrategies","run","timelineToDatetimeMappings","lastDistance","datetimeMapping","discontinuitySync","discontinuities","SyncController","syncPoints","runStrategies_","selectSyncPoint_","getExpiredTime","strategy","bestSyncPoint","bestDistance","bestStrategy","newDistance","lastRemovedSegment","firstSegment","playlistTimestamp","didCalculateSegmentTimeMapping","calculateSegmentTimeMapping_","saveDiscontinuitySyncInfo_","dateTime","accuracy","mediaIndexDiff","TimelineChangeController","pendingTimelineChanges_","lastTimelineChanges_","workerCode","createCommonjsModule","basedir","commonjsRequire","createClass","_defineProperties","_createClass","Constructor","protoProps","staticProps","inheritsLoose","unpad","padded","precompute","xInv","x2","x4","x8","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","aesTables","AES","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","b2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","init0","init1","init2","init3","wordIx","encrypted32","Int32Array","decipher","decrypted32","Decrypter","STEP","asyncStream_","decryptChunk_","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","onGroupChanged","_settings$segmentLoad","segmentLoaders","mainSegmentLoader","activeTrack","activeGroup","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","isMasterPlaylist","onGroupChanging","onTrackChanged","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","blacklistCurrentPlaylist","defaultTrack","setupListeners","requestOptions","initialize","_settings$mediaTypes$","groups","variantLabel","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","variants","groupKeys","groupPropertyList","activeTrack_","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","activeAudioGroup","onAudioTrackChanged","createMediaTypes","ABORT_EARLY_BLACKLIST_SECONDS","loaderStats","sumLoaderStat","audioSegmentLoader_","mainSegmentLoader_","shouldSwitchToMedia","currentPlaylist","nextPlaylist","forwardBuffer","bufferLowWaterLine","bufferHighWaterLine","experimentalBufferBasedABR","sharedLogLine","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","shouldSwitchToMedia_","switchMedia_","newId","abrTimer_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","haveJsonSource","handleUpdatedMediaPlaylist","lastExcludeReason_","playlistOutdated","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","onSyncInfoUpdate_","onEndOfStream","delegateLoaders_","updateCodecs","tryToCreateSourceBuffers_","getCodecsOrExclude_","mediaSecondsLoaded_","smoothQualityChange_","mainMediaInfo","absolutePlaylistEnd","reincluded","errorMessage","delayDuration","fnNames","loaders","dontFilterPlaylist","loader","audioSeekable","mainSeekable","oldEnd","oldStart","updateDuration_","areMediaTypesKnown_","usingAudioLoader","hasMainMediaInfo","hasAudioMediaInfo","playlistCodecs","unsupportedAudio","supportFunction","unsupportedCodecs","supporter","variantAudioGroup","switchMessages","newCodec","oldCodec","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","newMax","enableFunction","playlistID","changePlaylistFn","incompatible","currentlyEnabled","Representation","vhsHandler","smoothQualityChange","qualityChangeFunction","renditionSelectionMixin","timerCancelEvents","closeToBufferedContent","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","fixesBadSeeksHandler","fixesBadSeeks_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","checkCurrentTime_","isBufferedDifferent","playlistId","waiting_","isAfterSeekableRange","afterSeekableWindow_","beforeSeekableWindow_","currentRange","livePoint","videoUnderflow","videoUnderflow_","nextRange","difference","skipTheGap_","allowedEnd","gap","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","initPlugin","lastCalled","localOptions","loadedMetadataHandler","cleanupEvents","reinitPlugin","reloadSourceOnError","version$4","version$3","version$2","version$1","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","lastBandwidthSelector","movingAverageBandwidthSelector","comparePlaylistBandwidth","comparePlaylistResolution","LOCAL_STORAGE_KEY","handleVhsMediaChange","qualityLevels","selectedIndex_","handleVhsLoadedMetadata","addQualityLevel","keySystemOptions","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","getAllPsshKeySystemsOptions","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","initializationFinishedPromises","keySessionCreatedPromises","race","setupEmeOptions","sourceOptions","storedObject","objectToStore","expandDataUri","dataUri","supportsNativeHls","canPlay","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","featuresNativeAudioTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","option","playbackWatcherOptions","playbackWatcher_","defaultSelector","invThroughput","invBandwidth","systemBitrate","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","setupEme_","setupQualityLevels_","mediaSourceUrl_","audioPlaylistLoader","didSetupEmeOptions","qualityLevels_","dash","convertToProgramTime","VhsSourceHandler","_videojs$mergeOptions","_videojs$mergeOptions2","supportedType","canUseMsePlayback","beforeDestroy","beforeUpdate","new_source","css","volumePanel","beforeUnmount","autoKeyword","directionSetting","alignSetting","findDirectionSetting","findAlignSetting","hasBeenReset","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","setting","SyntaxError","getCueAsHTML","convertCueToDOMTree","conventions","entities","sax","ParseError","XMLReader","locator","buildErrorHandler","errorImpl","domBuilder","DOMHandler","isCallback","build","msg","_locator","cdata","lineNumber","columnNumber","systemId","_toString","chars","java","appendElement","hander","currentElement","defaultNSMap","xmlns","entityMap","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","startDocument","createDocument","documentURI","startElement","namespaceURI","localName","qName","createElementNS","getURI","getQName","createAttributeNS","getLocator","setAttributeNode","endElement","startPrefixMapping","prefix","endPrefixMapping","processingInstruction","ins","createProcessingInstruction","ignorableWhitespace","ch","characters","charNode","createCDATASection","skippedEntity","endDocument","normalize","comm","createComment","startCDATA","endCDATA","startDTD","publicId","impl","createDocumentType","dt","doctype","warning","fatalError","__DOMHandler","isNativeReflectConstruct","_construct","Parent","Class","amp","apos","gt","lt","quot","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","times","divide","forall","exist","nabla","isin","notin","ni","prod","minus","lowast","radic","infin","ang","and","or","cap","cup","there4","sim","cong","asymp","ne","equiv","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","rho","sigmaf","sigma","tau","upsilon","phi","chi","omega","thetasym","upsih","piv","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","tilde","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","euro","trade","larr","uarr","rarr","darr","harr","crarr","lceil","rceil","lfloor","rfloor","loz","spades","clubs","hearts","diams","base64","ieee754","typedArraySupport","foo","kMaxLength","Buffer","TYPED_ARRAY_SUPPORT","createBuffer","RangeError","encodingOrOffset","allocUnsafe","fromArrayBuffer","fromString","fromObject","assertSize","alloc","encoding","checked","isEncoding","actual","fromArrayLike","isBuffer","isnan","SlowBuffer","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","bidirectionalIndexOf","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","hexWrite","remaining","strLen","utf8Write","blitBuffer","asciiWrite","asciiToBytes","latin1Write","base64Write","ucs2Write","utf16leToBytes","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","decodeCodePointsArray","INSPECT_MAX_BYTES","global","poolSize","_augment","species","allocUnsafeSlow","_isBuffer","compare","pos","swap16","swap32","swap64","equals","thisStart","thisEnd","thisCopy","targetCopy","includes","_arr","MAX_ARGUMENTS_LENGTH","codePoints","toHex","checkOffset","checkInt","objectWriteUInt16","littleEndian","objectWriteUInt32","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","sliceLen","readUIntLE","mul","readUIntBE","readUInt8","readUInt16LE","readUInt32LE","readUInt32BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","maxBytes","writeUIntBE","writeUInt8","writeUInt16LE","writeUInt16BE","writeUInt32LE","writeUInt32BE","writeIntLE","limit","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","INVALID_BASE64_RE","base64clean","stringtrim","units","leadSurrogate","byteArray","hi","lo","dst","_objCreate","ParsingError","errorData","parseTimeStamp","input","computeSeconds","f","Settings","parseOptions","keyValueDelim","groupDelim","kv","parseCue","regionList","oInput","consumeTimeStamp","Errors","BadTimeStamp","consumeCueSettings","region","alt","vals","vals0","integer","lineAlign","snapToLines","center","positionAlign","skipWhitespace","BadSignature","dflt","defaultKey","TEXTAREA_ELEMENT","TAG_NAME","u","ruby","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","nextToken","consume","shouldAdd","annotation","rootDiv","tagStack","classes","cl","bgColor","colorName","propValue","strongRTLRanges","isStrongRTLChar","determineBidi","nodeStack","pushNodes","nextTextNode","computeLinePos","textTrackList","mediaElement","StyleBox","CueStyleBox","styleOptions","styles","display","writingMode","unicodeBidi","applyStyles","textAlign","font","whiteSpace","textPos","formatStyle","move","BoxPosition","lh","rects","getClientRects","lineHeight","moveBoxToLinePosition","styleBox","containerBox","boxPositions","findBestPosition","axis","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","boxPosition","linePos","maxPosition","initialAxis","calculatedPercentage","toCSSCompatValues","unit","toMove","overlaps","intersectArea","getSimpleBoxPosition","cuetext","FONT_SIZE_PERCENT","FONT_STYLE","CUE_BACKGROUND_PADDING","overlay","paddedOverlay","shouldCompute","margin","reportOrThrowError","collectNextLine","parseRegion","xy","anchor","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseTimestampMap","parseHeader","alreadyCollectedLine","hasSubstring","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","baseURL","relativeURL","alwaysNormalize","basePartsForNormalise","parseURL","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","builtParts","baseURLPath","newPath","searchInput","hasKeyCode","search","foundNamedKey","aliases","nameOrCode","alias","nameStartChar","nameChar","tagNamePattern","S_TAG","S_ATTR","S_ATTR_SPACE","S_EQ","S_ATTR_NOQUOT_VALUE","S_ATTR_END","S_TAG_SPACE","S_TAG_CLOSE","captureStackTrace","defaultNSMapCopy","fixedFromCharCode","surrogate1","surrogate2","entityReplacer","appendText","xt","lineEnd","linePattern","lineStart","parseStack","currentNSMap","closeMap","tagStart","localNSMap","endMatch","endIgnoreCaseMach","parseInstruction","parseDCC","ElementAttributes","parseElementStartPart","closed","fixSelfClosed","locator2","copyLocator","parseHtmlSpecialContent","addAttribute","qname","attributeNames","addValue","setTagName","nsp","nsPrefix","_copy","ns","elStartEnd","elEndStart","matchs","pubid","sysid","lastMatch","endDTD","lastIndex","getLocalName","notEmptyString","splitOnASCIIWhitespace","orderedSetReducer","toOrderedSet","arrayIncludes","dest","Super","pt","NodeType","ELEMENT_NODE","ATTRIBUTE_NODE","TEXT_NODE","CDATA_SECTION_NODE","ENTITY_REFERENCE_NODE","ENTITY_NODE","PROCESSING_INSTRUCTION_NODE","COMMENT_NODE","DOCUMENT_NODE","DOCUMENT_TYPE_NODE","DOCUMENT_FRAGMENT_NODE","NOTATION_NODE","ExceptionCode","ExceptionMessage","HIERARCHY_REQUEST_ERR","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","NOT_FOUND_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","INUSE_ATTRIBUTE_ERR","NOT_SUPPORTED_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","DOMException","NodeList","LiveNodeList","refresh","_node","_refresh","_updateLiveList","inc","_inc","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","_onAddAttribute","_removeNamedNode","Node","_xmlEncoder","_visitNode","Document","_nsMap","_onUpdateChild","cs","_removeChild","previous","previousSibling","lastChild","_insertBefore","nextChild","cp","newFirst","newLast","pre","_appendSingleChild","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","nodeSerializeToString","isHtml","nodeFilter","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","prefixedNodeName","defaultNS","ai","nsi","internalSubset","importNode","deep","node2","attrs2","_ownerElement","getNamedItem","setNamedItem","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","refChild","oldChild","appendData","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importedNode","getElementById","rtv","getElementsByClassName","classNames","classNamesSet","nodeClassNames","nodeClassNamesSet","createAttribute","specified","createEntityReference","pl","getAttributeNode","removeAttributeNode","setAttributeNodeNS","removeAttributeNS","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","getTextContent","$$length","_inherits","doccy","minDoc","topLevel","scrollSetting","findScrollSetting","isValidPercentValue","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","atob","decodeB64ToUint8Array","b64Text","decodedString"],"mappings":"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","file":"js/videoPlaylist.js","sourcesContent":["'use strict';\nvar aFunction = require('../internals/a-function');\nvar isObject = require('../internals/is-object');\n\nvar slice = [].slice;\nvar factories = {};\n\nvar construct = function (C, argsLength, args) {\n if (!(argsLength in factories)) {\n for (var list = [], i = 0; i < argsLength; i++) list[i] = 'a[' + i + ']';\n // eslint-disable-next-line no-new-func -- we have no proper alternatives, IE8- only\n factories[argsLength] = Function('C,a', 'return new C(' + list.join(',') + ')');\n } return factories[argsLength](C, args);\n};\n\n// `Function.prototype.bind` method implementation\n// https://tc39.es/ecma262/#sec-function.prototype.bind\nmodule.exports = Function.bind || function bind(that /* , ...args */) {\n var fn = aFunction(this);\n var partArgs = slice.call(arguments, 1);\n var boundFunction = function bound(/* args... */) {\n var args = partArgs.concat(slice.call(arguments));\n return this instanceof boundFunction ? construct(fn, args.length, args) : fn.apply(that, args);\n };\n if (isObject(fn.prototype)) boundFunction.prototype = fn.prototype;\n return boundFunction;\n};\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container\"},[_c('div',{attrs:{\"id\":\"contentPage\"}},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.title[_vm.lang])+\" \")]),_c('div',{attrs:{\"id\":\"contentTopDiv\"}},[(Object.keys(_vm.featuredItem).length)?_c('featured-box',{attrs:{\"url\":_vm.resolveUrl(_vm.featuredItem),\"img\":_vm.resolveBgmg(_vm.featuredItem, 'high'),\"disabled\":['tag']},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveTitle(_vm.featuredItem))+\" \")]},proxy:true},{key:\"description\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveDate(_vm.featuredItem))+\" \")]},proxy:true}],null,false,855387739)}):_vm._e(),_vm._l((_vm.mainItems),function(mainItem,key){return _c('medium-box',{key:key,class:{ 'last' : (key + 1) % 2 === 0},attrs:{\"url\":_vm.resolveUrl(mainItem),\"img\":_vm.resolveBgmg(mainItem),\"disabled\":['tag']},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveTitle(mainItem))+\" \")]},proxy:true},{key:\"description\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveDate(mainItem))+\" \")]},proxy:true}],null,true)})})],2),_c('div',{staticClass:\"NewsDiv20\"},[_vm._l((_vm.sideItems),function(sideItem,key){return _c('medium-box',{key:key,attrs:{\"url\":_vm.resolveUrl(sideItem),\"img\":_vm.resolveBgmg(sideItem),\"disabled\":['tag']},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveTitle(sideItem))+\" \")]},proxy:true},{key:\"description\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.resolveDate(sideItem))+\" \")]},proxy:true}],null,true)})}),(_vm.sideItems.length)?_c('infinite-loading',{on:{\"infinite\":_vm.requestPlaylist}},[_c('div',{attrs:{\"slot\":\"no-more\"},slot:\"no-more\"}),_c('div',{attrs:{\"slot\":\"no-results\"},slot:\"no-results\"})]):_vm._e()],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoPlaylist.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VideoPlaylist.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./VideoPlaylist.vue?vue&type=template&id=7a76be8f&\"\nimport script from \"./VideoPlaylist.vue?vue&type=script&lang=js&\"\nexport * from \"./VideoPlaylist.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n","/**\n * Copyright 2013 vtt.js Contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Default exports for Node. Export the extended versions of VTTCue and\n// VTTRegion in Node since we likely want the capability to convert back and\n// forth between JSON. If we don't then it's not that big of a deal since we're\n// off browser.\n\nvar window = require('global/window');\n\nvar vttjs = module.exports = {\n WebVTT: require(\"./vtt.js\"),\n VTTCue: require(\"./vttcue.js\"),\n VTTRegion: require(\"./vttregion.js\")\n};\n\nwindow.vttjs = vttjs;\nwindow.WebVTT = vttjs.WebVTT;\n\nvar cueShim = vttjs.VTTCue;\nvar regionShim = vttjs.VTTRegion;\nvar nativeVTTCue = window.VTTCue;\nvar nativeVTTRegion = window.VTTRegion;\n\nvttjs.shim = function() {\n window.VTTCue = cueShim;\n window.VTTRegion = regionShim;\n};\n\nvttjs.restore = function() {\n window.VTTCue = nativeVTTCue;\n window.VTTRegion = nativeVTTRegion;\n};\n\nif (!window.VTTCue) {\n vttjs.shim();\n}\n","\"use strict\";\n\nvar window = require(\"global/window\");\n\nvar _extends = require(\"@babel/runtime/helpers/extends\");\n\nvar isFunction = require('is-function');\n\ncreateXHR.httpHandler = require('./http-handler.js');\n/**\n * @license\n * slighly modified parse-headers 2.0.2 \n * Copyright (c) 2014 David Björklund\n * Available under the MIT license\n * \n */\n\nvar parseHeaders = function parseHeaders(headers) {\n var result = {};\n\n if (!headers) {\n return result;\n }\n\n headers.trim().split('\\n').forEach(function (row) {\n var index = row.indexOf(':');\n var key = row.slice(0, index).trim().toLowerCase();\n var value = row.slice(index + 1).trim();\n\n if (typeof result[key] === 'undefined') {\n result[key] = value;\n } else if (Array.isArray(result[key])) {\n result[key].push(value);\n } else {\n result[key] = [result[key], value];\n }\n });\n return result;\n};\n\nmodule.exports = createXHR; // Allow use of default import syntax in TypeScript\n\nmodule.exports.default = createXHR;\ncreateXHR.XMLHttpRequest = window.XMLHttpRequest || noop;\ncreateXHR.XDomainRequest = \"withCredentials\" in new createXHR.XMLHttpRequest() ? createXHR.XMLHttpRequest : window.XDomainRequest;\nforEachArray([\"get\", \"put\", \"post\", \"patch\", \"head\", \"delete\"], function (method) {\n createXHR[method === \"delete\" ? \"del\" : method] = function (uri, options, callback) {\n options = initParams(uri, options, callback);\n options.method = method.toUpperCase();\n return _createXHR(options);\n };\n});\n\nfunction forEachArray(array, iterator) {\n for (var i = 0; i < array.length; i++) {\n iterator(array[i]);\n }\n}\n\nfunction isEmpty(obj) {\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) return false;\n }\n\n return true;\n}\n\nfunction initParams(uri, options, callback) {\n var params = uri;\n\n if (isFunction(options)) {\n callback = options;\n\n if (typeof uri === \"string\") {\n params = {\n uri: uri\n };\n }\n } else {\n params = _extends({}, options, {\n uri: uri\n });\n }\n\n params.callback = callback;\n return params;\n}\n\nfunction createXHR(uri, options, callback) {\n options = initParams(uri, options, callback);\n return _createXHR(options);\n}\n\nfunction _createXHR(options) {\n if (typeof options.callback === \"undefined\") {\n throw new Error(\"callback argument missing\");\n }\n\n var called = false;\n\n var callback = function cbOnce(err, response, body) {\n if (!called) {\n called = true;\n options.callback(err, response, body);\n }\n };\n\n function readystatechange() {\n if (xhr.readyState === 4) {\n setTimeout(loadFunc, 0);\n }\n }\n\n function getBody() {\n // Chrome with requestType=blob throws errors arround when even testing access to responseText\n var body = undefined;\n\n if (xhr.response) {\n body = xhr.response;\n } else {\n body = xhr.responseText || getXml(xhr);\n }\n\n if (isJson) {\n try {\n body = JSON.parse(body);\n } catch (e) {}\n }\n\n return body;\n }\n\n function errorFunc(evt) {\n clearTimeout(timeoutTimer);\n\n if (!(evt instanceof Error)) {\n evt = new Error(\"\" + (evt || \"Unknown XMLHttpRequest Error\"));\n }\n\n evt.statusCode = 0;\n return callback(evt, failureResponse);\n } // will load the data & process the response in a special response object\n\n\n function loadFunc() {\n if (aborted) return;\n var status;\n clearTimeout(timeoutTimer);\n\n if (options.useXDR && xhr.status === undefined) {\n //IE8 CORS GET successful response doesn't have a status field, but body is fine\n status = 200;\n } else {\n status = xhr.status === 1223 ? 204 : xhr.status;\n }\n\n var response = failureResponse;\n var err = null;\n\n if (status !== 0) {\n response = {\n body: getBody(),\n statusCode: status,\n method: method,\n headers: {},\n url: uri,\n rawRequest: xhr\n };\n\n if (xhr.getAllResponseHeaders) {\n //remember xhr can in fact be XDR for CORS in IE\n response.headers = parseHeaders(xhr.getAllResponseHeaders());\n }\n } else {\n err = new Error(\"Internal XMLHttpRequest Error\");\n }\n\n return callback(err, response, response.body);\n }\n\n var xhr = options.xhr || null;\n\n if (!xhr) {\n if (options.cors || options.useXDR) {\n xhr = new createXHR.XDomainRequest();\n } else {\n xhr = new createXHR.XMLHttpRequest();\n }\n }\n\n var key;\n var aborted;\n var uri = xhr.url = options.uri || options.url;\n var method = xhr.method = options.method || \"GET\";\n var body = options.body || options.data;\n var headers = xhr.headers = options.headers || {};\n var sync = !!options.sync;\n var isJson = false;\n var timeoutTimer;\n var failureResponse = {\n body: undefined,\n headers: {},\n statusCode: 0,\n method: method,\n url: uri,\n rawRequest: xhr\n };\n\n if (\"json\" in options && options.json !== false) {\n isJson = true;\n headers[\"accept\"] || headers[\"Accept\"] || (headers[\"Accept\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n if (method !== \"GET\" && method !== \"HEAD\") {\n headers[\"content-type\"] || headers[\"Content-Type\"] || (headers[\"Content-Type\"] = \"application/json\"); //Don't override existing accept header declared by user\n\n body = JSON.stringify(options.json === true ? body : options.json);\n }\n }\n\n xhr.onreadystatechange = readystatechange;\n xhr.onload = loadFunc;\n xhr.onerror = errorFunc; // IE9 must have onprogress be set to a unique function.\n\n xhr.onprogress = function () {// IE must die\n };\n\n xhr.onabort = function () {\n aborted = true;\n };\n\n xhr.ontimeout = errorFunc;\n xhr.open(method, uri, !sync, options.username, options.password); //has to be after open\n\n if (!sync) {\n xhr.withCredentials = !!options.withCredentials;\n } // Cannot set timeout with sync request\n // not setting timeout on the xhr object, because of old webkits etc. not handling that correctly\n // both npm's request and jquery 1.x use this kind of timeout, so this is being consistent\n\n\n if (!sync && options.timeout > 0) {\n timeoutTimer = setTimeout(function () {\n if (aborted) return;\n aborted = true; //IE9 may still call readystatechange\n\n xhr.abort(\"timeout\");\n var e = new Error(\"XMLHttpRequest timeout\");\n e.code = \"ETIMEDOUT\";\n errorFunc(e);\n }, options.timeout);\n }\n\n if (xhr.setRequestHeader) {\n for (key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n } else if (options.headers && !isEmpty(options.headers)) {\n throw new Error(\"Headers cannot be set on an XDomainRequest object\");\n }\n\n if (\"responseType\" in options) {\n xhr.responseType = options.responseType;\n }\n\n if (\"beforeSend\" in options && typeof options.beforeSend === \"function\") {\n options.beforeSend(xhr);\n } // Microsoft Edge browser sends \"undefined\" when send is called with undefined value.\n // XMLHttpRequest spec says to pass null as body to indicate no body\n // See https://github.com/naugtur/xhr/issues/100.\n\n\n xhr.send(body || null);\n return xhr;\n}\n\nfunction getXml(xhr) {\n // xhr.responseXML will throw Exception \"InvalidStateError\" or \"DOMException\"\n // See https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseXML.\n try {\n if (xhr.responseType === \"document\") {\n return xhr.responseXML;\n }\n\n var firefoxBugTakenEffect = xhr.responseXML && xhr.responseXML.documentElement.nodeName === \"parsererror\";\n\n if (xhr.responseType === \"\" && !firefoxBugTakenEffect) {\n return xhr.responseXML;\n }\n } catch (e) {}\n\n return null;\n}\n\nfunction noop() {}","/**\n * mux.js\n *\n * Copyright (c) Brightcove\n * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE\n */\nvar\n ONE_SECOND_IN_TS = 90000, // 90kHz clock\n secondsToVideoTs,\n secondsToAudioTs,\n videoTsToSeconds,\n audioTsToSeconds,\n audioTsToVideoTs,\n videoTsToAudioTs,\n metadataTsToSeconds;\n\nsecondsToVideoTs = function(seconds) {\n return seconds * ONE_SECOND_IN_TS;\n};\n\nsecondsToAudioTs = function(seconds, sampleRate) {\n return seconds * sampleRate;\n};\n\nvideoTsToSeconds = function(timestamp) {\n return timestamp / ONE_SECOND_IN_TS;\n};\n\naudioTsToSeconds = function(timestamp, sampleRate) {\n return timestamp / sampleRate;\n};\n\naudioTsToVideoTs = function(timestamp, sampleRate) {\n return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));\n};\n\nvideoTsToAudioTs = function(timestamp, sampleRate) {\n return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);\n};\n\n/**\n * Adjust ID3 tag or caption timing information by the timeline pts values\n * (if keepOriginalTimestamps is false) and convert to seconds\n */\nmetadataTsToSeconds = function(timestamp, timelineStartPts, keepOriginalTimestamps) {\n return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);\n};\n\nmodule.exports = {\n ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,\n secondsToVideoTs: secondsToVideoTs,\n secondsToAudioTs: secondsToAudioTs,\n videoTsToSeconds: videoTsToSeconds,\n audioTsToSeconds: audioTsToSeconds,\n audioTsToVideoTs: audioTsToVideoTs,\n videoTsToAudioTs: videoTsToAudioTs,\n metadataTsToSeconds: metadataTsToSeconds\n};\n","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar aFunction = require('../internals/a-function');\nvar anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar bind = require('../internals/function-bind');\nvar fails = require('../internals/fails');\n\nvar nativeConstruct = getBuiltIn('Reflect', 'construct');\n\n// `Reflect.construct` method\n// https://tc39.es/ecma262/#sec-reflect.construct\n// MS Edge supports only 2 arguments and argumentsList argument is optional\n// FF Nightly sets third argument as `new.target`, but does not create `this` from it\nvar NEW_TARGET_BUG = fails(function () {\n function F() { /* empty */ }\n return !(nativeConstruct(function () { /* empty */ }, [], F) instanceof F);\n});\nvar ARGS_BUG = !fails(function () {\n nativeConstruct(function () { /* empty */ });\n});\nvar FORCED = NEW_TARGET_BUG || ARGS_BUG;\n\n$({ target: 'Reflect', stat: true, forced: FORCED, sham: FORCED }, {\n construct: function construct(Target, args /* , newTarget */) {\n aFunction(Target);\n anObject(args);\n var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);\n if (ARGS_BUG && !NEW_TARGET_BUG) return nativeConstruct(Target, args, newTarget);\n if (Target == newTarget) {\n // w/o altered newTarget, optimization for 0-4 arguments\n switch (args.length) {\n case 0: return new Target();\n case 1: return new Target(args[0]);\n case 2: return new Target(args[0], args[1]);\n case 3: return new Target(args[0], args[1], args[2]);\n case 4: return new Target(args[0], args[1], args[2], args[3]);\n }\n // w/o altered newTarget, lot of arguments case\n var $args = [null];\n $args.push.apply($args, args);\n return new (bind.apply(Target, $args))();\n }\n // with altered newTarget, not support built-in constructors\n var proto = newTarget.prototype;\n var instance = create(isObject(proto) ? proto : Object.prototype);\n var result = Function.apply.call(Target, instance, args);\n return isObject(result) ? result : instance;\n }\n});\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inheritsLoose;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LiveVideoPlayer.vue?vue&type=style&index=0&lang=css&\"","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var MAX_UINT32 = Math.pow(2, 32);\n\nvar parseSidx = function(data) {\n var view = new DataView(data.buffer, data.byteOffset, data.byteLength),\n result = {\n version: data[0],\n flags: new Uint8Array(data.subarray(1, 4)),\n references: [],\n referenceId: view.getUint32(4),\n timescale: view.getUint32(8)\n },\n i = 12;\n\n if (result.version === 0) {\n result.earliestPresentationTime = view.getUint32(i);\n result.firstOffset = view.getUint32(i + 4);\n i += 8;\n } else {\n // read 64 bits\n result.earliestPresentationTime = (view.getUint32(i) * MAX_UINT32) + view.getUint32(i + 4);\n result.firstOffset = (view.getUint32(i + 8) * MAX_UINT32) + view.getUint32(i + 12);\n i += 16;\n }\n\n i += 2; // reserved\n\n var referenceCount = view.getUint16(i);\n\n i += 2; // start of references\n\n for (; referenceCount > 0; i += 12, referenceCount--) {\n result.references.push({\n referenceType: (data[i] & 0x80) >>> 7,\n referencedSize: view.getUint32(i) & 0x7FFFFFFF,\n subsegmentDuration: view.getUint32(i + 4),\n startsWithSap: !!(data[i + 8] & 0x80),\n sapType: (data[i + 8] & 0x70) >>> 4,\n sapDeltaTime: view.getUint32(i + 8) & 0x0FFFFFFF\n });\n }\n\n return result;\n};\n\n\nmodule.exports = parseSidx;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","'use strict'\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n","\"use strict\";\n\nvar window = require('global/window');\n\nvar httpResponseHandler = function httpResponseHandler(callback, decodeResponseBody) {\n if (decodeResponseBody === void 0) {\n decodeResponseBody = false;\n }\n\n return function (err, response, responseBody) {\n // if the XHR failed, return that error\n if (err) {\n callback(err);\n return;\n } // if the HTTP status code is 4xx or 5xx, the request also failed\n\n\n if (response.statusCode >= 400 && response.statusCode <= 599) {\n var cause = responseBody;\n\n if (decodeResponseBody) {\n if (window.TextDecoder) {\n var charset = getCharset(response.headers && response.headers['content-type']);\n\n try {\n cause = new TextDecoder(charset).decode(responseBody);\n } catch (e) {}\n } else {\n cause = String.fromCharCode.apply(null, new Uint8Array(responseBody));\n }\n }\n\n callback({\n cause: cause\n });\n return;\n } // otherwise, request succeeded\n\n\n callback(null, responseBody);\n };\n};\n\nfunction getCharset(contentTypeHeader) {\n if (contentTypeHeader === void 0) {\n contentTypeHeader = '';\n }\n\n return contentTypeHeader.toLowerCase().split(';').reduce(function (charset, contentType) {\n var _contentType$split = contentType.split('='),\n type = _contentType$split[0],\n value = _contentType$split[1];\n\n if (type.trim() === 'charset') {\n return value.trim();\n }\n\n return charset;\n }, 'utf-8');\n}\n\nmodule.exports = httpResponseHandler;","module.exports = SafeParseTuple\n\nfunction SafeParseTuple(obj, reviver) {\n var json\n var error = null\n\n try {\n json = JSON.parse(obj, reviver)\n } catch (err) {\n error = err\n }\n\n return [error, json]\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"container\",class:{ halfCont: _vm.channel.SideBar }},[_c('div',{attrs:{\"id\":\"contentPage\"}},[_c('h1',[_vm._v(\" \"+_vm._s(_vm.channel.Title)+\" \")]),_c('live-video-player',{attrs:{\"source\":_vm.channel.Source,\"poster\":_vm.channel.Poster,\"vwidth\":_vm.channel.Width,\"vheight\":_vm.channel.Height,\"hdvideoplayer\":_vm.channel.hdvideoplayer}})],1),(_vm.channel.SideBar)?_c('article-sidebar'):_vm._e()],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { stringToBytes, toUint8, bytesMatch, bytesToString, toHexString, padStart, bytesToNumber } from './byte-helpers.js';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js';\nimport { parseOpusHead } from './opus-helpers.js';\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return stringToBytes(path);\n }\n\n if (typeof path === 'number') {\n return path;\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar DESCRIPTORS;\nexport var parseDescriptors = function parseDescriptors(bytes) {\n bytes = toUint8(bytes);\n var results = [];\n var i = 0;\n\n while (bytes.length > i) {\n var tag = bytes[i];\n var size = 0;\n var headerSize = 0; // tag\n\n headerSize++;\n var byte = bytes[headerSize]; // first byte\n\n headerSize++;\n\n while (byte & 0x80) {\n size = (byte & 0x7F) << 7;\n byte = bytes[headerSize];\n headerSize++;\n }\n\n size += byte & 0x7F;\n\n for (var z = 0; z < DESCRIPTORS.length; z++) {\n var _DESCRIPTORS$z = DESCRIPTORS[z],\n id = _DESCRIPTORS$z.id,\n parser = _DESCRIPTORS$z.parser;\n\n if (tag === id) {\n results.push(parser(bytes.subarray(headerSize, headerSize + size)));\n break;\n }\n }\n\n i += size + headerSize;\n }\n\n return results;\n};\nDESCRIPTORS = [{\n id: 0x03,\n parser: function parser(bytes) {\n var desc = {\n tag: 0x03,\n id: bytes[0] << 8 | bytes[1],\n flags: bytes[2],\n size: 3,\n dependsOnEsId: 0,\n ocrEsId: 0,\n descriptors: [],\n url: ''\n }; // depends on es id\n\n if (desc.flags & 0x80) {\n desc.dependsOnEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n } // url\n\n\n if (desc.flags & 0x40) {\n var len = bytes[desc.size];\n desc.url = bytesToString(bytes.subarray(desc.size + 1, desc.size + 1 + len));\n desc.size += len;\n } // ocr es id\n\n\n if (desc.flags & 0x20) {\n desc.ocrEsId = bytes[desc.size] << 8 | bytes[desc.size + 1];\n desc.size += 2;\n }\n\n desc.descriptors = parseDescriptors(bytes.subarray(desc.size)) || [];\n return desc;\n }\n}, {\n id: 0x04,\n parser: function parser(bytes) {\n // DecoderConfigDescriptor\n var desc = {\n tag: 0x04,\n oti: bytes[0],\n streamType: bytes[1],\n bufferSize: bytes[2] << 16 | bytes[3] << 8 | bytes[4],\n maxBitrate: bytes[5] << 24 | bytes[6] << 16 | bytes[7] << 8 | bytes[8],\n avgBitrate: bytes[9] << 24 | bytes[10] << 16 | bytes[11] << 8 | bytes[12],\n descriptors: parseDescriptors(bytes.subarray(13))\n };\n return desc;\n }\n}, {\n id: 0x05,\n parser: function parser(bytes) {\n // DecoderSpecificInfo\n return {\n tag: 0x05,\n bytes: bytes\n };\n }\n}, {\n id: 0x06,\n parser: function parser(bytes) {\n // SLConfigDescriptor\n return {\n tag: 0x06,\n bytes: bytes\n };\n }\n}];\n/**\n * find any number of boxes by name given a path to it in an iso bmff\n * such as mp4.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {Uint8Array[]|string[]|string|Uint8Array} name\n * An array of paths or a single path representing the name\n * of boxes to search through in bytes. Paths may be\n * uint8 (character codes) or strings.\n *\n * @param {boolean} [complete=false]\n * Should we search only for complete boxes on the final path.\n * This is very useful when you do not want to get back partial boxes\n * in the case of streaming files.\n *\n * @return {Uint8Array[]}\n * An array of the end paths that we found.\n */\n\nexport var findBox = function findBox(bytes, paths, complete) {\n if (complete === void 0) {\n complete = false;\n }\n\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n // short-circuit the search for empty paths\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var size = (bytes[i] << 24 | bytes[i + 1] << 16 | bytes[i + 2] << 8 | bytes[i + 3]) >>> 0;\n var type = bytes.subarray(i + 4, i + 8); // invalid box format.\n\n if (size === 0) {\n break;\n }\n\n var end = i + size;\n\n if (end > bytes.length) {\n // this box is bigger than the number of bytes we have\n // and complete is set, we cannot find any more boxes.\n if (complete) {\n break;\n }\n\n end = bytes.length;\n }\n\n var data = bytes.subarray(i + 8, end);\n\n if (bytesMatch(type, paths[0])) {\n if (paths.length === 1) {\n // this is the end of the path and we've found the box we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next box along the path\n results.push.apply(results, findBox(data, paths.slice(1), complete));\n }\n }\n\n i = end;\n } // we've finished searching all of bytes\n\n\n return results;\n};\n/**\n * Search for a single matching box by name in an iso bmff format like\n * mp4. This function is useful for finding codec boxes which\n * can be placed arbitrarily in sample descriptions depending\n * on the version of the file or file type.\n *\n * @param {TypedArray} bytes\n * bytes for the iso bmff to search for boxes in\n *\n * @param {string|Uint8Array} name\n * The name of the box to find.\n *\n * @return {Uint8Array[]}\n * a subarray of bytes representing the name boxed we found.\n */\n\nexport var findNamedBox = function findNamedBox(bytes, name) {\n name = normalizePath(name);\n\n if (!name.length) {\n // short-circuit the search for empty paths\n return bytes.subarray(bytes.length);\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n if (bytesMatch(bytes.subarray(i, i + name.length), name)) {\n var size = (bytes[i - 4] << 24 | bytes[i - 3] << 16 | bytes[i - 2] << 8 | bytes[i - 1]) >>> 0;\n var end = size > 1 ? i + size : bytes.byteLength;\n return bytes.subarray(i + 4, end);\n }\n\n i++;\n } // we've finished searching all of bytes\n\n\n return bytes.subarray(bytes.length);\n};\n\nvar parseSamples = function parseSamples(data, entrySize, parseEntry) {\n if (entrySize === void 0) {\n entrySize = 4;\n }\n\n if (parseEntry === void 0) {\n parseEntry = function parseEntry(d) {\n return bytesToNumber(d);\n };\n }\n\n var entries = [];\n\n if (!data || !data.length) {\n return entries;\n }\n\n var entryCount = bytesToNumber(data.subarray(4, 8));\n\n for (var i = 8; entryCount; i += entrySize, entryCount--) {\n entries.push(parseEntry(data.subarray(i, i + entrySize)));\n }\n\n return entries;\n};\n\nexport var buildFrameTable = function buildFrameTable(stbl, timescale) {\n var keySamples = parseSamples(findBox(stbl, ['stss'])[0]);\n var chunkOffsets = parseSamples(findBox(stbl, ['stco'])[0]);\n var timeToSamples = parseSamples(findBox(stbl, ['stts'])[0], 8, function (entry) {\n return {\n sampleCount: bytesToNumber(entry.subarray(0, 4)),\n sampleDelta: bytesToNumber(entry.subarray(4, 8))\n };\n });\n var samplesToChunks = parseSamples(findBox(stbl, ['stsc'])[0], 12, function (entry) {\n return {\n firstChunk: bytesToNumber(entry.subarray(0, 4)),\n samplesPerChunk: bytesToNumber(entry.subarray(4, 8)),\n sampleDescriptionIndex: bytesToNumber(entry.subarray(8, 12))\n };\n });\n var stsz = findBox(stbl, ['stsz'])[0]; // stsz starts with a 4 byte sampleSize which we don't need\n\n var sampleSizes = parseSamples(stsz && stsz.length && stsz.subarray(4) || null);\n var frames = [];\n\n for (var chunkIndex = 0; chunkIndex < chunkOffsets.length; chunkIndex++) {\n var samplesInChunk = void 0;\n\n for (var i = 0; i < samplesToChunks.length; i++) {\n var sampleToChunk = samplesToChunks[i];\n var isThisOne = chunkIndex + 1 >= sampleToChunk.firstChunk && (i + 1 >= samplesToChunks.length || chunkIndex + 1 < samplesToChunks[i + 1].firstChunk);\n\n if (isThisOne) {\n samplesInChunk = sampleToChunk.samplesPerChunk;\n break;\n }\n }\n\n var chunkOffset = chunkOffsets[chunkIndex];\n\n for (var _i = 0; _i < samplesInChunk; _i++) {\n var frameEnd = sampleSizes[frames.length]; // if we don't have key samples every frame is a keyframe\n\n var keyframe = !keySamples.length;\n\n if (keySamples.length && keySamples.indexOf(frames.length + 1) !== -1) {\n keyframe = true;\n }\n\n var frame = {\n keyframe: keyframe,\n start: chunkOffset,\n end: chunkOffset + frameEnd\n };\n\n for (var k = 0; k < timeToSamples.length; k++) {\n var _timeToSamples$k = timeToSamples[k],\n sampleCount = _timeToSamples$k.sampleCount,\n sampleDelta = _timeToSamples$k.sampleDelta;\n\n if (frames.length <= sampleCount) {\n // ms to ns\n var lastTimestamp = frames.length ? frames[frames.length - 1].timestamp : 0;\n frame.timestamp = lastTimestamp + sampleDelta / timescale * 1000;\n frame.duration = sampleDelta;\n break;\n }\n }\n\n frames.push(frame);\n chunkOffset += frameEnd;\n }\n }\n\n return frames;\n};\nexport var addSampleDescription = function addSampleDescription(track, bytes) {\n var codec = bytesToString(bytes.subarray(0, 4));\n\n if (track.type === 'video') {\n track.info = track.info || {};\n track.info.width = bytes[28] << 8 | bytes[29];\n track.info.height = bytes[30] << 8 | bytes[31];\n } else if (track.type === 'audio') {\n track.info = track.info || {};\n track.info.channels = bytes[20] << 8 | bytes[21];\n track.info.bitDepth = bytes[22] << 8 | bytes[23];\n track.info.sampleRate = bytes[28] << 8 | bytes[29];\n }\n\n if (codec === 'avc1') {\n var avcC = findNamedBox(bytes, 'avcC'); // AVCDecoderConfigurationRecord\n\n codec += \".\" + getAvcCodec(avcC);\n track.info.avcC = avcC; // TODO: do we need to parse all this?\n\n /* {\n configurationVersion: avcC[0],\n profile: avcC[1],\n profileCompatibility: avcC[2],\n level: avcC[3],\n lengthSizeMinusOne: avcC[4] & 0x3\n };\n let spsNalUnitCount = avcC[5] & 0x1F;\n const spsNalUnits = track.info.avc.spsNalUnits = [];\n // past spsNalUnitCount\n let offset = 6;\n while (spsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n spsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }\n let ppsNalUnitCount = avcC[offset];\n const ppsNalUnits = track.info.avc.ppsNalUnits = [];\n // past ppsNalUnitCount\n offset += 1;\n while (ppsNalUnitCount--) {\n const nalLen = avcC[offset] << 8 | avcC[offset + 1];\n ppsNalUnits.push(avcC.subarray(offset + 2, offset + 2 + nalLen));\n offset += nalLen + 2;\n }*/\n // HEVCDecoderConfigurationRecord\n } else if (codec === 'hvc1' || codec === 'hev1') {\n codec += \".\" + getHvcCodec(findNamedBox(bytes, 'hvcC'));\n } else if (codec === 'mp4a' || codec === 'mp4v') {\n var esds = findNamedBox(bytes, 'esds');\n var esDescriptor = parseDescriptors(esds.subarray(4))[0];\n var decoderConfig = esDescriptor && esDescriptor.descriptors.filter(function (_ref) {\n var tag = _ref.tag;\n return tag === 0x04;\n })[0];\n\n if (decoderConfig) {\n // most codecs do not have a further '.'\n // such as 0xa5 for ac-3 and 0xa6 for e-ac-3\n codec += '.' + toHexString(decoderConfig.oti);\n\n if (decoderConfig.oti === 0x40) {\n codec += '.' + (decoderConfig.descriptors[0].bytes[0] >> 3).toString();\n } else if (decoderConfig.oti === 0x20) {\n codec += '.' + decoderConfig.descriptors[0].bytes[4].toString();\n } else if (decoderConfig.oti === 0xdd) {\n codec = 'vorbis';\n }\n } else if (track.type === 'audio') {\n codec += '.40.2';\n } else {\n codec += '.20.9';\n }\n } else if (codec === 'av01') {\n // AV1DecoderConfigurationRecord\n codec += \".\" + getAv1Codec(findNamedBox(bytes, 'av1C'));\n } else if (codec === 'vp09') {\n // VPCodecConfigurationRecord\n var vpcC = findNamedBox(bytes, 'vpcC'); // https://www.webmproject.org/vp9/mp4/\n\n var profile = vpcC[0];\n var level = vpcC[1];\n var bitDepth = vpcC[2] >> 4;\n var chromaSubsampling = (vpcC[2] & 0x0F) >> 1;\n var videoFullRangeFlag = (vpcC[2] & 0x0F) >> 3;\n var colourPrimaries = vpcC[3];\n var transferCharacteristics = vpcC[4];\n var matrixCoefficients = vpcC[5];\n codec += \".\" + padStart(profile, 2, '0');\n codec += \".\" + padStart(level, 2, '0');\n codec += \".\" + padStart(bitDepth, 2, '0');\n codec += \".\" + padStart(chromaSubsampling, 2, '0');\n codec += \".\" + padStart(colourPrimaries, 2, '0');\n codec += \".\" + padStart(transferCharacteristics, 2, '0');\n codec += \".\" + padStart(matrixCoefficients, 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag, 2, '0');\n } else if (codec === 'theo') {\n codec = 'theora';\n } else if (codec === 'spex') {\n codec = 'speex';\n } else if (codec === '.mp3') {\n codec = 'mp4a.40.34';\n } else if (codec === 'msVo') {\n codec = 'vorbis';\n } else if (codec === 'Opus') {\n codec = 'opus';\n var dOps = findNamedBox(bytes, 'dOps');\n track.info.opus = parseOpusHead(dOps); // TODO: should this go into the webm code??\n // Firefox requires a codecDelay for opus playback\n // see https://bugzilla.mozilla.org/show_bug.cgi?id=1276238\n\n track.info.codecDelay = 6500000;\n } else {\n codec = codec.toLowerCase();\n }\n /* eslint-enable */\n // flac, ac-3, ec-3, opus\n\n\n track.codec = codec;\n};\nexport var parseTracks = function parseTracks(bytes, frameTable) {\n if (frameTable === void 0) {\n frameTable = true;\n }\n\n bytes = toUint8(bytes);\n var traks = findBox(bytes, ['moov', 'trak'], true);\n var tracks = [];\n traks.forEach(function (trak) {\n var track = {\n bytes: trak\n };\n var mdia = findBox(trak, ['mdia'])[0];\n var hdlr = findBox(mdia, ['hdlr'])[0];\n var trakType = bytesToString(hdlr.subarray(8, 12));\n\n if (trakType === 'soun') {\n track.type = 'audio';\n } else if (trakType === 'vide') {\n track.type = 'video';\n } else {\n track.type = trakType;\n }\n\n var tkhd = findBox(trak, ['tkhd'])[0];\n\n if (tkhd) {\n var view = new DataView(tkhd.buffer, tkhd.byteOffset, tkhd.byteLength);\n var tkhdVersion = view.getUint8(0);\n track.number = tkhdVersion === 0 ? view.getUint32(12) : view.getUint32(20);\n }\n\n var mdhd = findBox(mdia, ['mdhd'])[0];\n\n if (mdhd) {\n // mdhd is a FullBox, meaning it will have its own version as the first byte\n var version = mdhd[0];\n var index = version === 0 ? 12 : 20;\n track.timescale = (mdhd[index] << 24 | mdhd[index + 1] << 16 | mdhd[index + 2] << 8 | mdhd[index + 3]) >>> 0;\n }\n\n var stbl = findBox(mdia, ['minf', 'stbl'])[0];\n var stsd = findBox(stbl, ['stsd'])[0];\n var descriptionCount = bytesToNumber(stsd.subarray(4, 8));\n var offset = 8; // add codec and codec info\n\n while (descriptionCount--) {\n var len = bytesToNumber(stsd.subarray(offset, offset + 4));\n var sampleDescriptor = stsd.subarray(offset + 4, offset + 4 + len);\n addSampleDescription(track, sampleDescriptor);\n offset += 4 + len;\n }\n\n if (frameTable) {\n track.frameTable = buildFrameTable(stbl, track.timescale);\n } // codec has no sub parameters\n\n\n tracks.push(track);\n });\n return tracks;\n};\nexport var parseMediaInfo = function parseMediaInfo(bytes) {\n var mvhd = findBox(bytes, ['moov', 'mvhd'], true)[0];\n\n if (!mvhd || !mvhd.length) {\n return;\n }\n\n var info = {}; // ms to ns\n // mvhd v1 has 8 byte duration and other fields too\n\n if (mvhd[0] === 1) {\n info.timestampScale = bytesToNumber(mvhd.subarray(20, 24));\n info.duration = bytesToNumber(mvhd.subarray(24, 32));\n } else {\n info.timestampScale = bytesToNumber(mvhd.subarray(12, 16));\n info.duration = bytesToNumber(mvhd.subarray(16, 20));\n }\n\n info.bytes = mvhd;\n return info;\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"video-js-responsive-container vjs-hd\"},[_c('video',{ref:_vm.hdvideoplayer,staticClass:\"video-js\",attrs:{\"controls\":\"\",\"preload\":\"none\",\"width\":_vm.vwidth,\"height\":_vm.vheight,\"poster\":_vm.poster,\"data-setup\":\"{}\"}},[_c('source',{attrs:{\"src\":_vm.source,\"label\":\"\",\"type\":\"application/x-mpegURL\"}})])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import URLToolkit from 'url-toolkit';\nimport window from 'global/window';\nvar DEFAULT_LOCATION = 'http://example.com';\n\nvar resolveUrl = function resolveUrl(baseUrl, relativeUrl) {\n // return early if we don't need to resolve\n if (/^[a-z]+:/i.test(relativeUrl)) {\n return relativeUrl;\n } // if baseUrl is a data URI, ignore it and resolve everything relative to window.location\n\n\n if (/^data:/.test(baseUrl)) {\n baseUrl = window.location && window.location.href || '';\n } // IE11 supports URL but not the URL constructor\n // feature detect the behavior we want\n\n\n var nativeURL = typeof window.URL === 'function';\n var protocolLess = /^\\/\\//.test(baseUrl); // remove location if window.location isn't available (i.e. we're in node)\n // and if baseUrl isn't an absolute url\n\n var removeLocation = !window.location && !/\\/\\//i.test(baseUrl); // if the base URL is relative then combine with the current location\n\n if (nativeURL) {\n baseUrl = new window.URL(baseUrl, window.location || DEFAULT_LOCATION);\n } else if (!/\\/\\//i.test(baseUrl)) {\n baseUrl = URLToolkit.buildAbsoluteURL(window.location && window.location.href || '', baseUrl);\n }\n\n if (nativeURL) {\n var newUrl = new URL(relativeUrl, baseUrl); // if we're a protocol-less url, remove the protocol\n // and if we're location-less, remove the location\n // otherwise, return the url unmodified\n\n if (removeLocation) {\n return newUrl.href.slice(DEFAULT_LOCATION.length);\n } else if (protocolLess) {\n return newUrl.href.slice(newUrl.protocol.length);\n }\n\n return newUrl.href;\n }\n\n return URLToolkit.buildAbsoluteURL(baseUrl, relativeUrl);\n};\n\nexport default resolveUrl;","/**\n * @file stream.js\n */\n\n/**\n * A lightweight readable stream implemention that handles event dispatching.\n *\n * @class Stream\n */\nvar Stream = /*#__PURE__*/function () {\n function Stream() {\n this.listeners = {};\n }\n /**\n * Add a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener the callback to be invoked when an event of\n * the specified type occurs\n */\n\n\n var _proto = Stream.prototype;\n\n _proto.on = function on(type, listener) {\n if (!this.listeners[type]) {\n this.listeners[type] = [];\n }\n\n this.listeners[type].push(listener);\n }\n /**\n * Remove a listener for a specified event type.\n *\n * @param {string} type the event name\n * @param {Function} listener a function previously registered for this\n * type of event through `on`\n * @return {boolean} if we could turn it off or not\n */\n ;\n\n _proto.off = function off(type, listener) {\n if (!this.listeners[type]) {\n return false;\n }\n\n var index = this.listeners[type].indexOf(listener); // TODO: which is better?\n // In Video.js we slice listener functions\n // on trigger so that it does not mess up the order\n // while we loop through.\n //\n // Here we slice on off so that the loop in trigger\n // can continue using it's old reference to loop without\n // messing up the order.\n\n this.listeners[type] = this.listeners[type].slice(0);\n this.listeners[type].splice(index, 1);\n return index > -1;\n }\n /**\n * Trigger an event of the specified type on this stream. Any additional\n * arguments to this function are passed as parameters to event listeners.\n *\n * @param {string} type the event name\n */\n ;\n\n _proto.trigger = function trigger(type) {\n var callbacks = this.listeners[type];\n\n if (!callbacks) {\n return;\n } // Slicing the arguments on every invocation of this method\n // can add a significant amount of overhead. Avoid the\n // intermediate object creation for the common case of a\n // single callback argument\n\n\n if (arguments.length === 2) {\n var length = callbacks.length;\n\n for (var i = 0; i < length; ++i) {\n callbacks[i].call(this, arguments[1]);\n }\n } else {\n var args = Array.prototype.slice.call(arguments, 1);\n var _length = callbacks.length;\n\n for (var _i = 0; _i < _length; ++_i) {\n callbacks[_i].apply(this, args);\n }\n }\n }\n /**\n * Destroys the stream and cleans up.\n */\n ;\n\n _proto.dispose = function dispose() {\n this.listeners = {};\n }\n /**\n * Forwards all `data` events on this stream to the destination stream. The\n * destination stream should provide a method `push` to receive the data\n * events as they arrive.\n *\n * @param {Stream} destination the stream that will receive all `data` events\n * @see http://nodejs.org/api/stream.html#stream_readable_pipe_destination_options\n */\n ;\n\n _proto.pipe = function pipe(destination) {\n this.on('data', function (data) {\n destination.push(data);\n });\n };\n\n return Stream;\n}();\n\nexport { Stream as default };","/*! @name m3u8-parser @version 4.7.0 @license Apache-2.0 */\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport Stream from '@videojs/vhs-utils/es/stream.js';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array.js';\n\n/**\n * A stream that buffers string input and generates a `data` event for each\n * line.\n *\n * @class LineStream\n * @extends Stream\n */\n\nvar LineStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(LineStream, _Stream);\n\n function LineStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.buffer = '';\n return _this;\n }\n /**\n * Add new data to be parsed.\n *\n * @param {string} data the text to process\n */\n\n\n var _proto = LineStream.prototype;\n\n _proto.push = function push(data) {\n var nextNewline;\n this.buffer += data;\n nextNewline = this.buffer.indexOf('\\n');\n\n for (; nextNewline > -1; nextNewline = this.buffer.indexOf('\\n')) {\n this.trigger('data', this.buffer.substring(0, nextNewline));\n this.buffer = this.buffer.substring(nextNewline + 1);\n }\n };\n\n return LineStream;\n}(Stream);\n\nvar TAB = String.fromCharCode(0x09);\n\nvar parseByterange = function parseByterange(byterangeString) {\n // optionally match and capture 0+ digits before `@`\n // optionally match and capture 0+ digits after `@`\n var match = /([0-9.]*)?@?([0-9.]*)?/.exec(byterangeString || '');\n var result = {};\n\n if (match[1]) {\n result.length = parseInt(match[1], 10);\n }\n\n if (match[2]) {\n result.offset = parseInt(match[2], 10);\n }\n\n return result;\n};\n/**\n * \"forgiving\" attribute list psuedo-grammar:\n * attributes -> keyvalue (',' keyvalue)*\n * keyvalue -> key '=' value\n * key -> [^=]*\n * value -> '\"' [^\"]* '\"' | [^,]*\n */\n\n\nvar attributeSeparator = function attributeSeparator() {\n var key = '[^=]*';\n var value = '\"[^\"]*\"|[^,]*';\n var keyvalue = '(?:' + key + ')=(?:' + value + ')';\n return new RegExp('(?:^|,)(' + keyvalue + ')');\n};\n/**\n * Parse attributes from a line given the separator\n *\n * @param {string} attributes the attribute line to parse\n */\n\n\nvar parseAttributes = function parseAttributes(attributes) {\n // split the string using attributes as the separator\n var attrs = attributes.split(attributeSeparator());\n var result = {};\n var i = attrs.length;\n var attr;\n\n while (i--) {\n // filter out unmatched portions of the string\n if (attrs[i] === '') {\n continue;\n } // split the key and value\n\n\n attr = /([^=]*)=(.*)/.exec(attrs[i]).slice(1); // trim whitespace and remove optional quotes around the value\n\n attr[0] = attr[0].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^\\s+|\\s+$/g, '');\n attr[1] = attr[1].replace(/^['\"](.*)['\"]$/g, '$1');\n result[attr[0]] = attr[1];\n }\n\n return result;\n};\n/**\n * A line-level M3U8 parser event stream. It expects to receive input one\n * line at a time and performs a context-free parse of its contents. A stream\n * interpretation of a manifest can be useful if the manifest is expected to\n * be too large to fit comfortably into memory or the entirety of the input\n * is not immediately available. Otherwise, it's probably much easier to work\n * with a regular `Parser` object.\n *\n * Produces `data` events with an object that captures the parser's\n * interpretation of the input. That object has a property `tag` that is one\n * of `uri`, `comment`, or `tag`. URIs only have a single additional\n * property, `line`, which captures the entirety of the input without\n * interpretation. Comments similarly have a single additional property\n * `text` which is the input without the leading `#`.\n *\n * Tags always have a property `tagType` which is the lower-cased version of\n * the M3U8 directive without the `#EXT` or `#EXT-X-` prefix. For instance,\n * `#EXT-X-MEDIA-SEQUENCE` becomes `media-sequence` when parsed. Unrecognized\n * tags are given the tag type `unknown` and a single additional property\n * `data` with the remainder of the input.\n *\n * @class ParseStream\n * @extends Stream\n */\n\n\nvar ParseStream = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(ParseStream, _Stream);\n\n function ParseStream() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.customParsers = [];\n _this.tagMappers = [];\n return _this;\n }\n /**\n * Parses an additional line of input.\n *\n * @param {string} line a single line of an M3U8 file to parse\n */\n\n\n var _proto = ParseStream.prototype;\n\n _proto.push = function push(line) {\n var _this2 = this;\n\n var match;\n var event; // strip whitespace\n\n line = line.trim();\n\n if (line.length === 0) {\n // ignore empty lines\n return;\n } // URIs\n\n\n if (line[0] !== '#') {\n this.trigger('data', {\n type: 'uri',\n uri: line\n });\n return;\n } // map tags\n\n\n var newLines = this.tagMappers.reduce(function (acc, mapper) {\n var mappedLine = mapper(line); // skip if unchanged\n\n if (mappedLine === line) {\n return acc;\n }\n\n return acc.concat([mappedLine]);\n }, [line]);\n newLines.forEach(function (newLine) {\n for (var i = 0; i < _this2.customParsers.length; i++) {\n if (_this2.customParsers[i].call(_this2, newLine)) {\n return;\n }\n } // Comments\n\n\n if (newLine.indexOf('#EXT') !== 0) {\n _this2.trigger('data', {\n type: 'comment',\n text: newLine.slice(1)\n });\n\n return;\n } // strip off any carriage returns here so the regex matching\n // doesn't have to account for them.\n\n\n newLine = newLine.replace('\\r', ''); // Tags\n\n match = /^#EXTM3U/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'm3u'\n });\n\n return;\n }\n\n match = /^#EXTINF:?([0-9\\.]*)?,?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'inf'\n };\n\n if (match[1]) {\n event.duration = parseFloat(match[1]);\n }\n\n if (match[2]) {\n event.title = match[2];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'targetduration'\n };\n\n if (match[1]) {\n event.duration = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'version'\n };\n\n if (match[1]) {\n event.version = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\\-?[0-9.]*)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'discontinuity-sequence'\n };\n\n if (match[1]) {\n event.number = parseInt(match[1], 10);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'playlist-type'\n };\n\n if (match[1]) {\n event.playlistType = match[1];\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = _extends(parseByterange(match[1]), {\n type: 'tag',\n tagType: 'byterange'\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'allow-cache'\n };\n\n if (match[1]) {\n event.allowed = !/NO/.test(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MAP:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'map'\n };\n\n if (match[1]) {\n var attributes = parseAttributes(match[1]);\n\n if (attributes.URI) {\n event.uri = attributes.URI;\n }\n\n if (attributes.BYTERANGE) {\n event.byterange = parseByterange(attributes.BYTERANGE);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-STREAM-INF:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'stream-inf'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.RESOLUTION) {\n var split = event.attributes.RESOLUTION.split('x');\n var resolution = {};\n\n if (split[0]) {\n resolution.width = parseInt(split[0], 10);\n }\n\n if (split[1]) {\n resolution.height = parseInt(split[1], 10);\n }\n\n event.attributes.RESOLUTION = resolution;\n }\n\n if (event.attributes.BANDWIDTH) {\n event.attributes.BANDWIDTH = parseInt(event.attributes.BANDWIDTH, 10);\n }\n\n if (event.attributes['PROGRAM-ID']) {\n event.attributes['PROGRAM-ID'] = parseInt(event.attributes['PROGRAM-ID'], 10);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-MEDIA:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'media'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-ENDLIST/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'endlist'\n });\n\n return;\n }\n\n match = /^#EXT-X-DISCONTINUITY/.exec(newLine);\n\n if (match) {\n _this2.trigger('data', {\n type: 'tag',\n tagType: 'discontinuity'\n });\n\n return;\n }\n\n match = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'program-date-time'\n };\n\n if (match[1]) {\n event.dateTimeString = match[1];\n event.dateTimeObject = new Date(match[1]);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-KEY:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'key'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]); // parse the IV string into a Uint32Array\n\n if (event.attributes.IV) {\n if (event.attributes.IV.substring(0, 2).toLowerCase() === '0x') {\n event.attributes.IV = event.attributes.IV.substring(2);\n }\n\n event.attributes.IV = event.attributes.IV.match(/.{8}/g);\n event.attributes.IV[0] = parseInt(event.attributes.IV[0], 16);\n event.attributes.IV[1] = parseInt(event.attributes.IV[1], 16);\n event.attributes.IV[2] = parseInt(event.attributes.IV[2], 16);\n event.attributes.IV[3] = parseInt(event.attributes.IV[3], 16);\n event.attributes.IV = new Uint32Array(event.attributes.IV);\n }\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-START:?(.*)$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'start'\n };\n\n if (match[1]) {\n event.attributes = parseAttributes(match[1]);\n event.attributes['TIME-OFFSET'] = parseFloat(event.attributes['TIME-OFFSET']);\n event.attributes.PRECISE = /YES/.test(event.attributes.PRECISE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out-cont'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-out'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-CUE-IN:?(.*)?$/.exec(newLine);\n\n if (match) {\n event = {\n type: 'tag',\n tagType: 'cue-in'\n };\n\n if (match[1]) {\n event.data = match[1];\n } else {\n event.data = '';\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SKIP:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'skip'\n };\n event.attributes = parseAttributes(match[1]);\n\n if (event.attributes.hasOwnProperty('SKIPPED-SEGMENTS')) {\n event.attributes['SKIPPED-SEGMENTS'] = parseInt(event.attributes['SKIPPED-SEGMENTS'], 10);\n }\n\n if (event.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES')) {\n event.attributes['RECENTLY-REMOVED-DATERANGES'] = event.attributes['RECENTLY-REMOVED-DATERANGES'].split(TAB);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part'\n };\n event.attributes = parseAttributes(match[1]);\n ['DURATION'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['INDEPENDENT', 'GAP'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n if (event.attributes.hasOwnProperty('BYTERANGE')) {\n event.attributes.byterange = parseByterange(event.attributes.BYTERANGE);\n }\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'server-control'\n };\n event.attributes = parseAttributes(match[1]);\n ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = /YES/.test(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PART-INF:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'part-inf'\n };\n event.attributes = parseAttributes(match[1]);\n ['PART-TARGET'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseFloat(event.attributes[key]);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'preload-hint'\n };\n event.attributes = parseAttributes(match[1]);\n ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n var subkey = key === 'BYTERANGE-LENGTH' ? 'length' : 'offset';\n event.attributes.byterange = event.attributes.byterange || {};\n event.attributes.byterange[subkey] = event.attributes[key]; // only keep the parsed byterange object.\n\n delete event.attributes[key];\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n }\n\n match = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(newLine);\n\n if (match && match[1]) {\n event = {\n type: 'tag',\n tagType: 'rendition-report'\n };\n event.attributes = parseAttributes(match[1]);\n ['LAST-MSN', 'LAST-PART'].forEach(function (key) {\n if (event.attributes.hasOwnProperty(key)) {\n event.attributes[key] = parseInt(event.attributes[key], 10);\n }\n });\n\n _this2.trigger('data', event);\n\n return;\n } // unknown tag type\n\n\n _this2.trigger('data', {\n type: 'tag',\n data: newLine.slice(4)\n });\n });\n }\n /**\n * Add a parser for custom headers\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.customType the custom type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(_ref) {\n var _this3 = this;\n\n var expression = _ref.expression,\n customType = _ref.customType,\n dataParser = _ref.dataParser,\n segment = _ref.segment;\n\n if (typeof dataParser !== 'function') {\n dataParser = function dataParser(line) {\n return line;\n };\n }\n\n this.customParsers.push(function (line) {\n var match = expression.exec(line);\n\n if (match) {\n _this3.trigger('data', {\n type: 'custom',\n data: dataParser(line),\n customType: customType,\n segment: segment\n });\n\n return true;\n }\n });\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(_ref2) {\n var expression = _ref2.expression,\n map = _ref2.map;\n\n var mapFn = function mapFn(line) {\n if (expression.test(line)) {\n return map(line);\n }\n\n return line;\n };\n\n this.tagMappers.push(mapFn);\n };\n\n return ParseStream;\n}(Stream);\n\nvar camelCase = function camelCase(str) {\n return str.toLowerCase().replace(/-(\\w)/g, function (a) {\n return a[1].toUpperCase();\n });\n};\n\nvar camelCaseKeys = function camelCaseKeys(attributes) {\n var result = {};\n Object.keys(attributes).forEach(function (key) {\n result[camelCase(key)] = attributes[key];\n });\n return result;\n}; // set SERVER-CONTROL hold back based upon targetDuration and partTargetDuration\n// we need this helper because defaults are based upon targetDuration and\n// partTargetDuration being set, but they may not be if SERVER-CONTROL appears before\n// target durations are set.\n\n\nvar setHoldBack = function setHoldBack(manifest) {\n var serverControl = manifest.serverControl,\n targetDuration = manifest.targetDuration,\n partTargetDuration = manifest.partTargetDuration;\n\n if (!serverControl) {\n return;\n }\n\n var tag = '#EXT-X-SERVER-CONTROL';\n var hb = 'holdBack';\n var phb = 'partHoldBack';\n var minTargetDuration = targetDuration && targetDuration * 3;\n var minPartDuration = partTargetDuration && partTargetDuration * 2;\n\n if (targetDuration && !serverControl.hasOwnProperty(hb)) {\n serverControl[hb] = minTargetDuration;\n this.trigger('info', {\n message: tag + \" defaulting HOLD-BACK to targetDuration * 3 (\" + minTargetDuration + \").\"\n });\n }\n\n if (minTargetDuration && serverControl[hb] < minTargetDuration) {\n this.trigger('warn', {\n message: tag + \" clamping HOLD-BACK (\" + serverControl[hb] + \") to targetDuration * 3 (\" + minTargetDuration + \")\"\n });\n serverControl[hb] = minTargetDuration;\n } // default no part hold back to part target duration * 3\n\n\n if (partTargetDuration && !serverControl.hasOwnProperty(phb)) {\n serverControl[phb] = partTargetDuration * 3;\n this.trigger('info', {\n message: tag + \" defaulting PART-HOLD-BACK to partTargetDuration * 3 (\" + serverControl[phb] + \").\"\n });\n } // if part hold back is too small default it to part target duration * 2\n\n\n if (partTargetDuration && serverControl[phb] < minPartDuration) {\n this.trigger('warn', {\n message: tag + \" clamping PART-HOLD-BACK (\" + serverControl[phb] + \") to partTargetDuration * 2 (\" + minPartDuration + \").\"\n });\n serverControl[phb] = minPartDuration;\n }\n};\n/**\n * A parser for M3U8 files. The current interpretation of the input is\n * exposed as a property `manifest` on parser objects. It's just two lines to\n * create and parse a manifest once you have the contents available as a string:\n *\n * ```js\n * var parser = new m3u8.Parser();\n * parser.push(xhr.responseText);\n * ```\n *\n * New input can later be applied to update the manifest object by calling\n * `push` again.\n *\n * The parser attempts to create a usable manifest object even if the\n * underlying input is somewhat nonsensical. It emits `info` and `warning`\n * events during the parse if it encounters input that seems invalid or\n * requires some property of the manifest object to be defaulted.\n *\n * @class Parser\n * @extends Stream\n */\n\n\nvar Parser = /*#__PURE__*/function (_Stream) {\n _inheritsLoose(Parser, _Stream);\n\n function Parser() {\n var _this;\n\n _this = _Stream.call(this) || this;\n _this.lineStream = new LineStream();\n _this.parseStream = new ParseStream();\n\n _this.lineStream.pipe(_this.parseStream);\n /* eslint-disable consistent-this */\n\n\n var self = _assertThisInitialized(_this);\n /* eslint-enable consistent-this */\n\n\n var uris = [];\n var currentUri = {}; // if specified, the active EXT-X-MAP definition\n\n var currentMap; // if specified, the active decryption key\n\n var _key;\n\n var hasParts = false;\n\n var noop = function noop() {};\n\n var defaultMediaGroups = {\n 'AUDIO': {},\n 'VIDEO': {},\n 'CLOSED-CAPTIONS': {},\n 'SUBTITLES': {}\n }; // This is the Widevine UUID from DASH IF IOP. The same exact string is\n // used in MPDs with Widevine encrypted streams.\n\n var widevineUuid = 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed'; // group segments into numbered timelines delineated by discontinuities\n\n var currentTimeline = 0; // the manifest is empty until the parse stream begins delivering data\n\n _this.manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: []\n }; // keep track of the last seen segment's byte range end, as segments are not required\n // to provide the offset, in which case it defaults to the next byte after the\n // previous segment\n\n var lastByterangeEnd = 0; // keep track of the last seen part's byte range end.\n\n var lastPartByterangeEnd = 0;\n\n _this.on('end', function () {\n // only add preloadSegment if we don't yet have a uri for it.\n // and we actually have parts/preloadHints\n if (currentUri.uri || !currentUri.parts && !currentUri.preloadHints) {\n return;\n }\n\n if (!currentUri.map && currentMap) {\n currentUri.map = currentMap;\n }\n\n if (!currentUri.key && _key) {\n currentUri.key = _key;\n }\n\n if (!currentUri.timeline && typeof currentTimeline === 'number') {\n currentUri.timeline = currentTimeline;\n }\n\n _this.manifest.preloadSegment = currentUri;\n }); // update the manifest with the m3u8 entry from the parse stream\n\n\n _this.parseStream.on('data', function (entry) {\n var mediaGroup;\n var rendition;\n ({\n tag: function tag() {\n // switch based on the tag type\n (({\n version: function version() {\n if (entry.version) {\n this.manifest.version = entry.version;\n }\n },\n 'allow-cache': function allowCache() {\n this.manifest.allowCache = entry.allowed;\n\n if (!('allowed' in entry)) {\n this.trigger('info', {\n message: 'defaulting allowCache to YES'\n });\n this.manifest.allowCache = true;\n }\n },\n byterange: function byterange() {\n var byterange = {};\n\n if ('length' in entry) {\n currentUri.byterange = byterange;\n byterange.length = entry.length;\n\n if (!('offset' in entry)) {\n /*\n * From the latest spec (as of this writing):\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.2.2\n *\n * Same text since EXT-X-BYTERANGE's introduction in draft 7:\n * https://tools.ietf.org/html/draft-pantos-http-live-streaming-07#section-3.3.1)\n *\n * \"If o [offset] is not present, the sub-range begins at the next byte\n * following the sub-range of the previous media segment.\"\n */\n entry.offset = lastByterangeEnd;\n }\n }\n\n if ('offset' in entry) {\n currentUri.byterange = byterange;\n byterange.offset = entry.offset;\n }\n\n lastByterangeEnd = byterange.offset + byterange.length;\n },\n endlist: function endlist() {\n this.manifest.endList = true;\n },\n inf: function inf() {\n if (!('mediaSequence' in this.manifest)) {\n this.manifest.mediaSequence = 0;\n this.trigger('info', {\n message: 'defaulting media sequence to zero'\n });\n }\n\n if (!('discontinuitySequence' in this.manifest)) {\n this.manifest.discontinuitySequence = 0;\n this.trigger('info', {\n message: 'defaulting discontinuity sequence to zero'\n });\n }\n\n if (entry.duration > 0) {\n currentUri.duration = entry.duration;\n }\n\n if (entry.duration === 0) {\n currentUri.duration = 0.01;\n this.trigger('info', {\n message: 'updating zero segment duration to a small value'\n });\n }\n\n this.manifest.segments = uris;\n },\n key: function key() {\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring key declaration without attribute list'\n });\n return;\n } // clear the active encryption key\n\n\n if (entry.attributes.METHOD === 'NONE') {\n _key = null;\n return;\n }\n\n if (!entry.attributes.URI) {\n this.trigger('warn', {\n message: 'ignoring key declaration without URI'\n });\n return;\n }\n\n if (entry.attributes.KEYFORMAT === 'com.apple.streamingkeydelivery') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.apple.fps.1_0'] = {\n attributes: entry.attributes\n };\n return;\n } // check if the content is encrypted for Widevine\n // Widevine/HLS spec: https://storage.googleapis.com/wvdocs/Widevine_DRM_HLS.pdf\n\n\n if (entry.attributes.KEYFORMAT === widevineUuid) {\n var VALID_METHODS = ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'];\n\n if (VALID_METHODS.indexOf(entry.attributes.METHOD) === -1) {\n this.trigger('warn', {\n message: 'invalid key method provided for Widevine'\n });\n return;\n }\n\n if (entry.attributes.METHOD === 'SAMPLE-AES-CENC') {\n this.trigger('warn', {\n message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead'\n });\n }\n\n if (entry.attributes.URI.substring(0, 23) !== 'data:text/plain;base64,') {\n this.trigger('warn', {\n message: 'invalid key URI provided for Widevine'\n });\n return;\n }\n\n if (!(entry.attributes.KEYID && entry.attributes.KEYID.substring(0, 2) === '0x')) {\n this.trigger('warn', {\n message: 'invalid key ID provided for Widevine'\n });\n return;\n } // if Widevine key attributes are valid, store them as `contentProtection`\n // on the manifest to emulate Widevine tag structure in a DASH mpd\n\n\n this.manifest.contentProtection = this.manifest.contentProtection || {};\n this.manifest.contentProtection['com.widevine.alpha'] = {\n attributes: {\n schemeIdUri: entry.attributes.KEYFORMAT,\n // remove '0x' from the key id string\n keyId: entry.attributes.KEYID.substring(2)\n },\n // decode the base64-encoded PSSH box\n pssh: decodeB64ToUint8Array(entry.attributes.URI.split(',')[1])\n };\n return;\n }\n\n if (!entry.attributes.METHOD) {\n this.trigger('warn', {\n message: 'defaulting key method to AES-128'\n });\n } // setup an encryption key for upcoming segments\n\n\n _key = {\n method: entry.attributes.METHOD || 'AES-128',\n uri: entry.attributes.URI\n };\n\n if (typeof entry.attributes.IV !== 'undefined') {\n _key.iv = entry.attributes.IV;\n }\n },\n 'media-sequence': function mediaSequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid media sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.mediaSequence = entry.number;\n },\n 'discontinuity-sequence': function discontinuitySequence() {\n if (!isFinite(entry.number)) {\n this.trigger('warn', {\n message: 'ignoring invalid discontinuity sequence: ' + entry.number\n });\n return;\n }\n\n this.manifest.discontinuitySequence = entry.number;\n currentTimeline = entry.number;\n },\n 'playlist-type': function playlistType() {\n if (!/VOD|EVENT/.test(entry.playlistType)) {\n this.trigger('warn', {\n message: 'ignoring unknown playlist type: ' + entry.playlist\n });\n return;\n }\n\n this.manifest.playlistType = entry.playlistType;\n },\n map: function map() {\n currentMap = {};\n\n if (entry.uri) {\n currentMap.uri = entry.uri;\n }\n\n if (entry.byterange) {\n currentMap.byterange = entry.byterange;\n }\n\n if (_key) {\n currentMap.key = _key;\n }\n },\n 'stream-inf': function streamInf() {\n this.manifest.playlists = uris;\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!entry.attributes) {\n this.trigger('warn', {\n message: 'ignoring empty stream-inf attributes'\n });\n return;\n }\n\n if (!currentUri.attributes) {\n currentUri.attributes = {};\n }\n\n _extends(currentUri.attributes, entry.attributes);\n },\n media: function media() {\n this.manifest.mediaGroups = this.manifest.mediaGroups || defaultMediaGroups;\n\n if (!(entry.attributes && entry.attributes.TYPE && entry.attributes['GROUP-ID'] && entry.attributes.NAME)) {\n this.trigger('warn', {\n message: 'ignoring incomplete or missing media group'\n });\n return;\n } // find the media group, creating defaults as necessary\n\n\n var mediaGroupType = this.manifest.mediaGroups[entry.attributes.TYPE];\n mediaGroupType[entry.attributes['GROUP-ID']] = mediaGroupType[entry.attributes['GROUP-ID']] || {};\n mediaGroup = mediaGroupType[entry.attributes['GROUP-ID']]; // collect the rendition metadata\n\n rendition = {\n default: /yes/i.test(entry.attributes.DEFAULT)\n };\n\n if (rendition.default) {\n rendition.autoselect = true;\n } else {\n rendition.autoselect = /yes/i.test(entry.attributes.AUTOSELECT);\n }\n\n if (entry.attributes.LANGUAGE) {\n rendition.language = entry.attributes.LANGUAGE;\n }\n\n if (entry.attributes.URI) {\n rendition.uri = entry.attributes.URI;\n }\n\n if (entry.attributes['INSTREAM-ID']) {\n rendition.instreamId = entry.attributes['INSTREAM-ID'];\n }\n\n if (entry.attributes.CHARACTERISTICS) {\n rendition.characteristics = entry.attributes.CHARACTERISTICS;\n }\n\n if (entry.attributes.FORCED) {\n rendition.forced = /yes/i.test(entry.attributes.FORCED);\n } // insert the new rendition\n\n\n mediaGroup[entry.attributes.NAME] = rendition;\n },\n discontinuity: function discontinuity() {\n currentTimeline += 1;\n currentUri.discontinuity = true;\n this.manifest.discontinuityStarts.push(uris.length);\n },\n 'program-date-time': function programDateTime() {\n if (typeof this.manifest.dateTimeString === 'undefined') {\n // PROGRAM-DATE-TIME is a media-segment tag, but for backwards\n // compatibility, we add the first occurence of the PROGRAM-DATE-TIME tag\n // to the manifest object\n // TODO: Consider removing this in future major version\n this.manifest.dateTimeString = entry.dateTimeString;\n this.manifest.dateTimeObject = entry.dateTimeObject;\n }\n\n currentUri.dateTimeString = entry.dateTimeString;\n currentUri.dateTimeObject = entry.dateTimeObject;\n },\n targetduration: function targetduration() {\n if (!isFinite(entry.duration) || entry.duration < 0) {\n this.trigger('warn', {\n message: 'ignoring invalid target duration: ' + entry.duration\n });\n return;\n }\n\n this.manifest.targetDuration = entry.duration;\n setHoldBack.call(this, this.manifest);\n },\n start: function start() {\n if (!entry.attributes || isNaN(entry.attributes['TIME-OFFSET'])) {\n this.trigger('warn', {\n message: 'ignoring start declaration without appropriate attribute list'\n });\n return;\n }\n\n this.manifest.start = {\n timeOffset: entry.attributes['TIME-OFFSET'],\n precise: entry.attributes.PRECISE\n };\n },\n 'cue-out': function cueOut() {\n currentUri.cueOut = entry.data;\n },\n 'cue-out-cont': function cueOutCont() {\n currentUri.cueOutCont = entry.data;\n },\n 'cue-in': function cueIn() {\n currentUri.cueIn = entry.data;\n },\n 'skip': function skip() {\n this.manifest.skip = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-SKIP', entry.attributes, ['SKIPPED-SEGMENTS']);\n },\n 'part': function part() {\n var _this2 = this;\n\n hasParts = true; // parts are always specifed before a segment\n\n var segmentIndex = this.manifest.segments.length;\n var part = camelCaseKeys(entry.attributes);\n currentUri.parts = currentUri.parts || [];\n currentUri.parts.push(part);\n\n if (part.byterange) {\n if (!part.byterange.hasOwnProperty('offset')) {\n part.byterange.offset = lastPartByterangeEnd;\n }\n\n lastPartByterangeEnd = part.byterange.offset + part.byterange.length;\n }\n\n var partIndex = currentUri.parts.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PART #\" + partIndex + \" for segment #\" + segmentIndex, entry.attributes, ['URI', 'DURATION']);\n\n if (this.manifest.renditionReports) {\n this.manifest.renditionReports.forEach(function (r, i) {\n if (!r.hasOwnProperty('lastPart')) {\n _this2.trigger('warn', {\n message: \"#EXT-X-RENDITION-REPORT #\" + i + \" lacks required attribute(s): LAST-PART\"\n });\n }\n });\n }\n },\n 'server-control': function serverControl() {\n var attrs = this.manifest.serverControl = camelCaseKeys(entry.attributes);\n\n if (!attrs.hasOwnProperty('canBlockReload')) {\n attrs.canBlockReload = false;\n this.trigger('info', {\n message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false'\n });\n }\n\n setHoldBack.call(this, this.manifest);\n\n if (attrs.canSkipDateranges && !attrs.hasOwnProperty('canSkipUntil')) {\n this.trigger('warn', {\n message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set'\n });\n }\n },\n 'preload-hint': function preloadHint() {\n // parts are always specifed before a segment\n var segmentIndex = this.manifest.segments.length;\n var hint = camelCaseKeys(entry.attributes);\n var isPart = hint.type && hint.type === 'PART';\n currentUri.preloadHints = currentUri.preloadHints || [];\n currentUri.preloadHints.push(hint);\n\n if (hint.byterange) {\n if (!hint.byterange.hasOwnProperty('offset')) {\n // use last part byterange end or zero if not a part.\n hint.byterange.offset = isPart ? lastPartByterangeEnd : 0;\n\n if (isPart) {\n lastPartByterangeEnd = hint.byterange.offset + hint.byterange.length;\n }\n }\n }\n\n var index = currentUri.preloadHints.length - 1;\n this.warnOnMissingAttributes_(\"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex, entry.attributes, ['TYPE', 'URI']);\n\n if (!hint.type) {\n return;\n } // search through all preload hints except for the current one for\n // a duplicate type.\n\n\n for (var i = 0; i < currentUri.preloadHints.length - 1; i++) {\n var otherHint = currentUri.preloadHints[i];\n\n if (!otherHint.type) {\n continue;\n }\n\n if (otherHint.type === hint.type) {\n this.trigger('warn', {\n message: \"#EXT-X-PRELOAD-HINT #\" + index + \" for segment #\" + segmentIndex + \" has the same TYPE \" + hint.type + \" as preload hint #\" + i\n });\n }\n }\n },\n 'rendition-report': function renditionReport() {\n var report = camelCaseKeys(entry.attributes);\n this.manifest.renditionReports = this.manifest.renditionReports || [];\n this.manifest.renditionReports.push(report);\n var index = this.manifest.renditionReports.length - 1;\n var required = ['LAST-MSN', 'URI'];\n\n if (hasParts) {\n required.push('LAST-PART');\n }\n\n this.warnOnMissingAttributes_(\"#EXT-X-RENDITION-REPORT #\" + index, entry.attributes, required);\n },\n 'part-inf': function partInf() {\n this.manifest.partInf = camelCaseKeys(entry.attributes);\n this.warnOnMissingAttributes_('#EXT-X-PART-INF', entry.attributes, ['PART-TARGET']);\n\n if (this.manifest.partInf.partTarget) {\n this.manifest.partTargetDuration = this.manifest.partInf.partTarget;\n }\n\n setHoldBack.call(this, this.manifest);\n }\n })[entry.tagType] || noop).call(self);\n },\n uri: function uri() {\n currentUri.uri = entry.uri;\n uris.push(currentUri); // if no explicit duration was declared, use the target duration\n\n if (this.manifest.targetDuration && !('duration' in currentUri)) {\n this.trigger('warn', {\n message: 'defaulting segment duration to the target duration'\n });\n currentUri.duration = this.manifest.targetDuration;\n } // annotate with encryption information, if necessary\n\n\n if (_key) {\n currentUri.key = _key;\n }\n\n currentUri.timeline = currentTimeline; // annotate with initialization segment information, if necessary\n\n if (currentMap) {\n currentUri.map = currentMap;\n } // reset the last byterange end as it needs to be 0 between parts\n\n\n lastPartByterangeEnd = 0; // prepare for the next URI\n\n currentUri = {};\n },\n comment: function comment() {// comments are not important for playback\n },\n custom: function custom() {\n // if this is segment-level data attach the output to the segment\n if (entry.segment) {\n currentUri.custom = currentUri.custom || {};\n currentUri.custom[entry.customType] = entry.data; // if this is manifest-level data attach to the top level manifest object\n } else {\n this.manifest.custom = this.manifest.custom || {};\n this.manifest.custom[entry.customType] = entry.data;\n }\n }\n })[entry.type].call(self);\n });\n\n return _this;\n }\n\n var _proto = Parser.prototype;\n\n _proto.warnOnMissingAttributes_ = function warnOnMissingAttributes_(identifier, attributes, required) {\n var missing = [];\n required.forEach(function (key) {\n if (!attributes.hasOwnProperty(key)) {\n missing.push(key);\n }\n });\n\n if (missing.length) {\n this.trigger('warn', {\n message: identifier + \" lacks required attribute(s): \" + missing.join(', ')\n });\n }\n }\n /**\n * Parse the input string and update the manifest object.\n *\n * @param {string} chunk a potentially incomplete portion of the manifest\n */\n ;\n\n _proto.push = function push(chunk) {\n this.lineStream.push(chunk);\n }\n /**\n * Flush any remaining input. This can be handy if the last line of an M3U8\n * manifest did not contain a trailing newline but the file has been\n * completely received.\n */\n ;\n\n _proto.end = function end() {\n // flush any buffered input\n this.lineStream.push('\\n');\n this.trigger('end');\n }\n /**\n * Add an additional parser for non-standard tags\n *\n * @param {Object} options a map of options for the added parser\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {string} options.type the type to register to the output\n * @param {Function} [options.dataParser] function to parse the line into an object\n * @param {boolean} [options.segment] should tag data be attached to the segment object\n */\n ;\n\n _proto.addParser = function addParser(options) {\n this.parseStream.addParser(options);\n }\n /**\n * Add a custom header mapper\n *\n * @param {Object} options\n * @param {RegExp} options.expression a regular expression to match the custom header\n * @param {Function} options.map function to translate tag into a different tag\n */\n ;\n\n _proto.addTagMapper = function addTagMapper(options) {\n this.parseStream.addTagMapper(options);\n };\n\n return Parser;\n}(Stream);\n\nexport { LineStream, ParseStream, Parser };\n","import window from 'global/window';\nvar regexs = {\n // to determine mime types\n mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,\n webm: /^(vp0?[89]|av0?1|opus|vorbis)/,\n ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,\n // to determine if a codec is audio or video\n video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,\n audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,\n text: /^(stpp.ttml.im1t)/,\n // mux.js support regex\n muxerVideo: /^(avc0?1)/,\n muxerAudio: /^(mp4a)/,\n // match nothing as muxer does not support text right now.\n // there cannot never be a character before the start of a string\n // so this matches nothing.\n muxerText: /a^/\n};\nvar mediaTypes = ['video', 'audio', 'text'];\nvar upperMediaTypes = ['Video', 'Audio', 'Text'];\n/**\n * Replace the old apple-style `avc1.
.
` codec string with the standard\n * `avc1.`\n *\n * @param {string} codec\n * Codec string to translate\n * @return {string}\n * The translated codec string\n */\n\nexport var translateLegacyCodec = function translateLegacyCodec(codec) {\n if (!codec) {\n return codec;\n }\n\n return codec.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (orig, profile, avcLevel) {\n var profileHex = ('00' + Number(profile).toString(16)).slice(-2);\n var avcLevelHex = ('00' + Number(avcLevel).toString(16)).slice(-2);\n return 'avc1.' + profileHex + '00' + avcLevelHex;\n });\n};\n/**\n * Replace the old apple-style `avc1.
.
` codec strings with the standard\n * `avc1.`\n *\n * @param {string[]} codecs\n * An array of codec strings to translate\n * @return {string[]}\n * The translated array of codec strings\n */\n\nexport var translateLegacyCodecs = function translateLegacyCodecs(codecs) {\n return codecs.map(translateLegacyCodec);\n};\n/**\n * Replace codecs in the codec string with the old apple-style `avc1.
.
` to the\n * standard `avc1.`.\n *\n * @param {string} codecString\n * The codec string\n * @return {string}\n * The codec string with old apple-style codecs replaced\n *\n * @private\n */\n\nexport var mapLegacyAvcCodecs = function mapLegacyAvcCodecs(codecString) {\n return codecString.replace(/avc1\\.(\\d+)\\.(\\d+)/i, function (match) {\n return translateLegacyCodecs([match])[0];\n });\n};\n/**\n * @typedef {Object} ParsedCodecInfo\n * @property {number} codecCount\n * Number of codecs parsed\n * @property {string} [videoCodec]\n * Parsed video codec (if found)\n * @property {string} [videoObjectTypeIndicator]\n * Video object type indicator (if found)\n * @property {string|null} audioProfile\n * Audio profile\n */\n\n/**\n * Parses a codec string to retrieve the number of codecs specified, the video codec and\n * object type indicator, and the audio profile.\n *\n * @param {string} [codecString]\n * The codec string to parse\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var parseCodecs = function parseCodecs(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n var codecs = codecString.split(',');\n var result = [];\n codecs.forEach(function (codec) {\n codec = codec.trim();\n var codecType;\n mediaTypes.forEach(function (name) {\n var match = regexs[name].exec(codec.toLowerCase());\n\n if (!match || match.length <= 1) {\n return;\n }\n\n codecType = name; // maintain codec case\n\n var type = codec.substring(0, match[1].length);\n var details = codec.replace(type, '');\n result.push({\n type: type,\n details: details,\n mediaType: name\n });\n });\n\n if (!codecType) {\n result.push({\n type: codec,\n details: '',\n mediaType: 'unknown'\n });\n }\n });\n return result;\n};\n/**\n * Returns a ParsedCodecInfo object for the default alternate audio playlist if there is\n * a default alternate audio playlist for the provided audio group.\n *\n * @param {Object} master\n * The master playlist\n * @param {string} audioGroupId\n * ID of the audio group for which to find the default codec info\n * @return {ParsedCodecInfo}\n * Parsed codec info\n */\n\nexport var codecsFromDefault = function codecsFromDefault(master, audioGroupId) {\n if (!master.mediaGroups.AUDIO || !audioGroupId) {\n return null;\n }\n\n var audioGroup = master.mediaGroups.AUDIO[audioGroupId];\n\n if (!audioGroup) {\n return null;\n }\n\n for (var name in audioGroup) {\n var audioType = audioGroup[name];\n\n if (audioType.default && audioType.playlists) {\n // codec should be the same for all playlists within the audio type\n return parseCodecs(audioType.playlists[0].attributes.CODECS);\n }\n }\n\n return null;\n};\nexport var isVideoCodec = function isVideoCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.video.test(codec.trim().toLowerCase());\n};\nexport var isAudioCodec = function isAudioCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.audio.test(codec.trim().toLowerCase());\n};\nexport var isTextCodec = function isTextCodec(codec) {\n if (codec === void 0) {\n codec = '';\n }\n\n return regexs.text.test(codec.trim().toLowerCase());\n};\nexport var getMimeForCodec = function getMimeForCodec(codecString) {\n if (!codecString || typeof codecString !== 'string') {\n return;\n }\n\n var codecs = codecString.toLowerCase().split(',').map(function (c) {\n return translateLegacyCodec(c.trim());\n }); // default to video type\n\n var type = 'video'; // only change to audio type if the only codec we have is\n // audio\n\n if (codecs.length === 1 && isAudioCodec(codecs[0])) {\n type = 'audio';\n } else if (codecs.length === 1 && isTextCodec(codecs[0])) {\n // text uses application/ for now\n type = 'application';\n } // default the container to mp4\n\n\n var container = 'mp4'; // every codec must be able to go into the container\n // for that container to be the correct one\n\n if (codecs.every(function (c) {\n return regexs.mp4.test(c);\n })) {\n container = 'mp4';\n } else if (codecs.every(function (c) {\n return regexs.webm.test(c);\n })) {\n container = 'webm';\n } else if (codecs.every(function (c) {\n return regexs.ogg.test(c);\n })) {\n container = 'ogg';\n }\n\n return type + \"/\" + container + \";codecs=\\\"\" + codecString + \"\\\"\";\n};\nexport var browserSupportsCodec = function browserSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(getMimeForCodec(codecString)) || false;\n};\nexport var muxerSupportsCodec = function muxerSupportsCodec(codecString) {\n if (codecString === void 0) {\n codecString = '';\n }\n\n return codecString.toLowerCase().split(',').every(function (codec) {\n codec = codec.trim(); // any match is supported.\n\n for (var i = 0; i < upperMediaTypes.length; i++) {\n var type = upperMediaTypes[i];\n\n if (regexs[\"muxer\" + type].test(codec)) {\n return true;\n }\n }\n\n return false;\n });\n};\nexport var DEFAULT_AUDIO_CODEC = 'mp4a.40.2';\nexport var DEFAULT_VIDEO_CODEC = 'avc1.4d400d';","var MPEGURL_REGEX = /^(audio|video|application)\\/(x-|vnd\\.apple\\.)?mpegurl/i;\nvar DASH_REGEX = /^application\\/dash\\+xml/i;\n/**\n * Returns a string that describes the type of source based on a video source object's\n * media type.\n *\n * @see {@link https://dev.w3.org/html5/pf-summary/video.html#dom-source-type|Source Type}\n *\n * @param {string} type\n * Video source object media type\n * @return {('hls'|'dash'|'vhs-json'|null)}\n * VHS source type string\n */\n\nexport var simpleTypeFromSourceType = function simpleTypeFromSourceType(type) {\n if (MPEGURL_REGEX.test(type)) {\n return 'hls';\n }\n\n if (DASH_REGEX.test(type)) {\n return 'dash';\n } // Denotes the special case of a manifest object passed to http-streaming instead of a\n // source URL.\n //\n // See https://en.wikipedia.org/wiki/Media_type for details on specifying media types.\n //\n // In this case, vnd stands for vendor, video.js for the organization, VHS for this\n // project, and the +json suffix identifies the structure of the media type.\n\n\n if (type === 'application/vnd.videojs.vhs+json') {\n return 'vhs-json';\n }\n\n return null;\n};","/*! @name mpd-parser @version 0.19.0 @license Apache-2.0 */\nimport resolveUrl from '@videojs/vhs-utils/es/resolve-url';\nimport window from 'global/window';\nimport decodeB64ToUint8Array from '@videojs/vhs-utils/es/decode-b64-to-uint8-array';\nimport { DOMParser } from '@xmldom/xmldom';\n\nvar version = \"0.19.0\";\n\nvar isObject = function isObject(obj) {\n return !!obj && typeof obj === 'object';\n};\n\nvar merge = function merge() {\n for (var _len = arguments.length, objects = new Array(_len), _key = 0; _key < _len; _key++) {\n objects[_key] = arguments[_key];\n }\n\n return objects.reduce(function (result, source) {\n if (typeof source !== 'object') {\n return result;\n }\n\n Object.keys(source).forEach(function (key) {\n if (Array.isArray(result[key]) && Array.isArray(source[key])) {\n result[key] = result[key].concat(source[key]);\n } else if (isObject(result[key]) && isObject(source[key])) {\n result[key] = merge(result[key], source[key]);\n } else {\n result[key] = source[key];\n }\n });\n return result;\n }, {});\n};\nvar values = function values(o) {\n return Object.keys(o).map(function (k) {\n return o[k];\n });\n};\n\nvar range = function range(start, end) {\n var result = [];\n\n for (var i = start; i < end; i++) {\n result.push(i);\n }\n\n return result;\n};\nvar flatten = function flatten(lists) {\n return lists.reduce(function (x, y) {\n return x.concat(y);\n }, []);\n};\nvar from = function from(list) {\n if (!list.length) {\n return [];\n }\n\n var result = [];\n\n for (var i = 0; i < list.length; i++) {\n result.push(list[i]);\n }\n\n return result;\n};\nvar findIndexes = function findIndexes(l, key) {\n return l.reduce(function (a, e, i) {\n if (e[key]) {\n a.push(i);\n }\n\n return a;\n }, []);\n};\n\nvar errors = {\n INVALID_NUMBER_OF_PERIOD: 'INVALID_NUMBER_OF_PERIOD',\n DASH_EMPTY_MANIFEST: 'DASH_EMPTY_MANIFEST',\n DASH_INVALID_XML: 'DASH_INVALID_XML',\n NO_BASE_URL: 'NO_BASE_URL',\n MISSING_SEGMENT_INFORMATION: 'MISSING_SEGMENT_INFORMATION',\n SEGMENT_TIME_UNSPECIFIED: 'SEGMENT_TIME_UNSPECIFIED',\n UNSUPPORTED_UTC_TIMING_SCHEME: 'UNSUPPORTED_UTC_TIMING_SCHEME'\n};\n\n/**\n * @typedef {Object} SingleUri\n * @property {string} uri - relative location of segment\n * @property {string} resolvedUri - resolved location of segment\n * @property {Object} byterange - Object containing information on how to make byte range\n * requests following byte-range-spec per RFC2616.\n * @property {String} byterange.length - length of range request\n * @property {String} byterange.offset - byte offset of range request\n *\n * @see https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.1\n */\n\n/**\n * Converts a URLType node (5.3.9.2.3 Table 13) to a segment object\n * that conforms to how m3u8-parser is structured\n *\n * @see https://github.com/videojs/m3u8-parser\n *\n * @param {string} baseUrl - baseUrl provided by nodes\n * @param {string} source - source url for segment\n * @param {string} range - optional range used for range calls,\n * follows RFC 2616, Clause 14.35.1\n * @return {SingleUri} full segment information transformed into a format similar\n * to m3u8-parser\n */\n\nvar urlTypeToSegment = function urlTypeToSegment(_ref) {\n var _ref$baseUrl = _ref.baseUrl,\n baseUrl = _ref$baseUrl === void 0 ? '' : _ref$baseUrl,\n _ref$source = _ref.source,\n source = _ref$source === void 0 ? '' : _ref$source,\n _ref$range = _ref.range,\n range = _ref$range === void 0 ? '' : _ref$range,\n _ref$indexRange = _ref.indexRange,\n indexRange = _ref$indexRange === void 0 ? '' : _ref$indexRange;\n var segment = {\n uri: source,\n resolvedUri: resolveUrl(baseUrl || '', source)\n };\n\n if (range || indexRange) {\n var rangeStr = range ? range : indexRange;\n var ranges = rangeStr.split('-');\n var startRange = parseInt(ranges[0], 10);\n var endRange = parseInt(ranges[1], 10); // byterange should be inclusive according to\n // RFC 2616, Clause 14.35.1\n\n segment.byterange = {\n length: endRange - startRange + 1,\n offset: startRange\n };\n }\n\n return segment;\n};\nvar byteRangeToString = function byteRangeToString(byterange) {\n // `endRange` is one less than `offset + length` because the HTTP range\n // header uses inclusive ranges\n var endRange = byterange.offset + byterange.length - 1;\n return byterange.offset + \"-\" + endRange;\n};\n\n/**\n * parse the end number attribue that can be a string\n * number, or undefined.\n *\n * @param {string|number|undefined} endNumber\n * The end number attribute.\n *\n * @return {number|null}\n * The result of parsing the end number.\n */\n\nvar parseEndNumber = function parseEndNumber(endNumber) {\n if (endNumber && typeof endNumber !== 'number') {\n endNumber = parseInt(endNumber, 10);\n }\n\n if (isNaN(endNumber)) {\n return null;\n }\n\n return endNumber;\n};\n/**\n * Functions for calculating the range of available segments in static and dynamic\n * manifests.\n */\n\n\nvar segmentRange = {\n /**\n * Returns the entire range of available segments for a static MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n static: function _static(attributes) {\n var duration = attributes.duration,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n sourceDuration = attributes.sourceDuration,\n periodDuration = attributes.periodDuration;\n var endNumber = parseEndNumber(attributes.endNumber);\n var segmentDuration = duration / timescale;\n\n if (typeof endNumber === 'number') {\n return {\n start: 0,\n end: endNumber\n };\n }\n\n if (typeof periodDuration === 'number') {\n return {\n start: 0,\n end: periodDuration / segmentDuration\n };\n }\n\n return {\n start: 0,\n end: sourceDuration / segmentDuration\n };\n },\n\n /**\n * Returns the current live window range of available segments for a dynamic MPD\n *\n * @param {Object} attributes\n * Inheritied MPD attributes\n * @return {{ start: number, end: number }}\n * The start and end numbers for available segments\n */\n dynamic: function dynamic(attributes) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n duration = attributes.duration,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp,\n _attributes$timeShift = attributes.timeShiftBufferDepth,\n timeShiftBufferDepth = _attributes$timeShift === void 0 ? Infinity : _attributes$timeShift;\n var endNumber = parseEndNumber(attributes.endNumber);\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n var segmentCount = Math.ceil(periodDuration * timescale / duration);\n var availableStart = Math.floor((now - periodStartWC - timeShiftBufferDepth) * timescale / duration);\n var availableEnd = Math.floor((now - periodStartWC) * timescale / duration);\n return {\n start: Math.max(0, availableStart),\n end: typeof endNumber === 'number' ? endNumber : Math.min(segmentCount, availableEnd)\n };\n }\n};\n/**\n * Maps a range of numbers to objects with information needed to build the corresponding\n * segment list\n *\n * @name toSegmentsCallback\n * @function\n * @param {number} number\n * Number of the segment\n * @param {number} index\n * Index of the number in the range list\n * @return {{ number: Number, duration: Number, timeline: Number, time: Number }}\n * Object with segment timing and duration info\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping a range of numbers to\n * information needed to build the segment list.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {toSegmentsCallback}\n * Callback map function\n */\n\nvar toSegments = function toSegments(attributes) {\n return function (number, index) {\n var duration = attributes.duration,\n _attributes$timescale3 = attributes.timescale,\n timescale = _attributes$timescale3 === void 0 ? 1 : _attributes$timescale3,\n periodIndex = attributes.periodIndex,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb;\n return {\n number: startNumber + number,\n duration: duration / timescale,\n timeline: periodIndex,\n time: index * duration\n };\n };\n};\n/**\n * Returns a list of objects containing segment timing and duration info used for\n * building the list of segments. This uses the @duration attribute specified\n * in the MPD manifest to derive the range of segments.\n *\n * @param {Object} attributes\n * Inherited MPD attributes\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseByDuration = function parseByDuration(attributes) {\n var type = attributes.type,\n duration = attributes.duration,\n _attributes$timescale4 = attributes.timescale,\n timescale = _attributes$timescale4 === void 0 ? 1 : _attributes$timescale4,\n periodDuration = attributes.periodDuration,\n sourceDuration = attributes.sourceDuration;\n\n var _segmentRange$type = segmentRange[type](attributes),\n start = _segmentRange$type.start,\n end = _segmentRange$type.end;\n\n var segments = range(start, end).map(toSegments(attributes));\n\n if (type === 'static') {\n var index = segments.length - 1; // section is either a period or the full source\n\n var sectionDuration = typeof periodDuration === 'number' ? periodDuration : sourceDuration; // final segment may be less than full segment duration\n\n segments[index].duration = sectionDuration - duration / timescale * index;\n }\n\n return segments;\n};\n\n/**\n * Translates SegmentBase into a set of segments.\n * (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @return {Object.} list of segments\n */\n\nvar segmentsFromBase = function segmentsFromBase(attributes) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ,\n sourceDuration = attributes.sourceDuration,\n _attributes$indexRang = attributes.indexRange,\n indexRange = _attributes$indexRang === void 0 ? '' : _attributes$indexRang,\n duration = attributes.duration; // base url is required for SegmentBase to work, per spec (Section 5.3.9.2.1)\n\n if (!baseUrl) {\n throw new Error(errors.NO_BASE_URL);\n }\n\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: baseUrl,\n indexRange: indexRange\n });\n segment.map = initSegment; // If there is a duration, use it, otherwise use the given duration of the source\n // (since SegmentBase is only for one total segment)\n\n if (duration) {\n var segmentTimeInfo = parseByDuration(attributes);\n\n if (segmentTimeInfo.length) {\n segment.duration = segmentTimeInfo[0].duration;\n segment.timeline = segmentTimeInfo[0].timeline;\n }\n } else if (sourceDuration) {\n segment.duration = sourceDuration;\n segment.timeline = 0;\n } // This is used for mediaSequence\n\n\n segment.number = 0;\n return [segment];\n};\n/**\n * Given a playlist, a sidx box, and a baseUrl, update the segment list of the playlist\n * according to the sidx information given.\n *\n * playlist.sidx has metadadata about the sidx where-as the sidx param\n * is the parsed sidx box itself.\n *\n * @param {Object} playlist the playlist to update the sidx information for\n * @param {Object} sidx the parsed sidx box\n * @return {Object} the playlist object with the updated sidx information\n */\n\nvar addSidxSegmentsToPlaylist = function addSidxSegmentsToPlaylist(playlist, sidx, baseUrl) {\n // Retain init segment information\n var initSegment = playlist.sidx.map ? playlist.sidx.map : null; // Retain source duration from initial main manifest parsing\n\n var sourceDuration = playlist.sidx.duration; // Retain source timeline\n\n var timeline = playlist.timeline || 0;\n var sidxByteRange = playlist.sidx.byterange;\n var sidxEnd = sidxByteRange.offset + sidxByteRange.length; // Retain timescale of the parsed sidx\n\n var timescale = sidx.timescale; // referenceType 1 refers to other sidx boxes\n\n var mediaReferences = sidx.references.filter(function (r) {\n return r.referenceType !== 1;\n });\n var segments = [];\n var type = playlist.endList ? 'static' : 'dynamic'; // firstOffset is the offset from the end of the sidx box\n\n var startIndex = sidxEnd + sidx.firstOffset;\n\n for (var i = 0; i < mediaReferences.length; i++) {\n var reference = sidx.references[i]; // size of the referenced (sub)segment\n\n var size = reference.referencedSize; // duration of the referenced (sub)segment, in the timescale\n // this will be converted to seconds when generating segments\n\n var duration = reference.subsegmentDuration; // should be an inclusive range\n\n var endIndex = startIndex + size - 1;\n var indexRange = startIndex + \"-\" + endIndex;\n var attributes = {\n baseUrl: baseUrl,\n timescale: timescale,\n timeline: timeline,\n // this is used in parseByDuration\n periodIndex: timeline,\n duration: duration,\n sourceDuration: sourceDuration,\n indexRange: indexRange,\n type: type\n };\n var segment = segmentsFromBase(attributes)[0];\n\n if (initSegment) {\n segment.map = initSegment;\n }\n\n segments.push(segment);\n startIndex += size;\n }\n\n playlist.segments = segments;\n return playlist;\n};\n\nvar generateSidxKey = function generateSidxKey(sidx) {\n return sidx && sidx.uri + '-' + byteRangeToString(sidx.byterange);\n};\n\nvar mergeDiscontiguousPlaylists = function mergeDiscontiguousPlaylists(playlists) {\n var mergedPlaylists = values(playlists.reduce(function (acc, playlist) {\n // assuming playlist IDs are the same across periods\n // TODO: handle multiperiod where representation sets are not the same\n // across periods\n var name = playlist.attributes.id + (playlist.attributes.lang || ''); // Periods after first\n\n if (acc[name]) {\n var _acc$name$segments;\n\n // first segment of subsequent periods signal a discontinuity\n if (playlist.segments[0]) {\n playlist.segments[0].discontinuity = true;\n }\n\n (_acc$name$segments = acc[name].segments).push.apply(_acc$name$segments, playlist.segments); // bubble up contentProtection, this assumes all DRM content\n // has the same contentProtection\n\n\n if (playlist.attributes.contentProtection) {\n acc[name].attributes.contentProtection = playlist.attributes.contentProtection;\n }\n } else {\n // first Period\n acc[name] = playlist;\n }\n\n return acc;\n }, {}));\n return mergedPlaylists.map(function (playlist) {\n playlist.discontinuityStarts = findIndexes(playlist.segments, 'discontinuity');\n return playlist;\n });\n};\n\nvar addSidxSegmentsToPlaylist$1 = function addSidxSegmentsToPlaylist$1(playlist, sidxMapping) {\n var sidxKey = generateSidxKey(playlist.sidx);\n var sidxMatch = sidxKey && sidxMapping[sidxKey] && sidxMapping[sidxKey].sidx;\n\n if (sidxMatch) {\n addSidxSegmentsToPlaylist(playlist, sidxMatch, playlist.sidx.resolvedUri);\n }\n\n return playlist;\n};\nvar addSidxSegmentsToPlaylists = function addSidxSegmentsToPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!Object.keys(sidxMapping).length) {\n return playlists;\n }\n\n for (var i in playlists) {\n playlists[i] = addSidxSegmentsToPlaylist$1(playlists[i], sidxMapping);\n }\n\n return playlists;\n};\nvar formatAudioPlaylist = function formatAudioPlaylist(_ref, isAudioOnly) {\n var _attributes;\n\n var attributes = _ref.attributes,\n segments = _ref.segments,\n sidx = _ref.sidx;\n var playlist = {\n attributes: (_attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth,\n CODECS: attributes.codecs\n }, _attributes['PROGRAM-ID'] = 1, _attributes),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n if (isAudioOnly) {\n playlist.attributes.AUDIO = 'audio';\n playlist.attributes.SUBTITLES = 'subs';\n }\n\n return playlist;\n};\nvar formatVttPlaylist = function formatVttPlaylist(_ref2) {\n var _m3u8Attributes;\n\n var attributes = _ref2.attributes,\n segments = _ref2.segments;\n\n if (typeof segments === 'undefined') {\n // vtt tracks may use single file in BaseURL\n segments = [{\n uri: attributes.baseUrl,\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n duration: attributes.sourceDuration,\n number: 0\n }]; // targetDuration should be the same duration as the only segment\n\n attributes.duration = attributes.sourceDuration;\n }\n\n var m3u8Attributes = (_m3u8Attributes = {\n NAME: attributes.id,\n BANDWIDTH: attributes.bandwidth\n }, _m3u8Attributes['PROGRAM-ID'] = 1, _m3u8Attributes);\n\n if (attributes.codecs) {\n m3u8Attributes.CODECS = attributes.codecs;\n }\n\n return {\n attributes: m3u8Attributes,\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: attributes.baseUrl || '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n};\nvar organizeAudioPlaylists = function organizeAudioPlaylists(playlists, sidxMapping, isAudioOnly) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (isAudioOnly === void 0) {\n isAudioOnly = false;\n }\n\n var mainPlaylist;\n var formattedPlaylists = playlists.reduce(function (a, playlist) {\n var role = playlist.attributes.role && playlist.attributes.role.value || '';\n var language = playlist.attributes.lang || '';\n var label = playlist.attributes.label || 'main';\n\n if (language && !playlist.attributes.label) {\n var roleLabel = role ? \" (\" + role + \")\" : '';\n label = \"\" + playlist.attributes.lang + roleLabel;\n }\n\n if (!a[label]) {\n a[label] = {\n language: language,\n autoselect: true,\n default: role === 'main',\n playlists: [],\n uri: ''\n };\n }\n\n var formatted = addSidxSegmentsToPlaylist$1(formatAudioPlaylist(playlist, isAudioOnly), sidxMapping);\n a[label].playlists.push(formatted);\n\n if (typeof mainPlaylist === 'undefined' && role === 'main') {\n mainPlaylist = playlist;\n mainPlaylist.default = true;\n }\n\n return a;\n }, {}); // if no playlists have role \"main\", mark the first as main\n\n if (!mainPlaylist) {\n var firstLabel = Object.keys(formattedPlaylists)[0];\n formattedPlaylists[firstLabel].default = true;\n }\n\n return formattedPlaylists;\n};\nvar organizeVttPlaylists = function organizeVttPlaylists(playlists, sidxMapping) {\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n return playlists.reduce(function (a, playlist) {\n var label = playlist.attributes.lang || 'text';\n\n if (!a[label]) {\n a[label] = {\n language: label,\n default: false,\n autoselect: false,\n playlists: [],\n uri: ''\n };\n }\n\n a[label].playlists.push(addSidxSegmentsToPlaylist$1(formatVttPlaylist(playlist), sidxMapping));\n return a;\n }, {});\n};\n\nvar organizeCaptionServices = function organizeCaptionServices(captionServices) {\n return captionServices.reduce(function (svcObj, svc) {\n if (!svc) {\n return svcObj;\n }\n\n svc.forEach(function (service) {\n var channel = service.channel,\n language = service.language;\n svcObj[language] = {\n autoselect: false,\n default: false,\n instreamId: channel,\n language: language\n };\n\n if (service.hasOwnProperty('aspectRatio')) {\n svcObj[language].aspectRatio = service.aspectRatio;\n }\n\n if (service.hasOwnProperty('easyReader')) {\n svcObj[language].easyReader = service.easyReader;\n }\n\n if (service.hasOwnProperty('3D')) {\n svcObj[language]['3D'] = service['3D'];\n }\n });\n return svcObj;\n }, {});\n};\n\nvar formatVideoPlaylist = function formatVideoPlaylist(_ref3) {\n var _attributes2;\n\n var attributes = _ref3.attributes,\n segments = _ref3.segments,\n sidx = _ref3.sidx;\n var playlist = {\n attributes: (_attributes2 = {\n NAME: attributes.id,\n AUDIO: 'audio',\n SUBTITLES: 'subs',\n RESOLUTION: {\n width: attributes.width,\n height: attributes.height\n },\n CODECS: attributes.codecs,\n BANDWIDTH: attributes.bandwidth\n }, _attributes2['PROGRAM-ID'] = 1, _attributes2),\n uri: '',\n endList: attributes.type === 'static',\n timeline: attributes.periodIndex,\n resolvedUri: '',\n targetDuration: attributes.duration,\n segments: segments,\n mediaSequence: segments.length ? segments[0].number : 1\n };\n\n if (attributes.contentProtection) {\n playlist.contentProtection = attributes.contentProtection;\n }\n\n if (sidx) {\n playlist.sidx = sidx;\n }\n\n return playlist;\n};\n\nvar videoOnly = function videoOnly(_ref4) {\n var attributes = _ref4.attributes;\n return attributes.mimeType === 'video/mp4' || attributes.mimeType === 'video/webm' || attributes.contentType === 'video';\n};\n\nvar audioOnly = function audioOnly(_ref5) {\n var attributes = _ref5.attributes;\n return attributes.mimeType === 'audio/mp4' || attributes.mimeType === 'audio/webm' || attributes.contentType === 'audio';\n};\n\nvar vttOnly = function vttOnly(_ref6) {\n var attributes = _ref6.attributes;\n return attributes.mimeType === 'text/vtt' || attributes.contentType === 'text';\n};\n\nvar toM3u8 = function toM3u8(dashPlaylists, locations, sidxMapping) {\n var _mediaGroups;\n\n if (sidxMapping === void 0) {\n sidxMapping = {};\n }\n\n if (!dashPlaylists.length) {\n return {};\n } // grab all main manifest attributes\n\n\n var _dashPlaylists$0$attr = dashPlaylists[0].attributes,\n duration = _dashPlaylists$0$attr.sourceDuration,\n type = _dashPlaylists$0$attr.type,\n suggestedPresentationDelay = _dashPlaylists$0$attr.suggestedPresentationDelay,\n minimumUpdatePeriod = _dashPlaylists$0$attr.minimumUpdatePeriod;\n var videoPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(videoOnly)).map(formatVideoPlaylist);\n var audioPlaylists = mergeDiscontiguousPlaylists(dashPlaylists.filter(audioOnly));\n var vttPlaylists = dashPlaylists.filter(vttOnly);\n var captions = dashPlaylists.map(function (playlist) {\n return playlist.attributes.captionServices;\n }).filter(Boolean);\n var manifest = {\n allowCache: true,\n discontinuityStarts: [],\n segments: [],\n endList: true,\n mediaGroups: (_mediaGroups = {\n AUDIO: {},\n VIDEO: {}\n }, _mediaGroups['CLOSED-CAPTIONS'] = {}, _mediaGroups.SUBTITLES = {}, _mediaGroups),\n uri: '',\n duration: duration,\n playlists: addSidxSegmentsToPlaylists(videoPlaylists, sidxMapping)\n };\n\n if (minimumUpdatePeriod >= 0) {\n manifest.minimumUpdatePeriod = minimumUpdatePeriod * 1000;\n }\n\n if (locations) {\n manifest.locations = locations;\n }\n\n if (type === 'dynamic') {\n manifest.suggestedPresentationDelay = suggestedPresentationDelay;\n }\n\n var isAudioOnly = manifest.playlists.length === 0;\n\n if (audioPlaylists.length) {\n manifest.mediaGroups.AUDIO.audio = organizeAudioPlaylists(audioPlaylists, sidxMapping, isAudioOnly);\n }\n\n if (vttPlaylists.length) {\n manifest.mediaGroups.SUBTITLES.subs = organizeVttPlaylists(vttPlaylists, sidxMapping);\n }\n\n if (captions.length) {\n manifest.mediaGroups['CLOSED-CAPTIONS'].cc = organizeCaptionServices(captions);\n }\n\n return manifest;\n};\n\n/**\n * Calculates the R (repetition) value for a live stream (for the final segment\n * in a manifest where the r value is negative 1)\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {number} time\n * current time (typically the total time up until the final segment)\n * @param {number} duration\n * duration property for the given \n *\n * @return {number}\n * R value to reach the end of the given period\n */\nvar getLiveRValue = function getLiveRValue(attributes, time, duration) {\n var NOW = attributes.NOW,\n clientOffset = attributes.clientOffset,\n availabilityStartTime = attributes.availabilityStartTime,\n _attributes$timescale = attributes.timescale,\n timescale = _attributes$timescale === void 0 ? 1 : _attributes$timescale,\n _attributes$start = attributes.start,\n start = _attributes$start === void 0 ? 0 : _attributes$start,\n _attributes$minimumUp = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp === void 0 ? 0 : _attributes$minimumUp;\n var now = (NOW + clientOffset) / 1000;\n var periodStartWC = availabilityStartTime + start;\n var periodEndWC = now + minimumUpdatePeriod;\n var periodDuration = periodEndWC - periodStartWC;\n return Math.ceil((periodDuration * timescale - time) / duration);\n};\n/**\n * Uses information provided by SegmentTemplate.SegmentTimeline to determine segment\n * timing and duration\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n *\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\n\nvar parseByTimeline = function parseByTimeline(attributes, segmentTimeline) {\n var type = attributes.type,\n _attributes$minimumUp2 = attributes.minimumUpdatePeriod,\n minimumUpdatePeriod = _attributes$minimumUp2 === void 0 ? 0 : _attributes$minimumUp2,\n _attributes$media = attributes.media,\n media = _attributes$media === void 0 ? '' : _attributes$media,\n sourceDuration = attributes.sourceDuration,\n _attributes$timescale2 = attributes.timescale,\n timescale = _attributes$timescale2 === void 0 ? 1 : _attributes$timescale2,\n _attributes$startNumb = attributes.startNumber,\n startNumber = _attributes$startNumb === void 0 ? 1 : _attributes$startNumb,\n timeline = attributes.periodIndex;\n var segments = [];\n var time = -1;\n\n for (var sIndex = 0; sIndex < segmentTimeline.length; sIndex++) {\n var S = segmentTimeline[sIndex];\n var duration = S.d;\n var repeat = S.r || 0;\n var segmentTime = S.t || 0;\n\n if (time < 0) {\n // first segment\n time = segmentTime;\n }\n\n if (segmentTime && segmentTime > time) {\n // discontinuity\n // TODO: How to handle this type of discontinuity\n // timeline++ here would treat it like HLS discontuity and content would\n // get appended without gap\n // E.G.\n // \n // \n // \n // \n // would have $Time$ values of [0, 1, 2, 5]\n // should this be appened at time positions [0, 1, 2, 3],(#EXT-X-DISCONTINUITY)\n // or [0, 1, 2, gap, gap, 5]? (#EXT-X-GAP)\n // does the value of sourceDuration consider this when calculating arbitrary\n // negative @r repeat value?\n // E.G. Same elements as above with this added at the end\n // \n // with a sourceDuration of 10\n // Would the 2 gaps be included in the time duration calculations resulting in\n // 8 segments with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9] or 10 segments\n // with $Time$ values of [0, 1, 2, 5, 6, 7, 8, 9, 10, 11] ?\n time = segmentTime;\n }\n\n var count = void 0;\n\n if (repeat < 0) {\n var nextS = sIndex + 1;\n\n if (nextS === segmentTimeline.length) {\n // last segment\n if (type === 'dynamic' && minimumUpdatePeriod > 0 && media.indexOf('$Number$') > 0) {\n count = getLiveRValue(attributes, time, duration);\n } else {\n // TODO: This may be incorrect depending on conclusion of TODO above\n count = (sourceDuration * timescale - time) / duration;\n }\n } else {\n count = (segmentTimeline[nextS].t - time) / duration;\n }\n } else {\n count = repeat + 1;\n }\n\n var end = startNumber + segments.length + count;\n var number = startNumber + segments.length;\n\n while (number < end) {\n segments.push({\n number: number,\n duration: duration / timescale,\n time: time,\n timeline: timeline\n });\n time += duration;\n number++;\n }\n }\n\n return segments;\n};\n\nvar identifierPattern = /\\$([A-z]*)(?:(%0)([0-9]+)d)?\\$/g;\n/**\n * Replaces template identifiers with corresponding values. To be used as the callback\n * for String.prototype.replace\n *\n * @name replaceCallback\n * @function\n * @param {string} match\n * Entire match of identifier\n * @param {string} identifier\n * Name of matched identifier\n * @param {string} format\n * Format tag string. Its presence indicates that padding is expected\n * @param {string} width\n * Desired length of the replaced value. Values less than this width shall be left\n * zero padded\n * @return {string}\n * Replacement for the matched identifier\n */\n\n/**\n * Returns a function to be used as a callback for String.prototype.replace to replace\n * template identifiers\n *\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {replaceCallback}\n * Callback to be used with String.prototype.replace to replace identifiers\n */\n\nvar identifierReplacement = function identifierReplacement(values) {\n return function (match, identifier, format, width) {\n if (match === '$$') {\n // escape sequence\n return '$';\n }\n\n if (typeof values[identifier] === 'undefined') {\n return match;\n }\n\n var value = '' + values[identifier];\n\n if (identifier === 'RepresentationID') {\n // Format tag shall not be present with RepresentationID\n return value;\n }\n\n if (!format) {\n width = 1;\n } else {\n width = parseInt(width, 10);\n }\n\n if (value.length >= width) {\n return value;\n }\n\n return \"\" + new Array(width - value.length + 1).join('0') + value;\n };\n};\n/**\n * Constructs a segment url from a template string\n *\n * @param {string} url\n * Template string to construct url from\n * @param {Obect} values\n * Object containing values that shall be used to replace known identifiers\n * @param {number} values.RepresentationID\n * Value of the Representation@id attribute\n * @param {number} values.Number\n * Number of the corresponding segment\n * @param {number} values.Bandwidth\n * Value of the Representation@bandwidth attribute.\n * @param {number} values.Time\n * Timestamp value of the corresponding segment\n * @return {string}\n * Segment url with identifiers replaced\n */\n\nvar constructTemplateUrl = function constructTemplateUrl(url, values) {\n return url.replace(identifierPattern, identifierReplacement(values));\n};\n/**\n * Generates a list of objects containing timing and duration information about each\n * segment needed to generate segment uris and the complete segment object\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {{number: number, duration: number, time: number, timeline: number}[]}\n * List of Objects with segment timing and duration info\n */\n\nvar parseTemplateInfo = function parseTemplateInfo(attributes, segmentTimeline) {\n if (!attributes.duration && !segmentTimeline) {\n // if neither @duration or SegmentTimeline are present, then there shall be exactly\n // one media segment\n return [{\n number: attributes.startNumber || 1,\n duration: attributes.sourceDuration,\n time: 0,\n timeline: attributes.periodIndex\n }];\n }\n\n if (attributes.duration) {\n return parseByDuration(attributes);\n }\n\n return parseByTimeline(attributes, segmentTimeline);\n};\n/**\n * Generates a list of segments using information provided by the SegmentTemplate element\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object[]}\n * List of segment objects\n */\n\nvar segmentsFromTemplate = function segmentsFromTemplate(attributes, segmentTimeline) {\n var templateValues = {\n RepresentationID: attributes.id,\n Bandwidth: attributes.bandwidth || 0\n };\n var _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {\n sourceURL: '',\n range: ''\n } : _attributes$initializ;\n var mapSegment = urlTypeToSegment({\n baseUrl: attributes.baseUrl,\n source: constructTemplateUrl(initialization.sourceURL, templateValues),\n range: initialization.range\n });\n var segments = parseTemplateInfo(attributes, segmentTimeline);\n return segments.map(function (segment) {\n templateValues.Number = segment.number;\n templateValues.Time = segment.time;\n var uri = constructTemplateUrl(attributes.media || '', templateValues); // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n var presentationTime = // Even if the @t attribute is not specified for the segment, segment.time is\n // calculated in mpd-parser prior to this, so it's assumed to be available.\n attributes.periodStart + (segment.time - presentationTimeOffset) / timescale;\n var map = {\n uri: uri,\n timeline: segment.timeline,\n duration: segment.duration,\n resolvedUri: resolveUrl(attributes.baseUrl || '', uri),\n map: mapSegment,\n number: segment.number,\n presentationTime: presentationTime\n };\n return map;\n });\n};\n\n/**\n * Converts a (of type URLType from the DASH spec 5.3.9.2 Table 14)\n * to an object that matches the output of a segment in videojs/mpd-parser\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object} segmentUrl\n * node to translate into a segment object\n * @return {Object} translated segment object\n */\n\nvar SegmentURLToSegmentObject = function SegmentURLToSegmentObject(attributes, segmentUrl) {\n var baseUrl = attributes.baseUrl,\n _attributes$initializ = attributes.initialization,\n initialization = _attributes$initializ === void 0 ? {} : _attributes$initializ;\n var initSegment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: initialization.sourceURL,\n range: initialization.range\n });\n var segment = urlTypeToSegment({\n baseUrl: baseUrl,\n source: segmentUrl.media,\n range: segmentUrl.mediaRange\n });\n segment.map = initSegment;\n return segment;\n};\n/**\n * Generates a list of segments using information provided by the SegmentList element\n * SegmentList (DASH SPEC Section 5.3.9.3.2) contains a set of nodes. Each\n * node should be translated into segment.\n *\n * @param {Object} attributes\n * Object containing all inherited attributes from parent elements with attribute\n * names as keys\n * @param {Object[]|undefined} segmentTimeline\n * List of objects representing the attributes of each S element contained within\n * the SegmentTimeline element\n * @return {Object.} list of segments\n */\n\n\nvar segmentsFromList = function segmentsFromList(attributes, segmentTimeline) {\n var duration = attributes.duration,\n _attributes$segmentUr = attributes.segmentUrls,\n segmentUrls = _attributes$segmentUr === void 0 ? [] : _attributes$segmentUr,\n periodStart = attributes.periodStart; // Per spec (5.3.9.2.1) no way to determine segment duration OR\n // if both SegmentTimeline and @duration are defined, it is outside of spec.\n\n if (!duration && !segmentTimeline || duration && segmentTimeline) {\n throw new Error(errors.SEGMENT_TIME_UNSPECIFIED);\n }\n\n var segmentUrlMap = segmentUrls.map(function (segmentUrlObject) {\n return SegmentURLToSegmentObject(attributes, segmentUrlObject);\n });\n var segmentTimeInfo;\n\n if (duration) {\n segmentTimeInfo = parseByDuration(attributes);\n }\n\n if (segmentTimeline) {\n segmentTimeInfo = parseByTimeline(attributes, segmentTimeline);\n }\n\n var segments = segmentTimeInfo.map(function (segmentTime, index) {\n if (segmentUrlMap[index]) {\n var segment = segmentUrlMap[index]; // See DASH spec section 5.3.9.2.2\n // - if timescale isn't present on any level, default to 1.\n\n var timescale = attributes.timescale || 1; // - if presentationTimeOffset isn't present on any level, default to 0\n\n var presentationTimeOffset = attributes.presentationTimeOffset || 0;\n segment.timeline = segmentTime.timeline;\n segment.duration = segmentTime.duration;\n segment.number = segmentTime.number;\n segment.presentationTime = periodStart + (segmentTime.time - presentationTimeOffset) / timescale;\n return segment;\n } // Since we're mapping we should get rid of any blank segments (in case\n // the given SegmentTimeline is handling for more elements than we have\n // SegmentURLs for).\n\n }).filter(function (segment) {\n return segment;\n });\n return segments;\n};\n\nvar generateSegments = function generateSegments(_ref) {\n var attributes = _ref.attributes,\n segmentInfo = _ref.segmentInfo;\n var segmentAttributes;\n var segmentsFn;\n\n if (segmentInfo.template) {\n segmentsFn = segmentsFromTemplate;\n segmentAttributes = merge(attributes, segmentInfo.template);\n } else if (segmentInfo.base) {\n segmentsFn = segmentsFromBase;\n segmentAttributes = merge(attributes, segmentInfo.base);\n } else if (segmentInfo.list) {\n segmentsFn = segmentsFromList;\n segmentAttributes = merge(attributes, segmentInfo.list);\n }\n\n var segmentsInfo = {\n attributes: attributes\n };\n\n if (!segmentsFn) {\n return segmentsInfo;\n }\n\n var segments = segmentsFn(segmentAttributes, segmentInfo.segmentTimeline); // The @duration attribute will be used to determin the playlist's targetDuration which\n // must be in seconds. Since we've generated the segment list, we no longer need\n // @duration to be in @timescale units, so we can convert it here.\n\n if (segmentAttributes.duration) {\n var _segmentAttributes = segmentAttributes,\n duration = _segmentAttributes.duration,\n _segmentAttributes$ti = _segmentAttributes.timescale,\n timescale = _segmentAttributes$ti === void 0 ? 1 : _segmentAttributes$ti;\n segmentAttributes.duration = duration / timescale;\n } else if (segments.length) {\n // if there is no @duration attribute, use the largest segment duration as\n // as target duration\n segmentAttributes.duration = segments.reduce(function (max, segment) {\n return Math.max(max, Math.ceil(segment.duration));\n }, 0);\n } else {\n segmentAttributes.duration = 0;\n }\n\n segmentsInfo.attributes = segmentAttributes;\n segmentsInfo.segments = segments; // This is a sidx box without actual segment information\n\n if (segmentInfo.base && segmentAttributes.indexRange) {\n segmentsInfo.sidx = segments[0];\n segmentsInfo.segments = [];\n }\n\n return segmentsInfo;\n};\nvar toPlaylists = function toPlaylists(representations) {\n return representations.map(generateSegments);\n};\n\nvar findChildren = function findChildren(element, name) {\n return from(element.childNodes).filter(function (_ref) {\n var tagName = _ref.tagName;\n return tagName === name;\n });\n};\nvar getContent = function getContent(element) {\n return element.textContent.trim();\n};\n\nvar parseDuration = function parseDuration(str) {\n var SECONDS_IN_YEAR = 365 * 24 * 60 * 60;\n var SECONDS_IN_MONTH = 30 * 24 * 60 * 60;\n var SECONDS_IN_DAY = 24 * 60 * 60;\n var SECONDS_IN_HOUR = 60 * 60;\n var SECONDS_IN_MIN = 60; // P10Y10M10DT10H10M10.1S\n\n var durationRegex = /P(?:(\\d*)Y)?(?:(\\d*)M)?(?:(\\d*)D)?(?:T(?:(\\d*)H)?(?:(\\d*)M)?(?:([\\d.]*)S)?)?/;\n var match = durationRegex.exec(str);\n\n if (!match) {\n return 0;\n }\n\n var _match$slice = match.slice(1),\n year = _match$slice[0],\n month = _match$slice[1],\n day = _match$slice[2],\n hour = _match$slice[3],\n minute = _match$slice[4],\n second = _match$slice[5];\n\n return parseFloat(year || 0) * SECONDS_IN_YEAR + parseFloat(month || 0) * SECONDS_IN_MONTH + parseFloat(day || 0) * SECONDS_IN_DAY + parseFloat(hour || 0) * SECONDS_IN_HOUR + parseFloat(minute || 0) * SECONDS_IN_MIN + parseFloat(second || 0);\n};\nvar parseDate = function parseDate(str) {\n // Date format without timezone according to ISO 8601\n // YYY-MM-DDThh:mm:ss.ssssss\n var dateRegex = /^\\d+-\\d+-\\d+T\\d+:\\d+:\\d+(\\.\\d+)?$/; // If the date string does not specifiy a timezone, we must specifiy UTC. This is\n // expressed by ending with 'Z'\n\n if (dateRegex.test(str)) {\n str += 'Z';\n }\n\n return Date.parse(str);\n};\n\nvar parsers = {\n /**\n * Specifies the duration of the entire Media Presentation. Format is a duration string\n * as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n mediaPresentationDuration: function mediaPresentationDuration(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the Segment availability start time for all Segments referred to in this\n * MPD. For a dynamic manifest, it specifies the anchor for the earliest availability\n * time. Format is a date string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The date as seconds from unix epoch\n */\n availabilityStartTime: function availabilityStartTime(value) {\n return parseDate(value) / 1000;\n },\n\n /**\n * Specifies the smallest period between potential changes to the MPD. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n minimumUpdatePeriod: function minimumUpdatePeriod(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the suggested presentation delay. Format is a\n * duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n suggestedPresentationDelay: function suggestedPresentationDelay(value) {\n return parseDuration(value);\n },\n\n /**\n * specifices the type of mpd. Can be either \"static\" or \"dynamic\"\n *\n * @param {string} value\n * value of attribute as a string\n *\n * @return {string}\n * The type as a string\n */\n type: function type(value) {\n return value;\n },\n\n /**\n * Specifies the duration of the smallest time shifting buffer for any Representation\n * in the MPD. Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n timeShiftBufferDepth: function timeShiftBufferDepth(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the PeriodStart time of the Period relative to the availabilityStarttime.\n * Format is a duration string as specified in ISO 8601\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The duration in seconds\n */\n start: function start(value) {\n return parseDuration(value);\n },\n\n /**\n * Specifies the width of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed width\n */\n width: function width(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the height of the visual presentation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed height\n */\n height: function height(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the bitrate of the representation\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed bandwidth\n */\n bandwidth: function bandwidth(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the number of the first Media Segment in this Representation in the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n startNumber: function startNumber(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the timescale in units per seconds\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed timescale\n */\n timescale: function timescale(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the presentationTimeOffset.\n *\n * @param {string} value\n * value of the attribute as a string\n *\n * @return {number}\n * The parsed presentationTimeOffset\n */\n presentationTimeOffset: function presentationTimeOffset(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the constant approximate Segment duration\n * NOTE: The element also contains an @duration attribute. This duration\n * specifies the duration of the Period. This attribute is currently not\n * supported by the rest of the parser, however we still check for it to prevent\n * errors.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n duration: function duration(value) {\n var parsedValue = parseInt(value, 10);\n\n if (isNaN(parsedValue)) {\n return parseDuration(value);\n }\n\n return parsedValue;\n },\n\n /**\n * Specifies the Segment duration, in units of the value of the @timescale.\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed duration\n */\n d: function d(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the MPD start time, in @timescale units, the first Segment in the series\n * starts relative to the beginning of the Period\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed time\n */\n t: function t(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Specifies the repeat count of the number of following contiguous Segments with the\n * same duration expressed by the value of @d\n *\n * @param {string} value\n * value of attribute as a string\n * @return {number}\n * The parsed number\n */\n r: function r(value) {\n return parseInt(value, 10);\n },\n\n /**\n * Default parser for all other attributes. Acts as a no-op and just returns the value\n * as a string\n *\n * @param {string} value\n * value of attribute as a string\n * @return {string}\n * Unparsed value\n */\n DEFAULT: function DEFAULT(value) {\n return value;\n }\n};\n/**\n * Gets all the attributes and values of the provided node, parses attributes with known\n * types, and returns an object with attribute names mapped to values.\n *\n * @param {Node} el\n * The node to parse attributes from\n * @return {Object}\n * Object with all attributes of el parsed\n */\n\nvar parseAttributes = function parseAttributes(el) {\n if (!(el && el.attributes)) {\n return {};\n }\n\n return from(el.attributes).reduce(function (a, e) {\n var parseFn = parsers[e.name] || parsers.DEFAULT;\n a[e.name] = parseFn(e.value);\n return a;\n }, {});\n};\n\nvar keySystemsMap = {\n 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',\n 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',\n 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',\n 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime'\n};\n/**\n * Builds a list of urls that is the product of the reference urls and BaseURL values\n *\n * @param {string[]} referenceUrls\n * List of reference urls to resolve to\n * @param {Node[]} baseUrlElements\n * List of BaseURL nodes from the mpd\n * @return {string[]}\n * List of resolved urls\n */\n\nvar buildBaseUrls = function buildBaseUrls(referenceUrls, baseUrlElements) {\n if (!baseUrlElements.length) {\n return referenceUrls;\n }\n\n return flatten(referenceUrls.map(function (reference) {\n return baseUrlElements.map(function (baseUrlElement) {\n return resolveUrl(reference, getContent(baseUrlElement));\n });\n }));\n};\n/**\n * Contains all Segment information for its containing AdaptationSet\n *\n * @typedef {Object} SegmentInformation\n * @property {Object|undefined} template\n * Contains the attributes for the SegmentTemplate node\n * @property {Object[]|undefined} segmentTimeline\n * Contains a list of atrributes for each S node within the SegmentTimeline node\n * @property {Object|undefined} list\n * Contains the attributes for the SegmentList node\n * @property {Object|undefined} base\n * Contains the attributes for the SegmentBase node\n */\n\n/**\n * Returns all available Segment information contained within the AdaptationSet node\n *\n * @param {Node} adaptationSet\n * The AdaptationSet node to get Segment information from\n * @return {SegmentInformation}\n * The Segment information contained within the provided AdaptationSet\n */\n\nvar getSegmentInformation = function getSegmentInformation(adaptationSet) {\n var segmentTemplate = findChildren(adaptationSet, 'SegmentTemplate')[0];\n var segmentList = findChildren(adaptationSet, 'SegmentList')[0];\n var segmentUrls = segmentList && findChildren(segmentList, 'SegmentURL').map(function (s) {\n return merge({\n tag: 'SegmentURL'\n }, parseAttributes(s));\n });\n var segmentBase = findChildren(adaptationSet, 'SegmentBase')[0];\n var segmentTimelineParentNode = segmentList || segmentTemplate;\n var segmentTimeline = segmentTimelineParentNode && findChildren(segmentTimelineParentNode, 'SegmentTimeline')[0];\n var segmentInitializationParentNode = segmentList || segmentBase || segmentTemplate;\n var segmentInitialization = segmentInitializationParentNode && findChildren(segmentInitializationParentNode, 'Initialization')[0]; // SegmentTemplate is handled slightly differently, since it can have both\n // @initialization and an node. @initialization can be templated,\n // while the node can have a url and range specified. If the has\n // both @initialization and an subelement we opt to override with\n // the node, as this interaction is not defined in the spec.\n\n var template = segmentTemplate && parseAttributes(segmentTemplate);\n\n if (template && segmentInitialization) {\n template.initialization = segmentInitialization && parseAttributes(segmentInitialization);\n } else if (template && template.initialization) {\n // If it is @initialization we convert it to an object since this is the format that\n // later functions will rely on for the initialization segment. This is only valid\n // for \n template.initialization = {\n sourceURL: template.initialization\n };\n }\n\n var segmentInfo = {\n template: template,\n segmentTimeline: segmentTimeline && findChildren(segmentTimeline, 'S').map(function (s) {\n return parseAttributes(s);\n }),\n list: segmentList && merge(parseAttributes(segmentList), {\n segmentUrls: segmentUrls,\n initialization: parseAttributes(segmentInitialization)\n }),\n base: segmentBase && merge(parseAttributes(segmentBase), {\n initialization: parseAttributes(segmentInitialization)\n })\n };\n Object.keys(segmentInfo).forEach(function (key) {\n if (!segmentInfo[key]) {\n delete segmentInfo[key];\n }\n });\n return segmentInfo;\n};\n/**\n * Contains Segment information and attributes needed to construct a Playlist object\n * from a Representation\n *\n * @typedef {Object} RepresentationInformation\n * @property {SegmentInformation} segmentInfo\n * Segment information for this Representation\n * @property {Object} attributes\n * Inherited attributes for this Representation\n */\n\n/**\n * Maps a Representation node to an object containing Segment information and attributes\n *\n * @name inheritBaseUrlsCallback\n * @function\n * @param {Node} representation\n * Representation node from the mpd\n * @return {RepresentationInformation}\n * Representation information needed to construct a Playlist object\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Representation nodes to\n * Segment information and attributes using inherited BaseURL nodes.\n *\n * @param {Object} adaptationSetAttributes\n * Contains attributes inherited by the AdaptationSet\n * @param {string[]} adaptationSetBaseUrls\n * Contains list of resolved base urls inherited by the AdaptationSet\n * @param {SegmentInformation} adaptationSetSegmentInfo\n * Contains Segment information for the AdaptationSet\n * @return {inheritBaseUrlsCallback}\n * Callback map function\n */\n\nvar inheritBaseUrls = function inheritBaseUrls(adaptationSetAttributes, adaptationSetBaseUrls, adaptationSetSegmentInfo) {\n return function (representation) {\n var repBaseUrlElements = findChildren(representation, 'BaseURL');\n var repBaseUrls = buildBaseUrls(adaptationSetBaseUrls, repBaseUrlElements);\n var attributes = merge(adaptationSetAttributes, parseAttributes(representation));\n var representationSegmentInfo = getSegmentInformation(representation);\n return repBaseUrls.map(function (baseUrl) {\n return {\n segmentInfo: merge(adaptationSetSegmentInfo, representationSegmentInfo),\n attributes: merge(attributes, {\n baseUrl: baseUrl\n })\n };\n });\n };\n};\n/**\n * Tranforms a series of content protection nodes to\n * an object containing pssh data by key system\n *\n * @param {Node[]} contentProtectionNodes\n * Content protection nodes\n * @return {Object}\n * Object containing pssh data by key system\n */\n\nvar generateKeySystemInformation = function generateKeySystemInformation(contentProtectionNodes) {\n return contentProtectionNodes.reduce(function (acc, node) {\n var attributes = parseAttributes(node);\n var keySystem = keySystemsMap[attributes.schemeIdUri];\n\n if (keySystem) {\n acc[keySystem] = {\n attributes: attributes\n };\n var psshNode = findChildren(node, 'cenc:pssh')[0];\n\n if (psshNode) {\n var pssh = getContent(psshNode);\n var psshBuffer = pssh && decodeB64ToUint8Array(pssh);\n acc[keySystem].pssh = psshBuffer;\n }\n }\n\n return acc;\n }, {});\n}; // defined in ANSI_SCTE 214-1 2016\n\n\nvar parseCaptionServiceMetadata = function parseCaptionServiceMetadata(service) {\n // 608 captions\n if (service.schemeIdUri === 'urn:scte:dash:cc:cea-608:2015') {\n var values = service.value.split(';');\n return values.map(function (value) {\n var channel;\n var language; // default language to value\n\n language = value;\n\n if (/^CC\\d=/.test(value)) {\n var _value$split = value.split('=');\n\n channel = _value$split[0];\n language = _value$split[1];\n } else if (/^CC\\d$/.test(value)) {\n channel = value;\n }\n\n return {\n channel: channel,\n language: language\n };\n });\n } else if (service.schemeIdUri === 'urn:scte:dash:cc:cea-708:2015') {\n var _values = service.value.split(';');\n\n return _values.map(function (value) {\n var flags = {\n // service or channel number 1-63\n 'channel': undefined,\n // language is a 3ALPHA per ISO 639.2/B\n // field is required\n 'language': undefined,\n // BIT 1/0 or ?\n // default value is 1, meaning 16:9 aspect ratio, 0 is 4:3, ? is unknown\n 'aspectRatio': 1,\n // BIT 1/0\n // easy reader flag indicated the text is tailed to the needs of beginning readers\n // default 0, or off\n 'easyReader': 0,\n // BIT 1/0\n // If 3d metadata is present (CEA-708.1) then 1\n // default 0\n '3D': 0\n };\n\n if (/=/.test(value)) {\n var _value$split2 = value.split('='),\n channel = _value$split2[0],\n _value$split2$ = _value$split2[1],\n opts = _value$split2$ === void 0 ? '' : _value$split2$;\n\n flags.channel = channel;\n flags.language = value;\n opts.split(',').forEach(function (opt) {\n var _opt$split = opt.split(':'),\n name = _opt$split[0],\n val = _opt$split[1];\n\n if (name === 'lang') {\n flags.language = val; // er for easyReadery\n } else if (name === 'er') {\n flags.easyReader = Number(val); // war for wide aspect ratio\n } else if (name === 'war') {\n flags.aspectRatio = Number(val);\n } else if (name === '3D') {\n flags['3D'] = Number(val);\n }\n });\n } else {\n flags.language = value;\n }\n\n if (flags.channel) {\n flags.channel = 'SERVICE' + flags.channel;\n }\n\n return flags;\n });\n }\n};\n/**\n * Maps an AdaptationSet node to a list of Representation information objects\n *\n * @name toRepresentationsCallback\n * @function\n * @param {Node} adaptationSet\n * AdaptationSet node from the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping AdaptationSet nodes to a list of\n * Representation information objects\n *\n * @param {Object} periodAttributes\n * Contains attributes inherited by the Period\n * @param {string[]} periodBaseUrls\n * Contains list of resolved base urls inherited by the Period\n * @param {string[]} periodSegmentInfo\n * Contains Segment Information at the period level\n * @return {toRepresentationsCallback}\n * Callback map function\n */\n\nvar toRepresentations = function toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo) {\n return function (adaptationSet) {\n var adaptationSetAttributes = parseAttributes(adaptationSet);\n var adaptationSetBaseUrls = buildBaseUrls(periodBaseUrls, findChildren(adaptationSet, 'BaseURL'));\n var role = findChildren(adaptationSet, 'Role')[0];\n var roleAttributes = {\n role: parseAttributes(role)\n };\n var attrs = merge(periodAttributes, adaptationSetAttributes, roleAttributes);\n var accessibility = findChildren(adaptationSet, 'Accessibility')[0];\n var captionServices = parseCaptionServiceMetadata(parseAttributes(accessibility));\n\n if (captionServices) {\n attrs = merge(attrs, {\n captionServices: captionServices\n });\n }\n\n var label = findChildren(adaptationSet, 'Label')[0];\n\n if (label && label.childNodes.length) {\n var labelVal = label.childNodes[0].nodeValue.trim();\n attrs = merge(attrs, {\n label: labelVal\n });\n }\n\n var contentProtection = generateKeySystemInformation(findChildren(adaptationSet, 'ContentProtection'));\n\n if (Object.keys(contentProtection).length) {\n attrs = merge(attrs, {\n contentProtection: contentProtection\n });\n }\n\n var segmentInfo = getSegmentInformation(adaptationSet);\n var representations = findChildren(adaptationSet, 'Representation');\n var adaptationSetSegmentInfo = merge(periodSegmentInfo, segmentInfo);\n return flatten(representations.map(inheritBaseUrls(attrs, adaptationSetBaseUrls, adaptationSetSegmentInfo)));\n };\n};\n/**\n * Contains all period information for mapping nodes onto adaptation sets.\n *\n * @typedef {Object} PeriodInformation\n * @property {Node} period.node\n * Period node from the mpd\n * @property {Object} period.attributes\n * Parsed period attributes from node plus any added\n */\n\n/**\n * Maps a PeriodInformation object to a list of Representation information objects for all\n * AdaptationSet nodes contained within the Period.\n *\n * @name toAdaptationSetsCallback\n * @function\n * @param {PeriodInformation} period\n * Period object containing necessary period information\n * @param {number} periodIndex\n * Index of the Period within the mpd\n * @return {RepresentationInformation[]}\n * List of objects containing Representaion information\n */\n\n/**\n * Returns a callback for Array.prototype.map for mapping Period nodes to a list of\n * Representation information objects\n *\n * @param {Object} mpdAttributes\n * Contains attributes inherited by the mpd\n * @param {string[]} mpdBaseUrls\n * Contains list of resolved base urls inherited by the mpd\n * @return {toAdaptationSetsCallback}\n * Callback map function\n */\n\nvar toAdaptationSets = function toAdaptationSets(mpdAttributes, mpdBaseUrls) {\n return function (period, index) {\n var periodBaseUrls = buildBaseUrls(mpdBaseUrls, findChildren(period.node, 'BaseURL'));\n var parsedPeriodId = parseInt(period.attributes.id, 10); // fallback to mapping index if Period@id is not a number\n\n var periodIndex = window.isNaN(parsedPeriodId) ? index : parsedPeriodId;\n var periodAttributes = merge(mpdAttributes, {\n periodIndex: periodIndex,\n periodStart: period.attributes.start\n });\n\n if (typeof period.attributes.duration === 'number') {\n periodAttributes.periodDuration = period.attributes.duration;\n }\n\n var adaptationSets = findChildren(period.node, 'AdaptationSet');\n var periodSegmentInfo = getSegmentInformation(period.node);\n return flatten(adaptationSets.map(toRepresentations(periodAttributes, periodBaseUrls, periodSegmentInfo)));\n };\n};\n/**\n * Gets Period@start property for a given period.\n *\n * @param {Object} options\n * Options object\n * @param {Object} options.attributes\n * Period attributes\n * @param {Object} [options.priorPeriodAttributes]\n * Prior period attributes (if prior period is available)\n * @param {string} options.mpdType\n * The MPD@type these periods came from\n * @return {number|null}\n * The period start, or null if it's an early available period or error\n */\n\nvar getPeriodStart = function getPeriodStart(_ref) {\n var attributes = _ref.attributes,\n priorPeriodAttributes = _ref.priorPeriodAttributes,\n mpdType = _ref.mpdType;\n\n // Summary of period start time calculation from DASH spec section 5.3.2.1\n //\n // A period's start is the first period's start + time elapsed after playing all\n // prior periods to this one. Periods continue one after the other in time (without\n // gaps) until the end of the presentation.\n //\n // The value of Period@start should be:\n // 1. if Period@start is present: value of Period@start\n // 2. if previous period exists and it has @duration: previous Period@start +\n // previous Period@duration\n // 3. if this is first period and MPD@type is 'static': 0\n // 4. in all other cases, consider the period an \"early available period\" (note: not\n // currently supported)\n // (1)\n if (typeof attributes.start === 'number') {\n return attributes.start;\n } // (2)\n\n\n if (priorPeriodAttributes && typeof priorPeriodAttributes.start === 'number' && typeof priorPeriodAttributes.duration === 'number') {\n return priorPeriodAttributes.start + priorPeriodAttributes.duration;\n } // (3)\n\n\n if (!priorPeriodAttributes && mpdType === 'static') {\n return 0;\n } // (4)\n // There is currently no logic for calculating the Period@start value if there is\n // no Period@start or prior Period@start and Period@duration available. This is not made\n // explicit by the DASH interop guidelines or the DASH spec, however, since there's\n // nothing about any other resolution strategies, it's implied. Thus, this case should\n // be considered an early available period, or error, and null should suffice for both\n // of those cases.\n\n\n return null;\n};\n/**\n * Traverses the mpd xml tree to generate a list of Representation information objects\n * that have inherited attributes from parent nodes\n *\n * @param {Node} mpd\n * The root node of the mpd\n * @param {Object} options\n * Available options for inheritAttributes\n * @param {string} options.manifestUri\n * The uri source of the mpd\n * @param {number} options.NOW\n * Current time per DASH IOP. Default is current time in ms since epoch\n * @param {number} options.clientOffset\n * Client time difference from NOW (in milliseconds)\n * @return {RepresentationInformation[]}\n * List of objects containing Representation information\n */\n\nvar inheritAttributes = function inheritAttributes(mpd, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$manifestUri = _options.manifestUri,\n manifestUri = _options$manifestUri === void 0 ? '' : _options$manifestUri,\n _options$NOW = _options.NOW,\n NOW = _options$NOW === void 0 ? Date.now() : _options$NOW,\n _options$clientOffset = _options.clientOffset,\n clientOffset = _options$clientOffset === void 0 ? 0 : _options$clientOffset;\n var periodNodes = findChildren(mpd, 'Period');\n\n if (!periodNodes.length) {\n throw new Error(errors.INVALID_NUMBER_OF_PERIOD);\n }\n\n var locations = findChildren(mpd, 'Location');\n var mpdAttributes = parseAttributes(mpd);\n var mpdBaseUrls = buildBaseUrls([manifestUri], findChildren(mpd, 'BaseURL')); // See DASH spec section 5.3.1.2, Semantics of MPD element. Default type to 'static'.\n\n mpdAttributes.type = mpdAttributes.type || 'static';\n mpdAttributes.sourceDuration = mpdAttributes.mediaPresentationDuration || 0;\n mpdAttributes.NOW = NOW;\n mpdAttributes.clientOffset = clientOffset;\n\n if (locations.length) {\n mpdAttributes.locations = locations.map(getContent);\n }\n\n var periods = []; // Since toAdaptationSets acts on individual periods right now, the simplest approach to\n // adding properties that require looking at prior periods is to parse attributes and add\n // missing ones before toAdaptationSets is called. If more such properties are added, it\n // may be better to refactor toAdaptationSets.\n\n periodNodes.forEach(function (node, index) {\n var attributes = parseAttributes(node); // Use the last modified prior period, as it may contain added information necessary\n // for this period.\n\n var priorPeriod = periods[index - 1];\n attributes.start = getPeriodStart({\n attributes: attributes,\n priorPeriodAttributes: priorPeriod ? priorPeriod.attributes : null,\n mpdType: mpdAttributes.type\n });\n periods.push({\n node: node,\n attributes: attributes\n });\n });\n return {\n locations: mpdAttributes.locations,\n representationInfo: flatten(periods.map(toAdaptationSets(mpdAttributes, mpdBaseUrls)))\n };\n};\n\nvar stringToMpdXml = function stringToMpdXml(manifestString) {\n if (manifestString === '') {\n throw new Error(errors.DASH_EMPTY_MANIFEST);\n }\n\n var parser = new DOMParser();\n var xml;\n var mpd;\n\n try {\n xml = parser.parseFromString(manifestString, 'application/xml');\n mpd = xml && xml.documentElement.tagName === 'MPD' ? xml.documentElement : null;\n } catch (e) {// ie 11 throwsw on invalid xml\n }\n\n if (!mpd || mpd && mpd.getElementsByTagName('parsererror').length > 0) {\n throw new Error(errors.DASH_INVALID_XML);\n }\n\n return mpd;\n};\n\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} mpd\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\nvar parseUTCTimingScheme = function parseUTCTimingScheme(mpd) {\n var UTCTimingNode = findChildren(mpd, 'UTCTiming')[0];\n\n if (!UTCTimingNode) {\n return null;\n }\n\n var attributes = parseAttributes(UTCTimingNode);\n\n switch (attributes.schemeIdUri) {\n case 'urn:mpeg:dash:utc:http-head:2014':\n case 'urn:mpeg:dash:utc:http-head:2012':\n attributes.method = 'HEAD';\n break;\n\n case 'urn:mpeg:dash:utc:http-xsdate:2014':\n case 'urn:mpeg:dash:utc:http-iso:2014':\n case 'urn:mpeg:dash:utc:http-xsdate:2012':\n case 'urn:mpeg:dash:utc:http-iso:2012':\n attributes.method = 'GET';\n break;\n\n case 'urn:mpeg:dash:utc:direct:2014':\n case 'urn:mpeg:dash:utc:direct:2012':\n attributes.method = 'DIRECT';\n attributes.value = Date.parse(attributes.value);\n break;\n\n case 'urn:mpeg:dash:utc:http-ntp:2014':\n case 'urn:mpeg:dash:utc:ntp:2014':\n case 'urn:mpeg:dash:utc:sntp:2014':\n default:\n throw new Error(errors.UNSUPPORTED_UTC_TIMING_SCHEME);\n }\n\n return attributes;\n};\n\nvar VERSION = version;\n\nvar parse = function parse(manifestString, options) {\n if (options === void 0) {\n options = {};\n }\n\n var parsedManifestInfo = inheritAttributes(stringToMpdXml(manifestString), options);\n var playlists = toPlaylists(parsedManifestInfo.representationInfo);\n return toM3u8(playlists, parsedManifestInfo.locations, options.sidxMapping);\n};\n/**\n * Parses the manifest for a UTCTiming node, returning the nodes attributes if found\n *\n * @param {string} manifestString\n * XML string of the MPD manifest\n * @return {Object|null}\n * Attributes of UTCTiming node specified in the manifest. Null if none found\n */\n\n\nvar parseUTCTiming = function parseUTCTiming(manifestString) {\n return parseUTCTimingScheme(stringToMpdXml(manifestString));\n};\n\nexport { VERSION, addSidxSegmentsToPlaylist, generateSidxKey, inheritAttributes, parse, parseUTCTiming, stringToMpdXml, toM3u8, toPlaylists };\n","import window from 'global/window'; // const log2 = Math.log2 ? Math.log2 : (x) => (Math.log(x) / Math.log(2));\n\nvar repeat = function repeat(str, len) {\n var acc = '';\n\n while (len--) {\n acc += str;\n }\n\n return acc;\n}; // count the number of bits it would take to represent a number\n// we used to do this with log2 but BigInt does not support builtin math\n// Math.ceil(log2(x));\n\n\nexport var countBits = function countBits(x) {\n return x.toString(2).length;\n}; // count the number of whole bytes it would take to represent a number\n\nexport var countBytes = function countBytes(x) {\n return Math.ceil(countBits(x) / 8);\n};\nexport var padStart = function padStart(b, len, str) {\n if (str === void 0) {\n str = ' ';\n }\n\n return (repeat(str, len) + b.toString()).slice(-len);\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return ArrayBuffer.isView(obj);\n};\nexport var toUint8 = function toUint8(bytes) {\n if (bytes instanceof Uint8Array) {\n return bytes;\n }\n\n if (!Array.isArray(bytes) && !isTypedArray(bytes) && !(bytes instanceof ArrayBuffer)) {\n // any non-number or NaN leads to empty uint8array\n // eslint-disable-next-line\n if (typeof bytes !== 'number' || typeof bytes === 'number' && bytes !== bytes) {\n bytes = 0;\n } else {\n bytes = [bytes];\n }\n }\n\n return new Uint8Array(bytes && bytes.buffer || bytes, bytes && bytes.byteOffset || 0, bytes && bytes.byteLength || 0);\n};\nexport var toHexString = function toHexString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(16), 2, '0');\n }\n\n return str;\n};\nexport var toBinaryString = function toBinaryString(bytes) {\n bytes = toUint8(bytes);\n var str = '';\n\n for (var i = 0; i < bytes.length; i++) {\n str += padStart(bytes[i].toString(2), 8, '0');\n }\n\n return str;\n};\nvar BigInt = window.BigInt || Number;\nvar BYTE_TABLE = [BigInt('0x1'), BigInt('0x100'), BigInt('0x10000'), BigInt('0x1000000'), BigInt('0x100000000'), BigInt('0x10000000000'), BigInt('0x1000000000000'), BigInt('0x100000000000000'), BigInt('0x10000000000000000')];\nexport var ENDIANNESS = function () {\n var a = new Uint16Array([0xFFCC]);\n var b = new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n\n if (b[0] === 0xFF) {\n return 'big';\n }\n\n if (b[0] === 0xCC) {\n return 'little';\n }\n\n return 'unknown';\n}();\nexport var IS_BIG_ENDIAN = ENDIANNESS === 'big';\nexport var IS_LITTLE_ENDIAN = ENDIANNESS === 'little';\nexport var bytesToNumber = function bytesToNumber(bytes, _temp) {\n var _ref = _temp === void 0 ? {} : _temp,\n _ref$signed = _ref.signed,\n signed = _ref$signed === void 0 ? false : _ref$signed,\n _ref$le = _ref.le,\n le = _ref$le === void 0 ? false : _ref$le;\n\n bytes = toUint8(bytes);\n var fn = le ? 'reduce' : 'reduceRight';\n var obj = bytes[fn] ? bytes[fn] : Array.prototype[fn];\n var number = obj.call(bytes, function (total, byte, i) {\n var exponent = le ? i : Math.abs(i + 1 - bytes.length);\n return total + BigInt(byte) * BYTE_TABLE[exponent];\n }, BigInt(0));\n\n if (signed) {\n var max = BYTE_TABLE[bytes.length] / BigInt(2) - BigInt(1);\n number = BigInt(number);\n\n if (number > max) {\n number -= max;\n number -= max;\n number -= BigInt(2);\n }\n }\n\n return Number(number);\n};\nexport var numberToBytes = function numberToBytes(number, _temp2) {\n var _ref2 = _temp2 === void 0 ? {} : _temp2,\n _ref2$le = _ref2.le,\n le = _ref2$le === void 0 ? false : _ref2$le;\n\n // eslint-disable-next-line\n if (typeof number !== 'bigint' && typeof number !== 'number' || typeof number === 'number' && number !== number) {\n number = 0;\n }\n\n number = BigInt(number);\n var byteCount = countBytes(number);\n var bytes = new Uint8Array(new ArrayBuffer(byteCount));\n\n for (var i = 0; i < byteCount; i++) {\n var byteIndex = le ? i : Math.abs(i + 1 - bytes.length);\n bytes[byteIndex] = Number(number / BYTE_TABLE[i] & BigInt(0xFF));\n\n if (number < 0) {\n bytes[byteIndex] = Math.abs(~bytes[byteIndex]);\n bytes[byteIndex] -= i === 0 ? 1 : 2;\n }\n }\n\n return bytes;\n};\nexport var bytesToString = function bytesToString(bytes) {\n if (!bytes) {\n return '';\n } // TODO: should toUint8 handle cases where we only have 8 bytes\n // but report more since this is a Uint16+ Array?\n\n\n bytes = Array.prototype.slice.call(bytes);\n var string = String.fromCharCode.apply(null, toUint8(bytes));\n\n try {\n return decodeURIComponent(escape(string));\n } catch (e) {// if decodeURIComponent/escape fails, we are dealing with partial\n // or full non string data. Just return the potentially garbled string.\n }\n\n return string;\n};\nexport var stringToBytes = function stringToBytes(string, stringIsBytes) {\n if (typeof string !== 'string' && string && typeof string.toString === 'function') {\n string = string.toString();\n }\n\n if (typeof string !== 'string') {\n return new Uint8Array();\n } // If the string already is bytes, we don't have to do this\n // otherwise we do this so that we split multi length characters\n // into individual bytes\n\n\n if (!stringIsBytes) {\n string = unescape(encodeURIComponent(string));\n }\n\n var view = new Uint8Array(string.length);\n\n for (var i = 0; i < string.length; i++) {\n view[i] = string.charCodeAt(i);\n }\n\n return view;\n};\nexport var concatTypedArrays = function concatTypedArrays() {\n for (var _len = arguments.length, buffers = new Array(_len), _key = 0; _key < _len; _key++) {\n buffers[_key] = arguments[_key];\n }\n\n buffers = buffers.filter(function (b) {\n return b && (b.byteLength || b.length) && typeof b !== 'string';\n });\n\n if (buffers.length <= 1) {\n // for 0 length we will return empty uint8\n // for 1 length we return the first uint8\n return toUint8(buffers[0]);\n }\n\n var totalLen = buffers.reduce(function (total, buf, i) {\n return total + (buf.byteLength || buf.length);\n }, 0);\n var tempBuffer = new Uint8Array(totalLen);\n var offset = 0;\n buffers.forEach(function (buf) {\n buf = toUint8(buf);\n tempBuffer.set(buf, offset);\n offset += buf.byteLength;\n });\n return tempBuffer;\n};\n/**\n * Check if the bytes \"b\" are contained within bytes \"a\".\n *\n * @param {Uint8Array|Array} a\n * Bytes to check in\n *\n * @param {Uint8Array|Array} b\n * Bytes to check for\n *\n * @param {Object} options\n * options\n *\n * @param {Array|Uint8Array} [offset=0]\n * offset to use when looking at bytes in a\n *\n * @param {Array|Uint8Array} [mask=[]]\n * mask to use on bytes before comparison.\n *\n * @return {boolean}\n * If all bytes in b are inside of a, taking into account\n * bit masks.\n */\n\nexport var bytesMatch = function bytesMatch(a, b, _temp3) {\n var _ref3 = _temp3 === void 0 ? {} : _temp3,\n _ref3$offset = _ref3.offset,\n offset = _ref3$offset === void 0 ? 0 : _ref3$offset,\n _ref3$mask = _ref3.mask,\n mask = _ref3$mask === void 0 ? [] : _ref3$mask;\n\n a = toUint8(a);\n b = toUint8(b); // ie 11 does not support uint8 every\n\n var fn = b.every ? b.every : Array.prototype.every;\n return b.length && a.length - offset >= b.length && // ie 11 doesn't support every on uin8\n fn.call(b, function (bByte, i) {\n var aByte = mask[i] ? mask[i] & a[offset + i] : a[offset + i];\n return bByte === aByte;\n });\n};\nexport var sliceBytes = function sliceBytes(src, start, end) {\n if (Uint8Array.prototype.slice) {\n return Uint8Array.prototype.slice.call(src, start, end);\n }\n\n return new Uint8Array(Array.prototype.slice.call(src, start, end));\n};\nexport var reverseBytes = function reverseBytes(src) {\n if (src.reverse) {\n return src.reverse();\n }\n\n return Array.prototype.reverse.call(src);\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nvar ID3 = toUint8([0x49, 0x44, 0x33]);\nexport var getId3Size = function getId3Size(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n var flags = bytes[offset + 5];\n var returnSize = bytes[offset + 6] << 21 | bytes[offset + 7] << 14 | bytes[offset + 8] << 7 | bytes[offset + 9];\n var footerPresent = (flags & 16) >> 4;\n\n if (footerPresent) {\n return returnSize + 20;\n }\n\n return returnSize + 10;\n};\nexport var getId3Offset = function getId3Offset(bytes, offset) {\n if (offset === void 0) {\n offset = 0;\n }\n\n bytes = toUint8(bytes);\n\n if (bytes.length - offset < 10 || !bytesMatch(bytes, ID3, {\n offset: offset\n })) {\n return offset;\n }\n\n offset += getId3Size(bytes, offset); // recursive check for id3 tags as some files\n // have multiple ID3 tag sections even though\n // they should not.\n\n return getId3Offset(bytes, offset);\n};","export var OPUS_HEAD = new Uint8Array([// O, p, u, s\n0x4f, 0x70, 0x75, 0x73, // H, e, a, d\n0x48, 0x65, 0x61, 0x64]); // https://wiki.xiph.org/OggOpus\n// https://vfrmaniac.fushizen.eu/contents/opus_in_isobmff.html\n// https://opus-codec.org/docs/opusfile_api-0.7/structOpusHead.html\n\nexport var parseOpusHead = function parseOpusHead(bytes) {\n var view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n var version = view.getUint8(0); // version 0, from mp4, does not use littleEndian.\n\n var littleEndian = version !== 0;\n var config = {\n version: version,\n channels: view.getUint8(1),\n preSkip: view.getUint16(2, littleEndian),\n sampleRate: view.getUint32(4, littleEndian),\n outputGain: view.getUint16(8, littleEndian),\n channelMappingFamily: view.getUint8(10)\n };\n\n if (config.channelMappingFamily > 0 && bytes.length > 10) {\n config.streamCount = view.getUint8(11);\n config.twoChannelStreamCount = view.getUint8(12);\n config.channelMapping = [];\n\n for (var c = 0; c < config.channels; c++) {\n config.channelMapping.push(view.getUint8(13 + c));\n }\n }\n\n return config;\n};\nexport var setOpusHead = function setOpusHead(config) {\n var size = config.channelMappingFamily <= 0 ? 11 : 12 + config.channels;\n var view = new DataView(new ArrayBuffer(size));\n var littleEndian = config.version !== 0;\n view.setUint8(0, config.version);\n view.setUint8(1, config.channels);\n view.setUint16(2, config.preSkip, littleEndian);\n view.setUint32(4, config.sampleRate, littleEndian);\n view.setUint16(8, config.outputGain, littleEndian);\n view.setUint8(10, config.channelMappingFamily);\n\n if (config.channelMappingFamily > 0) {\n view.setUint8(11, config.streamCount);\n config.channelMapping.foreach(function (cm, i) {\n view.setUint8(12 + i, cm);\n });\n }\n\n return new Uint8Array(view.buffer);\n};","import { toUint8, bytesToNumber, bytesMatch, bytesToString, numberToBytes, padStart } from './byte-helpers';\nimport { getAvcCodec, getHvcCodec, getAv1Codec } from './codec-helpers.js'; // relevant specs for this parser:\n// https://matroska-org.github.io/libebml/specs.html\n// https://www.matroska.org/technical/elements.html\n// https://www.webmproject.org/docs/container/\n\nexport var EBML_TAGS = {\n EBML: toUint8([0x1A, 0x45, 0xDF, 0xA3]),\n DocType: toUint8([0x42, 0x82]),\n Segment: toUint8([0x18, 0x53, 0x80, 0x67]),\n SegmentInfo: toUint8([0x15, 0x49, 0xA9, 0x66]),\n Tracks: toUint8([0x16, 0x54, 0xAE, 0x6B]),\n Track: toUint8([0xAE]),\n TrackNumber: toUint8([0xd7]),\n DefaultDuration: toUint8([0x23, 0xe3, 0x83]),\n TrackEntry: toUint8([0xAE]),\n TrackType: toUint8([0x83]),\n FlagDefault: toUint8([0x88]),\n CodecID: toUint8([0x86]),\n CodecPrivate: toUint8([0x63, 0xA2]),\n VideoTrack: toUint8([0xe0]),\n AudioTrack: toUint8([0xe1]),\n // Not used yet, but will be used for live webm/mkv\n // see https://www.matroska.org/technical/basics.html#block-structure\n // see https://www.matroska.org/technical/basics.html#simpleblock-structure\n Cluster: toUint8([0x1F, 0x43, 0xB6, 0x75]),\n Timestamp: toUint8([0xE7]),\n TimestampScale: toUint8([0x2A, 0xD7, 0xB1]),\n BlockGroup: toUint8([0xA0]),\n BlockDuration: toUint8([0x9B]),\n Block: toUint8([0xA1]),\n SimpleBlock: toUint8([0xA3])\n};\n/**\n * This is a simple table to determine the length\n * of things in ebml. The length is one based (starts at 1,\n * rather than zero) and for every zero bit before a one bit\n * we add one to length. We also need this table because in some\n * case we have to xor all the length bits from another value.\n */\n\nvar LENGTH_TABLE = [128, 64, 32, 16, 8, 4, 2, 1];\n\nvar getLength = function getLength(byte) {\n var len = 1;\n\n for (var i = 0; i < LENGTH_TABLE.length; i++) {\n if (byte & LENGTH_TABLE[i]) {\n break;\n }\n\n len++;\n }\n\n return len;\n}; // length in ebml is stored in the first 4 to 8 bits\n// of the first byte. 4 for the id length and 8 for the\n// data size length. Length is measured by converting the number to binary\n// then 1 + the number of zeros before a 1 is encountered starting\n// from the left.\n\n\nvar getvint = function getvint(bytes, offset, removeLength, signed) {\n if (removeLength === void 0) {\n removeLength = true;\n }\n\n if (signed === void 0) {\n signed = false;\n }\n\n var length = getLength(bytes[offset]);\n var valueBytes = bytes.subarray(offset, offset + length); // NOTE that we do **not** subarray here because we need to copy these bytes\n // as they will be modified below to remove the dataSizeLen bits and we do not\n // want to modify the original data. normally we could just call slice on\n // uint8array but ie 11 does not support that...\n\n if (removeLength) {\n valueBytes = Array.prototype.slice.call(bytes, offset, offset + length);\n valueBytes[0] ^= LENGTH_TABLE[length - 1];\n }\n\n return {\n length: length,\n value: bytesToNumber(valueBytes, {\n signed: signed\n }),\n bytes: valueBytes\n };\n};\n\nvar normalizePath = function normalizePath(path) {\n if (typeof path === 'string') {\n return path.match(/.{1,2}/g).map(function (p) {\n return normalizePath(p);\n });\n }\n\n if (typeof path === 'number') {\n return numberToBytes(path);\n }\n\n return path;\n};\n\nvar normalizePaths = function normalizePaths(paths) {\n if (!Array.isArray(paths)) {\n return [normalizePath(paths)];\n }\n\n return paths.map(function (p) {\n return normalizePath(p);\n });\n};\n\nvar getInfinityDataSize = function getInfinityDataSize(id, bytes, offset) {\n if (offset >= bytes.length) {\n return bytes.length;\n }\n\n var innerid = getvint(bytes, offset, false);\n\n if (bytesMatch(id.bytes, innerid.bytes)) {\n return offset;\n }\n\n var dataHeader = getvint(bytes, offset + innerid.length);\n return getInfinityDataSize(id, bytes, offset + dataHeader.length + dataHeader.value + innerid.length);\n};\n/**\n * Notes on the EBLM format.\n *\n * EBLM uses \"vints\" tags. Every vint tag contains\n * two parts\n *\n * 1. The length from the first byte. You get this by\n * converting the byte to binary and counting the zeros\n * before a 1. Then you add 1 to that. Examples\n * 00011111 = length 4 because there are 3 zeros before a 1.\n * 00100000 = length 3 because there are 2 zeros before a 1.\n * 00000011 = length 7 because there are 6 zeros before a 1.\n *\n * 2. The bits used for length are removed from the first byte\n * Then all the bytes are merged into a value. NOTE: this\n * is not the case for id ebml tags as there id includes\n * length bits.\n *\n */\n\n\nexport var findEbml = function findEbml(bytes, paths) {\n paths = normalizePaths(paths);\n bytes = toUint8(bytes);\n var results = [];\n\n if (!paths.length) {\n return results;\n }\n\n var i = 0;\n\n while (i < bytes.length) {\n var id = getvint(bytes, i, false);\n var dataHeader = getvint(bytes, i + id.length);\n var dataStart = i + id.length + dataHeader.length; // dataSize is unknown or this is a live stream\n\n if (dataHeader.value === 0x7f) {\n dataHeader.value = getInfinityDataSize(id, bytes, dataStart);\n\n if (dataHeader.value !== bytes.length) {\n dataHeader.value -= dataStart;\n }\n }\n\n var dataEnd = dataStart + dataHeader.value > bytes.length ? bytes.length : dataStart + dataHeader.value;\n var data = bytes.subarray(dataStart, dataEnd);\n\n if (bytesMatch(paths[0], id.bytes)) {\n if (paths.length === 1) {\n // this is the end of the paths and we've found the tag we were\n // looking for\n results.push(data);\n } else {\n // recursively search for the next tag inside of the data\n // of this one\n results = results.concat(findEbml(data, paths.slice(1)));\n }\n }\n\n var totalLength = id.length + dataHeader.length + data.length; // move past this tag entirely, we are not looking for it\n\n i += totalLength;\n }\n\n return results;\n}; // see https://www.matroska.org/technical/basics.html#block-structure\n\nexport var decodeBlock = function decodeBlock(block, type, timestampScale, clusterTimestamp) {\n var duration;\n\n if (type === 'group') {\n duration = findEbml(block, [EBML_TAGS.BlockDuration])[0];\n\n if (duration) {\n duration = bytesToNumber(duration);\n duration = 1 / timestampScale * duration * timestampScale / 1000;\n }\n\n block = findEbml(block, [EBML_TAGS.Block])[0];\n type = 'block'; // treat data as a block after this point\n }\n\n var dv = new DataView(block.buffer, block.byteOffset, block.byteLength);\n var trackNumber = getvint(block, 0);\n var timestamp = dv.getInt16(trackNumber.length, false);\n var flags = block[trackNumber.length + 2];\n var data = block.subarray(trackNumber.length + 3); // pts/dts in seconds\n\n var ptsdts = 1 / timestampScale * (clusterTimestamp + timestamp) * timestampScale / 1000; // return the frame\n\n var parsed = {\n duration: duration,\n trackNumber: trackNumber.value,\n keyframe: type === 'simple' && flags >> 7 === 1,\n invisible: (flags & 0x08) >> 3 === 1,\n lacing: (flags & 0x06) >> 1,\n discardable: type === 'simple' && (flags & 0x01) === 1,\n frames: [],\n pts: ptsdts,\n dts: ptsdts,\n timestamp: timestamp\n };\n\n if (!parsed.lacing) {\n parsed.frames.push(data);\n return parsed;\n }\n\n var numberOfFrames = data[0] + 1;\n var frameSizes = [];\n var offset = 1; // Fixed\n\n if (parsed.lacing === 2) {\n var sizeOfFrame = (data.length - offset) / numberOfFrames;\n\n for (var i = 0; i < numberOfFrames; i++) {\n frameSizes.push(sizeOfFrame);\n }\n } // xiph\n\n\n if (parsed.lacing === 1) {\n for (var _i = 0; _i < numberOfFrames - 1; _i++) {\n var size = 0;\n\n do {\n size += data[offset];\n offset++;\n } while (data[offset - 1] === 0xFF);\n\n frameSizes.push(size);\n }\n } // ebml\n\n\n if (parsed.lacing === 3) {\n // first vint is unsinged\n // after that vints are singed and\n // based on a compounding size\n var _size = 0;\n\n for (var _i2 = 0; _i2 < numberOfFrames - 1; _i2++) {\n var vint = _i2 === 0 ? getvint(data, offset) : getvint(data, offset, true, true);\n _size += vint.value;\n frameSizes.push(_size);\n offset += vint.length;\n }\n }\n\n frameSizes.forEach(function (size) {\n parsed.frames.push(data.subarray(offset, offset + size));\n offset += size;\n });\n return parsed;\n}; // VP9 Codec Feature Metadata (CodecPrivate)\n// https://www.webmproject.org/docs/container/\n\nvar parseVp9Private = function parseVp9Private(bytes) {\n var i = 0;\n var params = {};\n\n while (i < bytes.length) {\n var id = bytes[i] & 0x7f;\n var len = bytes[i + 1];\n var val = void 0;\n\n if (len === 1) {\n val = bytes[i + 2];\n } else {\n val = bytes.subarray(i + 2, i + 2 + len);\n }\n\n if (id === 1) {\n params.profile = val;\n } else if (id === 2) {\n params.level = val;\n } else if (id === 3) {\n params.bitDepth = val;\n } else if (id === 4) {\n params.chromaSubsampling = val;\n } else {\n params[id] = val;\n }\n\n i += 2 + len;\n }\n\n return params;\n};\n\nexport var parseTracks = function parseTracks(bytes) {\n bytes = toUint8(bytes);\n var decodedTracks = [];\n var tracks = findEbml(bytes, [EBML_TAGS.Segment, EBML_TAGS.Tracks, EBML_TAGS.Track]);\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Tracks, EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n tracks = findEbml(bytes, [EBML_TAGS.Track]);\n }\n\n if (!tracks.length) {\n return decodedTracks;\n }\n\n tracks.forEach(function (track) {\n var trackType = findEbml(track, EBML_TAGS.TrackType)[0];\n\n if (!trackType || !trackType.length) {\n return;\n } // 1 is video, 2 is audio, 17 is subtitle\n // other values are unimportant in this context\n\n\n if (trackType[0] === 1) {\n trackType = 'video';\n } else if (trackType[0] === 2) {\n trackType = 'audio';\n } else if (trackType[0] === 17) {\n trackType = 'subtitle';\n } else {\n return;\n } // todo parse language\n\n\n var decodedTrack = {\n rawCodec: bytesToString(findEbml(track, [EBML_TAGS.CodecID])[0]),\n type: trackType,\n codecPrivate: findEbml(track, [EBML_TAGS.CodecPrivate])[0],\n number: bytesToNumber(findEbml(track, [EBML_TAGS.TrackNumber])[0]),\n defaultDuration: bytesToNumber(findEbml(track, [EBML_TAGS.DefaultDuration])[0]),\n default: findEbml(track, [EBML_TAGS.FlagDefault])[0],\n rawData: track\n };\n var codec = '';\n\n if (/V_MPEG4\\/ISO\\/AVC/.test(decodedTrack.rawCodec)) {\n codec = \"avc1.\" + getAvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEGH\\/ISO\\/HEVC/.test(decodedTrack.rawCodec)) {\n codec = \"hev1.\" + getHvcCodec(decodedTrack.codecPrivate);\n } else if (/V_MPEG4\\/ISO\\/ASP/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4v.20.' + decodedTrack.codecPrivate[4].toString();\n } else {\n codec = 'mp4v.20.9';\n }\n } else if (/^V_THEORA/.test(decodedTrack.rawCodec)) {\n codec = 'theora';\n } else if (/^V_VP8/.test(decodedTrack.rawCodec)) {\n codec = 'vp8';\n } else if (/^V_VP9/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n var _parseVp9Private = parseVp9Private(decodedTrack.codecPrivate),\n profile = _parseVp9Private.profile,\n level = _parseVp9Private.level,\n bitDepth = _parseVp9Private.bitDepth,\n chromaSubsampling = _parseVp9Private.chromaSubsampling;\n\n codec = 'vp09.';\n codec += padStart(profile, 2, '0') + \".\";\n codec += padStart(level, 2, '0') + \".\";\n codec += padStart(bitDepth, 2, '0') + \".\";\n codec += \"\" + padStart(chromaSubsampling, 2, '0'); // Video -> Colour -> Ebml name\n\n var matrixCoefficients = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB1]])[0] || [];\n var videoFullRangeFlag = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xB9]])[0] || [];\n var transferCharacteristics = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBA]])[0] || [];\n var colourPrimaries = findEbml(track, [0xE0, [0x55, 0xB0], [0x55, 0xBB]])[0] || []; // if we find any optional codec parameter specify them all.\n\n if (matrixCoefficients.length || videoFullRangeFlag.length || transferCharacteristics.length || colourPrimaries.length) {\n codec += \".\" + padStart(colourPrimaries[0], 2, '0');\n codec += \".\" + padStart(transferCharacteristics[0], 2, '0');\n codec += \".\" + padStart(matrixCoefficients[0], 2, '0');\n codec += \".\" + padStart(videoFullRangeFlag[0], 2, '0');\n }\n } else {\n codec = 'vp9';\n }\n } else if (/^V_AV1/.test(decodedTrack.rawCodec)) {\n codec = \"av01.\" + getAv1Codec(decodedTrack.codecPrivate);\n } else if (/A_ALAC/.test(decodedTrack.rawCodec)) {\n codec = 'alac';\n } else if (/A_MPEG\\/L2/.test(decodedTrack.rawCodec)) {\n codec = 'mp2';\n } else if (/A_MPEG\\/L3/.test(decodedTrack.rawCodec)) {\n codec = 'mp3';\n } else if (/^A_AAC/.test(decodedTrack.rawCodec)) {\n if (decodedTrack.codecPrivate) {\n codec = 'mp4a.40.' + (decodedTrack.codecPrivate[0] >>> 3).toString();\n } else {\n codec = 'mp4a.40.2';\n }\n } else if (/^A_AC3/.test(decodedTrack.rawCodec)) {\n codec = 'ac-3';\n } else if (/^A_PCM/.test(decodedTrack.rawCodec)) {\n codec = 'pcm';\n } else if (/^A_MS\\/ACM/.test(decodedTrack.rawCodec)) {\n codec = 'speex';\n } else if (/^A_EAC3/.test(decodedTrack.rawCodec)) {\n codec = 'ec-3';\n } else if (/^A_VORBIS/.test(decodedTrack.rawCodec)) {\n codec = 'vorbis';\n } else if (/^A_FLAC/.test(decodedTrack.rawCodec)) {\n codec = 'flac';\n } else if (/^A_OPUS/.test(decodedTrack.rawCodec)) {\n codec = 'opus';\n }\n\n decodedTrack.codec = codec;\n decodedTracks.push(decodedTrack);\n });\n return decodedTracks.sort(function (a, b) {\n return a.number - b.number;\n });\n};\nexport var parseData = function parseData(data, tracks) {\n var allBlocks = [];\n var segment = findEbml(data, [EBML_TAGS.Segment])[0];\n var timestampScale = findEbml(segment, [EBML_TAGS.SegmentInfo, EBML_TAGS.TimestampScale])[0]; // in nanoseconds, defaults to 1ms\n\n if (timestampScale && timestampScale.length) {\n timestampScale = bytesToNumber(timestampScale);\n } else {\n timestampScale = 1000000;\n }\n\n var clusters = findEbml(segment, [EBML_TAGS.Cluster]);\n\n if (!tracks) {\n tracks = parseTracks(segment);\n }\n\n clusters.forEach(function (cluster, ci) {\n var simpleBlocks = findEbml(cluster, [EBML_TAGS.SimpleBlock]).map(function (b) {\n return {\n type: 'simple',\n data: b\n };\n });\n var blockGroups = findEbml(cluster, [EBML_TAGS.BlockGroup]).map(function (b) {\n return {\n type: 'group',\n data: b\n };\n });\n var timestamp = findEbml(cluster, [EBML_TAGS.Timestamp])[0] || 0;\n\n if (timestamp && timestamp.length) {\n timestamp = bytesToNumber(timestamp);\n } // get all blocks then sort them into the correct order\n\n\n var blocks = simpleBlocks.concat(blockGroups).sort(function (a, b) {\n return a.data.byteOffset - b.data.byteOffset;\n });\n blocks.forEach(function (block, bi) {\n var decoded = decodeBlock(block.data, block.type, timestampScale, timestamp);\n allBlocks.push(decoded);\n });\n });\n return {\n tracks: tracks,\n blocks: allBlocks\n };\n};","import { bytesMatch, toUint8 } from './byte-helpers.js';\nexport var NAL_TYPE_ONE = toUint8([0x00, 0x00, 0x00, 0x01]);\nexport var NAL_TYPE_TWO = toUint8([0x00, 0x00, 0x01]);\nexport var EMULATION_PREVENTION = toUint8([0x00, 0x00, 0x03]);\n/**\n * Expunge any \"Emulation Prevention\" bytes from a \"Raw Byte\n * Sequence Payload\"\n *\n * @param data {Uint8Array} the bytes of a RBSP from a NAL\n * unit\n * @return {Uint8Array} the RBSP without any Emulation\n * Prevention Bytes\n */\n\nexport var discardEmulationPreventionBytes = function discardEmulationPreventionBytes(bytes) {\n var positions = [];\n var i = 1; // Find all `Emulation Prevention Bytes`\n\n while (i < bytes.length - 2) {\n if (bytesMatch(bytes.subarray(i, i + 3), EMULATION_PREVENTION)) {\n positions.push(i + 2);\n i++;\n }\n\n i++;\n } // If no Emulation Prevention Bytes were found just return the original\n // array\n\n\n if (positions.length === 0) {\n return bytes;\n } // Create a new array to hold the NAL unit data\n\n\n var newLength = bytes.length - positions.length;\n var newData = new Uint8Array(newLength);\n var sourceIndex = 0;\n\n for (i = 0; i < newLength; sourceIndex++, i++) {\n if (sourceIndex === positions[0]) {\n // Skip this byte\n sourceIndex++; // Remove this position index\n\n positions.shift();\n }\n\n newData[i] = bytes[sourceIndex];\n }\n\n return newData;\n};\nexport var findNal = function findNal(bytes, dataType, types, nalLimit) {\n if (nalLimit === void 0) {\n nalLimit = Infinity;\n }\n\n bytes = toUint8(bytes);\n types = [].concat(types);\n var i = 0;\n var nalStart;\n var nalsFound = 0; // keep searching until:\n // we reach the end of bytes\n // we reach the maximum number of nals they want to seach\n // NOTE: that we disregard nalLimit when we have found the start\n // of the nal we want so that we can find the end of the nal we want.\n\n while (i < bytes.length && (nalsFound < nalLimit || nalStart)) {\n var nalOffset = void 0;\n\n if (bytesMatch(bytes.subarray(i), NAL_TYPE_ONE)) {\n nalOffset = 4;\n } else if (bytesMatch(bytes.subarray(i), NAL_TYPE_TWO)) {\n nalOffset = 3;\n } // we are unsynced,\n // find the next nal unit\n\n\n if (!nalOffset) {\n i++;\n continue;\n }\n\n nalsFound++;\n\n if (nalStart) {\n return discardEmulationPreventionBytes(bytes.subarray(nalStart, i));\n }\n\n var nalType = void 0;\n\n if (dataType === 'h264') {\n nalType = bytes[i + nalOffset] & 0x1f;\n } else if (dataType === 'h265') {\n nalType = bytes[i + nalOffset] >> 1 & 0x3f;\n }\n\n if (types.indexOf(nalType) !== -1) {\n nalStart = i + nalOffset;\n } // nal header is 1 length for h264, and 2 for h265\n\n\n i += nalOffset + (dataType === 'h264' ? 1 : 2);\n }\n\n return bytes.subarray(0, 0);\n};\nexport var findH264Nal = function findH264Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h264', type, nalLimit);\n};\nexport var findH265Nal = function findH265Nal(bytes, type, nalLimit) {\n return findNal(bytes, 'h265', type, nalLimit);\n};","import { toUint8, bytesMatch } from './byte-helpers.js';\nimport { findBox } from './mp4-helpers.js';\nimport { findEbml, EBML_TAGS } from './ebml-helpers.js';\nimport { getId3Offset } from './id3-helpers.js';\nimport { findH264Nal, findH265Nal } from './nal-helpers.js';\nvar CONSTANTS = {\n // \"webm\" string literal in hex\n 'webm': toUint8([0x77, 0x65, 0x62, 0x6d]),\n // \"matroska\" string literal in hex\n 'matroska': toUint8([0x6d, 0x61, 0x74, 0x72, 0x6f, 0x73, 0x6b, 0x61]),\n // \"fLaC\" string literal in hex\n 'flac': toUint8([0x66, 0x4c, 0x61, 0x43]),\n // \"OggS\" string literal in hex\n 'ogg': toUint8([0x4f, 0x67, 0x67, 0x53]),\n // ac-3 sync byte, also works for ec-3 as that is simply a codec\n // of ac-3\n 'ac3': toUint8([0x0b, 0x77]),\n // \"RIFF\" string literal in hex used for wav and avi\n 'riff': toUint8([0x52, 0x49, 0x46, 0x46]),\n // \"AVI\" string literal in hex\n 'avi': toUint8([0x41, 0x56, 0x49]),\n // \"WAVE\" string literal in hex\n 'wav': toUint8([0x57, 0x41, 0x56, 0x45]),\n // \"ftyp3g\" string literal in hex\n '3gp': toUint8([0x66, 0x74, 0x79, 0x70, 0x33, 0x67]),\n // \"ftyp\" string literal in hex\n 'mp4': toUint8([0x66, 0x74, 0x79, 0x70]),\n // \"styp\" string literal in hex\n 'fmp4': toUint8([0x73, 0x74, 0x79, 0x70]),\n // \"ftypqt\" string literal in hex\n 'mov': toUint8([0x66, 0x74, 0x79, 0x70, 0x71, 0x74]),\n // moov string literal in hex\n 'moov': toUint8([0x6D, 0x6F, 0x6F, 0x76]),\n // moof string literal in hex\n 'moof': toUint8([0x6D, 0x6F, 0x6F, 0x66])\n};\nvar _isLikely = {\n aac: function aac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x10], {\n offset: offset,\n mask: [0xFF, 0x16]\n });\n },\n mp3: function mp3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, [0xFF, 0x02], {\n offset: offset,\n mask: [0xFF, 0x06]\n });\n },\n webm: function webm(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is webm\n\n return bytesMatch(docType, CONSTANTS.webm);\n },\n mkv: function mkv(bytes) {\n var docType = findEbml(bytes, [EBML_TAGS.EBML, EBML_TAGS.DocType])[0]; // check if DocType EBML tag is matroska\n\n return bytesMatch(docType, CONSTANTS.matroska);\n },\n mp4: function mp4(bytes) {\n // if this file is another base media file format, it is not mp4\n if (_isLikely['3gp'](bytes) || _isLikely.mov(bytes)) {\n return false;\n } // if this file starts with a ftyp or styp box its mp4\n\n\n if (bytesMatch(bytes, CONSTANTS.mp4, {\n offset: 4\n }) || bytesMatch(bytes, CONSTANTS.fmp4, {\n offset: 4\n })) {\n return true;\n } // if this file starts with a moof/moov box its mp4\n\n\n if (bytesMatch(bytes, CONSTANTS.moof, {\n offset: 4\n }) || bytesMatch(bytes, CONSTANTS.moov, {\n offset: 4\n })) {\n return true;\n }\n },\n mov: function mov(bytes) {\n return bytesMatch(bytes, CONSTANTS.mov, {\n offset: 4\n });\n },\n '3gp': function gp(bytes) {\n return bytesMatch(bytes, CONSTANTS['3gp'], {\n offset: 4\n });\n },\n ac3: function ac3(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.ac3, {\n offset: offset\n });\n },\n ts: function ts(bytes) {\n if (bytes.length < 189 && bytes.length >= 1) {\n return bytes[0] === 0x47;\n }\n\n var i = 0; // check the first 376 bytes for two matching sync bytes\n\n while (i + 188 < bytes.length && i < 188) {\n if (bytes[i] === 0x47 && bytes[i + 188] === 0x47) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n flac: function flac(bytes) {\n var offset = getId3Offset(bytes);\n return bytesMatch(bytes, CONSTANTS.flac, {\n offset: offset\n });\n },\n ogg: function ogg(bytes) {\n return bytesMatch(bytes, CONSTANTS.ogg);\n },\n avi: function avi(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.avi, {\n offset: 8\n });\n },\n wav: function wav(bytes) {\n return bytesMatch(bytes, CONSTANTS.riff) && bytesMatch(bytes, CONSTANTS.wav, {\n offset: 8\n });\n },\n 'h264': function h264(bytes) {\n // find seq_parameter_set_rbsp\n return findH264Nal(bytes, 7, 3).length;\n },\n 'h265': function h265(bytes) {\n // find video_parameter_set_rbsp or seq_parameter_set_rbsp\n return findH265Nal(bytes, [32, 33], 3).length;\n }\n}; // get all the isLikely functions\n// but make sure 'ts' is above h264 and h265\n// but below everything else as it is the least specific\n\nvar isLikelyTypes = Object.keys(_isLikely) // remove ts, h264, h265\n.filter(function (t) {\n return t !== 'ts' && t !== 'h264' && t !== 'h265';\n}) // add it back to the bottom\n.concat(['ts', 'h264', 'h265']); // make sure we are dealing with uint8 data.\n\nisLikelyTypes.forEach(function (type) {\n var isLikelyFn = _isLikely[type];\n\n _isLikely[type] = function (bytes) {\n return isLikelyFn(toUint8(bytes));\n };\n}); // export after wrapping\n\nexport var isLikely = _isLikely; // A useful list of file signatures can be found here\n// https://en.wikipedia.org/wiki/List_of_file_signatures\n\nexport var detectContainerForBytes = function detectContainerForBytes(bytes) {\n bytes = toUint8(bytes);\n\n for (var i = 0; i < isLikelyTypes.length; i++) {\n var type = isLikelyTypes[i];\n\n if (isLikely[type](bytes)) {\n return type;\n }\n }\n\n return '';\n}; // fmp4 is not a container\n\nexport var isLikelyFmp4MediaSegment = function isLikelyFmp4MediaSegment(bytes) {\n return findBox(bytes, ['moof']).length > 0;\n};","/**\n * @license\n * Video.js 7.15.4 \n * Copyright Brightcove, Inc. \n * Available under Apache License Version 2.0\n * \n *\n * Includes vtt.js \n * Available under Apache License Version 2.0\n * \n */\n\nimport window from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\nimport keycode from 'keycode';\nimport XHR from '@videojs/xhr';\nimport vtt from 'videojs-vtt.js';\nimport _construct from '@babel/runtime/helpers/construct';\nimport _inherits from '@babel/runtime/helpers/inherits';\nimport _resolveUrl from '@videojs/vhs-utils/es/resolve-url.js';\nimport { Parser } from 'm3u8-parser';\nimport { browserSupportsCodec, DEFAULT_VIDEO_CODEC, DEFAULT_AUDIO_CODEC, muxerSupportsCodec, parseCodecs, translateLegacyCodec, codecsFromDefault, getMimeForCodec, isAudioCodec } from '@videojs/vhs-utils/es/codecs.js';\nimport { simpleTypeFromSourceType } from '@videojs/vhs-utils/es/media-types.js';\nimport { generateSidxKey, parseUTCTiming, parse, addSidxSegmentsToPlaylist } from 'mpd-parser';\nimport parseSidx from 'mux.js/lib/tools/parse-sidx';\nimport { getId3Offset } from '@videojs/vhs-utils/es/id3-helpers';\nimport { detectContainerForBytes, isLikelyFmp4MediaSegment } from '@videojs/vhs-utils/es/containers';\nimport { concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\nimport { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$5 = \"7.15.4\";\n\n/**\n * An Object that contains lifecycle hooks as keys which point to an array\n * of functions that are run when a lifecycle is triggered\n *\n * @private\n */\nvar hooks_ = {};\n/**\n * Get a list of hooks for a specific lifecycle\n *\n * @param {string} type\n * the lifecyle to get hooks from\n *\n * @param {Function|Function[]} [fn]\n * Optionally add a hook (or hooks) to the lifecycle that your are getting.\n *\n * @return {Array}\n * an array of hooks, or an empty array if there are none.\n */\n\nvar hooks = function hooks(type, fn) {\n hooks_[type] = hooks_[type] || [];\n\n if (fn) {\n hooks_[type] = hooks_[type].concat(fn);\n }\n\n return hooks_[type];\n};\n/**\n * Add a function hook to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hook = function hook(type, fn) {\n hooks(type, fn);\n};\n/**\n * Remove a hook from a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle that the function hooked to\n *\n * @param {Function} fn\n * The hooked function to remove\n *\n * @return {boolean}\n * The function that was removed or undef\n */\n\n\nvar removeHook = function removeHook(type, fn) {\n var index = hooks(type).indexOf(fn);\n\n if (index <= -1) {\n return false;\n }\n\n hooks_[type] = hooks_[type].slice();\n hooks_[type].splice(index, 1);\n return true;\n};\n/**\n * Add a function hook that will only run once to a specific videojs lifecycle.\n *\n * @param {string} type\n * the lifecycle to hook the function to.\n *\n * @param {Function|Function[]}\n * The function or array of functions to attach.\n */\n\n\nvar hookOnce = function hookOnce(type, fn) {\n hooks(type, [].concat(fn).map(function (original) {\n var wrapper = function wrapper() {\n removeHook(type, wrapper);\n return original.apply(void 0, arguments);\n };\n\n return wrapper;\n }));\n};\n\n/**\n * @file fullscreen-api.js\n * @module fullscreen-api\n * @private\n */\n/**\n * Store the browser-specific methods for the fullscreen API.\n *\n * @type {Object}\n * @see [Specification]{@link https://fullscreen.spec.whatwg.org}\n * @see [Map Approach From Screenfull.js]{@link https://github.com/sindresorhus/screenfull.js}\n */\n\nvar FullscreenApi = {\n prefixed: true\n}; // browser API methods\n\nvar apiMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'], // WebKit\n['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'], // Mozilla\n['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'], // Microsoft\n['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen']];\nvar specApi = apiMap[0];\nvar browserApi; // determine the supported set of functions\n\nfor (var i = 0; i < apiMap.length; i++) {\n // check for exitFullscreen function\n if (apiMap[i][1] in document) {\n browserApi = apiMap[i];\n break;\n }\n} // map the browser API names to the spec API names\n\n\nif (browserApi) {\n for (var _i = 0; _i < browserApi.length; _i++) {\n FullscreenApi[specApi[_i]] = browserApi[_i];\n }\n\n FullscreenApi.prefixed = browserApi[0] !== specApi[0];\n}\n\n/**\n * @file create-logger.js\n * @module create-logger\n */\n\nvar history = [];\n/**\n * Log messages to the console and history based on the type of message\n *\n * @private\n * @param {string} type\n * The name of the console method to use.\n *\n * @param {Array} args\n * The arguments to be passed to the matching console method.\n */\n\nvar LogByTypeFactory = function LogByTypeFactory(name, log) {\n return function (type, level, args) {\n var lvl = log.levels[level];\n var lvlRegExp = new RegExp(\"^(\" + lvl + \")$\");\n\n if (type !== 'log') {\n // Add the type to the front of the message when it's not \"log\".\n args.unshift(type.toUpperCase() + ':');\n } // Add console prefix after adding to history.\n\n\n args.unshift(name + ':'); // Add a clone of the args at this point to history.\n\n if (history) {\n history.push([].concat(args)); // only store 1000 history entries\n\n var splice = history.length - 1000;\n history.splice(0, splice > 0 ? splice : 0);\n } // If there's no console then don't try to output messages, but they will\n // still be stored in history.\n\n\n if (!window.console) {\n return;\n } // Was setting these once outside of this function, but containing them\n // in the function makes it easier to test cases where console doesn't exist\n // when the module is executed.\n\n\n var fn = window.console[type];\n\n if (!fn && type === 'debug') {\n // Certain browsers don't have support for console.debug. For those, we\n // should default to the closest comparable log.\n fn = window.console.info || window.console.log;\n } // Bail out if there's no console or if this type is not allowed by the\n // current logging level.\n\n\n if (!fn || !lvl || !lvlRegExp.test(type)) {\n return;\n }\n\n fn[Array.isArray(args) ? 'apply' : 'call'](window.console, args);\n };\n};\n\nfunction createLogger$1(name) {\n // This is the private tracking variable for logging level.\n var level = 'info'; // the curried logByType bound to the specific log and history\n\n var logByType;\n /**\n * Logs plain debug messages. Similar to `console.log`.\n *\n * Due to [limitations](https://github.com/jsdoc3/jsdoc/issues/955#issuecomment-313829149)\n * of our JSDoc template, we cannot properly document this as both a function\n * and a namespace, so its function signature is documented here.\n *\n * #### Arguments\n * ##### *args\n * Mixed[]\n *\n * Any combination of values that could be passed to `console.log()`.\n *\n * #### Return Value\n *\n * `undefined`\n *\n * @namespace\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged.\n */\n\n var log = function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n logByType('log', level, args);\n }; // This is the logByType helper that the logging methods below use\n\n\n logByType = LogByTypeFactory(name, log);\n /**\n * Create a new sublogger which chains the old name to the new name.\n *\n * For example, doing `videojs.log.createLogger('player')` and then using that logger will log the following:\n * ```js\n * mylogger('foo');\n * // > VIDEOJS: player: foo\n * ```\n *\n * @param {string} name\n * The name to add call the new logger\n * @return {Object}\n */\n\n log.createLogger = function (subname) {\n return createLogger$1(name + ': ' + subname);\n };\n /**\n * Enumeration of available logging levels, where the keys are the level names\n * and the values are `|`-separated strings containing logging methods allowed\n * in that logging level. These strings are used to create a regular expression\n * matching the function name being called.\n *\n * Levels provided by Video.js are:\n *\n * - `off`: Matches no calls. Any value that can be cast to `false` will have\n * this effect. The most restrictive.\n * - `all`: Matches only Video.js-provided functions (`debug`, `log`,\n * `log.warn`, and `log.error`).\n * - `debug`: Matches `log.debug`, `log`, `log.warn`, and `log.error` calls.\n * - `info` (default): Matches `log`, `log.warn`, and `log.error` calls.\n * - `warn`: Matches `log.warn` and `log.error` calls.\n * - `error`: Matches only `log.error` calls.\n *\n * @type {Object}\n */\n\n\n log.levels = {\n all: 'debug|log|warn|error',\n off: '',\n debug: 'debug|log|warn|error',\n info: 'log|warn|error',\n warn: 'warn|error',\n error: 'error',\n DEFAULT: level\n };\n /**\n * Get or set the current logging level.\n *\n * If a string matching a key from {@link module:log.levels} is provided, acts\n * as a setter.\n *\n * @param {string} [lvl]\n * Pass a valid level to set a new logging level.\n *\n * @return {string}\n * The current logging level.\n */\n\n log.level = function (lvl) {\n if (typeof lvl === 'string') {\n if (!log.levels.hasOwnProperty(lvl)) {\n throw new Error(\"\\\"\" + lvl + \"\\\" in not a valid log level\");\n }\n\n level = lvl;\n }\n\n return level;\n };\n /**\n * Returns an array containing everything that has been logged to the history.\n *\n * This array is a shallow clone of the internal history record. However, its\n * contents are _not_ cloned; so, mutating objects inside this array will\n * mutate them in history.\n *\n * @return {Array}\n */\n\n\n log.history = function () {\n return history ? [].concat(history) : [];\n };\n /**\n * Allows you to filter the history by the given logger name\n *\n * @param {string} fname\n * The name to filter by\n *\n * @return {Array}\n * The filtered list to return\n */\n\n\n log.history.filter = function (fname) {\n return (history || []).filter(function (historyItem) {\n // if the first item in each historyItem includes `fname`, then it's a match\n return new RegExp(\".*\" + fname + \".*\").test(historyItem[0]);\n });\n };\n /**\n * Clears the internal history tracking, but does not prevent further history\n * tracking.\n */\n\n\n log.history.clear = function () {\n if (history) {\n history.length = 0;\n }\n };\n /**\n * Disable history tracking if it is currently enabled.\n */\n\n\n log.history.disable = function () {\n if (history !== null) {\n history.length = 0;\n history = null;\n }\n };\n /**\n * Enable history tracking if it is currently disabled.\n */\n\n\n log.history.enable = function () {\n if (history === null) {\n history = [];\n }\n };\n /**\n * Logs error messages. Similar to `console.error`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as an error\n */\n\n\n log.error = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return logByType('error', level, args);\n };\n /**\n * Logs warning messages. Similar to `console.warn`.\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as a warning.\n */\n\n\n log.warn = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return logByType('warn', level, args);\n };\n /**\n * Logs debug messages. Similar to `console.debug`, but may also act as a comparable\n * log if `console.debug` is not available\n *\n * @param {Mixed[]} args\n * One or more messages or objects that should be logged as debug.\n */\n\n\n log.debug = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return logByType('debug', level, args);\n };\n\n return log;\n}\n\n/**\n * @file log.js\n * @module log\n */\nvar log$1 = createLogger$1('VIDEOJS');\nvar createLogger = log$1.createLogger;\n\n/**\n * @file obj.js\n * @module obj\n */\n\n/**\n * @callback obj:EachCallback\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n */\n\n/**\n * @callback obj:ReduceCallback\n *\n * @param {Mixed} accum\n * The value that is accumulating over the reduce loop.\n *\n * @param {Mixed} value\n * The current key for the object that is being iterated over.\n *\n * @param {string} key\n * The current key-value for object that is being iterated over\n *\n * @return {Mixed}\n * The new accumulated value.\n */\nvar toString = Object.prototype.toString;\n/**\n * Get the keys of an Object\n *\n * @param {Object}\n * The Object to get the keys from\n *\n * @return {string[]}\n * An array of the keys from the object. Returns an empty array if the\n * object passed in was invalid or had no keys.\n *\n * @private\n */\n\nvar keys = function keys(object) {\n return isObject(object) ? Object.keys(object) : [];\n};\n/**\n * Array-like iteration for objects.\n *\n * @param {Object} object\n * The object to iterate over\n *\n * @param {obj:EachCallback} fn\n * The callback function which is called for each key in the object.\n */\n\n\nfunction each(object, fn) {\n keys(object).forEach(function (key) {\n return fn(object[key], key);\n });\n}\n/**\n * Array-like reduce for objects.\n *\n * @param {Object} object\n * The Object that you want to reduce.\n *\n * @param {Function} fn\n * A callback function which is called for each key in the object. It\n * receives the accumulated value and the per-iteration value and key\n * as arguments.\n *\n * @param {Mixed} [initial = 0]\n * Starting value\n *\n * @return {Mixed}\n * The final accumulated value.\n */\n\nfunction reduce(object, fn, initial) {\n if (initial === void 0) {\n initial = 0;\n }\n\n return keys(object).reduce(function (accum, key) {\n return fn(accum, object[key], key);\n }, initial);\n}\n/**\n * Object.assign-style object shallow merge/extend.\n *\n * @param {Object} target\n * @param {Object} ...sources\n * @return {Object}\n */\n\nfunction assign(target) {\n for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n sources[_key - 1] = arguments[_key];\n }\n\n if (Object.assign) {\n return _extends.apply(void 0, [target].concat(sources));\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n target[key] = value;\n });\n });\n return target;\n}\n/**\n * Returns whether a value is an object of any kind - including DOM nodes,\n * arrays, regular expressions, etc. Not functions, though.\n *\n * This avoids the gotcha where using `typeof` on a `null` value\n * results in `'object'`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isObject(value) {\n return !!value && typeof value === 'object';\n}\n/**\n * Returns whether an object appears to be a \"plain\" object - that is, a\n * direct instance of `Object`.\n *\n * @param {Object} value\n * @return {boolean}\n */\n\nfunction isPlain(value) {\n return isObject(value) && toString.call(value) === '[object Object]' && value.constructor === Object;\n}\n\n/**\n * @file computed-style.js\n * @module computed-style\n */\n/**\n * A safe getComputedStyle.\n *\n * This is needed because in Firefox, if the player is loaded in an iframe with\n * `display:none`, then `getComputedStyle` returns `null`, so, we do a\n * null-check to make sure that the player doesn't break in these cases.\n *\n * @function\n * @param {Element} el\n * The element you want the computed style of\n *\n * @param {string} prop\n * The property name you want\n *\n * @see https://bugzilla.mozilla.org/show_bug.cgi?id=548397\n */\n\nfunction computedStyle(el, prop) {\n if (!el || !prop) {\n return '';\n }\n\n if (typeof window.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window.getComputedStyle(el);\n } catch (e) {\n return '';\n }\n\n return computedStyleValue ? computedStyleValue.getPropertyValue(prop) || computedStyleValue[prop] : '';\n }\n\n return '';\n}\n\n/**\n * @file browser.js\n * @module browser\n */\nvar USER_AGENT = window.navigator && window.navigator.userAgent || '';\nvar webkitVersionMap = /AppleWebKit\\/([\\d.]+)/i.exec(USER_AGENT);\nvar appleWebkitVersion = webkitVersionMap ? parseFloat(webkitVersionMap.pop()) : null;\n/**\n * Whether or not this device is an iPod.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPOD = /iPod/i.test(USER_AGENT);\n/**\n * The detected iOS version - or `null`.\n *\n * @static\n * @const\n * @type {string|null}\n */\n\nvar IOS_VERSION = function () {\n var match = USER_AGENT.match(/OS (\\d+)_/i);\n\n if (match && match[1]) {\n return match[1];\n }\n\n return null;\n}();\n/**\n * Whether or not this is an Android device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANDROID = /Android/i.test(USER_AGENT);\n/**\n * The detected Android version - or `null`.\n *\n * @static\n * @const\n * @type {number|string|null}\n */\n\nvar ANDROID_VERSION = function () {\n // This matches Android Major.Minor.Patch versions\n // ANDROID_VERSION is Major.Minor as a Number, if Minor isn't available, then only Major is returned\n var match = USER_AGENT.match(/Android (\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))*/i);\n\n if (!match) {\n return null;\n }\n\n var major = match[1] && parseFloat(match[1]);\n var minor = match[2] && parseFloat(match[2]);\n\n if (major && minor) {\n return parseFloat(match[1] + '.' + match[2]);\n } else if (major) {\n return major;\n }\n\n return null;\n}();\n/**\n * Whether or not this is a native Android browser.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_NATIVE_ANDROID = IS_ANDROID && ANDROID_VERSION < 5 && appleWebkitVersion < 537;\n/**\n * Whether or not this is Mozilla Firefox.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_FIREFOX = /Firefox/i.test(USER_AGENT);\n/**\n * Whether or not this is Microsoft Edge.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_EDGE = /Edg/i.test(USER_AGENT);\n/**\n * Whether or not this is Google Chrome.\n *\n * This will also be `true` for Chrome on iOS, which will have different support\n * as it is actually Safari under the hood.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_CHROME = !IS_EDGE && (/Chrome/i.test(USER_AGENT) || /CriOS/i.test(USER_AGENT));\n/**\n * The detected Google Chrome version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar CHROME_VERSION = function () {\n var match = USER_AGENT.match(/(Chrome|CriOS)\\/(\\d+)/);\n\n if (match && match[2]) {\n return parseFloat(match[2]);\n }\n\n return null;\n}();\n/**\n * The detected Internet Explorer version - or `null`.\n *\n * @static\n * @const\n * @type {number|null}\n */\n\nvar IE_VERSION = function () {\n var result = /MSIE\\s(\\d+)\\.\\d/.exec(USER_AGENT);\n var version = result && parseFloat(result[1]);\n\n if (!version && /Trident\\/7.0/i.test(USER_AGENT) && /rv:11.0/.test(USER_AGENT)) {\n // IE 11 has a different user agent string than other IE versions\n version = 11.0;\n }\n\n return version;\n}();\n/**\n * Whether or not this is desktop Safari.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_SAFARI = /Safari/i.test(USER_AGENT) && !IS_CHROME && !IS_ANDROID && !IS_EDGE;\n/**\n * Whether or not this is a Windows machine.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_WINDOWS = /Windows/i.test(USER_AGENT);\n/**\n * Whether or not this device is touch-enabled.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar TOUCH_ENABLED = Boolean(isReal() && ('ontouchstart' in window || window.navigator.maxTouchPoints || window.DocumentTouch && window.document instanceof window.DocumentTouch));\n/**\n * Whether or not this device is an iPad.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IPAD = /iPad/i.test(USER_AGENT) || IS_SAFARI && TOUCH_ENABLED && !/iPhone/i.test(USER_AGENT);\n/**\n * Whether or not this device is an iPhone.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n// The Facebook app's UIWebView identifies as both an iPhone and iPad, so\n// to identify iPhones, we need to exclude iPads.\n// http://artsy.github.io/blog/2012/10/18/the-perils-of-ios-user-agent-sniffing/\n\nvar IS_IPHONE = /iPhone/i.test(USER_AGENT) && !IS_IPAD;\n/**\n * Whether or not this is an iOS device.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_IOS = IS_IPHONE || IS_IPAD || IS_IPOD;\n/**\n * Whether or not this is any flavor of Safari - including iOS.\n *\n * @static\n * @const\n * @type {Boolean}\n */\n\nvar IS_ANY_SAFARI = (IS_SAFARI || IS_IOS) && !IS_CHROME;\n\nvar browser = /*#__PURE__*/Object.freeze({\n __proto__: null,\n IS_IPOD: IS_IPOD,\n IOS_VERSION: IOS_VERSION,\n IS_ANDROID: IS_ANDROID,\n ANDROID_VERSION: ANDROID_VERSION,\n IS_NATIVE_ANDROID: IS_NATIVE_ANDROID,\n IS_FIREFOX: IS_FIREFOX,\n IS_EDGE: IS_EDGE,\n IS_CHROME: IS_CHROME,\n CHROME_VERSION: CHROME_VERSION,\n IE_VERSION: IE_VERSION,\n IS_SAFARI: IS_SAFARI,\n IS_WINDOWS: IS_WINDOWS,\n TOUCH_ENABLED: TOUCH_ENABLED,\n IS_IPAD: IS_IPAD,\n IS_IPHONE: IS_IPHONE,\n IS_IOS: IS_IOS,\n IS_ANY_SAFARI: IS_ANY_SAFARI\n});\n\n/**\n * @file dom.js\n * @module dom\n */\n/**\n * Detect if a value is a string with any non-whitespace characters.\n *\n * @private\n * @param {string} str\n * The string to check\n *\n * @return {boolean}\n * Will be `true` if the string is non-blank, `false` otherwise.\n *\n */\n\nfunction isNonBlankString(str) {\n // we use str.trim as it will trim any whitespace characters\n // from the front or back of non-whitespace characters. aka\n // Any string that contains non-whitespace characters will\n // still contain them after `trim` but whitespace only strings\n // will have a length of 0, failing this check.\n return typeof str === 'string' && Boolean(str.trim());\n}\n/**\n * Throws an error if the passed string has whitespace. This is used by\n * class methods to be relatively consistent with the classList API.\n *\n * @private\n * @param {string} str\n * The string to check for whitespace.\n *\n * @throws {Error}\n * Throws an error if there is whitespace in the string.\n */\n\n\nfunction throwIfWhitespace(str) {\n // str.indexOf instead of regex because str.indexOf is faster performance wise.\n if (str.indexOf(' ') >= 0) {\n throw new Error('class has illegal whitespace characters');\n }\n}\n/**\n * Produce a regular expression for matching a className within an elements className.\n *\n * @private\n * @param {string} className\n * The className to generate the RegExp for.\n *\n * @return {RegExp}\n * The RegExp that will check for a specific `className` in an elements\n * className.\n */\n\n\nfunction classRegExp(className) {\n return new RegExp('(^|\\\\s)' + className + '($|\\\\s)');\n}\n/**\n * Whether the current DOM interface appears to be real (i.e. not simulated).\n *\n * @return {boolean}\n * Will be `true` if the DOM appears to be real, `false` otherwise.\n */\n\n\nfunction isReal() {\n // Both document and window will never be undefined thanks to `global`.\n return document === window.document;\n}\n/**\n * Determines, via duck typing, whether or not a value is a DOM element.\n *\n * @param {Mixed} value\n * The value to check.\n *\n * @return {boolean}\n * Will be `true` if the value is a DOM element, `false` otherwise.\n */\n\nfunction isEl(value) {\n return isObject(value) && value.nodeType === 1;\n}\n/**\n * Determines if the current DOM is embedded in an iframe.\n *\n * @return {boolean}\n * Will be `true` if the DOM is embedded in an iframe, `false`\n * otherwise.\n */\n\nfunction isInFrame() {\n // We need a try/catch here because Safari will throw errors when attempting\n // to get either `parent` or `self`\n try {\n return window.parent !== window.self;\n } catch (x) {\n return true;\n }\n}\n/**\n * Creates functions to query the DOM using a given method.\n *\n * @private\n * @param {string} method\n * The method to create the query with.\n *\n * @return {Function}\n * The query method\n */\n\nfunction createQuerier(method) {\n return function (selector, context) {\n if (!isNonBlankString(selector)) {\n return document[method](null);\n }\n\n if (isNonBlankString(context)) {\n context = document.querySelector(context);\n }\n\n var ctx = isEl(context) ? context : document;\n return ctx[method] && ctx[method](selector);\n };\n}\n/**\n * Creates an element and applies properties, attributes, and inserts content.\n *\n * @param {string} [tagName='div']\n * Name of tag to be created.\n *\n * @param {Object} [properties={}]\n * Element properties to be applied.\n *\n * @param {Object} [attributes={}]\n * Element attributes to be applied.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor object.\n *\n * @return {Element}\n * The element that was created.\n */\n\n\nfunction createEl(tagName, properties, attributes, content) {\n if (tagName === void 0) {\n tagName = 'div';\n }\n\n if (properties === void 0) {\n properties = {};\n }\n\n if (attributes === void 0) {\n attributes = {};\n }\n\n var el = document.createElement(tagName);\n Object.getOwnPropertyNames(properties).forEach(function (propName) {\n var val = properties[propName]; // See #2176\n // We originally were accepting both properties and attributes in the\n // same object, but that doesn't work so well.\n\n if (propName.indexOf('aria-') !== -1 || propName === 'role' || propName === 'type') {\n log$1.warn('Setting attributes in the second argument of createEl()\\n' + 'has been deprecated. Use the third argument instead.\\n' + (\"createEl(type, properties, attributes). Attempting to set \" + propName + \" to \" + val + \".\"));\n el.setAttribute(propName, val); // Handle textContent since it's not supported everywhere and we have a\n // method for it.\n } else if (propName === 'textContent') {\n textContent(el, val);\n } else if (el[propName] !== val || propName === 'tabIndex') {\n el[propName] = val;\n }\n });\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n el.setAttribute(attrName, attributes[attrName]);\n });\n\n if (content) {\n appendContent(el, content);\n }\n\n return el;\n}\n/**\n * Injects text into an element, replacing any existing contents entirely.\n *\n * @param {Element} el\n * The element to add text content into\n *\n * @param {string} text\n * The text content to add.\n *\n * @return {Element}\n * The element with added text content.\n */\n\nfunction textContent(el, text) {\n if (typeof el.textContent === 'undefined') {\n el.innerText = text;\n } else {\n el.textContent = text;\n }\n\n return el;\n}\n/**\n * Insert an element as the first child node of another\n *\n * @param {Element} child\n * Element to insert\n *\n * @param {Element} parent\n * Element to insert child into\n */\n\nfunction prependTo(child, parent) {\n if (parent.firstChild) {\n parent.insertBefore(child, parent.firstChild);\n } else {\n parent.appendChild(child);\n }\n}\n/**\n * Check if an element has a class name.\n *\n * @param {Element} element\n * Element to check\n *\n * @param {string} classToCheck\n * Class name to check for\n *\n * @return {boolean}\n * Will be `true` if the element has a class, `false` otherwise.\n *\n * @throws {Error}\n * Throws an error if `classToCheck` has white space.\n */\n\nfunction hasClass(element, classToCheck) {\n throwIfWhitespace(classToCheck);\n\n if (element.classList) {\n return element.classList.contains(classToCheck);\n }\n\n return classRegExp(classToCheck).test(element.className);\n}\n/**\n * Add a class name to an element.\n *\n * @param {Element} element\n * Element to add class name to.\n *\n * @param {string} classToAdd\n * Class name to add.\n *\n * @return {Element}\n * The DOM element with the added class name.\n */\n\nfunction addClass(element, classToAdd) {\n if (element.classList) {\n element.classList.add(classToAdd); // Don't need to `throwIfWhitespace` here because `hasElClass` will do it\n // in the case of classList not being supported.\n } else if (!hasClass(element, classToAdd)) {\n element.className = (element.className + ' ' + classToAdd).trim();\n }\n\n return element;\n}\n/**\n * Remove a class name from an element.\n *\n * @param {Element} element\n * Element to remove a class name from.\n *\n * @param {string} classToRemove\n * Class name to remove\n *\n * @return {Element}\n * The DOM element with class name removed.\n */\n\nfunction removeClass(element, classToRemove) {\n // Protect in case the player gets disposed\n if (!element) {\n log$1.warn(\"removeClass was called with an element that doesn't exist\");\n return null;\n }\n\n if (element.classList) {\n element.classList.remove(classToRemove);\n } else {\n throwIfWhitespace(classToRemove);\n element.className = element.className.split(/\\s+/).filter(function (c) {\n return c !== classToRemove;\n }).join(' ');\n }\n\n return element;\n}\n/**\n * The callback definition for toggleClass.\n *\n * @callback module:dom~PredicateCallback\n * @param {Element} element\n * The DOM element of the Component.\n *\n * @param {string} classToToggle\n * The `className` that wants to be toggled\n *\n * @return {boolean|undefined}\n * If `true` is returned, the `classToToggle` will be added to the\n * `element`. If `false`, the `classToToggle` will be removed from\n * the `element`. If `undefined`, the callback will be ignored.\n */\n\n/**\n * Adds or removes a class name to/from an element depending on an optional\n * condition or the presence/absence of the class name.\n *\n * @param {Element} element\n * The element to toggle a class name on.\n *\n * @param {string} classToToggle\n * The class that should be toggled.\n *\n * @param {boolean|module:dom~PredicateCallback} [predicate]\n * See the return value for {@link module:dom~PredicateCallback}\n *\n * @return {Element}\n * The element with a class that has been toggled.\n */\n\nfunction toggleClass(element, classToToggle, predicate) {\n // This CANNOT use `classList` internally because IE11 does not support the\n // second parameter to the `classList.toggle()` method! Which is fine because\n // `classList` will be used by the add/remove functions.\n var has = hasClass(element, classToToggle);\n\n if (typeof predicate === 'function') {\n predicate = predicate(element, classToToggle);\n }\n\n if (typeof predicate !== 'boolean') {\n predicate = !has;\n } // If the necessary class operation matches the current state of the\n // element, no action is required.\n\n\n if (predicate === has) {\n return;\n }\n\n if (predicate) {\n addClass(element, classToToggle);\n } else {\n removeClass(element, classToToggle);\n }\n\n return element;\n}\n/**\n * Apply attributes to an HTML element.\n *\n * @param {Element} el\n * Element to add attributes to.\n *\n * @param {Object} [attributes]\n * Attributes to be applied.\n */\n\nfunction setAttributes(el, attributes) {\n Object.getOwnPropertyNames(attributes).forEach(function (attrName) {\n var attrValue = attributes[attrName];\n\n if (attrValue === null || typeof attrValue === 'undefined' || attrValue === false) {\n el.removeAttribute(attrName);\n } else {\n el.setAttribute(attrName, attrValue === true ? '' : attrValue);\n }\n });\n}\n/**\n * Get an element's attribute values, as defined on the HTML tag.\n *\n * Attributes are not the same as properties. They're defined on the tag\n * or with setAttribute.\n *\n * @param {Element} tag\n * Element from which to get tag attributes.\n *\n * @return {Object}\n * All attributes of the element. Boolean attributes will be `true` or\n * `false`, others will be strings.\n */\n\nfunction getAttributes(tag) {\n var obj = {}; // known boolean attributes\n // we can check for matching boolean properties, but not all browsers\n // and not all tags know about these attributes, so, we still want to check them manually\n\n var knownBooleans = ',' + 'autoplay,controls,playsinline,loop,muted,default,defaultMuted' + ',';\n\n if (tag && tag.attributes && tag.attributes.length > 0) {\n var attrs = tag.attributes;\n\n for (var i = attrs.length - 1; i >= 0; i--) {\n var attrName = attrs[i].name;\n var attrVal = attrs[i].value; // check for known booleans\n // the matching element property will return a value for typeof\n\n if (typeof tag[attrName] === 'boolean' || knownBooleans.indexOf(',' + attrName + ',') !== -1) {\n // the value of an included boolean attribute is typically an empty\n // string ('') which would equal false if we just check for a false value.\n // we also don't want support bad code like autoplay='false'\n attrVal = attrVal !== null ? true : false;\n }\n\n obj[attrName] = attrVal;\n }\n }\n\n return obj;\n}\n/**\n * Get the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to get the value of.\n *\n * @return {string}\n * The value of the attribute.\n */\n\nfunction getAttribute(el, attribute) {\n return el.getAttribute(attribute);\n}\n/**\n * Set the value of an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n */\n\nfunction setAttribute(el, attribute, value) {\n el.setAttribute(attribute, value);\n}\n/**\n * Remove an element's attribute.\n *\n * @param {Element} el\n * A DOM element.\n *\n * @param {string} attribute\n * Attribute to remove.\n */\n\nfunction removeAttribute(el, attribute) {\n el.removeAttribute(attribute);\n}\n/**\n * Attempt to block the ability to select text.\n */\n\nfunction blockTextSelection() {\n document.body.focus();\n\n document.onselectstart = function () {\n return false;\n };\n}\n/**\n * Turn off text selection blocking.\n */\n\nfunction unblockTextSelection() {\n document.onselectstart = function () {\n return true;\n };\n}\n/**\n * Identical to the native `getBoundingClientRect` function, but ensures that\n * the method is supported at all (it is in all browsers we claim to support)\n * and that the element is in the DOM before continuing.\n *\n * This wrapper function also shims properties which are not provided by some\n * older browsers (namely, IE8).\n *\n * Additionally, some browsers do not support adding properties to a\n * `ClientRect`/`DOMRect` object; so, we shallow-copy it with the standard\n * properties (except `x` and `y` which are not widely supported). This helps\n * avoid implementations where keys are non-enumerable.\n *\n * @param {Element} el\n * Element whose `ClientRect` we want to calculate.\n *\n * @return {Object|undefined}\n * Always returns a plain object - or `undefined` if it cannot.\n */\n\nfunction getBoundingClientRect(el) {\n if (el && el.getBoundingClientRect && el.parentNode) {\n var rect = el.getBoundingClientRect();\n var result = {};\n ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (k) {\n if (rect[k] !== undefined) {\n result[k] = rect[k];\n }\n });\n\n if (!result.height) {\n result.height = parseFloat(computedStyle(el, 'height'));\n }\n\n if (!result.width) {\n result.width = parseFloat(computedStyle(el, 'width'));\n }\n\n return result;\n }\n}\n/**\n * Represents the position of a DOM element on the page.\n *\n * @typedef {Object} module:dom~Position\n *\n * @property {number} left\n * Pixels to the left.\n *\n * @property {number} top\n * Pixels from the top.\n */\n\n/**\n * Get the position of an element in the DOM.\n *\n * Uses `getBoundingClientRect` technique from John Resig.\n *\n * @see http://ejohn.org/blog/getboundingclientrect-is-awesome/\n *\n * @param {Element} el\n * Element from which to get offset.\n *\n * @return {module:dom~Position}\n * The position of the element that was passed in.\n */\n\nfunction findPosition(el) {\n if (!el || el && !el.offsetParent) {\n return {\n left: 0,\n top: 0,\n width: 0,\n height: 0\n };\n }\n\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n var left = 0;\n var top = 0;\n\n while (el.offsetParent && el !== document[FullscreenApi.fullscreenElement]) {\n left += el.offsetLeft;\n top += el.offsetTop;\n el = el.offsetParent;\n }\n\n return {\n left: left,\n top: top,\n width: width,\n height: height\n };\n}\n/**\n * Represents x and y coordinates for a DOM element or mouse pointer.\n *\n * @typedef {Object} module:dom~Coordinates\n *\n * @property {number} x\n * x coordinate in pixels\n *\n * @property {number} y\n * y coordinate in pixels\n */\n\n/**\n * Get the pointer position within an element.\n *\n * The base on the coordinates are the bottom left of the element.\n *\n * @param {Element} el\n * Element on which to get the pointer position on.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {module:dom~Coordinates}\n * A coordinates object corresponding to the mouse position.\n *\n */\n\nfunction getPointerPosition(el, event) {\n var translated = {\n x: 0,\n y: 0\n };\n\n if (IS_IOS) {\n var item = el;\n\n while (item && item.nodeName.toLowerCase() !== 'html') {\n var transform = computedStyle(item, 'transform');\n\n if (/^matrix/.test(transform)) {\n var values = transform.slice(7, -1).split(/,\\s/).map(Number);\n translated.x += values[4];\n translated.y += values[5];\n } else if (/^matrix3d/.test(transform)) {\n var _values = transform.slice(9, -1).split(/,\\s/).map(Number);\n\n translated.x += _values[12];\n translated.y += _values[13];\n }\n\n item = item.parentNode;\n }\n }\n\n var position = {};\n var boxTarget = findPosition(event.target);\n var box = findPosition(el);\n var boxW = box.width;\n var boxH = box.height;\n var offsetY = event.offsetY - (box.top - boxTarget.top);\n var offsetX = event.offsetX - (box.left - boxTarget.left);\n\n if (event.changedTouches) {\n offsetX = event.changedTouches[0].pageX - box.left;\n offsetY = event.changedTouches[0].pageY + box.top;\n\n if (IS_IOS) {\n offsetX -= translated.x;\n offsetY -= translated.y;\n }\n }\n\n position.y = 1 - Math.max(0, Math.min(1, offsetY / boxH));\n position.x = Math.max(0, Math.min(1, offsetX / boxW));\n return position;\n}\n/**\n * Determines, via duck typing, whether or not a value is a text node.\n *\n * @param {Mixed} value\n * Check if this value is a text node.\n *\n * @return {boolean}\n * Will be `true` if the value is a text node, `false` otherwise.\n */\n\nfunction isTextNode(value) {\n return isObject(value) && value.nodeType === 3;\n}\n/**\n * Empties the contents of an element.\n *\n * @param {Element} el\n * The element to empty children from\n *\n * @return {Element}\n * The element with no children\n */\n\nfunction emptyEl(el) {\n while (el.firstChild) {\n el.removeChild(el.firstChild);\n }\n\n return el;\n}\n/**\n * This is a mixed value that describes content to be injected into the DOM\n * via some method. It can be of the following types:\n *\n * Type | Description\n * -----------|-------------\n * `string` | The value will be normalized into a text node.\n * `Element` | The value will be accepted as-is.\n * `TextNode` | The value will be accepted as-is.\n * `Array` | A one-dimensional array of strings, elements, text nodes, or functions. These functions should return a string, element, or text node (any other return value, like an array, will be ignored).\n * `Function` | A function, which is expected to return a string, element, text node, or array - any of the other possible values described above. This means that a content descriptor could be a function that returns an array of functions, but those second-level functions must return strings, elements, or text nodes.\n *\n * @typedef {string|Element|TextNode|Array|Function} module:dom~ContentDescriptor\n */\n\n/**\n * Normalizes content for eventual insertion into the DOM.\n *\n * This allows a wide range of content definition methods, but helps protect\n * from falling into the trap of simply writing to `innerHTML`, which could\n * be an XSS concern.\n *\n * The content for an element can be passed in multiple types and\n * combinations, whose behavior is as follows:\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Array}\n * All of the content that was passed in, normalized to an array of\n * elements or text nodes.\n */\n\nfunction normalizeContent(content) {\n // First, invoke content if it is a function. If it produces an array,\n // that needs to happen before normalization.\n if (typeof content === 'function') {\n content = content();\n } // Next up, normalize to an array, so one or many items can be normalized,\n // filtered, and returned.\n\n\n return (Array.isArray(content) ? content : [content]).map(function (value) {\n // First, invoke value if it is a function to produce a new value,\n // which will be subsequently normalized to a Node of some kind.\n if (typeof value === 'function') {\n value = value();\n }\n\n if (isEl(value) || isTextNode(value)) {\n return value;\n }\n\n if (typeof value === 'string' && /\\S/.test(value)) {\n return document.createTextNode(value);\n }\n }).filter(function (value) {\n return value;\n });\n}\n/**\n * Normalizes and appends content to an element.\n *\n * @param {Element} el\n * Element to append normalized content to.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with appended normalized content.\n */\n\nfunction appendContent(el, content) {\n normalizeContent(content).forEach(function (node) {\n return el.appendChild(node);\n });\n return el;\n}\n/**\n * Normalizes and inserts content into an element; this is identical to\n * `appendContent()`, except it empties the element first.\n *\n * @param {Element} el\n * Element to insert normalized content into.\n *\n * @param {module:dom~ContentDescriptor} content\n * A content descriptor value.\n *\n * @return {Element}\n * The element with inserted normalized content.\n */\n\nfunction insertContent(el, content) {\n return appendContent(emptyEl(el), content);\n}\n/**\n * Check if an event was a single left click.\n *\n * @param {EventTarget~Event} event\n * Event object.\n *\n * @return {boolean}\n * Will be `true` if a single left click, `false` otherwise.\n */\n\nfunction isSingleLeftClick(event) {\n // Note: if you create something draggable, be sure to\n // call it on both `mousedown` and `mousemove` event,\n // otherwise `mousedown` should be enough for a button\n if (event.button === undefined && event.buttons === undefined) {\n // Why do we need `buttons` ?\n // Because, middle mouse sometimes have this:\n // e.button === 0 and e.buttons === 4\n // Furthermore, we want to prevent combination click, something like\n // HOLD middlemouse then left click, that would be\n // e.button === 0, e.buttons === 5\n // just `button` is not gonna work\n // Alright, then what this block does ?\n // this is for chrome `simulate mobile devices`\n // I want to support this as well\n return true;\n }\n\n if (event.button === 0 && event.buttons === undefined) {\n // Touch screen, sometimes on some specific device, `buttons`\n // doesn't have anything (safari on ios, blackberry...)\n return true;\n } // `mouseup` event on a single left click has\n // `button` and `buttons` equal to 0\n\n\n if (event.type === 'mouseup' && event.button === 0 && event.buttons === 0) {\n return true;\n }\n\n if (event.button !== 0 || event.buttons !== 1) {\n // This is the reason we have those if else block above\n // if any special case we can catch and let it slide\n // we do it above, when get to here, this definitely\n // is-not-left-click\n return false;\n }\n\n return true;\n}\n/**\n * Finds a single DOM element matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {Element|null}\n * The element that was found or null.\n */\n\nvar $ = createQuerier('querySelector');\n/**\n * Finds a all DOM elements matching `selector` within the optional\n * `context` of another DOM element (defaulting to `document`).\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|String} [context=document]\n * A DOM element within which to query. Can also be a selector\n * string in which case the first matching element will be used\n * as context. If missing (or no element matches selector), falls\n * back to `document`.\n *\n * @return {NodeList}\n * A element list of elements that were found. Will be empty if none\n * were found.\n *\n */\n\nvar $$ = createQuerier('querySelectorAll');\n\nvar Dom = /*#__PURE__*/Object.freeze({\n __proto__: null,\n isReal: isReal,\n isEl: isEl,\n isInFrame: isInFrame,\n createEl: createEl,\n textContent: textContent,\n prependTo: prependTo,\n hasClass: hasClass,\n addClass: addClass,\n removeClass: removeClass,\n toggleClass: toggleClass,\n setAttributes: setAttributes,\n getAttributes: getAttributes,\n getAttribute: getAttribute,\n setAttribute: setAttribute,\n removeAttribute: removeAttribute,\n blockTextSelection: blockTextSelection,\n unblockTextSelection: unblockTextSelection,\n getBoundingClientRect: getBoundingClientRect,\n findPosition: findPosition,\n getPointerPosition: getPointerPosition,\n isTextNode: isTextNode,\n emptyEl: emptyEl,\n normalizeContent: normalizeContent,\n appendContent: appendContent,\n insertContent: insertContent,\n isSingleLeftClick: isSingleLeftClick,\n $: $,\n $$: $$\n});\n\n/**\n * @file setup.js - Functions for setting up a player without\n * user interaction based on the data-setup `attribute` of the video tag.\n *\n * @module setup\n */\nvar _windowLoaded = false;\nvar videojs$1;\n/**\n * Set up any tags that have a data-setup `attribute` when the player is started.\n */\n\nvar autoSetup = function autoSetup() {\n if (videojs$1.options.autoSetup === false) {\n return;\n }\n\n var vids = Array.prototype.slice.call(document.getElementsByTagName('video'));\n var audios = Array.prototype.slice.call(document.getElementsByTagName('audio'));\n var divs = Array.prototype.slice.call(document.getElementsByTagName('video-js'));\n var mediaEls = vids.concat(audios, divs); // Check if any media elements exist\n\n if (mediaEls && mediaEls.length > 0) {\n for (var i = 0, e = mediaEls.length; i < e; i++) {\n var mediaEl = mediaEls[i]; // Check if element exists, has getAttribute func.\n\n if (mediaEl && mediaEl.getAttribute) {\n // Make sure this player hasn't already been set up.\n if (mediaEl.player === undefined) {\n var options = mediaEl.getAttribute('data-setup'); // Check if data-setup attr exists.\n // We only auto-setup if they've added the data-setup attr.\n\n if (options !== null) {\n // Create new video.js instance.\n videojs$1(mediaEl);\n }\n } // If getAttribute isn't defined, we need to wait for the DOM.\n\n } else {\n autoSetupTimeout(1);\n break;\n }\n } // No videos were found, so keep looping unless page is finished loading.\n\n } else if (!_windowLoaded) {\n autoSetupTimeout(1);\n }\n};\n/**\n * Wait until the page is loaded before running autoSetup. This will be called in\n * autoSetup if `hasLoaded` returns false.\n *\n * @param {number} wait\n * How long to wait in ms\n *\n * @param {module:videojs} [vjs]\n * The videojs library function\n */\n\n\nfunction autoSetupTimeout(wait, vjs) {\n // Protect against breakage in non-browser environments\n if (!isReal()) {\n return;\n }\n\n if (vjs) {\n videojs$1 = vjs;\n }\n\n window.setTimeout(autoSetup, wait);\n}\n/**\n * Used to set the internal tracking of window loaded state to true.\n *\n * @private\n */\n\n\nfunction setWindowLoaded() {\n _windowLoaded = true;\n window.removeEventListener('load', setWindowLoaded);\n}\n\nif (isReal()) {\n if (document.readyState === 'complete') {\n setWindowLoaded();\n } else {\n /**\n * Listen for the load event on window, and set _windowLoaded to true.\n *\n * We use a standard event listener here to avoid incrementing the GUID\n * before any players are created.\n *\n * @listens load\n */\n window.addEventListener('load', setWindowLoaded);\n }\n}\n\n/**\n * @file stylesheet.js\n * @module stylesheet\n */\n/**\n * Create a DOM syle element given a className for it.\n *\n * @param {string} className\n * The className to add to the created style element.\n *\n * @return {Element}\n * The element that was created.\n */\n\nvar createStyleElement = function createStyleElement(className) {\n var style = document.createElement('style');\n style.className = className;\n return style;\n};\n/**\n * Add text to a DOM element.\n *\n * @param {Element} el\n * The Element to add text content to.\n *\n * @param {string} content\n * The text to add to the element.\n */\n\nvar setTextContent = function setTextContent(el, content) {\n if (el.styleSheet) {\n el.styleSheet.cssText = content;\n } else {\n el.textContent = content;\n }\n};\n\n/**\n * @file guid.js\n * @module guid\n */\n// Default value for GUIDs. This allows us to reset the GUID counter in tests.\n//\n// The initial GUID is 3 because some users have come to rely on the first\n// default player ID ending up as `vjs_video_3`.\n//\n// See: https://github.com/videojs/video.js/pull/6216\nvar _initialGuid = 3;\n/**\n * Unique ID for an element or function\n *\n * @type {Number}\n */\n\nvar _guid = _initialGuid;\n/**\n * Get a unique auto-incrementing ID by number that has not been returned before.\n *\n * @return {number}\n * A new unique ID.\n */\n\nfunction newGUID() {\n return _guid++;\n}\n\n/**\n * @file dom-data.js\n * @module dom-data\n */\nvar FakeWeakMap;\n\nif (!window.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window.performance && window.performance.now() || Date.now());\n this.data = {};\n }\n\n var _proto = FakeWeakMap.prototype;\n\n _proto.set = function set(key, value) {\n var access = key[this.vdata] || newGUID();\n\n if (!key[this.vdata]) {\n key[this.vdata] = access;\n }\n\n this.data[access] = value;\n return this;\n };\n\n _proto.get = function get(key) {\n var access = key[this.vdata]; // we have data, return it\n\n if (access) {\n return this.data[access];\n } // we don't have data, return nothing.\n // return undefined explicitly as that's the contract for this method\n\n\n log$1('We have no data for this element', key);\n return undefined;\n };\n\n _proto.has = function has(key) {\n var access = key[this.vdata];\n return access in this.data;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var access = key[this.vdata];\n\n if (access) {\n delete this.data[access];\n delete key[this.vdata];\n }\n };\n\n return FakeWeakMap;\n }();\n}\n/**\n * Element Data Store.\n *\n * Allows for binding data to an element without putting it directly on the\n * element. Ex. Event listeners are stored here.\n * (also from jsninja.com, slightly modified and updated for closure compiler)\n *\n * @type {Object}\n * @private\n */\n\n\nvar DomData = window.WeakMap ? new WeakMap() : new FakeWeakMap();\n\n/**\n * @file events.js. An Event System (John Resig - Secrets of a JS Ninja http://jsninja.com/)\n * (Original book version wasn't completely usable, so fixed some things and made Closure Compiler compatible)\n * This should work very similarly to jQuery's events, however it's based off the book version which isn't as\n * robust as jquery's, so there's probably some differences.\n *\n * @file events.js\n * @module events\n */\n/**\n * Clean up the listener cache and dispatchers\n *\n * @param {Element|Object} elem\n * Element to clean up\n *\n * @param {string} type\n * Type of event to clean up\n */\n\nfunction _cleanUpEvents(elem, type) {\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // Remove the events of a particular type if there are none left\n\n if (data.handlers[type].length === 0) {\n delete data.handlers[type]; // data.handlers[type] = null;\n // Setting to null was causing an error with data.handlers\n // Remove the meta-handler from the element\n\n if (elem.removeEventListener) {\n elem.removeEventListener(type, data.dispatcher, false);\n } else if (elem.detachEvent) {\n elem.detachEvent('on' + type, data.dispatcher);\n }\n } // Remove the events object if there are no types left\n\n\n if (Object.getOwnPropertyNames(data.handlers).length <= 0) {\n delete data.handlers;\n delete data.dispatcher;\n delete data.disabled;\n } // Finally remove the element data if there is no data left\n\n\n if (Object.getOwnPropertyNames(data).length === 0) {\n DomData[\"delete\"](elem);\n }\n}\n/**\n * Loops through an array of event types and calls the requested method for each type.\n *\n * @param {Function} fn\n * The event method we want to use.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} callback\n * Event listener.\n */\n\n\nfunction _handleMultipleEvents(fn, elem, types, callback) {\n types.forEach(function (type) {\n // Call the event method for each one of the types\n fn(elem, type, callback);\n });\n}\n/**\n * Fix a native event to have standard property values\n *\n * @param {Object} event\n * Event object to fix.\n *\n * @return {Object}\n * Fixed event object.\n */\n\n\nfunction fixEvent(event) {\n if (event.fixed_) {\n return event;\n }\n\n function returnTrue() {\n return true;\n }\n\n function returnFalse() {\n return false;\n } // Test if fixing up is needed\n // Used to check if !event.stopPropagation instead of isPropagationStopped\n // But native events return true for stopPropagation, but don't have\n // other expected methods like isPropagationStopped. Seems to be a problem\n // with the Javascript Ninja code. So we're just overriding all events now.\n\n\n if (!event || !event.isPropagationStopped || !event.isImmediatePropagationStopped) {\n var old = event || window.event;\n event = {}; // Clone the old object so that we can modify the values event = {};\n // IE8 Doesn't like when you mess with native event properties\n // Firefox returns false for event.hasOwnProperty('type') and other props\n // which makes copying more difficult.\n // TODO: Probably best to create a whitelist of event props\n\n for (var key in old) {\n // Safari 6.0.3 warns you if you try to copy deprecated layerX/Y\n // Chrome warns you if you try to copy deprecated keyboardEvent.keyLocation\n // and webkitMovementX/Y\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY') {\n // Chrome 32+ warns if you try to copy deprecated returnValue, but\n // we still want to if preventDefault isn't supported (IE8).\n if (!(key === 'returnValue' && old.preventDefault)) {\n event[key] = old[key];\n }\n }\n } // The event occurred on this element\n\n\n if (!event.target) {\n event.target = event.srcElement || document;\n } // Handle which other element the event is related to\n\n\n if (!event.relatedTarget) {\n event.relatedTarget = event.fromElement === event.target ? event.toElement : event.fromElement;\n } // Stop the default browser action\n\n\n event.preventDefault = function () {\n if (old.preventDefault) {\n old.preventDefault();\n }\n\n event.returnValue = false;\n old.returnValue = false;\n event.defaultPrevented = true;\n };\n\n event.defaultPrevented = false; // Stop the event from bubbling\n\n event.stopPropagation = function () {\n if (old.stopPropagation) {\n old.stopPropagation();\n }\n\n event.cancelBubble = true;\n old.cancelBubble = true;\n event.isPropagationStopped = returnTrue;\n };\n\n event.isPropagationStopped = returnFalse; // Stop the event from bubbling and executing other handlers\n\n event.stopImmediatePropagation = function () {\n if (old.stopImmediatePropagation) {\n old.stopImmediatePropagation();\n }\n\n event.isImmediatePropagationStopped = returnTrue;\n event.stopPropagation();\n };\n\n event.isImmediatePropagationStopped = returnFalse; // Handle mouse position\n\n if (event.clientX !== null && event.clientX !== undefined) {\n var doc = document.documentElement;\n var body = document.body;\n event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } // Handle key presses\n\n\n event.which = event.charCode || event.keyCode; // Fix button for mouse clicks:\n // 0 == left; 1 == middle; 2 == right\n\n if (event.button !== null && event.button !== undefined) {\n // The following is disabled because it does not pass videojs-standard\n // and... yikes.\n\n /* eslint-disable */\n event.button = event.button & 1 ? 0 : event.button & 4 ? 1 : event.button & 2 ? 2 : 0;\n /* eslint-enable */\n }\n }\n\n event.fixed_ = true; // Returns fixed-up instance\n\n return event;\n}\n/**\n * Whether passive event listeners are supported\n */\n\nvar _supportsPassive;\n\nvar supportsPassive = function supportsPassive() {\n if (typeof _supportsPassive !== 'boolean') {\n _supportsPassive = false;\n\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n _supportsPassive = true;\n }\n });\n window.addEventListener('test', null, opts);\n window.removeEventListener('test', null, opts);\n } catch (e) {// disregard\n }\n }\n\n return _supportsPassive;\n};\n/**\n * Touch events Chrome expects to be passive\n */\n\n\nvar passiveEvents = ['touchstart', 'touchmove'];\n/**\n * Add an event listener to element\n * It stores the handler function in a separate cache object\n * and adds a generic handler to the element's event,\n * along with a unique id (guid) to the element.\n *\n * @param {Element|Object} elem\n * Element or object to bind listeners to\n *\n * @param {string|string[]} type\n * Type of event to bind to.\n *\n * @param {EventTarget~EventListener} fn\n * Event listener.\n */\n\nfunction on(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(on, elem, type, fn);\n }\n\n if (!DomData.has(elem)) {\n DomData.set(elem, {});\n }\n\n var data = DomData.get(elem); // We need a place to store all our handler data\n\n if (!data.handlers) {\n data.handlers = {};\n }\n\n if (!data.handlers[type]) {\n data.handlers[type] = [];\n }\n\n if (!fn.guid) {\n fn.guid = newGUID();\n }\n\n data.handlers[type].push(fn);\n\n if (!data.dispatcher) {\n data.disabled = false;\n\n data.dispatcher = function (event, hash) {\n if (data.disabled) {\n return;\n }\n\n event = fixEvent(event);\n var handlers = data.handlers[event.type];\n\n if (handlers) {\n // Copy handlers so if handlers are added/removed during the process it doesn't throw everything off.\n var handlersCopy = handlers.slice(0);\n\n for (var m = 0, n = handlersCopy.length; m < n; m++) {\n if (event.isImmediatePropagationStopped()) {\n break;\n } else {\n try {\n handlersCopy[m].call(elem, event, hash);\n } catch (e) {\n log$1.error(e);\n }\n }\n }\n }\n };\n }\n\n if (data.handlers[type].length === 1) {\n if (elem.addEventListener) {\n var options = false;\n\n if (supportsPassive() && passiveEvents.indexOf(type) > -1) {\n options = {\n passive: true\n };\n }\n\n elem.addEventListener(type, data.dispatcher, options);\n } else if (elem.attachEvent) {\n elem.attachEvent('on' + type, data.dispatcher);\n }\n }\n}\n/**\n * Removes event listeners from an element\n *\n * @param {Element|Object} elem\n * Object to remove listeners from.\n *\n * @param {string|string[]} [type]\n * Type of listener to remove. Don't include to remove all events from element.\n *\n * @param {EventTarget~EventListener} [fn]\n * Specific listener to remove. Don't include to remove listeners for an event\n * type.\n */\n\nfunction off(elem, type, fn) {\n // Don't want to add a cache object through getElData if not needed\n if (!DomData.has(elem)) {\n return;\n }\n\n var data = DomData.get(elem); // If no events exist, nothing to unbind\n\n if (!data.handlers) {\n return;\n }\n\n if (Array.isArray(type)) {\n return _handleMultipleEvents(off, elem, type, fn);\n } // Utility function\n\n\n var removeType = function removeType(el, t) {\n data.handlers[t] = [];\n\n _cleanUpEvents(el, t);\n }; // Are we removing all bound events?\n\n\n if (type === undefined) {\n for (var t in data.handlers) {\n if (Object.prototype.hasOwnProperty.call(data.handlers || {}, t)) {\n removeType(elem, t);\n }\n }\n\n return;\n }\n\n var handlers = data.handlers[type]; // If no handlers exist, nothing to unbind\n\n if (!handlers) {\n return;\n } // If no listener was provided, remove all listeners for type\n\n\n if (!fn) {\n removeType(elem, type);\n return;\n } // We're only removing a single handler\n\n\n if (fn.guid) {\n for (var n = 0; n < handlers.length; n++) {\n if (handlers[n].guid === fn.guid) {\n handlers.splice(n--, 1);\n }\n }\n }\n\n _cleanUpEvents(elem, type);\n}\n/**\n * Trigger an event for an element\n *\n * @param {Element|Object} elem\n * Element to trigger an event on\n *\n * @param {EventTarget~Event|string} event\n * A string (the type) or an event object with a type attribute\n *\n * @param {Object} [hash]\n * data hash to pass along with the event\n *\n * @return {boolean|undefined}\n * Returns the opposite of `defaultPrevented` if default was\n * prevented. Otherwise, returns `undefined`\n */\n\nfunction trigger(elem, event, hash) {\n // Fetches element data and a reference to the parent (for bubbling).\n // Don't want to add a data object to cache for every parent,\n // so checking hasElData first.\n var elemData = DomData.has(elem) ? DomData.get(elem) : {};\n var parent = elem.parentNode || elem.ownerDocument; // type = event.type || event,\n // handler;\n // If an event name was passed as a string, creates an event out of it\n\n if (typeof event === 'string') {\n event = {\n type: event,\n target: elem\n };\n } else if (!event.target) {\n event.target = elem;\n } // Normalizes the event properties.\n\n\n event = fixEvent(event); // If the passed element has a dispatcher, executes the established handlers.\n\n if (elemData.dispatcher) {\n elemData.dispatcher.call(elem, event, hash);\n } // Unless explicitly stopped or the event does not bubble (e.g. media events)\n // recursively calls this function to bubble the event up the DOM.\n\n\n if (parent && !event.isPropagationStopped() && event.bubbles === true) {\n trigger.call(null, parent, event, hash); // If at the top of the DOM, triggers the default action unless disabled.\n } else if (!parent && !event.defaultPrevented && event.target && event.target[event.type]) {\n if (!DomData.has(event.target)) {\n DomData.set(event.target, {});\n }\n\n var targetData = DomData.get(event.target); // Checks if the target has a default action for this event.\n\n if (event.target[event.type]) {\n // Temporarily disables event dispatching on the target as we have already executed the handler.\n targetData.disabled = true; // Executes the default action.\n\n if (typeof event.target[event.type] === 'function') {\n event.target[event.type]();\n } // Re-enables event dispatching.\n\n\n targetData.disabled = false;\n }\n } // Inform the triggerer if the default was prevented by returning false\n\n\n return !event.defaultPrevented;\n}\n/**\n * Trigger a listener only once for an event.\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction one(elem, type, fn) {\n if (Array.isArray(type)) {\n return _handleMultipleEvents(one, elem, type, fn);\n }\n\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID();\n on(elem, type, func);\n}\n/**\n * Trigger a listener only once and then turn if off for all\n * configured events\n *\n * @param {Element|Object} elem\n * Element or object to bind to.\n *\n * @param {string|string[]} type\n * Name/type of event\n *\n * @param {Event~EventListener} fn\n * Event listener function\n */\n\nfunction any(elem, type, fn) {\n var func = function func() {\n off(elem, type, func);\n fn.apply(this, arguments);\n }; // copy the guid to the new function so it can removed using the original function's ID\n\n\n func.guid = fn.guid = fn.guid || newGUID(); // multiple ons, but one off for everything\n\n on(elem, type, func);\n}\n\nvar Events = /*#__PURE__*/Object.freeze({\n __proto__: null,\n fixEvent: fixEvent,\n on: on,\n off: off,\n trigger: trigger,\n one: one,\n any: any\n});\n\n/**\n * @file fn.js\n * @module fn\n */\nvar UPDATE_REFRESH_INTERVAL = 30;\n/**\n * Bind (a.k.a proxy or context). A simple method for changing the context of\n * a function.\n *\n * It also stores a unique id on the function so it can be easily removed from\n * events.\n *\n * @function\n * @param {Mixed} context\n * The object to bind as scope.\n *\n * @param {Function} fn\n * The function to be bound to a scope.\n *\n * @param {number} [uid]\n * An optional unique ID for the function to be set\n *\n * @return {Function}\n * The new function that will be bound into the context given\n */\n\nvar bind = function bind(context, fn, uid) {\n // Make sure the function has a unique ID\n if (!fn.guid) {\n fn.guid = newGUID();\n } // Create the new function that changes the context\n\n\n var bound = fn.bind(context); // Allow for the ability to individualize this function\n // Needed in the case where multiple objects might share the same prototype\n // IF both items add an event listener with the same function, then you try to remove just one\n // it will remove both because they both have the same guid.\n // when using this, you need to use the bind method when you remove the listener as well.\n // currently used in text tracks\n\n bound.guid = uid ? uid + '_' + fn.guid : fn.guid;\n return bound;\n};\n/**\n * Wraps the given function, `fn`, with a new function that only invokes `fn`\n * at most once per every `wait` milliseconds.\n *\n * @function\n * @param {Function} fn\n * The function to be throttled.\n *\n * @param {number} wait\n * The number of milliseconds by which to throttle.\n *\n * @return {Function}\n */\n\nvar throttle = function throttle(fn, wait) {\n var last = window.performance.now();\n\n var throttled = function throttled() {\n var now = window.performance.now();\n\n if (now - last >= wait) {\n fn.apply(void 0, arguments);\n last = now;\n }\n };\n\n return throttled;\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked.\n *\n * Inspired by lodash and underscore implementations.\n *\n * @function\n * @param {Function} func\n * The function to wrap with debounce behavior.\n *\n * @param {number} wait\n * The number of milliseconds to wait after the last invocation.\n *\n * @param {boolean} [immediate]\n * Whether or not to invoke the function immediately upon creation.\n *\n * @param {Object} [context=window]\n * The \"context\" in which the debounced function should debounce. For\n * example, if this function should be tied to a Video.js player,\n * the player can be passed here. Alternatively, defaults to the\n * global `window` object.\n *\n * @return {Function}\n * A debounced function.\n */\n\nvar debounce = function debounce(func, wait, immediate, context) {\n if (context === void 0) {\n context = window;\n }\n\n var timeout;\n\n var cancel = function cancel() {\n context.clearTimeout(timeout);\n timeout = null;\n };\n /* eslint-disable consistent-this */\n\n\n var debounced = function debounced() {\n var self = this;\n var args = arguments;\n\n var _later = function later() {\n timeout = null;\n _later = null;\n\n if (!immediate) {\n func.apply(self, args);\n }\n };\n\n if (!timeout && immediate) {\n func.apply(self, args);\n }\n\n context.clearTimeout(timeout);\n timeout = context.setTimeout(_later, wait);\n };\n /* eslint-enable consistent-this */\n\n\n debounced.cancel = cancel;\n return debounced;\n};\n\n/**\n * @file src/js/event-target.js\n */\n/**\n * `EventTarget` is a class that can have the same API as the DOM `EventTarget`. It\n * adds shorthand functions that wrap around lengthy functions. For example:\n * the `on` function is a wrapper around `addEventListener`.\n *\n * @see [EventTarget Spec]{@link https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-EventTarget}\n * @class EventTarget\n */\n\nvar EventTarget$2 = function EventTarget() {};\n/**\n * A Custom DOM event.\n *\n * @typedef {Object} EventTarget~Event\n * @see [Properties]{@link https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent}\n */\n\n/**\n * All event listeners should follow the following format.\n *\n * @callback EventTarget~EventListener\n * @this {EventTarget}\n *\n * @param {EventTarget~Event} event\n * the event that triggered this function\n *\n * @param {Object} [hash]\n * hash of data sent during the event\n */\n\n/**\n * An object containing event names as keys and booleans as values.\n *\n * > NOTE: If an event name is set to a true value here {@link EventTarget#trigger}\n * will have extra functionality. See that function for more information.\n *\n * @property EventTarget.prototype.allowedEvents_\n * @private\n */\n\n\nEventTarget$2.prototype.allowedEvents_ = {};\n/**\n * Adds an `event listener` to an instance of an `EventTarget`. An `event listener` is a\n * function that will get called when an event with a certain name gets triggered.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to call with `EventTarget`s\n */\n\nEventTarget$2.prototype.on = function (type, fn) {\n // Remove the addEventListener alias before calling Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n on(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * An alias of {@link EventTarget#on}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#on}\n */\n\n\nEventTarget$2.prototype.addEventListener = EventTarget$2.prototype.on;\n/**\n * Removes an `event listener` for a specific event from an instance of `EventTarget`.\n * This makes it so that the `event listener` will no longer get called when the\n * named event happens.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to remove.\n */\n\nEventTarget$2.prototype.off = function (type, fn) {\n off(this, type, fn);\n};\n/**\n * An alias of {@link EventTarget#off}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#off}\n */\n\n\nEventTarget$2.prototype.removeEventListener = EventTarget$2.prototype.off;\n/**\n * This function will add an `event listener` that gets triggered only once. After the\n * first trigger it will get removed. This is like adding an `event listener`\n * with {@link EventTarget#on} that calls {@link EventTarget#off} on itself.\n *\n * @param {string|string[]} type\n * An event name or an array of event names.\n *\n * @param {EventTarget~EventListener} fn\n * The function to be called once for each event name.\n */\n\nEventTarget$2.prototype.one = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n one(this, type, fn);\n this.addEventListener = ael;\n};\n\nEventTarget$2.prototype.any = function (type, fn) {\n // Remove the addEventListener aliasing Events.on\n // so we don't get into an infinite type loop\n var ael = this.addEventListener;\n\n this.addEventListener = function () {};\n\n any(this, type, fn);\n this.addEventListener = ael;\n};\n/**\n * This function causes an event to happen. This will then cause any `event listeners`\n * that are waiting for that event, to get called. If there are no `event listeners`\n * for an event then nothing will happen.\n *\n * If the name of the `Event` that is being triggered is in `EventTarget.allowedEvents_`.\n * Trigger will also call the `on` + `uppercaseEventName` function.\n *\n * Example:\n * 'click' is in `EventTarget.allowedEvents_`, so, trigger will attempt to call\n * `onClick` if it exists.\n *\n * @param {string|EventTarget~Event|Object} event\n * The name of the event, an `Event`, or an object with a key of type set to\n * an event name.\n */\n\n\nEventTarget$2.prototype.trigger = function (event) {\n var type = event.type || event; // deprecation\n // In a future version we should default target to `this`\n // similar to how we default the target to `elem` in\n // `Events.trigger`. Right now the default `target` will be\n // `document` due to the `Event.fixEvent` call.\n\n if (typeof event === 'string') {\n event = {\n type: type\n };\n }\n\n event = fixEvent(event);\n\n if (this.allowedEvents_[type] && this['on' + type]) {\n this['on' + type](event);\n }\n\n trigger(this, event);\n};\n/**\n * An alias of {@link EventTarget#trigger}. Allows `EventTarget` to mimic\n * the standard DOM API.\n *\n * @function\n * @see {@link EventTarget#trigger}\n */\n\n\nEventTarget$2.prototype.dispatchEvent = EventTarget$2.prototype.trigger;\nvar EVENT_MAP;\n\nEventTarget$2.prototype.queueTrigger = function (event) {\n var _this = this;\n\n // only set up EVENT_MAP if it'll be used\n if (!EVENT_MAP) {\n EVENT_MAP = new Map();\n }\n\n var type = event.type || event;\n var map = EVENT_MAP.get(this);\n\n if (!map) {\n map = new Map();\n EVENT_MAP.set(this, map);\n }\n\n var oldTimeout = map.get(type);\n map[\"delete\"](type);\n window.clearTimeout(oldTimeout);\n var timeout = window.setTimeout(function () {\n // if we cleared out all timeouts for the current target, delete its map\n if (map.size === 0) {\n map = null;\n EVENT_MAP[\"delete\"](_this);\n }\n\n _this.trigger(event);\n }, 0);\n map.set(type, timeout);\n};\n\n/**\n * @file mixins/evented.js\n * @module evented\n */\n\nvar objName = function objName(obj) {\n if (typeof obj.name === 'function') {\n return obj.name();\n }\n\n if (typeof obj.name === 'string') {\n return obj.name;\n }\n\n if (obj.name_) {\n return obj.name_;\n }\n\n if (obj.constructor && obj.constructor.name) {\n return obj.constructor.name;\n }\n\n return typeof obj;\n};\n/**\n * Returns whether or not an object has had the evented mixin applied.\n *\n * @param {Object} object\n * An object to test.\n *\n * @return {boolean}\n * Whether or not the object appears to be evented.\n */\n\n\nvar isEvented = function isEvented(object) {\n return object instanceof EventTarget$2 || !!object.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (k) {\n return typeof object[k] === 'function';\n });\n};\n/**\n * Adds a callback to run after the evented mixin applied.\n *\n * @param {Object} object\n * An object to Add\n * @param {Function} callback\n * The callback to run.\n */\n\n\nvar addEventedCallback = function addEventedCallback(target, callback) {\n if (isEvented(target)) {\n callback();\n } else {\n if (!target.eventedCallbacks) {\n target.eventedCallbacks = [];\n }\n\n target.eventedCallbacks.push(callback);\n }\n};\n/**\n * Whether a value is a valid event type - non-empty string or array.\n *\n * @private\n * @param {string|Array} type\n * The type value to test.\n *\n * @return {boolean}\n * Whether or not the type is a valid event type.\n */\n\n\nvar isValidEventType = function isValidEventType(type) {\n return (// The regex here verifies that the `type` contains at least one non-\n // whitespace character.\n typeof type === 'string' && /\\S/.test(type) || Array.isArray(type) && !!type.length\n );\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the target does not appear to be a valid event target.\n *\n * @param {Object} target\n * The object to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateTarget = function validateTarget(target, obj, fnName) {\n if (!target || !target.nodeName && !isEvented(target)) {\n throw new Error(\"Invalid target for \" + objName(obj) + \"#\" + fnName + \"; must be a DOM node or evented object.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid event target. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the type does not appear to be a valid event type.\n *\n * @param {string|Array} type\n * The type to test.\n *\n * @param {Object} obj\n* The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateEventType = function validateEventType(type, obj, fnName) {\n if (!isValidEventType(type)) {\n throw new Error(\"Invalid event type for \" + objName(obj) + \"#\" + fnName + \"; must be a non-empty string or array.\");\n }\n};\n/**\n * Validates a value to determine if it is a valid listener. Throws if not.\n *\n * @private\n * @throws {Error}\n * If the listener is not a function.\n *\n * @param {Function} listener\n * The listener to test.\n *\n * @param {Object} obj\n * The evented object we are validating for\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n */\n\n\nvar validateListener = function validateListener(listener, obj, fnName) {\n if (typeof listener !== 'function') {\n throw new Error(\"Invalid listener for \" + objName(obj) + \"#\" + fnName + \"; must be a function.\");\n }\n};\n/**\n * Takes an array of arguments given to `on()` or `one()`, validates them, and\n * normalizes them into an object.\n *\n * @private\n * @param {Object} self\n * The evented object on which `on()` or `one()` was called. This\n * object will be bound as the `this` value for the listener.\n *\n * @param {Array} args\n * An array of arguments passed to `on()` or `one()`.\n *\n * @param {string} fnName\n * The name of the evented mixin function that called this.\n *\n * @return {Object}\n * An object containing useful values for `on()` or `one()` calls.\n */\n\n\nvar normalizeListenArgs = function normalizeListenArgs(self, args, fnName) {\n // If the number of arguments is less than 3, the target is always the\n // evented object itself.\n var isTargetingSelf = args.length < 3 || args[0] === self || args[0] === self.eventBusEl_;\n var target;\n var type;\n var listener;\n\n if (isTargetingSelf) {\n target = self.eventBusEl_; // Deal with cases where we got 3 arguments, but we are still listening to\n // the evented object itself.\n\n if (args.length >= 3) {\n args.shift();\n }\n\n type = args[0];\n listener = args[1];\n } else {\n target = args[0];\n type = args[1];\n listener = args[2];\n }\n\n validateTarget(target, self, fnName);\n validateEventType(type, self, fnName);\n validateListener(listener, self, fnName);\n listener = bind(self, listener);\n return {\n isTargetingSelf: isTargetingSelf,\n target: target,\n type: type,\n listener: listener\n };\n};\n/**\n * Adds the listener to the event type(s) on the target, normalizing for\n * the type of target.\n *\n * @private\n * @param {Element|Object} target\n * A DOM node or evented object.\n *\n * @param {string} method\n * The event binding method to use (\"on\" or \"one\").\n *\n * @param {string|Array} type\n * One or more event type(s).\n *\n * @param {Function} listener\n * A listener function.\n */\n\n\nvar listen = function listen(target, method, type, listener) {\n validateTarget(target, target, method);\n\n if (target.nodeName) {\n Events[method](target, type, listener);\n } else {\n target[method](type, listener);\n }\n};\n/**\n * Contains methods that provide event capabilities to an object which is passed\n * to {@link module:evented|evented}.\n *\n * @mixin EventedMixin\n */\n\n\nvar EventedMixin = {\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n on: function on() {\n var _this = this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var _normalizeListenArgs = normalizeListenArgs(this, args, 'on'),\n isTargetingSelf = _normalizeListenArgs.isTargetingSelf,\n target = _normalizeListenArgs.target,\n type = _normalizeListenArgs.type,\n listener = _normalizeListenArgs.listener;\n\n listen(target, 'on', type, listener); // If this object is listening to another evented object.\n\n if (!isTargetingSelf) {\n // If this object is disposed, remove the listener.\n var removeListenerOnDispose = function removeListenerOnDispose() {\n return _this.off(target, type, listener);\n }; // Use the same function ID as the listener so we can remove it later it\n // using the ID of the original listener.\n\n\n removeListenerOnDispose.guid = listener.guid; // Add a listener to the target's dispose event as well. This ensures\n // that if the target is disposed BEFORE this object, we remove the\n // removal listener that was just added. Otherwise, we create a memory leak.\n\n var removeRemoverOnTargetDispose = function removeRemoverOnTargetDispose() {\n return _this.off('dispose', removeListenerOnDispose);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n removeRemoverOnTargetDispose.guid = listener.guid;\n listen(this, 'on', 'dispose', removeListenerOnDispose);\n listen(target, 'on', 'dispose', removeRemoverOnTargetDispose);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will be called once per event and then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n one: function one() {\n var _this2 = this;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var _normalizeListenArgs2 = normalizeListenArgs(this, args, 'one'),\n isTargetingSelf = _normalizeListenArgs2.isTargetingSelf,\n target = _normalizeListenArgs2.target,\n type = _normalizeListenArgs2.type,\n listener = _normalizeListenArgs2.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'one', type, listener); // Targeting another evented object.\n } else {\n // TODO: This wrapper is incorrect! It should only\n // remove the wrapper for the event type that called it.\n // Instead all listners are removed on the first trigger!\n // see https://github.com/videojs/video.js/issues/5962\n var wrapper = function wrapper() {\n _this2.off(target, type, wrapper);\n\n for (var _len3 = arguments.length, largs = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n largs[_key3] = arguments[_key3];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'one', type, wrapper);\n }\n },\n\n /**\n * Add a listener to an event (or events) on this object or another evented\n * object. The listener will only be called once for the first event that is triggered\n * then removed.\n *\n * @param {string|Array|Element|Object} targetOrType\n * If this is a string or array, it represents the event type(s)\n * that will trigger the listener.\n *\n * Another evented object can be passed here instead, which will\n * cause the listener to listen for events on _that_ object.\n *\n * In either case, the listener's `this` value will be bound to\n * this object.\n *\n * @param {string|Array|Function} typeOrListener\n * If the first argument was a string or array, this should be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function.\n */\n any: function any() {\n var _this3 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n var _normalizeListenArgs3 = normalizeListenArgs(this, args, 'any'),\n isTargetingSelf = _normalizeListenArgs3.isTargetingSelf,\n target = _normalizeListenArgs3.target,\n type = _normalizeListenArgs3.type,\n listener = _normalizeListenArgs3.listener; // Targeting this evented object.\n\n\n if (isTargetingSelf) {\n listen(target, 'any', type, listener); // Targeting another evented object.\n } else {\n var wrapper = function wrapper() {\n _this3.off(target, type, wrapper);\n\n for (var _len5 = arguments.length, largs = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n largs[_key5] = arguments[_key5];\n }\n\n listener.apply(null, largs);\n }; // Use the same function ID as the listener so we can remove it later\n // it using the ID of the original listener.\n\n\n wrapper.guid = listener.guid;\n listen(target, 'any', type, wrapper);\n }\n },\n\n /**\n * Removes listener(s) from event(s) on an evented object.\n *\n * @param {string|Array|Element|Object} [targetOrType]\n * If this is a string or array, it represents the event type(s).\n *\n * Another evented object can be passed here instead, in which case\n * ALL 3 arguments are _required_.\n *\n * @param {string|Array|Function} [typeOrListener]\n * If the first argument was a string or array, this may be the\n * listener function. Otherwise, this is a string or array of event\n * type(s).\n *\n * @param {Function} [listener]\n * If the first argument was another evented object, this will be\n * the listener function; otherwise, _all_ listeners bound to the\n * event type(s) will be removed.\n */\n off: function off$1(targetOrType, typeOrListener, listener) {\n // Targeting this evented object.\n if (!targetOrType || isValidEventType(targetOrType)) {\n off(this.eventBusEl_, targetOrType, typeOrListener); // Targeting another evented object.\n } else {\n var target = targetOrType;\n var type = typeOrListener; // Fail fast and in a meaningful way!\n\n validateTarget(target, this, 'off');\n validateEventType(type, this, 'off');\n validateListener(listener, this, 'off'); // Ensure there's at least a guid, even if the function hasn't been used\n\n listener = bind(this, listener); // Remove the dispose listener on this evented object, which was given\n // the same guid as the event listener in on().\n\n this.off('dispose', listener);\n\n if (target.nodeName) {\n off(target, type, listener);\n off(target, 'dispose', listener);\n } else if (isEvented(target)) {\n target.off(type, listener);\n target.off('dispose', listener);\n }\n }\n },\n\n /**\n * Fire an event on this evented object, causing its listeners to be called.\n *\n * @param {string|Object} event\n * An event type or an object with a type property.\n *\n * @param {Object} [hash]\n * An additional object to pass along to listeners.\n *\n * @return {boolean}\n * Whether or not the default behavior was prevented.\n */\n trigger: function trigger$1(event, hash) {\n validateTarget(this.eventBusEl_, this, 'trigger');\n var type = event && typeof event !== 'string' ? event.type : event;\n\n if (!isValidEventType(type)) {\n var error = \"Invalid event type for \" + objName(this) + \"#trigger; \" + 'must be a non-empty string or object with a type key that has a non-empty value.';\n\n if (event) {\n (this.log || log$1).error(error);\n } else {\n throw new Error(error);\n }\n }\n\n return trigger(this.eventBusEl_, event, hash);\n }\n};\n/**\n * Applies {@link module:evented~EventedMixin|EventedMixin} to a target object.\n *\n * @param {Object} target\n * The object to which to add event methods.\n *\n * @param {Object} [options={}]\n * Options for customizing the mixin behavior.\n *\n * @param {string} [options.eventBusKey]\n * By default, adds a `eventBusEl_` DOM element to the target object,\n * which is used as an event bus. If the target object already has a\n * DOM element that should be used, pass its key here.\n *\n * @return {Object}\n * The target object.\n */\n\nfunction evented(target, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n eventBusKey = _options.eventBusKey; // Set or create the eventBusEl_.\n\n if (eventBusKey) {\n if (!target[eventBusKey].nodeName) {\n throw new Error(\"The eventBusKey \\\"\" + eventBusKey + \"\\\" does not refer to an element.\");\n }\n\n target.eventBusEl_ = target[eventBusKey];\n } else {\n target.eventBusEl_ = createEl('span', {\n className: 'vjs-event-bus'\n });\n }\n\n assign(target, EventedMixin);\n\n if (target.eventedCallbacks) {\n target.eventedCallbacks.forEach(function (callback) {\n callback();\n });\n } // When any evented object is disposed, it removes all its listeners.\n\n\n target.on('dispose', function () {\n target.off();\n [target, target.el_, target.eventBusEl_].forEach(function (val) {\n if (val && DomData.has(val)) {\n DomData[\"delete\"](val);\n }\n });\n window.setTimeout(function () {\n target.eventBusEl_ = null;\n }, 0);\n });\n return target;\n}\n\n/**\n * @file mixins/stateful.js\n * @module stateful\n */\n/**\n * Contains methods that provide statefulness to an object which is passed\n * to {@link module:stateful}.\n *\n * @mixin StatefulMixin\n */\n\nvar StatefulMixin = {\n /**\n * A hash containing arbitrary keys and values representing the state of\n * the object.\n *\n * @type {Object}\n */\n state: {},\n\n /**\n * Set the state of an object by mutating its\n * {@link module:stateful~StatefulMixin.state|state} object in place.\n *\n * @fires module:stateful~StatefulMixin#statechanged\n * @param {Object|Function} stateUpdates\n * A new set of properties to shallow-merge into the plugin state.\n * Can be a plain object or a function returning a plain object.\n *\n * @return {Object|undefined}\n * An object containing changes that occurred. If no changes\n * occurred, returns `undefined`.\n */\n setState: function setState(stateUpdates) {\n var _this = this;\n\n // Support providing the `stateUpdates` state as a function.\n if (typeof stateUpdates === 'function') {\n stateUpdates = stateUpdates();\n }\n\n var changes;\n each(stateUpdates, function (value, key) {\n // Record the change if the value is different from what's in the\n // current state.\n if (_this.state[key] !== value) {\n changes = changes || {};\n changes[key] = {\n from: _this.state[key],\n to: value\n };\n }\n\n _this.state[key] = value;\n }); // Only trigger \"statechange\" if there were changes AND we have a trigger\n // function. This allows us to not require that the target object be an\n // evented object.\n\n if (changes && isEvented(this)) {\n /**\n * An event triggered on an object that is both\n * {@link module:stateful|stateful} and {@link module:evented|evented}\n * indicating that its state has changed.\n *\n * @event module:stateful~StatefulMixin#statechanged\n * @type {Object}\n * @property {Object} changes\n * A hash containing the properties that were changed and\n * the values they were changed `from` and `to`.\n */\n this.trigger({\n changes: changes,\n type: 'statechanged'\n });\n }\n\n return changes;\n }\n};\n/**\n * Applies {@link module:stateful~StatefulMixin|StatefulMixin} to a target\n * object.\n *\n * If the target object is {@link module:evented|evented} and has a\n * `handleStateChanged` method, that method will be automatically bound to the\n * `statechanged` event on itself.\n *\n * @param {Object} target\n * The object to be made stateful.\n *\n * @param {Object} [defaultState]\n * A default set of properties to populate the newly-stateful object's\n * `state` property.\n *\n * @return {Object}\n * Returns the `target`.\n */\n\nfunction stateful(target, defaultState) {\n assign(target, StatefulMixin); // This happens after the mixing-in because we need to replace the `state`\n // added in that step.\n\n target.state = assign({}, target.state, defaultState); // Auto-bind the `handleStateChanged` method of the target object if it exists.\n\n if (typeof target.handleStateChanged === 'function' && isEvented(target)) {\n target.on('statechanged', target.handleStateChanged);\n }\n\n return target;\n}\n\n/**\n * @file string-cases.js\n * @module to-lower-case\n */\n\n/**\n * Lowercase the first letter of a string.\n *\n * @param {string} string\n * String to be lowercased\n *\n * @return {string}\n * The string with a lowercased first letter\n */\nvar toLowerCase = function toLowerCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toLowerCase();\n });\n};\n/**\n * Uppercase the first letter of a string.\n *\n * @param {string} string\n * String to be uppercased\n *\n * @return {string}\n * The string with an uppercased first letter\n */\n\nvar toTitleCase$1 = function toTitleCase(string) {\n if (typeof string !== 'string') {\n return string;\n }\n\n return string.replace(/./, function (w) {\n return w.toUpperCase();\n });\n};\n/**\n * Compares the TitleCase versions of the two strings for equality.\n *\n * @param {string} str1\n * The first string to compare\n *\n * @param {string} str2\n * The second string to compare\n *\n * @return {boolean}\n * Whether the TitleCase versions of the strings are equal\n */\n\nvar titleCaseEquals = function titleCaseEquals(str1, str2) {\n return toTitleCase$1(str1) === toTitleCase$1(str2);\n};\n\n/**\n * @file merge-options.js\n * @module merge-options\n */\n/**\n * Merge two objects recursively.\n *\n * Performs a deep merge like\n * {@link https://lodash.com/docs/4.17.10#merge|lodash.merge}, but only merges\n * plain objects (not arrays, elements, or anything else).\n *\n * Non-plain object values will be copied directly from the right-most\n * argument.\n *\n * @static\n * @param {Object[]} sources\n * One or more objects to merge into a new object.\n *\n * @return {Object}\n * A new object that is the merged result of all sources.\n */\n\nfunction mergeOptions$3() {\n var result = {};\n\n for (var _len = arguments.length, sources = new Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n sources.forEach(function (source) {\n if (!source) {\n return;\n }\n\n each(source, function (value, key) {\n if (!isPlain(value)) {\n result[key] = value;\n return;\n }\n\n if (!isPlain(result[key])) {\n result[key] = {};\n }\n\n result[key] = mergeOptions$3(result[key], value);\n });\n });\n return result;\n}\n\nvar MapSham = /*#__PURE__*/function () {\n function MapSham() {\n this.map_ = {};\n }\n\n var _proto = MapSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.map_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.map_[key];\n return has;\n };\n\n _proto.set = function set(key, value) {\n this.map_[key] = value;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.map_) {\n callback.call(thisArg, this.map_[key], key, this);\n }\n };\n\n return MapSham;\n}();\n\nvar Map$1 = window.Map ? window.Map : MapSham;\n\nvar SetSham = /*#__PURE__*/function () {\n function SetSham() {\n this.set_ = {};\n }\n\n var _proto = SetSham.prototype;\n\n _proto.has = function has(key) {\n return key in this.set_;\n };\n\n _proto[\"delete\"] = function _delete(key) {\n var has = this.has(key);\n delete this.set_[key];\n return has;\n };\n\n _proto.add = function add(key) {\n this.set_[key] = 1;\n return this;\n };\n\n _proto.forEach = function forEach(callback, thisArg) {\n for (var key in this.set_) {\n callback.call(thisArg, key, key, this);\n }\n };\n\n return SetSham;\n}();\n\nvar Set = window.Set ? window.Set : SetSham;\n\n/**\n * Player Component - Base class for all UI objects\n *\n * @file component.js\n */\n/**\n * Base class for all UI Components.\n * Components are UI objects which represent both a javascript object and an element\n * in the DOM. They can be children of other components, and can have\n * children themselves.\n *\n * Components can also use methods from {@link EventTarget}\n */\n\nvar Component$1 = /*#__PURE__*/function () {\n /**\n * A callback that is called when a component is ready. Does not have any\n * paramters and any callback value will be ignored.\n *\n * @callback Component~ReadyCallback\n * @this Component\n */\n\n /**\n * Creates an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Object[]} [options.children]\n * An array of children objects to intialize this component with. Children objects have\n * a name property that will be used if more than one component of the same type needs to be\n * added.\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n // The component might be the player itself and we can't pass `this` to super\n if (!player && this.play) {\n this.player_ = player = this; // eslint-disable-line\n } else {\n this.player_ = player;\n }\n\n this.isDisposed_ = false; // Hold the reference to the parent component via `addChild` method\n\n this.parentComponent_ = null; // Make a copy of prototype.options_ to protect against overriding defaults\n\n this.options_ = mergeOptions$3({}, this.options_); // Updated options with supplied options\n\n options = this.options_ = mergeOptions$3(this.options_, options); // Get ID from options or options element if one is supplied\n\n this.id_ = options.id || options.el && options.el.id; // If there was no ID from the options, generate one\n\n if (!this.id_) {\n // Don't require the player ID function in the case of mock players\n var id = player && player.id && player.id() || 'no_player';\n this.id_ = id + \"_component_\" + newGUID();\n }\n\n this.name_ = options.name || null; // Create element if one wasn't provided in options\n\n if (options.el) {\n this.el_ = options.el;\n } else if (options.createEl !== false) {\n this.el_ = this.createEl();\n } // if evented is anything except false, we want to mixin in evented\n\n\n if (options.evented !== false) {\n // Make this an evented object and use `el_`, if available, as its event bus\n evented(this, {\n eventBusKey: this.el_ ? 'el_' : null\n });\n this.handleLanguagechange = this.handleLanguagechange.bind(this);\n this.on(this.player_, 'languagechange', this.handleLanguagechange);\n }\n\n stateful(this, this.constructor.defaultState);\n this.children_ = [];\n this.childIndex_ = {};\n this.childNameIndex_ = {};\n this.setTimeoutIds_ = new Set();\n this.setIntervalIds_ = new Set();\n this.rafIds_ = new Set();\n this.namedRafs_ = new Map$1();\n this.clearingTimersOnDispose_ = false; // Add any child components in options\n\n if (options.initChildren !== false) {\n this.initChildren();\n } // Don't want to trigger ready here or it will go before init is actually\n // finished for all children that run this constructor\n\n\n this.ready(ready);\n\n if (options.reportTouchActivity !== false) {\n this.enableTouchActivity();\n }\n }\n /**\n * Dispose of the `Component` and all child components.\n *\n * @fires Component#dispose\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose() {\n // Bail out if the component has already been disposed.\n if (this.isDisposed_) {\n return;\n }\n\n if (this.readyQueue_) {\n this.readyQueue_.length = 0;\n }\n /**\n * Triggered when a `Component` is disposed.\n *\n * @event Component#dispose\n * @type {EventTarget~Event}\n *\n * @property {boolean} [bubbles=false]\n * set to false so that the dispose event does not\n * bubble up\n */\n\n\n this.trigger({\n type: 'dispose',\n bubbles: false\n });\n this.isDisposed_ = true; // Dispose all children.\n\n if (this.children_) {\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i].dispose) {\n this.children_[i].dispose();\n }\n }\n } // Delete child references\n\n\n this.children_ = null;\n this.childIndex_ = null;\n this.childNameIndex_ = null;\n this.parentComponent_ = null;\n\n if (this.el_) {\n // Remove element from DOM\n if (this.el_.parentNode) {\n this.el_.parentNode.removeChild(this.el_);\n }\n\n this.el_ = null;\n } // remove reference to the player after disposing of the element\n\n\n this.player_ = null;\n }\n /**\n * Determine whether or not this component has been disposed.\n *\n * @return {boolean}\n * If the component has been disposed, will be `true`. Otherwise, `false`.\n */\n ;\n\n _proto.isDisposed = function isDisposed() {\n return Boolean(this.isDisposed_);\n }\n /**\n * Return the {@link Player} that the `Component` has attached to.\n *\n * @return {Player}\n * The player that this `Component` has attached to.\n */\n ;\n\n _proto.player = function player() {\n return this.player_;\n }\n /**\n * Deep merge of options objects with new options.\n * > Note: When both `obj` and `options` contain properties whose values are objects.\n * The two properties get merged using {@link module:mergeOptions}\n *\n * @param {Object} obj\n * The object that contains new options.\n *\n * @return {Object}\n * A new object of `this.options_` and `obj` merged together.\n */\n ;\n\n _proto.options = function options(obj) {\n if (!obj) {\n return this.options_;\n }\n\n this.options_ = mergeOptions$3(this.options_, obj);\n return this.options_;\n }\n /**\n * Get the `Component`s DOM element\n *\n * @return {Element}\n * The DOM element for this `Component`.\n */\n ;\n\n _proto.el = function el() {\n return this.el_;\n }\n /**\n * Create the `Component`s DOM element.\n *\n * @param {string} [tagName]\n * Element's DOM node type. e.g. 'div'\n *\n * @param {Object} [properties]\n * An object of properties that should be set.\n *\n * @param {Object} [attributes]\n * An object of attributes that should be set.\n *\n * @return {Element}\n * The element that gets created.\n */\n ;\n\n _proto.createEl = function createEl$1(tagName, properties, attributes) {\n return createEl(tagName, properties, attributes);\n }\n /**\n * Localize a string given the string in english.\n *\n * If tokens are provided, it'll try and run a simple token replacement on the provided string.\n * The tokens it looks for look like `{1}` with the index being 1-indexed into the tokens array.\n *\n * If a `defaultValue` is provided, it'll use that over `string`,\n * if a value isn't found in provided language files.\n * This is useful if you want to have a descriptive key for token replacement\n * but have a succinct localized string and not require `en.json` to be included.\n *\n * Currently, it is used for the progress bar timing.\n * ```js\n * {\n * \"progress bar timing: currentTime={1} duration={2}\": \"{1} of {2}\"\n * }\n * ```\n * It is then used like so:\n * ```js\n * this.localize('progress bar timing: currentTime={1} duration{2}',\n * [this.player_.currentTime(), this.player_.duration()],\n * '{1} of {2}');\n * ```\n *\n * Which outputs something like: `01:23 of 24:56`.\n *\n *\n * @param {string} string\n * The string to localize and the key to lookup in the language files.\n * @param {string[]} [tokens]\n * If the current item has token replacements, provide the tokens here.\n * @param {string} [defaultValue]\n * Defaults to `string`. Can be a default value to use for token replacement\n * if the lookup key is needed to be separate.\n *\n * @return {string}\n * The localized string or if no localization exists the english string.\n */\n ;\n\n _proto.localize = function localize(string, tokens, defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = string;\n }\n\n var code = this.player_.language && this.player_.language();\n var languages = this.player_.languages && this.player_.languages();\n var language = languages && languages[code];\n var primaryCode = code && code.split('-')[0];\n var primaryLang = languages && languages[primaryCode];\n var localizedString = defaultValue;\n\n if (language && language[string]) {\n localizedString = language[string];\n } else if (primaryLang && primaryLang[string]) {\n localizedString = primaryLang[string];\n }\n\n if (tokens) {\n localizedString = localizedString.replace(/\\{(\\d+)\\}/g, function (match, index) {\n var value = tokens[index - 1];\n var ret = value;\n\n if (typeof value === 'undefined') {\n ret = match;\n }\n\n return ret;\n });\n }\n\n return localizedString;\n }\n /**\n * Handles language change for the player in components. Should be overriden by sub-components.\n *\n * @abstract\n */\n ;\n\n _proto.handleLanguagechange = function handleLanguagechange() {}\n /**\n * Return the `Component`s DOM element. This is where children get inserted.\n * This will usually be the the same as the element returned in {@link Component#el}.\n *\n * @return {Element}\n * The content element for this `Component`.\n */\n ;\n\n _proto.contentEl = function contentEl() {\n return this.contentEl_ || this.el_;\n }\n /**\n * Get this `Component`s ID\n *\n * @return {string}\n * The id of this `Component`\n */\n ;\n\n _proto.id = function id() {\n return this.id_;\n }\n /**\n * Get the `Component`s name. The name gets used to reference the `Component`\n * and is set during registration.\n *\n * @return {string}\n * The name of this `Component`.\n */\n ;\n\n _proto.name = function name() {\n return this.name_;\n }\n /**\n * Get an array of all child components\n *\n * @return {Array}\n * The children\n */\n ;\n\n _proto.children = function children() {\n return this.children_;\n }\n /**\n * Returns the child `Component` with the given `id`.\n *\n * @param {string} id\n * The id of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `id` or undefined.\n */\n ;\n\n _proto.getChildById = function getChildById(id) {\n return this.childIndex_[id];\n }\n /**\n * Returns the child `Component` with the given `name`.\n *\n * @param {string} name\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The child `Component` with the given `name` or undefined.\n */\n ;\n\n _proto.getChild = function getChild(name) {\n if (!name) {\n return;\n }\n\n return this.childNameIndex_[name];\n }\n /**\n * Returns the descendant `Component` following the givent\n * descendant `names`. For instance ['foo', 'bar', 'baz'] would\n * try to get 'foo' on the current component, 'bar' on the 'foo'\n * component and 'baz' on the 'bar' component and return undefined\n * if any of those don't exist.\n *\n * @param {...string[]|...string} names\n * The name of the child `Component` to get.\n *\n * @return {Component|undefined}\n * The descendant `Component` following the given descendant\n * `names` or undefined.\n */\n ;\n\n _proto.getDescendant = function getDescendant() {\n for (var _len = arguments.length, names = new Array(_len), _key = 0; _key < _len; _key++) {\n names[_key] = arguments[_key];\n }\n\n // flatten array argument into the main array\n names = names.reduce(function (acc, n) {\n return acc.concat(n);\n }, []);\n var currentChild = this;\n\n for (var i = 0; i < names.length; i++) {\n currentChild = currentChild.getChild(names[i]);\n\n if (!currentChild || !currentChild.getChild) {\n return;\n }\n }\n\n return currentChild;\n }\n /**\n * Add a child `Component` inside the current `Component`.\n *\n *\n * @param {string|Component} child\n * The name or instance of a child to add.\n *\n * @param {Object} [options={}]\n * The key/value store of options that will get passed to children of\n * the child.\n *\n * @param {number} [index=this.children_.length]\n * The index to attempt to add a child into.\n *\n * @return {Component}\n * The `Component` that gets added as a child. When using a string the\n * `Component` will get created by this process.\n */\n ;\n\n _proto.addChild = function addChild(child, options, index) {\n if (options === void 0) {\n options = {};\n }\n\n if (index === void 0) {\n index = this.children_.length;\n }\n\n var component;\n var componentName; // If child is a string, create component with options\n\n if (typeof child === 'string') {\n componentName = toTitleCase$1(child);\n var componentClassName = options.componentClass || componentName; // Set name through options\n\n options.name = componentName; // Create a new object & element for this controls set\n // If there's no .player_, this is a player\n\n var ComponentClass = Component.getComponent(componentClassName);\n\n if (!ComponentClass) {\n throw new Error(\"Component \" + componentClassName + \" does not exist\");\n } // data stored directly on the videojs object may be\n // misidentified as a component to retain\n // backwards-compatibility with 4.x. check to make sure the\n // component class can be instantiated.\n\n\n if (typeof ComponentClass !== 'function') {\n return null;\n }\n\n component = new ComponentClass(this.player_ || this, options); // child is a component instance\n } else {\n component = child;\n }\n\n if (component.parentComponent_) {\n component.parentComponent_.removeChild(component);\n }\n\n this.children_.splice(index, 0, component);\n component.parentComponent_ = this;\n\n if (typeof component.id === 'function') {\n this.childIndex_[component.id()] = component;\n } // If a name wasn't used to create the component, check if we can use the\n // name function of the component\n\n\n componentName = componentName || component.name && toTitleCase$1(component.name());\n\n if (componentName) {\n this.childNameIndex_[componentName] = component;\n this.childNameIndex_[toLowerCase(componentName)] = component;\n } // Add the UI object's element to the container div (box)\n // Having an element is not required\n\n\n if (typeof component.el === 'function' && component.el()) {\n // If inserting before a component, insert before that component's element\n var refNode = null;\n\n if (this.children_[index + 1]) {\n // Most children are components, but the video tech is an HTML element\n if (this.children_[index + 1].el_) {\n refNode = this.children_[index + 1].el_;\n } else if (isEl(this.children_[index + 1])) {\n refNode = this.children_[index + 1];\n }\n }\n\n this.contentEl().insertBefore(component.el(), refNode);\n } // Return so it can stored on parent object if desired.\n\n\n return component;\n }\n /**\n * Remove a child `Component` from this `Component`s list of children. Also removes\n * the child `Component`s element from this `Component`s element.\n *\n * @param {Component} component\n * The child `Component` to remove.\n */\n ;\n\n _proto.removeChild = function removeChild(component) {\n if (typeof component === 'string') {\n component = this.getChild(component);\n }\n\n if (!component || !this.children_) {\n return;\n }\n\n var childFound = false;\n\n for (var i = this.children_.length - 1; i >= 0; i--) {\n if (this.children_[i] === component) {\n childFound = true;\n this.children_.splice(i, 1);\n break;\n }\n }\n\n if (!childFound) {\n return;\n }\n\n component.parentComponent_ = null;\n this.childIndex_[component.id()] = null;\n this.childNameIndex_[toTitleCase$1(component.name())] = null;\n this.childNameIndex_[toLowerCase(component.name())] = null;\n var compEl = component.el();\n\n if (compEl && compEl.parentNode === this.contentEl()) {\n this.contentEl().removeChild(component.el());\n }\n }\n /**\n * Add and initialize default child `Component`s based upon options.\n */\n ;\n\n _proto.initChildren = function initChildren() {\n var _this = this;\n\n var children = this.options_.children;\n\n if (children) {\n // `this` is `parent`\n var parentOptions = this.options_;\n\n var handleAdd = function handleAdd(child) {\n var name = child.name;\n var opts = child.opts; // Allow options for children to be set at the parent options\n // e.g. videojs(id, { controlBar: false });\n // instead of videojs(id, { children: { controlBar: false });\n\n if (parentOptions[name] !== undefined) {\n opts = parentOptions[name];\n } // Allow for disabling default components\n // e.g. options['children']['posterImage'] = false\n\n\n if (opts === false) {\n return;\n } // Allow options to be passed as a simple boolean if no configuration\n // is necessary.\n\n\n if (opts === true) {\n opts = {};\n } // We also want to pass the original player options\n // to each component as well so they don't need to\n // reach back into the player for options later.\n\n\n opts.playerOptions = _this.options_.playerOptions; // Create and add the child component.\n // Add a direct reference to the child by name on the parent instance.\n // If two of the same component are used, different names should be supplied\n // for each\n\n var newChild = _this.addChild(name, opts);\n\n if (newChild) {\n _this[name] = newChild;\n }\n }; // Allow for an array of children details to passed in the options\n\n\n var workingChildren;\n var Tech = Component.getComponent('Tech');\n\n if (Array.isArray(children)) {\n workingChildren = children;\n } else {\n workingChildren = Object.keys(children);\n }\n\n workingChildren // children that are in this.options_ but also in workingChildren would\n // give us extra children we do not want. So, we want to filter them out.\n .concat(Object.keys(this.options_).filter(function (child) {\n return !workingChildren.some(function (wchild) {\n if (typeof wchild === 'string') {\n return child === wchild;\n }\n\n return child === wchild.name;\n });\n })).map(function (child) {\n var name;\n var opts;\n\n if (typeof child === 'string') {\n name = child;\n opts = children[name] || _this.options_[name] || {};\n } else {\n name = child.name;\n opts = child;\n }\n\n return {\n name: name,\n opts: opts\n };\n }).filter(function (child) {\n // we have to make sure that child.name isn't in the techOrder since\n // techs are registerd as Components but can't aren't compatible\n // See https://github.com/videojs/video.js/issues/2772\n var c = Component.getComponent(child.opts.componentClass || toTitleCase$1(child.name));\n return c && !Tech.isTech(c);\n }).forEach(handleAdd);\n }\n }\n /**\n * Builds the default DOM class name. Should be overriden by sub-components.\n *\n * @return {string}\n * The DOM class name for this object.\n *\n * @abstract\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n // Child classes can include a function that does:\n // return 'CLASS NAME' + this._super();\n return '';\n }\n /**\n * Bind a listener to the component's ready state.\n * Different from event listeners in that if the ready event has already happened\n * it will trigger the function immediately.\n *\n * @return {Component}\n * Returns itself; method can be chained.\n */\n ;\n\n _proto.ready = function ready(fn, sync) {\n if (sync === void 0) {\n sync = false;\n }\n\n if (!fn) {\n return;\n }\n\n if (!this.isReady_) {\n this.readyQueue_ = this.readyQueue_ || [];\n this.readyQueue_.push(fn);\n return;\n }\n\n if (sync) {\n fn.call(this);\n } else {\n // Call the function asynchronously by default for consistency\n this.setTimeout(fn, 1);\n }\n }\n /**\n * Trigger all the ready listeners for this `Component`.\n *\n * @fires Component#ready\n */\n ;\n\n _proto.triggerReady = function triggerReady() {\n this.isReady_ = true; // Ensure ready is triggered asynchronously\n\n this.setTimeout(function () {\n var readyQueue = this.readyQueue_; // Reset Ready Queue\n\n this.readyQueue_ = [];\n\n if (readyQueue && readyQueue.length > 0) {\n readyQueue.forEach(function (fn) {\n fn.call(this);\n }, this);\n } // Allow for using event listeners also\n\n /**\n * Triggered when a `Component` is ready.\n *\n * @event Component#ready\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('ready');\n }, 1);\n }\n /**\n * Find a single DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelector`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {Element|null}\n * the dom element that was found, or null\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$ = function $$1(selector, context) {\n return $(selector, context || this.contentEl());\n }\n /**\n * Finds all DOM element matching a `selector`. This can be within the `Component`s\n * `contentEl()` or another custom context.\n *\n * @param {string} selector\n * A valid CSS selector, which will be passed to `querySelectorAll`.\n *\n * @param {Element|string} [context=this.contentEl()]\n * A DOM element within which to query. Can also be a selector string in\n * which case the first matching element will get used as context. If\n * missing `this.contentEl()` gets used. If `this.contentEl()` returns\n * nothing it falls back to `document`.\n *\n * @return {NodeList}\n * a list of dom elements that were found\n *\n * @see [Information on CSS Selectors](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Getting_Started/Selectors)\n */\n ;\n\n _proto.$$ = function $$$1(selector, context) {\n return $$(selector, context || this.contentEl());\n }\n /**\n * Check if a component's element has a CSS class name.\n *\n * @param {string} classToCheck\n * CSS class name to check.\n *\n * @return {boolean}\n * - True if the `Component` has the class.\n * - False if the `Component` does not have the class`\n */\n ;\n\n _proto.hasClass = function hasClass$1(classToCheck) {\n return hasClass(this.el_, classToCheck);\n }\n /**\n * Add a CSS class name to the `Component`s element.\n *\n * @param {string} classToAdd\n * CSS class name to add\n */\n ;\n\n _proto.addClass = function addClass$1(classToAdd) {\n addClass(this.el_, classToAdd);\n }\n /**\n * Remove a CSS class name from the `Component`s element.\n *\n * @param {string} classToRemove\n * CSS class name to remove\n */\n ;\n\n _proto.removeClass = function removeClass$1(classToRemove) {\n removeClass(this.el_, classToRemove);\n }\n /**\n * Add or remove a CSS class name from the component's element.\n * - `classToToggle` gets added when {@link Component#hasClass} would return false.\n * - `classToToggle` gets removed when {@link Component#hasClass} would return true.\n *\n * @param {string} classToToggle\n * The class to add or remove based on (@link Component#hasClass}\n *\n * @param {boolean|Dom~predicate} [predicate]\n * An {@link Dom~predicate} function or a boolean\n */\n ;\n\n _proto.toggleClass = function toggleClass$1(classToToggle, predicate) {\n toggleClass(this.el_, classToToggle, predicate);\n }\n /**\n * Show the `Component`s element if it is hidden by removing the\n * 'vjs-hidden' class name from it.\n */\n ;\n\n _proto.show = function show() {\n this.removeClass('vjs-hidden');\n }\n /**\n * Hide the `Component`s element if it is currently showing by adding the\n * 'vjs-hidden` class name to it.\n */\n ;\n\n _proto.hide = function hide() {\n this.addClass('vjs-hidden');\n }\n /**\n * Lock a `Component`s element in its visible state by adding the 'vjs-lock-showing'\n * class name to it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.lockShowing = function lockShowing() {\n this.addClass('vjs-lock-showing');\n }\n /**\n * Unlock a `Component`s element from its visible state by removing the 'vjs-lock-showing'\n * class name from it. Used during fadeIn/fadeOut.\n *\n * @private\n */\n ;\n\n _proto.unlockShowing = function unlockShowing() {\n this.removeClass('vjs-lock-showing');\n }\n /**\n * Get the value of an attribute on the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to get the value from.\n *\n * @return {string|null}\n * - The value of the attribute that was asked for.\n * - Can be an empty string on some browsers if the attribute does not exist\n * or has no value\n * - Most browsers will return null if the attibute does not exist or has\n * no value.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute}\n */\n ;\n\n _proto.getAttribute = function getAttribute$1(attribute) {\n return getAttribute(this.el_, attribute);\n }\n /**\n * Set the value of an attribute on the `Component`'s element\n *\n * @param {string} attribute\n * Name of the attribute to set.\n *\n * @param {string} value\n * Value to set the attribute to.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttribute}\n */\n ;\n\n _proto.setAttribute = function setAttribute$1(attribute, value) {\n setAttribute(this.el_, attribute, value);\n }\n /**\n * Remove an attribute from the `Component`s element.\n *\n * @param {string} attribute\n * Name of the attribute to remove.\n *\n * @see [DOM API]{@link https://developer.mozilla.org/en-US/docs/Web/API/Element/removeAttribute}\n */\n ;\n\n _proto.removeAttribute = function removeAttribute$1(attribute) {\n removeAttribute(this.el_, attribute);\n }\n /**\n * Get or set the width of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The width that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.width = function width(num, skipListeners) {\n return this.dimension('width', num, skipListeners);\n }\n /**\n * Get or set the height of the component based upon the CSS styles.\n * See {@link Component#dimension} for more detailed information.\n *\n * @param {number|string} [num]\n * The height that you want to set postfixed with '%', 'px' or nothing.\n *\n * @param {boolean} [skipListeners]\n * Skip the componentresize event trigger\n *\n * @return {number|string}\n * The width when getting, zero if there is no width. Can be a string\n * postpixed with '%' or 'px'.\n */\n ;\n\n _proto.height = function height(num, skipListeners) {\n return this.dimension('height', num, skipListeners);\n }\n /**\n * Set both the width and height of the `Component` element at the same time.\n *\n * @param {number|string} width\n * Width to set the `Component`s element to.\n *\n * @param {number|string} height\n * Height to set the `Component`s element to.\n */\n ;\n\n _proto.dimensions = function dimensions(width, height) {\n // Skip componentresize listeners on width for optimization\n this.width(width, true);\n this.height(height);\n }\n /**\n * Get or set width or height of the `Component` element. This is the shared code\n * for the {@link Component#width} and {@link Component#height}.\n *\n * Things to know:\n * - If the width or height in an number this will return the number postfixed with 'px'.\n * - If the width/height is a percent this will return the percent postfixed with '%'\n * - Hidden elements have a width of 0 with `window.getComputedStyle`. This function\n * defaults to the `Component`s `style.width` and falls back to `window.getComputedStyle`.\n * See [this]{@link http://www.foliotek.com/devblog/getting-the-width-of-a-hidden-element-with-jquery-using-width/}\n * for more information\n * - If you want the computed style of the component, use {@link Component#currentWidth}\n * and {@link {Component#currentHeight}\n *\n * @fires Component#componentresize\n *\n * @param {string} widthOrHeight\n 8 'width' or 'height'\n *\n * @param {number|string} [num]\n 8 New dimension\n *\n * @param {boolean} [skipListeners]\n * Skip componentresize event trigger\n *\n * @return {number}\n * The dimension when getting or 0 if unset\n */\n ;\n\n _proto.dimension = function dimension(widthOrHeight, num, skipListeners) {\n if (num !== undefined) {\n // Set to zero if null or literally NaN (NaN !== NaN)\n if (num === null || num !== num) {\n num = 0;\n } // Check if using css width/height (% or px) and adjust\n\n\n if (('' + num).indexOf('%') !== -1 || ('' + num).indexOf('px') !== -1) {\n this.el_.style[widthOrHeight] = num;\n } else if (num === 'auto') {\n this.el_.style[widthOrHeight] = '';\n } else {\n this.el_.style[widthOrHeight] = num + 'px';\n } // skipListeners allows us to avoid triggering the resize event when setting both width and height\n\n\n if (!skipListeners) {\n /**\n * Triggered when a component is resized.\n *\n * @event Component#componentresize\n * @type {EventTarget~Event}\n */\n this.trigger('componentresize');\n }\n\n return;\n } // Not setting a value, so getting it\n // Make sure element exists\n\n\n if (!this.el_) {\n return 0;\n } // Get dimension value from style\n\n\n var val = this.el_.style[widthOrHeight];\n var pxIndex = val.indexOf('px');\n\n if (pxIndex !== -1) {\n // Return the pixel value with no 'px'\n return parseInt(val.slice(0, pxIndex), 10);\n } // No px so using % or no style was set, so falling back to offsetWidth/height\n // If component has display:none, offset will return 0\n // TODO: handle display:none and no dimension style using px\n\n\n return parseInt(this.el_['offset' + toTitleCase$1(widthOrHeight)], 10);\n }\n /**\n * Get the computed width or the height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @param {string} widthOrHeight\n * A string containing 'width' or 'height'. Whichever one you want to get.\n *\n * @return {number}\n * The dimension that gets asked for or 0 if nothing was set\n * for that dimension.\n */\n ;\n\n _proto.currentDimension = function currentDimension(widthOrHeight) {\n var computedWidthOrHeight = 0;\n\n if (widthOrHeight !== 'width' && widthOrHeight !== 'height') {\n throw new Error('currentDimension only accepts width or height value');\n }\n\n computedWidthOrHeight = computedStyle(this.el_, widthOrHeight); // remove 'px' from variable and parse as integer\n\n computedWidthOrHeight = parseFloat(computedWidthOrHeight); // if the computed value is still 0, it's possible that the browser is lying\n // and we want to check the offset values.\n // This code also runs wherever getComputedStyle doesn't exist.\n\n if (computedWidthOrHeight === 0 || isNaN(computedWidthOrHeight)) {\n var rule = \"offset\" + toTitleCase$1(widthOrHeight);\n computedWidthOrHeight = this.el_[rule];\n }\n\n return computedWidthOrHeight;\n }\n /**\n * An object that contains width and height values of the `Component`s\n * computed style. Uses `window.getComputedStyle`.\n *\n * @typedef {Object} Component~DimensionObject\n *\n * @property {number} width\n * The width of the `Component`s computed style.\n *\n * @property {number} height\n * The height of the `Component`s computed style.\n */\n\n /**\n * Get an object that contains computed width and height values of the\n * component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {Component~DimensionObject}\n * The computed dimensions of the component's element.\n */\n ;\n\n _proto.currentDimensions = function currentDimensions() {\n return {\n width: this.currentDimension('width'),\n height: this.currentDimension('height')\n };\n }\n /**\n * Get the computed width of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed width of the component's element.\n */\n ;\n\n _proto.currentWidth = function currentWidth() {\n return this.currentDimension('width');\n }\n /**\n * Get the computed height of the component's element.\n *\n * Uses `window.getComputedStyle`.\n *\n * @return {number}\n * The computed height of the component's element.\n */\n ;\n\n _proto.currentHeight = function currentHeight() {\n return this.currentDimension('height');\n }\n /**\n * Set the focus to this component\n */\n ;\n\n _proto.focus = function focus() {\n this.el_.focus();\n }\n /**\n * Remove the focus from this component\n */\n ;\n\n _proto.blur = function blur() {\n this.el_.blur();\n }\n /**\n * When this Component receives a `keydown` event which it does not process,\n * it passes the event to the Player for handling.\n *\n * @param {EventTarget~Event} event\n * The `keydown` event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n if (this.player_) {\n // We only stop propagation here because we want unhandled events to fall\n // back to the browser.\n event.stopPropagation();\n this.player_.handleKeyDown(event);\n }\n }\n /**\n * Many components used to have a `handleKeyPress` method, which was poorly\n * named because it listened to a `keydown` event. This method name now\n * delegates to `handleKeyDown`. This means anyone calling `handleKeyPress`\n * will not see their method calls stop working.\n *\n * @param {EventTarget~Event} event\n * The event that caused this function to be called.\n */\n ;\n\n _proto.handleKeyPress = function handleKeyPress(event) {\n this.handleKeyDown(event);\n }\n /**\n * Emit a 'tap' events when touch event support gets detected. This gets used to\n * support toggling the controls through a tap on the video. They get enabled\n * because every sub-component would have extra overhead otherwise.\n *\n * @private\n * @fires Component#tap\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchleave\n * @listens Component#touchcancel\n * @listens Component#touchend\n */\n ;\n\n _proto.emitTapEvents = function emitTapEvents() {\n // Track the start time so we can determine how long the touch lasted\n var touchStart = 0;\n var firstTouch = null; // Maximum movement allowed during a touch event to still be considered a tap\n // Other popular libs use anywhere from 2 (hammer.js) to 15,\n // so 10 seems like a nice, round number.\n\n var tapMovementThreshold = 10; // The maximum length a touch can be while still being considered a tap\n\n var touchTimeThreshold = 200;\n var couldBeTap;\n this.on('touchstart', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length === 1) {\n // Copy pageX/pageY from the object\n firstTouch = {\n pageX: event.touches[0].pageX,\n pageY: event.touches[0].pageY\n }; // Record start time so we can detect a tap vs. \"touch and hold\"\n\n touchStart = window.performance.now(); // Reset couldBeTap tracking\n\n couldBeTap = true;\n }\n });\n this.on('touchmove', function (event) {\n // If more than one finger, don't consider treating this as a click\n if (event.touches.length > 1) {\n couldBeTap = false;\n } else if (firstTouch) {\n // Some devices will throw touchmoves for all but the slightest of taps.\n // So, if we moved only a small distance, this could still be a tap\n var xdiff = event.touches[0].pageX - firstTouch.pageX;\n var ydiff = event.touches[0].pageY - firstTouch.pageY;\n var touchDistance = Math.sqrt(xdiff * xdiff + ydiff * ydiff);\n\n if (touchDistance > tapMovementThreshold) {\n couldBeTap = false;\n }\n }\n });\n\n var noTap = function noTap() {\n couldBeTap = false;\n }; // TODO: Listen to the original target. http://youtu.be/DujfpXOKUp8?t=13m8s\n\n\n this.on('touchleave', noTap);\n this.on('touchcancel', noTap); // When the touch ends, measure how long it took and trigger the appropriate\n // event\n\n this.on('touchend', function (event) {\n firstTouch = null; // Proceed only if the touchmove/leave/cancel event didn't happen\n\n if (couldBeTap === true) {\n // Measure how long the touch lasted\n var touchTime = window.performance.now() - touchStart; // Make sure the touch was less than the threshold to be considered a tap\n\n if (touchTime < touchTimeThreshold) {\n // Don't let browser turn this into a click\n event.preventDefault();\n /**\n * Triggered when a `Component` is tapped.\n *\n * @event Component#tap\n * @type {EventTarget~Event}\n */\n\n this.trigger('tap'); // It may be good to copy the touchend event object and change the\n // type to tap, if the other event properties aren't exact after\n // Events.fixEvent runs (e.g. event.target)\n }\n }\n });\n }\n /**\n * This function reports user activity whenever touch events happen. This can get\n * turned off by any sub-components that wants touch events to act another way.\n *\n * Report user touch activity when touch events occur. User activity gets used to\n * determine when controls should show/hide. It is simple when it comes to mouse\n * events, because any mouse event should show the controls. So we capture mouse\n * events that bubble up to the player and report activity when that happens.\n * With touch events it isn't as easy as `touchstart` and `touchend` toggle player\n * controls. So touch events can't help us at the player level either.\n *\n * User activity gets checked asynchronously. So what could happen is a tap event\n * on the video turns the controls off. Then the `touchend` event bubbles up to\n * the player. Which, if it reported user activity, would turn the controls right\n * back on. We also don't want to completely block touch events from bubbling up.\n * Furthermore a `touchmove` event and anything other than a tap, should not turn\n * controls back on.\n *\n * @listens Component#touchstart\n * @listens Component#touchmove\n * @listens Component#touchend\n * @listens Component#touchcancel\n */\n ;\n\n _proto.enableTouchActivity = function enableTouchActivity() {\n // Don't continue if the root player doesn't support reporting user activity\n if (!this.player() || !this.player().reportUserActivity) {\n return;\n } // listener for reporting that the user is active\n\n\n var report = bind(this.player(), this.player().reportUserActivity);\n var touchHolding;\n this.on('touchstart', function () {\n report(); // For as long as the they are touching the device or have their mouse down,\n // we consider them active even if they're not moving their finger or mouse.\n // So we want to continue to update that they are active\n\n this.clearInterval(touchHolding); // report at the same interval as activityCheck\n\n touchHolding = this.setInterval(report, 250);\n });\n\n var touchEnd = function touchEnd(event) {\n report(); // stop the interval that maintains activity if the touch is holding\n\n this.clearInterval(touchHolding);\n };\n\n this.on('touchmove', report);\n this.on('touchend', touchEnd);\n this.on('touchcancel', touchEnd);\n }\n /**\n * A callback that has no parameters and is bound into `Component`s context.\n *\n * @callback Component~GenericCallback\n * @this Component\n */\n\n /**\n * Creates a function that runs after an `x` millisecond timeout. This function is a\n * wrapper around `window.setTimeout`. There are a few reasons to use this one\n * instead though:\n * 1. It gets cleared via {@link Component#clearTimeout} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will gets turned into a {@link Component~GenericCallback}\n *\n * > Note: You can't use `window.clearTimeout` on the id returned by this function. This\n * will cause its dispose listener not to get cleaned up! Please use\n * {@link Component#clearTimeout} or {@link Component#dispose} instead.\n *\n * @param {Component~GenericCallback} fn\n * The function that will be run after `timeout`.\n *\n * @param {number} timeout\n * Timeout in milliseconds to delay before executing the specified function.\n *\n * @return {number}\n * Returns a timeout ID that gets used to identify the timeout. It can also\n * get used in {@link Component#clearTimeout} to clear the timeout that\n * was set.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout}\n */\n ;\n\n _proto.setTimeout = function setTimeout(fn, timeout) {\n var _this2 = this;\n\n // declare as variables so they are properly available in timeout function\n // eslint-disable-next-line\n var timeoutId;\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n timeoutId = window.setTimeout(function () {\n if (_this2.setTimeoutIds_.has(timeoutId)) {\n _this2.setTimeoutIds_[\"delete\"](timeoutId);\n }\n\n fn();\n }, timeout);\n this.setTimeoutIds_.add(timeoutId);\n return timeoutId;\n }\n /**\n * Clears a timeout that gets created via `window.setTimeout` or\n * {@link Component#setTimeout}. If you set a timeout via {@link Component#setTimeout}\n * use this function instead of `window.clearTimout`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} timeoutId\n * The id of the timeout to clear. The return value of\n * {@link Component#setTimeout} or `window.setTimeout`.\n *\n * @return {number}\n * Returns the timeout id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearTimeout}\n */\n ;\n\n _proto.clearTimeout = function clearTimeout(timeoutId) {\n if (this.setTimeoutIds_.has(timeoutId)) {\n this.setTimeoutIds_[\"delete\"](timeoutId);\n window.clearTimeout(timeoutId);\n }\n\n return timeoutId;\n }\n /**\n * Creates a function that gets run every `x` milliseconds. This function is a wrapper\n * around `window.setInterval`. There are a few reasons to use this one instead though.\n * 1. It gets cleared via {@link Component#clearInterval} when\n * {@link Component#dispose} gets called.\n * 2. The function callback will be a {@link Component~GenericCallback}\n *\n * @param {Component~GenericCallback} fn\n * The function to run every `x` seconds.\n *\n * @param {number} interval\n * Execute the specified function every `x` milliseconds.\n *\n * @return {number}\n * Returns an id that can be used to identify the interval. It can also be be used in\n * {@link Component#clearInterval} to clear the interval.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setInterval}\n */\n ;\n\n _proto.setInterval = function setInterval(fn, interval) {\n fn = bind(this, fn);\n this.clearTimersOnDispose_();\n var intervalId = window.setInterval(fn, interval);\n this.setIntervalIds_.add(intervalId);\n return intervalId;\n }\n /**\n * Clears an interval that gets created via `window.setInterval` or\n * {@link Component#setInterval}. If you set an inteval via {@link Component#setInterval}\n * use this function instead of `window.clearInterval`. If you don't your dispose\n * listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} intervalId\n * The id of the interval to clear. The return value of\n * {@link Component#setInterval} or `window.setInterval`.\n *\n * @return {number}\n * Returns the interval id that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/clearInterval}\n */\n ;\n\n _proto.clearInterval = function clearInterval(intervalId) {\n if (this.setIntervalIds_.has(intervalId)) {\n this.setIntervalIds_[\"delete\"](intervalId);\n window.clearInterval(intervalId);\n }\n\n return intervalId;\n }\n /**\n * Queues up a callback to be passed to requestAnimationFrame (rAF), but\n * with a few extra bonuses:\n *\n * - Supports browsers that do not support rAF by falling back to\n * {@link Component#setTimeout}.\n *\n * - The callback is turned into a {@link Component~GenericCallback} (i.e.\n * bound to the component).\n *\n * - Automatic cancellation of the rAF callback is handled if the component\n * is disposed before it is called.\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n *\n * @return {number}\n * Returns an rAF ID that gets used to identify the timeout. It can\n * also be used in {@link Component#cancelAnimationFrame} to cancel\n * the animation frame callback.\n *\n * @listens Component#dispose\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame}\n */\n ;\n\n _proto.requestAnimationFrame = function requestAnimationFrame(fn) {\n var _this3 = this;\n\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.setTimeout(fn, 1000 / 60);\n }\n\n this.clearTimersOnDispose_(); // declare as variables so they are properly available in rAF function\n // eslint-disable-next-line\n\n var id;\n fn = bind(this, fn);\n id = window.requestAnimationFrame(function () {\n if (_this3.rafIds_.has(id)) {\n _this3.rafIds_[\"delete\"](id);\n }\n\n fn();\n });\n this.rafIds_.add(id);\n return id;\n }\n /**\n * Request an animation frame, but only one named animation\n * frame will be queued. Another will never be added until\n * the previous one finishes.\n *\n * @param {string} name\n * The name to give this requestAnimationFrame\n *\n * @param {Component~GenericCallback} fn\n * A function that will be bound to this component and executed just\n * before the browser's next repaint.\n */\n ;\n\n _proto.requestNamedAnimationFrame = function requestNamedAnimationFrame(name, fn) {\n var _this4 = this;\n\n if (this.namedRafs_.has(name)) {\n return;\n }\n\n this.clearTimersOnDispose_();\n fn = bind(this, fn);\n var id = this.requestAnimationFrame(function () {\n fn();\n\n if (_this4.namedRafs_.has(name)) {\n _this4.namedRafs_[\"delete\"](name);\n }\n });\n this.namedRafs_.set(name, id);\n return name;\n }\n /**\n * Cancels a current named animation frame if it exists.\n *\n * @param {string} name\n * The name of the requestAnimationFrame to cancel.\n */\n ;\n\n _proto.cancelNamedAnimationFrame = function cancelNamedAnimationFrame(name) {\n if (!this.namedRafs_.has(name)) {\n return;\n }\n\n this.cancelAnimationFrame(this.namedRafs_.get(name));\n this.namedRafs_[\"delete\"](name);\n }\n /**\n * Cancels a queued callback passed to {@link Component#requestAnimationFrame}\n * (rAF).\n *\n * If you queue an rAF callback via {@link Component#requestAnimationFrame},\n * use this function instead of `window.cancelAnimationFrame`. If you don't,\n * your dispose listener will not get cleaned up until {@link Component#dispose}!\n *\n * @param {number} id\n * The rAF ID to clear. The return value of {@link Component#requestAnimationFrame}.\n *\n * @return {number}\n * Returns the rAF ID that was cleared.\n *\n * @see [Similar to]{@link https://developer.mozilla.org/en-US/docs/Web/API/window/cancelAnimationFrame}\n */\n ;\n\n _proto.cancelAnimationFrame = function cancelAnimationFrame(id) {\n // Fall back to using a timer.\n if (!this.supportsRaf_) {\n return this.clearTimeout(id);\n }\n\n if (this.rafIds_.has(id)) {\n this.rafIds_[\"delete\"](id);\n window.cancelAnimationFrame(id);\n }\n\n return id;\n }\n /**\n * A function to setup `requestAnimationFrame`, `setTimeout`,\n * and `setInterval`, clearing on dispose.\n *\n * > Previously each timer added and removed dispose listeners on it's own.\n * For better performance it was decided to batch them all, and use `Set`s\n * to track outstanding timer ids.\n *\n * @private\n */\n ;\n\n _proto.clearTimersOnDispose_ = function clearTimersOnDispose_() {\n var _this5 = this;\n\n if (this.clearingTimersOnDispose_) {\n return;\n }\n\n this.clearingTimersOnDispose_ = true;\n this.one('dispose', function () {\n [['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval']].forEach(function (_ref) {\n var idName = _ref[0],\n cancelName = _ref[1];\n\n // for a `Set` key will actually be the value again\n // so forEach((val, val) =>` but for maps we want to use\n // the key.\n _this5[idName].forEach(function (val, key) {\n return _this5[cancelName](key);\n });\n });\n _this5.clearingTimersOnDispose_ = false;\n });\n }\n /**\n * Register a `Component` with `videojs` given the name and the component.\n *\n * > NOTE: {@link Tech}s should not be registered as a `Component`. {@link Tech}s\n * should be registered using {@link Tech.registerTech} or\n * {@link videojs:videojs.registerTech}.\n *\n * > NOTE: This function can also be seen on videojs as\n * {@link videojs:videojs.registerComponent}.\n *\n * @param {string} name\n * The name of the `Component` to register.\n *\n * @param {Component} ComponentToRegister\n * The `Component` class to register.\n *\n * @return {Component}\n * The `Component` that was registered.\n */\n ;\n\n Component.registerComponent = function registerComponent(name, ComponentToRegister) {\n if (typeof name !== 'string' || !name) {\n throw new Error(\"Illegal component name, \\\"\" + name + \"\\\"; must be a non-empty string.\");\n }\n\n var Tech = Component.getComponent('Tech'); // We need to make sure this check is only done if Tech has been registered.\n\n var isTech = Tech && Tech.isTech(ComponentToRegister);\n var isComp = Component === ComponentToRegister || Component.prototype.isPrototypeOf(ComponentToRegister.prototype);\n\n if (isTech || !isComp) {\n var reason;\n\n if (isTech) {\n reason = 'techs must be registered using Tech.registerTech()';\n } else {\n reason = 'must be a Component subclass';\n }\n\n throw new Error(\"Illegal component, \\\"\" + name + \"\\\"; \" + reason + \".\");\n }\n\n name = toTitleCase$1(name);\n\n if (!Component.components_) {\n Component.components_ = {};\n }\n\n var Player = Component.getComponent('Player');\n\n if (name === 'Player' && Player && Player.players) {\n var players = Player.players;\n var playerNames = Object.keys(players); // If we have players that were disposed, then their name will still be\n // in Players.players. So, we must loop through and verify that the value\n // for each item is not null. This allows registration of the Player component\n // after all players have been disposed or before any were created.\n\n if (players && playerNames.length > 0 && playerNames.map(function (pname) {\n return players[pname];\n }).every(Boolean)) {\n throw new Error('Can not register Player component after player has been created.');\n }\n }\n\n Component.components_[name] = ComponentToRegister;\n Component.components_[toLowerCase(name)] = ComponentToRegister;\n return ComponentToRegister;\n }\n /**\n * Get a `Component` based on the name it was registered with.\n *\n * @param {string} name\n * The Name of the component to get.\n *\n * @return {Component}\n * The `Component` that got registered under the given name.\n *\n * @deprecated In `videojs` 6 this will not return `Component`s that were not\n * registered using {@link Component.registerComponent}. Currently we\n * check the global `videojs` object for a `Component` name and\n * return that if it exists.\n */\n ;\n\n Component.getComponent = function getComponent(name) {\n if (!name || !Component.components_) {\n return;\n }\n\n return Component.components_[name];\n };\n\n return Component;\n}();\n/**\n * Whether or not this component supports `requestAnimationFrame`.\n *\n * This is exposed primarily for testing purposes.\n *\n * @private\n * @type {Boolean}\n */\n\n\nComponent$1.prototype.supportsRaf_ = typeof window.requestAnimationFrame === 'function' && typeof window.cancelAnimationFrame === 'function';\nComponent$1.registerComponent('Component', Component$1);\n\n/**\n * @file time-ranges.js\n * @module time-ranges\n */\n/**\n * Returns the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @typedef {Function} TimeRangeIndex\n *\n * @param {number} [index=0]\n * The range number to return the time for.\n *\n * @return {number}\n * The time offset at the specified index.\n *\n * @deprecated The index argument must be provided.\n * In the future, leaving it out will throw an error.\n */\n\n/**\n * An object that contains ranges of time.\n *\n * @typedef {Object} TimeRange\n *\n * @property {number} length\n * The number of time ranges represented by this object.\n *\n * @property {module:time-ranges~TimeRangeIndex} start\n * Returns the time offset at which a specified time range begins.\n *\n * @property {module:time-ranges~TimeRangeIndex} end\n * Returns the time offset at which a specified time range ends.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges\n */\n\n/**\n * Check if any of the time ranges are over the maximum index.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {number} index\n * The index to check\n *\n * @param {number} maxIndex\n * The maximum possible index\n *\n * @throws {Error} if the timeRanges provided are over the maxIndex\n */\n\nfunction rangeCheck(fnName, index, maxIndex) {\n if (typeof index !== 'number' || index < 0 || index > maxIndex) {\n throw new Error(\"Failed to execute '\" + fnName + \"' on 'TimeRanges': The index provided (\" + index + \") is non-numeric or out of bounds (0-\" + maxIndex + \").\");\n }\n}\n/**\n * Get the time for the specified index at the start or end\n * of a TimeRange object.\n *\n * @private\n * @param {string} fnName\n * The function name to use for logging\n *\n * @param {string} valueIndex\n * The property that should be used to get the time. should be\n * 'start' or 'end'\n *\n * @param {Array} ranges\n * An array of time ranges\n *\n * @param {Array} [rangeIndex=0]\n * The index to start the search at\n *\n * @return {number}\n * The time that offset at the specified index.\n *\n * @deprecated rangeIndex must be set to a value, in the future this will throw an error.\n * @throws {Error} if rangeIndex is more than the length of ranges\n */\n\n\nfunction getRange(fnName, valueIndex, ranges, rangeIndex) {\n rangeCheck(fnName, rangeIndex, ranges.length - 1);\n return ranges[rangeIndex][valueIndex];\n}\n/**\n * Create a time range object given ranges of time.\n *\n * @private\n * @param {Array} [ranges]\n * An array of time ranges.\n */\n\n\nfunction createTimeRangesObj(ranges) {\n var timeRangesObj;\n\n if (ranges === undefined || ranges.length === 0) {\n timeRangesObj = {\n length: 0,\n start: function start() {\n throw new Error('This TimeRanges object is empty');\n },\n end: function end() {\n throw new Error('This TimeRanges object is empty');\n }\n };\n } else {\n timeRangesObj = {\n length: ranges.length,\n start: getRange.bind(null, 'start', 0, ranges),\n end: getRange.bind(null, 'end', 1, ranges)\n };\n }\n\n if (window.Symbol && window.Symbol.iterator) {\n timeRangesObj[window.Symbol.iterator] = function () {\n return (ranges || []).values();\n };\n }\n\n return timeRangesObj;\n}\n/**\n * Create a `TimeRange` object which mimics an\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges|HTML5 TimeRanges instance}.\n *\n * @param {number|Array[]} start\n * The start of a single range (a number) or an array of ranges (an\n * array of arrays of two numbers each).\n *\n * @param {number} end\n * The end of a single range. Cannot be used with the array form of\n * the `start` argument.\n */\n\n\nfunction createTimeRanges(start, end) {\n if (Array.isArray(start)) {\n return createTimeRangesObj(start);\n } else if (start === undefined || end === undefined) {\n return createTimeRangesObj();\n }\n\n return createTimeRangesObj([[start, end]]);\n}\n\n/**\n * @file buffer.js\n * @module buffer\n */\n/**\n * Compute the percentage of the media that has been buffered.\n *\n * @param {TimeRange} buffered\n * The current `TimeRange` object representing buffered time ranges\n *\n * @param {number} duration\n * Total duration of the media\n *\n * @return {number}\n * Percent buffered of the total duration in decimal form.\n */\n\nfunction bufferedPercent(buffered, duration) {\n var bufferedDuration = 0;\n var start;\n var end;\n\n if (!duration) {\n return 0;\n }\n\n if (!buffered || !buffered.length) {\n buffered = createTimeRanges(0, 0);\n }\n\n for (var i = 0; i < buffered.length; i++) {\n start = buffered.start(i);\n end = buffered.end(i); // buffered end can be bigger than duration by a very small fraction\n\n if (end > duration) {\n end = duration;\n }\n\n bufferedDuration += end - start;\n }\n\n return bufferedDuration / duration;\n}\n\n/**\n * @file media-error.js\n */\n/**\n * A Custom `MediaError` class which mimics the standard HTML5 `MediaError` class.\n *\n * @param {number|string|Object|MediaError} value\n * This can be of multiple types:\n * - number: should be a standard error code\n * - string: an error message (the code will be 0)\n * - Object: arbitrary properties\n * - `MediaError` (native): used to populate a video.js `MediaError` object\n * - `MediaError` (video.js): will return itself if it's already a\n * video.js `MediaError` object.\n *\n * @see [MediaError Spec]{@link https://dev.w3.org/html5/spec-author-view/video.html#mediaerror}\n * @see [Encrypted MediaError Spec]{@link https://www.w3.org/TR/2013/WD-encrypted-media-20130510/#error-codes}\n *\n * @class MediaError\n */\n\nfunction MediaError(value) {\n // Allow redundant calls to this constructor to avoid having `instanceof`\n // checks peppered around the code.\n if (value instanceof MediaError) {\n return value;\n }\n\n if (typeof value === 'number') {\n this.code = value;\n } else if (typeof value === 'string') {\n // default code is zero, so this is a custom error\n this.message = value;\n } else if (isObject(value)) {\n // We assign the `code` property manually because native `MediaError` objects\n // do not expose it as an own/enumerable property of the object.\n if (typeof value.code === 'number') {\n this.code = value.code;\n }\n\n assign(this, value);\n }\n\n if (!this.message) {\n this.message = MediaError.defaultMessages[this.code] || '';\n }\n}\n/**\n * The error code that refers two one of the defined `MediaError` types\n *\n * @type {Number}\n */\n\n\nMediaError.prototype.code = 0;\n/**\n * An optional message that to show with the error. Message is not part of the HTML5\n * video spec but allows for more informative custom errors.\n *\n * @type {String}\n */\n\nMediaError.prototype.message = '';\n/**\n * An optional status code that can be set by plugins to allow even more detail about\n * the error. For example a plugin might provide a specific HTTP status code and an\n * error message for that code. Then when the plugin gets that error this class will\n * know how to display an error message for it. This allows a custom message to show\n * up on the `Player` error overlay.\n *\n * @type {Array}\n */\n\nMediaError.prototype.status = null;\n/**\n * Errors indexed by the W3C standard. The order **CANNOT CHANGE**! See the\n * specification listed under {@link MediaError} for more information.\n *\n * @enum {array}\n * @readonly\n * @property {string} 0 - MEDIA_ERR_CUSTOM\n * @property {string} 1 - MEDIA_ERR_ABORTED\n * @property {string} 2 - MEDIA_ERR_NETWORK\n * @property {string} 3 - MEDIA_ERR_DECODE\n * @property {string} 4 - MEDIA_ERR_SRC_NOT_SUPPORTED\n * @property {string} 5 - MEDIA_ERR_ENCRYPTED\n */\n\nMediaError.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED'];\n/**\n * The default `MediaError` messages based on the {@link MediaError.errorTypes}.\n *\n * @type {Array}\n * @constant\n */\n\nMediaError.defaultMessages = {\n 1: 'You aborted the media playback',\n 2: 'A network error caused the media download to fail part-way.',\n 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',\n 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',\n 5: 'The media is encrypted and we do not have the keys to decrypt it.'\n}; // Add types as properties on MediaError\n// e.g. MediaError.MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\nfor (var errNum = 0; errNum < MediaError.errorTypes.length; errNum++) {\n MediaError[MediaError.errorTypes[errNum]] = errNum; // values should be accessible on both the class and instance\n\n MediaError.prototype[MediaError.errorTypes[errNum]] = errNum;\n} // jsdocs for instance/static members added above\n\n/**\n * Returns whether an object is `Promise`-like (i.e. has a `then` method).\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n *\n * @return {boolean}\n * Whether or not the object is `Promise`-like.\n */\nfunction isPromise(value) {\n return value !== undefined && value !== null && typeof value.then === 'function';\n}\n/**\n * Silence a Promise-like object.\n *\n * This is useful for avoiding non-harmful, but potentially confusing \"uncaught\n * play promise\" rejection error messages.\n *\n * @param {Object} value\n * An object that may or may not be `Promise`-like.\n */\n\nfunction silencePromise(value) {\n if (isPromise(value)) {\n value.then(null, function (e) {});\n }\n}\n\n/**\n * @file text-track-list-converter.js Utilities for capturing text track state and\n * re-creating tracks based on a capture.\n *\n * @module text-track-list-converter\n */\n\n/**\n * Examine a single {@link TextTrack} and return a JSON-compatible javascript object that\n * represents the {@link TextTrack}'s state.\n *\n * @param {TextTrack} track\n * The text track to query.\n *\n * @return {Object}\n * A serializable javascript representation of the TextTrack.\n * @private\n */\nvar trackToJson_ = function trackToJson_(track) {\n var ret = ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(function (acc, prop, i) {\n if (track[prop]) {\n acc[prop] = track[prop];\n }\n\n return acc;\n }, {\n cues: track.cues && Array.prototype.map.call(track.cues, function (cue) {\n return {\n startTime: cue.startTime,\n endTime: cue.endTime,\n text: cue.text,\n id: cue.id\n };\n })\n });\n return ret;\n};\n/**\n * Examine a {@link Tech} and return a JSON-compatible javascript array that represents the\n * state of all {@link TextTrack}s currently configured. The return array is compatible with\n * {@link text-track-list-converter:jsonToTextTracks}.\n *\n * @param {Tech} tech\n * The tech object to query\n *\n * @return {Array}\n * A serializable javascript representation of the {@link Tech}s\n * {@link TextTrackList}.\n */\n\n\nvar textTracksToJson = function textTracksToJson(tech) {\n var trackEls = tech.$$('track');\n var trackObjs = Array.prototype.map.call(trackEls, function (t) {\n return t.track;\n });\n var tracks = Array.prototype.map.call(trackEls, function (trackEl) {\n var json = trackToJson_(trackEl.track);\n\n if (trackEl.src) {\n json.src = trackEl.src;\n }\n\n return json;\n });\n return tracks.concat(Array.prototype.filter.call(tech.textTracks(), function (track) {\n return trackObjs.indexOf(track) === -1;\n }).map(trackToJson_));\n};\n/**\n * Create a set of remote {@link TextTrack}s on a {@link Tech} based on an array of javascript\n * object {@link TextTrack} representations.\n *\n * @param {Array} json\n * An array of `TextTrack` representation objects, like those that would be\n * produced by `textTracksToJson`.\n *\n * @param {Tech} tech\n * The `Tech` to create the `TextTrack`s on.\n */\n\n\nvar jsonToTextTracks = function jsonToTextTracks(json, tech) {\n json.forEach(function (track) {\n var addedTrack = tech.addRemoteTextTrack(track).track;\n\n if (!track.src && track.cues) {\n track.cues.forEach(function (cue) {\n return addedTrack.addCue(cue);\n });\n }\n });\n return tech.textTracks();\n};\n\nvar textTrackConverter = {\n textTracksToJson: textTracksToJson,\n jsonToTextTracks: jsonToTextTracks,\n trackToJson_: trackToJson_\n};\n\nvar MODAL_CLASS_NAME = 'vjs-modal-dialog';\n/**\n * The `ModalDialog` displays over the video and its controls, which blocks\n * interaction with the player until it is closed.\n *\n * Modal dialogs include a \"Close\" button and will close when that button\n * is activated - or when ESC is pressed anywhere.\n *\n * @extends Component\n */\n\nvar ModalDialog = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ModalDialog, _Component);\n\n /**\n * Create an instance of this class.\n *\n * @param {Player} player\n * The `Player` that this class should be attached to.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Mixed} [options.content=undefined]\n * Provide customized content for this modal.\n *\n * @param {string} [options.description]\n * A text description for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.fillAlways=false]\n * Normally, modals are automatically filled only the first time\n * they open. This tells the modal to refresh its content\n * every time it opens.\n *\n * @param {string} [options.label]\n * A text label for the modal, primarily for accessibility.\n *\n * @param {boolean} [options.pauseOnOpen=true]\n * If `true`, playback will will be paused if playing when\n * the modal opens, and resumed when it closes.\n *\n * @param {boolean} [options.temporary=true]\n * If `true`, the modal can only be opened once; it will be\n * disposed as soon as it's closed.\n *\n * @param {boolean} [options.uncloseable=false]\n * If `true`, the user will not be able to close the modal\n * through the UI in the normal ways. Programmatic closing is\n * still possible.\n */\n function ModalDialog(player, options) {\n var _this;\n\n _this = _Component.call(this, player, options) || this;\n\n _this.handleKeyDown_ = function (e) {\n return _this.handleKeyDown(e);\n };\n\n _this.close_ = function (e) {\n return _this.close(e);\n };\n\n _this.opened_ = _this.hasBeenOpened_ = _this.hasBeenFilled_ = false;\n\n _this.closeable(!_this.options_.uncloseable);\n\n _this.content(_this.options_.content); // Make sure the contentEl is defined AFTER any children are initialized\n // because we only want the contents of the modal in the contentEl\n // (not the UI elements like the close button).\n\n\n _this.contentEl_ = createEl('div', {\n className: MODAL_CLASS_NAME + \"-content\"\n }, {\n role: 'document'\n });\n _this.descEl_ = createEl('p', {\n className: MODAL_CLASS_NAME + \"-description vjs-control-text\",\n id: _this.el().getAttribute('aria-describedby')\n });\n textContent(_this.descEl_, _this.description());\n\n _this.el_.appendChild(_this.descEl_);\n\n _this.el_.appendChild(_this.contentEl_);\n\n return _this;\n }\n /**\n * Create the `ModalDialog`'s DOM element\n *\n * @return {Element}\n * The DOM element that gets created.\n */\n\n\n var _proto = ModalDialog.prototype;\n\n _proto.createEl = function createEl() {\n return _Component.prototype.createEl.call(this, 'div', {\n className: this.buildCSSClass(),\n tabIndex: -1\n }, {\n 'aria-describedby': this.id() + \"_description\",\n 'aria-hidden': 'true',\n 'aria-label': this.label(),\n 'role': 'dialog'\n });\n };\n\n _proto.dispose = function dispose() {\n this.contentEl_ = null;\n this.descEl_ = null;\n this.previouslyActiveEl_ = null;\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Builds the default DOM `className`.\n *\n * @return {string}\n * The DOM `className` for this object.\n */\n ;\n\n _proto.buildCSSClass = function buildCSSClass() {\n return MODAL_CLASS_NAME + \" vjs-hidden \" + _Component.prototype.buildCSSClass.call(this);\n }\n /**\n * Returns the label string for this modal. Primarily used for accessibility.\n *\n * @return {string}\n * the localized or raw label of this modal.\n */\n ;\n\n _proto.label = function label() {\n return this.localize(this.options_.label || 'Modal Window');\n }\n /**\n * Returns the description string for this modal. Primarily used for\n * accessibility.\n *\n * @return {string}\n * The localized or raw description of this modal.\n */\n ;\n\n _proto.description = function description() {\n var desc = this.options_.description || this.localize('This is a modal window.'); // Append a universal closeability message if the modal is closeable.\n\n if (this.closeable()) {\n desc += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.');\n }\n\n return desc;\n }\n /**\n * Opens the modal.\n *\n * @fires ModalDialog#beforemodalopen\n * @fires ModalDialog#modalopen\n */\n ;\n\n _proto.open = function open() {\n if (!this.opened_) {\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is opened.\n *\n * @event ModalDialog#beforemodalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalopen');\n this.opened_ = true; // Fill content if the modal has never opened before and\n // never been filled.\n\n if (this.options_.fillAlways || !this.hasBeenOpened_ && !this.hasBeenFilled_) {\n this.fill();\n } // If the player was playing, pause it and take note of its previously\n // playing state.\n\n\n this.wasPlaying_ = !player.paused();\n\n if (this.options_.pauseOnOpen && this.wasPlaying_) {\n player.pause();\n }\n\n this.on('keydown', this.handleKeyDown_); // Hide controls and note if they were enabled.\n\n this.hadControls_ = player.controls();\n player.controls(false);\n this.show();\n this.conditionalFocus_();\n this.el().setAttribute('aria-hidden', 'false');\n /**\n * Fired just after a `ModalDialog` is opened.\n *\n * @event ModalDialog#modalopen\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalopen');\n this.hasBeenOpened_ = true;\n }\n }\n /**\n * If the `ModalDialog` is currently open or closed.\n *\n * @param {boolean} [value]\n * If given, it will open (`true`) or close (`false`) the modal.\n *\n * @return {boolean}\n * the current open state of the modaldialog\n */\n ;\n\n _proto.opened = function opened(value) {\n if (typeof value === 'boolean') {\n this[value ? 'open' : 'close']();\n }\n\n return this.opened_;\n }\n /**\n * Closes the modal, does nothing if the `ModalDialog` is\n * not open.\n *\n * @fires ModalDialog#beforemodalclose\n * @fires ModalDialog#modalclose\n */\n ;\n\n _proto.close = function close() {\n if (!this.opened_) {\n return;\n }\n\n var player = this.player();\n /**\n * Fired just before a `ModalDialog` is closed.\n *\n * @event ModalDialog#beforemodalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalclose');\n this.opened_ = false;\n\n if (this.wasPlaying_ && this.options_.pauseOnOpen) {\n player.play();\n }\n\n this.off('keydown', this.handleKeyDown_);\n\n if (this.hadControls_) {\n player.controls(true);\n }\n\n this.hide();\n this.el().setAttribute('aria-hidden', 'true');\n /**\n * Fired just after a `ModalDialog` is closed.\n *\n * @event ModalDialog#modalclose\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalclose');\n this.conditionalBlur_();\n\n if (this.options_.temporary) {\n this.dispose();\n }\n }\n /**\n * Check to see if the `ModalDialog` is closeable via the UI.\n *\n * @param {boolean} [value]\n * If given as a boolean, it will set the `closeable` option.\n *\n * @return {boolean}\n * Returns the final value of the closable option.\n */\n ;\n\n _proto.closeable = function closeable(value) {\n if (typeof value === 'boolean') {\n var closeable = this.closeable_ = !!value;\n var close = this.getChild('closeButton'); // If this is being made closeable and has no close button, add one.\n\n if (closeable && !close) {\n // The close button should be a child of the modal - not its\n // content element, so temporarily change the content element.\n var temp = this.contentEl_;\n this.contentEl_ = this.el_;\n close = this.addChild('closeButton', {\n controlText: 'Close Modal Dialog'\n });\n this.contentEl_ = temp;\n this.on(close, 'close', this.close_);\n } // If this is being made uncloseable and has a close button, remove it.\n\n\n if (!closeable && close) {\n this.off(close, 'close', this.close_);\n this.removeChild(close);\n close.dispose();\n }\n }\n\n return this.closeable_;\n }\n /**\n * Fill the modal's content element with the modal's \"content\" option.\n * The content element will be emptied before this change takes place.\n */\n ;\n\n _proto.fill = function fill() {\n this.fillWith(this.content());\n }\n /**\n * Fill the modal's content element with arbitrary content.\n * The content element will be emptied before this change takes place.\n *\n * @fires ModalDialog#beforemodalfill\n * @fires ModalDialog#modalfill\n *\n * @param {Mixed} [content]\n * The same rules apply to this as apply to the `content` option.\n */\n ;\n\n _proto.fillWith = function fillWith(content) {\n var contentEl = this.contentEl();\n var parentEl = contentEl.parentNode;\n var nextSiblingEl = contentEl.nextSibling;\n /**\n * Fired just before a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#beforemodalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('beforemodalfill');\n this.hasBeenFilled_ = true; // Detach the content element from the DOM before performing\n // manipulation to avoid modifying the live DOM multiple times.\n\n parentEl.removeChild(contentEl);\n this.empty();\n insertContent(contentEl, content);\n /**\n * Fired just after a `ModalDialog` is filled with content.\n *\n * @event ModalDialog#modalfill\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalfill'); // Re-inject the re-filled content element.\n\n if (nextSiblingEl) {\n parentEl.insertBefore(contentEl, nextSiblingEl);\n } else {\n parentEl.appendChild(contentEl);\n } // make sure that the close button is last in the dialog DOM\n\n\n var closeButton = this.getChild('closeButton');\n\n if (closeButton) {\n parentEl.appendChild(closeButton.el_);\n }\n }\n /**\n * Empties the content element. This happens anytime the modal is filled.\n *\n * @fires ModalDialog#beforemodalempty\n * @fires ModalDialog#modalempty\n */\n ;\n\n _proto.empty = function empty() {\n /**\n * Fired just before a `ModalDialog` is emptied.\n *\n * @event ModalDialog#beforemodalempty\n * @type {EventTarget~Event}\n */\n this.trigger('beforemodalempty');\n emptyEl(this.contentEl());\n /**\n * Fired just after a `ModalDialog` is emptied.\n *\n * @event ModalDialog#modalempty\n * @type {EventTarget~Event}\n */\n\n this.trigger('modalempty');\n }\n /**\n * Gets or sets the modal content, which gets normalized before being\n * rendered into the DOM.\n *\n * This does not update the DOM or fill the modal, but it is called during\n * that process.\n *\n * @param {Mixed} [value]\n * If defined, sets the internal content value to be used on the\n * next call(s) to `fill`. This value is normalized before being\n * inserted. To \"clear\" the internal content value, pass `null`.\n *\n * @return {Mixed}\n * The current content of the modal dialog\n */\n ;\n\n _proto.content = function content(value) {\n if (typeof value !== 'undefined') {\n this.content_ = value;\n }\n\n return this.content_;\n }\n /**\n * conditionally focus the modal dialog if focus was previously on the player.\n *\n * @private\n */\n ;\n\n _proto.conditionalFocus_ = function conditionalFocus_() {\n var activeEl = document.activeElement;\n var playerEl = this.player_.el_;\n this.previouslyActiveEl_ = null;\n\n if (playerEl.contains(activeEl) || playerEl === activeEl) {\n this.previouslyActiveEl_ = activeEl;\n this.focus();\n }\n }\n /**\n * conditionally blur the element and refocus the last focused element\n *\n * @private\n */\n ;\n\n _proto.conditionalBlur_ = function conditionalBlur_() {\n if (this.previouslyActiveEl_) {\n this.previouslyActiveEl_.focus();\n this.previouslyActiveEl_ = null;\n }\n }\n /**\n * Keydown handler. Attached when modal is focused.\n *\n * @listens keydown\n */\n ;\n\n _proto.handleKeyDown = function handleKeyDown(event) {\n // Do not allow keydowns to reach out of the modal dialog.\n event.stopPropagation();\n\n if (keycode.isEventKey(event, 'Escape') && this.closeable()) {\n event.preventDefault();\n this.close();\n return;\n } // exit early if it isn't a tab key\n\n\n if (!keycode.isEventKey(event, 'Tab')) {\n return;\n }\n\n var focusableEls = this.focusableEls_();\n var activeEl = this.el_.querySelector(':focus');\n var focusIndex;\n\n for (var i = 0; i < focusableEls.length; i++) {\n if (activeEl === focusableEls[i]) {\n focusIndex = i;\n break;\n }\n }\n\n if (document.activeElement === this.el_) {\n focusIndex = 0;\n }\n\n if (event.shiftKey && focusIndex === 0) {\n focusableEls[focusableEls.length - 1].focus();\n event.preventDefault();\n } else if (!event.shiftKey && focusIndex === focusableEls.length - 1) {\n focusableEls[0].focus();\n event.preventDefault();\n }\n }\n /**\n * get all focusable elements\n *\n * @private\n */\n ;\n\n _proto.focusableEls_ = function focusableEls_() {\n var allChildren = this.el_.querySelectorAll('*');\n return Array.prototype.filter.call(allChildren, function (child) {\n return (child instanceof window.HTMLAnchorElement || child instanceof window.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window.HTMLInputElement || child instanceof window.HTMLSelectElement || child instanceof window.HTMLTextAreaElement || child instanceof window.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window.HTMLIFrameElement || child instanceof window.HTMLObjectElement || child instanceof window.HTMLEmbedElement || child.hasAttribute('tabindex') && child.getAttribute('tabindex') !== -1 || child.hasAttribute('contenteditable');\n });\n };\n\n return ModalDialog;\n}(Component$1);\n/**\n * Default options for `ModalDialog` default options.\n *\n * @type {Object}\n * @private\n */\n\n\nModalDialog.prototype.options_ = {\n pauseOnOpen: true,\n temporary: true\n};\nComponent$1.registerComponent('ModalDialog', ModalDialog);\n\n/**\n * Common functionaliy between {@link TextTrackList}, {@link AudioTrackList}, and\n * {@link VideoTrackList}\n *\n * @extends EventTarget\n */\n\nvar TrackList = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(TrackList, _EventTarget);\n\n /**\n * Create an instance of this class\n *\n * @param {Track[]} tracks\n * A list of tracks to initialize the list with.\n *\n * @abstract\n */\n function TrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n _this = _EventTarget.call(this) || this;\n _this.tracks_ = [];\n /**\n * @memberof TrackList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'length', {\n get: function get() {\n return this.tracks_.length;\n }\n });\n\n for (var i = 0; i < tracks.length; i++) {\n _this.addTrack(tracks[i]);\n }\n\n return _this;\n }\n /**\n * Add a {@link Track} to the `TrackList`\n *\n * @param {Track} track\n * The audio, video, or text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = TrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n var index = this.tracks_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.tracks_[index];\n }\n });\n } // Do not add duplicate tracks\n\n\n if (this.tracks_.indexOf(track) === -1) {\n this.tracks_.push(track);\n /**\n * Triggered when a track is added to a track list.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n this.trigger({\n track: track,\n type: 'addtrack',\n target: this\n });\n }\n /**\n * Triggered when a track label is changed.\n *\n * @event TrackList#addtrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was added.\n */\n\n\n track.labelchange_ = function () {\n _this2.trigger({\n track: track,\n type: 'labelchange',\n target: _this2\n });\n };\n\n if (isEvented(track)) {\n track.addEventListener('labelchange', track.labelchange_);\n }\n }\n /**\n * Remove a {@link Track} from the `TrackList`\n *\n * @param {Track} rtrack\n * The audio, video, or text track to remove from the list.\n *\n * @fires TrackList#removetrack\n */\n ;\n\n _proto.removeTrack = function removeTrack(rtrack) {\n var track;\n\n for (var i = 0, l = this.length; i < l; i++) {\n if (this[i] === rtrack) {\n track = this[i];\n\n if (track.off) {\n track.off();\n }\n\n this.tracks_.splice(i, 1);\n break;\n }\n }\n\n if (!track) {\n return;\n }\n /**\n * Triggered when a track is removed from track list.\n *\n * @event TrackList#removetrack\n * @type {EventTarget~Event}\n * @property {Track} track\n * A reference to track that was removed.\n */\n\n\n this.trigger({\n track: track,\n type: 'removetrack',\n target: this\n });\n }\n /**\n * Get a Track from the TrackList by a tracks id\n *\n * @param {string} id - the id of the track to get\n * @method getTrackById\n * @return {Track}\n * @private\n */\n ;\n\n _proto.getTrackById = function getTrackById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var track = this[i];\n\n if (track.id === id) {\n result = track;\n break;\n }\n }\n\n return result;\n };\n\n return TrackList;\n}(EventTarget$2);\n/**\n * Triggered when a different track is selected/enabled.\n *\n * @event TrackList#change\n * @type {EventTarget~Event}\n */\n\n/**\n * Events that can be called with on + eventName. See {@link EventHandler}.\n *\n * @property {Object} TrackList#allowedEvents_\n * @private\n */\n\n\nTrackList.prototype.allowedEvents_ = {\n change: 'change',\n addtrack: 'addtrack',\n removetrack: 'removetrack',\n labelchange: 'labelchange'\n}; // emulate attribute EventHandler support to allow for feature detection\n\nfor (var event in TrackList.prototype.allowedEvents_) {\n TrackList.prototype['on' + event] = null;\n}\n\n/**\n * Anywhere we call this function we diverge from the spec\n * as we only support one enabled audiotrack at a time\n *\n * @param {AudioTrackList} list\n * list to work on\n *\n * @param {AudioTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers$1 = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another audio track is enabled, disable it\n\n\n list[i].enabled = false;\n }\n};\n/**\n * The current list of {@link AudioTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotracklist}\n * @extends TrackList\n */\n\n\nvar AudioTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(AudioTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {AudioTrack[]} [tracks=[]]\n * A list of `AudioTrack` to instantiate the list with.\n */\n function AudioTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].enabled) {\n disableOthers$1(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n return _this;\n }\n /**\n * Add an {@link AudioTrack} to the `AudioTrackList`.\n *\n * @param {AudioTrack} track\n * The AudioTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = AudioTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.enabled) {\n disableOthers$1(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.enabledChange_ = function () {\n // when we are disabling other tracks (since we don't support\n // more than one track at a time) we will set changing_\n // to true so that we don't trigger additional change events\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers$1(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens AudioTrack#enabledchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('enabledchange', track.enabledChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.enabledChange_) {\n rtrack.removeEventListener('enabledchange', rtrack.enabledChange_);\n rtrack.enabledChange_ = null;\n }\n };\n\n return AudioTrackList;\n}(TrackList);\n\n/**\n * Un-select all other {@link VideoTrack}s that are selected.\n *\n * @param {VideoTrackList} list\n * list to work on\n *\n * @param {VideoTrack} track\n * The track to skip\n *\n * @private\n */\n\nvar disableOthers = function disableOthers(list, track) {\n for (var i = 0; i < list.length; i++) {\n if (!Object.keys(list[i]).length || track.id === list[i].id) {\n continue;\n } // another video track is enabled, disable it\n\n\n list[i].selected = false;\n }\n};\n/**\n * The current list of {@link VideoTrack} for a video.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotracklist}\n * @extends TrackList\n */\n\n\nvar VideoTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(VideoTrackList, _TrackList);\n\n /**\n * Create an instance of this class.\n *\n * @param {VideoTrack[]} [tracks=[]]\n * A list of `VideoTrack` to instantiate the list with.\n */\n function VideoTrackList(tracks) {\n var _this;\n\n if (tracks === void 0) {\n tracks = [];\n }\n\n // make sure only 1 track is enabled\n // sorted from last index to first index\n for (var i = tracks.length - 1; i >= 0; i--) {\n if (tracks[i].selected) {\n disableOthers(tracks, tracks[i]);\n break;\n }\n }\n\n _this = _TrackList.call(this, tracks) || this;\n _this.changing_ = false;\n /**\n * @member {number} VideoTrackList#selectedIndex\n * The current index of the selected {@link VideoTrack`}.\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selectedIndex', {\n get: function get() {\n for (var _i = 0; _i < this.length; _i++) {\n if (this[_i].selected) {\n return _i;\n }\n }\n\n return -1;\n },\n set: function set() {}\n });\n return _this;\n }\n /**\n * Add a {@link VideoTrack} to the `VideoTrackList`.\n *\n * @param {VideoTrack} track\n * The VideoTrack to add to the list\n *\n * @fires TrackList#addtrack\n */\n\n\n var _proto = VideoTrackList.prototype;\n\n _proto.addTrack = function addTrack(track) {\n var _this2 = this;\n\n if (track.selected) {\n disableOthers(this, track);\n }\n\n _TrackList.prototype.addTrack.call(this, track); // native tracks don't have this\n\n\n if (!track.addEventListener) {\n return;\n }\n\n track.selectedChange_ = function () {\n if (_this2.changing_) {\n return;\n }\n\n _this2.changing_ = true;\n disableOthers(_this2, track);\n _this2.changing_ = false;\n\n _this2.trigger('change');\n };\n /**\n * @listens VideoTrack#selectedchange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('selectedchange', track.selectedChange_);\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack);\n\n if (rtrack.removeEventListener && rtrack.selectedChange_) {\n rtrack.removeEventListener('selectedchange', rtrack.selectedChange_);\n rtrack.selectedChange_ = null;\n }\n };\n\n return VideoTrackList;\n}(TrackList);\n\n/**\n * The current list of {@link TextTrack} for a media file.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttracklist}\n * @extends TrackList\n */\n\nvar TextTrackList = /*#__PURE__*/function (_TrackList) {\n _inheritsLoose(TextTrackList, _TrackList);\n\n function TextTrackList() {\n return _TrackList.apply(this, arguments) || this;\n }\n\n var _proto = TextTrackList.prototype;\n\n /**\n * Add a {@link TextTrack} to the `TextTrackList`\n *\n * @param {TextTrack} track\n * The text track to add to the list.\n *\n * @fires TrackList#addtrack\n */\n _proto.addTrack = function addTrack(track) {\n var _this = this;\n\n _TrackList.prototype.addTrack.call(this, track);\n\n if (!this.queueChange_) {\n this.queueChange_ = function () {\n return _this.queueTrigger('change');\n };\n }\n\n if (!this.triggerSelectedlanguagechange) {\n this.triggerSelectedlanguagechange_ = function () {\n return _this.trigger('selectedlanguagechange');\n };\n }\n /**\n * @listens TextTrack#modechange\n * @fires TrackList#change\n */\n\n\n track.addEventListener('modechange', this.queueChange_);\n var nonLanguageTextTrackKind = ['metadata', 'chapters'];\n\n if (nonLanguageTextTrackKind.indexOf(track.kind) === -1) {\n track.addEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n };\n\n _proto.removeTrack = function removeTrack(rtrack) {\n _TrackList.prototype.removeTrack.call(this, rtrack); // manually remove the event handlers we added\n\n\n if (rtrack.removeEventListener) {\n if (this.queueChange_) {\n rtrack.removeEventListener('modechange', this.queueChange_);\n }\n\n if (this.selectedlanguagechange_) {\n rtrack.removeEventListener('modechange', this.triggerSelectedlanguagechange_);\n }\n }\n };\n\n return TextTrackList;\n}(TrackList);\n\n/**\n * @file html-track-element-list.js\n */\n\n/**\n * The current list of {@link HtmlTrackElement}s.\n */\nvar HtmlTrackElementList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class.\n *\n * @param {HtmlTrackElement[]} [tracks=[]]\n * A list of `HtmlTrackElement` to instantiate the list with.\n */\n function HtmlTrackElementList(trackElements) {\n if (trackElements === void 0) {\n trackElements = [];\n }\n\n this.trackElements_ = [];\n /**\n * @memberof HtmlTrackElementList\n * @member {number} length\n * The current number of `Track`s in the this Trackist.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.trackElements_.length;\n }\n });\n\n for (var i = 0, length = trackElements.length; i < length; i++) {\n this.addTrackElement_(trackElements[i]);\n }\n }\n /**\n * Add an {@link HtmlTrackElement} to the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to add to the list.\n *\n * @private\n */\n\n\n var _proto = HtmlTrackElementList.prototype;\n\n _proto.addTrackElement_ = function addTrackElement_(trackElement) {\n var index = this.trackElements_.length;\n\n if (!('' + index in this)) {\n Object.defineProperty(this, index, {\n get: function get() {\n return this.trackElements_[index];\n }\n });\n } // Do not add duplicate elements\n\n\n if (this.trackElements_.indexOf(trackElement) === -1) {\n this.trackElements_.push(trackElement);\n }\n }\n /**\n * Get an {@link HtmlTrackElement} from the `HtmlTrackElementList` given an\n * {@link TextTrack}.\n *\n * @param {TextTrack} track\n * The track associated with a track element.\n *\n * @return {HtmlTrackElement|undefined}\n * The track element that was found or undefined.\n *\n * @private\n */\n ;\n\n _proto.getTrackElementByTrack_ = function getTrackElementByTrack_(track) {\n var trackElement_;\n\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (track === this.trackElements_[i].track) {\n trackElement_ = this.trackElements_[i];\n break;\n }\n }\n\n return trackElement_;\n }\n /**\n * Remove a {@link HtmlTrackElement} from the `HtmlTrackElementList`\n *\n * @param {HtmlTrackElement} trackElement\n * The track element to remove from the list.\n *\n * @private\n */\n ;\n\n _proto.removeTrackElement_ = function removeTrackElement_(trackElement) {\n for (var i = 0, length = this.trackElements_.length; i < length; i++) {\n if (trackElement === this.trackElements_[i]) {\n if (this.trackElements_[i].track && typeof this.trackElements_[i].track.off === 'function') {\n this.trackElements_[i].track.off();\n }\n\n if (typeof this.trackElements_[i].off === 'function') {\n this.trackElements_[i].off();\n }\n\n this.trackElements_.splice(i, 1);\n break;\n }\n }\n };\n\n return HtmlTrackElementList;\n}();\n\n/**\n * @file text-track-cue-list.js\n */\n\n/**\n * @typedef {Object} TextTrackCueList~TextTrackCue\n *\n * @property {string} id\n * The unique id for this text track cue\n *\n * @property {number} startTime\n * The start time for this text track cue\n *\n * @property {number} endTime\n * The end time for this text track cue\n *\n * @property {boolean} pauseOnExit\n * Pause when the end time is reached if true.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcue}\n */\n\n/**\n * A List of TextTrackCues.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackcuelist}\n */\nvar TextTrackCueList = /*#__PURE__*/function () {\n /**\n * Create an instance of this class..\n *\n * @param {Array} cues\n * A list of cues to be initialized with\n */\n function TextTrackCueList(cues) {\n TextTrackCueList.prototype.setCues_.call(this, cues);\n /**\n * @memberof TextTrackCueList\n * @member {number} length\n * The current number of `TextTrackCue`s in the TextTrackCueList.\n * @instance\n */\n\n Object.defineProperty(this, 'length', {\n get: function get() {\n return this.length_;\n }\n });\n }\n /**\n * A setter for cues in this list. Creates getters\n * an an index for the cues.\n *\n * @param {Array} cues\n * An array of cues to set\n *\n * @private\n */\n\n\n var _proto = TextTrackCueList.prototype;\n\n _proto.setCues_ = function setCues_(cues) {\n var oldLength = this.length || 0;\n var i = 0;\n var l = cues.length;\n this.cues_ = cues;\n this.length_ = cues.length;\n\n var defineProp = function defineProp(index) {\n if (!('' + index in this)) {\n Object.defineProperty(this, '' + index, {\n get: function get() {\n return this.cues_[index];\n }\n });\n }\n };\n\n if (oldLength < l) {\n i = oldLength;\n\n for (; i < l; i++) {\n defineProp.call(this, i);\n }\n }\n }\n /**\n * Get a `TextTrackCue` that is currently in the `TextTrackCueList` by id.\n *\n * @param {string} id\n * The id of the cue that should be searched for.\n *\n * @return {TextTrackCueList~TextTrackCue|null}\n * A single cue or null if none was found.\n */\n ;\n\n _proto.getCueById = function getCueById(id) {\n var result = null;\n\n for (var i = 0, l = this.length; i < l; i++) {\n var cue = this[i];\n\n if (cue.id === id) {\n result = cue;\n break;\n }\n }\n\n return result;\n };\n\n return TextTrackCueList;\n}();\n\n/**\n * @file track-kinds.js\n */\n\n/**\n * All possible `VideoTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-videotrack-kind\n * @typedef VideoTrack~Kind\n * @enum\n */\nvar VideoTrackKind = {\n alternative: 'alternative',\n captions: 'captions',\n main: 'main',\n sign: 'sign',\n subtitles: 'subtitles',\n commentary: 'commentary'\n};\n/**\n * All possible `AudioTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-audiotrack-kind\n * @typedef AudioTrack~Kind\n * @enum\n */\n\nvar AudioTrackKind = {\n 'alternative': 'alternative',\n 'descriptions': 'descriptions',\n 'main': 'main',\n 'main-desc': 'main-desc',\n 'translation': 'translation',\n 'commentary': 'commentary'\n};\n/**\n * All possible `TextTrackKind`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#dom-texttrack-kind\n * @typedef TextTrack~Kind\n * @enum\n */\n\nvar TextTrackKind = {\n subtitles: 'subtitles',\n captions: 'captions',\n descriptions: 'descriptions',\n chapters: 'chapters',\n metadata: 'metadata'\n};\n/**\n * All possible `TextTrackMode`s\n *\n * @see https://html.spec.whatwg.org/multipage/embedded-content.html#texttrackmode\n * @typedef TextTrack~Mode\n * @enum\n */\n\nvar TextTrackMode = {\n disabled: 'disabled',\n hidden: 'hidden',\n showing: 'showing'\n};\n\n/**\n * A Track class that contains all of the common functionality for {@link AudioTrack},\n * {@link VideoTrack}, and {@link TextTrack}.\n *\n * > Note: This class should not be used directly\n *\n * @see {@link https://html.spec.whatwg.org/multipage/embedded-content.html}\n * @extends EventTarget\n * @abstract\n */\n\nvar Track = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(Track, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid kind for the track type you are creating.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @abstract\n */\n function Track(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var trackProps = {\n id: options.id || 'vjs_track_' + newGUID(),\n kind: options.kind || '',\n language: options.language || ''\n };\n var label = options.label || '';\n /**\n * @memberof Track\n * @member {string} id\n * The id of this track. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} kind\n * The kind of track that this is. Cannot be changed after creation.\n * @instance\n *\n * @readonly\n */\n\n /**\n * @memberof Track\n * @member {string} language\n * The two letter language code for this track. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n\n var _loop = function _loop(key) {\n Object.defineProperty(_assertThisInitialized(_this), key, {\n get: function get() {\n return trackProps[key];\n },\n set: function set() {}\n });\n };\n\n for (var key in trackProps) {\n _loop(key);\n }\n /**\n * @memberof Track\n * @member {string} label\n * The label of this track. Cannot be changed after creation.\n * @instance\n *\n * @fires Track#labelchange\n */\n\n\n Object.defineProperty(_assertThisInitialized(_this), 'label', {\n get: function get() {\n return label;\n },\n set: function set(newLabel) {\n if (newLabel !== label) {\n label = newLabel;\n /**\n * An event that fires when label changes on this track.\n *\n * > Note: This is not part of the spec!\n *\n * @event Track#labelchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('labelchange');\n }\n }\n });\n return _this;\n }\n\n return Track;\n}(EventTarget$2);\n\n/**\n * @file url.js\n * @module url\n */\n/**\n * @typedef {Object} url:URLObject\n *\n * @property {string} protocol\n * The protocol of the url that was parsed.\n *\n * @property {string} hostname\n * The hostname of the url that was parsed.\n *\n * @property {string} port\n * The port of the url that was parsed.\n *\n * @property {string} pathname\n * The pathname of the url that was parsed.\n *\n * @property {string} search\n * The search query of the url that was parsed.\n *\n * @property {string} hash\n * The hash of the url that was parsed.\n *\n * @property {string} host\n * The host of the url that was parsed.\n */\n\n/**\n * Resolve and parse the elements of a URL.\n *\n * @function\n * @param {String} url\n * The url to parse\n *\n * @return {url:URLObject}\n * An object of url details\n */\n\nvar parseUrl = function parseUrl(url) {\n // This entire method can be replace with URL once we are able to drop IE11\n var props = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host']; // add the url to an anchor and let the browser parse the URL\n\n var a = document.createElement('a');\n a.href = url; // Copy the specific URL properties to a new object\n // This is also needed for IE because the anchor loses its\n // properties when it's removed from the dom\n\n var details = {};\n\n for (var i = 0; i < props.length; i++) {\n details[props[i]] = a[props[i]];\n } // IE adds the port to the host property unlike everyone else. If\n // a port identifier is added for standard ports, strip it.\n\n\n if (details.protocol === 'http:') {\n details.host = details.host.replace(/:80$/, '');\n }\n\n if (details.protocol === 'https:') {\n details.host = details.host.replace(/:443$/, '');\n }\n\n if (!details.protocol) {\n details.protocol = window.location.protocol;\n }\n /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window.location.host;\n }\n\n return details;\n};\n/**\n * Get absolute version of relative URL. Used to tell Flash the correct URL.\n *\n * @function\n * @param {string} url\n * URL to make absolute\n *\n * @return {string}\n * Absolute URL\n *\n * @see http://stackoverflow.com/questions/470832/getting-an-absolute-url-from-a-relative-one-ie6-issue\n */\n\nvar getAbsoluteURL = function getAbsoluteURL(url) {\n // Check if absolute URL\n if (!url.match(/^https?:\\/\\//)) {\n // Convert to absolute URL. Flash hosted off-site needs an absolute URL.\n // add the url to an anchor and let the browser parse the URL\n var a = document.createElement('a');\n a.href = url;\n url = a.href;\n }\n\n return url;\n};\n/**\n * Returns the extension of the passed file name. It will return an empty string\n * if passed an invalid path.\n *\n * @function\n * @param {string} path\n * The fileName path like '/path/to/file.mp4'\n *\n * @return {string}\n * The extension in lower case or an empty string if no\n * extension could be found.\n */\n\nvar getFileExtension = function getFileExtension(path) {\n if (typeof path === 'string') {\n var splitPathRe = /^(\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^\\/]+?)(\\.([^\\.\\/\\?]+)))(?:[\\/]*|[\\?].*)$/;\n var pathParts = splitPathRe.exec(path);\n\n if (pathParts) {\n return pathParts.pop().toLowerCase();\n }\n }\n\n return '';\n};\n/**\n * Returns whether the url passed is a cross domain request or not.\n *\n * @function\n * @param {string} url\n * The url to check.\n *\n * @param {Object} [winLoc]\n * the domain to check the url against, defaults to window.location\n *\n * @param {string} [winLoc.protocol]\n * The window location protocol defaults to window.location.protocol\n *\n * @param {string} [winLoc.host]\n * The window location host defaults to window.location.host\n *\n * @return {boolean}\n * Whether it is a cross domain request or not.\n */\n\nvar isCrossOrigin = function isCrossOrigin(url, winLoc) {\n if (winLoc === void 0) {\n winLoc = window.location;\n }\n\n var urlInfo = parseUrl(url); // IE8 protocol relative urls will return ':' for protocol\n\n var srcProtocol = urlInfo.protocol === ':' ? winLoc.protocol : urlInfo.protocol; // Check if url is for another domain/origin\n // IE8 doesn't know location.origin, so we won't rely on it here\n\n var crossOrigin = srcProtocol + urlInfo.host !== winLoc.protocol + winLoc.host;\n return crossOrigin;\n};\n\nvar Url = /*#__PURE__*/Object.freeze({\n __proto__: null,\n parseUrl: parseUrl,\n getAbsoluteURL: getAbsoluteURL,\n getFileExtension: getFileExtension,\n isCrossOrigin: isCrossOrigin\n});\n\n/**\n * Takes a webvtt file contents and parses it into cues\n *\n * @param {string} srcContent\n * webVTT file contents\n *\n * @param {TextTrack} track\n * TextTrack to add cues to. Cues come from the srcContent.\n *\n * @private\n */\n\nvar parseCues = function parseCues(srcContent, track) {\n var parser = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder());\n var errors = [];\n\n parser.oncue = function (cue) {\n track.addCue(cue);\n };\n\n parser.onparsingerror = function (error) {\n errors.push(error);\n };\n\n parser.onflush = function () {\n track.trigger({\n type: 'loadeddata',\n target: track\n });\n };\n\n parser.parse(srcContent);\n\n if (errors.length > 0) {\n if (window.console && window.console.groupCollapsed) {\n window.console.groupCollapsed(\"Text Track parsing errors for \" + track.src);\n }\n\n errors.forEach(function (error) {\n return log$1.error(error);\n });\n\n if (window.console && window.console.groupEnd) {\n window.console.groupEnd();\n }\n }\n\n parser.flush();\n};\n/**\n * Load a `TextTrack` from a specified url.\n *\n * @param {string} src\n * Url to load track from.\n *\n * @param {TextTrack} track\n * Track to add cues to. Comes from the content at the end of `url`.\n *\n * @private\n */\n\n\nvar loadTrack = function loadTrack(src, track) {\n var opts = {\n uri: src\n };\n var crossOrigin = isCrossOrigin(src);\n\n if (crossOrigin) {\n opts.cors = crossOrigin;\n }\n\n var withCredentials = track.tech_.crossOrigin() === 'use-credentials';\n\n if (withCredentials) {\n opts.withCredentials = withCredentials;\n }\n\n XHR(opts, bind(this, function (err, response, responseBody) {\n if (err) {\n return log$1.error(err, response);\n }\n\n track.loaded_ = true; // Make sure that vttjs has loaded, otherwise, wait till it finished loading\n // NOTE: this is only used for the alt/video.novtt.js build\n\n if (typeof window.WebVTT !== 'function') {\n if (track.tech_) {\n // to prevent use before define eslint error, we define loadHandler\n // as a let here\n track.tech_.any(['vttjsloaded', 'vttjserror'], function (event) {\n if (event.type === 'vttjserror') {\n log$1.error(\"vttjs failed to load, stopping trying to process \" + track.src);\n return;\n }\n\n return parseCues(responseBody, track);\n });\n }\n } else {\n parseCues(responseBody, track);\n }\n }));\n};\n/**\n * A representation of a single `TextTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#texttrack}\n * @extends Track\n */\n\n\nvar TextTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(TextTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this TextTrack.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * version of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function TextTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (!options.tech) {\n throw new Error('A tech was not provided.');\n }\n\n var settings = mergeOptions$3(options, {\n kind: TextTrackKind[options.kind] || 'subtitles',\n language: options.language || options.srclang || ''\n });\n var mode = TextTrackMode[settings.mode] || 'disabled';\n var default_ = settings[\"default\"];\n\n if (settings.kind === 'metadata' || settings.kind === 'chapters') {\n mode = 'hidden';\n }\n\n _this = _Track.call(this, settings) || this;\n _this.tech_ = settings.tech;\n _this.cues_ = [];\n _this.activeCues_ = [];\n _this.preload_ = _this.tech_.preloadTextTracks !== false;\n var cues = new TextTrackCueList(_this.cues_);\n var activeCues = new TextTrackCueList(_this.activeCues_);\n var changed = false;\n var timeupdateHandler = bind(_assertThisInitialized(_this), function () {\n if (!this.tech_.isReady_ || this.tech_.isDisposed()) {\n return;\n } // Accessing this.activeCues for the side-effects of updating itself\n // due to its nature as a getter function. Do not remove or cues will\n // stop updating!\n // Use the setter to prevent deletion from uglify (pure_getters rule)\n\n\n this.activeCues = this.activeCues;\n\n if (changed) {\n this.trigger('cuechange');\n changed = false;\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.tech_.off('timeupdate', timeupdateHandler);\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.tech_.on('timeupdate', timeupdateHandler);\n }\n\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof TextTrack\n * @member {boolean} default\n * If this track was set to be on or off by default. Cannot be changed after\n * creation.\n * @instance\n *\n * @readonly\n */\n \"default\": {\n get: function get() {\n return default_;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {string} mode\n * Set the mode of this TextTrack to a valid {@link TextTrack~Mode}. Will\n * not be set if setting to an invalid mode.\n * @instance\n *\n * @fires TextTrack#modechange\n */\n mode: {\n get: function get() {\n return mode;\n },\n set: function set(newMode) {\n if (!TextTrackMode[newMode]) {\n return;\n }\n\n if (mode === newMode) {\n return;\n }\n\n mode = newMode;\n\n if (!this.preload_ && mode !== 'disabled' && this.cues.length === 0) {\n // On-demand load.\n loadTrack(this.src, this);\n }\n\n this.tech_.off('timeupdate', timeupdateHandler);\n\n if (mode !== 'disabled') {\n this.tech_.on('timeupdate', timeupdateHandler);\n }\n /**\n * An event that fires when mode changes on this track. This allows\n * the TextTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec!\n *\n * @event TextTrack#modechange\n * @type {EventTarget~Event}\n */\n\n\n this.trigger('modechange');\n }\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} cues\n * The text track cue list for this TextTrack.\n * @instance\n */\n cues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n }\n\n return cues;\n },\n set: function set() {}\n },\n\n /**\n * @memberof TextTrack\n * @member {TextTrackCueList} activeCues\n * The list text track cues that are currently active for this TextTrack.\n * @instance\n */\n activeCues: {\n get: function get() {\n if (!this.loaded_) {\n return null;\n } // nothing to do\n\n\n if (this.cues.length === 0) {\n return activeCues;\n }\n\n var ct = this.tech_.currentTime();\n var active = [];\n\n for (var i = 0, l = this.cues.length; i < l; i++) {\n var cue = this.cues[i];\n\n if (cue.startTime <= ct && cue.endTime >= ct) {\n active.push(cue);\n } else if (cue.startTime === cue.endTime && cue.startTime <= ct && cue.startTime + 0.5 >= ct) {\n active.push(cue);\n }\n }\n\n changed = false;\n\n if (active.length !== this.activeCues_.length) {\n changed = true;\n } else {\n for (var _i = 0; _i < active.length; _i++) {\n if (this.activeCues_.indexOf(active[_i]) === -1) {\n changed = true;\n }\n }\n }\n\n this.activeCues_ = active;\n activeCues.setCues_(this.activeCues_);\n return activeCues;\n },\n // /!\\ Keep this setter empty (see the timeupdate handler above)\n set: function set() {}\n }\n });\n\n if (settings.src) {\n _this.src = settings.src;\n\n if (!_this.preload_) {\n // Tracks will load on-demand.\n // Act like we're loaded for other purposes.\n _this.loaded_ = true;\n }\n\n if (_this.preload_ || settings.kind !== 'subtitles' && settings.kind !== 'captions') {\n loadTrack(_this.src, _assertThisInitialized(_this));\n }\n } else {\n _this.loaded_ = true;\n }\n\n return _this;\n }\n /**\n * Add a cue to the internal list of cues.\n *\n * @param {TextTrack~Cue} cue\n * The cue to add to our internal list\n */\n\n\n var _proto = TextTrack.prototype;\n\n _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) {\n cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text);\n\n for (var prop in originalCue) {\n if (!(prop in cue)) {\n cue[prop] = originalCue[prop];\n }\n } // make sure that `id` is copied over\n\n\n cue.id = originalCue.id;\n cue.originalCue_ = originalCue;\n }\n\n var tracks = this.tech_.textTracks();\n\n for (var i = 0; i < tracks.length; i++) {\n if (tracks[i] !== this) {\n tracks[i].removeCue(cue);\n }\n }\n\n this.cues_.push(cue);\n this.cues.setCues_(this.cues_);\n }\n /**\n * Remove a cue from our internal list\n *\n * @param {TextTrack~Cue} removeCue\n * The cue to remove from our internal list\n */\n ;\n\n _proto.removeCue = function removeCue(_removeCue) {\n var i = this.cues_.length;\n\n while (i--) {\n var cue = this.cues_[i];\n\n if (cue === _removeCue || cue.originalCue_ && cue.originalCue_ === _removeCue) {\n this.cues_.splice(i, 1);\n this.cues.setCues_(this.cues_);\n break;\n }\n }\n };\n\n return TextTrack;\n}(Track);\n/**\n * cuechange - One or more cues in the track have become active or stopped being active.\n */\n\n\nTextTrack.prototype.allowedEvents_ = {\n cuechange: 'cuechange'\n};\n\n/**\n * A representation of a single `AudioTrack`. If it is part of an {@link AudioTrackList}\n * only one `AudioTrack` in the list will be enabled at a time.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#audiotrack}\n * @extends Track\n */\n\nvar AudioTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(AudioTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {AudioTrack~Kind} [options.kind='']\n * A valid audio track kind\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.enabled]\n * If this track is the one that is currently playing. If this track is part of\n * an {@link AudioTrackList}, only one {@link AudioTrack} will be enabled.\n */\n function AudioTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: AudioTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var enabled = false;\n /**\n * @memberof AudioTrack\n * @member {boolean} enabled\n * If this `AudioTrack` is enabled or not. When setting this will\n * fire {@link AudioTrack#enabledchange} if the state of enabled is changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'enabled', {\n get: function get() {\n return enabled;\n },\n set: function set(newEnabled) {\n // an invalid or unchanged value\n if (typeof newEnabled !== 'boolean' || newEnabled === enabled) {\n return;\n }\n\n enabled = newEnabled;\n /**\n * An event that fires when enabled changes on this track. This allows\n * the AudioTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event AudioTrack#enabledchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('enabledchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.enabled) {\n _this.enabled = settings.enabled;\n }\n\n _this.loaded_ = true;\n return _this;\n }\n\n return AudioTrack;\n}(Track);\n\n/**\n * A representation of a single `VideoTrack`.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#videotrack}\n * @extends Track\n */\n\nvar VideoTrack = /*#__PURE__*/function (_Track) {\n _inheritsLoose(VideoTrack, _Track);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} [options={}]\n * Object of option names and values\n *\n * @param {string} [options.kind='']\n * A valid {@link VideoTrack~Kind}\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this AudioTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {boolean} [options.selected]\n * If this track is the one that is currently playing.\n */\n function VideoTrack(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n var settings = mergeOptions$3(options, {\n kind: VideoTrackKind[options.kind] || ''\n });\n _this = _Track.call(this, settings) || this;\n var selected = false;\n /**\n * @memberof VideoTrack\n * @member {boolean} selected\n * If this `VideoTrack` is selected or not. When setting this will\n * fire {@link VideoTrack#selectedchange} if the state of selected changed.\n * @instance\n *\n * @fires VideoTrack#selectedchange\n */\n\n Object.defineProperty(_assertThisInitialized(_this), 'selected', {\n get: function get() {\n return selected;\n },\n set: function set(newSelected) {\n // an invalid or unchanged value\n if (typeof newSelected !== 'boolean' || newSelected === selected) {\n return;\n }\n\n selected = newSelected;\n /**\n * An event that fires when selected changes on this track. This allows\n * the VideoTrackList that holds this track to act accordingly.\n *\n * > Note: This is not part of the spec! Native tracks will do\n * this internally without an event.\n *\n * @event VideoTrack#selectedchange\n * @type {EventTarget~Event}\n */\n\n this.trigger('selectedchange');\n }\n }); // if the user sets this track to selected then\n // set selected to that true value otherwise\n // we keep it false\n\n if (settings.selected) {\n _this.selected = settings.selected;\n }\n\n return _this;\n }\n\n return VideoTrack;\n}(Track);\n\n/**\n * @memberof HTMLTrackElement\n * @typedef {HTMLTrackElement~ReadyState}\n * @enum {number}\n */\n\nvar NONE = 0;\nvar LOADING = 1;\nvar LOADED = 2;\nvar ERROR = 3;\n/**\n * A single track represented in the DOM.\n *\n * @see [Spec]{@link https://html.spec.whatwg.org/multipage/embedded-content.html#htmltrackelement}\n * @extends EventTarget\n */\n\nvar HTMLTrackElement = /*#__PURE__*/function (_EventTarget) {\n _inheritsLoose(HTMLTrackElement, _EventTarget);\n\n /**\n * Create an instance of this class.\n *\n * @param {Object} options={}\n * Object of option names and values\n *\n * @param {Tech} options.tech\n * A reference to the tech that owns this HTMLTrackElement.\n *\n * @param {TextTrack~Kind} [options.kind='subtitles']\n * A valid text track kind.\n *\n * @param {TextTrack~Mode} [options.mode='disabled']\n * A valid text track mode.\n *\n * @param {string} [options.id='vjs_track_' + Guid.newGUID()]\n * A unique id for this TextTrack.\n *\n * @param {string} [options.label='']\n * The menu label for this track.\n *\n * @param {string} [options.language='']\n * A valid two character language code.\n *\n * @param {string} [options.srclang='']\n * A valid two character language code. An alternative, but deprioritized\n * vesion of `options.language`\n *\n * @param {string} [options.src]\n * A url to TextTrack cues.\n *\n * @param {boolean} [options.default]\n * If this track should default to on or off.\n */\n function HTMLTrackElement(options) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n _this = _EventTarget.call(this) || this;\n var readyState;\n var track = new TextTrack(options);\n _this.kind = track.kind;\n _this.src = track.src;\n _this.srclang = track.language;\n _this.label = track.label;\n _this[\"default\"] = track[\"default\"];\n Object.defineProperties(_assertThisInitialized(_this), {\n /**\n * @memberof HTMLTrackElement\n * @member {HTMLTrackElement~ReadyState} readyState\n * The current ready state of the track element.\n * @instance\n */\n readyState: {\n get: function get() {\n return readyState;\n }\n },\n\n /**\n * @memberof HTMLTrackElement\n * @member {TextTrack} track\n * The underlying TextTrack object.\n * @instance\n *\n */\n track: {\n get: function get() {\n return track;\n }\n }\n });\n readyState = NONE;\n /**\n * @listens TextTrack#loadeddata\n * @fires HTMLTrackElement#load\n */\n\n track.addEventListener('loadeddata', function () {\n readyState = LOADED;\n\n _this.trigger({\n type: 'load',\n target: _assertThisInitialized(_this)\n });\n });\n return _this;\n }\n\n return HTMLTrackElement;\n}(EventTarget$2);\n\nHTMLTrackElement.prototype.allowedEvents_ = {\n load: 'load'\n};\nHTMLTrackElement.NONE = NONE;\nHTMLTrackElement.LOADING = LOADING;\nHTMLTrackElement.LOADED = LOADED;\nHTMLTrackElement.ERROR = ERROR;\n\n/*\n * This file contains all track properties that are used in\n * player.js, tech.js, html5.js and possibly other techs in the future.\n */\n\nvar NORMAL = {\n audio: {\n ListClass: AudioTrackList,\n TrackClass: AudioTrack,\n capitalName: 'Audio'\n },\n video: {\n ListClass: VideoTrackList,\n TrackClass: VideoTrack,\n capitalName: 'Video'\n },\n text: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'Text'\n }\n};\nObject.keys(NORMAL).forEach(function (type) {\n NORMAL[type].getterName = type + \"Tracks\";\n NORMAL[type].privateName = type + \"Tracks_\";\n});\nvar REMOTE = {\n remoteText: {\n ListClass: TextTrackList,\n TrackClass: TextTrack,\n capitalName: 'RemoteText',\n getterName: 'remoteTextTracks',\n privateName: 'remoteTextTracks_'\n },\n remoteTextEl: {\n ListClass: HtmlTrackElementList,\n TrackClass: HTMLTrackElement,\n capitalName: 'RemoteTextTrackEls',\n getterName: 'remoteTextTrackEls',\n privateName: 'remoteTextTrackEls_'\n }\n};\n\nvar ALL = _extends({}, NORMAL, REMOTE);\n\nREMOTE.names = Object.keys(REMOTE);\nNORMAL.names = Object.keys(NORMAL);\nALL.names = [].concat(REMOTE.names).concat(NORMAL.names);\n\n/**\n * An Object containing a structure like: `{src: 'url', type: 'mimetype'}` or string\n * that just contains the src url alone.\n * * `var SourceObject = {src: 'http://ex.com/video.mp4', type: 'video/mp4'};`\n * `var SourceString = 'http://example.com/some-video.mp4';`\n *\n * @typedef {Object|string} Tech~SourceObject\n *\n * @property {string} src\n * The url to the source\n *\n * @property {string} type\n * The mime type of the source\n */\n\n/**\n * A function used by {@link Tech} to create a new {@link TextTrack}.\n *\n * @private\n *\n * @param {Tech} self\n * An instance of the Tech class.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @param {Object} [options={}]\n * An object with additional text track options\n *\n * @return {TextTrack}\n * The text track that was created.\n */\n\nfunction createTrackHelper(self, kind, label, language, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tracks = self.textTracks();\n options.kind = kind;\n\n if (label) {\n options.label = label;\n }\n\n if (language) {\n options.language = language;\n }\n\n options.tech = self;\n var track = new ALL.text.TrackClass(options);\n tracks.addTrack(track);\n return track;\n}\n/**\n * This is the base class for media playback technology controllers, such as\n * {@link HTML5}\n *\n * @extends Component\n */\n\n\nvar Tech = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Tech, _Component);\n\n /**\n * Create an instance of this Tech.\n *\n * @param {Object} [options]\n * The key/value store of player options.\n *\n * @param {Component~ReadyCallback} ready\n * Callback function to call when the `HTML5` Tech is ready.\n */\n function Tech(options, ready) {\n var _this;\n\n if (options === void 0) {\n options = {};\n }\n\n if (ready === void 0) {\n ready = function ready() {};\n }\n\n // we don't want the tech to report user activity automatically.\n // This is done manually in addControlsListeners\n options.reportTouchActivity = false;\n _this = _Component.call(this, null, options, ready) || this;\n\n _this.onDurationChange_ = function (e) {\n return _this.onDurationChange(e);\n };\n\n _this.trackProgress_ = function (e) {\n return _this.trackProgress(e);\n };\n\n _this.trackCurrentTime_ = function (e) {\n return _this.trackCurrentTime(e);\n };\n\n _this.stopTrackingCurrentTime_ = function (e) {\n return _this.stopTrackingCurrentTime(e);\n };\n\n _this.disposeSourceHandler_ = function (e) {\n return _this.disposeSourceHandler(e);\n }; // keep track of whether the current source has played at all to\n // implement a very limited played()\n\n\n _this.hasStarted_ = false;\n\n _this.on('playing', function () {\n this.hasStarted_ = true;\n });\n\n _this.on('loadstart', function () {\n this.hasStarted_ = false;\n });\n\n ALL.names.forEach(function (name) {\n var props = ALL[name];\n\n if (options && options[props.getterName]) {\n _this[props.privateName] = options[props.getterName];\n }\n }); // Manually track progress in cases where the browser/tech doesn't report it.\n\n if (!_this.featuresProgressEvents) {\n _this.manualProgressOn();\n } // Manually track timeupdates in cases where the browser/tech doesn't report it.\n\n\n if (!_this.featuresTimeupdateEvents) {\n _this.manualTimeUpdatesOn();\n }\n\n ['Text', 'Audio', 'Video'].forEach(function (track) {\n if (options[\"native\" + track + \"Tracks\"] === false) {\n _this[\"featuresNative\" + track + \"Tracks\"] = false;\n }\n });\n\n if (options.nativeCaptions === false || options.nativeTextTracks === false) {\n _this.featuresNativeTextTracks = false;\n } else if (options.nativeCaptions === true || options.nativeTextTracks === true) {\n _this.featuresNativeTextTracks = true;\n }\n\n if (!_this.featuresNativeTextTracks) {\n _this.emulateTextTracks();\n }\n\n _this.preloadTextTracks = options.preloadTextTracks !== false;\n _this.autoRemoteTextTracks_ = new ALL.text.ListClass();\n\n _this.initTrackListeners(); // Turn on component tap events only if not using native controls\n\n\n if (!options.nativeControlsForTouch) {\n _this.emitTapEvents();\n }\n\n if (_this.constructor) {\n _this.name_ = _this.constructor.name || 'Unknown Tech';\n }\n\n return _this;\n }\n /**\n * A special function to trigger source set in a way that will allow player\n * to re-trigger if the player or tech are not ready yet.\n *\n * @fires Tech#sourceset\n * @param {string} src The source string at the time of the source changing.\n */\n\n\n var _proto = Tech.prototype;\n\n _proto.triggerSourceset = function triggerSourceset(src) {\n var _this2 = this;\n\n if (!this.isReady_) {\n // on initial ready we have to trigger source set\n // 1ms after ready so that player can watch for it.\n this.one('ready', function () {\n return _this2.setTimeout(function () {\n return _this2.triggerSourceset(src);\n }, 1);\n });\n }\n /**\n * Fired when the source is set on the tech causing the media element\n * to reload.\n *\n * @see {@link Player#event:sourceset}\n * @event Tech#sourceset\n * @type {EventTarget~Event}\n */\n\n\n this.trigger({\n src: src,\n type: 'sourceset'\n });\n }\n /* Fallbacks for unsupported event types\n ================================================================================ */\n\n /**\n * Polyfill the `progress` event for browsers that don't support it natively.\n *\n * @see {@link Tech#trackProgress}\n */\n ;\n\n _proto.manualProgressOn = function manualProgressOn() {\n this.on('durationchange', this.onDurationChange_);\n this.manualProgress = true; // Trigger progress watching when a source begins loading\n\n this.one('ready', this.trackProgress_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n */\n ;\n\n _proto.manualProgressOff = function manualProgressOff() {\n this.manualProgress = false;\n this.stopTrackingProgress();\n this.off('durationchange', this.onDurationChange_);\n }\n /**\n * This is used to trigger a `progress` event when the buffered percent changes. It\n * sets an interval function that will be called every 500 milliseconds to check if the\n * buffer end percent has changed.\n *\n * > This function is called by {@link Tech#manualProgressOn}\n *\n * @param {EventTarget~Event} event\n * The `ready` event that caused this to run.\n *\n * @listens Tech#ready\n * @fires Tech#progress\n */\n ;\n\n _proto.trackProgress = function trackProgress(event) {\n this.stopTrackingProgress();\n this.progressInterval = this.setInterval(bind(this, function () {\n // Don't trigger unless buffered amount is greater than last time\n var numBufferedPercent = this.bufferedPercent();\n\n if (this.bufferedPercent_ !== numBufferedPercent) {\n /**\n * See {@link Player#progress}\n *\n * @event Tech#progress\n * @type {EventTarget~Event}\n */\n this.trigger('progress');\n }\n\n this.bufferedPercent_ = numBufferedPercent;\n\n if (numBufferedPercent === 1) {\n this.stopTrackingProgress();\n }\n }), 500);\n }\n /**\n * Update our internal duration on a `durationchange` event by calling\n * {@link Tech#duration}.\n *\n * @param {EventTarget~Event} event\n * The `durationchange` event that caused this to run.\n *\n * @listens Tech#durationchange\n */\n ;\n\n _proto.onDurationChange = function onDurationChange(event) {\n this.duration_ = this.duration();\n }\n /**\n * Get and create a `TimeRange` object for buffering.\n *\n * @return {TimeRange}\n * The time range object that was created.\n */\n ;\n\n _proto.buffered = function buffered() {\n return createTimeRanges(0, 0);\n }\n /**\n * Get the percentage of the current video that is currently buffered.\n *\n * @return {number}\n * A number from 0 to 1 that represents the decimal percentage of the\n * video that is buffered.\n *\n */\n ;\n\n _proto.bufferedPercent = function bufferedPercent$1() {\n return bufferedPercent(this.buffered(), this.duration_);\n }\n /**\n * Turn off the polyfill for `progress` events that was created in\n * {@link Tech#manualProgressOn}\n * Stop manually tracking progress events by clearing the interval that was set in\n * {@link Tech#trackProgress}.\n */\n ;\n\n _proto.stopTrackingProgress = function stopTrackingProgress() {\n this.clearInterval(this.progressInterval);\n }\n /**\n * Polyfill the `timeupdate` event for browsers that don't support it.\n *\n * @see {@link Tech#trackCurrentTime}\n */\n ;\n\n _proto.manualTimeUpdatesOn = function manualTimeUpdatesOn() {\n this.manualTimeUpdates = true;\n this.on('play', this.trackCurrentTime_);\n this.on('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Turn off the polyfill for `timeupdate` events that was created in\n * {@link Tech#manualTimeUpdatesOn}\n */\n ;\n\n _proto.manualTimeUpdatesOff = function manualTimeUpdatesOff() {\n this.manualTimeUpdates = false;\n this.stopTrackingCurrentTime();\n this.off('play', this.trackCurrentTime_);\n this.off('pause', this.stopTrackingCurrentTime_);\n }\n /**\n * Sets up an interval function to track current time and trigger `timeupdate` every\n * 250 milliseconds.\n *\n * @listens Tech#play\n * @triggers Tech#timeupdate\n */\n ;\n\n _proto.trackCurrentTime = function trackCurrentTime() {\n if (this.currentTimeInterval) {\n this.stopTrackingCurrentTime();\n }\n\n this.currentTimeInterval = this.setInterval(function () {\n /**\n * Triggered at an interval of 250ms to indicated that time is passing in the video.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n }); // 42 = 24 fps // 250 is what Webkit uses // FF uses 15\n }, 250);\n }\n /**\n * Stop the interval function created in {@link Tech#trackCurrentTime} so that the\n * `timeupdate` event is no longer triggered.\n *\n * @listens {Tech#pause}\n */\n ;\n\n _proto.stopTrackingCurrentTime = function stopTrackingCurrentTime() {\n this.clearInterval(this.currentTimeInterval); // #1002 - if the video ends right before the next timeupdate would happen,\n // the progress bar won't make it all the way to the end\n\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n /**\n * Turn off all event polyfills, clear the `Tech`s {@link AudioTrackList},\n * {@link VideoTrackList}, and {@link TextTrackList}, and dispose of this Tech.\n *\n * @fires Component#dispose\n */\n ;\n\n _proto.dispose = function dispose() {\n // clear out all tracks because we can't reuse them between techs\n this.clearTracks(NORMAL.names); // Turn off any manual progress or timeupdate tracking\n\n if (this.manualProgress) {\n this.manualProgressOff();\n }\n\n if (this.manualTimeUpdates) {\n this.manualTimeUpdatesOff();\n }\n\n _Component.prototype.dispose.call(this);\n }\n /**\n * Clear out a single `TrackList` or an array of `TrackLists` given their names.\n *\n * > Note: Techs without source handlers should call this between sources for `video`\n * & `audio` tracks. You don't want to use them between tracks!\n *\n * @param {string[]|string} types\n * TrackList names to clear, valid names are `video`, `audio`, and\n * `text`.\n */\n ;\n\n _proto.clearTracks = function clearTracks(types) {\n var _this3 = this;\n\n types = [].concat(types); // clear out all tracks because we can't reuse them between techs\n\n types.forEach(function (type) {\n var list = _this3[type + \"Tracks\"]() || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n\n if (type === 'text') {\n _this3.removeRemoteTextTrack(track);\n }\n\n list.removeTrack(track);\n }\n });\n }\n /**\n * Remove any TextTracks added via addRemoteTextTrack that are\n * flagged for automatic garbage collection\n */\n ;\n\n _proto.cleanupAutoTextTracks = function cleanupAutoTextTracks() {\n var list = this.autoRemoteTextTracks_ || [];\n var i = list.length;\n\n while (i--) {\n var track = list[i];\n this.removeRemoteTextTrack(track);\n }\n }\n /**\n * Reset the tech, which will removes all sources and reset the internal readyState.\n *\n * @abstract\n */\n ;\n\n _proto.reset = function reset() {}\n /**\n * Get the value of `crossOrigin` from the tech.\n *\n * @abstract\n *\n * @see {Html5#crossOrigin}\n */\n ;\n\n _proto.crossOrigin = function crossOrigin() {}\n /**\n * Set the value of `crossOrigin` on the tech.\n *\n * @abstract\n *\n * @param {string} crossOrigin the crossOrigin value\n * @see {Html5#setCrossOrigin}\n */\n ;\n\n _proto.setCrossOrigin = function setCrossOrigin() {}\n /**\n * Get or set an error on the Tech.\n *\n * @param {MediaError} [err]\n * Error to set on the Tech\n *\n * @return {MediaError|null}\n * The current error object on the tech, or null if there isn't one.\n */\n ;\n\n _proto.error = function error(err) {\n if (err !== undefined) {\n this.error_ = new MediaError(err);\n this.trigger('error');\n }\n\n return this.error_;\n }\n /**\n * Returns the `TimeRange`s that have been played through for the current source.\n *\n * > NOTE: This implementation is incomplete. It does not track the played `TimeRange`.\n * It only checks whether the source has played at all or not.\n *\n * @return {TimeRange}\n * - A single time range if this video has played\n * - An empty set of ranges if not.\n */\n ;\n\n _proto.played = function played() {\n if (this.hasStarted_) {\n return createTimeRanges(0, 0);\n }\n\n return createTimeRanges();\n }\n /**\n * Start playback\n *\n * @abstract\n *\n * @see {Html5#play}\n */\n ;\n\n _proto.play = function play() {}\n /**\n * Set whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#setScrubbing}\n */\n ;\n\n _proto.setScrubbing = function setScrubbing() {}\n /**\n * Get whether we are scrubbing or not\n *\n * @abstract\n *\n * @see {Html5#scrubbing}\n */\n ;\n\n _proto.scrubbing = function scrubbing() {}\n /**\n * Causes a manual time update to occur if {@link Tech#manualTimeUpdatesOn} was\n * previously called.\n *\n * @fires Tech#timeupdate\n */\n ;\n\n _proto.setCurrentTime = function setCurrentTime() {\n // improve the accuracy of manual timeupdates\n if (this.manualTimeUpdates) {\n /**\n * A manual `timeupdate` event.\n *\n * @event Tech#timeupdate\n * @type {EventTarget~Event}\n */\n this.trigger({\n type: 'timeupdate',\n target: this,\n manuallyTriggered: true\n });\n }\n }\n /**\n * Turn on listeners for {@link VideoTrackList}, {@link {AudioTrackList}, and\n * {@link TextTrackList} events.\n *\n * This adds {@link EventTarget~EventListeners} for `addtrack`, and `removetrack`.\n *\n * @fires Tech#audiotrackchange\n * @fires Tech#videotrackchange\n * @fires Tech#texttrackchange\n */\n ;\n\n _proto.initTrackListeners = function initTrackListeners() {\n var _this4 = this;\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link AudioTrackList}\n *\n * @event Tech#audiotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link VideoTrackList}\n *\n * @event Tech#videotrackchange\n * @type {EventTarget~Event}\n */\n\n /**\n * Triggered when tracks are added or removed on the Tech {@link TextTrackList}\n *\n * @event Tech#texttrackchange\n * @type {EventTarget~Event}\n */\n NORMAL.names.forEach(function (name) {\n var props = NORMAL[name];\n\n var trackListChanges = function trackListChanges() {\n _this4.trigger(name + \"trackchange\");\n };\n\n var tracks = _this4[props.getterName]();\n\n tracks.addEventListener('removetrack', trackListChanges);\n tracks.addEventListener('addtrack', trackListChanges);\n\n _this4.on('dispose', function () {\n tracks.removeEventListener('removetrack', trackListChanges);\n tracks.removeEventListener('addtrack', trackListChanges);\n });\n });\n }\n /**\n * Emulate TextTracks using vtt.js if necessary\n *\n * @fires Tech#vttjsloaded\n * @fires Tech#vttjserror\n */\n ;\n\n _proto.addWebVttScript_ = function addWebVttScript_() {\n var _this5 = this;\n\n if (window.WebVTT) {\n return;\n } // Initially, Tech.el_ is a child of a dummy-div wait until the Component system\n // signals that the Tech is ready at which point Tech.el_ is part of the DOM\n // before inserting the WebVTT script\n\n\n if (document.body.contains(this.el())) {\n // load via require if available and vtt.js script location was not passed in\n // as an option. novtt builds will turn the above require call into an empty object\n // which will cause this if check to always fail.\n if (!this.options_['vtt.js'] && isPlain(vtt) && Object.keys(vtt).length > 0) {\n this.trigger('vttjsloaded');\n return;\n } // load vtt.js via the script location option or the cdn of no location was\n // passed in\n\n\n var script = document.createElement('script');\n script.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js';\n\n script.onload = function () {\n /**\n * Fired when vtt.js is loaded.\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjsloaded');\n };\n\n script.onerror = function () {\n /**\n * Fired when vtt.js was not loaded due to an error\n *\n * @event Tech#vttjsloaded\n * @type {EventTarget~Event}\n */\n _this5.trigger('vttjserror');\n };\n\n this.on('dispose', function () {\n script.onload = null;\n script.onerror = null;\n }); // but have not loaded yet and we set it to true before the inject so that\n // we don't overwrite the injected window.WebVTT if it loads right away\n\n window.WebVTT = true;\n this.el().parentNode.appendChild(script);\n } else {\n this.ready(this.addWebVttScript_);\n }\n }\n /**\n * Emulate texttracks\n *\n */\n ;\n\n _proto.emulateTextTracks = function emulateTextTracks() {\n var _this6 = this;\n\n var tracks = this.textTracks();\n var remoteTracks = this.remoteTextTracks();\n\n var handleAddTrack = function handleAddTrack(e) {\n return tracks.addTrack(e.track);\n };\n\n var handleRemoveTrack = function handleRemoveTrack(e) {\n return tracks.removeTrack(e.track);\n };\n\n remoteTracks.on('addtrack', handleAddTrack);\n remoteTracks.on('removetrack', handleRemoveTrack);\n this.addWebVttScript_();\n\n var updateDisplay = function updateDisplay() {\n return _this6.trigger('texttrackchange');\n };\n\n var textTracksChanges = function textTracksChanges() {\n updateDisplay();\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n\n if (track.mode === 'showing') {\n track.addEventListener('cuechange', updateDisplay);\n }\n }\n };\n\n textTracksChanges();\n tracks.addEventListener('change', textTracksChanges);\n tracks.addEventListener('addtrack', textTracksChanges);\n tracks.addEventListener('removetrack', textTracksChanges);\n this.on('dispose', function () {\n remoteTracks.off('addtrack', handleAddTrack);\n remoteTracks.off('removetrack', handleRemoveTrack);\n tracks.removeEventListener('change', textTracksChanges);\n tracks.removeEventListener('addtrack', textTracksChanges);\n tracks.removeEventListener('removetrack', textTracksChanges);\n\n for (var i = 0; i < tracks.length; i++) {\n var track = tracks[i];\n track.removeEventListener('cuechange', updateDisplay);\n }\n });\n }\n /**\n * Create and returns a remote {@link TextTrack} object.\n *\n * @param {string} kind\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata)\n *\n * @param {string} [label]\n * Label to identify the text track\n *\n * @param {string} [language]\n * Two letter language abbreviation\n *\n * @return {TextTrack}\n * The TextTrack that gets created.\n */\n ;\n\n _proto.addTextTrack = function addTextTrack(kind, label, language) {\n if (!kind) {\n throw new Error('TextTrack kind is required but was not provided');\n }\n\n return createTrackHelper(this, kind, label, language);\n }\n /**\n * Create an emulated TextTrack for use by addRemoteTextTrack\n *\n * This is intended to be overridden by classes that inherit from\n * Tech in order to create native or custom TextTracks.\n *\n * @param {Object} options\n * The object should contain the options to initialize the TextTrack with.\n *\n * @param {string} [options.kind]\n * `TextTrack` kind (subtitles, captions, descriptions, chapters, or metadata).\n *\n * @param {string} [options.label].\n * Label to identify the text track\n *\n * @param {string} [options.language]\n * Two letter language abbreviation.\n *\n * @return {HTMLTrackElement}\n * The track element that gets created.\n */\n ;\n\n _proto.createRemoteTextTrack = function createRemoteTextTrack(options) {\n var track = mergeOptions$3(options, {\n tech: this\n });\n return new REMOTE.remoteTextEl.TrackClass(track);\n }\n /**\n * Creates a remote text track object and returns an html track element.\n *\n * > Note: This can be an emulated {@link HTMLTrackElement} or a native one.\n *\n * @param {Object} options\n * See {@link Tech#createRemoteTextTrack} for more detailed properties.\n *\n * @param {boolean} [manualCleanup=true]\n * - When false: the TextTrack will be automatically removed from the video\n * element whenever the source changes\n * - When True: The TextTrack will have to be cleaned up manually\n *\n * @return {HTMLTrackElement}\n * An Html Track Element.\n *\n * @deprecated The default functionality for this function will be equivalent\n * to \"manualCleanup=false\" in the future. The manualCleanup parameter will\n * also be removed.\n */\n ;\n\n _proto.addRemoteTextTrack = function addRemoteTextTrack(options, manualCleanup) {\n var _this7 = this;\n\n if (options === void 0) {\n options = {};\n }\n\n var htmlTrackElement = this.createRemoteTextTrack(options);\n\n if (manualCleanup !== true && manualCleanup !== false) {\n // deprecation warning\n log$1.warn('Calling addRemoteTextTrack without explicitly setting the \"manualCleanup\" parameter to `true` is deprecated and default to `false` in future version of video.js');\n manualCleanup = true;\n } // store HTMLTrackElement and TextTrack to remote list\n\n\n this.remoteTextTrackEls().addTrackElement_(htmlTrackElement);\n this.remoteTextTracks().addTrack(htmlTrackElement.track);\n\n if (manualCleanup !== true) {\n // create the TextTrackList if it doesn't exist\n this.ready(function () {\n return _this7.autoRemoteTextTracks_.addTrack(htmlTrackElement.track);\n });\n }\n\n return htmlTrackElement;\n }\n /**\n * Remove a remote text track from the remote `TextTrackList`.\n *\n * @param {TextTrack} track\n * `TextTrack` to remove from the `TextTrackList`\n */\n ;\n\n _proto.removeRemoteTextTrack = function removeRemoteTextTrack(track) {\n var trackElement = this.remoteTextTrackEls().getTrackElementByTrack_(track); // remove HTMLTrackElement and TextTrack from remote list\n\n this.remoteTextTrackEls().removeTrackElement_(trackElement);\n this.remoteTextTracks().removeTrack(track);\n this.autoRemoteTextTracks_.removeTrack(track);\n }\n /**\n * Gets available media playback quality metrics as specified by the W3C's Media\n * Playback Quality API.\n *\n * @see [Spec]{@link https://wicg.github.io/media-playback-quality}\n *\n * @return {Object}\n * An object with supported media playback quality metrics\n *\n * @abstract\n */\n ;\n\n _proto.getVideoPlaybackQuality = function getVideoPlaybackQuality() {\n return {};\n }\n /**\n * Attempt to create a floating video window always on top of other windows\n * so that users may continue consuming media while they interact with other\n * content sites, or applications on their device.\n *\n * @see [Spec]{@link https://wicg.github.io/picture-in-picture}\n *\n * @return {Promise|undefined}\n * A promise with a Picture-in-Picture window if the browser supports\n * Promises (or one was passed in as an option). It returns undefined\n * otherwise.\n *\n * @abstract\n */\n ;\n\n _proto.requestPictureInPicture = function requestPictureInPicture() {\n var PromiseClass = this.options_.Promise || window.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'