PageSourceSearch

https://www.is.fi/_next/static/chunks/0c9351ce.ab9d4b85cbafc005.js

js is.fi collected 2026-09-24 08:36:55 UTC 576,016 bytes, 29 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7714],{84170:(i,r,s)=>{s.d(r,{default:()=>on});var a,n,l,o,h,d,u,f,c,g,m=Number.isFinite||function(i){return"number"==typeof i&&isFinite(i)},p=Number.isSafeInteger||function(i){return"number"==typeof i&&Math.abs(i)<=v},v=0x20000000000000-1,y=((u={}).NETWORK_ERROR="networkError",u.MEDIA_ERROR="mediaError",u.KEY_SYSTEM_ERROR="keySystemError",u.MUX_ERROR="muxError",u.OTHER_ERROR="otherError",u),E=((f={}).KEY_SYSTEM_NO_KEYS="keySystemNoKeys",f.KEY_SYSTEM_NO_ACCESS="keySystemNoAccess",f.KEY_SYSTEM_NO_SESSION="keySystemNoSession",f.KEY_SYSTEM_NO_CONFIGURED_LICENSE="keySystemNoConfiguredLicense",f.KEY_SYSTEM_LICENSE_REQUEST_FAILED="keySystemLicenseRequestFailed",f.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED="keySystemServerCertificateRequestFailed",f.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED="keySystemServerCertificateUpdateFailed",f.KEY_SYSTEM_SESSION_UPDATE_FAILED="keySystemSessionUpdateFailed",f.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED="keySystemStatusOutputRestricted",f.KEY_SYSTEM_STATUS_INTERNAL_ERROR="keySystemStatusInternalError",f.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR="keySystemDestroyMediaKeysError",f.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR="keySystemDestroyCloseSessionError",f.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR="keySystemDestroyRemoveSessionError",f.MANIFEST_LOAD_ERROR="manifestLoadError",f.MANIFEST_LOAD_TIMEOUT="manifestLoadTimeOut",f.MANIFEST_PARSING_ERROR="manifestParsingError",f.MANIFEST_INCOMPATIBLE_CODECS_ERROR="manifestIncompatibleCodecsError",f.LEVEL_EMPTY_ERROR="levelEmptyError",f.PLAYLIST_UNCHANGED_ERROR="playlistUnchangedError",f.LEVEL_LOAD_ERROR="levelLoadError",f.LEVEL_LOAD_TIMEOUT="levelLoadTimeOut",f.LEVEL_PARSING_ERROR="levelParsingError",f.LEVEL_SWITCH_ERROR="levelSwitchError",f.AUDIO_TRACK_LOAD_ERROR="audioTrackLoadError",f.AUDIO_TRACK_LOAD_TIMEOUT="audioTrackLoadTimeOut",f.SUBTITLE_LOAD_ERROR="subtitleTrackLoadError",f.SUBTITLE_TRACK_LOAD_TIMEOUT="subtitleTrackLoadTimeOut",f.FRAG_LOAD_ERROR="fragLoadError",f.FRAG_LOAD_TIMEOUT="fragLoadTimeOut",f.FRAG_DECRYPT_ERROR="fragDecryptError",f.FRAG_PARSING_ERROR="fragParsingError",f.FRAG_GAP="fragGap",f.REMUX_ALLOC_ERROR="remuxAllocError",f.KEY_LOAD_ERROR="keyLoadError",f.KEY_LOAD_TIMEOUT="keyLoadTimeOut",f.BUFFER_ADD_CODEC_ERROR="bufferAddCodecError",f.BUFFER_INCOMPATIBLE_CODECS_ERROR="bufferIncompatibleCodecsError",f.BUFFER_APPEND_ERROR="bufferAppendError",f.BUFFER_APPENDING_ERROR="bufferAppendingError",f.BUFFER_APPEND_NO_PROGRESS="bufferAppendNoProgress",f.BUFFER_STALLED_ERROR="bufferStalledError",f.BUFFER_FULL_ERROR="bufferFullError",f.BUFFER_SEEK_OVER_HOLE="bufferSeekOverHole",f.BUFFER_NUDGE_ON_STALL="bufferNudgeOnStall",f.ASSET_LIST_LOAD_ERROR="assetListLoadError",f.ASSET_LIST_LOAD_TIMEOUT="assetListLoadTimeout",f.ASSET_LIST_PARSING_ERROR="assetListParsingError",f.INTERSTITIAL_ASSET_ITEM_ERROR="interstitialAssetItemError",f.INTERNAL_EXCEPTION="internalException",f.INTERNAL_ABORTED="aborted",f.ATTACH_MEDIA_ERROR="attachMediaError",f.MEDIA_SOURCE_REQUIRES_RESET="mediaSourceRequiresReset",f.UNKNOWN="unknown",f),T=((c={}).MEDIA_ATTACHING="hlsMediaAttaching",c.MEDIA_ATTACHED="hlsMediaAttached",c.MEDIA_DETACHING="hlsMediaDetaching",c.MEDIA_DETACHED="hlsMediaDetached",c.MEDIA_ENDED="hlsMediaEnded",c.STALL_RESOLVED="hlsStallResolved",c.BUFFER_RESET="hlsBufferReset",c.BUFFER_CODECS="hlsBufferCodecs",c.BUFFER_CREATED="hlsBufferCreated",c.BUFFER_APPENDING="hlsBufferAppending",c.BUFFER_APPENDED="hlsBufferAppended",c.BUFFER_EOS="hlsBufferEos",c.BUFFERED_TO_END="hlsBufferedToEnd",c.BUFFER_FLUSHING="hlsBufferFlushing",c.BUFFER_FLUSHED="hlsBufferFlushed",c.MANIFEST_LOADING="hlsManifestLoading",c.MANIFEST_LOADED="hlsManifestLoaded",c.MANIFEST_PARSED="hlsManifestParsed",c.LEVEL_SWITCHING="hlsLevelSwitching",c.LEVEL_SWITCHED="hlsLevelSwitched",c.LEVEL_LOADING="hlsLevelLoading",c.LEVEL_LOADED="hlsLevelLoaded",c.LEVEL_UPDATED="hlsLevelUpdated",c.LEVEL_PTS_UPDATED="hlsLevelPtsUpdated",c.LEVELS_UPDATED="hlsLevelsUpdated",c.AUDIO_TRACKS_UPDATED="hlsAudioTracksUpdated",c.AUDIO_TRACK_SWITCHING="hlsAudioTrackSwitching",c.AUDIO_TRACK_SWITCHED="hlsAudioTrackSwitched",c.AUDIO_TRACK_LOADING="hlsAudioTrackLoading",c.AUDIO_TRACK_LOADED="hlsAudioTrackLoaded",c.AUDIO_TRACK_UPDATED="hlsAudioTrackUpdated",c.SUBTITLE_TRACKS_UPDATED="hlsSubtitleTracksUp
1dated",c.SUBTITLE_TRACKS_CLEARED="hlsSubtitleTracksCleared",c.SUBTITLE_TRACK_SWITCH="hlsSubtitleTrackSwitch",c.SUBTITLE_TRACK_LOADING="hlsSubtitleTrackLoading",c.SUBTITLE_TRACK_LOADED="hlsSubtitleTrackLoaded",c.SUBTITLE_TRACK_UPDATED="hlsSubtitleTrackUpdated",c.SUBTITLE_FRAG_PROCESSED="hlsSubtitleFragProcessed",c.CUES_PARSED="hlsCuesParsed",c.NON_NATIVE_TEXT_TRACKS_FOUND="hlsNonNativeTextTracksFound",c.INIT_PTS_FOUND="hlsInitPtsFound",c.FRAG_LOADING="hlsFragLoading",c.FRAG_LOAD_EMERGENCY_ABORTED="hlsFragLoadEmergencyAborted",c.FRAG_LOADED="hlsFragLoaded",c.FRAG_DECRYPTED="hlsFragDecrypted",c.FRAG_PARSING_INIT_SEGMENT="hlsFragParsingInitSegment",c.FRAG_PARSING_USERDATA="hlsFragParsingUserdata",c.FRAG_PARSING_METADATA="hlsFragParsingMetadata",c.FRAG_PARSED="hlsFragParsed",c.FRAG_BUFFERED="hlsFragBuffered",c.FRAG_CHANGED="hlsFragChanged",c.FPS_DROP="hlsFpsDrop",c.FPS_DROP_LEVEL_CAPPING="hlsFpsDropLevelCapping",c.MAX_AUTO_LEVEL_UPDATED="hlsMaxAutoLevelUpdated",c.ERROR="hlsError",c.DESTROYING="hlsDestroying",c.KEY_LOADING="hlsKeyLoading",c.KEY_LOADED="hlsKeyLoaded",c.LIVE_BACK_BUFFER_REACHED="hlsLiveBackBufferReached",c.BACK_BUFFER_REACHED="hlsBackBufferReached",c.STEERING_MANIFEST_LOADED="hlsSteeringManifestLoaded",c.ASSET_LIST_LOADING="hlsAssetListLoading",c.ASSET_LIST_LOADED="hlsAssetListLoaded",c.INTERSTITIALS_UPDATED="hlsInterstitialsUpdated",c.INTERSTITIALS_BUFFERED_TO_BOUNDARY="hlsInterstitialsBufferedToBoundary",c.INTERSTITIAL_ASSET_PLAYER_CREATED="hlsInterstitialAssetPlayerCreated",c.INTERSTITIAL_STARTED="hlsInterstitialStarted",c.INTERSTITIAL_ASSET_STARTED="hlsInterstitialAssetStarted",c.INTERSTITIAL_ASSET_ENDED="hlsInterstitialAssetEnded",c.INTERSTITIAL_ASSET_ERROR="hlsInterstitialAssetError",c.INTERSTITIAL_ENDED="hlsInterstitialEnded",c.INTERSTITIALS_PRIMARY_RESUMED="hlsInterstitialsPrimaryResumed",c.PLAYOUT_LIMIT_REACHED="hlsPlayoutLimitReached",c.EVENT_CUE_ENTER="hlsEventCueEnter",c),S={exports:{}},A=(g||(g=1,a=/^(?=((?:[a-zA-Z0-9+\-.]+:)?))\1(?=((?:\/\/[^\/?#]*)?))\2(?=((?:(?:[^?#\/]*\/)*[^;?#\/]*)?))\3((?:;[^?#]*)?)(\?[^#]*)?(#[^]*)?$/,n=/^(?=([^\/?#]*))\1([^]*)$/,l=/(?:\/|^)\.(?=\/)/g,o=/(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g,S.exports=h={buildAbsoluteURL:function(i,r,s){if(s=s||{},i=i.trim(),!(r=r.trim())){if(!s.alwaysNormalize)return i;var a=h.parseURL(i);if(!a)throw Error("Error trying to parse base URL.");return a.path=h.normalizePath(a.path),h.buildURLFromParts(a)}var l=h.parseURL(r);if(!l)throw Error("Error trying to parse relative URL.");if(l.scheme)return s.alwaysNormalize?(l.path=h.normalizePath(l.path),h.buildURLFromParts(l)):r;var o=h.parseURL(i);if(!o)throw Error("Error trying to parse base URL.");if(!o.netLoc&&o.path&&"/"!==o.path[0]){var d=n.exec(o.path);o.netLoc=d[1],o.path=d[2]}o.netLoc&&!o.path&&(o.path="/");var u={scheme:o.scheme,netLoc:l.netLoc,path:null,params:l.params,query:l.query,fragment:l.fragment};if(!l.netLoc&&(u.netLoc=o.netLoc,"/"!==l.path[0]))if(l.path){var f=o.path,c=f.substring(0,f.lastIndexOf("/")+1)+l.path;u.path=h.normalizePath(c)}else u.path=o.path,l.params||(u.params=o.params,l.query||(u.query=o.query));return null===u.path&&(u.path=s.alwaysNormalize?h.normalizePath(l.path):l.path),h.buildURLFromParts(u)},parseURL:function(i){var r=a.exec(i);return r?{scheme:r[1]||"",netLoc:r[2]||"",path:r[3]||"",params:r[4]||"",query:r[5]||"",fragment:r[6]||""}:null},normalizePath:function(i){for(i=i.split("").reverse().join("").replace(l,"");i.length!==(i=i.replace(o,"")).length;);return i.split("").reverse().join("")},buildURLFromParts:function(i){return i.scheme+i.netLoc+i.path+i.params+i.query+i.fragment}}),S.exports),L=class{constructor(){this.aborted=!1,this.loaded=0,this.retry=0,this.total=0,this.chunkCount=0,this.bwEstimate=0,this.loading={start:0,first:0,end:0},this.parsing={start:0,end:0},this.buffering={start:0,first:0,end:0}}},R=((tb={}).MANIFEST="manifest",tb.LEVEL="level",tb.AUDIO_TRACK="audioTrack",tb.SUBTITLE_TRACK="subtitleTrack",tb.MEDIA_FRAGMENT="media-fragment",tb.KEY="key",tb.STEERING_MANIFEST="steering-manifest",tb.SERVER_CERTIFICATE="server-certificate",tb.INTERSTITIAL_ASSET_LIST="interstitial-asset-list",tb),b=((tI={}).MAIN="main",tI.AUDIO="audio",tI.SUBTITLE="subtitle",tI),I="audio",k="video",D="audiovideo",P=class{constructor(i){this._byteRange=null,this._url=null,this._stats=null,this._streams=null,this.base=void 0,this.relurl=void 0,"string"==typeof i&&(i={url:i}),this.base=i,function(i,r){let s=function i(r,s){let a=Object.getPrototypeOf(r);if(a)return Object.getOwnPropertyDescriptor(a,s)||i(a,s)}(i,r);s&&(s.enumerable=!0,Object.defineProperty(i,r,s))}(this,"stats")}
1setByteRange(i,r){let s=i.split("@",2),a;a=1===s.length?(null==r?void 0:r.byteRangeEndOffset)||0:parseInt(s[1]),this._byteRange=[a,parseInt(s[0])+a]}get baseurl(){return this.base.url}get byteRange(){return null===this._byteRange?[]:this._byteRange}get byteRangeStartOffset(){return this.byteRange[0]}get byteRangeEndOffset(){return this.byteRange[1]}get elementaryStreams(){return null===this._streams&&(this._streams={[I]:null,[k]:null,[D]:null}),this._streams}set elementaryStreams(i){this._streams=i}get hasStats(){return null!==this._stats}get hasStreams(){return null!==this._streams}get stats(){return null===this._stats&&(this._stats=new L),this._stats}set stats(i){this._stats=i}get url(){return!this._url&&this.relurl&&(this._url=A.buildAbsoluteURL(this.baseurl,this.relurl,{alwaysNormalize:!0})),this._url||""}set url(i){this._url=i}clearElementaryStreamInfo(){let{elementaryStreams:i}=this;i[I]=null,i[k]=null,i[D]=null,this.url=null}};function _(i){return"initSegment"!==i.sn}function C(i,r){return i.sn===(null==r?void 0:r.sn)&&i.level===r.level}function x(i,r){return i.sn===(null==r?void 0:r.sn)&&i.level===r.level&&i.cc===r.cc}var w=class extends P{constructor(i,r){super(r),this._decryptdata=null,this._programDateTime=null,this._ref=null,this._bitrate=void 0,this.rawProgramDateTime=null,this.tagList=[],this.duration=0,this.sn=0,this.levelkeys=void 0,this.type=void 0,this.loader=null,this.keyLoader=null,this.level=-1,this.cc=0,this.startPTS=void 0,this.endPTS=void 0,this.startDTS=void 0,this.endDTS=void 0,this.start=0,this.playlistOffset=0,this.deltaPTS=void 0,this.maxStartPTS=void 0,this.minEndPTS=void 0,this.data=void 0,this.bitrateTest=!1,this.title=null,this.initSegment=null,this.endList=void 0,this.gap=void 0,this.urlId=0,this.type=i}get byteLength(){if(this.hasStats){let i=this.stats.total;if(i)return i}if(this.byteRange.length){let i=this.byteRange[0],r=this.byteRange[1];if(m(i)&&m(r))return r-i}return null}get bitrate(){return this.byteLength?8*this.byteLength/this.duration:this._bitrate?this._bitrate:null}set bitrate(i){this._bitrate=i}get decryptdata(){var i;let{levelkeys:r}=this;if(!r||r.NONE)return null;if(r.identity)this._decryptdata||(this._decryptdata=r.identity.getDecryptData(this.sn));else if(!(null!=(i=this._decryptdata)&&i.keyId)){let i=Object.keys(r);if(1===i.length){let s=this._decryptdata=r[i[0]]||null;s&&(this._decryptdata=s.getDecryptData(this.sn,r))}}return this._decryptdata}get end(){return this.start+this.duration}get endProgramDateTime(){if(null===this.programDateTime)return null;let i=m(this.duration)?this.duration:0;return this.programDateTime+1e3*i}get encrypted(){var i,r;if(null!=(i=this._decryptdata)&&i.encrypted)return!0;if(this.levelkeys){let i=Object.keys(this.levelkeys),s=i.length;if(s>1||1===s&&null!=(r=this.levelkeys[i[0]])&&r.encrypted)return!0}return!1}get programDateTime(){return null===this._programDateTime&&this.rawProgramDateTime&&(this.programDateTime=Date.parse(this.rawProgramDateTime)),this._programDateTime}set programDateTime(i){if(!m(i)){this._programDateTime=this.rawProgramDateTime=null;return}this._programDateTime=i}get ref(){return _(this)?(this._ref||(this._ref={base:this.base,start:this.start,duration:this.duration,sn:this.sn,programDateTime:this.programDateTime}),this._ref):null}addStart(i){this.setStart(this.start+i)}setStart(i){this.start=i,this._ref&&(this._ref.start=i)}setDuration(i){this.duration=i,this._ref&&(this._ref.duration=i)}setKeyFormat(i){let r=this.levelkeys;if(r){var s;let a=r[i];a&&!(null!=(s=this._decryptdata)&&s.keyId)&&(this._decryptdata=a.getDecryptData(this.sn,r))}}abortRequests(){var i,r;null==(i=this.loader)||i.abort(),null==(r=this.keyLoader)||r.abort()}setElementaryStreamInfo(i,r,s,a,n,l=!1){let{elementaryStreams:o}=this,h=o[i];if(!h){o[i]={startPTS:r,endPTS:s,startDTS:a,endDTS:n,partial:l};return}h.startPTS=Math.min(h.startPTS,r),h.endPTS=Math.max(h.endPTS,s),h.startDTS=Math.min(h.startDTS,a),h.endDTS=Math.max(h.endDTS,n)}},M=class extends P{constructor(i,r,s,a,n){super(s),this.fragOffset=0,this.duration=0,this.independent=!1,this.relurl=void 0,this.fragment=void 0,this.index=void 0,this.gap=!1,this.duration=i.decimalFloatingPoint("DURATION"),this.gap=i.bool("GAP"),this.independent=i.bool("INDEPENDENT"),this.relurl=i.enumeratedString("URI"),this.fragment=r,this.index=a;let l=i.enumeratedString("BYTERANGE");l&&this.setByteRange(l,n),n&&(this.fragOffset=n.fragOffset+n.duration)}get start(){return this.fragment.start+this.fragOffset}get end(){return this.start+this.duration}get loaded(){let{elementaryStreams:i}=this;return!!(i.audio||i.video||i.audiovideo||this.fragment.type===b.SUBTITLE&&this.stats.loading.end>0)}};function O(){return(O=Object.assign?Object.assign.bind():function(i){for(var r=1;r<arguments.length;r++){var s=arguments[r];for(var a in s)({}).hasOwnProperty.call(s,a)&&(i[a]=s[a])}return i}).apply(null,arguments)}function F(i,r){var s=Object.keys(i);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(i);r&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(i,r).enumerable})),s.push.apply(s,a)}return s}function $(i){for(var r=1;r<arguments.length;r++){var s=null==arguments[r]?{}:arguments[r];
1r%2?F(Object(s),!0).forEach(function(r){var a,n;a=r,n=s[r],(a=function(i){var r=function(i,r){if("object"!=typeof i||!i)return i;var s=i[Symbol.toPrimitive];if(void 0!==s){var a=s.call(i,r);if("object"!=typeof a)return a;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(i)}(i,"string");return"symbol"==typeof r?r:r+""}(a))in i?Object.defineProperty(i,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):i[a]=n}):Object.getOwnPropertyDescriptors?Object.defineProperties(i,Object.getOwnPropertyDescriptors(s)):F(Object(s)).forEach(function(r){Object.defineProperty(i,r,Object.getOwnPropertyDescriptor(s,r))})}return i}function B(i,r){if(null==i)return{};var s,a,n=function(i,r){if(null==i)return{};var s={};for(var a in i)if(({}).hasOwnProperty.call(i,a)){if(-1!==r.indexOf(a))continue;s[a]=i[a]}return s}(i,r);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(i);for(a=0;a<l.length;a++)s=l[a],-1===r.indexOf(s)&&({}).propertyIsEnumerable.call(i,s)&&(n[s]=i[s])}return n}function U(i){switch(i.details){case E.FRAG_LOAD_TIMEOUT:case E.KEY_LOAD_TIMEOUT:case E.LEVEL_LOAD_TIMEOUT:case E.MANIFEST_LOAD_TIMEOUT:case E.AUDIO_TRACK_LOAD_TIMEOUT:case E.SUBTITLE_TRACK_LOAD_TIMEOUT:case E.ASSET_LIST_LOAD_TIMEOUT:return!0}return!1}function N(i){return i.details.startsWith("key")}function G(i){return N(i)&&!!i.frag&&!i.frag.decryptdata}function K(i,r){let s=U(r);return i.default[`${s?"timeout":"error"}Retry`]}function H(i,r){return Math.min(("linear"===i.backoff?1:2**r)*i.retryDelayMs,i.maxRetryDelayMs)}function V(i){return $($({},i),{errorRetry:null,timeoutRetry:null})}function j(i,r,s,a){var n;if(!i)return!1;let l=null==a?void 0:a.code,o=r<i.maxNumRetry&&(q(n=l)||!!n&&(n<400||n>499)||!!s);return i.shouldRetry?i.shouldRetry(i,r,s,a,o):o}function q(i){return 0===i&&!1===navigator.onLine}function W(i,r){return r>0&&i.loadError>0&&0!==i.loadErrorTime&&self.performance.now()-i.loadErrorTime>r}var Y=class{constructor(i,r=0,s=0){this.halfLife=void 0,this.alpha_=void 0,this.estimate_=void 0,this.totalWeight_=void 0,this.halfLife=i,this.alpha_=i?Math.exp(Math.log(.5)/i):0,this.estimate_=r,this.totalWeight_=s}sample(i,r){let s=this.alpha_**i;this.estimate_=r*(1-s)+s*this.estimate_,this.totalWeight_+=i}getTotalWeight(){return this.totalWeight_}getEstimate(){if(this.alpha_){let i=1-this.alpha_**this.totalWeight_;if(i)return this.estimate_/i}return this.estimate_}},z=class{constructor(i,r,s,a=100){this.defaultEstimate_=void 0,this.minWeight_=void 0,this.minDelayMs_=void 0,this.slow_=void 0,this.fast_=void 0,this.defaultTTFB_=void 0,this.ttfb_=void 0,this.defaultEstimate_=s,this.minWeight_=.001,this.minDelayMs_=50,this.slow_
1=new Y(i),this.fast_=new Y(r),this.defaultTTFB_=a,this.ttfb_=new Y(i)}update(i,r){let{slow_:s,fast_:a,ttfb_:n}=this;s.halfLife!==i&&(this.slow_=new Y(i,s.getEstimate(),s.getTotalWeight())),a.halfLife!==r&&(this.fast_=new Y(r,a.getEstimate(),a.getTotalWeight())),n.halfLife!==i&&(this.ttfb_=new Y(i,n.getEstimate(),n.getTotalWeight()))}sample(i,r){if(r<=0)return;let s=Math.max(i,Math.min(this.minDelayMs_,r/1e5))/1e3,a=8*r/s;this.fast_.sample(s,a),this.slow_.sample(s,a)}sampleTTFB(i){let r=Math.sqrt(2)*Math.exp(-((i/1e3)**2)/2);this.ttfb_.sample(r,Math.max(i,5))}canEstimate(){return this.fast_.getTotalWeight()>=this.minWeight_}getEstimate(){return this.canEstimate()?Math.min(this.fast_.getEstimate(),this.slow_.getEstimate()):this.defaultEstimate_}getEstimateTTFB(){return this.ttfb_.getTotalWeight()>=this.minWeight_?this.ttfb_.getEstimate():this.defaultTTFB_}get defaultEstimate(){return this.defaultEstimate_}destroy(){}},X=class{constructor(i,r){this.trace=void 0,this.debug=void 0,this.log=void 0,this.warn=void 0,this.info=void 0,this.error=void 0;let s=`[${i}]:`;this.trace=Q,this.debug=r.debug.bind(null,s),this.log=r.log.bind(null,s),this.warn=r.warn.bind(null,s),this.info=r.info.bind(null,s),this.error=r.error.bind(null,s)}},Q=function(){},Z={trace:Q,debug:Q,log:Q,warn:Q,info:Q,error:Q};function J(){return O({},Z)}function ee(i,r,s){let a;return r[i]?r[i].bind(r):(a=self.console[i])?a.bind(self.console,`${s?"["+s+"] ":""}[${i}] >`):Q}var et=J();function ei(i=!0){if(!(typeof self>"u"))return(i||!self.MediaSource)&&self.ManagedMediaSource||self.MediaSource||self.WebKitMediaSource}function er(i,r){let s=Object.keys(i),a=Object.keys(r),n=s.length,l=a.length;return!n||!l||n===l&&!s.some(i=>-1===a.indexOf(i))}function es(i){return i instanceof ArrayBuffer||"u">typeof SharedArrayBuffer&&i instanceof SharedArrayBuffer}var ea="utf-16be",en="utf-16le",el="utf-8";function eo(){try{return crypto.randomUUID()}catch{try{let i=URL.createObjectURL(new Blob),r=i.toString();return URL.revokeObjectURL(i),r.slice(r.lastIndexOf("/")+1)}catch{let i=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,r=>{let s=(i+16*Math.random())%16|0;return i=Math.floor(i/16),("x"==r?s:3&s|8).toString(16)})}}}function eh(i,r){return r+10<=i.length&&73===i[r]&&68===i[r+1]&&51===i[r+2]&&i[r+3]<255&&i[r+4]<255&&i[r+6]<128&&i[r+7]<128&&i[r+8]<128&&i[r+9]<128}function ed(i,r){return(127&i[r])<<21|(127&i[r+1])<<14|(127&i[r+2])<<7|127&
1i[r+3]}function eu(i,r){return r+10<=i.length&&51===i[r]&&68===i[r+1]&&73===i[r+2]&&i[r+3]<255&&i[r+4]<255&&i[r+6]<128&&i[r+7]<128&&i[r+8]<128&&i[r+9]<128}function ef(i,r){let s=r,a=0;for(;eh(i,r);)a+=10,a+=ed(i,r+6),eu(i,r+10)&&(a+=10),r+=a;if(a>0)return i.subarray(s,s+a)}function ec(i,r=0,s=1/0){var a,n,l,o,h,d;let u,f,c,g,m;return a=i,n=r,l=s,o=Uint8Array,u=es(h=a)?h:h.buffer,f=1,"BYTES_PER_ELEMENT"in o&&(f=o.BYTES_PER_ELEMENT),g=((c=(d=a)&&es(d.buffer)&&void 0!==d.byteLength&&void 0!==d.byteOffset?a.byteOffset:0)+a.byteLength)/f,new o(u,m=Math.floor(Math.max(0,Math.min((c+n)/f,g))),Math.floor(Math.min(m+Math.max(l,0),g))-m)}function eg(i,r=!1){let s=r?i.indexOf(0):i.length,a=function(i,r={}){let s;s=es(i)?new DataView(i):new DataView(i.buffer,i.byteOffset,i.byteLength);let a=0,{encoding:n}=r;if(!n){let i=s.getUint8(0),r=s.getUint8(1);239==i&&187==r&&191==s.getUint8(2)?(n=el,a=3):254==i&&255==r?(n=ea,a=2):255==i&&254==r?(n=en,a=2):n=el}if("u">typeof TextDecoder)return new TextDecoder(n).decode(s);let{byteLength:l}=s,o=n!==ea,h="",d;for(;a<l;){switch(n){case el:if((d=s.getUint8(a))<128)a++;else if(d>=194&&d<=223)if(a+1<l){let i=s.getUint8(a+1);i>=128&&i<=191?(d=(31&d)<<6|63&i,a+=2):a++}else a++;else if(d>=224&&d<=239)if(a+2<=l-1){let i=s.getUint8(a+1),r=s.getUint8(a+2);i>=128&&i<=191&&r>=128&&r<=191?(d=(15&d)<<12|(63&i)<<6|63&r,a+=3):a++}else a++;else if(d>=240&&d<=244)if(a+3<=l-1){let i=s.getUint8(a+1),r=s.getUint8(a+2),n=s.getUint8(a+3);i>=128&&i<=191&&r>=128&&r<=191&&n>=128&&n<=191?(d=(7&d)<<18|(63&i)<<12|(63&r)<<6|63&n,a+=4):a++}else a++;else a++;break;case ea:case"utf-16":case en:d=s.getUint16(a,o),a+=2}h+=String.fromCodePoint(d)}return h}(new DataView(i.buffer,i.byteOffset,s),{encoding:el});return r?a:a.replace(/\0/g,"")}function em(i){let r=0,s=[];for(;eh(i,r);){let a=ed(i,r+6);i[r+5]>>6&1&&(r+=10);let n=(r+=10)+a;for(;r+10<n;){let a=function(i){let r=String.fromCharCode(i[0],i[1],i[2],i[3]),s=ed(i,4);return{type:r,size:s,data:i.subarray(10,10+s)}}(i.subarray(r)),n="PRIV"===a.type?function(i){if(i.size<2)return;let r=eg(i.data,!0),s=new Uint8Array(i.data.subarray(r.length+1));return{key:i.type,info:r,data:s.buffer}}(a):"W"===a.type[0]?function(i){if("WXXX"===i.type){if(i.size<2)return;let r=1,s=eg(i.data.subarray(r),!0);r+=s.length+1;let a=eg(i.data.subarray(r));return{key:i.type,info:s,data:a}}let r=eg(i.data);return{key:i.type,info:"",data:r}}(a):"APIC"===a.type?function(i){var r;let s={key:i.type,description:"",data:"",mimeType:null,pictureType:null};if(i.size<2)return;if(3!==i.data[0])return void console.log("Ignore frame with unrecognized character encoding");let a=i.data.subarray(1).indexOf(0);if(-1===a)return;let n=eg(ec(i.data,1,a)),l=i.data[2+a],o=i.data.subarray(3+a).indexOf(0);if(-1===o)return;let h=eg(ec(i.data,3+a,o)),d;return d="--\x3e"===n?eg(ec(i.data,4+a+o)):es(r=i.data.subarray(4+a+o))?r:0==r.byteOffset&&r.byteLength==r.buffer.byteLength?r.buffer:new Uint8Array(r).buffer,s.mimeType=n,s.pictureType=l,s.description=h,s.data=d,s}(a):function(i){if(i.size<2)return;if("TXXX"===i.type){let r=1,{data:s}=i,a=eg(s.subarray(r),!0);r+=a.length+1;let n=eg(s.subarray(r));return{key:i.type,info:a,data:n}}let r=eg(i.data.subarray(1));return{key:i.type,info:"",data:r}}(a);n&&s.push(n),r+=a.size+10}eu(i,r)&&(r+=10)}return s}function ep(i){return i&&"PRIV"===i.key&&"com.apple.streaming.transportStreamTimestamp"===i.info}function ev(i){for(let r of em(i))if(ep(r))return function(i){if(8===i.data.byteLength){let r=new Uint8Array(i.data),s=1&r[3],a=(r[4]<<23)+(r[5]<<15)+(r[6]<<7)+r[7];return a/=45,s&&(a+=47721858.84),Math.round(a)}}(r)}function ey(i){let r="";for(let s=0;s<i.length;s++){let a=i[s].toString(16);a.length<2&&(a="0"+a),r+=a}return r}function eE(i){return Uint8Array.from(i.replace(/^0x/,"").replace(/([\da-fA-F]{2}) ?/g,"0x$1 ").replace(/ +$/,"").split(" ")).buffer}function eT(i){return Uint8Array.from(atob(i),i=>i.charCodeAt(0))}function eS(i){return String.fromCharCode.apply(null,i)}var eA=0x100000000-1,eL=0x61766331,eR=0x61766343,eb=0x68766331,eI=0x68766343,ek=0x62747274,eD=0x64696e66,eP=0x64726566,e_=0x65736473,eC=0x66726565,ex=0x66747970,ew=0x68646c72,eM=0x6d646174,eO=0x6d646864,eF=0x6d646961,e$=0x6d666864,eB=0x6d696e66,eU=0x6d6f6f66,eN=0x6d6f6f76,eG=0x6d703461,eK=0x2e6d7033,eH=0x64616333,eV=0x61632d33,ej=0x6d766578,eq=0x6d766864,eW=0x70617370,eY=0x73647470,ez=0x7374626c,eX=0x7374636f,eQ=0x73747363,eZ=0x73747364,eJ=0x7374737a,e0=0x73747473,e1=0x74666474,e2=0x74666864,e3=0x74726166,e4=0x7472616b,e8=0x7472756e,e5=0x74726578,e6=0x746b6864,e9=0x766d6864,e7=0x736d6864,te={video:1,audio:2,id3:3,text:4};function tt(i,r){let s=i[r]<<8|i[r+1];return s<0?65536+s:s}function ti(i,r){let s=i[r]<<24|i[r+1]<<16|i[r+2]<<8|i[r+3];return s<0?0x100000000+s:s}function tr(i,r){let s=ti(i,r);return s*=0x100000000,s+=ti(i,r+4)}function ts(i,r){let s="";for(let a=r;a<i.length;a++)if(s+=String.fromCharCode(i[a]),0===i[a])return s;return null}function ta(i,r){return i[r]<<24|i[r+1]<<16|i[r+2]<<8|i[r+3]}function tn(i,r,s){i[r]=s>>24,i[r+1]=s>>16&255,i[r+2]=s>>8&255,i[r+3]=255&s}function tl(i,r,s){let a=r.byteOffset-i.byteOffset-8,n=8+s,l=r.byteLength+8-n;l<8||(tn(i,a,n),tn(i,a+n,l),tn(i,a+n+4,eC))}function to(i,r){return[i.byteOffset-r-8,i.byteOffset-r+i.byteLength]}function th(i,r){r.sort((i,r)=>i[0]-r[0]);let s=r.reduce((i,[r,s])=>i+s-r,0),a=new Uint8Array(i.byteLength-s),n=0,l=0;for(let s=0;s<r.length;s++){let[o,h]=r[s];a.set(i.subarray(n,o),l),l+=o-n,n=h}return a.set(i.subarray(n),l),{result:a,dropped:s,droppedBefore:i=>r.reduce((r,[s,a])=>a<=i?r+a-s:r,0)}}function td(i,r){let s=[];return r.length&&function i(r,s,a,n,l,o){let h=s[a];if((null==h?void 0:h.length)!==4)return;
1let d=h.charCodeAt(0),u=h.charCodeAt(1),f=h.charCodeAt(2),c=h.charCodeAt(3),g=s.length-1;for(let h=n;h<l;){let n=h+8<=l,m=h+4<=l?0x1000000*r[h]+(r[h+1]<<16|r[h+2]<<8|r[h+3]):ti(r,h),p=m>1?h+m:l;if(n&&r[h+4]===d&&r[h+5]===u&&r[h+6]===f&&r[h+7]===c){let n=Math.min(p,l);a===g?o.push(r.subarray(h+8,n)):i(r,s,a+1,h+8,n,o)}h=p}}(i,r,0,0,i.byteLength,s),s}function tu(i){let r=[],s=td(i,["moov","trak"]);for(let i=0;i<s.length;i++){let a=s[i],n=td(a,["tkhd"])[0];if(n){let i=n[0],s=ti(n,0===i?12:20),l=td(a,["mdia","mdhd"])[0];if(l){i=l[0];let n=ti(l,0===i?12:20),o=td(a,["mdia","hdlr"])[0];if(o){let i=eS(o.subarray(8,12)),l={soun:I,vide:k}[i],h=function(i){let r=i.subarray(8),s=r.subarray(86),a=eS(r.subarray(4,8)),n=a,l,o="enca"===a||"encv"===a;o&&td(td(r,[a])[0].subarray("enca"===a?28:78),["sinf"]).forEach(i=>{let r=td(i,["schm"])[0];if(r){let s=eS(r.subarray(4,8));if("cbcs"===s||"cenc"===s){let r=td(i,["frma"])[0];r&&(n=eS(r))}}});let h=n;switch(n){case"avc1":case"avc2":case"avc3":case"avc4":{let i=td(s,["avcC"])[0];i&&i.length>3&&(n+="."+tg(i[1])+tg(i[2])+tg(i[3]),l=tf("avc1"===h?"dva1":"dvav",s));break}case"mp4a":{let i=td(r,[a])[0],s=td(i.subarray(28),["esds"])[0];if(s&&s.length>7){let i=4;if(3!==s[i++])break;i=tc(s,i)+2;let r=s[i++];if(128&r&&(i+=2),64&r&&(i+=s[i++]),4!==s[i++])break;i=tc(s,i);let a=s[i++];if(64===a)n+="."+tg(a);else break;if(i+=12,5!==s[i++])break;i=tc(s,i);let l=s[i++],o=(248&l)>>3;31===o&&(o+=1+((7&l)<<3)+((224&s[i])>>5)),n+="."+o}break}case"hvc1":case"hev1":{let i=td(s,["hvcC"])[0];if(i&&i.length>12){let r=i[1],s=["","A","B","C"][r>>6],a=ti(i,2),l=i[12],o=i.subarray(6,12);n+="."+s+(31&r),n+="."+(function(i){let r=0;for(let s=0;s<32;s++)r|=(i>>s&1)<<31-s;return r>>>0})(a).toString(16).toUpperCase(),n+="."+((32&r)>>5?"H":"L")+l;let h="";for(let i=o.length;i--;){let r=o[i];(r||h)&&(h="."+r.toString(16).toUpperCase()+h)}n+=h}l=tf("hev1"==h?"dvhe":"dvh1",s);break}case"dvh1":case"dvhe":case"dvav":case"dva1":case"dav1":n=tf(n,s)||n;break;case"vp09":{let i=td(s,["vpcC"])[0];if(i&&i.length>6){let r=i[4],s=i[5],a=i[6]>>4&15;n+="."+tm(r)+"."+tm(s)+"."+tm(a)}break}case"av01":{let i=td(s,["av1C"])[0];if(i&&i.length>2){let r=i[1]>>>5,a=31&i[1],o=i[2]>>>7?"H":"M",h=(64&i[2])>>6,d=(32&i[2])>>5,u=(16&i[2])>>4,f=(8&i[2])>>3,c=(4&i[2])>>2,g=3&i[2];n+="."+r+"."+tm(a)+o+"."+tm(2===r&&h?d?12:10:h?10:8)+"."+u+"."+f+c+g+"."+tm(1)+"."+tm(1)+"."+tm(1)+".0",l=tf("dav1",s)}}}return{codec:n,encrypted:o,supplemental:l}}(td(a,["mdia","minf","stbl","stsd"])[0]);l?(r[s]={timescale:n,type:l,stsd:h},r[l]=$({timescale:n,id:s},h)):r[s]={timescale:n,type:i,stsd:h}}}}}return td(i,["moov","mvex","trex"]).forEach(i=>{let s=r[ti(i,4)];s&&(s.default={duration:ti(i,12),sampleSize:ti(i,16),flags:ti(i,20)})}),r}function tf(i,r){let s=td(r,["dvvC"]),a=s.length?s[0]:td(r,["dvcC"])[0];if(a){let r=a[2]>>1&127,s=a[2]<<5&32|a[3]>>3&31;return i+"."+tm(r)+"."+tm(s)}}function tc(i,r){let s=r+5;for(;128&i[r++]&&r<s;);return r}function tg(i){return("0"+i.toString(16).toUpperCase()).slice(-2)}function tm(i){return(i<10?"0":"")+i}function tp(i,r){td(i,["moov","trak"]).forEach(i=>{let s=td(i,["mdia","minf","stbl","stsd"])[0];if(!s)return;let a=s.subarray(8),n=td(a,["enca"]),l=n.length>0;l||(n=td(a,["encv"])),n.forEach(i=>{td(l?i.subarray(28):i.subarray(78),["sinf"]).forEach(i=>{let s=tv(i);s&&r(s,l)})})})}function tv(i){let r=td(i,["schm"])[0];if(r){let s=eS(r.subarray(4,8));if("cbcs"===s||"cenc"===s){let r=td(i,["schi","tenc"])[0];if(r)return r}}}function ty(i,r,s,a,n){let l={},o=!1,h=function(i){let r=i.byteLength,s=[];for(let a=0;a<r;){let n=a+8<=r,l=a+4<=r?0x1000000*i[a]+(i[a+1]<<16|i[a+2]<<8|i[a+3]):ti(i,a),o=l>1?a+l:r;if(n&&109===i[a+4]&&111===i[a+5]&&111===i[a+6]&&102===i[a+7]){let n=Math.min(o,r);for(let r=a+8;r<n;){let l=r+8<=n,o=r+4<=n?0x1000000*i[r]+(i[r+1]<<16|i[r+2]<<8|i[r+3]):ti(i,r),h=o>1?r+o:n;if(l&&116===i[r+4]&&114===i[r+5]&&97===i[r+6]&&102===i[r+7]){let l=Math.min(h,n),o,d,u=[];for(let s=r+8;s<l;){let r=s+8<=l,a=s+4<=l?0x1000000*i[s]+(i[s+1]<<16|i[s+2]<<8|i[s+3]):ti(i,s),n=a>1?s+a:l;if(r&&116===i[s+4]){let r=Math.min(n,l);102===i[s+5]&&104===i[s+6]&&100===i[s+7]?d||(d=i.subarray(s+8,r)):102===i[s+5]&&100===i[s+6]&&116===i[s+7]?o||(o=i.subarray(s+8,r)):114===i[s+5]&&117===i[s+6]&&110===i[s+7]&&u.push(i.subarray(s+8,r))}s=n}s.push({moofOffset:i.byteOffset+a,tfdt:o,tfhd:d,truns:u})}r=h}}a=o}return s}(i),d=i.byteLength;for(let c=0;c<h.length;
1c++){let{moofOffset:g,tfdt:p,tfhd:v,truns:y}=h[c],E=ti(v,4),T=r[E];if(!T)continue;let S=l[E]||(l[E]={start:NaN,duration:0,sampleCount:0,trun:[],timescale:T.timescale,type:T.type}),A;if(p){let i=p[0];A=ti(p,4),1===i&&(A===eA?s.warn("[mp4-demuxer]: Ignoring assumed invalid signed 64-bit track fragment decode time"):(A*=eA+1,A+=ti(p,8))),m(A)&&(!m(S.start)||A<S.start)&&(S.start=A),n&&m(A)&&(n.timeOffset=A/n.timescale)}let L=(null==n?void 0:n.trackId)===E&&T.type===k,R=T.default,b=0xffffff&ti(v,0),I=(null==R?void 0:R.duration)||0,D,P=(null==R?void 0:R.sampleSize)||0,_=8;1&b&&(_+=8),2&b&&(_+=4),8&b&&(I=ti(v,_),D=v.byteOffset-i.byteOffset+_,_+=4),16&b&&(P=ti(v,_));let C=0,x=!!(1&b),w=!x&&!!(131072&b);x?C=0x100000000*ti(v,8)+ti(v,12):w&&(C=g);let M=A||0,O=0,F=I;for(let r=0;r<y.length;r++){let s,l,o,h=y[r],c=ti(h,4),g=S.sampleCount;S.sampleCount+=c;let p=1&h[3],v=0,E=4&h[3],T=1&h[2],A=2&h[2],R=4&h[2],b=8&h[2],k=8;p&&(v=ta(h,k),k+=4),E&&(1&h[k+1]||void 0!==S.keyFrameIndex||(S.keyFrameIndex=g),k+=4);let _=C+v;if(!a&&0===h[1]&&6===h[2]&&1===h[3]){var u,f;let r=M,s=_,a=k,l=-1,o=0,g=0,p=null==(u=null==n?void 0:n.timeOffset)?0:u,v=I/(null==(f=null==n?void 0:n.timescale)?1:f),y=(null==n?void 0:n.isHEVCFlavor)===!0,E=y?2:1;for(let r=0;r<c;r++){let s=0===h[k]?h[k+1]<<16|h[k+2]<<8|h[k+3]:ti(h,k),a=-1===l&&void 0===S.keyFrameIndex&&!(1&h[k+5]);k+=8;let d=_+s;if(L){if(s>0){let r=_;do{let s=0===i[r]?i[r+1]<<16|i[r+2]<<8|i[r+3]:ti(i,r),a=i[r+=4],l=y?a>>1&63:31&a;(y?39===l||40===l:6===l)&&tA(i.subarray(r,r+s),E,p,n.samples),r+=s}while(r<d)}p+=v}_=d,a&&(l=r,o=_)}if(_<=d)g=c;else{let i=s,r=a;for(let s=0;s<c&&!((i+=0===h[r]?h[r+1]<<16|h[r+2]<<8|h[r+3]:ti(h,r))>d);s++)g=s+1,r+=8}if(L&&(n.timeOffset=p),-1!==l&&o<=d&&void 0===S.keyFrameIndex&&(S.keyFrameIndex=l,S.keyFrameStart=r+l*I),g){(!m(S.ptsMin)||r<S.ptsMin)&&(S.ptsMin=r);let i=r+g*I;(!m(S.ptsMax)||i>S.ptsMax)&&(S.ptsMax=i)}let T=I*c;M=r+T,O+=T;continue}a&&(l={sampleOffset:_,samples:s=[],defaultSampleDurationOffset:D},_<=d&&S.trun.push(l));for(let r=0;r<c;r++){let u,f,c;T?(a&&(u=h.byteOffset-i.byteOffset+k),F=ti(h,k),k+=4):F=I,A?(o=ti(h,k),k+=4):o=P,R&&(c=1&h[k+1]?1:0,a&&(f={isNonSync:c,dependsOn:(3&h[k])==1?1:2}),k+=4);let g=0;if(b&&(g=0===h[0]?ti(h,k):ta(h,k),k+=4),L){let r=_,s=0;for(;s<o;){let a=ti(i,r);r+=4,tS(n.isHEVCFlavor,i[r])&&tA(i.subarray(r,r+a),n.isHEVCFlavor?2:1,n.timeOffset+g/n.timescale,n.samples),r+=a,s+=a+4}n.timeOffset+=F/n.timescale}if((_+=o)<=d){l&&void 0!==u&&(l.lastSampleDurationOffset=u),0===c&&void 0===S.keyFrameIndex&&(S.keyFrameIndex=r,S.keyFrameStart=M);let i=M+g;(!m(S.ptsMin)||i<S.ptsMin)&&(S.ptsMin=i),(!m(S.ptsMax)||i+F>S.ptsMax)&&(S.ptsMax=i+F),s&&(s[r]={cts:g,duration:F,flags:f,size:o})}M+=F,O+=F}!O&&I&&(O+=I*c)}S.duration+=O,S.duration&&(o=!0)}if(!o){let r=1/0,s=0,a=td(i,["sidx"]);for(let i=0;i<a.length;i++){let n=function(i){let r=[],s=i[0],a=8,n=ti(i,8);a+=4;let l=0,o=0;0===s?(l=ti(i,a),o=ti(i,a+4),a+=8):(l=tr(i,a),o=tr(i,a+8),a+=16),a+=2;let h=i.length+o,d=tt(i,a);a+=2;for(let s=0;s<d;s++){let s=a,l=ti(i,s);s+=4;let o=0x7fffffff&l;if((0x80000000&l)>>>31==1)return et.warn("SIDX has hierarchical references (not supported)"),null;let d=ti(i,s);s+=4,r.push({referenceSize:o,subsegmentDuration:d,info:{duration:d/n,start:h,end:h+o-1}}),h+=o,s+=4,a=s}return{earliestPresentationTime:l,timescale:n,version:s,referencesCount:d,references:r}}(a[i]);if(null!=n&&n.references){r=Math.min(r,n.earliestPresentationTime/n.timescale);let i=n.references.reduce((i,r)=>i+r.info.duration||0,0);s=Math.max(s,i+n.earliestPresentationTime/n.timescale)}}s&&m(s)&&Object.keys(l).forEach(i=>{l[i].duration||(l[i].duration=s*l[i].timescale-l[i].start)})}return l}function tE(i,r){let s=new Uint8Array(i.length+r.length);return s.set(i),s.set(r,i.length),s}function tT(i){if(!i)return!1;let r=i.substring(0,4);return"hvc1"===r||"hev1"===r||"dvh1"===r||"dvhe"===r}function tS(i,r){if(i){let i=r>>1&63;return 39===i||40===i}return(31&r)==6}function tA(i,r,s,a){let n=tL(i),l;l=0+r;let o=0,h=0,d=0;for(;l<n.length;){o=0;do{if(l>=n.length)break;o+=d=n[l++]}while(255===d);h=0;do{if(l>=n.length)break;h+=d=n[l++]}while(255===d);let i=n.length-l,r=l;if(h<i)l+=h;else if(h>i){et.error(`Malformed SEI payload. ${h} is too small, only ${i} bytes left to parse.`);break}if(4===o){if(181===n[r++]){let i=tt(n,r);if(r+=2,49===i){let i=ti(n,r);if(r+=4,0x47413934===i){let i=n[r++];if(3===i){let l=n[r++],h=31&l,d=64&l,u=d?2+3*h:0,f=new Uint8Array(u);if(d){f[0]=l;for(let i=1;i<u;i++)f[i]=n[r++]}a.push({type:i,payloadType:o,pts:s,bytes:f})}}}}}else if(5===o&&h>16){let i=[];for(let s=0;s<16;s++){let a=n[r++].toString(16);i.push(1==a.length?"0"+a:a),(3===s||5===s||7===s||9===s)&&i.push("-")}let l=h-16,d=new Uint8Array(l);for(let i=0;i<l;i++)d[i]=n[r++];a.push({payloadType:o,pts:s,uuid:i.join(""),userData:typeof TextDecoder>"u"?eg(d):(tk||(tk=new TextDecoder("utf-8"))).decode(d).replace(/\0/g,""),userDataBytes:d})}}}function tL(i){let r=i.byteLength,s,a=i.indexOf(3,3);for(;-1!==a;)0===i[a-1]&&0===i[a-2]&&(s||(s=[])).push(a),a=i.indexOf(3,a+1);if(!s)return i;let n=r-s.length,l=new Uint8Array(n),o=0,h=0;for(let r=0;r<n;h++,r++)h===s[o]&&(h++,o++),l[r]=i[h];return l}function tR(i){let r=[];if(i instanceof ArrayBuffer){let s=i.byteLength,a=0;for(;a+32<s;){let s=function(i){let r=i.getUint32(0),s=i.byteOffset,a=i.byteLength;if(a<r)return{offset:s,size:a};if(0x70737368!==i.getUint32(4))return{offset:s,size:r};let n=i.getUint32(8)>>>24;if(0!==n&&1!==n)return{offset:s,size:r};let l=i.buffer,o=ey(new Uint8Array(l,s+12,16)),h=null,d=null,u=0;
1if(0===n)u=28;else{let n=i.getUint32(28);if(!n||a<32+16*n)return{offset:s,size:r};h=[];for(let i=0;i<n;i++)h.push(new Uint8Array(l,s+32+16*i,16));u=32+16*n}if(!u)return{offset:s,size:r};let f=i.getUint32(u);return r-32<f?{offset:s,size:r}:(d=new Uint8Array(l,s+u+4,f),0===n&&(h=function(i){let r=[];for(let s=0;s<i.length;){let a=i[s++],n=7&a;if(0===n){for(;128&i[s++];);continue}if(2!==n){s+=1===n?8:4;continue}let l=0;for(let r=0,a=128;128&a;r+=7)l|=(127&(a=i[s++]))<<r;if(a>>3==2)if(32===l){let a=new Uint8Array(16);for(let r=0;r<16;r++)a[r]=parseInt(String.fromCharCode(i[s+2*r],i[s+2*r+1]),16);r.push(a)}else 16===l&&r.push(i.subarray(s,s+16));s+=l}return r}(d)),{version:n,systemId:o,kids:h,data:d,offset:s,size:r})}(new DataView(i,a));r.push(s),a+=s.size}}return r}var tb,tI,tk,tD,tP,t_,tC=tw("userAgent"),tx=tw("vendor");function tw(i){try{return navigator[i]||""}catch{}return""}function tM(){if(void 0===tD){let i=tC.match(/Chrome\/(\d+)/i);tD=i?parseInt(i[1]):0}return tD}function tO(){return/\(Windows.+Firefox\//i.test(tC)}var tF={audio:{a3ds:1,"ac-3":.95,"ac-4":1,alac:.9,alaw:1,dra1:1,"dts+":1,"dts-":1,dtsc:1,dtse:1,dtsh:1,"ec-3":.9,enca:1,fLaC:.9,flac:.9,FLAC:.9,g719:1,g726:1,m4ae:1,mha1:1,mha2:1,mhm1:1,mhm2:1,mlpa:1,mp4a:1,"raw ":1,Opus:1,opus:1,samr:1,sawb:1,sawp:1,sevc:1,sqcp:1,ssmv:1,twos:1,ulaw:1},video:{avc1:1,avc2:1,avc3:1,avc4:1,avcp:1,av01:.8,dav1:.8,drac:1,dva1:1,dvav:1,dvh1:.7,dvhe:.7,encv:1,hev1:.75,hvc1:.75,mjp2:1,mp4v:1,mvc1:1,mvc2:1,mvc3:1,mvc4:1,resv:1,rv60:1,s263:1,svc1:1,svc2:1,"vc-1":1,vp08:1,vp09:.9},text:{stpp:1,wvtt:1},image:{mjpg:1}};function t$(i,r){let s=tF[r];return!!s&&!!s[i.slice(0,4)]}function tB(i,r,s=!0){return!i.split(",").some(i=>!tU(i,r,s))}function tU(i,r,s=!0){var a;let n=ei(s);return null!=(a=null==n?void 0:n.isTypeSupported(tN(i,r)))&&a}function tN(i,r){return`${r}/mp4;codecs=${i}`}function tG(i){if(i){let r=i.substring(0,4);return tF.video[r]}return 2}function tK(i){let r=tO();return i.split(",").reduce((i,s)=>{let a=r&&tT(s)?9:tF.video[s];return a?(2*a+i)/(i?3:2):(tF.audio[s]+i)/(i?2:1)},0)}var tH={},tV=/flac|opus|mp4a\.40\.34/i;function tj(i,r=!0){return i.replace(tV,i=>(function(i,r=!0){if(tH[i])return tH[i];let s={flac:["flac","fLaC","FLAC"],opus:["opus","Opus"],"mp4a.40.34":["mp3"]}[i];for(let n=0;n<s.length;n++){var a;if(tU(s[n],"audio",r))return tH[i]=s[n],s[n];if("mp3"===s[n]&&null!=(a=ei(r))&&a.isTypeSupported("audio/mpeg"))return""}return i})(i.toLowerCase(),r))}function tq(i,r){if(i&&(i.length>4||-1!==["ac-3","ec-3","alac","fLaC","Opus"].indexOf(i))&&(tW(i,"audio")||tW(i,"video")))return i;if(r){let s=r.split(",");if(s.length>1){if(i){for(let r=s.length;r--;)if(s[r].substring(0,4)===i.substring(0,4))return s[r]}return s[0]}}return r||i}function tW(i,r){return t$(i,r)&&tU(i,r)}function tY(i){let r=ei(i)||{isTypeSupported:()=>!1};return{mpeg:r.isTypeSupported("audio/mpeg"),mp3:r.isTypeSupported('audio/mp4; codecs="mp3"'),ac3:r.isTypeSupported('audio/mp4; codecs="ac-3"')}}function tz(i){return i.replace(/^.+codecs=["']?([^"']+).*$/,"$1")}var tX={supported:!1,smooth:!1,powerEfficient:!1},tQ={supported:!0,configurations:[],decodingInfoResults:[{supported:!0,powerEfficient:!0,smooth:!0}]};function tZ(i,r){return{supported:!1,configurations:r,decodingInfoResults:[tX],error:i}}function tJ(i,r,s,a={}){var n,l,o,h,d,u;let f,c,g,m,p,v,y,E,T=i.videoCodec;if(!T&&!i.audioCodec||!s)return Promise.resolve(tQ);let S=[],A=(f=null==(l=(n=i).videoCodec)?void 0:l.split(","),c=t1(n),g=n.width||640,m=n.height||480,p=n.frameRate||30,v=n.videoRange.toLowerCase(),f?f.map(i=>{let r={contentType:tN(function(i){if(i.startsWith("av01.")){let r=i.split("."),s=["0","111","01","01","01","0"];for(let i=r.length;i>4&&i<10;i++)r[i]=s[i-4];return r.join(".")}return i}(i),"video"),width:g,height:m,bitrate:c,framerate:p};return"sdr"!==v&&(r.transferFunction=v),r}):[]),L=A.length,R=(o=i,h=r,d=L>0,y=null==(u=o.audioCodec)?void 0:u.split(","),E=t1(o),y&&o.audioGroups?o.audioGroups.reduce((i,r)=>{var s;let a=r?null==(s=h.groups[r])?void 0:s.tracks:null;return a?a.reduce((i,s)=>{if(s.groupId===r){let r=parseFloat(s.channels||"");
1y.forEach(s=>{let a={contentType:tN(s,"audio"),bitrate:d?t0(s,E):E};r&&(a.channels=""+r),i.push(a)})}return i},i):i},[]):[]),b=R.length;for(let i=L||+b||1;i--;){let r={type:"media-source"};if(L&&(r.video=A[i%L]),b){r.audio=R[i%b];let s=r.audio.bitrate;r.video&&s&&(r.video.bitrate-=s)}S.push(r)}if(T){let i=navigator.userAgent;if(T.split(",").some(i=>tT(i))&&tO())return Promise.resolve(tZ(Error(`Overriding Windows Firefox HEVC MediaCapabilities result based on user-agent string: (${i})`),S))}return Promise.all(S.map(i=>{let r=function(i){let r="",{audio:s,video:a}=i;if(a){let i=tz(a.contentType);r+=`${i}_r${a.height}x${a.width}f${Math.ceil(a.framerate)}${a.transferFunction||"sd"}_${Math.ceil(a.bitrate/1e5)}`}if(s){let i=tz(s.contentType);r+=`${a?"_":""}${i}_c${s.channels}`}return r}(i);return a[r]||(a[r]=s.decodingInfo(i))})).then(i=>({supported:!i.some(i=>!i.supported),configurations:S,decodingInfoResults:i})).catch(i=>({supported:!1,configurations:S,decodingInfoResults:[],error:i}))}function t0(i,r){if(r<=1)return 1;let s=128e3;return"ec-3"===i?s=768e3:"ac-3"===i&&(s=64e4),Math.min(r/2,s)}function t1(i){return 1e3*Math.ceil(Math.max(.9*i.bitrate,i.averageBitrate)/1e3)||1}function t2(i,r,s){let a=encodeURIComponent(r),n=`${a}=${encodeURIComponent(s)}`,l=!1,o=[];i.search.substring(1).split("&").forEach(i=>{i===a||i.startsWith(a+"=")?l||(o.push(n),l=!0):i&&o.push(i)}),l||o.push(n),i.search=o.join("&")}var t3=["NONE","TYPE-0","TYPE-1",null],t4=["SDR","PQ","HLG"];function t8(i){let{canSkipUntil:r,canSkipDateRanges:s,age:a}=i;return r&&a<r/2?s?"v2":"YES":""}var t5=class{constructor(i,r,s){this.msn=void 0,this.part=void 0,this.skip=void 0,this.msn=i,this.part=r,this.skip=s}addDirectives(i){let r=new self.URL(i);return void 0!==this.msn&&t2(r,"_HLS_msn",this.msn.toString()),void 0!==this.part&&t2(r,"_HLS_part",this.part.toString()),this.skip&&t2(r,"_HLS_skip",this.skip),r.href}},t6=class{constructor(i){if(this._attrs=void 0,this.audioCodec=void 0,this.bitrate=void 0,this.codecSet=void 0,this.url=void 0,this.frameRate=void 0,this.height=void 0,this.id=void 0,this.name=void 0,this.supplemental=void 0,this.videoCodec=void 0,this.width=void 0,this.imageCodec=void 0,this.iframes=void 0,this.details=void 0,this.fragmentError=0,this.loadError=0,this.loadErrorTime=0,this.loaded=void 0,this.realBitrate=0,this.supportedPromise=void 0,this.supportedResult=void 0,this._avgBitrate=0,this._audioGroups=void 0,this._subtitleGroups=void 0,this._urlId=0,this.url=[i.url],this._attrs=[i.attrs],this.bitrate=i.bitrate,i.details&&(this.details=i.details),this.id=i.id||0,this.name=i.name,this.width=i.width||0,this.height=i.height||0,this.frameRate=i.attrs.optionalFloat("FRAME-RATE",0),this._avgBitrate=i.attrs.decimalInteger("AVERAGE-BANDWIDTH"),this.audioCodec=i.audioCodec,this.videoCodec=i.videoCodec,"imageCodec"in i&&(this.imageCodec=i.imageCodec),this.codecSet=[i.videoCodec,i.audioCodec].filter(i=>!!i).map(i=>i.substring(0,4)).join(","),"supplemental"in i){var r;this.supplemental=i.supplemental;let s=null==(r=i.supplemental)?void 0:r.videoCodec;s&&s!==i.videoCodec&&(this.codecSet+=`,${s.substring(0,4)}`)}"iframes"in i&&i.iframes?this.iframes=!0:(this.addGroupId("audio",i.attrs.AUDIO),this.addGroupId("text",i.attrs.SUBTITLES))}get maxBitrate(){return Math.max(this.realBitrate,this.bitrate)}get averageBitrate(){return this._avgBitrate||this.realBitrate||this.bitrate}get attrs(){return this._attrs[0]}get codecs(){return this.attrs.CODECS||""}get pathwayId(){return this.attrs["PATHWAY-ID"]||"."}get videoRange(){return this.attrs["VIDEO-RANGE"]||"SDR"}get score(){return this.attrs.optionalFloat("SCORE",0)}get uri(){return this.url[0]||""}hasAudioGroup(i){return t9(this._audioGroups,i)}hasSubtitleGroup(i){return t9(this._subtitleGroups,i)}get audioGroups(){return this._audioGroups}get subtitleGroups(){return this._subtitleGroups}addGroupId(i,r){if(r){if("audio"===i){let i=this._audioGroups;i||(i=this._audioGroups=[]),-1===i.indexOf(r)&&i.push(r)}else if("text"===i){let i=this._subtitleGroups;i||(i=this._subtitleGroups=[]),-1===i.indexOf(r)&&i.push(r)}}}get urlId(){return 0}set urlId(i){}get audioGroupIds(){return this.audioGroups?[this.audioGroupId]:void 0}get textGroupIds(){return this.subtitleGroups?[this.textGroupId]:void 0}get audioGroupId(){var i;return null==(i=this.audioGroups)?void 0:i[0]}get textGroupId(){var i;return null==(i=this.subtitleGroups)?void 0:i[0]}
1addFallback(){}};function t9(i,r){return!!r&&!!i&&-1!==i.indexOf(r)}var t7=(i,r)=>{let s;return JSON.stringify(i,(s=new WeakSet,(i,a)=>{if(r&&(a=r(i,a)),"object"==typeof a&&a){if(s.has(a))return;s.add(a)}return a}))};function ie(i,r){et.log(`[abr] start candidates with "${i}" ignored because ${r}`)}function it(i){return i.reduce((i,r)=>{let s=i.groups[r.groupId];s||(s=i.groups[r.groupId]={tracks:[],channels:{2:0},hasDefault:!1,hasAutoSelect:!1}),s.tracks.push(r);let a=r.channels||"2";return s.channels[a]=(s.channels[a]||0)+1,s.hasDefault=s.hasDefault||r.default,s.hasAutoSelect=s.hasAutoSelect||r.autoselect,s.hasDefault&&(i.hasDefaultAudio=!0),s.hasAutoSelect&&(i.hasAutoSelectAudio=!0),i},{hasDefaultAudio:!1,hasAutoSelectAudio:!1,groups:{}})}function ii(i){if(!i)return i;let{lang:r,assocLang:s,characteristics:a,channels:n,audioCodec:l}=i;return{lang:r,assocLang:s,characteristics:a,channels:n,audioCodec:l}}function ir(i,r,s){if("attrs"in i){let s=r.indexOf(i);if(-1!==s)return s}for(let a=0;a<r.length;a++)if(is(i,r[a],s))return a;return -1}function is(i,r,s){let{groupId:a,name:n,lang:l,assocLang:o,default:h}=i,d=i.forced;return(void 0===a||r.groupId===a)&&(void 0===n||r.name===n)&&(void 0===l||function(i,r="--"){return i.length===r.length?i===r:i.startsWith(r)||r.startsWith(i)}(l,r.lang))&&(void 0===o||r.assocLang===o)&&(void 0===h||r.default===h)&&(void 0===d||r.forced===d)&&(!("characteristics"in i)||function(i,r=""){let s=i.split(","),a=r.split(",");return s.length===a.length&&!s.some(i=>-1===a.indexOf(i))}(i.characteristics||"",r.characteristics))&&(void 0===s||s(i,r))}function ia(i,r){let{audioCodec:s,channels:a}=i;return(void 0===s||(r.audioCodec||"").substring(0,4)===s.substring(0,4))&&(void 0===a||a===(r.channels||"2"))}function il(i,r,s){for(let a=r;a>-1;a--)if(s(i[a]))return a;for(let a=r+1;a<i.length;a++)if(s(i[a]))return a;return -1}function io(i,r){var s;return!!i&&i!==(null==(s=r.loadLevelObj)?void 0:s.uri)}function ih(i,r){return!r||-1!==r.indexOf(i)}function id(i,r){if(r||i){let s=O({},r);return i&&(i.videoCodec&&(s.videoCodec=i.videoCodec),i.videoRange&&(s.allowedVideoRanges=[i.videoRange])),s}}var iu=class extends X{constructor(i){super("abr",i.logger),this.hls=void 0,this.lastLevelLoadSec=0,this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.firstAutoFloor=-1,this._nextAutoLevel=-1,this.nextAutoLevelKey="",this.audioTracksByGroup=null,this.co
1decTiers=null,this.timer=-1,this.fragCurrent=null,this.partCurrent=null,this.bitrateTestDelay=0,this.rebufferNotice=-1,this.supportedCache={},this.bwEstimator=void 0,this._abandonRulesCheck=i=>{var r;let{fragCurrent:s,partCurrent:a,hls:n}=this;if(!n)return;let{autoLevelEnabled:l,media:o}=n;if(!s||!o)return;let h=performance.now(),d=a?a.stats:s.stats,u=a?a.duration:s.duration,f=h-d.loading.start,c=n.minAutoLevel,g=s.level,p=this._nextAutoLevel;if(d.aborted||d.loaded&&d.loaded===d.total||g<=c){this.clearTimer(),this._nextAutoLevel=-1;return}if(!l)return;let v=p>-1&&p!==g,y=!!i||v;if(!y&&(o.paused||!o.playbackRate||!o.readyState))return;let E=n.mainForwardBufferInfo;if(!y&&null===E)return;let S=this.bwEstimator.getEstimateTTFB(),A=Math.abs(o.playbackRate);if(f<=Math.max(S,u/(2*A)*1e3))return;let L=E?E.len/A:0,R=d.loading.first?d.loading.first-d.loading.start:-1,b=d.loaded&&R>-1,I=this.getBwEstimate(),k=n.levels,D=k[g],P=Math.max(d.loaded,Math.round(u*(s.bitrate||D.averageBitrate)/8)),_=b?f-R:f;_<1&&b&&(_=Math.min(f,8*d.loaded/I));let C=b?1e3*d.loaded/_:0,x=S/1e3,w=C?(P-d.loaded)/C:8*P/I+x;if(w<=L)return;let M=C?8*C:I,O=(null==(r=(null==i?void 0:i.details)||n.latestLevelDetails)?void 0:r.live)===!0,F=n.config.abrBandWidthUpFactor,$=1/0,B;for(B=g-1;B>c;B--){let i=k[B].maxBitrate,r=!k[B].details||O;if(($=this.getTimeToLoadFrag(x,M,u*i,r))<Math.min(L,u+x))break}if($>=w||$>10*u)return;b?this.bwEstimator.sample(f-Math.min(S,R),d.loaded):this.bwEstimator.sampleTTFB(f);let U=k[B].maxBitrate;this.getBwEstimate()*F>U&&(this.firstAutoFloor=Math.min(B,n.firstLevel),this.resetEstimator(U));let N=this.findBestLevel(U,c,B,0,L,1,1);N>-1&&(B=N),this.warn(`Fragment ${s.sn}${a?" part "+a.index:""} of level ${g} is loading too slowly;
2      Fragment duration: ${s.duration.toFixed(3)}
3      Time to underbuffer: ${L.toFixed(3)} s
4      Estimated load time for current fragment: ${w.toFixed(3)} s
5      Estimated load time for down switch fragment: ${$.toFixed(3)} s
6      TTFB estimate: ${0|R} ms
7      Current BW estimate: ${m(I)?0|I:"Unknown"} bps
8      New BW estimate: ${0|this.getBwEstimate()} bps
9      Switching to level ${B} @ ${0|U} bps`),n.nextLoadLevel=n.nextAutoLevel=B,this.clearTimer();let G=()=>{this.clearTimer();let i=this.hls;if(this.fragCurrent===s&&i.loadLevel===B&&B>0){let r=this.getStarvationDelay();if(this.warn(`Aborting inflight request ${B>0?"and switching down":""}
10      Fragment duration: ${s.duration.toFixed(3)} s
11      Time to underbuffer: ${r.toFixed(3)} s`),s.abortRequests(),this.fragCurrent=this.partCurrent=null,B>c){let s=this.findBestLevel(i.levels[c].bitrate,c,B,0,r,1,1);-1===s&&(s=c),i.nextLoadLevel=i.nextAutoLevel=s,this.firstAutoFloor=Math.min(s,i.firstLevel),this.resetEstimator(i.levels[s].bitrate)}}};v||w>2*$?G():this.timer=self.setInterval(G,1e3*$),n.trigger(T.FRAG_LOAD_EMERGENCY_ABORTED,{frag:s,part:a,stats:d})},this.hls=i,this.bwEstimator=this.initEstimator(),this.registerListeners()}resetEstimator(i){this.hls&&(i&&(this.log(`setting initial bwe to ${i}`),this.hls.config.abrEwmaDefaultEstimate=i),this.firstSelection=-1,this.bwEstimator=this.initEstimator())}initEstimator(){let i=this.hls.config;return new z(i.abrEwmaSlowVoD,i.abrEwmaFastVoD,i.abrEwmaDefaultEstimate)}registerListeners(){let i=this.hls;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.FRAG_LOADING,this.onFragLoading,this),i.on(T.FRAG_LOADED,this.onFragLoaded,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this),i.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.on(T.LEVEL_LOADED,this.onLevelLoaded,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.on(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let{hls:i}=this;i&&(i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.FRAG_LOADING,this.onFragLoading,this),i.off(T.FRAG_LOADED,this.onFragLoaded,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this),i.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.off(T.LEVEL_LOADED,this.onLevelLoaded,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.off(T.MAX_AUTO_LEVEL_UPDATED,this.onMaxAutoLevelUpdated,this),i.off(T.ERROR,this.onError,this))}destroy(){this.unregisterListeners(),this.clearTimer(),this.hls=this._abandonRulesCheck=this.supportedCache=null,this.audioTracksByGroup=this.codecTiers=this.fragCurrent=this.partCurrent=null}onManifestLoading(i,r){this.lastLoadedFragLevel=-1,this.firstSelection=-1,this.firstAutoFloor=-1,this.lastLevelLoadSec=0,this.supportedCache={},this.fragCurrent=this.partCurrent=null,this.onLevelsUpdated(),this.clearTimer()}onLevelsUpdated(){this.lastLoadedFragLevel>-1&&this.fragCurrent&&(this.lastLoadedFragLevel=this.fragCurrent.level),this._nextAutoLevel=-1,this.onMaxAutoLevelUpdated(),this.codecTiers=null,this.audioTracksByGroup=null}onMaxAutoLevelUpdated(){this.firstSelection=-1,this.nextAutoLevelKey=""}onFragLoading(i,r){let s=r.frag;
11if(!this.ignoreFragment(s)){if(!s.bitrateTest){var a;this.fragCurrent=s,this.partCurrent=null==(a=r.part)?null:a}this.clearTimer(),this.timer=self.setInterval(this._abandonRulesCheck,100)}}onLevelSwitching(i,r){this.clearTimer()}onError(i,r){if(!r.fatal)switch(r.details){case E.BUFFER_ADD_CODEC_ERROR:case E.BUFFER_APPEND_ERROR:this.lastLoadedFragLevel=-1,this.firstSelection=-1;break;case E.FRAG_LOAD_TIMEOUT:{let i=r.frag,{fragCurrent:s,partCurrent:a}=this;if(i&&x(i,s)){let r=performance.now(),s=a?a.stats:i.stats,n=r-s.loading.start,l=s.loading.first?s.loading.first-s.loading.start:-1;if(s.loaded&&l>-1){let i=this.bwEstimator.getEstimateTTFB();this.bwEstimator.sample(n-Math.min(i,l),s.loaded)}else this.bwEstimator.sampleTTFB(n)}}}}getTimeToLoadFrag(i,r,s,a){return i+s/r+(a?i+this.lastLevelLoadSec:0)}onLevelLoaded(i,r){let s=this.hls.config,{loading:a}=r.stats,n=a.end-a.first;m(n)&&(this.lastLevelLoadSec=n/1e3),r.details.live?this.bwEstimator.update(s.abrEwmaSlowLive,s.abrEwmaFastLive):this.bwEstimator.update(s.abrEwmaSlowVoD,s.abrEwmaFastVoD),this.timer>-1&&this._abandonRulesCheck(r.levelInfo)}onFragLoaded(i,r){var s;let{frag:a,part:n}=r,l=n?n.stats:a.stats;if(a.type===b.MAIN&&this.bwEstimator.sampleTTFB(l.loading.first-l.loading.start),!this.ignoreFragment(a)){if(this.clearTimer(),a.level===this._nextAutoLevel&&(this._nextAutoLevel=-1),this.firstSelection=-1,null!=(s=this.hls)&&s.config.abrMaxWithRealBitrate){let i=n?n.duration:a.duration,r=this.hls.levels[a.level],s=(r.loaded?r.loaded.bytes:0)+l.loaded,o=(r.loaded?r.loaded.duration:0)+i;r.loaded={bytes:s,duration:o},r.realBitrate=Math.round(8*s/o)}if(a.bitrateTest){let i={stats:l,frag:a,part:n,id:a.type};this.onFragBuffered(T.FRAG_BUFFERED,i),a.bitrateTest=!1}else this.lastLoadedFragLevel=a.level}}onFragBuffered(i,r){let{frag:s,part:a}=r,n=null!=a&&a.stats.loaded?a.stats:s.stats;if(n.aborted||this.ignoreFragment(s))return;let l=((s.bitrate||0)>=1e5?n.parsing.end:n.loading.end)-n.loading.start-Math.min(n.loading.first-n.loading.start,this.bwEstimator.getEstimateTTFB());this.bwEstimator.sample(l,n.loaded),n.bwEstimate=this.getBwEstimate(),s.bitrateTest?this.bitrateTestDelay=l/1e3:(this.bitrateTestDelay=0,this.firstAutoFloor>-1&&this.bwEstimator.canEstimate()&&(this.firstAutoFloor=-1))}ignoreFragment(i){return i.type!==b.MAIN||"initSegment"===i.sn}clearTimer(){this.timer>-1&&(self.clearInterval(this.timer),this.timer=-1)}get firstAutoLevel(){let{hls:i}=this;if(!i)return 0;let{maxAutoLevel:r,minAutoLevel:s}=i,a=this.getBwEstimate(),n=this.getStarvationDelay(),l=i.config.maxStarvationDelay,o=this.findBestLevel(a,s,r,n/2,l,1,1);if(o>-1)return o;let h=i.firstLevel,d=Math.min(Math.max(h,s),r,-1===this.firstAutoFloor?1/0:this.firstAutoFloor);return this.warn(`Could not find best starting auto level. Defaulting to first in playlist ${h} clamped to ${d}`),d}get forcedAutoLevel(){return this.nextAutoLevelKey?-1:this._nextAutoLevel}get nextAutoLevel(){if(!this.hls)return -1;let i=this.forcedAutoLevel,r=this.bwEstimator.canEstimate(),s=this.lastLoadedFragLevel>-1;if(-1!==i&&(!r||!s||this.nextAutoLevelKey===this.getAutoLevelKey()))return i;let a=r&&s?this.getNextABRAutoLevel():this.firstAutoLevel;if(-1!==i){let r=this.hls.levels;if(r.length>Math.max(i,a)&&r[i].loadError<=r[a].loadError)return i}return this._nextAutoLevel=a,this.nextAutoLevelKey=this.getAutoLevelKey(),a}getAutoLevelKey(){return`${this.getBwEstimate()}
11_${this.getStarvationDelay().toFixed(2)}`}getNextABRAutoLevel(){let{fragCurrent:i,partCurrent:r,hls:s}=this;if(!s)return -1;if(s.levels.length<=1)return s.loadLevel;let{maxAutoLevel:a,config:n,minAutoLevel:l}=s,o=r?r.duration:i?i.duration:0,h=this.getBwEstimate(),d=this.getStarvationDelay(),u=n.abrBandWidthFactor,f=n.abrBandWidthUpFactor;if(d){let i=this.findBestLevel(h,l,a,d,0,u,f);if(i>=0)return this.rebufferNotice=-1,i}let c=o?Math.min(o,n.maxStarvationDelay):n.maxStarvationDelay;if(!d){let i=this.bitrateTestDelay;i&&(c=(o?Math.min(o,n.maxLoadingDelay):n.maxLoadingDelay)-i,this.info(`bitrate test took ${Math.round(1e3*i)}ms, set first fragment max fetchDuration to ${Math.round(1e3*c)} ms`),u=f=1)}let g=this.findBestLevel(h,l,a,d,c,u,f);if(this.rebufferNotice!==g&&(this.rebufferNotice=g,this.info(`${d?"rebuffering expected":"buffer is empty"}, optimal quality level ${g}`)),g>-1)return g;let m=s.levels[l],p=s.loadLevelObj;return p&&(null==m?void 0:m.bitrate)<p.bitrate?l:s.loadLevel}getStarvationDelay(){let i=this.hls,r=null==i?void 0:i.media;if(!r)return 1/0;let s=r&&0!==r.playbackRate?Math.abs(r.playbackRate):1,a=i.mainForwardBufferInfo;return(a?a.len:0)/s}getBwEstimate(){return this.bwEstimator.getEstimate()}findBestLevel(i,r,s,a,n,l,o){var h;let{hls:d,lastLoadedFragLevel:u,fragCurrent:f,partCurrent:c}=this;if(!d)return -1;let g=a+n,p=-1===u?d.firstLevel:u,{levels:v,allAudioTracks:y,loadLevel:E,latestLevelDetails:T,config:S}=d;if(1===v.length)return 0;let A=v[p],L=!!(null!=T&&T.live),R=-1===E||-1===u,b,I="SDR",k=(null==A?void 0:A.frameRate)||0,{audioPreference:D,videoPreference:P}=S,_=this.audioTracksByGroup||(this.audioTracksByGroup=it(y)),C=-1;if(R){if(-1!==this.firstSelection)return this.firstSelection;let a=function(i,r,s,a,n){let l=Object.keys(i),o=null==a?void 0:a.channels,h=null==a?void 0:a.audioCodec,d=null==n?void 0:n.videoCodec,u=o&&2===parseInt(o),f=!1,c=!1,g=1/0,p=1/0,v=1/0,y=1/0,E=0,T=[],{preferHDR:S,allowedVideoRanges:A}=function(i,r){let s=!1,a=[];if(i&&(s="SDR"!==i,a=[i]),r){let i="SDR"!==(a=r.allowedVideoRanges||t4.slice(0)).join("")&&!r.videoCodec;(s=void 0===r.preferHDR?i&&function(){if("function"==typeof matchMedia){let i=matchMedia("(dynamic-range: high)"),r=matchMedia("bad query");if(i.media!==r.media)return!0===i.matches}return!1}():r.preferHDR)||(a=["SDR"])}return{preferHDR:s,allowedVideoRanges:a}}(r,n);for(let r=l.length;r--;){let s=i[l[r]];f||(f=s.channels[2]>0),g=Math.min(g,s.minHeight),p=Math.min(p,s.minFramerate),v=Math.min(v,s.minBitrate),A.filter(i=>s.videoRanges[i]>0).length>0&&(c=!0)}g=m(g)?g:0,p=m(p)?p:0;let L=Math.max(1080,g),R=Math.max(30,p);s=Math.max(v=m(v)?v:s,s),c||(r=void 0);let b=l.length>1;return{codecSet:l.reduce((r,a)=>{let n=i[a];if(a===r)return r;if(T=c?A.filter(i=>n.videoRanges[i]>0):[],b){if(n.minBitrate>s)return ie(a,`min bitrate of ${n.minBitrate} > current estimate of ${s}`),r;if(!n.hasDefaultAudio)return ie(a,"no renditions with default or auto-select sound found"),r;if(h&&a.indexOf(h.substring(0,4))%5!=0)return ie(a,`audio codec preference "${h}" not found`),r;if(o&&!u){if(!n.channels[o])return ie(a,`no renditions with ${o} channel sound found (channels options: ${Object.keys(n.channels)})`),r}else if((!h||u)&&f&&0===n.channels[2])return ie(a,"no renditions with stereo sound found"),r;if(n.minHeight>L)return ie(a,`min resolution of ${n.minHeight} > maximum of ${L}`),r;if(n.minFramerate>R)return ie(a,`min framerate of ${n.minFramerate} > maximum of ${R}`),r;if(!T.some(i=>n.videoRanges[i]>0))return ie(a,`no variants with VIDEO-RANGE of ${t7(T)} found`),r;if(d&&a.indexOf(d.substring(0,4))%5!=0)return ie(a,`video codec preference "${d}" not found`),r;if(n.maxScore<E)return ie(a,`max score of ${n.maxScore} < selected max of ${E}`),r}return r&&(tK(a)>=tK(r)||n.fragmentError>i[r].fragmentError)?r:(y=n.minIndex,E=n.maxScore,a)},void 0),videoRanges:T,preferHDR:S,minFramerate:p,minBitrate:v,minIndex:y}}(this.codecTiers||(this.codecTiers=v.slice(r,s+1).reduce((i,r,s)=>{if(!r.codecSet)return i;let a=r.audioGroups,n=i[r.codecSet];n||(i[r.codecSet]=n={minBitrate:1/0,minHeight:1/0,minFramerate:1/0,minIndex:s,maxScore:0,videoRanges:{SDR:0},channels:{2:0},hasDefaultAudio:!a,fragmentError:0}
11),n.minBitrate=Math.min(n.minBitrate,r.bitrate);let l=Math.min(r.height,r.width);return n.minHeight=Math.min(n.minHeight,l),n.minFramerate=Math.min(n.minFramerate,r.frameRate),n.minIndex=Math.min(n.minIndex,s),n.maxScore=Math.max(n.maxScore,r.score),n.fragmentError+=r.fragmentError,n.videoRanges[r.videoRange]=(n.videoRanges[r.videoRange]||0)+1,a&&a.forEach(i=>{if(!i)return;let r=_.groups[i];r&&(n.hasDefaultAudio=n.hasDefaultAudio||_.hasDefaultAudio?r.hasDefault:r.hasAutoSelect||!_.hasDefaultAudio&&!_.hasAutoSelectAudio,Object.keys(r.channels).forEach(i=>{n.channels[i]=(n.channels[i]||0)+r.channels[i]}))}),i},{})),I,i,D,P),{codecSet:n,videoRanges:l,minFramerate:o,minBitrate:h,minIndex:d,preferHDR:u}=a;C=d,b=n,I=u?l[l.length-1]:l[0],k=o,i=Math.max(i,h),this.log(`picked start tier ${t7(a)}`)}else b=null==A?void 0:A.codecSet,I=null==A?void 0:A.videoRange;let x=c?c.duration:f?f.duration:0,w=this.bwEstimator.getEstimateTTFB()/1e3,M=[];for(let d=s;d>=r;d--){let r=v[d],f=d>p;if(!r)continue;if(S.useMediaCapabilities&&!r.supportedResult&&!r.supportedPromise){let s=navigator.mediaCapabilities;"function"==typeof(null==s?void 0:s.decodingInfo)&&function(i,r,s,a,n,l){let o=i.videoCodec,h=i.audioCodec?i.audioGroups:null,d=null==l?void 0:l.audioCodec,u=null==l?void 0:l.channels,f=u?parseInt(u):d?1/0:2,c=null;if(null!=h&&h.length)try{c=1===h.length&&h[0]?r.groups[h[0]].channels:h.reduce((i,s)=>{if(s){let a=r.groups[s];if(!a)throw Error(`Audio track group ${s} not found`);Object.keys(a.channels).forEach(r=>{i[r]=(i[r]||0)+a.channels[r]})}return i},{2:0})}catch{return!0}return void 0!==o&&(o.split(",").some(i=>tT(i))||i.width>1920&&i.height>1088||i.height>1920&&i.width>1088||i.frameRate>Math.max(a,30)||"SDR"!==i.videoRange&&i.videoRange!==s||i.bitrate>Math.max(n,8e6))||!!c&&m(f)&&Object.keys(c).some(i=>parseInt(i)>f)}
11(r,_,I,k,i,D)?(r.supportedPromise=tJ(r,_,s,this.supportedCache),r.supportedPromise.then(i=>{if(!this.hls)return;r.supportedResult=i;let s=this.hls.levels,a=s.indexOf(r);i.error?this.warn(`MediaCapabilities decodingInfo error: "${i.error}" for level ${a} ${t7(i)}`):i.supported?i.decodingInfoResults.some(i=>!1===i.smooth||!1===i.powerEfficient)&&this.log(`MediaCapabilities decodingInfo for level ${a} not smooth or powerEfficient: ${t7(i)}`):(this.warn(`Unsupported MediaCapabilities decodingInfo result for level ${a} ${t7(i)}`),a>-1&&s.length>1&&(this.log(`Removing unsupported level ${a}`),this.hls.removeLevel(a),-1===this.hls.loadLevel&&(this.hls.nextLoadLevel=0)))}).catch(i=>{this.warn(`Error handling MediaCapabilities decodingInfo: ${i}`)})):r.supportedResult=tQ}if((b&&r.codecSet!==b||I&&r.videoRange!==I||f&&k>r.frameRate||!f&&k>0&&k<r.frameRate||null!=(h=r.supportedResult)&&null!=(h=h.decodingInfoResults)&&h.some(i=>!1===i.smooth))&&(!R||d!==C)){M.push(d);continue}let y=r.details,T=(c?null==y?void 0:y.partTarget:null==y?void 0:y.averagetargetduration)||x||1,A;A=f?o*i:l*i;let P=x&&a>=2*x&&0===n?r.averageBitrate:r.maxBitrate,O=this.getTimeToLoadFrag(w,A,P*T,!y||y.live);if(A>=P&&(d===u||0===r.loadError&&0===r.fragmentError||W(r,S.errorPenaltyExpireMs))&&(O<=w||!m(O)||L&&!this.bitrateTestDelay||O<g)){let i=this.forcedAutoLevel;return d!==E&&(-1===i||i!==E)&&(M.length&&this.trace(`Skipped level(s) ${M.join(",")} of ${s} max with CODECS and VIDEO-RANGE:"${v[M[0]].codecs}" ${v[M[0]].videoRange}; not compatible with "${b}" ${I}`),this.info(`switch candidate:${p}->${d} adjustedbw(${Math.round(A)})-bitrate=${Math.round(A-P)} ttfb:${w.toFixed(1)} avgDuration:${T.toFixed(1)} maxFetchDuration:${g.toFixed(1)} fetchDuration:${O.toFixed(1)} firstSelection:${R} codecSet:${r.codecSet} videoRange:${r.videoRange} hls.loadLevel:${E}`)),R&&(this.firstSelection=d),d}}return -1}set nextAutoLevel(i){let r=this.deriveNextAutoLevel(i);this._nextAutoLevel!==r&&(this.nextAutoLevelKey="",this._nextAutoLevel=r)}deriveNextAutoLevel(i){if(!this.hls)return -1;let{maxAutoLevel:r,minAutoLevel:s}=this.hls;return Math.min(Math.max(i,s),r)}},ic=function(i,r){let s=0,a=i.length-1,n=null,l=null;for(;s<=a;){let o=r(l=i[n=(s+a)/2|0]);if(o>0)s=n+1;else{if(!(o<0))return l;a=n-1}}return null};function ig(i,r,s=0,a=0,n=.005){let l=null;if(i){l=r[1+i.sn-r[0].sn]||null;let a=i.endDTS-s;a>0&&a<15e-7&&(s+=15e-7),l&&i.level!==l.level&&l.end<=i.end&&(l=r[2+i.sn-r[0].sn]||null)}else 0===s&&0===r[0].start&&(l=r[0]);if(l&&((!i||i.level===l.level)&&0===im(s,a,l)||function(i,r,s){if((null==r?void 0:r.start)===0&&r.level<i.level&&(r.endPTS||0)>0){let a=r.tagList.reduce((i,r)=>("INF"===r[0]&&(i+=parseFloat(r[1])),i),s);return i.start<=a}return!1}(l,i,Math.min(n,a))))return l;let o=ic(r,im.bind(null,s,a));return o&&(o!==i||!l)?o:l}function im(i=0,r=0,s){if(s.start<=i&&s.start+s.duration>i)return 0;let a=Math.min(r,s.duration+(s.deltaPTS?s.deltaPTS:0));return s.start+s.duration-a<=i?1:s.start-a>i&&s.start?-1:0}function ip(i,r,s){if(i&&i.startCC<=r&&i.endCC>=r){let a,n=i.fragments,{fragmentHint:l}=i;return l&&(n=n.concat(l)),ic(n,i=>i.cc<r?1:i.cc>r?-1:(a=i,i.end<=s?1:i.start>s?-1:0)),a||null}return null}function iv(i,r){return r===i.endSN&&i.fragmentHint?i.fragmentHint:i.fragments[1+r-i.startSN]||null}var iy=class extends X{constructor(i){super("error-controller",i.logger),this.hls=void 0,this.playlistError=0,this.hls=i,this.registerListeners()}registerListeners(){let i=this.hls;i.on(T.ERROR,this.onError,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.LEVEL_UPDATED,this.onLevelUpdated,this)}unregisterListeners(){let i=this.hls;i&&(i.off(T.ERROR,this.onError,this),i.off(T.ERROR,this.onErrorOut,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.LEVEL_UPDATED,this.onLevelUpdated,this))}destroy(){this.unregisterListeners(),this.hls=null}startLoad(i){}stopLoad(){this.playlistError=0}getVariantLevelIndex(i){return(null==i?void 0:i.type)===b.MAIN?i.level:this.getVariantIndex()}getVariantIndex(){var i;let r=this.hls,s=r.currentLevel;return null!=(i=r.loadLevelObj)&&i.details||-1===s?r.loadLevel:s}variantHasKey(i,r){if(i){var s;if(null!=(s=i.details)&&s.hasKey(r))return!0;let a=i.audioGroups;if(a)return this.hls.allAudioTracks.filter(i=>a.indexOf(i.groupId)>=0).some(i=>{var s;return null==(s=i.details)?void 0:s.hasKey(r)})}return!1}onManifestLoading(){this.playlistError=0}onLevelUpdated(){this.playlistError=0}onError(i,r){var s,a;if(r.fatal)return;let n=this.hls,l=r.context;switch(r.details){case E.FRAG_LOAD_ERROR:case E.FRAG_LOAD_TIMEOUT:case E.KEY_LOAD_ERROR:case E.KEY_LOAD_TIMEOUT:r.errorAction=this.getFragRetryOrSwitchAction(r);return;case E.FRAG_PARSING_ERROR:if(null!=(s=r.frag)&&s.gap){r.errorAction=iS();return}case E.FRAG_GAP:case E.FRAG_DECRYPT_ERROR:r.errorAction=this.getFragRetryOrSwitchAction(r),r.errorAction.action=2;return;case E.PLAYLIST_UNCHANGED_ERROR:case E.LEVEL_EMPTY_ERROR:case E.LEVEL_PARSING_ERROR:{let i=r.parent===b.MAIN?r.level:n.loadLevel;r.details===E.LEVEL_EMPTY_ERROR&&null!=(a=r.context)&&null!=(a=a.levelDetails)&&a.live?r.errorAction=this.getPlaylistRetryOrSwitchAction(r,i):(r.levelRetry=!1,r.errorAction=this.getLevelSwitchAction(r,i))}return;case E.LEVEL_LOAD_ERROR:case E.LEVEL_LOAD_TIMEOUT:"number"==typeof(null==l?void 0:l.level)&&(r.errorAction=this.getPlaylistRetryOrSwitchAction(r,l.level));return;case E.AUDIO_TRACK_LOAD_ERROR:case E.AUDIO_TRACK_LOAD_TIMEOUT:case E.SUBTITLE_LOAD_ERROR:case E.SUBTITLE_TRACK_LOAD_TIMEOUT:if(l){let i=n.loadLevelObj;i&&(l.type===R.AUDIO_TRACK&&i.hasAudioGroup(l.groupId)||l.type===R.SUBTITLE_TRACK&&i.hasSubtitleGroup(l.groupId))&&(r.errorAction=this.getPlaylistRetryOrSwitchAction(r,n.loadLevel),r.errorAction.action=2,r.errorAction.flags=1)}return;case E.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:r.errorAction={action:2,flags:2};return;case E.KEY_SYSTEM_SESSION_UPDATE_FAILED:case E.KEY_SYSTEM_STATUS_INTERNAL_ERROR:case E.KEY_SYSTEM_NO_SESSION:r.errorAction={action:2,flags:4};return;
11case E.BUFFER_ADD_CODEC_ERROR:case E.REMUX_ALLOC_ERROR:case E.BUFFER_APPEND_ERROR:r.errorAction||(r.errorAction=this.getLevelSwitchAction(r,r.level));return;case E.MEDIA_SOURCE_REQUIRES_RESET:r.errorAction||(r.errorAction=this.getLevelSwitchAction(r,r.level)),r.errorAction.flags|=24;return;case E.INTERNAL_EXCEPTION:case E.BUFFER_APPENDING_ERROR:case E.BUFFER_APPEND_NO_PROGRESS:case E.BUFFER_FULL_ERROR:case E.LEVEL_SWITCH_ERROR:case E.BUFFER_STALLED_ERROR:case E.BUFFER_SEEK_OVER_HOLE:case E.BUFFER_NUDGE_ON_STALL:r.errorAction=iS();return}r.type===y.KEY_SYSTEM_ERROR&&(r.levelRetry=!1,r.errorAction=iS())}getPlaylistRetryOrSwitchAction(i,r){let s=K(this.hls.config.playlistLoadPolicy,i),a=this.playlistError++;if(j(s,a,U(i),i.response))return{action:5,flags:0,retryConfig:s,retryCount:a};let n=this.getLevelSwitchAction(i,r);return s&&(n.retryConfig=s,n.retryCount=a),n}getFragRetryOrSwitchAction(i){let r=this.hls,s=this.getVariantLevelIndex(i.frag),a=r.levels[s],{fragLoadPolicy:n,keyLoadPolicy:l}=r.config,o=K(N(i)?l:n,i),h=r.levels.reduce((i,r)=>i+r.fragmentError,0);if(a&&(i.details!==E.FRAG_GAP&&a.fragmentError++,!G(i)&&j(o,h,U(i),i.response)))return{action:5,flags:0,retryConfig:o,retryCount:h};let d=this.getLevelSwitchAction(i,s);return o&&(d.retryConfig=o,d.retryCount=h),d}getLevelSwitchAction(i,r){let s=this.hls;null==r&&(r=s.loadLevel);let a=this.hls.levels[r];if(a){var n,l,o,h;let r=i.details;a.loadError++,a.loadErrorTime=self.performance.now(),r===E.BUFFER_APPEND_ERROR&&a.fragmentError++;let d=-1,{levels:u,loadLevel:f,minAutoLevel:c,maxAutoLevel:g}=s;s.autoLevelEnabled||s.config.preserveManualLevelOnError||(s.loadLevel=-1);let m=null==(n=i.frag)?void 0:n.type,p=(m===b.AUDIO&&r===E.FRAG_PARSING_ERROR||"audio"===i.sourceBufferName&&iE(i))&&u.some(({audioCodec:i})=>a.audioCodec!==i),v="video"===i.sourceBufferName&&iE(i)&&u.some(({codecSet:i,audioCodec:r})=>a.codecSet!==i&&a.audioCodec===r),{type:y,groupId:T}=null==(l=i.context)?{}:l;for(let n=u.length;n--;){let l=(n+f)%u.length;if(l!==f&&l>=c&&l<=g&&(0===u[l].loadError||W(u[l],s.config.errorPenaltyExpireMs))){let s=u[l];if(r===E.FRAG_GAP&&m===b.MAIN&&i.frag){let r=u[l].details;if(r){let s=ig(i.frag,r.fragments,i.frag.start);if(null!=s&&s.gap)continue}}else if(y===R.AUDIO_TRACK&&s.hasAudioGroup(T)||y===R.SUBTITLE_TRACK&&s.hasSubtitleGroup(T))continue;else if(m===b.AUDIO&&null!=(o=a.audioGroups)&&o.some(i=>s.hasAudioGroup(i))||m===b.SUBTITLE&&null!=(h=a.subtitleGroups)&&h.some(i=>s.hasSubtitleGroup(i))||p&&a.audioCodec===s.audioCodec||v&&a.codecSet===s.codecSet||!p&&a.audioCodec!==s.audioCodec)continue;d=l;break}}if(d>-1&&s.loadLevel!==d)return i.levelRetry=!0,this.playlistError=0,{action:2,flags:0,nextAutoLevel:d}}return{action:2,flags:1}}onErrorOut(i,r){var s,a;switch(null==(s=r.errorAction)?void 0:s.action){case 0:break;case 2:this.sendAlternateToPenaltyBox(r),r.errorAction.resolved||r.details===E.FRAG_GAP||r.details===E.PLAYLIST_UNCHANGED_ERROR||iT(r)||(r.fatal=!0)}if(16&((null==(a=r.errorAction)?void 0:a.flags)||0)&&this.hls.recoverMediaError(),r.fatal)return void this.hls.stopLoad()}sendAlternateToPenaltyBox(i){let r=this.hls,s=i.errorAction;if(!s)return;let a=s.nextAutoLevel;if(0===s.flags)this.switchLevel(i,a);else if(8&s.flags){let i=this.hls.levels,r=i.length;for(let s=r;s--;)"SDR"===i[s].videoRange?void 0===a&&(a=s):(i[s].fragmentError++,i[s].loadError++)}else if(2&s.flags){let a=this.getVariantLevelIndex(i.frag),n=r.levels[a],l=null==n?void 0:n.attrs["HDCP-LEVEL"];s.hdcpLevel=l;let o="NONE"===l;l&&!o?(r.maxHdcpLevel=t3[t3.indexOf(l)-1],s.resolved=!0,this.warn(`Restricting playback to HDCP-LEVEL of "${r.maxHdcpLevel}" or lower`)):(o&&this.warn("HDCP policy resticted output with HDCP-LEVEL=NONE"),s.flags|=4)}if(4&s.flags){let r=i.decryptdata;if(r){let a=this.hls.levels,o=a.length;for(let s=o;s--;)if(this.variantHasKey(a[s],r)){var n,l;this.log(`Banned key found in level ${s} (${a[s].bitrate}bps) or audio group "${null==(n=a[s].audioGroups)?void 0:n.join(",")}" (${null==(l=i.frag)?void 0:l.type} fragment) ${ey(r.keyId||[])}`),a[s].fragmentError++,a[s].loadError++,this.log(`Removing level ${s} with key error (${i.error})`),this.hls.removeLevel(s)}let h=i.frag;if(this.hls.levels.length<o)s.resolved=!0;else if(h&&h.type!==b.MAIN){let i=h.decryptdata;i&&!r.matches(i)&&(s.resolved=!0)}}}s.resolved||this.switchLevel(i,a)}switchLevel(i,r){if(void 0!==r&&i.errorAction&&(this.warn(`switching to level ${r} after ${i.details}`),this.hls.nextAutoLevel=r,i.errorAction.resolved=!0,this.hls.nextLoadLevel=this.hls.nextAutoLevel,i.details===E.BUFFER_ADD_CODEC_ERROR&&i.mimeType&&"audiovideo"!==i.sourceBufferName)){let r=tz(i.mimeType),s=this.hls.levels;for(let a=s.length;a--;)s[a][`${i.sourceBufferName}Codec`]===r&&(this.log(`Removing level ${a} for ${i.details} ("${r}" not supported)`),this.hls.removeLevel(a))}}};function iE(i){let r=i.details;return r===E.BUFFER_ADD_CODEC_ERROR||r===E.MEDIA_SOURCE_REQUIRES_RESET||r===E.BUFFER_APPEND_ERROR&&!iT(i)}function iT(i){return i.details===E.BUFFER_APPEND_ERROR&&("QuotaExceededError"===i.error.name||"InvalidStateError"===i.error.name)}function iS(i){let r={action:0,flags:0};return i&&(r.resolved=!0),r}var iA="NOT_LOADED",iL="APPENDING",iR="PARTIAL",ib=class{constructor(i){this.activePartLists=Object.create(null),this.endListFragments=Object.create(null),this.fragments=Object.create(null),this.timeRanges=Object.create(null),this.bufferPadding=.2,this.hls=void 0,this.hasGaps=!1,this.hls=i,this._registerListeners()}_registerListeners(){let{hls:i}=this;i&&(i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.BUFFER_APPENDED,this.onBufferAppended,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this),i.on(T.FRAG_LOADED,this.onFragLoaded,this))}_unregisterListeners(){let{hls:i}=this;i&&(i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.BUFFER_APPENDED,this.onBufferAppended,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this),i.off(T.FRAG_LOADED,this.onFragLoaded,this))}destroy(){this._unregisterListeners(),this.hls=this.fragments=this.activePartLists=this.endListFragments=this.timeRanges=null}getAppendedFrag(i,r){let s=this.activePartLists[r];if(s)for(let r=s.length;r--;){let a=s[r];if(!a)break;if(a.start<=i&&i<=a.end&&a.loaded)return a}return this.getBufferedFrag(i,r)}getBufferedFrag(i,r){return this.getFragAtPos(i,r,!0)}getFragAtPos(i,r,s){let{fragments:a}=this,n=Object.keys(a);for(let l=n.length;l--;){let o=a[n[l]];if((null==o?void 0:o.body.type)===r&&(!s||o.buffered)){let r=o.body;if(r.start<=i&&i<=r.end)return r}}return null}detectEvictedFragments(i,r,s,a,n,l){this.timeRanges&&(this.timeRanges[i]=r);let o=(null==n?void 0:n.fragment.sn)||-1;
11Object.keys(this.fragments).forEach(n=>{let h=this.fragments[n];if(!h||!this.hls)return;let d=h.body;if(o>=d.sn)return;if(!h.buffered&&(!h.loaded||l)){d.type===s&&this.removeFragment(d);return}let u=h.range[i];if(u){if(0===u.time.length)return void this.removeFragment(d);if(u.time.some(i=>{let s=!this.isTimeBuffered(i.startPTS,i.endPTS,r);return s&&this.removeFragment(d),s}),a&&a!==d&&tM()){let i=a.endPTS,r=d.startPTS;if(i&&r&&h.range.video){let s=r-i;s<0&&s>-.1&&(this.removeFragment(d),this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:i+.004,endOffset:1/0,type:"video"}))}}}})}detectPartialFragments(i){let r=this.timeRanges,{frag:s,part:a,id:n}=i;if(!r||!_(s))return;let l=ik(s),o=this.fragments[l];if(!o||o.buffered&&s.gap)return;let h=!s.relurl;Object.keys(r).forEach(i=>{let l=s.elementaryStreams[i];if(!l)return;let d=r[i],u=h||!0===l.partial;o.range[i]=this.getBufferedTimes(s,a,u,d),this.detectEvictedFragments(i,d,n,s,a)}),o.loaded=null;let d=Object.keys(o.range);if(d.length){if(this.bufferedEnd(o,s),iI(o)||this.removeParts(s.sn-1,s.type),!a){let i=Math.min(.004,s.duration);d.some(r=>{var a;let n=null==(a=o.range[r])?void 0:a.time,l=0===n.length||1===n.length&&n[0].endPTS-n[0].startPTS<i;return l&&this.addAsGap(s),l})}}else this.removeFragment(s)}addAsGap(i){i.gap=!0,this.removeFragment(i),this.fragBuffered(i,!0)}bufferedEnd(i,r){i.buffered=!0,(i.body.endList=r.endList||i.body.endList)&&!r.gap&&(this.endListFragments[i.body.type]=i)}removeParts(i,r){let s=this.activePartLists[r];s&&(this.activePartLists[r]=iD(s,r=>r.fragment.sn>=i))}fragBuffered(i,r){let s=ik(i),a=this.fragments[s];return!a&&r&&(a=this.fragments[s]={body:i,appendedPTS:null,loaded:null,buffered:!1,range:Object.create(null)},i.gap&&(this.hasGaps=!0)),a&&(a.loaded=null,this.bufferedEnd(a,i)),a}getBufferedTimes(i,r,s,a){let n={time:[],partial:s},l=i.start,o=i.end,h=i.minEndPTS||o,d=i.maxStartPTS||l;for(let i=0;i<a.length;i++){let r=a.start(i)-this.bufferPadding,s=a.end(i)+this.bufferPadding;if(d>=r&&h<=s){n.time.push({startPTS:Math.max(l,a.start(i)),endPTS:Math.min(o,a.end(i))});break}if(l<s&&o>r){let r=Math.max(l,a.start(i)),s=Math.min(o,a.end(i));s>r&&(n.partial=!0,n.time.push({startPTS:r,endPTS:s}))}else if(o<=r)break}return n}getPartialFragment(i){let r=null,s,a,n,l=0,{bufferPadding:o,fragments:h}=this;return Object.keys(h).forEach(d=>{let u=h[d];u&&iI(u)&&(a=u.body.start-o,n=u.body.end+o,i>=a&&i<=n&&l<=(s=Math.min(i-a,n-i))&&(r=u.body,l=s))}),r}isEndListAppended(i){let r=this.endListFragments[i];return void 0!==r&&(r.buffered||iI(r))}getState(i){let r=ik(i),s=this.fragments[r];return s?s.buffered?iI(s)?iR:"OK":iL:iA}isTimeBuffered(i,r,s){let a,n;for(let l=0;l<s.length;l++){if(a=s.start(l)-this.bufferPadding,n=s.end(l)+this.bufferPadding,i>=a&&r<=n)return!0;if(r<=a)break}return!1}onManifestLoading(){this.removeAllFragments()}onFragLoaded(i,r){if(!_(r.frag)||r.frag.bitrateTest)return;let s=r.frag,a=r.part?null:r,n=ik(s);this.fragments[n]={body:s,appendedPTS:null,loaded:a,buffered:!1,range:Object.create(null)}}onBufferAppended(i,r){let{frag:s,part:a,timeRanges:n}=r;if(!_(s))return;let l=s.type;if(a){let i=this.activePartLists[l];i||(this.activePartLists[l]=i=[]),i.push(a)}this.timeRanges=n}onFragBuffered(i,r){this.detectPartialFragments(r)}hasFragment(i){let r=ik(i);return!!this.fragments[r]}hasFragments(i){let{fragments:r}=this,s=Object.keys(r);if(!i)return s.length>0;for(let a=s.length;a--;){let n=r[s[a]];if((null==n?void 0:n.body.type)===i)return!0}return!1}hasParts(i){var r;return!!(null!=(r=this.activePartLists[i])&&r.length)}getBackBufferEvictionEnd(i,r,s){let{fragments:a}=this,n=0,l=0,o=Object.keys(a);for(let h=0;h<o.length;h++){let d=a[o[h]];if(!d||!d.buffered||d.body.type!==r)continue;let u=d.body;if(u.gap)return 0;let f=u.hasStats&&u.stats.loaded||u.byteLength||u.bitrate&&8*u.bitrate*u.duration;if(u.end<=i&&f&&(n+=f,l=Math.max(l,u.end),n>=s))return l}return l>0?l:0}removeFragmentsInRange(i,r,s,a,n){a&&!this.hasGaps||Object.keys(this.fragments).forEach(l=>{let o=this.fragments[l];if(!o)return;let h=o.body;h.type!==s||a&&!h.gap||h.start<r&&h.end>i&&(o.buffered||n)&&this.removeFragment(h)})}removeFragment(i){let r=ik(i);i.clearElementaryStreamInfo();let s=this.activePartLists[i.type];if(s){let r=i.sn;this.activePartLists[i.type]=iD(s,i=>i.fragment.sn!==r)}delete this.fragments[r],i.endList&&delete this.endListFragments[i.type]}removeAllFragments(){var i;this.fragments=Object.create(null),this.endListFragments=Object.create(null),this.activePartLists=Object.create(null),this.hasGaps=!1;let r=null==(i=this.hls)||null==(i=i.latestLevelDetails)?void 0:i.partList;r&&r.forEach(i=>
11i.clearElementaryStreamInfo())}};function iI(i){var r,s,a,n;return i.buffered&&!!(i.body.gap||null!=(r=i.range.video)&&r.partial||null!=(s=i.range.audio)&&s.partial||null!=(a=i.range.audiovideo)&&a.partial||null!=(n=i.range.subs)&&n.partial)}function ik(i){return`${i.type}_${i.level}_${i.sn}`}function iD(i,r){return i.filter(i=>{let s=r(i);return s||i.clearElementaryStreamInfo(),s})}var iP=class{constructor(i,r,s){this.subtle=void 0,this.aesIV=void 0,this.aesMode=void 0,this.subtle=i,this.aesIV=r,this.aesMode=s}decrypt(i,r){switch(this.aesMode){case 0:return this.subtle.decrypt({name:"AES-CBC",iv:this.aesIV},r,i);case 1:return this.subtle.decrypt({name:"AES-CTR",counter:this.aesIV,length:64},r,i);default:throw Error(`[AESCrypto] invalid aes mode ${this.aesMode}`)}}},i_=class{constructor(){this.rcon=[0,1,2,4,8,16,32,64,128,27,54],this.subMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.invSubMix=[new Uint32Array(256),new Uint32Array(256),new Uint32Array(256),new Uint32Array(256)],this.sBox=new Uint32Array(256),this.invSBox=new Uint32Array(256),this.key=new Uint32Array,this.ksRows=0,this.keySize=0,this.keySchedule=void 0,this.invKeySchedule=void 0,this.initTable()}uint8ArrayToUint32Array_(i){let r=new DataView(i),s=new Uint32Array(4);for(let i=0;i<4;i++)s[i]=r.getUint32(4*i);return s}initTable(){let i=this.sBox,r=this.invSBox,s=this.subMix,a=s[0],n=s[1],l=s[2],o=s[3],h=this.invSubMix,d=h[0],u=h[1],f=h[2],c=h[3],g=new Uint32Array(256),m=0,p=0,v=0;for(v=0;v<256;v++)v<128?g[v]=v<<1:g[v]=v<<1^283;for(v=0;v<256;v++){let s=p^p<<1^p<<2^p<<3^p<<4;s=s>>>8^255&s^99,i[m]=s,r[s]=m;let h=g[m],v=g[h],y=g[v],E=257*g[s]^0x1010100*s;a[m]=E<<24|E>>>8,n[m]=E<<16|E>>>16,l[m]=E<<8|E>>>24,o[m]=E,E=0x1010101*y^65537*v^257*h^0x1010100*m,d[s]=E<<24|E>>>8,u[s]=E<<16|E>>>16,f[s]=E<<8|E>>>24,c[s]=E,m?(m=h^g[g[g[y^h]]],p^=g[g[p]]):m=p=1}}expandKey(i){let r=this.uint8ArrayToUint32Array_(i),s=!0,a=0;for(;a<r.length&&s;)s=r[a]===this.key[a],a++;if(s)return;this.key=r;let n=this.keySize=r.length;if(4!==n&&6!==n&&8!==n)throw Error("Invalid aes key size="+n);let l=this.ksRows=(n+6+1)*4,o,h,d=this.keySchedule=new Uint32Array(l),u=this.invKeySchedule=new Uint32Array(l),f=this.sBox,c=this.rcon,g=this.invSubMix,m=g[0],p=g[1],v=g[2],y=g[3],E,T;for(o=0;o<l;o++){if(o<n){E=d[o]=r[o];continue}T=E,o%n==0?T=(f[(T=T<<8|T>>>24)>>>24]<<24|f[T>>>16&255]<<16|f[T>>>8&255]<<8|f[255&T])^c[o/n|0]<<24:n>6&&o%n==4&&(T=f[T>>>24]<<24|f[T>>>16&255]<<16|f[T>>>8&255]<<8|f[255&T]),d[o]=E=(d[o-n]^T)>>>0}for(h=0;h<l;h++)o=l-h,T=3&h?d[o]:d[o-4],h<4||o<=4?u[h]=T:u[h]=m[f[T>>>24]]^p[f[T>>>16&255]]^v[f[T>>>8&255]]^y[f[255&T]],u[h]=u[h]>>>0}networkToHostOrderSwap(i){return i<<24|(65280&i)<<8|(0xff0000&i)>>8|i>>>24}decrypt(i,r,s){let a=this.keySize+6,n=this.invKeySchedule,l=this.invSBox,o=this.invSubMix,h=o[0],d=o[1],u=o[2],f=o[3],c=this.uint8ArrayToUint32Array_(s),g=c[0],m=c[1],p=c[2],v=c[3],y=new Int32Array(i),E=new Int32Array(y.length),T,S,A,L,R,b,I,k,D,P,_,C,x,w,M=this.networkToHostOrderSwap;for(;r<y.length;){for(D=M(y[r]),P=M(y[r+1]),_=M(y[r+2]),C=M(y[r+3]),R=D^n[0],b=C^n[1],I=_^n[2],k=P^n[3],x=4,w=1;w<a;w++)T=h[R>>>24]^d[b>>16&255]^u[I>>8&255]^f[255&k]^n[x],S=h[b>>>24]^d[I>>16&255]^u[k>>8&255]^f[255&R]^n[x+1],A=h[I>>>24]^d[k>>16&255]^u[R>>8&255]^f[255&b]^n[x+2],L=h[k>>>24]^d[R>>16&255]^u[b>>8&255]^f[255&I]^n[x+3],R=T,b=S,I=A,k=L,x+=4;T=l[R>>>24]<<24^l[b>>16&255]<<16^l[I>>8&255]<<8^l[255&k]^n[x],S=l[b>>>24]<<24^l[I>>16&255]<<16^l[k>>8&255]<<8^l[255&R]^n[x+1],A=l[I>>>24]<<24^l[k>>16&255]<<16^l[R>>8&255]<<8^l[255&b]^n[x+2],L=l[k>>>24]<<24^l[R>>16&255]<<16^l[b>>8&255]<<8^l[255&I]^n[x+3],E[r]=M(T^g),E[r+1]=M(L^m),E[r+2]=M(A^p),E[r+3]=M(S^v),g=D,m=P,p=_,v=C,r+=4}return E.buffer}},iC=class{constructor(i,r,s){this.subtle=void 0,this.key=void 0,this.aesMode=void 0,this.subtle=i,this.key=r,this.aesMode=s}expandKey(){let i=function(i){switch(i){case 0:return"AES-CBC";case 1:return"AES-CTR";default:throw Error(`[FastAESKey] invalid aes mode ${i}`)}}(this.aesMode);return this.subtle.importKey("raw",this.key,{name:i},!1,["encrypt","decrypt"])}},ix=class{constructor(i,r){if(this.logEnabled=!0,this.decryptRange=void 0,this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null,this.useSoftware=void 0,this.enableSoftw
11areAES=void 0,this.enableSoftwareAES=i.enableSoftwareAES,!0!==r)try{let i=self.crypto;i&&(this.subtle=i.subtle||i.webkitSubtle)}catch{}this.useSoftware=!this.subtle}destroy(){this.subtle=null,this.softwareDecrypter=null,this.key=null,this.fastAesKey=null,this.remainderData=null,this.currentIV=null,this.currentResult=null}isSync(){return this.useSoftware}flush(){let i,r,{currentResult:s,remainderData:a}=this;if(!s||a)return this.reset(),null;let n=new Uint8Array(s);this.reset();let l=this.decryptRange;return l?0===l.start&&l.end>=n.length?n:n.slice(l.start,l.end):(r=(i=n.byteLength)&&new DataView(n.buffer).getUint8(i-1))?n.slice(0,i-r):n}reset(){this.currentResult=null,this.currentIV=null,this.remainderData=null,this.softwareDecrypter&&(this.softwareDecrypter=null)}decrypt(i,r,s,a,n){return this.decryptRange=n,this.useSoftware||n?new Promise((n,l)=>{let o=ArrayBuffer.isView(i)?i:new Uint8Array(i);this.softwareDecrypt(o,r,s,a);let h=this.flush();h?n(h.buffer):l(Error("[softwareDecrypt] Failed to decrypt data"))}):this.webCryptoDecrypt(new Uint8Array(i),r,s,a)}softwareDecrypt(i,r,s,a){let{currentIV:n,currentResult:l,remainderData:o}=this;if(0!==a||16!==r.byteLength)return et.warn("SoftwareDecrypt: can only handle AES-128-CBC"),null;this.logOnce("JS AES decrypt"),o&&(i=tE(o,i),this.remainderData=null);let h=this.getValidChunk(i);if(!h.length)return null;n&&(s=n);let d=this.softwareDecrypter;return d||(d=this.softwareDecrypter=new i_),d.expandKey(r),this.currentResult=d.decrypt(h.buffer,0,s),this.currentIV=h.slice(-16).buffer,l||null}webCryptoDecrypt(i,r,s,a){if(this.key!==r||!this.fastAesKey){if(!this.subtle)return Promise.resolve(this.onWebCryptoError(i,r,s,a));this.key=r,this.fastAesKey=new iC(this.subtle,r,a)}return this.fastAesKey.expandKey().then(r=>this.subtle?(this.logOnce("WebCrypto AES decrypt"),new iP(this.subtle,new Uint8Array(s),a).decrypt(i.buffer,r)):Promise.reject(Error("web crypto not initialized"))).catch(n=>(et.warn(`[decrypter]: WebCrypto Error, disable WebCrypto API, ${n.name}: ${n.message}`),this.onWebCryptoError(i,r,s,a)))}onWebCryptoError(i,r,s,a){let n=this.enableSoftwareAES;if(n){this.useSoftware=!0,this.logEnabled=!0,this.softwareDecrypt(i,r,s,a);let n=this.flush();if(n)return n.buffer}throw Error("WebCrypto"+(n?" and softwareDecrypt":"")+": failed to decrypt data")}getValidChunk(i){let r=i,s=i.length-i.length%16;return s!==i.length&&(r=i.slice(0,s),this.remainderData=i.slice(s)),r}logOnce(i){this.logEnabled&&(et.log(`[decrypter]: ${i}`),this.logEnabled=!1)}},iw=class{constructor(i){this.config=void 0,this.loader=null,this.partLoadTimeout=-1,this.config=i}destroy(){this.loader&&(this.loader.destroy(),this.loader=null)}abort(){this.loader&&this.loader.abort()}load(i,r,s,a){let n=i.url;if(!n)return Promise.reject(new i$({type:y.NETWORK_ERROR,details:E.FRAG_LOAD_ERROR,fatal:!1,frag:i,error:Error(`Fragment does not have a ${n?"part list":"url"}`),networkDetails:null}));this.abort();let l=this.config,o=l.fLoader,h=l.loader;return new Promise((d,u)=>{if(this.loader&&this.loader.destroy(),i.gap){if(i.tagList.some(i=>"GAP"===i[0]))return void u(iF(i));i.gap=!1}let f=this.loader=o?new o(l):new h(l),c=iM(i,null,r);i.loader=f;let g=V(l.fragLoadPolicy.default),m={loadPolicy:g,timeout:g.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:"initSegment"===i.sn?1/0:131072};f.stats.retry=i.stats.retry,i.stats=f.stats;let p={onSuccess:(r,s,a,n)=>{this.resetLoader(i,f);let l=r.data;a.resetIV&&i.decryptdata&&(i.decryptdata.iv=new Uint8Array(l.slice(0,16)),l=l.slice(16)),d({frag:i,part:null,payload:l,networkDetails:n})},onError:(r,s,a,l)=>{this.resetLoader(i,f),u(new i$({type:y.NETWORK_ERROR,details:E.FRAG_LOAD_ERROR,fatal:!1,frag:i,response:$({url:n,data:void 0},r),error:Error(`HTTP Error ${r.code} ${r.text}`),networkDetails:a,stats:l}))},onAbort:(r,s,a)=>{this.resetLoader(i,f),u(new i$({type:y.NETWORK_ERROR,details:E.INTERNAL_ABORTED,fatal:!1,frag:i,error:Error("Aborted"),networkDetails:a,stats:r}))},onTimeout:(r,s,a)=>{this.resetLoader(i,f),u(new i$({type:y.NETWORK_ERROR,details:E.FRAG_LOAD_TIMEOUT,fatal:!1,frag:i,error:Error(`Timeout after ${m.timeout}ms`),networkDetails:a,stats:r}))}};if(s){let r=this.gateProgress(s,a);p.onProgress=(s,a,n,l)=>r({frag:i,part:null,payload:n,networkDetails:l})}f.load(c,m,p)})}gateProgress(i,r){let s=i;if(r){let a=[],n=!1;r.then(()=>{n=!0,a.forEach(r=>i(r)),a.length=0}
11).catch(()=>{}),s=r=>{n?i(r):a.push(r)}}return s}loadPart(i,r,s){this.abort();let a=this.config,n=a.fLoader,l=a.loader;return new Promise((o,h)=>{if(this.loader&&this.loader.destroy(),i.gap||r.gap)return void h(iF(i,r));let d=this.loader=n?new n(a):new l(a),u=iM(i,r);i.loader=d;let f=V(a.fragLoadPolicy.default),c={loadPolicy:f,timeout:f.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0,highWaterMark:131072};r.stats=d.stats,d.load(u,c,{onSuccess:(a,n,l,h)=>{this.resetLoader(i,d),this.updateStatsFromPart(i,r);let u={frag:i,part:r,payload:a.data,networkDetails:h};s(u),o(u)},onError:(s,a,n,l)=>{this.resetLoader(i,d),h(new i$({type:y.NETWORK_ERROR,details:E.FRAG_LOAD_ERROR,fatal:!1,frag:i,part:r,response:$({url:u.url,data:void 0},s),error:Error(`HTTP Error ${s.code} ${s.text}`),networkDetails:n,stats:l}))},onAbort:(s,a,n)=>{i.stats.aborted=r.stats.aborted,this.resetLoader(i,d),h(new i$({type:y.NETWORK_ERROR,details:E.INTERNAL_ABORTED,fatal:!1,frag:i,part:r,error:Error("Aborted"),networkDetails:n,stats:s}))},onTimeout:(s,a,n)=>{this.resetLoader(i,d),h(new i$({type:y.NETWORK_ERROR,details:E.FRAG_LOAD_TIMEOUT,fatal:!1,frag:i,part:r,error:Error(`Timeout after ${c.timeout}ms`),networkDetails:n,stats:s}))}})})}updateStatsFromPart(i,r){let s=i.stats,a=r.stats,n=a.total;if(s.loaded+=a.loaded,n){let a=Math.round(i.duration/r.duration),l=Math.min(Math.round(s.loaded/n),a),o=(a-l)*Math.round(s.loaded/l);s.total=s.loaded+o}else s.total=Math.max(s.loaded,s.total);let l=s.loading,o=a.loading;l.start?l.first+=o.first-o.start:(l.start=o.start,l.first=o.first),l.end=o.end}resetLoader(i,r){i.loader=null,i.url=null,this.loader===r&&(self.clearTimeout(this.partLoadTimeout),this.loader=null),r.destroy()}};function iM(i,r=null,s){let a=r||i,n={type:R.MEDIA_FRAGMENT,frag:i,part:r,responseType:"arraybuffer",url:a.url,headers:{},rangeStart:0,rangeEnd:0},l=iO(i,r,s);return l.resetIV&&(n.resetIV=!0),l.byteRange&&(n.rangeStart=l.byteRange.start,n.rangeEnd=l.byteRange.end),n}function iO(i,r=null,s){let a={},n=r||i,l=n.byteRangeStartOffset,o=n.byteRangeEndOffset;if(m(l)&&m(o)){var h,d;if(("initSegment"===i.sn||s)&&("AES-128"===(d=null==(h=i.decryptdata)?void 0:h.method)||"AES-256"===d)){let i=16*Math.floor(l/16),r=16*Math.ceil(o/16);a.decryptRange={start:l-i,end:o-i},i>=16&&(a.resetIV=!0,i-=16),a.byteRange={start:i,end:r}}else a.byteRange={start:l,end:o}}return a}function iF(i,r){let s=Error(`GAP ${i.gap?"tag":"attribute"} found`),a={type:y.MEDIA_ERROR,details:E.FRAG_GAP,fatal:!1,frag:i,error:s,networkDetails:null};return r&&(a.part=r),(r||i).stats.aborted=!0,new i$(a)}var i$=class extends Error{constructor(i){super(i.error.message),this.data=void 0,this.data=i}},iB=class extends X{constructor(i,r){super(i,r),this._boundTick=void 0,this._tickTimer=null,this._tickInterval=null,this._tickCallCount=0,this._boundTick=this.tick.bind(this)}destroy(){this.onHandlerDestroying(),this.onHandlerDestroyed()}onHandlerDestroying(){this.clearNextTick(),this.clearInterval()}onHandlerDestroyed(){}hasInterval(){return!!this._tickInterval}hasNextTick(){return!!this._tickTimer}setInterval(i){return!this._tickInterval&&(this._tickCallCount=0,this._tickInterval=self.setInterval(this._boundTick,i),!0)}clearInterval(){return!!this._tickInterval&&(self.clearInterval(this._tickInterval),this._tickInterval=null,!0)}clearNextTick(){return!!this._tickTimer&&(self.clearTimeout(this._tickTimer),this._tickTimer=null,!0)}tick(){this._tickCallCount++,1===this._tickCallCount?(this.doTick(),this._tickCallCount>1&&this.tickImmediate()):this.log(`possible exception thrown in task-loop (${this.constructor.name}.doTick)`),this._tickCallCount=0}tickImmediate(){this.clearNextTick(),this._tickTimer=self.setTimeout(this._boundTick,0)}doTick(){}},iU=class{constructor(i,r,s,a=0,n=-1,l=!1,o,h,d){this.level=void 0,this.sn=void 0,this.part=void 0,this.id=void 0,this.size=void 0,this.partial=void 0,this.iframe=void 0,this.duration=void 0,this.decryptRange=void 0,this.transmuxing=iN(),this.buffering={audio:iN(),video:iN(),audiovideo:iN()},this.level=i,this.sn=r,this.id=s,this.size=a,this.part=n,this.partial=l,this.duration=o||0,this.decryptRange=d,this.iframe=h||!1}};function iN(){return{start:0,executeStart:0,executeEnd:0,end:0}}var iG={length:0,start:()=>0,end:()=>0},iK=class i{static isBuffered(r,s){if(r){let a=i.getBuffered(r);for(let i=a.length;i--;)if(s>=a.start(i)&&s<=a.end(i))return!0}return!1}static bufferedRanges(r){if(r){let s=i.getBuffered(r);return i.timeRangesToArray(s)}return[]}static timeRangesToArray(i){let r=[];for(let s=0;s<i.length;s++)r.push({start:i.start(s),end:i.end(s)});return r}static bufferInfo(r,s,a){if(r){let n=i.bufferedRanges(r);if(n.length)return i.bufferedInfo(n,s,a)}return{len:0,start:s,end:s,bufferedIndex:-1}}static bufferedInfo(i,r,s){r=Math.max(0,r),i.length>1&&i.sort((i,r)=>i.start-r.start||r.end-i.end);let a=-1,n=[];if(s)for(let l=0;l<i.length;l++){r>=i[l].start&&r<=i[l].end&&(a=l);let o=n.length;if(o){let r=n[o-1].end;i[l].start-r<s?i[l].end>r&&(n[o-1].end=i[l].end):n.push(i[l])}else n.push(i[l])}else n=i;let l=0,o,h=r,d=r;for(let i=0;i<n.length;i++){let u=n[i].start,f=n[i].end;if(-1===a&&r>=u&&r<=f&&(a=i),r+s>=u&&r<f)h=u,l=(d=f)-r;else if(r+s<u){o=u;break}}return{len:l,start:h||0,end:d||0,nextStart:o,buffered:i,bufferedIndex:a}}static getBuffered(i){try{return i.buffered||iG}catch(i){return et.log("failed to get media.buffered",i),iG}}},iH=/\{\$([a-zA-Z0-9-_]+)\}/g;function iV(i){return iH.lastIndex=0,iH.test(i)}function ij(i,r){if(null!==i.variableList||i.hasVariableRefs){let s=i.variableList;return r.replace(iH,r=>{let a=r.substring(2,r.length-1),n=null==s?void 0:s[a];return void 0===n?(i.playlistParsingError||(i.playlistParsingError=Error(`Missing preceding EXT-X-DEFINE tag for Variable Reference: "${a}"`)),r):n})}return r}function iq(i,r,s){let a,n,l=i.variableList;if(l||(i.variableList=l={}),"QUERYPARAM"in r){a=r.QUERYPARAM;try{let i=new self.URL(s).searchParams;if(i.has(a))n=i.get(a);else throw Error(`"${a}" does not match any query parameter in URI: "${s}"`)}catch(r){i.playlistParsingError||(i.playlistParsingError=Error(`EXT-X-DEFINE QUERYPARAM: ${r.message}`))}}else a=r.NAME,n=r.VALUE;a in l?i.playlistParsingError||(i.playlistParsingError=Error(`EXT-X-DEFINE duplicate Variable Name declarations: "${a}"`)):l[a]=n||""}var iW=/^(\d+)x(\d+)$/,iY=/(.+?)=(".*?"|.*?)(?:,|$)/g,iz=class i{constructor(r,s){"string"==typeof r&&(r=i.parseAttrList(r,s)),O(this,r)}get clientAttrs(){return Object.keys(this).filter(i=>"X-"===i.substring(0,2))}decimalInteger(i){let r=parseInt(this[i],10);return r>0x20000000000000-1?1/0:r}hexadecimalInteger(i){if(this[i]){let r=(this[i]||"0x").slice(2),s=new Uint8Array((r=(1&r.length?"0":"")+r).length/2);for(let i=0;i<r.length/2;i++)s[i]=parseInt(r.slice(2*i,2*i+2),16);return s}return null}hexadecimalIntegerAsNumber(i){let r=parseInt(this[i],16);return r>0x20000000000000-1?1/0:r}decimalFloatingPoint(i){return parseFloat(this[i])}optionalFloat(i,r){let s=this[i];return s?parseFloat(s):r}enumeratedString(i){return this[i]}enumeratedStringList(i,r){let s=this[i];return(s?s.split(/[ ,]+/):[]).reduce((i,r)=>(i[r.toLowerCase()]=!0,i),r)}bool(i){return"YES"===this[i]}decimalResolution(i){let r=iW.exec(this[i]);if(null!==r)return{width:parseInt(r[1],10),height:parseInt(r[2],10)}}static parseAttrList(i,r){let s,a={};for(iY.lastIndex=0;null!==(s=iY.exec(i));){let n=s[1].trim(),l=s[2],o=0===l.indexOf('"')&&l.lastIndexOf('"')===l.length-1,h=!1;if(o)l=l.slice(1,-1);else switch(n){case"IV":case"SCTE35-CMD":case"SCTE35-IN":case"SCTE35-OUT":h=!0}if(r&&(o||h))l=ij(r,l);else if(!h&&!o)switch(n){case"CLOSED-CAPTIONS":if("NONE"===l)break;case"ALLOWED-CPC":case"CLASS":case"ASSOC-LANGUAGE":case"AUDIO":case"BYTERANGE":case"CHANNELS":case"CHARACTERISTICS":case"CODECS":case"DATA-ID":case"END-DATE":case"GROUP-ID":case"ID":case"IMPORT":case"INSTREAM-ID":case"KEYFORMAT":case"KEYFORMATVERSIONS":case"LANGUAGE":case"NAME":case"PATHWAY-ID":case"QUERYPARAM":case"RECENTLY-REMOVED-DATERANGES":case"SERVER-URI":case"STABLE-RENDITION-ID":case"STABLE-VARIANT-ID":case"START-DATE":case"SUBTITLES":case"SUPPLEMENTAL-CODECS":case"URI":case"VALUE":case"VIDEO":case"X-ASSET-LIST":case"X-ASSET-URI":et.warn(`${i}: attribute ${n} is missing quotes`)}a[n]=l}return a}},iX=class{constructor(i,r,s=0){var a;if(this.attr=void 0,this.tagAnchor=void 0,this.tagOrder=void 0,this._startDate=void 0,this._endDate=void 0,this._dateAtEnd=void 0,this._cue=void 0,this._badValueForSameId=void 0,this.tagAnchor=(null==r?void 0:r.tagAnchor)||null,this.tagOrder=null==(a=null==r?void 0:r.tagOrder)?s:a,r){let s=r.attr;for(let r in s)if(Object.prototype.hasOwnProperty.call(i,r)&&i[r]!==s[r]){et.warn(`DATERANGE tag attribute: "${r}" does not match for tags with ID: "${i.ID}"`),this._badValueForSameId=r;break}i=O(new iz({}),s,i)}if(this.attr=i,r?(this._startDate=r._startDate,this._cue=r._cue,this._endDate=r._endDate,this._dateAtEnd=r._dateAtEnd):this._startDate=new Date(i["START-DATE"]),"END-DATE"in i){let s=(null==r?void 0:r.endDate)||new Date(i["END-DATE"]);m(s.getTime())&&(this._endDate=s)}}get id(){return this.attr.ID}get class(){return this.attr.CLASS}get cue(){let i=this._cue;return void 0===i?this._cue=this.attr.enumeratedStringList(this.attr.CUE?"CUE":"X-CUE",{pre:!1,post:!1,once:!1}):i}get startTime(){let{tagAnchor:i}=this;return null===i||null===i.programDateTime?(et.warn(`Expected tagAnchor Fragment with PDT set for DateRange "${this.id}": ${i}`),NaN):i.start+(this.startDate.getTime()-i.programDateTime)/1e3}get startDate(){return this._startDate}get endDate(){let i=this._endDate||this._dateAtEnd;if(i)return i;let r=this.duration;return null===r?null:this._dateAtEnd=new Date(this._startDate.getTime()+1e3*r)}get duration(){if("DURATION"in this.attr){let i=this.attr.decimalFloatingPoint("DURATION");if(m(i))return i}else if(this._endDate)return(this._endDate.getTime()-this._startDate.getTime())/1e3;return null}get plannedDuration(){return"PLANNED-DURATION"in this.attr?this.attr.decimalFloatingPoint("PLANNED-DURATION"):null}get endOnNext(){return this.attr.bool("END-ON-NEXT")}get isInterstitial(){return"com.apple.hls.interstitial"===this.class}get isValid(){return!!this.id&&!this._badValueForSameId&&m(this.startDate.getTime())&&(null===this.duration||this.duration>=0)&&(!this.endOnNext||!!this.class)&&(!this.attr.CUE||!this.cue.pre&&!this.cue.post||this.cue.pre!==this.cue.post)&&(!this.isInterstitial||"X-ASSET-URI"in this.attr||"X-ASSET-LIST"in this.attr)}get invalidReason(){return this.id?this._badValueForSameId?`Date range ${this._badValueForSameId} mismatch`:m(this.startDate.getTime())?this.isInterstitial&&!("X-ASSET-URI"in this.attr||"X-ASSET-LIST"in this.attr)?"Interstitial Date range missing X-ASSET-(LIST|URI)":this.isValid?null:"Unknown (check DURATION(|END|NEXT), CLASS, and CUE)":"Date range invalid start date":"Missing ID"}},iQ=class{constructor(i){this.PTSKnown=!1,this.alignedSliding=!1,this.averagetargetduration=void 0,this.endCC=0,this.endSN=0,this.fragments=void 0,this.fragmentHint=void 0,this.partList=null,this.dateRanges=void 0,this.dateRangeTagCount=0,this.live=!0,this.iframesOnly=!1,this.requestScheduled=-1,this.ageHeader=0,this.advancedDateTime=void 0,this.updated=!0,this.advanced=!0,this.misses=0,this.startCC=0,this.startSN=0,this.startTimeOffset=null,this.targetduration=0,this.totalduration=0,this.type=null,this.url=void 0,this.m3u8="",this.version=null,this.canBlockReload=!1,this.canSkipUntil=0,this.canSkipDateRanges=!1,this.skippedSegments=0,this.recentlyRemovedDateranges=void 0,this.partHoldBack=0,this.holdBack=0,this.partTarget=0,this.preloadHint=void 0,this.renditionReports=void 0,this.tuneInGoal=0,this.deltaUpdateFailed=void 0,this.drift
11StartTime=0,this.driftEndTime=0,this.driftStart=0,this.driftEnd=0,this.encryptedFragments=void 0,this.playlistParsingError=null,this.variableList=null,this.hasVariableRefs=!1,this.appliedTimelineOffset=void 0,this.fragments=[],this.encryptedFragments=[],this.dateRanges={},this.url=i}reloaded(i){if(!i){this.advanced=!0,this.updated=!0;return}let r=this.lastPartSn-i.lastPartSn,s=this.lastPartIndex-i.lastPartIndex;this.updated=this.endSN!==i.endSN||!!s||!!r||!this.live,this.advanced=this.endSN>i.endSN||r>0||0===r&&s>0,this.misses=this.updated||this.advanced?0:i.misses+1}hasKey(i){return this.encryptedFragments.some(r=>{let s=r.decryptdata;return s||(r.setKeyFormat(i.keyFormat),s=r.decryptdata),!!s&&i.matches(s)})}get hasProgramDateTime(){return!!this.fragments.length&&m(this.fragments[this.fragments.length-1].programDateTime)}get levelTargetDuration(){return this.averagetargetduration||this.targetduration||10}get drift(){let i=this.driftEndTime-this.driftStartTime;return i>0?(this.driftEnd-this.driftStart)*1e3/i:1}get edge(){return this.partEnd||this.fragmentEnd}get partEnd(){var i;return null!=(i=this.partList)&&i.length?this.partList[this.partList.length-1].end:this.fragmentEnd}get fragmentEnd(){return this.fragments.length?this.fragments[this.fragments.length-1].end:0}get fragmentStart(){return this.fragments.length?this.fragments[0].start:0}get age(){return this.advancedDateTime?Math.max(Date.now()-this.advancedDateTime,0)/1e3:0}get lastPartIndex(){var i;return null!=(i=this.partList)&&i.length?this.partList[this.partList.length-1].index:-1}get maxPartIndex(){let i=this.partList;if(i){let r=this.lastPartIndex;if(-1!==r){for(let s=i.length;s--;)if(i[s].index>r)return i[s].index;return r}}return 0}get lastPartSn(){var i;return null!=(i=this.partList)&&i.length?this.partList[this.partList.length-1].fragment.sn:this.endSN}get expired(){if(this.live&&this.age&&this.misses<3){let i=this.partEnd-this.fragmentStart;return this.age>Math.max(i,this.totalduration)+this.levelTargetDuration}return!1}};function iZ(i,r){return i.length===r.length&&!i.some((i,s)=>i!==r[s])}function iJ(i,r){return!i&&!r||!!i&&!!r&&iZ(i,r)}function i0(i){return"AES-128"===i||"AES-256"===i||"AES-256-CTR"===i}function i1(i){switch(i){case"AES-128":case"AES-256":return 0;case"AES-256-CTR":return 1;default:throw Error(`invalid full segment method ${i}`)}}function i2(i){return Uint8Array.from(unescape(encodeURIComponent(i)),i=>i.charCodeAt(0))}function i3(i){let r=function(i,r,s){let a=i[r];i[r]=i[s],i[s]=a};r(i,0,3),r(i,1,2),r(i,4,5),r(i,6,7)}function i4(i){let r=i.split(":"),s=null;if("data"===r[0]&&2===r.length){let i=r[1].split(";"),a=i[i.length-1].split(",");if(2===a.length){let r,n,l="base64"===a[0],o=a[1];l?(i.splice(-1,1),s=eT(o)):(r=i2(o).subarray(0,16),(n=new Uint8Array(16)).set(r,16-r.length),s=n)}}return s}var i8="u">typeof self?self:void 0,i5="org.w3.clearkey",i6="com.apple.fps",i9="com.microsoft.playready",i7="com.widevine.alpha",re="org.w3.clearkey",rt="com.apple.streamingkeydelivery",ri="com.microsoft.playready",rr="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed";function rs(i){switch(i){case rt:return i6;case ri:return i9;case rr:return i7;case re:return i5}}var ra="edef8ba979d64acea3c827dcd51d21ed";function rn(i){switch(i){case i6:return rt;case i9:return ri;case i7:return rr;case i5:return re}}function rl(i){let{drmSystems:r,widevineLicenseUrl:s}=i,a=r?[i6,i7,i9,i5].filter(i=>!!r[i]):[];return!a[i7]&&s&&a.push(i7),a}var ro=null!=i8&&null!=(r6=i8.navigator)&&r6.requestMediaKeySystemAccess?self.navigator.requestMediaKeySystemAccess.bind(self.navigator):null;function rh(i){let r=eS(new Uint16Array(i.buffer,i.byteOffset,i.byteLength/2)),s=r.substring(r.indexOf("<"),r.length),a=new DOMParser().parseFromString(s,"text/xml").getElementsByTagName("KID")[0];if(a){let i=a.childNodes[0]?a.childNodes[0].nodeValue:a.getAttribute("VALUE");if(i){let r=eT(i).subarray(0,16);return i3(r),r}}return null}var rd={},ru=class i{static clearKeyUriToKeyIdMap(){rd={}}static setKeyIdForUri(i,r){rd[i]=r}static addKeyIdForUri(i){let r=Object.keys(rd).length%(0x20000000000000-1),s=new Uint8Array(16);return new DataView(s.buffer,12,4).setUint32(0,r),rd[i]=s,s}constructor(i,r,s,a=[1],n=null,l){this.uri=void 0,this.method=void 0,this.keyFormat=void 0,this.keyFormatVersions=void 0,this.encrypted=void 0,this.isCommonEncryption=void 0,this.iv=null,this.key=null,this.keyId=null,this.pss
11h=null,this.scheme=void 0,this.method=i,this.uri=r,this.keyFormat=s,this.keyFormatVersions=a,this.iv=n,this.encrypted=!!i&&"NONE"!==i,this.isCommonEncryption=this.encrypted&&!i0(i),null!=l&&l.startsWith("0x")&&(this.keyId=new Uint8Array(eE(l)))}matches(i){return i.uri===this.uri&&i.method===this.method&&i.encrypted===this.encrypted&&i.keyFormat===this.keyFormat&&iZ(i.keyFormatVersions,this.keyFormatVersions)&&iJ(i.iv,this.iv)&&iJ(i.keyId,this.keyId)}isSupported(){if(this.method){if(i0(this.method)||"NONE"===this.method)return!0;if("identity"===this.keyFormat)return"SAMPLE-AES"===this.method;switch(this.keyFormat){case rt:case rr:case ri:case re:return -1!==["SAMPLE-AES","SAMPLE-AES-CENC","SAMPLE-AES-CTR"].indexOf(this.method)}}return!1}getDecryptData(r,s){var a,n,l;if(!this.encrypted||!this.uri)return null;if(i0(this.method)){let s=this.iv;return s||("number"!=typeof r&&(et.warn(`missing IV for initialization segment with method="${this.method}" - compliance issue`),r=0),s=function(i){let r=new Uint8Array(16);for(let s=12;s<16;s++)r[s]=i>>8*(15-s)&255;return r}(r)),new i(this.method,this.uri,"identity",this.keyFormatVersions,s)}if(this.keyId){let r=rd[this.uri];if(r&&!iZ(this.keyId,r)&&i.setKeyIdForUri(this.uri,this.keyId),this.pssh)return this}let o=i4(this.uri);if(o)switch(this.keyFormat){case rr:if(this.pssh=o,!this.keyId){let i=tR(o.buffer).filter(i=>i.systemId===ra);if(i.length){let r=i[0];this.keyId=null!=(n=r.kids)&&n.length?r.kids[0]:null}}this.keyId||(this.keyId=rf(s));break;case ri:{let i=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]);this.pssh=function(i,r){let s,a;if(16!==i.byteLength)throw RangeError("Invalid system id");s=new Uint8Array,a=new Uint8Array;let n=new Uint8Array(4);return r.byteLength>0&&new DataView(n.buffer).setUint32(0,r.byteLength,!1),function(i,...r){let s=r.length,a=8,n=s;for(;n--;)a+=r[n].byteLength;let l=new Uint8Array(a);for(l[0]=a>>24&255,l[1]=a>>16&255,l[2]=a>>8&255,l[3]=255&a,l.set(i,4),n=0,a=8;n<s;n++)l.set(r[n],a),a+=r[n].byteLength;return l}([112,115,115,104],new Uint8Array([0,0,0,0]),i,a,s,n,r)}(i,o),this.keyId=rh(o);break}default:{let i=o.subarray(0,16);if(16!==i.length){let r=new Uint8Array(16);r.set(i,16-i.length),i=r}this.keyId=i}}if((null==(a=this.keyId)?void 0:a.byteLength)!==16){let r,a;(r=(a=null==(l=s)?void 0:l[rr])?a.keyId:null)||(r=rf(s))||(r=rd[this.uri]),r&&(this.keyId=r,i.setKeyIdForUri(this.uri,r))}return this}};function rf(i){let r=null==i?void 0:i[ri];if(r){let i=i4(r.uri);if(i)return rh(i)}return null}var rc=/#EXT-X-STREAM-INF:([^\r\n]*)(?:[\r\n](?:#[^\r\n]*)?)*([^\r\n]+)|#EXT-X-(I-FRAME-STREAM-INF|SESSION-DATA|SESSION-KEY|DEFINE|CONTENT-STEERING|START):([^\r\n]*)(?:[\r\n]+|$)/g,rg=/#EXT-X-MEDIA:(.*)/g,rm=/^#EXT(?:INF|-X-TARGETDURATION):/m,rp=RegExp("#EXTINF:\\s*(\\d*(?:\\.\\d+)?)(?:,(.*)\\s+)?|(?!#) *(\\S[^\\r\\n]*)|#.*","g"),rv=RegExp("#EXT-X-(PROGRAM-DATE-TIME|BYTERANGE|DATERANGE|DEFINE|KEY|MAP|PART|PART-INF|PLAYLIST-TYPE|PRELOAD-HINT|RENDITION-REPORT|SERVER-CONTROL|SKIP|START):(.+)|#EXT-X-(BITRATE|DISCONTINUITY-SEQUENCE|MEDIA-SEQUENCE|TARGETDURATION|VERSION): *(\\d+)|#EXT-X-(DISCONTINUITY|ENDLIST|GAP|INDEPENDENT-SEGMENTS|I-FRAMES-ONLY)|(#)([^:]*):(.*)|(#)(.*)(?:.*)\\r?\\n?"),ry=class i{static findGroup(i,r){for(let s=0;s<i.length;s++){let a=i[s];if(a.id===r)return a}}static resolve(i,r){return A.buildAbsoluteURL(r,i,{alwaysNormalize:!0})}static isMediaPlaylist(i){return rm.test(i)}static parseMasterPlaylist(r,s){let a,n={contentSteering:null,levels:[],iframeVariants:[],playlistParsingError:null,sessionData:null,sessionKeys:null,startTimeOffset:null,variableList:null,hasVariableRefs:iV(r)},l=[];if(rc.lastIndex=0,!r.startsWith("#EXTM3U"))return n.playlistParsingError=Error("no EXTM3U delimiter"),n;for(;null!=(a=rc.exec(r));)if(a[1]){let i=rE(new iz(a[1],n),a[2],s,n,l);i&&n.levels.push(i)}else if(a[3]){let r=a[3],o=a[4];switch(r){case"I-FRAME-STREAM-INF":{let i=new iz(o,n),r=rE(i,i.URI,s,n,l,!0);r&&n.iframeVariants.push(r)}break;case"SESSION-DATA":{let i=new iz(o,n),r=i["DATA-ID"];r&&(null===n.sessionData&&(n.sessionData={}),n.sessionData[r]=i);break}case"SESSION-KEY":{let i=rS(o,s,n);i.encrypted&&i.isSupported()?(null===n.sessionKeys&&(n.sessionKeys=[]),n.sessionKeys.push(i)):et.warn(`[Keys] Ignoring invalid EXT-X-SESSION-KEY tag: "${o}"`);break}case"DEFINE":iq(n,new iz(o,n),s);break;case"CONTENT-STEERING":{let r=new iz(o,n);n.contentSteering={uri:i.resolve(r["SERVER-URI"],s),pathwayId:r["PATHWAY-ID"]||"."};break}case"START":n.startTimeOffset=rA(o)}}return n.levels=l.length>0&&l.length<n.levels.length?l:n.levels,0===n.levels.length&&(n.playlistParsingError=Error("no levels found in manifest")),n}static parseMasterPlaylistMedia(r,s,a){let n,l={},o=a.levels,h={AUDIO:o.map(i=>({id:i.attrs.AUDIO,audioCodec:i.audioCodec})),SUBTITLES:o.map(i=>({id:i.attrs.SUBTITLES,textCodec:i.textCodec})),"CLOSED-CAPTIONS":[]},d=0;for(rg.lastIndex=0;null!==(n=rg.exec(r));){let r=new iz(n[1],a),o=r.TYPE;if(o){let a=h[o],n=l[o]||[];l[o]=n;let u=r.LANGUAGE,f=r["ASSOC-LANGUAGE"],c=r.CHANNELS,g=r.CHARACTERISTICS,m=r["INSTREAM-ID"],p={attrs:r,bitrate:0,id:d++,groupId:r["GROUP-ID"]||"",name:r.NAME||u||"",type:o,default:r.bool("DEFAULT"),autoselect:r.bool("AUTOSELECT"),forced:r.bool("FORCED"),lang:u,url:r.URI?i.resolve(r.URI,s):""};if(f&&(p.assocLang=f),c&&(p.channels=c),g&&(p.characteristics=g),m&&(p.instreamId=m),null!=a&&a.length){let r=i.findGroup(a,p.groupId)||a[0];rR(p,r,"audioCodec"),rR(p,r,"textCodec")}n.push(p)}}return l}static parseLevelPlaylist(i,r,s,a,n,l){var o,h,d,u,f;let c={url:r},g=new iQ(r),p=g.fragments,v=[],y=null,E=0,T=0,S=0,A=0,L=0,R=null,b=new w(a,c),I,k,D,P=-1,_=!1,C=null,x;if(rp.lastIndex=0,g.m3u8=i,g.hasVariableRefs=iV(i),(null==(o=rp.exec(i))?void 0:o[0])!=="#EXTM3U")return g.playlistParsingError=Error("Missing format identifier #EXTM3U"),g;for(;null!==(I=rp.exec(i));){_&&(_=!1,(b=new w(a,c)).playlistOffset=S,b.setStart(S),b.sn=E,b.cc=A,L&&(b.bitrate=L),b.level=s,y&&(b.initSegment=y,y.rawProgramDateTime&&(b.rawProgramDateTime=y.rawProgramDateTime,y.rawProgramDateTime=null),C&&(b.setByteRange(C),C=null)));let i=I[1];if(i){b.duration=parseFloat(i);let r=(" "+I[2]).slice(1);b.title=r||null,b.tagList.push(r?["INF",i,r]:["INF",i])}else if(I[3]){if(m(b.duration)){b.playlistOffset=S,b.setStart(S),D&&rk(b,D,g),b.sn=E,b.level=s,b.cc=A;let i=(" "+I[3]).slice(1);b.relurl=ij(g,i),rb(b,R,v),R=b,S+=b.duration,E++,T=0;let r=b.byteRange;if(2===r.length&&(b.bitrate=(r[1]-r[0])*8/b.duration|0),g.iframesOnly&&r[0]&&(null==(h=y)?void 0:h.cc)!==A){let i=new w(a,c);i.relurl=b.relurl,i.setByteRange(`${Math.min(r[0],1316)}@0`),i.level=s,i.sn="initSegment",D&&(i.levelkeys=D,D.identity&&(i._decryptdata=D.identity.getDecryptData(0))),y=i,b.initSegment=y}p.push(b),_=!0}}
11else{if(!(I=I[0].match(rv))){et.warn("No matches on slow regex match for level playlist!");continue}for(k=1;k<I.length&&void 0===I[k];k++);let i=(" "+I[k]).slice(1),n=(" "+I[k+1]).slice(1),o=I[k+2]?(" "+I[k+2]).slice(1):null;switch(i){case"BYTERANGE":R?b.setByteRange(n,R):b.setByteRange(n);break;case"PROGRAM-DATE-TIME":b.rawProgramDateTime=n,b.tagList.push(["PROGRAM-DATE-TIME",n]),-1===P&&(P=p.length);break;case"PLAYLIST-TYPE":g.type&&rD(g,i,I),g.type=n.toUpperCase();break;case"MEDIA-SEQUENCE":0===g.startSN?null!==R&&(d=g,u=i,f=I,d.playlistParsingError=Error(`#EXT-X-${u} must appear before the first Media Segment (${f[0]})`)):rD(g,i,I),g.startSN=parseInt(n),E=g.startSN+g.skippedSegments;break;case"SKIP":{g.skippedSegments&&rD(g,i,I);let r=new iz(n,g),s=r.decimalInteger("SKIPPED-SEGMENTS");if(m(s)){g.skippedSegments+=s;for(let i=s;i--;)p.push(null);E+=s}let a=r.enumeratedString("RECENTLY-REMOVED-DATERANGES");a&&(g.recentlyRemovedDateranges=(g.recentlyRemovedDateranges||[]).concat(a.split("	")));break}case"TARGETDURATION":0!==g.targetduration&&rD(g,i,I),g.targetduration=Math.max(parseInt(n),1);break;case"VERSION":null!==g.version&&rD(g,i,I),g.version=parseInt(n);break;case"INDEPENDENT-SEGMENTS":break;case"I-FRAMES-ONLY":g.iframesOnly=!0;break;case"ENDLIST":g.live||rD(g,i,I),g.live=!1;break;case"#":(n||o)&&b.tagList.push(o?[n,o]:[n]);break;case"DISCONTINUITY":A++,b.tagList.push(["DIS"]);break;case"GAP":b.gap=!0,b.tagList.push([i]);break;case"BITRATE":b.tagList.push([i,n]),m(L=1e3*parseInt(n))?b.bitrate=L:L=0;break;case"DATERANGE":{let i=new iz(n,g),r=new iX(i,g.dateRanges[i.ID],g.dateRangeTagCount);g.dateRangeTagCount++,r.isValid||g.skippedSegments?g.dateRanges[r.id]=r:et.log(`Ignoring invalid DATERANGE tag: ${r.invalidReason}: ${n}`),b.tagList.push(["EXT-X-DATERANGE",n]);break}case"DEFINE":{let i=new iz(n,g);"IMPORT"in i?function(i,r,s){let a=r.IMPORT;if(s&&a in s){let r=i.variableList;r||(i.variableList=r={}),r[a]=s[a]}else i.playlistParsingError||(i.playlistParsingError=Error(`EXT-X-DEFINE IMPORT attribute not found in Multivariant Playlist: "${a}"`))}(g,i,l):iq(g,i,r)}break;case"DISCONTINUITY-SEQUENCE":0!==g.startCC&&rD(g,i,I),g.startCC=A=parseInt(n),p.forEach(i=>i&&(i.cc=A));break;case"KEY":{let i=rS(n,r,g);if(i.isSupported()){if("NONE"===i.method){D=void 0;break}D||(D={});let r=D[i.keyFormat];null!=r&&r.matches(i)||(r&&(D=O({},D)),D[i.keyFormat]=i)}else et.warn(`[Keys] Ignoring unsupported EXT-X-KEY tag: "${n}"`);break}case"START":g.startTimeOffset=rA(n);break;case"MAP":{let i=new iz(n,g);if(b.duration){let r=new w(a,c);rI(r,i,s,D),y=r,b.initSegment=y,y.rawProgramDateTime&&!b.rawProgramDateTime&&(b.rawProgramDateTime=y.rawProgramDateTime)}else{let r=b.byteRangeEndOffset;if(r){let i=b.byteRangeStartOffset;C=`${r-i}@${i}`}else C=null;rI(b,i,s,D),y=b,_=!0}y.cc=A;break}case"SERVER-CONTROL":x&&rD(g,i,I),g.canBlockReload=(x=new iz(n)).bool("CAN-BLOCK-RELOAD"),g.canSkipUntil=x.optionalFloat("CAN-SKIP-UNTIL",0),g.canSkipDateRanges=g.canSkipUntil>0&&x.bool("CAN-SKIP-DATERANGES"),g.partHoldBack=x.optionalFloat("PART-HOLD-BACK",0),g.holdBack=x.optionalFloat("HOLD-BACK",0);break;case"PART-INF":g.partTarget&&rD(g,i,I),g.partTarget=new iz(n).decimalFloatingPoint("PART-TARGET");break;case"PART":{let i=g.partList;i||(i=g.partList=[]);let r=T>0?i[i.length-1]:void 0,s=T++,a=new M(new iz(n,g),b,c,s,r);i.push(a),b.duration+=a.duration;break}case"PRELOAD-HINT":g.preloadHint=new iz(n,g);break;case"RENDITION-REPORT":{let i=new iz(n,g);g.renditionReports=g.renditionReports||[],g.renditionReports.push(i);break}default:et.warn(`line parsed but not handled: ${I}`)}}}R&&!R.relurl?(p.pop(),S-=R.duration,g.partList&&(g.fragmentHint=R)):g.partList&&(rb(b,R,v),b.cc=A,g.fragmentHint=b,D&&rk(b,D,g)),g.targetduration||(g.playlistParsingError=Error("Missing Target Duration"));let F=p.length,$=p[0],B=p[F-1];if((S+=g.skippedSegments*g.targetduration)>0&&F&&B){g.averagetargetduration=S/F;let i=B.sn;g.endSN="initSegment"===i?0:i,g.live||(B.endList=!0),P>0&&(function(i,r,s){if(s||(s=i[r]),s)for(let a=r;a--;){let r=i[a];if(!r)return;r.programDateTime=s.programDateTime-1e3*r.duration,s=r}}(p,P,P>F-1?b:null),$&&v.unshift($))}return g.fragmentHint&&(S+=g.fragmentHint.duration),g.totalduration=S,v.length&&g.dateRangeTagCount&&$&&rT(v,g),g.endCC=A,g}};function rE(i,r,s,a,n,l){var o;if(void 0===r)return null;let h=ij(a,r),d={attrs:i,bitrate:i.decimalInteger("BANDWIDTH")||i.decimalInteger("AVERAGE-BANDWIDTH"),name:i.NAME,url:ry.resolve(h,s)},u=i.decimalResolution("RESOLUTION");u&&(d.width=u.width,d.height=u.height),rL(i.CODECS,d);let f=i["SUPPLEMENTAL-CODECS"];return f&&(d.supplemental={},rL(f,d.supplemental)),null!=(o=d.unknownCodecs)&&o.length||n.push(d),l&&(d.iframes=!0),d}function rT(i,r){let s=i.length;if(!s)if(!r.hasProgramDateTime)return;else{let a=r.fragments[r.fragments.length-1];i.push(a),s++}let a=i[s-1],n=r.live?1/0:r.totalduration,l=Object.keys(r.dateRanges);for(let h=l.length;h--;){let d=r.dateRanges[l[h]],u=d.startDate.getTime();d.tagAnchor=a.ref;for(let a=s;a--;){var o;if((null==(o=i[a])?void 0:o.sn)<r.startSN)break;let s=function(i,r,s,a,n){let l=s[a];if(l){let h=l.programDateTime;if(r>
11=h||0===a){var o;if(r<=h+(((null==(o=s[a+1])?void 0:o.start)||n)-l.start)*1e3){let n=l.sn-i.startSN,o=i.fragments;if(n>=0&&n<o.length){if(o.length>s.length){let l=Math.min((s[a+1]||o[o.length-1]).sn-i.startSN,o.length-1);for(let i=l;i>n;i--){let s=o[i].programDateTime;if(r>=s&&r<s+1e3*o[i].duration)return o[i]}}return o[n]}}}}return null}(r,u,i,a,n);if(s){d.tagAnchor=s.ref;break}}}}function rS(i,r,s){var a,n;let l=new iz(i,s),o=null==(a=l.METHOD)?"":a,h=l.URI,d=l.hexadecimalInteger("IV"),u=l.KEYFORMATVERSIONS,f=null==(n=l.KEYFORMAT)?"identity":n;return h&&l.IV&&!d&&et.error(`Invalid IV: ${l.IV}`),new ru(o,h?ry.resolve(h,r):"",f,(u||"1").split("/").map(Number).filter(Number.isFinite),d,l.KEYID)}function rA(i){let r=new iz(i).decimalFloatingPoint("TIME-OFFSET");return m(r)?r:null}function rL(i,r){let s=(i||"").split(/[ ,]+/).filter(i=>i);["video","audio","text","image"].forEach(i=>{let a=s.filter(r=>t$(r,i));a.length&&(r[`${i}Codec`]=a.map(i=>i.split("/")[0]).join(","),s=s.filter(i=>-1===a.indexOf(i)))}),r.unknownCodecs=s}function rR(i,r,s){let a=r[s];a&&(i[s]=a)}function rb(i,r,s){i.rawProgramDateTime?s.push(i):null!=r&&r.programDateTime&&(i.programDateTime=r.endProgramDateTime)}function rI(i,r,s,a){i.relurl=r.URI,r.BYTERANGE&&i.setByteRange(r.BYTERANGE),i.level=s,i.sn="initSegment",a&&(i.levelkeys=a),i.initSegment=null}function rk(i,r,s){i.levelkeys=r;let{encryptedFragments:a}=s;(!a.length||a[a.length-1].levelkeys!==r)&&Object.keys(r).some(i=>r[i].isCommonEncryption)&&a.push(i)}function rD(i,r,s){i.playlistParsingError=Error(`#EXT-X-${r} must not appear more than once (${s[0]})`)}function rP(i,r){let s=r.startPTS;if(m(s)){let a=0,n;r.sn>i.sn?(a=s-i.start,n=i):(a=i.start-s,n=r),n.duration!==a&&n.setDuration(a)}else r.sn>i.sn?i.cc===r.cc&&i.minEndPTS?r.setStart(i.start+(i.minEndPTS-i.start)):r.setStart(i.start+i.duration):r.setStart(Math.max(i.start-r.duration,0))}function r_(i,r,s,a,n,l,o,h){a-s<=0&&(h.warn("Fragment should have a positive duration",r),a=s+r.duration,l=n+r.duration);let d=s,u=a,f=r.startPTS,c=r.endPTS;if(m(f)){let o=Math.abs(f-s);i&&o>i.totalduration?h.warn(`media timestamps and playlist times differ by ${o}s for level ${r.level} ${i.url}`):r.deltaPTS=m(r.deltaPTS)?Math.max(o,r.deltaPTS):o,d=Math.max(s,f),s=Math.min(s,f),n=void 0===r.startDTS?n:Math.min(n,r.startDTS),u=Math.min(a,c),a=Math.max(a,c),l=void 0===r.endDTS?l:Math.max(l,r.endDTS)}let g=s-r.start;0!==r.start&&r.setStart(s),r.setDuration(a-r.start),r.startPTS=s,r.maxStartPTS=d,r.startDTS=n,r.endPTS=a,r.minEndPTS=u,r.endDTS=l;let p=r.sn;if(!i||p<i.startSN||p>i.endSN)return 0;let v,y=p-i.startSN,E=i.fragments;for(E[y]=r,v=y;v>0;v--)rP(E[v],E[v-1]);for(v=y;v<E.length-1;v++)rP(E[v],E[v+1]);return i.fragmentHint&&rP(E[E.length-1],i.fragmentHint),i.PTSKnown=i.alignedSliding=!0,g}function rC(i,r,s,a,n){return Error(`${i} ${n.url}
12Playlist starting @${r.startSN}
13${r.m3u8}
14
15Playlist starting @${s.startSN}
16${s.m3u8}`)}function rx(i,r,s=!0,a){let n=r.startSN+r.skippedSegments-i.startSN,l=i.fragments,o=n>=0,h=0;if(o&&n<l.length)h=l[n].start,null==a||a.log(`Aligning playlists based on SN ${r.startSN} (diff: ${h})`);else if(o&&r.startSN===i.endSN+1)h=i.fragmentEnd,null==a||a.log(`Aligning playlists based on first/last SN ${r.startSN} (diff: ${h})`);else if(o&&s)h=i.fragmentStart+n*r.levelTargetDuration;else{if(r.skippedSegments||0!==r.fragmentStart)return h;h=i.fragmentStart,null==a||a.log(`Aligning playlists based on first SN ${r.startSN} (diff: ${h})`)}return function(i,r){if(r){let s=i.fragments;for(let a=i.skippedSegments;a<s.length;a++)s[a].addStart(r);i.fragmentHint&&i.fragmentHint.addStart(r)}}(r,h),h}function rw(i,r=1/0){let s=1e3*i.targetduration;if(i.updated){let a=i.fragments;if(a.length&&4*s>r){let i=1e3*a[a.length-1].duration;i>0&&i<s&&(s=i)}}else s/=2;return Math.round(s)}function rM(i,r,s){var a;if(!i)return null;let n=i.fragments[r-i.startSN];return n||(null==(a=n=i.fragmentHint)?void 0:a.sn)===r?n:s&&r<i.startSN&&s.sn===r?s:null}function rO(i,r,s){return i?rF(i.partList,r,s):null}function rF(i,r,s){if(i)for(let a=i.length;a--;){let n=i[a];if(n.index===s&&n.fragment.sn===r)return n}return null}
16function r$(i){i.forEach((i,r)=>{var s;null==(s=i.details)||s.fragments.forEach(i=>{i.level=r,i.initSegment&&(i.initSegment.level=r)})})}function rB(i){return i.replace(/\?[^?]*$/,"")}function rU(i,r){for(let a=0,n=i.length;a<n;a++){var s;if((null==(s=i[a])?void 0:s.cc)===r)return i[a]}return null}function rN(i,r){let s=i.start+r;i.setStart(s)}function rG(i,r){let s=r.fragments;for(let r=0,a=s.length;r<a;r++)rN(s[r],i);r.fragmentHint&&rN(r.fragmentHint,i),r.alignedSliding=!0}function rK(i,r,s){i&&(function(i,r,s){if(!r||!(i.startCC<r.endCC)||!(i.endCC>r.startCC))return;let a=Math.min(r.endCC,i.endCC),n=rU(r.fragments,a),l=rU(i.fragments,a);if(!n||!l)return;let o=n.start-l.start;s.log(`Aligning playlists using dicontinuity sequence ${a} (diff: ${o})`),rG(o,i)}(r,i,s),r.alignedSliding||function(i,r,s){if(!i.hasProgramDateTime||!r.hasProgramDateTime)return;let a=i.fragments,n=r.fragments;if(!a.length||!n.length)return;let l,o,h=Math.min(r.endCC,i.endCC);r.startCC<h&&i.startCC<h&&(l=rU(n,h),o=rU(a,h)),l&&o||(o=rU(a,(l=n[Math.floor(n.length/2)]||n.filter(i=>!!i)[0]).cc)||a[Math.floor(a.length/2)]);let d=l.programDateTime,u=o.programDateTime;if(!d||!u)return;let f=(u-d)/1e3;if(Math.abs(f)>Math.max(60,i.totalduration))return s.log(`Cannot align playlists using PDT without overlap (${Math.abs(f)} > ${i.totalduration})`);let c=f-(o.start-l.start);s.log(`Aligning playlists using PDT (diff: ${c})`),rG(c,i)}(r,i,s),r.alignedSliding||r.skippedSegments||rx(i,r,!1,s))}function rH(i,r,s){rV(i,r,s),i.addEventListener(r,s)}function rV(i,r,s){i.removeEventListener(r,s)}function rj(i){let r="",s=i.length;for(let a=0;a<s;a++)r+=`[${i.start(a).toFixed(3)}-${i.end(a).toFixed(3)}]`;return r}var rq="STOPPED",rW="IDLE",rY="KEY_LOADING",rz="FRAG_LOADING",rX="FRAG_LOADING_WAITING_RETRY",rQ="WAITING_TRACK",rZ="PARSING",rJ="PARSED",r0="ENDED",r1="ERROR",r2="WAITING_INIT_PTS",r3="WAITING_LEVEL",r4=class extends iB{constructor(i,r,s,a,n){super(a,i.logger),this.hls=void 0,this.fragPrevious=null,this.fragCurrent=null,this.fragPlaying=null,this.fragmentTracker=void 0,this.transmuxer=null,this._state=rq,this.playlistType=void 0,this.media=null,this.mediaBuffer=null,this.config=void 0,this.bitrateTest=!1,this.lastCurrentTime=0,this.nextLoadPosition=0,this.startPosition=-1,this.startTimeOffset=null,this.retryDate=0,this.levels=null,this.fragmentLoader=void 0,this.initFragmentLoader=void 0,this.keyLoader=void 0,this.levelLastLoaded=null,this.startFragRequested=!1,this.decrypter=void 0,this.initPTS=[],this.buffering=!0,this.loadingParts=!1,this.loopSn=void 0,this.onMediaSeeking=()=>{let{config:i,fragCurrent:r,media:s,mediaBuffer:a,state:n}=this,l=s?s.currentTime:0,o=iK.bufferInfo(a||s,l,i.maxBufferHole),h=o.len;if(this.log(`Media seeking to ${l}, state: ${n}, ${h?"in":"out of"} buffer`),this.state===r0)this.resetLoadingState();else if(r){let s=i.maxFragLookUpTolerance,a=r.start-s,n=r.start+r.duration+s;if(!h||n<o.start||a>o.end){let i=l<a,s=l>n;(i||s)&&(r.loader&&(s||!this.isFragmentNearlyDownloaded(r))?(this.log(`Cancelling fragment load for seek (sn: ${r.sn}) - ${i?"backward":"forward"} seek`),r.abortRequests(),this.resetLoadingState()):this.fragPrevious=null)}}if(s&&(this.fragmentTracker.removeFragmentsInRange(l,1/0,this.playlistType,!0),l>this.lastCurrentTime&&(this.lastCurrentTime=l),!this.loadingParts)){let i=Math.max(o.end,l),r=this.shouldLoadParts(this.getLevelDetails(),i);r&&(this.log(`LL-Part loading ON after seeking to ${l} with buffer @${i}`),this.loadingParts=r)}let d=!iK.isBuffered(s,l);(!this.hls.hasEnoughToStart||d)&&(this.log(`Setting ${d?"startPosition":"nextLoadPosition"} to ${l} for seek without enough to start`),this.nextLoadPosition=l,d&&(this.startPosition=l)),h<1&&this.state===rW&&this.tickImmediate()},this.onMediaEnded=()=>{this.log("setting startPosition to 0 because media ended"),this.startPosition=this.lastCurrentTime=0},this.playlistType=n,this.hls=i,this.fragmentLoader=new iw(i.config),this.initFragmentLoader=new iw(i.config),this.keyLoader=s,this.fragmentTracker=r,this.config=i.config,this.decrypter=new ix(i.config)}registerListeners(){let{hls:i}=this;
16i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let{hls:i}=this;i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.ERROR,this.onError,this)}doTick(){this.onTickEnd()}onTickEnd(){}startLoad(i){}stopLoad(){if(this.state===rq)return;this.fragmentLoader.abort(),this.initFragmentLoader.abort(),this.keyLoader.abort(this.playlistType);let i=this.fragCurrent;null!=i&&i.loader&&(i.abortRequests(),this.fragmentTracker.removeFragment(i)),this.resetTransmuxer(),this.fragCurrent=null,this.fragPrevious=null,this.clearInterval(),this.clearNextTick(),this.state=rq}get startPositionValue(){let{nextLoadPosition:i,startPosition:r}=this;if(-1===r&&i){let r=this.getLevelDetails();return null!=r&&r.live?(this.hls.liveSyncPosition||r.fragmentStart)+this.timelineOffset:i}return r}get bufferingEnabled(){return this.buffering}get backtrackFragment(){}set backtrackFragment(i){}get couldBacktrack(){return!1}set couldBacktrack(i){}pauseBuffering(){this.buffering=!1}resumeBuffering(){this.buffering=!0}get inFlightFrag(){return{frag:this.fragCurrent,state:this.state}}_streamEnded(i,r){if(r.live||!this.media)return!1;let s=i.end||0,a=this.config.timelineOffset||0;if(s<=a)return!1;let n=i.buffered;this.config.maxBufferHole&&n&&n.length>1&&(i=iK.bufferedInfo(n,i.start,0));let l=i.nextStart;if(l&&l>a&&l<r.edge||this.media.currentTime<i.start)return!1;let o=r.partList;if(null!=o&&o.length){let i=o[o.length-1];return iK.isBuffered(this.media,i.start+i.duration/2)}let h=r.fragments[r.fragments.length-1];return this.fragmentTracker.isEndListAppended(h.type)}getLevelDetails(){if(this.levels&&null!==this.levelLastLoaded)return this.levelLastLoaded.details}get timelineOffset(){let i=this.config.timelineOffset;if(i){var r;return(null==(r=this.getLevelDetails())?void 0:r.appliedTimelineOffset)||i}return 0}onMediaAttached(i,r){let s=this.media=this.mediaBuffer=r.media;rH(s,"seeking",this.onMediaSeeking),rH(s,"ended",this.onMediaEnded);let a=this.config;this.levels&&a.autoStartLoad&&this.state===rq&&this.startLoad(a.startPosition)}onMediaDetaching(i,r){this.fragPlaying=null;let s=!!r.transferMedia,a=this.media;if(null!==a){if(a.ended&&(this.log("MSE detaching and video ended, reset startPosition"),this.startPosition=this.lastCurrentTime=0),rV(a,"seeking",this.onMediaSeeking),rV(a,"ended",this.onMediaEnded),this.media=this.mediaBuffer=null,this.loopSn=void 0,s){this.resetLoadingState(),this.resetTransmuxer();return}this.loadingParts=!1,this.fragmentTracker.removeAllFragments(),this.stopLoad()}}onManifestLoading(){this.initPTS=[],this.fragPlaying=this.levels=this.levelLastLoaded=this.fragCurrent=null,this.lastCurrentTime=0,this.startPosition=-1,this.startFragRequested=!1}onError(i,r){}onManifestLoaded(i,r){this.startTimeOffset=r.startTimeOffset}onHandlerDestroying(){this.stopLoad(),this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null),super.onHandlerDestroying(),this.hls=this.onMediaSeeking=this.onMediaEnded=null}onHandlerDestroyed(){this.state=rq,this.fragmentLoader&&this.fragmentLoader.destroy(),this.initFragmentLoader&&this.initFragmentLoader.destroy(),this.keyLoader&&this.keyLoader.destroy(),this.decrypter&&this.decrypter.destroy(),this.hls=this.decrypter=this.keyLoader=null,this.fragmentLoader=this.initFragmentLoader=this.fragmentTracker=null,super.onHandlerDestroyed()}loadFragment(i,r,s){this.startFragRequested=!0,this._loadFragForPlayback(i,r,s)}_loadFragForPlayback(i,r,s){this._doFragLoad(i,r,s,i=>{let r=i.frag;if(this.fragContextChanged(r)){this.warn(`${r.type} sn: ${r.sn}${i.part?" part: "+i.part.index:""} of ${this.fragInfo(r,!1,i.part)} was dropped during download.`),this.fragmentTracker.removeFragment(r);return}let s=++r.stats.chunkCount;this.log(`load progress ${r.type} sn: ${r.sn}${i.part?" part: "+i.part.index:""} of ${this.fragInfo(r,!1,i.part)} chunk: ${s}`),this._handleFragmentLoadProgress(i)}).then(i=>{if(!i)return;let r=this.state,s=i.frag;if(this.fragContextChanged(s)){r!==rz&&(this.fragCurrent||r!==rZ)||(this.fragmentTracker.removeFragment(s),this.state=rW);return}"payload"in i&&(this.log(`Loaded ${s.type} sn: ${s.sn} of ${this.playlistLabel()} ${s.level} (bytes ${s.stats.loaded})`),this.hls.trigger(T.FRAG_LOADED,i)),this._handleFragmentLoadComplete(i)}).catch(r=>{this.state!==rq&&this.state!==r1&&(this.log(`Frag error ${i.type} sn:${i.sn} cc:${i.cc}: ${(null==r?void 0:r.message)||r}`),this.resetFragmentLoading(i))})}clearTrackerIfNeeded(i){var r;let{fragmentTracker:s}=this;if(s.getState(i)===iL){let r=i.type,a=this.getFwdBufferInfo(this.mediaBuffer,r),n=Math.max(i.duration,a?a.len:this.config.maxBufferLength),l=this.backtrackFragment;((l?i.sn-l.sn:0)==1||this.reduceMaxBufferLength(n,i.duration))&&s.removeFragment(i)}else(null==(r=this.mediaBuffer)?void 0:r.buffered.length)===0?s.removeAllFragments():s.hasParts(i.type)&&(s.detectPartialFragments({frag:i,part:null,stats:i.stats,id:i.type}),s.getState(i)===iR&&s.removeFragment(i))}checkLiveUpdate(i){if(i.updated&&!i.live){let r=this.fragmentTracker,s=i.fragments[i.fragments.length-1];if(s.endList&&!r.isEndListAppended(this.playlistType)){let i=r.getPartialFragment(s.end);i&&(r.removeFragment(i),r.fragBuffered(s,!0))}r.detectPartialFragments({frag:s,part:null,stats:s.stats,id:s.type})}i.fragments[0]||(i.deltaUpdateFailed=!0)}waitForLive(i){let r=i.details;return(null==r?void 0:r.live)&&"EVENT"!==r.type&&(this.levelLastLoaded!==i||r.expired)}flushMainBuffer(i,r,s=null){i-r&&this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:i,endOffset:r,type:s})}_loadInitSegment(i){let{hls:r}=this;return this.initFragmentLoader.abort(),r.trigger(T.FRAG_LOADING,{frag:i,targetBufferTime:0}),this.initFragmentLoader.load(i).then(i=>{var r;let s=i.frag;if(!this.levels||!x(s,null==(r=this.fragCurrent)?void 0:r.initSegment))throw new i$({type:y.NETWORK_E
16RROR,details:E.INTERNAL_ABORTED,error:Error("init load aborted"),fatal:!1,frag:s,networkDetails:null});return i}).then(i=>{let{frag:s,payload:a}=i,n=s.decryptdata;if(a&&a.byteLength>0&&null!=n&&n.key&&n.iv&&i0(n.method)){let l=self.performance.now(),{decryptRange:o}=iO(s,null,this.iframesOnly);return this.decrypter.decrypt(new Uint8Array(a),n.key.buffer,n.iv.buffer,i1(n.method),o).catch(i=>{throw r.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_DECRYPT_ERROR,fatal:!1,error:i,reason:i.message,frag:s}),this.fragmentLoader.abort(),i}).then(a=>{let n=self.performance.now();return r.trigger(T.FRAG_DECRYPTED,{frag:s,part:null,payload:a,stats:{tstart:l,tdecrypt:n}}),i.payload=a,this.completeInitSegmentLoad(i)})}return this.completeInitSegmentLoad(i)})}completeInitSegmentLoad(i){let r=i.frag.stats;i.frag.data=new Uint8Array(i.payload),r.parsing.start=r.buffering.start=self.performance.now(),r.parsing.end=r.buffering.end=self.performance.now()}loadInitSegmentIfNeeded(i){let{initSegment:r}=i;if(!this.bitrateTest&&_(i)&&r&&!r.data){var s;return(r.encrypted&&!(null!=(s=r.decryptdata)&&s.key)?this.keyLoader.load(r).then(()=>this._loadInitSegment(r)):this._loadInitSegment(r)).catch(r=>{throw this.state===rq||this.state===r1||("data"in r&&(r.data.frag=i,this.fragmentLoader.abort(),this.handleFragLoadError(r)),this.resetFragmentLoading(i)),r})}}unhandledEncryptionError(i,r){var s,a;let n=i.tracks;if(n&&!r.encrypted&&(null!=(s=n.audio)&&s.encrypted||null!=(a=n.video)&&a.encrypted)&&(!this.config.emeEnabled||!this.keyLoader.emeController)){let i=this.media,s=Error(`Encrypted track with no key in ${this.fragInfo(r)} (media ${i?"attached mediaKeys: "+i.mediaKeys:"detached"})`);return this.warn(s.message),!!i&&!i.mediaKeys&&(this.hls.trigger(T.ERROR,{type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_NO_KEYS,fatal:!1,error:s,frag:r}),this.resetTransmuxer(),!0)}return!1}fragContextChanged(i){let{fragCurrent:r}=this;return!i||!x(i,r)}fragBufferedComplete(i,r){let s=this.mediaBuffer?this.mediaBuffer:this.media;if(this.log(`Buffered ${i.type} sn: ${i.sn}${r?" part: "+r.index:""} of ${this.fragInfo(i,!1,r)} > buffer:${s?rj(iK.getBuffered(s)):"(detached)"})`),_(i)){var a;if(i.type!==b.SUBTITLE){let r=i.elementaryStreams;if(!Object.keys(r).some(i=>!!r[i])){this.state=rW;return}}let s=null==(a=this.levels)?void 0:a[i.level];null!=s&&s.fragmentError&&(r||this.fragmentTracker.getState(i)!==iR)&&(this.log(`Resetting level fragment error count of ${s.fragmentError} on frag buffered`),s.fragmentError=0,i.stats.retry=0)}this.state=rW}_handleFragmentLoadComplete(i){let{transmuxer:r}=this;if(!r)return;let s=i.frag,{part:a,partsLoaded:n}=i,l=!n||0===n.length||n.some(i=>!i),{decryptRange:o}=iO(s,a),h=new iU(s.level,s.sn,s.stats.chunkCount+1,0,a?a.index:-1,!l,s.duration,this.iframesOnly,o);this.log(`load complete ${s.type} sn: ${s.sn}${a?" part: "+a.index:""} of ${this.fragInfo(s,!1,a)}`),r.flush(h)}_handleFragmentLoadProgress(i){}loadKeyFor(i,r,s){var a;let n=null;return i.encrypted&&!(null!=(a=i.decryptdata)&&a.key)?(this.log(`Loading key for ${i.sn} of [${r.startSN}-${r.endSN}], ${this.playlistLabel()} ${i.level}`),this.state=rY,n=this.keyLoader.load(i,s).then(i=>{if(!this.fragContextChanged(i.frag))return this.hls.trigger(T.KEY_LOADED,i),this.state===rY&&(this.state=rW),i}),this.hls.trigger(T.KEY_LOADING,{frag:i})):i.encrypted||(n=this.keyLoader.loadClear(i,r.encryptedFragments,this.startFragRequested))&&this.log(`[eme] blocking frag sn: ${i.sn} load until media-keys acquired`),n}_doFragLoad(i,r,s=null,a){var n,l;this.fragCurrent=i;let o=r.details;if(!this.levels||!o)throw Error(`frag load aborted, missing level${o?"":" detail"}s`);let h=this.fragPrevious;if(!C(i,h)){let s=this.shouldLoadParts(r.details,i.end);s!==this.loadingParts&&(this.log(`LL-Part loading ${s?"ON":"OFF"} loading sn ${null==h?void 0:h.sn}->${i.sn}`),this.loadingParts=s)}if(s=Math.max(i.start,s||0),this.loadingParts){let n=o.partList;if(n&&a){s>o.fragmentEnd&&o.fragmentHint&&(i=o.fragmentHint);let l=this.getNextPart(n,i,s);if(l>-1){let d=n[l];if(!C(i=this.fragCurrent=d.fragment,h)&&!this.shouldLoadParts(r.details,i.end))return this.log(`LL-Part loading OFF @${this.playhead} next part: ${this.fragInfo(i,!1,d)}`),this.loadingParts=!1,Promise.resolve(null);if(!this.filterReplacedPrimary(d,r.details))return Promise.resolve(null);let u=this.loadKeyFor(i,o);if(this.fragContextChanged(i))return Promise.resolve(null);this.log(`Loading ${i.type} sn: ${i.sn} part: ${d.index} (${l}/${n.length-1}) of ${this.fragInfo(i,!1,d)} cc: ${i.cc} [${o.startSN}-${o.endSN}], target: ${s}${d.byteRange.length?` range:${d.byteRange.join("-")}`:""}`),this.nextLoadPosition=d.start+d.duration,this.state=rz;let f,c=this.loadInitSegmentIfNeeded(i);if(u||c){let s=!!u;f=Promise.all([u,c]).then(([n])=>s&&(!n||this.fragContextChanged(n.frag))?null:this.doFragPartsLoad(i,d,r,a)).catch(i=>this.handleFragLoadError(i))}else f=this.doFragPartsLoad(i,d,r,a).catch(i=>this.handleFragLoadError(i));return this.hls.trigger(T.FRAG_LOADING,{frag:i,part:d,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(Error("frag load aborted, context changed in FRAG_LOADING parts")):f}if(!i.url||this.loadedEndOfParts(n,s))return Promise.resolve(null)}}if(this.loadingParts)this.log(`LL-Part loading OFF after next part miss @${s} Check buffer at sn: ${i.sn} loaded parts: ${null==(n=o.partList)?void 0:n.filter(i=>i.loaded).map(i=>`[${i.start}-${i.end}]`)}`),this.loadingParts=!1;else if(!i.url)return Promise.resolve(null);if(!this.filterReplacedPrimary(i,r.details))return Promise.resolve(null);let d=this.loadInitSegmentIfNeeded(i),u=this.loadKeyFor(i,o,d);if(this.fragContextChanged(i))return this.log(`Context changed in KEY_LOADING sn: ${i.sn} ${i.relurl} > ${null==(l=this.fragCurrent)?void 0:l.relurl}`),null==d||d.catch(()=>null),null==u||u.catch(()=>null),Promise.resolve(null);this.log(`Loading ${i.type} sn: ${i.sn} of ${this.fragInfo(i,!1)} cc: ${i.cc} ${"["+o.startSN+"-"+o.endSN+"]"}, target: ${s}${i.byteRange.length?` range:${i.byteRange.join("-")}`:""}`),m(i.sn)&&!this.bitrateTest&&(this.nextLoadPosition=i.start+i.duration),this.state=rz;let f=this.config.progressive&&i.type!==b.SUBTITLE,c;return c=f&&u?u.then(r=>!r||this.fragContextChanged(r.frag)?null:this.fragmentLoader.load(i,this.iframesOnly,a,d)).catch(i=>this.handleFragLoadError(i)):Promise.all([this.fragmentLoader.load(i,this.iframesOnly,f?a:void 0,f?d:void 0),u,d]).then(([i])=>(!f&&a&&a(i),i)).catch(i=>this.handleFragLoadError(i)),this.hls.trigger(T.FRAG_LOADING,{frag:i,targetBufferTime:s}),null===this.fragCurrent?Promise.reject(Error("frag load aborted, context changed in FRAG_LOADING")):Promise.all([c,d]).then(([i])=>i)}doFragPartsLoad(i,r,s,a){return new Promise((n,l)=>{var o;let h=[],d=null==(o=s.details)?void 0:o.partList,u=r=>{this.fragmentLoader.loadPart(i,r,a).then(a=>{h[r.index]=a;let l=a.part;this.hls.trigger(T.FRAG_LOADED,a);let o=rO(s.details,i.sn,r.index+1)||rF(d,i.sn,r.index+1);if(!o)return n({frag:i,part:l,partsLoaded:h});u(o)}).catch(l)};u(r)})}handleFragLoadError(i){if("data"in i){let r=i.data;r.frag&&r.details===E.INTERNAL_ABORTED?this.handleFragLoadAborted(r.frag,r.part):r.frag&&r.type===y.KEY_SYSTEM_ERROR&&!r.fatal&&(r.frag.abortRequests(),this.resetStartWhenNotLoaded(),this.resetFragmentLoading(r.frag)),this.hls.trigger(T.ERROR,r)}else this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.INTERNAL_EXCEPTION,err:i,error:i,fatal:!0});return null}_handleTransmuxerFlush(i){let r=this.getCurrentContext(i);if(!r||this.state!==rZ){this.fragCurrent||this.state===rq||this.state===r1||(this.state=rW);return}let{frag:s,part:a,level:n}=r,l=self.performance.now();s.stats.parsing.end=l,a&&(a.stats.parsing.end=l);let o=this.getLevelDetails(),h=o&&s.sn>o.endSN||this.shouldLoadParts(o,s.end);h!==this.loadingParts&&(this.log(`LL-Part loading ${h?"ON":"OFF"} after parsing segment ending @${s.end}`),this.loadingParts=h),this.updateLevelTiming(s,a,n,i)}shouldLoadParts(i,r){if(this.config.lowLatencyMode){if(!i)return this.loadingParts;if(i.partList&&!this.iframesOnly){var s;let a=i.partList[0];if(r>=a.end+((null==(s=i.fragmentHint)?void 0:s.duration)||0)&&this.playhead>a.start-a.fragment.duration)return!0}}return!1}getCurrentContext(i){let{levels:r,fragCurrent:s}=this,{level:a,sn:n,part:l}=i;if(!(null!=r&&r[a]))return this.warn(`Levels object was unset while buffering fragment ${n} of ${this.playlistLabel()} ${a}. The current chunk will not be buffered.`),null;let o=r[a],h=o.details,d=l>-1?rO(h,n,l):null,u=d?d.fragment:rM(h,n,s);return u?(s&&s!==u&&(u.stats=s.stats),{frag:u,part:d,level:o}):null}
16bufferFragmentData(i,r,s,a,n){if(this.state!==rZ)return;_(r)&&!this.fragContextChanged(r)&&(this.fragPrevious=r);let{data1:l,data2:o}=i,h=l;if(o&&(h=tE(l,o)),!h.length)return;let d=this.initPTS[r.cc],u=d?-d.baseTime/d.timescale:void 0,f={type:i.type,frag:r,part:s,chunkMeta:a,offset:u,parent:r.type,data:h};if(this.hls.trigger(T.BUFFER_APPENDING,f),i.dropped&&i.independent&&!s){if(n)return;this.flushBufferGap(r)}}flushBufferGap(i){let r=this.media;if(!r)return;if(!iK.isBuffered(r,r.currentTime))return void this.flushMainBuffer(0,i.start);let s=r.currentTime,a=iK.bufferInfo(r,s,0),n=i.duration,l=Math.min(2*this.config.maxFragLookUpTolerance,.25*n),o=Math.max(Math.min(i.start-l,a.end-l),s+l);i.start-o>l&&this.flushMainBuffer(o,i.start)}getFwdBufferInfo(i,r){var s;let a=this.playhead,n=this.lastCurrentTime>a||null!=(s=this.media)&&s.paused?0:this.config.maxBufferHole;return this.getFwdBufferInfoAtPos(i,a,r,n)}getFwdBufferInfoAtPos(i,r,s,a){let n=iK.bufferInfo(i,r,a);if(0===n.len&&void 0!==n.nextStart){let l=this.fragmentTracker.getBufferedFrag(r,s);if(l&&(n.nextStart<=l.end||l.gap)){let s=Math.max(Math.min(n.nextStart,l.end)-r,a);return iK.bufferInfo(i,r,s)}}return n}getMaxBufferLength(i){let{config:r}=this;return Math.min(i?Math.max(8*r.maxBufferSize/i,r.maxBufferLength):r.maxBufferLength,r.maxMaxBufferLength)}exceedsMaxBuffer(i,r,s){let a=i.nextStart;if(a&&s.start>a){let a=i.buffered;if(a){let n=i.len,l=i.bufferedIndex;for(let i=a.length-1;i>l;i--)a[i].start<s.start&&(n+=a[i].end-a[i].start);return n>=r}}return!1}reduceMaxBufferLength(i,r){let s=this.config,a=Math.max(Math.min(i-r,s.maxBufferLength),r/2),n=Math.max(i-3*r,s.maxMaxBufferLength/2,a);return n>=a&&(s.maxMaxBufferLength=n,this.warn(`Reduce max buffer length to ${n}s`),!0)}getAppendedFrag(i){let r=this.fragmentTracker?this.fragmentTracker.getAppendedFrag(i,this.playlistType):null;return r&&"fragment"in r?r.fragment:r}getNextFragment(i,r){let s=r.fragments,a=s.length;if(!a)return null;let{config:n}=this,l=r.fragmentStart,o=n.lowLatencyMode&&!!r.partList,h=null;if(r.live){let s=n.initialLiveManifestSize;if(a<s)return this.warn(`Not enough fragments to start playback (have: ${a}, need: ${s})`),null;if(this.startFragRequested||!o||this.loadingParts||(this.log("LL-Part loading ON for initial live fragment"),this.loadingParts=!0),!r.PTSKnown&&!this.startFragRequested&&-1===this.startPosition||i<l){var d;h=this.getInitialLiveFragment(r);let s=this.config.startPosition,a=this.hls.startPosition,n=this.hls.liveSyncPosition,o=(null==(d=h)?void 0:d.start)||0,u,f;if(-1!==a&&a>=l?(u=a,f=a===s?"config":"next load start"):n?(u=n,f="live edge"):(u=i,f="buffer pos"),u<o&&(u=o,f="live frag start"),u<l&&(u=l,f="playlist start"),this.startPosition!=u||this.nextLoadPosition!=u){let d=r.live&&!this.filterReplacedPrimary(h,r)?-1:u;this.log(`Setting startPosition to ${d} next load ${u} ${-1===a?"":`(from ${s}) `}based on ${f}. live edge: ${n} live frag start: ${o} playlist start: ${l} buffer pos: ${i}`),this.startPosition=d,this.nextLoadPosition=u}}}else i<=l&&(h=s[0]);if(!h){let s=this.loadingParts?r.partEnd:r.fragmentEnd;h=this.getFragmentAtPosition(i,s,r)}let u=this.filterReplacedPrimary(h,r);return!u&&h&&(u=iv(r,h.sn))&&(this.nextLoadPosition=u.start),u}isLoopLoading(i,r){if(this.nextLoadPosition<=r)return!1;let s=this.fragmentTracker.getState(i);return!!("OK"===s||s===iR&&(i.gap||i.stats.retry>1))}getNextFragmentLoopLoading(i,r,s,a,n){let l=null;if(i.gap&&(l=this.getNextFragment(this.nextLoadPosition,r))&&!l.gap&&s.nextStart){let i=this.getFwdBufferInfoAtPos(this.mediaBuffer?this.mediaBuffer:this.media,s.nextStart,a,0);if(null!==i&&s.len+i.len>=n){let i=l.sn;return this.loopSn!==i&&(this.log(`buffer full after gaps in "${a}" playlist starting at sn: ${i}`),this.loopSn=i),null}}return this.loopSn=void 0,l}get primaryPrefetch(){if(r5(this.config)){var i;if(null!=(i=this.hls.interstitialsManager)&&null!=(i=i.playingItem)&&i.event)return!0}return!1}filterReplacedPrimary(i,r){if(!i)return i;if(r5(this.config)&&("type"in i?i:i.fragment).type!==b.SUBTITLE){let s=this.hls.interstitialsManager,a=null==s?void 0:s.bufferingItem;if(a){let s=a.event;if(s){if(!s.appendInPlace&&(Math.abs(i.start-a.start)>1||0===a.start))return null}else if(i.end<=a.start&&(null==r?void 0:r.live)===!1||i.start>=a.end&&a.nextEvent&&(a.nextEvent.appendInPlace&&!a.nextEvent.hasPlayed||i.start-a.end>1))return null}if(r8(i,null==s?void 0:s.playerQueue,this.playhead))return null}return i}getNextPart(i,r,s){let a=-1,n=!1,l=!0;for(let o=0,h=i.length;o<h;o++){let h=i[o];if(l=l&&!h.independent,a>-1&&s<h.start)break;let d=h.loaded||h.gap;d?a=-1:(n||(h.independent||l)&&h.fragment===r)&&(a=o),n=d&&!h.gap}let o=i[a];return o&&o.fragment!==r&&this.log(`Need buffer at ${s} but next unloaded part starts at ${o.start} (sn: ${r.sn} -> ${o.fragment.sn})`),a}loadedEndOfParts(i,r){let s;for(let a=i.length;a--&&(s=i[a]).loaded;)if(r>s.start)return!0;return!1}getInitialLiveFragment(i){let r=i.fragments,s=this.fragPrevious,a=null;if(s){if(i.hasProgramDateTime&&(a=function(i,r,s){if(null===r||!Array.isArray(i)||!i.length||!m(r)||r<(i[0].programDateTime||0)||r>=(i[i.length-1].endProgramDateTime||0))return null;for(let a=0;a<i.length;++a){let n=i[a];if(function(i,r,s){let a=1e3*Math.min(r,s.duration+(s.deltaPTS?s.deltaPTS:0));return(s.endProgramDateTime||0)-a>i}(r,s,n))return n}return null}(r,s.endProgramDateTime,this.config.maxFragLookUpTolerance))&&this.log(`Live playlist, switching playlist, load frag with same PDT: ${s.programDateTime}`),!a){let n=s.sn+1;if(n>=i.startSN&&n<=i.endSN){let l=r[n-i.startSN];s.cc===l.cc&&(a=l,this.log(`Live playlist, switching playlist, load frag with next SN: ${a.sn}`))}
16a||(a=ip(i,s.cc,s.end))&&this.log(`Live playlist, switching playlist, load frag with same CC: ${a.sn}`)}}else{let r=this.hls.liveSyncPosition;null!==r&&(a=this.getFragmentAtPosition(r,this.bitrateTest?i.fragmentEnd:i.edge,i))}return a}getFragmentAtPosition(i,r,s){let a,{config:n}=this,{fragPrevious:l}=this,{fragments:o,endSN:h}=s,{fragmentHint:d}=s,{maxFragLookUpTolerance:u}=n,f=s.partList,c=!!(this.loadingParts&&null!=f&&f.length&&d);if(c&&!this.bitrateTest&&f[f.length-1].fragment.sn===d.sn&&(o=o.concat(d),h=d.sn),l&&this.fragmentTracker.getState(l)===iA&&(l=null),i<r){var g;let s=i<this.lastCurrentTime||i>r-u||null!=(g=this.media)&&g.paused||!this.startFragRequested?0:u;a=ig(l,o,i,s)}else a=o[o.length-1];if(a){let i=a.sn-s.startSN,r=this.fragmentTracker.getState(a);if(("OK"===r||r===iR&&a.gap)&&(l=a),C(a,l)&&(!c||f[0].fragment.sn>a.sn||!s.live)){let r=o[i+1];a=a.sn<h&&"OK"!==this.fragmentTracker.getState(r)?r:null}}return a}alignPlaylists(i,r,s){let a=i.fragments.length;if(!a)return this.warn("No fragments in live playlist"),0;let n=i.fragmentStart,l=!r,o=i.alignedSliding&&m(n);if(l||!o&&!n){rK(s,i,this);let n=i.fragmentStart;return this.log(`Live playlist sliding: ${n} start-sn: ${r?r.startSN:"na"}->${i.startSN} fragments: ${a}`),n}return n}waitForCdnTuneIn(i){return i.live&&i.canBlockReload&&i.partTarget&&i.tuneInGoal>Math.max(i.partHoldBack,3*i.partTarget)}setStartPosition(i,r){let s=this.startPosition;s<r&&(s=-1);let a=this.timelineOffset;if(-1===s){let n=null!==this.startTimeOffset,l=n?this.startTimeOffset:i.startTimeOffset;if(null!==l&&m(l))s=r+l,l<0&&(s+=i.edge),s=Math.min(Math.max(r,s),r+i.totalduration),this.log(`Setting startPosition to ${s} for start time offset ${l}
16 found in ${n?"multivariant":"media"} playlist`),this.startPosition=s;else if(i.live){let i=this.hls.liveSyncPosition;s=i||r,this.log(`Setting startPosition to -1 to start at ${i?"live edge":"playlist start"} ${s}`),this.startPosition=-1}else this.log("setting startPosition to 0 by default"),this.startPosition=s=0;this.lastCurrentTime=s+a}this.nextLoadPosition=s+a}getLoadPosition(){var i;let{media:r}=this,s=0;return null!=(i=this.hls)&&i.hasEnoughToStart&&r&&!this.iframesOnly?s=r.currentTime:this.nextLoadPosition>=0&&(s=this.nextLoadPosition),s}get playhead(){var i,r;if(null!=(i=this.hls)&&i.hasEnoughToStart){let i=null==(r=this.media)?void 0:r.currentTime;return m(i)?i:this.lastCurrentTime}return this.getLoadPosition()}get iframesOnly(){var i;if(this.playlistType!==b.MAIN)return!1;let r=this.getLevelDetails();return r?r.iframesOnly:null==(i=this.levelLastLoaded)?void 0:i.iframes}handleFragLoadAborted(i,r){this.transmuxer&&i.type===this.playlistType&&_(i)&&i.stats.aborted&&(this.log(`Fragment ${i.sn}${r?" part "+r.index:""} of ${this.playlistLabel()} ${i.level} was aborted`),this.resetFragmentLoading(i))}resetFragmentLoading(i){this.fragCurrent&&(this.fragContextChanged(i)||this.state===rX)||(this.state=rW)}onFragmentOrKeyLoadError(i,r){var s,a;if(r.chunkMeta&&!r.frag){let i=this.getCurrentContext(r.chunkMeta);i&&(r.frag=i.frag)}let{frag:n,part:l}=r;if(!n||!this.levels||n.type!==i)return;if(this.fragContextChanged(n))return void this.warn(`Frag load error must match current frag to retry ${n.relurl} > ${null==(s=this.fragCurrent)?void 0:s.relurl}`);let o=r.details===E.FRAG_GAP;o&&this.fragmentTracker.addAsGap(n);let h=r.errorAction;if(!h){this.state=r1;return}let{action:d,flags:u,retryCount:f=0,retryConfig:c}=h,g=!!c,m=g&&5===d,p=g&&!h.resolved&&1&u,v=this.hls.latestLevelDetails,y=null==v?void 0:v.live;if(!m&&p&&_(n)&&y&&n.sn<v.endSN&&!G(r))this.resetFragmentErrors(i),l?l.gap=!0:this.treatAsGap(n),h.resolved=!0;else if((m||p)&&f<c.maxNumRetry){let s=q(null==(a=r.response)?void 0:a.code),l=H(c,f);if(this.resetStartWhenNotLoaded(),this.retryDate=self.performance.now()+l,this.state=rX,h.resolved=!0,s){this.log("Waiting for connection (offline)"),this.retryDate=1/0,r.reason="offline";return}this.warn(`Fragment ${n.sn} of ${i} ${n.level} errored with ${r.details}, retrying loading ${f+1}/${c.maxNumRetry} in ${l}ms`)}else if(c)if(this.resetFragmentErrors(i),!(f<c.maxNumRetry))return void this.warn(`${r.details} reached or exceeded max retry (${f})`);else o||3===d||(h.resolved=!0);else this.state=2===d?r3:r1;this.tickImmediate()}checkRetryDate(){let i=self.performance.now(),r=this.retryDate,s=r===1/0;(!r||i>=r||s&&!q(0))&&(s&&this.log("Connection restored (online)"),this.resetStartWhenNotLoaded(),this.state=rW)}reduceLengthAndFlushBuffer(i){if(this.state===rZ||this.state===rJ){let r=i.frag,s=i.parent,a=this.getFwdBufferInfo(this.mediaBuffer,s),n=a&&a.len>.5;n&&this.reduceMaxBufferLength(a.len,(null==r?void 0:r.duration)||10);let l=!n;return l?this.warn(`Buffer full error while media.currentTime (${this.playhead}) is not buffered, flush ${s} buffer`):a.nextStart&&r&&a.nextStart>r.start&&this.flushMainBuffer(a.nextStart,1/0,s===b.AUDIO?s:void 0),r&&(this.fragmentTracker.removeFragment(r),this.nextLoadPosition=r.start),this.resetLoadingState(),l}return!1}resetFragmentErrors(i){i===b.AUDIO&&(this.fragCurrent=null),this.hls.hasEnoughToStart||(this.startFragRequested=!1),this.state!==rq&&(this.state=rW)}afterBufferFlushed(i,r){if(!i)return;let s=iK.getBuffered(i);this.fragmentTracker.detectEvictedFragments(r,s,this.playlistType),this.state===r0&&this.resetLoadingState()}resetLoadingState(){this.log("Reset loading state"),this.fragCurrent=null,this.fragPrevious=null,this.state!==rq&&(this.state=rW)}resetStartWhenNotLoaded(){if(!this.hls.hasEnoughToStart){this.startFragRequested=!1;let i=this.getLevelDetails();null!=i&&i.live?(this.log("resetting startPosition for live start"),this.startPosition=-1,this.setStartPosition(i,i.fragmentStart),this.resetLoadingState()):this.nextLoadPosition=this.startPosition}}resetWhenMissingContext(i){this.log(`Loading context changed while buffering sn ${i.sn} of ${this.playlistLabel()} ${-1===i.level?"<removed>":i.level}. This chunk will not be buffered.`),this.removeUnbufferedFrags(),this.resetStartWhenNotLoaded(),this.resetLoadingState()}removeUnbufferedFrags(i=0){this.fragmentTracker.removeFragmentsInRange(i,1/0,this.playlistType,!1,!0)}updateLevelTiming(i,r,s,a){let n=s.details;if(!n)return void this.warn("level.details undefined");if(this.log(`update level timing ${i.type} sn: ${i.sn}${r?" part: "+r.index:""} of ${this.fragInfo(i,!1,r)}`),!Object.keys(i.elementaryStreams).reduce((r,l)=>{let o=i.elementaryStreams[l];if(o){let h=o.endPTS-o.startPTS;if(h<=0)return this.warn(`Could not parse fragment ${i.sn} ${l} duration reliably (${h})`),r||!1;let d=a.partial?0:r_(n,i,o.startPTS,o.endPTS,o.startDTS,o.endDTS,this.iframesOnly,this);return this.hls.trigger(T.LEVEL_PTS_UPDATED,{details:n,level:s,drift:d,type:l,frag:i,start:o.startPTS,end:o.endPTS}),!0}return r},!1)){var l,o,h,d;let a=(null==(l=this.transmuxer)?void 0:l.error)===null,n=(null==(o=this.transmuxer)?void 0:o.error)!=null,u=(null==(h=null==(d=this.levels)?void 0:d.length)?0:h)>1;
16if((0===s.fragmentError||a&&(s.fragmentError<2||i.endList)||n&&u)&&this.treatAsGap(i,s),a){let a=Error(`Found no media in ${this.playlistLabel()} ${i.level} ${r?`part: ${r.index} of `:""}sn: ${i.sn} at playlist time: ${i.start}. Resetting transmuxer to fallback to playlist timing`);if(this.warn(a.message),this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,fatal:!1,error:a,frag:i,reason:`Found no media in msn ${i.sn} of ${this.playlistLabel()} "${s.url}"`}),!this.hls)return;this.resetTransmuxer()}}this.state=rJ,this.log(`Parsed ${i.type} sn: ${i.sn}${r?" part: "+r.index:""} of ${this.fragInfo(i,!1,r)}`),this.hls.trigger(T.FRAG_PARSED,{frag:i,part:r,chunkMeta:a})}playlistLabel(){return`${this.playlistType} playlist`}fragInfo(i,r=!0,s){var a,n;return`${this.playlistLabel()} ${i.level} (${s?"part":"frag"}:[${null==(a=r&&!s?i.startPTS:(s||i).start)?NaN:a}-${null==(n=r&&!s?i.endPTS:(s||i).end)?NaN:n}]${s&&"main"===i.type?"INDEPENDENT="+(s.independent?"YES":"NO"):""})`}treatAsGap(i,r){r&&r.fragmentError++,this.fragmentTracker.addAsGap(i)}resetTransmuxer(){var i;null==(i=this.transmuxer)||i.reset()}isFragmentNearlyDownloaded(i){var r;let s=null==(r=i.loader)?void 0:r.stats;if(!s)return!1;let a=s.loading.first>0,n=(s.total-s.loaded)/(this.hls.bandwidthEstimate||this.hls.config.abrEwmaDefaultEstimate);return a&&n<=.15}recoverWorkerError(i){"demuxerWorker"===i.event&&(this.fragmentTracker.removeAllFragments(),this.transmuxer&&(this.transmuxer.destroy(),this.transmuxer=null),this.resetStartWhenNotLoaded(),this.resetLoadingState())}set state(i){let r=this._state;r!==i&&(this._state=i,this.log(`${r}->${i}`))}get state(){return this._state}calculateOptimalSwitchPoint(i,r){let s=0,{hls:a,media:n,config:l,levels:o,playlistType:h}=this,d=this.getLevelDetails();if(n&&!n.paused&&o){var u;let r=h===b.AUDIO?t0(i.audioCodec,128e3):i.maxBitrate,n=1+a.ttfbEstimate/1e3,o=a.bandwidthEstimate*l.abrBandWidthUpFactor;s=n+r*(d&&(this.loadingParts?d.partTarget:d.averagetargetduration)||(null==(u=this.fragCurrent)?void 0:u.duration)||6)/o,i.details||(s+=n)}let f=this.playhead,c=!(null!=d&&d.live)||r.end-f>1.5*s;return{fetchdelay:s,okToFlushForwardBuffer:c}}scheduleTrackSwitch(i,r,s){let{media:a,playlistType:n}=this;if(!a||!i)return;let l=s?this.getBufferedFrag(this.playhead+r):null;if(l){let i=this.followingBufferedFrag(l);if(i){var o;this.abortCurrentFrag();let r=i.maxStartPTS?i.maxStartPTS:i.start,s=i.duration,a=Math.max(l.end,r+Math.min(Math.max(s-this.config.maxFragLookUpTolerance,s*(this.couldBacktrack?.5:.125)),s*(this.couldBacktrack?.75:.25)));if(((null==(o=this.getLevelDetails())?void 0:o.fragmentStart)||0)>a)return;let h=n===b.MAIN?null:"audio";this.flushMainBuffer(a,1/0,h),this.cleanupBackBuffer()}}}cleanupBackBuffer(){let{media:i,playlistType:r}=this;if(!i)return;let s=this.getAppendedFrag(this.playhead);if(s&&s.start>1){let i=r===b.AUDIO;this.flushMainBuffer(0,s.start-!i,i?"audio":null)}}getBufferedFrag(i){return this.fragmentTracker.getBufferedFrag(i,this.playlistType)}followingBufferedFrag(i){return i?this.getBufferedFrag(i.end+.5):null}abortCurrentFrag(){let i=this.fragCurrent;switch(this.fragCurrent=null,i&&(i.abortRequests(),this.fragmentTracker.removeFragment(i)),this.state){case rY:case rz:case rX:case rZ:case rJ:this.state=rW}this.nextLoadPosition=this.playhead}checkFragPlaying(){let i=this.media,r=null;if(i&&i.readyState>1&&!1===i.seeking){let s=i.currentTime;if(iK.isBuffered(i,s)?r=this.getAppendedFrag(s):iK.isBuffered(i,s+.1)&&(r=this.getAppendedFrag(s+.1)),r&&(this.backtrackFragment=void 0,!C(r,this.fragPlaying)))return this.fragPlaying=r,!0}return!1}getBufferOutput(){return null}nextLevelSwitch(){let{levels:i,media:r,hls:s,config:a,playlistType:n}=this;if(null!=r&&r.readyState&&i&&s&&a){let r=this.getBufferOutput(),a=this.getFwdBufferInfo(r,n);if(!a)return;let l=i[n===b.AUDIO?s.nextAudioTrack:s.nextLoadLevel],{fetchdelay:o,okToFlushForwardBuffer:h}=this.calculateOptimalSwitchPoint(l,a);this.scheduleTrackSwitch(a,o,h)}this.tickImmediate()}};function r8(i,r,s){if(r)for(let a=r.length;a--;){let n=r[a].interstitial,l=n.startTime,o=Math.min(l+n.duration,n.resumeTime);if(n.appendInPlace&&(i.start>=l&&i.end<=o||s>i.start&&i.end>l&&i.start<o))return!0}return!1}function r5(i){return!!i.interstitialsController&&!1!==i.enableInterstitialPlayback}var r6,r9,r7=class{constructor(){this.chunks=[],this.dataLength=0}push(i){this.chunks.push(i),this.dataLength+=i.length}flush(){let{chunks:i,dataLength:r}=this,s;return i.length?(s=1===i.length?i[0]:function(i,r){let s=new Uint8Array(r),a=0;for(let r=0;r<i.length;r++){let n=i[r];s.set(n,a),a+=n.length}return s}(i,r),this.reset(),s):new Uint8Array}reset(){this.chunks.length=0,this.dataLength=0}},se={exports:{}},st=(r9||(r9=1,function(i){var r=Object.prototype.hasOwnProperty,s="~";function a(){}function n(i,r,s){this.fn=i,this.context=r,this.once=s||!1}function l(i,r,a,l,o){if("function"!=typeof a)throw TypeError("The listener must be a function");var h=new n(a,l||i,o),d=s?s+r:r;return i._events[d]?i._events[d].fn?i._events[d]=[i._events[d],h]:i._events[d].push(h):(i._events[d]=h,i._eventsCount++),i}function o(i,r){0==--i._eventsCount?i._events=new a:delete i._events[r]}function h(){this._events=new a,this._eventsCount=0}Object.create&&(a.prototype=Object.create(null),new a().__proto__||(s=!1)),h.prototype.eventNames=function(){var i,a,n=[];if(0===this._eventsCount)return n;for(a in i=this._events)r.call(i,a)&&n.push(s?a.slice(1):a);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(i)):n},h.prototype.listeners=function(i){var r=s?s+i:i,a=this._events[r];if(!a)return[];if(a.fn)return[a.fn];for(var n=0,l=a.length,o=Array(l);n<l;n++)o[n]=a[n].fn;return o},h.prototype.listenerCount=function(i){var r=s?s+i:i,a=this._events[r];return a?a.fn?1:a.length:0},h.prototype.emit=function(i,r,a,n,l,o){var h=s?s+i:i;if(!this._events[h])return!1;var d,u,f=this._events[h],c=arguments.length;if(f.fn){switch(f.once&&this.removeListener(i,f.fn,void 0,!0),c){case 1:return f.fn.call(f.context),!0;case 2:return f.fn.call(f.context,r),!0;case 3:return f.fn.call(f.context,r,a),!0;case 4:return f.fn.call(f.context,r,a,n),!0;case 5:return f.fn.call(f.context,r,a,n,l),!0;case 6:return f.fn.call(f.context,r,a,n,l,o),!0}for(u=1,d=Array(c-1);u<c;u++)d[u-1]=arguments[u];f.fn.apply(f.context,d)}else{var g,m=f.length;for(u=0;
16u<m;u++)switch(f[u].once&&this.removeListener(i,f[u].fn,void 0,!0),c){case 1:f[u].fn.call(f[u].context);break;case 2:f[u].fn.call(f[u].context,r);break;case 3:f[u].fn.call(f[u].context,r,a);break;case 4:f[u].fn.call(f[u].context,r,a,n);break;default:if(!d)for(g=1,d=Array(c-1);g<c;g++)d[g-1]=arguments[g];f[u].fn.apply(f[u].context,d)}}return!0},h.prototype.on=function(i,r,s){return l(this,i,r,s,!1)},h.prototype.once=function(i,r,s){return l(this,i,r,s,!0)},h.prototype.removeListener=function(i,r,a,n){var l=s?s+i:i;if(!this._events[l])return this;if(!r)return o(this,l),this;var h=this._events[l];if(h.fn)h.fn!==r||n&&!h.once||a&&h.context!==a||o(this,l);else{for(var d=0,u=[],f=h.length;d<f;d++)(h[d].fn!==r||n&&!h[d].once||a&&h[d].context!==a)&&u.push(h[d]);u.length?this._events[l]=1===u.length?u[0]:u:o(this,l)}return this},h.prototype.removeAllListeners=function(i){var r;return i?(r=s?s+i:i,this._events[r]&&o(this,r)):(this._events=new a,this._eventsCount=0),this},h.prototype.off=h.prototype.removeListener,h.prototype.addListener=h.prototype.on,h.prefixed=s,h.EventEmitter=h,i.exports=h}(se)),(ls=se.exports)&&ls.__esModule&&Object.prototype.hasOwnProperty.call(ls,"default"))?ls.default:ls,si="1.7.3",sr={};function ss(i,r){return 255===i[r]&&(246&i[r+1])==240}function sa(i,r){return 1&i[r+1]?7:9}function sn(i,r){return(3&i[r+3])<<11|i[r+4]<<3|(224&i[r+5])>>>5}function sl(i,r){return r+1<i.length&&ss(i,r)}function so(i,r,s,a,n){if(!i.samplerate){let l=function(i,r,s,a){let n=r[s+2],l=n>>2&15;if(l>12){let r=Error(`invalid ADTS sampling index:${l}`);i.emit(T.ERROR,T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,fatal:!0,error:r,reason:r.message});return}let o=(n>>6&3)+1,h=r[s+3]>>6&3|(1&n)<<2,d=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350][l],u=l;(5===o||29===o)&&(u-=3);let f,c=(14&u)>>1,g=(1&u)<<7|h<<3,m=0;if(1===o&&l>=6){let i=l-3;f=[(m=5)<<3|c,g|(14&i)>>1,(1&i)<<7|8,0]}else f=[o<<3|c,g];let p="mp4a.40."+(m||o);return et.log(`manifest codec:${a}, parsed codec:${p}, channels:${h}, rate:${d} (ADTS object type:${o} sampling index:${l} esds config:[${f.join(",")}])`),{config:f,samplerate:d,channelCount:h,codec:p,parsedCodec:p,manifestCodec:a}}(r,s,a,n);l&&O(i,l)}}function sh(i,r,s,a,n){let l=a+n*(9216e4/i.samplerate),o=function(i,r){let s=sa(i,r);if(r+s<=i.length){let a=sn(i,r)-s;if(a>0)return{headerLength:s,frameLength:a}}}(r,s),h;if(o){let{frameLength:a,headerLength:n}=o,d=n+a,u=Math.max(0,s+d-r.length);u?(h=new Uint8Array(d-n)).set(r.subarray(s+n,r.length),0):h=r.subarray(s+n,s+d);let f={unit:h,pts:l};return u||i.samples.push(f),{sample:f,length:d,missing:u}}let d=r.length-s;return(h=new Uint8Array(d)).set(r.subarray(s,r.length),0),{sample:{unit:h,pts:l},length:d,missing:-1}}var sd=((la={}).audioId3="org.id3",la.dateRange="com.apple.quicktime.HLS",la.emsg="https://aomedia.org/emsg/ID3",la.misbklv="urn:misb:KLV:bin:1910.1",la);function su(i="",r=9e4){return{type:i,id:-1,pid:-1,inputTimeScale:r,sequenceNumber:-1,samples:[],dropped:0}}var sf=class{constructor(){this._audioTrack=void 0,this._id3Track=void 0,this.frameIndex=0,this.cachedData=null,this.basePTS=null,this.initPTS=null,this.lastPTS=null}resetInitSegment(i,r,s,a){this._id3Track={type:"id3",id:3,pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0}}resetTimeStamp(i){this.initPTS=i,this.resetContiguity()}resetContiguity(){this.basePTS=null,this.lastPTS=null,this.frameIndex=0}canParse(i,r){return!1}appendFrame(i,r,s){}demux(i,r){this.cachedData&&(i=tE(this.cachedData,i),this.cachedData=null);let s=ef(i,0),a=s?s.length:0,n,l=this._audioTrack,o=this._id3Track,h=s?ev(s):void 0,d=i.length;for((null===this.basePTS||0===this.frameIndex&&m(h))&&(this.basePTS=sc(h,r,this.initPTS),this.lastPTS=this.basePTS),null===this.lastPTS&&(this.lastPTS=this.basePTS),s&&s.length>0&&o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:sd.audioId3,duration:1/0});a<d;){if(this.canParse(i,a)){let r=this.appendFrame(l,i,a);r?(this.frameIndex++,this.lastPTS=r.sample.pts,a+=r.length,n=a):a=d}else{var u,f;eh(u=i,f=a)&&ed(u,f+6)+10<=u.length-f?(s=ef(i,a),o.samples.push({pts:this.lastPTS,dts:this.lastPTS,data:s,type:sd.audioId3,duration:1/0}),a+=s.length,n=a):a++}if(a===d&&n!==d){let r=i.slice(n);this.cachedData=this.cachedData?tE(this.cachedData,r):r}}return{audioTrack:l,videoTrack:su(),id3Track:o,textTrack:su()}}demuxSampleAes(i,r,s){return Promise.reject(Error(`[${this}] This demuxer does not support Sample-AES decryption`))}flush(i){let r=this.cachedData;return r&&(this.cachedData=null,this.demux(r,0)),{audioTrack:this._audioTrack,videoTrack:su(),id3Track:this._id3Track,textTrack:su()}}destroy(){this.cachedData=null,this._audioTrack=this._id3Track=void 0}},sc=(i,r,s)=>m(i)?90*i:9e4*r+(s?9e4*s.baseTime/s.timescale:0),sg=[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160],sm=[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3],sp=[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]],sv=[0,1,1,4];
16function sy(i,r,s,a,n){if(s+24>r.length)return;let l=sE(r,s);if(l&&s+l.frameLength<=r.length){let o=a+n*(9e4*l.samplesPerFrame/l.sampleRate),h={unit:r.subarray(s,s+l.frameLength),pts:o,dts:o};return i.config=[],i.channelCount=l.channelCount,i.samplerate=l.sampleRate,i.samples.push(h),{sample:h,length:l.frameLength,missing:0}}}function sE(i,r){let s=i[r+1]>>3&3,a=i[r+1]>>1&3,n=i[r+2]>>4&15,l=i[r+2]>>2&3;if(1!==s&&0!==n&&15!==n&&3!==l){let o=i[r+2]>>1&1,h=i[r+3]>>6,d=1e3*sg[(3===s?3-a:3===a?3:4)*14+n-1],u=sm[(3===s?0:2===s?1:2)*3+l],f=sp[s][a],c=sv[a],g=Math.floor(f*d/u+o)*c,m=tM();return m&&m<=87&&2===a&&d>=224e3&&0===h&&(i[r+3]=128|i[r+3]),{sampleRate:u,channelCount:3===h?1:2,frameLength:g,samplesPerFrame:8*f*c}}}function sT(i,r){return 255===i[r]&&(224&i[r+1])==224&&!!(6&i[r+1])}function sS(i,r){return r+1<i.length&&sT(i,r)}function sA(i,r){if(r+1<i.length&&sT(i,r)){let s=sE(i,r),a=4;null!=s&&s.frameLength&&(a=s.frameLength);let n=r+a;return n===i.length||sS(i,n)}return!1}var sL=class{constructor(i,r,s){this.keyData=void 0,this.decrypter=void 0,this.keyData=s,this.decrypter=new ix(r,!0)}decryptBuffer(i){return this.decrypter.decrypt(i,this.keyData.key.buffer,this.keyData.iv.buffer,0,{start:0,end:i.byteLength})}decryptAacSample(i,r,s){let a=i[r].unit;if(a.length<=16)return;let n=a.subarray(16,a.length-a.length%16),l=n.buffer.slice(n.byteOffset,n.byteOffset+n.length);this.decryptBuffer(l).then(n=>{let l=new Uint8Array(n);a.set(l,16),this.decrypter.isSync()||this.decryptAacSamples(i,r+1,s)}).catch(s)}decryptAacSamples(i,r,s){for(;;r++){if(r>=i.length)return void s();if(!(i[r].unit.length<32)&&(this.decryptAacSample(i,r,s),!this.decrypter.isSync()))return}}getAvcEncryptedData(i){let r=new Int8Array(16*Math.floor((i.length-48)/160)+16),s=0;for(let a=32;a<i.length-16;a+=160,s+=16)r.set(i.subarray(a,a+16),s);return r}getAvcDecryptedUnit(i,r){let s=new Uint8Array(r),a=0;for(let r=32;r<i.length-16;r+=160,a+=16)i.set(s.subarray(a,a+16),r);return i}decryptAvcSample(i,r,s,a,n){let l=tL(n.data),o=this.getAvcEncryptedData(l);this.decryptBuffer(o.buffer).then(o=>{n.data=this.getAvcDecryptedUnit(l,o),this.decrypter.isSync()||this.decryptAvcSamples(i,r,s+1,a)}).catch(a)}decryptAvcSamples(i,r,s,a){if(i instanceof Uint8Array)throw Error("Cannot decrypt samples of type Uint8Array");for(;;r++,s=0){if(r>=i.length)return void a();let n=i[r].units;for(;!(s>=n.length);s++){let l=n[s];if(!(l.data.length<=48||1!==l.type&&5!==l.type)&&(this.decryptAvcSample(i,r,s,a,l),!this.decrypter.isSync()))return}}}},sR=class extends sf{constructor(i,r){super(),this.observer=void 0,this.config=void 0,this.sampleAes=null,this.observer=i,this.config=r}resetInitSegment(i,r,s,a){super.resetInitSegment(i,r,s,a),this._audioTrack={container:"audio/adts",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"aac",samples:[],manifestCodec:r,duration:a,inputTimeScale:9e4,dropped:0}}static probe(i,r){if(!i)return!1;let s=ef(i,0),a=(null==s?void 0:s.length)||0;if(sA(i,a))return!1;for(let s=i.length;a<s;a++)if(function(i,r){if(sl(i,r)){let s=sa(i,r);if(r+s>=i.length)return!1;let a=sn(i,r);if(a<=s)return!1;let n=r+a;return n===i.length||sl(i,n)}return!1}(i,a))return r.log("ADTS sync word found !"),!0;return!1}canParse(i,r){return r+5<i.length&&ss(i,r)&&sn(i,r)<=i.length-r}appendFrame(i,r,s){so(i,this.observer,r,s,i.manifestCodec);let a=sh(i,r,s,this.basePTS,this.frameIndex);if((null==a?void 0:a.missing)===0)return a}demuxSampleAes(i,r,s){let a=this.demux(i,s),n=this.sampleAes=new sL(this.observer,this.config,r);return new Promise(i=>{n.decryptAacSamples(a.audioTrack.samples,0,()=>{i(a)})})}},sb=(i,r)=>{let s=0,a=5;r+=5;let n=new Uint32Array(1),l=new Uint32Array(1),o=new Uint8Array(1);for(;a>0;){o[0]=i[r];let h=Math.min(a,8),d=8-h;l[0]=0xff000000>>>24+d<<d,n[0]=(o[0]&l[0])>>d,s=s?s<<h|n[0]:n[0],r+=1,a-=h}return s},sI=class extends sf{constructor(i){super(),this.observer=void 0,this.observer=i}resetInitSegment(i,r,s,a){super.resetInitSegment(i,r,s,a),this._audioTrack={container:"audio/ac-3",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"ac3",samples:[],manifestCodec:r,duration:a,inputTimeScale:9e4,dropped:0}}canParse(i,r){return r+64<i.length}appendFrame(i,r,s){let a=sk(i,r,s,this.basePTS,this.frameIndex);if(-1!==a)return{sample:i.samples[i.samples.length-1],length:a,missing:0}}static probe(i){if(!i)return!1;let r=ef(i,0);if(!r)return!1;let s=r.length;if(11===i[s]&&119===i[s+1]&&void 0!==ev(r)){if(16>sb(i,s))return!0;throw Error("Containerless ec-3 is not supported")}return!1}};
16function sk(i,r,s,a,n){if(s+8>r.length||11!==r[s]||119!==r[s+1])return -1;let l=r[s+4]>>6;if(l>=3)return -1;let o=[48e3,44100,32e3][l],h=63&r[s+4],d=2*[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][3*h+l];if(s+d>r.length)return -1;let u=r[s+6]>>5,f=0;2===u?f+=2:(1&u&&1!==u&&(f+=2),4&u&&(f+=2));let c=(r[s+6]<<8|r[s+7])>>12-f&1,g=[2,1,2,3,3,4,4,5][u]+c,m=r[s+5]>>3,p=7&r[s+5],v=new Uint8Array([l<<6|m<<1|p>>2,(3&p)<<6|u<<3|c<<2|h>>4,h<<4&224]),y=r.subarray(s,s+d);return i.config=v,i.channelCount=g,i.samplerate=o,i.samples.push({unit:y,pts:a+1536/o*9e4*n}),d}var sD=class extends sf{resetInitSegment(i,r,s,a){super.resetInitSegment(i,r,s,a),this._audioTrack={container:"audio/mpeg",type:"audio",id:2,pid:-1,sequenceNumber:0,segmentCodec:"mp3",samples:[],manifestCodec:r,duration:a,inputTimeScale:9e4,dropped:0}}static probe(i){if(!i)return!1;let r=ef(i,0),s=(null==r?void 0:r.length)||0;if(r&&11===i[s]&&119===i[s+1]&&void 0!==ev(r)&&16>=sb(i,s))return!1;for(let r=i.length;s<r;s++)if(sA(i,s))return et.log("MPEG Audio sync word found !"),!0;return!1}canParse(i,r){return sT(i,r)&&4<=i.length-r}appendFrame(i,r,s){if(null!==this.basePTS)return sy(i,r,s,this.basePTS,this.frameIndex)}},sP=/\/emsg[-/]ID3/i,s_=class{constructor(i,r,s,a=et){this.remainderData=null,this.timeOffset=0,this.config=void 0,this.videoTrack=void 0,this.audioTrack=void 0,this.id3Track=void 0,this.txtTrack=void 0,this.initData=void 0,this.logger=void 0,this.config=r,this.logger=a}resetTimeStamp(){}resetInitSegment(i,r,s,a){let n=this.videoTrack=su("video",1),l=this.audioTrack=su("audio",1),o=this.txtTrack=su("text",1);if(this.id3Track=su("id3",1),this.initData=void 0,this.timeOffset=0,!(null!=i&&i.byteLength))return;let h=this.initData=tu(i);if(h.video){let{id:i,timescale:r,codec:s,supplemental:a}=h.video;n.id=i,n.timescale=o.timescale=r,n.codec=s,n.supplemental=a}if(h.audio){let{id:i,timescale:r,codec:s}=h.audio;l.id=i,l.timescale=r,l.codec=s}o.id=te.text,n.sampleDuration=0,n.duration=l.duration=a}resetContiguity(){this.remainderData=null}static probe(i){let r=i.byteLength;for(let s=0;s<r;){let a=ti(i,s);if(a>8&&ti(i,s+4)===eU)return!0;s=a>1?s+a:r}return!1}demux(i,r,s){this.timeOffset=r;let a=i,n=this.videoTrack,l=this.txtTrack;if(this.config.progressive){this.remainderData&&(a=tE(this.remainderData,i));let r=function(i){let r={valid:null,remainder:null},s=td(i,["moof"]);if(s.length<2)return r.remainder=i,r;let a=s[s.length-1];return r.valid=i.slice(0,a.byteOffset-8),r.remainder=i.slice(a.byteOffset-8),r}(a);this.remainderData=r.remainder,n.samples=r.valid||new Uint8Array}else n.samples=a;let o=this.extractID3Track(n,r),h=this.parseFragment(n,l,r,s);return{videoTrack:n,audioTrack:this.audioTrack,id3Track:o,textTrack:this.txtTrack,initData:this.initData,sampleData:h}}flush(i,r){let s=this.timeOffset,a=this.videoTrack,n=this.txtTrack;a.samples=this.remainderData||new Uint8Array,this.remainderData=null;let l=this.extractID3Track(a,this.timeOffset),o=this.parseFragment(a,n,s,r);return{videoTrack:a,audioTrack:su(),id3Track:l,textTrack:su(),initData:this.initData,sampleData:o}}parseFragment(i,r,s,a){var n;let l,o,h,d,u,f=this.initData;if(f&&a){let{samples:n,sampleData:l}=function(i,r,s,a,n=!1){let l=[];return{samples:l,sampleData:{includeSampleDetails:n,tracks:ty(r.samples,s,a,n,{isHEVCFlavor:tT(r.codec),samples:l,timeOffset:i,timescale:r.timescale,trackId:r.id})}}}(s,i,f,this.logger,a.iframe);
16return r.samples=n,l}n=s,l=[],o=i.samples,h=i.timescale,d=i.id,u=!1,td(o,["moof"]).map(r=>{let s=r.byteOffset-8;td(r,["traf"]).map(r=>{let a=td(r,["tfdt"]).map(i=>{let r=i[0],s=ti(i,4);return 1===r&&(s*=0x100000000,s+=ti(i,8)),s/h})[0];return void 0!==a&&(n=a),td(r,["tfhd"]).map(a=>{let f=ti(a,4),c=0xffffff&ti(a,0),g=!!(1&c),m=0,p=0,v=0,y=8;f===d&&(g?(m=ti(a,y),y+=4,m*=0x100000000,m+=ti(a,y),y+=4):!g&&131072&c&&(m=s),2&c&&(y+=4),8&c&&(p=ti(a,y),y+=4),16&c&&(v=ti(a,y),y+=4),32&c&&(y+=4),"video"===i.type&&(u=tT(i.codec)),td(r,["trun"]).map(r=>{let s=r[0],a=0xffffff&ti(r,0),d=0,f=!!(256&a),c=0,g=!!(512&a),y=0,E=!!(1024&a),T=!!(2048&a),S=0,A=ti(r,4),L=8;1&a&&(d=ti(r,L),L+=4),4&a&&(L+=4);let R=m+d;for(let a=0;a<A;a++){if(f?(c=ti(r,L),L+=4):c=p,g?(y=ti(r,L),L+=4):y=v,E&&(L+=4),T&&(S=0===s?ti(r,L):ta(r,L),L+=4),i.type===k){let i=0;for(;i<y;){let r=ti(o,R);R+=4,tS(u,o[R])&&tA(o.subarray(R,R+r),u?2:1,n+S/h,l),R+=r,i+=r+4}}n+=c/h}}))})})}),r.samples=l}extractID3Track(i,r){let s=this.id3Track;if(i.samples.length){let a=td(i.samples,["emsg"]);a&&a.forEach(i=>{let a=function(i){let r=i[0],s="",a="",n=0,l=0,o,h=0,d=0,u=4;if(0===r){let r=ts(i,u),o=null===r?null:ts(i,u+r.length);null!==r&&null!==o?(s=r,a=o,u+=r.length+o.length,n=ti(i,u),u+=4,l=ti(i,u),u+=4,h=ti(i,u),u+=4,d=ti(i,u),u+=4):(et.warn(`Unterminated ${null===r?"scheme_id_uri":"value"} in parsing emsg box: version 0 box ends inside a string, dropping all of its fields`),u=i.length)}else if(1===r){n=ti(i,u);let r=ti(i,u+=4),l=ti(i,u+=4);u+=4,p(o=0x100000000*r+l)||(o=0x20000000000000-1,et.warn("Presentation time exceeds safe integer limit and wrapped to max safe integer in parsing emsg box")),h=ti(i,u),u+=4,d=ti(i,u);let f=ts(i,u+=4),c=null===f?null:ts(i,u+f.length);null!==f&&(s=f,u+=f.length),null===c?(et.warn(`Unterminated ${null===f?"scheme_id_uri":"value"} in parsing emsg box: version 1 box ends inside a string, dropping its ${null===f?"strings and payload":"value and payload"}`),u=i.length):(a=c,u+=c.length)}return{schemeIdUri:s,value:a,timeScale:n,presentationTime:o,presentationTimeDelta:l,eventDuration:h,id:d,payload:i.subarray(u,i.byteLength)}}(i);if(sP.test(a.schemeIdUri)){let i=sC(a,r),n=0xffffffff===a.eventDuration?1/0:a.eventDuration/a.timeScale;n<=.001&&(n=1/0);let l=a.payload;s.samples.push({data:l,len:l.byteLength,dts:i,pts:i,type:sd.emsg,duration:n})}else if(this.config.enableEmsgKLVMetadata){let i=this.config.emsgKLVSchemaUri||sd.misbklv;if(a.schemeIdUri.startsWith(i)){let i=sC(a,r);s.samples.push({data:a.payload,len:a.payload.byteLength,dts:i,pts:i,type:sd.misbklv,duration:1/0})}}})}return s}demuxSampleAes(i,r,s){return Promise.reject(Error("The MP4 demuxer does not support SAMPLE-AES decryption"))}destroy(){this.config=null,this.remainderData=null,this.videoTrack=this.audioTrack=this.id3Track=this.txtTrack=void 0,this.initData=void 0}};function sC(i,r){return m(i.presentationTime)?i.presentationTime/i.timeScale:r+i.presentationTimeDelta/i.timeScale}var sx=class{constructor(){this.VideoSample=null}createVideoSample(i,r,s){return{key:i,frame:!1,pts:r,dts:s,units:[],length:0}}getLastNalUnit(i){var r;let s=this.VideoSample,a;if(s&&0!==s.units.length||(s=i[i.length-1]),null!=(r=s)&&r.units){let i=s.units;a=i[i.length-1]}return a}pushAccessUnit(i,r){if(i.units.length&&i.frame){if(void 0===i.pts){let s=r.samples,a=s.length;if(!a)return void r.dropped++;{let r=s[a-1];i.pts=r.pts,i.dts=r.dts}}r.samples.push(i)}}parseNALu(i,r,s){let a=r.byteLength;if(0===a)return[];let n=i.naluState||0,l=-1===n?0:n,o=[],h=0,d=0,u=-1,f=0;for(-1===n&&(u=0,f=this.getNALuType(r,0),d=1);d<a;){let s=r.indexOf(1,d);if(-1===s)break;d=s+1;let n=s;for(;n>0&&0===r[n-1];)n--;if(!(s-n+(0===n?l:0)<2)){if(u>=0)o.push({data:r.subarray(u,n),type:f});else{let s=this.getLastNalUnit(i.samples);s&&(n>0?s.data=tE(s.data,r.subarray(0,n)):l>0&&(s.data=s.data.subarray(0,s.data.byteLength-l)),s.state=0)}if(d<a)u=d,f=this.getNALuType(r,d);else{h=-1,u=-1;break}}}if(-1!==h){let i=a;for(;i>0&&0===r[i-1];)i--;h=a-i+(0===i?l:0)}if(u>=0)o.push({data:r.subarray(u),type:f,state:h});else if(0===o.length&&-1!==h){let s=this.getLastNalUnit(i.samples);s&&(s.data=tE(s.data,r),s.state=h)}return i.naluState=h,o}},sw=class{constructor(i){this.data=void 0,this.bytesAvailable=void 0,this.word=void 0,this.bitsAvailable=void 0,this.data=i,this.bytesAvailable=i.byteLength,this.word=0,this.bitsAvailable=0}loadWord(){let i=this.data,r=this.bytesAvailable,s=i.byteLength-r,a=new Uint8Array(4),n=Math.min(4,r);
16if(0===n)throw Error("no bytes available");a.set(i.subarray(s,s+n)),this.word=new DataView(a.buffer).getUint32(0),this.bitsAvailable=8*n,this.bytesAvailable-=n}skipBits(i){let r;i=Math.min(i,8*this.bytesAvailable+this.bitsAvailable),this.bitsAvailable>i||(i-=this.bitsAvailable,r=i>>3,i-=r<<3,this.bytesAvailable-=r,this.loadWord()),this.word<<=i,this.bitsAvailable-=i}readBits(i){let r=Math.min(this.bitsAvailable,i),s=this.word>>>32-r;if(i>32&&et.error("Cannot read more than 32 bits at a time"),this.bitsAvailable-=r,this.bitsAvailable>0)this.word<<=r;else if(this.bytesAvailable>0)this.loadWord();else throw Error("no bits available");return(r=i-r)>0&&this.bitsAvailable?s<<r|this.readBits(r):s}skipLZ(){let i;for(i=0;i<this.bitsAvailable;++i)if(this.word&0x80000000>>>i)return this.word<<=i,this.bitsAvailable-=i,i;return this.loadWord(),i+this.skipLZ()}skipUEG(){this.skipBits(1+this.skipLZ())}skipEG(){this.skipBits(1+this.skipLZ())}readUEG(){let i=this.skipLZ();return this.readBits(i+1)-1}readEG(){let i=this.readUEG();return 1&i?1+i>>>1:-1*(i>>>1)}readBoolean(){return 1===this.readBits(1)}readUByte(){return this.readBits(8)}},sM=class extends sx{parsePES(i,r,s,a,n){let l=n.iframe,o=this.parseNALu(i,s.data,a),h=this.VideoSample,d,u=!1;s.data=null,h&&o.length&&!i.audFound&&(this.pushAccessUnit(h,i),h=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts)),o.forEach(a=>{var n,o,f,c,g;switch(a.type){case 1:{if(l)break;let r=!1;d=!0;let n=a.data;if(u&&n.length>4){let i=this.readSliceType(n);(2===i||4===i||7===i||9===i)&&(r=!0)}r&&null!=(f=h)&&f.frame&&!h.key&&(this.pushAccessUnit(h,i),h=this.VideoSample=null),h||(h=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),h.frame=!0,h.key=r;break}case 5:d=!0,null!=(n=h)&&n.frame&&!h.key&&(this.pushAccessUnit(h,i),h=this.VideoSample=null),h||(h=this.VideoSample=this.createVideoSample(!0,s.pts,s.dts)),h.key=!0,h.frame=!0;break;case 6:if(l)break;d=!0,tA(a.data,1,s.pts,r.samples);break;case 7:{d=!0,u=!0;let r=a.data,s=this.readSPS(r);if(!i.sps||i.width!==s.width||i.height!==s.height||(null==(c=i.pixelRatio)?void 0:c[0])!==s.pixelRatio[0]||(null==(g=i.pixelRatio)?void 0:g[1])!==s.pixelRatio[1]){i.width=s.width,i.height=s.height,i.pixelRatio=s.pixelRatio,i.sps=[r];let a=r.subarray(1,4),n="avc1.";for(let i=0;i<3;i++){let r=a[i].toString(16);r.length<2&&(r="0"+r),n+=r}i.codec=n}break}case 8:d=!0,i.pps=[a.data];break;case 9:d=!0,i.audFound=!0,null!=(o=h)&&o.frame&&(this.pushAccessUnit(h,i),h=null),h||(h=this.VideoSample=this.createVideoSample(!1,s.pts,s.dts));break;case 12:d=!0;break;default:d=!1}h&&d&&h.units.push(a)}),a&&h&&(this.pushAccessUnit(h,i),this.VideoSample=null)}getNALuType(i,r){return 31&i[r]}readSliceType(i){let r=new sw(i);return r.readUByte(),r.readUEG(),r.readUEG()}skipScalingList(i,r){let s=8,a=8;for(let n=0;n<i;n++)0!==a&&(a=(s+r.readEG()+256)%256),s=0===a?s:a}readSPS(i){let r=new sw(i),s=0,a=0,n=0,l=0,o,h,d,u=r.readUByte.bind(r),f=r.readBits.bind(r),c=r.readUEG.bind(r),g=r.readBoolean.bind(r),m=r.skipBits.bind(r),p=r.skipEG.bind(r),v=r.skipUEG.bind(r),y=this.skipScalingList.bind(this);u();let E=u();if(f(5),m(3),u(),v(),100===E||110===E||122===E||244===E||44===E||83===E||86===E||118===E||128===E){let i=c();if(3===i&&m(1),v(),v(),m(1),g())for(h=3===i?12:8,d=0;d<h;d++)g()&&y(d<6?16:64,r)}v();let T=c();if(0===T)c();else if(1===T)for(m(1),p(),p(),o=c(),d=0;d<o;d++)p();v(),m(1);let S=c(),A=c(),L=f(1);0===L&&m(1),m(1),g()&&(s=c(),a=c(),n=c(),l=c());let R=[1,1];if(g()&&g())switch(u()){case 1:R=[1,1];break;case 2:R=[12,11];break;case 3:R=[10,11];break;case 4:R=[16,11];break;case 5:R=[40,33];break;case 6:R=[24,11];break;case 7:R=[20,11];break;case 8:R=[32,11];break;case 9:R=[80,33];break;case 10:R=[18,11];break;case 11:R=[15,11];break;case 12:R=[64,33];break;case 13:R=[160,99];break;case 14:R=[4,3];break;case 15:R=[3,2];break;case 16:R=[2,1];break;case 255:R=[u()<<8|u(),u()<<8|u()]}return{width:Math.ceil((S+1)*16-2*s-2*a),height:(2-L)*(A+1)*16-(L?2:4)*(n+l),pixelRatio:R}}},sO=class extends sx{constructor(...i){super(...i),this.initVPS=null}parsePES(i,r,s,a){let n=this.parseNALu(i,s.data,a),l=this.VideoSample,o,h=!1;s.data=null;let d=i=>l=this.VideoSample=this.createVideoSample(i,s.pts,s.dts);
16n.forEach((a,n)=>{var u,f,c;switch(this.startsNewAccessUnit(l,i,a,n)&&(this.pushAccessUnit(l,i),l=d(a.type>=16&&a.type<=23),h=!1),a.type){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9:l||(l=d(!1)),l.frame=!0,o=!0;break;case 16:case 17:case 18:case 21:case 22:case 23:o=!0,h&&null!=(c=l)&&c.frame&&!l.key&&(this.pushAccessUnit(l,i),l=this.VideoSample=null),l||(l=d(!0)),l.key=!0,l.frame=!0;break;case 19:case 20:o=!0,null!=(u=l)&&u.frame&&!l.key&&(this.pushAccessUnit(l,i),l=this.VideoSample=null),l||(l=d(!0)),l.key=!0,l.frame=!0;break;case 39:o=!0,tA(a.data,2,s.pts,r.samples);break;case 32:o=!0,i.vps||("object"!=typeof i.params&&(i.params={}),i.params=O(i.params,this.readVPS(a.data)),this.initVPS=a.data),i.vps=[a.data];break;case 33:if(o=!0,h=!0,void 0===i.vps||i.vps[0]===this.initVPS||void 0===i.sps||this.matchSPS(i.sps[0],a.data)||(this.initVPS=i.vps[0],i.sps=i.pps=void 0),!i.sps){let r=this.readSPS(a.data);for(let s in i.width=r.width,i.height=r.height,i.pixelRatio=r.pixelRatio,i.codec=r.codecString,i.sps=[],"object"!=typeof i.params&&(i.params={}),r.params)i.params[s]=r.params[s]}this.pushParameterSet(i.sps,a.data,i.vps),l||(l=d(!1));break;case 34:if(o=!0,"object"==typeof i.params){if(!i.pps){i.pps=[];let r=this.readPPS(a.data);for(let s in r)i.params[s]=r[s]}this.pushParameterSet(i.pps,a.data,i.vps)}break;case 35:o=!0,i.audFound=!0,null!=(f=l)&&f.frame&&(this.pushAccessUnit(l,i),l=null),l||(l=d(!1));break;default:o=!1}l&&o&&l.units.push(a)}),a&&l&&(this.pushAccessUnit(l,i),this.VideoSample=null)}pushParameterSet(i,r,s){(!s||s[0]!==this.initVPS)&&(s||i.length)||i.push(r)}startsNewAccessUnit(i,r,s,a){if(!i)return!1;if(!r.audFound&&0===a)return!0;if(!i.frame)return!1;let{type:n,data:l}=s;return n>=32&&n<=35||39===n||n>=41&&n<=44||n>=48&&n<=55||n<=31&&l.length>2&&!!(128&l[2])}getNALuType(i,r){return(126&i[r])>>>1}ebsp2rbsp(i){let r=new Uint8Array(i.byteLength),s=0;for(let a=0;a<i.byteLength;a++)a>=2&&3===i[a]&&0===i[a-1]&&0===i[a-2]||(r[s]=i[a],s++);return new Uint8Array(r.buffer,0,s)}pushAccessUnit(i,r){super.pushAccessUnit(i,r),this.initVPS&&(this.initVPS=null)}readVPS(i){let r=new sw(i);return r.readUByte(),r.readUByte(),r.readBits(4),r.skipBits(2),r.readBits(6),{numTemporalLayers:r.readBits(3)+1,temporalIdNested:r.readBoolean()}}readSPS(i){let r=new sw(this.ebsp2rbsp(i));r.readUByte(),r.readUByte(),r.readBits(4);let s=r.readBits(3);r.readBoolean();let a=r.readBits(2),n=r.readBoolean(),l=r.readBits(5),o=r.readUByte(),h=r.readUByte(),d=r.readUByte(),u=r.readUByte(),f=r.readUByte(),c=r.readUByte(),g=r.readUByte(),m=r.readUByte(),p=r.readUByte(),v=r.readUByte(),y=r.readUByte(),E=[],T=[];for(let i=0;i<s;i++)E.push(r.readBoolean()),T.push(r.readBoolean());if(s>0)for(let i=s;i<8;i++)r.readBits(2);for(let i=0;i<s;i++)E[i]&&(r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte(),r.readUByte()),T[i]&&r.readUByte();r.readUEG();let S=r.readUEG();3==S&&r.skipBits(1);let A=r.readUEG(),L=r.readUEG(),R=r.readBoolean(),b=0,I=0,k=0,D=0;R&&(b+=r.readUEG(),I+=r.readUEG(),k+=r.readUEG(),D+=r.readUEG());let P=r.readUEG(),_=r.readUEG(),C=r.readUEG(),x=r.readBoolean();for(let i=x?0:s;i<=s;i++)r.skipUEG(),r.skipUEG(),r.skipUEG();if(r.skipUEG(),r.skipUEG(),r.skipUEG(),r.skipUEG(),r.skipUEG(),r.skipUEG(),r.readBoolean()&&r.readBoolean())for(let i=0;i<4;i++)for(let s=0;s<(3===i?2:6);s++)if(r.readBoolean()){let s=Math.min(64,1<<4+(i<<1));i>1&&r.readEG();for(let i=0;i<s;i++)r.readEG()}else r.readUEG();r.readBoolean(),r.readBoolean(),r.readBoolean()&&(r.readUByte(),r.skipUEG(),r.skipUEG(),r.readBoolean());let w=r.readUEG(),M=0;for(let i=0;i<w;i++){let s=!1;if(0!==i&&(s=r.readBoolean()),s){i===w&&r.readUEG(),r.readBoolean(),r.readUEG();let s=0;for(let i=0;i<=M;i++){let i=r.readBoolean(),a=!1;i||(a=r.readBoolean()),(i||a)&&s++}M=s}else{let i=r.readUEG(),s=r.readUEG();M=i+s;for(let s=0;s<i;s++)r.readUEG(),r.readBoolean();for(let i=0;i<s;i++)r.readUEG(),r.readBoolean()}}if(r.readBoolean()){let i=r.readUEG();for(let s=0;s<i;s++){for(let i=0;i<C+4;i++)r.readBits(1);r.readBits(1)}}let O=0,F=1,$=1,B=!0,U=1,N=0;r.readBoolean(),r.readBoolean();if(r.readBoolean()){if(r.readBoolean()){let i=r.readUByte();i>0&&i<16?(F=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2][i-1],$=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1][i-1]):255===i&&(F=r.readBits(16),$=r.readBits(16))}if(r.readBoolean()&&r.readBoolean(),r.readBoolean()&&(r.readBits(3),r.readBoolean(),r.readBoolean()&&(r.readUByte(),r.readUByte(),r.readUByte())),r.readBoolean()&&(r.readUEG(),r.readUEG()),r.readBoolean(),r.readBoolean(),r.readBoolean(),r.readBoolean()&&(r.skipUEG(),r.skipUEG(),r.skipUEG(),r.skipUEG()),r.readBoolean()&&(U=r.readBits(32),N=r.readBits(32),r.readBoolean()&&r.readUEG(),r.readBoolean())){let i=r.readBoolean(),a=r.readBoolean(),n=!1;(i||a)&&((n=r.readBoolean())&&(r.readUByte(),r.readBits(5),r.readBoolean(),r.readBits(5)),r.readBits(4),r.readBits(4),n&&r.readBits(4),r.readBits(5),r.readBits(5),r.readBits(5));for(let l=0;l<=s;l++){let s=(B=r.readBoolean())||r.readBoolean(),l=!1;s?r.readEG():l=r.readBoolean();let o=l?1:r.readUEG()+1;if(i)for(let i=0;i<o;i++)r.readUEG(),r.readUEG(),n&&(r.readUEG(),r.readUEG()),r.skipBits(1);if(a)for(let i=0;i<o;i++)r.readUEG(),r.readUEG(),n&&(r.readUEG(),r.readUEG()),r.skipBits(1)}}r.readBoolean()&&(r.readBoolean(),r.readBoolean(),r.readBoolean(),O=r.readUEG())}let G=A,K=L;if(R){let i=1,r=1;1===S?i=r=2:2==S&&(i=2),G=A-i*I-i*b,K=L-r*D-r*k}let H=a?["A","B","C"][a]:"",V=o<<24|h<<16|d<<8|u,j=0;for(let i=0;i<32;i++)j=(j|(V>>i&1)<<31-i)>>>0;let q=j.toString(16);return 1===l&&"2"===q&&(q="6"),{codecString:`hvc1.${H}${l}.${q}.${n?"H":"L"}${y}.B0`,params:{general_tier_flag:n,general_profile_idc:l,general_profile_space:a,general_profile_compatibility_flags:[o,h,d,u],general_constraint_indicator_flags:[f,c,g,m,p,v],general_level_idc:y,bit_depth:P+8,bit_depth_luma_minus8:P,bit_depth_chroma_minus8:_,min_spatial_segmentation_idc:O,chroma_format_idc:S,frame_rate:{fixed:B,fps:N/U}},width:G,height:K,pixelRatio:[F,$]}}readPPS(i){let r=new sw(this.ebsp2rbsp(i));r.readUByte(),r.readUByte(),r.skipUEG(),r.skipUEG(),r.skipBits(2),r.ski
16pBits(3),r.skipBits(2),r.skipUEG(),r.skipUEG(),r.skipEG(),r.skipBits(2),r.readBoolean()&&r.skipUEG(),r.skipEG(),r.skipEG(),r.skipBits(4);let s=r.readBoolean(),a=r.readBoolean(),n=1;return a&&s?n=0:a?n=3:s&&(n=2),{parallelismType:n}}matchSPS(i,r){return eS(i).substring(3)===eS(r).substring(3)}},sF=class i{constructor(i,r,s,a){this.logger=void 0,this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.sampleAes=null,this.pmtParsed=!1,this.audioCodec=void 0,this.videoCodec=void 0,this._pmtId=-1,this._videoTrack=void 0,this._audioTrack=void 0,this._id3Track=void 0,this._txtTrack=void 0,this._klvPid=-1,this.aacOverFlow=null,this.remainderData=null,this.videoParser=void 0,this.videoIntegrityChecker=null,this.observer=i,this.config=r,this.typeSupported=s,this.logger=a,this.videoParser=null}static probe(r,s){let a=i.syncOffset(r);return a>0&&s.warn(`MPEG2-TS detected but first sync word found @ offset ${a}`),-1!==a}static syncOffset(i){let r=i.length,s=Math.min(940,r-188)+1,a=0;for(;a<s;){let n=!1,l=-1,o=0;for(let h=a;h<r;h+=188)if(71===i[h]&&(r-h==188||71===i[h+188])){if(o++,-1===l&&0!==(l=h)&&(s=Math.min(l+18612,i.length-188)+1),n||(n=0===s$(i,h)),n&&o>1&&(0===l&&o>2||h+188>s))return l}else if(o)return -1;else break;a++}return -1}static createTrack(i,r){return{container:"video"===i||"audio"===i?"video/mp2t":void 0,type:i,id:te[i],pid:-1,inputTimeScale:9e4,sequenceNumber:0,samples:[],dropped:0,duration:"audio"===i?r:void 0}}resetInitSegment(r,s,a,n,l,o){this.pmtParsed=!1,this._pmtId=-1,this._videoTrack=i.createTrack("video"),this._videoTrack.duration=n,this.videoIntegrityChecker="skip"===this.config.handleMpegTsVideoIntegrityErrors?new sG(this.logger):null,this._audioTrack=i.createTrack("audio",n),this._id3Track=i.createTrack("id3"),this._txtTrack=i.createTrack("text"),this._audioTrack.segmentCodec="aac",this.videoParser=null,this.aacOverFlow=null,this.remainderData=null,this.audioCodec=s,this.videoCodec=a,r&&this.demux(r,0,o,(null==l?void 0:l.method)==="SAMPLE-AES")}resetTimeStamp(){}resetContiguity(){let{_audioTrack:i,_videoTrack:r,_id3Track:s}=this;i&&(i.pesData=null),r&&(r.pesData=null),s&&(s.pesData=null),this.aacOverFlow=null,this.remainderData=null}demux(r,s,a,n=!1,l=!1){n||(this.sampleAes=null);let o,h=this._videoTrack,d=this.videoIntegrityChecker,u=this._audioTrack,f=this._id3Track,c=this._txtTrack,g=a.iframe,m=h.pid,p=h.pesData,v=u.pid,y=f.pid,E=this._klvPid,T=u.pesData,S=f.pesData,A=null,L=null,R=this.pmtParsed,b=this._pmtId,I=r.length;if(this.remainderData&&(I=(r=tE(this.remainderData,r)).length,this.remainderData=null),I<188&&!l)return this.remainderData=r,{audioTrack:u,videoTrack:h,id3Track:f,textTrack:c};let k=Math.max(0,i.syncOffset(r));(I-=(I-k)%188)<r.byteLength&&!l&&(this.remainderData=new Uint8Array(r.buffer,I,r.buffer.byteLength-I));let D=0;for(let i=k;i<I;i+=188)if(71===r[i]){let s=!!(64&r[i+1]),l=s$(r,i),I;if((48&r[i+3])>>4>1){if((I=i+5+r[i+4])===i+188)continue}else I=i+4;switch(l){case m:s&&(p&&!(null!=d&&d.isCorrupted)&&(o=sN(p,this.logger))&&(this.readyVideoParser(h.segmentCodec),null!==this.videoParser&&this.videoParser.parsePES(h,c,o,!1,a)),p={data:[],size:0},null==d||d.reset(m)),null==d||d.handlePacket(r.subarray(i)),p&&(p.data.push(r.subarray(I,i+188)),p.size+=i+188-I);break;case v:if(g)break;if(s){if(T&&(o=sN(T,this.logger)))switch(u.segmentCodec){case"aac":this.parseAACPES(u,o,a);break;case"mp3":this.parseMPEGPES(u,o);break;case"ac3":this.parseAC3PES(u,o)}T={data:[],size:0}}T&&(T.data.push(r.subarray(I,i+188)),T.size+=i+188-I);break;case y:if(g)break;s&&(S&&(o=sN(S,this.logger))&&this.parseID3PES(f,o),S={data:[],size:0}),S&&(S.data.push(r.subarray(I,i+188)),S.size+=i+188-I);break;case E:if(g)break;s&&(A&&(o=sN(A,this.logger))&&this.parseKlvPES(f,o),A={data:[],size:0}),A&&(A.data.push(r.subarray(I,i+188)),A.size+=i+188-I);break;case 0:var P,_;s&&(I+=r[I]+1),b=this._pmtId=(31&(P=r)[(_=I)+10])<<8|P[_+11];break;case b:{s&&(I+=r[I]+1);let l=function(i,r,s,a,n,l,o,h){let d={audioPid:-1,videoPid:-1,id3Pid:-1,klvPid:-1,segmentVideoCodec:"avc",segmentAudioCodec:"aac"},u=(15&i[r+1])<<8|i[r+2],f=r+3+u-4,c=(15&i[r+10])<<8|i[r+11];for(r+=12+c;r<f;){let u=s$(i,r),f=(15&i[r+3])<<8|i[r+4];switch(i[r]){case 207:if(!a){sU("ADTS AAC",l);break}case 15:-1===d.audioPid&&(d.audioPid=u);break;case 21:-1===d.id3Pid&&(d.id3Pid=u);break;case 219:if(!a){sU("H.264",l);break}case 27:-1===d.videoPid&&(d.videoPid=u);break;case 3:case 4:s.mpeg||s.mp3?-1===d.audioPid&&(d.audioPid=u,d.segmentAudioCodec="mp3"):l.log("MPEG audio found, not supported in this browser");break;case 193:if(!a){sU("AC-3",l);break}case 129:s.ac3?-1===d.audioPid&&(d.audioPid=u,d.segmentAudioCodec="ac3"):l.log("AC-3 audio found, not supported in this browser");break;case 6:if(f>0){let a=r+5,n=f;for(;n>2;){switch(i[a]){case 106:-1===d.audioPid&&(!0===s.ac3?(d.audioPid=u,d.segmentAudioCodec="ac3"):l.log("AC-3 audio found, not supported in this browser for now"));break;case 5:-1===d.klvPid&&o.enableEmsgKLVMetadata&&(d.klvPid=u,l.log(`KLV metadata PID found: ${u}`))}let r=i[a+1]+2;a+=r,n-=r}}break;case 194:case 135:return sB(n,Error("Unsupported EC-3 in M2TS found"),h,void 0,l),d;case 36:-1===d.videoPid&&(d.videoPid=u,d.segmentVideoCodec="hevc",l.log("HEVC in M2TS found"))}r+=f+5}return d}
16(r,I,this.typeSupported,n,this.observer,this.logger,this.config,a);(m=l.videoPid)>0&&(h.pid=m,h.segmentCodec=l.segmentVideoCodec),(v=l.audioPid)>0&&(u.pid=v,u.segmentCodec=l.segmentAudioCodec),(y=l.id3Pid)>0&&(f.pid=y),(E=l.klvPid)>0&&(this._klvPid=E),null===L||R||(this.logger.warn(`MPEG-TS PMT found at ${i} after unknown PID '${L}'. Backtracking to sync byte @${k} to parse all TS packets.`),L=null,i=k-188),R=this.pmtParsed=!0;break}case 17:case 8191:break;default:L=l}}else D++;D>0&&sB(this.observer,Error(`Found ${D} TS packet/s that do not start with 0x47`),a,void 0,this.logger),h.pesData=p,u.pesData=T,f.pesData=S;let C={audioTrack:u,videoTrack:h,id3Track:f,textTrack:c};return l&&this.extractRemainingSamples(C,a),C}flush(i,r){let s,{remainderData:a}=this;return this.remainderData=null,s=a?this.demux(a,0,r,!1,!0):{videoTrack:this._videoTrack,audioTrack:this._audioTrack,id3Track:this._id3Track,textTrack:this._txtTrack},this.extractRemainingSamples(s,r),this.sampleAes?this.decrypt(s,this.sampleAes):s}extractRemainingSamples(i,r){let{audioTrack:s,videoTrack:a,id3Track:n,textTrack:l}=i,o=a.pesData,h=s.pesData,d=n.pesData,u=this.videoIntegrityChecker,f;if(o&&!(null!=u&&u.isCorrupted)&&(f=sN(o,this.logger))?(this.readyVideoParser(a.segmentCodec),null!==this.videoParser&&(this.videoParser.parsePES(a,l,f,!0,r),a.pesData=null)):a.pesData=o,h&&(f=sN(h,this.logger))){switch(s.segmentCodec){case"aac":this.parseAACPES(s,f,r);break;case"mp3":this.parseMPEGPES(s,f);break;case"ac3":this.parseAC3PES(s,f)}s.pesData=null}else null!=h&&h.size&&this.logger.log("last AAC PES packet truncated,might overlap between fragments"),s.pesData=h;d&&(f=sN(d,this.logger))?(this.parseID3PES(n,f),n.pesData=null):n.pesData=d}demuxSampleAes(i,r,s,a){let n=this.demux(i,s,a,!0,!this.config.progressive),l=this.sampleAes=new sL(this.observer,this.config,r);return this.decrypt(n,l)}readyVideoParser(i){null===this.videoParser&&("avc"===i?this.videoParser=new sM:"hevc"===i&&(this.videoParser=new sO))}decrypt(i,r){return new Promise(s=>{let{audioTrack:a,videoTrack:n}=i;a.samples&&"aac"===a.segmentCodec?r.decryptAacSamples(a.samples,0,()=>{n.samples?r.decryptAvcSamples(n.samples,0,0,()=>{s(i)}):s(i)}):n.samples&&r.decryptAvcSamples(n.samples,0,0,()=>{s(i)})})}destroy(){this.observer&&this.observer.removeAllListeners(),this.config=this.logger=this.observer=null,this.aacOverFlow=this.videoParser=this.remainderData=this.sampleAes=null,this._videoTrack=this._audioTrack=this._id3Track=this._txtTrack=void 0,this.videoIntegrityChecker=null}parseAACPES(i,r,s){let a,n,l,o=0,h=this.aacOverFlow,d=r.data;if(h){this.aacOverFlow=null;let r=h.missing,s=h.sample.unit.byteLength;-1===r?d=tE(h.sample.unit,d):(h.sample.unit.set(d.subarray(0,r),s-r),i.samples.push(h.sample),o=h.missing)}for(a=o,n=d.length;a<n-1&&!sl(d,a);a++);if(a!==o){let i,r=a<n-1;if(i=r?`AAC PES did not start with ADTS header,offset:${a}`:"No ADTS header found in AAC PES",sB(this.observer,Error(i),s,r,this.logger),!r)return}if(so(i,this.observer,d,a,this.audioCodec),void 0!==r.pts)l=r.pts;else{if(!h)return void this.logger.warn("[tsdemuxer]: AAC PES unknown PTS");let r=9216e4/i.samplerate;l=h.sample.pts+r}let u=0,f;for(;a<n;){if(f=sh(i,d,a,l,u),a+=f.length,f.missing){this.aacOverFlow=f;break}for(u++;a<n-1&&!sl(d,a);a++);}}parseMPEGPES(i,r){let s=r.data,a=s.length,n=0,l=0,o=r.pts;if(void 0===o)return void this.logger.warn("[tsdemuxer]: MPEG PES unknown PTS");for(;l<a;)if(sS(s,l)){let r=sy(i,s,l,o,n);if(r)l+=r.length,n++;else break}else l++}parseAC3PES(i,r){{let s=r.data,a=r.pts;if(void 0===a)return void this.logger.warn("[tsdemuxer]: AC3 PES unknown PTS");let n=s.length,l=0,o=0,h;for(;o<n&&(h=sk(i,s,o,a,l++))>0;)o+=h}}parseID3PES(i,r){if(void 0===r.pts)return void this.logger.warn("[tsdemuxer]: ID3 PES unknown PTS");let s=O({},r,{type:this._videoTrack?sd.emsg:sd.audioId3,duration:1/0});i.samples.push(s)}parseKlvPES(i,r){var s,a;let n=null==(s=r.pts)?r.dts:s;if(void 0===n)return void this.logger.warn("[tsdemuxer]: KLV PES unknown PTS and DTS");let l=r.data;if(l.length<16)return void this.logger.warn("[tsdemuxer]: KLV PES payload too short");let o=0;for(;o<l.length&&!(o+16>l.length);){let s=o;if((o+=16)>=l.length)break;let h=l[o];o+=1;let d=0;if(128&h){let i=127&h;if(0===i||i>4||o+i>l.length){this.logger.warn("[tsdemuxer]: Invalid KLV length encoding");break}for(let r=0;r<i;r++)d=d<<8|l[o+r];o+=i}else d=h;if(o+d>l.length){this.logger.warn("[tsdemuxer]: KLV value extends beyond PES payload");break}let u=o+d,f=l.subarray(s,u),c={data:f,len:f.byteLength,pts:n,dts:null==(a=r.dts)?n:a,type:sd.misbklv,duration:1/0};i.samples.push(c),o=u}}};function s$(i,r){return((31&i[r+1])<<8)+i[r+2]}function sB(i,r,s,a,n){n.warn(`parsing error: ${r.message}`),i.emit(T.ERROR,T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,fatal:!1,levelRetry:a,chunkMeta:s,error:r,reason:r.message})}function sU(i,r){r.log(`${i} with AES-128-CBC encryption found in unencrypted stream`)}function sN(i,r){let s=0,a,n,l,o,h,d=i.data;if(!i||0===i.size)return null;for(;d[0].length<19&&d.length>1;)d[0]=tE(d[0],d[1]),d.splice(1,1);if(((a=d[0])[0]<<16)+(a[1]<<8)+a[2]===1){if((n=(a[4]<<8)+a[5])&&n>i.size-6)return null;let u=a[7];192&u&&(o=(14&a[9])*0x20000000+(255&a[10])*4194304+(254&a[11])*16384+(255&a[12])*128+(254&a[13])/2,64&u?o-(h=(14&a[14])*0x20000000+(255&a[15])*4194304+(254&a[16])*16384+(255&a[17])*128+(254&a[18])/2)>54e5&&(r.warn(`${Math.round((o-h)/9e4)}s delta between PTS and DTS, align them`),o=h):h=o);let f=(l=a[8])+9;if(i.size<=f)return null;i.size-=f;
16let c=new Uint8Array(i.size);for(let i=0,r=d.length;i<r;i++){let r=(a=d[i]).byteLength;if(f){if(f>r){f-=r;continue}a=a.subarray(f),r-=f,f=0}c.set(a,s),s+=r}return n&&(n-=l+3),{data:c,pts:o,dts:h,len:n}}return null}var sG=class{constructor(i){this.logger=void 0,this.pid=0,this.lastContinuityCounter=-1,this.integrityState="ok",this.logger=i}get isCorrupted(){return"ok"!==this.integrityState}reset(i){this.pid=i,this.lastContinuityCounter=-1,this.integrityState="ok"}handlePacket(i){if(i.byteLength<4)return;let r=s$(i,0);if(r!==this.pid)return void this.logger.debug(`Packet PID mismatch, expected ${this.pid} got ${r}`);let s=(48&i[3])>>4;if(0===s)return;let a=15&i[3],n=this.lastContinuityCounter;if(this.lastContinuityCounter=a,2&s&&0!=i[4]&&128&i[5]||n<0)return;let l=1&s?n+1&15:n;if(a!==l){this.logger.warn(`MPEG-TS Continuity Counter check failed for PID='${r}', CC=${a}, Expected-CC=${l} Last-CC=${n}`),this.integrityState="cc-failed";return}if(128&i[1]){this.logger.warn(`MPEG-TS Packet had TEI flag set for PID='${r}'`),this.integrityState="tei-bit";return}}},sK=class{static getSilentFrame(i,r){if("mp4a.40.2"===i){if(1===r)return new Uint8Array([0,200,0,128,35,128]);if(2===r)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===r)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===r)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===r)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===r)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===r)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===r||3===r)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}},sH={video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])},sV=new Uint8Array([0,0,0,0,0,0,0,0]),sj=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),sq=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]),sW=new Uint8Array([0,0,0,0,0,0,0,0]),sY=new Uint8Array([0,0,0,0,0,0,0,1]),sz=new Uint8Array([105,115,111,109]),sX=new Uint8Array([97,118,99,49]),sQ=new Uint8Array([0,0,0,1]),sZ=class i{static box(i,...r){let s=8,a=r.length,n=a;for(;a--;)s+=r[a].byteLength;let l=new Uint8Array(s);for(tn(l,0,s),tn(l,4,i),a=0,s=8;a<n;a++)l.set(r[a],s),s+=r[a].byteLength;return l}static hdlr(r){return i.box(ew,sH[r])}static mdat(r){return i.box(eM,r)}static mdhd(r,s){let a=Math.floor((s*=r)/(eA+1)),n=Math.floor(s%(eA+1));return i.box(eO,new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,a>>24,a>>16&255,a>>8&255,255&a,n>>24,n>>16&255,n>>8&255,255&n,85,196,0,0]))}static mdia(r){return i.box(eF,i.mdhd(r.timescale||0,r.duration||0),i.hdlr(r.type),i.minf(r))}static mfhd(r){return i.box(e$,new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]))}static minf(r){return"audio"===r.type?i.box(eB,i.box(e7,sW),i.DINF,i.stbl(r)):i.box(eB,i.box(e9,sq),i.DINF,i.stbl(r))}static moof(r,s,a){return i.box(eU,i.mfhd(r),i.traf(a,s))}static moov(r){let s=r.length,a=[];for(;s--;)a[s]=i.trak(r[s]);return i.box.apply(null,[eN,i.mvhd(r[0].timescale||0,r[0].duration||0)].concat(a,i.mvex(r)))}static mvex(r){let s=r.length,a=[];for(;s--;)a[s]=i.trex(r[s]);return i.box.apply(null,[ej,...a])}static mvhd(r,s){let a=Math.floor((s*=r)/(eA+1)),n=Math.floor(s%(eA+1)),l=new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,r>>24&255,r>>16&255,r>>8&255,255&r,a>>24,a>>16&255,a>>8&255,255&a,n>>24,n>>16&255,n>>8&255,255&n,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]);return i.box(eq,l)}static sdtp(r){let s=r.samples||[],a=new Uint8Array(4+s.length),n,l;for(n=0;n<s.length;n++)l=s[n].flags,a[n+4]=l.dependsOn<<4|l.isDependedOn<<2|l.hasRedundancy;return i.box(eY,a)}static stbl(r){return i.box(ez,i.stsd(r),i.box(e0,sV),i.box(eQ,sV),i.box(eJ,sj),i.box(eX,sV))}static avc1(r){let s=[],a=[],n,l,o;for(n=0;n<r.sps.length;n++)o=(l=r.sps[n]).byteLength,s.push(o>>>8&255),s.push(255&o),s=s.concat(Array.prototype.slice.call(l));for(n=0;n<r.pps.length;n++)o=(l=r.pps[n]).byteLength,a.push(o>>>8&255),a.push(255&o),a=a.concat(Array.prototype.slice.call(l));let h=i.box(eR,new Uint8Array([1,s[3],s[4],s[5],255,224|r.sps.length].concat(s,[r.pps.length],a))),d=r.width,u=r.height,f=r.pixelRatio[0],c=r.pixelRatio[1];return i.box(eL,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,d>>8&255,255&d,u>>8&255,255&u,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),h,i.box(ek,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),i.box(eW,new Uint8Array([f>>24,f>>16&255,f>>8&255,255&f,c>>24,c>>16&255,c>>8&255,255&c])))}static esds(i){let r=i.config,s=r.length;return new Uint8Array([0,0,0,0,3,23+s,0,1,0,4,15+s,64,21,0,0,0,0,0,0,0,0,0,0,0,5,s,...r,6,1,2])}static audioStsd(i){let r=i.samplerate||0;return new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,i.channelCount||0,0,16,0,0,0,0,r>>8&255,255&r,0,0])}static mp4a(r){return i.box(eG,i.audioStsd(r),i.box(e_,i.esds(r)))}static mp3(r){return i.box(eK,i.audioStsd(r))}static ac3(r){return i.box(eV,i.audioStsd(r),i.box(eH,r.config))}static stsd(r){let{segmentCodec:s}=r;if("audio"===r.type){if("aac"===s)return i.box(eZ,sY,i.mp4a(r));if("ac3"===s&&r.config)return i.box(eZ,sY,i.ac3(r));if("mp3"===s&&"mp3"===r.codec)return i.box(eZ,sY,i.mp3(r))}else if(r.pps&&r.sps){if("avc"===s)return i.box(eZ,sY,i.avc1(r));if("hevc"===s&&r.vps)return i.box(eZ,sY,i.hvc1(r))}
16else throw Error("video track missing pps or sps");throw Error(`unsupported ${r.type} segment codec (${s}/${r.codec})`)}static tkhd(r){let s=r.id,a=(r.duration||0)*(r.timescale||0),n=r.width||0,l=r.height||0,o=Math.floor(a/(eA+1)),h=Math.floor(a%(eA+1));return i.box(e6,new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,s>>24&255,s>>16&255,s>>8&255,255&s,0,0,0,0,o>>24,o>>16&255,o>>8&255,255&o,h>>24,h>>16&255,h>>8&255,255&h,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,l>>8&255,255&l,0,0]))}static traf(r,s){let a=i.sdtp(r),n=r.id,l=Math.floor(s/(eA+1)),o=Math.floor(s%(eA+1));return i.box(e3,i.box(e2,new Uint8Array([0,0,0,0,n>>24,n>>16&255,n>>8&255,255&n])),i.box(e1,new Uint8Array([1,0,0,0,l>>24,l>>16&255,l>>8&255,255&l,o>>24,o>>16&255,o>>8&255,255&o])),i.trun(r,a.length+16+20+8+16+8+8),a)}static trak(r){return r.duration=r.duration||0xffffffff,i.box(e4,i.tkhd(r),i.mdia(r))}static trex(r){let s=r.id;return i.box(e5,new Uint8Array([0,0,0,0,s>>24,s>>16&255,s>>8&255,255&s,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}static trun(r,s){let a=r.samples||[],n=a.length,l=12+16*n,o=new Uint8Array(l),h,d,u,f,c,g;for(s+=8+l,o.set([+("video"===r.type),0,15,1,n>>>24&255,n>>>16&255,n>>>8&255,255&n,s>>>24&255,s>>>16&255,s>>>8&255,255&s],0),h=0;h<n;h++)u=(d=a[h]).duration,f=d.size,c=d.flags,g=d.cts,o.set([u>>>24&255,u>>>16&255,u>>>8&255,255&u,f>>>24&255,f>>>16&255,f>>>8&255,255&f,c.isLeading<<2|c.dependsOn,c.isDependedOn<<6|c.hasRedundancy<<4|c.paddingValue<<1|c.isNonSync,61440&c.degradPrio,15&c.degradPrio,g>>>24&255,g>>>16&255,g>>>8&255,255&g],12+16*h);return i.box(e8,o)}static initSegment(r){let s=i.moov(r);return tE(i.FTYP,s)}static hvc1(r){let s=r.params,a=[r.vps,r.sps,r.pps],n=new Uint8Array([1,s.general_profile_space<<6|32*!!s.general_tier_flag|s.general_profile_idc,s.general_profile_compatibility_flags[0],s.general_profile_compatibility_flags[1],s.general_profile_compatibility_flags[2],s.general_profile_compatibility_flags[3],s.general_constraint_indicator_flags[0],s.general_constraint_indicator_flags[1],s.general_constraint_indicator_flags[2],s.general_constraint_indicator_flags[3],s.general_constraint_indicator_flags[4],s.general_constraint_indicator_flags[5],s.general_level_idc,240|s.min_spatial_segmentation_idc>>8,255&s.min_spatial_segmentation_idc,252|s.parallelismType,252|s.chroma_format_idc,248|s.bit_depth_luma_minus8,248|s.bit_depth_chroma_minus8,0,parseInt(s.frame_rate.fps),3|s.temporal_id_nested<<2|s.num_temporal_layers<<3|64*!!s.frame_rate.fixed,a.length]),l=n.length;for(let i=0;i<a.length;i+=1){l+=3;for(let r=0;r<a[i].length;r+=1)l+=2+a[i][r].length}let o=new Uint8Array(l);o.set(n,0),l=n.length;let h=a.length-1;for(let i=0;i<a.length;i+=1){o.set(new Uint8Array([32+i|128*(i===h),0,a[i].length]),l),l+=3;for(let r=0;r<a[i].length;r+=1)o.set(new Uint8Array([a[i][r].length>>8,255&a[i][r].length]),l),l+=2,o.set(a[i][r],l),l+=a[i][r].length}let d=i.box(eI,o),u=r.width,f=r.height,c=r.pixelRatio[0],g=r.pixelRatio[1];return i.box(eb,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,u>>8&255,255&u,f>>8&255,255&f,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),d,i.box(ek,new Uint8Array([0,28,156,128,0,45,198,192,0,45,198,192])),i.box(eW,new Uint8Array([c>>24,c>>16&255,c>>8&255,255&c,g>>24,g>>16&255,g>>8&255,255&g])))}};function sJ(i,r,s=1,a=!1){let n=i*r*s;return a?Math.round(n):n}function s0(i,r=!1){return sJ(i,1e3,11111111111111112e-21,r)}function s1(i){let{baseTime:r,timescale:s,trackId:a}=i;return`${r/s} (${r}/${s}) trackId: ${a}`}function s2(i,r,s,a){return{duration:r,size:s,cts:a,flags:{isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:i?2:1,isNonSync:+!i,paddingValue:0}}}sZ.FTYP=sZ.box(ex,sz,sQ,sz,sX),sZ.DINF=sZ.box(eD,sZ.box(eP,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])));var s3=class extends X{constructor(i,r,s,a){super("mp4-remuxer",a),this.observer=void 0,this.config=void 0,this.typeSupported=void 0,this.ISGenerated=!1,this._initPTS=null,this._initDTS=null,this.nextVideoTs=null,this.nextAudioTs=null,this.videoSampleDuration=null,this.isAudioContiguous=!1,this.isVideoContiguous=!1,this.videoTrackConfig=void 0,this.observer=i,this.config=r,this.typeSupp
16orted=s,this.ISGenerated=!1}destroy(){this.config=this.videoTrackConfig=this._initPTS=this._initDTS=null}resetTimeStamp(i){let r=this._initPTS;r&&i&&i.trackId===r.trackId&&i.baseTime===r.baseTime&&i.timescale===r.timescale||this.log(`Reset initPTS: ${r&&s1(r)} > ${i&&s1(i)}`),this._initPTS=this._initDTS=i}resetNextTimestamp(){this.log("reset next timestamp"),this.isVideoContiguous=!1,this.isAudioContiguous=!1}resetInitSegment(){this.log("ISGenerated flag reset"),this.ISGenerated=!1,this.videoTrackConfig=void 0}getVideoStartPts(i){let r=!1,s=i[0].pts,a=i.reduce((i,a)=>{let n=a.pts,l=n-i;return l<-0x100000000&&(r=!0,l=(n=s4(n,s))-i),l>0?i:n},s);return r&&this.debug("PTS rollover detected"),a}remux(i,r,s,a,n,l,o,h,d){let u,f,c,g,m,p,v=n,y=n,E=!d.iframe&&i.pid>-1,T=r.pid>-1,S=r.samples.length,A=i.samples.length>0,L=o&&S>0||S>1;if((!E||A)&&(!T||L)||this.ISGenerated||o){if(this.ISGenerated){var R,I,k,D;let i=this.videoTrackConfig;(i&&(r.width!==i.width||r.height!==i.height||(null==(R=r.pixelRatio)?void 0:R[0])!==(null==(I=i.pixelRatio)?void 0:I[0])||
16(null==(k=r.pixelRatio)?void 0:k[1])!==(null==(D=i.pixelRatio)?void 0:D[1]))||!i&&L||null===this.nextAudioTs&&A)&&this.resetInitSegment()}this.ISGenerated||(c=this.generateIS(i,r,n,l));let s=this.isVideoContiguous,a=-1,o;if(L&&(a=function(i){for(let r=0;r<i.length;r++)if(i[r].key)return r;return -1}(r.samples),!s&&this.config.forceKeyFrameOnDiscontinuity))if(p=!0,a>0){this.warn(`Dropped ${a} out of ${S} video samples due to a missing keyframe`);let i=this.getVideoStartPts(r.samples);r.samples=r.samples.slice(a),r.dropped+=a,y+=(r.samples[0].pts-i)/r.inputTimeScale,o=y}else -1===a&&(this.warn(`No keyframe found out of ${S} video samples`),p=!1);if(this.ISGenerated){if(A&&L&&n){let s=this.getVideoStartPts(r.samples),a=(s4(i.samples[0].pts,s)-s)/r.inputTimeScale;v+=Math.max(0,a),y+=Math.max(0,-a)}if(A){if(i.samplerate||(this.warn("regenerate InitSegment as audio detected"),c=this.generateIS(i,r,n,l)),f=this.remuxAudio(i,v,this.isAudioContiguous,l,T||L||h===b.AUDIO?y:void 0,d),L){let a=f?f.endPTS-f.startPTS:0;r.inputTimeScale||(this.warn("regenerate InitSegment as video detected"),c=this.generateIS(i,r,n,l)),u=this.remuxVideo(r,y,s,a,d)}}else L&&(u=this.remuxVideo(r,y,s,0,d));u&&(u.firstKeyFrame=a,u.independent=-1!==a,u.firstKeyFramePTS=o)}}return this.ISGenerated&&this._initPTS&&this._initDTS&&(s.samples.length&&(m=s8(s,n,this._initPTS,this._initDTS)),a.samples.length&&(g=s5(a,n,this._initPTS))),{audio:f,video:u,initSegment:c,independent:p,text:g,id3:m}}computeInitPts(i,r,s,a){let n=Math.round(s*r),l=s4(i,n);if(l<n)for(this.log(`Adjusting PTS for rollover in timeline near ${(n-l)/r} ${a}`);l<n;)l+=0x200000000;return l-n}generateIS(i,r,s,a){let n=i.samples,l=r.samples,o=this.typeSupported,h={},d=this._initPTS,u=!d||a,f="audio/mp4",c,g,p,v=-1;if(u&&(c=g=1/0),i.config&&n.length){switch(i.timescale=i.samplerate,i.segmentCodec){case"mp3":o.mpeg?(f="audio/mpeg",i.codec=""):o.mp3&&(i.codec="mp3");break;case"ac3":i.codec="ac-3"}if(h.audio={id:"audio",container:f,codec:i.codec,initSegment:"mp3"===i.segmentCodec&&o.mpeg?new Uint8Array:sZ.initSegment([i]),metadata:{channelCount:i.channelCount}},u){v=i.id,p=i.inputTimeScale;let r=this.computeInitPts(n[0].pts,p,s,"audio");(!d||p!==d.timescale||0===s&&r<d.baseTime)&&(c=g=r)}}if(r.sps&&r.pps&&l.length){if(r.timescale=r.inputTimeScale,h.video={id:"main",container:"video/mp4",codec:r.codec,initSegment:sZ.initSegment([r]),metadata:{width:r.width,height:r.height}},u){v=r.id,p=r.inputTimeScale;let i=this.getVideoStartPts(l),a=s4(l[0].dts,i),n=this.computeInitPts(a,p,s,"video"),o=this.computeInitPts(i,p,s,"video");(!d||p!==d.timescale||m(c)||0===s&&o<d.baseTime)&&(g=Math.min(g,n),c=Math.min(c,n))}this.videoTrackConfig={width:r.width,height:r.height,pixelRatio:r.pixelRatio}}if(Object.keys(h).length)return this.ISGenerated=!0,u&&m(c)?(d&&this.warn(`Timestamps at playlist time: ${a?"":"~"}${s} ${c/p} != initPTS: ${d.baseTime/d.timescale} (${d.baseTime}/${d.timescale}) trackId: ${d.trackId}`),this.log(`Found initPTS at playlist time: ${s} offset: ${c/p} (${c}/${p}) trackId: ${v}`),this._initPTS={baseTime:c,timescale:p,trackId:v},this._initDTS={baseTime:g,timescale:p,trackId:v}):c=p=void 0,{tracks:h,initPTS:c,timescale:p,trackId:v}}remuxVideo(i,r,s,a,n){let l=i.inputTimeScale,o=i.samples,h=[],d=o.length,u=this._initPTS,f=u.baseTime*l/u.timescale,c=this.nextVideoTs,g=8,m=this.videoSampleDuration,p,v,S=1/0,A=-1/0,L=!1;if(!s||null===c){let i=f+r*l,a=o[0].pts-s4(o[0].dts,o[0].pts);tM()&&null!==c&&15e3>Math.abs(i-a-(c+f))?s=!0:c=i-a-f}let R=c+f;for(let i=0;i<d;i++){let r=o[i];r.pts=s4(r.pts,R),r.dts=s4(r.dts,R),r.dts<o[i>0?i-1:i].dts&&(L=!0)}L&&o.sort(function(i,r){let s=i.dts-r.dts,a=i.pts-r.pts;return s||a}),p=o[0].dts;let b=(v=o[o.length-1].dts)-p,I=b?Math.round(b/(d-1)):m||i.inputTimeScale/30;if(s){let s=p-R,a=s>I,n=s<-1;if((a||n)&&(a?this.warn(`${(i.segmentCodec||"").toUpperCase()}: ${s0(s,!0)} ms (${s}dts) hole between fragments detected at ${r.toFixed(3)}`):this.warn(`${(i.segmentCodec||"").toUpperCase()}: ${s0(-s,!0)} ms (${s}dts) overlapping between fragments detected at ${r.toFixed(3)}`),!n||R>=o[0].pts||tM())){p=R;let i=o[0].pts-s;if(a)o[0].dts=p,o[0].pts=i;else{let r=!0;for(let a=0;a<o.length&&!(o[a].dts>i&&r);a++){let i=o[a].pts;if(o[a].dts-=s,o[a].pts-=s,a<o.length-1){let s=o[a+1].pts;r=s<=o[a].pts==s<=i}}}this.log(`Video: Initial PTS/DTS adjusted: ${s0(i,!0)}/${s0(p,!0)}, delta: ${s0(s,!0)} ms`)}}let k=0,D=0,P=p=Math.max(0,p);for(let i=0;i<d;i++){let r=o[i],s=r.units,a=s.length,n=0;for(let i=0;i<a;i++)n+=s[i].data.length;D+=n,k+=a,r.length=n,r.dts<P?(r.dts=P,P+=I/4|0||1):P=r.dts,S=Math.min(r.pts,S),A=Math.max(r.pts,A)}v=o[d-1].dts;let _=D+4*k+8,C;try{C=new Uint8Array(_)}catch(i){this.observer.emit(T.ERROR,T.ERROR,{type:y.MUX_ERROR,details:E.REMUX_ALLOC_ER
16ROR,fatal:!1,chunkMeta:n,error:i,bytes:_,reason:`fail allocating video mdat ${_}`});return}tn(C,0,_),tn(C,4,eM);let x=!1,w=1/0,M=1/0,F=-1/0,$=-1/0;for(let i=0;i<d;i++){let r,u=o[i],c=u.units,p=0;for(let i=0,r=c.length;i<r;i++){let r=c[i],s=r.data,a=r.data.byteLength;tn(C,g,a),g+=4,C.set(s,g),g+=a,p+=4+a}if(i<d-1)m=o[i+1].dts-u.dts,r=o[i+1].pts-u.pts;else{let s=this.config,n=i>0?u.dts-o[i-1].dts:I;if(r=i>0?u.pts-o[i-1].pts:I,s.stretchShortVideoTrack&&null!==this.nextAudioTs){let i=Math.floor(s.maxBufferHole*l),r=(a?S+a*l:this.nextAudioTs+f)-u.pts;r>i?((m=r-n)<0?m=n:x=!0,this.log(`It is approximately ${r/90} ms to the next segment; using duration ${m/90} ms for the last video frame.`)):m=n}else m=n}let v=Math.round(u.pts-u.dts);if(w=Math.min(w,m),F=Math.max(F,m),M=Math.min(M,r),$=Math.max($,r),!s&&0===i&&v>m){let i=Math.round(v/I)*I;i-v==1&&(this.log(`pad first CTS ${v} -> ${i} of sn: ${n.sn}`),v=i)}h.push(s2(u.key,m,p,v))}if(h.length){let i=tM();if(i){if(i<70){let i=h[0].flags;i.dependsOn=2,i.isNonSync=0}}else if(function(){if(void 0===t_){let i=tC.match(/Safari\/(\d+)/i);t_=i?parseInt(i[1]):0}return t_}()&&$-M<F-w&&I/F<.025&&0===h[0].cts){this.warn("Found irregular gaps in sample duration. Using PTS instead of DTS to determine MP4 sample duration.");let i=p;for(let r=0,s=h.length;r<s;r++){let a=i+h[r].duration,n=i+h[r].cts;if(r<s-1){let i=a+h[r+1].cts;h[r].duration=i-n}else h[r].duration=r?h[r-1].duration:I;h[r].cts=0,i=a}}}let B=v+(m=x||!m?I:m);this.nextVideoTs=c=B-f,this.videoSampleDuration=m,this.isVideoContiguous=!0,n.iframe&&(1===h.length?(h[0].duration=m=n.duration*l,this.nextVideoTs=c=p+m-f):this.warn(`Not adjusting IFrame duration (sample count ${h.length})`));let U={data1:sZ.moof(n.sn,p,O(i,{samples:h})),data2:C,startPTS:(S-f)/l,endPTS:(A+m-f)/l,startDTS:(p-f)/l,endDTS:c/l,type:"video",hasAudio:!1,hasVideo:!0,nb:h.length,dropped:i.dropped};return i.samples=[],i.dropped=0,U}getSamplesPerFrame(i){switch(i.segmentCodec){case"mp3":return 1152;case"ac3":return 1536;default:return 1024}}remuxAudio(i,r,s,a,n,l){let o=i.inputTimeScale,h=o/(i.samplerate?i.samplerate:o),d=this.getSamplesPerFrame(i),u=d*h,f=this._initPTS,c="mp3"===i.segmentCodec&&this.typeSupported.mpeg,g=[],m=void 0!==n,p=i.samples,v=8*!c,S=this.nextAudioTs||-1,A=f.baseTime*o/f.timescale,L=A+r*o;if(this.isAudioContiguous=s=s||p.length&&S>0&&(a&&9e3>Math.abs(L-(S+A))||Math.abs(s4(p[0].pts,L)-(S+A))<20*u),p.forEach(function(i){i.pts=s4(i.pts,L)}),!s||S<0){let i=p.length;if(i!==(p=p.filter(i=>i.pts>=0)).length&&this.warn(`Removed ${p.length-i} of ${i} samples (initPTS ${A} / ${o})`),!p.length)return;S=0===n?0:a&&!m?Math.max(0,L-A):p[0].pts-A}if("aac"===i.segmentCodec){let r=this.config.maxAudioFramesDrift;for(let s=0,a=S+A;s<p.length;s++){let n=p[s],l=n.pts,h=l-a,d=Math.abs(1e3*h/o);if(h<=-r*u&&m)0===s&&(this.warn(`Audio frame @ ${(l/o).toFixed(3)}s overlaps marker by ${Math.round(1e3*h/o)} ms.`),this.nextAudioTs=S=l-A,a=l);else if(h>=r*u&&d<1e4&&m){let r=Math.round(h/u);for(a=l-r*u;a<0&&r&&u;)r--,a+=u;0===s&&(this.nextAudioTs=S=a-A),this.warn(`Injecting ${r} audio frames @ ${((a-A)/o).toFixed(3)}s due to ${Math.round(1e3*h/o)} ms gap.`);for(let l=0;l<r;l++){let r=sK.getSilentFrame(i.parsedCodec||i.manifestCodec||i.codec,i.channelCount);r||(this.log("Unable to get silent frame for given audio codec; duplicating last frame instead."),r=n.unit.subarray()),p.splice(s,0,{unit:r,pts:a}),a+=u,s++}}n.pts=a,a+=u}}let R=null,b=null,I,k=0,D=p.length;for(;D--;)k+=p[D].unit.byteLength;for(let r=0,a=p.length;r<a;r++){let a=p[r],n=a.unit,o=a.pts;if(null!==b)g[r-1].duration=Math.round((o-b)/h);else{if(s&&"aac"===i.segmentCodec&&(o=S+A),R=o,!(k>0))return;k+=v;try{I=new Uint8Array(k)}catch(i){this.observer.emit(T.ERROR,T.ERROR,{type:y.MUX_ERROR,details:E.REMUX_ALLOC_ERROR,fatal:!1,chunkMeta:l,error:i,bytes:k,reason:`fail allocating audio mdat ${k}`});return}c||(tn(I,0,k),tn(I,4,eM))}I&&I.set(n,v);let u=n.byteLength;v+=u,g.push(s2(!0,d,u,0)),b=o}let P=g.length;if(!P)return;let _=g[g.length-1];S=b-A,this.nextAudioTs=S+h*_.duration;let C=c?new Uint8Array:sZ.moof(i.sequenceNumber++,R/h,O({},i,{samples:g}));i.samples=[];let x=(R-A)/o,w=this.nextAudioTs/o,M={data1:C,data2:I,startPTS:x,endPTS:w,startDTS:x,endDTS:w,type:"audio",hasAudio:!0,hasVideo:!1,nb:P};return this.isAudioContiguous=!0,M}};function s4(i,r){let s;if(null===r)return i;for(s=r<i?-0x200000000:0x200000000;Math.abs(i-r)>0x100000000;)i+=s;return i}function s8(i,r,s,a){let n=i.samples.length;if(!n)return;let l=i.inputTimeScale;for(let o=0;o<n;o++){let n=i.samples[o];n.pts=s4(n.pts-s.baseTime*l/s.timescale,r*l)/l,n.dts=s4(n.dts-a.baseTime*l/a.timescale,r*l)/l}let o=i.samples;return i.samples=[],{samples:o}}function s5(i,r,s){let a=i.samples.length;if(!a)return;let n=i.inputTimeScale;for(let l=0;l<a;l++){let a=i.samples[l];a.pts=s4(a.pts-s.baseTime*n/s.timescale,r*n)/n}i.samples.sort((i,r)=>i.pts-r.pts);let l=i.samples;return i.samples=[],{samples:l}}var s6=class extends X{constructor(i,r,s,a){super("passthrough-remuxer",a),this.observer=void 0,this.emitInitSegment=!1,this.audioCodec=void 0,this.videoCodec=void 0,this.initData=void 0,this.initPTS=null,this.initTracks=void 0,this.lastEndTime=null,this.isVideoContiguous=!1,this.videoOnlyRemux=!1,this.decryptdata=null,this.pendingInitSegment=void 0,this.observer=i}destroy(){this.observer&&this.observer.removeAllListeners(),this.observer=null}resetTimeStamp(i){this.lastEndTime=null;let r=this.initPTS;r&&i&&r.baseTime===i.baseTime&&r.timescale===i.timescale||(this.initPTS=i)}resetNextTimestamp(){this.isVideoContiguous=!1,this.lastEndTime=null}resetInitSegment(i,r,s,a){this.audioCodec=r,this.videoCodec=s,this.decryptdata=a,this.pendingInitSegment=i,this.videoOnlyRemux=!1,this.initTracks=void 0,this.initData=void 0,this.emitInitSegment=!0}generateInitSegment(i,r,s){this.videoOnlyRemux=!1;let{audioCodec:a,videoCodec:n}=this;if(!(null!=i&&i.byteLength)){this.initTracks=void 0,this.initData=void 0;return}let{audio:l,video:o}=this.initData=s||tu(i);if(r)!function(i,r){if(!i||!r)return;let s=r.keyId;(null==s?void 0:s.byteLength)===16&&r.isCommonEncryption&&tp(i,(i,r)=>{let a=i.subarray(8,24);a.some(i=>0!==i)||(et.log(`[eme] Patching keyId in 'enc${r?"a":"v"}>sinf>>tenc' box: ${ey(a)} -> ${ey(s)}`),i.set(s,8))})}(i,r);else{let i=l||o;null!=i&&i.encrypted&&this.warn(`Init segment with encrypted track with has no key ("${i.codec}")!`)}l&&(a=s7(l,I,this)),o&&(n=s7(o,k,this));let h={};l&&o?h.audiovideo={container:"video/mp4",codec:a+","+n,supplemental:o.supplemental,encrypted:o.encrypted,initSegment:i,id:"main"}:l?h.audio={container:"audio/mp4",codec:a,encrypted:l.encrypted,initSegment:i,id:"audio"}:o?h.video={container:"video/mp4",codec:n,supplemental:o.supplemental,encrypted:o.encrypted,initSegment:i,id:"main"}:this.warn("initSegment does not contain moov or trak boxes."),this.initTracks=h}remux(i,r,s,a,n,l,o,h,d,u,f){var c,g,p,v;let{initPTS:y,lastEndTime:E}=this,T={audio:void 0,video:void 0,text:void 0,id3:s,initSegment:void 0};m(E)||(E=this.lastEndTime=n||0);let S=r.samples;if(!S.length)return T;let A=this.pendingInitSegment;A&&(this.pendingInitSegment=void 0,this.generateInitSegment(A,this.decryptdata,u));let L={initPTS:void 0,timescale:void 0,trackId:void 0},R=this.initData;if(null!=(c=R)&&c.length||(this.generateInitSegment(S),R=this.initData),!(null!=(g=R)&&g.length))return this.warn("Failed to generate initSegment."),T;if(d.iframe&&R.audio&&R.video){let i=null==(p=this.initTracks)||null==(p=p.audiovideo)?void 0:p.initSegment,r=i?function(i){let r=td(i,["moov"]);if(1!==r.length||td(i,["moof"]).length)return null;let s=i.byteOffset,a=[],n=[],l=!1,o=td(r[0],["trak"]);for(let i=0;i<o.length;i++){let r=o[i],h=td(r,["mdia","hdlr"])[0];if((h?eS(h.subarray(8,12)):"")==="vide"){l=!0;continue}let d=td(r,["tkhd"])[0];if(!d)return null;let u=d[0];n.push(ti(d,0===u?12:20)),a.push(to(r,s))}if(!l||!a.length)return null;let h=td(r[0],["mvex"])[0],d=0;if(h){let i=td(h,["trex"]);for(let r=0;r<i.length;r++){let l=i[r];-1!==n.indexOf(ti(l,4))&&(a.push(to(l,s)),d+=l.byteLength+8)}}let{result:u,dropped:f,droppedBefore:c}=th(i,a);if(tn(u,r[0].byteOffset-s-8,r[0].byteLength+8-f),h&&d){let i=h.byteOffset-s-8;tn(u,i-c(i),h.byteLength+8-d)}return u}(i):null;r&&(this.log("Converted muxed init segment to video-only for I-Frame playback"),this.generateInitSegment(r,this.decryptdata),null!=(v=this.initData)&&v.length&&(R=this.initData,this.emitInitSegment=!0,this.videoOnlyRemux=!0))}this.emitInitSegment&&(L.tracks=this.initTracks,T.initSegment=L,this.emitInitSegment=!1);let b=d.iframe,I=f&&(!b||f.includeSampleDetails)?f.tracks:function(i,r,s,a=!0){return ty(i,r,s,a)}(S,R,this,b),k=R.audio?I[R.audio.id]:null,D=R.video?I[R.video.id]:null,P=!!R.audio,_=!!R.video,C="";P&&(C+="audio"),_&&(C+="video");let x=s9(D,1/0),w=s9(k,1/0),M=s9(D,0,!0),O=s9(k,0,!0),F=n,$=0;D&&k&&R.audio&&(w>M||x>O)&&this.warn(`audio and video track sample timestamps do not overlap. v: ${x}-${M} a: ${w}-${O}}`,D,k);let B=!!k&&(!D||!y&&w<x||!!y&&y.trackId===R.audio.id),U=B?k:D;if(!U)return this.log(`No media samples found in ${h} ${d.level} ${-1===d.part?"":`part: ${d.part} of`} sn: ${d.sn} at playlist time: ${n}`),T;let N=S,G,K;if(D&&D.sampleCount>=1&&R.video&&d.iframe){let{trun:i,start:r}=D,s=1===i.length,a=i.length?s?i[0].samples:i[0].samples.concat(...i.slice(1).map(i=>i.samples)):[];if(a.length){let n=i[0],l=n;for(let r=i.length;r--;)if(i[r].samples.length){l=i[r];break}let o=l.lastSampleDurationOffset,{defaultSampleDurationOffset:h}=n,u=Math.abs(d.duration-(M-x))>.05,f=a.length<D.sampleCount;if(u||f||this.videoOnlyRemux||!s){let i=f?l.sampleOffset+l.samples.reduce((i,r)=>i+r.size,0):void 0,s=u?d.duration:M-x,n=function(i,r,s,a){if(void 0!==s){let a=i[i.length-1],n=r;for(let r=0;r<i.length-1;r++)n-=i[r].duration;return n<=0&&(n=a.duration),a.duration=n,{durationOffset:s,value:n}}if(void 0===a)return;let n=Math.round(r/i.length);for(let r=0;r<i.length;r++)i[r].duration=n;return{durationOffset:a,value:n}}
16(a,s*R.video.timescale,o,h),c=function(i,r,s,a,n){if(s<1)return null;let l=td(i,["moof"]);if(1!==l.length)return null;let o=l[0],h=i.byteOffset,d=[],u=[],f=td(o,["traf"]),c=!0;for(let i=0;i<f.length;i++){let s=f[i],a=td(s,["tfhd"])[0];if(!a)return null;ti(a,4)===r?(d.push(s),131072&ti(a,0)||(c=!1)):u.push(to(s,h))}if(!d.length||u.length&&!c)return null;if(void 0!==a){let r=s;for(let s=0;s<d.length;s++){let a=d[s],n=0,l=td(a,["trun"]);for(let s=0;s<l.length;s++){let a=l[s],o=Math.min(r,ti(a,4));if(o){tn(i,a.byteOffset-h+4,o);let r=0xffffff&ti(a,0),s=(256&r?4:0)+(512&r?4:0)+(1024&r?4:0)+(2048&r?4:0);tl(i,a,8+(1&r?4:0)+(4&r?4:0)+o*s)}else tn(i,a.byteOffset-h-4,eC);r-=o,n+=o}let o=td(a,["senc"])[0];o&&tn(i,o.byteOffset-h+4,n);let u=td(a,["saiz"])[0];if(u){let r=u[1]<<16|u[2]<<8|u[3],s=4;1&r&&(s+=8);let a=u[s];s+=1,tn(i,u.byteOffset-h+s,n),tl(i,u,s+4+(0===a?n:0))}}let n=td(i,["mdat"]);if(1===n.length){let r=n[0].byteOffset-h-8;tn(i,r,a-r)}}let g=i,m=0,p=()=>0;if(u.length){({result:g,dropped:m,droppedBefore:p}=th(i,u)),tn(g,o.byteOffset-h-8,o.byteLength+8-m);for(let i=0;i<d.length;i++){let r=d[i],s=p(r.byteOffset-h),a=td(r,["trun"]);for(let i=0;i<a.length;i++){let r=a[i];1&ti(r,0)&&tn(g,r.byteOffset-h-s+8,ti(r,8)-m)}if(s){let i=td(r,["saio"]);for(let r=0;r<i.length;r++){let a=i[r],n=0===a[0]?4:8,l=1&ti(a,0)?12:4,o=ti(a,l);for(l+=4;o--;l+=n){let i=l+n-4;tn(g,a.byteOffset-h-s+i,ti(a,i)-s)}}}}}if(n){let{durationOffset:i,value:r}=n;tn(g,i-p(i),r)}return void 0===a?g:g.subarray(0,a-m)}(S,R.video.id,a.length,i,n);c?(N=c,K=function(i,r){let s=i,a=i;for(let i=0;i<r.length;i++){let{cts:n,duration:l}=r[i];a=Math.max(a,s+(n||0)+l),s+=l}return a}(r,a)):this.warn(`IFrame remux skipped (sn ${d.sn}); using native sample duration`),$=c&&n?s:M-x}else $=M-x}else this.warn(`Could not remux IFrame track fragment (no samples in range, trun count ${i.length})`),$=M-x}else $=B?O-w:M-x;if(this.videoOnlyRemux&&N===S)return this.warn(`Dropping muxed I-Frame fragment that could not be remuxed to video-only (sn: ${d.sn})`),T;let H=U.timescale,V=U.start-n*H,j=B?R.audio.id:R.video.id;if(F=U.start/H,(l||!y)&&(function(i,r,s,a){if(null===i)return!0;let n=Math.max(a,1);return Math.abs(r-i.baseTime/i.timescale-s)>=n}(y,F,n,$)||H!==y.timescale)){let i=!1,r=B?"audio":"video";if(y){let s=0===n?1+F/1:F/n;i=F>=0&&.001>Math.abs(1-s),this.log(`${r} timestamps in track ${j} at playlist time: ${l?"":"~"}${n} maps to ${F} with initPTS: ${y.baseTime/y.timescale} (${V/H-y.baseTime/y.timescale}s diff) (${C}) drift estimate: ${s} ${i?"(ignoring drift)":"remapping timestamps (initPTS)"}`)}i||(this.log(`Found initPTS in ${r} track ${j} at playlist time: ${n} offset: ${F-n} (${V}/${H})`),y=null,L.initPTS=V,L.timescale=H,L.trackId=j)}y?(L.initPTS=y.baseTime,L.timescale=y.timescale,L.trackId=y.trackId):(L.timescale&&void 0!==L.trackId&&void 0!==L.initPTS||(this.warn("Could not set initPTS"),L.initPTS=F,L.timescale=1,L.trackId=-1),this.initPTS=y={baseTime:L.initPTS,timescale:L.timescale,trackId:L.trackId});let q=F-y.baseTime/y.timescale,W=q+$,Y=_&&(null==U?void 0:U.ptsMin)!==void 0?U.ptsMin/U.timescale-y.baseTime/y.timescale:q,z=void 0!==K&&D?K/D.timescale-y.baseTime/y.timescale:_&&null!=U&&U.ptsMax?U.ptsMax/U.timescale-y.baseTime/y.timescale:W;$>0?this.lastEndTime=W:(this.warn("Duration parsed from mp4 should be greater than zero"),this.resetNextTimestamp());let X={data1:N,data2:G,startPTS:Y,startDTS:q,endPTS:z,endDTS:W,type:C,hasAudio:P,hasVideo:_,nb:1,dropped:0,encrypted:!!R.audio&&R.audio.encrypted||!!R.video&&R.video.encrypted};T.audio=P&&!_?X:void 0,T.video=_?X:void 0;let Q=this.isVideoContiguous,Z=null==D?void 0:D.sampleCount;if(Z){let i=D.keyFrameIndex,r=-1!==i;X.nb=Z,X.dropped=0===i||Q?0:r?i:Z,X.independent=r,X.firstKeyFrame=i,r&&D.keyFrameStart&&(X.firstKeyFramePTS=(D.keyFrameStart-y.baseTime)/y.timescale),Q||(T.independent=r),this.isVideoContiguous||(this.isVideoContiguous=r),X.dropped&&this.warn(`fmp4 does not start with IDR: firstIDR ${i}/${Z} dropped: ${X.dropped} start: ${X.firstKeyFramePTS||"NA"}`)}return T.initSegment=L,T.id3=s8(s,n,y,y),a.samples.length&&(T.text=s5(a,n,y)),T}};function s9(i,r,s=!1){return(null==i?void 0:i.start)===void 0?r:(i.start+(s?i.duration:0))/i.timescale}function s7(i,r,s){let a=i.codec;return a&&a.length>4?a:r===I?"ec-3"===a||"ac-3"===a||"alac"===a?a:"fLaC"===a||"Opus"===a?tj(a,!1):(s.warn(`Unhandled audio codec "${a}" in mp4 MAP`),a||"mp4a"):"mjpg"===a?a:(s.warn(`Unhandled video codec "${a}" in mp4 MAP`),a||"avc1")}try{ln=self.performance.now.bind(self.performance)}catch{ln=Date.now}var ae=[{demux:s_,remux:s6},{demux:sF,remux:s3},{demux:sR,remux:s3},{demux:sD,remux:s3}];ae.splice(2,0,{demux:sI,remux:s3});var at=class{constructor(i,r,s,a,n,l){this.asyncResult=!1,this.logger=void 0,this.observer=void 0,this.typeSupp
16orted=void 0,this.config=void 0,this.id=void 0,this.demuxer=void 0,this.remuxer=void 0,this.decrypter=void 0,this.probe=void 0,this.decryptionPromise=null,this.transmuxConfig=void 0,this.currentTransmuxState=void 0,this.observer=i,this.typeSupported=r,this.config=s,this.id=n,this.logger=l}configure(i){this.transmuxConfig=i,this.decrypter&&this.decrypter.reset()}push(i,r,s,a){var n,l;let o;if(!this.observer)return ai(s);let h=s.transmuxing;h.executeStart=ln();let d=new Uint8Array(i),{currentTransmuxState:u,transmuxConfig:f}=this;a&&(this.currentTransmuxState=a);let{contiguous:c,discontinuity:g,trackSwitch:m,accurateTimeOffset:p,timeOffset:v,initSegmentChange:S}=a||u,{audioCodec:A,videoCodec:L,defaultInitPts:R,duration:b,initSegmentData:I}=f,k=(n=d,l=r,o=null,n.byteLength>0&&(null==l?void 0:l.key)!=null&&null!==l.iv&&null!=l.method&&(o=l),o);if(k&&i0(k.method)){let i=this.getDecrypter(),r=i1(k.method);return this.asyncResult=!0,this.decryptionPromise=i.decrypt(d,k.key.buffer,k.iv.buffer,r,s.decryptRange).then(i=>{let r=this.push(i,null,s);return this.decryptionPromise=null,r}),this.decryptionPromise}let D=this.needsProbing(g,m);if(D){let i=s.iframe&&I&&sF.probe(I,this.logger)?I:d,r=this.configureTransmuxer(i);if(r)return this.logger.warn(`[transmuxer] ${r.message}`),this.observer.emit(T.ERROR,T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,fatal:!1,error:r,reason:r.message}),h.executeEnd=ln(),ai(s)}(g||m||S||D)&&this.resetInitSegment(I,A,L,b,r,s),(g||S||D)&&this.resetInitialTimestamp(R),c||this.resetContiguity();let P=this.transmux(d,k,v,p,s);this.asyncResult=ar(P);let _=this.currentTransmuxState;return _.contiguous=!0,_.discontinuity=!1,_.trackSwitch=!1,h.executeEnd=ln(),P}flush(i){let r=i.transmuxing;r.executeStart=ln();let{decrypter:s,currentTransmuxState:a,decryptionPromise:n}=this;if(n)return this.asyncResult=!0,n.then(()=>this.flush(i));let l=[],{timeOffset:o}=a;if(s){let r=s.flush();r&&l.push(this.push(r.buffer,null,i))}let{demuxer:h,remuxer:d}=this;if(!h||!d){r.executeEnd=ln();let s=[ai(i)];return this.asyncResult?Promise.resolve(s):s}let u=h.flush(o,i);return ar(u)?(this.asyncResult=!0,u.then(r=>(this.flushRemux(l,r,i),l))):(this.flushRemux(l,u,i),this.asyncResult?Promise.resolve(l):l)}flushRemux(i,r,s){if(!this.remuxer)return;let{audioTrack:a,videoTrack:n,id3Track:l,textTrack:o}=r,{accurateTimeOffset:h,timeOffset:d}=this.currentTransmuxState;this.logger.log(`[transmuxer.ts]: Flushed ${this.id} sn: ${s.sn}${s.part>-1?" part: "+s.part:""} of ${this.id} playlist ${s.level}`);let u=this.remuxer.remux(a,n,l,o,d,h,!0,this.id,s,r.initData,r.sampleData);i.push({remuxResult:u,chunkMeta:s}),s.transmuxing.executeEnd=ln()}resetInitialTimestamp(i){let{demuxer:r,remuxer:s}=this;r&&s&&(r.resetTimeStamp(i),s.resetTimeStamp(i))}resetContiguity(){let{demuxer:i,remuxer:r}=this;i&&r&&(i.resetContiguity(),r.resetNextTimestamp())}resetInitSegment(i,r,s,a,n,l){let{demuxer:o,remuxer:h}=this;o&&h&&(o.resetInitSegment(i,r,s,a,n,l),h.resetInitSegment(i,r,s,n))}destroy(){this.demuxer&&(this.demuxer.destroy(),this.demuxer=void 0),this.remuxer&&(this.remuxer.destroy(),this.remuxer=void 0),this.observer&&this.observer.removeAllListeners(),this.decryptionPromise=null,this.decrypter=this.observer=void 0,this.logger=this.config=this.probe=void 0}transmux(i,r,s,a,n){return(null==r?void 0:r.method)==="SAMPLE-AES"?this.transmuxSampleAes(i,r,s,a,n):this.transmuxUnencrypted(i,s,a,n)}transmuxUnencrypted(i,r,s,a){let{demuxer:n,remuxer:l}=this;if(!n||!l)return ai(a);let o=n.demux(i,r,a,!1,!this.config.progressive),{audioTrack:h,videoTrack:d,id3Track:u,textTrack:f}=o;return{remuxResult:l.remux(h,d,u,f,r,s,!1,this.id,a,o.initData,o.sampleData),chunkMeta:a}}transmuxSampleAes(i,r,s,a,n){return this.demuxer?this.demuxer.demuxSampleAes(i,r,s,n).then(i=>({remuxResult:this.remuxer.remux(i.audioTrack,i.videoTrack,i.id3Track,i.textTrack,s,a,!1,this.id,n,i.initData,i.sampleData),chunkMeta:n})):Promise.reject(Error("no demuxer"))}configureTransmuxer(i){let r,{config:s,observer:a,typeSupported:n}=this;if(!a)return;try{for(let s=0,a=ae.length;s<a;s++){var l;if(null!=(l=ae[s].demux)&&l.probe(i,this.logger)){r=ae[s];break}}}catch(i){return i}if(!r)return Error("Failed to find demuxer by probing fragment data");let o=this.demuxer,h=this.remuxer,d=r.demux,u=r.remux;o&&o instanceof d||(this.logger.log(`Using ${d.name}`),this.demuxer=new d(a,s,n,this.logger),this.probe=d.probe),h&&h instanceof u||(this.logger.log(`Using ${u.name}`),this.remuxer=new u(a,s,n,this.logger))}needsProbing(i,r){return!this.demuxer||!this.remuxer||i||r}getDecrypter(){let i=this.decrypter;
16return i||(i=this.decrypter=new ix(this.config)),i}},ai=i=>({remuxResult:{},chunkMeta:i});function ar(i){return"then"in i&&i.then instanceof Function}var as=class{constructor(i,r,s,a,n){this.audioCodec=void 0,this.videoCodec=void 0,this.initSegmentData=void 0,this.duration=void 0,this.defaultInitPts=void 0,this.audioCodec=i,this.videoCodec=r,this.initSegmentData=s,this.duration=a,this.defaultInitPts=n||null}},aa=class{constructor(i,r,s,a,n,l){this.discontinuity=void 0,this.contiguous=void 0,this.accurateTimeOffset=void 0,this.trackSwitch=void 0,this.timeOffset=void 0,this.initSegmentChange=void 0,this.discontinuity=i,this.contiguous=r,this.accurateTimeOffset=s,this.trackSwitch=a,this.timeOffset=n,this.initSegmentChange=l}},an=0,al=class{constructor(i,r,s,a){this.error=null,this.hls=void 0,this.id=void 0,this.instanceNo=an++,this.observer=void 0,this.frag=null,this.part=null,this.useWorker=void 0,this.workerContext=null,this.transmuxer=null,this.onTransmuxComplete=void 0,this.onFlush=void 0,this.onWorkerMessage=i=>{let r=i.data,s=this.hls;if(!(!s||!(null!=r&&r.event)||r.instanceNo!==this.instanceNo))switch(r.event){case"init":{var a;let i=null==(a=this.workerContext)?void 0:a.objectURL;i&&self.URL.revokeObjectURL(i);break}case"transmuxComplete":this.handleTransmuxComplete(r.data);break;case"flush":this.onFlush(r.data);break;case"workerLog":s.logger[r.data.logType]&&s.logger[r.data.logType](r.data.message);break;default:r.data=r.data||{},r.data.frag=this.frag,r.data.part=this.part,r.data.id=this.id,s.trigger(r.event,r.data)}},this.onWorkerError=i=>{if(!this.hls)return;let r=Error(`${i.message}  (${i.filename}:${i.lineno})`);this.hls.config.enableWorker=!1,this.hls.logger.warn(`Error in "${this.id}" Web Worker, fallback to inline`),this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.INTERNAL_EXCEPTION,fatal:!1,event:"demuxerWorker",error:r})};let n=i.config;this.hls=i,this.id=r,this.useWorker=!!n.enableWorker,this.onTransmuxComplete=s,this.onFlush=a;let l=(i,r)=>{(r=r||{}).frag=this.frag||void 0,i===T.ERROR&&(r.parent=this.id,r.part=this.part,this.error=r.error),this.hls.trigger(i,r)};this.observer=new st,this.observer.on(T.FRAG_DECRYPTED,l),this.observer.on(T.ERROR,l);let o=tY(n.preferManagedMediaSource);if(this.useWorker&&"u">typeof Worker){let s=this.hls.logger;if(n.workerPath||"function"==typeof __HLS_WORKER_BUNDLE__){try{n.workerPath?(s.log(`loading Web Worker ${n.workerPath} for "${r}"`),this.workerContext=function(i){let r=sr[i];if(r)return r.clientCount++,r;let s=new self.URL(i,self.location.href).href,a={worker:new self.Worker(s),scriptURL:s,clientCount:1};return sr[i]=a,a}(n.workerPath)):(s.log(`injecting Web Worker for "${r}"`),this.workerContext=function(){let i=sr[si];if(i)return i.clientCount++,i;let r=new self.Blob([`var exports={};var module={exports:exports};function define(f){f()};define.amd=true;(${__HLS_WORKER_BUNDLE__.toString()})(true);`],{type:"text/javascript"}),s=self.URL.createObjectURL(r),a={worker:new self.Worker(s),objectURL:s,clientCount:1};return sr[si]=a,a}());let{worker:i}=this.workerContext;i.addEventListener("message",this.onWorkerMessage),i.addEventListener("error",this.onWorkerError),i.postMessage({instanceNo:this.instanceNo,cmd:"init",typeSupported:o,id:r,config:t7(n)})}catch(a){s.warn(`Error setting up "${r}" Web Worker, fallback to inline`,a),this.terminateWorker(),this.error=null,this.transmuxer=new at(this.observer,o,n,"",r,i.logger)}return}}this.transmuxer=new at(this.observer,o,n,"",r,i.logger)}reset(){if(this.frag=null,this.part=null,this.workerContext){let i=this.instanceNo;this.instanceNo=an++;let r=this.hls.config,s=tY(r.preferManagedMediaSource);this.workerContext.worker.postMessage({instanceNo:this.instanceNo,cmd:"reset",resetNo:i,typeSupported:s,id:this.id,c
16onfig:t7(r)})}}terminateWorker(){if(this.workerContext){let{worker:i}=this.workerContext;this.workerContext=null,i.removeEventListener("message",this.onWorkerMessage),i.removeEventListener("error",this.onWorkerError),function(i){let r=sr[i||si];if(r&&1==r.clientCount--){let{worker:s,objectURL:a}=r;delete sr[i||si],a&&self.URL.revokeObjectURL(a),s.terminate()}}(this.hls.config.workerPath)}}destroy(){if(this.workerContext)this.terminateWorker(),this.onWorkerMessage=this.onWorkerError=null;else{let i=this.transmuxer;i&&(i.destroy(),this.transmuxer=null)}let i=this.observer;i&&i.removeAllListeners(),this.frag=null,this.part=null,this.observer=null,this.hls=null}push(i,r,s,a,n,l,o,h,d,u){var f,c;d.transmuxing.start=self.performance.now();let{instanceNo:g,transmuxer:m}=this,p=l?l.start:n.start,v=n.decryptdata,y=this.frag,E=!y||n.cc!==y.cc,T=!y||d.level!==y.level,S=y?d.sn-y.sn:-1,A=this.part?d.part-this.part.index:-1,L=0===S&&d.id>1&&d.id===(null==y?void 0:y.stats.chunkCount),R=!T&&(1===S||0===S&&(1===A||L&&A<=0)),b=self.performance.now();(T||S||0===n.stats.parsing.start)&&(n.stats.parsing.start=b),l&&(A||!R)&&(l.stats.parsing.start=b);let I=!(y&&(null==(f=n.initSegment)?void 0:f.url)===(null==(c=y.initSegment)?void 0:c.url)),k=new aa(E,R,h,T,p,I);if(!R||E||I){this.hls.logger.log(`[transmuxer-interface]: Starting new transmux session for ${n.type} sn: ${d.sn}${d.part>-1?" part: "+d.part:""} ${this.id} playlist: ${d.level} id: ${d.id}
17        discontinuity: ${E}
18        trackSwitch: ${T}
19        contiguous: ${R}
20        accurateTimeOffset: ${h}
21        timeOffset: ${p}
22        initSegmentChange: ${I}`);let i=new as(s,a,r,o,u);this.configureTransmuxer(i)}if(this.frag=n,this.part=l,this.workerContext)this.workerContext.worker.postMessage({instanceNo:g,cmd:"demux",data:i,decryptdata:v,chunkMeta:d,state:k},i instanceof ArrayBuffer?[i]:[]);else if(m){let r=m.push(i,v,d,k);ar(r)?r.then(i=>{this.handleTransmuxComplete(i)}).catch(i=>{this.transmuxerError(i,d,"transmuxer-interface push error")}):this.handleTransmuxComplete(r)}}flush(i){i.transmuxing.start=self.performance.now();let{instanceNo:r,transmuxer:s}=this;if(this.workerContext)this.workerContext.worker.postMessage({instanceNo:r,cmd:"flush",chunkMeta:i});else if(s){let r=s.flush(i);ar(r)?r.then(r=>{this.handleFlushResult(r,i)}).catch(r=>{this.transmuxerError(r,i,"transmuxer-interface flush error")}):this.handleFlushResult(r,i)}}transmuxerError(i,r,s){this.hls&&(this.error=i,this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,chunkMeta:r,frag:this.frag||void 0,part:this.part||void 0,fatal:!1,error:i,err:i,reason:s}))}handleFlushResult(i,r){i.forEach(i=>{this.handleTransmuxComplete(i)}),this.onFlush(r)}configureTransmuxer(i){let{instanceNo:r,transmuxer:s}=this;this.workerContext?this.workerContext.worker.postMessage({instanceNo:r,cmd:"configure",config:i}):s&&s.configure(i)}handleTransmuxComplete(i){i.chunkMeta.transmuxing.end=self.performance.now(),this.onTransmuxComplete(i)}},ao=class extends r4{constructor(i,r,s){super(i,r,s,"audio-stream-controller",b.AUDIO),this.mainAnchor=null,this.mainFragLoading=null,this.audioOnly=!1,this.bufferedTrack=null,this.switchingTrack=null,this.trackId=-1,this.nextTrackId=-1,this.waitingData=null,this.mainDetails=null,this.flushing=!1,this.bufferFlushed=!1,this.cachedTrackLoadedData=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.resetItem()}resetItem(){this.mainDetails=this.mainAnchor=this.mainFragLoading=this.bufferedTrack=this.switchingTrack=this.waitingData=this.cachedTrackLoadedData=null}registerListeners(){super.registerListeners();let{hls:i}=this;i.on(T.LEVEL_LOADED,this.onLevelLoaded,this),i.on(T.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),i.on(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.on(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),i.on(T.BUFFER_RESET,this.onBufferReset,this),i.on(T.BUFFER_CREATED,this.onBufferCreated,this),i.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.on(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.on(T.FRAG_LOADING,this.onFragLoading,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){let{hls:i}=this;i&&(super.unregisterListeners(),i.off(T.LEVEL_LOADED,this.onLevelLoaded,this),i.off(T.AUDIO_TRACKS_UPDATED,this.onAudioTracksUpdated,this),i.off(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.off(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),i.off(T.BUFFER_RESET,this.onBufferReset,this),i.off(T.BUFFER_CREATED,this.onBufferCreated,this),i.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.off(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.off(T.FRAG_LOADING,this.onFragLoading,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this))}onInitPtsFound(i,r){let{frag:s,id:a,initPTS:n,timescale:l,trackId:o,timestampOffsets:h}=r;if(a===b.MAIN){let i=s.cc,r=this.fragCurrent;if(this.initPTS=h,this.log(`InitPTS for cc: ${i} found from main: ${n/l} (${n}/${l}) trackId: ${o}`),this.mainAnchor=s,this.state===r2){let r=this.waitingData;(r||this.loadingParts)&&(!r||r.frag.cc===i)||this.syncWithAnchor(s,null==r?void 0:r.frag)}else!this.hls.hasEnoughToStart&&r&&r.cc!==i?(r.abortRequests(),this.syncWithAnchor(s,r)):this.state===rW&&this.tick()}}getLoadPosition(){var i;return!this.startFragRequested&&this.nextLoadPosition>=0&&(null==(i=this.switchingTrack)?void 0:i.flushImmediate)!==!1?this.nextLoadPosition:super.getLoadPosition()}syncWithAnchor(i,r){var s;let a=(null==(s=this.mainFragLoading)?void 0:s.frag)||null;if(r&&(null==a?void 0:a.cc)===r.cc)return;let n=(a||i).cc,l=ip(this.getLevelDetails(),n,this.getLoadPosition());l&&(this.log(`Syncing with main frag at ${l.start} cc ${l.cc}`),this.startFragRequested=!1,this.nextLoadPosition=l.start,this.resetLoadingState(),this.state===rW&&this.doTickIdle())}
22startLoad(i,r){if(!this.levels){this.startPosition=i,this.state=rq;return}let s=this.lastCurrentTime;this.stopLoad(),this.setInterval(100),s>0&&-1===i&&!r&&this.initPTS.length&&(this.log(`Override startPosition with lastCurrentTime @${s.toFixed(3)}`),i=s),this.state=rW,this.nextLoadPosition=this.lastCurrentTime=i+this.timelineOffset,this.startPosition=r?-1:i,r||this.fragmentTracker.hasFragments(this.playlistType)||(this.startFragRequested=!1),this.tick()}doTick(){switch(this.state){case rW:this.doTickIdle();break;case rQ:{let{levels:i,trackId:r}=this,s=null==i?void 0:i[r],a=null==s?void 0:s.details;if(a&&!this.waitForLive(s)){if(this.waitForCdnTuneIn(a))break;this.state=r2}break}case rX:this.checkRetryDate();break;case r2:{let i=this.waitingData;if(i){let{frag:r,part:s,cache:a,complete:n}=i,l=this.mainAnchor;if(void 0!==this.initPTS[r.cc]){this.waitingData=null,this.state=rz;let i={frag:r,part:s,payload:a.flush().buffer,networkDetails:null};this._handleFragmentLoadProgress(i),n&&super._handleFragmentLoadComplete(i)}else l&&l.cc!==i.frag.cc&&this.syncWithAnchor(l,i.frag)}else this.state=rW}}this.onTickEnd()}resetLoadingState(){let i=this.waitingData;i&&(this.fragmentTracker.removeFragment(i.frag),this.waitingData=null),super.resetLoadingState()}onTickEnd(){let{media:i}=this;null!=i&&i.readyState&&(this.lastCurrentTime=i.currentTime,this.checkFragmentChanged())}doTickIdle(){var i;let{hls:r,levels:s,media:a,trackId:n}=this,l=r.config;if(!this.buffering||!a&&!this.primaryPrefetch&&(this.startFragRequested||!l.startFragPrefetch)||!(null!=s&&s[n]))return;let o=s[n],h=o.details;if(!h||this.waitForLive(o)||this.waitForCdnTuneIn(h)){this.state=rQ,this.startFragRequested=!1;return}let d=this.getBufferOutput();this.bufferFlushed&&d&&(this.bufferFlushed=!1,this.afterBufferFlushed(d,I));let u=this.getFwdBufferInfo();if(null===u)return;if(!this.switchingTrack&&this._streamEnded(u,h)){r.trigger(T.BUFFER_EOS,{type:"audio"}),this.state=r0;return}let f=u.len,c=r.maxBufferLength,g=h.fragments,m=g[0].start,p=this.getLoadPosition(),v=this.flushing||this.switchingTrack&&!this.switchingTrack.flushImmediate?p:u.end;if(this.switchingTrack&&a&&h.PTSKnown&&p<m&&p>=this.timelineOffset&&(u.end>m||u.nextStart)&&(this.log(`Alt audio track ahead of main track, seek to start of alt audio track ${p} -> ${m} + 0.05`),a.currentTime=m+.05),f>=c&&!this.switchingTrack&&v<g[g.length-1].start)return;let y=this.getNextFragment(v,h);if(y&&this.isLoopLoading(y,v)&&(y=this.getNextFragmentLoopLoading(y,h,u,b.MAIN,c)),!y){this.bufferFlushed=!0;return}if(this.exceedsMaxBuffer(u,c,y))return;let E=(null==(i=this.mainFragLoading)?void 0:i.frag)||null;if(!this.audioOnly&&this.startFragRequested&&E&&_(y)&&!y.endList&&(!h.live||!this.loadingParts&&v<this.hls.liveSyncPosition)&&("OK"===this.fragmentTracker.getState(E)&&(this.mainFragLoading=E=null),E&&_(E))){if(y.start>E.end){let i=this.fragmentTracker.getFragAtPos(v,b.MAIN);i&&i.end>E.end&&(E=i,this.mainFragLoading={frag:i,targetBufferTime:null})}if(y.start>E.end)return}this.loadFragment(y,o,v)}onMediaDetaching(i,r){this.bufferFlushed=this.flushing=!1,super.onMediaDetaching(i,r)}onAudioTracksUpdated(i,{audioTracks:r}){this.resetTransmuxer(),this.levels=r.map(i=>new t6(i))}onAudioTrackSwitching(i,r){let s=!!r.url;this.trackId=r.id;let{fragCurrent:a}=this;a&&(a.abortRequests(),this.removeUnbufferedFrags(a.start)),this.resetLoadingState(),s?(this.switchingTrack=r,r.flushImmediate||(this.nextTrackId=r.id,this.nextLevelSwitch()),this.flushAudioIfNeeded(r),this.state!==rq&&(this.setInterval(100),this.state=rW,this.tick())):(this.resetTransmuxer(),this.switchingTrack=null,this.bufferedTrack=r,this.clearInterval())}onManifestLoading(){super.onManifestLoading(),this.bufferFlushed=this.flushing=this.audioOnly=!1,this.resetItem(),this.trackId=-1}onLevelLoaded(i,r){this.mainDetails=r.details;let s=this.cachedTrackLoadedData;s&&(this.cachedTrackLoadedData=null,this.onAudioTrackLoaded(T.AUDIO_TRACK_LOADED,s))}onAudioTrackLoaded(i,r){var s,a;let{levels:n}=this,{details:l,id:o,groupId:h,track:d}=r;if(!n)return void this.warn(`Audio tracks reset while loading track ${o} "${d.name}" of "${h}"`);let u=this.mainDetails;if(!u||l.endCC>u.endCC||u.expired){this.cachedTrackLoadedData=r,this.state!==rq&&(this.state=rQ);return}this.cachedTrackLoadedData=null,this.log(`Audio track ${o} "${d.name}" of "${h}" loaded [${l.startSN},${l.endSN}]${l.lastPartSn?`[part-${l.lastPartSn}-${l.lastPartIndex}]`:""},duration:${l.totalduration}`);let f=n[o],c=0;if(l.live||null!=(s=f.details)&&s.live){if(this.checkLiveUpdate(l),l.deltaUpdateFailed)return;f.details&&(c=this.alignPlaylists(l,f.details,null==(a=this.levelLastLoaded)?void 0:a.details)),l.alignedSliding||(rK(u,l,this),c=l.fragmentStart)}f.details=l,this.levelLastLoaded=f,this.startFragRequested||this.setStartPosition(u,c),this.hls.trigger(T.AUDIO_TRACK_UPDATED,{details:l,id:o,groupId:r.groupId}),this.state!==rQ||this.waitForCdnTuneIn(l)||(this.state=rW),this.tick()}_handleFragmentLoadProgress(i){var r;let s=i.frag,{part:a,payload:n}=i,{config:l,trackId:o,levels:h}=this;if(!h)return void this.warn(`Audio tracks were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);let d=h[o];if(!d)return void this.warn("Audio track is undefined on fragment load progress");let u=d.details;if(!u){this.warn("Audio track details undefined on fragment load progress"),this.removeUnbufferedFrags(s.start);return}let f=l.defaultAudioCodec||d.audioCodec||"mp4a.40.2",c=this.transmuxer;c||(c=this.transmuxer=new al(this.hls,b.AUDIO,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)));let g=this.initPTS[s.cc],m=null==(r=s.initSegment)?void 0:r.data;if(void 0!==g){let i=a?a.index:-1,r=new iU(s.level,s.sn,s.stats.chunkCount,n.byteLength,i,-1!==i,s.duration);c.push(n,m,f,"",s,a,u.totalduration,!1,r,g)}else{this.log(`Unknown video PTS for cc ${s.cc}, waiting for video PTS before demuxing audio frag ${s.sn} of [${u.startSN} ,${u.endSN}],track ${o}`);let{cache:i}
22=this.waitingData=this.waitingData||{frag:s,part:a,cache:new r7,complete:!1};i.push(new Uint8Array(n)),this.state!==rq&&(this.state=r2)}}_handleFragmentLoadComplete(i){if(this.waitingData){this.waitingData.complete=!0;return}super._handleFragmentLoadComplete(i)}onBufferReset(){this.mediaBuffer=null}onBufferCreated(i,r){this.bufferFlushed=this.flushing=!1;let s=r.tracks.audio;s&&(this.mediaBuffer=s.buffer||null)}onFragLoading(i,r){!this.audioOnly&&r.frag.type===b.MAIN&&_(r.frag)&&(this.mainFragLoading=r,this.state===rW&&this.tick())}onFragBuffered(i,r){let{frag:s,part:a}=r;if(s.type!==b.AUDIO){this.audioOnly||s.type!==b.MAIN||s.elementaryStreams.video||s.elementaryStreams.audiovideo||(this.audioOnly=!0,this.mainFragLoading=null);return}if(this.fragContextChanged(s))return void this.warn(`Fragment ${s.sn}${a?" p: "+a.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}, audioSwitch: ${this.switchingTrack?this.switchingTrack.name:"false"}`);if(_(s)){let i=this.switchingTrack;i&&(this.bufferedTrack=i)}this.fragBufferedComplete(s,a),this.media&&this.tick()}getFwdBufferInfo(){let i=this.getBufferOutput();return super.getFwdBufferInfo(i,b.AUDIO)}getBufferOutput(){return this.mediaBuffer?this.mediaBuffer:this.media}checkFragmentChanged(){let i=this.fragPlaying;if(!this.checkFragPlaying())return!1;let r=this.fragPlaying,s=null==i?void 0:i.level;return(!r||r.level!==s)&&(i&&this.cleanupBackBuffer(),this.switchingTrack&&this.completeAudioSwitch(this.switchingTrack)),!0}onError(i,r){var s;if(r.fatal){this.state=r1;return}switch(r.details){case E.FRAG_GAP:case E.FRAG_PARSING_ERROR:case E.FRAG_DECRYPT_ERROR:case E.FRAG_LOAD_ERROR:case E.FRAG_LOAD_TIMEOUT:case E.KEY_LOAD_ERROR:case E.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(b.AUDIO,r);break;case E.AUDIO_TRACK_LOAD_ERROR:case E.AUDIO_TRACK_LOAD_TIMEOUT:case E.LEVEL_PARSING_ERROR:r.levelRetry||this.state!==rQ||(null==(s=r.context)?void 0:s.type)!==R.AUDIO_TRACK||(this.state=rW);break;case E.BUFFER_APPEND_NO_PROGRESS:if("audio"!==r.parent)return;r.frag&&(r.appendsWithoutProgress||0)>=this.config.appendErrorMaxRetry&&(this.warn(`Marking fragment ${r.frag.sn} of track ${r.frag.level} as a gap after ${r.appendsWithoutProgress} appends without buffered range growth, to prevent loop loading`),this.fragmentTracker.addAsGap(r.frag));break;case E.BUFFER_ADD_CODEC_ERROR:case E.BUFFER_APPEND_ERROR:if("audio"!==r.parent)return;this.reduceLengthAndFlushBuffer(r)||this.resetLoadingState();break;case E.BUFFER_FULL_ERROR:if("audio"!==r.parent)return;this.reduceLengthAndFlushBuffer(r)&&(this.bufferedTrack=null,super.flushMainBuffer(0,1/0,"audio"));break;case E.INTERNAL_EXCEPTION:this.recoverWorkerError(r)}}onBufferFlushing(i,{type:r}){r!==k&&(this.flushing=!0)}onBufferFlushed(i,{type:r}){if(r!==k){this.flushing=!1,this.bufferFlushed=!0,this.state===r0&&(this.state=rW);let i=this.getBufferOutput();i&&(this.afterBufferFlushed(i,r),this.tick())}}_handleTransmuxComplete(i){var r;let s="audio",{hls:a}=this,{remuxResult:n,chunkMeta:l}=i,o=this.getCurrentContext(l);if(!o)return void this.resetWhenMissingContext(l);let{frag:h,part:d,level:u}=o,{details:f}=u,{audio:c,text:g,id3:m,initSegment:p}=n;if(this.fragContextChanged(h)||!f){this.fragmentTracker.removeFragment(h),null!=p&&p.tracks&&this.resetTransmuxer();return}if(this.state=rZ,c&&this.switchingTrack&&!this.switchingTrack.flushImmediate){let{config:i}=this,r=i.nextAudioTrackBufferFlushForwardOffset,s=Math.max(this.getLoadPosition()+r,h.start);super.flushMainBuffer(s,1/0,b.AUDIO)}if(null!=p&&p.tracks){let i=h.initSegment||h;if(this.unhandledEncryptionError(p,h))return;this._bufferInitSegment(u,p.tracks,i,l),a.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:i,id:s,tracks:p.tracks})}if(c){let{startPTS:i,endPTS:r,startDTS:s,endDTS:a}=c;d&&(d.elementaryStreams[I]={startPTS:i,endPTS:r,startDTS:s,endDTS:a}),h.setElementaryStreamInfo(I,i,r,s,a),this.bufferFragmentData(c,h,d,l)}if(null!=m&&null!=(r=m.samples)&&r.length){let i=O({id:s,frag:h,details:f},m);a.trigger(T.FRAG_PARSING_METADATA,i)}if(g){let i=O({id:s,frag:h,details:f},g);a.trigger(T.FRAG_PARSING_USERDATA,i)}}_bufferInitSegment(i,r,s,a){if(this.state!==rZ||(r.video&&delete r.video,r.audiovideo&&delete r.audiovideo,!r.audio))return;let n=r.audio;n.id=b.AUDIO;let l=i.audioCodec;this.log(`Init audio buffer, container:${n.container}, codecs[level/parsed]=[${l}/${n.codec}]`),(null==l?void 0:l.split(",").length)===1&&(n.levelCodec=l),this.hls.trigger(T.BUFFER_CODECS,r);let o=n.initSegment;if(null!=o&&o.byteLength){let i={type:"audio",frag:s,part:null,chunkMeta:a,parent:s.type,data:o};this.hls.trigger(T.BUFFER_APPENDING,i)}this.tickImmediate()}loadFragment(i,r,s){let a=this.fragmentTracker.getState(i);if(this.switchingTrack||a===iA||a===iR){var n;if(null!=(n=r.details)&&n.live&&!this.initPTS[i.cc]){this.log(`Waiting for video PTS in continuity counter ${i.cc} of live stream before loading audio fragment ${i.sn} of level ${this.trackId}`),this.state=r2;let s=this.mainDetails;s&&s.fragmentStart!==r.details.fragmentStart&&rK(s,r.details,this)}else super.loadFragment(i,r,s)}else this.clearTrackerIfNeeded(i)}flushAudioIfNeeded(i){if(this.media&&this.bufferedTrack&&i.flushImmediate){let{name:r,lang:s,assocLang:a,characteristics:n,audioCodec:l,channels:o}=this.bufferedTrack;is({name:r,lang:s,assocLang:a,characteristics:n,audioCodec:l,channels:o},i,ia)||(io(i.url,this.hls)?(this.log("Switching audio track : flushing all audio"),super.flushMainBuffer(0,1/0,"audio"),this.bufferedTrack=null):this.bufferedTrack=i)}}completeAudioSwitch(i){let{hls:r}=this;this.bufferedTrack=i,this.switchingTrack=null,r.trigger(T.AUDIO_TRACK_SWITCHED,$({},i))}get nextAudioTrack(){return this.nextTrackId}},ah=class extends X{constructor(i,r){super(r,i.logger),this.hls=void 0,this.canLoad=!1,this.timer=-1,this.loadingSync=!1,this.hls=i}destroy(){this.clearTimer(),this.hls=null}clearTimer(){-1!==this.timer&&(self.clearTimeout(this.timer),this.timer=-1)}
22startLoad(){this.canLoad=!0,this.loadPlaylist()}stopLoad(){this.canLoad=!1,this.clearTimer()}switchParams(i,r,s){let a=null==r?void 0:r.renditionReports;if(a){let n=-1;for(let s=0;s<a.length;s++){let l=a[s],o;try{o=new self.URL(l.URI,r.url).href}catch(i){this.warn(`Could not construct new URL for Rendition Report: ${i}`),o=l.URI||""}if(o===i){n=s;break}o===i.substring(0,o.length)&&(n=s)}if(-1!==n){let i=a[n],l=parseInt(i["LAST-MSN"])||r.lastPartSn,o=parseInt(i["LAST-PART"])||r.lastPartIndex;if(this.hls.config.lowLatencyMode){let i=Math.min(r.age-r.partTarget,r.targetduration);o>=0&&i>r.partTarget&&(o+=1)}return new t5(l,o>=0?o:void 0,s&&t8(s))}}}loadPlaylist(i){this.clearTimer()}loadingPlaylist(i,r){this.clearTimer()}shouldLoadPlaylist(i){return this.canLoad&&!!i&&!!i.url&&(!i.details||i.details.live)}getUrlWithDirectives(i,r){if(r)try{return r.addDirectives(i)}catch(i){this.warn(`Could not construct new URL with HLS Delivery Directives: ${i}`)}return i}playlistLoaded(i,r,s){let{details:a,stats:n}=r,l=a.fragments,o=self.performance.now(),h=n.loading.first?Math.max(0,Math.floor(o-n.loading.first)):0;a.advancedDateTime=Date.now()-h;let d=this.hls.config.timelineOffset;if(d!==a.appliedTimelineOffset){let i=Math.max(d||0,0);
22a.appliedTimelineOffset=i,l.forEach(r=>{null==r||r.setStart(r.playlistOffset+i)})}if(a.live||null!=s&&s.live){var u;let d,f,c,g="levelInfo"in r?r.levelInfo:r.track;a.reloaded(s);let p=null==(u=l[l.length-1])?void 0:u.type;if(a.misses>=this.hls.config.liveMaxUnchangedPlaylistRefresh){let i=Error(`${p} playlist ${g.id} hit max allowed unchanged reloads.`);this.warn(i);let{networkDetails:s,context:l}=r;this.hls.trigger(T.ERROR,{type:y.NETWORK_ERROR,details:E.PLAYLIST_UNCHANGED_ERROR,fatal:!1,url:a.url,error:i,reason:i.message,level:r.level,parent:p,context:l,networkDetails:s,stats:n});return}if(s){!function(i,r,s){let a;if(i===r)return;let n=null,l=i.fragments;for(let i=l.length-1;i>=0;i--){let r=l[i].initSegment;if(r){n=r;break}}i.fragmentHint&&delete i.fragmentHint.endPTS,function(i,r,s){var a,n,l;let o=r.skippedSegments,h=Math.max(i.startSN,r.startSN)-r.startSN,d=+!!i.fragmentHint+(o?r.endSN:Math.min(i.endSN,r.endSN))-r.startSN,u=r.startSN-i.startSN,f=r.fragmentHint?r.fragments.concat(r.fragmentHint):r.fragments,c=null!=(a=i.fragmentHint)&&a.duration?i.fragments.concat(i.fragmentHint):i.fragments;for(let a=h;a<=d;a++){let h=c[u+a],d=f[a];if(o&&!d&&h&&(d=r.fragments[a]=h),h&&d){s(h,d,a,f);let o=h.relurl,u=d.relurl;if(o&&(n=o)!==(l=u)&&l&&rB(n)!==rB(l)){r.playlistParsingError=rC(`media sequence mismatch ${d.sn}:`,i,r,h,d);return}if(h.cc!==d.cc){r.playlistParsingError=rC(`discontinuity sequence mismatch (${h.cc}!=${d.cc})`,i,r,h,d);return}}}}(i,r,(i,s,l,o)=>{if((!r.startCC||r.skippedSegments)&&s.cc!==i.cc){let a=i.cc-s.cc;for(let i=l;i<o.length;i++)o[i].cc+=a;r.endCC=o[o.length-1].cc}m(i.startPTS)&&m(i.endPTS)&&(s.setStart(s.startPTS=i.startPTS),s.startDTS=i.startDTS,s.maxStartPTS=i.maxStartPTS,s.endPTS=i.endPTS,s.endDTS=i.endDTS,s.minEndPTS=i.minEndPTS,s.setDuration(i.endPTS-i.startPTS),s.duration&&(a=s),r.PTSKnown=r.alignedSliding=!0),i.hasStreams&&(s.elementaryStreams=i.elementaryStreams),s.loader=i.loader,i.hasStats&&(s.stats=i.stats),i.initSegment&&(s.initSegment=i.initSegment,n=i.initSegment)});let o=r.fragments,h=r.fragmentHint?o.concat(r.fragmentHint):o;if(n&&h.forEach(i=>{var r;i&&(!i.initSegment||i.initSegment.relurl===(null==(r=n)?void 0:r.relurl))&&(i.initSegment=n)}),r.skippedSegments){if(r.deltaUpdateFailed=o.some(i=>!i),r.deltaUpdateFailed){s.warn("[level-helper] Previous playlist missing segments ski
22pped in delta playlist");for(let i=r.skippedSegments;i--;)o.shift();r.startSN=o[0].sn}else{r.canSkipDateRanges&&(r.dateRanges=function(i,r,s){let{dateRanges:a,recentlyRemovedDateranges:n}=r,l=O({},i);n&&n.forEach(i=>{delete l[i]});let o=Object.keys(l).length;return o?(Object.keys(a).forEach(i=>{let r=l[i],n=new iX(a[i].attr,r);n.isValid?(l[i]=n,r||(n.tagOrder+=o)):s.warn(`Ignoring invalid Playlist Delta Update DATERANGE tag: "${t7(a[i].attr)}"`)}),l):a}(i.dateRanges,r,s));let a=i.fragments.filter(i=>i.rawProgramDateTime);if(i.hasProgramDateTime&&!r.hasProgramDateTime)for(let i=1;i<h.length;i++)null===h[i].programDateTime&&rb(h[i],h[i-1],a);rT(a,r)}r.endCC=o[o.length-1].cc}if(!r.startCC){var d;let s=rM(i,r.startSN-1);r.startCC=null==(d=null==s?void 0:s.cc)?o[0].cc:d}if(function(i,r,s){if(i&&r){let a=0;for(let n=0,l=i.length;n<l;n++){let l=i[n],o=r[n+a];l&&o&&l.index===o.index&&l.fragment.sn===o.fragment.sn?s(l,o):a--}}}(i.partList,r.partList,(i,r)=>{r.elementaryStreams=i.elementaryStreams,r.stats=i.stats,r.gap=i.gap||r.gap}),a){let i=r.iframesOnly&&a.type===b.MAIN;r_(r,a,a.startPTS,a.endPTS,a.startDTS,a.endDTS,i,s)}else rx(i,r);o.length&&(r.totalduration=r.edge-o[0].start),r.driftStartTime=i.driftStartTime,r.driftStart=i.driftStart;let u=r.advancedDateTime;if(r.advanced&&u){let i=r.edge;r.driftStart||(r.driftStartTime=u,r.driftStart=i),r.driftEndTime=u,r.driftEnd=i}else r.driftEndTime=i.driftEndTime,r.driftEnd=i.driftEnd,r.advancedDateTime=i.advancedDateTime;-1===r.requestScheduled&&(r.requestScheduled=i.requestScheduled)}(s,a,this);let i=a.playlistParsingError;if(i){this.warn(i);let s=this.hls;if(!s.config.ignorePlaylistParsingErrors){let{networkDetails:l}=r;s.trigger(T.ERROR,{type:y.NETWORK_ERROR,details:E.LEVEL_PARSING_ERROR,fatal:!1,url:a.url,error:i,reason:i.message,level:r.level,parent:p,networkDetails:l,stats:n});return}a.playlistParsingError=null}}-1===a.requestScheduled&&(a.requestScheduled=n.loading.start);let v=this.hls.mainForwardBufferInfo,S=v?v.end-v.len:0,A=rw(a,(a.edge-S)*1e3);a.requestScheduled+A<o?a.requestScheduled=o:a.requestScheduled<=o&&(a.requestScheduled+=A);let L=r.deliveryDirectives;if(this.log(`live playlist ${i} ${a.advanced?`REFRESHED ${a.lastPartSn} - ${a.lastPartIndex}`:a.updated?"UPDATED":`MISSED (received ${a.lastPartSn} - ${a.lastPartIndex}${L?` | requested ${L.msn} - ${L.part}`:""})`}`),!this.canLoad||!a.live)return;if(a.canBlockReload&&a.advanced){let i=this.hls.config.lowLatencyMode,n=a.lastPartSn,l=a.endSN,h=a.lastPartIndex,u=n===l;-1!==h?u?(f=l+1,c=i?0:h):(f=n,c=i?h+1:a.maxPartIndex):f=l+1;let m=a.age,p=m+a.ageHeader,v=Math.min(p-a.partTarget,1.5*a.targetduration);if(v>0){if(p>3*a.targetduration)this.log(`Playlist last advanced ${m.toFixed(2)}s ago. Omitting segment and part directives.`),f=void 0,c=void 0;else if(null!=s&&s.tuneInGoal&&p-a.partTarget>s.tuneInGoal)this.warn(`CDN Tune-in goal increased from: ${s.tuneInGoal} to: ${v} with playlist age: ${a.age}`),v=0;else{let i=Math.floor(v/a.targetduration);f+=i,void 0!==c&&(c+=Math.round(v%a.targetduration/a.partTarget)),this.log(`CDN Tune-in age: ${a.ageHeader}s last advanced ${m.toFixed(2)}s goal: ${v} skip sn ${i} to part ${c}`)}a.tuneInGoal=v}if(d=this.getDeliveryDirectives(a,r.deliveryDirectives,f,c),i||!u){a.requestScheduled=o,this.loadingPlaylist(g,d);return}}else(a.canBlockReload||a.canSkipUntil)&&(d=this.getDeliveryDirectives(a,r.deliveryDirectives,f,c));d&&void 0!==f&&a.canBlockReload&&(a.requestScheduled=n.loading.first+Math.max(A-2*h,A/2)),this.scheduleLoading(g,d,a)}else this.clearTimer()}scheduleLoading(i,r,s){let a=s||i.details;if(!a)return void this.loadingPlaylist(i,r);let n=self.performance.now(),l=a.requestScheduled;if(n>=l&&!this.loadingSync){this.loadingSync=!0,this.loadingPlaylist(i,r),this.loadingSync=!1;return}let o=Math.max(l-n,0);this.log(`reload live playlist ${i.name||i.bitrate+"bps"} in ${Math.round(o)} ms`),this.clearTimer(),this.timer=self.setTimeout(()=>this.loadingPlaylist(i,r),o)}getDeliveryDirectives(i,r,s,a){let n=t8(i);return null!=r&&r.skip&&i.deltaUpdateFailed&&(s=r.msn,a=r.part,n=""),new t5(s,a,n)}checkRetry(i){let r=i.details,s=U(i),a=i.errorAction,{action:n,retryCount:l=0,retryConfig:o}=a||{},h=!!a&&!!o&&(5===n||!a.resolved&&2===n);if(h){var d,u;if(l>=o.maxNumRetry)return!1;if(s&&null!=(d=i.context)&&d.deliveryDirectives)this.warn(`Retrying playlist loading ${l+1}/${o.maxNumRetry} after "${r}" without delivery-directives`),this.loadPlaylist();else{let s=q(null==(u=i.response)?void 0:u.code);
22if(this.clearTimer(),s)this.log("Waiting for connection (offline)"),i.reason="offline",this.timer=self.setTimeout(()=>this.checkOfflineStatus(),1e3);else{let i=H(o,l);this.warn(`Retrying playlist loading ${l+1}/${o.maxNumRetry} after "${r}" in ${i}ms`),this.timer=self.setTimeout(()=>this.loadPlaylist(),i)}}i.levelRetry=!0,a.resolved=!0}return h}checkOfflineStatus(){this.clearTimer(),q(0)?this.timer=self.setTimeout(()=>this.checkOfflineStatus(),1e3):(this.log("Connection restored (online)"),this.loadPlaylist())}};function ad(i,r){if(i.length!==r.length)return!1;for(let s=0;s<i.length;s++)if(!au(i[s].attrs,r[s].attrs))return!1;return!0}function au(i,r,s){let a=i["STABLE-RENDITION-ID"];return a&&!s?a===r["STABLE-RENDITION-ID"]:!(s||["LANGUAGE","NAME","CHARACTERISTICS","AUTOSELECT","DEFAULT","FORCED","ASSOC-LANGUAGE"]).some(s=>i[s]!==r[s])}var af=class extends ah{constructor(i){super(i,"audio-track-controller"),this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.registerListeners()}registerListeners(){let{hls:i}=this;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.LEVEL_LOADING,this.onLevelLoading,this),i.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.on(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let{hls:i}=this;i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.LEVEL_LOADING,this.onLevelLoading,this),i.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.off(T.AUDIO_TRACK_LOADED,this.onAudioTrackLoaded,this),i.off(T.ERROR,this.onError,this)}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,super.destroy()}onManifestLoading(){this.tracks=[],this.tracksInGroup=[],this.groupIds=null,this.currentTrack=null,this.trackId=-1,this.selectDefaultTrack=!0}onManifestParsed(i,r){this.tracks=r.audioTracks||[]}onAudioTrackLoaded(i,r){let{id:s,groupId:a,details:n}=r,l=this.tracksInGroup[s];if(!l||l.groupId!==a)return void this.warn(`Audio track with id:${s} and group:${a} not found in active group ${null==l?void 0:l.groupId}`);let o=l.details;l.details=r.details,this.log(`Audio track ${s} "${l.name}" lang:${l.lang} group:${a} loaded [${n.startSN}-${n.endSN}]`),s===this.trackId&&this.playlistLoaded(s,r,o)}onLevelLoading(i,r){this.switchLevel(r.level)}onLevelSwitching(i,r){this.switchLevel(r.level)}switchLevel(i){let r=this.hls.levels[i];if(!r)return;let s=r.audioGroups||null,a=this.groupIds,n=this.currentTrack;if(!s||(null==a?void 0:a.length)!==(null==s?void 0:s.length)||null!=s&&s.some(i=>(null==a?void 0:a.indexOf(i))===-1)){this.groupIds=s,this.trackId=-1,this.currentTrack=null;let i=this.tracks.filter(i=>ih(i.groupId,s));if(i.length)this.selectDefaultTrack&&!i.some(i=>i.default)&&(this.selectDefaultTrack=!1),i.forEach((i,r)=>{i.id=r});else if(!n&&!this.tracksInGroup.length)return;this.tracksInGroup=i;let r=this.hls.config.audioPreference;if(!n&&r){let s=ir(r,i,ia);if(s>-1)n=i[s];else{let i=ir(r,this.tracks);n=this.tracks[i]}}let a=this.findTrackId(n);-1===a&&n&&(a=this.findTrackId(null)),this.log(`Updating audio tracks, ${i.length} track(s) found in group(s): ${null==s?void 0:s.join(",")}`),this.hls.trigger(T.AUDIO_TRACKS_UPDATED,{audioTracks:i});let o=this.trackId;if(-1!==a&&-1===o)this.setAudioTrack(a);else if(i.length&&-1===o){var l;let r=Error(`No audio track selected for current audio group-ID(s): ${null==(l=this.groupIds)?void 0:l.join(",")} track count: ${i.length}`);this.warn(r.message),this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.AUDIO_TRACK_LOAD_ERROR,fatal:!0,error:r})}}}onError(i,r){r.fatal||!r.context||r.context.type===R.AUDIO_TRACK&&r.context.id===this.trackId&&ih(r.context.groupId,this.groupIds)&&this.checkRetry(r)}get allAudioTracks(){return this.tracks}get audioTracks(){return this.tracksInGroup}get audioTrack(){return this.trackId}set audioTrack(i){this.selectDefaultTrack=!1,this.setAudioTrack(i)}get nextAudioTrack(){return this.trackId}set nextAudioTrack(i){this.selectDefaultTrack=!1,this.setAudioTrack(i,!1)}setAudioOption(i){let r=this.hls;if(r.config.audioPreference=i,i){let n=this.allAudioTracks;
22if(this.selectDefaultTrack=!1,n.length){let l=this.currentTrack;if(l&&is(i,l,ia))return l;let o=ir(i,this.tracksInGroup,ia);if(o>-1){let r=this.tracksInGroup[o];return this.setAudioTrack(o,"flushImmediate"in i&&i.flushImmediate),r}if(l){var s,a;let l,o,h,d,u,f,c=r.loadLevel;-1===c&&(c=r.firstAutoLevel);let g=(s=r.levels,l=s[a=c],(o=s.reduce((i,r,s)=>{let a=r.uri;return(i[a]||(i[a]=[])).push(s),i},{})[l.uri]).length>1&&(a=Math.max.apply(Math,o)),h=l.videoRange,d=l.frameRate,u=l.codecSet.substring(0,4),(f=il(s,a,r=>{if(r.videoRange!==h||r.frameRate!==d||r.codecSet.substring(0,4)!==u)return!1;let s=r.audioGroups;return ir(i,n.filter(i=>ih(i.groupId,s)),ia)>-1}))>-1?f:il(s,a,r=>{let s=r.audioGroups;return ir(i,n.filter(i=>ih(i.groupId,s)),ia)>-1}));if(-1===g)return null;r.nextLoadLevel=g}if(i.channels||i.audioCodec){let r=ir(i,n);if(r>-1)return n[r]}}}return null}setAudioTrack(i,r=!0){let s=this.tracksInGroup;if(i<0||i>=s.length)return void this.warn(`Invalid audio track id: ${i}`);this.selectDefaultTrack=!1;let a=this.currentTrack,n=s[i],l=n.details&&!n.details.live;if(i===this.trackId&&n===a&&l||(this.log(`Switching to audio-track ${i} "${n.name}" lang:${n.lang} group:${n.groupId} channels:${n.channels}`),this.trackId=i,this.currentTrack=n,this.hls.trigger(T.AUDIO_TRACK_SWITCHING,$($({},n),{},{flushImmediate:r})),l))return;let o=this.switchParams(n.url,null==a?void 0:a.details,n.details);this.loadPlaylist(o)}findTrackId(i){let r=this.tracksInGroup;for(let s=0;s<r.length;s++){let a=r[s];if(!(this.selectDefaultTrack&&!a.default)&&(!i||is(i,a,ia)))return s}if(i){let{name:s,lang:a,assocLang:n,characteristics:l,audioCodec:o,channels:h}=i;for(let i=0;i<r.length;i++)if(is({name:s,lang:a,assocLang:n,characteristics:l,audioCodec:o,channels:h},r[i],ia))return i;for(let s=0;s<r.length;s++){let a=r[s];if(au(i.attrs,a.attrs,["LANGUAGE","ASSOC-LANGUAGE","CHARACTERISTICS"]))return s}for(let s=0;s<r.length;s++){let a=r[s];if(au(i.attrs,a.attrs,["LANGUAGE"]))return s}}return -1}loadPlaylist(i){super.loadPlaylist();let r=this.currentTrack;this.shouldLoadPlaylist(r)&&io(r.url,this.hls)&&this.scheduleLoading(r,i)}loadingPlaylist(i,r){super.loadingPlaylist(i,r);let s=i.id,a=i.groupId,n=this.getUrlWithDirectives(i.url,r),l=i.details,o=null==l?void 0:l.age;this.log(`Loading audio-track ${s} "${i.name}" lang:${i.lang} group:${a}${(null==r?void 0:r.msn)===void 0?"":" at sn "+r.msn+" part "+r.part}${o&&l.live?" age "+o.toFixed(1)+(l.type&&" "+l.type||""):""} ${n}`),this.hls.trigger(T.AUDIO_TRACK_LOADING,{url:n,id:s,groupId:a,deliveryDirectives:r||null,track:i})}},ac=class{constructor(i){this.tracks=void 0,this.queues={video:[],audio:[],audiovideo:[]},this.tracks=i}destroy(){this.tracks=this.queues=null}append(i,r,s){if(null===this.queues||null===this.tracks)return;let a=this.queues[r];a.push(i),1!==a.length||s||this.executeNext(r)}appendBlocker(i){return new Promise(r=>{this.append({label:"async-blocker",execute:r,onStart:()=>{},onComplete:()=>{},onError:()=>{}},i)})}prependBlocker(i){return new Promise(r=>{this.queues&&this.queues[i].unshift({label:"async-blocker-prepend",execute:r,onStart:()=>{},onComplete:()=>{},onError:()=>{}})})}removeBlockers(){null!==this.queues&&[this.queues.video,this.queues.audio,this.queues.audiovideo].forEach(i=>{var r;let s=null==(r=i[0])?void 0:r.label;"async-blocker"===s||"async-blocker-prepend"===s?(i[0].execute(),i.splice(0,1)):"block-audio"===s&&i.splice(0,1)})}insertNext(i,r){null!==this.queues&&this.queues[r].splice(1,0,...i)}unblockAudio(){var i;null!==this.queues&&(null==(i=this.current("audio"))?void 0:i.label)==="block-audio"&&this.shiftAndExecuteNext("audio")}audioBlocking(){return null!==this.queues&&this.queues.audio.some(i=>"block-audio"===i.label)}executeNext(i){if(null===this.queues||null===this.tracks)return;let r=this.queues[i];if(r.length){let a=r[0];try{a.execute()}catch(n){var s;if(a.onError(n),null===this.queues||null===this.tracks)return;let r=null==(s=this.tracks[i])?void 0:s.buffer;null!=r&&r.updating||this.shiftAndExecuteNext(i)}}}shiftAndExecuteNext(i){null!==this.queues&&(this.queues[i].shift(),this.executeNext(i))}current(i){var r;return(null==(r=this.queues)?void 0:r[i][0])||null}toString(){let{queues:i,tracks:r}=this;return null===i||null===r?"<destroyed>":`
23${this.list("video")}
24${this.list("audio")}
25${this.list("audiovideo")}}`}list(i){var r,s;return null!=(r=this.queues)&&r[i]||null!=(s=this.tracks)&&s[i]?`${i}: (${this.listSbInfo(i)}) ${this.listOps(i)}`:""}listSbInfo(i){var r;let s=null==(r=this.tracks)?void 0:r[i],a=null==s?void 0:s.buffer;return a?`SourceBuffer${a.updating?" updating":""}${s.ended?" ended":""}${s.ending?" ending":""}`:"none"}listOps(i){var r;return(null==(r=this.queues)?void 0:r[i].map(i=>i.label).join(", "))||""}},ag=/(avc[1234]|hvc1|hev1|dvh[1e]|vp09|av01)(?:\.[^.,]+)+/,am="HlsJsTrackRemovedError",ap=class extends 
25Error{constructor(i){super(i),this.name=am}},av=class extends X{constructor(i,r){super("buffer-controller",i.logger),this.hls=void 0,this.fragmentTracker=void 0,this.fragmentAppendProgress=Object.create(null),this.appendsWithoutProgress=Object.create(null),this.details=null,this._objectUrl=null,this.operationQueue=null,this.bufferCodecEventsTotal=0,this.media=null,this.mediaSource=null,this.lastMpegAudioChunk=null,this.lastVideoAppendEnd=0,this.appendSource=void 0,this.transferData=void 0,this.overrides=void 0,this.appendErrors={audio:0,video:0,audiovideo:0},this.appendError=void 0,this._quotaEvictionPending={},this.tracks={},this.sourceBuffers=[[null,null],[null,null]],this._onEndStreaming=i=>{var r;this.hls&&(null==(r=this.mediaSource)?void 0:r.readyState)==="open"&&(!this.media||this.media.seeking||this.hls.pauseBuffering())},this._onStartStreaming=i=>{this.hls&&this.hls.resumeBuffering()},this._onMediaSourceOpen=i=>{let{media:r,mediaSource:s}=this;i&&this.log("Media source opened"),r&&s&&(rV(s,"sourceopen",this._onMediaSourceOpen),rV(r,"emptied",this._onMediaEmptied),this.updateDuration(),this.hls.trigger(T.MEDIA_ATTA
25CHED,{media:r,mediaSource:s}),null!==this.mediaSource&&this.checkPendingTracks())},this._onMediaSourceClose=()=>{if(this.log("Media source closed"),this.media){let i=this.media.error,{appendError:r,appendErrors:s}=this,a=!1;!r&&i&&(a=Math.max(++s.audio,++s.video,++s.audiovideo)>=this.hls.config.appendErrorMaxRetry);let n=Error(`MediaSource closed while media attached${aT(a,i)}`);this.warn(n),this.hls.trigger(T.ERROR,O({fatal:a},r,{type:y.MEDIA_ERROR,details:E.MEDIA_SOURCE_REQUIRES_RESET,error:n}))}},this._onMediaSourceEnded=()=>{this.log("Media source ended")},this._onMediaEmptied=()=>{let{mediaSrc:i,_objectUrl:r}=this;i!==r&&this.error(`Media element src was set while attaching MediaSource (${r} > ${i})`)},this._onMediaError=()=>{let{media:i}=this;if(i){var r,s;this.log(`Media error (code: ${null==(r=i.error)?void 0:r.code}): ${null==(s=i.error)?void 0:s.message}`)}},this.hls=i,this.fragmentTracker=r,this.appendSource=function(i){return"u">typeof self&&i===self.ManagedMediaSource}(ei(i.config.preferManagedMediaSource)),this.initTracks(),this.registerListeners()}hasSourceTypes(){return Object.keys(this.tracks).length>0}destroy(){this.unregisterListeners(),this.details=null,this.lastMpegAudioChunk=null,this.transferData=this.overrides=void 0,this.operationQueue&&(this.operationQueue.destroy(),this.operationQueue=null),this.hls=this.fragmentTracker=null,this._onMediaSourceOpen=this._onMediaSourceClose=null,this._onMediaSourceEnded=null,this._onStartStreaming=this._onEndStreaming=null,this._onMediaEmptied=this._onMediaError=null}registerListeners(){let{hls:i}=this;
25i.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.BUFFER_RESET,this.onBufferReset,this),i.on(T.BUFFER_APPENDING,this.onBufferAppending,this),i.on(T.BUFFER_CODECS,this.onBufferCodecs,this),i.on(T.BUFFER_EOS,this.onBufferEos,this),i.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.on(T.FRAG_PARSED,this.onFragParsed,this),i.on(T.FRAG_CHANGED,this.onFragChanged,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let{hls:i}=this;i.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.BUFFER_RESET,this.onBufferReset,this),i.off(T.BUFFER_APPENDING,this.onBufferAppending,this),i.off(T.BUFFER_CODECS,this.onBufferCodecs,this),i.off(T.BUFFER_EOS,this.onBufferEos,this),i.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.off(T.FRAG_PARSED,this.onFragParsed,this),i.off(T.FRAG_CHANGED,this.onFragChanged,this),i.off(T.ERROR,this.onError,this)}transferMedia(){let{media:i,mediaSource:r}=this;if(!i)return null;let s={};if(this.operationQueue){let i=this.isUpdating();i||this.operationQueue.removeBlockers();let r=this.isQueued();(i||r)&&this.warn(`Transfering MediaSource with${r?" operations in queue":""}${i?" updating SourceBuffer(s)":""} ${this.operationQueue}`),this.operationQueue.destroy()}let a=this.transferData;return a&&!this.sourceBufferCount&&a.mediaSource===r?O(s,a.tracks):this.sourceBuffers.forEach(i=>{let[r]=i;r&&(s[r]=O({},this.tracks[r]),this.removeBuffer(r)),i[0]=i[1]=null}),{media:i,mediaSource:r,tracks:s}}initTracks(){this.resetAppendProgress(),this.sourceBuffers=[[null,null],[null,null]],this.tracks={},this.resetQueue(),this.lastMpegAudioChunk=null,this.lastVideoAppendEnd=0}onManifestLoading(){this.bufferCodecEventsTotal=0,this.details=null,this.resetAppendErrors(),this.resetAppendProgress()}onManifestParsed(i,r){var s;let a=2;(!r.audio||r.video)&&r.altAudio||(a=1),this.bufferCodecEventsTotal=a,this.log(`${a} bufferCodec event(s) expected.`),null!=(s=this.transferData)&&s.mediaSource&&this.sourceBufferCount&&a&&this.bufferCreated()}onMediaAttaching(i,r){let s=this.media=r.media;this.transferData=this.overrides=void 0;let a=ei(this.appendSource);if(a){let i=!!r.mediaSource;(i||r.overrides)&&(this.transferData=r,this.overrides=r.overrides);let o=this.mediaSource=r.mediaSource||new a;if(this.assignMediaSource(o),i)this._objectUrl=s.src,this.attachTransferred();else{let i=this._objectUrl=self.URL.createObjectURL(o);if(this.appendSource)try{var n,l;let r;s.removeAttribute("src");let a=self.ManagedMediaSource;s.disableRemotePlayback=s.disableRemotePlayback||a&&o instanceof a,ay(s),n=s,l=i,(r=self.document.createElement("source")).type="video/mp4",r.src=l,n.appendChild(r),s.load()}catch{s.src=i}else s.src=i}rH(s,"emptied",this._onMediaEmptied),rH(s,"error",this._onMediaError),this.appendSource&&rH(s,"seeking",this._onStartStreaming)}}assignMediaSource(i){var r,s;this.log(`${(null==(r=this.transferData)?void 0:r.mediaSource)===i?"transferred":"created"} media source: ${null==(s=i.constructor)?void 0:s.name}`),rH(i,"sourceopen",this._onMediaSourceOpen),rH(i,"sourceended",this._onMediaSourceEnded),rH(i,"sourceclose",this._onMediaSourceClose),this.appendSource&&(rH(i,"startstreaming",this._onStartStreaming),rH(i,"endstreaming",this._onEndStreaming))}attachTransferred(){let i=this.media,r=this.transferData;if(!r||!i)return;let s=this.tracks,a=r.tracks,n=a?Object.keys(a):null,l=n?n.length:0,o=()=>{Promise.resolve().then(()=>{this.media&&this.mediaSourceOpenOrEnded&&this._onMediaSourceOpen()})};if(a&&n&&l){if(!this.tracksReady){this.hls.config.startFragPrefetch=!0,this.log("attachTransferred: waiting for SourceBuffer track info");return}if(this.log(`attachTransferred: (bufferCodecEventsTotal ${this.bufferCodecEventsTotal})
26required tracks: ${t7(s,(i,r)=>"initSegment"===i?void 0:r)};
27transfer tracks: ${t7(a,(i,r)=>"initSegment"===i?void 0:r)}}`),!er(a,s)){r.mediaSource=null,r.tracks=void 0;let n=i.currentTime,l=this.details,o=Math.max(n,(null==l?void 0:l.fragments[0].start)||0);return o-n>1?void this.log(`attachTransferred: waiting for playback to reach new tracks start time ${n} -> ${o}`):(this.warn(`attachTransferred: resetting MediaSource for incompatible tracks ("${Object.keys(a)}"->"${Object.keys(s)}") start time: ${o} currentTime: ${n}`),this.onMediaDetaching(T.MEDIA_DETACHING,{}
27),this.onMediaAttaching(T.MEDIA_ATTACHING,r),void(i.currentTime=o))}this.transferData=void 0,n.forEach(i=>{let r=a[i];if(r){let s=r.buffer;if(s){let a=this.fragmentTracker,n=r.id;if(a.hasFragments(n)||a.hasParts(n)){let r=iK.getBuffered(s);a.detectEvictedFragments(i,r,n,null,null,!0)}let l=aE(i),o=[i,s];this.sourceBuffers[l]=o,s.updating&&this.operationQueue&&this.operationQueue.prependBlocker(i),this.trackSourceBuffer(i,r)}}}),o(),this.bufferCreated()}else this.log("attachTransferred: MediaSource w/o SourceBuffers"),o()}get mediaSourceOpenOrEnded(){var i;let r=null==(i=this.mediaSource)?void 0:i.readyState;return"open"===r||"ended"===r}onMediaDetaching(i,r){let s=!!r.transferMedia;this.transferData=this.overrides=void 0;let{media:a,mediaSource:n,_objectUrl:l}=this;if(n){if(this.log(`media source ${s?"transferring":"detaching"}`),s)this.sourceBuffers.forEach(([i])=>{i&&this.removeBuffer(i)}),this.resetQueue();else{if(this.mediaSourceOpenOrEnded){let i="open"===n.readyState;try{let r=n.sourceBuffers;for(let s=r.length;s--;)i&&r[s].abort(),n.removeSourceBuffer(r[s]);i&&n.endOfStream()}catch(i){this.warn(`onMediaDetaching: ${i.message} while calling endOfStream`)}}this.sourceBufferCount&&this.onBufferReset()}rV(n,"sourceopen",this._onMediaSourceOpen),rV(n,"sourceended",this._onMediaSourceEnded),rV(n,"sourceclose",this._onMediaSourceClose),this.appendSource&&(rV(n,"startstreaming",this._onStartStreaming),rV(n,"endstreaming",this._onEndStreaming)),this.mediaSource=null,this._objectUrl=null}a&&(rV(a,"emptied",this._onMediaEmptied),rV(a,"error",this._onMediaError),rV(a,"seeking",this._onStartStreaming),s||(l&&self.URL.revokeObjectURL(l),this.mediaSrc===l?(a.removeAttribute("src"),this.appendSource&&ay(a),a.load()):this.warn("media|source.src was changed by a third party - skip cleanup")),this.media=null)}onBufferReset(){this.sourceBuffers.forEach(([i])=>{i&&this.resetBuffer(i)}),this.initTracks()}resetBuffer(i){var r,s;let a=null==(r=this.tracks[i])?void 0:r.buffer;if(this.removeBuffer(i),a)try{null!=(s=this.mediaSource)&&s.sourceBuffers.length&&this.mediaSource.removeSourceBuffer(a)}catch(r){this.warn(`onBufferReset ${i}`,r)}delete this.tracks[i]}removeBuffer(i){this.removeBufferListeners(i),this.sourceBuffers[aE(i)]=[null,null];let r=this.tracks[i];r&&(this.clearBufferAppendTimeoutId(r),r.buffer=void 0)}resetQueue(){this.operationQueue&&this.operationQueue.destroy(),this.operationQueue=new ac(this.tracks)}onBufferCodecs(i,r){var s;let a=this.tracks,n=Object.keys(r);this.log(`BUFFER_CODECS: "${n}" (current SB count ${this.sourceBufferCount})`);let l="audiovideo"in r&&(a.audio||a.video)||a.audiovideo&&("audio"in r||"video"in r),o=!l&&this.sourceBufferCount&&this.media&&n.some(i=>!a[i]);l||o?this.warn(`Unsupported transition between "${Object.keys(a)}" and "${n}" SourceBuffers`):(n.forEach(i=>{var s,n;let{id:l,codec:o,levelCodec:h,container:d,metadata:u,supplemental:f}=r[i],c=a[i],g=null==(s=this.transferData)||null==(s=s.tracks)?void 0:s[i],m=null!=g&&g.buffer?g:c,p=(null==m?void 0:m.pendingCodec)||(null==m?void 0:m.codec),v=null==m?void 0:m.levelCodec;c||(c=a[i]={buffer:void 0,listeners:[],codec:o,supplemental:f,container:d,levelCodec:h,metadata:u,id:l});let y=tq(p,v),E=null==y?void 0:y.replace(ag,"$1"),T=tq(o,h),S=null==(n=T)?void 0:n.replace(ag,"$1");T&&y&&E!==S&&("audio"===i.slice(0,5)&&(T=tj(T,this.appendSource)),this.log(`switching codec ${p} to ${T}`),T!==(c.pendingCodec||c.codec)&&(c.pendingCodec=T),c.container=d,this.appendChangeType(i,d,T))}),(this.tracksReady||this.sourceBufferCount)&&(r.tracks=this.sourceBufferTracks),!this.sourceBufferCount&&(!(this.bufferCodecEventsTotal>1)||this.tracks.video||r.video||(null==(s=r.audio)?void 0:s.id)!=="main"||(this.log("Main audio-only"),this.bufferCodecEventsTotal=1),this.mediaSourceOpenOrEnded&&this.checkPendingTracks()))}get sourceBufferTracks(){return Object.keys(this.tracks).reduce((i,r)=>{let s=this.tracks[r];return i[r]={id:s.id,container:s.container,codec:s.codec,levelCodec:s.levelCodec},i},{})}appendChangeType(i,r,s){let a=`${r};codecs=${s}`,n={label:`change-type=${a}`,execute:()=>{let n=this.tracks[i];if(n){let l=n.buffer;null!=l&&l.changeType&&(this.log(`changing ${i} sourceBuffer type to ${a}`),l.changeType(a),n.codec=s,n.container=r)}this.shiftAndExecuteNext(i)},onStart:()=>{},onComplete:()=>{},onError:r=>{this.warn(`Failed to change ${i} SourceBuffer type`,r)}};this.append(n,i,this.isPending(this.tracks[i]))}blockAudio(i){var r;let s=i.start,a=s+.05*i.duration;(null==(r=this.fragmentTracker.getAppendedFrag(s,b.MAIN))?void 0:r.gap)!==!0&&this.append({label:"block-audio",execute:()=>{var i,r;
27(this.lastVideoAppendEnd>a||iK.isBuffered(null==(i=this.tracks.video)?void 0:i.buffer,a)||(null==(r=this.fragmentTracker.getAppendedFrag(a,b.MAIN))?void 0:r.gap)===!0)&&this.unblockAudio()},onStart:()=>{},onComplete:()=>{},onError:i=>{this.warn("Error executing block-audio operation",i)}},"audio",!0)}unblockAudio(){this.operationQueue&&this.operationQueue.unblockAudio()}onBufferAppending(i,r){let{tracks:s}=this,{data:a,type:n,parent:l,frag:o,part:h,chunkMeta:d,offset:u}=r,f=d.buffering[n],c=_(o)&&!h&&!o.gap&&!d.partial&&!d.iframe,g=null,p=!1,{sn:v,cc:S}=o,A=self.performance.now();f.start=A;let L=o.stats.buffering,R=h?h.stats.buffering:null;0===L.start&&(L.start=A),(null==R?void 0:R.start)===0&&(R.start=A);let b=s.audio,I=!1;"audio"===n&&(null==b?void 0:b.container)==="audio/mpeg"&&(I=!this.lastMpegAudioChunk||1===d.id||this.lastMpegAudioChunk.sn!==d.sn,this.lastMpegAudioChunk=d);let k=s.video,D=null==k?void 0:k.buffer;if(D&&"initSegment"!==v&&void 0!==u){let i=null==b?void 0:b.buffer,r=h||o;if("audio"===n&&"main"!==l&&!(k.ending||k.ended)&&i&&iK.getBuffered(i).length){let i=r.start+.05*r.duration,s=iK.getBuffered(D),a=this.currentOp("video");(s.length||a)&&(iK.isBuffered(D,i)||!(this.lastVideoAppendEnd<i))||this.blockAudio(r)}else if("video"===n){let i=r.end,s=this.lastVideoAppendEnd-i;this.lastVideoAppendEnd=i,s<0||s>r.duration?this.unblockAudio():this.isAudioBlocked()&&this.executeNext("audio")}}let P=(h||o).start,C={label:`append-${n}`,execute:()=>{var i;f.executeStart=self.performance.now();let r=null==(i=this.tracks[n])?void 0:i.buffer;r&&(c&&(p=aL(aA(g=iK.timeRangesToArray(iK.getBuffered(r)),o),o)),I?this.updateTimestampOffset(r,P,.1,n,v,S):void 0!==u&&m(u)&&this.updateTimestampOffset(r,u,1e-6,n,v,S)),this.appendExecutor(a,n)},onStart:()=>{},onComplete:()=>{this.clearBufferAppendTimeoutId(this.tracks[n]);let i=self.performance.now();f.executeEnd=f.end=i,0===L.first&&(L.first=i),(null==R?void 0:R.first)===0&&(R.first=i);let r={};if(this.sourceBuffers.forEach(([i,s])=>{i&&(r[i]=iK.getBuffered(s))}),c){let i=this.getFragmentAppendProgress(o),s=r[n];if(s&&g){let r=aA(iK.timeRangesToArray(s),o);i.progressed||(i.progressed=r-aA(g,o)>.001);let a=p&&aL(r,o);i.fullyBuffered[n]=(void 0===i.fullyBuffered[n]||i.fullyBuffered[n])&&a}}this.hls.trigger(T.BUFFER_APPENDED,{type:n,frag:o,part:h,chunkMeta:d,parent:l,timeRanges:r})},onError:i=>{var r,s;this.clearBufferAppendTimeoutId(this.tracks[n]);let u=i.code===DOMException.QUOTA_EXCEEDED_ERR||"QuotaExceededError"==i.name||"quota"in i;if(u&&!this._quotaEvictionPending[n]){let i=this.getBackBufferEvictionTarget(n,a.byteLength,o.type);if(i>0){this._quotaEvictionPending[n]=!0,this.log(`QuotaExceededError on "${n}" append sn: ${v} - evicting back buffer to ${i.toFixed(3)}s and retrying`);let r=this.getFlushOp(n,0,i),s=this.getClearEvictionPendingOp(n);this.insertNext([r,C,s],n);return}this.warn(`QuotaExceededError on "${n}" sn: ${v} - no back buffer available to evict`)}c&&(this.getFragmentAppendProgress(o).errored=!0);let f={type:y.MEDIA_ERROR,parent:l,details:E.BUFFER_APPEND_ERROR,sourceBufferName:n,frag:o,part:h,chunkMeta:d,error:i,err:i,fatal:!1},g=null==(r=this.media)?void 0:r.error;if(i.name!==am||0!==this.sourceBufferCount||this.media&&0!==this.pendingTrackCount){u&&(f.details=E.BUFFER_FULL_ERROR);let r=++this.appendErrors[n],a=this.hls.config.appendErrorMaxRetry;this.warn(`Failed ${r}/${a+1} times to append segment in "${n}" sourceBuffer with error: ${i.message}`),r>=a&&(f.fatal=!u);let l=null==(s=this.mediaSource)?void 0:s.readyState;("ended"===l||"closed"===l||g)&&(this.warn(`MediaSource readyState "${l}" during SourceBuffer${aT(f.fatal,g)}`),f.details=E.MEDIA_SOURCE_REQUIRES_RESET)}else f.errorAction=iS(!0);this.appendError=f,this.hls.trigger(T.ERROR,f),u&&this.hls&&this.trimBuffers(o.start,1)}};this.log(`queuing "${n}" append sn: ${v}${h?" p: "+h.index:""} of ${l} playlist ${o.level} cc: ${S} offset: ${u} bytes: ${a.byteLength}`),this.append(C,n,this.isPending(this.tracks[n]))}getClearEvictionPendingOp(i){return{label:"clear",execute:()=>{this._quotaEvictionPending[i]=!1,this.shiftAndExecuteNext(i)},onStart:()=>{},onComplete:()=>{},onError:()=>{}}}getFlushOp(i,r,s){return this.log(`queuing "${i}" remove ${r}-${s}`),{label:"remove",execute:()=>{this.removeExecutor(i,r,s)},onStart:()=>{},onComplete:()=>{var a;let n=null==(a=this.tracks[i])?void 0:a.buffer;this.log(`Remove request ${r}-${s} from ${i} Source Buffer complete > buffer: ${n?rj(iK.getBuffered(n)):"(detached)"}`),this.hls.trigger(T.BUFFER_FLUSHED,{type:i,start:r,end:s})},onError:a=>{this.warn(`Failed to remove ${r}-${s} from "${i}" SourceBuffer`,a),this.hls.trigger(T.BUFFER_FLUSHED,{type:i,start:0,end:0,error:a})}}}onBufferFlushing(i,r){let{type:s,startOffset:a,endOffset:n}=r;s&&"audio"!==s||this.unblockAudio(),s?this.append(this.getFlushOp(s,a,n),s):this.sourceBuffers.forEac
27h(([i])=>{i&&this.append(this.getFlushOp(i,a,n),i)})}onFragParsed(i,r){let{frag:s,part:a,chunkMeta:n}=r,l=[],o=a?a.elementaryStreams:s.elementaryStreams;o[D]?l.push("audiovideo"):(o[I]&&l.push("audio"),o[k]&&l.push("video")),0===l.length&&this.log(`Fragments must have at least one ElementaryStreamType set. ${s.type} ${s.level} ${a?`part: ${a.index} of `:""}sn: ${s.sn}`),this.blockBuffers(()=>{let i=self.performance.now();s.stats.buffering.end=i,a&&(a.stats.buffering.end=i);let r=a?a.stats:s.stats;this.checkAppendProgress(s,a,n,l),this.hls&&(this.hls.trigger(T.FRAG_BUFFERED,{frag:s,part:a,stats:r,id:s.type,chunkMeta:n}),!a&&s.gap&&r.retry&&this.log(`Nothing buffered for ${s.type} level: ${s.level} sn: ${s.sn} retries ${r.retry}`))},l).catch(i=>{this.warn(`Fragment buffered callback ${i.message}`),this.stepOperationQueue(this.sourceBufferTypes)})}onFragChanged(i,r){var s,a;let n=null==(s=this.hls)?void 0:s.config;if(!n)return;let{backBufferLength:l,frontBufferFlushThreshold:o}=n;this.trimBuffers(o,l,r.frag,r.previousFrag);let h=r.frag.elementaryStreams,{appendErrors:d}=this,u=null==(a=this.appendError)?void 0:a.sourceBufferName;Object.keys(h).forEach(i=>{h[i]&&(d[i]=0,i===u&&(this.appendError=void 0),"audio"===i||"video"===i?(d.audiovideo=0,"audiovideo"===u&&(this.appendError=void 0)):(d.audio=0,d.video=0,"audiovideo"!==u&&(this.appendError=void 0)))})}get bufferedToEnd(){return this.sourceBufferCount>0&&!this.sourceBuffers.some(([i])=>{if(i){let r=this.tracks[i];if(r)return!r.ended||r.ending}return!1})}onBufferEos(i,r){var s;this.sourceBuffers.forEach(([i])=>{if(i){let s=this.tracks[i];(!r.type||r.type===i)&&(s.ending=!0,s.ended||(s.ended=!0,this.log(`${i} buffer reached EOS`)))}});let a=(null==(s=this.overrides)?void 0:s.endOfStream)!==!1;this.sourceBufferCount>0&&!this.sourceBuffers.some(([i])=>{var r;return i&&!(null!=(r=this.tracks[i])&&r.ended)})?(this.unblockAudio(),a?(this.log("Queueing EOS"),this.blockUntilOpen(()=>{this.tracksEnded();let{mediaSource:i}=this;if((null==i?void 0:i.readyState)!=="open"){i&&this.log(`Could not call mediaSource.endOfStream(). mediaSource.readyState: ${i.readyState}`);return}this.log("Calling mediaSource.endOfStream()"),i.endOfStream(),this.hls.trigger(T.BUFFERED_TO_END,void 0)})):(this.tracksEnded(),this.hls.trigger(T.BUFFERED_TO_END,void 0))):"video"===r.type&&this.unblockAudio()}tracksEnded(){this.sourceBuffers.forEach(([i])=>{if(null!==i){let r=this.tracks[i];r&&(r.ending=!1)}})}onLevelUpdated(i,{details:r}){r.fragments.length&&(this.details=r,this.updateDuration())}updateDuration(){this.blockUntilOpen(()=>{let i=this.getDurationAndRange();i&&this.updateMediaSource(i)})}onError(i,r){if(r.details===E.BUFFER_APPEND_ERROR&&r.frag){var s;let i=null==(s=r.errorAction)?void 0:s.nextAutoLevel;m(i)&&i!==r.frag.level&&this.resetAppendErrors()}}getBackBufferEvictionTarget(i,r,s){let{media:a}=this;return a?this.fragmentTracker.getBackBufferEvictionEnd(a.currentTime,s,r):0}getFragmentAppendProgress(i){var r;let s=aS(i),a=this.fragmentAppendProgress[s];return(null==(r=a)?void 0:r.stats)!==i.stats&&(a={stats:i.stats,progressed:!1,errored:!1,fullyBuffered:Object.create(null)},this.fragmentAppendProgress[s]=a),a}checkAppendProgress(i,r,s,a){if(r||!_(i)||i.gap||s.iframe||s.partial)return;let n=aS(i),l=this.fragmentAppendProgress[n];delete this.fragmentAppendProgress[n];let o=i.stats.buffering;if(o.start&&!o.first)return;let h=(null==l?void 0:l.stats)===i.stats?l:void 0;if(null!=h&&h.errored)return;let d=a.length>0&&a.every(i=>(null==h?void 0:h.fullyBuffered[i])===!0);if(null!=h&&h.progressed||d)return void delete this.appendsWithoutProgress[n];if(!h&&0===a.length)return;let u=(this.appendsWithoutProgress[n]||0)+1,f=this.hls;u>=f.config.appendErrorMaxRetry?delete this.appendsWithoutProgress[n]:this.appendsWithoutProgress[n]=u,this.warn(`Fragment ${i.sn} of ${i.type} playlist ${i.level} appended ${u} time${u>1?"s":""} without buffered range growth`),f.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_APPEND_NO_PROGRESS,fatal:!1,frag:i,chunkMeta:s,parent:i.type,appendsWithoutProgress:u,error:Error(`Fragment append did not increase buffered coverage (${u})`)})}resetAppendProgress(){this.fragmentAppendProgress=Object.create(null),this.appendsWithoutProgress=Object.create(null)}resetAppendErrors(){this.appendErrors={audio:0,video:0,audiovideo:0},this.appendError=void 0}trimBuffers(i,r,s,a){let{hls:n,details:l,media:o}=this;if(!o||null===l||!this.sourceBufferCount)return;let h=n.config,d=o.currentTime,u=l.levelTargetDuration;r=l.live&&null!==h.liveBackBufferLength?h.liveBackBufferLength:r;let f=-1/0;if(m(r)&&r>=0){let i=Math.max(r,u);
27f=Math.floor(d/u)*u-i}if(s){let i=this.getLoopBackBufferFlushEnd(s,null==a?null:a);i>0&&(f=Math.max(f,i))}if(f>0&&this.flushBackBuffer(d,u,f),m(i)&&i>0){let r=Math.max(Math.max(h.maxBufferLength,i),u),s=Math.floor(d/u)*u+r;this.flushFrontBuffer(d,u,s)}}getLoopBackBufferFlushEnd(i,r){var s;let{media:a}=this;if((null==(s=this.hls)?void 0:s.config.loopBackBufferFlush)===!1||!(null!=a&&a.loop)||!r||i.level<=r.level)return 0;let{video:n,audiovideo:l}=i.elementaryStreams;if(null!=n&&n.partial||null!=l&&l.partial)return 0;let o=this.getEarliestElementaryStreamStart(i)-.25;return o<=0?0:(this.log(`Flushing lower quality back buffer for loop: level ${i.level}, range [0-${o.toFixed(3)}]`),o)}getEarliestElementaryStreamStart(i){let{audio:r,video:s,audiovideo:a}=i.elementaryStreams,n=i.start;return a?n=Math.min(n,a.startDTS):(r&&(n=Math.min(n,r.startDTS)),s&&(n=Math.min(n,s.startDTS))),n}flushBackBuffer(i,r,s){this.sourceBuffers.forEach(([i,r])=>{if(r){let o=iK.getBuffered(r);if(o.length>0&&s>o.start(0)){var a,n,l;this.hls.trigger(T.BACK_BUFFER_REACHED,{bufferEnd:s});let r=this.tracks[i];if(null!=(a=this.details)&&a.live)this.hls.trigger(T.LIVE_BACK_BUFFER_REACHED,{bufferEnd:s});else if(null!=r&&r.ended&&!(null!=(n=this.media)&&n.loop&&(null==(l=this.hls)?void 0:l.config.loopBackBufferFlush)!==!1))return void this.log(`Cannot flush ${i} back buffer while SourceBuffer is in ended state`);this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:s,type:i})}}})}flushFrontBuffer(i,r,s){this.sourceBuffers.forEach(([r,a])=>{if(a){let n=iK.getBuffered(a),l=n.length;if(l<2)return;let o=n.start(l-1),h=n.end(l-1);s>o||i>=o&&i<=h||this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:o,endOffset:1/0,type:r})}})}getDurationAndRange(){var i;let{details:r,mediaSource:s}=this;if(!r||!this.media||(null==s?void 0:s.readyState)!=="open")return null;let a=r.edge;if(r.live&&this.hls.config.liveDurationInfinity){if(r.fragments.length&&s.setLiveSeekableRange){let i=Math.max(0,r.fragmentStart);return{duration:1/0,start:i,end:Math.max(i,a)}}return{duration:1/0}}let n=null==(i=this.overrides)?void 0:i.duration;if(n)return m(n)?{duration:n}:null;let l=this.media.duration;return a>(m(s.duration)?s.duration:0)&&a>l||!m(l)?{duration:a}:null}updateMediaSource({duration:i,start:r,end:s}){let a=this.mediaSource;a&&this.media&&"open"===a.readyState&&(a.duration!==i&&(m(i)&&this.log(`Updating MediaSource duration to ${i.toFixed(3)}`),a.duration=i),void 0!==r&&void 0!==s&&(this.log(`MediaSource duration is set to ${a.duration}. Setting seekable range to ${r}-${s}.`),a.setLiveSeekableRange(r,s)))}get tracksReady(){let i=this.pendingTrackCount;return i>0&&(i>=this.bufferCodecEventsTotal||this.isPending(this.tracks.audiovideo))}checkPendingTracks(){let{bufferCodecEventsTotal:i,pendingTrackCount:r,tracks:s}=this;if(this.log(`checkPendingTracks (pending: ${r} codec events expected: ${i}) ${t7(s)}`),this.tracksReady){var a;let i=null==(a=this.transferData)?void 0:a.tracks;i&&Object.keys(i).length?this.attachTransferred():this.createSourceBuffers()}}bufferCreated(){if(this.sourceBufferCount){let i={};this.sourceBuffers.forEach(([r,s])=>{if(r){let a=this.tracks[r];i[r]={buffer:s,container:a.container,codec:a.codec,supplemental:a.supplemental,levelCodec:a.levelCodec,id:a.id,metadata:a.metadata}}}),this.hls.trigger(T.BUFFER_CREATED,{tracks:i}),this.log(`SourceBuffers created. Running queue: ${this.operationQueue}`),this.sourceBuffers.forEach(([i])=>{this.executeNext(i)})}else{let i=Error("could not create source buffer for media codec(s)");this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_INCOMPATIBLE_CODECS_ERROR,fatal:!0,error:i,reason:i.message})}}createSourceBuffers(){let{tracks:i,sourceBuffers:r,mediaSource:s}=this;if(!s)throw Error("createSourceBuffers called when mediaSource was null");for(let n in i){let l=i[n];if(this.isPending(l)){let i=this.getTrackCodec(l,n),o=`${l.container};codecs=${i}`;l.codec=i,this.log(`creating sourceBuffer(${o})${this.currentOp(n)?" Queued":""} ${t7(l)}`);try{let i=s.addSourceBuffer(o);r[aE(n)]=[n,i],l.buffer=i}catch(i){var a;this.error(`error while trying to add sourceBuffer: ${i.message}`),this.shiftAndExecuteNext(n),null==(a=this.operationQueue)||a.removeBlockers(),delete this.tracks[n],this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_ADD_CODEC_ERROR,fatal:!1,error:i,sourceBufferName:n,mimeType:o,parent:l.id});return}this.trackSourceBuffer(n,l)}}this.bufferCreated()}clearBufferAppendTimeoutId(i){i&&(self.clearTimeout(i.bufferAppendTimeoutId),i.bufferAppendTimeoutId=void 0)}
27getTrackCodec(i,r){let s=i.supplemental,a=i.codec;s&&("video"===r||"audiovideo"===r)&&tB(s,"video")&&(a=function(i,r){let s=[];if(i){let r=i.split(",");for(let i=0;i<r.length;i++)t$(r[i],"video")||s.push(r[i])}return r&&s.push(r),s.join(",")}(a,s));let n=tq(a,i.levelCodec);return n?"audio"===r.slice(0,5)?tj(n,this.appendSource):n:""}trackSourceBuffer(i,r){let s=r.buffer;if(!s)return;let a=this.getTrackCodec(r,i);this.tracks[i]={buffer:s,codec:a,container:r.container,levelCodec:r.levelCodec,supplemental:r.supplemental,metadata:r.metadata,id:r.id,listeners:[]},this.removeBufferListeners(i),this.addBufferListener(i,"updatestart",this.onSBUpdateStart),this.addBufferListener(i,"updateend",this.onSBUpdateEnd),this.addBufferListener(i,"error",this.onSBUpdateError),this.appendSource&&this.addBufferListener(i,"bufferedchange",(i,r)=>{let s=r.removedRanges;null!=s&&s.length&&(this.log(`${i} buffer removed ${rj(s)}`),this.hls.trigger(T.BUFFER_FLUSHED,{type:i,start:s.start(0),end:s.end(s.length-1)}))})}get mediaSrc(){var i,r;let s=(null==(i=this.media)||null==(r=i.querySelector)?void 0:r.call(i,"source"))||this.media;return null==s?void 0:s.src}onSBUpdateStart(i){let r=this.currentOp(i);r&&r.onStart()}onSBUpdateEnd(i){var r,s;if((null==(r=this.mediaSource)?void 0:r.readyState)==="closed")return void this.resetBuffer(i);let a=this.currentOp(i);if(a){if(a.onComplete(),null!=(s=this.tracks[i])&&null!=(s=s.buffer)&&s.updating){this.log(`${i} SourceBuffer updating on "updateend"`),this.blockUntilOpen(()=>{this.shiftAndExecuteNext(i)});return}this.shiftAndExecuteNext(i)}}onSBUpdateError(i,r){var s;let a=null==(s=this.mediaSource)?void 0:s.readyState,n=Error(`${i} SourceBuffer error. MediaSource readyState: ${a}`);this.error(`${n.message}`,r),this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_APPENDING_ERROR,sourceBufferName:i,error:n,fatal:!1});let l=this.currentOp(i);l&&l.onError(n)}updateTimestampOffset(i,r,s,a,n,l){Math.abs(r-i.timestampOffset)>=s&&(this.log(`Updating ${a} SourceBuffer timestampOffset to ${r} (sn: ${n} cc: ${l})`),i.timestampOffset=r)}removeExecutor(i,r,s){let{media:a,mediaSource:n}=this,l=this.tracks[i],o=null==l?void 0:l.buffer;if(!a||!n||!o)throw Error(`Attempting to remove from the ${i} SourceBuffer, but it does not exist`);let h=m(a.duration)?a.duration:1/0,d=m(n.duration)?n.duration:1/0,u=Math.max(0,r);if(u>=d){var f;null==(f=this.currentOp(i))||f.onComplete(),this.shiftAndExecuteNext(i);return}let c=Math.min(s,h,d);if(c>u&&(!l.ending||l.ended))l.ended=!1,this.log(`Removing [${u},${c}] from the ${i} SourceBuffer`),o.remove(u,c);else throw Error(`Cannot remove ${c<=u?`invalid range (${u} >= ${c}) `:""}from the ${i} SourceBuffer${l.ending?" while track ending":""}`)}appendExecutor(i,r){let s=this.tracks[r],a=null==s?void 0:s.buffer;if(!a)throw new ap(`Attempting to append to the ${r} SourceBuffer, but it does not exist`);if(s.ending=!1,s.ended=!1,this.hls.config.appendTimeout!==1/0){let i=this.calculateAppendTimeoutTime(a);s.bufferAppendTimeoutId=self.setTimeout(()=>this.appendTimeoutHandler(r,a,i),i)}a.appendBuffer(i)}appendTimeoutHandler(i,r,s){this.log(`Received timeout after ${s}ms for append on ${i} source buffer. Aborting and triggering error.`);try{r.abort()}catch{this.log(`Failed to abort append on ${i} source buffer after timeout.`)}let a=this.currentOp(i);a&&a.onError(Error(`${i}-append-timeout`))}calculateAppendTimeoutTime(i){let r=10;this.details&&(r=this.details.levelTargetDuration);let s=2*r*1e3;if(null===this.media)return s;let a=iK.bufferInfo(i,this.media.currentTime,0);return a.len?(s=Math.max(1e3*a.len,s),Math.max(this.hls.config.appendTimeout,s)):s}blockUntilOpen(i){if(this.isUpdating()||this.isQueued())this.blockBuffers(i).catch(i=>{this.warn(`SourceBuffer blocked callback ${i}`),this.stepOperationQueue(this.sourceBufferTypes)});else try{i()}catch(i){this.warn(`Callback run without blocking ${this.operationQueue} ${i}`)}}isUpdating(){return this.sourceBuffers.some(([i,r])=>i&&r.updating)}isQueued(){return this.sourceBuffers.some(([i])=>i&&!!this.currentOp(i))}isPending(i){return!!i&&!i.buffer}isAudioBlocked(){var i;return(null==(i=this.currentOp("audio"))?void 0:i.label)==="block-audio"}isAudioBlocking(){return!!this.operationQueue&&this.operationQueue.audioBlocking()}blockBuffers(i,r=this.sourceBufferTypes){if(!r.length)return this.log("Blocking operation requested, but no SourceBuffers exist"),Promise.resolve().then(i);let{operationQueue:s}=this;return Promise.all(2===r.length&&this.isAudioBlocking()?[this.appendBlocker("video")]:r.map(i=>this.appendBlocker(i))).then(r=>
27{s===this.operationQueue&&(i(),this.stepOperationQueue(this.sourceBufferTypes))})}stepOperationQueue(i){i.forEach(i=>{var r;let s=null==(r=this.tracks[i])?void 0:r.buffer;!s||s.updating||"audio"===i&&this.isAudioBlocked()||this.shiftAndExecuteNext(i)})}append(i,r,s){this.operationQueue&&this.operationQueue.append(i,r,s)}insertNext(i,r){this.operationQueue&&this.operationQueue.insertNext(i,r)}appendBlocker(i){if(this.operationQueue)return this.operationQueue.appendBlocker(i)}currentOp(i){return this.operationQueue?this.operationQueue.current(i):null}executeNext(i){i&&this.operationQueue&&this.operationQueue.executeNext(i)}shiftAndExecuteNext(i){this.operationQueue&&this.operationQueue.shiftAndExecuteNext(i)}get pendingTrackCount(){return Object.keys(this.tracks).reduce((i,r)=>i+ +!!this.isPending(this.tracks[r]),0)}get sourceBufferCount(){return this.sourceBuffers.reduce((i,[r])=>i+ +!!r,0)}get sourceBufferTypes(){return this.sourceBuffers.map(([i])=>i).filter(i=>!!i)}addBufferListener(i,r,s){let a=this.tracks[i];if(!a)return;let n=a.buffer;if(!n)return;let l=s.bind(this,i);a.listeners.push({event:r,listener:l}),rH(n,r,l)}removeBufferListeners(i){let r=this.tracks[i];if(!r)return;let s=r.buffer;s&&(r.listeners.forEach(i=>{rV(s,i.event,i.listener)}),r.listeners.length=0)}};function ay(i){let r=i.querySelectorAll("source");[].slice.call(r).forEach(r=>{i.removeChild(r)})}function aE(i){return+("audio"===i)}function aT(i,r){return`${i?"":" - triggering recovery"}${r?" with HTMLMediaElement Error: "+r.message:""}`}function aS(i){return`${i.type}_${i.sn}_${i.level}`}function aA(i,r){let{start:s,end:a}=r,n=0;for(let r=0;r<i.length;r++){let l=i[r];if(l.start>=a)break;let o=Math.max(s,l.start),h=Math.min(a,l.end);h>o&&(n+=h-o)}return n}function aL(i,r){return r.duration-i<=.05}var aR=class i{constructor(i){this.hls=null,this.autoLevelCapping=void 0,this.media=void 0,this.restrictedLevels=void 0,this.timer=void 0,this.observer=void 0,this.clientRect=void 0,this.streamController=void 0,this.hls=i,this.autoLevelCapping=1/0,this.media=null,this.restrictedLevels=[],this.clientRect=null,this.registerListeners()}setStreamController(i){this.streamController=i}destroy(){this.hls&&this.unregisterListener(),(this.timer||this.observer)&&this.stopCapping(),this.media=this.clientRect=this.hls=null,this.streamController=void 0}registerListeners(){let{hls:i}=this;i&&(i.on(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),i.on(T.MEDIA_ATTA
27CHING,this.onMediaAttaching,this),i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.on(T.BUFFER_CODECS,this.onBufferCodecs,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this))}unregisterListener(){let{hls:i}=this;i&&(i.off(T.FPS_DROP_LEVEL_CAPPING,this.onFpsDropLevelCapping,this),i.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.off(T.BUFFER_CODECS,this.onBufferCodecs,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this))}onFpsDropLevelCapping(i,r){if(!this.hls)return;let s=this.hls.levels[r.droppedLevel];this.isLevelAllowed(s)&&this.restrictedLevels.push({bitrate:s.bitrate,height:s.height,width:s.width})}onMediaAttaching(i,r){let s=r.media;this.clientRect=null,this.hls&&(s instanceof HTMLVideoElement?(this.media=s,this.hls.config.capLevelToPlayerSize&&this.observe()):this.media=null,(this.timer||this.observer)&&this.hls.levels.length>1&&this.detectPlayerSize())}onManifestParsed(i,r){this.restrictedLevels=[],r.video&&this.startCapping(),this.onLevelsUpdated()}onLevelsUpdated(){if(this.hls){if((this.timer||this.observer)&&(m(this.autoLevelCapping)||this.clientRect))this.detectPlayerSize();else if(void 0===this.observer&&void 0===this.timer){let i=this.hls.levels;i.length>1&&i.some(i=>!!i.videoCodec)&&this.startCapping()}}}onBufferCodecs(i,r){r.video&&this.startCapping()}onMediaDetaching(){this.stopCapping(),this.media=null}detectPlayerSize(){if(this.media){if(this.mediaHeight<=0||this.mediaWidth<=0||!this.hls){this.clientRect=null;return}let i=this.hls.levels;if(i.length>1){let r=this.hls,s=this.getMaxLevel(i.length-1);s!==this.autoLevelCapping&&r.logger.log(`Setting autoLevelCapping to ${s}: ${i[s].height}p@${i[s].bitrate} for media ${this.mediaWidth}x${this.mediaHeight}`),r.autoLevelCapping=s,r.autoLevelEnabled&&r.autoLevelCapping>this.autoLevelCapping&&this.streamController&&this.streamController.nextLevelSwitch(),this.autoLevelCapping=r.autoLevelCapping}else 1===i.length&&this.stopCapping()}}getMaxLevel(r){if(!this.hls)return -1;let s=this.hls.levels;if(!s.length)return -1;let a=s.filter((i,s)=>this.isLevelAllowed(i)&&s<=r);return this.observer||(this.clientRect=null),i.getMaxLevelByMediaSize(a,this.mediaWidth,this.mediaHeight)}observe(){let i=self.ResizeObserver;i&&(this.observer=new i(i=>{var r;let s=null==(r=i[0])?void 0:r.contentRect;s&&(this.clientRect=s,this.detectPlayerSize())})),this.observer&&this.media&&this.observer.observe(this.media)}startCapping(){var i;this.timer||this.observer||!(null!=(i=this.hls)&&i.config.capLevelToPlayerSize)||(self.clearInterval(this.timer),this.timer=void 0,this.autoLevelCapping=1/0,this.observe(),this.observer||(this.timer=self.setInterval(this.detectPlayerSize.bind(this),1e3)),this.detectPlayerSize())}stopCapping(){this.restrictedLevels=[],this.autoLevelCapping=1/0,this.timer&&(self.clearInterval(this.timer),this.timer=void 0),this.observer&&(this.observer.disconnect(),this.observer=void 0)}getDimensions(){if(this.clientRect)return this.clientRect;let i=this.media,r={width:0,height:0};if(i){let s=i.getBoundingClientRect();r.width=s.width,r.height=s.height,r.width||r.height||(r.width=s.right-s.left||i.width||0,r.height=s.bottom-s.top||i.height||0)}return this.clientRect=r,r}get mediaWidth(){return this.getDimensions().width*this.contentScaleFactor}get mediaHeight(){return this.getDimensions().height*this.contentScaleFactor}get contentScaleFactor(){let i=1;if(!this.hls)return i;let{ignoreDevicePixelRatio:r,maxDevicePixelRatio:s}=this.hls.config;if(!r)try{i=self.devicePixelRatio}catch{}return Math.min(i,s)}isLevelAllowed(i){return!this.restrictedLevels.some(r=>i.bitrate===r.bitrate&&i.width===r.width&&i.height===r.height)}static getMaxLevelByMediaSize(i,r,s){if(!(null!=i&&i.length))return -1;let a=(i,r)=>!r||i.width!==r.width||i.height!==r.height,n=i.length-1,l=Math.max(r,s);for(let r=0;r<i.length;r+=1){let s=i[r];if((s.width>=l||s.height>=l)&&a(s,i[r+1])){n=r;break}}return n}},ab=class i{constructor(r,s){Array.isArray(r)&&(r=r.map(r=>r instanceof i?r:new i(r))),this.value=r,this.params=s}},aI="Bare Item",ak=/[\x00-\x1f\x7f]+/,aD=class{constructor(i){this.description=i}};function aP(i,r,s){return Error(`failed to serialize "${Array.isArray(i)?JSON.stringify(i):i instanceof Map?"Map{}":i instanceof Set?"Set{}":"object"==typeof i?JSON.stringify(i):String(i)}" as ${r}`,{cause:s})}function a_(i){if(i<-0x38d7ea4c67fff||0x38d7ea4c67fff<i)throw aP(i,"Integer");return i.toString()}function aC(i){let r=i.description||i.toString().slice(7,-1);if(!1===/^([a-zA-Z*])([!#$%&'*+\-.^_`|~\w:/]*)$/.test(r))throw aP(r,"Token");return r}function ax(i){switch(typeof i){case"number":if(!m(i))throw aP(i,aI);return Number.isInteger(i)?a_(i):function(i){let r=function i(r,s){if(r<0)return-i(-r,s);let a=10**s;if(2220446049250313e-31>Math.abs(r*a%1-.5)){let i=Math.floor(r*a);
27return(i%2==0?i:i+1)/a}return Math.round(r*a)/a}(i,3);if(Math.floor(Math.abs(r)).toString().length>12)throw aP(i,"Decimal");let s=r.toString();return s.includes(".")?s:`${s}.0`}(i);case"string":if(ak.test(i))throw aP(i,"String");return`"${i.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`;case"symbol":return aC(i);case"boolean":if("boolean"!=typeof i)throw aP(i,"Boolean");return i?"?1":"?0";case"object":if(i instanceof Date)return`@${a_(i.getTime()/1e3)}`;if(i instanceof Uint8Array){if(!1===ArrayBuffer.isView(i))throw aP(i,"Byte Sequence");return`:${btoa(String.fromCharCode(...i))}:`}if(i instanceof aD)return aC(i);default:throw aP(i,aI)}}function aw(i){if(!1===/^[a-z*][a-z0-9\-_.*]*$/.test(i))throw aP(i,"Key");return i}function aM(i){return null==i?"":Object.entries(i).map(([i,r])=>!0===r?`;${aw(i)}`:`;${aw(i)}=${ax(r)}`).join("")}function aO(i){return i instanceof ab?`${ax(i.value)}${aM(i.params)}`:ax(i)}function aF(i,r){return function(i,r={whitespace:!0}){if("object"!=typeof i||!i)throw aP(i,"Dict");let s=i instanceof Map?i.entries():Object.entries(i),a=null!=r&&r.whitespace?" ":"";return Array.from(s).map(([i,r])=>{var s;r instanceof ab||(r=new ab(r));let a=aw(i);return!0===r.value?a+=aM(r.params):(a+="=",Array.isArray(r.value)?a+=(s=r,`(${s.value.map(aO).join(" ")})${aM(s.params)}`):a+=aO(r)),a}).join(`,${a}`)}(i,r)}var a$=["url"],aB=["version","eventTargets","sid","transmissionMode"],aU=["customData","headers"],aN=i=>i instanceof ab?new ab(Math.round(i.value),i.params):Math.round(i),aG=i=>Array.isArray(i)?i.map(aN):aN(i),aK=(i,r)=>{var s;let a;return Array.isArray(i)?i.map(i=>aK(i,r)):i instanceof ab&&"string"==typeof i.value?new ab(aK(i.value,r),i.params):(r.baseUrl&&(i=function(i,r){let s;try{s=new URL(i)}catch{return i}let a=new URL(r);if(s.origin!==a.origin)return i;let n=s.pathname.split("/").slice(1),l=a.pathname.split("/").slice(1,-1),o=Math.min(n.length,l.length);for(let i=0;i<o&&n[i]===l[i];i++)n.shift(),l.shift();for(;l.length;)l.shift(),n.unshift("..");return n.join("/")+s.search+s.hash}(i,(a="string"==typeof(s=r.baseUrl)?new URL(s):s).origin+a.pathname.substring(0,a.pathname.lastIndexOf("/")+1))),1===r.version?encodeURIComponent(i):i)},aH=i=>i instanceof ab?new ab(100*Math.round(i.value/100),i.params):100*Math.round(i/100),aV=i=>Array.isArray(i)?i.map(aH):aH(i),aj={br:aG,d:aG,bl:aV,dl:aV,mtp:aV,nor:(i,r)=>{let s=i;return r.version>=2&&(i instanceof ab&&"string"==typeof i.value?s=new ab([i]):"string"==typeof i&&(s=[i])),aK(s,r)},rtp:aV,tb:aG},aq=new Map([["ps","sta"],["pr","pr"],["c","cid"],["b","bg"],["bc","br"]]),aW="event",aY="request",az=["cen","e","h","ts"],aX="ab.bg.bl.br.bs.bsa.bsd.bsda.cdn.cid.cs.d.dfa.dl.ec.lab.lb.ltc.msd.mtp.nor.nr.ot.pb.pr.pt.rtp.sf.sid.sn.st.sta.su.tab.tb.tbl.tpb.v".split("."),aQ=/^[a-zA-Z0-9-.]+-[a-zA-Z0-9-.]+$/;function aZ(i){return aQ.test(i)}var aJ=new Set(aX);function a0(i){return aJ.has(i)||aZ(i)}var a1=["cmsdd","cmsds","rc","smrt","ttfb","ttfbb","ttlb","url"],a2=new Set(a1),a3=new Set(az),a4=new Set(["ab","bl","br","bsa","bsd","bsda","lab","lb","mtp","pb","tab","tb","tbl","tpb"]),a8=["bl","br","bs","cid","d","dl","mtp","nor","nrr","ot","pr","rtp","sf","sid","st","su","tb","v"],a5=new Set(a8);function a6(i){return a5.has(i)||aZ(i)}var a9=new Set(["ot","sf","st","e","sta"]),a7={[aW]:function(i){return a0(i)||a2.has(i)||a3.has(i)},[aY]:a0};function ne(i,r={}){let s={};if("object"!=typeof i||!i)return s;let a=r.version||i.v||2,n=r.reportingMode||aY,l=1===a?function(i){let r={};for(let[a,n]of Object.entries(i)){if(null==n){r[a]=n;continue}if("nor"===a){let i=(Array.isArray(n)?n:[n])[0];if(i instanceof ab){var s;r.nor=i.value,null!=(s=i.params)&&s.r&&(r.nrr=i.params.r)}else r.nor=i}else r[a]=a4.has(a)?function i(r,s){if(Array.isArray(r)){let a;return s&&(a=r.find(i=>{var r;return(null==(r=i.params)?void 0:r.ot)===s})),a||(a=r[0]),i(a)}return r instanceof ab?r.value:r}(n,i.ot):n}return r}(i):i,o=1===a?a6:a7[n],h=Object.keys(l).filter(o);l.e&&"rr"!==l.e&&(h=h.filter(i=>!a2.has(i)));let d=r.filter;"function"==typeof d&&(h=h.filter(d));let u=n===aW;if(u){let i=l.e;h.includes("e")||null==i||h.push("e"),h.includes("ts")||h.push("ts"),h.includes("cen")||null==l.cen||"ce"!==i||h.push("cen");let r=i?aq.get(i):void 0;r&&null!=l[r]&&!h.includes(r)&&h.push(r)}if(0===h.length)return s;a>1&&!h.includes("v")&&h.push("v");let f={version:a,reportingMode:n,baseUrl:r.baseUrl};for(let i of(h.sort(),h)){var c,g,p;let n=l[i],o=null==(c=null==(g=r.formatters)?void 0:g[i])?aj[i]:c;if("function"==typeof o&&(n=o(n,f)),"v"===i){if(1===a)continue;n=a}if("pr"===i&&1===n&&!(u&&"pr"===l.e))continue;u&&"ts"===i&&!m(n)&&(n=Date.now());let h=u&&!1===n&&"bg"===i&&"b"===l.e;(("number"==typeof(p=n)?m(p):null!=p&&""!==p&&!1!==p)||h)&&(a9.has(i)&&"string"==typeof n&&(n=new aD(n)),s[i]=n)}return s}var nt="CMCD-Object",ni="CMCD-Request",nr="CMCD-Session",ns="CMCD-Status",na={ab:nt,br:nt,d:nt,lab:nt,lb:nt,ot:nt,tab:nt,tb:nt,tpb:nt,bl:ni,cs:ni,dfa:ni,dl:ni,ltc:ni,mtp:ni,nor:ni,nrr:ni,pb:ni,sn:ni,sta:ni,su:ni,tbl:ni,cid:nr,msd:nr,sf:nr,sid:nr,st:nr,v:nr,bg:ns,bs:ns,bsa:ns,bsd:ns,bsda:ns,cdn:ns,ec:ns,nr:ns,pr:ns,pt:ns,rtp:ns},nn="CMCD";function nl(i){return aF(i,{whitespace:!1})}var no=[...a8,...aX,...a1,...az].filter((i,r,s)=>s.indexOf(i)===r),nh="query",nd="headers";function nu(i,r,s){var a;let n=new Set(null==(a=r.enabledKeys)?[]:a);return{version:r.version||2,reportingMode:i,filter:i=>n.has(i),baseUrl:s}}var nf=Object.is,nc=i=>i,ng=Array.from(aq,([i,r])=>"br"===r?{event:i,field:r,equal:(i,r)=>void 0===i||void 0===r?i===r:function(i,r){if(i===r)return!0;
27if(i.length!==r.length)return!1;for(let s=0;s<i.length;s++){let a=i[s],n=r[s];if(a===n)continue;if("number"==typeof a||"number"==typeof n||a.value!==n.value)return!1;let l=a.params,o=n.params,h=l&&Object.keys(l)[0],d=o&&Object.keys(o)[0];if(h!==d||void 0!==h&&void 0!==d&&l&&o&&l[h]!==o[d])return!1}return!0}(i,r),snapshot:i=>i.slice()}:{event:i,field:r,equal:nf,snapshot:nc}),nm=new Map(ng.map(i=>[i.event,i]));function np(i){let{url:r}=i;return fetch(r,B(i,a$))}var nv=class{constructor(i,r=np){var s;for(let a of(this.timeOrigin=performance.timeOrigin||(null==(s=performance.timing)?void 0:s.fetchStart)||Date.now()-performance.now(),this.data={},this.msd=NaN,this.eventTargets=new Map,this.lastEmitted={},this.requestTarget={sn:0,msdSent:!1},this.config=function(i){let{version:r=2,eventTargets:s=[],sid:a=eo(),transmissionMode:n=nh}=i;return $($({},B(i,aB)),{},{version:r,transmissionMode:n,sid:a,eventTargets:s.reduce((i,r)=>{var s,a,n;return null!=r&&r.url&&null!=(s=r.events)&&s.length&&i.push({version:r.version||2,enabledKeys:(null==(a=r.enabledKeys)?void 0:a.slice())||[],url:r.url,events:r.events.slice(),interval:null==(n=r.interval)?30:n,batchSize:r.batchSize||1}),i},[])})}(i),this.data={cid:this.config.cid,sid:this.config.sid,v:this.config.version},this.requester=r,this.config.eventTargets))this.eventTargets.set(a,{intervalId:void 0,sn:0,msdSent:!1,queue:[]})}start(){this.eventTargets.forEach((i,r)=>{if(this.disarmInterval(i),0===r.interval||!r.events.includes("t"))return;let s=()=>{this.recordTargetEvent(i,r,"t"),this.processEventTargets()};i.intervalId=setInterval(s,1e3*r.interval),s()})}stop(i=!1){i&&this.flush(),this.eventTargets.forEach(i=>{this.disarmInterval(i)})}flush(){this.processEventTargets(!0)}update(i){for(let r of(i.sid&&i.sid!==this.data.sid&&this.resetSession(),i.msd&&!isNaN(i.msd)&&(this.msd=i.msd),this.data=$($($({},this.data),i),{},{msd:void 0}),ng))r.field in i&&!r.equal(this.data[r.field],this.lastEmitted[r.field])&&this.recordEvent(r.event)}recordEvent(i,r={}){let s=nm.get(i);if(s){let i=s.field,a=r[i];void 0!==a&&O(this.data,{[i]:a});let n=this.data[i];if(void 0===n||s.equal(n,this.lastEmitted[i]))return;O(this.lastEmitted,{[i]:s.snapshot(n)})}this.eventTargets.forEach((s,a)=>{this.recordTargetEvent(s,a,i,r)}),this.processEventTargets()}recordTargetEvent(i,r,s,a={}){var n;if(!r.events.includes(s))return;let l=$($($({},this.data),a),{},{e:s,ts:null==(n=a.ts)?Date.now():n,sn:i.sn++});isNaN(this.msd)||i.msdSent||(l.msd=this.msd,i.msdSent=!0),i.queue.push(l)}recordResponseReceived(i,r={}){var s,a,n;let{request:l}=i,o=null==(s=r.url)?null==l?void 0:l.url:s;if(!o)return;let h=new URL(o);h.searchParams.delete(nn);let d={url:h.toString(),rc:i.status},u=i.resourceTiming;u&&(null!=u.startTime&&(d.ts=Math.round(this.timeOrigin+u.startTime),null!=u.responseStart&&(d.ttfb=Math.round(u.responseStart-u.startTime))),null!=u.duration&&(d.ttlb=Math.round(u.duration)));let f=null==(a=null==(n=l.customData)?void 0:n.cmcd)?{}:a;this.recordEvent("rr",$($($({},f),d),r))}applyRequestReport(i){var r;return null==(r=this.createRequestReport(i))?i:r}isRequestReportingEnabled(){var i;return!!(null!=(i=this.config.enabledKeys)&&i.length)}createRequestReport(i,r){var s;let{customData:a={},headers:n={}}=i,l=$($({},B(i,aU)),{},{headers:$({},n),customData:$($({},a),{},{cmcd:{}})});if(!(null!=(s=this.config.enabledKeys)&&s.length)||!l.url)return l;let o=new URL(l.url),h=$($($({},this.data),r),{},{sn:this.requestTarget.sn++}),d=nu(aY,this.config,l.url);isNaN(this.msd)||this.requestTarget.msdSent||(h.msd=this.msd,this.requestTarget.msdSent=!0);let u=l.customData.cmcd=ne(h,d);switch(this.config.transmissionMode){case nh:let f=nl(u);f&&(o.searchParams.set(nn,f),l.url=o.toString());break;case nd:O(l.headers,function(i,r){let s={};for(let[a,n]of Object.entries(function(i,r){var s;let a={};if(!i)return a;let n=Object.keys(i),l=r?Object.keys(r).reduce((i,s)=>{var a;return null==(a=r[s])||a.forEach(r=>i[r]=s),i},{}):{};for(let r of n){let n=na[r]||l[r]||ni;(null==(s=a[n])?a[n]={}:s)[r]=i[r]}return a}(i,r))){let i=aF(n,{whitespace:!1});i&&(s[a]=i)}return s}
27(u,d.customHeaderMap))}return l}processEventTargets(i=!1){let r=!1;this.eventTargets.forEach((s,a)=>{let{queue:n}=s;if(!n.length||n.length<a.batchSize&&!i)return;let l=i?n.length:a.batchSize,o=n.splice(0,l);this.sendEventReport(a,o).catch(()=>{s.queue.unshift(...o)}),r||(r=n.length>0)}),r&&this.processEventTargets()}async sendEventReport(i,r){let s=nu(aW,i),{status:a}=await this.requester({url:i.url,method:"POST",headers:{"Content-Type":"application/cmcd"},body:r.map(i=>(function(i,r={}){return i?nl(ne(i,r)):""})(i,s)).join("\n")+"\n"});if(410===a)this.disposeEventTarget(i);else if(429===a||a>499&&a<600)throw Error(`Event report failed with status ${a}`)}disarmInterval(i){clearInterval(i.intervalId),i.intervalId=void 0}disposeEventTarget(i){let r=this.eventTargets.get(i);r&&(this.disarmInterval(r),this.eventTargets.delete(i))}resetSession(){this.eventTargets.forEach(i=>i.sn=0),this.requestTarget.sn=0,this.lastEmitted={}}},ny=["includeKeys"];function nE(i){return Object.keys(i).every(aZ)}var nT=class{constructor(i){this.hls=void 0,this.config=void 0,this.media=void 0,this.initialized=!1,this.starved=!1,this.buffering=!0,this.playerState=void 0,this.reporter=void 0,this.playheadLevel=void 0,this.onWaiting=()=>{this.initialized&&(this.starved=!0,this.setPlayerState("r")),this.buffering=!0},this.onPlay=()=>{this.initialized||this.setPlayerState("s")},this.onPlaying=()=>{this.initialized||(this.initialized=!0),this.buffering=!1,this.setPlayerState("p")},this.onPause=()=>{this.media&&!this.media.ended&&this.setPlayerState("a")},this.onSeeking=()=>{this.initialized&&this.setPlayerState("k")},this.onSeeked=()=>{var i;this.initialized&&null!=(i=this.media)&&i.paused&&this.setPlayerState("a")},this.onRateChange=()=>{this.reporter&&this.media&&this.reporter.update({pr:this.media.playbackRate})},this.applyPlaylistData=i=>{try{this.apply(i,{ot:"m",su:!this.initialized})}catch(i){this.hls.logger.warn("Could not generate manifest CMCD data.",i)}},this.applyFragmentData=i=>{try{var r,s,a,n;let{frag:l,part:o}=i,h=this.hls.levels[l.level],d=this.getObjectType(l,h),u={d:1e3*(o||l).duration,ot:d};if("v"===d||"a"===d||"av"===d||null==d&&("main"===l.type||"audio"===l.type)){let i=h.bitrate/1e3;u.br=[i];let{cmcd:a}=this.config,n=null==(r=null==a?void 0:a.rtpSafetyFactor)?5:r;if(u.rtp=100*Math.round(i*n/100),"av"===d||null==d&&"main"===l.type){let i=this.getTopBandwidth()/1e3;m(i)&&(u.tb=[i]);let r=this.getLowestBandwidth()/1e3;m(r)&&(u.lb=[r])}let o=this.getBufferLength(l);if(m(o)){u.bl=[o];let i=(null==(s=this.media)?void 0:s.playbackRate)||1;u.dl=100*Math.round(o/i/100)}this.playheadLevel&&(u.pb=[this.playheadLevel.bitrate/1e3]);let f=this.hls.maxAutoLevel;if(f>=0){let i=this.hls.levels[f];i&&(u.tpb=[i.bitrate/1e3])}}let f=o?this.getNextPart(o):this.getNextFrag(l);null!=f&&f.url&&f.url!==l.url&&(u.nor=f.byteRange.length>0?[(a=f.url,n={r:`${f.byteRange[0]}-${f.byteRange[1]}`},new ab(a,n))]:[f.url]),this.apply(i,u)}catch(i){this.hls.logger.warn("Could not generate segment CMCD data.",i)}},this.recordFragmentResponse=(i,r,s)=>{var a;let{cmcd:n}=this.config,l=null==n||null==(a=n.eventTargets)?void 0:a.some(i=>{var r;return null==(r=i.events)?void 0:r.includes("rr")});if(!(!this.reporter||!(s.loading.first>0)||!l))try{this.reporter.recordResponseReceived({request:{url:i},status:r.code,resourceTiming:{startTime:s.loading.start,responseStart:s.loading.first,duration:s.loading.end-s.loading.start,encodedBodySize:s.total}})}catch(i){this.hls.logger.warn("Could not record fragment response CMCD data.",i)}},this.hls=i;let r=this.config=i.config,{cmcd:s}=r;null!=s&&(r.pLoader=this.createPlaylistLoader(),r.fLoader=this.createFragmentLoader(),this.registerListeners())}createReporter(){var i,r;let{cmcd:s}=this.config;if(null==s)return;
27let a=s.version||1;if(this.reporter=new nv({sid:s.sessionId||this.hls.sessionId,cid:s.contentId,version:a,transmissionMode:!0===s.useHeaders?nd:nh,enabledKeys:null==(i=s.includeKeys)?[...a>=2?no:a8]:i,eventTargets:(null==(r=s.eventTargets)?[]:r).map(i=>{let{includeKeys:r}=i;return $($({},B(i,ny)),{},{enabledKeys:null==r?no:r})})},s.loader),this.reporter.update({sf:"h",sta:this.playerState}),s.reporterCallback){let i=this.reporter;s.reporterCallback({updateCustomData:r=>{nE(r)&&i.update(r)},recordCustomEvent:(r,s={})=>{nE(s)&&i.recordEvent("ce",$({cen:r},s))}})}this.reporter.start()}registerListeners(){let i=this.hls;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.on(T.MEDIA_DETACHED,this.onMediaDetached,this),i.on(T.MEDIA_ENDED,this.onMediaEnded,this),i.on(T.ERROR,this.onError,this),i.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.on(T.LEVEL_SWITCHED,this.onLevelSwitched,this),i.on(T.BUFFER_APPENDED,this.onBufferInfoChange,this),i.on(T.BUFFER_FLUSHED,this.onBufferInfoChange,this)}unregisterListeners(){let i=this.hls;i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MEDIA_ATTA
27CHING,this.onMediaAttaching,this),i.off(T.MEDIA_DETACHED,this.onMediaDetached,this),i.off(T.MEDIA_ENDED,this.onMediaEnded,this),i.off(T.ERROR,this.onError,this),i.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.off(T.LEVEL_SWITCHED,this.onLevelSwitched,this),i.off(T.BUFFER_APPENDED,this.onBufferInfoChange,this),i.off(T.BUFFER_FLUSHED,this.onBufferInfoChange,this)}destroy(){this.unregisterListeners(),this.onMediaDetached(),this.reporter&&(this.reporter.stop(!0),this.reporter=void 0),this.hls=this.config=null,this.onWaiting=this.onPlay=this.onPlaying=this.onPause=null,this.onSeeking=this.onSeeked=this.onRateChange=this.media=null}onMediaAttaching(i,r){let s=this.media=r.media;this.setPlayerState(this.media.autoplay?"s":"d"),rH(s,"waiting",this.onWaiting),rH(s,"play",this.onPlay),rH(s,"playing",this.onPlaying),rH(s,"pause",this.onPause),rH(s,"seeking",this.onSeeking),rH(s,"seeked",this.onSeeked),rH(s,"ratechange",this.onRateChange)}onMediaDetached(){let i=this.media;i&&(rV(i,"waiting",this.onWaiting),rV(i,"play",this.onPlay),rV(i,"playing",this.onPlaying),rV(i,"pause",this.onPause),rV(i,"seeking",this.onSeeking),rV(i,"seeked",this.onSeeked),rV(i,"ratechange",this.onRateChange),this.media=null)}onMediaEnded(i,r){this.setPlayerState("e")}onManifestLoading(i,r){this.initialized=!1,this.starved=!1,this.buffering=!0,this.reporter&&(this.reporter.stop(!0),this.reporter=void 0),this.createReporter(),this.media||this.setPlayerState("d")}onError(i,r){r.fatal&&(this.setPlayerState("f"),this.reporter&&this.reporter.recordEvent("e",{ec:[r.details]}))}onLevelSwitching(i,r){var s;if(!this.reporter)return;let a={br:[r.bitrate/1e3]},n=null==(s=r.details)?void 0:s.fragments[0];n&&(a.ot=this.getObjectType(n,r)),this.reporter.recordEvent("bc",a)}onLevelSwitched(i,r){let s=this.hls.levels[r.level];s&&(this.playheadLevel=s)}setPlayerState(i){this.playerState=i,this.reporter&&this.reporter.update({sta:i})}getStreamType(){let i=this.hls.latestLevelDetails;if(i)return i.live?i.partList&&i.canBlockReload?"ll":"l":"v"}apply(i,r={}){var s;if(!this.reporter)return;this.reporter.update({mtp:[this.hls.bandwidthEstimate/1e3],pr:null==(s=this.media)?void 0:s.playbackRate,st:this.getStreamType()});let a="i"===r.ot||"v"===r.ot||"av"===r.ot;this.starved&&a&&(r.bs=!0,r.su=!0,this.starved=!1),null==r.su&&(r.su=this.buffering);let n=this.reporter.createRequestReport({url:i.url,headers:i.headers},r);i.url=n.url,i.headers=n.headers}getNextFrag(i){var r;let s=null==(r=this.hls.levels[i.level])?void 0:r.details;if(s){let r=i.sn-s.startSN;return s.fragments[r+1]}}getNextPart(i){var r;let{index:s,fragment:a}=i,n=null==(r=this.hls.levels[a.level])||null==(r=r.details)?void 0:r.partList;if(n){let{sn:i}=a;for(let r=n.length-1;r>=0;r--){let a=n[r];if(a.index===s&&a.fragment.sn===i)return n[r+1]}}}getObjectType(i,r){let{type:s}=i;if("subtitle"===s)return"tt";if("initSegment"===i.sn)return"i";if("audio"===s)return"a";if("main"===s){if(i.hasStreams){let r=i.elementaryStreams;if(r.audiovideo)return"av";if(r.video)return"v";if(r.audio)return"a"}if(r){let{audioCodec:i,videoCodec:s}=r;if(!this.hls.audioTracks.length){if(i&&s)return"av";if(i)return"a"}if(s)return"v"}}}getTopBandwidth(){let i=0,r=this.hls,s=r.maxAutoLevel,a=s>-1?s+1:r.levels.length;return r.levels.slice(0,a).forEach(r=>{r.bitrate>i&&(i=r.bitrate)}),i>0?i:NaN}getLowestBandwidth(){let i=1/0,r=this.hls,s=r.maxAutoLevel,a=s>-1?s+1:r.levels.length;return r.levels.slice(0,a).forEach(r=>{r.bitrate<i&&(i=r.bitrate)}),m(i)?i:NaN}getBufferLength(i){if(!this.media)return NaN;let r="audio"===i.type?this.hls.audioForwardBufferInfo:this.hls.mainForwardBufferInfo;return r?1e3*r.len:NaN}getEventBufferLength(){if(!this.media)return NaN;let i=this.hls.mainForwardBufferInfo,r=this.hls.audioForwardBufferInfo;if(i&&r)return 1e3*Math.min(i.len,r.len);let s=i||r;return s?1e3*s.len:NaN}onBufferInfoChange(i,r){if(!this.reporter)return;let s=this.getEventBufferLength();m(s)&&this.reporter.update({bl:[s]})}createPlaylistLoader(){let{pLoader:i}=this.config,r=this.applyPlaylistData,s=i||this.config.loader;return class{constructor(i){this.loader=void 0,this.loader=new s(i)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(i,s,a){r(i),this.loader.load(i,s,a)}}}createFragmentLoader(){let{fLoader:i}=this.config,r=this.applyFragmentData,s=this.recordFragmentResponse,a=i||this.config.loader;return class{constructor(i){this.loader=void 0,this.loader=new a(i)}get stats(){return this.loader.stats}get context(){return this.loader.context}destroy(){this.loader.destroy()}abort(){this.loader.abort()}load(i,a,n){r(i);let{onSuccess:l}=n;this.loader.load(i,a,$($({},n),{},{onSuccess:(r,a,n,o)=>{l(r,a,n,o),s(i.url,r,a)}}))}}}},nS=class extends X{constructor(i){super("content-steering",i.logger),this.hls=void 0,this.loader=null,this.uri=null,this.pathwayId=".",this._pathwayPriority=null,this.timeToLoad=300,this.reloadTimer=-1,this.updated=0,this.started=!1,this.enabled=!0,this.levels=null,this.audioTracks=null,this.subtitleTracks=null,this.penalizedPathways={},this.hls=i,this.registerListeners()}registerListeners(){let i=this.hls;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let i=this.hls;i&&(i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.ERROR,this.onError,this))}pathways(){return(this.levels||[]).reduce((i,r)=>(-1===i.indexOf(r.pathwayId)&&i.push(r.pathwayId),i),[])}get pathwayPriority(){return this._pathwayPriority}set pathwayPriority(i){this.updatePathwayPriority(i)}
27startLoad(){if(this.started=!0,this.clearTimeout(),this.enabled&&this.uri){if(this.updated){let i=1e3*this.timeToLoad-(performance.now()-this.updated);if(i>0)return void this.scheduleRefresh(this.uri,i)}this.loadSteeringManifest(this.uri)}}stopLoad(){this.started=!1,this.loader&&(this.loader.destroy(),this.loader=null),this.clearTimeout()}clearTimeout(){-1!==this.reloadTimer&&(self.clearTimeout(this.reloadTimer),this.reloadTimer=-1)}destroy(){this.unregisterListeners(),this.stopLoad(),this.hls=null,this.levels=this.audioTracks=this.subtitleTracks=null}removeLevel(i){let r=this.levels;r&&(this.levels=r.filter(r=>r!==i))}onManifestLoading(){this.stopLoad(),this.enabled=!0,this.timeToLoad=300,this.updated=0,this.uri=null,this.pathwayId=".",this.levels=this.audioTracks=this.subtitleTracks=null}onManifestLoaded(i,r){let{contentSteering:s}=r;null!==s&&(this.pathwayId=s.pathwayId,this.uri=s.uri,this.started&&this.startLoad())}onManifestParsed(i,r){this.audioTracks=r.audioTracks,this.subtitleTracks=r.subtitleTracks}onError(i,r){let{errorAction:s}=r;if((null==s?void 0:s.action)===2&&1&s.flags){let i=this.levels,a=this._pathwayPriority,n=this.pathwayId;if(r.context){let{groupId:s,pathwayId:a,type:l}=r.context;s&&i?n=this.getPathwayForGroupId(s,l,n):a&&(n=a)}n in this.penalizedPathways||(this.penalizedPathways[n]=performance.now()),!a&&i&&(a=this.pathways()),a&&a.length>1&&(this.updatePathwayPriority(a),s.resolved=this.pathwayId!==n,!s.resolved&&(r.details!==E.BUFFER_APPEND_ERROR||r.fatal)&&this.warn(`Could not resolve ${r.details} ("${r.error.message}") with content-steering for Pathway: ${n} levels: ${i&&i.length} priorities: ${t7(a)} penalized: ${t7(this.penalizedPathways)}`))}}filterParsedLevels(i){this.levels=i;let r=this.getLevelsForPathway(this.pathwayId);if(0===r.length){let s=i[0].pathwayId;this.log(`No levels found in Pathway ${this.pathwayId}. Setting initial Pathway to "${s}"`),r=this.getLevelsForPathway(s),this.pathwayId=s}return r.length!==i.length&&this.log(`Found ${r.length}/${i.length} levels in Pathway "${this.pathwayId}"`),r}getLevelsForPathway(i){return null===this.levels?[]:this.levels.filter(r=>i===r.pathwayId)}updatePathwayPriority(i){this._pathwayPriority=i;let r,s=this.penalizedPathways,a=performance.now();Object.keys(s).forEach(i=>{a-s[i]>3e5&&delete s[i]});for(let a=0;a<i.length;a++){let n=i[a];if(n in s)continue;if(n===this.pathwayId)return;let l=this.hls.nextLoadLevel,o=this.hls.levels[l];if((r=this.getLevelsForPathway(n)).length>0){this.log(`Setting Pathway to "${n}"`),this.pathwayId=n,r$(r),this.hls.trigger(T.LEVELS_UPDATED,{levels:r});let i=this.hls.levels[l];o&&i&&this.levels&&(i.attrs["STABLE-VARIANT-ID"]!==o.attrs["STABLE-VARIANT-ID"]&&i.bitrate!==o.bitrate&&this.log(`Unstable Pathways change from bitrate ${o.bitrate} to ${i.bitrate}`),this.hls.nextLoadLevel=l);break}}}getPathwayForGroupId(i,r,s){let a=this.getLevelsForPathway(s).concat(this.levels||[]);for(let s=0;s<a.length;s++)if(r===R.AUDIO_TRACK&&a[s].hasAudioGroup(i)||r===R.SUBTITLE_TRACK&&a[s].hasSubtitleGroup(i))return a[s].pathwayId;return s}clonePathways(i){let r=this.levels;if(!r)return;let s={},a={};i.forEach(i=>{let{ID:n,"BASE-ID":l,"URI-REPLACEMENT":o}=i;if(r.some(i=>i.pathwayId===n))return;let h=this.getLevelsForPathway(l).map(i=>{let r=new iz(i.attrs);r["PATHWAY-ID"]=n;let l=r.AUDIO&&`${r.AUDIO}_clone_${n}`,h=r.SUBTITLES&&`${r.SUBTITLES}_clone_${n}`;l&&(s[r.AUDIO]=l,r.AUDIO=l),h&&(a[r.SUBTITLES]=h,r.SUBTITLES=h);let d=nL(i.uri,r["STABLE-VARIANT-ID"],"PER-VARIANT-URIS",o),u=new t6({attrs:r,audioCodec:i.audioCodec,bitrate:i.bitrate,height:i.height,name:i.name,url:d,videoCodec:i.videoCodec,width:i.width});if(i.audioGroups)for(let r=1;r<i.audioGroups.length;r++)u.addGroupId("audio",`${i.audioGroups[r]}_clone_${n}`);if(i.subtitleGroups)for(let r=1;r<i.subtitleGroups.length;r++)u.addGroupId("text",`${i.subtitleGroups[r]}_clone_${n}`);return u});r.push(...h),nA(this.audioTracks,s,o,n),nA(this.subtitleTracks,a,o,n)})}loadSteeringManifest(i){let r,s=this.hls.config,a=s.loader;this.loader&&this.loader.destroy(),this.loader=new a(s);try{r=new self.URL(i)}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest URI: ${i}`);return}if("data:"!==r.protocol){let i=0|(this.hls.bandwidthEstimate||s.abrEwmaDefaultEstimate);t2(r,"_HLS_pathway",this.pathwayId),t2(r,"_HLS_throughput",""+i)}let n={type:R.STEERING_MANIFEST,responseType:"json",url:r.href},l=s.steeringManifestLoadPolicy.default,o=l.errorRetry||l.timeoutRetry||{},h={loadPolicy:l,timeout:l.maxLoadTimeMs,maxRetry:o.maxNumRetry||0,retryDelay:o.retryDelayMs||0,maxRetryDelay:o.maxRetryDelayMs||0};this.log(`Requesting steering manifest: ${r}`),this.loader.load(n,h,{onSuccess:(i,s,a,n)=>{this.log(`Loaded steering manifest: "${r}"`);let l=i.data;if((null==l?void 0:l.VERSION)!==1)return void this.log(`Steering VERSION ${l.VERSION} not supported!`);this.updated=performance.now(),this.timeToLoad=l.TTL;let{"RELOAD-URI":o,"PATHWAY-CLONES":h,"PATHWAY-PRIORITY":d}=l;if(o)try{this.uri=new self.URL(o,r).href}catch{this.enabled=!1,this.log(`Failed to parse Steering Manifest RELOAD-URI: ${o}`);return}this.scheduleRefresh(this.uri||a.url),h&&this.clonePathways(h);let u={steeringManifest:l,url:r.toString()};this.hls.trigger(T.STEERING_MANIFEST_LOADED,u),d&&this.updatePathwayPriority(d)},onError:(i,r,s,a)=>
27{if(this.log(`Error loading steering manifest: ${i.code} ${i.text} (${r.url})`),this.stopLoad(),410===i.code){this.enabled=!1,this.log(`Steering manifest ${r.url} no longer available`);return}let n=1e3*this.timeToLoad;if(429===i.code){let i=this.loader;if("function"==typeof(null==i?void 0:i.getResponseHeader)){let r=i.getResponseHeader("Retry-After");r&&(n=1e3*parseFloat(r))}this.log(`Steering manifest ${r.url} rate limited`);return}this.scheduleRefresh(this.uri||r.url,n)},onTimeout:(i,r,s)=>{this.log(`Timeout loading steering manifest (${r.url})`),this.scheduleRefresh(this.uri||r.url)}})}scheduleRefresh(i,r=1e3*this.timeToLoad){this.clearTimeout(),this.reloadTimer=self.setTimeout(()=>{var r;let s=null==(r=this.hls)?void 0:r.media;s&&!s.ended?this.loadSteeringManifest(i):this.scheduleRefresh(i,1e3*this.timeToLoad)},r)}};function nA(i,r,s,a){i&&Object.keys(r).forEach(n=>{let l=i.filter(i=>i.groupId===n).map(i=>{let l=O({},i);return l.details=void 0,l.attrs=new iz(l.attrs),l.url=l.attrs.URI=nL(i.url,i.attrs["STABLE-RENDITION-ID"],"PER-RENDITION-URIS",s),l.groupId=l.attrs["GROUP-ID"]=r[n],l.attrs["PATHWAY-ID"]=a,l});i.push(...l)})}function nL(i,r,s,a){if(r){let{[s]:i}=a;if(i){let s=i[r];if(s)return s}}let{HOST:n,PARAMS:l}=a,o=new self.URL(i);return n&&(o.hostname=n),l&&Object.keys(l).sort().forEach(i=>{i&&t2(o,i,l[i])}),o.href}var nR=class{constructor(){this.status="initialized",this.requestErrors=[],this.licenseXhr=void 0,this.onmessage=void 0,this.onkeystatuseschange=void 0,this.emitter=new st,this.error=void 0,this.ok=void 0}get errored(){return this.error}set errored(i){this.error=i,this.emitter.eventNames().length&&this.emitter.emit("error",i)}get hasListeners(){return this.emitter.eventNames().length>0}get resolved(){return this.ok}resolve(){this.ok=!0,this.emitter.emit("resolved")}get useable(){return this.ok?Promise.resolve():this.error?Promise.reject(this.error):new Promise((i,r)=>{this.emitter.on("error",r),this.emitter.on("resolved",i)})}reset(){this.emitter.removeAllListeners();let i=this.licenseXhr;i&&(i.readyState!==XMLHttpRequest.DONE&&i.abort(),this.licenseXhr=void 0),this.onmessage=this.onkeystatuseschange=void 0}},nb=class extends Error{constructor(i,r){super(r),this.data=void 0,i.error||(i.error=Error(r)),this.data=i,i.err=i.error}},nI=class i extends X{constructor(r){super("eme",r.logger),this.hls=void 0,this.config=void 0,this.media=null,this.mediaResolved=void 0,this.keyFormatPromise=null,this.keySystemAccessPromises={},this.sessionSetupByUri={},this.mediaKeySessions=[],this.activeKeys={},this.mediaKeys=null,this.setMediaKeysQueue=i.CDMCleanupPromise?[i.CDMCleanupPromise]:[],this.onMediaEncrypted=i=>{let{initDataType:r,initData:s}=i,a=`"${i.type}" event: init data type: "${r}"`;if(this.log(a),null!==s){if(!this.keyFormatPromise){let i=Object.keys(this.keySystemAccessPromises);i.length||(i=rl(this.config));let r=i.map(rn).filter(i=>!!i);this.keyFormatPromise=this.getKeyFormatPromise(r)}this.keyFormatPromise.then(n=>{var l,o,h;let d,u,f=rs(n),c=this.activeLevelKeys();if(f===i6&&"sinf"===r)try{let i=eS(new Uint8Array(s)),r=tv(eT(JSON.parse(i).sinf));if(!r)throw Error("'schm' box missing or not cbcs/cenc with schi > tenc");u=new Uint8Array(r.subarray(8,24))}catch(i){this.warn(`${a} Failed to parse sinf: ${i}`);return}else if(f===i9)u=rh(new Uint8Array(s));else if(f===i7){let i=tR(s).filter(i=>i.systemId===ra);if(i.length){let r=i[0];u=null!=(l=r.kids)&&l.length?r.kids[0]:null}}if(u){let i=ey(u);for(let a=0;a<c.length;a++){let n=c[a];if(n.keyId&&(iZ(u,n.keyId)||-1!==n.uri.replace(/-/g,"").indexOf(i))){n.pssh||(n.scheme=r,n.pssh=new Uint8Array(s),n.keyId=u,ru.setKeyIdForUri(n.uri,u)),d=this.getSessionForKey(n,"encrypted-event-key-match");break}}}if(!d){if(c.length)return(o=c[0]).scheme||(o.scheme=r),(h=c[0]).pssh||(h.pssh=new Uint8Array(s)),this.getSessionForKey(c[0],"encrypted-event-no-match");if(u)throw Error(`Key ID ${ey(u)} not encountered in playlist`);this.log(`Ignoring "${i.type}" event - could not determine keyId`)}return d}).catch(i=>this.handleError(i))}},this.onWaitingForKey=i=>{this.log(`"${i.type}" event`)},this.hls=r,this.config=r.config,this.registerListeners()}destroy(){this.onDestroying(),this.onMediaDetached();let i=this.config;i.requestMediaKeySystemAccessFunc=null,i.licenseXhrSetup=i.licenseResponseCallback=void 0,i.drmSystems=i.drmSystemOptions={},this.hls=this.config=null,this.onMediaEncrypted=this.onWaitingForKey=null}registerListeners(){let{hls:i}=this;
27i&&(i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHED,this.onMediaDetached,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.DESTROYING,this.onDestroying,this))}unregisterListeners(){let{hls:i}=this;i&&(i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHED,this.onMediaDetached,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.DESTROYING,this.onDestroying,this))}attemptKeySystemAccess(i){if(!this.hls)return Promise.reject(Error("destroyed"));let r=this.hls.levels,s=(i,r,s)=>!!i&&s.indexOf(i)===r,a=r.map(i=>i.audioCodec).filter(s),n=r.map(i=>i.videoCodec).filter(s);return a.length+n.length===0&&n.push("avc1.42e01e"),new Promise((r,s)=>{let l=i=>{let o=i.shift();this.getMediaKeysPromise(o,a,n).then(i=>r({keySystem:o,mediaKeys:i})).catch(r=>{i.length?l(i):r instanceof nb?s(r):s(new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_NO_ACCESS,error:r,fatal:!0},r.message))})};l(i)})}requestMediaKeySystemAccess(i,r){let{requestMediaKeySystemAccessFunc:s}=this.config;if("function"!=typeof s){let i=`Configured requestMediaKeySystemAccess is not a function ${s}`;return null===ro&&"http:"===self.location.protocol&&(i=`navigator.requestMediaKeySystemAccess is not available over insecure protocol ${location.protocol}`),Promise.reject(Error(i))}return s(i,r)}getMediaKeysPromise(i,r,s){var a;let n=function(i,r,s,a){var n,l,o,h;let d;switch(i){case i6:d=["cenc","sinf"];break;case i7:case i9:d=["cenc"];break;case i5:d=["cenc","keyids"];break;default:throw Error(`Unknown key-system: ${i}`)}return n=d,l=r,o=s,[{initDataTypes:n,persistentState:(h=a).persistentState||"optional",distinctiveIdentifier:h.distinctiveIdentifier||"optional",sessionTypes:h.sessionTypes||[h.sessionType||"temporary"],audioCapabilities:l.map(i=>({contentType:`audio/mp4; codecs=${i}`,robustness:h.audioRobustness||"",encryptionScheme:h.audioEncryptionScheme||null})),videoCapabilities:o.map(i=>({contentType:`video/mp4; codecs=${i}`,robustness:h.videoRobustness||"",encryptionScheme:h.videoEncryptionScheme||null}))}]}(i,r,s,this.config.drmSystemOptions||{}),l=this.keySystemAccessPromises[i],o=null==(a=l)?void 0:a.keySystemAccess;if(!o){this.log(`Requesting encrypted media "${i}" key-system access with config: ${t7(n)}`),o=this.requestMediaKeySystemAccess(i,n);let r=l=this.keySystemAccessPromises[i]={keySystemAccess:o};return o.catch(r=>{this.log(`Failed to obtain access to key-system "${i}": ${r}`)}),o.then(s=>{this.throwIfDestroyed(),this.log(`Access for key-system "${s.keySystem}" obtained`);let a=this.fetchServerCertificate(i);this.log(`Create media-keys for "${i}"`);let n=r.mediaKeys=s.createMediaKeys().then(s=>(this.log(`Media-keys created for "${i}"`),r.hasMediaKeys=!0,a.then(r=>r?this.setMediaKeysServerCertificate(s,i,r):s)));return n.catch(r=>{this.error(`Failed to create media-keys for "${i}"}: ${r}`)}),n})}return o.then(()=>l.mediaKeys)}getMediaKeySessionContext(i,r,s,a){let{mediaKeySessions:n}=this,l=` key-session "${i}" keyId: ${ey(s.keyId||[])} keyUri: ${s.uri} for "${a}"`;for(let i=0;i<n.length;i++){let r=n[i];if(!r.initialized&&r.createdFor.levelKey.uri===s.uri)return this.log(`Reusing${l}`),r}this.log(`Creating${l}`);let o={keySystem:i,mediaKeys:r,mediaKeysSession:r.createSession(),keyRequests:{},keyStatuses:{},createdFor:{levelKey:s,reason:a},initialized:!1};return n.push(o),o}resetMediaKeys(){var i;let r=null==(i=this.mediaKeySessions[0])?void 0:i.keySystem,s=this.keySystemAccessPromises[r];s&&(this.log("reset mediaKeys"),this.mediaKeys=null,s.hasMediaKeys=!1,delete s.mediaKeys,delete this.keySystemAccessPromises[r])}updateKeySession(i,r,s){let a=i.mediaKeysSession;return this.log(`Updating key-session "${a.sessionId}" for keyId ${ey(r.keyId||[])}
28      } (data length: ${s.byteLength})`),a.update(s)}getSelectedKeySystemFormats(){return Object.keys(this.keySystemAccessPromises).map(i=>({keySystem:i,hasMediaKeys:this.keySystemAccessPromises[i].hasMediaKeys})).filter(({hasMediaKeys:i})=>!!i).map(({keySystem:i})=>rn(i)).filter(i=>!!i)}getKeySystemAccess(i){return this.getKeySystemSelectionPromise(i).then(({keySystem:i,mediaKeys:r})=>this.attemptSetMediaKeys(i,r))}selectKeySystem(i){return this.getKeySystemSelectionPromise(i).then(({keySystem:i})=>{let r=rn(i);if(!r)throw Error(`Unable to find format for key-system "${i}"`);return r})}selectKeySystemFormat(i){let r=Object.keys(i.levelkeys||{});return this.keyFormatPromise||(this.log(`Selecting key-system from fragment (sn: ${i.sn} ${i.type}: ${i.level}
28) key formats ${r.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(r)),this.keyFormatPromise}getKeyFormatPromise(i){let r=rl(this.config),s=i.map(rs).filter(i=>!!i&&-1!==r.indexOf(i));return this.selectKeySystem(s)}loadClear(i,r,s){if(this.config.emeEnabled&&!this.getSelectedKeySystemFormats().length){if(r.length)for(let a=0,n=r.length;a<n;a++){let l=r[a];if(i.cc<=l.cc&&(!_(i)||!_(l)||i.sn<l.sn)||!s&&a==n-1)return this.selectKeySystemFormat(l).then(i=>{if(!this.hls)return;l.setKeyFormat(i);let r=rs(i);if(r)return this.getKeySystemAccess([r])})}if(this.config.requireKeySystemAccessOnStart){let i=rl(this.config);if(i.length)return this.getKeySystemAccess(i)}}return null}getKeyStatus(i){let{mediaKeySessions:r}=this;for(let s=0;s<r.length;s++){let a=nk(i,r[s]);if(a)return a}}loadKey(i){let r=i.decryptdata,s=this.getKeyStatus(r);if("internal-error"===s){let a=nD(s,r);return a.data.frag=i,this.error(`${a.message} (${ey(r.keyId||[])})`),Promise.reject(a)}let a=i.type,n=this.activeKeys,l=n[a];l&&!r.matches(l.decryptdata)&&(n.previous||(n.previous=[]),n.previous.push(l),delete n[a]),n[a]||(n[a]=i);for(let i=this.mediaKeySessions.length;i--;){let s=this.mediaKeySessions[i];if(r.keyId&&"expired"===s.keyStatuses[ey(r.keyId)])return this.renewKeySession(r,s)}return this.updateUsablePromise(r,"playlist-key",i)}renewKeySession(i,r){return this.resetMediaKeys(),this.removeSession(r).then(()=>(this.throwIfDestroyed(),this.updateUsablePromise(i,"expired")))}updateUsablePromise(i,r,s){let a=this.getSessionForKey(i,r);return a.catch(i=>this.handleError(i,s)),a.then(r=>i)}getSessionForKey(i,r){let s=this.findContextForKey(i);if(void 0!==s)return Promise.resolve(s);let a=i.uri,n=this.sessionSetupByUri[a],l;l=void 0===n?this.resolveSessionForKey(i,r):n.catch(()=>void 0).then(()=>(this.throwIfDestroyed(),this.resolveSessionForKey(i,r))),this.sessionSetupByUri[a]=l;let o=()=>{this.sessionSetupByUri[a]===l&&delete this.sessionSetupByUri[a]};return l.then(o,o),l}findContextForKey(i){let{mediaKeySessions:r}=this;for(let s=r.length;s--;){let a=r[s];if(nk(i,a))return a}}resolveSessionForKey(i,r){return this.getKeySystemForKeyPromise(i).then(({keySystem:s,mediaKeys:a})=>{this.throwIfDestroyed();for(let s=this.mediaKeySessions.length;s--;){let a=this.mediaKeySessions[s];if(nk(i,a))return a;let n=this.getUsableKeyPromise(a,i,r);if(n)return n}return this.attemptSetMediaKeys(s,a).then(()=>(this.throwIfDestroyed(),this.getMediaKeySessionContext(s,a,i,r))).then(s=>{this.throwIfDestroyed();let a=i.scheme||"cenc",n=i.pssh?i.pssh.buffer:null;return this.generateRequestWithPreferredKeySession(s,i,a,n,r)})})}getUsableKeyPromise(i,r,s){let a=i.keyRequests[r.uri];if(a)return this.log(`Waiting for usable key (${s} keyId: ${function(i){if(i.keyFormat===rt)return i.uri;if(null===i.keyId)throw Error("keyId is null");return ey(i.keyId)}(r)} format: "${r.keyFormat}" URI: ${r.uri})`),a.useable.then(()=>i)}throwIfDestroyed(i="Invalid state"){if(!this.hls)throw Error("invalid state")}handleError(i,r){if(this.hls)if(i instanceof nb){r&&(i.data.frag=r);let s=i.data.decryptdata;this.error(`${i.message}${s?` (${ey(s.keyId||[])})`:""}`),this.hls.trigger(T.ERROR,i.data)}else this.error(i.message),this.hls.trigger(T.ERROR,{type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_NO_KEYS,error:i,fatal:!0})}getKeySystemForKeyPromise(i){let r=rs(i.keyFormat),s=r?[r]:rl(this.config);return this.attemptKeySystemAccess(s)}getKeySystemSelectionPromise(i){if(i.length||(i=rl(this.config)),0===i.length)throw new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_NO_CONFIGURED_LICENSE,fatal:!0},`Missing key-system license configuration options ${t7({drmSystems:this.config.drmSystems})}`);return this.attemptKeySystemAccess(i)}activeLevelKeys(){let i=this.activeKeys,r=(i.previous||[]).map(i=>i.decryptdata);return i.audio&&r.unshift(i.audio.decryptdata),i.main&&r.unshift(i.main.decryptdata),r}attemptSetMediaKeys(i,r){if(this.mediaResolved=void 0,this.mediaKeys===r)return Promise.resolve();let s=this.setMediaKeysQueue.slice();this.log(`Setting media-keys for "${i}"`);let a=Promise.all(s).then(()=>this.media?this.media.setMediaKeys(r):new Promise((i,s)=>{this.mediaResolved=()=>
28{if(this.mediaResolved=void 0,!this.media)return s(Error("Attempted to set mediaKeys without media element attached"));this.mediaKeys=r,this.media.setMediaKeys(r).then(i).catch(s)}}));return this.mediaKeys=r,this.setMediaKeysQueue.push(a),a.then(()=>{this.log(`Media-keys set for "${i}"`),s.push(a),this.setMediaKeysQueue=this.setMediaKeysQueue.filter(i=>-1===s.indexOf(i))})}filterInitData(i,r,s,a,n){var l,o;let h=null==(l=this.config.drmSystems)||null==(l=l[i.keySystem])?void 0:l.generateRequest;if(h)try{let l=h.call(this.hls,s,a,O({},i,{decryptdata:r,reason:n}),n);if(!l)throw Error("Invalid response from configured generateRequest filter");r.scheme=l.initDataType?l.initDataType:"cenc";let o=l.initData?l.initData:null;return r.pssh=o?new Uint8Array(o):null,l}catch(i){if(this.warn(i.message),null!=(o=this.hls)&&o.config.debug)throw i}return{initDataType:s,initData:a}}generateRequestWithPreferredKeySession(i,r,s,a,n){let l=this.getUsableKeyPromise(i,r,n);if(l)return l;let o=this.filterInitData(i,r,s,a,n);if(o&&(a=o.initData?o.initData:null,s=o.initDataType),null===a)return n.startsWith("encrypted-event")?Promise.reject(Error(`missing initialization data for "${n}"`)):(this.log(`Skipping key-session request for "${n}" (no initData)`),Promise.resolve(i));let h=r.uri,d=new nR;i.keyRequests[h]=d;let u=s=>{let a=i.mediaKeysSession;if(!a){d.errored=Error("invalid state");return}let{messageType:n,message:l}=s;d.status=n,this.log(`"${n}" message event for session "${a.sessionId}" message size: ${l.byteLength}`),"license-request"===n||"license-renewal"===n?this.renewLicense(i,r,l).catch(r=>{d.errored=r,d.hasListeners||this.handleError(r),this.removeSession(i)}):"license-release"===n?i.keySystem===i6&&this.updateKeySession(i,r,i2("acknowledged")).then(()=>this.removeSession(i)).catch(i=>this.handleError(i)):this.warn(`unhandled media key message type "${n}"`)};return d.onmessage=u,rH(i.mediaKeysSession,"message",u),this.generateRequest(i,r,s,a,n,!1)}generateRequest(i,r,s,a,n,l){if(l){let l=this.filterInitData(i,r,s,a,n);l&&(a=l.initData?l.initData:a,s=l.initDataType)}let o=r.uri,h=i.keyRequests[o],d=ey(r.keyId||[]),u=i=>{let s;i.startsWith("usable")?h.resolve():"internal-error"===i||"output-restricted"===i||"output-downscaled"===i?s=nD(i,r):"expired"===i?s=Error(`key expired (keyId: ${d})`):"released"===i?s=Error("key released"):"status-pending"===i||this.warn(`unhandled key status change "${i}" (keyId: ${d})`),s&&(h.errored=s,h.hasListeners||this.handleError(s))},f=s=>{var a,n;if(!i.mediaKeysSession){h.errored=Error("invalid state");return}let l=i.keyStatuses=this.getKeyStatuses(i);if(!Object.keys(l).some(i=>"status-pending"!==l[i]))return;let o=this.activeLevelKeys();for(let s=0;s<o.length;s++)if("expired"===l[ey(o[s].keyId||[])]){this.log(`Expired key ${t7(l)} in key-session "${null==(a=i.mediaKeysSession)?void 0:a.sessionId}"`),this.renewKeySession(r,i).catch(i=>this.handleError(i));break}let f=l[d];f?u(f):(i.keyStatusTimeouts||(i.keyStatusTimeouts={}),(n=i.keyStatusTimeouts)[d]||(n[d]=self.setTimeout(()=>{var s,a;if(!i.mediaKeysSession)return;let n=this.getKeyStatus(r);if(n&&"status-pending"!==n)return this.log(`No status for keyId ${d} in key-session "${null==(a=i.mediaKeysSession)?void 0:a.sessionId}". Using session key-status ${n} from other session.`),u(n);this.log(`key status for ${d} in key-session "${null==(s=i.mediaKeysSession)?void 0:s.sessionId}" timed out after 1000ms`),u(f="internal-error")},1e3)),this.log(`No status for keyId ${d} (${t7(l)}).`))};h.onkeystatuseschange=f,rH(i.mediaKeysSession,"keystatuseschange",f);let c=h.useable;return this.log(`Generating key-session request for "${n}" keyId: ${d} URI: ${o} (init data type: ${s} length: ${a.byteLength})`),h.status="started",i.initialized=!0,i.mediaKeysSession.generateRequest(s,a).then(()=>{var r;h.status="generated",this.log(`Request generated for key-session "${null==(r=i.mediaKeysSession)?void 0:r.sessionId}" keyId: ${d} URI: ${o}`)}).catch(i=>{throw this.log(`mediaKeysSession.generateRequest failed: ${i}`),new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_NO_SESSION,error:i,decryptdata:r,fatal:!1},`Error generating key-session request: ${i}`)}).then(()=>c).catch(r=>{var s;this.log(`mediaKeysSession.generateRequest failed: ${r}`);let a=null==(s=r.data)?void 0:s.details;return(a===E.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED||a===E.KEY_SYSTEM_STATUS_INTERNAL_ERROR)&&Object.keys(i.keyStatuses).some(r=>"usable"===i.keyStatuses[r])?(this.handleError(r),i):this.removeSession(i).then(()=>{throw r})}).then(()=>i)}getKeyStatuses(i){let r={},s=i.mediaKeysSession.sessionId;
28return i.mediaKeysSession.keyStatuses.forEach((a,n)=>{if("string"==typeof n&&"object"==typeof a){let i=n;n=a,a=i}let l="buffer"in n?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);i.keySystem===i9&&16===l.length&&(r[ey(l)]=a,i3(l));let o=ey(l);this.log(`key status change "${a}" for keyStatuses keyId: ${o} key-session "${s}"`),r[o]=a}),r}fetchServerCertificate(i){let r=this.config,s=new r.loader(r),a=function(i,r){let{drmSystems:s}=r,a=null==s?void 0:s[i];if(a)return a.serverCertificateUrl}(i,r);return a?(this.log(`Fetching server certificate for "${i}"`),new Promise((n,l)=>{let o={type:R.SERVER_CERTIFICATE,responseType:"arraybuffer",url:a},h=r.certLoadPolicy.default,d={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0};s.load(o,d,{onSuccess:(i,r,s,a)=>{n(i.data)},onError:(r,s,n,h)=>{l(new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:n,response:$({url:o.url,data:void 0},r)},`"${i}" certificate request failed (${a}). Status: ${r.code} (${r.text})`))},onTimeout:(r,s,n)=>{l(new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED,fatal:!0,networkDetails:n,response:{url:o.url,data:void 0}},`"${i}" certificate request timed out (${a})`))},onAbort:(i,r,s)=>{l(Error("aborted"))}})})):(this.log(`No Server Certificate in config.drmSystems["${i}"]`),Promise.resolve())}setMediaKeysServerCertificate(i,r,s){return new Promise((a,n)=>{i.setServerCertificate(s).then(n=>{this.log(`setServerCertificate ${n?"success":"not supported by CDM"} (${s.byteLength}) on "${r}"`),a(i)}).catch(i=>{n(new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED,error:i,fatal:!0},i.message))})})}renewLicense(i,r,s){return this.requestLicense(i,r,new Uint8Array(s)).then(s=>this.updateKeySession(i,r,new Uint8Array(s)).catch(i=>{throw new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_SESSION_UPDATE_FAILED,decryptdata:r,error:i,fatal:!1},i.message)}))}unpackPlayReadyKeyMessage(i,r){let s=eS(new Uint16Array(r.buffer));if(!s.includes("PlayReadyKeyMessage"))return i.setRequestHeader("Content-Type","text/xml; charset=utf-8"),r;let a=new DOMParser().parseFromString(s,"application/xml"),n=a.querySelectorAll("HttpHeader");if(n.length>0){let r;for(let s=0,a=n.length;s<a;s++){var l,o;let a=null==(l=(r=n[s]).querySelector("name"))?void 0:l.textContent,h=null==(o=r.querySelector("value"))?void 0:o.textContent;a&&h&&i.setRequestHeader(a,h)}}let h=a.querySelector("Challenge"),d=null==h?void 0:h.textContent;if(!d)throw Error("Cannot find <Challenge> in key message");return i2(atob(d))}setupLicenseXHR(i,r,s,a,n){let l=this.config.licenseXhrSetup;return l?Promise.resolve().then(()=>(this.throwIfDestroyed(),l.call(this.hls,i,r,$($({},s),{},{decryptdata:a}),n))).catch(o=>{if(!s.mediaKeysSession)throw o;return i.open("POST",r,!0),l.call(this.hls,i,r,$($({},s),{},{decryptdata:a}),n)}).then(s=>(i.readyState||i.open("POST",r,!0),{xhr:i,licenseChallenge:s||n})):(i.open("POST",r,!0),Promise.resolve({xhr:i,licenseChallenge:n}))}requestLicense(i,r,s){return new Promise((a,n)=>{let l=function(i,r){let{drmSystems:s,widevineLicenseUrl:a}=r,n=null==s?void 0:s[i];return n?n.licenseUrl:i===i7&&a?a:void 0}(i.keySystem,this.config);if(!l)return n(Error(`no license server URL configured for key-system "${i.keySystem}"`));let o=i.keyRequests[r.uri];if(!o)return n(Error("License emitter removed"));this.log(`Sending license request to URL: ${l}`);let h=this.config.keyLoadPolicy.default,d=new XMLHttpRequest;d.responseType="arraybuffer",d.onreadystatechange=()=>{if(!this.hls||!i.mediaKeysSession)return n(Error("invalid state"));if(4===d.readyState)if(200===d.status){o.requestErrors=[];let s=d.response;this.log(`License received ${s instanceof ArrayBuffer?s.byteLength:s}`);let n=this.config.licenseResponseCallback;if(n)try{s=n.call(this.hls,d,l,$($({},i),{},{decryptdata:r}))}catch(i){this.error(i)}a(s)}else{let u=h.errorRetry,f=u?u.maxNumRetry:0;if(o.requestErrors.push({status:d.status,message:d.statusText}),o.requestErrors.length>f||d.status>=400&&d.status<500)n(new nb({type:y.KEY_SYSTEM_ERROR,details:E.KEY_SYSTEM_LICENSE_REQUEST_FAILED,decryptdata:r,fatal:!0,networkDetails:d,response:{url:l,data:void 0,code:d.status,text:d.statusText}},`License Request XHR failed (${l}). Status: ${d.status} (${d.statusText})`));else{let l=f-o.requestErrors.length;this.warn(`Retrying license request, ${l} attempts left`),this.requestLicense(i,r,s).then(a,n)}}},o.licenseXhr&&o.licenseXhr.readyState!==XMLHttpRequest.DONE&&o.licenseXhr.abort(),o.licenseXhr=d,this.setupLicenseXHR(d,l,i,r,s).then(({xhr:r,licenseChallenge:s})=>{i.keySystem==i9&&(s=this.unpackPlayReadyKeyMessage(r,s)),r.send(s)}).catch(n)})}onDestroying(){this.unregisterListeners(),this._clear()}onMediaAttached(i,r){if(!this.config.emeEnabled)return;let s=r.media;this.media=s,rH(s,"encrypted",this.onMediaEncrypted),rH(s,"waitingforkey",this.onWaitingForKey);let a=this.mediaResolved;a?a():this.mediaKeys=s.mediaKeys}onMediaDetached(){let i=this.media;i&&(rV(i,"encrypted",this.onMediaEncrypted),rV(i,"waitingforkey",this.onWaitingForKey),this.media=null,this.mediaKeys=null)}_clear(){var r;this.keyFormatPromise=null,this.keySystemAccessPromises={},this.activeKeys={},this.sessionSetupByUri={};let s=this.mediaResolved;if(s&&s(),!this.mediaKeys&&!this.mediaKeySessions.length)return;let a=this.media,n=this.mediaKeySessions.slice();this.mediaKeySessions=[],this.mediaKeys=null,ru.clearKeyUriToKeyIdMap();let l=n.length;i.CDMCleanupPromise=Promise.all(n.map(i=>this.removeSession(i)).concat((null==a||null==(r=a.setMediaKeys(null))?void 0:r.catch(i=>
28{this.log(`Could not clear media keys: ${i}`),this.hls&&this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.KEY_SYSTEM_DESTROY_MEDIA_KEYS_ERROR,fatal:!1,error:Error(`Could not clear media keys: ${i}`)})}))||Promise.resolve())).catch(i=>{this.log(`Could not close sessions and clear media keys: ${i}`),this.hls&&this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:Error(`Could not close sessions and clear media keys: ${i}`)})}).then(()=>{l&&this.log("finished closing key sessions and clearing media keys")})}onManifestLoading(){this._clear(),this.keyFormatPromise=null}onManifestLoaded(i,{sessionKeys:r}){if(!(!r||!this.config.emeEnabled)&&!this.keyFormatPromise){let i=r.reduce((i,r)=>(-1===i.indexOf(r.keyFormat)&&i.push(r.keyFormat),i),[]);this.log(`Selecting key-system from session-keys ${i.join(", ")}`),this.keyFormatPromise=this.getKeyFormatPromise(i),this.keyFormatPromise.catch(()=>{})}}removeSession(i){let{mediaKeysSession:r}=i;if(r){var s;this.log(`Remove licenses and keys and close session "${r.sessionId}"`),Object.keys(i.keyRequests).forEach(s=>{let a=i.keyRequests[s];a.onmessage&&r.removeEventListener("message",a.onmessage),a.onkeystatuseschange&&r.removeEventListener("keystatuseschange",a.onkeystatuseschange),a.reset(),i.keyRequests[s]=void 0}),i.mediaKeysSession=void 0;let a=this.mediaKeySessions.indexOf(i);a>-1&&this.mediaKeySessions.splice(a,1);let{keyStatusTimeouts:n}=i;n&&Object.keys(n).forEach(i=>self.clearTimeout(n[i]));let{drmSystemOptions:l}=this.config;return(l&&("persistent-license"===l.sessionType||null!=(s=l.sessionTypes)&&s.some(i=>"persistent-license"===i))?new Promise((i,s)=>{self.setTimeout(()=>s(Error("MediaKeySession.remove() timeout")),8e3),r.remove().then(i).catch(s)}):Promise.resolve()).catch(i=>{this.log(`Could not remove session: ${i}`),this.hls&&this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.KEY_SYSTEM_DESTROY_REMOVE_SESSION_ERROR,fatal:!1,error:Error(`Could not remove session: ${i}`)})}).then(()=>r.close()).then(()=>r.closed).catch(i=>{this.log(`Could not close session: ${i}`),this.hls&&this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.KEY_SYSTEM_DESTROY_CLOSE_SESSION_ERROR,fatal:!1,error:Error(`Could not close session: ${i}`)})})}return Promise.resolve()}};function nk(i,r){let s=i.keyId,a=r.mediaKeysSession;if(s&&a){let i=r.mediaKeysSession.keyStatuses;if(i.size)return i.has(s)?i.get(s):r.keyStatuses[ey(s)]}}function nD(i,r){let s="output-restricted"===i,a=s?E.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED:E.KEY_SYSTEM_STATUS_INTERNAL_ERROR;return new nb({type:y.KEY_SYSTEM_ERROR,details:a,fatal:!1,decryptdata:r},s?"HDCP level output restricted":`key status changed to "${i}"`)}nI.CDMCleanupPromise=void 0;var nP=class{constructor(i){this.hls=void 0,this.isVideoPlaybackQualityAvailable=!1,this.timer=void 0,this.media=null,this.lastTime=void 0,this.lastDroppedFrames=0,this.lastDecodedFrames=0,this.streamController=void 0,this.hls=i,this.registerListeners()}setStreamController(i){this.streamController=i}
28registerListeners(){this.hls.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.on(T.MEDIA_DETACHING,this.onMediaDetaching,this)}unregisterListeners(){this.hls.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),this.hls.off(T.MEDIA_DETACHING,this.onMediaDetaching,this)}destroy(){this.timer&&clearInterval(this.timer),this.unregisterListeners(),this.isVideoPlaybackQualityAvailable=!1,this.media=null}onMediaAttaching(i,r){let s=this.hls.config;if(s.capLevelOnFPSDrop){let i=r.media instanceof self.HTMLVideoElement?r.media:null;this.media=i,i&&"function"==typeof i.getVideoPlaybackQuality&&(this.isVideoPlaybackQualityAvailable=!0),self.clearInterval(this.timer),this.timer=self.setInterval(this.checkFPSInterval.bind(this),s.fpsDroppedMonitoringPeriod)}}onMediaDetaching(){this.media=null}checkFPS(i,r,s){let a=performance.now();if(r){if(this.lastTime){let i=a-this.lastTime,n=s-this.lastDroppedFrames,l=r-this.lastDecodedFrames,o=1e3*n/i,h=this.hls;if(h.trigger(T.FPS_DROP,{currentDropped:n,currentDecoded:l,totalDroppedFrames:s}),o>0&&n>h.config.fpsDroppedMonitoringThreshold*l){let i=h.currentLevel;h.logger.warn("drop FPS ratio greater than max allowed value for currentLevel: "+i),i>0&&(-1===h.autoLevelCapping||h.autoLevelCapping>=i)&&(--i,h.trigger(T.FPS_DROP_LEVEL_CAPPING,{level:i,droppedLevel:h.currentLevel}),h.autoLevelCapping=i,this.streamController.nextLevelSwitch())}}this.lastTime=a,this.lastDroppedFrames=s,this.lastDecodedFrames=r}}checkFPSInterval(){let i=this.media;if(i)if(this.isVideoPlaybackQualityAvailable){let r=i.getVideoPlaybackQuality();this.checkFPS(i,r.totalVideoFrames,r.droppedVideoFrames)}else this.checkFPS(i,i.webkitDecodedFrameCount,i.webkitDroppedFrameCount)}},n_=function(){if(null!=i8&&i8.VTTCue)return self.VTTCue;let i=["","lr","rl"],r=["start","middle","end","left","right"];function s(i,r){if("string"!=typeof r||!Array.isArray(i))return!1;let s=r.toLowerCase();return!!~i.indexOf(s)&&s}function a(i){let r=1;for(;r<arguments.length;r++){let s=arguments[r];for(let r in s)i[r]=s[r]}return i}function n(n,l,o){let h={enumerable:!0};this.hasBeenReset=!1;let d="",u=!1,f=n,c=l,g=o,m=null,p="",v=!0,y="auto",E="start",T=50,S="middle",A=50,L="middle";Object.defineProperty(this,"id",a({},h,{get:function(){return d},set:function(i){d=""+i}})),Object.defineProperty(this,"pauseOnExit",a({},h,{get:function(){return u},set:function(i){u=!!i}})),Object.defineProperty(this,"startTime",a({},h,{get:function(){return f},set:function(i){if("number"!=typeof i)throw TypeError("Start time must be set to a number.");f=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"endTime",a({},h,{get:function(){return c},set:function(i){if("number"!=typeof i)throw TypeError("End time must be set to a number.");c=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"text",a({},h,{get:function(){return g},set:function(i){g=""+i,this.hasBeenReset=!0}})),Object.defineProperty(this,"region",a({},h,{get:function(){return m},set:function(i){m=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"vertical",a({},h,{get:function(){return p},set:function(r){let a=s(i,r);if(!1===a)throw SyntaxError("An invalid or illegal string was specified.");p=a,this.hasBeenReset=!0}})),Object.defineProperty(this,"snapToLines",a({},h,{get:function(){return v},set:function(i){v=!!i,this.hasBeenReset=!0}})),Object.defineProperty(this,"line",a({},h,{get:function(){return y},set:function(i){if("number"!=typeof i&&"auto"!==i)throw SyntaxError("An invalid number or illegal string was specified.");y=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"lineAlign",a({},h,{get:function(){return E},set:function(i){let a=s(r,i);if(!a)throw SyntaxError("An invalid or illegal string was specified.");E=a,this.hasBeenReset=!0}})),Object.defineProperty(this,"position",a({},h,{get:function(){return T},set:function(i){if(i<0||i>100)throw Error("Position must be between 0 and 100.");T=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"positionAlign",a({},h,{get:function(){return S},set:function(i){let a=s(r,i);if(!a)throw SyntaxError("An invalid or illegal string was specified.");S=a,this.hasBeenReset=!0}})),Object.defineProperty(this,"size",a({},h,{get:function(){return A},set:function(i){if(i<0||i>100)throw Error("Size must be between 0 and 100.");A=i,this.hasBeenReset=!0}})),Object.defineProperty(this,"align",a({},h,{get:function(){return L},set:function(i){let a=s(r,i);if(!a)throw SyntaxError("An invalid or illegal string was specified.");L=a,this.hasBeenReset=!0}})),this.displayState=void 0}return n.prototype.getCueAsHTML=function(){return self.WebVTT.convertCueToDOMTree(self,this.text)},n}(),nC=class{decode(i,r){if(!i)return"";if("string"!=typeof i)throw Error("Error - expected string data.");return decodeURIComponent(encodeURIComponent(i))}};function nx(i){function r(i,r,s,a){return(0|i)*3600+(0|r)*60+(0|s)+parseFloat(a||0)}let s=i.match(/^(?:(\d+):)?(\d{2}):(\d{2})(\.\d+)?/);return s?parseFloat(s[2])>59?r(s[2],s[3],0,s[4]):r(s[1],s[2],s[3],s[4]):null}var nw=class{constructor(){this.values=Object.create(null)}set(i,r){this.get(i)||""===r||(this.values[i]=r)}get(i,r,s){return s?this.has(i)?this.values[i]:r[s]:this.has(i)?this.values[i]:r}has(i){return i in this.values}alt(i,r,s){for(let a=0;a<s.length;++a)if(r===s[a]){this.set(i,r);break}}integer(i,r){/^-?\d+$/.test(r)&&this.set(i,parseInt(r,10))}percent(i,r){if(/^([\d]{1,3})(\.[\d]*)?%$/.test(r)){let s=parseFloat(r);if(s>=0&&s<=100)return this.set(i,s),!0}return!1}};function nM(i,r,s,a){let n=a?i.split(a):[i];for(let i in n){if("string"!=typeof n[i])continue;let a=n[i].split(s);2===a.length&&r(a[0],a[1])}}var nO=new n_(0,0,""),nF="middle"===nO.align?"middle":"center";function n$(i){return i.replace(/<br(?: \/)?>/gi,"\n")}var nB=class{constructor(){this.state="INITIAL",this.buffer="",this.decoder=new nC,this.regionList=[],this.cue=null,this.oncue=void 0,this.onparsingerror=void 0,this.onflush=void 0}parse(i){let r=this;function s(){let i=r.buffer,s=0;for(i=n$(i);s<i.length&&"\r"!==i[s]&&"\n"!==i[s];)++s;let a=i.slice(0,s);return"\r"===i[s]&&++s,"\n"===i[s]&&++s,r.buffer=i.slice(s),a}i&&(r.buffer+=r.decoder.decode(i,{stream:!0}));try{let i="";if("INITIAL"===r.state){if(!/\r\n|\n/.test(r.buffer))return this;let a=(i=s()).match(/^()?WEBVTT([ \t].*)?$/);if(!(null!=a&&a[0]))throw Error("Malformed WebVTT signature.");r.state="HEADER"}let n=!1;for(;r.buffer&&/\r\n|\n/.test(r.buffer);)switch(n?n=!1:i=s(),r.state){case"HEADER":var a;/:/.test(i)?(a=i,nM(a,function(i,r){},/:/)):i||(r.state="ID");continue;case"NOTE":i||(r.state="ID");continue;case"ID":if(/^NOTE($|[ \t])/.test(i)){r.state="NOTE";break}if(!i)continue;if(r.cue=new n_(0,0,""),r.state="CUE",-1===i.indexOf("--\x3e")){r.cue.id=i;continue}case"CUE":if(!r.cue){r.state="BADCUE";continue}try{!function(i,r,s){var a;let n,l,o,h=i;function d(){let r=nx(i);if(null===r)throw Error("Malformed timestamp: "+h);return i=i.replace(/^[^\sa-zA-Z-]+/,""),r}function u(){i=i.replace(/^\s+/,"")}if(u(),r.startTime=d(),u(),"--\x3e"!==i.slice(0,3))throw Error("Malformed time stamp (time stamps must be separated by '--\x3e'): "+h);i=i.slice(3),u(),r.endTime=d(),u(),a=i,n=new nw,nM(a,function(i,r){let a;switch(i){case"region":for(let a=s.length-1;a>=0;a--)if(s[a].id===r){n.set(i,s[a].region);break}break;case"vertical":n.alt(i,r,["rl","lr"]);break;case"line":a=r.split(","),n.integer(i,a[0]),n.percent(i,a[0])&&n.set("snapToLines",!1),n.alt(i,a[0],["auto"]),2===a.length&&n.alt("lineAlign",a[1],["start",nF,"end"]);break;case"position":a=r.split(","),n.percent(i,a[0]),2===a.length&&n.alt("positionAlign",a[1],["start",nF,"end","line-left","line-right","auto"]);break;case"size":n.percent(i,r);break;case"align":n.alt(i,r,["start",nF,"end","left","right"])}},/:/,/\s/),r.region=n.get("region",null),r.vertical=n.get("vertical",""),"auto"===(l=n.get("line","auto"))&&-1===nO.line&&(l=-1),r.line=l,r.lineAlign=n.get("lineAlign","start"),r.snapToLines=n.get("snapToLines",!0),r.size=n.get("size",100),r.align=n.get("align",nF),"auto"===(o=n.get("position","auto"))&&50===nO.position&&(o="start"===r.align||"left"===r.align?0:"end"===r.align||"right"===r.align?100:50),r.position=o}(i,r.cue,r.regionList)}catch{r.cue=null,r.state="BADCUE";continue}r.state="CUETEXT";continue;case"CUETEXT":{let s=-1!==i.indexOf("--\x3e");
28if(!i||s&&(n=!0)){r.oncue&&r.cue&&r.oncue(r.cue),r.cue=null,r.state="ID";continue}if(null===r.cue)continue;r.cue.text&&(r.cue.text+="\n"),r.cue.text+=i}continue;case"BADCUE":i||(r.state="ID")}}catch{"CUETEXT"===r.state&&r.cue&&r.oncue&&r.oncue(r.cue),r.cue=null,r.state="INITIAL"===r.state?"BADWEBVTT":"BADCUE"}return this}flush(){try{if((this.cue||"HEADER"===this.state)&&(this.buffer+="\n\n",this.parse()),"INITIAL"===this.state||"BADWEBVTT"===this.state)throw Error("Malformed WebVTT signature.")}catch(i){this.onparsingerror&&this.onparsingerror(i)}return this.onflush&&this.onflush(),this}};function nU(i){let r=5381,s=i.length;for(;s;)r=33*r^i.charCodeAt(--s);return(r>>>0).toString()}var nN=/\r\n|\n\r|\n|\r/g,nG=function(i){let r=parseInt(i.slice(-3)),s=parseInt(i.slice(-6,-4)),a=parseInt(i.slice(-9,-7)),n=i.length>9?parseInt(i.substring(0,i.indexOf(":"))):0;if(!m(r)||!m(s)||!m(a)||!m(n))throw Error(`Malformed X-TIMESTAMP-MAP: Local:${i}`);return r+=1e3*s,r+=6e4*a,r+=36e5*n};function nK(i,r,s){return nU(i.toString())+nU(r.toString())+nU(s)}var nH="stpp.ttml.im1t",nV=/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/,nj=/^(\d*(?:\.\d*)?)(h|m|s|ms|f|t)$/,nq={left:"start",center:"center",right:"end",start:"start",end:"end"};function nW(i,r,s,a){let n=td(new Uint8Array(i),["mdat"]);if(0===n.length)return void a(Error("Could not parse IMSC1 mdat"));let l=n.map(i=>eg(i)),o=function(i,r=1,s=!1){return sJ(i,1,1/r,s)}(r.baseTime,r.timescale);try{l.forEach(i=>s(function(i,r){let s=new DOMParser().parseFromString(i,"text/xml").getElementsByTagName("tt")[0];if(!s)throw Error("Invalid ttml");let a={frameRate:30,subFrameRate:1,frameRateMultiplier:0,tickRate:1},n=Object.keys(a).reduce((i,r)=>(i[r]=s.getAttribute(`ttp:${r}`)||a[r],i),{});!s.getAttribute("ttp:tickRate")&&s.getAttribute("ttp:frameRate")&&(n.tickRate=Number(n.frameRate)*Number(n.subFrameRate));let l="preserve"!==s.getAttribute("xml:space"),o=nz(nY(s,"styling","style")),h=nz(nY(s,"layout","region")),d=nY(s,"body","[begin]");return[].map.call(d,i=>{var s,a,d;let u,f,c,g=function i(r,s){return[].slice.call(r.childNodes).reduce((r,a,n)=>{var l;return"br"===a.nodeName&&n?r+"\n":null!=(l=a.childNodes)&&l.length?i(a,s):s?r+a.textContent.trim().replace(/\s+/g," "):r+a.textContent},"")}(i,l);if(!g||!i.hasAttribute("begin"))return null;let m=nZ(i.getAttribute("begin"),n),p=nZ(i.getAttribute("dur"),n),v=nZ(i.getAttribute("end"),n);if(null===m)throw nQ(i);if(null===v){if(null===p)throw nQ(i);v=m+p}let y=new n_(m-r,v-r,g);y.id=nK(y.startTime,y.endTime,y.text);let E=(s=h[i.getAttribute("region")],a=o[i.getAttribute("style")],d=o,u="http://www.w3.org/ns/ttml#styling",f=null,(c=null!=s&&s.hasAttribute("style")?s.getAttribute("style"):null)&&d.hasOwnProperty(c)&&(f=d[c]),["displayAlign","textAlign","color","backgroundColor","fontSize","fontFamily"].reduce((i,r)=>{let n=nX(a,u,r)||nX(s,u,r)||nX(f,u,r);return n&&(i[r]=n),i},{})),{textAlign:T}=E;if(T){let i=nq[T];i&&(y.lineAlign=i),y.align=T}return O(y,E),y}).filter(i=>null!==i)}(i,o)))}catch(i){a(i)}}function nY(i,r,s){let a=i.getElementsByTagName(r)[0];return a?[].slice.call(a.querySelectorAll(s)):[]}function nz(i){return i.reduce((i,r)=>{let s=r.getAttribute("xml:id");return s&&(i[s]=r),i},{})}function nX(i,r,s){return i&&i.hasAttributeNS(r,s)?i.getAttributeNS(r,s):null}function nQ(i){return Error(`Could not parse ttml timestamp ${i}`)}function nZ(i,r){var s,a;let n,l;if(!i)return null;let o=nx(i);return null===o&&(nV.test(i)?(s=i,a=r,l=(0|(n=nV.exec(s))[4])+(0|n[5])/a.subFrameRate,o=(0|n[1])*3600+(0|n[2])*60+(0|n[3])+l/a.frameRate):nj.test(i)&&(o=function(i,r){let s=nj.exec(i),a=Number(s[1]);switch(s[2]){case"h":return 3600*a;case"m":return 60*a;case"ms":return a/1e3;case"f":return a/r.frameRate;case"t":return a/r.tickRate}return a}(i,r))),o}function nJ(i,r,s,a="",n="disabled"){let l=i.ownerDocument.createElement("track");return l.kind=r,l.label=s,a&&(l.srclang=a),l.src="data:,WEBVTT",l.track.mode=n,i.appendChild(l),l}function n0(i,r){let s=i.mode;if("disabled"===s&&(i.mode="hidden"),i.cues&&!i.cues.getCueById(r.id))try{if(i.addCue(r),!i.cues.getCueById(r.id))throw Error(`addCue is failed for: ${r}`)}catch(s){et.debug(`[texttrack-utils]: ${s}`);try{let s=new self.TextTrackCue(r.startTime,r.endTime,r.text);s.id=r.id,i.addCue(s)}catch(i){et.debug(`[texttrack-utils]: Legacy TextTrackCue fallback failed: ${i}`)}}"disabled"===s&&(i.mode=s)}function n1(i,r,s,a){let n=i.mode;if("disabled"===n&&(i.mode="hidden"),i.cues&&i.cues.length>0){let n=function(i,r,s){let a=[],n=function(i,r){if(r<=i[0].startTime)return 0;let s=i.length-1;if(r>i[s].endTime)return -1;let a=0,n=s,l;for(;a<=n;)if(r<i[l=Math.floor((n+a)/2)].startTime)n=l-1;else{if(!(r>i[l].startTime)||!(a<s))return l;a=l+1}return i[a].startTime-r<r-i[n].startTime?a:n}(i,r);if(n>-1)for(let l=n,o=i.length;l<o;l++){let n=i[l];if(n.startTime>=r&&n.endTime<=s)a.push(n);else if(n.startTime>s)break}return a}(i.cues,r,s);for(let r=0;r<n.length;r++)(!a||a(n[r]))&&i.removeCue(n[r])}"disabled"===n&&(i.mode=n)}var n2=class extends ah{constructor(i){super(i,"subtitle-track-controller"),this.media=null,this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0,this.queuedDefaultTrack=-1,this.useTextTrackPolling=!1,this.subtitlePollingInterval=-1,this._subtitleDisplay=!0,this.asyncPollTrackChange=()=>this.pollTrackChange(0),this.onTextTracksChanged=()=>{var i,r,s;if(this.useTextTrackPolling||self.clearInterval(this.subtitlePollingInterval),!this.media||!this.hls.config.renderTextTracksNatively)return;let a=-1,n=!1;if(this.currentTrack){let r=null==(i=this.currentTrack.trackNode)?void 0:i.track.mode;"showing"===r?(a=this.trackId,n=!0):"hidden"===r&&(a=this.trackId)}if(!n)for(let i=0;i<this.tracksInGroup.length;i++){let s=null==(r=this.tracksInGroup[i].trackNode)?void 0:r.track.mode;if("showing"===s){a=i;break}a<0&&"hidden"===s&&(a=i)}a>-1&&(this._subtitleDisplay=(null==(s=this.tracksInGroup[a].trackNode)?void 0:s.track.mode)==="showing"),this.setSubtitleTrack(a,!0)},this.registerListeners()}destroy(){this.unregisterListeners(),this.tracks.length=0,this.tracksInGroup.length=0,this.currentTrack=null,this.onTextTracksChanged=this.asyncPollTrackChange=null,super.destroy()}get subtitleDisplay(){return this._subtitleDisplay}set subtitleDisplay(i){this._subtitleDisplay=i,this.trackId>-1&&this.toggleTrackModes()}registerListeners(){let{hls:i}=this;
28i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.LEVEL_LOADING,this.onLevelLoading,this),i.on(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),i.on(T.ERROR,this.onError,this)}unregisterListeners(){let{hls:i}=this;i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.LEVEL_LOADING,this.onLevelLoading,this),i.off(T.LEVEL_SWITCHING,this.onLevelSwitching,this),i.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),i.off(T.ERROR,this.onError,this)}createTracksInGroup(){var i;if(!this.media||!this.hls.config.renderTextTracksNatively)return;this.tracksInGroup.forEach(i=>{i.trackNode||(i.trackNode=nJ(this.media,i.forced&&(tx.indexOf("Apple")>-1||/iPhone|iPad|iPod/.test(tC))?"forced":i.characteristics&&/transcribes-spoken-dialog/gi.test(i.characteristics)&&/describes-music-and-sound/gi.test(i.characteristics)?"captions":"subtitles",i.name,i.lang))});let r=null==(i=this.currentTrack)||null==(i=i.trackNode)?void 0:i.track;(null==r?void 0:r.mode)==="disabled"&&(r.mode=this._subtitleDisplay?"showing":"hidden")}onMediaAttached(i,r){let s=r.media;this.media=s;let a=this.trackId;this.queuedDefaultTrack>-1&&(a=this.queuedDefaultTrack,this.queuedDefaultTrack=-1),this.setSubtitleTrack(a),this.createTracksInGroup(),this.useTextTrackPolling=!(s.textTracks&&"onchange"in s.textTracks),this.useTextTrackPolling?this.pollTrackChange(500):s.textTracks.addEventListener("change",this.asyncPollTrackChange)}pollTrackChange(i){self.clearInterval(this.subtitlePollingInterval),this.subtitlePollingInterval=self.setInterval(this.onTextTracksChanged,i)}onMediaDetaching(i,r){let s=this.media;if(!s)return;let a=!!r.transferMedia;self.clearInterval(this.subtitlePollingInterval),this.useTextTrackPolling||s.textTracks.removeEventListener("change",this.asyncPollTrackChange),this.trackId>-1&&(this.queuedDefaultTrack=this.trackId,this.setSubtitleTrack(-1)),this.media=null,!a&&this.hls.config.renderTextTracksNatively&&this.tracksInGroup.forEach(i=>{let r=i.trackNode;r&&(r.track.mode="hidden",r.remove(),i.trackNode=void 0)})}onManifestLoading(){this.tracks=[],this.groupIds=null,this.tracksInGroup=[],this.trackId=-1,this.currentTrack=null,this.selectDefaultTrack=!0}onManifestParsed(i,r){this.tracks=r.subtitleTracks}onSubtitleTrackLoaded(i,r){let{id:s,groupId:a,details:n}=r,l=this.tracksInGroup[s];if(!l||l.groupId!==a)return void this.warn(`Subtitle track with id:${s} and group:${a} not found in active group ${null==l?void 0:l.groupId}`);let o=l.details;l.details=r.details,this.log(`Subtitle track ${s} "${l.name}" lang:${l.lang} group:${a} loaded [${n.startSN}-${n.endSN}]`),s===this.trackId&&this.playlistLoaded(s,r,o)}onLevelLoading(i,r){this.switchLevel(r.level)}onLevelSwitching(i,r){this.switchLevel(r.level)}switchLevel(i){let r=this.hls.levels[i];if(!r)return;let s=r.subtitleGroups||null,a=this.groupIds,n=this.currentTrack;if(!s||(null==a?void 0:a.length)!==(null==s?void 0:s.length)||null!=s&&s.some(i=>(null==a?void 0:a.indexOf(i))===-1)){this.groupIds=s;let i=[];if(this.tracks.forEach(r=>{(r.textCodec===nH?this.hls.config.enableIMSC1:this.hls.config.enableWebVTT)&&(!s||s.indexOf(r.groupId)>-1?(r.id=i.length,i.push(r)):r.trackNode&&(r.trackNode.remove(),r.trackNode=void 0))}),i.length===this.tracksInGroup.length){let r=!1;for(let s=0;s<i.length;s++)if(i[s]!==this.tracksInGroup[s]){r=!0;break}if(!r)return}i.length&&this.selectDefaultTrack&&!i.some(i=>i.default)&&(this.selectDefaultTrack=!1),this.tracksInGroup=i,this.trackId=-1,this.currentTrack=null;let r=this.hls.config.subtitlePreference;if(!n&&r){this.selectDefaultTrack=!1;let s=ir(r,i);if(s>-1)n=i[s];else{let i=ir(r,this.tracks);n=this.tracks[i]}}let a=this.findTrackId(n);-1===a&&n&&(a=this.findTrackId(null)),this.log(`Updating subtitle tracks, ${i.length} track(s) found in "${null==s?void 0:s.join(",")}" group-id`),this.hls.trigger(T.SUBTITLE_TRACKS_UPDATED,{subtitleTracks:i}),this.setSubtitleTrack(a),this.createTracksInGroup()}}findTrackId(i){let r=this.tracksInGroup,s=this.selectDefaultTrack;for(let a=0;a<r.length;a++){let n=r[a];if(!(s&&!n.default||!s&&!i)&&(!i||is(n,i)))return a}if(i){for(let s=0;s<r.length;s++){let a=r[s];if(au(i.attrs,a.attrs,["LANGUAGE","ASSOC-LANGUAGE","CHARACTERISTICS"]))return s}for(let s=0;s<r.length;s++){let a=r[s];if(au(i.attrs,a.attrs,["LANGUAGE"]))return s}}return -1}onError(i,r){r.fatal||!r.context||r.context.type===R.SUBTITLE_TRACK&&r.context.
28id===this.trackId&&ih(r.context.groupId,this.groupIds)&&this.checkRetry(r)}get allSubtitleTracks(){return this.tracks}get subtitleTracks(){return this.tracksInGroup}get subtitleTrack(){return this.trackId}set subtitleTrack(i){this.selectDefaultTrack=!1,this.setSubtitleTrack(i,!0)}setSubtitleOption(i){if(this.hls.config.subtitlePreference=i,i){if(-1===i.id)return this.setSubtitleTrack(-1,!0),null;let r=this.allSubtitleTracks;if(this.selectDefaultTrack=!1,r.length){let s=this.currentTrack;if(s&&is(i,s))return s;let a=ir(i,this.tracksInGroup);if(a>-1){let i=this.tracksInGroup[a];return this.setSubtitleTrack(a,!0),i}if(s)return null;{let s=ir(i,r);if(s>-1)return r[s]}}}return null}loadPlaylist(i){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentTrack)&&this.scheduleLoading(this.currentTrack,i)}loadingPlaylist(i,r){super.loadingPlaylist(i,r);let s=i.id,a=i.groupId,n=this.getUrlWithDirectives(i.url,r),l=i.details,o=null==l?void 0:l.age;this.log(`Loading subtitle ${s} "${i.name}" lang:${i.lang} group:${a}${(null==r?void 0:r.msn)===void 0?"":" at sn "+r.msn+" part "+r.part}${o&&l.live?" age "+o.toFixed(1)+(l.type&&" "+l.type||""):""} ${n}`),this.hls.trigger(T.SUBTITLE_TRACK_LOADING,{url:n,id:s,groupId:a,deliveryDirectives:r||null,track:i})}toggleTrackModes(){if(!this.media||!this.hls.config.renderTextTracksNatively)return;let i=this.currentTrack;this.tracksInGroup.forEach(r=>{if(r.trackNode){let s=r===i?this._subtitleDisplay?"showing":"hidden":"disabled",a=r.trackNode.track;a.mode!==s&&(a.mode=s)}})}setSubtitleTrack(i,r=!1){let s=this.tracksInGroup;if(this.media||(this.queuedDefaultTrack=i),i<-1||i>=s.length||!m(i))return void this.warn(`Invalid subtitle track id: ${i}`);let a=this.currentTrack,n=s[i]||null;if(this.trackId=i,this.currentTrack=n,r&&this.toggleTrackModes(),!n){a&&this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:i});return}let l=!!n.details&&!n.details.live;if(n===a&&l)return;this.log(`Switching to subtitle-track ${i}`+(n?` "${n.name}" lang:${n.lang} group:${n.groupId}`:""));let{id:o,groupId:h="",name:d,type:u,url:f}=n;this.hls.trigger(T.SUBTITLE_TRACK_SWITCH,{id:o,groupId:h,name:d,type:u,url:f});let c=this.switchParams(n.url,null==a?void 0:a.details,n.details);this.loadPlaylist(c)}},n3=class extends iB{constructor(i,r){super("gap-controller",i.logger),this.hls=void 0,this.fragmentTracker=void 0,this.media=null,this.mediaSource=void 0,this.nudgeRetry=0,this.skipRetry=0,this.stallReported=!1,this.stalled=null,this.moved=!1,this.seeking=!1,this.buffered={},this.lastCurrentTime=void 0,this.ended=0,this.waiting=0,this.onMediaPlaying=()=>{this.ended=0,this.waiting=0},this.onMediaWaiting=()=>{var i;null!=(i=this.media)&&i.seeking||(this.waiting=self.performance.now(),this.tick())},this.onMediaEnded=()=>{if(this.hls){var i;this.ended=(null==(i=this.media)?void 0:i.currentTime)||1,this.hls.trigger(T.MEDIA_ENDED,{stalled:!1})}},this.hls=i,this.fragmentTracker=r,this.lastCurrentTime=this.getCurrentTime(),this.registerListeners()}registerListeners(){let{hls:i}=this;
28i&&(i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.BUFFER_APPENDED,this.onBufferAppended,this))}unregisterListeners(){let{hls:i}=this;i&&(i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.BUFFER_APPENDED,this.onBufferAppended,this))}destroy(){super.destroy(),this.unregisterListeners(),this.media=this.hls=this.fragmentTracker=null,this.mediaSource=void 0}onMediaAttached(i,r){this.setInterval(100),this.mediaSource=r.mediaSource;let s=this.media=r.media;rH(s,"playing",this.onMediaPlaying),rH(s,"waiting",this.onMediaWaiting),rH(s,"ended",this.onMediaEnded)}onMediaDetaching(i,r){this.clearInterval();let{media:s}=this;s&&(rV(s,"playing",this.onMediaPlaying),rV(s,"waiting",this.onMediaWaiting),rV(s,"ended",this.onMediaEnded),this.media=null),this.mediaSource=void 0}onBufferAppended(i,r){this.buffered=r.timeRanges}get hasBuffered(){return Object.keys(this.buffered).length>0}getCurrentTime(){var i;let r=(null==(i=this.hls)?void 0:i.config.timelineOffset)||0;return this.media?Math.max(this.media.currentTime,r):r}tick(){var i;if(!(null!=(i=this.media)&&i.readyState)||!this.hasBuffered)return;let r=this.getCurrentTime();this.media.currentTime<r||(this.poll(r,this.lastCurrentTime),this.lastCurrentTime=r)}poll(i,r){var s,a,n;let l=null==(s=this.hls)?void 0:s.config;if(!l)return;let o=this.media;if(!o)return;let{seeking:h}=o,d=this.seeking&&!h,u=!this.seeking&&h,f=o.paused&&!h||o.ended||0===o.playbackRate;if(this.seeking=h,i!==r){r&&(this.ended=0),this.moved=!0,h||(this.skipRetry=this.nudgeRetry=0,l.nudgeOnVideoHole&&!f&&i>r&&this.nudgeOnVideoHole(i,r)),0===this.waiting&&this.stallResolved(i);return}if(u||d){d&&this.stallResolved(i);return}if(f){this.skipRetry=this.nudgeRetry=0,this.stallResolved(i),!this.ended&&o.ended&&this.hls&&(this.ended=i||1,this.hls.trigger(T.MEDIA_ENDED,{stalled:!1}));return}if(!iK.getBuffered(o).length){this.skipRetry=this.nudgeRetry=0;return}let c=iK.bufferInfo(o,i,0),g=this.fragmentTracker;g&&this.hls&&n6(c,i,g,this.hls);let m=c.nextStart||0;if(h&&g&&this.hls){let r=n4(this.hls.inFlightFragments,i),s=c.len>2,a=!m||r||m-i>2&&!g.getPartialFragment(i);if(s||a)return;this.moved=!1}let p=null==(a=this.hls)?void 0:a.latestLevelDetails;if(!this.moved&&null!==this.stalled&&g){if(!(c.len>0)&&!m)return;let r=Math.max(m,c.start||0)-i,s=null!=p&&p.live?2*p.targetduration:2,a=n5(i,g);if(r>0&&(r<=s||a)){o.paused||this._trySkipBufferHole(a);return}}let v=l.detectStallWithCurrentTimeMs,y=self.performance.now(),E=this.waiting,S=this.stalled;if(null===S)if(E>0&&y-E<v)S=this.stalled=E;else{this.stalled=y;return}let A=y-S;if(!h&&(A>=v||E&&this.moved)&&this.hls){if((null==(n=this.mediaSource)?void 0:n.readyState)==="ended"&&!(null!=p&&p.live)&&1>Math.abs(i-((null==p?void 0:p.edge)||0))){if(this.ended)return;this.ended=i||1,this.hls.trigger(T.MEDIA_ENDED,{stalled:!0});return}if(this._reportStall(c),!this.media||!this.hls)return;if(o.currentTime!==i){let r=i;i=o.currentTime,this.moved=!0,this.log(`currentTime changed ${r} > ${i}`);return}}let L=iK.bufferInfo(o,i,l.maxBufferHole);this._tryFixBufferStall(L,A,i)}stallResolved(i){let r=this.stalled;if(r&&this.hls&&(this.stalled=null,this.stallReported)){let s=self.performance.now()-r;this.log(`playback not stuck anymore @${i}, after ${Math.round(s)}ms`),this.stallReported=!1,this.waiting=0,this.hls.trigger(T.STALL_RESOLVED,{})}}nudgeOnVideoHole(i,r){var s;let a=this.buffered.video;if(this.hls&&this.media&&this.fragmentTracker&&null!=(s=this.buffered.audio)&&s.length&&a&&a.length>1&&i>a.end(0)){let s=iK.bufferedInfo(iK.timeRangesToArray(this.buffered.audio),i,0);if(s.len>1&&r>=s.start){let s=iK.timeRangesToArray(a),n=iK.bufferedInfo(s,r,0).bufferedIndex;if(n>-1&&n<s.length-1){let r=iK.bufferedInfo(s,i,0).bufferedIndex,a=s[n].end,l=s[n+1].start;if((-1===r||r>n)&&l-a<1&&i-a<2){let s=Error(`nudging playhead to flush pipeline after video hole. currentTime: ${i} hole: ${a} -> ${l} buffered index: ${r}`);this.warn(s.message),this.media.currentTime+=1e-6;let n=n5(i,this.fragmentTracker);n&&"fragment"in n?n=n.fragment:n||(n=void 0);let o=iK.bufferInfo(this.media,i,0);this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_SEEK_OVER_HOLE,fatal:!1,error:s,reason:s.message,frag:n,buffer:o.len,bufferInfo:o})}}}}}_tryFixBufferStall(i,r,s){var a,n;let{fragmentTracker:l,media:o}=this,h=null==(a=this.hls)?void 0:a.config;if(!o||!l||!h)return;let d=null==(n=this.hls)?void 0:n.latestLevelDetails,u=n5(s,l);if((u||null!=d&&d.live&&s<d.fragmentStart)&&(this._trySkipBufferHole(u)||!this.media))return;let f=i.buffered,c=this.adjacentTraversal(i,s);(f&&f.length>1&&i.len>h.maxBufferHole||i.nextStart&&(i.nextStart-s<h.maxBufferHole||c))&&(r>1e3*h.highBufferWatchdogPeriod||this.waiting)&&(this.warn("Trying to nudge playhead over buffer-hole"),this._tryNudgeBuffer(i))}adjacentTraversal(i,r){let s=this.fragmentTracker,a=i.nextStart;if(s&&a){let i=s.getFragAtPos(r,b.MAIN),n=s.getFragAtPos(a,b.MAIN);if(i&&n)return n.sn-i.sn<2}return!1}_reportStall(i){let{hls:r,media:s,stallReported:a,stalled:n}=this;if(!a&&null!==n&&s&&r){this.stallReported=!0;let a=Error(`Playback stalling at @${s.currentTime} due to low buffer (${t7(i)})`);this.warn(a.message),r.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_STALLED_ERROR,fatal:!1,error:a,buffer:i.len,bufferInfo:i,stalled:{start:n}})}}_trySkipBufferHole(i){let{fragmentTracker:r,media:s,hls:a}=this,n=null==a?void 0:a.config;if(!s||!r||!n)return 0;let l=s.currentTime,o=iK.bufferInfo(s,l,0);n6(o,l,r,a);let h=l<o.start?o.start:o.nextStart;if(h){let u=o.len<=n.maxBufferHole,f=o.len>0&&o.len<1&&s.readyState<3,c=h-l;if(c>0&&(u||f)){if(c>n.maxBufferHole){let s=!1;if(0===l){let i=r.getAppendedFrag(0,b.MAIN);i&&h<i.end&&(s=!0)}if(!s&&i){var d;if(!(null!=(d=a.loadLevelObj)&&d.details)||n4(a.inFlightFragments,h))return 0;let s=!1,n=i.end;for(;n<h;){let i=n5(n,r),a=i?i.duration:0;if(a>0)n+=a;else{s=!0;break}}if(s)return 0}}let{nudgeMaxRetry:u,skipBufferHolePadding:f}=n,g=++this.skipRetry>u,m=Math.max(h,l)+f;if(g||(this.warn(`skipping hole, adjusting currentTime from ${l} to ${m}`),this.moved=!0,s.currentTime=m),!(null!=i&&i.gap)||g){let r=Error(g?`Playhead still not moving after seeking over buffer hole from ${l} to ${m} after ${n.nudgeMaxRetry} attempts.`:`fragment loaded with buffer holes, seeking from ${l} to ${m}`),s={type:y.MEDIA_ERROR,details:E.BUFFER_SEEK_OVER_HOLE,fatal:g,error:r,reason:r.message,buffer:o.len,bufferInfo:o};i&&("fragment"in i?s.part=i:s.frag=i),a.trigger(T.ERROR,s)}return m}}return 0}_tryNudgeBuffer(i){let{hls:r,media:s,nudgeRetry:a}=this,n=null==r?void 0:r.config;if(!s||!n)return 0;let l=s.currentTime;if(this.nudgeRetry++,a<n.nudgeMaxRetry){let o=l+(a+1)*n.nudgeOffset,h=Error(`Nudging 'currentTime' from ${l} to ${o}`);this.warn(h.message),s.currentTime=o,r.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_NUDGE_ON_STALL,error:h,fatal:!1,buffer:i.len,bufferInfo:i})}else{let s=Error(`Playhead still not moving while enough data buffered @${l} after ${n.nudgeMaxRetry} nudges`);this.error(s.message),r.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.BUFFER_STALLED_ERROR,error:s,fatal:!0,buffer:i.len,bufferInfo:i})}}};function n4(i,r){let s=n8(i.main);if(s&&s.start<=r)return s;let a=n8(i.audio);return a&&a.start<=r?a:null}function n8(i){if(!i)return null;switch(i.state){case rW:case rq:case r0:case r1:return null}return i.frag}function n5(i,r){return r.getAppendedFrag(i,b.MAIN)||r.getPartialFragment(i)}function n6(i,r,s,a){let n=a.latestLevelDetails,l=n5(r,s);if(r5(a.config)&&!i.nextStart&&n&&l&&a.interstitialsManager){let s="type"in l?l:l.fragment,o=iv(n,s.sn);(null==o?void 0:o.level)===s.level&&r8(o,a.interstitialsManager.playerQueue,r)&&(i.nextStart=o.start)}}function n9(){if(!(typeof self>"u"))return self.VTTCue||self.TextTrackCue}function n7(i,r,s,a,n){let l=new i(r,s,"");try{l.value=a,n&&(l.type=n)}
28catch{l=new i(r,s,t7(n?$({type:n},a):a))}return l}var le=(()=>{let i=n9();try{i&&new i(0,1/0,"")}catch{return Number.MAX_VALUE}return 1/0})(),lt=class{constructor(i){this.hls=void 0,this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.removeCues=!0,this.assetCue=void 0,this.onEventCueEnter=()=>{this.hls&&this.hls.trigger(T.EVENT_CUE_ENTER,{})},this.hls=i,this._registerListeners()}destroy(){this._unregisterListeners(),this.id3Track=null,this.media=null,this.dateRangeCuesAppended={},this.hls=this.onEventCueEnter=null}_registerListeners(){let{hls:i}=this;i&&(i.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),i.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.on(T.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}_unregisterListeners(){let{hls:i}=this;
28i&&(i.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.FRAG_PARSING_METADATA,this.onFragParsingMetadata,this),i.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),i.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.off(T.LEVEL_PTS_UPDATED,this.onLevelPtsUpdated,this))}onMediaAttaching(i,r){this.media=r.media}onMediaAttached(){var i;let r=null==(i=this.hls)?void 0:i.latestLevelDetails;r&&this.updateDateRangeCues(r)}onMediaDetaching(i,r){this.media=null,r.transferMedia||(this.id3Track&&(this.id3Track.remove(),this.id3Track=null),this.dateRangeCuesAppended={})}onManifestLoading(){this.dateRangeCuesAppended={}}createTrack(i){return nJ(i,"metadata","id3","","hidden")}onFragParsingMetadata(i,r){if(!this.media||!this.hls)return;let{enableEmsgMetadataCues:s,enableID3MetadataCues:a}=this.hls.config;if(!s&&!a)return;let{samples:n}=r;this.id3Track||(this.id3Track=this.createTrack(this.media));let l=n9();if(l)for(let i=0;i<n.length;i++){let r=n[i].type;if(r===sd.emsg&&!s||!a)continue;let o=em(n[i].data),h=n[i].pts,d=h+n[i].duration;d>le&&(d=le),d-h<=0&&(d=h+.25);for(let i=0;i<o.length;i++){let s=o[i];if(!ep(s)){this.updateId3CueEnds(h,r);let i=n7(l,h,d,s,r);i&&this.id3Track.track.addCue(i)}}}}updateId3CueEnds(i,r){var s;let a=null==(s=this.id3Track)?void 0:s.track.cues;if(a)for(let s=a.length;s--;){let n=a[s];n.type===r&&n.startTime<i&&n.endTime===le&&(n.endTime=i)}}onBufferFlushing(i,{startOffset:r,endOffset:s,type:a}){let{id3Track:n,hls:l}=this;if(!l)return;let{config:{enableEmsgMetadataCues:o,enableID3MetadataCues:h}}=l;if(n&&(o||h)){let i;i="audio"===a?i=>i.type===sd.audioId3&&h:"video"===a?i=>i.type===sd.emsg&&o:i=>i.type===sd.audioId3&&h||i.type===sd.emsg&&o,n1(n.track,r,s,i)}}onLevelUpdated(i,{details:r}){this.updateDateRangeCues(r,!0)}onLevelPtsUpdated(i,r){Math.abs(r.drift)>.01&&this.updateDateRangeCues(r.details)}updateDateRangeCues(i,r){var s,a;if(!this.hls||!this.media)return;let{assetPlayerId:n,timelineOffset:l,enableDateRangeMetadataCues:o,interstitialsController:h}=this.hls.config;if(!o)return;let d=n9();if(n&&l&&!h){let{fragmentStart:r,fragmentEnd:s}=i,a=this.assetCue;a?(a.startTime=r,a.endTime=s):d&&(a=this.assetCue=n7(d,r,s,{assetPlayerId:this.hls.config.assetPlayerId},"hlsjs.interstitial.asset"))&&(a.id=n,this.id3Track||(this.id3Track=this.createTrack(this.media)),this.id3Track.track.addCue(a),a.addEventListener("enter",this.onEventCueEnter))}if(!i.hasProgramDateTime)return;let{id3Track:u}=this,{dateRanges:f}=i,c=Object.keys(f),g=this.dateRangeCuesAppended;if(u&&r)if(null!=(s=u.track.cues)&&s.length){let i=Object.keys(g).filter(i=>-1===c.indexOf(i));for(let r=i.length;r--;){let s=i[r],n=null==(a=g[s])?void 0:a.cues;delete g[s],n&&Object.keys(n).forEach(i=>{let r=n[i];if(r){r.removeEventListener("enter",this.onEventCueEnter);try{u.track.removeCue(r)}catch{}}})}}else g=this.dateRangeCuesAppended={};let p=i.fragments[i.fragments.length-1];if(!(0===c.length||!m(null==p?void 0:p.programDateTime))){this.id3Track||(this.id3Track=this.createTrack(this.media));for(let i=0;i<c.length;i++){let r=c[i],s=f[r],a=s.startTime,n=g[r],l=(null==n?void 0:n.cues)||{},o=(null==n?void 0:n.durationKnown)||!1,u=le,{duration:m,endDate:p}=s;if(p&&null!==m)u=a+m,o=!0;else if(s.endOnNext&&!o){let i=c.reduce((i,r)=>{if(r!==s.id){let a=f[r];if(a.class===s.class&&a.startDate>s.startDate&&(!i||s.startDate<i.startDate))return a}return i},null);i&&(u=i.startTime,o=!0)}let v=Object.keys(s.attr);for(let i=0;i<v.length;i++){let f=v[i];if("ID"===f||"CLASS"===f||"CUE"===f||"START-DATE"===f||"DURATION"===f||"END-DATE"===f||"END-ON-NEXT"===f)continue;let c=l[f];if(c)o&&!(null!=n&&n.durationKnown)?c.endTime=u:Math.abs(c.startTime-a)>.01&&(c.startTime=a,c.endTime=u);else if(d){let i=s.attr[f];("SCTE35-OUT"===f||"SCTE35-IN"===f||"SCTE35-CMD"===f)&&(i=eE(i));let n=n7(d,a,u,{key:f,data:i},sd.dateRange);n&&(n.id=r,this.id3Track.track.addCue(n),l[f]=n,h&&("X-ASSET-LIST"===f||"X-ASSET-URL"===f)&&n.addEventListener("enter",this.onEventCueEnter))}}g[r]={cues:l,dateRange:s,durationKnown:o}}}}};function li(){return self.SourceBuffer||self.WebKitSourceBuffer}function lr(){if(!ei())return!1;let i=li();return!i||i.prototype&&"function"==typeof i.prototype.appendBuffer&&"function"==typeof i.prototype.remove}var ls,la,ln,ll,lo,lh=class extends r4{constructor(i,r,s){super(i,r,s,"stream-controller",b.MAIN),this.audioCodecSwap=!1,this.level=-1,this._forceStartLoad=!1,this._hasEnoughToStart=!1,this.altAudio=0,this.audioOnly=!1,this._couldBacktrack=!1,this._backtrackFragment=void 0,this.audioCodecSwitch=!1,this.videoBuffer=null,this.onMediaPlaying=()=>{this.tick()},this.onMediaSeeked=()=>{let i=this.media,r=i?i.currentTime:null;if(null===r||!m(r)||(this.log(`Media seeked to ${r}`),!this.getBufferedFrag(r)))return;let s=this.getFwdBufferInfoAtPos(i,r,b.MAIN,0);s&&0!==s.len?this.tick():this.log(`Main buffer empty at ${r} on "seeked" event: ${s&&s.len}`)},this.registerListeners()}registerListeners(){super.registerListeners();let{hls:i}=this;i.on(T.MANIFEST_PARSED,this.onManifestParsed,this),i.on(T.LEVEL_LOADING,this.onLevelLoading,this),i.on(T.LEVEL_LOADED,this.onLevelLoaded,this),i.on(T.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),i.on(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.on(T.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),i.on(T.BUFFER_CREATED,this.onBufferCreated,this),i.on(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this)}unregisterListeners(){super.unregisterListeners();let{hls:i}=this;i.off(T.MANIFEST_PARSED,this.onManifestParsed,this),i.off(T.LEVEL_LOADED,this.onLevelLoaded,this),i.off(T.FRAG_LOAD_EMERGENCY_ABORTED,this.onFragLoadEmergencyAborted,this),i.off(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.off(T.AUDIO_TRACK_SWITCHED,this.onAudioTrackSwitched,this),i.off(T.BUFFER_CREATED,this.onBufferCreated,this),i.off(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this)}onHandlerDestroying(){this.onMediaPlaying=this.onMediaSeeked=null,this.unregisterListeners(),super.onHandlerDestroying()}
28startLoad(i,r){if(this.levels){let{lastCurrentTime:s,hls:a}=this;if(this.stopLoad(),this.setInterval(100),this.level=-1,!this.startFragRequested){let i=a.startLevel;-1===i&&(a.config.testBandwidth&&this.levels.length>1?(i=0,this.bitrateTest=!0):i=a.firstAutoLevel),a.nextLoadLevel=i,this.level=a.loadLevel,this._hasEnoughToStart=!!r}s>0&&-1===i&&!r&&this.initPTS.length&&(this.log(`Override startPosition with lastCurrentTime @${s}`),i=s),this.state=rW,this.nextLoadPosition=this.lastCurrentTime=i+this.timelineOffset,this.startPosition=r?-1:i,r||this.fragmentTracker.hasFragments(this.playlistType)||(this._hasEnoughToStart=this.startFragRequested=!1),this.tick()}else this._forceStartLoad=!0,this.state=rq}stopLoad(){this._forceStartLoad=!1,super.stopLoad()}doTick(){switch(this.state){case r3:{let{levels:i,level:r}=this,s=null==i?void 0:i[r],a=null==s?void 0:s.details;if(a&&(!a.live||this.levelLastLoaded===s&&!this.waitForLive(s))){if(this.waitForCdnTuneIn(a))break;this.state=rW;break}this.hls.nextLoadLevel!==this.level&&(this.state=rW);break}case rX:this.checkRetryDate()}this.state===rW&&this.doTickIdle(),this.onTickEnd()}onTickEnd(){var i;super.onTickEnd(),null!=(i=this.media)&&i.readyState&&!1===this.media.seeking&&(this.lastCurrentTime=this.media.currentTime),this.checkFragmentChanged()}doTickIdle(){let{hls:i,levelLastLoaded:r,levels:s,media:a}=this;if(null===r||!a&&!this.primaryPrefetch&&(this.startFragRequested||!i.config.startFragPrefetch)||this.altAudio&&this.audioOnly)return;let n=this.buffering?i.nextLoadLevel:i.loadLevel;if(!(null!=s&&s[n]))return;let l=s[n],o=this.getMainFwdBufferInfo();if(null===o)return;let h=this.getLevelDetails();if(h&&this._streamEnded(o,h)){let i={type:this.targetBufferType()};this.hls.trigger(T.BUFFER_EOS,i),this.state=r0;return}if(!this.buffering)return;i.loadLevel!==n&&-1===i.manualLevel&&this.log(`Adapting to level ${n} from level ${this.level}`),this.level=i.nextLoadLevel=n;let d=l.details;if(!d||this.state===r3||this.waitForLive(l)){this.level=n,this.state=r3,this.startFragRequested=!1;return}let u=o.len,f=this.getMaxBufferLength(l.maxBitrate);if(u>=f)return;this.backtrackFragment&&this.backtrackFragment.start>o.end&&(this.backtrackFragment=void 0);let c=this.backtrackFragment?this.backtrackFragment.start:o.end,g=this.getNextFragment(c,d);if(this.couldBacktrack&&!this.fragPrevious&&g&&_(g)&&"OK"!==this.fragmentTracker.getState(g)){var m;let i=(null==(m=this.backtrackFragment)?g:m).sn-d.startSN,r=d.fragments[i-1];r&&g.cc===r.cc&&(g=r,this.fragmentTracker.removeFragment(r))}else this.backtrackFragment&&o.len&&(this.backtrackFragment=void 0);if(g&&this.isLoopLoading(g,c)){if(!g.gap){let i=this.audioOnly&&!this.altAudio?I:k,r=(i===k?this.videoBuffer:this.mediaBuffer)||this.media;r&&this.afterBufferFlushed(r,i)}g=this.getNextFragmentLoopLoading(g,d,o,b.MAIN,f)}g&&(this.exceedsMaxBuffer(o,f,g)||this.loadFragment(g,l,c))}loadFragment(i,r,s){let a=this.fragmentTracker.getState(i);a===iA||a===iR?this.bitrateTest?(this.log(`Fragment ${i.sn} of level ${i.level} is being downloaded to test bitrate and will not be buffered`),this._loadBitrateTestFrag(i,r)):super.loadFragment(i,r,s):this.clearTrackerIfNeeded(i)}immediateLevelSwitch(){if(this.abortCurrentFrag(),this.flushMainBuffer(0,1/0),0!==this.altAudio){var i;((null==(i=this.getLevelDetails())?void 0:i.fragmentStart)||0)>this.lastCurrentTime&&super.flushMainBuffer(0,1/0,"audio")}}getBufferOutput(){return this.mediaBuffer&&2===this.altAudio?this.mediaBuffer:this.media}checkFragmentChanged(){let i=this.fragPlaying;if(!this.checkFragPlaying())return!1;let r=this.fragPlaying;if(r){let s=r.level;this.hls.trigger(T.FRAG_CHANGED,{frag:r,previousFrag:i}),(null==i?void 0:i.level)!==s&&this.hls.trigger(T.LEVEL_SWITCHED,{level:s})}return!0}get backtrackFragment(){return this._backtrackFragment}set backtrackFragment(i){this._backtrackFragment=i}get couldBacktrack(){return this._couldBacktrack}set couldBacktrack(i){this._couldBacktrack=i}abortCurrentFrag(){this.backtrackFragment=void 0,super.abortCurrentFrag()}flushMainBuffer(i,r){super.flushMainBuffer(i,r,this.targetBufferType())}targetBufferType(){return 2!==this.altAudio||this.audioOnly?null:"video"}onMediaAttached(i,r){super.onMediaAttached(i,r);let s=r.media;rH(s,"playing",this.onMediaPlaying),rH(s,"seeked",this.onMediaSeeked)}onMediaDetaching(i,r){let{media:s}=this;s&&(rV(s,"playing",this.onMediaPlaying),rV(s,"seeked",this.onMediaSeeked)),this.videoBuffer=null,super.onMediaDetaching(i,r),r.transferMedia||(this._hasEnoughToStart=!1)}onManifestLoading(){super.onManifestLoading(),this.log("Trigger BUFFER_RESET"),this.hls.trigger(T.BUFFER_RESET,void 0),this.couldBacktrack=!1,this.backtrackFragment=void 0,this.altAudio=0,this.audioOnly=!1}onManifestParsed(i,r){var s;let a,n=!1,l=!1;for(let i=0;i<r.levels.length;i++){let s=r.levels[i].audioCodec;s&&(n=n||-1!==s.indexOf("mp4a.40.2"),l=l||-1!==s.indexOf("mp4a.40.5"))}this.audioCodecSwitch=n&&l&&"function"!=typeof(null==(a=li())||null==(s=a.prototype)?void 0:s.changeType),this.audioCodecSwitch&&this.log("Both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC"),this.levels=r.levels,this.startFragRequested=!1}onLevelLoading(i,r){let{levels:s}=this;if(!s||this.state!==rW)return;let a=r.levelInfo;(!a.details||a.details.live&&(this.levelLastLoaded!==a||a.details.expired)||this.waitForCdnTuneIn(a.details))&&(this.state=r3)}onLevelLoaded(i,r){var s,a;let{levels:n,startFragRequested:l}=this,o=r.level,h=r.details,d=h.totalduration;if(!n)return void this.warn(`Levels were reset while loading level ${o}`);this.log(`Level ${o} loaded [${h.startSN},${h.endSN}]${h.lastPartSn?`[part-${h.lastPartSn}-${h.lastPartIndex}]`:""}, cc [${h.startCC}, ${h.endCC}] duration:${d}`);let u=r.levelInfo,f=this.fragCurrent;f&&(this.state===rz||this.state===rX)&&f.level!==r.level&&f.loader&&this.abortCurrentFrag();let c=0;if(h.live||null!=(s=u.details)&&s.live){if(this.checkLiveUpdate(h),h.deltaUpdateFailed)return;c=this.alignPlaylists(h,u.details,null==(a=this.levelLastLoaded)?void 0:a.details)}if(u.details=h,this.levelLastLoaded=u,l||this.setStartPosition(h,c),this.hls.trigger(T.LEVEL_UPDATED,{details:h,level:o}),this.state===r3){if(this.waitForCdnTuneIn(h))return;this.state=rW}l&&h.live&&this.synchronizeToLiveEdge(h),this.initPTS.some((i,r)=>{if(r>=h.startCC)return!0;delete this.initPTS[r]}),this.tick()}synchronizeToLiveEdge(i){let{config:r,media:s}=this;if(!s)return;let a=this.hls.liveSyncPosition,n=this.playhead,l=i.fragmentStart,o=i.edge,h=n>=l-r.maxFragLookUpTolerance&&n<=o;if(null!==a&&s.duration>a&&(n<a||!h)){let l=void 0===r.liveMaxLatencyDuration?r.liveMaxLatencyDurationCount*i.targetduration:r.liveMaxLatencyDuration;if((!h&&s.readyState<4||n<o-l)&&(this._hasEnoughToStart||(this.nextLoadPosition=a),s.readyState))if(this.warn(`Playback: ${n} is located too far from the end of live sliding playlist: ${o}, reset currentTime to : ${a}`),"buffered"===this.config.liveSyncMode){var d;let i=iK.bufferInfo(s,a,0);if(!(null!=(d=i.buffered)&&d.length)||i.start<=n){s.currentTime=a;return}let{nextStart:r}=iK.bufferedInfo(i.buffered,n,0);r&&(s.currentTime=r)}else s.currentTime=a}}_handleFragmentLoadProgress(i){var r;let s=i.frag,{part:a,payload:n}=i,{levels:l}=this;if(!l)return void this.warn(`Levels were reset while fragment load was in progress. Fragment ${s.sn} of level ${s.level} will not be buffered`);let o=l[s.level];if(!o)return void this.warn(`Level ${s.level} not found on progress`);let h=o.details;if(!h){this.warn(`Dropping fragment ${s.sn} of level ${s.level} after level details were reset`),this.fragmentTracker.removeFragment(s);return}let d=o.videoCodec,u=h.PTSKnown||!h.live,f=null==(r=s.initSegment)?void 0:r.data,c=this._getAudioCodec(o),g=this.transmuxer=this.transmuxer||new al(this.hls,b.MAIN,this._handleTransmuxComplete.bind(this),this._handleTransmuxerFlush.bind(this)),m=a?a.index:-1,{decryptRange:p,byteRange:v}=iO(s,a,this.iframesOnly),y=new iU(s.level,s.sn,s.stats.chunkCount,v?v.end-v.start:n.byteLength,m,-1!==m,s.duration,this.iframesOnly,p),E=this.initPTS[s.cc];g.push(n,f,c,d,s,a,h.totalduration,u,y,E)}onAudioTrackSwitching(i,r){let s=this.hls,a=0!==this.altAudio;if(io(r.url,s))this.altAudio=1;else{if(this.mediaBuffer!==this.media){this.log("Switching on main audio, use media.buffered to schedule main fragment loading"),this.mediaBuffer=this.media;let i=this.fragCurrent;i&&(this.log("Switching to main audio track, cancel main fragment load"),i.abortRequests(),this.fragmentTracker.removeFragment(i)),this.resetTransmuxer(),this.resetLoadingState()}else this.audioOnly&&this.resetTransmuxer();if(a){this.altAudio=0,this.fragmentTracker.removeAllFragments(),s.once(T.BUFFER_FLUSHED,()=>{this.hls&&this.hls.trigger(T.AUDIO_TRACK_SWITCHED,r)}),s.trigger(T.BUFFER_FLUSHING,{startOffset:0,endOffset:1/0,type:null});return}s.trigger(T.AUDIO_TRACK_SWITCHED,r)}}onAudioTrackSwitched(i,r){let s=io(r.url,this.hls);if(s){let i=this.videoBuffer;i&&this.mediaBuffer!==i&&(this.log("Switching on alternate audio, use video.buffered to schedule main fragment loading"),this.mediaBuffer=i)}this.altAudio=2*!!s,this.tick()}onBufferCreated(i,r){let s=r.tracks,a,n,l=!1;for(let i in s){let r=s[i];if("main"===r.id){if(n=i,a=r,"video"===i){let r=s[i];r&&(this.videoBuffer=r.buffer)}}else l=!0}l&&a?(this.log(`Alternate track found, use ${n}.buffered to schedule main fragment loading`),this.mediaBuffer=a.buffer):this.mediaBuffer=this.media}onFragBuffered(i,r){let{frag:s,part:a}=r,n=s.type===b.MAIN;if(n){if(this.fragContextChanged(s)){this.warn(`Fragment ${s.sn}${a?" p: "+a.index:""} of level ${s.level} finished buffering, but was aborted. state: ${this.state}`),this.state===rJ&&(this.state=rW);return}let i=!1;if(_(s)&&(i=!!s.gap&&!s.tagList.some(i=>"GAP"===i[0])),this.fragBufferedComplete(s,a),i){var l;s.stats.retry++;let i=null==(l=this.levels)?void 0:l[s.level];i&&i.fragmentError++}}let o=this.media;o&&(!this._hasEnoughToStart&&iK.getBuffered(o).length&&(this._hasEnoughToStart=!0,this.seekToStartPos()),n&&this.tick())}get hasEnoughToStart(){return this._hasEnoughToStart}onError(i,r){var s;if(r.fatal){this.state=r1;return}switch(r.details){case E.FRAG_GAP:case E.FRAG_PARSING_ERROR:case E.FRAG_DECRYPT_ERROR:case E.FRAG_LOAD_ERROR:case E.FRAG_LOAD_TIMEOUT:case E.KEY_LOAD_ERROR:case E.KEY_LOAD_TIMEOUT:this.onFragmentOrKeyLoadError(b.MAIN,r);break;case E.LEVEL_LOAD_ERROR:case E.LEVEL_LOAD_TIMEOUT:case E.LEVEL_PARSING_ERROR:r.levelRetry||this.state!==r3||(null==(s=r.context)?void 0:s.type)!==R.LEVEL||(this.state=rW);break;case E.BUFFER_APPEND_NO_PROGRESS:if("main"!==r.parent)return;r.frag&&(r.appendsWithoutProgress||0)>
28=this.config.appendErrorMaxRetry&&(this.warn(`Marking fragment ${r.frag.sn} of level ${r.frag.level} as a gap after ${r.appendsWithoutProgress} appends without buffered range growth, to prevent loop loading`),this.fragmentTracker.addAsGap(r.frag));break;case E.BUFFER_ADD_CODEC_ERROR:case E.BUFFER_APPEND_ERROR:if("main"!==r.parent)return;this.reduceLengthAndFlushBuffer(r)&&this.resetLoadingState();break;case E.BUFFER_FULL_ERROR:if("main"!==r.parent)return;this.reduceLengthAndFlushBuffer(r)&&(!this.config.interstitialsController&&this.config.assetPlayerId?this._hasEnoughToStart=!0:this.flushMainBuffer(0,1/0));break;case E.INTERNAL_EXCEPTION:this.recoverWorkerError(r)}}onFragLoadEmergencyAborted(){this.state=rW,this._hasEnoughToStart||(this.startFragRequested=!1,this.nextLoadPosition=this.lastCurrentTime),this.tickImmediate()}onBufferFlushed(i,{type:r}){if(r!==I||!this.altAudio){let i=(r===k?this.videoBuffer:this.mediaBuffer)||this.media;i&&(this.afterBufferFlushed(i,r),this.tick())}}onLevelsUpdated(i,r){this.level>-1&&this.fragCurrent&&(this.level=this.fragCurrent.level,-1===this.level&&this.resetWhenMissingContext(this.fragCurrent)),this.levels=r.levels}swapAudioCodec(){this.audioCodecSwap=!this.audioCodecSwap}seekToStartPos(){let{media:i}=this;if(!i)return;let r=i.currentTime,s=this.startPosition;if(s>=0&&r<s){if(i.seeking)return void this.log(`could not seek to ${s}, already seeking at ${r}`);let a=this.timelineOffset;a&&s&&(s+=a);let n=this.getLevelDetails(),l=iK.getBuffered(i),o=l.length?l.start(0):0,h=o-s,d=Math.max(this.config.maxBufferHole,this.config.maxFragLookUpTolerance);(this.config.startOnSegmentBoundary||h>0&&(h<d||this.loadingParts&&h<2*((null==n?void 0:n.partTarget)||0)))&&(this.log(`adjusting start position by ${h} to match buffer start`),s+=h,this.startPosition=s),r<s&&(this.log(`seek to target start position ${s} from current time ${r} buffer start ${o}`),i.currentTime=s)}}_getAudioCodec(i){let r=this.config.defaultAudioCodec||i.audioCodec;return this.audioCodecSwap&&r&&(this.log("Swapping audio codec"),r=-1===r.indexOf("mp4a.40.5")?"mp4a.40.5":"mp4a.40.2"),r}_loadBitrateTestFrag(i,r){i.bitrateTest=!0,this._doFragLoad(i,r).then(i=>{let{hls:s}=this,a=null==i?void 0:i.frag;if(!a||this.fragContextChanged(a))return;r.fragmentError=0,this.state=rW,this.startFragRequested=!1,this.bitrateTest=!1;let n=a.stats;n.parsing.start=n.parsing.end=n.buffering.start=n.buffering.end=self.performance.now(),s.trigger(T.FRAG_LOADED,i),a.bitrateTest=!1}).catch(r=>{this.state!==rq&&this.state!==r1&&(this.warn(r),this.resetFragmentLoading(i))})}_handleTransmuxComplete(i){let r=this.playlistType,{hls:s}=this,{remuxResult:a,chunkMeta:n}=i,l=this.getCurrentContext(n);if(!l)return void this.resetWhenMissingContext(n);let{frag:o,part:h,level:d}=l,{video:u,text:f,id3:c,initSegment:g}=a,{details:p}=d,v=this.altAudio?void 0:a.audio;if(this.fragContextChanged(o))return void this.fragmentTracker.removeFragment(o);if(this.state=rZ,g){let i=g.tracks;if(i){let a=o.initSegment||o;if(this.unhandledEncryptionError(g,o))return;this._bufferInitSegment(d,i,a,n),s.trigger(T.FRAG_PARSING_INIT_SEGMENT,{frag:a,id:r,tracks:i})}let a=g.initPTS,l=g.timescale,h=this.initPTS[o.cc];if(m(a)&&(!h||h.baseTime!==a||h.timescale!==l)){let i=g.trackId;this.initPTS[o.cc]={baseTime:a,timescale:l,trackId:i};let n=this.initPTS.slice(0);s.trigger(T.INIT_PTS_FOUND,{timestampOffsets:n,frag:o,id:r,initPTS:a,timescale:l,trackId:i})}}if(u&&p){v&&"audiovideo"===u.type&&this.logMuxedErr(o);let i=p.fragments[o.sn-1-p.startSN],r=o.sn===p.startSN,s=!i||o.cc>i.cc;if(!1!==a.independent){let{startPTS:i,endPTS:a,startDTS:l,endDTS:d}=u;if(h)h.elementaryStreams[u.type]={startPTS:i,endPTS:a,startDTS:l,endDTS:d};else if(u.firstKeyFrame&&u.independent&&1===n.id&&!s&&(this.couldBacktrack=!0),u.dropped&&u.independent){let n=this.getMainFwdBufferInfo(),l=(n?n.end:this.getLoadPosition())+this.config.maxBufferHole,h=u.firstKeyFramePTS?u.firstKeyFramePTS:i;if(!r&&l<h-this.config.maxBufferHole&&!s)return void this.backtrack(o);s&&(o.gap=!0),o.setElementaryStreamInfo(u.type,o.start,a,o.start,d,!0)}
28else r&&i-(p.appliedTimelineOffset||0)>2&&(o.gap=!0);o.setElementaryStreamInfo(u.type,i,a,l,d),this.backtrackFragment&&(this.backtrackFragment=o),this.bufferFragmentData(u,o,h,n,r||s)}else{if(!r&&!s)return void this.backtrack(o);o.gap=!0}}if(v){let{startPTS:i,endPTS:r,startDTS:s,endDTS:a}=v;h&&(h.elementaryStreams[I]={startPTS:i,endPTS:r,startDTS:s,endDTS:a}),o.setElementaryStreamInfo(I,i,r,s,a),this.bufferFragmentData(v,o,h,n)}if(p&&null!=c&&c.samples.length){let i={id:r,frag:o,details:p,samples:c.samples};s.trigger(T.FRAG_PARSING_METADATA,i)}if(p&&f){let i={id:r,frag:o,details:p,samples:f.samples};s.trigger(T.FRAG_PARSING_USERDATA,i)}}logMuxedErr(i){this.warn(`${_(i)?"Media":"Init"} segment with muxed audiovideo where only video expected: ${i.url}`)}_bufferInitSegment(i,r,s,a){if(this.state!==rZ)return;this.audioOnly=!!r.audio&&!r.video,this.altAudio&&!this.audioOnly&&(delete r.audio,r.audiovideo&&this.logMuxedErr(s));let{audio:n,video:l,audiovideo:o}=r;if(n){let s=i.audioCodec,a=tq(n.codec,s);if("mp4a"===a&&(a="mp4a.40.5"),this.audioCodecSwitch){a&&(a=-1===a.indexOf("mp4a.40.5")?"mp4a.40.5":"mp4a.40.2");let i=n.metadata;i&&"channelCount"in i&&1!==(i.channelCount||1)&&!function(){if(void 0===tP){let i=tC.match(/Firefox\/(\d+)/i);tP=i?parseInt(i[1]):0}return tP}()&&(a="mp4a.40.5")}a&&-1!==a.indexOf("mp4a.40.5")&&/Android/.test(tC)&&"audio/mpeg"!==n.container&&(a="mp4a.40.2",this.log(`Android: force audio codec to ${a}`)),s&&s!==a&&this.log(`Swapping manifest audio codec "${s}" for "${a}"`),n.levelCodec=a,n.id=b.MAIN,this.log(`Init audio buffer, container:${n.container}, codecs[selected/level/parsed]=[${a||""}/${s||""}/${n.codec}]`),delete r.audiovideo}if(l){l.levelCodec=i.videoCodec,l.id=b.MAIN;let s=l.codec;if((null==s?void 0:s.length)===4)switch(s){case"hvc1":case"hev1":l.codec="hvc1.1.6.L120.90";break;case"av01":l.codec="av01.0.04M.08";break;case"avc1":l.codec="avc1.42e01e"}this.log(`Init video buffer, container:${l.container}, codecs[level/parsed]=[${i.videoCodec||""}/${s}]${l.codec===s?"":" parsed-corrected="+l.codec}${l.supplemental?" supplemental="+l.supplemental:""}`),delete r.audiovideo}o&&(this.iframesOnly&&this.logMuxedErr(s),this.log(`Init audiovideo buffer, container:${o.container}, codecs[level/parsed]=[${i.codecs}/${o.codec}]`),delete r.video,delete r.audio);let h=Object.keys(r);if(h.length){if(this.hls.trigger(T.BUFFER_CODECS,r),!this.hls)return;h.forEach(i=>{let n=r[i].initSegment;null!=n&&n.byteLength&&this.hls.trigger(T.BUFFER_APPENDING,{type:i,data:n,frag:s,part:null,chunkMeta:a,parent:s.type})})}this.tickImmediate()}getMainFwdBufferInfo(){let i=this.getBufferOutput();return this.getFwdBufferInfo(i,b.MAIN)}get maxBufferLength(){let{levels:i,level:r}=this,s=null==i?void 0:i[r];return s?this.getMaxBufferLength(s.maxBitrate):this.config.maxBufferLength}backtrack(i){this.couldBacktrack=!0,this.backtrackFragment=i,this.resetTransmuxer(),this.flushBufferGap(i),this.fragmentTracker.removeFragment(i),this.fragPrevious=null,this.nextLoadPosition=i.start,this.state=rW}get nextLevel(){let i=this.nextBufferedFrag;return i?i.level:-1}get currentFrag(){var i;if(this.fragPlaying)return this.fragPlaying;let r=(null==(i=this.media)?void 0:i.currentTime)||this.lastCurrentTime;return m(r)?this.getAppendedFrag(r):null}get currentProgramDateTime(){var i;let r=(null==(i=this.media)?void 0:i.currentTime)||this.lastCurrentTime;if(m(r)){let i=this.getLevelDetails(),s=this.currentFrag||(i?ig(null,i.fragments,r):null);if(s){let i=s.programDateTime;if(null!==i)return new Date(i+(r-s.start)*1e3)}}return null}get currentLevel(){let i=this.currentFrag;return i?i.level:-1}get nextBufferedFrag(){let i=this.currentFrag;return i?this.followingBufferedFrag(i):null}get forceStartLoad(){return this._forceStartLoad}},ld=class extends lh{constructor(...i){super(...i),this.currentOp=void 0,this.nextOp=void 0,this.cached=[],this.cachedSize=0,this.cacheFragmentData=!0,this.initDetails=void 0,this.onBufferedToEnd=()=>{let i=this.media;null!=i&&i.seeking&&(i.currentTime=i.currentTime)},this.onMediaSeeking=()=>{}}setInitPts(i){this.initPTS=i.slice()}loadMediaAt(i,r){if(!this.hls)return;let{seekOnAppend:s}=r,a=i+this.timelineOffset;switch(this.nextLoadPosition=this.lastCurrentTime=a,this.startPosition=i,this.state){case rq:case r0:case r1:this.state=rW}this.state===rW?(this.hls.resumeBuffering(),this.tick(),this.currentOp=[a,r]):this.nextOp=[a,r],this.hls.off(T.BUFFERED_TO_END,this.onBufferedToEnd);let n=this.media;s&&n&&this.seekTo(a)&&(this.currentOp=[a,r],this.nextOp=void 0,this.flushPipeline(a,!0))}seekTo(i){let r=this.media;if(r){var s;let a=null==(s=this.getLevelDetails())?void 0:s.edge,n=void 0===a?r.duration:a;if(i>=n&&(i=n-.01),iK.bufferInfo(r,i,0).len>0&&this.getBufferedAt(i))return r.currentTime=i,!0}return!1}getBufferedAt(i){return this.fragmentTracker.getBufferedFrag(i,b.MAIN)}cacheSet(i,r){if(!this.hls)return;i.data=r;let s=this.cached;s.push(i),this.cachedSize+=r.buffer.byteLength;let a=this.hls.config.iframeCacheLimit;for(;this.cachedSize>a&&s.length>1;){let i=s.shift();if(i.data)this.cachedSize-=i.data.byteLength,i.data=void 0;else{this.cached=s.filter(i=>!!i.data),this.cachedSize=s.reduce((i,{data:r})=>r?r.buffer.byteLength:0,0);break}}}onHandlerDestroying(){this.cached.length=0,this.cachedSize=0,super.onHandlerDestroying()}_handleFragmentLoadProgress(i){let r=i.frag,{part:s,payload:a}=i;this.cacheFragmentData&&!s&&null!=a&&a.byteLength&&!r.data&&_(r)&&this.cacheSet(r,new Uint8Array(a.slice(0))),super._handleFragmentLoadProgress(i)}loadFragment(i,r,s){let a=this.fragmentTracker.getState(i);(a===iA||a===iR)&&this.canReplayCached(i)?this.replayCachedFragment(i):super.loadFragment(i,r,s)}canReplayCached(i){var r;if(!this.cacheFragmentData||!(null!=(r=i.data)&&r.byteLength))return!1;let s=i.decryptdata;return(null==s?void 0:s.keyFormat)!=="identity"||!!s.key}replayCachedFragment(i){let r=i.data.slice().buffer;
28this.log(`Buffering cached ${i.type} sn: ${i.sn} of level ${i.level} (${r.byteLength} bytes)`),this.fragCurrent=i,this.startFragRequested=!0;let s=i.stats=new L;s.loading.start=s.loading.first=s.loading.end=self.performance.now(),s.loaded=s.total=r.byteLength,s.chunkCount=1,this.state=rz;let a={frag:i,part:null,payload:r,networkDetails:null};this._handleFragmentLoadProgress(a),this.hls.trigger(T.FRAG_LOADED,a),this._handleFragmentLoadComplete(a)}fragBufferedComplete(i,r){super.fragBufferedComplete(i,r);let{currentOp:s,nextOp:a}=this;this.currentOp=this.nextOp=void 0,this.state=rq,null!=s&&s[1].seekOnAppend&&(this.flushPipeline(s[0],!a),this.seekTo(s[0])||this.log(`Could not seek to ${s[0]} after fragment buffered (superseded or flushed) buffer: ${this.media?rj(iK.getBuffered(this.media)):"none"}`)),a&&this.loadMediaAt.apply(this,a)}flushPipeline(i,r){if(r){let r=this.media;if(r){let s=iK.bufferInfo(r,i,0),a=s.len?s.nextStart:0;a&&(this.fragmentTracker.removeFragmentsInRange(a,1/0,b.MAIN),this.flushMainBuffer(a,1/0))}this.hls.once(T.BUFFERED_TO_END,this.onBufferedToEnd)}this.hls.trigger(T.BUFFER_EOS,{type:"video"})}get playhead(){return this.nextLoadPosition}startLoad(){if(!this.startFragRequested){let i=this.hls;i.nextLoadLevel=-1===i.startLevel?0:i.firstAutoLevel}}seekToStartPos(){}setStartPosition(){}alignPlaylists(i,r,s){let a=this.initDetails;return this.initDetails=null,super.alignPlaylists(i,r,s||a||void 0)}getMainFwdBufferInfo(){let i=this.playhead,r=this.getBufferedAt(i);if(r){let s=r.duration;return{len:s,start:i,end:i+s,bufferedIndex:-1}}return{len:0,start:i,end:i,bufferedIndex:-1}}_streamEnded(){let i=this.playhead,r=this.fragmentTracker.getBufferedFrag(i,b.MAIN);return!!(null!=r&&r.endList)}},lu=class extends ld{constructor(...i){super(...i),this._img=void 0,this.queued=void 0,this.cacheFragmentData=!1}get image(){return this._img}set image(i){var r;let s=null==(r=this._img)?void 0:r.src;s&&self.URL.revokeObjectURL(s),this._img=i}loadMediaAt(i){if(!this.hls)return;let r=i+this.timelineOffset;switch(this.nextLoadPosition=this.lastCurrentTime=r,this.startPosition=i,this.state){case rq:case r0:case r1:this.state=rW}if(this.state===rW){if(this.hls.resumeBuffering(),this.media||(this.media={}),this.tick(),this.state===rW){let r=this.getBufferedAt(i);r&&(this.fragCurrent=r,this.updateImage(r,null))}}else{let s=this.fragCurrent;(!s||i>=s.start&&i<s.end)&&(this.queued=[r])}}updateImage(i,r,s){let a=i.data;a||this.fragmentTracker.removeFragment(i);let n=this._img;if(n&&a){let l=self.performance.now();(r?r.stats:i.stats).buffering.start=i.stats.buffering.start=l,n.onload=()=>{if(!this.hls)return;let a=this.hls.levels[i.level];null!=a&&a.fragmentError&&(a.fragmentError=0,i.stats.retry=0);let n=self.performance.now(),l=r?r.stats:i.stats;l.buffering.end=i.stats.buffering.end=n,this.hls.trigger(T.FRAG_BUFFERED,{frag:i,part:r,stats:l,id:i.type,chunkMeta:s})},n.onerror=()=>{this.handleError("Image decode error",i,r,s)};let o=n.src;o&&self.URL.revokeObjectURL(o);let h=new Blob([a],{type:"image/jpeg"});n.src=self.URL.createObjectURL(h)}else this.state=rq,this.processQueued()}processQueued(){let i=this.queued;this.queued=void 0,i&&this.loadMediaAt.apply(this,i)}handleError(i,r,s,a){if(!this.hls)return;let n=Error(i);this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_PARSING_ERROR,chunkMeta:a,frag:r,part:s,fatal:!1,error:n,err:n})}_bufferInitSegment(){}bufferFragmentData(i,r,s,a){super.bufferFragmentData(i,r,s,a,!0);let n=td(new Uint8Array(i.data1),["mdat"]);0===n.length?this.handleError("Could not find I-Frame mdat",r,s,a):(this.cacheSet(r,n[0]),this.updateImage(r,s,a))}fragBufferedComplete(i,r){this.fragmentTracker.fragBuffered(i,!0),super.fragBufferedComplete(i,r),this.processQueued()}checkFragPlaying(){var i;let r=null==(i=this.fragPrevious)?void 0:i.start;if(void 0!==r){let i=this.getAppendedFrag(r);if(i&&!C(i,this.fragPlaying))return this.fragPlaying=i,!0}return!1}getMainFwdBufferInfo(){return{len:0,start:this.playhead,end:this.playhead,bufferedIndex:-1}}},lf={seekOnAppend:!0},lc=class extends X{constructor(i,r){super("iframes",i.logger),this.hls=void 0,this.stats=void 0,this.variableList=null,this.initPTS=[],this.iframeInstances=void 0,this.instanceCounter=0,ll||(ll=function(i){return class extends i{constructor(i,r,s,a){i.streamController||(i.streamController=ld),super(i),this._url=r,this.streamController.setInitPts(s),this.streamController.initDetails=a}loadSource(){}loadMediaAt(i,r=lf){if(i<0)return;let s=$($({},lf),r);this.loadingEnabled||this.startLoad(i),this.streamController.loadMediaAt(i,s)}}}(r)),lo||(lo=function(i){return class extends i{constructor(i,r,s,a){i.cmcdController=void 0,i.emeController=void 0,i.streamController||(i.streamController=lu),i.capLevelController=void 0,i.bufferController=void 0,super(i,r,s,a)}attachImage(i){this.streamController.image=i}
28detachImage(){this.streamController.image=void 0}loadSource(){}attachMedia(){throw Error("Image I-Frame player does not accept HTMLMediaElements")}detachMedia(){}recoverMediaError(){}transferMedia(){return null}loadMediaAt(i){if(i<0)return null;this.loadingEnabled||this.startLoad(i),this.streamController.loadMediaAt(i)}}}(ll)),this.hls=i,this.iframeInstances=[],this.registerListeners()}registerListeners(){let i=this.hls;i&&(i.on(T.MANIFEST_LOADING,this.clearAsset,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this),i.on(T.DESTROYING,this.onDestroying,this))}unregisterListeners(){let i=this.hls;i&&(i.off(T.MANIFEST_LOADING,this.clearAsset,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this),i.off(T.DESTROYING,this.onDestroying,this))}clearAsset(){this.stats=void 0,this.variableList=null,this.initPTS=[],this.iframeInstances.forEach(i=>i.destroy()),this.iframeInstances.length=0}onDestroying(){this.unregisterListeners(),this.clearAsset(),this.hls=void 0}onManifestLoaded(i,r){this.stats=r.stats,this.variableList=r.variableList}onLevelsUpdated(i,{levels:r}){var s;let a=null==(s=this.hls)?void 0:s.pathwayPriority;r.length&&a&&this.iframeInstances.forEach(i=>{i.pathwayPriority=a})}onInitPtsFound(i,{id:r,timestampOffsets:s}){r===b.MAIN&&(this.initPTS=s)}onFragBuffered(i,r){var s;let a=this.hls;a&&a.hasEnoughToStart&&((null==(s=a.mainForwardBufferInfo)?void 0:s.len)||0)>10&&this.iframeInstances.forEach(i=>{if(!i.loadingEnabled){var r;i.startLoad((null==(r=this.hls)||null==(r=r.media)?void 0:r.currentTime)||0)}})}createIFramePlayer(i){var r;return this.createInstance(ll,null==(r=this.hls)?void 0:r.iframeVariants,i)}createImageIFramePlayer(i){var r;let s=null==(r=this.hls)?void 0:r.iframeVariants.filter(i=>i.imageCodec);return this.createInstance(lo,s,i,"image-")}createInstance(i,r,s,a){let{hls:n}=this;if(!n)return null;let{url:l,userConfig:o,latestLevelDetails:h,loadLevelObj:d,loadLevel:u,bandwidthEstimate:f,sessionId:c}=n,{stats:g,variableList:m}=this;if(!(null!=r&&r.length)||!g||!l)return null;let p=`${a||""}iframe-player-${this.instanceCounter++}`,v=n.levels,y=d||v[u],E=id(y,o.videoPreference),S=(null==y?void 0:y.pathwayId)||".",A=new i($($({},o),{},{loggerId:p,primarySessionId:c,videoPreference:E,abrEwmaDefaultEstimate:f,streamController:void 0,audioStreamController:void 0,audioTrackController:void 0,subtitleStreamController:void 0,subtitleTrackController:void 0,timelineController:void 0,id3TrackController:void 0,fpsController:void 0,gapController:void 0,iframeController:void 0,cmcd:void 0,interstitialsController:void 0,backBufferLength:1/0,maxMaxBufferLength:1,capLevelToPlayerSize:!0,enableWorker:!1,autoStartLoad:!1,startFragPrefetch:!1,testBandwidth:!1,progressive:!1},s),l,this.initPTS,h);return this.iframeInstances=this.iframeInstances.filter(i=>!i.url),this.iframeInstances.push(A),A.trigger(T.MANIFEST_LOADED,{levels:r,contentSteering:{uri:"",pathwayId:S},sessionKeys:null,audioTracks:[],iframeVariants:[],sessionData:null,startTimeOffset:null,stats:g,networkDetails:null,url:l,variableList:m}),A}},lg=((d={})[d.Point=0]="Point",d[d.Range=1]="Range",d),lm=class{constructor(i,r){this.base=void 0,this._duration=null,this._timelineStart=null,this.appendInPlaceDisabled=void 0,this.appendInPlaceStarted=void 0,this.dateRange=void 0,this.hasPlayed=!1,this.cumulativeDuration=0,this.resumeOffset=NaN,this.playoutLimit=NaN,this.restrictions={skip:!1,jump:!1},this.snapOptions={out:!1,in:!1},this.assetList=[],this.assetListLoader=void 0,this.assetListResponse=null,this.resumeAnchor=void 0,this.error=void 0,this.resetOnResume=void 0,this.base=r,this.dateRange=i,this.setDateRange(i)}setDateRange(i){this.dateRange=i,this.resumeOffset=i.attr.optionalFloat("X-RESUME-OFFSET",this.resumeOffset),this.playoutLimit=i.attr.optionalFloat("X-PLAYOUT-LIMIT",this.playoutLimit),this.restrictions=i.attr.enumeratedStringList("X-RESTRICT",this.restrictions),this.snapOptions=i.attr.enumeratedStringList("X-SNAP",this.snapOptions)}reset(){var i;this.appendInPlaceStarted=!1,null==(i=this.assetListLoader)||i.destroy(),this.assetListLoader=void 0,this.supplementsPrimary||(this.assetListResponse=null,this.assetList=[],this._duration=null)}isAssetPastPlayoutLimit(i){var r;if(i>0&&i>=this.assetList.length)return!0;let s=this.playoutLimit;return!(i<=0||isNaN(s))&&(0===s||((null==(r=this.assetList[i])?void 0:r.startOffset)||0)>s)}findAssetIndex(i){return this.assetList.indexOf(i)}get identifier(){return this.dateRange.id}get startDate(){return this.dateRange.startDate}get startTime(){let i=this.dateRange.startTime;if(this.snapOptions.out){let r=this.dateRange.tagAnchor;if(r)return lv(r,i)?lp(i,r):i}return i}get startOffset(){return this.cue.pre?0:this.startTime}get startIsAligned(){if(0===this.startTime||this.snapOptions.out)return!0;let i=this.dateRange.tagAnchor;if(i){let r=this.dateRange.startTime;return r-lp(r,i)<.1}return!1}get resumptionOffset(){let i=this.resumeOffset,r=m(i)?i:this.duration;return this.cumulativeDuration+r}get resumeTime(){let i=this.startOffset+this.resumptionOffset;if(this.snapOptions.in){let r=this.resumeAnchor;if(r)return lv(r,i)?lp(i,r):i}return i}get appendInPlace(){return!!this.appendInPlaceStarted||!this.appendInPlaceDisabled&&!!(!this.cue.once&&!this.cue.pre&&this.startIsAligned&&(isNaN(this.playoutLimit)&&isNaN(this.resumeOffset)||this.resumeOffset&&this.duration&&.025>Math.abs(this.resumeOffset-this.duration)))}set appendInPlace(i){if(this.appendInPlaceStarted){this.resetOnResume=!i;return}this.appendInPlaceDisabled=!i}get timelineStart(){return null===this._timelineStart?this.startTime:this._timelineStart}set timelineStart(i){this._timelineStart=i}get duration(){let i=this.playoutLimit,r;return r=null===this._duration?this.dateRange.duration?this.dateRange.duration:this.dateRange.plannedDuration||0:this._duration,!isNaN(i)&&i<r&&(r=i),r}set duration(i){this._duration=i}get cue(){return this.dateRange.cue}get timelineOccupancy(){return"RANGE"===this.dateRange.attr["X-TIMELINE-OCCUPIES"]?lg.Range:lg.Point}get supplementsPrimary(){return"PRIMARY"===this.dateRange.attr["X-TIMELINE-STYLE"]}get contentMayVary(){return"NO"!==this.dateRange.attr["X-CONTENT-MAY-VARY"]}get assetUrl(){return this.dateRange.attr["X-ASSET-URI"]}get assetListUrl(){return this.dateRange.attr["X-ASSET-LIST"]}get baseUrl(){return this.base.url}get assetListLoaded(){return this.assetList.length>0||null!==this.assetListResponse}toString(){var i;return i=this,`["${i.identifier}" ${i.cue.pre?"<pre>":i.cue.post?"<post>":""}${i.timelineStart.toFixed(2)}-${i.resumeTime.toFixed(2)}]`}};function lp(i,r){return i-r.start<r.duration/2&&!(.025>Math.abs(i-(r.start+r.duration)))?r.start:r.start+r.duration}function lv(i,r){return r>i.start-.025&&r<i.start+i.duration+.025}function ly(i,r,s){let a=new self.URL(i,s);return"data:"!==a.protocol&&t2(a,"_HLS_primary_id",r),a}function lE(i,r){for(;null!=(s=i.assetList[++r])&&s.error;)var s;return r}function lT(i){let r=i.timelineStart,s=i.duration||0;return`["${i.identifier}" ${r.toFixed(2)}-${(r+s).toFixed(2)}]`}var lS=class{constructor(i,r,s,a){this.hls=void 0,this.interstitial=void 0,this.assetItem=void 0,this.tracks=null,this.hasDetail
28s=!1,this.mediaAttached=null,this._currentTime=void 0,this._bufferedEosTime=void 0,this.checkPlayout=()=>{this.reachedPlayout(this.currentTime)&&this.hls&&this.hls.trigger(T.PLAYOUT_LIMIT_REACHED,{})};let n=this.hls=new i(r);this.interstitial=s,this.assetItem=a;let l=()=>{this.hasDetails=!0};n.once(T.LEVEL_LOADED,l),n.once(T.AUDIO_TRACK_LOADED,l),n.once(T.SUBTITLE_TRACK_LOADED,l),n.on(T.MEDIA_ATTACHING,(i,{media:r})=>{this.removeMediaListeners(),this.mediaAttached=r,this.interstitial.playoutLimit&&(r.addEventListener("timeupdate",this.checkPlayout),this.appendInPlace&&n.on(T.BUFFER_APPENDED,()=>{let i=this.bufferedEnd;this.reachedPlayout(i)&&(this._bufferedEosTime=i,n.trigger(T.BUFFERED_TO_END,void 0))}))})}get appendInPlace(){return this.interstitial.appendInPlace}loadSource(){let i=this.hls;if(i)if(i.url)i.levels.length&&!i.started&&i.startLoad(-1,!0);else{let r=this.assetItem.uri;try{r=ly(r,i.config.primarySessionId||"").href}catch{}i.loadSource(r)}}bufferedInPlaceToEnd(i,r){var s;if(!this.appendInPlace)return!1;if(null!=(s=this.hls)&&s.bufferedToEnd)return!0;if(!i)return!1;let a=Math.min(this._bufferedEosTime||1/0,this.duration),n=this.timelineOffset+(r||0),l=iK.bufferInfo(i,n,.02);return this.getAssetTime(l.end)>=a-.02}reachedPlayout(i){let r=this.interstitial.playoutLimit;return this.startOffset+i>=r}get destroyed(){var i;return!(null!=(i=this.hls)&&i.userConfig)}get assetId(){return this.assetItem.identifier}get interstitialId(){return this.assetItem.parentIdentifier}get media(){var i;return(null==(i=this.hls)?void 0:i.media)||null}get bufferedEnd(){let i=this.media||this.mediaAttached;if(!i)return this._bufferedEosTime?this._bufferedEosTime:this.currentTime;let r=iK.bufferInfo(i,i.currentTime,.001);return this.getAssetTime(r.end)}get currentTime(){let i=this.media||this.mediaAttached;return i?this.getAssetTime(i.currentTime):this._currentTime||0}get duration(){let i=this.assetItem.duration;if(!i)return 0;let r=this.interstitial.playoutLimit;if(r){let s=r-this.startOffset;if(s>0&&s<i)return s}return i}get remaining(){let i=this.duration;return i?Math.max(0,i-this.currentTime):0}get startOffset(){return this.assetItem.startOffset}get timelineOffset(){var i;return(null==(i=this.hls)?void 0:i.config.timelineOffset)||0}set timelineOffset(i){let r=this.timelineOffset;if(i!==r&&Math.abs(i-r)>1/9e4&&this.hls){if(this.hasDetails)throw Error("Cannot set timelineOffset after playlists are loaded");this.hls.config.timelineOffset=i}}getAssetTime(i){return Math.min(Math.max(0,i-this.timelineOffset),this.duration)}removeMediaListeners(){let i=this.mediaAttached;i&&(this._currentTime=i.currentTime,this.bufferSnapShot(),i.removeEventListener("timeupdate",this.checkPlayout))}bufferSnapShot(){if(this.mediaAttached){var i;null!=(i=this.hls)&&i.bufferedToEnd&&(this._bufferedEosTime=this.bufferedEnd)}}destroy(){this.removeMediaListeners(),this.hls&&this.hls.destroy(),this.hls=null,this.tracks=this.mediaAttached=this.checkPlayout=null}attachMedia(i){var r;this.loadSource(),null==(r=this.hls)||r.attachMedia(i)}detachMedia(){var i;this.removeMediaListeners(),this.mediaAttached=null,null==(i=this.hls)||i.detachMedia()}resumeBuffering(){var i;null==(i=this.hls)||i.resumeBuffering()}pauseBuffering(){var i;null==(i=this.hls)||i.pauseBuffering()}transferMedia(){var i;return this.bufferSnapShot(),(null==(i=this.hls)?void 0:i.transferMedia())||null}resetDetails(){let i=this.hls;if(i&&this.hasDetails){i.stopLoad();let r=i=>delete i.details;i.levels.forEach(r),i.allAudioTracks.forEach(r),i.allSubtitleTracks.forEach(r),this.hasDetails=!1}}on(i,r,s){var a;null==(a=this.hls)||a.on(i,r)}once(i,r,s){var a;null==(a=this.hls)||a.once(i,r)}off(i,r,s){var a;null==(a=this.hls)||a.off(i,r)}toString(){var i;return`HlsAssetPlayer: ${lT(this.assetItem)} ${null==(i=this.hls)?void 0:i.sessionId} ${this.appendInPlace?"append-in-place":""}`}},lA=class extends X{constructor(i,r){super("interstitials-sched",r),this.onScheduleUpdate=void 0,this.eventMap={},this.events=null,this.items=null,this.durations={primary:0,playout:0,integrated:0},this.onScheduleUpdate=i}destroy(){this.reset(),this.onScheduleUpdate=null}reset(){this.eventMap={}
28,this.setDurations(0,0,0),this.events&&this.events.forEach(i=>i.reset()),this.events=this.items=null}resetErrorsInRange(i,r){return this.events?this.events.reduce((s,a)=>i<=a.startOffset&&r>a.startOffset?(delete a.error,s+1):s,0):0}get duration(){let i=this.items;return i?i[i.length-1].end:0}get length(){return this.items?this.items.length:0}getEvent(i){return i&&this.eventMap[i]||null}hasEvent(i){return i in this.eventMap}findItemIndex(i,r){if(i.event)return this.findEventIndex(i.event.identifier);let s=-1;i.nextEvent?s=this.findEventIndex(i.nextEvent.identifier)-1:i.previousEvent&&(s=this.findEventIndex(i.previousEvent.identifier)+1);let a=this.items;if(a)for(a[s]||(void 0===r&&(r=i.start),s=this.findItemIndexAtTime(r));s>=0&&null!=(n=a[s])&&n.event;){var n;s--}return s}findItemIndexAtTime(i,r){let s=this.items;if(s)for(let a=0;a<s.length;a++){let n=s[a];r&&"primary"!==r&&(n=n[r]);let l=n.start,o=s[a].event,h=null!=o&&o.cue.pre?o.duration:n.end;if(i===l||i>l&&i<h)return a}return -1}findJumpRestrictedIndex(i,r){let s=this.items;if(s)for(let a=i;a<=r&&s[a];a++){let i=s[a].event;if(null!=i&&i.restrictions.jump&&!i.appendInPlace)return a}return -1}findEventIndex(i){let r=this.items;if(r)for(let a=r.length;a--;){var s;if((null==(s=r[a].event)?void 0:s.identifier)===i)return a}return -1}findAssetIndex(i,r){let s=i.assetList,a=s.length;if(a>1)for(let i=0;i<a;i++){let n=s[i];if(!n.error){let s=n.timelineStart;if(r===s||r>s&&(r<s+(n.duration||0)||i===a-1))return i}}return 0}get assetIdAtEnd(){var i;let r=null==(i=this.items)||null==(i=i[this.length-1])?void 0:i.event;if(r){let i=r.assetList,s=i[i.length-1];if(s)return s.identifier}return null}parseInterstitialDateRanges(i,r,s=0){let a=i.main.details,{dateRanges:n}=a,l=this.events,o=this.parseDateRanges(n,{url:a.url},r),h=Object.keys(n),d=l?l.filter(i=>-1===h.indexOf(i.identifier)):[];o.length&&o.sort((i,r)=>{let s=i.cue.pre,a=i.cue.post,n=r.cue.pre,l=r.cue.post;if(s&&!n)return -1;if(n&&!s||a&&!l)return 1;if(l&&!a)return -1;if(!s&&!n&&!a&&!l){let s=i.startTime,a=r.startTime;if(s!==a)return s-a}return i.dateRange.tagOrder-r.dateRange.tagOrder}),this.events=o,d.forEach(i=>{this.removeEvent(i)}),this.updateSchedule(i,d,s)}updateSchedule(i,r=[],s=0,a=!1){let n=this.events||[];
28if(n.length||r.length||this.length<2){let l=this.items,o=this.parseSchedule(n,i,s);(a||r.length||(null==l?void 0:l.length)!==o.length||o.some((i,r)=>Math.abs(i.playout.start-l[r].playout.start)>.005||Math.abs(i.playout.end-l[r].playout.end)>.005))&&(this.items=o,this.onScheduleUpdate(r,l))}}parseDateRanges(i,r,s){let a=[],n=Object.keys(i);for(let l=0;l<n.length;l++){let o=n[l],h=i[o];if(h.isInterstitial){let i=this.eventMap[o];i?i.setDateRange(h):(i=new lm(h,r),this.eventMap[o]=i,!1===s&&(i.appendInPlace=s)),a.push(i)}}return a}parseSchedule(i,r,s=0){let a=[],n=r.main.details,l=n.live?1/0:n.edge,o=0;if((i=i.filter(i=>!i.error&&!(i.cue.once&&i.hasPlayed))).length){this.resolveOffsets(i,r);let d=0,u=0;if(i.forEach((r,h)=>{let f=r.cue.pre,c=r.cue.post,g=i[h-1]||null,m=r.appendInPlace,p=c?l:r.startOffset,v=r.duration,y=r.timelineOccupancy===lg.Range?v:0,E=f&&n.live?s+(r.resumeOffset||0):0,T=E||r.resumptionOffset,S=(null==g?void 0:g.startTime)===p,A=p+r.cumulativeDuration,L=m?A+v:p+T;if(f||!c&&p<=0){let i=u;u+=y,r.timelineStart=A;let s=o;o+=v,a.push({event:r,start:A,end:L,playout:{start:s,end:o},integrated:{start:i,end:u}})}else{if(!(p<=l))return;if(!S){let s=p-d;if(s>.033){let n=d,l=u;u+=s;let f=o;o+=s;let c={previousEvent:i[h-1]||null,nextEvent:r,start:n,end:n+s,playout:{start:f,end:o},integrated:{start:l,end:u}};a.push(c)}else s>0&&g&&(g.cumulativeDuration+=s,a[a.length-1].end=p)}c&&(L=A),r.timelineStart=A;let s=u;u+=y;let n=o;o+=v,a.push({event:r,start:A,end:L,playout:{start:n,end:o},integrated:{start:s,end:u}})}let R=E||r.resumeTime;d=c||R>l?l:!f&&L&&r.appendInPlaceStarted&&R-L>.033?L:R}),d<l){var h;let i=d,r=u,s=l-d;u+=s;let n=o;o+=s,a.push({previousEvent:(null==(h=a[a.length-1])?void 0:h.event)||null,nextEvent:null,start:d,end:i+s,playout:{start:n,end:o},integrated:{start:r,end:u}})}this.setDurations(l,o,u)}else a.push({previousEvent:null,nextEvent:null,start:0,end:l,playout:{start:0,end:l},integrated:{start:0,end:l}}),this.setDurations(l,l,l);return a}setDurations(i,r,s){this.durations={primary:i,playout:r,integrated:s}}resolveOffsets(i,r){let s=r.main.details,a=s.live?1/0:s.edge,n=0,l=-1;i.forEach((o,h)=>{let d=o.cue.pre,u=o.cue.post,f=d?0:u?a:o.startTime;this.updateAssetDurations(o),l===f?o.cumulativeDuration=n:(n=0,l=f),!u&&o.snapOptions.in&&(o.resumeAnchor=ig(null,s.fragments,o.startOffset+o.resumptionOffset,0,0)||void 0),o.appendInPlace&&!o.appendInPlaceStarted&&(this.primaryCanResumeInPlaceAt(o,r)||(o.appendInPlace=!1)),!o.appendInPlace&&h+1<i.length&&i[h+1].startTime-i[h].resumeTime<.033&&(i[h+1].appendInPlace=!1,i[h+1].appendInPlace&&this.warn(`Could not change append strategy for abutting event ${o}`));let c=m(o.resumeOffset)?o.resumeOffset:o.duration;n+=c})}primaryCanResumeInPlaceAt(i,r){let s=i.resumeTime,a=i.startTime+i.resumptionOffset;return Math.abs(s-a)>.025?(this.log(`"${i.identifier}" resumption ${s} not aligned with estimated timeline end ${a}`),!1):!Object.keys(r).some(a=>{let n=r[a].details,l=n.edge;if(s>=l)return this.log(`"${i.identifier}" resumption ${s} past ${a} playlist end ${l}`),!1;let o=ig(null,n.fragments,s);if(!o)return this.log(`"${i.identifier}" resumption ${s} does not align with any fragments in ${a} playlist (${n.fragStart}-${n.fragmentEnd})`),!0;let h=.175*("audio"===a);return!(Math.abs(o.start-s)<.025+h||Math.abs(o.end-s)<.025+h)&&(this.log(`"${i.identifier}" resumption ${s} not aligned with ${a} fragment bounds (${o.start}-${o.end} sn: ${o.sn} cc: ${o.cc})`),!0)})}updateAssetDurations(i){if(!i.assetListLoaded)return;let r=i.timelineStart,s=0,a=!1,n=!1;for(let l=0;l<i.assetList.length;l++){let o=i.assetList[l],h=r+s;o.startOffset=s,o.timelineStart=h,a||(a=null===o.duration),n||(n=!!o.error),s+=o.error?0:o.duration||0}i.duration=a&&!n?Math.max(s,i.duration):s}removeEvent(i){i.reset(),delete this.eventMap[i.identifier]}};function lL(i){return`[${i.event?'"'+i.event.identifier+'"':"primary"}: ${i.start.toFixed(2)}-${i.end.toFixed(2)}]`}var lR=class{constructor(i){this.hls=void 0,this.hls=i}destroy(){this.hls=null}loadAssetList(i,r){let s=i.assetListUrl,a;try{a=ly(s,this.hls.sessionId,i.baseUrl)}catch(a){let r=this.assignAssetListError(i,E.ASSET_LIST_LOAD_ERROR,a,s);this.hls.trigger(T.ERROR,r);return}r&&"data:"!==a.protocol&&t2(a,"_HLS_start_offset",""+r);
28let n=this.hls.config,l=new n.loader(n),o={type:R.INTERSTITIAL_ASSET_LIST,responseType:"json",url:a.href},h=n.interstitialAssetListLoadPolicy.default,d={loadPolicy:h,timeout:h.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0};return l.load(o,d,{onSuccess:(r,s,a,n)=>{let l=r.data;if(!Array.isArray(null==l?void 0:l.ASSETS)){let r=this.assignAssetListError(i,E.ASSET_LIST_PARSING_ERROR,Error("Invalid interstitial asset list"),a.url,s,n);this.hls.trigger(T.ERROR,r);return}i.assetListResponse=l,this.hls.trigger(T.ASSET_LIST_LOADED,{event:i,assetListResponse:l,networkDetails:n})},onError:(r,s,a,n)=>{let l=this.assignAssetListError(i,E.ASSET_LIST_LOAD_ERROR,Error(`Error loading X-ASSET-LIST: HTTP status ${r.code} ${r.text} (${s.url})`),s.url,n,a);this.hls.trigger(T.ERROR,l)},onTimeout:(r,s,a)=>{let n=this.assignAssetListError(i,E.ASSET_LIST_LOAD_TIMEOUT,Error(`Timeout loading X-ASSET-LIST (${s.url})`),s.url,r,a);this.hls.trigger(T.ERROR,n)}}),this.hls.trigger(T.ASSET_LIST_LOADING,{event:i}),l}assignAssetListError(i,r,s,a,n,l){return i.error=s,{type:y.NETWORK_ERROR,details:r,fatal:!1,interstitial:i,url:a,error:s,networkDetails:l,stats:n}}};function lb(i){var r;null==i||null==(r=i.play())||r.catch(()=>{})}function lI(i,r){return`[${i}] Advancing timeline position to ${r}`}var lk=class extends X{constructor(i,r){super("interstitials",i.logger),this.HlsPlayerClass=void 0,this.hls=void 0,this.assetListLoader=void 0,this.mediaSelection=null,this.altSelection=null,this.media=null,this.detachedData=null,this.requiredTracks=null,this.manager=null,this.playerQueue=[],this.bufferedPos=-1,this.timelinePos=-1,this.schedule=void 0,this.playingItem=null,this.bufferingItem=null,this.waitingItem=null,this.endedItem=null,this.playingAsset=null,this.endedAsset=null,this.bufferingAsset=null,this.bufferPastEdge=!1,this.shouldPlay=!1,this.onPlay=()=>{this.shouldPlay=!0},this.onPause=()=>{this.shouldPlay=!1},this.onSeeking=()=>{var i,r;let s=this.currentTime;if(void 0===s||this.playbackDisabled||!this.schedule)return;let a=s-this.timelinePos;if(Math.abs(a)<1/7056e5)return;let n=a<=-.01;-1!==this.timelinePos||this.effectivePlayingItem||this.checkStart(),this.timelinePos=s,this.bufferedPos=s;let l=this.playingItem;if(!l)return void this.checkBuffer();if(n&&this.schedule.resetErrorsInRange(s,s-a)&&this.updateSchedule(!0),this.checkBuffer(),n&&s<l.start||s>=l.end){let r=this.findItemIndex(l),a=this.schedule.findItemIndexAtTime(s);if(-1===a&&(a=r+(n?-1:1),this.log(`seeked ${n?"back ":""}to position not covered by schedule ${s} (resolving from ${r} to ${a})`)),!this.isInterstitial(l)&&null!=(i=this.media)&&i.paused&&(this.shouldPlay=!1),!n&&a>r){let i=this.schedule.findJumpRestrictedIndex(r+1,a);if(i>r)return void this.setSchedulePosition(i)}this.setSchedulePosition(a);return}let o=this.playingAsset;if(!o){if(this.playingLastItem&&this.isInterstitial(l)){let i=l.event.assetList[0];i&&(this.endedItem=this.playingItem,this.playingItem=null,this.setScheduleToAssetAtTime(s,i))}return}let h=o.timelineStart,d=o.duration||0;(n&&s<h||s>=h+d)&&(null!=(r=l.event)&&r.appendInPlace&&(this.clearAssetPlayers(l.event,l),this.flushFrontBuffer(s)),this.setScheduleToAssetAtTime(s,o))},this.onTimeupdate=()=>{let i=this.currentTime;if(void 0===i||this.playbackDisabled||(-1!==this.timelinePos||this.effectivePlayingItem||this.checkStart(),!(i>this.timelinePos)))return;this.timelinePos=i,i>this.bufferedPos&&this.checkBuffer();let r=this.playingItem;if(!r||this.playingLastItem)return;if(i>=r.end){this.timelinePos=r.end;let i=this.findItemIndex(r);this.setSchedulePosition(i+1)}let s=this.playingAsset;s&&i>=s.timelineStart+(s.duration||0)&&this.setScheduleToAssetAtTime(i,s)},this.onScheduleUpdate=(i,r)=>{let s=this.schedule;if(!s)return;let a=this.playingItem,n=s.events||[],l=s.items||[],o=s.durations,h=i.map(i=>i.identifier),d=!!(n.length||h.length);(d||r)&&this.log(`INTERSTITIALS_UPDATED (${n.length}): ${n}
29Schedule: ${l.map(i=>lL(i))} pos: ${this.timelinePos}`),h.length&&this.log(`Removed events ${h}`);let u=null,f=null;a&&(u=this.updateItem(a,this.timelinePos),this.itemsMatch(a,u)?this.playingItem=u:this.waitingItem=null),this.waitingItem=this.updateItem(this.waitingItem);let c=this.bufferingItem;if(c&&(f=this.updateItem(c,this.bufferedPos),this.itemsMatch(c,f)?this.bufferingItem=f:c.event&&(this.bufferingItem=this.playingItem,this.clearInterstitial(c.event,null))),i.forEac
vendor: 1,765 bytes, line 29
29h(i=>{i.assetList.forEach(i=>{this.clearAssetPlayer(i.identifier,null)})}),this.playerQueue.forEach(i=>{if(i.interstitial.appendInPlace){let r=i.assetItem.timelineStart,s=i.timelineOffset-r;if(s)try{i.timelineOffset=r}catch(a){Math.abs(s)>.025&&this.warn(`${a} ("${i.assetId}" ${i.timelineOffset}->${r})`)}}}),d||r){if(this.hls.trigger(T.INTERSTITIALS_UPDATED,{events:n.slice(0),schedule:l.slice(0),durations:o,removedIds:h}),this.isInterstitial(a)&&h.indexOf(a.event.identifier)>-1){this.warn(`Interstitial "${a.event.identifier}" removed while playing`),this.primaryFallback(a.event);return}a&&this.trimInPlace(u,a),c&&f!==u&&this.trimInPlace(f,c),this.checkBuffer()}},this.hls=i,this.HlsPlayerClass=r,this.assetListLoader=new lR(i),this.schedule=new lA(this.onScheduleUpdate,i.logger),this.registerListeners()}registerListeners(){let i=this.hls;i&&(i.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.on(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.on(T.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),i.on(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),i.on(T.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),i.on(T.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),i.on(T.ASSET_LIST_LOADED,this.onAssetListLoaded,this),i.on(T.BUFFER_APPENDED,this.onBufferAppended,this),i.on(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.on(T.BUFFERED_TO_END,this.onBufferedToEnd,this),i.on(T.MEDIA_ENDED,this.onMediaEnded,this),i.on(T.ERROR,this.onError,this),i.on(T.DESTROYING,this.onDestroying,this))}unregisterListeners(){let i=this.hls;
29i&&(i.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.off(T.AUDIO_TRACK_SWITCHING,this.onAudioTrackSwitching,this),i.off(T.AUDIO_TRACK_UPDATED,this.onAudioTrackUpdated,this),i.off(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),i.off(T.SUBTITLE_TRACK_UPDATED,this.onSubtitleTrackUpdated,this),i.off(T.EVENT_CUE_ENTER,this.onInterstitialCueEnter,this),i.off(T.ASSET_LIST_LOADED,this.onAssetListLoaded,this),i.off(T.BUFFER_CODECS,this.onBufferCodecs,this),i.off(T.BUFFER_APPENDED,this.onBufferAppended,this),i.off(T.BUFFER_FLUSHED,this.onBufferFlushed,this),i.off(T.BUFFERED_TO_END,this.onBufferedToEnd,this),i.off(T.MEDIA_ENDED,this.onMediaEnded,this),i.off(T.ERROR,this.onError,this),i.off(T.DESTROYING,this.onDestroying,this))}startLoad(){this.resumeBuffering()}stopLoad(){this.pauseBuffering()}resumeBuffering(){var i;null==(i=this.getBufferingPlayer())||i.resumeBuffering()}pauseBuffering(){var i;null==(i=this.getBufferingPlayer())||i.pauseBuffering()}destroy(){this.unregisterListeners(),this.stopLoad(),this.assetListLoader&&this.assetListLoader.destroy(),this.emptyPlayerQueue(),this.clearScheduleState(),this.schedule&&this.schedule.destroy(),this.media=this.detachedData=this.mediaSelection=this.requiredTracks=this.altSelection=this.schedule=this.manager=null,this.hls=this.HlsPlayerClass=null,this.assetListLoader=null,this.onPlay=this.onPause=this.onSeeking=this.onTimeupdate=null,this.onScheduleUpdate=null}onDestroying(){let i=this.primaryMedia||this.media;i&&this.removeMediaListeners(i)}removeMediaListeners(i){rV(i,"play",this.onPlay),rV(i,"pause",this.onPause),rV(i,"seeking",this.onSeeking),rV(i,"timeupdate",this.onTimeupdate)}onMediaAttaching(i,r){let s=this.media=r.media;rH(s,"seeking",this.onSeeking),rH(s,"timeupdate",this.onTimeupdate),rH(s,"play",this.onPlay),rH(s,"pause",this.onPause)}onMediaAttached(i,r){let s=this.effectivePlayingItem,a=this.detachedData;if(this.detachedData=null,null===s)this.checkStart();else if(!a){this.clearScheduleState();let i=this.findItemIndex(s);this.setSchedulePosition(i)}}clearScheduleState(){this.log("clear schedule state"),this.playingItem=this.bufferingItem=this.waitingItem=this.endedItem=this.playingAsset=this.endedAsset=this.bufferingAsset=null}onMediaDetaching(i,r){let s=!!r.transferMedia,a=this.media;if(this.media=null,!s&&(a&&this.removeMediaListeners(a),this.detachedData)){let i=this.getBufferingPlayer();i&&(this.log(`Removing schedule state for detachedData and ${i}`),this.playingAsset=this.endedAsset=this.bufferingAsset=this.bufferingItem=this.waitingItem=this.detachedData=null,i.detachMedia()),this.shouldPlay=!1}}get interstitialsManager(){if(!this.hls)return null;if(this.manager)return this.manager;let i=this,r=r=>r&&i.getAssetPlayer(r.identifier),s=(s,n,l,o,h)=>{if(s){let d=s[n].start,u=s.event;if(u){if("playout"===n||u.timelineOccupancy!==lg.Point){let i=r(l);(null==i?void 0:i.interstitial)===u&&(d+=i.assetItem.startOffset+i[h])}}else d+=("bufferedPos"===o?a():i[o])-s.start;return d}return 0},a=()=>{let r=i.bufferedPos;return r===Number.MAX_VALUE?n("primary"):Math.max(r,0)},n=r=>{var s,a;return null!=(s=i.primaryDetails)&&s.live?i.primaryDetails.edge:(null==(a=i.schedule)?void 0:a.durations[r])||0},l=(a,n)=>{var l,o;let h=i.effectivePlayingItem;if(null!=h&&null!=(l=h.event)&&l.restrictions.skip||!i.schedule)return;i.log(`seek to ${a} "${n}"`);let d=i.effectivePlayingItem,u=i.schedule.findItemIndexAtTime(a,n),f=null==(o=i.schedule.items)?void 0:o[u],c=i.getBufferingPlayer(),g=null==c?void 0:c.interstitial,m=null==g?void 0:g.appendInPlace,p=d&&i.itemsMatch(d,f);if(d&&(m||p)){let l=r(i.playingAsset),o=(null==l?void 0:l.media)||i.primaryMedia;if(o){let r="primary"===n?o.currentTime:s(d,n,i.playingAsset,"timelinePos","currentTime"),h=a-r,u=(m?r:o.currentTime)+h;if(u>=0&&(!l||m||u<=l.duration)){o.currentTime=u;return}}}if(f){let r=a;if("primary"!==n){let i=a-f[n].start;r=f.start+i}let s=!i.isInterstitial(f);if((!i.isInterstitial(d)||d.event.appendInPlace)&&(s||f.event.appendInPlace)){let s=i.media||(m?null==c?void 0:c.media:null);
29s&&(s.currentTime=r)}else if(d){let l=i.findItemIndex(d);if(u>l){let r=i.schedule.findJumpRestrictedIndex(l+1,u);if(r>l)return void i.setSchedulePosition(r)}let o=0;if(s)i.timelinePos=r,i.checkBuffer();else{let i=f.event.assetList,r=a-(f[n]||f).start;for(let s=i.length;s--;){let a=i[s];if(a.duration&&r>=a.startOffset&&r<a.startOffset+a.duration){o=s;break}}}i.setSchedulePosition(u,o)}}},o=()=>{let r=i.effectivePlayingItem;if(i.isInterstitial(r))return r;let s=i.bufferingItem||i.waitingItem;return i.isInterstitial(s)?s:null},h={get bufferedEnd(){let r=i.bufferingItem||i.waitingItem,a=i.bufferingItem;if(a&&a===r){var d;return s(a,"playout",i.bufferingAsset,"bufferedPos","bufferedEnd")-a.playout.start||(null==(d=i.bufferingAsset)?void 0:d.startOffset)||0}return 0},get currentTime(){let r=o(),a=i.effectivePlayingItem;return a&&a===r?s(a,"playout",i.effectivePlayingAsset,"timelinePos","currentTime")-a.playout.start:0},set currentTime(t){let r=o(),s=i.effectivePlayingItem;s&&s===r&&l(t+s.playout.start,"playout")},get duration(){let i=o();return i?i.playout.end-i.playout.start:0},get assetPlayers(){var u;let r=null==(u=o())?void 0:u.event.assetList;return r?r.map(r=>i.getAssetPlayer(r.identifier)):[]},get playingIndex(){var f;let r=null==(f=o())?void 0:f.event;return r&&i.effectivePlayingAsset?r.findAssetIndex(i.effectivePlayingAsset):-1},get scheduleItem(){return o()}};return this.manager={get events(){var c;return(null==(c=i.schedule)||null==(c=c.events)?void 0:c.slice(0))||[]},get schedule(){var g;return(null==(g=i.schedule)||null==(g=g.items)?void 0:g.slice(0))||[]},get interstitialPlayer(){return o()?h:null},get playerQueue(){return i.playerQueue.slice(0)},get bufferingAsset(){return i.bufferingAsset},get bufferingItem(){return i.bufferingItem||i.waitingItem},get bufferingIndex(){let r=i.bufferingItem||i.waitingItem;return i.findItemIndex(r)},get playingAsset(){return i.effectivePlayingAsset},get playingItem(){return i.effectivePlayingItem},get playingIndex(){let r=i.effectivePlayingItem;return i.findItemIndex(r)},primary:{get bufferedEnd(){return a()},get currentTime(){let r=i.timelinePos;return r>0?r:0},set currentTime(e){l(e,"primary")},get duration(){return n("primary")},get seekableStart(){return i.seekableStart}},integrated:{get bufferedEnd(){return s(i.bufferingItem||i.waitingItem,"integrated",i.bufferingAsset,"bufferedPos","bufferedEnd")},get currentTime(){return s(i.effectivePlayingItem,"integrated",i.effectivePlayingAsset,"timelinePos","currentTime")},set currentTime(e){l(e,"integrated")},get duration(){return n("integrated")},get seekableStart(){return((r,s)=>{var a,n;if(0!==r&&"primary"!==s&&null!=(a=i.schedule)&&a.length){let a=i.schedule.findItemIndexAtTime(r),l=null==(n=i.schedule.items)?void 0:n[a];if(l)return r+(l[s].start-l.start)}return r})(i.seekableStart,"integrated")}},skip:()=>{let r=i.effectivePlayingItem,s=null==r?void 0:r.event;if(s&&!s.restrictions.skip){let a=i.findItemIndex(r);s.appendInPlace?l(r.playout.start+r.event.duration+.001,"playout"):i.advanceAfterAssetEnded(s,a,1/0)}}}}get effectivePlayingItem(){return this.waitingItem||this.playingItem||this.endedItem}get effectivePlayingAsset(){return this.playingAsset||this.endedAsset}get playingLastItem(){var i;let r=this.playingItem,s=null==(i=this.schedule)?void 0:i.items;return!!this.playbackStarted&&!!r&&!!s&&this.findItemIndex(r)===s.length-1}get playbackStarted(){return null!==this.effectivePlayingItem}get currentTime(){var i,r;if(null===this.mediaSelection)return;let s=this.waitingItem||this.playingItem;if(this.isInterstitial(s)&&!s.event.appendInPlace)return;let a=this.media;!a&&null!=(i=this.bufferingItem)&&null!=(i=i.event)&&i.appendInPlace&&(a=this.primaryMedia);let n=null==(r=a)?void 0:r.currentTime;if(!(void 0===n||!m(n)))return n}get primaryMedia(){var i;return this.media||(null==(i=this.detachedData)?void 0:i.media)||null}isInterstitial(i){return!!(null!=i&&i.event)}retreiveMediaSource(i,r){let s=this.getAssetPlayer(i);s&&this.transferMediaFromPlayer(s,r)}transferMediaFromPlayer(i,r){let s=i.interstitial.appendInPlace,a=i.media;if(s&&a===this.primaryMedia){if(this.bufferingAsset=null,(!r||this.isInterstitial(r)&&!r.event.appendInPlace)&&r&&a){this.detachedData={media:a};return}let s=i.transferMedia();this.log(`transfer MediaSource from ${i} ${t7(s)}`),this.detachedData=s}else r&&a&&(this.shouldPlay||(this.shouldPlay=!a.paused))}transferMediaTo(i,r){var s,a;if(i.media===r)return;let n=null,l=this.hls,o=i!==l,h=o&&i.interstitial.appendInPlace,d=null==(s=this.detachedData)?void 0:s.mediaSource,u;if(l.media)h&&(n=l.transferMedia(),this.detachedData=n),u="Primary";
29else{let i=this.getBufferingPlayer();i?(n=i.transferMedia(),this.detachedData=n,u=`${i}`):u=d?"detached MediaSource":"detached media"}if(!n){if(d)n=this.detachedData,this.log(`using detachedData: MediaSource ${t7(n)}`);else if(!this.detachedData||l.media===r){let i=this.playerQueue;i.length>1&&i.forEach(i=>{if(o&&i.interstitial.appendInPlace!==h){let r=i.interstitial;this.clearInterstitial(i.interstitial,null),r.appendInPlace=!1,r.appendInPlace&&this.warn(`Could not change append strategy for queued assets ${r}`)}}),this.hls.detachMedia(),this.detachedData={media:r}}}let f=n&&"mediaSource"in n&&(null==(a=n.mediaSource)?void 0:a.readyState)!=="closed";if(this.log(`${f?"transfering MediaSource":"attaching media"} to ${o?i:"Primary"} from ${u} (media.currentTime: ${r.currentTime})`),!f&&!o)return void i.attachMedia(r);let c=f&&n?$({},n):{media:r},g=this.schedule;if(g&&o){let r=i.assetId===g.assetIdAtEnd;c.overrides={duration:g.duration,endOfStream:r||!1===i.appendInPlace}}if(!f&&h){let r=i.assetItem.timelineStart;if(r){let s=i.hls,a=Math.max(this.timelinePos-r,2220446049250313e-31);s.startPosition!==a&&(this.log(`Set ${i} startPosition: ${a}`),s.config.startPosition=a,s.loadingEnabled&&s.startLoad(a))}}i.attachMedia(c)}onInterstitialCueEnter(){this.onTimeupdate()}checkStart(){let i=this.schedule,r=null==i?void 0:i.events,s=this.hls;if(!r||this.playbackDisabled||!this.media||!s)return;-1===this.bufferedPos&&(this.bufferedPos=0);let a=this.timelinePos,n=this.effectivePlayingItem;if(-1===a){if(!s.loadingEnabled)return void this.log("waiting for startLoad( <startPosition> )");let a=s.startPosition;if(this.timelinePos=a,0===r.length)this.setSchedulePosition(0);else if(r[0].cue.pre){this.log(lI("checkStart (preroll)",a));let s=i.findEventIndex(r[0].identifier);this.setSchedulePosition(s)}else if(a>=0||!this.primaryLive){this.log(lI("checkStart",a));let r=this.timelinePos=a>0?a:0,s=i.findItemIndexAtTime(r);this.setSchedulePosition(s)}else 0===s.liveSyncPosition?this.setSchedulePosition(0):this.log("[checkStart] waiting for live start")}else if(n&&!this.playingItem){this.log(lI("checkStart (playing item)",n.start));let r=i.findItemIndex(n);this.setSchedulePosition(r)}}advanceAssetBuffering(i,r){let s=i.event,a=lE(s,s.findAssetIndex(r));if(s.isAssetPastPlayoutLimit(a)){if(this.schedule){var n;let r=this.getNextItemIndex(i,!0),s=null==(n=this.schedule.items)?void 0:n[r];s&&this.bufferedToItem(s)}}else this.bufferedToEvent(i,a)}livePrerollResumption(i,r){if(i.cue.pre&&this.primaryLive&&!m(i.resumeOffset)&&this.hls){let i=this.getLiveStartPos();if(r){let r=this.getBufferingPlayer();return i+(null!=r&&r.interstitial.cue.pre?r.remaining:0)}return i}}getNextItemIndex(i,r){if(this.schedule){let s=this.livePrerollResumption(i.event,r);if(void 0!==s)return this.log(`find next item index @${s}`),this.schedule.findItemIndexAtTime(s)}return this.findItemIndex(i)+1}advanceAfterAssetEnded(i,r,s){let a=lE(i,s);if(i.isAssetPastPlayoutLimit(a)){if(this.schedule){let s=this.schedule.items;if(s){let a=s[r],n=a.event?this.getNextItemIndex(a):r+1;if(n>=s.length)return void this.setSchedulePosition(-1);let l=i.resumeTime;this.timelinePos<l&&(this.log(lI("advanceAfterAssetEnded",l)),this.timelinePos=l,i.appendInPlace&&!s[n].event&&this.hls.startLoad(l+.01),this.checkBuffer(this.bufferedPos<l)),this.setSchedulePosition(n)}}}else{if(i.appendInPlace){let r=i.assetList[a];r&&this.advanceInPlace(r.timelineStart)}this.setSchedulePosition(r,a)}}setScheduleToAssetAtTime(i,r){let s=this.schedule;if(!s)return;let a=r.parentIdentifier,n=s.getEvent(a);if(n){let r=s.findEventIndex(a),l=s.findAssetIndex(n,i);this.advanceAfterAssetEnded(n,r,l-1)}}setSchedulePosition(i,r){var s,a,n,l;let o=null==(s=this.schedule)?void 0:s.items;if(!o||this.playbackDisabled)return;let h=i>=0?o[i]:null;this.log(`setSchedulePosition ${i}, ${r} (${h&&lL(h)}) pos: ${this.timelinePos}`);let d=this.waitingItem||this.playingItem,u=this.playingLastItem;if(this.isInterstitial(d)){let s=d.event,f=this.playingAsset,c=null==f?void 0:f.identifier,g=c?this.getAssetPlayer(c):null;if(g&&c&&(!this.eventItemsMatch(d,h)||void 0!==r&&c!==s.assetList[r].identifier)){let r=s.findAssetIndex(f);if(this.log(`INTERSTITIAL_ASSET_ENDED ${r+1}/${s.assetList.length} ${lT(f)}`),this.endedAsset=f,this.playingAsset=null,this.hls.trigger(T.INTERSTITIAL_ASSET_ENDED,{asset:f,assetListIndex:r,event:s,schedule:o.slice(0),scheduleIndex:i,player:g}),d!==this.playingItem){this.itemsMatch(d,this.playingItem)&&!this.playingAsset&&this.advanceAfterAssetEnded(s,this.findItemIndex(this.playingItem),r);return}this.retreiveMediaSource(c,h),g.media&&!(null!=(a=this.detachedData)&&a.mediaSource)&&g.detachMedia()}if(!this.eventItemsMatch(d,h)&&(this.endedItem=d,this.playingItem=this.waitingItem=null,this.log(`INTERSTITIAL_ENDED ${s} ${lL(d)}`),s.hasPlayed=!0,this.hls.trigger(T.INTERSTITIAL_ENDED,{event:s,schedule:o.slice(0),scheduleIndex:i}),s.cue.once&&this.hls)){this.updateSchedule();let i=null==(n=this.schedule)?void 0:n.items;if(h&&i){let a=this.findItemIndex(h),n=this.livePrerollResumption(s);if(void 0!==n){let r=n,h=this.getNextItemIndex(d);if(!this.isInterstitial(o[h])){let i=null==(l=this.primaryDetails)?void 0:l.fragments;if(s.snapOptions.in&&i){let s=ig(null,i,n);s&&(r=Math.min(Math.max(o[h].start,lp(r,s)),o[h].end))}}if(this.log(lI("live join (preroll)",r)),this.timelinePos=r,h!==a&&(h||0===h))return void this.advanceSchedule(h,i,void 0,d,u)}this.advanceSchedule(a,i,r,d,u)}return}}this.advanceSchedule(i,o,r,d,u)}advanceSchedule(i,r,s,a,n){let l=this.schedule;if(!l)return;let o=r[i]||null,h=this.primaryMedia,d=this.playerQueue;if(d.length&&d.forEach(r=>{let s=r.interstitial,a=l.findEventIndex(s.identifier);(a<i||a>i+1)&&this.clearInterstitial(s,o)}),this.isInterstitial(o)){this.timelinePos=Math.min(Math.max(this.timelinePos,o.start),o.end);let n=o.event;
29if(void 0===s){s=n.cue.pre?0:l.findAssetIndex(n,this.timelinePos);let r=lE(n,s-1);if(n.isAssetPastPlayoutLimit(r)||n.appendInPlace&&this.timelinePos===o.end)return void this.advanceAfterAssetEnded(n,i,s);s=r}let d=this.waitingItem;this.assetsBuffered(o,h)||this.setBufferingItem(o);let u=this.preloadAssets(n,s);if(this.eventItemsMatch(o,d||a)||(this.waitingItem=o,this.log(`INTERSTITIAL_STARTED ${lL(o)} ${n.appendInPlace?"append in place":""}`),n.hasPlayed=!1,this.hls.trigger(T.INTERSTITIAL_STARTED,{event:n,schedule:r.slice(0),scheduleIndex:i})),!n.assetListLoaded)return void this.log(`Waiting for ASSET-LIST to complete loading ${n}`);if(n.assetListLoader&&(n.assetListLoader.destroy(),n.assetListLoader=void 0),!h)return void this.log(`Waiting for attachMedia to start Interstitial ${n}`);this.waitingItem=this.endedItem=null,this.playingItem=o;let f=n.assetList[s];if(!f)return void this.advanceAfterAssetEnded(n,i,s||0);if(u||(u=this.getAssetPlayer(f.identifier)),null===u||u.destroyed){let i=n.assetList.length;this.warn(`asset ${s+1}/${i} player destroyed ${n}`),(u=this.createAssetPlayer(n,f,s)).loadSource()}if(!this.eventItemsMatch(o,this.bufferingItem)&&n.appendInPlace&&this.isAssetBuffered(f))return;this.startAssetPlayer(u,s,r,i,h),this.shouldPlay&&lb(u.media)}else o?(this.resumePrimary(o,i,a),this.shouldPlay&&lb(this.hls.media)):n&&this.isInterstitial(a)&&(this.endedItem=null,this.playingItem=a,a.event.appendInPlace||this.attachPrimary(l.durations.primary,null))}get playbackDisabled(){return!1===this.hls.config.enableInterstitialPlayback}get primaryDetails(){var i;return null==(i=this.mediaSelection)?void 0:i.main.details}get primaryLive(){var i;return!!(null!=(i=this.primaryDetails)&&i.live)}resumePrimary(i,r,s){var a,n;this.playingItem=i,this.playingAsset=this.endedAsset=null,this.waitingItem=null,this.bufferedToItem(i),this.endedItem=null,this.log(`resuming ${lL(i)}`);let l=this.timelinePos;if(null!=(a=this.detachedData)&&a.mediaSource?this.primaryLive&&this.startLoadingPrimaryAt(l):((l<i.start||l>=i.end||l<this.seekableStart)&&(l=this.getPrimaryResumption(i,r),this.log(lI("resumePrimary",l)),this.timelinePos=l),this.attachPrimary(l,i)),!s)return;let o=null==(n=this.schedule)?void 0:n.items;o&&(this.log(`INTERSTITIALS_PRIMARY_RESUMED ${lL(i)}`),this.hls.trigger(T.INTERSTITIALS_PRIMARY_RESUMED,{schedule:o.slice(0),scheduleIndex:r}),this.checkBuffer())}get seekableStart(){var i;return this.primaryLive&&(null==(i=this.primaryDetails)?void 0:i.fragmentStart)||0}getPrimaryResumption(i,r,s){let a=i.start;if(this.primaryLive){if(0===r)return this.hls.startPosition;let i=this.endedItem||this.playingItem,n=null!=i&&i.event?this.livePrerollResumption(i.event,s):void 0;if(void 0!==n)return n;let l=this.primaryDetails;if(l){let{fragmentStart:i,edge:r}=l;if(a<i||a>r&&!s){let s=this.hls.liveSyncPosition;return this.log(`primary resumption out of bounds (${a} [${i}-${r}]) snapping to liveSync ${s}`),s||i}}}return this.log(`primary resumption itemStart: ${a}`),a}getLiveStartPos(){var i;let r=this.hls.startPosition,s=this.hls.liveSyncPosition||0,a=3*((null==(i=this.primaryDetails)?void 0:i.targetduration)||10);return -1===r||s&&s-r<a?s||0:r}isAssetBuffered(i){let r=this.getAssetPlayer(i.identifier);return null!=r&&r.hls?r.hls.bufferedToEnd:iK.bufferInfo(this.primaryMedia,this.timelinePos,0).end+1>=i.timelineStart+(i.duration||0)}attachPrimary(i,r,s){r?this.setBufferingItem(r):this.bufferingItem=this.playingItem,this.bufferingAsset=null;let a=this.primaryMedia;if(!a)return;let n=this.hls;n.media?this.checkBuffer():(this.transferMediaTo(n,a),s&&this.startLoadingPrimaryAt(i,s)),s||(this.log(lI("attachPrimary",i)),this.timelinePos=i,this.startLoadingPrimaryAt(i,s))}startLoadingPrimaryAt(i,r){let s=this.hls,{loadingEnabled:a,bufferingEnabled:n,startPosition:l}=s,o=s.hasEnoughToStart;if(this.log(`Start loading primary @${i} bufferedPos: ${this.bufferedPos} startPosition: ${l} skip seek: ${r} has enough ${o} loadingEnabled: ${a} bufferingEnabled: ${n}`),!r&&o||!a||Math.abs(l-i)>.1){let a=this.primaryDetails;if(null!=a&&a.live&&i+.5>=a.edge){let r=this.bufferingItem;this.log(`Resume primary loading when live passes ${i} buffering item: ${r?lL(r):null}
29`),s.pauseBuffering(),this.bufferPastEdge=!0;return}s.startLoad(i,r)}else n||s.resumeBuffering()}onManifestLoading(){var i;this.stopLoad(),null==(i=this.schedule)||i.reset(),this.emptyPlayerQueue(),this.clearScheduleState(),this.shouldPlay=!1,this.bufferedPos=this.timelinePos=-1,this.mediaSelection=this.altSelection=this.manager=this.requiredTracks=null,this.hls.off(T.BUFFER_CODECS,this.onBufferCodecs,this),this.hls.on(T.BUFFER_CODECS,this.onBufferCodecs,this)}onLevelUpdated(i,r){if(-1===r.level||!this.schedule)return;let s=this.hls.levels[r.level];if(!s.details)return;let a=$($({},this.mediaSelection||this.altSelection),{},{main:s});this.mediaSelection=a;let n=this.hls.startPosition;if(this.schedule.parseInterstitialDateRanges(a,this.hls.config.interstitialAppendInPlace,-1===n?0:n),this.schedule.items)if(this.effectivePlayingItem){if(this.bufferPastEdge){let i=this.primaryDetails,r=this.bufferedPos;if(null!=i&&i.live&&r+.5<i.edge){this.bufferPastEdge=!1;let s=this.bufferingItem;if(this.log(`Live edge ${i.edge} passed buffer: ${r} buffering item: ${s?lL(s):null}`),(null==s?void 0:s.end)===1/0){let i=this.playingItem,a=this.isInterstitial(i)&&i.event.appendInPlace;this.hls.startLoad(Math.max(r,s.start),a)}else{let i=this.getBufferingPlayer();i&&i.bufferedInPlaceToEnd(this.primaryMedia,i.currentTime)&&i.hls&&i.hls.trigger(T.BUFFERED_TO_END,void 0)}}}}else this.checkStart()}onAudioTrackUpdated(i,r){let s=this.hls.audioTracks[r.id],a=this.mediaSelection;if(!a){this.altSelection=$($({},this.altSelection),{},{audio:s});return}let n=$($({},a),{},{audio:s});this.mediaSelection=n}onSubtitleTrackUpdated(i,r){let s=this.hls.subtitleTracks[r.id],a=this.mediaSelection;if(!a){this.altSelection=$($({},this.altSelection),{},{subtitles:s});return}let n=$($({},a),{},{subtitles:s});this.mediaSelection=n}onAudioTrackSwitching(i,r){let s=ii(r);this.playerQueue.forEach(({hls:i})=>i&&(i.setAudioOption(r)||i.setAudioOption(s)))}onSubtitleTrackSwitch(i,r){let s=ii(r);this.playerQueue.forEach(({hls:i})=>i&&(i.setSubtitleOption(r)||-1!==r.id&&i.setSubtitleOption(s)))}onBufferCodecs(i,r){let s=r.tracks;s&&(this.requiredTracks=s)}onBufferAppended(i,r){this.checkBuffer()}onBufferFlushed(i,r){let s=this.playingItem;if(s&&!this.itemsMatch(s,this.bufferingItem)&&!this.isInterstitial(s)){let i=this.timelinePos;this.bufferedPos=i,this.checkBuffer()}}onBufferedToEnd(i){if(!this.schedule)return;let r=this.schedule.events;if(this.bufferedPos<Number.MAX_VALUE&&r){for(let i=0;i<r.length;i++){let s=r[i];if(s.cue.post){let i=this.getEventItem(s.identifier);i&&this.eventItemsMatch(i,this.bufferingItem)&&this.bufferedToItem(i,0);break}}this.bufferedPos=Number.MAX_VALUE}}onMediaEnded(i){let r=this.playingItem;if(!this.playingLastItem&&r){let i=this.findItemIndex(r);this.setSchedulePosition(i+1)}else this.shouldPlay=!1}updateItem(i,r){var s;let a=null==(s=this.schedule)?void 0:s.items;return i&&a&&a[this.findItemIndex(i,r)]||null}trimInPlace(i,r){if(this.isInterstitial(i)&&i.event.appendInPlace&&r.end-i.end>.25){i.event.assetList.forEach((r,s)=>{i.event.isAssetPastPlayoutLimit(s)&&this.clearAssetPlayer(r.identifier,null)});let s=i.end+.25,a=iK.bufferInfo(this.primaryMedia,s,0);(a.end>s||(a.nextStart||0)>s)&&(this.log(`trim buffered interstitial ${lL(i)} (was ${lL(r)})`),this.attachPrimary(s,null,!0),this.flushFrontBuffer(s))}}itemsMatch(i,r){return!!r&&(i===r||i.event&&r.event&&this.eventItemsMatch(i,r)||!i.event&&!r.event&&this.findItemIndex(i)===this.findItemIndex(r))}eventItemsMatch(i,r){var s;return!!r&&(i===r||i.event.identifier===(null==(s=r.event)?void 0:s.identifier))}findEventIndex(i){return this.schedule?this.schedule.findEventIndex(i):-1}getEventItem(i){if(this.schedule){var r;let s=null==(r=this.schedule.items)?void 0:r[this.findEventIndex(i)];if(this.isInterstitial(s)&&s.event.identifier===i)return s}}findItemIndex(i,r){return i&&this.schedule?this.schedule.findItemIndex(i,r):-1}updateSchedule(i=!1){var r,s;let a=this.mediaSelection;if(!a)return;let n=(null==(r=this.hls)?void 0:r.liveSyncPosition)||0;null==(s=this.schedule)||s.updateSchedule(a,[],n,i)}checkBuffer(i){var r;let s=null==(r=this.schedule)?void 0:r.items;if(!s)return;let a=iK.bufferInfo(this.primaryMedia,this.timelinePos,0);i&&(this.bufferedPos=this.timelinePos),i||(i=a.len<1),this.updateBufferedPos(a.end,s,i)}updateBufferedPos(i,r,s){let a=this.schedule,n=this.bufferingItem;if(this.bufferedPos>i||!a)return;if(1===r.length&&this.itemsMatch(r[0],n)){this.bufferedPos=i;return}let l=this.playingItem,o=this.findItemIndex(l),h=a.findItemIndexAtTime(i);if(this.bufferedPos<i){var d;let s=this.findItemIndex(n),a=Math.min(s+1,r.length-1),l=r[a];if((-1===h&&n&&i>=n.end||null!=(d=l.event)&&d.appendInPlace&&i+.01>=l.start)&&(h=a),this.isInterstitial(n)){let i=n.event;if(a-o>1&&!1===i.appendInPlace||0===i.assetList.length&&i.assetListLoader)return}if(this.bufferedPos=i,h>s&&h>o)this.bufferedToItem(l);else{let r=this.primaryDetails;this.primaryLive&&r&&i>r.edge-r.targetduration&&l.start<r.edge+this.hls.config.interstitialLiveLookAhead&&this.isInterstitial(l)&&this.preloadAssets(l.event,0)}}
29else s&&l&&!this.itemsMatch(l,n)&&(h===o?this.bufferedToItem(l):h===o+1&&this.bufferedToItem(r[h]))}assetsBuffered(i,r){return 0!==i.event.assetList.length&&!i.event.assetList.some(i=>{let s=this.getAssetPlayer(i.identifier);return!(null!=s&&s.bufferedInPlaceToEnd(r))})}setBufferingItem(i){let r=this.bufferingItem,s=this.schedule;if(!this.itemsMatch(i,r)&&s){let{items:a,events:n}=s;if(!a||!n)return r;let l=this.isInterstitial(i),o=this.getBufferingPlayer();this.bufferingItem=i,this.bufferedPos=Math.max(i.start,Math.min(i.end,this.timelinePos));let h=o?o.remaining:r?r.end-this.timelinePos:0;if(this.log(`INTERSTITIALS_BUFFERED_TO_BOUNDARY ${lL(i)}`+(r?` (${h.toFixed(2)} remaining)`:"")),!this.playbackDisabled)if(l){let r=s.findAssetIndex(i.event,this.bufferedPos);i.event.assetList.forEach((i,s)=>{let a=this.getAssetPlayer(i.identifier);a&&(s===r&&a.loadSource(),a.resumeBuffering())})}else this.hls.resumeBuffering(),this.playerQueue.forEach(i=>i.pauseBuffering());this.hls.trigger(T.INTERSTITIALS_BUFFERED_TO_BOUNDARY,{events:n.slice(0),schedule:a.slice(0),bufferingIndex:this.findItemIndex(i),playingIndex:this.findItemIndex(this.playingItem)})}else this.bufferingItem!==i&&(this.bufferingItem=i);return r}bufferedToItem(i,r=0){let s=this.setBufferingItem(i);if(!this.playbackDisabled){if(this.isInterstitial(i))this.bufferedToEvent(i,r);else if(null!==s){this.bufferingAsset=null;let r=this.getPrimaryResumption(i,this.findItemIndex(i),!0),s=this.bufferedPos=Math.max(r,Math.min(this.bufferedPos,i.end),this.timelinePos,i.start),a=this.detachedData;if(a)a.mediaSource?this.attachPrimary(s,i,!0):this.startLoadingPrimaryAt(s);else{let i=this.playingItem,r=this.isInterstitial(i)&&i.event.appendInPlace;this.startLoadingPrimaryAt(s,r)}}}}bufferedToEvent(i,r){let s=i.event,a=0===s.assetList.length&&!s.assetListLoader,n=s.cue.once;if(a||!n){let i=this.preloadAssets(s,r);if(null!=i&&i.interstitial.appendInPlace){let r=this.primaryMedia;r&&this.bufferAssetPlayer(i,r)}}}preloadAssets(i,r){let s=i.assetUrl,a=i.assetList.length,n=0===a&&!i.assetListLoader,l=i.cue.once;if(n){let n=i.timelineStart,l=this.playingItem,h=this.getBufferingPlayer();if(i.appendInPlace){var o;this.isInterstitial(l)||(null==l||null==(o=l.nextEvent)?void 0:o.identifier)!==i.identifier||this.flushFrontBuffer(n+.25)}let d,u=0;if((!h||h.interstitial.cue.pre)&&this.primaryLive&&(u=this.getLiveStartPos(),h&&(u+=h.remaining)),u&&!(i.cue.pre||i.cue.post)){let i=u-n;i>0&&(d=Math.round(1e3*i)/1e3)}if(this.log(`Load interstitial asset ${r+1}/${s?1:a} ${i}${u?` live-start: ${u} start-offset: ${d} (timeline-start: ${n})`:""}`),s)return this.createAsset(i,0,0,n,i.duration,s);let f=this.assetListLoader.loadAssetList(i,d);f&&(i.assetListLoader=f)}else if(!l&&a){for(let s=r;s<a;s++){let r=i.assetList[s],a=this.getAssetPlayerQueueIndex(r.identifier);(-1===a||this.playerQueue[a].destroyed)&&!r.error&&this.createAssetPlayer(i,r,s)}let s=i.assetList[r];if(s){let i=this.getAssetPlayer(s.identifier);return i&&i.loadSource(),i}}return null}flushFrontBuffer(i){let r=this.requiredTracks;if(!r)return;let s=this.primaryDetails;s&&i>=s.edge||(this.log(`Removing front buffer starting at ${i}`),Object.keys(r).forEach(r=>{this.hls.trigger(T.BUFFER_FLUSHING,{startOffset:i,endOffset:1/0,type:r})}))}getAssetPlayerQueueIndex(i){let r=this.playerQueue;for(let s=0;s<r.length;s++)if(i===r[s].assetId)return s;return -1}getAssetPlayer(i){let r=this.getAssetPlayerQueueIndex(i);return this.playerQueue[r]||null}getBufferingPlayer(){let{playerQueue:i,primaryMedia:r}=this;if(r){for(let s=0;s<i.length;s++)if(i[s].media===r)return i[s]}return null}createAsset(i,r,s,a,n,l){let o={parentIdentifier:i.identifier,identifier:`${i.identifier}-${r+1}-${nU(l)}`,duration:n,startOffset:s,timelineStart:a,uri:l};return this.createAssetPlayer(i,o,r)}createAssetPlayer(i,r,s){let a=this.hls,n=a.userConfig,l=id(a.loadLevelObj||a.levels[a.currentLevel],n.videoPreference),o=a.audioTracks[a.audioTrack],h=a.subtitleTracks[a.subtitleTrack],d=0;if(this.primaryLive||i.appendInPlace){let i=this.timelinePos-r.timelineStart;if(i>=0){let s=r.duration;s&&i<s&&(d=i)}}let u=r.identifier,f=$($({},n),{}
29,{maxMaxBufferLength:Math.min(15,a.config.maxMaxBufferLength),autoStartLoad:!0,startFragPrefetch:!0,primarySessionId:a.sessionId,assetPlayerId:u,abrEwmaDefaultEstimate:a.bandwidthEstimate,interstitialsController:void 0,startPosition:d,liveDurationInfinity:!1,testBandwidth:!1,videoPreference:l,audioPreference:o||n.audioPreference,subtitlePreference:h||n.subtitlePreference});i.appendInPlace&&(i.appendInPlaceStarted=!0,r.timelineStart&&(f.timelineOffset=r.timelineStart));let c=f.cmcd;null!=c&&c.sessionId&&c.contentId&&(f.cmcd=O({},c,{contentId:nU(r.uri)})),this.getAssetPlayer(u)&&this.warn(`Duplicate date range identifier ${i} and asset ${u}`);let g=new lS(this.HlsPlayerClass,f,i,r);this.playerQueue.push(g),i.assetList[s]=r;let m=!0,p=a=>{if(a.live){let r=Error(`Interstitials MUST be VOD assets ${i}`),a={fatal:!0,type:y.OTHER_ERROR,details:E.INTERSTITIAL_ASSET_ITEM_ERROR,error:r},n=this.findEventIndex(i.identifier);this.handleAssetItemError(a,i,n,s,r.message);return}let n=a.edge-a.fragmentStart,l=r.duration;(m||null===l||n>l)&&(m=!1,this.log(`Interstitial asset "${u}" duration change ${l} > ${n}`),r.duration=n,this.updateSchedule())};g.on(T.LEVEL_UPDATED,(i,{details:r})=>p(r)),g.on(T.LEVEL_PTS_UPDATED,(i,{details:r})=>p(r)),g.on(T.EVENT_CUE_ENTER,()=>this.onInterstitialCueEnter());let v=(i,r)=>{let s=this.getAssetPlayer(u);if(s&&r.tracks){s.off(T.BUFFER_CODECS,v),s.tracks=r.tracks;let i=this.primaryMedia;this.bufferingAsset===s.assetItem&&i&&!s.media&&this.bufferAssetPlayer(s,i)}};g.on(T.BUFFER_CODECS,v),g.on(T.BUFFERED_TO_END,()=>{let r=this.getAssetPlayer(u);if(this.log(`buffered to end of asset ${r}`),!r||!this.schedule)return;let s=this.getEventItem(i.identifier);s&&this.advanceAssetBuffering(s,r.assetItem)});let S=r=>()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;this.shouldPlay=!0;let s=this.findEventIndex(i.identifier);this.advanceAfterAssetEnded(i,s,r)};return g.once(T.MEDIA_ENDED,S(s)),g.once(T.PLAYOUT_LIMIT_REACHED,S(1/0)),g.on(T.ERROR,(r,a)=>{if(!this.schedule)return;let n=this.getAssetPlayer(u);a.details===E.BUFFER_STALLED_ERROR?null!=n&&n.appendInPlace?this.handleInPlaceStall(i):(this.onTimeupdate(),this.checkBuffer(!0)):a.details!==E.BUFFER_SEEK_OVER_HOLE&&this.handleAssetItemError(a,i,this.findEventIndex(i.identifier),s,`Asset player error ${a.error} ${i}`)}),g.on(T.DESTROYING,()=>{if(!this.getAssetPlayer(u)||!this.schedule)return;let r=Error(`Asset player destroyed unexpectedly ${u}`),a={fatal:!0,type:y.OTHER_ERROR,details:E.INTERSTITIAL_ASSET_ITEM_ERROR,error:r};this.handleAssetItemError(a,i,this.findEventIndex(i.identifier),s,r.message)}),this.log(`INTERSTITIAL_ASSET_PLAYER_CREATED ${lT(r)}`),this.hls.trigger(T.INTERSTITIAL_ASSET_PLAYER_CREATED,{asset:r,assetListIndex:s,event:i,player:g}),g}clearInterstitial(i,r){this.clearAssetPlayers(i,r),i.reset()}clearAssetPlayers(i,r){i.assetList.forEach(i=>{this.clearAssetPlayer(i.identifier,r)})}resetAssetPlayer(i){let r=this.getAssetPlayerQueueIndex(i);if(-1!==r){this.log(`reset asset player "${i}" after error`);let s=this.playerQueue[r];this.transferMediaFromPlayer(s,null),s.resetDetails()}}clearAssetPlayer(i,r){let s=this.getAssetPlayerQueueIndex(i);if(-1!==s){let i=this.playerQueue[s];this.log(`clear ${i} toSegment: ${r&&lL(r)}`),this.transferMediaFromPlayer(i,r),this.playerQueue.splice(s,1),i.destroy()}}emptyPlayerQueue(){let i;for(;i=this.playerQueue.pop();)i.destroy();this.playerQueue=[]}startAssetPlayer(i,r,s,a,n){let{interstitial:l,assetItem:o,assetId:h}=i,d=l.assetList.length,u=this.playingAsset;this.endedAsset=null,this.playingAsset=o,(null==u?void 0:u.identifier)!==h&&(u&&(this.clearAssetPlayer(u.identifier,s[a]),delete u.error),this.log(`INTERSTITIAL_ASSET_STARTED ${r+1}/${d} ${lT(o)}`),this.hls.trigger(T.INTERSTITIAL_ASSET_STARTED,{asset:o,assetListIndex:r,event:l,sc
29hedule:s.slice(0),scheduleIndex:a,player:i})),this.bufferAssetPlayer(i,n)}bufferAssetPlayer(i,r){var s;if(!this.schedule)return;let{interstitial:a,assetItem:n}=i,l=this.getEventItem(a.identifier);if(!l)return;if(i.loadSource(),this.setBufferingItem(l),this.bufferingAsset=n,i.bufferedInPlaceToEnd(this.primaryMedia,i.currentTime))return void this.advanceAssetBuffering(l,n);let o=this.getBufferingPlayer();if(o===i)return;let h=a.appendInPlace;if(h&&(null==o?void 0:o.interstitial.appendInPlace)===!1)return;let d=(null==o?void 0:o.tracks)||(null==(s=this.detachedData)?void 0:s.tracks)||this.requiredTracks;if(h&&n!==this.playingAsset){if(!i.tracks)return void this.log(`Waiting for track info before buffering ${i}`);if(d&&!er(d,i.tracks)){let r=Error(`Asset ${lT(n)} SourceBuffer tracks ('${Object.keys(i.tracks)}') are not compatible with primary content tracks ('${Object.keys(d)}')`),s={fatal:!0,type:y.OTHER_ERROR,details:E.INTERSTITIAL_ASSET_ITEM_ERROR,error:r},l=a.findAssetIndex(n);this.handleAssetItemError(s,a,this.findEventIndex(a.identifier),l,r.message);return}}this.transferMediaTo(i,r)}handleInPlaceStall(i){let r=this.schedule,s=this.primaryMedia;if(!r||!s)return;let a=s.currentTime,n=r.findAssetIndex(i,a),l=i.assetList[n];if(l){let o=this.getAssetPlayer(l.identifier);if(o){let h=o.currentTime||a-l.timelineStart,d=o.duration-h;if(this.warn(`Stalled at ${h} of ${h+d} in ${o} ${i} (media.currentTime: ${a})`),h&&(d/s.playbackRate<.5||o.bufferedInPlaceToEnd(s,o.currentTime))&&o.hls){let s=r.findEventIndex(i.identifier);this.advanceAfterAssetEnded(i,s,n)}}}}advanceInPlace(i){let r=this.primaryMedia;if(r&&r.currentTime<i){let s=`advance currentTime to ${i}, duration: ${r.duration}`;r.duration>i?(this.log(s),r.currentTime=i):this.log(`Cannot ${s}`)}}handleAssetItemError(i,r,s,a,n){if(i.details===E.BUFFER_STALLED_ERROR)return;let l=r.assetList[a]||null;if(this.warn(`INTERSTITIAL_ASSET_ERROR ${l&&lT(l)} ${i.error}`),!this.schedule)return;let o=(null==l?void 0:l.identifier)||"",h=this.getAssetPlayerQueueIndex(o),d=this.playerQueue[h]||null,u=this.schedule.items,f=O({},i,{fatal:!1,errorAction:iS(!0),asset:l,assetListIndex:a,event:r,schedule:u,scheduleIndex:s,player:d});if(this.hls.trigger(T.INTERSTITIAL_ASSET_ERROR,f),!i.fatal)return;let c=this.playingAsset,g=this.bufferingAsset,m=Error(n);if(l&&(this.clearAssetPlayer(o,null),l.error=m),r.assetList.some(i=>!i.error))for(let i=a;i<r.assetList.length;i++)this.resetAssetPlayer(r.assetList[i].identifier);else r.error=m;this.updateSchedule(!0),r.error?this.primaryFallback(r):(null==c?void 0:c.identifier)===o?this.advanceAfterAssetEnded(r,s,a):(null==g?void 0:g.identifier)===o&&this.isInterstitial(this.bufferingItem)&&this.advanceAssetBuffering(this.bufferingItem,g)}primaryFallback(i){let r=i.timelineStart,s=this.effectivePlayingItem,a=this.playingItem,n=this.seekableStart,l=this.hls.startPosition,o=this.timelinePos;if(this.isInterstitial(s)){this.log(`Fallback to primary from event "${i.identifier}" start: ${r} pos: ${o} playing: ${lL(s)} startPosition: ${l} seekableStart: ${n} error: ${i.error}`),-1===o&&(o=l),o=Math.max(o,n);let a=this.updateItem(s,o);this.itemsMatch(s,a)&&this.clearInterstitial(i,null),i.appendInPlace&&(this.attachPrimary(r,null),this.flushFrontBuffer(r))}else if(-1===o)return void this.checkStart();if(!this.schedule||!this.isInterstitial(a))return;let h=this.schedule.findItemIndexAtTime(o);this.setSchedulePosition(h)}onAssetListLoaded(i,r){var s,a;let n=r.event,l=n.identifier,o=r.assetListResponse.ASSETS;if(!(null!=(s=this.schedule)&&s.hasEvent(l)))return;let h=n.timelineStart,d=n.duration,u=0;o.forEach((i,r)=>{let s=parseFloat(i.DURATION);this.createAsset(n,r,u,h+u,s,i.URI),u+=s}),n.duration=u,this.log(`Loaded asset-list with duration: ${u} (was: ${d}) ${n}`);let f=this.waitingItem,c=(null==f?void 0:f.event.identifier)===l;this.updateSchedule();let g=null==(a=this.bufferingItem)?void 0:a.event;if(c){let i=this.findEventIndex(l),r=this.getEventItem(l);if(r){if(!this.playingItem&&this.timelinePos>r.end&&this.schedule.findItemIndexAtTime(this.timelinePos)!==i){n.error=Error(`Interstitial ${o.length?"no longer within playback range":"asset-list is empty"} ${this.timelinePos} ${n}`),this.log(n.error.message),this.updateSchedule(!0),this.primaryFallback(n);return}this.setBufferingItem(r)}this.setSchedulePosition(i)}else if((null==g?void 0:g.identifier)===l){let i=n.assetList[0];if(i){let r=this.getAssetPlayer(i.identifier);if(g.appendInPlace){let i=this.primaryMedia;r&&i&&this.bufferAssetPlayer(r,i)}else r&&r.loadSource()}}}onError(i,r){if(this.schedule)switch(r.details){case E.ASSET_LIST_PARSING_ERROR:case E.ASSET_LIST_LOAD_ERROR:case E.ASSET_LIST_LOAD_TIMEOUT:{let i=r.interstitial;i&&(this.updateSchedule(!0),this.primaryFallback(i));break}case E.BUFFER_STALLED_ERROR:{let i=this.endedItem||this.waitingItem||this.playingItem;if(this.isInterstitial(i)&&i.event.appendInPlace)return void this.handleInPlaceStall(i.event);let r=this.primaryMedia;this.log(`Primary player stall @${this.timelinePos} currentTime: ${null==r?void 0:r.currentTime} bufferedPos: ${this.bufferedPos}`),this.onTimeupdate(),this.checkBuffer(!0)}}}},lD=class{constructor(i){this.hls=void 0,this.media=null,this.currentTime=0,this.stallCount=0,this._latency=null,this._targetLatencyUpdated=!1,this.onTimeupdate=()=>{var i;let{media:r}=this,s=this.levelDetails;if(!r||!s||!this.hls)return;this.currentTime=r.currentTime;let a=this.hls.config,n=this.computeLatency();if(null===n)return;this._latency=n;let{lowLatencyMode:l,maxLiveSyncPlaybackRate:o}=a;if(!l||1===o||!s.live)return;let h=this.targetLatency;if(null===h)return;let d=n-h,u=d<Math.min(this.maxLatency,h+s.targetduration),f=r5(a)&&!!(null!=(i=this.hls.interstitialsManager)&&null!=(i=i.playingItem)&&i.event);if(u&&d>.05&&this.forwardBufferLength>1&&!f){let i=Math.min(Math.min(2,Math.max(1,o)),Math.max(1,Math.round(2/(1+Math.exp(-.75*d-this.edgeStalled))*20)/20));this.changeMediaPlaybackRate(r,i)}else 1!==r.playbackRate&&0!==r.playbackRate&&this.changeMediaPlaybackRate(r,1)},this.hls=i,this.registerListeners()}get levelDetails(){var i;return(null==(i=this.hls)?void 0:i.latestLevelDetails)||null}get latency(){return this._latency||0}get maxLatency(){var i;let r=null==(i=this.hls)?void 0:i.config;if(!r)return 0;if(void 0!==r.liveMaxLatencyDuration)return r.liveMaxLatencyDuration;let s=this.levelDetails;return s?r.liveMaxLatencyDurationCount*s.targetduration:0}get targetLatency(){let i=this.levelDetails;if(null===i||!this.hls)return null;let r=this.hls.config,{holdBack:s,partHoldBack:a,targetduration:n}=i,{liveSyncDuration:l,liveSyncDurationCount:o,lowLatencyMode:h}=r,d=this.hls.userConfig,u=h&&a||s;return(this._targetLatencyUpdated||d.liveSyncDuration||d.liveSyncDurationCount||0===u)&&(u=void 0===l?o*n:l),u+Math.min(this.stallCount*r.liveSyncOnStallIncrease,n)}set targetLatency(i){this.hls&&(this.stallCount=0,this.hls.config.liveSyncDuration=i,this._targetLatencyUpdated=!0)}get liveSyncPosition(){let i=this.estimateLiveEdge(),r=this.targetLatency;if(null===i||null===r||!this.hls)return null;let s=this.levelDetails;if(null===s)return null;let a=s.edge,n=i-r-this.edgeStalled;return Math.min(Math.max(a-s.totalduration,n),a-(this.hls.config.lowLatencyMode&&s.partTarget||s.targetduration))}get drift(){let i=this.levelDetails;return null===i?1:i.drift}get edgeStalled(){let i=this.levelDetails;if(null===i||!this.hls)return 0;let r=3*(this.hls.config.lowLatencyMode&&i.partTarget||i.targetduration);return Math.max(i.age-r,0)}get forwardBufferLength(){let{media:i}=this,r=this.levelDetails;if(!i||!r)return 0;let s=i.buffered.length;return(s?i.buffered.end(s-1):r.edge)-this.currentTime}destroy(){this.unregisterListeners(),this.onMediaDetaching(),this.hls=null}registerListeners(){let{hls:i}=this;
29i&&(i.on(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.on(T.ERROR,this.onError,this),i.on(T.INTERSTITIAL_ASSET_STARTED,this.onAssetStarted,this))}unregisterListeners(){let{hls:i}=this;i&&(i.off(T.MEDIA_ATTACHED,this.onMediaAttached,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.LEVEL_UPDATED,this.onLevelUpdated,this),i.off(T.ERROR,this.onError,this),i.off(T.INTERSTITIAL_ASSET_STARTED,this.onAssetStarted,this))}onMediaAttached(i,r){this.media=r.media,this.media.addEventListener("timeupdate",this.onTimeupdate)}onMediaDetaching(){this.media&&(this.media.removeEventListener("timeupdate",this.onTimeupdate),this.media=null)}onManifestLoading(){this._latency=null,this.stallCount=0}onLevelUpdated(i,{details:r}){r.advanced&&this.onTimeupdate(),!r.live&&this.media&&this.media.removeEventListener("timeupdate",this.onTimeupdate)}onAssetStarted(i,r){var s;let a=this.hls,n=this.media||r.event.appendInPlace&&(null==a||null==(s=a.interstitialsManager)?void 0:s.playerQueue.reduce((i,r)=>i||r.media,null));a&&n&&n.playbackRate>1&&n.playbackRate<=a.config.maxLiveSyncPlaybackRate&&this.changeMediaPlaybackRate(n,1)}onError(i,r){var s;r.details===E.BUFFER_STALLED_ERROR&&(this.stallCount++,this.hls&&null!=(s=this.levelDetails)&&s.live&&this.hls.logger.warn("[latency-controller]: Stall detected, adjusting target latency"))}changeMediaPlaybackRate(i,r){var s,a;i.playbackRate!==r&&(null==(s=this.hls)||s.logger.debug(`[latency-controller]: latency=${this.latency.toFixed(3)}, targetLatency=${null==(a=this.targetLatency)?void 0:a.toFixed(3)}, forwardBufferLength=${this.forwardBufferLength.toFixed(3)}: adjusting playback rate from ${i.playbackRate} to ${r}`),i.playbackRate=r)}estimateLiveEdge(){let i=this.levelDetails;return null===i?null:i.edge+i.age}computeLatency(){let i=this.estimateLiveEdge();return null===i?null:i-this.currentTime}}
29,lP=class extends r4{constructor(i,r,s){super(i,r,s,"subtitle-stream-controller",b.SUBTITLE),this.currentTrackId=-1,this.tracksBuffered=[],this.mainDetails=null,this.registerListeners()}onHandlerDestroying(){this.unregisterListeners(),super.onHandlerDestroying(),this.mainDetails=null}registerListeners(){super.registerListeners();let{hls:i}=this;i.on(T.LEVEL_LOADED,this.onLevelLoaded,this),i.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),i.on(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),i.on(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),i.on(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),i.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}unregisterListeners(){super.unregisterListeners();let{hls:i}=this;i.off(T.LEVEL_LOADED,this.onLevelLoaded,this),i.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),i.off(T.SUBTITLE_TRACK_SWITCH,this.onSubtitleTrackSwitch,this),i.off(T.SUBTITLE_TRACK_LOADED,this.onSubtitleTrackLoaded,this),i.off(T.SUBTITLE_FRAG_PROCESSED,this.onSubtitleFragProcessed,this),i.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}startLoad(i,r){this.stopLoad(),this.state=rW,this.setInterval(500),this.nextLoadPosition=this.lastCurrentTime=i+this.timelineOffset,this.startPosition=r?-1:i,this.tick()}onManifestLoading(){super.onManifestLoading(),this.mainDetails=null}onMediaDetaching(i,r){this.tracksBuffered=[],super.onMediaDetaching(i,r)}onLevelLoaded(i,r){this.mainDetails=r.details}onSubtitleFragProcessed(i,r){let{frag:s,part:a,success:n}=r;if(!n)return;let l=this.tracksBuffered[this.currentTrackId];if(!l)return;let o,h=(a||s).start;for(let i=0;i<l.length;i++)if(h>=l[i].start&&h<=l[i].end){o=l[i];break}let d=h+(a||s).duration;if(o?o.end=d:(o={start:h,end:d},l.push(o)),!a||d>=s.end){let i=this.fragmentTracker.fragBuffered(s);a&&i&&(i.range.subs={time:[{startPTS:s.start,endPTS:d}],partial:!0}),_(s)&&!this.fragContextChanged(s)&&(this.fragPrevious=s),this.fragBufferedComplete(s,a),this.media&&this.tickImmediate()}}onBufferFlushing(i,r){let{startOffset:s,endOffset:a}=r;if(0===s&&a!==1/0){let i=a-1;if(i<=0)return;r.endOffsetSubtitles=Math.max(0,i),this.tracksBuffered.forEach(r=>{if(r)for(let s=0;s<r.length;){if(r[s].end<=i){r.shift();continue}if(r[s].start<i)r[s].start=i;else break;s++}}),this.fragmentTracker.removeFragmentsInRange(s,i,b.SUBTITLE)}}onError(i,r){let s=r.frag;(null==s?void 0:s.type)===b.SUBTITLE&&(r.details===E.FRAG_GAP&&this.fragmentTracker.addAsGap(s),this.fragCurrent&&this.fragCurrent.abortRequests(),this.state!==rq&&(this.state=rW))}onSubtitleTracksUpdated(i,{subtitleTracks:r}){if(this.levels&&ad(this.levels,r)){this.levels=r.map(i=>new t6(i));return}this.tracksBuffered=[],this.levels=r.map(i=>{let r=new t6(i);return this.tracksBuffered[r.id]=[],r}),this.fragmentTracker.removeFragmentsInRange(0,1/0,b.SUBTITLE),this.fragPrevious=null,this.mediaBuffer=null}onSubtitleTrackSwitch(i,r){var s;if(this.currentTrackId=r.id,this.abortCurrentFrag(),!(null!=(s=this.levels)&&s.length)||-1===this.currentTrackId)return void this.clearInterval();let a=this.levels[this.currentTrackId];if(!(null!=a&&a.details)){this.mediaBuffer=null;return}this.mediaBuffer=this.mediaBufferTimeRanges,this.state!==rq&&this.setInterval(500)}onSubtitleTrackLoaded(i,r){var s,a;let{currentTrackId:n,levels:l}=this,{details:o,id:h}=r;if(!l)return void this.warn(`Subtitle tracks were reset while loading level ${h}`);let d=l[h];if(h>=l.length||!d)return;this.log(`Subtitle track ${h} loaded [${o.startSN},${o.endSN}]${o.lastPartSn?`[part-${o.lastPartSn}-${o.lastPartIndex}]`:""},duration:${o.totalduration}`),this.mediaBuffer=this.mediaBufferTimeRanges;let u=this.mainDetails,f=0;if(o.live||null!=(s=d.details)&&s.live){if(o.deltaUpdateFailed)return;if(!u){this.startFragRequested=!1;return}d.details&&(f=this.alignPlaylists(o,d.details,null==(a=this.levelLastLoaded)?void 0:a.details)),o.alignedSliding||(rK(u,o,this),f=o.fragmentStart)}d.details=o,this.levelLastLoaded=d,u&&!this.startFragRequested&&this.setStartPosition(u,f),h===n&&(this.hls.trigger(T.SUBTITLE_TRACK_UPDATED,{details:o,id:h,groupId:r.groupId}),this.tickImmediate())}_handleFragmentLoadProgress(i){let{frag:r,part:s,payload:a}=i;s&&null!=a&&a.byteLength&&this.shouldDecrypt(r)&&this.decryptPayload(a,r,s)}_handleFragmentLoadComplete(i){let{frag:r,payload:s}=i;!this.fragContextChanged(r)&&null!=s&&s.byteLength&&this.shouldDecrypt(r)&&this.decryptPayload(s,r,null)}shouldDecrypt(i){let r=i.decryptdata;
29return!!(null!=r&&r.key&&r.iv&&i0(r.method))}decryptPayload(i,r,s){let a=r.decryptdata,n=performance.now();this.decrypter.decrypt(new Uint8Array(i),a.key.buffer,a.iv.buffer,i1(a.method)).then(i=>{this.fragContextChanged(r)||this.hls.trigger(T.FRAG_DECRYPTED,{frag:r,part:s,payload:i,stats:{tstart:n,tdecrypt:performance.now()}})}).catch(i=>{this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.FRAG_DECRYPT_ERROR,fatal:!1,error:i,reason:i.message,frag:r,part:s}),s||(this.warn(`${i.name}: ${i.message}`),this.state=rW)})}doTick(){if(this.state===rW&&this.levels){var i,r;if(!this.media&&!this.primaryPrefetch&&(this.startFragRequested||!this.config.startFragPrefetch))return;let{currentTrackId:s,levels:a}=this,n=a[s],l=null==n?void 0:n.details;if(!l||this.waitForLive(n)||this.waitForCdnTuneIn(l)){this.startFragRequested=!1;return}let{config:o}=this,h=this.playhead,{end:d,len:u}=iK.bufferedInfo(this.tracksBuffered[this.currentTrackId]||[],h,o.maxBufferHole);if(u>Math.max(this.hls.maxBufferLength+l.levelTargetDuration,(null==(i=this.hls.mainForwardBufferInfo)?void 0:i.len)||0)||u&&!this.buffering)return;let f=this.getNextFragment(d,l);if(f){if(_(f)){let i=f.sn-l.startSN,s=l.fragments[i-1];f.cc!==(null==s?void 0:s.cc)||null!=(r=l.partList)&&r.length||this.fragmentTracker.getState(s)!==iA||(f=s)}this.loadFragment(f,n,d)}}}loadFragment(i,r,s){let a=this.fragmentTracker.getState(i);(a===iA||a===iR)&&super.loadFragment(i,r,s)}get mediaBufferTimeRanges(){return new l_(this.tracksBuffered[this.currentTrackId]||[])}},l_=class{constructor(i){this.buffered=void 0;let r=(r,s,a)=>{if((s>>>=0)>a-1)throw new DOMException(`Failed to execute '${r}' on 'TimeRanges': The index provided (${s}) is greater than the maximum bound (${a})`);return i[s][r]};this.buffered={get length(){return i.length},end:s=>r("end",s,i.length),start:s=>r("start",s,i.length)}}},lC={42:225,92:233,94:237,95:243,96:250,123:231,124:247,125:209,126:241,127:9608,128:174,129:176,130:189,131:191,132:8482,133:162,134:163,135:9834,136:224,137:32,138:232,139:226,140:234,141:238,142:244,143:251,144:193,145:201,146:211,147:218,148:220,149:252,150:8216,151:161,152:42,153:8217,154:9473,155:169,156:8480,157:8226,158:8220,159:8221,160:192,161:194,162:199,163:200,164:202,165:203,166:235,167:206,168:207,169:239,170:212,171:217,172:249,173:219,174:171,175:187,176:195,177:227,178:205,179:204,180:236,181:210,182:242,183:213,184:245,185:123,186:125,187:92,188:94,189:95,190:124,191:8764,192:196,193:228,194:214,195:246,196:223,197:165,198:164,199:9475,200:197,201:229,202:216,203:248,204:9487,205:9491,206:9495,207:9499},lx=i=>String.fromCharCode(lC[i]||i),lw={17:1,18:3,21:5,22:7,23:9,16:11,19:12,20:14},lM={17:2,18:4,21:6,22:8,23:10,19:13,20:15},lO={25:1,26:3,29:5,30:7,31:9,24:11,27:12,28:14},lF={25:2,26:4,29:6,30:8,31:10,27:13,28:15},l$=["white","green","blue","cyan","red","yellow","magenta","black","transparent"],lB=class{constructor(){this.time=null,this.verboseLevel=0}log(i,r){if(this.verboseLevel>=i){let s="function"==typeof r?r():r;et.log(`${this.time} [${i}] ${s}`)}}},lU=function(i){let r=[];for(let s=0;s<i.length;s++)r.push(i[s].toString(16));return r},lN=Object.freeze({foreground:"white",underline:!1,italics:!1,background:"black",flash:!1}),lG=class{constructor(){this.styles=lN}get foreground(){return this.styles.foreground}set foreground(i){let r=this.styles;this.styles={foreground:i,underline:r.underline,italics:r.italics,background:r.background,flash:r.flash}}get underline(){return this.styles.underline}set underline(i){let r=this.styles;this.styles={foreground:r.foreground,underline:i,italics:r.italics,background:r.background,flash:r.flash}}get italics(){return this.styles.italics}set italics(i){let r=this.styles;this.styles={foreground:r.foreground,underline:r.underline,italics:i,background:r.background,flash:r.flash}}get background(){return this.styles.background}set background(i){let r=this.styles;this.styles={foreground:r.foreground,underline:r.underline,italics:r.italics,background:i,flash:r.flash}}get flash(){return this.styles.flash}set flash(i){let r=this.styles;this.styles={foreground:r.foreground,underline:r.underline,italics:r.italics,background:r.background,flash:i}}reset(){this.styles=lN}setStyles(i){let r=this.styles,s=Object.prototype.hasOwnProperty;
29this.styles={foreground:s.call(i,"foreground")?i.foreground:r.foreground,underline:s.call(i,"underline")?i.underline:r.underline,italics:s.call(i,"italics")?i.italics:r.italics,background:s.call(i,"background")?i.background:r.background,flash:s.call(i,"flash")?i.flash:r.flash}}toString(){return"color="+this.foreground+", underline="+this.underline+", italics="+this.italics+", background="+this.background+", flash="+this.flash}},lK=class{constructor(){this.uchar=" ",this.penState=new lG}reset(){this.uchar=" ",this.penState.reset()}setChar(i,r){this.uchar=i,this.penState.styles=r.styles}setPenState(i){this.penState.styles=i.styles}copy(i){this.uchar=i.uchar,this.penState.styles=i.penState.styles}},lH=class{constructor(i){this.chars=[],this.pos=0,this.currPenState=new lG,this.cueStartTime=null,this.logger=void 0;for(let i=0;i<42;i++)this.chars.push(new lK);this.logger=i}equals(i){let r=this.chars,s=i.chars;for(let i=0;i<42;i++){let a=r[i],n=s[i];if(a.uchar!==n.uchar)return!1;let l=a.penState.styles,o=n.penState.styles;if(l!==o&&(l.foreground!==o.foreground||l.underline!==o.underline||l.italics!==o.italics||l.background!==o.background||l.flash!==o.flash))return!1}return!0}copy(i){for(let r=0;r<42;r++)this.chars[r].copy(i.chars[r])}isEmpty(){let i=this.chars;for(let r=0;r<42;r++){let s=i[r];if(" "!==s.uchar)return!1;let a=s.penState.styles;if(a!==lN&&("white"!==a.foreground||a.underline||a.italics||"black"!==a.background||a.flash))return!1}return!0}setCursor(i){this.pos!==i&&(this.pos=i),this.pos<0?(this.logger.log(3,"Negative cursor position "+this.pos),this.pos=0):this.pos>=42&&(this.logger.log(3,"Too large cursor position "+this.pos),this.pos=41)}moveCursor(i){let r=Math.min(this.pos+i,42);if(i>1)for(let i=this.pos+1;i<r;i++)this.chars[i].setPenState(this.currPenState);this.setCursor(r)}backSpace(){this.moveCursor(-1),this.chars[this.pos].setChar(" ",this.currPenState)}insertChar(i){i>=144&&this.backSpace();let r=lx(i);this.pos>=42?this.logger.log(0,()=>"Cannot insert "+i.toString(16)+" ("+r+") at position "+this.pos+". Skipping it!"):(this.chars[this.pos].setChar(r,this.currPenState),this.moveCursor(1))}clearFromPos(i){let r;for(r=i;r<42;r++)this.chars[r].reset()}clear(){this.clearFromPos(0),this.pos=0,this.currPenState.reset()}clearToEndOfRow(){this.clearFromPos(this.pos)}getTextString(){let i=[],r=!0;for(let s=0;s<42;s++){let a=this.chars[s].uchar;" "!==a&&(r=!1),i.push(a)}return r?"":i.join("")}setPenStyles(i){this.currPenState.setStyles(i),this.chars[this.pos].setPenState(this.currPenState)}},lV=class{constructor(i){this.rows=[],this.currRow=14,this.nrRollUpRows=null,this.lastOutputScreen=null,this.logger=void 0;for(let r=0;r<15;r++)this.rows.push(new lH(i));this.logger=i}reset(){for(let i=0;i<15;i++)this.rows[i].clear();this.currRow=14}equals(i){let r=!0;for(let s=0;s<15;s++)if(!this.rows[s].equals(i.rows[s])){r=!1;break}return r}copy(i){for(let r=0;r<15;r++){let s=this.rows[r].chars,a=i.rows[r].chars;for(let i=0;i<42;i++){let r=s[i],n=a[i];r.uchar=n.uchar,r.penState.styles=n.penState.styles}}}isEmpty(){let i=!0;for(let r=0;r<15;r++)if(!this.rows[r].isEmpty()){i=!1;break}return i}backSpace(){this.rows[this.currRow].backSpace()}clearToEndOfRow(){this.rows[this.currRow].clearToEndOfRow()}insertChar(i){this.rows[this.currRow].insertChar(i)}setPen(i){this.rows[this.currRow].setPenStyles(i)}moveCursor(i){this.rows[this.currRow].moveCursor(i)}setCursor(i){this.logger.log(2,"setCursor: "+i),this.rows[this.currRow].setCursor(i)}setPAC(i){this.logger.log(2,()=>"pacData = "+t7(i));let r=i.row-1;if(this.nrRollUpRows&&r<this.nrRollUpRows-1&&(r=this.nrRollUpRows-1),this.nrRollUpRows&&this.currRow!==r){for(let i=0;i<15;i++)this.rows[i].clear();let i=this.currRow+1-this.nrRollUpRows,s=this.lastOutputScreen;if(s){let a=s.rows[i].cueStartTime,n=this.logger.time;if(null!==a&&null!==n&&a<n)for(let a=0;a<this.nrRollUpRows;a++)this.rows[r-this.nrRollUpRows+a+1].copy(s.rows[i+a])}}this.currRow=r;let s=this.rows[this.currRow];if(null!==i.indent){let r=Math.max(i.indent-1,0);s.setCursor(i.indent),i.color=s.chars[r].penState.foreground}let a={foreground:i.color,underline:i.underline,italics:i.italics,background:"black",flash:!1};this.setPen(a)}setBkgData(i){this.logger.log(2,()=>"bkgData = "+t7(i)),this.backSpace(),this.setPen(i),this.insertChar(32)}setRollUpRows(i){this.nrRollUpRows=i}rollUp(){if(null===this.nrRollUpRows)return void this.logger.log(3,"roll_up but nrRollUpRows not set yet");this.logger.log(1,()=>this.getDisplayText());let i=this.currRow+1-this.nrRollUpRows,r=this.rows.splice(i,1)[0];r.clear(),this.rows.splice(this.currRow,0,r),this.logger.log(2,"Rolling up")}getDisplayText(i){i=i||!1;let r=[],s="",a=-1;for(let s=0;s<15;s++){let n=this.rows[s].getTextString();
29n&&(a=s+1,i?r.push("Row "+a+": '"+n+"'"):r.push(n.trim()))}return r.length>0&&(s=i?"["+r.join(" | ")+"]":r.join("\n")),s}getTextAndFormat(){return this.rows}},lj=class{constructor(i,r,s){this.chNr=void 0,this.outputFilter=void 0,this.mode=void 0,this.verbose=void 0,this.displayedMemory=void 0,this.nonDisplayedMemory=void 0,this.lastOutputScreen=void 0,this.currRollUpRow=void 0,this.writeScreen=void 0,this.cueStartTime=void 0,this.logger=void 0,this.chNr=i,this.outputFilter=r,this.mode=null,this.verbose=0,this.displayedMemory=new lV(s),this.nonDisplayedMemory=new lV(s),this.lastOutputScreen=new lV(s),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null,this.logger=s}reset(){this.mode=null,this.displayedMemory.reset(),this.nonDisplayedMemory.reset(),this.lastOutputScreen.reset(),this.outputFilter.reset(),this.currRollUpRow=this.displayedMemory.rows[14],this.writeScreen=this.displayedMemory,this.mode=null,this.cueStartTime=null}getHandler(){return this.outputFilter}setHandler(i){this.outputFilter=i}setPAC(i){this.writeScreen.setPAC(i)}setBkgData(i){this.writeScreen.setBkgData(i)}setMode(i){i!==this.mode&&(this.mode=i,this.logger.log(2,()=>"MODE="+i),"MODE_POP-ON"===this.mode?this.writeScreen=this.nonDisplayedMemory:(this.writeScreen=this.displayedMemory,this.writeScreen.reset()),"MODE_ROLL-UP"!==this.mode&&(this.displayedMemory.nrRollUpRows=null,this.nonDisplayedMemory.nrRollUpRows=null),this.mode=i)}insertChars(i){for(let r=0;r<i.length;r++)this.writeScreen.insertChar(i[r]);let r=this.writeScreen===this.displayedMemory?"DISP":"NON_DISP";this.logger.log(2,()=>r+": "+this.writeScreen.getDisplayText(!0)),("MODE_PAINT-ON"===this.mode||"MODE_ROLL-UP"===this.mode)&&(this.logger.log(1,()=>"DISPLAYED: "+this.displayedMemory.getDisplayText(!0)),this.outputDataUpdate())}ccRCL(){this.logger.log(2,"RCL - Resume Caption Loading"),this.setMode("MODE_POP-ON")}ccBS(){this.logger.log(2,"BS - BackSpace"),"MODE_TEXT"!==this.mode&&(this.writeScreen.backSpace(),this.writeScreen===this.displayedMemory&&this.outputDataUpdate())}ccAOF(){}ccAON(){}ccDER(){this.logger.log(2,"DER- Delete to End of Row"),this.writeScreen.clearToEndOfRow(),this.outputDataUpdate()}ccRU(i){this.logger.log(2,"RU("+i+") - Roll Up"),this.writeScreen=this.displayedMemory,this.setMode("MODE_ROLL-UP"),this.writeScreen.setRollUpRows(i)}ccFON(){this.logger.log(2,"FON - Flash On"),this.writeScreen.setPen({flash:!0})}ccRDC(){this.logger.log(2,"RDC - Resume Direct Captioning"),this.setMode("MODE_PAINT-ON")}ccTR(){this.logger.log(2,"TR"),this.setMode("MODE_TEXT")}ccRTD(){this.logger.log(2,"RTD"),this.setMode("MODE_TEXT")}ccEDM(){this.logger.log(2,"EDM - Erase Displayed Memory"),this.displayedMemory.reset(),this.outputDataUpdate(!0)}ccCR(){this.logger.log(2,"CR - Carriage Return"),this.writeScreen.rollUp(),this.outputDataUpdate(!0)}ccENM(){this.logger.log(2,"ENM - Erase Non-displayed Memory"),this.nonDisplayedMemory.reset()}ccEOC(){if(this.logger.log(2,"EOC - End Of Caption"),"MODE_POP-ON"===this.mode){let i=this.displayedMemory;this.displayedMemory=this.nonDisplayedMemory,this.nonDisplayedMemory=i,this.writeScreen=this.nonDisplayedMemory,this.logger.log(1,()=>"DISP: "+this.displayedMemory.getDisplayText())}this.outputDataUpdate(!0)}ccTO(i){this.logger.log(2,"TO("+i+") - Tab Offset"),this.writeScreen.moveCursor(i)}ccMIDROW(i){let r={flash:!1};r.underline=i%2==1,r.italics=i>=46,r.foreground=r.italics?"white":["white","green","blue","cyan","red","yellow","magenta"][Math.floor(i/2)-16],this.logger.log(2,"MIDROW: "+t7(r)),this.writeScreen.setPen(r)}outputDataUpdate(i=!1){let r=this.logger.time;null!==r&&this.outputFilter&&(null!==this.cueStartTime||this.displayedMemory.isEmpty()?this.displayedMemory.equals(this.lastOutputScreen)||(this.outputFilter.newCue(this.cueStartTime,r,this.lastOutputScreen),i&&this.outputFilter.dispatchCue&&this.outputFilter.dispatchCue(),this.cueStartTime=this.displayedMemory.isEmpty()?null:r):this.cueStartTime=r,this.lastOutputScreen.copy(this.displayedMemory))}cueSplitAtTime(i){this.outputFilter&&(this.displayedMemory.isEmpty()||(this.outputFilter.newCue&&this.outputFilter.newCue(this.cueStartTime,i,this.displayedMemory),this.cueStartTime=i))}},lq=class{constructor(i,r,s){this.channels=[null,null,null],this.currentChannel=0,this.cmdHistory={a:null,b:null},this.logger=void 0,this.field=void 0,this.outputFilters=void 0,this.logger=new lB,this.field=i,this.outputFilters=[null,r,s]}getHandler(i){return this.outputFilters[i]}setHandler(i,r){var s;this.outputFilters[i]=r,null==(s=this.channels[i])||s.setHandler(r)}getChannel(i){let r=this.channels[i];return r||(r=this.channels[i]=new lj(this.field+i-1,this.outputFilters[i],this.logger)),r}addData(i,r){this.logger.time=i;for(let i=0;i<r.length;i+=2){var s,a,n,l,o,h,d,u;let f=127&r[i],c=127&r[i+1],g=!1,m=null;if(0===f&&0===c)continue;this.logger.log(3,()=>"["+lU([r[i],r[i+1]])+"] -> ("+lU([f,c])+")");let p=this.cmdHistory;if(f>=16&&f<=31){if(s=f,a=c,(n=p).a===s&&n.b===a){(l=p).a=null,l.b=null,this.logger.log(3,()=>
29"Repeated command ("+lU([f,c])+") is dropped");continue}o=f,h=c,(d=this.cmdHistory).a=o,d.b=h,(g=this.parseCmd(f,c))||(g=this.parseMidrow(f,c)),g||(g=this.parsePAC(f,c)),g||(g=this.parseBackgroundAttributes(f,c))}else{(u=p).a=null,u.b=null}if(!g&&(m=this.parseChars(f,c))){let i=this.currentChannel;i&&i>0?this.getChannel(i).insertChars(m):this.logger.log(2,"No channel found yet. TEXT-MODE?")}g||m||this.logger.log(2,()=>"Couldn't parse cleaned data "+lU([f,c])+" orig: "+lU([r[i],r[i+1]]))}}parseCmd(i,r){if(!((20===i||28===i||21===i||29===i)&&r>=32&&r<=47||(23===i||31===i)&&r>=33&&r<=35))return!1;let s=20===i||21===i||23===i?1:2,a=this.getChannel(s);return 20===i||21===i||28===i||29===i?32===r?a.ccRCL():33===r?a.ccBS():34===r?a.ccAOF():35===r?a.ccAON():36===r?a.ccDER():37===r?a.ccRU(2):38===r?a.ccRU(3):39===r?a.ccRU(4):40===r?a.ccFON():41===r?a.ccRDC():42===r?a.ccTR():43===r?a.ccRTD():44===r?a.ccEDM():45===r?a.ccCR():46===r?a.ccENM():47===r&&a.ccEOC():a.ccTO(r-32),this.currentChannel=s,!0}parseMidrow(i,r){let s=0;if((17===i||25===i)&&r>=32&&r<=47){if((s=17===i?1:2)!==this.currentChannel)return this.logger.log(0,"Mismatch channel in midrow parsing"),!1;let a=this.channels[s];return!!a&&(a.ccMIDROW(r),this.logger.log(3,()=>"MIDROW ("+lU([i,r])+")"),!0)}return!1}parsePAC(i,r){let s;if(!((i>=17&&i<=23||i>=25&&i<=31)&&r>=64&&r<=127||(16===i||24===i)&&r>=64&&r<=95))return!1;let a=i<=23?1:2;return s=r>=64&&r<=95?1===a?lw[i]:lO[i]:1===a?lM[i]:lF[i],this.getChannel(a).setPAC(this.interpretPAC(s,r)),this.currentChannel=a,!0}interpretPAC(i,r){let s,a={color:null,italics:!1,indent:null,underline:!1,row:i};return a.underline=(1&(s=r>95?r-96:r-64))==1,s<=13?a.color=["white","green","blue","cyan","red","yellow","magenta","white"][Math.floor(s/2)]:s<=15?(a.italics=!0,a.color="white"):a.indent=4*Math.floor((s-16)/2),a}parseChars(i,r){let s,a=null,n=null;if(i>=25?(s=2,n=i-8):(s=1,n=i),n>=17&&n<=19){let i;i=17===n?r+80:18===n?r+112:r+144,this.logger.log(2,()=>"Special char '"+lx(i)+"' in channel "+s),a=[i]}else i>=32&&i<=127&&(a=0===r?[i]:[i,r]);return a&&this.logger.log(3,()=>"Char codes =  "+lU(a).join(",")),a}parseBackgroundAttributes(i,r){if(!((16===i||24===i)&&r>=32&&r<=47||(23===i||31===i)&&r>=45&&r<=47))return!1;let s={};return 16===i||24===i?(s.background=l$[Math.floor((r-32)/2)],r%2==1&&(s.background+="_semi")):45===r?s.background="transparent":(s.foreground="black",47===r&&(s.underline=!0)),this.getChannel(i<=23?1:2).setBkgData(s),!0}reset(){var i;for(let i=0;i<Object.keys(this.channels).length;i++){let r=this.channels[i];r&&r.reset()}(i=this.cmdHistory).a=null,i.b=null}cueSplitAtTime(i){for(let r=0;r<this.channels.length;r++){let s=this.channels[r];s&&s.cueSplitAtTime(i)}}},lW=class{constructor(i,r){this.timelineController=void 0,this.cueRanges=[],this.trackName=void 0,this.startTime=null,this.endTime=null,this.screen=null,this.timelineController=i,this.trackName=r}dispatchCue(){null!==this.startTime&&(this.timelineController.addCues(this.trackName,this.startTime,this.endTime,this.screen,this.cueRanges),this.startTime=null)}newCue(i,r,s){(null===this.startTime||this.startTime>i)&&(this.startTime=i),this.endTime=r,this.screen=s,this.timelineController.createCaptionsTrack(this.trackName)}reset(){this.cueRanges=[],this.startTime=null}},lY=class{constructor(i){this.hls=void 0,this.media=null,this.config=void 0,this.enabled=!0,this.Cues=void 0,this.tracks=[],this.initPTS=[],this.unparsedVttFrags=[],this.captionsTracks={},this.cueCache={},this.nonNativeCaptionsTracks={},this.cea608Parser1=void 0,this.cea608Parser2=void 0,this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=lz(),this.captionsProperties=void 0,this.hls=i,this.config=i.config,this.Cues=i.config.cueHandler,this.cueCache={},this.captionsProperties={textTrack1:{label:this.config.captionsTextTrack1Label,languageCode:this.config.captionsTextTrack1LanguageCode},textTrack2:{label:this.config.captionsTextTrack2Label,languageCode:this.config.captionsTextTrack2LanguageCode},textTrack3:{label:this.config.captionsTextTrack3Label,languageCode:this.config.captionsTextTrack3LanguageCode},textTrack4:{label:this.config.captionsTextTrack4Label,languageCode:this.config.captionsTextTrack4LanguageCode}}
29,i.on(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.on(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),i.on(T.FRAG_LOADING,this.onFragLoading,this),i.on(T.FRAG_LOADED,this.onFragLoaded,this),i.on(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),i.on(T.FRAG_DECRYPTED,this.onFragDecrypted,this),i.on(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.on(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),i.on(T.BUFFER_APPENDED,this.onBufferAppended,this),i.on(T.BUFFER_FLUSHING,this.onBufferFlushing,this)}destroy(){let{hls:i}=this;i.off(T.MEDIA_ATTACHING,this.onMediaAttaching,this),i.off(T.MEDIA_DETACHING,this.onMediaDetaching,this),i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.SUBTITLE_TRACKS_UPDATED,this.onSubtitleTracksUpdated,this),i.off(T.FRAG_LOADING,this.onFragLoading,this),i.off(T.FRAG_LOADED,this.onFragLoaded,this),i.off(T.FRAG_PARSING_USERDATA,this.onFragParsingUserdata,this),i.off(T.FRAG_DECRYPTED,this.onFragDecrypted,this),i.off(T.INIT_PTS_FOUND,this.onInitPtsFound,this),i.off(T.SUBTITLE_TRACKS_CLEARED,this.onSubtitleTracksCleared,this),i.off(T.BUFFER_APPENDED,this.onBufferAppended,this),i.off(T.BUFFER_FLUSHING,this.onBufferFlushing,this),this.hls=this.config=this.media=null,this.cea608Parser1=this.cea608Parser2=void 0}initCea608Parsers(){let i=new lW(this,"textTrack1"),r=new lW(this,"textTrack2"),s=new lW(this,"textTrack3"),a=new lW(this,"textTrack4");this.cea608Parser1=new lq(1,i,r),this.cea608Parser2=new lq(3,s,a)}addCues(i,r,s,a,n){var l,o,h;let d=!1;for(let i=n.length;i--;){let a=n[i],h=(l=a[0],o=a[1],Math.min(o,s)-Math.max(l,r));if(h>=0&&(a[0]=Math.min(a[0],r),a[1]=Math.max(a[1],s),d=!0,h/(s-r)>.5))return}if(d||n.push([r,s]),this.config.renderTextTracksNatively){let n=this.cueCache[i];if(n){let i=this.Cues.newCue(null,r,s,a);i.length&&n.push.apply(n,i)}else{let n=this.captionsTracks[i].track;this.Cues.newCue(n,r,s,a)}}else{let n=this.Cues.newCue(null,r,s,a),l=null==(h=this.captionsProperties[i])?void 0:h.media;this.hls.trigger(T.CUES_PARSED,{type:"captions",cues:n,track:i,closedCaptions:l})}}onInitPtsFound(i,{id:r,timestampOffsets:s}){let{unparsedVttFrags:a}=this;r===b.MAIN&&(this.initPTS=s),a.length&&(this.unparsedVttFrags=[],a.forEach(i=>{this.initPTS[i.frag.cc]?this.onFragLoaded(T.FRAG_LOADED,i):this.hls.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:i.frag,part:null,error:Error("Subtitle discontinuity domain does not match main")})}))}createCaptionsTrack(i){this.config.renderTextTracksNatively?this.createNativeTrack(i):this.createNonNativeTrack(i)}createNativeTrack(i){if(this.captionsTracks[i])return;let{captionsProperties:r,captionsTracks:s,cueCache:a,media:n}=this,{label:l,languageCode:o}=r[i];n&&(a[i]=[],s[i]=nJ(n,"captions",l,o,"hidden"))}createNonNativeTrack(i){if(this.nonNativeCaptionsTracks[i])return;let r=this.captionsProperties[i];if(!r)return;let s={_id:i,label:r.label,kind:"captions",default:!!r.media&&!!r.media.default,closedCaptions:r.media};this.nonNativeCaptionsTracks[i]=s,this.hls.trigger(T.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:[s]})}onMediaAttaching(i,r){this.media=r.media}onMediaDetaching(i,r){let s=!!r.transferMedia;if(this.media=null,!s){if(this.config.renderTextTracksNatively){let{captionsTracks:i,cueCache:r}=this;for(let s in i)i[s].remove(),delete r[s]}this.cueCache={},this.captionsTracks={},this.nonNativeCaptionsTracks={}}}onManifestLoading(){this.lastCc=-1,this.lastSn=-1,this.lastPartIndex=-1,this.prevCC=-1,this.vttCCs=lz(),this.tracks=[],this.captionsTracks={},this.nonNativeCaptionsTracks={},this.unparsedVttFrags=[],this.initPTS=[],this.cea608Parser1&&this.cea608Parser2&&(this.cea608Parser1.reset(),this.cea608Parser2.reset())}onSubtitleTracksUpdated(i,r){let s=r.subtitleTracks||[];if(s.length&&!this.config.renderTextTracksNatively&&!ad(this.tracks,s)){let i=s.map(i=>({label:i.name,kind:i.type.toLowerCase(),default:i.default,subtitleTrack:i}));this.hls.trigger(T.NON_NATIVE_TEXT_TRACKS_FOUND,{tracks:i})}this.tracks=s}onManifestLoaded(i,r){this.config.enableCEA708Captions&&r.captions&&r.captions.forEach(i=>
29{let r=/(?:CC|SERVICE)([1-4])/.exec(i.instreamId);if(!r)return;let s=`textTrack${r[1]}`,a=this.captionsProperties[s];a&&(a.label=i.name,i.lang&&(a.languageCode=i.lang),a.media=i)})}closedCaptionsForLevel(i){let r=this.hls.levels[i.level];return null==r?void 0:r.attrs["CLOSED-CAPTIONS"]}onFragLoading(i,r){if(this.enabled&&r.frag.type===b.MAIN){var s,a;let{cea608Parser1:i,cea608Parser2:n,lastSn:l}=this,{cc:o,sn:h}=r.frag,d=null==(s=null==(a=r.part)?void 0:a.index)?-1:s;i&&n&&(h!==l+1||h===l&&d!==this.lastPartIndex+1||o!==this.lastCc)&&(i.reset(),n.reset()),this.lastCc=o,this.lastSn=h,this.lastPartIndex=d}}onFragLoaded(i,r){let{frag:s,payload:a}=r;if(s.level<this.tracks.length&&s.type===b.SUBTITLE){var n;if(a.byteLength||null!=(n=s.initSegment)&&null!=(n=n.data)&&n.byteLength){let i=s.decryptdata,a="stats"in r;if(null==i||!i.encrypted||a){let i=this.tracks[s.level],a=this.vttCCs;a[s.cc]||(a[s.cc]={start:s.start,prevCC:this.prevCC,new:!0},this.prevCC=s.cc),(null==i?void 0:i.textCodec)===nH?this._parseIMSC1(r):this._parseVTTs(r)}}else{let i="part"in r?r.part:null;this.hls.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:s,part:i,error:Error("Empty subtitle payload")})}}}_parseIMSC1(i){let{frag:r,payload:s}=i,a="part"in i?i.part:null,n=this.hls;nW(s,this.initPTS[r.cc],i=>{this._appendCues(i,r.level),n.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:r,part:a})},i=>{n.logger.log(`Cannot parse IMSC1 (sn: ${r.sn} @${r.start}): ${i}`),n.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:r,part:a,error:i})})}_parseVTTs(i){var r,s,a,n,l,o,h,d;let u,f,c,g,m,p,v,y,E,S,{frag:A,payload:L}=i,R="part"in i?i.part:null,{initPTS:b,unparsedVttFrags:I}=this,k=b.length-1;if(!b[A.cc]&&-1===k)return void I.push(i);let D=this.hls,P=null==(r=A.initSegment)?void 0:r.data;s=P?tE(P,new Uint8Array(L)).buffer:L,a=this.initPTS[A.cc],n=this.vttCCs,l=A.cc,o=(R&&!P?R:A).start,h=i=>{this._appendCues(i,A.level),D.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!0,frag:A,part:R})},d=r=>{let s=r.message.startsWith("Missing initPTS");(D.logger.log(`${s?"Deferred parsing of":"Cannot parse"} VTT cue (sn: ${A.sn} @${A.start}): ${r}`),s)?I.push(i):(this.config.enableIMSC1&&this._fallbackToIMSC1(i),D.trigger(T.SUBTITLE_FRAG_PROCESSED,{success:!1,frag:A,part:R,error:r}))},u=new nB,f=eg(new Uint8Array(s)).trim().replace(nN,"\n").split("\n"),c=[],g=a?function(i,r=1){return sJ(i,9e4,1/r)}(a.baseTime,a.timescale):0,m="00:00.000",p=0,v=0,y=!1,S=!0,u.oncue=function(i){let r=n[l],s=n.ccOffset,h=(p-g)/9e4;if(y){if(null!=r&&r.new&&(s=n.ccOffset=r.start),h){if(!a){E=Error("Missing initPTS for VTT MPEGTS");return}s=h-n.presentationOffset}}else if(a)s=-a.baseTime/a.timescale;else{E=Error("Missing initPTS for VTT without X-TIMESTAMP-MAP");return}let d=i.endTime-i.startTime,u=s4((i.startTime+s-v)*9e4,9e4*o)/9e4;i.startTime=Math.max(u,0),i.endTime=Math.max(u+d,0);let f=i.text.trim();i.text=decodeURIComponent(encodeURIComponent(f)),i.id?l&&(i.id=`hlsjscc${l}_${i.id}`):i.id=nK(i.startTime,i.endTime,f),i.endTime>0&&c.push(i)},u.onparsingerror=function(i){E=i},u.onflush=function(){E?d(E):h(c)},f.forEach(i=>{if(S){if(i.startsWith("X-TIMESTAMP-MAP=")){S=!1,y=!0,i.slice(16).split(",").forEach(i=>{i.startsWith("LOCAL:")?m=i.slice(6):i.startsWith("MPEGTS:")&&(p=parseInt(i.slice(7)))});try{v=nG(m)/1e3}catch(i){E=i}return}""===i&&(S=!1)}u.parse(i+"\n")}),u.flush()}_fallbackToIMSC1(i){let{frag:r,payload:s}=i,a=this.tracks[r.level];a.textCodec||nW(s,this.initPTS[r.cc],()=>{a.textCodec=nH,this._parseIMSC1(i)},()=>{a.textCodec="wvtt"})}_appendCues(i,r){let s=this.hls;if(this.config.renderTextTracksNatively){var a;let s=null==(a=this.tracks[r].trackNode)?void 0:a.track;if(!s||"disabled"===s.mode)return;i.forEach(i=>n0(s,i))}else{let a=this.tracks[r];if(!a)return;let n=a.default?"default":"subtitles"+r;s.trigger(T.CUES_PARSED,{type:"subtitles",cues:i,track:n,subtitleTrack:a})}}onFragDecrypted(i,r){let{frag:s}=r;s.type===b.SUBTITLE&&this.onFragLoaded(T.FRAG_LOADED,r)}onSubtitleTracksCleared(){this.tracks=[],this.captionsTracks={}}onFragParsingUserdata(i,r){if(!this.enabled||!this.config.enableCEA708Captions)return;let{frag:s,samples:a}=r;if(s.type!==b.MAIN||"NONE"!==this.closedCaptionsForLevel(s))for(let i=0;i<a.length;i++){let r=a[i].bytes;if(r){this.cea608Parser1||this.initCea608Parsers();let s=this.extractCea608Data(r);this.cea608Parser1.addData(a[i].pts,s[0]),this.cea608Parser2.addData(a[i].pts,s[1])}}}onBufferAppended(i,r){if(this.config.renderTextTracksNatively){var s;let{type:i,timeRanges:a}=r;if("video"===i&&null!=(s=a[i])&&s.length){let{captionsTracks:i,cueCache:r}=this;Object.keys(r).forEach(s=>{var a;let n=null==(a=i[s])?void 0:a.track;if(n){let i=r[s];for(let r=0;r<i.length;r++)n0(n,i[r])}delete r[s]})}}}onBufferFlushing(i,r){let{startOffset:s,endOffset:a,endOffsetSubtitles:n,type:l}=r,{media:o}=this;if(!(!o||o.currentTime<a)){if(!l||"video"===l){let{captionsTracks:i,cueCache:r}=this;
29Object.keys(i).forEach(r=>n1(i[r].track,s,a)),Object.keys(r).forEach(i=>{let n=r[i];for(let i=n.length;i--;){let r=n[i];r.startTime>=s&&r.endTime<=a&&n.splice(i,1)}})}this.config.renderTextTracksNatively&&0===s&&void 0!==n&&this.tracks.forEach(i=>{var r;let a=null==(r=i.trackNode)?void 0:r.track;a&&n1(a,s,n)})}}extractCea608Data(i){let r=[[],[]],s=31&i[0],a=2;for(let n=0;n<s;n++){let s=i[a++],n=127&i[a++],l=127&i[a++];if((0!==n||0!==l)&&4&s){let i=3&s;(0===i||1===i)&&(r[i].push(n),r[i].push(l))}}return r}};function lz(){return{ccOffset:0,presentationOffset:0,0:{start:0,prevCC:-1,new:!0}}}var lX=/\s/,lQ={newCue(i,r,s,a){let n=[],l,o,h,d,u,f=self.VTTCue||self.TextTrackCue;for(let g=0;g<a.rows.length;g++)if(l=a.rows[g],h=!0,d=0,u="",!l.isEmpty()){var c;for(let i=0;i<l.chars.length;i++)lX.test(l.chars[i].uchar)&&h?d++:(u+=l.chars[i].uchar,h=!1);l.cueStartTime=r,r===s&&(s+=1e-4),d>=16?d--:d++;let a=n$(u.trim()),m=nK(r,s,a);null!=i&&null!=(c=i.cues)&&c.getCueById(m)||((o=new f(r,s,a)).id=m,o.line=g+1,o.align="left",o.position=10+Math.min(80,10*Math.floor(8*d/32)),n.push(o))}return i&&n.length&&(n.sort((i,r)=>"auto"===i.line||"auto"===r.line?0:i.line>8&&r.line>8?r.line-i.line:i.line-r.line),n.forEach(r=>n0(i,r))),n}},lZ=class{constructor(){this.requestTimeout=void 0,this.retryTimeout=void 0,this.retryDelay=0,this.config=null,this.callbacks=null,this.context=null,this.stats=new L}destroy(){this.callbacks=this.context=this.config=null,this.abortInternal(),this.stats=null}load(i,r,s){let a=this.stats;if(a.loading.start)throw Error("Loader can only be used once.");a.loading.start=self.performance.now(),this.context=i,this.config=r,this.callbacks=s,this.loadInternal()}abort(){var i;this.abortInternal(),null!=(i=this.callbacks)&&i.onAbort&&this.callbacks.onAbort(this.stats,this.context,this.getNetworkDetails())}loadtimeout(){if(!this.config)return;let i=this.config.loadPolicy.timeoutRetry;if(j(i,this.stats.retry,!0))this.retry(i);else{var r;et.warn(`timeout while loading ${null==(r=this.context)?void 0:r.url}`);let i=this.callbacks;i&&(this.abortInternal(),i.onTimeout(this.stats,this.context,this.getNetworkDetails()))}}retry(i){let{context:r,stats:s}=this;this.retryDelay=H(i,s.retry),s.retry++,et.warn(`${status?"HTTP Status "+status:"Timeout"} while loading ${null==r?void 0:r.url}, retrying ${s.retry}/${i.maxNumRetry} in ${this.retryDelay}ms`),this.abortInternal(),this.resetInternalLoader(),self.clearTimeout(this.retryTimeout),this.retryTimeout=self.setTimeout(()=>this.loadInternal(),this.retryDelay)}},lJ=/(\d+)-(\d+)\/(\d+)/,l0=class extends lZ{constructor(i){super(),this.fetchSetup=void 0,this.request=null,this.response=null,this.controller=null,this.fetchSetup=i.fetchSetup||l1}destroy(){this.request=null,super.destroy(),this.response=null,this.controller=null,this.fetchSetup=null}abortInternal(){self.clearTimeout(this.retryTimeout),this.controller&&!this.stats.loading.end&&(this.stats.aborted=!0,this.controller.abort())}getNetworkDetails(){return this.response}resetInternalLoader(){this.response=null}loadInternal(){var i;let r,{config:s,context:a,stats:n}=this;if(!s||!a)return;n.loading.first=0,n.loaded=0,n.aborted=!1,this.controller=new self.AbortController;let l=(i=a,r={method:"GET",mode:"cors",credentials:"same-origin",signal:this.controller.signal,headers:new self.Headers(O({},i.headers))},i.rangeEnd&&r.headers.set("Range","bytes="+i.rangeStart+"-"+String(i.rangeEnd-1)),r),o="arraybuffer"===a.responseType,h=o?"byteLength":"length",{maxTimeToFirstByteMs:d,maxLoadTimeMs:u}=s.loadPolicy;this.request=this.fetchSetup(a,l),self.clearTimeout(this.requestTimeout),s.timeout=d&&m(d)?d:u,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},s.timeout),(ar(this.request)?this.request.then(self.fetch):self.fetch(this.request)).then(i=>{var r;this.response=i;let l=Math.max(self.performance.now(),n.loading.start);if(self.clearTimeout(this.requestTimeout),s.timeout=u,this.requestTimeout=self.setTimeout(()=>{this.loadtimeout()},u-(l-n.loading.start)),!i.ok){let{status:r,statusText:s}=i;throw new l2(s||"fetch, bad network response",r,i)}n.loading.first=l,n.total=function(i){let r=i.get("Content-Range");if(r){let i=function(i){let r=lJ.exec(i);if(r)return parseInt(r[2])-parseInt(r[1])+1}(r);if(m(i))return i}let s=i.get("Content-Length");if(s)return parseInt(s)}(i.headers)||n.total;let h=null==(r=this.callbacks)?void 0:r.onProgress;return h&&m(s.highWaterMark)?this.loadProgressively(i,n,a,s.highWaterMark,h):o?i.arrayBuffer():"json"===a.responseType?i.json():i.text()}).then(i=>{var r,l;let o=this.response;if(!o)throw Error("loader destroyed");self.clearTimeout(this.requestTimeout),n.loading.end=Math.max(self.performance.now(),n.loading.first);let d=i[h];d&&(n.loaded=n.total=d);let u={url:o.url,data:i,code:o.status},f=null==(r=this.callbacks)?void 0:r.onProgress;f&&!m(s.highWaterMark)&&f(n,a,i,o),null==(l=this.callbacks)||l.onSuccess(u,n,a,o)}).catch(i=>{if(self.clearTimeout(this.requestTimeout),n.aborted)return;let r=i&&i.code||0,l=i?i.message:null,o=s.loadPolicy.errorRetry;if(j(o,n.retry,!1,{url:a.url,data:void 0,code:r}))this.retry(o);else{var h;et.error(`${r} while loading ${a.url}`),null==(h=this.callbacks)||h.onError({code:r,text:l},a,i?i.details:null,n)}})}getCacheAge(){let i=null;if(this.response){let r=this.response.headers.get("age");i=r?parseFloat(r):null}return i}getResponseHeader(i){return this.response?this.response.headers.get(i):null}loadProgressively(i,r,s,a=0,n){let l=new r7,o=i.body.getReader(),h=()=>o.read().then(o=>{if(o.done)return l.dataLength&&n(r,s,l.flush().buffer,i),Promise.resolve(new ArrayBuffer(0));let d=o.value,u=d.length;return r.loaded+=u,u<a||l.dataLength?(l.push(d),l.dataLength>=a&&n(r,s,l.flush().buffer,i)):n(r,s,d.buffer,i),h()}).catch(()=>Promise.reject());return h()}};
29function l1(i,r){return new self.Request(i.url,r)}var l2=class extends Error{constructor(i,r,s){super(i),this.code=void 0,this.details=void 0,this.code=r,this.details=s}},l3=/^age:\s*[\d.]+\s*$/im,l4=class extends lZ{constructor(i){super(),this.xhrSetup=void 0,this.loader=null,this.xhrSetup=i.xhrSetup||null}destroy(){super.destroy(),this.loader=null,this.xhrSetup=null}abortInternal(){let i=this.loader;self.clearTimeout(this.requestTimeout),self.clearTimeout(this.retryTimeout),i&&(i.onreadystatechange=null,i.onprogress=null,4!==i.readyState&&(this.stats.aborted=!0,i.abort()))}getNetworkDetails(){return this.loader}resetInternalLoader(){this.loader=null}loadInternal(){let{config:i,context:r}=this;if(!i||!r)return;let s=this.loader=new self.XMLHttpRequest,a=this.stats;a.loading.first=0,a.loaded=0,a.aborted=!1;let n=this.xhrSetup;n?Promise.resolve().then(()=>{if(!(this.loader!==s||this.stats.aborted))return n.call(this,s,r.url,r)}).catch(i=>{if(!(this.loader!==s||this.stats.aborted))return s.open("GET",r.url,!0),n.call(this,s,r.url,r)}).then(()=>{this.loader!==s||this.stats.aborted||this.openAndSendXhr(s,r,i)}).catch(i=>{var n;null==(n=this.callbacks)||n.onError({code:s.status,text:i.message},r,s,a)}):this.openAndSendXhr(s,r,i)}openAndSendXhr(i,r,s){i.readyState||i.open("GET",r.url,!0);let a=r.headers,{maxTimeToFirstByteMs:n,maxLoadTimeMs:l}=s.loadPolicy;if(a)for(let r in a)i.setRequestHeader(r,a[r]);r.rangeEnd&&i.setRequestHeader("Range",`bytes=${r.rangeStart}-${r.rangeEnd-1}`),i.onreadystatechange=this.readystatechange.bind(this),i.onprogress=this.loadprogress.bind(this),i.responseType=r.responseType,self.clearTimeout(this.requestTimeout),s.timeout=n&&m(n)?n:l,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),s.timeout),i.send()}readystatechange(){let{context:i,loader:r,stats:s}=this;if(!i||!r)return;let a=r.readyState,n=this.config;if(!s.aborted&&a>=2&&(0===s.loading.first&&(s.loading.first=Math.max(self.performance.now(),s.loading.start),n.timeout!==n.loadPolicy.maxLoadTimeMs&&(self.clearTimeout(this.requestTimeout),n.timeout=n.loadPolicy.maxLoadTimeMs,this.requestTimeout=self.setTimeout(this.loadtimeout.bind(this),n.loadPolicy.maxLoadTimeMs-(s.loading.first-s.loading.start)))),4===a)){var l,o,h;self.clearTimeout(this.requestTimeout),r.onreadystatechange=null,r.onprogress=null;let a=r.status,d="text"===r.responseType?r.responseText:null;if(a>=200&&a<300){let n=null==d?r.response:d;if(null!=n){s.loading.end=Math.max(self.performance.now(),s.loading.first);let h="arraybuffer"===r.responseType?n.byteLength:n.length;s.loaded=s.total=h,s.bwEstimate=8e3*s.total/(s.loading.end-s.loading.first);let d=null==(l=this.callbacks)?void 0:l.onProgress;d&&d(s,i,n,r);let u={url:r.responseURL,data:n,code:a};i.rangeEnd&&h!==i.rangeEnd-i.rangeStart&&et.warn(`Payload length ${h} does not match requested Range: bytes=${i.rangeStart}-${i.rangeEnd-1}`),null==(o=this.callbacks)||o.onSuccess(u,s,i,r);return}}let u=n.loadPolicy.errorRetry;j(u,s.retry,!1,{url:i.url,data:void 0,code:a})?this.retry(u):(et.error(`${a} while loading ${i.url}`),null==(h=this.callbacks)||h.onError({code:a,text:r.statusText},i,r,s))}}loadprogress(i){let r=this.stats;r.loaded=i.loaded,i.lengthComputable&&(r.total=i.total)}getCacheAge(){let i=null;if(this.loader&&l3.test(this.loader.getAllResponseHeaders())){let r=this.loader.getResponseHeader("age");i=r?parseFloat(r):null}return i}getResponseHeader(i){return this.loader&&RegExp(`^${i}:\\s*[\\d.]+\\s*$`,"im").test(this.loader.getAllResponseHeaders())?this.loader.getResponseHeader(i):null}},l8=$($({autoStartLoad:!0,startPosition:-1,defaultAudioCodec:void 0,debug:!1,capLevelOnFPSDrop:!1,capLevelToPlayerSize:!1,ignoreDevicePixelRatio:!1,maxDevicePixelRatio:1/0,preferManagedMediaSource:!1,initialLiveManifestSize:1,maxBufferLength:30,backBufferLength:1/0,frontBufferFlushThreshold:1/0,loopBackBufferFlush:void 0,startOnSegmentBoundary:!1,nextAudioTrackBufferFlushForwardOffset:.25,maxBufferSize:6e7,maxFragLookUpTolerance:.25,maxBufferHole:.1,detectStallWithCurrentTimeMs:1250,highBufferWatchdogPeriod:2,nudgeOffset:.1,nudgeMaxRetry:3,nudgeOnVideoHole:!0,skipBufferHolePadding:.1,liveSyncMode:"edge",liveSyncDurationCount:3,liveSyncOnStallIncrease:1,liveMaxLatencyDurationCount:1/0,liveMaxUnchangedPlaylistRefresh:1/0,liveSyncDuration:void 0,liveMaxLatencyDuration:void 0,maxLiveSyncPlaybackRate:1,liveDurationInfinity:!1,liveBackBufferLength:null,maxMaxBufferLength:600,enableWorker:!0,workerPath:null,enableSoftw
29areAES:!0,startLevel:void 0,startFragPrefetch:!1,fpsDroppedMonitoringPeriod:5e3,fpsDroppedMonitoringThreshold:.2,appendErrorMaxRetry:3,appendTimeout:1/0,ignorePlaylistParsingErrors:!1,loader:l4,fLoader:void 0,pLoader:void 0,xhrSetup:void 0,licenseXhrSetup:void 0,licenseResponseCallback:void 0,stretchShortVideoTrack:!1,maxAudioFramesDrift:1,forceKeyFrameOnDiscontinuity:!0,handleMpegTsVideoIntegrityErrors:"process",abrEwmaFastLive:3,abrEwmaSlowLive:9,abrEwmaFastVoD:3,abrEwmaSlowVoD:9,abrEwmaDefaultEstimate:5e5,abrEwmaDefaultEstimateMax:5e6,abrBandWidthFactor:.95,abrBandWidthUpFactor:.7,abrMaxWithRealBitrate:!1,abrSwitchInterval:0,maxStarvationDelay:4,maxLoadingDelay:4,minAutoBitrate:0,emeEnabled:!1,widevineLicenseUrl:void 0,drmSystems:{},drmSystemOptions:{},requestMediaKeySystemAccessFunc:ro,requireKeySystemAccessOnStart:!1,testBandwidth:!0,progressive:!1,lowLatencyMode:!0,cmcd:void 0,enableDateRangeMetadataCues:!0,enableEmsgMetadataCues:!0,enableEmsgKLVMetadata:!1,enableID3MetadataCues:!0,emsgKLVSchemaUri:void 0,enableInterstitialPlayback:!0,interstitialAppendInPlace:!0,interstitialLiveLookAhead:10,iframeCacheLimit:2097152,useMediaCapabilities:!0,preserveManualLevelOnError:!1,errorPenaltyExpireMs:0,certLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:null,errorRetry:null}},keyLoadPolicy:{default:{maxTimeToFirstByteMs:8e3,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"},errorRetry:{maxNumRetry:8,retryDelayMs:1e3,maxRetryDelayMs:2e4,backoff:"linear"}}},manifestLoadPolicy:{default:{maxTimeToFirstByteMs:1/0,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},playlistLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:2,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},fragLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:12e4,timeoutRetry:{maxNumRetry:4,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:6,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},steeringManifestLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:2e4,timeoutRetry:{maxNumRetry:2,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:1,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},interstitialAssetListLoadPolicy:{default:{maxTimeToFirstByteMs:1e4,maxLoadTimeMs:3e4,timeoutRetry:{maxNumRetry:0,retryDelayMs:0,maxRetryDelayMs:0},errorRetry:{maxNumRetry:0,retryDelayMs:1e3,maxRetryDelayMs:8e3}}},manifestLoadingTimeOut:1e4,manifestLoadingMaxRetry:1,manifestLoadingRetryDelay:1e3,manifestLoadingMaxRetryTimeout:64e3,levelLoadingTimeOut:1e4,levelLoadingMaxRetry:4,levelLoadingRetryDelay:1e3,levelLoadingMaxRetryTimeout:64e3,fragLoadingTimeOut:2e4,fragLoadingMaxRetry:6,fragLoadingRetryDelay:1e3,fragLoadingMaxRetryTimeout:64e3,streamController:lh,abrController:iu,bufferController:av,capLevelController:aR,errorController:iy,fpsController:nP,id3TrackController:lt,gapController:n3,latencyController:lD},{cueHandler:lQ,enableWebVTT:!0,enableIMSC1:!0,enableCEA708Captions:!0,captionsTextTrack1Label:"English",captionsTextTrack1LanguageCode:"en",captionsTextTrack2Label:"Spanish",captionsTextTrack2LanguageCode:"es",captionsTextTrack3Label:"Unknown CC",captionsTextTrack3LanguageCode:"",captionsTextTrack4Label:"Unknown CC",captionsTextTrack4LanguageCode:"",renderTextTracksNatively:!0}),{},{subtitleStreamController:lP,subtitleTrackController:n2,timelineController:lY,audioStreamController:ao,audioTrackController:af,emeController:nI,cmcdController:nT,contentSteeringController:nS,iframeController:lc,interstitialsController:lk}),l5=class extends ah{constructor(i,r){super(i,"level-controller"),this._levels=[],this._firstLevel=-1,this._maxAutoLevel=-1,this._startLevel=void 0,this.currentLevel=null,this.currentLevelIndex=-1,this.manualLevelIndex=-1,this.steering=void 0,this.lastABRSwitchTime=-1,this._iframeVariants=[],this.onParsedComplete=void 0,this.steering=r,this._registerListeners()}_registerListeners(){let{hls:i}=this;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.on(T.LEVEL_LOADED,this.onLevelLoaded,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.on(T.FRAG_BUFFERED,this.onFragBuffered,this),i.on(T.ERROR,this.onError,this)}_unregisterListeners(){let{hls:i}=this;i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.MANIFEST_LOADED,this.onManifestLoaded,this),i.off(T.LEVEL_LOADED,this.onLevelLoaded,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this),i.off(T.FRAG_BUFFERED,this.onFragBuffered,this),i.off(T.ERROR,this.onError,this)}destroy(){this._unregisterListeners(),this.steering=null,this.resetLevels(),super.destroy()}
29stopLoad(){this._levels.forEach(i=>{i.loadError=0,i.fragmentError=0}),super.stopLoad()}resetLevels(){this._startLevel=void 0,this.manualLevelIndex=-1,this.currentLevelIndex=-1,this.currentLevel=null,this._levels=[],this._maxAutoLevel=-1,this._iframeVariants=[]}onManifestLoading(i,r){this.resetLevels()}onManifestLoaded(i,r){let s=this.hls.config.preferManagedMediaSource,a=[],n={},l={},o=!1,h=!1,d=!1,u=!1;r.levels.forEach(i=>{let r=i.attrs,f=l7(i,s),{audioCodec:c,videoCodec:g,imageCodec:m,width:p,height:v}=i;if(!f)return void this.log(`Some or all CODECS not supported "${r.CODECS}"`);o||(o=!!(p&&v)),h||(h=!!g),d||(d=!!c),u||(u=!!m);let{CODECS:y,"FRAME-RATE":E,"HDCP-LEVEL":T,"PATHWAY-ID":S,RESOLUTION:A,"VIDEO-RANGE":L}=r,R=`${S||"."}-${i.bitrate}-${A}-${E}-${y}-${L}-${T}`;if(n[R])if(n[R].uri===i.url||i.attrs["PATHWAY-ID"])i.iframes||(n[R].addGroupId("audio",r.AUDIO),n[R].addGroupId("text",r.SUBTITLES));else{let r=l[R]+=1;i.attrs["PATHWAY-ID"]=Array(r+1).join(".");let s=this.createLevel(i);n[R]=s,a.push(s)}else{let r=this.createLevel(i);n[R]=r,l[R]=1,a.push(r)}}),this.filterAndSortMediaOptions(a,r,o,h,d,u)}createLevel(i){let r=new t6(i),s=i.supplemental;if(null!=s&&s.videoCodec&&!l9(s.videoCodec,this.hls.config.preferManagedMediaSource)){let i=Error(`SUPPLEMENTAL-CODECS not supported "${s.videoCodec}"`);this.log(i.message),r.supportedResult=tZ(i,[])}return r}filterAndSortMediaOptions(i,r,s,a,n,l){var o,h;let d=[],u=[],f=i,c=(null==(o=r.stats)?void 0:o.parsing)||{},g=this.hls.config.preferManagedMediaSource;if((s||a)&&n&&(f=f.filter(({videoCodec:i,videoRange:r,width:s,height:a})=>{var n;return(!!i||!!(s&&a))&&!!(n=r)&&t4.indexOf(n)>-1})),a&&l&&(f=f.filter(i=>!i.imageCodec)),0===f.length){Promise.resolve().then(()=>{if(this.hls){let i="no level with compatible codecs found in manifest",s=i;r.levels.length&&(s=`one or more CODECS in variant not supported: ${t7(r.levels.map(i=>i.attrs.CODECS).filter((i,r,s)=>s.indexOf(i)===r))}`,this.warn(s),i+=` (${s})`);let a=Error(i);this.hls.trigger(T.ERROR,{type:y.MEDIA_ERROR,details:E.MANIFEST_INCOMPATIBLE_CODECS_ERROR,fatal:!0,url:r.url,error:a,reason:s})}}),c.end=performance.now();return}r.audioTracks&&oe(d=r.audioTracks.filter(i=>!i.audioCodec||l6(i.audioCodec,g))),r.subtitles&&oe(u=r.subtitles);let m=f.slice(0);f.sort((i,r)=>{if(i.attrs["HDCP-LEVEL"]!==r.attrs["HDCP-LEVEL"])return(i.attrs["HDCP-LEVEL"]||"")>(r.attrs["HDCP-LEVEL"]||"")?1:-1;if(s&&i.height!==r.height)return i.height-r.height;if(i.frameRate!==r.frameRate)return i.frameRate-r.frameRate;if(i.videoRange!==r.videoRange)return t4.indexOf(i.videoRange)-t4.indexOf(r.videoRange);if(i.videoCodec!==r.videoCodec){let s=tG(i.videoCodec),a=tG(r.videoCodec);if(s!==a)return a-s}if(i.uri===r.uri&&i.codecSet!==r.codecSet){let s=tK(i.codecSet),a=tK(r.codecSet);if(s!==a)return a-s}return i.averageBitrate===r.averageBitrate?0:i.averageBitrate-r.averageBitrate});let p=m[0];if(this.steering&&(f=this.steering.filterParsedLevels(f)).length!==m.length){for(let i=0;i<m.length;i++)if(m[i].pathwayId===f[0].pathwayId){p=m[i];break}}this._levels=f;for(let i=0;i<f.length;i++)if(f[i]===p){this._firstLevel=i;let r=p.bitrate,s=this.hls.bandwidthEstimate;if(this.log(`manifest loaded, ${f.length} level(s) found, first bitrate: ${r}`),(null==(h=this.hls.userConfig)?void 0:h.abrEwmaDefaultEstimate)===void 0){let i=Math.min(r,this.hls.config.abrEwmaDefaultEstimateMax);i>s&&s===this.hls.abrEwmaDefaultEstimate&&(this.hls.bandwidthEstimate=i)}break}let v=r.iframeVariants.filter(i=>l7(i,g));this._iframeVariants=v;let S=n&&!a,A=this.hls.config,L=!!(A.audioStreamController&&A.audioTrackController),R={levels:f,audioTracks:d,subtitleTracks:u,iframeVariants:v,sessionData:r.sessionData,sessionKeys:r.sessionKeys,firstLevel:this._firstLevel,stats:r.stats,audio:n,video:a,altAudio:L&&!S&&d.some(i=>!!i.url)};c.end=performance.now(),this.hls.trigger(T.MANIFEST_PARSED,R)}get iframeVariants(){return 0===this._iframeVariants.length?null:this._iframeVariants}get levels(){return 0===this._levels.length?null:this._levels}get loadLevelObj(){return this.currentLevel}get level(){return this.currentLevelIndex}set level(i){let r=this._levels;if(0===r.length)return;if(i<0||i>=r.length){let s=Error("invalid level idx"),a=i<0;if(this.hls.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.LEVEL_SWITCH_ERROR,level:i,fatal:a,error:s,reason:s.message}),a)return;i=Math.min(i,r.length-1)}let s=this.currentLevelIndex,a=this.currentLevel,n=a?a.attrs["PATHWAY-ID"]:void 0,l=r[i],o=l.attrs["PATHWAY-ID"];
29if(this.currentLevelIndex=i,this.currentLevel=l,s===i&&a&&n===o)return;this.log(`Switching to level ${i} (${l.height?l.height+"p ":""}${l.videoRange?l.videoRange+" ":""}${l.codecSet?l.codecSet+" ":""}@${l.bitrate})${o?" with Pathway "+o:""} from level ${s}${n?" with Pathway "+n:""}`);let h={level:i,attrs:l.attrs,details:l.details,bitrate:l.bitrate,averageBitrate:l.averageBitrate,maxBitrate:l.maxBitrate,realBitrate:l.realBitrate,width:l.width,height:l.height,codecSet:l.codecSet,audioCodec:l.audioCodec,videoCodec:l.videoCodec,audioGroups:l.audioGroups,subtitleGroups:l.subtitleGroups,loaded:l.loaded,loadError:l.loadError,fragmentError:l.fragmentError,name:l.name,id:l.id,uri:l.uri,url:l.url,urlId:0,audioGroupIds:l.audioGroupIds,textGroupIds:l.textGroupIds};this.hls.trigger(T.LEVEL_SWITCHING,h);let d=l.details;if(!d||d.live){let i=this.switchParams(l.uri,null==a?void 0:a.details,d);this.loadPlaylist(i)}}get manualLevel(){return this.manualLevelIndex}set manualLevel(i){this.manualLevelIndex=i,void 0===this._startLevel&&(this._startLevel=i),-1!==i&&(this.level=i)}get firstLevel(){return this._firstLevel}set firstLevel(i){this._firstLevel=i}get startLevel(){if(void 0===this._startLevel){let i=this.hls.config.startLevel;return void 0===i?this.hls.firstAutoLevel:i}return this._startLevel}set startLevel(i){this._startLevel=i}get pathways(){return this.steering?this.steering.pathways():[]}get pathwayPriority(){return this.steering?this.steering.pathwayPriority:null}set pathwayPriority(i){if(this.steering){let r=this.steering.pathways(),s=i.filter(i=>-1!==r.indexOf(i));if(i.length<1)return void this.warn(`pathwayPriority ${i} should contain at least one pathway from list: ${r}`);this.steering.pathwayPriority=s}}onError(i,r){r.fatal||!r.context||r.context.type===R.LEVEL&&r.context.level===this.level&&this.checkRetry(r)}onFragBuffered(i,{frag:r}){if(r.type===b.MAIN){let i=r.elementaryStreams;if(!Object.keys(i).some(r=>!!i[r]))return;let s=this._levels[r.level];null!=s&&s.loadError&&(this.log(`Resetting level error count of ${s.loadError} on frag buffered`),s.loadError=0)}}onLevelLoaded(i,r){var s,a;let{level:n,details:l}=r,o=r.levelInfo;if(!o){this.warn(`Invalid level index ${n}`),null!=(a=r.deliveryDirectives)&&a.skip&&(l.deltaUpdateFailed=!0);return}if(o===this.currentLevel||r.withoutMultiVariant){0===o.fragmentError&&(o.loadError=0);let i=o.details;i===r.details&&i.advanced&&(i=void 0),this.playlistLoaded(n,r,i)}else null!=(s=r.deliveryDirectives)&&s.skip&&(l.deltaUpdateFailed=!0)}loadPlaylist(i){super.loadPlaylist(),this.shouldLoadPlaylist(this.currentLevel)&&this.scheduleLoading(this.currentLevel,i)}loadingPlaylist(i,r){super.loadingPlaylist(i,r);let s=this.getUrlWithDirectives(i.uri,r),a=this.currentLevelIndex,n=i.attrs["PATHWAY-ID"],l=i.details,o=null==l?void 0:l.age;this.log(`Loading level index ${a}${(null==r?void 0:r.msn)===void 0?"":" at sn "+r.msn+" part "+r.part}${n?" Pathway "+n:""}${o&&l.live?" age "+o.toFixed(1)+(l.type&&" "+l.type||""):""} ${s}`),this.hls.trigger(T.LEVEL_LOADING,{url:s,level:a,levelInfo:i,pathwayId:i.attrs["PATHWAY-ID"],id:0,deliveryDirectives:r||null})}get nextLoadLevel(){return -1===this.manualLevelIndex?this.hls.nextAutoLevel:this.manualLevelIndex}set nextLoadLevel(i){let r=this.currentLevelIndex;if(-1===this.manualLevelIndex&&i!==r&&-1!==i){let s=this.hls.config.abrSwitchInterval;if(s>0){let a=performance.now(),n=a-this.lastABRSwitchTime,l=1e3*s;if(this.lastABRSwitchTime>-1&&n<l)return void this.warn(`Preventing ABR level switch: ${r} -> ${i} (${Math.round(n)}ms < ${l}ms / ${s}s)`);this.lastABRSwitchTime=a,this.log(`Allowing ABR level switch: ${r} -> ${i} (${Math.round(n)}ms >= ${l}ms / ${s}s)`)}}this.level=i,-1===this.manualLevelIndex&&(this.hls.nextAutoLevel=i)}removeLevel(i){var r;if(1===this._levels.length)return;let s=this._levels.filter((r,s)=>s!==i||(this.steering&&this.steering.removeLevel(r),r===this.currentLevel&&(this.currentLevel=null,this.currentLevelIndex=-1,r.details&&r.details.fragments.forEach(i=>i.level=-1)),!1));r$(s),this._levels=s,this.currentLevelIndex>-1&&null!=(r=this.currentLevel)&&r.details&&(this.currentLevelIndex=this.currentLevel.details.fragments[0].level),this.manualLevelIndex>-1&&(this.manualLevelIndex=this.currentLevelIndex);let a=s.length-1;this._firstLevel=Math.min(this._firstLevel,a),this._startLevel&&(this._startLevel=Math.min(this._startLevel,a)),this.hls.trigger(T.LEVELS_UPDATED,{levels:s})}onLevelsUpdated(i,{levels:r}){this._levels=r}checkMaxAutoUpdated(){let{autoLevelCapping:i,maxAutoLevel:r,maxHdcpLevel:s}=this.hls;this._maxAutoLevel!==r&&(this._maxAutoLevel=r,this.hls.trigger(T.MAX_AUTO_LEVEL_UPDATED,{autoLevelCapping:i,levels:this.levels,maxAutoLevel:r,minAutoLevel:this.hls.minAutoLevel,maxHdcpLevel:s}))}};function l6(i,r){return tB(i,"audio",r)}function l9(i,r){return tB(i,"video",r)}function l7(i,r){let{audioCodec:s,videoCodec:a}=i;s&&(i.audioCodec=s=tj(s,r)||void 0),a&&(a=i.videoCodec=function(i){let r=i.split(",");for(let i=0;i<r.length;i++){let s=r[i].split(".");s.length>2&&"avc1"===s[0]&&(r[i]=`avc1.${parseInt(s[1]).toString(16)}${("000"+parseInt(s[2]).toString(16)).slice(-4)}`)}return r.join(",")}(a));let{unknownCodecs:n}=i;return!(null!=n&&n.length||s&&!l6(s,r)||a&&!l9(a,r))}function oe(i){let r={};
29i.forEach(i=>{let s=i.groupId||"";i.id=r[s]=r[s]||0,r[s]++})}var ot=class extends X{constructor(i,r){super("key-loader",r),this.config=void 0,this.keyLoaderInfo={},this.emeController=null,this.config=i}abort(i){for(let s in this.keyLoaderInfo){let a=this.keyLoaderInfo[s].loader;if(a){var r;if(i&&i!==(null==(r=a.context)?void 0:r.frag.type))return;a.abort()}}}destroy(){for(let i in this.keyLoaderInfo){let r=this.keyLoaderInfo[i].loader;r&&r.destroy()}this.emeController=null,this.keyLoaderInfo={}}loadClear(i,r,s){return this.emeController?this.emeController.loadClear(i,r,s):null}load(i,r){return!i.decryptdata&&i.encrypted&&this.emeController&&this.config.emeEnabled?this.emeController.selectKeySystemFormat(i).then(s=>this.loadInternal(i,r,s)):this.loadInternal(i,r)}loadInternal(i,r,s){s&&i.setKeyFormat(s);let a=i.decryptdata;if(!a){let r=Error(s?`Expected frag.decryptdata to be defined after setting format ${s}`:`Missing decryption data on fragment in onKeyLoading (emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`);return Promise.reject(oi(i,E.KEY_LOAD_ERROR,r))}switch(a.method){case"SAMPLE-AES":case"SAMPLE-AES-CENC":case"SAMPLE-AES-CTR":return"identity"===a.keyFormat?this.loadKeyHTTP(i):r?r.then(()=>this.loadKeyEME(i)):this.loadKeyEME(i);case"AES-128":case"AES-256":case"AES-256-CTR":return this.loadKeyHTTP(i);default:return Promise.reject(oi(i,E.KEY_LOAD_ERROR,Error(`Key supplied with unsupported METHOD: "${a.method}"`)))}}loadKeyEME(i){if(this.emeController&&this.config.emeEnabled){var r,s;if(!i.decryptdata.keyId&&null!=(r=i.initSegment)&&r.data){let r,a=(s=i.initSegment.data,r=[],tp(s,i=>r.push(i.subarray(8,24))),r);if(a.length){let r=a[0],s=i.decryptdata.uri;if(r.some(i=>0!==i))this.log(`Using keyId found in init segment ${ey(r)} keyUri: ${s}`),ru.setKeyIdForUri(s,r);else{let i=ru.addKeyIdForUri(s);this.log(`Patching empty keyId with ${ey(i)} keyUri: ${s}`),r=i}i.decryptdata.keyId=r}}return this.emeController.loadKey(i).then(()=>({frag:i,keyInfo:{decryptdata:i.decryptdata}}))}return Promise.reject(oi(i,E.KEY_LOAD_ERROR,Error(`emeEnabled with controller: ${this.emeController&&this.config.emeEnabled})`)))}loadKeyHTTP(i){let r=i.decryptdata,s=r.uri;if(!s)return Promise.reject(oi(i,E.KEY_LOAD_ERROR,Error(`Invalid key URI: "${s}"`)));let a=this.keyLoaderInfo[s];if(a){if(a.decryptdata.key)return r.key=a.decryptdata.key,a.keyLoadPromise=null,Promise.resolve({frag:i,keyInfo:a});if(a.keyLoadPromise)return a.keyLoadPromise.then(s=>(r.key=a.decryptdata.key,$($({},s),{},{frag:i})))}this.log(`Loading${r.keyId?" keyId: "+ey(r.keyId):""} URI: ${r.uri} from ${i.type} ${i.level}`);let n=this.config,l=new n.loader(n);i.keyLoader=l;let o=this.keyLoaderInfo[s]={decryptdata:r,keyLoadPromise:null,loader:l};return o.keyLoadPromise=new Promise((r,a)=>{let h={type:R.KEY,keyInfo:o,frag:i,responseType:"arraybuffer",url:s},d=n.keyLoadPolicy.default,u={loadPolicy:d,timeout:d.maxLoadTimeMs,maxRetry:0,retryDelay:0,maxRetryDelay:0};l.load(h,u,{onSuccess:(i,s,n,l)=>{let{frag:o,keyInfo:h,url:d}=n;if(!o.decryptdata||h!==this.keyLoaderInfo[d])return a(oi(o,E.KEY_LOAD_ERROR,Error("after key load, decryptdata unset or changed"),l));h.decryptdata.key=o.decryptdata.key=new Uint8Array(i.data),o.keyLoader=h.loader=h.keyLoadPromise=null,r({frag:o,keyInfo:h})},onError:(r,n,l,o)=>{this.resetLoader(n),a(oi(i,E.KEY_LOAD_ERROR,Error(`HTTP Error ${r.code} loading key ${r.text}`),l,$({url:s,data:void 0},r)))},onTimeout:(r,s,n)=>{this.resetLoader(s),a(oi(i,E.KEY_LOAD_TIMEOUT,Error("key loading timed out"),n))},onAbort:(r,s,n)=>{this.resetLoader(s),a(oi(i,E.INTERNAL_ABORTED,Error("key loading aborted"),n))}})})}resetLoader(i){let{frag:r,keyInfo:s,url:a}=i,n=s.loader;r.keyLoader===n&&(r.keyLoader=s.loader=s.keyLoadPromise=null),delete this.keyLoaderInfo[a],n&&n.destroy()}};function oi(i,r=E.KEY_LOAD_ERROR,s,a,n){return new i$({type:y.NETWORK_ERROR,details:r,fatal:!1,frag:i,response:n,error:s,networkDetails:a||null})}function or(i){let{type:r}=i;switch(r){case R.AUDIO_TRACK:return b.AUDIO;case R.SUBTITLE_TRACK:return b.SUBTITLE;default:return b.MAIN}}function os(i,r){let s=i.url;return(void 0===s||0===s.indexOf("data:"))&&(s=r.url),s}var oa=class{constructor(i){this.hls=void 0,this.loaders=Object.create(null),this.variableList=null,this.onManifestLoaded=this.checkAutostartLoad,this.hls=i,this.registerListeners()}
29startLoad(i){}stopLoad(){this.destroyInternalLoaders()}registerListeners(){let{hls:i}=this;i.on(T.MANIFEST_LOADING,this.onManifestLoading,this),i.on(T.LEVEL_LOADING,this.onLevelLoading,this),i.on(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),i.on(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),i.on(T.LEVELS_UPDATED,this.onLevelsUpdated,this)}unregisterListeners(){let{hls:i}=this;i.off(T.MANIFEST_LOADING,this.onManifestLoading,this),i.off(T.LEVEL_LOADING,this.onLevelLoading,this),i.off(T.AUDIO_TRACK_LOADING,this.onAudioTrackLoading,this),i.off(T.SUBTITLE_TRACK_LOADING,this.onSubtitleTrackLoading,this),i.off(T.LEVELS_UPDATED,this.onLevelsUpdated,this)}createInternalLoader(i){let r=this.hls.config,s=r.pLoader,a=r.loader,n=new(s||a)(r);return this.loaders[i.type]=n,n}getInternalLoader(i){return this.loaders[i.type]}resetInternalLoader(i){this.loaders[i]&&delete this.loaders[i]}destroyInternalLoaders(){for(let i in this.loaders){let r=this.loaders[i];r&&r.destroy(),this.resetInternalLoader(i)}}destroy(){this.variableList=null,this.unregisterListeners(),this.destroyInternalLoaders()}onManifestLoading(i,r){let{url:s}=r;this.variableList=null,this.load({id:null,level:0,responseType:"text",type:R.MANIFEST,url:s,deliveryDirectives:null,levelOrTrack:null})}onLevelLoading(i,r){let{id:s,level:a,pathwayId:n,url:l,deliveryDirectives:o,levelInfo:h}=r;this.load({id:s,level:a,pathwayId:n,responseType:"text",type:R.LEVEL,url:l,deliveryDirectives:o,levelOrTrack:h})}onAudioTrackLoading(i,r){let{id:s,groupId:a,url:n,deliveryDirectives:l,track:o}=r;this.load({id:s,groupId:a,level:null,responseType:"text",type:R.AUDIO_TRACK,url:n,deliveryDirectives:l,levelOrTrack:o})}onSubtitleTrackLoading(i,r){let{id:s,groupId:a,url:n,deliveryDirectives:l,track:o}=r;this.load({id:s,groupId:a,level:null,responseType:"text",type:R.SUBTITLE_TRACK,url:n,deliveryDirectives:l,levelOrTrack:o})}onLevelsUpdated(i,r){let s=this.loaders[R.LEVEL];if(s){let i=s.context;i&&!r.levels.some(r=>r===i.levelOrTrack)&&(s.abort(),delete this.loaders[R.LEVEL])}}load(i){var r;let s,a=this.hls.config,n=this.getInternalLoader(i);if(n){let r=this.hls.logger,s=n.context;if((null==s?void 0:s.levelOrTrack)===i.levelOrTrack&&(s.url===i.url||s.deliveryDirectives&&!i.deliveryDirectives))return void(s.url===i.url?r.log(`[playlist-loader]: ignore ${i.url} ongoing request`):r.log(`[playlist-loader]: ignore ${i.url} in favor of ${s.url}`));r.log(`[playlist-loader]: aborting previous loader for type: ${i.type}`),n.abort()}if(s=i.type===R.MANIFEST?a.manifestLoadPolicy.default:O({},a.playlistLoadPolicy.default,{timeoutRetry:null,errorRetry:null}),n=this.createInternalLoader(i),m(null==(r=i.deliveryDirectives)?void 0:r.part)){let r;if(i.type===R.LEVEL&&null!==i.level?r=this.hls.levels[i.level].details:i.type===R.AUDIO_TRACK&&null!==i.id?r=this.hls.audioTracks[i.id].details:i.type===R.SUBTITLE_TRACK&&null!==i.id&&(r=this.hls.subtitleTracks[i.id].details),r){let i=r.partTarget,a=r.targetduration;if(i&&a){let r=1e3*Math.max(3*i,.8*a);s=O({},s,{maxTimeToFirstByteMs:Math.min(r,s.maxTimeToFirstByteMs),maxLoadTimeMs:Math.min(r,s.maxTimeToFirstByteMs)})}}}let l=s.errorRetry||s.timeoutRetry||{},o={loadPolicy:s,timeout:s.maxLoadTimeMs,maxRetry:l.maxNumRetry||0,retryDelay:l.retryDelayMs||0,maxRetryDelay:l.maxRetryDelayMs||0};n.load(i,o,{onSuccess:(i,r,s,a)=>{let n=this.getInternalLoader(s);this.resetInternalLoader(s.type);let l=i.data;r.parsing.start=performance.now(),ry.isMediaPlaylist(l)||s.type!==R.MANIFEST?this.handleTrackOrLevelPlaylist(i,r,s,a||null,n):this.handleMasterPlaylist(i,r,s,a)},onError:(i,r,s,a)=>{this.handleNetworkError(r,s,!1,i,a)},onTimeout:(i,r,s)=>{this.handleNetworkError(r,s,!0,void 0,i)}})}checkAutostartLoad(){if(!this.hls)return;let{config:{autoStartLoad:i,startPosition:r},forceStartLoad:s}=this.hls;(i||s)&&(this.hls.logger.log(`${i?"auto":"force"} startLoad with configured startPosition ${r}`),this.hls.startLoad(r))}handleMasterPlaylist(i,r,s,a){let n=this.hls,l=i.data,o=os(i,s),h=ry.parseMasterPlaylist(l,o);if(h.playlistParsingError){r.parsing.end=performance.now(),this.handleManifestParsingError(i,s,h.playlistParsingError,a,r);return}let{contentSteering:d,levels:u,iframeVariants:f,sessionData:c,sessionKeys:g,startTimeOffset:m,variableList:p}=h;this.variableList=p,u.forEach(i=>
29{let{unknownCodecs:r}=i;if(r){let{preferManagedMediaSource:s}=this.hls.config,{audioCodec:a,videoCodec:n}=i;for(let l=r.length;l--;){let o=r[l];tB(o,"audio",s)?(i.audioCodec=a=a?`${a},${o}`:o,tF.audio[a.substring(0,4)]=2,r.splice(l,1)):tB(o,"video",s)&&(i.videoCodec=n=n?`${n},${o}`:o,tF.video[n.substring(0,4)]=2,r.splice(l,1))}}});let{AUDIO:v=[],SUBTITLES:y,"CLOSED-CAPTIONS":E}=ry.parseMasterPlaylistMedia(l,o,h);v.length&&!v.some(i=>!i.url)&&u[0].audioCodec&&!u[0].attrs.AUDIO&&(this.hls.logger.log("[playlist-loader]: audio codec signaled in quality level, but no embedded audio track signaled, create one"),v.unshift({type:"main",name:"main",groupId:"main",default:!1,autoselect:!1,forced:!1,id:-1,attrs:new iz({}),bitrate:0,url:""})),n.trigger(T.MANIFEST_LOADED,{levels:u,audioTracks:v,subtitles:y,iframeVariants:f,captions:E,contentSteering:d,url:o,stats:r,networkDetails:a,sessionData:c,sessionKeys:g,startTimeOffset:m,variableList:p})}handleTrackOrLevelPlaylist(i,r,s,a,n){let l=this.hls,{id:o,level:h,type:d}=s,u=os(i,s),f=m(h)?h:m(o)?o:0,c=or(s),g=ry.parseLevelPlaylist(i.data,u,f,c,0,this.variableList);if(d===R.MANIFEST){let i={attrs:new iz({}),bitrate:0,details:g,name:"",url:u};g.requestScheduled=r.loading.start+rw(g,0),l.trigger(T.MANIFEST_LOADED,{levels:[i],audioTracks:[],iframeVariants:[],url:u,stats:r,networkDetails:a,sessionData:null,sessionKeys:null,contentSteering:null,startTimeOffset:null,variableList:null})}r.parsing.end=performance.now(),s.levelDetails=g,this.handlePlaylistLoaded(g,i,r,s,a,n)}handleManifestParsingError(i,r,s,a,n){this.hls.trigger(T.ERROR,{type:y.NETWORK_ERROR,details:E.MANIFEST_PARSING_ERROR,fatal:r.type===R.MANIFEST,url:i.url,err:s,error:s,reason:s.message,response:i,context:r,networkDetails:a,stats:n})}handleNetworkError(i,r,s=!1,a,n){let l=`A network ${s?"timeout":"error"+(a?" (status "+a.code+")":"")} occurred while loading ${i.type}`;i.type===R.LEVEL?l+=`: ${i.level} id: ${i.id}`:(i.type===R.AUDIO_TRACK||i.type===R.SUBTITLE_TRACK)&&(l+=` id: ${i.id} group-id: "${i.groupId}"`);let o=Error(l);this.hls.logger.warn(`[playlist-loader]: ${l}`);let h=E.UNKNOWN,d=!1,u=this.getInternalLoader(i);switch(i.type){case R.MANIFEST:h=s?E.MANIFEST_LOAD_TIMEOUT:E.MANIFEST_LOAD_ERROR,d=!0;break;case R.LEVEL:h=s?E.LEVEL_LOAD_TIMEOUT:E.LEVEL_LOAD_ERROR,d=!1;break;case R.AUDIO_TRACK:h=s?E.AUDIO_TRACK_LOAD_TIMEOUT:E.AUDIO_TRACK_LOAD_ERROR,d=!1;break;case R.SUBTITLE_TRACK:h=s?E.SUBTITLE_TRACK_LOAD_TIMEOUT:E.SUBTITLE_LOAD_ERROR,d=!1}u&&this.resetInternalLoader(i.type);let f={type:y.NETWORK_ERROR,details:h,fatal:d,url:i.url,loader:u,context:i,error:o,networkDetails:r,stats:n};if(a){let s=i.url;r&&"url"in r&&(s=r.url),f.response=$({url:s,data:void 0},a)}this.hls.trigger(T.ERROR,f)}handlePlaylistLoaded(i,r,s,a,n,l){let o=this.hls,{type:h,level:d,levelOrTrack:u,id:f,groupId:c,deliveryDirectives:g}=a,m=os(r,a),p=or(a),v="number"==typeof a.level&&p===b.MAIN?d:void 0;u&&"iframes"in u&&u.iframes&&!i.iframesOnly&&(i.playlistParsingError=Error("EXT-X-I-FRAME-STREAM-INF media playlist MUST contain an EXT-X-I-FRAMES-ONLY tag"),i.iframesOnly=!0);let S=i.playlistParsingError;if(S){if(this.hls.logger.warn(`${S} ${i.url}`),!o.config.ignorePlaylistParsingErrors)return void o.trigger(T.ERROR,{type:y.NETWORK_ERROR,details:E.LEVEL_PARSING_ERROR,fatal:!1,url:m,error:S,reason:S.message,response:r,context:a,level:v,parent:p,networkDetails:n,stats:s});i.playlistParsingError=null}if(!i.fragments.length){let l=i.playlistParsingError=Error("No Segments found in Playlist");o.trigger(T.ERROR,{type:y.NETWORK_ERROR,details:E.LEVEL_EMPTY_ERROR,fatal:!1,url:m,error:l,reason:l.message,response:r,context:a,level:v,parent:p,networkDetails:n,stats:s});return}switch(i.live&&l&&(l.getCacheAge&&(i.ageHeader=l.getCacheAge()||0),(!l.getCacheAge||isNaN(i.ageHeader))&&(i.ageHeader=0)),h){case R.MANIFEST:case R.LEVEL:if(v)if(u){if(u!==o.levels[v]){let i=o.levels.indexOf(u);i>-1&&(v=i)}}else v=0;o.trigger(T.LEVEL_LOADED,{details:i,levelInfo:u||o.levels[0],level:v||0,id:f||0,stats:s,networkDetails:n,deliveryDirectives:g,withoutMultiVariant:h===R.MANIFEST,context:a});break;case R.AUDIO_TRACK:o.trigger(T.AUDIO_TRACK_LOADED,{details:i,track:u,id:f||0,groupId:c||"",stats:s,networkDetails:n,deliveryDirectives:g,context:a});break;case R.SUBTITLE_TRACK:o.trigger(T.SUBTITLE_TRACK_LOADED,{details:i,track:u,id:f||0,groupId:c||"",stats:s,networkDetails:n,deliveryDirectives:g,context:a})}}},on=class i{static get version(){return si}
29static isMSESupported(){return lr()}static isSupported(){if(!lr())return!1;let i=ei();return"function"==typeof(null==i?void 0:i.isTypeSupported)&&(["avc1.42E01E,mp4a.40.2","av01.0.01M.08","vp09.00.50.08"].some(r=>i.isTypeSupported(tN(r,"video")))||["mp4a.40.2","fLaC"].some(r=>i.isTypeSupported(tN(r,"audio"))))}static getMediaSource(){return ei()}static get Events(){return T}static get MetadataSchema(){return sd}static get ErrorTypes(){return y}static get ErrorDetails(){return E}static get DefaultConfig(){return i.defaultConfig?i.defaultConfig:l8}static set DefaultConfig(r){i.defaultConfig=r}constructor(r={}){this.config=void 0,this.userConfig=void 0,this.logger=void 0,this._url=null,this.streamController=void 0,this.coreComponents=void 0,this.networkControllers=void 0,this._emitter=new st,this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.abrController=void 0,this.bufferController=void 0,this.capLevelController=void 0,this.latencyController=void 0,this.levelController=void 0,this.audioStreamController=void 0,this.subtititleStreamController=void 0,this.audioTrackController=void 0,this.subtitleTrackController=void 0,this.interstitialsController=void 0,this.iframeC
29ontroller=void 0,this.gapController=void 0,this.emeController=void 0,this.cmcdController=void 0,this._media=null,this._sessionId=void 0,this.triggeringException=void 0,this.started=!1;let s=this.logger=function(i,r,s){let a=J();if("object"==typeof console&&!0===i||"object"==typeof i){let n=["debug","log","info","warn","error"];n.forEach(r=>{a[r]=ee(r,i,s)});try{a.log(`Debug logs enabled for "${r}" in hls.js version 1.7.3`)}catch{return J()}n.forEach(r=>{et[r]=ee(r,i)})}else O(et,a);return a}(r.debug||!1,"Hls instance",r.loggerId||r.assetPlayerId),a=this.config=function(i,r,s){if((r.liveSyncDurationCount||r.liveMaxLatencyDurationCount)&&(r.liveSyncDuration||r.liveMaxLatencyDuration))throw Error("Illegal hls.js config: don't mix up liveSyncDurationCount/liveMaxLatencyDurationCount and liveSyncDuration/liveMaxLatencyDuration");if(void 0!==r.liveMaxLatencyDurationCount&&(void 0===r.liveSyncDurationCount||r.liveMaxLatencyDurationCount<=r.liveSyncDurationCount))throw Error('Illegal hls.js config: "liveMaxLatencyDurationCount" must be greater than "liveSyncDurationCount"');if(void 0!==r.liveMaxLatencyDuration&&(void 0===r.liveSyncDuration||r.liveMaxLatencyDuration<=r.liveSyncDuration))throw Error('Illegal hls.js config: "liveMaxLatencyDuration" must be greater than "liveSyncDuration"');if(void 0!==r.liveMaxUnchangedPlaylistRefresh){let i=r.liveMaxUnchangedPlaylistRefresh,a=Math.max(2,Math.min(i,1/0));a!==i&&s.warn(`hls.js config: "liveMaxUnchangedPlaylistRefresh" clamped from ${i} to ${a}.`),r.liveMaxUnchangedPlaylistRefresh=a}let a=function i(r){return r&&"object"==typeof r?Array.isArray(r)?r.map(i):Object.keys(r).reduce((s,a)=>(s[a]=i(r[a]),s),{}):r}(i),n=["TimeOut","MaxRetry","RetryDelay","MaxRetryTimeout"];return["manifest","level","frag"].forEach(i=>{let l=`${"level"===i?"playlist":i}LoadPolicy`,o=void 0===r[l],h=[];n.forEach(s=>{let n=`${i}Loading${s}`,d=r[n];if(void 0!==d&&o){h.push(n);let i=a[l].default;switch(r[l]={default:i},s){case"TimeOut":i.maxLoadTimeMs=d,i.maxTimeToFirstByteMs=d;break;case"MaxRetry":i.errorRetry.maxNumRetry=d,i.timeoutRetry.maxNumRetry=d;break;case"RetryDelay":i.errorRetry.retryDelayMs=d,i.timeoutRetry.retryDelayMs=d;break;case"MaxRetryTimeout":i.errorRetry.maxRetryDelayMs=d,i.timeoutRetry.maxRetryDelayMs=d}}}),h.length&&s.warn(`hls.js config: "${h.join('", "')}" setting(s) are deprecated, use "${l}": ${t7(r[l])}`)}),$($({},a),r)}(i.DefaultConfig,r,s);this.userConfig=r,a.progressive&&function(i,r){let s=i.loader;s!==l0&&s!==l4?(r.log("[config]: Custom loader detected, cannot enable progressive streaming"),i.progressive=!1):function(){if(self.fetch&&self.AbortController&&self.ReadableStream&&self.Request)try{return new self.ReadableStream({}),!0}catch{}return!1}()&&(i.loader=l0,i.progressive=!0,i.enableSoftwareAES=!0,r.log("[config]: Progressive streaming enabled, using FetchLoader"))}(a,s);let{streamController:n,abrController:l,bufferController:o,capLevelController:h,errorController:d,fpsController:u,id3TrackController:f,iframeController:c,gapController:g}=a,m=new d(this),p=this.abrController=new l(this),v=new ib(this),y=a.interstitialsController,E=y?this.interstitialsController=new y(this,i):null,S=o?this.bufferController=new o(this,v):null,A=h?this.capLevelController=new h(this):null,L=u?new u(this):null,R=a.cmcdController,b=R?this.cmcdController=new R(this):null,I=new oa(this),k=a.contentSteeringController,D=k?new k(this):null,P=this.levelController=new l5(this,D),_=f?new f(this):void 0,C=new ot(this.config,this.logger),x=this.streamController=new n(this,v,C),w=this.gapController=g?new g(this,v):void 0;A&&A.setStreamController(x);let M=[I,P,x];E&&M.splice(1,0,E),D&&M.splice(1,0,D),this.networkControllers=M;let F=[p];S&&F.push(S),w&&F.push(w),A&&F.push(A),L&&(L.setStreamController(x),F.push(L)),_&&F.push(_),F.push(v),this.audioTrackController=this.createController(a.audioTrackController,M);let B=a.audioStreamController;B&&M.push(this.audioStreamController=new B(this,v,C)),this.subtitleTrackController=this.createController(a.subtitleTrackController,M);let U=a.subtitleStreamController;
vendor: 1,567 bytes, line 29
29U&&M.push(this.subtititleStreamController=new U(this,v,C)),this.createController(a.timelineController,F),C.emeController=this.emeController=this.createController(a.emeController,F),b&&F.push(b),this.latencyController=this.createController(a.latencyController,F),this.coreComponents=F,this.iframeController=c?new c(this,i):void 0,M.push(m);let N=m.onErrorOut;"function"==typeof N&&this.on(T.ERROR,N,m),this.on(T.MANIFEST_LOADED,I.onManifestLoaded,I)}createController(i,r){if(i){let s=new i(this);return r&&r.push(s),s}return null}on(i,r,s=this){this._emitter.on(i,r,s)}once(i,r,s=this){this._emitter.once(i,r,s)}removeAllListeners(i){this._emitter.removeAllListeners(i)}off(i,r,s=this,a){this._emitter.off(i,r,s,a)}listeners(i){return this._emitter.listeners(i)}emit(i,r,s){return this._emitter.emit(i,r,s)}trigger(i,r){if(this.config.debug)return this.emit(i,i,r);try{return this.emit(i,i,r)}catch(r){if(this.logger.error("An internal error happened while handling event "+i+'. Error message: "'+r.message+'". Here is a stacktrace:',r),!this.triggeringException){this.triggeringException=!0;let s=i===T.ERROR;this.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.INTERNAL_EXCEPTION,fatal:s,event:i,error:r}),this.triggeringException=!1}}return!1}listenerCount(i){return this._emitter.listenerCount(i)}destroy(){this.logger.log("destroy"),this.trigger(T.DESTROYING,void 0),this.detachMedia(),this.removeAllListeners(),this._autoLevelCapping=-1,this._url=null,this.networkControllers.forEach(i=>i.destroy()),this.networkControllers.length=0,this.coreComponents.forEach(i=>
29i.destroy()),this.coreComponents.length=0,this.iframeController=void 0;let i=this.config;i.xhrSetup=i.fetchSetup=void 0,this.userConfig=null}attachMedia(i){if(!i||"media"in i&&!i.media){let r=Error(`attachMedia failed: invalid argument (${i})`);this.trigger(T.ERROR,{type:y.OTHER_ERROR,details:E.ATTACH_MEDIA_ERROR,fatal:!0,error:r});return}this.logger.log("attachMedia"),this._media&&(this.logger.warn("media must be detached before attaching"),this.detachMedia());let r="media"in i,s=r?i.media:i,a=r?i:{media:s};this._media=s,this.trigger(T.MEDIA_ATTACHING,a)}detachMedia(){this.logger.log("detachMedia");let i={};this.trigger(T.MEDIA_DETACHING,i),this._media=null,this.trigger(T.MEDIA_DETACHED,i)}transferMedia(){var i;this._media=null;let r=(null==(i=this.bufferController)?void 0:i.transferMedia())||null,s={transferMedia:r};return this.trigger(T.MEDIA_DETACHING,s),this.trigger(T.MEDIA_DETACHED,s),r}loadSource(i){var r;this.stopLoad();let s=this.media,a=this._url,n=this._url=A.buildAbsoluteURL(self.location.href,i,{alwaysNormalize:!0});this._autoLevelCapping=-1,this._maxHdcpLevel=null,this.logger.log(`loadSource:${n}`),s&&a&&(a!==n||null!=(r=this.bufferController)&&r.hasSourceTypes())&&(this.detachMedia(),this.attachMedia(s)),this.trigger(T.MANIFEST_LOADING,{url:i})}get url(){return this._url}get hasEnoughToStart(){return this.streamController.hasEnoughToStart}get startPosition(){return this.streamController.startPositionValue}startLoad(i=-1,r){this.logger.log(`startLoad(${i+(r?", <skip seek to start>":"")})`),this.started=!0,this.resumeBuffering();for(let s=0;s<this.networkControllers.length&&(this.networkControllers[s].startLoad(i,r),!(!this.started||!this.networkControllers));s++);}stopLoad(){this.logger.log("stopLoad"),this.started=!1;for(let i=0;i<this.networkControllers.length&&(this.networkControllers[i].stopLoad(),!(this.started||!this.networkControllers));i++);}get loadingEnabled(){return this.started&&this.streamController.state!==rq}get bufferingEnabled(){return this.streamController.bufferingEnabled}resumeBuffering(){this.bufferingEnabled||(this.logger.log("resume buffering"),this.networkControllers.forEach(i=>{i.resumeBuffering&&i.resumeBuffering()}))}pauseBuffering(){this.bufferingEnabled&&(this.logger.log("pause buffering"),this.networkControllers.forEach(i=>{i.pauseBuffering&&i.pauseBuffering()}))}get inFlightFragments(){let i={[b.MAIN]:this.streamController.inFlightFrag};return this.audioStreamController&&(i[b.AUDIO]=this.audioStreamController.inFlightFrag),this.subtititleStreamController&&(i[b.SUBTITLE]=this.subtititleStreamController.inFlightFrag),i}swapAudioCodec(){this.logger.log("swapAudioCodec"),this.streamController.swapAudioCodec()}recoverMediaError(){this.logger.log("recoverMediaError");let i=this._media,r=this.started,s=null==i?void 0:i.currentTime;this.detachMedia(),i&&(this.attachMedia(i),r&&(s?this.startLoad(s):this.config.autoStartLoad||this.startLoad()))}removeLevel(i){this.levelController.removeLevel(i)}get sessionId(){let i=this._sessionId;return i||(i=this._sessionId=eo()),i}get levels(){return this.levelController.levels||[]}get latestLevelDetails(){return this.streamController.getLevelDetails()||null}get loadLevelObj(){return this.levelController.loadLevelObj}get currentLevel(){return this.streamController.currentLevel}set currentLevel(i){this.logger.log(`set currentLevel:${i}`),this.levelController.manualLevel=i,this.streamController.immediateLevelSwitch()}get nextLevel(){return this.streamController.nextLevel}set nextLevel(i){this.logger.log(`set nextLevel:${i}`),this.levelController.manualLevel=i,this.streamController.nextLevelSwitch()}get loadLevel(){return this.levelController.level}set loadLevel(i){this.logger.log(`set loadLevel:${i}`),this.levelController.manualLevel=i}get nextLoadLevel(){return this.levelController.nextLoadLevel}set nextLoadLevel(i){this.levelController.nextLoadLevel=i}get firstLevel(){return Math.max(this.levelController.firstLevel,this.minAutoLevel)}set firstLevel(i){this.logger.log(`set firstLevel:${i}`),this.levelController.firstLevel=i}get startLevel(){let i=this.levelController.startLevel;return -1===i&&this.abrController.forcedAutoLevel>-1?this.abrController.forcedAutoLevel:i}set startLevel(i){this.logger.log(`set startLevel:${i}`),-1!==i&&(i=Math.max(i,this.minAutoLevel)),this.levelController.startLevel=i}get capLevelToPlayerSize(){return this.config.capLevelToPlayerSize}set capLevelToPlayerSize(i){let r=this.capLevelController,s=!!i;r&&s!==this.config.capLevelToPlayerSize&&(s?r.startCapping():(r.stopCapping(),this.autoLevelCapping=-1,this.streamController.nextLevelSwitch()),this.config.capLevelToPlayerSize=s)}get autoLevelCapping(){return this._autoLevelCapping}get bandwidthEstimate(){let{bwEstimator:i}=this.abrController;return i?i.getEstimate():NaN}set bandwidthEstimate(i){this.abrController.resetEstimator(i)}get abrEwmaDefaultEstimate(){let{bwEstimator:i}=this.abrController;return i?i.defaultEstimate:NaN}get ttfbEstimate(){let{bwEstimator:i}=this.abrController;return i?i.getEstimateTTFB():NaN}set autoLevelCapping(i){this._autoLevelCapping!==i&&(this.logger.log(`set autoLevelCapping:${i}`),this._autoLevelCapping=i,this.levelController.checkMaxAutoUpdated())}get maxHdcpLevel(){return this._maxHdcpLevel}set maxHdcpLevel(i){t3.indexOf(i)>-1&&this._maxHdcpLevel!==i&&(this._maxHdcpLevel=i,this.levelController.checkMaxAutoUpdated())}get autoLevelEnabled(){return -1===this.levelController.manualLevel}get manualLevel(){return this.levelController.manualLevel}get minAutoLevel(){let{levels:i,config:{minAutoBitrate:r}}=this;if(!i)return 0;let s=i.length;for(let a=0;a<s;a++)if(i[a].maxBitrate>=r)return a;return 0}get maxAutoLevel(){let{levels:i,autoLevelCapping:r,maxHdcpLevel:s}=this,a;if(a=-1===r&&null!=i&&i.length?i.length-1:r,s)for(let r=a;r--;){let a=i[r].attrs["HDCP-LEVEL"];if(a&&a<=s)return r}return a}get firstAutoLevel(){return this.abrController.firstAutoLevel}get nextAutoLevel(){return this.abrController.nextAutoLevel}set nextAutoLevel(i){this.abrController.nextAutoLevel=i}get playingDate(){return this.streamController.currentProgramDateTime}get mainForwardBufferInfo(){return this.streamController.getMainFwdBufferInfo()}get audioForwardBufferInfo(){var i;return(null==(i=this.audioStreamController)?void 0:i.getFwdBufferInfo())||null}get maxBufferLength(){return this.streamController.maxBufferLength}setAudioOption(i){var r;return(null==(r=this.audioTrackController)?void 0:r.setAudioOption(i))||null}
29setSubtitleOption(i){var r;return(null==(r=this.subtitleTrackController)?void 0:r.setSubtitleOption(i))||null}get allAudioTracks(){let i=this.audioTrackController;return i?i.allAudioTracks:[]}get audioTracks(){let i=this.audioTrackController;return i?i.audioTracks:[]}get audioTrack(){let i=this.audioTrackController;return i?i.audioTrack:-1}set audioTrack(i){let r=this.audioTrackController;r&&(r.audioTrack=i)}get nextAudioTrack(){var i,r;return null==(i=null==(r=this.audioStreamController)?void 0:r.nextAudioTrack)?-1:i}set nextAudioTrack(i){let{audioTrackController:r}=this;r&&(r.nextAudioTrack=i)}get allSubtitleTracks(){let i=this.subtitleTrackController;return i?i.allSubtitleTracks:[]}get subtitleTracks(){let i=this.subtitleTrackController;return i?i.subtitleTracks:[]}get subtitleTrack(){let i=this.subtitleTrackController;return i?i.subtitleTrack:-1}get media(){return this._media}set subtitleTrack(i){let r=this.subtitleTrackController;r&&(r.subtitleTrack=i)}get subtitleDisplay(){let i=this.subtitleTrackController;return!!i&&i.subtitleDisplay}set subtitleDisplay(i){let r=this.subtitleTrackController;r&&(r.subtitleDisplay=i)}get lowLatencyMode(){return this.config.lowLatencyMode}set lowLatencyMode(i){this.config.lowLatencyMode=i}get liveSyncPosition(){var i,r;return null==(i=null==(r=this.latencyController)?void 0:r.liveSyncPosition)?null:i}get latency(){var i;return(null==(i=this.latencyController)?void 0:i.latency)||0}get maxLatency(){var i;return(null==(i=this.latencyController)?void 0:i.maxLatency)||0}get targetLatency(){var i;return(null==(i=this.latencyController)?void 0:i.targetLatency)||null}set targetLatency(i){this.latencyController&&(this.latencyController.targetLatency=i)}get drift(){var i;return(null==(i=this.latencyController)?void 0:i.drift)||null}get forceStartLoad(){return this.streamController.forceStartLoad}get pathways(){return this.levelController.pathways}get pathwayPriority(){return this.levelController.pathwayPriority}set pathwayPriority(i){this.levelController.pathwayPriority=i}get bufferedToEnd(){var i;return!!(null!=(i=this.bufferController)&&i.bufferedToEnd)}get interstitialsManager(){return this.interstitialsController?this.interstitialsController.interstitialsManager:null}get iframeVariants(){return this.levelController.iframeVariants||[]}
29createIFramePlayer(i){return this._url&&this.iframeController?this.iframeController.createIFramePlayer(i):null}createImageIFramePlayer(i){return this._url&&this.iframeController?this.iframeController.createImageIFramePlayer(i):null}getMediaDecodingInfo(i,r=this.allAudioTracks){return tJ(i,it(r),navigator.mediaCapabilities)}};on.defaultConfig=void 0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.