{"version":3,"sources":["webpack:///./node_modules/@videojs/vhs-utils/es/mp4-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/videojs-vtt.js/lib/vttregion.js","webpack:///./node_modules/@videojs/vhs-utils/es/decode-b64-to-uint8-array.js","webpack:///./node_modules/videojs-vtt.js/lib/vtt.js","webpack:///./node_modules/url-toolkit/src/url-toolkit.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/byte-helpers.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/@babel/runtime/helpers/inherits.js","webpack:///./node_modules/global/document.js","webpack:///./node_modules/video.js/dist/video.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/codecs.js","webpack:///./node_modules/@xmldom/xmldom/lib/index.js","webpack:///./node_modules/videojs-vtt.js/lib/browser-index.js","webpack:///./node_modules/@videojs/vhs-utils/es/id3-helpers.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/@babel/runtime/helpers/inheritsLoose.js","webpack:///./node_modules/@videojs/vhs-utils/es/resolve-url.js","webpack:///./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","webpack:///./node_modules/is-function/index.js","webpack:///./node_modules/mux.js/lib/tools/parse-sidx.js","webpack:///./node_modules/mpd-parser/dist/mpd-parser.es.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-groups.js","webpack:///./node_modules/@videojs/vhs-utils/es/media-types.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/@babel/runtime/helpers/extends.js","webpack:///./node_modules/mux.js/lib/utils/numbers.js","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/global/window.js"],"names":["DESCRIPTORS","Uint8Array","path","bytes","results","i","length","tag","size","headerSize","byte","z","_DESCRIPTORS$z","id","parser","push","subarray","desc","flags","dependsOnEsId","ocrEsId","descriptors","url","len","oti","streamType","bufferSize","maxBitrate","avgBitrate","findBox","paths","complete","Array","isArray","map","p","normalizePaths","type","end","data","apply","slice","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","offset","removeLength","signed","getLength","valueBytes","prototype","call","value","normalizePath","match","getInfinityDataSize","innerid","dataHeader","findEbml","dataStart","dataEnd","concat","NAL_TYPE_ONE","NAL_TYPE_TWO","EMULATION_PREVENTION","positions","newLength","newData","sourceIndex","shift","dataType","types","nalLimit","Infinity","nalStart","nalsFound","nalOffset","nalType","indexOf","CONSTANTS","_isLikely","aac","mask","mp3","webm","docType","mkv","matroska","mp4","mov","fmp4","moof","moov","ac3","ts","flac","ogg","avi","riff","wav","findH264Nal","findH265Nal","isLikelyTypes","Object","keys","filter","t","forEach","isLikelyFn","isLikely","scrollSetting","isValidPercentValue","module","exports","_width","_lines","_regionAnchorX","_regionAnchorY","_viewportAnchorX","_viewportAnchorY","_scroll","defineProperties","this","enumerable","get","set","Error","TypeError","setting","toLowerCase","findScrollSetting","console","warn","decodeB64ToUint8Array","b64Text","s","decodedString","atob","Buffer","from","toString","array","charCodeAt","document","_objCreate","create","F","o","arguments","ParsingError","errorData","message","name","code","parseTimeStamp","input","computeSeconds","h","m","f","replace","Settings","values","parseOptions","callback","keyValueDelim","groupDelim","groups","split","kv","trim","parseCue","cue","regionList","oInput","consumeTimeStamp","Errors","BadTimeStamp","skipWhitespace","startTime","substr","endTime","settings","k","v","region","alt","vals","vals0","integer","percent","vertical","line","e","lineAlign","snapToLines","align","position","start","left","center","middle","right","positionAlign","consumeCueSettings","constructor","BadSignature","dflt","defaultKey","has","a","n","test","parseInt","parseFloat","TEXTAREA_ELEMENT","createElement","TAG_NAME","c","b","u","ruby","rt","lang","DEFAULT_COLOR_CLASS","white","lime","cyan","red","yellow","magenta","blue","black","TAG_ANNOTATION","NEEDS_PARENT","parseContent","window","nextToken","result","shouldAdd","current","element","localName","annotation","tagName","rootDiv","tagStack","appendChild","createTextNode","innerHTML","textContent","pop","parentNode","node","createProcessingInstruction","classes","cl","bgColor","colorName","hasOwnProperty","propName","propValue","style","className","join","strongRTLRanges","isStrongRTLChar","charCode","currentRange","determineBidi","cueDiv","nodeStack","text","childNodes","pushNodes","nextTextNode","innerText","StyleBox","CueStyleBox","styleOptions","styles","color","backgroundColor","top","bottom","display","writingMode","unicodeBidi","applyStyles","div","direction","textAlign","font","whiteSpace","textPos","formatStyle","width","height","move","box","BoxPosition","obj","lh","offsetHeight","offsetWidth","offsetTop","rects","getClientRects","getBoundingClientRect","Math","max","lineHeight","undefined","moveBoxToLinePosition","styleBox","containerBox","boxPositions","boxPosition","linePos","track","textTrackList","mediaElement","trackList","count","mode","computeLinePos","axis","step","round","maxPosition","initialAxis","abs","ceil","reverse","calculatedPercentage","bestPosition","specifiedPosition","percentage","overlapsOppositeAxis","within","overlapsAny","intersectPercentage","findBestPosition","toCSSCompatValues","WebVTT","prop","val","unit","toMove","overlaps","b2","boxes","container","min","reference","getSimpleBoxPosition","StringDecoder","decode","decodeURIComponent","encodeURIComponent","convertCueToDOMTree","cuetext","processCues","cues","overlay","firstChild","removeChild","paddedOverlay","margin","hasBeenReset","displayState","shouldCompute","fontSize","Parser","vttjs","decoder","state","buffer","TextDecoder","reportOrThrowError","onparsingerror","parse","self","collectNextLine","pos","parseHeader","ontimestampmap","parseTimestampMap","xy","anchor","VTTRegion","lines","regionAnchorX","regionAnchorY","viewportAnchorX","viewportAnchorY","scroll","onregion","parseRegion","stream","alreadyCollectedLine","VTTCue","hasSubstring","oncue","flush","onflush","root","URL_REGEX","FIRST_SEGMENT_REGEX","SLASH_DOT_REGEX","SLASH_DOT_DOT_REGEX","URLToolkit","buildAbsoluteURL","baseURL","relativeURL","opts","alwaysNormalize","basePartsForNormalise","parseURL","buildURLFromParts","relativeParts","scheme","baseParts","netLoc","pathParts","exec","builtParts","params","query","fragment","baseURLPath","newPath","substring","lastIndexOf","parts","Stream","listeners","_proto","on","listener","off","index","splice","trigger","callbacks","args","_length","_i","dispose","pipe","destination","_Stream","LineStream","_this","nextNewline","TAB","String","fromCharCode","parseByterange","byterangeString","parseAttributes","attributes","attr","attrs","RegExp","ParseStream","customParsers","tagMappers","event","_this2","reduce","acc","mapper","mappedLine","newLine","tagType","duration","title","version","number","playlistType","allowed","URI","uri","BYTERANGE","byterange","RESOLUTION","resolution","BANDWIDTH","dateTimeString","dateTimeObject","Date","IV","Uint32Array","PRECISE","key","subkey","addParser","_ref","_this3","expression","customType","dataParser","segment","addTagMapper","_ref2","camelCaseKeys","str","toUpperCase","setHoldBack","manifest","serverControl","targetDuration","partTargetDuration","hb","phb","minTargetDuration","minPartDuration","lineStream","parseStream","currentMap","_key","uris","currentUri","hasParts","noop","defaultMediaGroups","currentTimeline","allowCache","discontinuityStarts","segments","lastByterangeEnd","lastPartByterangeEnd","preloadHints","timeline","preloadSegment","entry","mediaGroup","rendition","endlist","endList","inf","mediaSequence","discontinuitySequence","METHOD","KEYFORMAT","contentProtection","KEYID","schemeIdUri","keyId","pssh","method","iv","isFinite","playlist","playlists","mediaGroups","media","TYPE","NAME","mediaGroupType","default","DEFAULT","autoselect","AUTOSELECT","LANGUAGE","language","instreamId","CHARACTERISTICS","characteristics","FORCED","forced","discontinuity","targetduration","isNaN","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","options","padStart","repeat","isArrayBufferView","ArrayBuffer","isView","toUint8","byteOffset","byteLength","toHexString","toBinaryString","BigInt","Number","BYTE_TABLE","bytesToNumber","Uint16Array","_temp","_ref$signed","_ref$le","le","fn","total","exponent","numberToBytes","_temp2","_ref2$le","x","byteCount","countBits","byteIndex","bytesToString","string","escape","stringToBytes","stringIsBytes","unescape","view","concatTypedArrays","_len","buffers","totalLen","buf","tempBuffer","bytesMatch","_temp3","_ref3","_ref3$offset","_ref3$mask","every","bByte","keyCode","searchInput","hasKeyCode","which","names","foundNamedKey","search","codes","aliases","isEventKey","nameOrCode","alias","NAMESPACE","nameStartChar","nameChar","source","tagNamePattern","ParseError","locator","captureStackTrace","XMLReader","copyLocator","lineNumber","columnNumber","parseElementStartPart","el","currentNSMap","entityReplacer","errorHandler","addAttribute","qname","startIndex","attributeNames","fatalError","addValue","attrName","charAt","warning","setTagName","closed","error","isHTML","appendElement","domBuilder","localNSMap","qName","nsp","prefix","nsPrefix","_copy","XMLNS","startPrefixMapping","XML","ns","startElement","endElement","endPrefixMapping","parseHtmlSpecialContent","elStartEnd","elEndStart","characters","fixSelfClosed","closeMap","target","parseDCC","startCDATA","endCDATA","matchs","reg","lastIndex","pubid","sysid","lastMatch","startDTD","endDTD","parseInstruction","processingInstruction","ElementAttributes","defaultNSMap","entityMap","startDocument","defaultNSMapCopy","surrogate1","surrogate2","fixedFromCharCode","appendText","xt","lineEnd","linePattern","lineStart","parseStack","tagStart","doc","currentElement","config","endMatch","nbsp","locator2","endDocument","getLocalName","getLocator","getQName","getURI","getValue","conventions","find","notEmptyString","orderedSetReducer","toOrderedSet","list","splitOnASCIIWhitespace","copy","src","dest","_extends","Class","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","ownerDocument","ls","__set__","NamedNodeMap","_findNodeIndex","_addNamedNode","newAttr","oldAttr","ownerElement","_onRemoveAttribute","namespaceURI","_nsMap","_onAddAttribute","_removeNamedNode","DOMImplementation","Node","_xmlEncoder","_visitNode","nextSibling","Document","remove","_onUpdateChild","newChild","cs","child","_removeChild","previous","previousSibling","next","lastChild","isDocTypeNode","nodeType","isElementNode","isTextNode","isElementInsertionPossible","parentChildNodes","docTypeNode","isElementReplacementPossible","assertPreInsertionValidity1to5","parent","hasValidParentNodeType","hasInsertableNodeType","assertPreInsertionValidityInDocument","nodeChildNodes","nodeChildElements","parentElementChild","assertPreReplacementValidityInDocument","_insertBefore","_inDocumentAssertion","cp","newFirst","newLast","pre","Element","Attr","CharacterData","Text","Comment","CDATASection","DocumentType","Notation","Entity","EntityReference","DocumentFragment","ProcessingInstruction","XMLSerializer","nodeSerializeToString","isHtml","nodeFilter","refNode","documentElement","lookupPrefix","visibleNamespaces","namespace","serializeToString","needNamespaceDefine","addSerializedAttribute","qualifiedName","nodeName","prefixedNodeName","defaultNS","ai","item","nsi","publicId","systemId","sub","internalSubset","object","predicate","getNamedItem","setNamedItem","_ownerElement","setNamedItemNS","getNamedItemNS","removeNamedItem","removeNamedItemNS","hasFeature","feature","createDocument","doctype","implementation","createElementNS","createDocumentType","nodeValue","insertBefore","refChild","replaceChild","oldChild","hasChildNodes","cloneNode","deep","node2","attrs2","setAttributeNode","normalize","appendData","isSupported","hasAttributes","lookupNamespaceURI","isDefaultNamespace","importNode","importedNode","getElementById","rtv","getAttribute","getElementsByClassName","classNames","classNamesSet","base","nodeClassNames","matches","nodeClassNamesSet","createDocumentFragment","createComment","createCDATASection","createAttribute","specified","createEntityReference","pl","createAttributeNS","hasAttribute","getAttributeNode","setAttribute","removeAttribute","removeAttributeNode","_appendSingleChild","setAttributeNodeNS","removeAttributeNS","old","getAttributeNodeNS","hasAttributeNS","getAttributeNS","setAttributeNS","getElementsByTagName","getElementsByTagNameNS","substringData","insertData","replaceData","deleteData","splitText","newText","newNode","defineProperty","$$length","getTextContent","setPrototypeOf","subClass","superClass","writable","configurable","__esModule","doccy","minDoc","topLevel","browserApi","hooks_","hooks","removeHook","FullscreenApi","prefixed","apiMap","specApi","history","log$1","createLogger$1","logByType","level","log","lvl","levels","lvlRegExp","unshift","info","LogByTypeFactory","createLogger","subname","all","debug","fname","historyItem","clear","disable","enable","_len2","_key2","_len3","_key3","_len4","_key4","isObject","each","assign","sources","isPlain","computedStyle","getComputedStyle","computedStyleValue","getPropertyValue","USER_AGENT","navigator","userAgent","webkitVersionMap","appleWebkitVersion","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","Boolean","isReal","maxTouchPoints","DocumentTouch","IS_IPAD","IS_IPHONE","IS_IOS","IS_ANY_SAFARI","browser","freeze","__proto__","isNonBlankString","throwIfWhitespace","isEl","isInFrame","createQuerier","selector","context","querySelector","ctx","createEl","properties","content","getOwnPropertyNames","appendContent","prependTo","hasClass","classToCheck","classList","contains","addClass","classToAdd","add","removeClass","classToRemove","toggleClass","classToToggle","setAttributes","attrValue","getAttributes","knownBooleans","attrVal","attribute","blockTextSelection","body","focus","onselectstart","unblockTextSelection","rect","findPosition","offsetParent","fullscreenElement","offsetLeft","getPointerPosition","translated","y","transform","_values","boxTarget","boxW","boxH","offsetY","offsetX","changedTouches","pageX","pageY","emptyEl","normalizeContent","insertContent","isSingleLeftClick","button","buttons","videojs$1","$","$$","Dom","_windowLoaded","autoSetup","vids","audios","divs","mediaEls","mediaEl","autoSetupTimeout","player","wait","vjs","setTimeout","setWindowLoaded","removeEventListener","readyState","addEventListener","FakeWeakMap","createStyleElement","setTextContent","styleSheet","cssText","_guid","newGUID","WeakMap","vdata","floor","performance","now","access","_supportsPassive","DomData","_cleanUpEvents","elem","handlers","dispatcher","detachEvent","disabled","_handleMultipleEvents","fixEvent","fixed_","returnTrue","returnFalse","isPropagationStopped","isImmediatePropagationStopped","preventDefault","srcElement","relatedTarget","fromElement","toElement","returnValue","defaultPrevented","stopPropagation","cancelBubble","stopImmediatePropagation","clientX","scrollLeft","clientLeft","clientY","scrollTop","clientTop","passiveEvents","guid","hash","handlersCopy","supportsPassive","passive","attachEvent","removeType","elemData","bubbles","targetData","one","func","any","EVENT_MAP","Events","bind","uid","bound","throttle","last","EventTarget$2","allowedEvents_","ael","dispatchEvent","queueTrigger","Map","oldTimeout","clearTimeout","timeout","objName","name_","isEvented","eventBusEl_","isValidEventType","validateTarget","fnName","validateEventType","validateListener","normalizeListenArgs","isTargetingSelf","listen","EventedMixin","_normalizeListenArgs","removeListenerOnDispose","removeRemoverOnTargetDispose","_normalizeListenArgs2","wrapper","largs","_normalizeListenArgs3","_len5","_key5","targetOrType","typeOrListener","evented","eventBusKey","eventedCallbacks","el_","StatefulMixin","setState","stateUpdates","changes","to","stateful","defaultState","handleStateChanged","w","toTitleCase$1","mergeOptions$3","MapSham","map_","thisArg","Map$1","SetSham","set_","Set$1","Set","Component$1","Component","ready","play","player_","isDisposed_","parentComponent_","options_","id_","handleLanguagechange","children_","childIndex_","childNameIndex_","setTimeoutIds_","setIntervalIds_","rafIds_","namedRafs_","clearingTimersOnDispose_","initChildren","reportTouchActivity","enableTouchActivity","readyQueue_","restoreEl","isDisposed","localize","tokens","defaultValue","languages","primaryCode","primaryLang","localizedString","ret","contentEl","contentEl_","children","getChildById","getChild","getDescendant","currentChild","addChild","component","componentName","componentClassName","componentClass","ComponentClass","getComponent","childFound","compEl","workingChildren","parentOptions","Tech","some","wchild","isTech","playerOptions","buildCSSClass","sync","isReady_","triggerReady","readyQueue","show","hide","lockShowing","unlockShowing","num","skipListeners","dimension","dimensions","widthOrHeight","pxIndex","currentDimension","computedWidthOrHeight","rule","currentDimensions","currentWidth","currentHeight","blur","handleKeyDown","handleKeyPress","emitTapEvents","couldBeTap","touchStart","firstTouch","touches","xdiff","ydiff","sqrt","noTap","reportUserActivity","touchHolding","clearInterval","setInterval","touchEnd","timeoutId","clearTimersOnDispose_","interval","intervalId","requestAnimationFrame","_this4","supportsRaf_","requestNamedAnimationFrame","_this5","cancelNamedAnimationFrame","cancelAnimationFrame","_this6","idName","cancelName","registerComponent","ComponentToRegister","reason","isComp","isPrototypeOf","components_","Player","players","playerNames","pname","getRange","valueIndex","ranges","rangeIndex","maxIndex","rangeCheck","createTimeRangesObj","timeRangesObj","Symbol","iterator","createTimeRanges","bufferedPercent","buffered","bufferedDuration","MediaError","defaultMessages","status","errorTypes","1","2","3","4","5","errNum","isPromise","then","silencePromise","trackToJson_","textTrackConverter","tech","trackEls","trackObjs","trackEl","json","textTracks","addedTrack","addRemoteTextTrack","addCue","ModalDialog","_Component","handleKeyDown_","close_","close","opened_","hasBeenOpened_","hasBeenFilled_","closeable","uncloseable","MODAL_CLASS_NAME","role","descEl_","description","tabIndex","label","previouslyActiveEl_","open","fillAlways","fill","wasPlaying_","paused","pauseOnOpen","pause","hadControls_","controls","conditionalFocus_","opened","conditionalBlur_","temporary","closeable_","temp","controlText","fillWith","parentEl","nextSiblingEl","empty","closeButton","content_","activeEl","activeElement","playerEl","focusIndex","focusableEls","focusableEls_","shiftKey","allChildren","querySelectorAll","HTMLAnchorElement","HTMLAreaElement","HTMLInputElement","HTMLSelectElement","HTMLTextAreaElement","HTMLButtonElement","HTMLIFrameElement","HTMLObjectElement","HTMLEmbedElement","TrackList","_EventTarget","tracks","tracks_","addTrack","labelchange_","removeTrack","rtrack","l","getTrackById","change","addtrack","removetrack","labelchange","disableOthers$1","enabled","AudioTrackList","_TrackList","changing_","enabledChange_","disableOthers","selected","VideoTrackList","selectedChange_","TextTrackList","queueChange_","triggerSelectedlanguagechange","triggerSelectedlanguagechange_","kind","selectedlanguagechange_","HtmlTrackElementList","trackElements","trackElements_","addTrackElement_","trackElement","getTrackElementByTrack_","trackElement_","removeTrackElement_","TextTrackCueList","setCues_","length_","oldLength","cues_","defineProp","getCueById","VideoTrackKind","alternative","captions","main","sign","subtitles","commentary","AudioTrackKind","TextTrackKind","descriptions","chapters","metadata","TextTrackMode","hidden","showing","trackProps","_loop","newLabel","parseUrl","props","href","details","protocol","host","location","getAbsoluteURL","getFileExtension","isCrossOrigin","winLoc","urlInfo","Url","parseCues","srcContent","errors","groupCollapsed","groupEnd","loadTrack","crossOrigin","cors","withCredentials","tech_","err","response","responseBody","loaded_","TextTrack","_Track","srclang","default_","activeCues_","preload_","preloadTextTracks","activeCues","changed","timeupdateHandler","rvf_","requestVideoFrameCallback","stopTracking","startTracking","newMode","ct","currentTime","active","cancelVideoFrameCallback","originalCue","originalCue_","removeCue","_removeCue","cuechange","newEnabled","newSelected","HTMLTrackElement","load","NONE","LOADING","LOADED","ERROR","NORMAL","audio","ListClass","TrackClass","capitalName","video","getterName","privateName","REMOTE","remoteText","remoteTextEl","ALL","onDurationChange_","onDurationChange","trackProgress_","trackProgress","trackCurrentTime_","trackCurrentTime","stopTrackingCurrentTime_","stopTrackingCurrentTime","disposeSourceHandler_","disposeSourceHandler","queuedHanders_","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","onload","onerror","remoteTracks","remoteTextTracks","handleAddTrack","handleRemoveTrack","updateDisplay","textTracksChanges","addTextTrack","createTrackHelper","createRemoteTextTrack","manualCleanup","_this7","htmlTrackElement","remoteTextTrackEls","getVideoPlaybackQuality","requestPictureInPicture","PromiseClass","Promise","reject","disablePictureInPicture","setDisablePictureInPicture","cb","_this8","setPoster","playsinline","setPlaysinline","overrideNativeAudioTracks","overrideNativeVideoTracks","canPlayType","canPlaySource","srcObj","registerTech","techs_","defaultTechOrder_","getTech","videojs","featuresVolumeControl","featuresMuteControl","featuresFullscreenResize","featuresPlaybackRate","featuresSourceset","featuresVideoFrameCallback","withSourceHandlers","_Tech","registerSourceHandler","handler","sourceHandlers","can","selectSourceHandler","canHandleSource","sh","originalFn","sourceHandler_","setSource","nativeSourceHandler","currentSource_","handleSource","middlewares","middlewareInstances","TERMINATOR","setSourceHelper","middleware","lastRun","_middleware","mwFactory","mwrest","mw","mws","_mws$i","mwf","mwi","getOrCreateFactory","_src","mediate","arg","callMethod","middlewareValue","middlewareIterator","terminated","executeRight","allowedGetters","muted","seekable","volume","ended","allowedSetters","setMuted","setVolume","allowedMediators","MimetypesKind","opus","ogv","m4v","m4a","caf","oga","m3u8","mpd","jpg","jpeg","gif","png","svg","webp","getMimetype","ext","fixSource","mimetype","MediaLoader","j","techOrder","techName","loadTech_","ClickableComponent","handleMouseOver_","handleMouseOver","handleMouseOut_","handleMouseOut","handleClick_","handleClick","tabIndex_","createControlTextEl","controlTextEl_","controlText_","localizedText","nonIconControl","noUITitleAttributes","enabled_","clickHandler","PosterImage","_ClickableComponent","update","update_","poster","setSrc","backgroundImage","sourceIsEncrypted","usingPlugin","eme","sessions","fontMap","monospace","sansSerif","serif","monospaceSansSerif","monospaceSerif","proportionalSansSerif","proportionalSerif","casual","smallcaps","constructColor","opacity","hex","tryUpdateStyle","TextTrackDisplay","updateDisplayHandler","toggleDisplay","preselectTrack","firstDesc","firstCaptions","preferredTrack","modes","userPref","cache_","selectedLanguage","clearDisplay","allowMultipleShowingTracks","showingTracks","updateForTrack","descriptionsTrack","captionsSubtitlesTrack","_track","updateDisplayState","overrides","textTrackSettings","getValues","textOpacity","backgroundOpacity","windowColor","windowOpacity","edgeStyle","textShadow","fontPercent","fontFamily","fontVariant","_i2","_track2","_j","cueEl","LoadingSpinner","isAudio","playerType","dir","Button","BigPlayButton","_Button","mouseused_","handleMouseDown","playPromise","playToggle","playFocus","CloseButton","PlayToggle","replay","handlePlay","handlePause","handleEnded","handleSeeked","defaultImplementation","seconds","guide","gm","gh","formatTime","TimeDisplay","updateContent","updateTextNode_","span","labelText_","textNode_","time","formattedTime_","oldNode","CurrentTimeDisplay","_TimeDisplay","getCache","DurationDisplay","TimeDivider","RemainingTimeDisplay","displayNegative","remainingTimeDisplay","remainingTime","LiveDisplay","updateShowing","SeekToLive","updateLiveEdgeStatus","liveTracker","updateLiveEdgeStatusHandler_","textEl_","atLiveEdge","seekToLiveEdge","clamp","Slider","handleMouseDown_","handleMouseUp_","handleMouseUp","handleMouseMove_","handleMouseMove","bar","barName","playerEvent","progress","getProgress","progress_","sizeKey","toFixed","getPercent","calculateDistance","stepBack","stepForward","bool","vertical_","percentify","LoadProgressBar","partEls_","loadedText","separator","percentageEl_","isLive","seekableEnd","bufferedEnd","percent_","dataset","TimeTooltip","seekBarRect","seekBarPoint","tooltipRect","playerRect","seekBarPointPx","spaceLeftOfPoint","spaceRightOfPoint","pullTooltipBy","write","updateTime","liveWindow","secondsBehind","PlayProgressBar","timeTooltip","MouseTimeDisplay","SeekBar","_Slider","setEventHandlers_","updateInterval","enableIntervalHandler_","enableInterval_","disableIntervalHandler_","disableInterval_","toggleVisibility_","visibilityState","getCurrentTime_","liveCurrentTime","currentTime_","userSeek_","nextSeekedFromUser","seekableStart","videoWasPlaying","mouseDown","newTime","distance","mouseTimeDisplay","handleAction","gotoFraction","STEP_SECONDS","ProgressControl","throttledHandleMouseSeek","handleMouseSeek","handleMouseUpHandler_","handleMouseDownHandler_","seekBar","playProgressBar","seekBarEl","removeListenersAddedOnMousedownAndTouchstart","PictureInPictureToggle","handlePictureInPictureChange","handlePictureInPictureEnabledChange","currentType","audioPosterMode","audioOnlyMode","isInPictureInPicture","exitPictureInPicture","pictureInPictureEnabled","FullscreenToggle","handleFullscreenChange","fsApi_","fullscreenEnabled","isFullscreen","exitFullscreen","requestFullscreen","VolumeLevel","VolumeLevelTooltip","rangeBarRect","rangeBarPoint","volumeBarPointPx","updateVolume","MouseVolumeLevelDisplay","VolumeBar","updateLastVolume_","updateARIAAttributes","mouseVolumeLevelDisplay","volumeBarEl","volumeBarRect","volumeBarPoint","checkMuted","ariaValue","volumeAsPercentage_","volumeBeforeDrag","lastVolume_","VolumeControl","volumeBar","checkVolumeSupport","throttledHandleMouseMove","orientationClass","MuteToggle","checkMuteSupport","vol","lastVolume","volumeToSet","updateIcon_","updateControlText_","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","MenuButton","buttonClass","handleMenuKeyUp_","handleMenuKeyUp","menu","handleMouseLeave","handleSubmenuKeyDown","createMenu","items","hideThreshold_","titleEl","titleComponent","createItems","buildWrapperCSSClass","menuButtonClass","pressButton","handleSubmenuKeyPress","TrackButton","_MenuButton","updateHandler","MenuKeys","MenuItem","selectable","isSelected_","multiSelectable","_selected","TextTrackMenuItem","_MenuItem","kinds","changeHandler","handleTracksChange","selectedLanguageChangeHandler","handleSelectedLanguageChange","onchange","Event","createEvent","initEvent","referenceTrack","shouldBeSelected","OffTextTrackMenuItem","_TextTrackMenuItem","allHidden","TextTrackButton","_TrackButton","TrackMenuItem","label_","kinds_","kind_","ChaptersTrackMenuItem","ChaptersButton","_TextTrackButton","selectCurrentItem_","track_","findChaptersTrack","setTrack","updateHandler_","remoteTextTrackEl","_remoteTextTrackEl","getMenuCaption","mi","DescriptionsButton","SubtitlesButton","CaptionSettingsMenuItem","CaptionsButton","SubsCapsMenuItem","parentSpan","SubsCapsButton","language_","AudioTrackMenuItem","audioTracks","featuresNativeAudioTracks","AudioTrackButton","PlaybackRateMenuItem","rate","playbackRate","PlaybackRateMenuButton","labelElId_","updateVisibility","updateLabel","handlePlaybackRateschange","labelEl_","rates","playbackRates","currentRate","newIndex","playbackRateSupported","Spacer","CustomControlSpacer","_Spacer","ControlBar","ErrorDisplay","_ModalDialog","COLOR_BLACK","COLOR_BLUE","COLOR_CYAN","COLOR_GREEN","COLOR_MAGENTA","COLOR_RED","COLOR_WHITE","COLOR_YELLOW","OPACITY_OPAQUE","OPACITY_SEMI","OPACITY_TRANS","selectConfigs","parseOptionValue","TextTrackSettings","endDialog","setDefaults","persistTextTrackSettings","saveSettings","restoreSettings","createElSelect_","legendId","selectLabelledbyIds","optionId","createElFgColor_","createElBgColor_","createElWinColor_","createElColors_","createElFont_","createElControls_","defaultsDescription","initial","accum","selectedIndex","setValues","setSelectedOption","JSON","localStorage","getItem","setItem","stringify","removeItem","ttDisplay","controlBar","subsCapsBtn","subsCapsButton","ccBtn","captionsButton","ResizeManager","RESIZE_OBSERVER_AVAILABLE","ResizeObserver","loadListener_","resizeObserver_","debouncedHandler_","immediate","debounced","_later","cancel","debounce","resizeHandler","observe","contentWindow","unloadListener_","unobserve","disconnect","resizeObserver","defaults","trackingThreshold","liveTolerance","LiveTracker","handleVisibilityChange_","handleVisibilityChange","trackLiveHandler_","trackLive_","handlePlay_","handleFirstTimeupdate_","handleFirstTimeupdate","handleSeeked_","seekToLiveEdge_","reset_","handleDurationchange","toggleTracking","deltaTime","lastTime_","pastSeekEnd_","pastSeekEnd","isBehind","seekedBehindLive_","timeupdateSeen_","behindLiveEdge_","liveui","isTracking","hasStarted","trackingInterval_","timeDiff","nextSeekedFromUser_","lastSeekEnd_","seekableEnds","sort","seekableStarts","behindLiveEdge","sourcesetLoad","srcUrls","innerHTMLDescriptorPolyfill","dummy","docFrag","getDescriptor","priority","descriptor","getOwnPropertyDescriptor","firstSourceWatch","resetSourceWatch_","innerDescriptor","HTMLMediaElement","getInnerHTMLDescriptor","appendWrapper","appendFn","retval","srcDescriptorPolyfill","setupSourceset","resetSourceset_","srcDescriptor","getSrcDescriptor","oldSetAttribute","oldLoad","currentSrc","defineLazyProperty","setter","Html5","crossoriginTracks","initNetworkState_","handleLateInit_","enableSourceset","setupSourcesetHandling_","isScrubbing_","nodes","nodesLength","removeNodes","proxyNativeTracks_","restoreMetadataTracksInIOSNativePlayer_","setControls","proxyWebkitFullscreen_","disposeMediaElement","metadataTracksPreFullscreenState","takeMetadataTrackSnapshot","storedMode","restoreTrackMode","storedTrack","overrideNative_","override","lowerCaseType","eventName","proxyNativeTracksForType_","elTracks","techTracks","currentTarget","removeOldTracks","removeTracks","found","playerElIngest","movingMediaElementInDOM","clone","techId","playerId","preload","settingsAttrs","networkState","loadstartFired","setLoadstartFired","triggerLoadstart","eventsToTrigger","isScrubbing","fastSeek","checkProgress","NaN","endFn","beginFn","webkitPresentationMode","nativeIOSFullscreen","supportsFullScreen","webkitEnterFullScreen","enterFullScreen","HAVE_METADATA","exitFullScreen","webkitDisplayingFullscreen","webkitExitFullScreen","webkitKeys","resetMediaElement","videoPlaybackQuality","webkitDroppedFrameCount","webkitDecodedFrameCount","droppedVideoFrames","totalVideoFrames","creationTime","timing","navigationStart","TEST_VID","canControlVolume","canControl","canMuteVolume","canControlPlaybackRate","canOverrideAttributes","supportsNativeTextTracks","supportsNativeVideoTracks","videoTracks","supportsNativeAudioTracks","patchCanPlayType","unpatchCanPlayType","TECH_EVENTS_RETRIGGER","TECH_EVENTS_QUEUE","canplay","canplaythrough","playing","seeked","BREAKPOINT_ORDER","BREAKPOINT_CLASSES","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_","audioOnlyMode_","audioPosterMode_","audioOnlyCache_","playerHeight","hiddenChildren","tagAttributes","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","aspectRatio","crossorigin","links","linkEl","techGet_","techCall_","_dimension","privDimension","parsedVal","ratio","aspectRatio_","idClass","ratioParts","videoWidth","videoHeight","ratioMultiplier","width_","height_","_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_","matchingSources","findMimetype","sourceElSources","sourceEls","matchingSourceEls","sourceObj","updateSourceCaches","playerSrc","currentSource","eventSrc","lastSource_","techSrc","techGet","request","lastPlaybackRate","queued","timeWhenWaiting","timeUpdateListener","handleTechCanPlay_","handleTechCanPlayThrough_","handleTechPlaying_","handleTechSeeked_","starttime","userActions","click","doubleClick","userWasActive","cancelable","toggleFullscreenClass_","targetPlayer","isFs","fullscreen","msMatchesSelector","_this9","togglePictureInPictureClass_","initTime","inactivityTimeout","defaultPlaybackRate","reduceRight","_this10","resolve","play_","_this11","isSrcReady","waitToPlay_","runPlayTerminatedQueue_","runPlayCallbacks_","queue","q","percentAsDecimal","_muted","defaultMuted","_defaultMuted","isFS","oldValue","fullscreenOptions","offHandler","requestFullscreenHelper_","fsOptions","_this12","preferFullWindow","enterFullWindow","exitFullscreenHelper_","_this13","exitFullWindow","isFullWindow","docOrigOverflow","overflow","isPiP","isInPictureInPicture_","hotkeys","isContentEditable","excludeElement","handleHotkeys","_hotkeys$fullscreenKe","fullscreenKey","keydownEvent","_hotkeys$muteKey","muteKey","_hotkeys$playPauseKey","playPauseKey","FSToggle","selectSource","_this14","techs","findFirstPassingTechSourcePair","outerArray","innerArray","tester","outerChoice","innerChoice","finder","sourceOrder","handleSrc_","isRetry","_this15","resetRetryOnError_","filterSource","newsrc","srcobj","middlewareSource","src_","notSupportedMessage","setTech","retryOnError","retry","stopListeningForErrors","str1","str2","_this16","sourceTech","_this17","doReset_","resetControlBarUI_","resetProgressBar_","resetPlaybackRate_","resetVolumeBar_","durationDisplay","currentSources","techAutoplay","newPoster","usingNativeControls_","_this18","hookFunction","newErr","suppressNotSupportedError","triggerSuppressedError","errorDisplay","userActivity_","mouseInProgress","lastMoveX","lastMoveY","handleActivity","handleMouseUpAndMouseLeave","screenX","screenY","isAudio_","enableAudioOnlyUI_","_this19","playerChildren","controlBarHeight","disableAudioOnlyUI_","_this20","exitPromises","enablePosterModeUI_","disablePosterModeUI_","_this21","toJSON","createModal","_this22","modal","currentBreakpoint","candidateBreakpoint","breakpoints_","breakpoint_","removeCurrentBreakpoint_","currentBreakpointClass","_breakpoints","responsive_","loadMedia","_this23","_this$cache_$media","artwork","tt","getMedia","baseOptions","tagOptions","dataSetup","_safeParseTuple","childName","previousLogLevel_","newRates","html5","userLanguage","navigationUI","pluginStorage","pluginExists","getPlugin","markPluginAsActive","triggerSetupEvent","before","createPluginFactory","PluginSubClass","plugin","instance","getEventHash","Plugin","VERSION","isBasic","registerPlugin","basicPluginWrapper","createBasicPlugin","deregisterPlugin","getPlugins","getPluginVersion","BASE_PLUGIN_NAME","hasPlugin","normalizeId","getPlayer","defaultView","PlayerComponent","hook","hookOnce","original","getPlayers","nId","_tag","_player","getAllPlayers","comp","use","writeable","extend","subClassMethods","methods","super_","mergeOptions","addLanguage","_mergeOptions","createTimeRange","setFormatTime","customImplementation","resetFormatTime","EventTarget","xhr","dom","resolveUrl","resolveManifestRedirect","handleManifestRedirect","req","responseURL","logger","filterRanges","timeRanges","findRange","TIME_FUDGE_FACTOR","findNextRange","printableRange","range","strArr","timeRangesToArray","timeRangesList","lastBufferedEnd","timeAheadOf","segmentDurationWithParts","getPartsAndSegments","si","pi","getLastParts","lastSegment","getKnownPartCount","partCount","liveEdgeDelay","master","suggestedPresentationDelay","partHoldBack","holdBack","intervalDuration","endSequence","expired","backward","backwardDuration","forward","forwardDuration","totalDuration","sumDurations","defaultDuration","durationList","endIndex","durations","playlistEnd","useSafeLiveEnd","liveEdgePadding","lastSegmentEndTime","isBlacklisted","excludeUntil","isIncompatible","isEnabled","blacklisted","isLowestEnabledRendition","currentBandwidth","MAX_VALUE","playlistMatch","resolvedUri","someAudioVariant","AUDIO","groupName","isAudioOnly","variant","CODECS","_ret","Playlist","getMediaInfoForTime","_ref4","startingSegmentIndex","startingPartIndex","experimentalExactManifestTimings","partsAndSegments","partAndSegment","_partAndSegment","_i3","_i4","_partAndSegment2","isDisabled","isAes","estimateSegmentRequestTime","segmentDuration","bandwidth","bytesReceived","createPlaylistID","forEachMediaGroup","mediaType","groupKey","labelKey","mediaProperties","setupMediaPlaylist","playlistErrors_","addPropertiesToMaster","phonyUri","audioOnlyMaster","groupId","setupMediaPlaylists","resolveMediaGroupUris","mergeOptions$2","EventTarget$1","updateSegment","skipped","resolveSegmentUris","baseUri","getAllSegments","isPlaylistUnchanged","updateMaster$1","newMedia","unchangedCheck","oldMedia","mergedPlaylist","skippedSegments","oldSegments","newSegments","oldSegment","newSegment","updateSegments","refreshDelay","lastPart","lastDuration","PlaylistLoader","vhs","logger_","_options","_options$withCredenti","_options$handleManife","handleManifestRedirects","vhs_","vhsOptions","customTagParsers","customTagMappers","experimentalLLHLS","handleMediaupdatetimeout_","parameters","nextMSN","nextPart","_HLS_part","_HLS_msn","canSkipUntil","_HLS_skip","parsedUri","URL","searchParams","addLLHLSQueryDirectives","playlistRequestError","haveMetadata","playlistString","responseText","startingState","parseManifest_","onwarn","oninfo","manifestString","_ref$customTagParsers","_ref$customTagMappers","customParser","parseManifest","playlistObject","lastRequest","pendingMedia_","media_","updateMediaUpdateTimeout_","stopRequest","mediaUpdateTimeout","finalRenditionTimeout","oldRequest","onreadystatechange","abort","shouldDelay","delay","mediaChange","masterPlaylistRef","started","setupInitialPlaylist","srcUri","masterForMedia","videojsXHR","mergeOptions$1","callbackWrapper","reqResponse","responseType","responseTime","roundTripTime","requestTime","headers","responseHeaders","timedout","aborted","statusCode","xhrFactory","XhrFunction","beforeRequest","Vhs","newOptions","originalAbort","segmentXhrHeaders","Range","textRange","formatHexString","formatAsciiString","createTransferableMessage","transferable","initSegmentId","initSegment","segmentKeyId","hexDump","utils","tagDump","textRanges","getProgramTime","_ref$time","matchedSegment","segmentEnd","videoTimingInfo","transmuxedPresentationEnd","estimatedStart","transmuxedPresentationStart","findSegmentForPlayerTime","seekTime","programTimeObject","mediaSeconds","programTime","playerTime","transmuxerPrependedSeconds","offsetFromSegmentStart","getTime","playerTimeToProgramTime","programDateTime","toISOString","seekToProgramTime","_ref2$retryCount","retryCount","seekTo","_ref2$pauseAfterSeek","pauseAfterSeek","verifyProgramDateTimeTags","lastSegmentStart","lastSegmentDuration","findSegmentForProgramTime","mediaOffset","comparisonTimeStamp","segmentDateTime","segmentTimeEpoch","getOffsetFromTimestamp","seekToTime","callbackOnCompleted","dashPlaylistUnchanged","sidx","aSegment","bSegment","aByterange","bByterange","compareSidxEntry","oldSidxMapping","newSidxMapping","currentSidxInfo","savedSidxInfo","sidxInfo","DashPlaylistLoader","srcUrlOrPlaylist","masterPlaylistLoader","masterPlaylistLoader_","isMaster_","refreshXml_","refreshMedia_","loadedPlaylists_","srcUrl","sidxMapping_","childPlaylist_","requestErrored_","addSidxSegments_","sidxKey","fin","sidxMapping","id3Offset","finished","endRequestAndCallback","_bytes","progressListener","newPart","beforeSend","overrideMimeType","loaded","containerRequest","internal","blacklistDuration","_playlist$sidx$bytera","mediaRequest_","minimumUpdatePeriodTimeout_","createMupOnMedia_","hasPendingRequest","sidxChanged","isFinalRendition","updateMinimumUpdatePeriodTimeout_","requestMaster_","masterChanged","haveMaster_","masterXml_","date","masterLoaded_","handleMaster_","syncClientServerClock_","done","utcTiming","clientOffset_","serverTime","oldMaster","newMaster","masterXml","clientOffset","previousManifest","manifestUri","parseMasterXml","noChanges","minimumUpdatePeriod","timelineStarts","playlistUpdate","group","_playlistUpdate","updateMaster","locations","mpl","mup","createMUPTimeout_","mediaGroupSidx","filterChangedSidxMappings","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","browserWorkerPolyFill","workerObj","factory","objectUrl","createObjectURL","Blob","blob","BlobBuilder","getBlob","worker","Worker","objURL","terminate","revokeObjectURL","getWorkerString","TransmuxWorker","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","MAX_UINT32$1","pow","numbers","getUint64","uint8","dv","DataView","getBigUint64","MAX_SAFE_INTEGER","getUint32","MAX_UINT32","avc1","avcC","btrt","dref","mp4a","pasp","smhd","stco","stsc","stsz","stts","styp","tfdt","tfhd","trun","vmhd","payload","setUint32","audioobjecttype","samplingfrequencyindex","channelcount","samplerate","sequenceNumber","trackFragments","samples","dependsOn","isDependedOn","hasRedundancy","videoSample","audioSample","avc1Box","sps","pps","sequenceParameterSets","pictureParameterSets","profileIdc","profileCompatibility","levelIdc","sarRatio","hSpacing","vSpacing","samplesize","trackFragmentHeader","trackFragmentDecodeTime","trackFragmentRun","sampleDependencyTable","upperWordBaseMediaDecodeTime","lowerWordBaseMediaDecodeTime","baseMediaDecodeTime","audioTrun","videoTrun","trunHeader","durationPresent","sizePresent","flagsPresent","compositionTimeOffset","bytesOffest","header","sample","isLeading","paddingValue","isNonSyncSample","degradationPriority","silence","secondsToVideoTs","secondsToAudioTs","videoTsToSeconds","audioTsToSeconds","audioTsToVideoTs","videoTsToAudioTs","metadataTsToSeconds","mp4Generator","fileType","movie","sampleForFrame","frame","dataOffset","pts","dts","keyFrame","frameUtils","nalUnits","currentNal","currentFrame","frames","nalCount","nalUnitType","currentGop","gops","baseDataOffset","nalsByteLength","numberOfNals","highPrefix","lowPrefix","zeroFill","silence_1","coneOfSilence","96000","88200","64000","48000","44100","32000","24000","16000","12000","11025","8000","metaTable","arr","timestamp","sampleRate","timelineStartPts","keepOriginalTimestamps","clock","audioFrameUtils","audioAppendStartTs","videoBaseMediaDecodeTime","baseMediaDecodeTimeTs","frameDuration","silentFrame","firstFrame","audioGapDuration","audioFillFrameCount","audioFillDuration","adtsFrames","earliestAllowedDts","minSegmentDts","minSegmentPts","sum","sumFrameByteLengths","ONE_SECOND_IN_TS$3","trackDecodeInfo","maxSegmentDts","maxSegmentPts","timelineStartInfo","captionPacketParser","payloadType","payloadSize","sei","userData","ccData","emulationPreventionBytesPositions","CaptionStream$1","CaptionStream","parse708captions_","parse708captions","captionPackets_","ccStreams_","Cea608Stream","cc708Stream_","Cea708Stream","captionServices","cc","newCaptionPackets","escapedRBSP","latestDts_","ignoreNextEqualDts_","numSameDts_","flushCCStreams","flushType","flushStream","idx","presortIndex","packet","dispatchCea608Packet","dispatchCea708Packet","activeCea608Channel_","ccStream","setsTextOrXDSActive","setsChannel1Active","setsChannel2Active","CHARACTER_TRANSLATION_708","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","isEmpty","addText","backspace","row","Cea708Service","serviceNum","encoding","currentWindow","windows","createTextDecoder","startPts","win","setCurrentWindow","textDecoder_","serviceProps","captionServiceEncodings","serviceName","serviceEncodings","current708Packet","services","new708Packet","add708Bytes","push708Packet","ptsVals","byte0","byte1","packet708","packetData","blockSize","seq","sizeCode","pushServiceBlock","service","initService","handleText","multiByteCharacter","extendedCommands","defineWindow","clearWindows","deleteWindows","displayWindows","hideWindows","toggleWindows","setWindowAttributes","setPenAttributes","setPenColor","setPenLocation","isExtended","getPts","flushDisplayed","_char","charCodeArray","isMultiByte","extended","currentByte","nextByte","newCode","get708CharFromCode","firstByte","secondByte","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","ROWS","createDisplayBuffer","BOTTOM_ROW","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","format","popOn","baseRow","rollUp","paintOn","captionStream","streamTypes","H264_STREAM_TYPE","ADTS_STREAM_TYPE","METADATA_STREAM_TYPE","handleRollover$1","TimestampRolloverStream$1","TimestampRolloverStream","lastDTS","referenceDTS","type_","_MetadataStream","timestampRolloverStream","percentEncode$1","parseUtf8","parseSyncSafeInteger$1","tagParsers","TXXX","WXXX","PRIV","owner","privateData","tagSize","dispatchType","frameStart","frameSize","dataAlignmentIndicator","d","timeStamp","_TransportPacketStream","_TransportParseStream","_ElementaryStream","metadataStream","bytesInBuffer","everything","parsePsi","parsePat","parsePmt","packetsWaitingForPmt","programMapTable","psi","payloadUnitStartIndicator","pat","section_number","last_section_number","pmtPid","pmt","tableEnd","pid","processPes_","STREAM_TYPES","h264","adts","segmentHadPmt","timedMetadata","forceFlush","packetFlushable","trackId","pes","ptsDtsFlags","startPrefix","packetLength","parsePes","codec","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","_H264Stream","_NalByteStream","PROFILES_WITH_OPTIONAL_SPS_DATA","expGolomb","workingData","workingBytesAvailable","workingWord","workingBitsAvailable","bitsAvailable","loadWord","workingBytes","availableBytes","skipBits","skipBytes","readBits","bits","valu","skipLeadingZeros","leadingZeroCount","skipUnsignedExpGolomb","skipExpGolomb","readUnsignedExpGolomb","clz","readExpGolomb","readBoolean","readUnsignedByte","syncPoint","swapBuffer","100","110","122","244","44","83","86","118","128","138","139","134","currentPts","currentDts","discardEmulationPreventionBytes","readSequenceParameterSet","skipScalingList","nalByteStream","nalUnitTypeCode","expGolombDecoder","lastScale","nextScale","chromaFormatIdc","picOrderCntType","numRefFramesInPicOrderCntCycle","picWidthInMbsMinus1","picHeightInMapUnitsMinus1","frameMbsOnlyFlag","scalingListCount","frameCropLeftOffset","frameCropRightOffset","frameCropTopOffset","frameCropBottomOffset","_AacStream","H264Stream","NalByteStream","ADTS_SAMPLING_FREQUENCIES","parseId3TagSize","returnSize","parseSyncSafeInteger","isLikelyAacData","getId3Offset","parseAdtsSize","lowThree","parseType","parseSampleRate","parseAacTimestamp","percentEncode","setTimestamp","bytesLeft","tempLength","_VideoSegmentStream","_AudioSegmentStream","_Transmuxer","_CoalesceStream","audioProperties","videoProperties","ONE_SECOND_IN_TS$1","retriggerForStream","addPipelineLogRetriggers","transmuxer","pipeline","arrayEquals","generateSegmentTimingInfo","startDts","endDts","prependedContentDuration","firstSequenceNumber","setEarliestDts","earliestDts","setVideoBaseMediaDecodeTime","setAudioAppendStart","videoClockCyclesOfSilencePrefixed","gopsToAlignWith","minPTS","gopCache_","nalUnit","gopForFusion","firstGop","lastGop","resetStream_","getGopForFusion_","alignedGops","alignGopsAtEnd","alignGopsAtEnd_","alignGopsAtStart_","gop","dtsDistance","nearestGopObj","currentGopObj","nearestDistance","alignIndex","gopIndex","alignEndIndex","matchFound","trimIndex","alignGopsWith","newGopsToAlignWith","numberOfTracks","remux","remuxTracks","pendingTracks","videoTrack","pendingBoxes","pendingCaptions","pendingMetadata","pendingBytes","emittedTracks","output","audioTrack","caption","id3","captionStreams","cueTime","setRemux","hasFlushed","transmuxPipeline_","setupAacPipeline","aacStream","audioTimestampRolloverStream","timedMetadataTimestampRolloverStream","adtsStream","coalesceStream","headOfPipeline","audioSegmentStream","getLogTrigger_","hasAudio","hasVideo","setupTsPipeline","packetStream","elementaryStream","h264Stream","videoSegmentStream","id3Frame","setBaseMediaDecodeTime","isAac","resetCaptions","getTracks","getTimescaleFromMediaHeader","Transmuxer","VideoSegmentStream","AudioSegmentStream","AUDIO_PROPERTIES","VIDEO_PROPERTIES","bin","parseType_1","toUnsigned$2","findBox_1","subresults","toUnsigned$1","getUint64$1","parseTfdt","parseSampleFlags_1","parseTrun","dataOffsetPresent","firstSampleFlagsPresent","sampleDurationPresent","sampleSizePresent","sampleFlagsPresent","sampleCompositionTimeOffsetPresent","getInt32","parseTfhd","baseDataOffsetPresent","sampleDescriptionIndexPresent","defaultSampleDurationPresent","defaultSampleSizePresent","defaultSampleFlagsPresent","durationIsEmpty","defaultBaseIsMoof","sampleDescriptionIndex","defaultSampleDuration","defaultSampleSize","defaultSampleFlags","baseDataOffsetIsMoof","commonjsGlobal","globalThis","global","window_1","mapToSample","approximateOffset","parseCaptionNals","videoTrackId","trafs","mdats","captionNals","mdatTrafPairs","matchingTraf","pair","headerInfo","truns","avcStream","seiNal","lastMatchedSample","avcView","logs","seiNals","matchingSample","findSeiNals","allSamples","parseSamples","captionParser","segmentCache","timescale","parsedCaptions","parsingPartial","isInitialized","isPartial","isNewInit","videoTrackIds","timescales","parsedData","cachedSegment","trackNals","parseEmbeddedCaptions","pushNals","nals","nal","clearParsedCaptions","resetCaptionStream","clearAllCaptions","toUnsigned","lowestTime","baseTime","scale","traks","tkhdVersion","getUint8","sampleDescriptions","codecConfig","codecBox","probe$2","parsePid","parsePayloadUnitStartIndicator","parseAdaptionField","parseNalUnitType","probe$1","pusi","payloadOffset","parsePesType","parsePesTime","videoPacketContainsKeyFrame","frameBuffer","frameI","frameSyncPoint","foundKeyFrame","handleRollover","probe","ONE_SECOND_IN_TS","parseAudioPes_","pesType","parsed","endLoop","table","parseVideoPes_","firstKeyFrame","inspectTs_","parsePsi_","tsInspector","baseTimestamp","audioCount","audioTimescale","inspectAac_","segmentInfo","audioBaseTimestamp","dtsTime","ptsTime","videoBaseTimestamp","adjustTimestamp_","MessageHandlers","initArray","typedArray","postMessage","action","gopInfo","timingInfo","videoSegmentTimingInfo","presentation","audioSegmentTimingInfo","trackInfo","audioTimingInfo","wireTransmuxerEvents","pushMp4Captions","trackIds","probeMp4StartTime","probeMp4Tracks","probeTs","baseStartTime","tsStartTime","timeInfo","videoStart","audioStart","clearAllMp4Captions","clearParsedMp4Captions","setTimestampOffset","timestampOffset","appendStart","onmessage","messageHandlers","processTransmux","audioAppendStart","onData","onTrackInfo","onAudioTimingInfo","onVideoTimingInfo","onVideoSegmentTimingInfo","onAudioSegmentTimingInfo","onId3","onCaptions","onDone","onEndedTimeline","onTransmuxerLog","isEndOfTimeline","transmuxedData","waitForEndedTimelineEvent","currentTransmux","_event$data$segment","videoFrameDtsTime","videoFramePtsTime","handleData_","handleGopInfo_","handleDone_","dequeue","transmuxQueue","processAction","enqueueAction","transmux","segmentTransmuxer","term","workerCallback","endAction","listenForEndEvent","isArrayBuffer","transfers","REQUEST_ERRORS","abortAll","activeXhrs","handleErrors","handleKeyResponse","objects","finishProcessingFn","errorObj","parseInitSegment","_callback","handleSegmentResponse","newBytes","stringToArrayBuffer","lastReachedChar","stats","getRequestStats","encryptedBytes","transmuxAndNotify","trackInfoFn","timingInfoFn","videoSegmentTimingInfoFn","audioSegmentTimingInfoFn","id3Fn","captionsFn","endedTimelineFn","dataFn","doneFn","fmp4Tracks","isMuxed","audioStartFn","audioEndFn","videoStartFn","videoEndFn","probeResult","id3Frames","handleSegmentBytes","_ref5","bytesAsUint8Array","isFmp4","audioCodec","videoCodec","finishLoading","_ref6","decrypt","_ref7","keyBytes","decryptionWorker","decryptionHandler","decrypted","encrypted","waitForCompletion","_ref9","didError","segmentFinish","_ref8","requestId","decryptedBytes","decryptSegment","endOfAllRequests","parseError","handleProgress","_ref11","progressFn","progressEvent","getProgressStats","firstBytesReceivedAt","mediaSegmentRequest","_ref12","xhrOptions","abortFn","keyXhr","mapKeyXhr","initSegmentXhr","handleInitSegmentResponse","segmentRequestOptions","segmentXhr","loadendState","activeXhr","_ref10","calledAbortFn","handleLoadEnd","logFn$1","isMaat","mediaAttributes","unwrapCodecList","codecList","codecs","codecCount","codecObj","codecsForPlaylist","codecInfo","getCodecs","audioGroup","defaultCodecs","logFn","representationToString","representation","safeGetComputedStyle","property","stableSort","sortFn","newArray","cmp","comparePlaylistBandwidth","leftBandwidth","rightBandwidth","simpleSelector","playerBandwidth","playerWidth","limitRenditionByPlayerDimensions","masterPlaylistController","getAudioTrackPlaylists_","audioOnly","sortedPlaylistReps","enabledPlaylistReps","rep","bandwidthPlaylistReps","highestRemainingBandwidthRep","bandwidthBestRep","_chosenRep","haveResolution","resolutionBestRepList","resolutionPlusOneList","resolutionPlusOneSmallest","resolutionPlusOneRep","leastPixelDiffRep","resolutionBestRep","experimentalLeastPixelDiffSelector","leastPixelDiffList","pixelDiff","chosenRep","_type","lastBandwidthSelector","pixelRatio","useDevicePixelRatio","devicePixelRatio","systemBandwidth","masterPlaylistController_","addMetadata","inbandTextTracks","metadataArray","videoDuration","Cue","WebKitDataCue","metadataTrack","metadataTrack_","deprecateOldCue","cuesArray","cuesGroupedByStartTime","timeSlot","sortedStartTimes","cueGroup","nextTime","removeCuesFromTrack","finite","segmentInfoString","startOfSegment","_segmentInfo$playlist","_segmentInfo$playlist2","mediaIndex","segmentLen","selection","isSyncRequest","independent","hasPartIndex","zeroBasedPartCount","timingInfoPropertyForMedia","shouldWaitForTimelineChange","timelineChangeController","segmentTimeline","loaderType","audioDisabled","lastMainTimelineChange","lastTimelineChange","pendingAudioTimelineChange","pendingTimelineChange","segmentTooLong","maxDuration","getTroublesomeSegmentDurationMessage","sourceType","timingInfos","typeTimingInfo","mediaDuration","isSegmentWayTooLong","isSegmentSlightlyTooLong","segmentTooLongMessage","severity","SegmentLoader","_videojs$EventTarget","mediaSource","throughput","roundTrip","resetStats_","hasPlayed_","hasPlayed","seekable_","seeking_","mediaSource_","loaderType_","currentMediaInfo_","startingMediaInfo_","segmentMetadataTrack_","segmentMetadataTrack","goalBufferLength_","goalBufferLength","sourceType_","sourceUpdater_","sourceUpdater","inbandTextTracks_","state_","timelineChangeController_","shouldSaveSegmentTimingInfo_","useDtsForTimestampOffset_","useDtsForTimestampOffset","captionServices_","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_","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","resetLoader","mediaSequenceDiff","saveExpiredSegmentInfo","force","removesRemaining","removeFinished","mapping","updatedBuffer","removeGopBuffer","removeVideo","monitorBufferTick_","fillBuffer_","updating","chooseNextRequest_","loadSegment_","appendedLastSegment","appendedLastPart","bufferedTime","preloaded","haveEnoughBuffer","getSyncPoint","targetTime","timelineSegments","getSyncSegmentCandidate","_Playlist$getMediaInf","_partIndex","nextSegment","lastSegmentLastPart","generateSegmentInfo_","forceTimestampOffset","random","overrideCheck","timestampOffsetForSegment_","audioBufferedEnd","audioTimestampOffset","currentTimePts","gopsSafeToAlignWith","videoTimestampOffset","timestampOffsetForSegment","earlyAbortWhenNeeded_","measuredBandwidth","requestTimeRemaining","timeUntilRebuffer$1","timeUntilRebuffer","switchCandidate","compatiblePlaylists","enabledPlaylists","rebufferingEstimates","numRequests","rebufferingImpact","noRebufferingPlaylists","estimate","minRebufferMaxBandwidthSelector","timeSavedBySwitching","minimumTimeSaving","handleAbort_","handleProgress_","simpleSegment","handleTrackInfo_","checkForIllegalMediaSwitch","akeys","bkeys","shallowEqual","handleTimingInfo_","timeType","timingInfoProperty","handleCaptions_","captionData","hasAppendedData_","captionTracks","captionTrack","trackName","_captionTracks$trackN","def","captionService","createCaptionsTrackIfNotExists","captionArray","addCaptionData","handleId3_","inBandMetadataTrackDispatchType","createMetadataTrackIfNotExists","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","MIN_BACK_BUFFER","handleAppendError_","segmentObj","concatSegments","appendBuffer","handleSegmentTimingInfo_","segmentTimingInfo","transmuxedDecodeStart","transmuxedDecodeEnd","trimBackBuffer_","updateTransmuxerAndRequestSegment_","shouldUpdateTransmuxerTimestampOffset_","createSimplifiedSegmentObj_","isEndOfStream","isWalkingForward","isDiscontinuity","segmentRequestFinished_","removeToTime","trimTime","maxTrimTime","safeBackBufferTrimTime","previousSegment","saveTransferStats_","saveBandwidthRelatedStats_","handleTimeout_","updateGopBuffer","waitForAppendsToComplete_","timelineMapping","mappingForTimeline","waitForVideo","waitForAudio","waitingOnAppends","checkAppendsDone_","videoQueueCallback","audioQueueCallback","handleAppendsDone_","illegalMediaSwitchError","startingMedia","illegalMediaSwitch","didChange","getSegmentStartTimeForTimestampOffsetCalculation_","prioritizedTimingInfo","segmentDurationMessage","recordThroughput_","addSegmentMetadataCue_","badSegmentGuess","badPartGuess","segmentProcessingTime","segmentProcessingThroughput","Vhs$1","toTitleCase","bufferTypes","_updating","sourceBuffer","queuePending","shiftQueue","queueIndex","queueEntry","nextQueueIndexOfType","cleanupBuffer","titleType","inSourceBuffers","sourceBuffers","actions","onError","_duration","mime","addSourceBuffer","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","MediaSource","canChangeType","SourceBuffer","processedAppend_","videoBuffer","que","audioBuffer","bufferA","bufferB","arity","extents","bufferIntersection","setDuration","uint8ToUtf8","uintArray","VTT_LINE_TERMINATORS","_char3","VTTSegmentLoader","_SegmentLoader","subtitlesTrack_","featuresNativeTextTracks_","combinedByteLength","combinedSegment","timestampOffsetForTimeline","skipEmptySegments_","stopForError","loadHandler","requested","parseVTTCues_","updateTimeMapping_","timelines","duplicates","occurrences","dupe","removeDuplicateCuesFromTrack","decodeBytesToString","timestampmap","MPEGTS","LOCAL","mapData","segmentData","mappingObj","diff","firstStart","lastStart","findAdCue","mediaTime","adStartTime","adEndTime","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_","Decrypter","createCommonjsModule","basedir","require","commonjsRequire","createClass","_defineProperties","Constructor","protoProps","staticProps","_setPrototypeOf","inheritsLoose","aesTables","AES","tmp","xInv","x2","x4","tEnc","tDec","tables","encTable","decTable","sbox","sboxInv","th","precompute","_tables","keyLen","rcon","encKey","decKey","encrypted0","encrypted1","encrypted2","encrypted3","out","a2","c2","nInnerRounds","kIndex","table0","table1","table2","table3","AsyncStream","jobs","timeout_","processJob_","job","ntoh","word","initVector","STEP","encrypted32","Int32Array","asyncStream_","decryptChunk_","padded","init0","init1","init2","init3","wordIx","decipher","decrypted32","audioTrackKind_","stopLoaders","segmentLoader","activePlaylistLoader","startLoaders","playlistLoader","segmentLoaders","mediaTypes","blacklistCurrentPlaylist","activeTrack","activeGroup","defaultTrack","onTrackChanged","SUBTITLES","setupListeners","requestOptions","initialize","_settings$mediaTypes$","variantLabel","isMasterPlaylist","_settings$mediaTypes$2","_settings$mediaTypes$3","newProps","groupMatch","setupMediaGroups","_settings$segmentLoad3","audioSegmentLoader","mainSegmentLoader","variants","groupKeys","groupPropertyList","onGroupChanged","_settings$segmentLoad","getActiveGroup","previousActiveLoader","lastGroup","lastGroup_","lastTrack_","onGroupChanging","_settings$segmentLoad2","lastTrack","mpc","selectPlaylist","fastQualityChange_","activeTrack_","onAudioTrackChanged","loaderStats","sumLoaderStat","stat","audioSegmentLoader_","mainSegmentLoader_","MasterPlaylistController","externVhs","useCueTags","enableLowInitialPlaylist","experimentalBufferBasedABR","maxPlaylistRetries","useCueTags_","cueTagsTrack_","requestOptions_","pauseLoading","mediaTypes_","createMediaTypes","handleDurationChange_","handleSourceOpen_","handleSourceEnded_","segmentLoaderSettings","setupMasterPlaylistLoaderListeners_","subtitleSegmentLoader_","setupSegmentLoaderListeners_","startABRTimer_","stopABRTimer_","triggeredFmp4Usage","loadOnPlay_","timeToLoadedData__","mainAppendsToLoadedData__","audioAppendsToLoadedData__","timeToLoadedDataStart","mainAppendsToLoadedData_","audioAppendsToLoadedData_","appendsToLoadedData_","timeToLoadedData_","checkABR_","nextPlaylist","shouldSwitchToMedia_","switchMedia_","cause","newId","abrTimer_","defaultPlaylists","defaultGroup","requestTimeout","triggerPresenceUsage_","setupFirstPlay","updatedPlaylist","selectedMedia","excludeUnsupportedVariants_","selectInitialPlaylist","initialMedia_","handleUpdatedMediaPlaylist","lastExcludeReason_","stuckAtPlaylistEnd_","updateAdCues_","updateDuration","defaultDemuxed","audioGroupKeys","currentPlaylist","bufferLowWaterLine","bufferHighWaterLine","sharedLogLine","isBuffered","forwardBuffer","maxBufferLowWaterLine","nextBandwidth","currBandwidth","logLine","_logLine","shouldSwitchToMedia","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","unsupportedCodecs","supporter","switchMessages","newCodec","oldCodec","codecString","excludeIncompatibleVariants_","ids","unsupported","codecCount_","videoDetails","audioDetails","blacklistReasons","variantCodecs","variantCodecCount","variantVideoDetails","variantAudioDetails","_segment$cueOutCont$s","adOffset","adTotal","updateAdCues","newMax","Representation","vhsHandler","playlistID","changePlaylistFn","qualityChangeFunction","smoothQualityChange","incompatible","currentlyEnabled","timerCancelEvents","PlaybackWatcher","allowSeeksWithinUnsafeLiveWindow","liveRangeSafeTimeDelta","consecutiveUpdates","lastRecordedTime","timer_","checkCurrentTimeTimeout_","playHandler","monitorCurrentTime_","canPlayHandler","waitingHandler","techWaiting_","cancelTimerHandler","cancelTimer_","loaderTypes","loaderChecks","resetSegmentDownloads_","updateend","checkSegmentDownloads_","setSeekingHandlers","seekingAppendCheck_","fixesBadSeeks_","clearSeekingAppendCheck_","watchForBadSeeking_","checkCurrentTime_","isBufferedDifferent","isRangeDifferent","playlistId","waiting_","afterSeekableWindow_","beforeSeekableWindow_","minAppendedDuration","bufferedToCheck","nextRange","livePoint","videoUnderflow_","difference","skipTheGap_","allowedEnd","gap","lastVideoRange","videoRange","audioRange","gapFromVideoUnderflow_","scheduledCurrentTime","gaps","findGaps","defaultOptions","errorInterval","getSource","IWillNotUseThisInPlugins","STANDARD_PLAYLIST_SELECTOR","INITIAL_PLAYLIST_SELECTOR","movingAverageBandwidthSelector","decay","average","lastSystemBandwidth","comparePlaylistResolution","leftWidth","rightWidth","handleVhsMediaChange","qualityLevels","selectedIndex_","waitForKeySessionCreation","sourceKeySystems","audioMedia","mainPlaylists","initializeMediaKeys","keySystemsOptionsArr","keySystems","keySystemsArr","keySystemsOptions","keySystemsObj","keySystem","keySystemOptions","getAllPsshKeySystemsOptions","initializationFinishedPromises","keySessionCreatedPromises","race","setupEmeOptions","sourceOptions","mainPlaylist","audioPlaylist","videoContentType","audioContentType","keySystemContentTypes","emeKeySystems","getVhsLocalStorage","storedObject","supportsNativeHls","canItPlay","supportsNativeDash","supportsTypeNatively","VhsHandler","hls","initialBandwidth","source_","ignoreNextSeekingEvent_","setOptions_","overrideNative","featuresNativeVideoTracks","webkitFullscreenElement","mozFullScreenElement","msFullscreenElement","useBandwidthFromLocalStorage","useNetworkInformationApi","option","dataUri","playbackWatcherOptions","playbackWatcher_","defaultSelector","playerBandwidthEst","networkInformation","connection","mozConnection","webkitConnection","networkInfoBandwidthEstBitsPerSec","downlink","invThroughput","invBandwidth","mediaRequests_","mediaRequestsAborted_","mediaRequestsTimedout_","mediaRequestsErrored_","mediaTransferDuration_","mediaBytesTransferred_","mediaAppends_","mainAppendsToLoadedData","audioAppendsToLoadedData","appendsToLoadedData","timeToLoadedData","currentTech","playerDimensions","objectToStore","updateVhsLocalStorage","representations","setupEme_","setupQualityLevels_","mediaSourceUrl_","createKeySessions_","audioPlaylistLoader","handleWaitingForKey_","didSetupEmeOptions","masterPlaylist","_videojs$log","excludedHDPlaylists","qualityLevels_","addQualityLevel","dash","convertToProgramTime","VhsSourceHandler","localOptions","_videojs$mergeOptions","_videojs$mergeOptions2","_videojs$mergeOptions3","_videojs$mergeOptions4","_videojs$mergeOptions5","legacyOverrideNative","supportedType","initPlugin","lastCalled","loadedMetadataHandler","cleanupEvents","reloadSourceOnError","regexs","muxerVideo","muxerAudio","muxerText","upperMediaTypes","translateLegacyCodec","orig","profile","avcLevel","parseCodecs","codecType","codecsFromDefault","audioGroupId","audioType","isAudioCodec","getMimeForCodec","browserSupportsCodec","isTypeSupported","muxerSupportsCodec","DEFAULT_AUDIO_CODEC","DEFAULT_VIDEO_CODEC","DOMParser","cueShim","regionShim","nativeVTTCue","nativeVTTRegion","shim","restore","ID3","getId3Size","isFunction","createXHR","httpHandler","initParams","_createXHR","called","getBody","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","evt","timeoutTimer","failureResponse","loadFunc","useXDR","rawRequest","getAllResponseHeaders","parseHeaders","XDomainRequest","XMLHttpRequest","onprogress","onabort","ontimeout","username","password","setRequestHeader","send","forEachArray","ReferenceError","baseUrl","relativeUrl","nativeURL","protocolLess","removeLocation","newUrl","Reflect","construct","sham","Proxy","valueOf","alert","confirm","prompt","references","referenceId","earliestPresentationTime","firstOffset","referenceCount","getUint16","referenceType","referencedSize","subsegmentDuration","startsWithSap","sapType","sapDeltaTime","merge","flatten","lists","findIndex","matchingFunction","_ref$baseUrl","_ref$source","_ref$range","_ref$indexRange","indexRange","startRange","endRange","parseEndNumber","endNumber","segmentRange","static","_attributes$timescale","sourceDuration","periodDuration","dynamic","NOW","availabilityStartTime","_attributes$timescale2","_attributes$periodSta","periodStart","_attributes$minimumUp","_attributes$timeShift","timeShiftBufferDepth","periodStartWC","segmentCount","availableStart","availableEnd","parseByDuration","_attributes$timescale4","_segmentRange$type","_attributes$timescale3","_attributes$startNumb","startNumber","toSegments","sectionDuration","segmentsFromBase","_attributes$initializ","initialization","_attributes$indexRang","presentationTime","_attributes$number","sourceURL","segmentTimeInfo","addSidxSegmentsToPlaylist$1","sidxByteRange","sidxEnd","mediaReferences","SUPPORTED_MEDIA_TYPES","getUniqueTimelineStarts","keyFunction","mediaGroupPlaylists","updateMediaSequenceForPlaylist","positionManifestOnTimeline","oldManifest","newManifest","oldPlaylists","newPlaylists","findPlaylistWithName","firstNewSegment","oldMatchingSegmentIndex","updateSequenceNumbers","generateSidxKey","mergeDiscontiguousPlaylists","_acc$name$segments","sidxMatch","addSidxSegmentsToPlaylists","formatVideoPlaylist","_attributes2","videoOnly","mimeType","contentType","vttOnly","flattenMediaGroupPlaylists","mediaGroupObject","labelContents","toM3u8","_mediaGroups","dashPlaylists","_ref8$sidxMapping","_dashPlaylists$0$attr","videoPlaylists","audioPlaylists","vttPlaylists","VIDEO","organizedAudioGroup","formattedPlaylists","roleLabel","formatted","_attributes","formatAudioPlaylist","organizeAudioPlaylists","organizedVttGroup","_m3u8Attributes","m3u8Attributes","formatVttPlaylist","organizeVttPlaylists","playlistTimelineStarts","subs","svcObj","svc","channel","easyReader","getLiveRValue","parseByTimeline","_attributes$minimumUp2","_attributes$media","sIndex","S","segmentTime","nextS","identifierPattern","constructTemplateUrl","identifierReplacement","templateValues","RepresentationID","Bandwidth","mapSegment","parseTemplateInfo","Time","presentationTimeOffset","segmentsFromList","_attributes$segmentUr","segmentUrls","segmentUrlMap","segmentUrlObject","segmentUrl","mediaRange","SegmentURLToSegmentObject","generateSegments","segmentAttributes","segmentsFn","template","segmentsInfo","_segmentAttributes","_segmentAttributes$ti","findChildren","getContent","parseDuration","_match$slice","year","month","day","hour","minute","second","parsers","mediaPresentationDuration","parsedValue","parseFn","keySystemsMap","referenceUrls","baseUrlElements","baseUrlElement","getSegmentInformation","adaptationSet","segmentTemplate","segmentList","segmentBase","segmentTimelineParentNode","segmentInitializationParentNode","segmentInitialization","toRepresentations","periodAttributes","periodBaseUrls","periodSegmentInfo","adaptationSetAttributes","adaptationSetBaseUrls","roleAttributes","accessibility","_value$split","_value$split2","_value$split2$","opt","_opt$split","labelVal","psshNode","adaptationSetSegmentInfo","repBaseUrlElements","repBaseUrls","representationSegmentInfo","inheritBaseUrls","toAdaptationSets","mpdAttributes","mpdBaseUrls","period","adaptationSets","xml","parseFromString","parsedManifestInfo","_options$manifestUri","_options$NOW","_options$clientOffset","periodNodes","periods","priorPeriod","priorPeriodAttributes","mpdType","getPeriodStart","representationInfo","inheritAttributes","parseUTCTiming","UTCTimingNode","parseUTCTimingScheme","MPEGURL_REGEX","DASH_REGEX","simpleTypeFromSourceType","oc","MIME_TYPE","HTML","XML_APPLICATION","XML_TEXT","XML_XHTML_APPLICATION","XML_SVG_IMAGE","SVG","ac","decodeResponseBody","charset","contentTypeHeader","_contentType$split","getCharset","reviver","directionSetting","alignSetting","findAlignSetting","_id","_pauseOnExit","_startTime","_endTime","_text","_region","_vertical","_snapToLines","_line","_lineAlign","_position","_positionAlign","_size","_align","findDirectionSetting","SyntaxError","getCueAsHTML","entities","sax","DOMHandler","cdata","_locator","_toString","chars","java","hander","xmlns","HTML_ENTITIES","XML_ENTITIES","setDocumentLocator","errorImpl","isCallback","Function","build","msg","buildErrorHandler","documentURI","ins","ignorableWhitespace","ch","charNode","skippedEntity","comm","impl","dt","__DOMHandler","isNativeReflectConstruct","_construct","Parent","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","iexcl","cent","pound","curren","yen","brvbar","sect","uml","ordf","laquo","not","shy","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","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"],"mappings":"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","file":"static/js/62.27c502cd.chunk.js","sourcesContent":["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};","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 * 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\nvar scrollSetting = {\n \"\": true,\n \"up\": true\n};\n\nfunction findScrollSetting(value) {\n if (typeof value !== \"string\") {\n return false;\n }\n var scroll = scrollSetting[value.toLowerCase()];\n return scroll ? value.toLowerCase() : false;\n}\n\nfunction isValidPercentValue(value) {\n return typeof value === \"number\" && (value >= 0 && value <= 100);\n}\n\n// VTTRegion shim http://dev.w3.org/html5/webvtt/#vttregion-interface\nfunction VTTRegion() {\n var _width = 100;\n var _lines = 3;\n var _regionAnchorX = 0;\n var _regionAnchorY = 100;\n var _viewportAnchorX = 0;\n var _viewportAnchorY = 100;\n var _scroll = \"\";\n\n Object.defineProperties(this, {\n \"width\": {\n enumerable: true,\n get: function() {\n return _width;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"Width must be between 0 and 100.\");\n }\n _width = value;\n }\n },\n \"lines\": {\n enumerable: true,\n get: function() {\n return _lines;\n },\n set: function(value) {\n if (typeof value !== \"number\") {\n throw new TypeError(\"Lines must be set to a number.\");\n }\n _lines = value;\n }\n },\n \"regionAnchorY\": {\n enumerable: true,\n get: function() {\n return _regionAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorX must be between 0 and 100.\");\n }\n _regionAnchorY = value;\n }\n },\n \"regionAnchorX\": {\n enumerable: true,\n get: function() {\n return _regionAnchorX;\n },\n set: function(value) {\n if(!isValidPercentValue(value)) {\n throw new Error(\"RegionAnchorY must be between 0 and 100.\");\n }\n _regionAnchorX = value;\n }\n },\n \"viewportAnchorY\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorY;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorY must be between 0 and 100.\");\n }\n _viewportAnchorY = value;\n }\n },\n \"viewportAnchorX\": {\n enumerable: true,\n get: function() {\n return _viewportAnchorX;\n },\n set: function(value) {\n if (!isValidPercentValue(value)) {\n throw new Error(\"ViewportAnchorX must be between 0 and 100.\");\n }\n _viewportAnchorX = value;\n }\n },\n \"scroll\": {\n enumerable: true,\n get: function() {\n return _scroll;\n },\n set: function(value) {\n var setting = findScrollSetting(value);\n // Have to check for false as an empty string is a legal value.\n if (setting === false) {\n console.warn(\"Scroll: an invalid or illegal string was specified.\");\n } else {\n _scroll = setting;\n }\n }\n }\n });\n}\n\nmodule.exports = VTTRegion;\n","import window from 'global/window';\n\nvar atob = function atob(s) {\n return window.atob ? window.atob(s) : Buffer.from(s, 'base64').toString('binary');\n};\n\nexport default function decodeB64ToUint8Array(b64Text) {\n var decodedString = atob(b64Text);\n var array = new Uint8Array(decodedString.length);\n\n for (var i = 0; i < decodedString.length; i++) {\n array[i] = decodedString.charCodeAt(i);\n }\n\n return array;\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/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */\n/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */\nvar document = require('global/document');\n\nvar _objCreate = Object.create || (function() {\n function F() {}\n return function(o) {\n if (arguments.length !== 1) {\n throw new Error('Object.create shim only accepts one parameter.');\n }\n F.prototype = o;\n return new F();\n };\n})();\n\n// Creates a new ParserError object from an errorData object. The errorData\n// object should have default code and message properties. The default message\n// property can be overriden by passing in a message parameter.\n// See ParsingError.Errors below for acceptable errors.\nfunction ParsingError(errorData, message) {\n this.name = \"ParsingError\";\n this.code = errorData.code;\n this.message = message || errorData.message;\n}\nParsingError.prototype = _objCreate(Error.prototype);\nParsingError.prototype.constructor = ParsingError;\n\n// ParsingError metadata for acceptable ParsingErrors.\nParsingError.Errors = {\n BadSignature: {\n code: 0,\n message: \"Malformed WebVTT signature.\"\n },\n BadTimeStamp: {\n code: 1,\n message: \"Malformed time stamp.\"\n }\n};\n\n// Try to parse input as a time stamp.\nfunction parseTimeStamp(input) {\n\n function computeSeconds(h, m, s, f) {\n return (h | 0) * 3600 + (m | 0) * 60 + (s | 0) + (f | 0) / 1000;\n }\n\n var m = input.match(/^(\\d+):(\\d{1,2})(:\\d{1,2})?\\.(\\d{3})/);\n if (!m) {\n return null;\n }\n\n if (m[3]) {\n // Timestamp takes the form of [hours]:[minutes]:[seconds].[milliseconds]\n return computeSeconds(m[1], m[2], m[3].replace(\":\", \"\"), m[4]);\n } else if (m[1] > 59) {\n // Timestamp takes the form of [hours]:[minutes].[milliseconds]\n // First position is hours as it's over 59.\n return computeSeconds(m[1], m[2], 0, m[4]);\n } else {\n // Timestamp takes the form of [minutes]:[seconds].[milliseconds]\n return computeSeconds(0, m[1], m[2], m[4]);\n }\n}\n\n// A settings object holds key/value pairs and will ignore anything but the first\n// assignment to a specific key.\nfunction Settings() {\n this.values = _objCreate(null);\n}\n\nSettings.prototype = {\n // Only accept the first assignment to any key.\n set: function(k, v) {\n if (!this.get(k) && v !== \"\") {\n this.values[k] = v;\n }\n },\n // Return the value for a key, or a default value.\n // If 'defaultKey' is passed then 'dflt' is assumed to be an object with\n // a number of possible default values as properties where 'defaultKey' is\n // the key of the property that will be chosen; otherwise it's assumed to be\n // a single value.\n get: function(k, dflt, defaultKey) {\n if (defaultKey) {\n return this.has(k) ? this.values[k] : dflt[defaultKey];\n }\n return this.has(k) ? this.values[k] : dflt;\n },\n // Check whether we have a value for a key.\n has: function(k) {\n return k in this.values;\n },\n // Accept a setting if its one of the given alternatives.\n alt: function(k, v, a) {\n for (var n = 0; n < a.length; ++n) {\n if (v === a[n]) {\n this.set(k, v);\n break;\n }\n }\n },\n // Accept a setting if its a valid (signed) integer.\n integer: function(k, v) {\n if (/^-?\\d+$/.test(v)) { // integer\n this.set(k, parseInt(v, 10));\n }\n },\n // Accept a setting if its a valid percentage.\n percent: function(k, v) {\n var m;\n if ((m = v.match(/^([\\d]{1,3})(\\.[\\d]*)?%$/))) {\n v = parseFloat(v);\n if (v >= 0 && v <= 100) {\n this.set(k, v);\n return true;\n }\n }\n return false;\n }\n};\n\n// Helper function to parse input into groups separated by 'groupDelim', and\n// interprete each group as a key/value pair separated by 'keyValueDelim'.\nfunction parseOptions(input, callback, keyValueDelim, groupDelim) {\n var groups = groupDelim ? input.split(groupDelim) : [input];\n for (var i in groups) {\n if (typeof groups[i] !== \"string\") {\n continue;\n }\n var kv = groups[i].split(keyValueDelim);\n if (kv.length !== 2) {\n continue;\n }\n var k = kv[0].trim();\n var v = kv[1].trim();\n callback(k, v);\n }\n}\n\nfunction parseCue(input, cue, regionList) {\n // Remember the original input if we need to throw an error.\n var oInput = input;\n // 4.1 WebVTT timestamp\n function consumeTimeStamp() {\n var ts = parseTimeStamp(input);\n if (ts === null) {\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed timestamp: \" + oInput);\n }\n // Remove time stamp from input.\n input = input.replace(/^[^\\sa-zA-Z-]+/, \"\");\n return ts;\n }\n\n // 4.4.2 WebVTT cue settings\n function consumeCueSettings(input, cue) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"region\":\n // Find the last region we parsed with the same region id.\n for (var i = regionList.length - 1; i >= 0; i--) {\n if (regionList[i].id === v) {\n settings.set(k, regionList[i].region);\n break;\n }\n }\n break;\n case \"vertical\":\n settings.alt(k, v, [\"rl\", \"lr\"]);\n break;\n case \"line\":\n var vals = v.split(\",\"),\n vals0 = vals[0];\n settings.integer(k, vals0);\n settings.percent(k, vals0) ? settings.set(\"snapToLines\", false) : null;\n settings.alt(k, vals0, [\"auto\"]);\n if (vals.length === 2) {\n settings.alt(\"lineAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"position\":\n vals = v.split(\",\");\n settings.percent(k, vals[0]);\n if (vals.length === 2) {\n settings.alt(\"positionAlign\", vals[1], [\"start\", \"center\", \"end\"]);\n }\n break;\n case \"size\":\n settings.percent(k, v);\n break;\n case \"align\":\n settings.alt(k, v, [\"start\", \"center\", \"end\", \"left\", \"right\"]);\n break;\n }\n }, /:/, /\\s/);\n\n // Apply default values for any missing fields.\n cue.region = settings.get(\"region\", null);\n cue.vertical = settings.get(\"vertical\", \"\");\n try {\n cue.line = settings.get(\"line\", \"auto\");\n } catch (e) {}\n cue.lineAlign = settings.get(\"lineAlign\", \"start\");\n cue.snapToLines = settings.get(\"snapToLines\", true);\n cue.size = settings.get(\"size\", 100);\n // Safari still uses the old middle value and won't accept center\n try {\n cue.align = settings.get(\"align\", \"center\");\n } catch (e) {\n cue.align = settings.get(\"align\", \"middle\");\n }\n try {\n cue.position = settings.get(\"position\", \"auto\");\n } catch (e) {\n cue.position = settings.get(\"position\", {\n start: 0,\n left: 0,\n center: 50,\n middle: 50,\n end: 100,\n right: 100\n }, cue.align);\n }\n\n\n cue.positionAlign = settings.get(\"positionAlign\", {\n start: \"start\",\n left: \"start\",\n center: \"center\",\n middle: \"center\",\n end: \"end\",\n right: \"end\"\n }, cue.align);\n }\n\n function skipWhitespace() {\n input = input.replace(/^\\s+/, \"\");\n }\n\n // 4.1 WebVTT cue timings.\n skipWhitespace();\n cue.startTime = consumeTimeStamp(); // (1) collect cue start time\n skipWhitespace();\n if (input.substr(0, 3) !== \"-->\") { // (3) next characters must match \"-->\"\n throw new ParsingError(ParsingError.Errors.BadTimeStamp,\n \"Malformed time stamp (time stamps must be separated by '-->'): \" +\n oInput);\n }\n input = input.substr(3);\n skipWhitespace();\n cue.endTime = consumeTimeStamp(); // (5) collect cue end time\n\n // 4.1 WebVTT cue settings list.\n skipWhitespace();\n consumeCueSettings(input, cue);\n}\n\n// When evaluating this file as part of a Webpack bundle for server\n// side rendering, `document` is an empty object.\nvar TEXTAREA_ELEMENT = document.createElement && document.createElement(\"textarea\");\n\nvar TAG_NAME = {\n c: \"span\",\n i: \"i\",\n b: \"b\",\n u: \"u\",\n ruby: \"ruby\",\n rt: \"rt\",\n v: \"span\",\n lang: \"span\"\n};\n\n// 5.1 default text color\n// 5.2 default text background color is equivalent to text color with bg_ prefix\nvar DEFAULT_COLOR_CLASS = {\n white: 'rgba(255,255,255,1)',\n lime: 'rgba(0,255,0,1)',\n cyan: 'rgba(0,255,255,1)',\n red: 'rgba(255,0,0,1)',\n yellow: 'rgba(255,255,0,1)',\n magenta: 'rgba(255,0,255,1)',\n blue: 'rgba(0,0,255,1)',\n black: 'rgba(0,0,0,1)'\n};\n\nvar TAG_ANNOTATION = {\n v: \"title\",\n lang: \"lang\"\n};\n\nvar NEEDS_PARENT = {\n rt: \"ruby\"\n};\n\n// Parse content into a document fragment.\nfunction parseContent(window, input) {\n function nextToken() {\n // Check for end-of-string.\n if (!input) {\n return null;\n }\n\n // Consume 'n' characters from the input.\n function consume(result) {\n input = input.substr(result.length);\n return result;\n }\n\n var m = input.match(/^([^<]*)(<[^>]*>?)?/);\n // If there is some text before the next tag, return it, otherwise return\n // the tag.\n return consume(m[1] ? m[1] : m[2]);\n }\n\n function unescape(s) {\n TEXTAREA_ELEMENT.innerHTML = s;\n s = TEXTAREA_ELEMENT.textContent;\n TEXTAREA_ELEMENT.textContent = \"\";\n return s;\n }\n\n function shouldAdd(current, element) {\n return !NEEDS_PARENT[element.localName] ||\n NEEDS_PARENT[element.localName] === current.localName;\n }\n\n // Create an element for this tag.\n function createElement(type, annotation) {\n var tagName = TAG_NAME[type];\n if (!tagName) {\n return null;\n }\n var element = window.document.createElement(tagName);\n var name = TAG_ANNOTATION[type];\n if (name && annotation) {\n element[name] = annotation.trim();\n }\n return element;\n }\n\n var rootDiv = window.document.createElement(\"div\"),\n current = rootDiv,\n t,\n tagStack = [];\n\n while ((t = nextToken()) !== null) {\n if (t[0] === '<') {\n if (t[1] === \"/\") {\n // If the closing tag matches, move back up to the parent node.\n if (tagStack.length &&\n tagStack[tagStack.length - 1] === t.substr(2).replace(\">\", \"\")) {\n tagStack.pop();\n current = current.parentNode;\n }\n // Otherwise just ignore the end tag.\n continue;\n }\n var ts = parseTimeStamp(t.substr(1, t.length - 2));\n var node;\n if (ts) {\n // Timestamps are lead nodes as well.\n node = window.document.createProcessingInstruction(\"timestamp\", ts);\n current.appendChild(node);\n continue;\n }\n var m = t.match(/^<([^.\\s/0-9>]+)(\\.[^\\s\\\\>]+)?([^>\\\\]+)?(\\\\?)>?$/);\n // If we can't parse the tag, skip to the next tag.\n if (!m) {\n continue;\n }\n // Try to construct an element, and ignore the tag if we couldn't.\n node = createElement(m[1], m[3]);\n if (!node) {\n continue;\n }\n // Determine if the tag should be added based on the context of where it\n // is placed in the cuetext.\n if (!shouldAdd(current, node)) {\n continue;\n }\n // Set the class list (as a list of classes, separated by space).\n if (m[2]) {\n var classes = m[2].split('.');\n\n classes.forEach(function(cl) {\n var bgColor = /^bg_/.test(cl);\n // slice out `bg_` if it's a background color\n var colorName = bgColor ? cl.slice(3) : cl;\n\n if (DEFAULT_COLOR_CLASS.hasOwnProperty(colorName)) {\n var propName = bgColor ? 'background-color' : 'color';\n var propValue = DEFAULT_COLOR_CLASS[colorName];\n\n node.style[propName] = propValue;\n }\n });\n\n node.className = classes.join(' ');\n }\n // Append the node to the current node, and enter the scope of the new\n // node.\n tagStack.push(m[1]);\n current.appendChild(node);\n current = node;\n continue;\n }\n\n // Text nodes are leaf nodes.\n current.appendChild(window.document.createTextNode(unescape(t)));\n }\n\n return rootDiv;\n}\n\n// This is a list of all the Unicode characters that have a strong\n// right-to-left category. What this means is that these characters are\n// written right-to-left for sure. It was generated by pulling all the strong\n// right-to-left characters out of the Unicode data table. That table can\n// found at: http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\nvar strongRTLRanges = [[0x5be, 0x5be], [0x5c0, 0x5c0], [0x5c3, 0x5c3], [0x5c6, 0x5c6],\n [0x5d0, 0x5ea], [0x5f0, 0x5f4], [0x608, 0x608], [0x60b, 0x60b], [0x60d, 0x60d],\n [0x61b, 0x61b], [0x61e, 0x64a], [0x66d, 0x66f], [0x671, 0x6d5], [0x6e5, 0x6e6],\n [0x6ee, 0x6ef], [0x6fa, 0x70d], [0x70f, 0x710], [0x712, 0x72f], [0x74d, 0x7a5],\n [0x7b1, 0x7b1], [0x7c0, 0x7ea], [0x7f4, 0x7f5], [0x7fa, 0x7fa], [0x800, 0x815],\n [0x81a, 0x81a], [0x824, 0x824], [0x828, 0x828], [0x830, 0x83e], [0x840, 0x858],\n [0x85e, 0x85e], [0x8a0, 0x8a0], [0x8a2, 0x8ac], [0x200f, 0x200f],\n [0xfb1d, 0xfb1d], [0xfb1f, 0xfb28], [0xfb2a, 0xfb36], [0xfb38, 0xfb3c],\n [0xfb3e, 0xfb3e], [0xfb40, 0xfb41], [0xfb43, 0xfb44], [0xfb46, 0xfbc1],\n [0xfbd3, 0xfd3d], [0xfd50, 0xfd8f], [0xfd92, 0xfdc7], [0xfdf0, 0xfdfc],\n [0xfe70, 0xfe74], [0xfe76, 0xfefc], [0x10800, 0x10805], [0x10808, 0x10808],\n [0x1080a, 0x10835], [0x10837, 0x10838], [0x1083c, 0x1083c], [0x1083f, 0x10855],\n [0x10857, 0x1085f], [0x10900, 0x1091b], [0x10920, 0x10939], [0x1093f, 0x1093f],\n [0x10980, 0x109b7], [0x109be, 0x109bf], [0x10a00, 0x10a00], [0x10a10, 0x10a13],\n [0x10a15, 0x10a17], [0x10a19, 0x10a33], [0x10a40, 0x10a47], [0x10a50, 0x10a58],\n [0x10a60, 0x10a7f], [0x10b00, 0x10b35], [0x10b40, 0x10b55], [0x10b58, 0x10b72],\n [0x10b78, 0x10b7f], [0x10c00, 0x10c48], [0x1ee00, 0x1ee03], [0x1ee05, 0x1ee1f],\n [0x1ee21, 0x1ee22], [0x1ee24, 0x1ee24], [0x1ee27, 0x1ee27], [0x1ee29, 0x1ee32],\n [0x1ee34, 0x1ee37], [0x1ee39, 0x1ee39], [0x1ee3b, 0x1ee3b], [0x1ee42, 0x1ee42],\n [0x1ee47, 0x1ee47], [0x1ee49, 0x1ee49], [0x1ee4b, 0x1ee4b], [0x1ee4d, 0x1ee4f],\n [0x1ee51, 0x1ee52], [0x1ee54, 0x1ee54], [0x1ee57, 0x1ee57], [0x1ee59, 0x1ee59],\n [0x1ee5b, 0x1ee5b], [0x1ee5d, 0x1ee5d], [0x1ee5f, 0x1ee5f], [0x1ee61, 0x1ee62],\n [0x1ee64, 0x1ee64], [0x1ee67, 0x1ee6a], [0x1ee6c, 0x1ee72], [0x1ee74, 0x1ee77],\n [0x1ee79, 0x1ee7c], [0x1ee7e, 0x1ee7e], [0x1ee80, 0x1ee89], [0x1ee8b, 0x1ee9b],\n [0x1eea1, 0x1eea3], [0x1eea5, 0x1eea9], [0x1eeab, 0x1eebb], [0x10fffd, 0x10fffd]];\n\nfunction isStrongRTLChar(charCode) {\n for (var i = 0; i < strongRTLRanges.length; i++) {\n var currentRange = strongRTLRanges[i];\n if (charCode >= currentRange[0] && charCode <= currentRange[1]) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction determineBidi(cueDiv) {\n var nodeStack = [],\n text = \"\",\n charCode;\n\n if (!cueDiv || !cueDiv.childNodes) {\n return \"ltr\";\n }\n\n function pushNodes(nodeStack, node) {\n for (var i = node.childNodes.length - 1; i >= 0; i--) {\n nodeStack.push(node.childNodes[i]);\n }\n }\n\n function nextTextNode(nodeStack) {\n if (!nodeStack || !nodeStack.length) {\n return null;\n }\n\n var node = nodeStack.pop(),\n text = node.textContent || node.innerText;\n if (text) {\n // TODO: This should match all unicode type B characters (paragraph\n // separator characters). See issue #115.\n var m = text.match(/^.*(\\n|\\r)/);\n if (m) {\n nodeStack.length = 0;\n return m[0];\n }\n return text;\n }\n if (node.tagName === \"ruby\") {\n return nextTextNode(nodeStack);\n }\n if (node.childNodes) {\n pushNodes(nodeStack, node);\n return nextTextNode(nodeStack);\n }\n }\n\n pushNodes(nodeStack, cueDiv);\n while ((text = nextTextNode(nodeStack))) {\n for (var i = 0; i < text.length; i++) {\n charCode = text.charCodeAt(i);\n if (isStrongRTLChar(charCode)) {\n return \"rtl\";\n }\n }\n }\n return \"ltr\";\n}\n\nfunction computeLinePos(cue) {\n if (typeof cue.line === \"number\" &&\n (cue.snapToLines || (cue.line >= 0 && cue.line <= 100))) {\n return cue.line;\n }\n if (!cue.track || !cue.track.textTrackList ||\n !cue.track.textTrackList.mediaElement) {\n return -1;\n }\n var track = cue.track,\n trackList = track.textTrackList,\n count = 0;\n for (var i = 0; i < trackList.length && trackList[i] !== track; i++) {\n if (trackList[i].mode === \"showing\") {\n count++;\n }\n }\n return ++count * -1;\n}\n\nfunction StyleBox() {\n}\n\n// Apply styles to a div. If there is no div passed then it defaults to the\n// div on 'this'.\nStyleBox.prototype.applyStyles = function(styles, div) {\n div = div || this.div;\n for (var prop in styles) {\n if (styles.hasOwnProperty(prop)) {\n div.style[prop] = styles[prop];\n }\n }\n};\n\nStyleBox.prototype.formatStyle = function(val, unit) {\n return val === 0 ? 0 : val + unit;\n};\n\n// Constructs the computed display state of the cue (a div). Places the div\n// into the overlay which should be a block level element (usually a div).\nfunction CueStyleBox(window, cue, styleOptions) {\n StyleBox.call(this);\n this.cue = cue;\n\n // Parse our cue's text into a DOM tree rooted at 'cueDiv'. This div will\n // have inline positioning and will function as the cue background box.\n this.cueDiv = parseContent(window, cue.text);\n var styles = {\n color: \"rgba(255, 255, 255, 1)\",\n backgroundColor: \"rgba(0, 0, 0, 0.8)\",\n position: \"relative\",\n left: 0,\n right: 0,\n top: 0,\n bottom: 0,\n display: \"inline\",\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\"\n };\n\n this.applyStyles(styles, this.cueDiv);\n\n // Create an absolutely positioned div that will be used to position the cue\n // div. Note, all WebVTT cue-setting alignments are equivalent to the CSS\n // mirrors of them except middle instead of center on Safari.\n this.div = window.document.createElement(\"div\");\n styles = {\n direction: determineBidi(this.cueDiv),\n writingMode: cue.vertical === \"\" ? \"horizontal-tb\"\n : cue.vertical === \"lr\" ? \"vertical-lr\"\n : \"vertical-rl\",\n unicodeBidi: \"plaintext\",\n textAlign: cue.align === \"middle\" ? \"center\" : cue.align,\n font: styleOptions.font,\n whiteSpace: \"pre-line\",\n position: \"absolute\"\n };\n\n this.applyStyles(styles);\n this.div.appendChild(this.cueDiv);\n\n // Calculate the distance from the reference edge of the viewport to the text\n // position of the cue box. The reference edge will be resolved later when\n // the box orientation styles are applied.\n var textPos = 0;\n switch (cue.positionAlign) {\n case \"start\":\n textPos = cue.position;\n break;\n case \"center\":\n textPos = cue.position - (cue.size / 2);\n break;\n case \"end\":\n textPos = cue.position - cue.size;\n break;\n }\n\n // Horizontal box orientation; textPos is the distance from the left edge of the\n // area to the left edge of the box and cue.size is the distance extending to\n // the right from there.\n if (cue.vertical === \"\") {\n this.applyStyles({\n left: this.formatStyle(textPos, \"%\"),\n width: this.formatStyle(cue.size, \"%\")\n });\n // Vertical box orientation; textPos is the distance from the top edge of the\n // area to the top edge of the box and cue.size is the height extending\n // downwards from there.\n } else {\n this.applyStyles({\n top: this.formatStyle(textPos, \"%\"),\n height: this.formatStyle(cue.size, \"%\")\n });\n }\n\n this.move = function(box) {\n this.applyStyles({\n top: this.formatStyle(box.top, \"px\"),\n bottom: this.formatStyle(box.bottom, \"px\"),\n left: this.formatStyle(box.left, \"px\"),\n right: this.formatStyle(box.right, \"px\"),\n height: this.formatStyle(box.height, \"px\"),\n width: this.formatStyle(box.width, \"px\")\n });\n };\n}\nCueStyleBox.prototype = _objCreate(StyleBox.prototype);\nCueStyleBox.prototype.constructor = CueStyleBox;\n\n// Represents the co-ordinates of an Element in a way that we can easily\n// compute things with such as if it overlaps or intersects with another Element.\n// Can initialize it with either a StyleBox or another BoxPosition.\nfunction BoxPosition(obj) {\n // Either a BoxPosition was passed in and we need to copy it, or a StyleBox\n // was passed in and we need to copy the results of 'getBoundingClientRect'\n // as the object returned is readonly. All co-ordinate values are in reference\n // to the viewport origin (top left).\n var lh, height, width, top;\n if (obj.div) {\n height = obj.div.offsetHeight;\n width = obj.div.offsetWidth;\n top = obj.div.offsetTop;\n\n var rects = (rects = obj.div.childNodes) && (rects = rects[0]) &&\n rects.getClientRects && rects.getClientRects();\n obj = obj.div.getBoundingClientRect();\n // In certain cases the outter div will be slightly larger then the sum of\n // the inner div's lines. This could be due to bold text, etc, on some platforms.\n // In this case we should get the average line height and use that. This will\n // result in the desired behaviour.\n lh = rects ? Math.max((rects[0] && rects[0].height) || 0, obj.height / rects.length)\n : 0;\n\n }\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top || top;\n this.height = obj.height || height;\n this.bottom = obj.bottom || (top + (obj.height || height));\n this.width = obj.width || width;\n this.lineHeight = lh !== undefined ? lh : obj.lineHeight;\n}\n\n// Move the box along a particular axis. Optionally pass in an amount to move\n// the box. If no amount is passed then the default is the line height of the\n// box.\nBoxPosition.prototype.move = function(axis, toMove) {\n toMove = toMove !== undefined ? toMove : this.lineHeight;\n switch (axis) {\n case \"+x\":\n this.left += toMove;\n this.right += toMove;\n break;\n case \"-x\":\n this.left -= toMove;\n this.right -= toMove;\n break;\n case \"+y\":\n this.top += toMove;\n this.bottom += toMove;\n break;\n case \"-y\":\n this.top -= toMove;\n this.bottom -= toMove;\n break;\n }\n};\n\n// Check if this box overlaps another box, b2.\nBoxPosition.prototype.overlaps = function(b2) {\n return this.left < b2.right &&\n this.right > b2.left &&\n this.top < b2.bottom &&\n this.bottom > b2.top;\n};\n\n// Check if this box overlaps any other boxes in boxes.\nBoxPosition.prototype.overlapsAny = function(boxes) {\n for (var i = 0; i < boxes.length; i++) {\n if (this.overlaps(boxes[i])) {\n return true;\n }\n }\n return false;\n};\n\n// Check if this box is within another box.\nBoxPosition.prototype.within = function(container) {\n return this.top >= container.top &&\n this.bottom <= container.bottom &&\n this.left >= container.left &&\n this.right <= container.right;\n};\n\n// Check if this box is entirely within the container or it is overlapping\n// on the edge opposite of the axis direction passed. For example, if \"+x\" is\n// passed and the box is overlapping on the left edge of the container, then\n// return true.\nBoxPosition.prototype.overlapsOppositeAxis = function(container, axis) {\n switch (axis) {\n case \"+x\":\n return this.left < container.left;\n case \"-x\":\n return this.right > container.right;\n case \"+y\":\n return this.top < container.top;\n case \"-y\":\n return this.bottom > container.bottom;\n }\n};\n\n// Find the percentage of the area that this box is overlapping with another\n// box.\nBoxPosition.prototype.intersectPercentage = function(b2) {\n var x = Math.max(0, Math.min(this.right, b2.right) - Math.max(this.left, b2.left)),\n y = Math.max(0, Math.min(this.bottom, b2.bottom) - Math.max(this.top, b2.top)),\n intersectArea = x * y;\n return intersectArea / (this.height * this.width);\n};\n\n// Convert the positions from this box to CSS compatible positions using\n// the reference container's positions. This has to be done because this\n// box's positions are in reference to the viewport origin, whereas, CSS\n// values are in referecne to their respective edges.\nBoxPosition.prototype.toCSSCompatValues = function(reference) {\n return {\n top: this.top - reference.top,\n bottom: reference.bottom - this.bottom,\n left: this.left - reference.left,\n right: reference.right - this.right,\n height: this.height,\n width: this.width\n };\n};\n\n// Get an object that represents the box's position without anything extra.\n// Can pass a StyleBox, HTMLElement, or another BoxPositon.\nBoxPosition.getSimpleBoxPosition = function(obj) {\n var height = obj.div ? obj.div.offsetHeight : obj.tagName ? obj.offsetHeight : 0;\n var width = obj.div ? obj.div.offsetWidth : obj.tagName ? obj.offsetWidth : 0;\n var top = obj.div ? obj.div.offsetTop : obj.tagName ? obj.offsetTop : 0;\n\n obj = obj.div ? obj.div.getBoundingClientRect() :\n obj.tagName ? obj.getBoundingClientRect() : obj;\n var ret = {\n left: obj.left,\n right: obj.right,\n top: obj.top || top,\n height: obj.height || height,\n bottom: obj.bottom || (top + (obj.height || height)),\n width: obj.width || width\n };\n return ret;\n};\n\n// Move a StyleBox to its specified, or next best, position. The containerBox\n// is the box that contains the StyleBox, such as a div. boxPositions are\n// a list of other boxes that the styleBox can't overlap with.\nfunction moveBoxToLinePosition(window, styleBox, containerBox, boxPositions) {\n\n // Find the best position for a cue box, b, on the video. The axis parameter\n // is a list of axis, the order of which, it will move the box along. For example:\n // Passing [\"+x\", \"-x\"] will move the box first along the x axis in the positive\n // direction. If it doesn't find a good position for it there it will then move\n // it along the x axis in the negative direction.\n function findBestPosition(b, axis) {\n var bestPosition,\n specifiedPosition = new BoxPosition(b),\n percentage = 1; // Highest possible so the first thing we get is better.\n\n for (var i = 0; i < axis.length; i++) {\n while (b.overlapsOppositeAxis(containerBox, axis[i]) ||\n (b.within(containerBox) && b.overlapsAny(boxPositions))) {\n b.move(axis[i]);\n }\n // We found a spot where we aren't overlapping anything. This is our\n // best position.\n if (b.within(containerBox)) {\n return b;\n }\n var p = b.intersectPercentage(containerBox);\n // If we're outside the container box less then we were on our last try\n // then remember this position as the best position.\n if (percentage > p) {\n bestPosition = new BoxPosition(b);\n percentage = p;\n }\n // Reset the box position to the specified position.\n b = new BoxPosition(specifiedPosition);\n }\n return bestPosition || specifiedPosition;\n }\n\n var boxPosition = new BoxPosition(styleBox),\n cue = styleBox.cue,\n linePos = computeLinePos(cue),\n axis = [];\n\n // If we have a line number to align the cue to.\n if (cue.snapToLines) {\n var size;\n switch (cue.vertical) {\n case \"\":\n axis = [ \"+y\", \"-y\" ];\n size = \"height\";\n break;\n case \"rl\":\n axis = [ \"+x\", \"-x\" ];\n size = \"width\";\n break;\n case \"lr\":\n axis = [ \"-x\", \"+x\" ];\n size = \"width\";\n break;\n }\n\n var step = boxPosition.lineHeight,\n position = step * Math.round(linePos),\n maxPosition = containerBox[size] + step,\n initialAxis = axis[0];\n\n // If the specified intial position is greater then the max position then\n // clamp the box to the amount of steps it would take for the box to\n // reach the max position.\n if (Math.abs(position) > maxPosition) {\n position = position < 0 ? -1 : 1;\n position *= Math.ceil(maxPosition / step) * step;\n }\n\n // If computed line position returns negative then line numbers are\n // relative to the bottom of the video instead of the top. Therefore, we\n // need to increase our initial position by the length or width of the\n // video, depending on the writing direction, and reverse our axis directions.\n if (linePos < 0) {\n position += cue.vertical === \"\" ? containerBox.height : containerBox.width;\n axis = axis.reverse();\n }\n\n // Move the box to the specified position. This may not be its best\n // position.\n boxPosition.move(initialAxis, position);\n\n } else {\n // If we have a percentage line value for the cue.\n var calculatedPercentage = (boxPosition.lineHeight / containerBox.height) * 100;\n\n switch (cue.lineAlign) {\n case \"center\":\n linePos -= (calculatedPercentage / 2);\n break;\n case \"end\":\n linePos -= calculatedPercentage;\n break;\n }\n\n // Apply initial line position to the cue box.\n switch (cue.vertical) {\n case \"\":\n styleBox.applyStyles({\n top: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"rl\":\n styleBox.applyStyles({\n left: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n case \"lr\":\n styleBox.applyStyles({\n right: styleBox.formatStyle(linePos, \"%\")\n });\n break;\n }\n\n axis = [ \"+y\", \"-x\", \"+x\", \"-y\" ];\n\n // Get the box position again after we've applied the specified positioning\n // to it.\n boxPosition = new BoxPosition(styleBox);\n }\n\n var bestPosition = findBestPosition(boxPosition, axis);\n styleBox.move(bestPosition.toCSSCompatValues(containerBox));\n}\n\nfunction WebVTT() {\n // Nothing\n}\n\n// Helper to allow strings to be decoded instead of the default binary utf8 data.\nWebVTT.StringDecoder = function() {\n return {\n decode: function(data) {\n if (!data) {\n return \"\";\n }\n if (typeof data !== \"string\") {\n throw new Error(\"Error - expected string data.\");\n }\n return decodeURIComponent(encodeURIComponent(data));\n }\n };\n};\n\nWebVTT.convertCueToDOMTree = function(window, cuetext) {\n if (!window || !cuetext) {\n return null;\n }\n return parseContent(window, cuetext);\n};\n\nvar FONT_SIZE_PERCENT = 0.05;\nvar FONT_STYLE = \"sans-serif\";\nvar CUE_BACKGROUND_PADDING = \"1.5%\";\n\n// Runs the processing model over the cues and regions passed to it.\n// @param overlay A block level element (usually a div) that the computed cues\n// and regions will be placed into.\nWebVTT.processCues = function(window, cues, overlay) {\n if (!window || !cues || !overlay) {\n return null;\n }\n\n // Remove all previous children.\n while (overlay.firstChild) {\n overlay.removeChild(overlay.firstChild);\n }\n\n var paddedOverlay = window.document.createElement(\"div\");\n paddedOverlay.style.position = \"absolute\";\n paddedOverlay.style.left = \"0\";\n paddedOverlay.style.right = \"0\";\n paddedOverlay.style.top = \"0\";\n paddedOverlay.style.bottom = \"0\";\n paddedOverlay.style.margin = CUE_BACKGROUND_PADDING;\n overlay.appendChild(paddedOverlay);\n\n // Determine if we need to compute the display states of the cues. This could\n // be the case if a cue's state has been changed since the last computation or\n // if it has not been computed yet.\n function shouldCompute(cues) {\n for (var i = 0; i < cues.length; i++) {\n if (cues[i].hasBeenReset || !cues[i].displayState) {\n return true;\n }\n }\n return false;\n }\n\n // We don't need to recompute the cues' display states. Just reuse them.\n if (!shouldCompute(cues)) {\n for (var i = 0; i < cues.length; i++) {\n paddedOverlay.appendChild(cues[i].displayState);\n }\n return;\n }\n\n var boxPositions = [],\n containerBox = BoxPosition.getSimpleBoxPosition(paddedOverlay),\n fontSize = Math.round(containerBox.height * FONT_SIZE_PERCENT * 100) / 100;\n var styleOptions = {\n font: fontSize + \"px \" + FONT_STYLE\n };\n\n (function() {\n var styleBox, cue;\n\n for (var i = 0; i < cues.length; i++) {\n cue = cues[i];\n\n // Compute the intial position and styles of the cue div.\n styleBox = new CueStyleBox(window, cue, styleOptions);\n paddedOverlay.appendChild(styleBox.div);\n\n // Move the cue div to it's correct line position.\n moveBoxToLinePosition(window, styleBox, containerBox, boxPositions);\n\n // Remember the computed div so that we don't have to recompute it later\n // if we don't have too.\n cue.displayState = styleBox.div;\n\n boxPositions.push(BoxPosition.getSimpleBoxPosition(styleBox));\n }\n })();\n};\n\nWebVTT.Parser = function(window, vttjs, decoder) {\n if (!decoder) {\n decoder = vttjs;\n vttjs = {};\n }\n if (!vttjs) {\n vttjs = {};\n }\n\n this.window = window;\n this.vttjs = vttjs;\n this.state = \"INITIAL\";\n this.buffer = \"\";\n this.decoder = decoder || new TextDecoder(\"utf8\");\n this.regionList = [];\n};\n\nWebVTT.Parser.prototype = {\n // If the error is a ParsingError then report it to the consumer if\n // possible. If it's not a ParsingError then throw it like normal.\n reportOrThrowError: function(e) {\n if (e instanceof ParsingError) {\n this.onparsingerror && this.onparsingerror(e);\n } else {\n throw e;\n }\n },\n parse: function (data) {\n var self = this;\n\n // If there is no data then we won't decode it, but will just try to parse\n // whatever is in buffer already. This may occur in circumstances, for\n // example when flush() is called.\n if (data) {\n // Try to decode the data that we received.\n self.buffer += self.decoder.decode(data, {stream: true});\n }\n\n function collectNextLine() {\n var buffer = self.buffer;\n var pos = 0;\n while (pos < buffer.length && buffer[pos] !== '\\r' && buffer[pos] !== '\\n') {\n ++pos;\n }\n var line = buffer.substr(0, pos);\n // Advance the buffer early in case we fail below.\n if (buffer[pos] === '\\r') {\n ++pos;\n }\n if (buffer[pos] === '\\n') {\n ++pos;\n }\n self.buffer = buffer.substr(pos);\n return line;\n }\n\n // 3.4 WebVTT region and WebVTT region settings syntax\n function parseRegion(input) {\n var settings = new Settings();\n\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"id\":\n settings.set(k, v);\n break;\n case \"width\":\n settings.percent(k, v);\n break;\n case \"lines\":\n settings.integer(k, v);\n break;\n case \"regionanchor\":\n case \"viewportanchor\":\n var xy = v.split(',');\n if (xy.length !== 2) {\n break;\n }\n // We have to make sure both x and y parse, so use a temporary\n // settings object here.\n var anchor = new Settings();\n anchor.percent(\"x\", xy[0]);\n anchor.percent(\"y\", xy[1]);\n if (!anchor.has(\"x\") || !anchor.has(\"y\")) {\n break;\n }\n settings.set(k + \"X\", anchor.get(\"x\"));\n settings.set(k + \"Y\", anchor.get(\"y\"));\n break;\n case \"scroll\":\n settings.alt(k, v, [\"up\"]);\n break;\n }\n }, /=/, /\\s/);\n\n // Create the region, using default values for any values that were not\n // specified.\n if (settings.has(\"id\")) {\n var region = new (self.vttjs.VTTRegion || self.window.VTTRegion)();\n region.width = settings.get(\"width\", 100);\n region.lines = settings.get(\"lines\", 3);\n region.regionAnchorX = settings.get(\"regionanchorX\", 0);\n region.regionAnchorY = settings.get(\"regionanchorY\", 100);\n region.viewportAnchorX = settings.get(\"viewportanchorX\", 0);\n region.viewportAnchorY = settings.get(\"viewportanchorY\", 100);\n region.scroll = settings.get(\"scroll\", \"\");\n // Register the region.\n self.onregion && self.onregion(region);\n // Remember the VTTRegion for later in case we parse any VTTCues that\n // reference it.\n self.regionList.push({\n id: settings.get(\"id\"),\n region: region\n });\n }\n }\n\n // draft-pantos-http-live-streaming-20\n // https://tools.ietf.org/html/draft-pantos-http-live-streaming-20#section-3.5\n // 3.5 WebVTT\n function parseTimestampMap(input) {\n var settings = new Settings();\n\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"MPEGT\":\n settings.integer(k + 'S', v);\n break;\n case \"LOCA\":\n settings.set(k + 'L', parseTimeStamp(v));\n break;\n }\n }, /[^\\d]:/, /,/);\n\n self.ontimestampmap && self.ontimestampmap({\n \"MPEGTS\": settings.get(\"MPEGTS\"),\n \"LOCAL\": settings.get(\"LOCAL\")\n });\n }\n\n // 3.2 WebVTT metadata header syntax\n function parseHeader(input) {\n if (input.match(/X-TIMESTAMP-MAP/)) {\n // This line contains HLS X-TIMESTAMP-MAP metadata\n parseOptions(input, function(k, v) {\n switch(k) {\n case \"X-TIMESTAMP-MAP\":\n parseTimestampMap(v);\n break;\n }\n }, /=/);\n } else {\n parseOptions(input, function (k, v) {\n switch (k) {\n case \"Region\":\n // 3.3 WebVTT region metadata header syntax\n parseRegion(v);\n break;\n }\n }, /:/);\n }\n\n }\n\n // 5.1 WebVTT file parsing.\n try {\n var line;\n if (self.state === \"INITIAL\") {\n // We can't start parsing until we have the first line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n line = collectNextLine();\n\n var m = line.match(/^WEBVTT([ \\t].*)?$/);\n if (!m || !m[0]) {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n\n self.state = \"HEADER\";\n }\n\n var alreadyCollectedLine = false;\n while (self.buffer) {\n // We can't parse a line until we have the full line.\n if (!/\\r\\n|\\n/.test(self.buffer)) {\n return this;\n }\n\n if (!alreadyCollectedLine) {\n line = collectNextLine();\n } else {\n alreadyCollectedLine = false;\n }\n\n switch (self.state) {\n case \"HEADER\":\n // 13-18 - Allow a header (metadata) under the WEBVTT line.\n if (/:/.test(line)) {\n parseHeader(line);\n } else if (!line) {\n // An empty line terminates the header and starts the body (cues).\n self.state = \"ID\";\n }\n continue;\n case \"NOTE\":\n // Ignore NOTE blocks.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n case \"ID\":\n // Check for the start of NOTE blocks.\n if (/^NOTE($|[ \\t])/.test(line)) {\n self.state = \"NOTE\";\n break;\n }\n // 19-29 - Allow any number of line terminators, then initialize new cue values.\n if (!line) {\n continue;\n }\n self.cue = new (self.vttjs.VTTCue || self.window.VTTCue)(0, 0, \"\");\n // Safari still uses the old middle value and won't accept center\n try {\n self.cue.align = \"center\";\n } catch (e) {\n self.cue.align = \"middle\";\n }\n self.state = \"CUE\";\n // 30-39 - Check if self line contains an optional identifier or timing data.\n if (line.indexOf(\"-->\") === -1) {\n self.cue.id = line;\n continue;\n }\n // Process line as start of a cue.\n /*falls through*/\n case \"CUE\":\n // 40 - Collect cue timings and settings.\n try {\n parseCue(line, self.cue, self.regionList);\n } catch (e) {\n self.reportOrThrowError(e);\n // In case of an error ignore rest of the cue.\n self.cue = null;\n self.state = \"BADCUE\";\n continue;\n }\n self.state = \"CUETEXT\";\n continue;\n case \"CUETEXT\":\n var hasSubstring = line.indexOf(\"-->\") !== -1;\n // 34 - If we have an empty line then report the cue.\n // 35 - If we have the special substring '-->' then report the cue,\n // but do not collect the line as we need to process the current\n // one as a new cue.\n if (!line || hasSubstring && (alreadyCollectedLine = true)) {\n // We are done parsing self cue.\n self.oncue && self.oncue(self.cue);\n self.cue = null;\n self.state = \"ID\";\n continue;\n }\n if (self.cue.text) {\n self.cue.text += \"\\n\";\n }\n self.cue.text += line.replace(/\\u2028/g, '\\n').replace(/u2029/g, '\\n');\n continue;\n case \"BADCUE\": // BADCUE\n // 54-62 - Collect and discard the remaining cue.\n if (!line) {\n self.state = \"ID\";\n }\n continue;\n }\n }\n } catch (e) {\n self.reportOrThrowError(e);\n\n // If we are currently parsing a cue, report what we have.\n if (self.state === \"CUETEXT\" && self.cue && self.oncue) {\n self.oncue(self.cue);\n }\n self.cue = null;\n // Enter BADWEBVTT state if header was not parsed correctly otherwise\n // another exception occurred so enter BADCUE state.\n self.state = self.state === \"INITIAL\" ? \"BADWEBVTT\" : \"BADCUE\";\n }\n return this;\n },\n flush: function () {\n var self = this;\n try {\n // Finish decoding the stream.\n self.buffer += self.decoder.decode();\n // Synthesize the end of the current cue or region.\n if (self.cue || self.state === \"HEADER\") {\n self.buffer += \"\\n\\n\";\n self.parse();\n }\n // If we've flushed, parsed, and we're still on the INITIAL state then\n // that means we don't have enough of the stream to parse the first\n // line.\n if (self.state === \"INITIAL\") {\n throw new ParsingError(ParsingError.Errors.BadSignature);\n }\n } catch(e) {\n self.reportOrThrowError(e);\n }\n self.onflush && self.onflush();\n return this;\n }\n};\n\nmodule.exports = WebVTT;\n","// see https://tools.ietf.org/html/rfc1808\n\n(function (root) {\n var URL_REGEX =\n /^(?=((?:[a-zA-Z0-9+\\-.]+:)?))\\1(?=((?:\\/\\/[^\\/?#]*)?))\\2(?=((?:(?:[^?#\\/]*\\/)*[^;?#\\/]*)?))\\3((?:;[^?#]*)?)(\\?[^#]*)?(#[^]*)?$/;\n var FIRST_SEGMENT_REGEX = /^(?=([^\\/?#]*))\\1([^]*)$/;\n var SLASH_DOT_REGEX = /(?:\\/|^)\\.(?=\\/)/g;\n var SLASH_DOT_DOT_REGEX = /(?:\\/|^)\\.\\.\\/(?!\\.\\.\\/)[^\\/]*(?=\\/)/g;\n\n var URLToolkit = {\n // If opts.alwaysNormalize is true then the path will always be normalized even when it starts with / or //\n // E.g\n // With opts.alwaysNormalize = false (default, spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/f/../g\n // With opts.alwaysNormalize = true (not spec compliant)\n // http://a.com/b/cd + /e/f/../g => http://a.com/e/g\n buildAbsoluteURL: function (baseURL, relativeURL, opts) {\n opts = opts || {};\n // remove any remaining space and CRLF\n baseURL = baseURL.trim();\n relativeURL = relativeURL.trim();\n if (!relativeURL) {\n // 2a) If the embedded URL is entirely empty, it inherits the\n // entire base URL (i.e., is set equal to the base URL)\n // and we are done.\n if (!opts.alwaysNormalize) {\n return baseURL;\n }\n var basePartsForNormalise = URLToolkit.parseURL(baseURL);\n if (!basePartsForNormalise) {\n throw new Error('Error trying to parse base URL.');\n }\n basePartsForNormalise.path = URLToolkit.normalizePath(\n basePartsForNormalise.path\n );\n return URLToolkit.buildURLFromParts(basePartsForNormalise);\n }\n var relativeParts = URLToolkit.parseURL(relativeURL);\n if (!relativeParts) {\n throw new Error('Error trying to parse relative URL.');\n }\n if (relativeParts.scheme) {\n // 2b) If the embedded URL starts with a scheme name, it is\n // interpreted as an absolute URL and we are done.\n if (!opts.alwaysNormalize) {\n return relativeURL;\n }\n relativeParts.path = URLToolkit.normalizePath(relativeParts.path);\n return URLToolkit.buildURLFromParts(relativeParts);\n }\n var baseParts = URLToolkit.parseURL(baseURL);\n if (!baseParts) {\n throw new Error('Error trying to parse base URL.');\n }\n if (!baseParts.netLoc && baseParts.path && baseParts.path[0] !== '/') {\n // If netLoc missing and path doesn't start with '/', assume everthing before the first '/' is the netLoc\n // This causes 'example.com/a' to be handled as '//example.com/a' instead of '/example.com/a'\n var pathParts = FIRST_SEGMENT_REGEX.exec(baseParts.path);\n baseParts.netLoc = pathParts[1];\n baseParts.path = pathParts[2];\n }\n if (baseParts.netLoc && !baseParts.path) {\n baseParts.path = '/';\n }\n var builtParts = {\n // 2c) Otherwise, the embedded URL inherits the scheme of\n // the base URL.\n scheme: baseParts.scheme,\n netLoc: relativeParts.netLoc,\n path: null,\n params: relativeParts.params,\n query: relativeParts.query,\n fragment: relativeParts.fragment,\n };\n if (!relativeParts.netLoc) {\n // 3) If the embedded URL's is non-empty, we skip to\n // Step 7. Otherwise, the embedded URL inherits the \n // (if any) of the base URL.\n builtParts.netLoc = baseParts.netLoc;\n // 4) If the embedded URL path is preceded by a slash \"/\", the\n // path is not relative and we skip to Step 7.\n if (relativeParts.path[0] !== '/') {\n if (!relativeParts.path) {\n // 5) If the embedded URL path is empty (and not preceded by a\n // slash), then the embedded URL inherits the base URL path\n builtParts.path = baseParts.path;\n // 5a) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and\n if (!relativeParts.params) {\n builtParts.params = baseParts.params;\n // 5b) if the embedded URL's is non-empty, we skip to\n // step 7; otherwise, it inherits the of the base\n // URL (if any) and we skip to step 7.\n if (!relativeParts.query) {\n builtParts.query = baseParts.query;\n }\n }\n } else {\n // 6) The last segment of the base URL's path (anything\n // following the rightmost slash \"/\", or the entire path if no\n // slash is present) is removed and the embedded URL's path is\n // appended in its place.\n var baseURLPath = baseParts.path;\n var newPath =\n baseURLPath.substring(0, baseURLPath.lastIndexOf('/') + 1) +\n relativeParts.path;\n builtParts.path = URLToolkit.normalizePath(newPath);\n }\n }\n }\n if (builtParts.path === null) {\n builtParts.path = opts.alwaysNormalize\n ? URLToolkit.normalizePath(relativeParts.path)\n : relativeParts.path;\n }\n return URLToolkit.buildURLFromParts(builtParts);\n },\n parseURL: function (url) {\n var parts = URL_REGEX.exec(url);\n if (!parts) {\n return null;\n }\n return {\n scheme: parts[1] || '',\n netLoc: parts[2] || '',\n path: parts[3] || '',\n params: parts[4] || '',\n query: parts[5] || '',\n fragment: parts[6] || '',\n };\n },\n normalizePath: function (path) {\n // The following operations are\n // then applied, in order, to the new path:\n // 6a) All occurrences of \"./\", where \".\" is a complete path\n // segment, are removed.\n // 6b) If the path ends with \".\" as a complete path segment,\n // that \".\" is removed.\n path = path.split('').reverse().join('').replace(SLASH_DOT_REGEX, '');\n // 6c) All occurrences of \"/../\", where is a\n // complete path segment not equal to \"..\", are removed.\n // Removal of these path segments is performed iteratively,\n // removing the leftmost matching pattern on each iteration,\n // until no matching pattern remains.\n // 6d) If the path ends with \"/..\", where is a\n // complete path segment not equal to \"..\", that\n // \"/..\" is removed.\n while (\n path.length !== (path = path.replace(SLASH_DOT_DOT_REGEX, '')).length\n ) {}\n return path.split('').reverse().join('');\n },\n buildURLFromParts: function (parts) {\n return (\n parts.scheme +\n parts.netLoc +\n parts.path +\n parts.params +\n parts.query +\n parts.fragment\n );\n },\n };\n\n if (typeof exports === 'object' && typeof module === 'object')\n module.exports = URLToolkit;\n else if (typeof define === 'function' && define.amd)\n define([], function () {\n return URLToolkit;\n });\n else if (typeof exports === 'object') exports['URLToolkit'] = URLToolkit;\n else root['URLToolkit'] = URLToolkit;\n})(this);\n","/**\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.1 @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 }\n\n if (entry.attributes.KEYFORMAT === 'com.microsoft.playready') {\n this.manifest.contentProtection = this.manifest.contentProtection || {}; // TODO: add full support for this.\n\n this.manifest.contentProtection['com.microsoft.playready'] = {\n uri: entry.attributes.URI\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'; // 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 isArrayBufferView = function isArrayBufferView(obj) {\n if (ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(obj);\n }\n\n return obj && obj.buffer instanceof ArrayBuffer;\n};\nexport var isTypedArray = function isTypedArray(obj) {\n return isArrayBufferView(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};","// Source: http://jsfiddle.net/vWx8V/\n// http://stackoverflow.com/questions/5603195/full-list-of-javascript-keycodes\n\n/**\n * Conenience method returns corresponding value for given keyName or keyCode.\n *\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Mixed}\n * @api public\n */\n\nfunction keyCode(searchInput) {\n // Keyboard Events\n if (searchInput && 'object' === typeof searchInput) {\n var hasKeyCode = searchInput.which || searchInput.keyCode || searchInput.charCode\n if (hasKeyCode) searchInput = hasKeyCode\n }\n\n // Numbers\n if ('number' === typeof searchInput) return names[searchInput]\n\n // Everything else (cast to string)\n var search = String(searchInput)\n\n // check codes\n var foundNamedKey = codes[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // check aliases\n var foundNamedKey = aliases[search.toLowerCase()]\n if (foundNamedKey) return foundNamedKey\n\n // weird character?\n if (search.length === 1) return search.charCodeAt(0)\n\n return undefined\n}\n\n/**\n * Compares a keyboard event with a given keyCode or keyName.\n *\n * @param {Event} event Keyboard event that should be tested\n * @param {Mixed} keyCode {Number} or keyName {String}\n * @return {Boolean}\n * @api public\n */\nkeyCode.isEventKey = function isEventKey(event, nameOrCode) {\n if (event && 'object' === typeof event) {\n var keyCode = event.which || event.keyCode || event.charCode\n if (keyCode === null || keyCode === undefined) { return false; }\n if (typeof nameOrCode === 'string') {\n // check codes\n var foundNamedKey = codes[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n \n // check aliases\n var foundNamedKey = aliases[nameOrCode.toLowerCase()]\n if (foundNamedKey) { return foundNamedKey === keyCode; }\n } else if (typeof nameOrCode === 'number') {\n return nameOrCode === keyCode;\n }\n return false;\n }\n}\n\nexports = module.exports = keyCode;\n\n/**\n * Get by name\n *\n * exports.code['enter'] // => 13\n */\n\nvar codes = exports.code = exports.codes = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'ctrl': 17,\n 'alt': 18,\n 'pause/break': 19,\n 'caps lock': 20,\n 'esc': 27,\n 'space': 32,\n 'page up': 33,\n 'page down': 34,\n 'end': 35,\n 'home': 36,\n 'left': 37,\n 'up': 38,\n 'right': 39,\n 'down': 40,\n 'insert': 45,\n 'delete': 46,\n 'command': 91,\n 'left command': 91,\n 'right command': 93,\n 'numpad *': 106,\n 'numpad +': 107,\n 'numpad -': 109,\n 'numpad .': 110,\n 'numpad /': 111,\n 'num lock': 144,\n 'scroll lock': 145,\n 'my computer': 182,\n 'my calculator': 183,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n \"'\": 222\n}\n\n// Helper aliases\n\nvar aliases = exports.aliases = {\n 'windows': 91,\n '⇧': 16,\n '⌥': 18,\n '⌃': 17,\n '⌘': 91,\n 'ctl': 17,\n 'control': 17,\n 'option': 18,\n 'pause': 19,\n 'break': 19,\n 'caps': 20,\n 'return': 13,\n 'escape': 27,\n 'spc': 32,\n 'spacebar': 32,\n 'pgup': 33,\n 'pgdn': 34,\n 'ins': 45,\n 'del': 46,\n 'cmd': 91\n}\n\n/*!\n * Programatically add the following\n */\n\n// lower case chars\nfor (i = 97; i < 123; i++) codes[String.fromCharCode(i)] = i - 32\n\n// numbers\nfor (var i = 48; i < 58; i++) codes[i - 48] = i\n\n// function keys\nfor (i = 1; i < 13; i++) codes['f'+i] = i + 111\n\n// numpad keys\nfor (i = 0; i < 10; i++) codes['numpad '+i] = i + 96\n\n/**\n * Get by code\n *\n * exports.name[13] // => 'Enter'\n */\n\nvar names = exports.names = exports.title = {} // title for backward compat\n\n// Create reverse mapping\nfor (i in codes) names[codes[i]] = i\n\n// Add aliases\nfor (var alias in aliases) {\n codes[alias] = aliases[alias]\n}\n","var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4] \tNameStartChar\t ::= \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a] \tNameChar\t ::= \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5] \tName\t ::= \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring \nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\t\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif(k in entityMap){\n\t\t\treturn entityMap[k]; \n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\t\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t \t\t\tdoc.appendChild(text);\n\t \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\t\t\t\t\t\n\t \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t \t\tend = tagStart+1+tagName.length;\n\t \t}else if(tagName.match(/\\s\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: 这里有可能sax回退,有位置错误风险\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(qname, value, startIndex)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t//console.log(attrName,value,start,p)\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\t//console.dir(el)\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value.replace(/&#?\\w+;/g,entityReplacer), start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start,p).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName = el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute \n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value) \n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\t\t\t\t\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart = source.indexOf('',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\t\t\t\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos = source.lastIndexOf('')\n\t\tif(pos',start+4);\n\t\t\t//append comment source.substring(4,end)//\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i\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$1 from 'global/window';\nimport document from 'global/document';\nimport _extends from '@babel/runtime/helpers/extends';\nimport keycode from 'keycode';\nimport _assertThisInitialized from '@babel/runtime/helpers/assertThisInitialized';\nimport _inheritsLoose from '@babel/runtime/helpers/inheritsLoose';\nimport safeParseTuple from 'safe-json-parse/tuple';\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 { isArrayBufferView, concatTypedArrays, stringToBytes, toUint8 } from '@videojs/vhs-utils/es/byte-helpers';\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 { ONE_SECOND_IN_TS } from 'mux.js/lib/utils/clock';\n\nvar version$5 = \"7.20.3\";\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$1.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$1.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$1.console.info || window$1.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$1.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$1.getComputedStyle === 'function') {\n var computedStyleValue;\n\n try {\n computedStyleValue = window$1.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$1.navigator && window$1.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$1 || window$1.navigator.maxTouchPoints || window$1.DocumentTouch && window$1.document instanceof window$1.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$1.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$1.parent !== window$1.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$1.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$1.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$1.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$1.WeakMap) {\n FakeWeakMap = /*#__PURE__*/function () {\n function FakeWeakMap() {\n this.vdata = 'vdata' + Math.floor(window$1.performance && window$1.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$1.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$1.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 // Lighthouse complains if Event.path is copied\n if (key !== 'layerX' && key !== 'layerY' && key !== 'keyLocation' && key !== 'webkitMovementX' && key !== 'webkitMovementY' && key !== 'path') {\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$1.addEventListener('test', null, opts);\n window$1.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$1.performance.now();\n\n var throttled = function throttled() {\n var now = window$1.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$1;\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$1.clearTimeout(oldTimeout);\n var timeout = window$1.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$1.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$1.Map ? window$1.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$1 = window$1.Set ? window$1.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 component 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 {string} [options.className]\n * A class or space separated list of classes to add the component\n *\n * @param {Component~ReadyCallback} [ready]\n * Function that gets called when the `Component` is ready.\n */\n function Component(player, options, ready) {\n var _this = this;\n\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 }\n\n if (options.className && this.el_) {\n options.className.split(' ').forEach(function (c) {\n return _this.addClass(c);\n });\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$1();\n this.setIntervalIds_ = new Set$1();\n this.rafIds_ = new Set$1();\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 * @param {Object} options\n * @param {Element} options.originalEl element with which to replace player element\n */\n\n\n var _proto = Component.prototype;\n\n _proto.dispose = function dispose(options) {\n if (options === void 0) {\n options = {};\n }\n\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 if (options.restoreEl) {\n this.el_.parentNode.replaceChild(options.restoreEl, this.el_);\n } else {\n this.el_.parentNode.removeChild(this.el_);\n }\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 _this2 = 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 = _this2.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 = _this2.addChild(name, opts);\n\n if (newChild) {\n _this2[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] || _this2.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. Exclude Tab for focus trapping.\n if (!keycode.isEventKey(event, 'Tab')) {\n event.stopPropagation();\n }\n\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$1.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$1.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 _this3 = 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$1.setTimeout(function () {\n if (_this3.setTimeoutIds_.has(timeoutId)) {\n _this3.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$1.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$1.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$1.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 _this4 = 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$1.requestAnimationFrame(function () {\n if (_this4.rafIds_.has(id)) {\n _this4.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 _this5 = 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 (_this5.namedRafs_.has(name)) {\n _this5.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$1.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 _this6 = 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 _this6[idName].forEach(function (val, key) {\n return _this6[cancelName](key);\n });\n });\n _this6.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 ;\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$1.requestAnimationFrame === 'function' && typeof window$1.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$1.Symbol && window$1.Symbol.iterator) {\n timeRangesObj[window$1.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$1.HTMLAnchorElement || child instanceof window$1.HTMLAreaElement) && child.hasAttribute('href') || (child instanceof window$1.HTMLInputElement || child instanceof window$1.HTMLSelectElement || child instanceof window$1.HTMLTextAreaElement || child instanceof window$1.HTMLButtonElement) && !child.hasAttribute('disabled') || child instanceof window$1.HTMLIFrameElement || child instanceof window$1.HTMLObjectElement || child instanceof window$1.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$1.location.protocol;\n }\n /* istanbul ignore if */\n\n\n if (!details.host) {\n details.host = window$1.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$1.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$1.WebVTT.Parser(window$1, window$1.vttjs, window$1.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$1.console && window$1.console.groupCollapsed) {\n window$1.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$1.console && window$1.console.groupEnd) {\n window$1.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$1.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 _this.timeupdateHandler = bind(_assertThisInitialized(_this), function (event) {\n if (event === void 0) {\n event = {};\n }\n\n if (this.tech_.isDisposed()) {\n return;\n }\n\n if (!this.tech_.isReady_) {\n if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n\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 if (event.type !== 'timeupdate') {\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler);\n }\n });\n\n var disposeHandler = function disposeHandler() {\n _this.stopTracking();\n };\n\n _this.tech_.one('dispose', disposeHandler);\n\n if (mode !== 'disabled') {\n _this.startTracking();\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.stopTracking();\n\n if (mode !== 'disabled') {\n this.startTracking();\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 var _proto = TextTrack.prototype;\n\n _proto.startTracking = function startTracking() {\n // More precise cues based on requestVideoFrameCallback with a requestAnimationFram fallback\n this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler); // Also listen to timeupdate in case rVFC/rAF stops (window in background, audio in video el)\n\n this.tech_.on('timeupdate', this.timeupdateHandler);\n };\n\n _proto.stopTracking = function stopTracking() {\n if (this.rvf_) {\n this.tech_.cancelVideoFrameCallback(this.rvf_);\n this.rvf_ = undefined;\n }\n\n this.tech_.off('timeupdate', this.timeupdateHandler);\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 _proto.addCue = function addCue(originalCue) {\n var cue = originalCue;\n\n if (window$1.vttjs && !(originalCue instanceof window$1.vttjs.VTTCue)) {\n cue = new window$1.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 * 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 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 };\n\n _this.queuedHanders_ = new Set(); // keep track of whether the current source has played at all to\n // implement a very limited played()\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$1.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$1.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$1.Promise;\n\n if (PromiseClass) {\n return PromiseClass.reject();\n }\n }\n /**\n * A method to check for the value of the 'disablePictureInPicture'