<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="shift_jis">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Kagamin2 Player</title>
    <script>
// asf_stream_js2026070400
"use strict";var asf_stream=(()=>{var Qr=Object.create;var vt=Object.defineProperty,Zr=Object.defineProperties,Jr=Object.getOwnPropertyDescriptor,en=Object.getOwnPropertyDescriptors,tn=Object.getOwnPropertyNames,Vt=Object.getOwnPropertySymbols,rn=Object.getPrototypeOf,gi=Object.prototype.hasOwnProperty,yr=Object.prototype.propertyIsEnumerable;var pi=(o,e,t)=>e in o?vt(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,j=(o,e)=>{for(var t in e||(e={}))gi.call(e,t)&&pi(o,t,e[t]);if(Vt)for(var t of Vt(e))yr.call(e,t)&&pi(o,t,e[t]);return o},se=(o,e)=>Zr(o,en(e));var vr=(o,e)=>{var t={};for(var i in o)gi.call(o,i)&&e.indexOf(i)<0&&(t[i]=o[i]);if(o!=null&&Vt)for(var i of Vt(o))e.indexOf(i)<0&&yr.call(o,i)&&(t[i]=o[i]);return t};var nn=(o,e)=>()=>(e||o((e={exports:{}}).exports,e),e.exports),sn=(o,e)=>{for(var t in e)vt(o,t,{get:e[t],enumerable:!0})},Ar=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of tn(e))!gi.call(o,n)&&n!==t&&vt(o,n,{get:()=>e[n],enumerable:!(i=Jr(e,n))||i.enumerable});return o};var an=(o,e,t)=>(t=o!=null?Qr(rn(o)):{},Ar(e||!o||!o.__esModule?vt(t,"default",{value:o,enumerable:!0}):t,o)),on=o=>Ar(vt({},"__esModule",{value:!0}),o);var d=(o,e,t)=>pi(o,typeof e!="symbol"?e+"":e,t);var Er=nn((ns,xi)=>{"use strict";var ln=Object.prototype.hasOwnProperty,ge="~";function At(){}Object.create&&(At.prototype=Object.create(null),new At().__proto__||(ge=!1));function dn(o,e,t){this.fn=o,this.context=e,this.once=t||!1}function Sr(o,e,t,i,n){if(typeof t!="function")throw new TypeError("The listener must be a function");var r=new dn(t,i||o,n),s=ge?ge+e:e;return o._events[s]?o._events[s].fn?o._events[s]=[o._events[s],r]:o._events[s].push(r):(o._events[s]=r,o._eventsCount++),o}function Pt(o,e){--o._eventsCount===0?o._events=new At:delete o._events[e]}function he(){this._events=new At,this._eventsCount=0}he.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)ln.call(t,i)&&e.push(ge?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};he.prototype.listeners=function(e){var t=ge?ge+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var n=0,r=i.length,s=new Array(r);n<r;n++)s[n]=i[n].fn;return s};he.prototype.listenerCount=function(e){var t=ge?ge+e:e,i=this._events[t];return i?i.fn?1:i.length:0};he.prototype.emit=function(e,t,i,n,r,s){var a=ge?ge+e:e;if(!this._events[a])return!1;var l=this._events[a],h=arguments.length,_,c;if(l.fn){switch(l.once&&this.removeListener(e,l.fn,void 0,!0),h){case 1:return l.fn.call(l.context),!0;case 2:return l.fn.call(l.context,t),!0;case 3:return l.fn.call(l.context,t,i),!0;case 4:return l.fn.call(l.context,t,i,n),!0;case 5:return l.fn.call(l.context,t,i,n,r),!0;case 6:return l.fn.call(l.context,t,i,n,r,s),!0}for(c=1,_=new Array(h-1);c<h;c++)_[c-1]=arguments[c];l.fn.apply(l.context,_)}else{var p=l.length,u;for(c=0;c<p;c++)switch(l[c].once&&this.removeListener(e,l[c].fn,void 0,!0),h){case 1:l[c].fn.call(l[c].context);break;case 2:l[c].fn.call(l[c].context,t);break;case 3:l[c].fn.call(l[c].context,t,i);break;case 4:l[c].fn.call(l[c].context,t,i,n);break;default:if(!_)for(u=1,_=new Array(h-1);u<h;u++)_[u-1]=arguments[u];l[c].fn.apply(l[c].context,_)}}return!0};he.prototype.on=function(e,t,i){return Sr(this,e,t,i,!1)};he.prototype.once=function(e,t,i){return Sr(this,e,t,i,!0)};he.prototype.removeListener=function(e,t,i,n){var r=ge?ge+e:e;if(!this._events[r])return this;if(!t)return Pt(this,r),this;var s=this._events[r];if(s.fn)s.fn===t&&(!n||s.once)&&(!i||s.context===i)&&Pt(this,r);else{for(var a=0,l=[],h=s.length;a<h;a++)(s[a].fn!==t||n&&!s[a].once||i&&s[a].context!==i)&&l.push(s[a]);l.length?this._events[r]=l.length===1?l[0]:l:Pt(this,r)}return this};he.prototype.removeAllListeners=function(e){var t;return e?(t=ge?ge+e:e,this._events[t]&&Pt(this,t)):(this._events=new At,this._eventsCount=0),this};he.prototype.off=he.prototype.removeListener;he.prototype.addListener=he.prototype.on;he.prefixed=ge;he.EventEmitter=he;typeof xi!="undefined"&&(xi.exports=he)});var is={};sn(is,{MSEPlayer:()=>Lt,NativePlayer:()=>Et,Remuxer:()=>Le,TransmuxingEvents:()=>E,defaultConfig:()=>bi,eflv:()=>Xr});var Cr=an(Er(),1);var ce=Cr.default;var Rr=(x=>(x.ERROR="error",x.LOADING_COMPLETE="loading_complete",x.RECOVERED_EARLY_EOF="recovered_early_eof",x.MEDIA_INFO="media_info",x.METADATA_ARRIVED="metadata_arrived",x.SCRIPTDATA_ARRIVED="scriptdata_arrived",x.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",x.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",x.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",x.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",x.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",x.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",x.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",x.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",x.STATISTICS_INFO="statistics_info",x.DESTROYING="destroying",x))(Rr||{}),V=Rr;var bi={enableWorker:!1,enableWorkerForMSE:!1,enableStashBuffer:!0,stashInitialSize:void 0,isLive:!1,liveBufferLatencyChasing:!1,liveBufferLatencyChasingOnPaused:!1,liveBufferLatencyMaxLatency:1.5,liveBufferLatencyMinRemain:.5,liveSync:!1,liveSyncMaxLatency:1.2,liveSyncTargetLatency:.8,liveSyncPlaybackRate:1.2,lazyLoad:!0,lazyLoadMaxDuration:180,lazyLoadRecoverDuration:60,deferLoadAfterSourceOpen:!0,autoCleanupMaxBackwardDuration:180,autoCleanupMinBackwardDuration:120,autoCleanupSourceBuffer:!0,statisticsInfoReportInterval:600,fixAudioTimestampGap:!0,accurateSeek:!1,seekType:"range",seekParamStart:"bstart",seekParamEnd:"bend",rangeLoadZeroStart:!1,customSeekHandler:void 0,reuseRedirectedURL:!1,headers:void 0,customLoader:void 0,referrerPolicy:void 0};function He(){return j({},bi)}var J=class{constructor(e){d(this,"_message");this._message=e}get name(){return"RuntimeException"}get message(){return this._message}toString(){return this.name+": "+this.message}},re=class extends J{constructor(e){super(e)}get name(){return"IllegalStateException"}},ue=class extends J{constructor(e){super(e)}get name(){return"InvalidArgumentException"}},St=class extends J{constructor(e){super(e)}get name(){return"NotImplementedException"}};var yi=class{constructor(e,t){this.TAG="NativePlayer",this._type="NativePlayer",this._emitter=new ce,this._config=He(),typeof t=="object"&&Object.assign(this._config,t);let i=e.type.toLowerCase();if(i==="mse"||i==="flv")throw new ue("NativePlayer does't support mse/flv MediaDataSource input!");if(e.hasOwnProperty("segments"))throw new ue(`NativePlayer(${e.type}) doesn't support multipart playback!`);this.e={onvLoadedMetadata:this._onvLoadedMetadata.bind(this)},this._pendingSeekTime=null,this._statisticsReporter=null,this._mediaDataSource=e,this._mediaElement=null}destroy(){this._emitter.emit(V.DESTROYING),this._mediaElement&&(this.unload(),this.detachMediaElement()),this.e=null,this._mediaDataSource=null,this._emitter.removeAllListeners(),this._emitter=null}on(e,t){e===V.MEDIA_INFO?this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(V.MEDIA_INFO,this.mediaInfo)}):e===V.STATISTICS_INFO&&this._mediaElement!=null&&this._mediaElement.readyState!==0&&Promise.resolve().then(()=>{this._emitter.emit(V.STATISTICS_INFO,this.statisticsInfo)}),this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){if(this._mediaElement=e,e.addEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._pendingSeekTime!=null)try{e.currentTime=this._pendingSeekTime,this._pendingSeekTime=null}catch(t){}}detachMediaElement(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src"),this._mediaElement.removeEventListener("loadedmetadata",this.e.onvLoadedMetadata),this._mediaElement=null),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}load(){if(!this._mediaElement)throw new re("HTMLMediaElement must be attached before load()!");this._mediaElement.src=this._mediaDataSource.url,this._mediaElement.readyState>0&&(this._mediaElement.currentTime=0),this._mediaElement.preload="auto",this._mediaElement.load(),this._statisticsReporter=window.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval)}unload(){this._mediaElement&&(this._mediaElement.src="",this._mediaElement.removeAttribute("src")),this._statisticsReporter!=null&&(window.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}play(){return this._mediaElement.play()}pause(){this._mediaElement.pause()}get type(){return this._type}get buffered(){return this._mediaElement.buffered}get duration(){return this._mediaElement.duration}get volume(){return this._mediaElement.volume}set volume(e){this._mediaElement.volume=e}get muted(){return this._mediaElement.muted}set muted(e){this._mediaElement.muted=e}get currentTime(){return this._mediaElement?this._mediaElement.currentTime:0}set currentTime(e){this._mediaElement?this._mediaElement.currentTime=e:this._pendingSeekTime=e}get mediaInfo(){let t={mimeType:(this._mediaElement instanceof HTMLAudioElement?"audio/":"video/")+this._mediaDataSource.type};return this._mediaElement&&(t.duration=Math.floor(this._mediaElement.duration*1e3),this._mediaElement instanceof HTMLVideoElement&&(t.width=this._mediaElement.videoWidth,t.height=this._mediaElement.videoHeight)),t}get statisticsInfo(){let e={playerType:this._type,url:this._mediaDataSource.url};if(!(this._mediaElement instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._mediaElement.getVideoPlaybackQuality){let r=this._mediaElement.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._mediaElement.webkitDecodedFrameCount!=null?(i=this._mediaElement.webkitDecodedFrameCount,n=this._mediaElement.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}_onvLoadedMetadata(e){this._pendingSeekTime!=null&&(this._mediaElement.currentTime=this._pendingSeekTime,this._pendingSeekTime=null),this._emitter.emit(V.MEDIA_INFO,this.mediaInfo)}_reportStatisticsInfo(){this._emitter.emit(V.STATISTICS_INFO,this.statisticsInfo)}},Et=yi;var O=class O{static emitLog(e,t){O.emitter.emit("log",e,t)}static e(e,t){if(!O.ENABLE_ERROR)return;(!e||O.FORCE_GLOBAL_TAG)&&(e=O.GLOBAL_TAG);let i=`[${e}] > ${t}`;O.ENABLE_CALLBACK&&O.emitter.emit("log","error",i),console.error?console.error(i):console.warn?console.warn(i):console.log(i)}static i(e,t){if(!O.ENABLE_INFO)return;(!e||O.FORCE_GLOBAL_TAG)&&(e=O.GLOBAL_TAG);let i=`[${e}] > ${t}`;O.ENABLE_CALLBACK&&O.emitter.emit("log","info",i),console.info?console.info(i):console.log(i)}static w(e,t){if(!O.ENABLE_WARN)return;(!e||O.FORCE_GLOBAL_TAG)&&(e=O.GLOBAL_TAG);let i=`[${e}] > ${t}`;O.ENABLE_CALLBACK&&O.emitter.emit("log","warn",i),console.warn?console.warn(i):console.log(i)}static d(e,t){if(!O.ENABLE_DEBUG)return;(!e||O.FORCE_GLOBAL_TAG)&&(e=O.GLOBAL_TAG);let i=`[${e}] > ${t}`;O.ENABLE_CALLBACK&&O.emitter.emit("log","debug",i),console.debug?console.debug(i):console.log(i)}static dumpArrayBuffer(e,t,i=32){let n;if(e instanceof Uint8Array)n=e;else if(e instanceof ArrayBuffer)n=new Uint8Array(e);else if(ArrayBuffer.isView(e))n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength);else throw new TypeError("Expected ArrayBuffer, TypedArray, or DataView");let r=Math.min(n.byteLength,t),s=[];for(let a=0;a<r;a+=i){let l=[],h=[],_=Math.min(i,r-a);for(let c=0;c<_;c++){let p=n[a+c];l.push(p.toString(16).padStart(2,"0")),h.push(p>=32&&p<=126?String.fromCharCode(p):".")}for(;l.length<i;)l.push("  ");for(;h.length<i;)h.push(" ");s.push(`${a.toString(16).padStart(4,"0")}: ${l.join(" ")}  |${h.join("")}|`)}return s.join(`
`)}static v(e,...t){if(!O.ENABLE_VERBOSE)return;(!e||O.FORCE_GLOBAL_TAG)&&(e=O.GLOBAL_TAG);let i=`[${e}] >`;O.ENABLE_CALLBACK&&O.emitter.emit("log","verbose",i,...t),console.log(i,...t)}static scope(e,t){let i=!0,n=()=>{let r=i?t:" ".repeat(t.length);return i=!1,`${r}:`};return{v:(...r)=>O.v(e,n(),...r),w:r=>O.w(e,`${n()} ${r}`),e:r=>O.e(e,`${n()} ${r}`)}}static a(e,t,i){if(!i){let n=`[${e}] ASSERT FAILED: ${t}`;throw new Error(n)}}};d(O,"GLOBAL_TAG","e-rtmp-lab.js"),d(O,"FORCE_GLOBAL_TAG",!1),d(O,"ENABLE_CALLBACK",!1),d(O,"ENABLE_ERROR",!0),d(O,"ENABLE_INFO",!0),d(O,"ENABLE_WARN",!0),d(O,"ENABLE_DEBUG",!1),d(O,"ENABLE_VERBOSE",!0),d(O,"emitter",new ce);var vi=O,f=vi;var Ct={};function _n(){let o=self.navigator.userAgent.toLowerCase(),e=/(edge)\/([\w.]+)/.exec(o)||/(opr)[\/]([\w.]+)/.exec(o)||/(chrome)[ \/]([\w.]+)/.exec(o)||/(iemobile)[\/]([\w.]+)/.exec(o)||/(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(o)||/(webkit)[ \/]([\w.]+)/.exec(o)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(o)||/(msie) ([\w.]+)/.exec(o)||o.indexOf("trident")>=0&&/(rv)(?::| )([\w.]+)/.exec(o)||o.indexOf("compatible")<0&&/(firefox)[ \/]([\w.]+)/.exec(o)||[],t=/(ipad)/.exec(o)||/(ipod)/.exec(o)||/(windows phone)/.exec(o)||/(iphone)/.exec(o)||/(kindle)/.exec(o)||/(android)/.exec(o)||/(windows)/.exec(o)||/(mac)/.exec(o)||/(linux)/.exec(o)||/(cros)/.exec(o)||[],i={browser:e[5]||e[3]||e[1]||"",version:e[2]||e[4]||"0",majorVersion:e[4]||e[2]||"0",platform:t[0]||""},n={};if(i.browser){n[i.browser]=!0;let r=i.majorVersion.split(".");n.version={major:parseInt(i.majorVersion,10),string:i.version},r.length>1&&(n.version.minor=parseInt(r[1],10)),r.length>2&&(n.version.build=parseInt(r[2],10))}if(i.platform&&(n[i.platform]=!0),(n.chrome||n.opr||n.safari)&&(n.webkit=!0),n.rv||n.iemobile){n.rv&&delete n.rv;let r="msie";i.browser=r,n[r]=!0}if(n.edge){delete n.edge;let r="msedge";i.browser=r,n[r]=!0}if(n.opr){let r="opera";i.browser=r,n[r]=!0}if(n.safari&&n.android){let r="android";i.browser=r,n[r]=!0}n.name=i.browser,n.platform=i.platform;for(let r in Ct)Ct.hasOwnProperty(r)&&delete Ct[r];Object.assign(Ct,n)}_n();var Z=Ct;var kr=(a=>(a.ERROR="error",a.SOURCE_OPEN="source_open",a.UPDATE_END="update_end",a.BUFFER_FULL="buffer_full",a.QUOTA_EXCEEDED_BUFFER_FULL="quota_exceeded_buffer_full",a.START_STREAMING="start_streaming",a.END_STREAMING="end_streaming",a))(kr||{}),ee=kr;var Le=class{constructor(e){d(this,"_config");d(this,"_isLive");d(this,"_isAudioMetadataDispatched",!1);d(this,"_isVideoMetadataDispatched",!1);d(this,"_audioMeta",null);d(this,"_videoMeta",null);this._config=e,this._isLive=e.isLive}get isAudioMetadataDispatched(){return this._isAudioMetadataDispatched}get isVideoMetadataDispatched(){return this._isVideoMetadataDispatched}};d(Le,"DEBUG_BUFFER",!1),d(Le,"dbgVideoBuffer",new Uint8Array),d(Le,"dbgAudioBuffer",new Uint8Array);var et=["video","audio"];function hn(o,e=16){return!o||o.byteLength===0?"empty":Array.from(o.subarray(0,Math.min(e,o.byteLength))).map(t=>t.toString(16).padStart(2,"0")).join(" ")}function tt(o){return`type=${o.type} codec=${o.codec||"none"} container=${o.container} bytes=${o.data.byteLength} head=${hn(o.data)}`}function cn(o){if(!o)return"none";let e=[`code=${o.code}`];return"message"in o&&typeof o.message=="string"&&o.message.length>0&&e.push(`message=${o.message}`),e.join(" ")}var Ot=class Ot{constructor(e,t){d(this,"TAG","MSEController");d(this,"_config");d(this,"_emitter",new ce);d(this,"events");d(this,"_mediaSource");d(this,"_mediaElementProxy");d(this,"_mediaSourceObjectURL",null);d(this,"_useManagedMediaSource");d(this,"_isBufferFull",!1);d(this,"_hasPendingEos",!1);d(this,"_requireSetMediaDuration",!1);d(this,"_pendingMediaDuration",0);d(this,"_mimeTypes",{video:null,audio:null});d(this,"_sourceBuffers",{video:null,audio:null});d(this,"_lastInitSegments",{video:null,audio:null});d(this,"_pendingSegments",{video:[],audio:[]});d(this,"_pendingRemoveRanges",{video:[],audio:[]});d(this,"_pendingSourceBufferInit",[]);d(this,"_onMediaTimeUpdate",e=>{this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingEos&&this._hasPendingSegments()&&!this._hasPendingRemoveRanges()&&(f.v(this.TAG,"Retrying append of final segment after playback progress"),this._doAppendSegments())});this._config=e,this._config.isLive&&this._config.autoCleanupSourceBuffer==null?this._config=se(j({},e),{autoCleanupSourceBuffer:!0}):this._config=e,this.events={onSourceOpen:this._onSourceOpen.bind(this),onSourceEnded:this._onSourceEnded.bind(this),onSourceClose:this._onSourceClose.bind(this),onStartStreaming:this._onStartStreaming.bind(this),onEndStreaming:this._onEndStreaming.bind(this),onQualityChange:this._onQualityChange.bind(this),onSourceBufferError:this._onSourceBufferError.bind(this),onSourceBufferUpdateEnd:this._onSourceBufferUpdateEnd.bind(this)},this._useManagedMediaSource="ManagedMediaSource"in self&&!("MediaSource"in self),this._useManagedMediaSource&&f.v(this.TAG,"Using ManagedMediaSource");let i=this._mediaSource=this._useManagedMediaSource?new self.ManagedMediaSource:new self.MediaSource;i.addEventListener("sourceopen",this.events.onSourceOpen),i.addEventListener("sourceended",this.events.onSourceEnded),i.addEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(i.addEventListener("startstreaming",this.events.onStartStreaming),i.addEventListener("endstreaming",this.events.onEndStreaming),i.addEventListener("qualitychange",this.events.onQualityChange)),this._mediaElementProxy=t}destroy(){this._mediaElementProxy.setOnMediaTimeUpdate(null),this._mediaSource&&this.shutdown(),this._mediaSourceObjectURL&&this.revokeObjectURL(),this.events=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}shutdown(){if(this._mediaSource){let e=this._mediaSource;for(let t of et){this._pendingSegments[t].splice(0),this._pendingRemoveRanges[t].splice(0),this._lastInitSegments[t]=null;let i=this._sourceBuffers[t];if(i){if(e.readyState!=="closed"){try{e.removeSourceBuffer(i)}catch(n){f.e(this.TAG,n.message)}i.removeEventListener("error",this.events.onSourceBufferError),i.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)}this._mimeTypes[t]=null,this._sourceBuffers[t]=null}}if(e.readyState==="open")try{e.endOfStream()}catch(t){f.e(this.TAG,t.message)}e.removeEventListener("sourceopen",this.events.onSourceOpen),e.removeEventListener("sourceended",this.events.onSourceEnded),e.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(e.removeEventListener("startstreaming",this.events.onStartStreaming),e.removeEventListener("endstreaming",this.events.onEndStreaming),e.removeEventListener("qualitychange",this.events.onQualityChange))}this._mediaSource=null,this._pendingSourceBufferInit=[],this._isBufferFull=!1,this._hasPendingEos=!1}isManagedMediaSource(){return this._useManagedMediaSource}getObject(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");return this._mediaSource}getHandle(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");if(this._useManagedMediaSource)return this._mediaSource.handle}getObjectURL(){if(!this._mediaSource)throw new re("MediaSource has not been initialized yet!");return this._mediaSourceObjectURL==null&&(this._mediaSourceObjectURL=URL.createObjectURL(this._mediaSource)),this._mediaSourceObjectURL}revokeObjectURL(){this._mediaSourceObjectURL&&(URL.revokeObjectURL(this._mediaSourceObjectURL),this._mediaSourceObjectURL=null)}appendInitSegment(e,t=!1){var l,h,_,c,p;if(((l=this._mediaSource)==null?void 0:l.readyState)!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1){f.v(this.TAG,`appendInitSegment: deferring because MediaSource is not ready, deferred=${t} ${tt(e)}`),this._deferInitSegment(e,t);return}let i=e,n=`${i.container}`;i.codec&&i.codec.length>0&&(i.codec==="opus"&&Z.safari&&(i.codec="Opus"),n+=`; codecs="${i.codec}"`);let r=!1,s=(h=this._sourceBuffers.video)==null?void 0:h.updating,a=(_=this._sourceBuffers.audio)==null?void 0:_.updating;if(s||a){f.v(this.TAG,`appendInitSegment: deferring because SourceBuffer is updating, deferred=${t} mimeType=${n} updatingVideo=${s} updatingAudio=${a} ${tt(i)}`),this._deferInitSegment(e,t);return}if(f.v(this.TAG,`appendInitSegment: accepting mimeType=${n} deferred=${t} updatingVideo=${s} updatingAudio=${a} ${tt(i)}`),this._lastInitSegments[i.type]=i,n!==this._mimeTypes[i.type]){if(this._mimeTypes[i.type])f.v(this.TAG,`Notice: ${i.type} mimeType changed for ${this._mimeTypes[i.type]}, mimeType: ${n}`);else{r=!0;try{let u=this._sourceBuffers[i.type]=this._mediaSource.addSourceBuffer(n),y=(c=this._sourceBuffers.video)==null?void 0:c.updating,g=(p=this._sourceBuffers.audio)==null?void 0:p.updating;f.v(this.TAG,`appendInitSegment: Now ${Date.now()} - Created SourceBuffer for ${i.type} track, mimeType: ${n}, updating video: ${y} audio: ${g}`),this._mediaSource.duration=i.mediaDuration/1e3,u.addEventListener("error",this.events.onSourceBufferError),u.addEventListener("updateend",this.events.onSourceBufferUpdateEnd)}catch(u){f.e(this.TAG,u.message),this._emitter.emit(ee.ERROR,{code:u.code,msg:u.message});return}}this._mimeTypes[i.type]=n}t||this._pendingSegments[i.type].push(i),r||this._doAppendSegments(),(Z.safari&&i.container==="audio/mpeg"||i.container==="video/webm")&&i.mediaDuration>0&&(this._requireSetMediaDuration=!0,this._pendingMediaDuration=i.mediaDuration/1e3,this._updateMediaSourceDuration())}appendMediaSegment(e){let t=e;this._pendingSegments[t.type].push(t),this._config.autoCleanupSourceBuffer&&this._needCleanupSourceBuffer()&&this._doCleanupSourceBuffer(),this._hasPendingRemoveRanges()||this._doAppendSegments()}flush(){var e,t;for(let i of et){if(!this._sourceBuffers[i])continue;let n=this._sourceBuffers[i];if(((e=this._mediaSource)==null?void 0:e.readyState)==="open")try{n.abort()}catch(s){f.e(this.TAG,s.message)}let r=this._pendingSegments[i];if(r.splice(0,r.length),((t=this._mediaSource)==null?void 0:t.readyState)!=="closed"){for(let s=0;s<n.buffered.length;s++){let a=n.buffered.start(s),l=n.buffered.end(s);this._pendingRemoveRanges[i].push({start:a,end:l})}if(this._doRemoveRanges(),Z.safari){let s=this._lastInitSegments[i];s&&(this._pendingSegments[i].push(s),this._doAppendSegments())}}}}endOfStream(){var i,n;let e=this._mediaSource,t=this._sourceBuffers;if(!e||e.readyState!=="open"){e&&e.readyState==="closed"&&this._hasPendingSegments()&&(this._hasPendingEos=!0);return}(i=t.video)!=null&&i.updating||(n=t.audio)!=null&&n.updating?this._hasPendingEos=!0:(this._hasPendingEos=!1,e.endOfStream())}_needCleanupSourceBuffer(){if(!this._config.autoCleanupSourceBuffer||!this._mediaElementProxy)return!1;let e=this._mediaElementProxy.getCurrentTime();for(let t of et){let i=this._getBufferedRanges(t);if(i&&i.length>=1&&e-i.start(0)>=this._config.autoCleanupMaxBackwardDuration)return!0}return!1}_doCleanupSourceBuffer(e=!1){let t=this._mediaElementProxy.getCurrentTime();for(let i of et){let n=this._sourceBuffers[i],r=this._getBufferedRanges(i);if(n&&r){let s=!1;for(let a=0;a<r.length;a++){let l=r.start(a),h=r.end(a);if(l<=t&&t<h+3){if(t-l>=this._config.autoCleanupMaxBackwardDuration){let _=t-this._config.autoCleanupMinBackwardDuration;l<_&&(s=!0,this._pendingRemoveRanges[i].push({start:l,end:_}))}else if(e){let _=t-10;l<_&&(s=!0,this._pendingRemoveRanges[i].push({start:l,end:_}))}}else h<t&&(s=!0,this._pendingRemoveRanges[i].push({start:l,end:h}))}s?(f.v(this.TAG,`Cleanup SourceBuffer ${i}, currentTime: ${t}, pendingRemoveRanges: ${this._pendingRemoveRanges[i].length} ranges`),this._doRemoveRanges()):r.length>0?f.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} bufferedStart: ${r.start(0)} bufferedEnd: ${r.end(r.length-1)}`):f.w(this.TAG,`Could not cleanup SourceBuffer ${i}, currentTime: ${t} buffered: empty`)}}}_updateMediaSourceDuration(){var n,r,s;let e=this._sourceBuffers;if(this._mediaElementProxy.getReadyState()===0||((n=this._mediaSource)==null?void 0:n.readyState)!=="open"||(r=e.video)!=null&&r.updating||(s=e.audio)!=null&&s.updating)return;let t=this._mediaSource.duration,i=this._pendingMediaDuration;i>0&&(isNaN(t)||i>t)&&(f.v(this.TAG,`Update MediaSource duration from ${t} to ${i}`),this._mediaSource.duration=i),this._requireSetMediaDuration=!1,this._pendingMediaDuration=0}_doRemoveRanges(){for(let e of et){if(!this._sourceBuffers[e]||this._sourceBuffers[e].updating)continue;let t=this._sourceBuffers[e],i=this._pendingRemoveRanges[e];if(i.length&&!t.updating){let n=i.shift();t.remove(n.start,n.end)}}}_doAppendSegments(){var t,i,n,r;if(!this._mediaSource||this._mediaSource.readyState!=="open")return;let e=this._pendingSegments;for(let s of et)if(!(!this._sourceBuffers[s]||this._sourceBuffers[s].updating||this._useManagedMediaSource&&this._mediaSource.streaming===!1)&&e[s].length>0){let a=e[s][0].kind===1?e[s][0]:void 0,l=e[s][0].kind===0?e[s][0]:void 0,h=a==null?void 0:a.info,_=(t=a==null?void 0:a.frameCount)!=null?t:0,c=e[s].shift();if(c.kind===1&&Number.isFinite(c==null?void 0:c.timestampOffset)){let p=this._sourceBuffers[s].timestampOffset,u=c.timestampOffset/1e3;Math.abs(p-u)>.1&&(f.v(this.TAG,`Update MPEG audio timestampOffset from ${p} to ${u}`),this._sourceBuffers[s].timestampOffset=u),delete c.timestampOffset}if(!c.data||c.data.byteLength===0)continue;try{if(c.kind===0&&f.v(this.TAG,`_doAppendSegments: append init ${tt(c)} pendingAudio=${e.audio.length} pendingVideo=${e.video.length}`),Ot.TRACE){let p=(i=this._sourceBuffers.audio)==null?void 0:i.updating,u=(n=this._sourceBuffers.video)==null?void 0:n.updating;h?f.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending media segment for ${s} SourceBuffer - frameCount: ${_} beginDts: ${h.beginDts} endDts: ${h.endDts} size: ${c.data.byteLength} audioUpdating ${p} videoUpdating ${u}`):f.v(this.TAG,`_doAppendSegments: Now ${Date.now()} - Appending init segment for ${s} SourceBuffer - size: ${c.data.byteLength} audioUpdating ${p} videoUpdating ${u}`)}if(typeof SharedArrayBuffer!="undefined"&&c.data.buffer instanceof SharedArrayBuffer){let p=c.data.slice();this._sourceBuffers[s].appendBuffer(p)}else this._sourceBuffers[s].appendBuffer(c.data);this._isBufferFull=!1}catch(p){this._pendingSegments[s].unshift(c),f.e(this.TAG,`error.message = ${p.message}; error.name = ${p.name}; error.code = ${p.code}; pendingData.length = ${c.data.length}; type = ${s}; beginDts = ${h?h.beginDts:"N/A"}; endDts = ${h?h.endDts:"N/A"}`),p.name==="QuotaExceededError"?this._hasPendingEos&&this._config.autoCleanupSourceBuffer?(this._mediaElementProxy.setOnMediaTimeUpdate(this._onMediaTimeUpdate),f.v(this.TAG,"QuotaExceededError with pending EOS, forcing cleanup to append final segment."),this._doCleanupSourceBuffer(!0),this._hasPendingRemoveRanges()||(f.w(this.TAG,"Cannot cleanup buffer at current position - will retry as playback progresses"),this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ee.BUFFER_FULL)))):this._isBufferFull||(this._isBufferFull=!0,this._emitter.emit(ee.BUFFER_FULL),this._emitter.emit(ee.QUOTA_EXCEEDED_BUFFER_FULL,{type:s,currentBufferLength:((r=this._sourceBuffers[s])==null?void 0:r.buffered.length)||0,segmentSize:c.data.byteLength})):(f.e(this.TAG,p.message),this._emitter.emit(ee.ERROR,{code:p.code,msg:p.message}))}}}_deferInitSegment(e,t){this._pendingSourceBufferInit=this._pendingSourceBufferInit.filter(i=>i.type!==e.type),this._pendingSourceBufferInit.push(e),f.v(this.TAG,`_deferInitSegment: queued deferred=${t} pendingSourceBufferInit=${this._pendingSourceBufferInit.length} pendingAudio=${this._pendingSegments.audio.length} pendingVideo=${this._pendingSegments.video.length} ${tt(e)}`),t||(this._pendingSegments[e.type]=this._pendingSegments[e.type].filter(i=>i.kind!==0),this._pendingSegments[e.type].push(e),f.v(this.TAG,`_deferInitSegment: also queued into pendingSegments[${e.type}] size=${this._pendingSegments[e.type].length} ${tt(e)}`))}_flushPendingInitSegments(){var e,t;for(;this._pendingSourceBufferInit.length>0;){if(!this._mediaSource||this._mediaSource.readyState!=="open"||this._useManagedMediaSource&&this._mediaSource.streaming===!1||(e=this._sourceBuffers.video)!=null&&e.updating||(t=this._sourceBuffers.audio)!=null&&t.updating||this._hasPendingRemoveRanges())return;let i=this._pendingSourceBufferInit.shift();f.v(this.TAG,`_flushPendingInitSegments: dispatching queued init, remaining=${this._pendingSourceBufferInit.length} ${tt(i)}`),this.appendInitSegment(i,!0)}}_onSourceOpen(){var e;f.v(this.TAG,"MediaSource onSourceOpen"),(e=this._mediaSource)==null||e.removeEventListener("sourceopen",this.events.onSourceOpen),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ee.SOURCE_OPEN)}_onStartStreaming(){f.v(this.TAG,"ManagedMediaSource onStartStreaming"),this._flushPendingInitSegments(),this._hasPendingSegments()&&this._doAppendSegments(),this._emitter.emit(ee.START_STREAMING)}_onEndStreaming(){f.v(this.TAG,"ManagedMediaSource onEndStreaming"),this._emitter.emit(ee.END_STREAMING)}_onQualityChange(){f.v(this.TAG,"ManagedMediaSource onQualityChange")}_onSourceEnded(){f.v(this.TAG,"MediaSource onSourceEnded")}_getBufferedRanges(e){let t=this._sourceBuffers[e];return t?t.buffered:null}_onSourceClose(){f.v(this.TAG,"MediaSource onSourceClose");for(let e of et){let t=this._sourceBuffers[e];t&&(t.removeEventListener("error",this.events.onSourceBufferError),t.removeEventListener("updateend",this.events.onSourceBufferUpdateEnd)),this._sourceBuffers[e]=null,this._mimeTypes[e]=null,this._pendingRemoveRanges[e].splice(0),this._pendingSegments[e].splice(0)}this._pendingSourceBufferInit=[],this._mediaSource&&this.events!=null&&(this._mediaSource.removeEventListener("sourceopen",this.events.onSourceOpen),this._mediaSource.removeEventListener("sourceended",this.events.onSourceEnded),this._mediaSource.removeEventListener("sourceclose",this.events.onSourceClose),this._useManagedMediaSource&&(this._mediaSource.removeEventListener("startstreaming",this.events.onStartStreaming),this._mediaSource.removeEventListener("endstreaming",this.events.onEndStreaming),this._mediaSource.removeEventListener("qualitychange",this.events.onQualityChange)))}_hasPendingSegments(){let e=this._pendingSegments;return e.video.length>0||e.audio.length>0}_hasPendingRemoveRanges(){let e=this._pendingRemoveRanges;return e.video.length>0||e.audio.length>0}_onSourceBufferUpdateEnd(){this._requireSetMediaDuration&&this._updateMediaSourceDuration(),this._flushPendingInitSegments(),this._hasPendingRemoveRanges()?this._doRemoveRanges():this._hasPendingSegments()?this._doAppendSegments():this._hasPendingEos&&this.endOfStream(),this._emitter.emit(ee.UPDATE_END)}_onSourceBufferError(e){var s,a,l,h,_,c,p,u,y,g,x;let t=e==null?void 0:e.target,i=(l=(a=(s=this._mediaElementProxy)==null?void 0:s.getError)==null?void 0:a.call(s))!=null?l:null,n=t?`updating=${t.updating}`:"target=unknown";f.e(this.TAG,`SourceBuffer Error: eventType=${(h=e==null?void 0:e.type)!=null?h:"unknown"} ${n} mediaSourceReadyState=${(c=(_=this._mediaSource)==null?void 0:_.readyState)!=null?c:"null"} mediaElementReadyState=${(y=(u=(p=this._mediaElementProxy)==null?void 0:p.getReadyState)==null?void 0:u.call(p))!=null?y:"unknown"} mediaError=${cn(i)}`);let r=(x=(g=this._mediaElementProxy)==null?void 0:g.getError)==null?void 0:x.call(g);r&&this._emitter.emit(ee.ERROR,{code:r.code,msg:r.message})}};d(Ot,"TRACE",!1);var Ai=Ot,Fr=Ai;var Ht=class o{static get forceGlobalTag(){return f.FORCE_GLOBAL_TAG}static set forceGlobalTag(e){f.FORCE_GLOBAL_TAG=e,o._notifyChange()}static get globalTag(){return f.GLOBAL_TAG}static set globalTag(e){f.GLOBAL_TAG=e,o._notifyChange()}static get enableAll(){return f.ENABLE_VERBOSE&&f.ENABLE_DEBUG&&f.ENABLE_INFO&&f.ENABLE_WARN&&f.ENABLE_ERROR}static set enableAll(e){f.ENABLE_VERBOSE=e,f.ENABLE_DEBUG=e,f.ENABLE_INFO=e,f.ENABLE_WARN=e,f.ENABLE_ERROR=e,o._notifyChange()}static get enableDebug(){return f.ENABLE_DEBUG}static set enableDebug(e){f.ENABLE_DEBUG=e,o._notifyChange()}static get enableVerbose(){return f.ENABLE_VERBOSE}static set enableVerbose(e){f.ENABLE_VERBOSE=e,o._notifyChange()}static get enableInfo(){return f.ENABLE_INFO}static set enableInfo(e){f.ENABLE_INFO=e,o._notifyChange()}static get enableWarn(){return f.ENABLE_WARN}static set enableWarn(e){f.ENABLE_WARN=e,o._notifyChange()}static get enableError(){return f.ENABLE_ERROR}static set enableError(e){f.ENABLE_ERROR=e,o._notifyChange()}static getConfig(){return{globalTag:f.GLOBAL_TAG,forceGlobalTag:f.FORCE_GLOBAL_TAG,enableVerbose:f.ENABLE_VERBOSE,enableDebug:f.ENABLE_DEBUG,enableInfo:f.ENABLE_INFO,enableWarn:f.ENABLE_WARN,enableError:f.ENABLE_ERROR,enableCallback:f.ENABLE_CALLBACK}}static applyConfig(e){f.GLOBAL_TAG=e.globalTag,f.FORCE_GLOBAL_TAG=e.forceGlobalTag,f.ENABLE_VERBOSE=e.enableVerbose,f.ENABLE_DEBUG=e.enableDebug,f.ENABLE_INFO=e.enableInfo,f.ENABLE_WARN=e.enableWarn,f.ENABLE_ERROR=e.enableError,f.ENABLE_CALLBACK=e.enableCallback}static _notifyChange(){let e=o.emitter;if(e.listenerCount("change")>0){let t=o.getConfig();e.emit("change",t)}}static registerListener(e){o.emitter.addListener("change",e)}static removeListener(e){o.emitter.removeListener("change",e)}static addLogListener(e){f.emitter.addListener("log",e),f.emitter.listenerCount("log")>0&&(f.ENABLE_CALLBACK=!0,o._notifyChange())}static removeLogListener(e){f.emitter.removeListener("log",e),f.emitter.listenerCount("log")===0&&(f.ENABLE_CALLBACK=!1,o._notifyChange())}};Ht.emitter=new ce;var Ie=Ht;var Si=class{constructor(){d(this,"mimeType",null);d(this,"duration",null);d(this,"hasAudio",null);d(this,"hasVideo",null);d(this,"audioCodec",null);d(this,"videoCodec",null);d(this,"audioDataRate",null);d(this,"videoDataRate",null);d(this,"audioSampleRate",null);d(this,"audioChannelCount",null);d(this,"width",null);d(this,"height",null);d(this,"fps",null);d(this,"profile",null);d(this,"level",null);d(this,"refFrames",null);d(this,"chromaFormat",null);d(this,"sarNum",null);d(this,"sarDen",null);d(this,"metadata",null);d(this,"segments",null);d(this,"segmentCount",null);d(this,"hasKeyframesIndex",null);d(this,"keyframesIndex",null)}isComplete(){let e=this.hasAudio===!1||this.hasAudio===!0&&this.audioCodec!=null&&this.audioSampleRate!=null&&this.audioChannelCount!=null,t=this.hasVideo===!1||this.hasVideo===!0&&this.videoCodec!=null&&this.width!=null&&this.height!=null&&this.fps!=null&&this.profile!=null&&this.level!=null&&this.refFrames!=null&&this.chromaFormat!=null&&this.sarNum!=null&&this.sarDen!=null;return this.mimeType!=null&&e&&t}isSeekable(){return this.hasKeyframesIndex===!0}getNearestKeyframe(e){if(this.keyframesIndex==null)return null;let t=this.keyframesIndex,i=this._search(t.times,e);return{index:i,milliseconds:t.times[i],fileposition:t.filepositions[i]}}_search(e,t){let i=0,n=e.length-1,r=0,s=0,a=n;for(t<e[0]&&(i=0,s=a+1);s<=a;)if(r=s+Math.floor((a-s)/2),r===n||t>=e[r]&&t<e[r+1]){i=r;break}else e[r]<t?s=r+1:a=r-1;return i}},De=Si;var Ei=class{constructor(e){this.TAG="ExpGolomb",this._buffer=e,this._buffer_index=0,this._total_bytes=e.byteLength,this._total_bits=e.byteLength*8,this._current_word=0,this._current_word_bits_left=0}destroy(){this._buffer=null}_fillCurrentWord(){let e=this._total_bytes-this._buffer_index;if(e<=0)throw new re("ExpGolomb: _fillCurrentWord() but no bytes available");let t=Math.min(4,e),i=new Uint8Array(4);i.set(this._buffer.subarray(this._buffer_index,this._buffer_index+t)),this._current_word=new DataView(i.buffer).getUint32(0,!1),this._buffer_index+=t,this._current_word_bits_left=t*8}readBits(e){if(e>32)throw new ue("ExpGolomb: readBits() bits exceeded max 32bits!");if(e<=this._current_word_bits_left){let s=this._current_word>>>32-e;return this._current_word<<=e,this._current_word_bits_left-=e,s}let t=this._current_word_bits_left?this._current_word:0;t=t>>>32-this._current_word_bits_left;let i=e-this._current_word_bits_left;this._fillCurrentWord();let n=Math.min(i,this._current_word_bits_left),r=this._current_word>>>32-n;return this._current_word<<=n,this._current_word_bits_left-=n,t=t<<n|r,t}readBool(){return this.readBits(1)===1}readByte(){return this.readBits(8)}_skipLeadingZero(){let e;for(e=0;e<this._current_word_bits_left;e++)if((this._current_word&2147483648>>>e)!==0)return this._current_word<<=e,this._current_word_bits_left-=e,e;return this._fillCurrentWord(),e+this._skipLeadingZero()}readUEG(){let e=this._skipLeadingZero();return this.readBits(e+1)-1}readSEG(){let e=this.readUEG();return e&1?e+1>>>1:-1*(e>>>1)}},fe=Ei;var Rt=(R=>(R[R.kNull=0]="kNull",R[R.kAAC_Main=1]="kAAC_Main",R[R.kAAC_LC=2]="kAAC_LC",R[R.kAAC_SSR=3]="kAAC_SSR",R[R.kAAC_LTP=4]="kAAC_LTP",R[R.kAAC_SBR=5]="kAAC_SBR",R[R.kAAC_Scalable=6]="kAAC_Scalable",R[R.kTwinVQ=7]="kTwinVQ",R[R.kCELP=8]="kCELP",R[R.kHVXC=9]="kHVXC",R[R.kTTSI=12]="kTTSI",R[R.kMainSynthetic=13]="kMainSynthetic",R[R.kWavetableSynthesis=14]="kWavetableSynthesis",R[R.kGeneralMIDI=15]="kGeneralMIDI",R[R.kAlgorithmicSynthesis=16]="kAlgorithmicSynthesis",R[R.kER_AAC_LC=17]="kER_AAC_LC",R[R.kER_AAC_LTP=19]="kER_AAC_LTP",R[R.kER_AAC_Scalable=20]="kER_AAC_Scalable",R[R.kER_TwinVQ=21]="kER_TwinVQ",R[R.kER_BSAC=22]="kER_BSAC",R[R.kER_AAC_LD=23]="kER_AAC_LD",R[R.kER_CELP=24]="kER_CELP",R[R.kER_HVXC=25]="kER_HVXC",R[R.kER_HILN=26]="kER_HILN",R[R.kER_Parametric=27]="kER_Parametric",R[R.kSSC=28]="kSSC",R[R.kAAC_PS=29]="kAAC_PS",R[R.kMPEGSurround=30]="kMPEGSurround",R[R.kLayer1=32]="kLayer1",R[R.kLayer2=33]="kLayer2",R[R.kLayer3=34]="kLayer3",R[R.kDST=35]="kDST",R[R.kALS=36]="kALS",R[R.kSLS=37]="kSLS",R[R.kSLS_NonCore=38]="kSLS_NonCore",R[R.kER_AAC_ELD=39]="kER_AAC_ELD",R[R.kSMR_Simple=40]="kSMR_Simple",R[R.kSMR_Main=41]="kSMR_Main",R[R.kUSAC=42]="kUSAC",R[R.kSAOC=43]="kSAOC",R[R.kLD_MpegSurround=44]="kLD_MpegSurround",R[R.kSAOC_DE=45]="kSAOC_DE",R))(Rt||{});var Be=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350];var at=class{constructor(e){d(this,"audio_object_type",2);d(this,"sampling_freq_index",4);d(this,"sampling_frequency",Be[4]);d(this,"channel_config",2);d(this,"data",new Uint8Array);var t;if(e===void 0||e.byteLength<2){e!==void 0&&(this.data=e);return}this.data=e,this.audio_object_type=e[0]>>>3,this.sampling_freq_index=(e[0]&7)<<1|e[1]>>>7,this.sampling_frequency=(t=Be[this.sampling_freq_index])!=null?t:0,this.channel_config=(e[1]&120)>>>3}};var ot=class{constructor(e){d(this,"config");d(this,"sampling_rate");d(this,"channel_count");d(this,"codec_mimetype");d(this,"original_codec_mimetype");let t,i=e.audio_object_type,n=e.audio_object_type,r=e.sampling_freq_index,s=e.channel_config,a=0,l=navigator.userAgent.toLowerCase();l.indexOf("firefox")!==-1?r>=6?(n=5,t=new Array(4),a=r-3):(n=2,t=new Array(2),a=r):l.indexOf("android")!==-1?(n=2,t=new Array(2),a=r):(n=5,a=r,t=new Array(4),r>=6&&(a=r-3)),t[0]=n<<3,t[0]|=(r&15)>>>1,t[1]=(r&15)<<7,t[1]|=(s&15)<<3,n===5&&(t[1]|=(a&15)>>>1,t[2]=(a&1)<<7,t[2]|=8,t[3]=0),this.config=t,this.sampling_rate=Be[r],this.channel_count=s,this.codec_mimetype="mp4a.40."+n,this.original_codec_mimetype="mp4a.40."+i}};var Ci=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let s=0;s<i;s++)s>=2&&t[s]===3&&t[s-1]===0&&t[s-2]===0||(n[r]=t[s],r++);return new Uint8Array(n.buffer,0,r)}static parseSPS(e){let t=e.subarray(1,4),i="avc1.";for(let D=0;D<3;D++){let I=t[D].toString(16);I.length<2&&(I="0"+I),i+=I}let n=o._ebsp2rbsp(e),r=new fe(n);r.readByte();let s=r.readByte();r.readByte();let a=r.readByte();r.readUEG();let l=o.getProfileString(s),h=o.getLevelString(a),_=1,c=420,p=[0,420,422,444],u=8,y=8;if((s===100||s===110||s===122||s===244||s===44||s===83||s===86||s===118||s===128||s===138||s===144)&&(_=r.readUEG(),_===3&&r.readBits(1),_<=3&&(c=p[_]),u=r.readUEG()+8,y=r.readUEG()+8,r.readBits(1),r.readBool())){let D=_!==3?8:12;for(let I=0;I<D;I++)r.readBool()&&(I<6?o._skipScalingList(r,16):o._skipScalingList(r,64))}r.readUEG();let g=r.readUEG();if(g===0)r.readUEG();else if(g===1){r.readBits(1),r.readSEG(),r.readSEG();let D=r.readUEG();for(let I=0;I<D;I++)r.readSEG()}let x=r.readUEG();r.readBits(1);let b=r.readUEG(),S=r.readUEG(),A=r.readBits(1);A===0&&r.readBits(1),r.readBits(1);let T=0,P=0,M=0,B=0;r.readBool()&&(T=r.readUEG(),P=r.readUEG(),M=r.readUEG(),B=r.readUEG());let w=1,k=1,N=0,G=!0,le=0,ne=0;if(r.readBool()){if(r.readBool()){let D=r.readByte(),I=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],te=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];D>0&&D<16?(w=I[D-1],k=te[D-1]):D===255&&(w=r.readByte()<<8|r.readByte(),k=r.readByte()<<8|r.readByte())}if(r.readBool()&&r.readBool(),r.readBool()&&(r.readBits(4),r.readBool()&&r.readBits(24)),r.readBool()&&(r.readUEG(),r.readUEG()),r.readBool()){let D=r.readBits(32),I=r.readBits(32);G=r.readBool(),le=I,ne=D*2,N=le/ne}}let W=1;(w!==1||k!==1)&&(W=w/k);let Q=0,oe=0;if(_===0)Q=1,oe=2-A;else{let D=_===3?1:2,I=_===1?2:1;Q=D,oe=I*(2-A)}let H=(b+1)*16,me=(2-A)*((S+1)*16);H-=(T+P)*Q,me-=(M+B)*oe;let F=Math.ceil(H*W);return r.destroy(),r=null,{codec_mimetype:i,profile_idc:s,level_idc:a,profile_string:l,level_string:h,chroma_format_idc:_,bit_depth:u,bit_depth_luma:u,bit_depth_chroma:y,ref_frames:x,chroma_format:c,chroma_format_string:o.getChromaFormatString(c),frame_rate:{fixed:G,fps:N,fps_den:ne,fps_num:le},sar_ratio:{width:w,height:k},codec_size:{width:H,height:me},present_size:{width:F,height:me}}}static _skipScalingList(e,t){let i=8,n=8,r=0;for(let s=0;s<t;s++)n!==0&&(r=e.readSEG(),n=(i+r+256)%256),i=n===0?i:n}static getProfileString(e){switch(e){case 66:return"Baseline";case 77:return"Main";case 88:return"Extended";case 100:return"High";case 110:return"High10";case 122:return"High422";case 244:return"High444";default:return"Unknown"}}static getLevelString(e){return(e/10).toFixed(1)}static getChromaFormatString(e){switch(e){case 420:return"4:2:0";case 422:return"4:2:2";case 444:return"4:4:4";default:return"Unknown"}}},$t=Ci;var Ri=class o{static _ebsp2rbsp(e){let t=e,i=t.byteLength,n=new Uint8Array(i),r=0;for(let s=0;s<i;s++)s>=2&&t[s]===3&&t[s-1]===0&&t[s-2]===0||(n[r]=t[s],r++);return new Uint8Array(n.buffer,0,r)}static parseVPS(e){let t=o._ebsp2rbsp(e),i=new fe(t);i.readByte(),i.readByte();let n=i.readBits(4);i.readBits(2);let r=i.readBits(6),s=i.readBits(3),a=i.readBool();return{num_temporal_layers:s+1,temporal_id_nested:a}}static parseSPS(e){let t=o._ebsp2rbsp(e),i=new fe(t);i.readByte(),i.readByte();let n=0,r=0,s=0,a=0,l=i.readBits(4),h=i.readBits(3),_=i.readBool(),c=i.readBits(2),p=i.readBool(),u=i.readBits(5),y=i.readByte(),g=i.readByte(),x=i.readByte(),b=i.readByte(),S=i.readByte(),A=i.readByte(),T=i.readByte(),P=i.readByte(),M=i.readByte(),B=i.readByte(),v=i.readByte(),w=[],k=[];for(let z=0;z<h;z++)w.push(i.readBool()),k.push(i.readBool());if(h>0)for(let z=h;z<8;z++)i.readBits(2);for(let z=0;z<h;z++)w[z]&&(i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte(),i.readByte()),k[z]&&i.readByte();let N=i.readUEG(),G=i.readUEG();G==3&&i.readBits(1);let le=i.readUEG(),ne=i.readUEG();i.readBool()&&(n+=i.readUEG(),r+=i.readUEG(),s+=i.readUEG(),a+=i.readUEG());let W=i.readUEG(),Q=i.readUEG(),oe=i.readUEG(),H=i.readBool();for(let z=H?0:h;z<=h;z++)i.readUEG(),i.readUEG(),i.readUEG();let me=i.readUEG(),F=i.readUEG(),D=i.readUEG(),I=i.readUEG(),te=i.readUEG(),ve=i.readUEG();if(i.readBool()&&i.readBool())for(let ie=0;ie<4;ie++)for(let de=0;de<(ie===3?2:6);de++)if(!i.readBool())i.readUEG();else{let pe=Math.min(64,1<<4+(ie<<1));ie>1&&i.readSEG();for(let Ce=0;Ce<pe;Ce++)i.readSEG()}let Xe=i.readBool(),rt=i.readBool();i.readBool()&&(i.readByte(),i.readUEG(),i.readUEG(),i.readBool());let Fe=i.readUEG(),Ae=0;for(let z=0;z<Fe;z++){let ie=!1;if(z!==0&&(ie=i.readBool()),ie){z===Fe&&i.readUEG(),i.readBool(),i.readUEG();let de=0;for(let be=0;be<=Ae;be++){let pe=i.readBool(),Ce=!1;pe||(Ce=i.readBool()),(pe||Ce)&&de++}Ae=de}else{let de=i.readUEG(),be=i.readUEG();Ae=de+be;for(let pe=0;pe<de;pe++)i.readUEG(),i.readBool();for(let pe=0;pe<be;pe++)i.readUEG(),i.readBool()}}if(i.readBool()){let z=i.readUEG();for(let ie=0;ie<z;ie++){for(let de=0;de<oe+4;de++)i.readBits(1);i.readBits(1)}}let Qe=!1,nt=0,Ze=1,Je=1,Dt=!1,pt=1,gt=1,fr=i.readBool(),mr=i.readBool();if(i.readBool()){if(i.readBool()){let we=i.readByte(),Bt=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],Mt=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];we>0&&we<=16?(Ze=Bt[we-1],Je=Mt[we-1]):we===255&&(Ze=i.readBits(16),Je=i.readBits(16))}i.readBool()&&i.readBool(),i.readBool()&&(i.readBits(3),i.readBool(),i.readBool()&&(i.readByte(),i.readByte(),i.readByte())),i.readBool()&&(i.readUEG(),i.readUEG());let pe=i.readBool(),Ce=i.readBool(),xt=i.readBool();if(Qe=i.readBool(),Qe&&(i.readUEG(),i.readUEG(),i.readUEG(),i.readUEG()),i.readBool()&&(pt=i.readBits(32),gt=i.readBits(32),i.readBool()&&i.readUEG(),i.readBool())){let Mt=1,wt=!1,It=!1,st=!1;if(Mt&&(wt=i.readBool(),It=i.readBool(),wt||It)){st=i.readBool(),st&&(i.readByte(),i.readBits(5),i.readBool(),i.readBits(5));let Ut=i.readBits(4),fi=i.readBits(4);st&&i.readBits(4),i.readBits(5),i.readBits(5),i.readBits(5)}for(let Ut=0;Ut<=h;Ut++){let fi=i.readBool();Dt=fi;let xr=!0,mi=1;fi||(xr=i.readBool());let br=!1;if(xr?i.readUEG():br=i.readBool(),br||(mi=i.readUEG()+1),wt){for(let yt=0;yt<mi;yt++)i.readUEG(),i.readUEG(),st&&(i.readUEG(),i.readUEG());i.readBool()}if(It){for(let yt=0;yt<mi;yt++)i.readUEG(),i.readUEG(),st&&(i.readUEG(),i.readUEG());i.readBool()}}}if(i.readBool()){let we=i.readBool(),Bt=i.readBool(),Mt=i.readBool();nt=i.readUEG();let wt=i.readUEG(),It=i.readUEG(),st=i.readUEG(),Ut=i.readUEG()}}let Ne=i.readBool(),Me=`hvc1.${u}.1.L${v}.B0`,gr=G===1||G===2?2:1,_i=G===1?2:1,hi=le-(n+r)*gr,ci=ne-(s+a)*_i,ui=1;return Ze!==1&&Je!==1&&(ui=Ze/Je),i.destroy(),i=null,{codec_mimetype:Me,profile_string:o.getProfileString(u),level_string:o.getLevelString(v),profile_idc:u,bit_depth:W+8,ref_frames:1,chroma_format:G,chroma_format_string:o.getChromaFormatString(G),general_level_idc:v,general_profile_space:c,general_tier_flag:p,general_profile_idc:u,general_profile_compatibility_flags_1:y,general_profile_compatibility_flags_2:g,general_profile_compatibility_flags_3:x,general_profile_compatibility_flags_4:b,general_constraint_indicator_flags_1:S,general_constraint_indicator_flags_2:A,general_constraint_indicator_flags_3:T,general_constraint_indicator_flags_4:P,general_constraint_indicator_flags_5:M,general_constraint_indicator_flags_6:B,min_spatial_segmentation_idc:nt,constant_frame_rate:0,chroma_format_idc:G,bit_depth_luma_minus8:W,bit_depth_chroma_minus8:Q,frame_rate:{fixed:Dt,fps:gt/pt,fps_den:pt,fps_num:gt},sar_ratio:{width:Ze,height:Je},codec_size:{width:hi,height:ci},present_size:{width:hi*ui,height:ci}}}static parsePPS(e){let t=o._ebsp2rbsp(e),i=new fe(t);i.readByte(),i.readByte();let n=i.readUEG(),r=i.readUEG(),s=i.readBool(),a=i.readBool(),l=i.readBits(3),h=i.readBool(),_=i.readBool(),c=i.readUEG(),p=i.readUEG(),u=i.readSEG(),y=i.readBool(),g=i.readBool();if(i.readBool()){let k=i.readUEG()}let b=i.readSEG(),S=i.readSEG(),A=i.readBool(),T=i.readBool(),P=i.readBool(),M=i.readBool(),B=i.readBool(),v=i.readBool(),w=1;return v&&B?w=0:v?w=3:B&&(w=2),{parallelismType:w}}static getChromaFormatString(e){switch(e){case 0:return"4:0:0";case 1:return"4:2:0";case 2:return"4:2:2";case 3:return"4:4:4";default:return"Unknown"}}static getProfileString(e){switch(e){case 1:return"Main";case 2:return"Main10";case 3:return"MainSP";case 4:return"Rext";case 9:return"SCC";default:return"Unknown"}}static getLevelString(e){return(e/30).toFixed(1)}},lt=Ri;var ki=class{constructor(){d(this,"type",0);d(this,"data",new Uint8Array)}},Gt=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},qt=class{constructor(e){d(this,"TAG","H264AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&f.e(this.TAG,"Could not find H264 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let s=e[n]&31,a=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,s>=14||a!==0)continue;let h=e.subarray(n,l);t=new ki,t.type=s,t.data=h}return t}},Wt=class{constructor(e,t,i){d(this,"data");let n=8+e.byteLength+1+2+t.byteLength,r=!1;e[3]!==66&&e[3]!==77&&e[3]!==88&&(r=!0,n+=4);let s=this.data=new Uint8Array(n);s[0]=1,s[1]=e[1],s[2]=e[2],s[3]=e[3],s[4]=255,s[5]=225;let a=e.byteLength;s[6]=a>>>8,s[7]=a&255;let l=8;s.set(e,8),l+=a,s[l]=1;let h=t.byteLength;s[l+1]=h>>>8,s[l+2]=h&255,s.set(t,l+3),l+=3+h,r&&(s[l]=252|i.chroma_format_idc,s[l+1]=248|i.bit_depth_luma-8,s[l+2]=248|i.bit_depth_chroma-8,s[l+3]=0,l+=4)}getData(){return this.data}};var zt=class{constructor(e){d(this,"type");d(this,"data");let t=e.data.byteLength;this.type=e.type,this.data=new Uint8Array(4+t),new DataView(this.data.buffer).setUint32(0,t),this.data.set(e.data,4)}},Kt=class{constructor(e){d(this,"TAG","H265AnnexBParser");d(this,"data_");d(this,"current_startcode_offset_",0);d(this,"eof_flag_",!1);this.data_=e,this.current_startcode_offset_=this.findNextStartCodeOffset(0),this.eof_flag_&&f.e(this.TAG,"Could not find H265 startcode until payload end!")}findNextStartCodeOffset(e){let t=e,i=this.data_;for(;;){if(t+3>=i.byteLength)return this.eof_flag_=!0,i.byteLength;let n=i[t+0]<<24|i[t+1]<<16|i[t+2]<<8|i[t+3],r=i[t+0]<<16|i[t+1]<<8|i[t+2];if(n===1||r===1)return t;t++}}readNextNaluPayload(){let e=this.data_,t=null;for(;t==null&&!this.eof_flag_;){let n=this.current_startcode_offset_;(e[n]<<24|e[n+1]<<16|e[n+2]<<8|e[n+3])===1?n+=4:n+=3;let s=e[n]>>1&63,a=(e[n]&128)>>>7,l=this.findNextStartCodeOffset(n);if(this.current_startcode_offset_=l,a!==0)continue;let h=e.subarray(n,l);t={type:s,data:h}}return t}},jt=class{constructor(e,t,i,n){d(this,"data");let r=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),s=this.data=new Uint8Array(r);s[0]=1,s[1]=(n.general_profile_space&3)<<6|(n.general_tier_flag?1:0)<<5|n.general_profile_idc&31,s[2]=n.general_profile_compatibility_flags_1,s[3]=n.general_profile_compatibility_flags_2,s[4]=n.general_profile_compatibility_flags_3,s[5]=n.general_profile_compatibility_flags_4,s[6]=n.general_constraint_indicator_flags_1,s[7]=n.general_constraint_indicator_flags_2,s[8]=n.general_constraint_indicator_flags_3,s[9]=n.general_constraint_indicator_flags_4,s[10]=n.general_constraint_indicator_flags_5,s[11]=n.general_constraint_indicator_flags_6,s[12]=n.general_level_idc,s[13]=240|(n.min_spatial_segmentation_idc&3840)>>8,s[14]=n.min_spatial_segmentation_idc&255,s[15]=252|n.parallelismType&3,s[16]=252|n.chroma_format_idc&3,s[17]=248|n.bit_depth_luma_minus8&7,s[18]=248|n.bit_depth_chroma_minus8&7,s[19]=0,s[20]=0,s[21]=(n.constant_frame_rate&3)<<6|(n.num_temporal_layers&7)<<3|(n.temporal_id_nested?1:0)<<2|3,s[22]=3,s[23]=160,s[24]=0,s[25]=1,s[26]=(e.byteLength&65280)>>8,s[27]=(e.byteLength&255)>>0,s.set(e,28),s[23+(5+e.byteLength)+0]=161,s[23+(5+e.byteLength)+1]=0,s[23+(5+e.byteLength)+2]=1,s[23+(5+e.byteLength)+3]=(t.byteLength&65280)>>8,s[23+(5+e.byteLength)+4]=(t.byteLength&255)>>0,s.set(t,23+(5+e.byteLength)+5),s[23+(5+e.byteLength+5+t.byteLength)+0]=162,s[23+(5+e.byteLength+5+t.byteLength)+1]=0,s[23+(5+e.byteLength+5+t.byteLength)+2]=1,s[23+(5+e.byteLength+5+t.byteLength)+3]=(i.byteLength&65280)>>8,s[23+(5+e.byteLength+5+t.byteLength)+4]=(i.byteLength&255)>>0,s.set(i,23+(5+e.byteLength+5+t.byteLength)+5)}getData(){return this.data}};var kt="av1-parser";var Ti=class o{static parseOBUs(e,t){for(let i=0;i<e.byteLength;){let n=i,r=(e[i]&128)>>7,s=(e[i]&120)>>3,a=(e[i]&4)!==0,l=(e[i]&2)!==0,h=(e[i]&1)!==0;i+=1;let _=0,c=0;a&&(i+=1);let p=Number.POSITIVE_INFINITY;if(l){p=0;for(let u=0;;u++){let y=e[i++];if(p|=(y&127)<<u*7,(y&128)===0)break}}s===1?t=se(j({},o.parseSeuqneceHeader(e.subarray(i,i+p))),{sequence_header_data:e.subarray(n,i+p)}):(s==3&&t||s==6&&t)&&(t=o.parseOBUFrameHeader(e.subarray(i,i+p),_,c,t)),i+=p}return t}static stripLeadingObuFraming(e){if(e.length===0)return e;function t(r){let s=0,a=(r[s]&128)>>7!==0,l=(r[s]&120)>>3,h=(r[s]&4)!==0,_=(r[s]&2)!==0,c=(r[s]&1)!==0;if(s+=1,a&&f.e(kt,"Invalid OBU header: forbidden bit is set"),h&&(s+=1),_){let p=0;for(let u=0;;u++){if(s>=r.length)return new Uint8Array(0);let y=r[s++];if(p|=(y&127)<<u*7,(y&128)===0)break}return r.subarray(s+p)}else return r.subarray(s)}let i=(e[0]&120)>>3,n=e;switch(i){case 2:n=t(e);break;case 7:f.e(kt,"OBU_REDUNDANT_FRAME_HEADER is not supported");break;case 8:f.e(kt,"OBU_TILE_LIST is not supported");break;case 15:f.e(kt,"OBU_PADDING is not supported");break;default:break}return n}static parseSeuqneceHeader(e){let t=new fe(e),i=t.readBits(3),n=t.readBool(),r=t.readBool(),s=-1,a=0,l=!0,h=0,_=1,c=!1,p=!1,u=-1,y=-1,g=[];if(r)g.push({operating_point_idc:0,level:t.readBits(5),tier:0});else{if(t.readBool()){let be=t.readBits(32),pe=t.readBits(32),Ce=t.readBool(),xt=0;if(Ce){let qe=0;for(;t.readBits(1)===0;)qe+=1;qe>=32?xt=4294967295:xt=(1<<qe)-1+t.readBits(qe)}if(_=be,h=pe,a=h/_,l=Ce,t.readBool()){u=t.readBits(5);let qe=t.readBits(32);y=t.readBits(5),s=t.readBits(5)}}let ie=t.readBool(),de=t.readBits(5);for(let be=0;be<=de;be++){let pe=t.readBits(12),Ce=t.readBits(5),xt=Ce>7?t.readBits(1):0;if(g.push({operating_point_idc:pe,level:Ce,tier:xt}),c){let bt=t.readBool();if(g[g.length-1].decoder_model_present_for_this_op=bt,bt){let qe=t.readBits(u+1),we=t.readBits(u+1),Bt=t.readBool()}}if(ie&&t.readBool()){let qe=t.readBits(4)}}}let x=0,{level:b,tier:S}=g[x],A=t.readBits(4),T=t.readBits(4),P=t.readBits(A+1)+1,M=t.readBits(T+1)+1,B=!1;r||(B=t.readBool());let v,w;if(B){let z=t.readBits(4),ie=t.readBits(4)}let k=2,N=2,G=t.readBool(),le=t.readBool(),ne=t.readBool(),ae=!1,W=!1,Q=!1,oe=!1,H=!1,me=!1,F=!1,D=k,I=N,te=0;if(!r){if(ae=t.readBool(),W=t.readBool(),Q=t.readBool(),oe=t.readBool(),H=t.readBool(),H){let ie=t.readBool(),de=t.readBool()}t.readBool()?D=k:D=t.readBits(1),D?t.readBool()?I=N:I=t.readBits(1):I=N,H?te=t.readBits(3)+1:te=0}let ve=t.readBool(),R=t.readBool(),Xe=t.readBool(),rt=t.readBool(),Oe=8;i===2&&rt?Oe=t.readBool()?12:10:Oe=rt?10:8;let Fe=!1;i!==1&&(Fe=t.readBool());let Ae=Fe?1:3,mt=t.readBool(),Qe=1,nt=2,Ze=2,Je=13,Dt=2,pt=0,gt=nt,fr=Ze,mr=Dt;if(mt){let z=t.readBits(8),ie=t.readBits(8),de=t.readBits(8)}let pr=1,Ne=1,Me=1;if(Fe){pr=t.readBits(1),Ne=1,Me=1;let z=0,ie=0}else{let z=1;if(gt===Qe&&fr===Je&&mr===pt)z=1,Ne=1,Me=1;else{if(z=t.readBits(1),i==0)Ne=1,Me=1;else if(i==1)Ne=0,Me=0;else if(Oe==12)if(t.readBits(1)){let be=t.readBits(1)}else{let be=0}else Ne=1,Me=0;if(Ne&&Me){let de=t.readBits(2)}let ie=t.readBits(1)}}let gr=t.readBool();t.destroy();let _i=`av01.${i}.${o.getLevelString(b,S)}.${Oe.toString(10).padStart(2,"0")}`,hi=1,ci=1,ui=1;return{codec_mimetype:_i,level:b,tier:S,level_string:o.getLevelString(b,S),profile_idc:i,profile_string:`${i}`,bit_depth:Oe,ref_frames:1,chroma_format:o.getChromaFormat(Fe,Ne,Me),chroma_format_string:o.getChromaFormatString(Fe,Ne,Me),sequence_header:{frame_id_numbers_present_flag:B,additional_frame_id_length_minus_1:w,delta_frame_id_length_minus_2:v,reduced_still_picture_header:r,decoder_model_info_present_flag:c,operating_points:g,buffer_removal_time_length_minus_1:y,equal_picture_interval:l,seq_force_screen_content_tools:D,seq_force_integer_mv:I,enable_order_hint:H,order_hint_bits:te,enable_superres:ve,frame_width_bit:A+1,frame_height_bit:T+1,max_frame_width:P,max_frame_height:M,frame_presentation_time_length_minus_1:s},keyframe:void 0,frame_rate:{fixed:l,fps:h/_,fps_den:_,fps_num:h}}}static parseOBUFrameHeader(e,t,i,n){var oe;let{sequence_header:r}=n,s=new fe(e),a=8,l=2,h=2,_=7,c=r.max_frame_width,p=r.max_frame_height,u=c,y=p,g=0;r.frame_id_numbers_present_flag&&(g=r.additional_frame_id_length_minus_1+r.delta_frame_id_length_minus_2+3);let x=(1<<a)-1,b=!1,S=0,A=!0,T=!0,P=!1,M=!1;if(!r.reduced_still_picture_header){if(b=s.readBool(),b)return n;if(S=s.readBits(2),A=S===2||S===0,T=s.readBool(),T&&r.decoder_model_info_present_flag&&!r.equal_picture_interval){let H=r.frame_presentation_time_length_minus_1+1,me=s.readBits(H);f.v(kt,`frame_presentation_time: ${me}`)}T?P=S!==0:P=s.readBool(),S===3||S===0&&T?M=!0:M=s.readBool()}n.keyframe=A;let B=s.readBool(),v=r.seq_force_screen_content_tools;r.seq_force_screen_content_tools===l&&(v=s.readBits(1));let w=A?1:0;v&&(w=r.seq_force_integer_mv,r.seq_force_integer_mv==h&&(w=s.readBits(1)));let k=0;r.frame_id_numbers_present_flag&&(k=s.readBits(g));let N=!1;S==3?N=!0:r.reduced_still_picture_header?N=!1:N=s.readBool();let G=s.readBits(r.order_hint_bits),le=_;if(A||M||(le=s.readBits(3)),r.decoder_model_info_present_flag&&s.readBool()){let me=(oe=r.operating_points_cnt_minus_1)!=null?oe:0;for(let F=0;F<=me;F++)if(r.operating_points[F].decoder_model_present_for_this_op){let D=r.operating_points[F].operating_point_idc,I=D>>t&1,te=D>>i+8&1;(D===0||I&&te)&&s.readBits(r.buffer_removal_time_length_minus_1+1)}}let ne=0,ae=0,W=0,Q=x;if(S===3||S==0&&T||(Q=s.readBits(8)),(!A||Q!==x)&&M&&r.enable_order_hint)for(let H=0;H<a;H++)s.readBits(r.order_hint_bits);if(A){let H=o.frameSizeAndRenderSize(s,N,r);n.codec_size={width:H.FrameWidth,height:H.FrameHeight},n.present_size={width:H.RenderWidth,height:H.RenderHeight},n.sar_ratio={width:H.RenderWidth/H.FrameWidth,height:H.RenderHeight/H.FrameHeight}}return s.destroy(),n}static frameSizeAndRenderSize(e,t,i){let n=i.max_frame_width,r=i.max_frame_height;t&&(n=e.readBits(i.frame_width_bit)+1,r=e.readBits(i.frame_height_bit)+1);let s=!1;i.enable_superres&&(s=e.readBool());let a=8;s&&(a=e.readBits(3)+9);let l=n;n=Math.floor((l*8+a/2)/a);let h=e.readBool(),_=l,c=r;return h&&(_=e.readBits(16)+1,c=e.readBits(16)+1),{UpscaledWidth:l,FrameWidth:n,FrameHeight:r,RenderWidth:_,RenderHeight:c}}static getLevelString(e,t){return`${e.toString(10).padStart(2,"0")}${t===0?"M":"H"}`}static getChromaFormat(e,t,i){return e?0:t===0&&i===0?3:t===1&&i===0?2:t===1&&i===1?1:Number.NaN}static getChromaFormatString(e,t,i){return e?"4:0:0":t===0&&i===0?"4:4:4":t===1&&i===0?"4:2:2":t===1&&i===1?"4:2:0":"Unknown"}},Re=Ti;var un={width:0,height:0,renderWidth:0,renderHeight:0,profile:0,isValid:!1},dt=class{static parseVp9Header(e){let t=j({},un);if(e.length<10)return t;let i=new fe(e);if(i.readBits(2)!==2||(t.profile=i.readBits(2),t.profile===3&&i.readBits(1),i.readBool())||i.readBool())return t;let r=i.readBool(),s=i.readBool(),a=i.readBits(24),l=8;t.profile>=2&&(l=i.readBool()?12:10);let h=i.readBits(3),_;(v=>(v[v.CS_UNKNOWN=0]="CS_UNKNOWN",v[v.CS_BT_601=1]="CS_BT_601",v[v.CS_BT_709=2]="CS_BT_709",v[v.CS_SMPTE_170=3]="CS_SMPTE_170",v[v.CS_SMPTE_240=4]="CS_SMPTE_240",v[v.CS_BT_2020=5]="CS_BT_2020",v[v.CS_RESERVED=6]="CS_RESERVED",v[v.CS_RGB=7]="CS_RGB"))(_||(_={})),h!==7?(i.readBool(),(t.profile===1||t.profile===3)&&(i.readBool(),i.readBool(),i.readBool())):(t.profile===1||t.profile===3)&&i.readBool();let c=i.readBits(16)+1,p=i.readBits(16)+1,u=i.readBool(),y=c,g=p;return u&&(y=i.readBits(16)+1,g=i.readBits(16)+1),t.width=c,t.height=p,t.renderWidth=y,t.renderHeight=g,t.isValid=!0,i.destroy(),t}};function Fi(o,e,t){let i=o;if(e+t<i.length){for(;t--;)if((i[++e]&192)!==128)return!1;return!0}else return!1}function fn(o){let e=[],t=o,i=0,n=o.length;for(;i<n;){if(t[i]<128){e.push(String.fromCharCode(t[i])),++i;continue}else if(!(t[i]<192)){if(t[i]<224){if(Fi(t,i,1)){let r=(t[i]&31)<<6|t[i+1]&63;if(r>=128){e.push(String.fromCharCode(r&65535)),i+=2;continue}}}else if(t[i]<240){if(Fi(t,i,2)){let r=(t[i]&15)<<12|(t[i+1]&63)<<6|t[i+2]&63;if(r>=2048&&(r&63488)!==55296){e.push(String.fromCharCode(r&65535)),i+=3;continue}}}else if(t[i]<248&&Fi(t,i,3)){let r=(t[i]&7)<<18|(t[i+1]&63)<<12|(t[i+2]&63)<<6|t[i+3]&63;if(r>65536&&r<1114112){r-=65536,e.push(String.fromCharCode(r>>>10|55296)),e.push(String.fromCharCode(r&1023|56320)),i+=4;continue}}}e.push("\uFFFD"),++i}return e.join("")}var Li=fn;var Ue=(function(){let o=new ArrayBuffer(2);return new DataView(o).setInt16(0,256,!0),new Int16Array(o)[0]===256})(),Di=class o{static parseScriptData(e,t,i){let n={};try{let r=o.parseValue(e,t,i),s=o.parseValue(e,t+r.size,i-r.size);n[r.data]=s.data}catch(r){f.e("AMF",r.toString())}return n}static parseObject(e,t,i){if(i<3)throw new re("Data not enough when parse ScriptDataObject");let n=o.parseString(e,t,i),r=o.parseValue(e,t+n.size,i-n.size),s=r.objectEnd;return{data:{name:n.data,value:r.data},size:n.size+r.size,objectEnd:s}}static parseVariable(e,t,i){return o.parseObject(e,t,i)}static parseString(e,t,i){if(i<2)throw new re("Data not enough when parse String");let r=new DataView(e,t,i).getUint16(0,!Ue),s;return r>0?s=Li(new Uint8Array(e,t+2,r)):s="",{data:s,size:2+r}}static parseLongString(e,t,i){if(i<4)throw new re("Data not enough when parse LongString");let r=new DataView(e,t,i).getUint32(0,!Ue),s;return r>0?s=Li(new Uint8Array(e,t+4,r)):s="",{data:s,size:4+r}}static parseDate(e,t,i){if(i<10)throw new re("Data size invalid when parse Date");let n=new DataView(e,t,i),r=n.getFloat64(0,!Ue),s=n.getInt16(8,!Ue);return r+=s*60*1e3,{data:new Date(r),size:10}}static parseValue(e,t,i){if(i<1)throw new re("Data not enough when parse Value");let n=new DataView(e,t,i),r=1,s=n.getUint8(0),a,l=!1;try{switch(s){case 0:a=n.getFloat64(1,!Ue),r+=8;break;case 1:{a=!!n.getUint8(1),r+=1;break}case 2:{let h=o.parseString(e,t+1,i-1);a=h.data,r+=h.size;break}case 3:{a={};let h=0;for((n.getUint32(i-4,!Ue)&16777215)===9&&(h=3);r<i-4;){let _=o.parseObject(e,t+r,i-r-h);if(_.objectEnd)break;a[_.data.name]=_.data.value,r+=_.size}r<=i-3&&(n.getUint32(r-1,!Ue)&16777215)===9&&(r+=3);break}case 8:{a={},r+=4;let h=0;for((n.getUint32(i-4,!Ue)&16777215)===9&&(h=3);r<i-8;){let _=o.parseVariable(e,t+r,i-r-h);if(_.objectEnd)break;a[_.data.name]=_.data.value,r+=_.size}r<=i-3&&(n.getUint32(r-1,!Ue)&16777215)===9&&(r+=3);break}case 9:a=void 0,r=1,l=!0;break;case 10:{a=[];let h=n.getUint32(1,!Ue);r+=4;for(let _=0;_<h;_++){let c=o.parseValue(e,t+r,i-r);a.push(c.data),r+=c.size}break}case 11:{let h=o.parseDate(e,t+1,i-1);a=h.data,r+=h.size;break}case 12:{let h=o.parseString(e,t+1,i-1);a=h.data,r+=h.size;break}default:r=i,f.w("AMF","Unsupported AMF value type "+s)}}catch(h){f.e("AMF",h.toString())}return{data:a,size:r,objectEnd:l}}},Lr=Di;var mn={OK:"OK",FORMAT_ERROR:"FormatError",FORMAT_UNSUPPORTED:"FormatUnsupported",CODEC_UNSUPPORTED:"CodecUnsupported"},q=mn;function Dr(o){return o.byteOffset%2===0&&o.byteLength%2===0}function Br(o){return o.byteOffset%4===0&&o.byteLength%4===0}function Bi(o,e){for(let t=0;t<o.length;t++)if(o[t]!==e[t])return!1;return!0}function pn(o,e){return Bi(o,e)}function gn(o,e){let t=new Uint16Array(o.buffer,o.byteOffset,o.byteLength/2),i=new Uint16Array(e.buffer,e.byteOffset,e.byteLength/2);return Bi(t,i)}function xn(o,e){let t=new Uint32Array(o.buffer,o.byteOffset,o.byteLength/4),i=new Uint32Array(e.buffer,e.byteOffset,e.byteLength/4);return Bi(t,i)}function bn(o,e){return o.byteLength!==e.byteLength?!1:Br(o)&&Br(e)?xn(o,e):Dr(o)&&Dr(e)?gn(o,e):pn(o,e)}var ke=bn;var _e=(...o)=>{throw new Error("Callback function has not been implemented.")},$e=(...o)=>{f.v("No operation callback invoked with arguments:",o)};function Sn(o){return Array.from(o).map(e=>e.toString(16).padStart(2,"0")).join(" ")}var Mi=(x=>(x[x.SequenceStart=0]="SequenceStart",x[x.CodedFrames=1]="CodedFrames",x[x.SequenceEnd=2]="SequenceEnd",x[x.Reserved3=3]="Reserved3",x[x.MultichannelConfig=4]="MultichannelConfig",x[x.Multitrack=5]="Multitrack",x[x.Reserved6=6]="Reserved6",x[x.ModEx=7]="ModEx",x[x.Reserved8=8]="Reserved8",x[x.Reserved9=9]="Reserved9",x[x.Reserved10=10]="Reserved10",x[x.Reserved11=11]="Reserved11",x[x.Reserved12=12]="Reserved12",x[x.Reserved13=13]="Reserved13",x[x.Reserved14=14]="Reserved14",x[x.Reserved15=15]="Reserved15",x))(Mi||{});var Ir=(i=>(i[i.Unspecified=0]="Unspecified",i[i.Native=1]="Native",i[i.Custom=2]="Custom",i))(Ir||{}),Ur=(v=>(v[v.FrontLeft=1]="FrontLeft",v[v.FrontRight=2]="FrontRight",v[v.FrontCenter=4]="FrontCenter",v[v.LowFrequency1=8]="LowFrequency1",v[v.BackLeft=16]="BackLeft",v[v.BackRight=32]="BackRight",v[v.FrontLeftCenter=64]="FrontLeftCenter",v[v.FrontRightCenter=128]="FrontRightCenter",v[v.BackCenter=256]="BackCenter",v[v.SideLeft=512]="SideLeft",v[v.SideRight=1024]="SideRight",v[v.TopCenter=2048]="TopCenter",v[v.TopFrontLeft=4096]="TopFrontLeft",v[v.TopFrontCenter=8192]="TopFrontCenter",v[v.TopFrontRight=16384]="TopFrontRight",v[v.TopBackLeft=32768]="TopBackLeft",v[v.TopBackCenter=65536]="TopBackCenter",v[v.TopBackRight=131072]="TopBackRight",v[v.LowFrequency2=262144]="LowFrequency2",v[v.TopSideLeft=524288]="TopSideLeft",v[v.TopSideRight=1048576]="TopSideRight",v[v.BottomFrontCenter=2097152]="BottomFrontCenter",v[v.BottomFrontLeft=4194304]="BottomFrontLeft",v[v.BottomFrontRight=8388608]="BottomFrontRight",v))(Ur||{}),Vr=(k=>(k[k.FrontLeft=0]="FrontLeft",k[k.FrontRight=1]="FrontRight",k[k.FrontCenter=2]="FrontCenter",k[k.LowFrequency1=3]="LowFrequency1",k[k.BackLeft=4]="BackLeft",k[k.BackRight=5]="BackRight",k[k.FrontLeftCenter=6]="FrontLeftCenter",k[k.FrontRightCenter=7]="FrontRightCenter",k[k.BackCenter=8]="BackCenter",k[k.SideLeft=9]="SideLeft",k[k.SideRight=10]="SideRight",k[k.TopCenter=11]="TopCenter",k[k.TopFrontLeft=12]="TopFrontLeft",k[k.TopFrontCenter=13]="TopFrontCenter",k[k.TopFrontRight=14]="TopFrontRight",k[k.TopBackLeft=15]="TopBackLeft",k[k.TopBackCenter=16]="TopBackCenter",k[k.TopBackRight=17]="TopBackRight",k[k.LowFrequency2=18]="LowFrequency2",k[k.TopSideLeft=19]="TopSideLeft",k[k.TopSideRight=20]="TopSideRight",k[k.BottomFrontCenter=21]="BottomFrontCenter",k[k.BottomFrontLeft=22]="BottomFrontLeft",k[k.BottomFrontRight=23]="BottomFrontRight",k[k.Unused=254]="Unused",k[k.Unknown=255]="Unknown",k))(Vr||{});function Mr(o){switch(o){case 0:return"SCE";case 1:return"CPE";case 2:return"CCE";case 3:return"LFE";case 4:return"DSE";case 5:return"PCE";case 6:return"FIL";case 7:return"END";default:return`unknown(${o})`}}function wr(o){let e=o.readBits(4),t=o.readBits(2),i=o.readBits(4),n=o.readBits(4),r=o.readBits(4),s=o.readBits(4),a=o.readBits(2),l=o.readBits(3),h=o.readBits(4);return`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${n} side=${r} back=${s} lfe=${a} assoc=${l} cc=${h}`}function En(o){let e=o.readBits(4),t=o.readBits(2),i=o.readBits(4),n=o.readBits(4),r=o.readBits(4),s=o.readBits(4),a=o.readBits(2),l=o.readBits(3),h=o.readBits(4);o.readBool()&&Te(o,4),o.readBool()&&Te(o,4),o.readBool()&&Te(o,3);let _=0,c=p=>{for(let u=0;u<p;u++){let y=o.readBool();Te(o,4),_+=y?2:1}};c(n),c(r),c(s);for(let p=0;p<a;p++)Te(o,4),_++;for(let p=0;p<l;p++)Te(o,4);for(let p=0;p<h;p++)Te(o,5);return{channelCount:_,description:`PCE instanceTag=${e} objectType=${t} samplingIndex=${i} front=${n} side=${r} back=${s} lfe=${a} assoc=${l} cc=${h}`}}function Cn(o){let e=new fe(o);try{Te(e,13);let t=e.readBool(),i=e.readBool();i&&Te(e,14);let n=e.readBool(),r=En(e);return se(j({},r),{description:`${r.description} frameLengthFlag=${Number(t)} dependsOnCoreCoder=${Number(i)} extensionFlag=${Number(n)}`})}catch(t){return null}finally{e.destroy()}}function Te(o,e){let t=e;for(;t>0;){let i=Math.min(t,32);o.readBits(i),t-=i}}function Rn(o){if(!o||o.byteLength===0)return"empty-payload";let e=new fe(o);try{let t=e.readBits(3),i=Mr(t);if(t===5)return`firstElement=${wr(e)}`;if(t!==6)return`firstElement=${i}`;let n=e.readBits(4);n===15&&(n+=e.readBits(8)-1);let r="",s="";if(n>0){let _=e.readBits(4),c=n*8-4;if(_===13)r=" SBR=EXT_SBR_DATA",Te(e,c);else if(_===14)r=" SBR=EXT_SBR_DATA_CRC",Te(e,c);else{let p=[],u=c;for(;u>=8;)p.push(e.readBits(8)),u-=8;u>0&&Te(e,u);let y=p.map(g=>g>=32&&g<=126?String.fromCharCode(g):".").join("");/[A-Za-z]{3}/.test(y)&&(s=` fillAscii="${y.trim()}"(encoder-padding)`)}}let a=e.readBits(3),l=Mr(a),h=a===1?`${l}(stereo-pair)`:a===0?`${l}(mono)`:a===3?`${l}(low-freq)`:l;return a===5?`firstElement=FIL fillBytes=${n}${r}${s} nextElement=${wr(e)}`:`firstElement=FIL fillBytes=${n}${r}${s} nextElement=${h}`}catch(t){return`probeError=${(t==null?void 0:t.message)||String(t)}`}finally{e.destroy()}}var Pr=(s=>(s[s.Unknown=0]="Unknown",s[s.Mp3=1]="Mp3",s[s.Aac=2]="Aac",s[s.Opus=3]="Opus",s[s.Flac=4]="Flac",s[s.Lpcm=5]="Lpcm",s))(Pr||{}),Yt={type:"audio",codecType:0,codec:"",originalCodec:"",aacChannelConfigWasInBand:!1,trackId:NaN,timescale:NaN,preSkipSamples:0,duration:NaN,audioSampleRate:NaN,inputSampleRate:NaN,outputGain:0,channelCount:NaN,bitsPerSample:NaN,littleEndian:!1,refFrameDuration:NaN},Zt=(s=>(s[s.Unknown=0]="Unknown",s[s.Avc=1]="Avc",s[s.Hevc=2]="Hevc",s[s.Vp8=3]="Vp8",s[s.Vp9=4]="Vp9",s[s.Av1=5]="Av1",s))(Zt||{}),Xt={type:"video",codecType:0,codec:"",trackId:NaN,timescale:NaN,duration:NaN,codecWidth:NaN,codecHeight:NaN,presentWidth:NaN,presentHeight:NaN,profile:"",level:"",bitDepth:NaN,chromaFormat:NaN,colorRange:NaN,colourPrimaries:NaN,transferCharacteristics:NaN,matrixCoefficients:NaN,sarRatio:{width:NaN,height:NaN},frameRate:{fixed:!1,fps:NaN,fps_num:NaN,fps_den:NaN},refFrameDuration:NaN};function kn(o,e){return o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3]}function Qt(o,e){return o.getInt8(e)<<16|o.getUint8(e+1)<<8|o.getUint8(e+2)}var C=class C{constructor(e,t,i){d(this,"_config");d(this,"_remuxer");d(this,"_onError",_e);d(this,"_onMediaInfo",_e);d(this,"_onScriptMetadata",_e);d(this,"_onScriptData",_e);d(this,"_onTrackMetadata",_e);d(this,"_onTrackData",_e);d(this,"_onVideoTracksDiscovered",$e);d(this,"_dataOffset");d(this,"_firstParse",!0);d(this,"_hasAudio");d(this,"_hasVideo");d(this,"_hasAudioFlagOverrided",!1);d(this,"_hasVideoFlagOverrided",!1);d(this,"_mediaInfo");d(this,"_scriptData");d(this,"_audioMetadata");d(this,"_videoMetadataByTrackId",new Map);d(this,"_naluLengthSize",4);d(this,"_timestampBase",0);d(this,"_timescale",1e3);d(this,"_duration",0);d(this,"_durationOverrided",!1);d(this,"_referenceFrameRate",{fixed:!0,fps:23.976,fps_num:23976,fps_den:1e3});d(this,"_videoTracksById",new Map);d(this,"_currentVideoTrackId");d(this,"_audioTrack",{type:"audio",id:2,sequenceNumber:0,frames:[],length:0});d(this,"_hasLoggedFirstAacPayloadProbe",!1);d(this,"_hasLoggedAacPceDetection",!1);d(this,"_hasLoggedAacSbrDetection",!1);d(this,"_hasObservedAacPce",!1);d(this,"_pendingAacMultichannelChannelCount");d(this,"_hasIgnoredAacMultichannelConfig",!1);d(this,"_aacPayloadProbeFrameIndex",0);this._config=t,this._remuxer=i,this._dataOffset=e.dataOffset,this._hasAudio=e.hasAudioTrack,this._hasVideo=e.hasVideoTrack,this._mediaInfo=new De,this._mediaInfo.hasAudio=e.hasAudioTrack,this._mediaInfo.hasVideo=e.hasVideoTrack}destroy(){this._onError=$e,this._onMediaInfo=$e,this._onScriptMetadata=$e,this._onScriptData=$e,this._onTrackMetadata=$e,this._onTrackData=$e,this._onVideoTracksDiscovered=$e,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=!1,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0}_probeAacPayload(e){if(!e||e.byteLength===0)return;this._aacPayloadProbeFrameIndex++;let t=Rn(e),i=Array.from(e.subarray(0,Math.min(8,e.byteLength))).map(s=>s.toString(16).padStart(2,"0")).join(" ");this._hasLoggedFirstAacPayloadProbe||(f.v(C.TAG,`First AAC CodedFrame: size=${e.byteLength} bytes[0..7]=${i} ${t}`),this._hasLoggedFirstAacPayloadProbe=!0);let n=t.includes("PCE"),r=t.includes("CPE(stereo-pair)");n&&(this._hasObservedAacPce=!0),!this._hasLoggedAacPceDetection&&n&&(f.v(C.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] contains visible ${t}`),this._hasLoggedAacPceDetection=!0),!this._hasLoggedAacSbrDetection&&t.includes("SBR=")&&(f.v(C.TAG,`AAC CodedFrame[${this._aacPayloadProbeFrameIndex}] backward-compatible SBR detected: ${t}`),this._hasLoggedAacSbrDetection=!0),n?this._applyPendingAacMultichannelConfig():r&&this._ignorePendingAacMultichannelConfig(t)}static probe(e){let t=new Uint8Array(e);if(t.byteLength<9)return{needMoreData:!0};let i={match:!1};if(t[0]!==70||t[1]!==76||t[2]!==86||t[3]!==1)return i;let n=(t[4]&4)>>>2!==0,r=(t[4]&1)!==0,s=kn(t,5);return s<9?i:{match:!0,consumed:s,dataOffset:s,hasAudioTrack:n,hasVideoTrack:r}}bindDataSource(e){return e.onDataArrival=this.parseChunks.bind(this),this}get onTrackMetadata(){return this._onTrackMetadata}set onTrackMetadata(e){this._onTrackMetadata=e}get onMediaInfo(){return this._onMediaInfo}set onMediaInfo(e){this._onMediaInfo=e}get onScriptMetadata(){return this._onScriptMetadata}set onScriptMetadata(e){this._onScriptMetadata=e}get onScriptData(){return this._onScriptData}set onScriptData(e){this._onScriptData=e}get onError(){return this._onError}set onError(e){this._onError=e}get onTrackData(){return this._onTrackData}set onTrackData(e){this._onTrackData=e}get onVideoTracksDiscovered(){return this._onVideoTracksDiscovered}set onVideoTracksDiscovered(e){this._onVideoTracksDiscovered=e}get timestampBase(){return this._timestampBase}set timestampBase(e){this._timestampBase=e}get overridedDuration(){return this._duration}set overridedDuration(e){this._durationOverrided=!0,this._duration=e,this._mediaInfo.duration=e}set overridedHasAudio(e){this._hasAudioFlagOverrided=!0,this._hasAudio=e,this._mediaInfo.hasAudio=e}set overridedHasVideo(e){this._hasVideoFlagOverrided=!0,this._hasVideo=e,this._mediaInfo.hasVideo=e}resetMediaInfo(){this._mediaInfo=new De}_getOrCreateVideoTrack(e){return this._videoTracksById.has(e)||this._videoTracksById.set(e,{type:"video",id:e,sequenceNumber:0,frames:[],length:0}),this._videoTracksById.get(e)}_getDefaultVideoTrack(){if(this._videoTracksById.has(0))return this._videoTracksById.get(0);if(this._videoTracksById.size>0){let e=Math.min(...this._videoTracksById.keys());return this._videoTracksById.get(e)}return this._getOrCreateVideoTrack(0)}_getCurrentVideoTrack(){return this._currentVideoTrackId!==void 0?this._getOrCreateVideoTrack(this._currentVideoTrackId):{type:"video",id:-1,sequenceNumber:0,frames:[],length:0}}_flushPendingTrackDataBeforeMetadataRefresh(){let e=this._getCurrentVideoTrack();this._audioTrack.frames.length===0&&e.frames.length===0||this._onTrackData(this._audioTrack,e)}_dispatchVideoTrackMetadata(e){this._currentVideoTrackId===void 0&&(this._currentVideoTrackId=e.trackId),e.trackId===this._currentVideoTrackId&&(this._remuxer.isVideoMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(e)),this._onVideoTracksDiscovered([...this._videoMetadataByTrackId.values()])}parseChunks(e,t){let i=0;if(t===0)if(e.byteLength>13){let n=C.probe(e);if("match"in n&&n.match===!0)i=n.dataOffset,this._hasAudio=n.hasAudioTrack&&this._hasAudio,this._hasVideo=n.hasVideoTrack&&this._hasVideo;else return 0}else return 0;for(this._firstParse&&(this._firstParse=!1,t+i!==this._dataOffset&&f.w(C.TAG,"First time parsing but chunk byteStart invalid!"),new DataView(e,i).getUint32(0,!1)!==0&&f.w(C.TAG,"PrevTagSize0 !== 0 !!!"),i+=4);i<e.byteLength;){let n=new DataView(e,i);if(i+11+4>e.byteLength)break;let r=n.getUint8(0),s=n.getUint32(0,!1)&16777215;if(i+11+s+4>e.byteLength)break;if(r!==8&&r!==9&&r!==18){f.w(C.TAG,`Unsupported tag type ${r}, skipped`),i+=11+s+4;continue}let a=n.getUint8(4),l=n.getUint8(5),h=n.getUint8(6),_=n.getUint8(7),c=h|l<<8|a<<16|_<<24;(n.getUint32(7,!1)&16777215)!==0&&f.w(C.TAG,"Meet tag which has StreamID != 0!");let u=i+11;switch(r){case 8:this._hasAudio&&this._parseAudioData(e,u,s,c);break;case 9:this._hasVideo&&this._parseVideoData(e,u,s,c,t+i);break;case 18:this._parseScriptData(e,u,s);break}let y=n.getUint32(11+s,!1);y!==11+s&&f.w(C.TAG,`Invalid PrevTagSize ${y}`),i+=11+s+4}return this._onTrackData(this._audioTrack,this._getCurrentVideoTrack()),i}_parseScriptData(e,t,i){let n=Lr.parseScriptData(e,t,i);if(n.hasOwnProperty("onMetaData")){if(n.onMetaData==null||typeof n.onMetaData!="object"){f.w(C.TAG,"Invalid onMetaData structure!");return}this._scriptData&&f.w(C.TAG,"Found another onMetaData tag!"),this._scriptData=n;let r=this._scriptData.onMetaData;if(this._onScriptMetadata&&this._onScriptMetadata(Object.assign({},r)),typeof r.hasAudio=="boolean"&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=r.hasAudio,this._mediaInfo.hasAudio=this._hasAudio),typeof r.hasVideo=="boolean"&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=r.hasVideo,this._mediaInfo.hasVideo=this._hasVideo),typeof r.audiodatarate=="number"&&(this._mediaInfo.audioDataRate=r.audiodatarate),typeof r.videodatarate=="number"&&(this._mediaInfo.videoDataRate=r.videodatarate),typeof r.width=="number"&&(this._mediaInfo.width=r.width),typeof r.height=="number"&&(this._mediaInfo.height=r.height),typeof r.duration=="number"){if(!this._durationOverrided){let s=Math.floor(r.duration*this._timescale);this._duration=s,this._mediaInfo.duration=s}}else this._mediaInfo.duration=0;if(typeof r.framerate=="number"){let s=Math.floor(r.framerate*1e3);if(s>0){let a=s/1e3;this._referenceFrameRate.fixed=!0,this._referenceFrameRate.fps=a,this._referenceFrameRate.fps_num=s,this._referenceFrameRate.fps_den=1e3,this._mediaInfo.fps=a}}if(typeof r.keyframes=="object"){this._mediaInfo.hasKeyframesIndex=!0;let s=r.keyframes;this._mediaInfo.keyframesIndex=this._parseKeyframesIndex(s),r.keyframes=null}else this._mediaInfo.hasKeyframesIndex=!1;this._mediaInfo.metadata=r,f.v(C.TAG,"Parsed flv.onMetaData"),this._mediaInfo.isComplete()&&this._onMediaInfo(this._mediaInfo)}Object.keys(n).length>0&&this._onScriptData&&this._onScriptData(Object.assign({},n))}_parseKeyframesIndex(e){let t=[],i=[];for(let n=1;n<e.times.length;n++){let r=this._timestampBase+Math.floor(e.times[n]*1e3);t.push(r),i.push(e.filepositions[n])}return{times:t,filepositions:i}}_parseAudioData(e,t,i,n){var g;(g=this.__audioMessageCount)!=null||(this.__audioMessageCount=0);let r=++this.__audioMessageCount;if(i<=1){f.w(C.TAG,"Flv: Invalid audio packet, missing SoundData payload!");return}if(this._hasAudioFlagOverrided===!0&&this._hasAudio===!1)return;let a=new DataView(e,t,i).getUint8(0),l=a>>>4;if(l===9){if(i<=5){f.w(C.TAG,"Flv: Invalid audio packet, missing AudioFourCC in Ehnanced FLV payload!");return}let x=a&15,b=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));switch(b){case"Opus":this._parseEnhancedOpusAudioPacket(e,t+5,i-5,n,x);break;case"fLaC":this._parseEnhancedFlacAudioPacket(e,t+5,i-5,n,x);break;case"mp4a":this._parseEnhancedAACAudioPacket(e,t+5,i-5,n,x);break;default:this._onError(q.CODEC_UNSUPPORTED,`${C.TAG}._parseAudioData() - Unsupported FOURCC ${b}`)}return}if(l!==2&&l!==3&&l!==10){this._onError(q.CODEC_UNSUPPORTED,"Flv: Unsupported audio codec idx: "+l);return}let h=0,_=(a&12)>>>2;if(_>=0&&_<=4)h=C._flvSoundRateTable[_];else{this._onError(q.FORMAT_ERROR,"Flv: Invalid audio sample rate idx: "+_);return}let c=(a&2)>>>1,p=a&1,u=this._audioMetadata,y=this._audioTrack;if(u||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),u=this._audioMetadata=se(j({},Yt),{type:"audio",trackId:y.id,timescale:this._timescale,duration:this._duration,audioSampleRate:h,channelCount:p===0?1:2})),l===10){u.codecType=2;let x=this._parseAACAudioData(e,t+1,i-1);if(x==null)return;if(x.packetType===0){let b=x.data;if(u.codecConfig){if(ke(b.config,u.codecConfig))return;f.w(C.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}u.audioSampleRate=b.samplingRate,u.channelCount=b.channelCount,u.codec=b.codec,u.originalCodec=b.originalCodec,u.codecConfig=b.config,u.aacChannelConfigWasInBand=b.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=b.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,u.refFrameDuration=1024/u.audioSampleRate*u.timescale,f.v(C.TAG,"Parsed AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(f.v(C.TAG,"Dispatching regular AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),f.v(C.TAG,`Dispatching regular AAC track metadata codec=${u.codec} channels=${u.channelCount} sampleRate=${u.audioSampleRate}`),this._onTrackMetadata(u);let S=this._mediaInfo;S.audioCodec=u.originalCodec,S.audioSampleRate=u.audioSampleRate,S.audioChannelCount=u.channelCount,S.hasVideo?S.videoCodec!=null&&(S.mimeType='video/x-flv; codecs="'+S.videoCodec+","+S.audioCodec+'"'):S.mimeType='video/x-flv; codecs="'+S.audioCodec+'"',S.isComplete()&&(f.v(C.TAG,`Dispatching regular AAC media info codec=${S.audioCodec} channels=${S.audioChannelCount} mimeType=${S.mimeType}`),this._onMediaInfo(S))}else if(x.packetType===1){let b=x.data;this._probeAacPayload(b);let S=this._timestampBase+n,A={unit:b,length:b.byteLength,dts:S,pts:S};y.frames.push(A),y.length+=b.length}else f.e(C.TAG,`Flv: Unsupported AAC data type ${x.packetType}`)}else if(l===2){if(u.codecType=1,!u.codec){let A=this._parseMP3AudioData(e,t+1,i-1,!0);if(A==null)return;u.audioSampleRate=A.samplingRate,u.channelCount=A.channelCount,u.codec=A.codec,u.originalCodec=A.originalCodec,u.refFrameDuration=1152/u.audioSampleRate*u.timescale,f.v(C.TAG,"Parsed MPEG Audio Frame Header"),this._onTrackMetadata(u);let T=this._mediaInfo;T.audioCodec=u.codec,T.audioSampleRate=u.audioSampleRate,T.audioChannelCount=u.channelCount,T.audioDataRate=A.bitRate,T.hasVideo?T.videoCodec!=null&&(T.mimeType='video/x-flv; codecs="'+T.videoCodec+","+T.audioCodec+'"'):T.mimeType='video/x-flv; codecs="'+T.audioCodec+'"',T.isComplete()&&this._onMediaInfo(T)}let x=this._parseMP3AudioData(e,t+1,i-1,!1);if(x==null)return;let b=this._timestampBase+n,S={unit:x,length:x.byteLength,dts:b,pts:b};y.frames.push(S),y.length+=x.length}else if(l===3){if(u.codecType=5,!u.codec){u.audioSampleRate=h,u.bitsPerSample=(c+1)*8,u.littleEndian=!0,u.codec="ipcm",u.originalCodec="ipcm",this._onTrackMetadata(u);let A=this._mediaInfo;A.audioCodec=u.codec,A.audioSampleRate=u.audioSampleRate,A.audioChannelCount=u.channelCount,A.audioDataRate=u.bitsPerSample*u.audioSampleRate,A.hasVideo?A.videoCodec!=null&&(A.mimeType='video/x-flv; codecs="'+A.videoCodec+","+A.audioCodec+'"'):A.mimeType='video/x-flv; codecs="'+A.audioCodec+'"',A.isComplete()&&this._onMediaInfo(A)}let x=new Uint8Array(e,t+1,i-1),b=this._timestampBase+n,S={unit:x,length:x.byteLength,dts:b,pts:b};y.frames.push(S),y.length+=x.length}}_parseAACAudioData(e,t,i){if(i<=1){f.w(C.TAG,"Flv: Invalid AAC packet, missing AACPacketType or/and Data!");return}let n=new Uint8Array(e,t,i),r=n[0];if(r===0){let s=this._parseAACAudioSpecificConfig(e,t+1,i-1);return s===void 0?void 0:{packetType:0,data:s}}else return{packetType:r,data:n.subarray(1)}}_parseAACAudioSpecificConfig(e,t,i){let n=new Uint8Array(e,t,i),r=n[0]>>>3,s=(n[0]&7)<<1|n[1]>>>7;if(s>=Be.length){this._onError(q.FORMAT_ERROR,"Flv: AAC invalid sampling frequency index!");return}let a=Be[s],l=[0,1,2,3,4,5,6,8],h=(n[1]&120)>>>3;if(h<0||h>=l.length){this._onError(q.FORMAT_ERROR,"Flv: AAC invalid channel configuration");return}if(h===0){let c=Cn(n);return c&&c.channelCount>0?(f.w(C.TAG,`PCE_CONFIRMED: AAC sequence header contains Program Config Element; ${c.description}; channelCount=${c.channelCount}; ascBytes=${n.length}; asc=${Sn(n)}`),{config:Uint8Array.from(n),samplingRate:a,channelCount:c.channelCount,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!0}):(f.w(C.TAG,"Flv: AAC channel config 0 (in-band) detected, synthesising clean stereo AudioSpecificConfig"),{config:new Uint8Array([r<<3|(s&14)>>>1,(s&1)<<7|16]),samplingRate:a,channelCount:2,codec:"mp4a.40."+r,originalCodec:"mp4a.40."+r,channelConfigWasInBand:!0,channelConfigHasPce:!1})}let _=new ot(new at(new Uint8Array(e,t,i)));return{config:Uint8Array.from(_.config),samplingRate:_.sampling_rate,channelCount:_.channel_count,codec:_.codec_mimetype,originalCodec:_.original_codec_mimetype,channelConfigWasInBand:!1,channelConfigHasPce:!1}}_parseMP3AudioData(e,t,i,n){if(i<4){f.w(C.TAG,"Flv: Invalid MP3 packet, header missing!");return}let r=new Uint8Array(e,t,i),s=null;if(n){if(r[0]!==255)return;let a=r[1]>>>3&3,l=(r[1]&6)>>1,h=(r[2]&240)>>>4,_=(r[2]&12)>>>2,p=(r[3]>>>6&3)!==3?2:1,u=0,y=0,g=34,x="mp3";switch(a){case 0:u=C._mpegAudioV25SampleRateTable[_];break;case 2:u=C._mpegAudioV20SampleRateTable[_];break;case 3:u=C._mpegAudioV10SampleRateTable[_];break}switch(l){case 1:g=34,h<C._mpegAudioL3BitRateTable.length&&(y=C._mpegAudioL3BitRateTable[h]);break;case 2:g=33,h<C._mpegAudioL2BitRateTable.length&&(y=C._mpegAudioL2BitRateTable[h]);break;case 3:g=32,h<C._mpegAudioL1BitRateTable.length&&(y=C._mpegAudioL1BitRateTable[h]);break}s={bitRate:y,samplingRate:u,channelCount:p,codec:x,originalCodec:x}}else s=r;return s}_parseMultichannelConfig(e,t,i){var h,_;let n=f.scope(C.TAG,"_parseMultichannelConfig()");if(i<2){n.w(`payload too short (${i} bytes), ignoring`);return}let r=new DataView(e,t,i),s=r.getUint8(0),a=r.getUint8(1);if(s===1&&i<6){n.w(`Native order requires 6 bytes, got ${i}, ignoring`);return}if(s===2&&i<2+a){n.w(`Custom mapping requires ${2+a} bytes, got ${i}, ignoring`);return}let l=(h=Ir[s])!=null?h:String(s);if(n.v(`audioChannelOrder=${l} channelCount=${a}`),s===1){let c=r.getUint32(2,!1),p=[];for(let[u,y]of Object.entries(Ur))typeof y=="number"&&(c&y)!==0&&p.push(u);n.v(`Native audioChannelFlags=0x${c.toString(16).padStart(6,"0")} channels=[${p.join(", ")}]`)}else if(s===2){let c=[];for(let p=0;p<a;p++){let u=r.getUint8(2+p);c.push(`ch${p}=${(_=Vr[u])!=null?_:`0x${u.toString(16)}`}`)}n.v(`Custom mapping=[${c.join(", ")}]`)}this._handleAacMultichannelConfig(a,n)}_handleAacMultichannelConfig(e,t){var s,a,l,h;let i=this._audioMetadata;if(!i||e<=0){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${(s=i==null?void 0:i.channelCount)!=null?s:"undefined"}`);return}if(i.codecType!==2||!i.codecConfig||i.codecConfig.length<2){t.v(`ignoring MultichannelConfig channelCount=${e}, codecType=${(a=Pr[i.codecType])!=null?a:i.codecType} codecConfigLength=${(h=(l=i.codecConfig)==null?void 0:l.length)!=null?h:0}`);return}let n=(i.codecConfig[1]&120)>>>3,r=i.aacChannelConfigWasInBand;if(i.channelCount===e){t.v(`ignoring MultichannelConfig channelCount=${e}, current channelCount=${i.channelCount} channelConfig=${n} channelConfigWasInBand=${r}`);return}if(r&&e>2){let _=i.codecConfig[0]>>>3;if(_===29){t.v(`channelConfig=0 + audioObjectType=${Rt[_]}(${_}) = HE-AAC v2 PS, ignoring MultichannelConfig channelCount=${e}, keeping channelCount=${i.channelCount}`);return}if(!this._hasObservedAacPce){if(this._hasIgnoredAacMultichannelConfig){t.v(`channelConfig=0 + stereo AAC evidence without PCE, treating MultichannelConfig channelCount=${e} as advisory, keeping channelCount=${i.channelCount}`);return}this._pendingAacMultichannelChannelCount=e,t.v(`channelConfig=0 + audioObjectType=${Rt[_]}(${_}), deferring MultichannelConfig channelCount=${e} until AAC PCE is observed`);return}t.v(`original channelConfig=0 + observed AAC PCE, honouring MultichannelConfig channelCount=${e}`)}this._rewriteAacChannelConfig(e,n,t),this._pendingAacMultichannelChannelCount=void 0,i.channelCount=e,this._mediaInfo.audioChannelCount=e,t.v(`updated audioMetadata.channelCount \u2192 ${e}, re-dispatching metadata`),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(i)}_rewriteAacChannelConfig(e,t,i){let n=this._audioMetadata;if(!(n!=null&&n.codecConfig))return;let s=[0,1,2,3,4,5,6,8].indexOf(e);if(s>0){let a=Uint8Array.from(n.codecConfig);a[1]=a[1]&135|(s&15)<<3,n.codecConfig=a,i.v(`updated AAC AudioSpecificConfig channelConfig ${t}\u2192${s} for channelCount=${e}`)}else i.w(`channelCount=${e} has no standard AAC channelConfig mapping, AudioSpecificConfig unchanged`)}_ignorePendingAacMultichannelConfig(e){if(this._pendingAacMultichannelChannelCount===void 0||this._hasObservedAacPce||this._hasIgnoredAacMultichannelConfig)return;let t=this._audioMetadata;if(!(t!=null&&t.codecConfig)||t.codecType!==2||!t.aacChannelConfigWasInBand)return;let i=this._pendingAacMultichannelChannelCount;this._hasIgnoredAacMultichannelConfig=!0,f.scope(C.TAG,"_parseMultichannelConfig()").v(`stereo AAC payload without PCE (${e}), treating pending MultichannelConfig channelCount=${i} as advisory, keeping channelCount=${t.channelCount}`)}_applyPendingAacMultichannelConfig(){if(!this._hasObservedAacPce||this._pendingAacMultichannelChannelCount===void 0)return;let e=this._pendingAacMultichannelChannelCount;this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1;let t=f.scope(C.TAG,"_parseMultichannelConfig()");t.v(`observed AAC PCE, applying pending MultichannelConfig channelCount=${e}`),this._handleAacMultichannelConfig(e,t)}_parseEnhancedAACAudioPacket(e,t,i,n,r){var l;let s=this._audioMetadata,a=this._audioTrack;if(s||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),s=this._audioMetadata=se(j({},Yt),{type:"audio",trackId:a.id,timescale:this._timescale,duration:this._duration})),s.codecType=2,r===0){let h=this._parseAACAudioSpecificConfig(e,t,i);if(h==null)return;let _=new Uint8Array(h.config);if(s.codecConfig){if(ke(_,s.codecConfig))return;f.w(C.TAG,"AudioSpecificConfig has been changed, re-generate initialization segment")}s.audioSampleRate=h.samplingRate,s.channelCount=h.channelCount,s.codec=h.codec,s.originalCodec=h.originalCodec,s.codecConfig=_,s.aacChannelConfigWasInBand=h.channelConfigWasInBand,this._hasLoggedFirstAacPayloadProbe=!1,this._hasLoggedAacPceDetection=!1,this._hasLoggedAacSbrDetection=!1,this._hasObservedAacPce=h.channelConfigHasPce,this._pendingAacMultichannelChannelCount=void 0,this._hasIgnoredAacMultichannelConfig=!1,this._aacPayloadProbeFrameIndex=0,s.refFrameDuration=1024/s.audioSampleRate*s.timescale,f.v(C.TAG,"Parsed Enhanced FLV AAC AudioSpecificConfig"),this._remuxer.isAudioMetadataDispatched&&(f.v(C.TAG,"Dispatching enhanced AAC track data before metadata refresh"),this._flushPendingTrackDataBeforeMetadataRefresh()),f.v(C.TAG,`Dispatching enhanced AAC track metadata codec=${s.codec} channels=${s.channelCount} sampleRate=${s.audioSampleRate}`),this._onTrackMetadata(s);let c=this._mediaInfo;c.audioCodec=s.originalCodec,c.audioSampleRate=s.audioSampleRate,c.audioChannelCount=s.channelCount,c.hasVideo?c.videoCodec!=null&&(c.mimeType='video/x-flv; codecs="'+c.videoCodec+","+c.audioCodec+'"'):c.mimeType='video/x-flv; codecs="'+c.audioCodec+'"',c.isComplete()&&(f.v(C.TAG,`Dispatching enhanced AAC media info codec=${c.audioCodec} channels=${c.audioChannelCount} mimeType=${c.mimeType}`),this._onMediaInfo(c))}else if(r===1){let h=new Uint8Array(e,t,i);this._probeAacPayload(h);let _=this._timestampBase+n,c={unit:h,length:h.byteLength,dts:_,pts:_};a.frames.push(c),a.length+=h.length}else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{let h=(l=Mi[r])!=null?l:String(r);f.w(C.TAG,`_parseAACAudioPacket(): unsupported FlvAudioPacketType=${h} ts=${n} offset=${t} size=${i} action=drop`)}}_parseEnhancedOpusAudioPacket(e,t,i,n,r){var s;if(r===0)this._parseOpusSequenceHeader(e,t,i);else if(r===1)this._hasUsableOpusMetadata()||this._injectFallbackOpusSequenceHeader(n),this._parseOpusAudioData(e,t,i,n);else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{let a=(s=Mi[r])!=null?s:String(r);f.w(C.TAG,`_parseOpusAudioPacket(): unsupported FlvAudioPacketType=${a} ts=${n} offset=${t} size=${i} action=drop`)}}_hasUsableOpusMetadata(){var e;return((e=this._audioMetadata)==null?void 0:e.codecType)===3&&!!this._audioMetadata.codecConfig}_injectFallbackOpusSequenceHeader(e){let t=new Uint8Array([79,112,117,115,72,101,97,100,1,2,0,0,128,187,0,0,0,0,0]);f.w(C.TAG,`_parseOpusAudioPacket(): Opus CodedFrames received before SequenceStart ts=${e}; injecting fallback stereo OpusHead`),this._parseOpusSequenceHeader(t.buffer,t.byteOffset,t.byteLength)}_parseOpusSequenceHeader(e,t,i){if(i<19){f.e(C.TAG,"_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, lack of data!");return}let n=new Uint8Array(e,t,i),r=String.fromCharCode(...n.subarray(0,8));if(r!=="OpusHead"){f.e(C.TAG,`_parseOpusSequenceHeader(): Invalid OpusSequenceHeader, missing OpusHead (got "${r}")`);return}let s=new Uint8Array(e,t+8,i-8).slice(),a=new DataView(s.buffer),l=a.getUint8(1),h=a.getUint16(2,!0),_=a.getUint32(4,!0),c=a.getInt16(8,!0),p=a.getUint8(10);c>0&&f.w(C.TAG,"_parseOpusSequenceHeader(): outputGain within OpusSequenceHeader action=drop"),p!==0&&f.w(C.TAG,"_parseOpusSequenceHeader(): channel mapping within OpusSequenceHeader action=drop");let u=this._audioMetadata,y=this._audioTrack;if(u||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),u=this._audioMetadata=se(j({},Yt),{type:"audio",trackId:y.id,timescale:this._timescale,duration:this._duration})),u.codecType=3,u.codecConfig){if(ke(s,u.codecConfig))return;f.v(C.TAG,"_parseOpusSequenceHeader(): OpusSequenceHeader has been changed, re-generate initialization segment")}u.audioSampleRate=48e3,u.channelCount=l,u.codec="opus",u.originalCodec="opus",u.codecConfig=s,u.preSkipSamples=h,u.inputSampleRate=_,u.outputGain=c,u.refFrameDuration=960*u.timescale/48e3,f.v(C.TAG,"Parsed OpusSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(u);let g=this._mediaInfo;g.audioCodec=u.originalCodec,g.audioSampleRate=u.audioSampleRate,g.audioChannelCount=u.channelCount,g.hasVideo?g.videoCodec!=null&&(g.mimeType='video/x-flv; codecs="'+g.videoCodec+","+g.audioCodec+'"'):g.mimeType='video/x-flv; codecs="'+g.audioCodec+'"',g.isComplete()&&this._onMediaInfo(g)}_parseOpusAudioData(e,t,i,n){let r=this._audioTrack,s=new Uint8Array(e,t,i),a=this._timestampBase+n,l={unit:s,length:s.byteLength,dts:a,pts:a};r.frames.push(l),r.length+=s.length}_parseEnhancedFlacAudioPacket(e,t,i,n,r){if(r===0)this._parseFlacSequenceHeader(e,t,i);else if(r===1)this._parseFlacAudioData(e,t,i,n);else if(r!==2)if(r===4)this._parseMultichannelConfig(e,t,i);else{this._onError(q.FORMAT_ERROR,`${C.TAG}._parseFlacAudioPacket() - Unsupported FlvAudioPacketType ${r}`);return}}_parseFlacSequenceHeader(e,t,i){let n=this._audioMetadata,r=this._audioTrack;n||(this._hasAudio===!1&&this._hasAudioFlagOverrided===!1&&(this._hasAudio=!0,this._mediaInfo.hasAudio=!0),n=this._audioMetadata=se(j({},Yt),{type:"audio",trackId:r.id,timescale:this._timescale,duration:this._duration})),n.codecType=4;let s=new Uint8Array(e,t,i),a=new Uint8Array(i+4);a[0]=128,a[1]=0,a[2]=0,a[3]=i,a.set(s,4);let l=new fe(s),h=l.readBits(16),_=l.readBits(16),c=_===h?_:4096,p=l.readBits(24),u=l.readBits(24),y=l.readBits(20),g=l.readBits(3)+1,x=l.readBits(5)+1;l.destroy();let b={config:a,channelCount:g,samplingFrequence:y,bitsPerSample:x,codec:"flac",originalCodec:"flac"};if(n.codecConfig){if(ke(b.config,n.codecConfig))return;f.w(C.TAG,"FlacSequenceHeader has been changed, re-generate initialization segment")}n.audioSampleRate=b.samplingFrequence,n.channelCount=b.channelCount,n.bitsPerSample=b.bitsPerSample,n.codec=b.codec,n.originalCodec=b.originalCodec,n.codecConfig=b.config,n.refFrameDuration=c*1e3/b.samplingFrequence,f.v(C.TAG,"Parsed FlacSequenceHeader"),this._remuxer.isAudioMetadataDispatched&&this._flushPendingTrackDataBeforeMetadataRefresh(),this._onTrackMetadata(n);let S=this._mediaInfo;S.audioCodec=n.originalCodec,S.audioSampleRate=n.audioSampleRate,S.audioChannelCount=n.channelCount,S.hasVideo?S.videoCodec!=null&&(S.mimeType='video/x-flv; codecs="'+S.videoCodec+","+S.audioCodec+'"'):S.mimeType='video/x-flv; codecs="'+S.audioCodec+'"',S.isComplete()&&this._onMediaInfo(S)}_parseFlacAudioData(e,t,i,n){let r=this._audioTrack,s=new Uint8Array(e,t,i),a=this._timestampBase+n,l={unit:s,length:s.byteLength,dts:a,pts:a};r.frames.push(l),r.length+=s.length}_parseVideoData(e,t,i,n,r){if(i<=1){f.w(C.TAG,"Flv: Invalid video packet, missing VideoData payload!");return}if(this._hasVideoFlagOverrided===!0&&this._hasVideo===!1)return;let s=new Uint8Array(e,t,i)[0],a=(s&128)!==0,l=(s&112)>>>4;if(a){let h=s&15;if(h===6)this._parseMultitrackVideoPacket(e,t+1,i-1,n,r,l);else{let _=String.fromCharCode(...new Uint8Array(e,t,i).slice(1,5));if(_==="avc1")this._parseEnhancedAvcVideoPacket(e,t+5,i-5,n,r,l,h,this._getOrCreateVideoTrack(0));else if(_==="hvc1")this._parseEnhancedHevcVideoPacket(e,t+5,i-5,n,r,l,h,this._getOrCreateVideoTrack(0));else if(_==="av01")this._parseEnhancedAv1VideoPacket(e,t+5,i-5,n,r,l,h,this._getOrCreateVideoTrack(0));else if(_==="vp09")this._parseEnhancedVp9VideoPacket(e,t+5,i-5,n,r,l,h,this._getOrCreateVideoTrack(0));else{this._onError(q.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${_}`);return}}}else{let h=s&15;if(h===7)this._parseAVCVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else if(h===12)this._parseHEVCVideoPacket(e,t+1,i-1,n,r,l,this._getOrCreateVideoTrack(0));else{this._onError(q.CODEC_UNSUPPORTED,`Flv: Unsupported codec in video frame: ${h}`);return}}}_parseMultitrackVideoPacket(e,t,i,n,r,s){if(i<2){f.w(C.TAG,"Flv: Invalid multitrack video packet, too short");return}let a=new DataView(e,t,i),l=a.getUint8(0),h=l>>4&15,_=l&15;if(_===6){this._onError(q.FORMAT_ERROR,"Flv: Multitrack innerPacketType must not be Multitrack");return}let c=1,p=null;if(h!==2){if(i-c<4){f.w(C.TAG,"Flv: Invalid multitrack video packet, missing shared FOURCC");return}p=String.fromCharCode(...new Uint8Array(e,t+c,4)),c+=4}for(;c<i;){let u;if(h===2){if(i-c<4)break;u=String.fromCharCode(...new Uint8Array(e,t+c,4)),c+=4}else u=p;if(i-c<1)break;let y=a.getUint8(c);c+=1;let g;if(h===0)g=i-c;else{if(i-c<3)break;g=a.getUint8(c)<<16|a.getUint8(c+1)<<8|a.getUint8(c+2),c+=3}if(c+g>i){f.w(C.TAG,`Flv: Multitrack track payload overflows packet, trackId=${y}`);break}f.v(C.TAG,`Multitrack packet: trackId=${y}, fourcc=${u}, innerPacketType=${_}, payloadSize=${g}`);let x=this._getOrCreateVideoTrack(y),b=t+c,S=g;if(u==="avc1"?this._parseEnhancedAvcVideoPacket(e,b,S,n,r,s,_,x):u==="hvc1"?this._parseEnhancedHevcVideoPacket(e,b,S,n,r,s,_,x):u==="av01"?this._parseEnhancedAv1VideoPacket(e,b,S,n,r,s,_,x):u==="vp09"?this._parseEnhancedVp9VideoPacket(e,b,S,n,r,s,_,x):f.w(C.TAG,`Flv: Unsupported codec in multitrack video packet: ${u}, trackId=${y}, action=skip`),c+=g,h===0)break}}_parseAVCVideoPacket(e,t,i,n,r,s,a){if(i<4){f.w(C.TAG,"Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),h=l.getUint8(0),_=Qt(l,1);if(t+=4,i-=4,h===0)this._parseAvcConfig(e,t,i,a);else if(h===1)this._parseAvcVideoData(e,t,i,n,r,s,_,a);else if(h!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${h}`);return}}_parseHEVCVideoPacket(e,t,i,n,r,s,a){if(i<4){f.w(C.TAG,"Flv: Invalid HEVC packet, missing HEVCPacketType or/and CompositionTime");return}let l=new DataView(e,t,i),h=l.getUint8(0),_=Qt(l,1);if(t+=4,i-=4,h===0)this._parseHevcConfig(e,t,i,a);else if(h===1)this._parseHevcVideoData(e,t,i,n,r,s,_,a);else if(h!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${h}`);return}}_parseEnhancedHevcVideoPacket(e,t,i,n,r,s,a,l){let h=new DataView(e,t,i);if(a===0)this._parseHevcConfig(e,t,i,l);else if(a===1){if(i<3){f.w(C.TAG,"_parseEnhancedHevcVideoPacket(): Invalid HEVC packet, missing CompositionTime");return}let _=Qt(h,0);t+=3,i-=3,this._parseHevcVideoData(e,t,i,n,r,s,_,l)}else if(a===3)this._parseHevcVideoData(e,t,i,n,r,s,0,l);else if(a!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid video packet type ${a}`);return}}_parseEnhancedAvcVideoPacket(e,t,i,n,r,s,a,l){let h=new DataView(e,t,i);if(a===0)this._parseAvcConfig(e,t,i,l);else if(a===1){if(i<3){f.w(C.TAG,"_parseEnhancedAvcVideoPacket(): Invalid AVC packet, missing CompositionTime");return}let _=Qt(h,0);t+=3,i-=3,this._parseAvcVideoData(e,t,i,n,r,s,_,l)}else if(a===3)this._parseAvcVideoData(e,t,i,n,r,s,0,l);else if(a!==2){this._onError(q.FORMAT_ERROR,`Flv: Invalid AVC video packet type ${a}`);return}}_parseEnhancedAv1VideoPacket(e,t,i,n,r,s,a,l){let h=new DataView(e,t,i);switch(a){case 0:this._parseAv1Config(e,t,i,l);break;case 1:this._parseAv1VideoData(e,t,i,n,r,s,0,l);break;case 2:break;case 4:{f.w(C.TAG,`_parseEnhancedAV1VideoPacket(): unsupported AV1 video packet type ${a} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break}default:this._onError(q.FORMAT_ERROR,`Flv: invalid AV1 video packet type ${a}`);return}}_parseAvcConfig(e,t,i,n){if(i<7){f.w(C.TAG,"Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),s=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=se(j({},Xt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else if(typeof r.codecConfig!="undefined"){let y=new Uint8Array(e,t,i);if(ke(y,r.codecConfig))return;f.w(C.TAG,"AVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=1;let a=s.getUint8(0),l=s.getUint8(1),h=s.getUint8(2),_=s.getUint8(3);if(a!==1||l===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(s.getUint8(4)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(q.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let c=s.getUint8(5)&31;if(c===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No SPS");return}else c>1&&f.w(C.TAG,`Flv: Strange AVCDecoderConfigurationRecord: SPS Count = ${c}`);let p=6;for(let y=0;y<c;y++){let g=s.getUint16(p,!1);if(p+=2,g===0)continue;let x=new Uint8Array(e,t+p,g);p+=g;let b=$t.parseSPS(x);if(y!==0)continue;r.codecWidth=b.codec_size.width,r.codecHeight=b.codec_size.height,r.presentWidth=b.present_size.width,r.presentHeight=b.present_size.height,r.profile=b.profile_string,r.level=b.level_string,r.bitDepth=b.bit_depth,r.chromaFormat=b.chroma_format,r.sarRatio=b.sar_ratio,r.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let S=r.frameRate.fps_den,A=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(S/A);let T=x.subarray(1,4),P="avc1.";for(let B=0;B<3;B++){let v=T[B].toString(16);v.length<2&&(v="0"+v),P+=v}r.codec=P;let M=this._mediaInfo;M.width=r.codecWidth,M.height=r.codecHeight,M.fps=r.frameRate.fps,M.profile=r.profile,M.level=r.level,M.refFrames=b.ref_frames,M.chromaFormat=b.chroma_format_string,M.sarNum=r.sarRatio.width,M.sarDen=r.sarRatio.height,M.videoCodec=P,M.hasAudio?M.audioCodec!=null&&(M.mimeType='video/x-flv; codecs="'+M.videoCodec+","+M.audioCodec+'"'):M.mimeType='video/x-flv; codecs="'+M.videoCodec+'"',M.isComplete()&&this._onMediaInfo(M)}let u=s.getUint8(p);if(u===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid AVCDecoderConfigurationRecord: No PPS");return}else u>1&&f.w(C.TAG,`Flv: Strange AVCDecoderConfigurationRecord: PPS Count = ${u}`);p++;for(let y=0;y<u;y++){let g=s.getUint16(p,!1);p+=2,g!==0&&(p+=g)}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),f.v(C.TAG,"Parsed AVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseHevcConfig(e,t,i,n){if(i<22){f.w(C.TAG,"Flv: Invalid HEVCDecoderConfigurationRecord, lack of data!");return}let r=this._videoMetadataByTrackId.get(n.id),s=new DataView(e,t,i);if(!r)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=se(j({},Xt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else if(r.codecConfig){let _=new Uint8Array(e,t,i);if(ke(_,r.codecConfig))return;f.w(C.TAG,"HEVCDecoderConfigurationRecord has been changed, re-generate initialization segment")}r.codecType=2;let a=s.getUint8(0),l=s.getUint8(1)&31;if(a!==0&&a!==1||l===0){this._onError(q.FORMAT_ERROR,"Flv: Invalid HEVCDecoderConfigurationRecord");return}if(this._naluLengthSize=(s.getUint8(21)&3)+1,this._naluLengthSize!==3&&this._naluLengthSize!==4){this._onError(q.FORMAT_ERROR,`Flv: Strange NaluLengthSizeMinusOne: ${this._naluLengthSize-1}`);return}let h=s.getUint8(22);for(let _=0,c=23;_<h;_++){let p=s.getUint8(c+0)&63,u=s.getUint16(c+1,!1);c+=3;for(let y=0;y<u;y++){let g=s.getUint16(c+0,!1);if(y!==0){c+=2+g;continue}if(p===33){c+=2;let x=new Uint8Array(e,t+c,g),b=lt.parseSPS(x);r.codecWidth=b.codec_size.width,r.codecHeight=b.codec_size.height,r.presentWidth=b.present_size.width,r.presentHeight=b.present_size.height,r.profile=b.profile_string,r.level=b.level_string,r.bitDepth=b.bit_depth,r.chromaFormat=b.chroma_format,r.sarRatio=b.sar_ratio,r.frameRate=b.frame_rate,(b.frame_rate.fixed===!1||b.frame_rate.fps_num===0||b.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let S=r.frameRate.fps_den,A=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(S/A),r.codec=b.codec_mimetype;let T=this._mediaInfo;T.width=r.codecWidth,T.height=r.codecHeight,T.fps=r.frameRate.fps,T.profile=r.profile,T.level=r.level,T.refFrames=b.ref_frames,T.chromaFormat=b.chroma_format_string,T.sarNum=r.sarRatio.width,T.sarDen=r.sarRatio.height,T.videoCodec=b.codec_mimetype,T.hasAudio?T.audioCodec!=null&&(T.mimeType='video/x-flv; codecs="'+T.videoCodec+","+T.audioCodec+'"'):T.mimeType='video/x-flv; codecs="'+T.videoCodec+'"',T.isComplete()&&this._onMediaInfo(T),c+=g}else c+=2+g}}r.codecConfig=new Uint8Array(i),r.codecConfig.set(new Uint8Array(e,t,i),0),f.v(C.TAG,"Parsed HEVCDecoderConfigurationRecord"),this._dispatchVideoTrackMetadata(r)}_parseAv1Config(e,t,i,n){var x,b;if(i<4){f.w(C.TAG,"Flv: Invalid AV1CodecConfigurationRecord, lack of data!");return}let r,s=this._videoMetadataByTrackId.get(n.id),a=new DataView(e,t,i);if(!s)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),r=se(j({},Xt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,r);else{if(s.codecConfig){let S=new Uint8Array(e,t,i);if(ke(S,s.codecConfig))return;f.w(C.TAG,"AV1CodecConfigurationRecord has been changed, re-generate initialization segment")}r=s}r.codecType=5;let l=a.getUint8(0)&127,h=(a.getUint8(1)&224)>>5,_=(a.getUint8(1)&143)>>0,c=(a.getUint8(2)&128)>>7;if(l!==1){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}let p=Re.parseOBUs(new Uint8Array(e,t+4,i-4));if(!p){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1CodecConfigurationRecord");return}r.profile=p.profile_string,r.level=p.level_string,r.bitDepth=p.bit_depth,r.chromaFormat=p.chroma_format,r.frameRate=p.frame_rate,(p.frame_rate.fixed===!1||p.frame_rate.fps_num===0||p.frame_rate.fps_den===0)&&(r.frameRate=this._referenceFrameRate);let u=r.frameRate.fps_den,y=r.frameRate.fps_num;r.refFrameDuration=r.timescale*(u/y),r.codec=p.codec_mimetype,r.av1Extra=p;let g=this._mediaInfo;g.fps=r.frameRate.fps,g.profile=r.profile,g.level=r.level,g.refFrames=p.ref_frames,g.chromaFormat=p.chroma_format_string,g.videoCodec=p.codec_mimetype,r.codecWidth=(x=g.width)!=null?x:0,r.codecHeight=(b=g.height)!=null?b:0,g.hasAudio?g.audioCodec!=null&&(g.mimeType='video/x-flv; codecs="'+g.videoCodec+","+g.audioCodec+'"'):g.mimeType='video/x-flv; codecs="'+g.videoCodec+'"',g.isComplete()&&this._onMediaInfo(g),r.codecConfig=new Uint8Array(e,t,i).slice(),this._dispatchVideoTrackMetadata(r),f.v(C.TAG,`Parsed AV1 metadata: ${JSON.stringify(p)}`)}_parseAvcVideoData(e,t,i,n,r,s,a,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let h=new DataView(e,t,i),_=[],c=0,p=0,u=this._naluLengthSize,y=this._timestampBase+n,g=s===1;for(;p<i;){if(p+4>=i){f.w(C.TAG,`Malformed Nalu near timestamp ${y}, offset = ${p}, dataSize = ${i}`);break}let x=h.getUint32(p,!1);if(u===3&&(x>>>=8),x>i-u){f.w(C.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=h.getUint8(p+u)&31;b===5&&(g=!0);let S=new Uint8Array(e,t+p,u+x),A={type:b,data:S};_.push(A),c+=S.byteLength,p+=u+x}if(_.length){let x={units:_,length:c,isKeyframe:g,fileposition:r,dts:y,cts:a,pts:y+a};l.frames.push(x),l.length+=c}}_parseHevcVideoData(e,t,i,n,r,s,a,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let h=new DataView(e,t,i),_=[],c=0,p=0,u=this._naluLengthSize,y=this._timestampBase+n,g=s===1;for(;p<i;){if(p+4>=i){f.w(C.TAG,`Malformed Nalu near timestamp ${y}, offset = ${p}, dataSize = ${i}`);break}let x=h.getUint32(p,!1);if(u===3&&(x>>>=8),x>i-u){f.w(C.TAG,`Malformed Nalus near timestamp ${y}, NaluSize > DataSize!`);return}let b=h.getUint8(p+u)>>1&63;(b===19||b===20||b===21)&&(g=!0);let S=new Uint8Array(e,t+p,u+x),A={type:b,data:S};_.push(A),c+=S.byteLength,p+=u+x}if(_.length){let x={units:_,length:c,isKeyframe:g,fileposition:r,dts:y,cts:a,pts:y+a};l.frames.push(x),l.length+=c}}_parseAv1VideoData(e,t,i,n,r,s,a,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let h=[],_=0,c=this._timestampBase+n,p=s===1,u=new Uint8Array(e,t,i);if(p){let g=this._videoMetadataByTrackId.get(l.id);if(!g){this._onError(q.FORMAT_ERROR,"Flv: AV1 VideoData received before SequenceStart");return}let x=Re.parseOBUs(u,g.av1Extra);if(!x){this._onError(q.FORMAT_ERROR,"Flv: Invalid AV1 VideoData");return}g.codecWidth=x.codec_size.width,g.codecHeight=x.codec_size.height,g.presentWidth=x.present_size.width,g.presentHeight=x.present_size.height,g.sarRatio=x.sar_ratio;let b=this._mediaInfo;b.width=g.codecWidth,b.height=g.codecHeight,b.sarNum=g.sarRatio.width,b.sarDen=g.sarRatio.height}_=i,h.push({type:0,data:u});let y={units:h,length:_,isKeyframe:p,fileposition:r,dts:c,cts:a,pts:c+a,rawData:u};l.frames.push(y),l.length+=_}_parseEnhancedVp9VideoPacket(e,t,i,n,r,s,a,l){switch(a){case 0:this._parseVp9Config(e,t,i,l);break;case 1:this._parseVp9VideoData(e,t,i,n,r,s,0,l);break;case 2:break;case 4:f.w(C.TAG,`_parseEnhancedVP9VideoPacket(): unsupported VP9 video packet type ${a} (FlvVideoPacketType.Metadata) ts=${n} offset=${t} size=${i} action=drop`);break;default:this._onError(q.FORMAT_ERROR,`Flv: invalid VP9 video packet type ${a}`);return}}_parseVp9Config(e,t,i,n){var B,v;if(i<9){f.w(C.TAG,"_parseVp9Config(): Invalid VP9CodecConfigurationRecord, lack of data!");return}let r=new DataView(e,t,i),s,a=this._videoMetadataByTrackId.get(n.id);if(!a)this._hasVideo===!1&&this._hasVideoFlagOverrided===!1&&(this._hasVideo=!0,this._mediaInfo.hasVideo=!0),s=se(j({},Xt),{type:"video",trackId:n.id,timescale:this._timescale,duration:this._duration}),this._videoMetadataByTrackId.set(n.id,s);else{if(a.codecConfig){let w=new Uint8Array(e,t,i);if(ke(w,a.codecConfig))return;f.w(C.TAG,"_parseVp9Config(): VP9CodecConfigurationRecord has been changed, re-generate initialization segment")}s=a}s.codecType=4;let h=(r.getUint8(1)<<16|r.getUint8(2)<<8|r.getUint8(3))===0&&i>=12,_=h?4:1;if(!h&&i<9){f.w(C.TAG,"_parseVp9Config(): record too short");return}let c=r.getUint8(_),p=r.getUint8(_+1),u=(r.getUint8(_+2)&240)>>4,y=(r.getUint8(_+2)&14)>>1,g=r.getUint8(_+2)&1,x=r.getUint8(_+3),b=r.getUint8(_+4),S=2;if(i>=_+6&&(S=r.getUint8(_+5),i>=_+8)){let w=r.getUint16(_+6,!1);w!==0&&f.w(C.TAG,`_parseVp9Config(): Strange VP9CodecConfigurationRecord, codecInitializationDataSize = ${w}`)}s.profile=`${c}`,s.level=`${p}`,s.bitDepth=u,s.chromaFormat=y,s.colorRange=g,s.colourPrimaries=x,s.transferCharacteristics=b,s.matrixCoefficients=S,s.codec=`vp09.${`${c}`.padStart(2,"0")}.${`${p}`.padStart(2,"0")}.${`${u}`.padStart(2,"0")}`;let A=this._mediaInfo;A.fps=s.frameRate.fps,A.profile=s.profile,A.level=s.level,A.refFrames=3,A.chromaFormat=y===1?"4:2:0":s.chromaFormat===2?"4:2:2":s.chromaFormat===3?"4:4:4":"4:2:0",A.videoCodec=s.codec;let T=s.frameRate;(T.fixed===!1||Number.isNaN(T.fps_num)||Number.isNaN(T.fps_den)||Number.isNaN(T.fps))&&(s.frameRate=this._referenceFrameRate);let P=s.frameRate.fps_den,M=s.frameRate.fps_num;s.refFrameDuration=s.timescale*(P/M),s.codecWidth=(B=A.width)!=null?B:0,s.codecHeight=(v=A.height)!=null?v:0,A.hasAudio?A.audioCodec!=null&&(A.mimeType='video/x-flv; codecs="'+A.videoCodec+","+A.audioCodec+'"'):A.mimeType='video/x-flv; codecs="'+A.videoCodec+'"',A.isComplete()&&this._onMediaInfo(A),s.codecConfig=new Uint8Array(e,t,i).slice(),f.v(C.TAG,`VP9 codecConfig: ${Array.from(s.codecConfig).map(w=>w.toString(16).padStart(2,"0")).join(" ")}`),this._dispatchVideoTrackMetadata(s),f.v(C.TAG,`Parsed VP9 codec configuration record: profile=${s.profile} level=${s.level}`)}_parseVp9VideoData(e,t,i,n,r,s,a,l){if(this._currentVideoTrackId!==void 0&&l.id!==this._currentVideoTrackId)return;let h=0,_=[],c=this._timestampBase+n,p=s===1,u=dt.parseVp9Header(new Uint8Array(e,t,i));if(p&&u.isValid){let g=this._videoMetadataByTrackId.get(l.id);if(g){g.codecWidth=u.width,g.codecHeight=u.height,g.presentWidth=u.renderWidth,g.presentHeight=u.renderHeight,g.sarRatio={width:1,height:1};let x=this._mediaInfo;x.width=g.codecWidth,x.height=g.codecHeight,x.sarNum=g.sarRatio.width,x.sarDen=g.sarRatio.height,f.v(C.TAG,`VP9 keyframe dimensions: ${g.codecWidth}x${g.codecHeight}, render: ${g.presentWidth}x${g.presentHeight}`)}}h=i,_.push({type:p?0:1,data:new Uint8Array(e,t,i)});let y={units:_,length:h,isKeyframe:p,fileposition:r,dts:c,cts:a,pts:c+a,rawData:new Uint8Array(e,t,i)};l.frames.push(y),l.length+=h}};d(C,"TAG","FLVDemuxer"),d(C,"_flvSoundRateTable",[5500,11025,22050,44100,48e3]),d(C,"_mpegAudioV10SampleRateTable",[44100,48e3,32e3,0]),d(C,"_mpegAudioV20SampleRateTable",[22050,24e3,16e3,0]),d(C,"_mpegAudioV25SampleRateTable",[11025,12e3,8e3,0]),d(C,"_mpegAudioL1BitRateTable",[0,32,64,96,128,160,192,224,256,288,320,352,384,416,448,-1]),d(C,"_mpegAudioL2BitRateTable",[0,32,48,56,64,80,96,112,128,160,192,224,256,320,384,-1]),d(C,"_mpegAudioL3BitRateTable",[0,32,40,48,56,64,80,96,112,128,160,192,224,256,320,-1]);var wi=C,Or=wi;var Nr=new Uint8Array([48,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Tn=new Uint8Array([54,38,178,117,142,102,207,17,166,217,0,170,0,98,206,108]),Fn=new Uint8Array([145,7,220,183,183,169,207,17,142,230,0,192,12,32,83,101]),Ln=new Uint8Array([64,158,105,248,77,91,207,17,168,253,0,128,95,92,68,43]),Dn=new Uint8Array([192,239,25,188,77,91,207,17,168,253,0,128,95,92,68,43]),Bn=17444,Mn=17700,wn=28751,Ii={fixed:!1,fps:25,fps_num:25,fps_den:1},Ui=new Set([44,66,77,83,86,88,100,110,118,122,128,138,144,244]),In={44:"CAVLC 4:4:4",66:"Baseline",77:"Main",83:"Scalable Baseline",86:"Scalable High",88:"Extended",100:"High",110:"High 10",118:"Multiview High",122:"High 4:2:2",128:"Stereo High",138:"Multiview Depth High",144:"High 4:4:4",244:"High 4:4:4 Predictive"},Un={HEVC:"hevc",AV01:"av1",VP90:"vp9"},Vn=new Set([19,20,21]),X={u16:(o,e)=>o[e]|o[e+1]<<8,u32:(o,e)=>(o[e]|o[e+1]<<8|o[e+2]<<16|o[e+3]<<24)>>>0,u64:(o,e)=>X.u32(o,e+4)*4294967296+X.u32(o,e)},_t={u16:(o,e)=>o[e]<<8|o[e+1],u32:(o,e)=>(o[e]<<24|o[e+1]<<16|o[e+2]<<8|o[e+3])>>>0},ht=(o,e,t)=>{if(e+16>o.length)return!1;for(let i=0;i<16;i++)if(o[e+i]!==t[i])return!1;return!0},Pn=o=>{let e=o.length;for(;e>0&&o[e-1]===0;)e--;return e===o.length?o:o.subarray(0,e)},On=o=>String.fromCharCode(o&255,o>>8&255,o>>16&255,o>>24&255).toUpperCase().trim(),Hr=(o,e,t)=>{let i=e>=0&&e<Be.length?e:4;return new Uint8Array([o<<3|(i&14)>>1,(i&1)<<7|Math.max(0,Math.min(t,15))<<3])},Nn=[[1,1],[1,1],[1,0],[0,0]];function $r(o){var n,r,s,a,l,h,_;if(!((n=o.sequence_header_data)!=null&&n.length))return null;let e=(s=Nn[(r=o.chroma_format)!=null?r:1])!=null?s:[1,1],t=(a=o.bit_depth)!=null?a:8,i=new Uint8Array(4+o.sequence_header_data.length);return i[0]=129,i[1]=((l=o.profile_idc)!=null?l:0)<<5|((h=o.level)!=null?h:0)&31,i[2]=((_=o.tier)!=null?_:0)<<7|(t>8?1:0)<<6|(t===12?1:0)<<5|(o.chroma_format===0?1:0)<<4|e[0]<<3|e[1]<<2,i.set(o.sequence_header_data,4),i}function Hn(o){let e=new Uint8Array(12);return e[0]=1,e[4]=o,e[5]=31,e[6]=130,e[7]=e[8]=e[9]=1,e}function $n(o,e,t){if(o&&o.length>=19&&String.fromCharCode(...o.subarray(0,8))==="OpusHead")return o.subarray(8).slice();let i=new Uint8Array(19);return i.set([79,112,117,115,72,101,97,100,1,e||2]),new DataView(i.buffer).setUint32(12,t||48e3,!0),i.subarray(8)}var Gr=(o=0)=>({type:"audio",id:2,sequenceNumber:o,frames:[],length:0}),Vi=(o=0)=>({type:"video",id:1,sequenceNumber:o,frames:[],length:0}),ct=class extends Or{constructor(t,i,n){super(t,i,n);d(this,"_asfMediaInfo");d(this,"_streams");d(this,"_stash");d(this,"_headerParsed");d(this,"_dataObjectParsed");d(this,"_asfAudioTrack");d(this,"_videoTrack");d(this,"_asfHasAudio",!0);d(this,"_asfHasVideo",!0);d(this,"_hasVideoMetaSent");d(this,"_hasAudioMetaSent");d(this,"_headerVideoWidth");d(this,"_headerVideoHeight");d(this,"_nalHeaders");d(this,"_headerAv1c");d(this,"_headerVp9c");d(this,"_headerAudioConfig");d(this,"_headerAudioChannels");d(this,"_headerAudioSampleRate");d(this,"_baseTimestamp");d(this,"_asfTimestampBase",0);d(this,"_asfDuration",0);d(this,"_hasReceivedFirstKeyframe");d(this,"_audioNextDts");d(this,"_lastAudioDts");d(this,"_audioFrameDuration");d(this,"_firstVideoPts");d(this,"_lastVideoPts");d(this,"_isAVCC");d(this,"_videoCodec");d(this,"_audioCodec");d(this,"_sentVideoConfig");d(this,"_audioBuffer");d(this,"_videoBuffer");this._initProperties(),this._asfHasAudio=t.hasAudioTrack,this._asfHasVideo=t.hasVideoTrack}_initProperties(){this._asfMediaInfo=new De,this._streams=new Array(128).fill(null),this._stash=null,this._headerParsed=this._dataObjectParsed=!1,this._asfAudioTrack=Gr(),this._videoTrack=Vi(),this._hasVideoMetaSent=this._hasAudioMetaSent=!1,this._headerVideoWidth=this._headerVideoHeight=0,this._nalHeaders={vps:null,sps:null,pps:null},this._headerAv1c=this._headerVp9c=this._headerAudioConfig=null,this._headerAudioChannels=this._headerAudioSampleRate=0,this._baseTimestamp=null,this._asfTimestampBase=this._asfDuration=0,this._hasReceivedFirstKeyframe=!1,this._audioNextDts=this._lastAudioDts=null,this._audioFrameDuration=1024/44100*1e3,this._firstVideoPts=this._lastVideoPts=null,this._isAVCC=this._videoCodec=this._audioCodec=null,this._sentVideoConfig={},this._audioBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0},this._videoBuffer={mediaObjectNumber:null,totalSize:0,currentSize:0,chunks:[],pts:0,packetTimestamp:0,keyframe:!1,streamPosition:0}}destroy(){super.destroy(),this._initProperties()}bindDataSource(t){return t.onDataArrival=this.parseChunks.bind(this),this}resetMediaInfo(){this._asfMediaInfo=new De}get timestampBase(){return this._asfTimestampBase}set timestampBase(t){this._asfTimestampBase=t}get overridedDuration(){return this._asfDuration}set overridedDuration(t){this._asfDuration=t,this._asfMediaInfo.duration=t}set overridedHasAudio(t){this._asfHasAudio=t,this._asfMediaInfo.hasAudio=t}set overridedHasVideo(t){this._asfHasVideo=t,this._asfMediaInfo.hasVideo=t}get onTrackMetadata(){return super.onTrackMetadata}set onTrackMetadata(t){super.onTrackMetadata=t,this._nalHeaders.sps&&this._nalHeaders.pps&&this._sendVideoMetadataFromHeader(!0),this._headerAudioConfig&&(this._hasAudioMetaSent=!1,this._sendAudioMetadataFromHeader())}get onMediaInfo(){return super.onMediaInfo}set onMediaInfo(t){super.onMediaInfo=t,(!this._asfHasAudio||this._hasAudioMetaSent)&&(!this._asfHasVideo||this._hasVideoMetaSent)&&this._maybeEmitMediaInfo()}static probe(t){let i=new Uint8Array(t);return i.byteLength<28?{needMoreData:!0}:ht(i,12,Nr)?{match:!0,consumed:12,dataOffset:12,hasAudioTrack:!0,hasVideoTrack:!0}:{match:!1}}parseChunks(t,i){var h,_;let n=new Uint8Array(t),r=(_=(h=this._stash)==null?void 0:h.length)!=null?_:0,s=n;r>0&&(s=new Uint8Array(r+n.length),s.set(this._stash,0),s.set(n,r),this._stash=null);let a=0;if(!this._headerParsed){let c=this._parseHeader(s);if(c<0)return this._stash=s.slice(),t.byteLength;a=c,this._headerParsed=!0,this._sendAudioMetadataFromHeader()}if(!this._dataObjectParsed){if(a+50>s.length||!ht(s,a,Tn))return this._stash=s.slice(a),t.byteLength;if(X.u64(s,a+16)<50)return this._stash=s.slice(a),t.byteLength;a+=50,this._dataObjectParsed=!0}let l=i-r;for(;a+4<=s.length;){let c=X.u16(s,a),p=X.u16(s,a+2);if(c===Mn){a=s.length;break}if(c!==Bn||p<=0||a+4+p>s.length)break;let u=this._parsePacket(s,a,l);if(u<=a||u>s.length)break;a=u}return this._stash=a<s.length?s.slice(a):null,this._emitTrackData(),t.byteLength}_emitTrackData(){this._asfHasVideo&&!this._hasVideoMetaSent?this.onTrackData(Gr(this._asfAudioTrack.sequenceNumber),Vi(this._videoTrack.sequenceNumber)):this._hasVideoMetaSent||this._videoTrack.frames.length===0?this.onTrackData(this._asfAudioTrack,this._videoTrack):this.onTrackData(this._asfAudioTrack,Vi(this._videoTrack.sequenceNumber))}_readVar(t,i,n,r){let s=(n&3)===3?4:n&3;if(i.offset+s>t.length)return i.error=!0,r;if(s===0)return r;let a=s===1?t[i.offset]:s===2?X.u16(t,i.offset):X.u32(t,i.offset);return i.offset+=s,a}_parseHeader(t){var s;if(t.length<64||!ht(t,12,Nr))return-1;let i=28,n=X.u64(t,i);if(n<30||12+n>t.length)return-1;i+=8;let r=X.u32(t,i);i+=6;for(let a=0;a<r;a++){if(i+24>t.length)return-1;let l=i+X.u64(t,i+16);if(l>t.length)return-1;if(!ht(t,i,Fn)){i=l;continue}let h=i+24;if(h+54>l){i=l;continue}let _=X.u32(t,h+40),c=X.u16(t,h+48)&127,p=h+54;if(p+_>l){i=l;continue}if(ht(t,h,Ln)){if(c<128&&(this._streams[c]={type:"audio"}),_>=18){let u=p;this._audioCodec=X.u16(t,u)===wn?"opus":"aac";let y=X.u16(t,u+2),g=X.u32(t,u+4),x=X.u16(t,u+16);y>0&&(this._headerAudioChannels=y),g>0&&(this._headerAudioSampleRate=g),x>0&&u+18+x<=l&&(this._headerAudioConfig=t.slice(u+18,u+18+x))}}else if(ht(t,h,Dn)&&_>=51){let u=p,y=X.u16(t,u+9),g=u+11,x=X.u32(t,g),b=X.u32(t,g+4),S=Math.abs(X.u32(t,g+8)|0),A=On(X.u32(t,g+16));c<128&&(this._streams[c]={type:"video"}),this._videoCodec=(s=Un[A])!=null?s:"h264";let T=b>0?b:X.u32(t,u),P=S>0?S:X.u32(t,u+4);T>0&&(this._headerVideoWidth=T),P>0&&(this._headerVideoHeight=P);let M=g+x,B=y-x;B<=0&&(B=_-11-x),B>0&&M+B<=p+_&&this._extractVideoConfigFromExtraData(t.subarray(M,M+B)),this._sendVideoMetadataFromHeader()}i=l}return 12+n}_parsePacket(t,i,n){let r=X.u16(t,i+2),s=i+4+r;if(s>t.length)return t.length;let a={offset:i+12,error:!1};if(a.offset>=t.length)return s;let l=t[a.offset++],h,_;if(l&128){let S=l&15;if(a.offset+S+2>t.length)return s;a.offset+=S,h=t[a.offset++],_=t[a.offset++]}else{if(h=l,a.offset>=t.length)return s;_=t[a.offset++]}let c=(h&1)!==0;this._readVar(t,a,h>>5,r),this._readVar(t,a,h>>1&3,0);let p=this._readVar(t,a,h>>3&3,0);if(a.error||a.offset+6>t.length)return s;let u=X.u32(t,a.offset);a.offset+=6;let y=128,g=1;if(c){if(a.offset>=t.length)return s;y=t[a.offset++],g=y&63}let x=s-p;if(x<a.offset||x>s)return s;let b=a.offset;for(let S=0;S<g&&b<x;S++){let A=this._parsePayload(t,b,_,y,u,x,c,n);if(A<=b)break;b=A}return s}_parsePayload(t,i,n,r,s,a,l,h){let _={offset:i,error:!1},c=t[_.offset++],p=(c&128)!==0,u=c&127,y=this._readVar(t,_,n>>4,0),g=this._readVar(t,_,n>>2&3,0),x=this._readVar(t,_,n&3,0);if(_.error)return t.length;let b=0,S=s;if(x>=8){if(_.offset+x>t.length)return t.length;b=X.u32(t,_.offset),S=X.u32(t,_.offset+4),_.offset+=x}else x>0&&(_.offset+=x);let A=l?this._readVar(t,_,r>>6&3,0):a-_.offset;if(_.error||A<=0||(A=Math.min(A,a-_.offset),A<=0))return _.offset;let T=h+_.offset,P=t.subarray(_.offset,_.offset+A),M=u<128?this._streams[u]:null;return(M==null?void 0:M.type)==="audio"?this._handlePayloadBuffer(this._audioBuffer,y,b,g,P,S,s,!l,B=>this._parseAudio(B,this._audioBuffer.pts)):(M==null?void 0:M.type)==="video"&&this._handlePayloadBuffer(this._videoBuffer,y,b,g,P,S,s,!l,(B,v)=>{var w;return this._dispatchVideoFrame(B,v.pts,v.packetTimestamp,v.keyframe?1:0,(w=v.streamPosition)!=null?w:0)},{keyframe:p,streamPosition:T}),_.offset+A}_resetPayloadBuffer(t){t.mediaObjectNumber=null,t.currentSize=0,t.chunks=[]}_handlePayloadBuffer(t,i,n,r,s,a,l,h,_,c){if(t.mediaObjectNumber!==i&&(t.chunks.length&&_(this._concatChunks(t),t),t.mediaObjectNumber=i,t.totalSize=n,t.currentSize=0,t.chunks=[],t.pts=a,t.packetTimestamp=l,c&&(t.keyframe=c.keyframe,t.streamPosition=c.streamPosition)),r!==t.currentSize){this._resetPayloadBuffer(t);return}t.chunks.push(s),t.currentSize+=s.length,(t.totalSize>0&&t.currentSize>=t.totalSize||t.totalSize===0&&h)&&(_(this._concatChunks(t),t),this._resetPayloadBuffer(t))}_concatChunks(t){let i=t.chunks;if(!i.length)return new Uint8Array(0);if(i.length===1)return i[0];let n=new Uint8Array(t.currentSize),r=0;for(let s of i)n.set(s,r),r+=s.length;return n}_updateNalHeader(t,i,n){let r=Pn(i);if(n&&!n(r))return!1;let s=this._nalHeaders[t];return s&&ke(s,r)?!1:(this._nalHeaders[t]=new Uint8Array(r),!0)}_extractVideoConfigFromExtraData(t){if(!t.length)return;if(this._videoCodec==="av1"){this._headerAv1c=t.slice();return}if(this._videoCodec==="vp9"){this._headerVp9c=t.slice();return}if(this._videoCodec==="hevc"&&t[0]===1&&t.length>=23){this._isAVCC=!0;let n=23;for(let r=0,s=t[22];r<s&&!(n+3>t.length);r++){let a=t[n]&63,l=_t.u16(t,n+1);n+=3;for(let h=0;h<l&&!(n+2>t.length);h++){let _=_t.u16(t,n);if(n+=2,n+_>t.length)break;let c=t.subarray(n,n+_);a===32?this._updateNalHeader("vps",c):a===33?this._updateNalHeader("sps",c):a===34&&this._updateNalHeader("pps",c),n+=_}}return}else if(t[0]===1&&t.length>=7){this._isAVCC=!0;let n=6;if((t[5]&31)>0&&n+2<=t.length){let s=_t.u16(t,n);n+=2,n+s<=t.length&&(this._updateNalHeader("sps",t.subarray(n,n+s)),n+=s)}if(n<t.length&&t[n++]>0&&n+2<=t.length){let a=_t.u16(t,n);n+=2,n+a<=t.length&&this._updateNalHeader("pps",t.subarray(n,n+a))}return}this._isAVCC=!1;let i=this._videoCodec==="hevc";for(let{type:n,data:r}of this._getNalUnits(t,i))i?n===32&&!this._nalHeaders.vps?this._updateNalHeader("vps",r):n===33&&!this._nalHeaders.sps?this._updateNalHeader("sps",r):n===34&&!this._nalHeaders.pps&&this._updateNalHeader("pps",r):n===7&&!this._nalHeaders.sps&&Ui.has(r[1])?this._updateNalHeader("sps",r):n===8&&!this._nalHeaders.pps&&this._updateNalHeader("pps",r)}_isAnnexB(t){if(this._isAVCC!==null)return!this._isAVCC;if(t.length<4)return!1;let i=t[0]===0&&t[1]===0&&(t[2]===1||t[2]===0&&t[3]===1);return this._isAVCC=!i&&_t.u32(t,0)+4<=t.length,!this._isAVCC}_getNalUnits(t,i){let n=[];if(this._isAnnexB(t)){let r=i?new Kt(t):new qt(t),s;for(;s=r.readNextNaluPayload();)n.push({type:s.type,data:s.data})}else for(let r=0;r+4<=t.length;){let s=_t.u32(t,r);if(!s||r+4+s>t.length)break;let a=t.subarray(r+4,r+4+s);n.push({type:i?a[0]>>1&63:a[0]&31,data:a}),r+=4+s}return n}_configUnchanged(t,i){let n=this._sentVideoConfig[t];return!!(this._hasVideoMetaSent&&n&&ke(n,i))}_registerVideoMetadata(t,i,n,r){this.onTrackMetadata(t),this.onVideoTracksDiscovered&&this.onVideoTracksDiscovered([t]),this._hasVideoMetaSent=!0;let s=this._asfMediaInfo;s.videoCodec=i,s.width=n,s.height=r,t.profile&&(s.profile=t.profile),t.level&&(s.level=t.level),t.chromaFormat!==void 0&&(s.chromaFormat=t.chromaFormat===1?"4:2:0":t.chromaFormat===2?"4:2:2":t.chromaFormat===3?"4:4:4":"4:2:0"),i.startsWith("vp09")&&(s.refFrames=3),this._maybeEmitMediaInfo()}_sendVideoMetadataFromHeader(t=!1){var r,s,a,l,h,_,c,p,u,y,g,x,b,S,A,T,P,M,B,v,w,k,N,G,le,ne,ae,W,Q,oe,H,me;if(this._hasVideoMetaSent&&!t)return;let i=null,n="";if(this._videoCodec==="av1"&&this._headerAv1c){let F=this._headerAv1c;if((F[0]&127)!==1){let ve=Re.parseOBUs(F);if(ve){let R=$r(ve);R&&(this._headerAv1c=F=R)}}if(this._configUnchanged("av1c",F))return;let D=Re.parseOBUs(F.subarray(4));if(!D)return;this._sentVideoConfig.av1c=F,n=D.codec_mimetype;let I=(s=(r=D.codec_size)==null?void 0:r.width)!=null?s:this._headerVideoWidth,te=(l=(a=D.codec_size)==null?void 0:a.height)!=null?l:this._headerVideoHeight;i={codecType:5,codec:n,codecConfig:F,codecWidth:I,codecHeight:te,presentWidth:(_=(h=D.present_size)==null?void 0:h.width)!=null?_:I,presentHeight:(p=(c=D.present_size)==null?void 0:c.height)!=null?p:te,profile:D.profile_string,level:D.level_string,bitDepth:D.bit_depth,chromaFormat:D.chroma_format,sarRatio:(u=D.sar_ratio)!=null?u:{width:1,height:1},frameRate:D.frame_rate.fixed?D.frame_rate:Ii}}else if(this._videoCodec==="vp9"&&this._headerVp9c&&this._headerVp9c.length>=8){let F=this._headerVp9c;if(this._configUnchanged("vp9c",F))return;let D=F.length>=12?4:0,I=F[D],te=F[D+1],ve=(F[D+2]&240)>>4,R=(F[D+2]&14)>>1,Xe=F[D+2]&1,rt=F[D+3],Oe=F[D+4],Fe=F.length>=D+6?F[D+5]:2,Ae=nt=>`${nt}`.padStart(2,"0");n=`vp09.${Ae(I)}.${Ae(te)}.${Ae(ve)}.${Ae(R)}.${Ae(rt)}.${Ae(Oe)}.${Ae(Fe)}.${Ae(Xe)}`,this._sentVideoConfig.vp9c=F;let mt=this._headerVideoWidth,Qe=this._headerVideoHeight;i={codecType:4,codec:n,codecConfig:F,codecWidth:mt,codecHeight:Qe,presentWidth:mt,presentHeight:Qe,profile:`${I}`,level:`${te}`,bitDepth:ve,chromaFormat:R,colorRange:Xe,colourPrimaries:rt,transferCharacteristics:Oe,matrixCoefficients:Fe}}else if(this._videoCodec==="hevc"&&this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps)try{let F=lt.parseSPS(this._nalHeaders.sps),D={parallelismType:1},I={num_temporal_layers:1,temporal_id_nested:!0};try{D=lt.parsePPS(this._nalHeaders.pps)}catch(Xe){}try{I=lt.parseVPS(this._nalHeaders.vps)}catch(Xe){}let te=new jt(this._nalHeaders.vps,this._nalHeaders.sps,this._nalHeaders.pps,{configurationVersion:1,general_profile_space:(y=F.general_profile_space)!=null?y:0,general_tier_flag:F.general_tier_flag?1:0,general_profile_idc:(g=F.profile_idc)!=null?g:1,general_profile_compatibility_flags_1:(x=F.general_profile_compatibility_flags_1)!=null?x:0,general_profile_compatibility_flags_2:(b=F.general_profile_compatibility_flags_2)!=null?b:0,general_profile_compatibility_flags_3:(S=F.general_profile_compatibility_flags_3)!=null?S:0,general_profile_compatibility_flags_4:(A=F.general_profile_compatibility_flags_4)!=null?A:0,general_constraint_indicator_flags_1:(T=F.general_constraint_indicator_flags_1)!=null?T:0,general_constraint_indicator_flags_2:(P=F.general_constraint_indicator_flags_2)!=null?P:0,general_constraint_indicator_flags_3:(M=F.general_constraint_indicator_flags_3)!=null?M:0,general_constraint_indicator_flags_4:(B=F.general_constraint_indicator_flags_4)!=null?B:0,general_constraint_indicator_flags_5:(v=F.general_constraint_indicator_flags_5)!=null?v:0,general_constraint_indicator_flags_6:(w=F.general_constraint_indicator_flags_6)!=null?w:0,general_level_idc:(k=F.general_level_idc)!=null?k:90,min_spatial_segmentation_idc:(N=F.min_spatial_segmentation_idc)!=null?N:0,parallelismType:(G=D.parallelismType)!=null?G:1,chroma_format_idc:(le=F.chroma_format_idc)!=null?le:1,bit_depth_luma_minus8:(ne=F.bit_depth_luma_minus8)!=null?ne:0,bit_depth_chroma_minus8:(ae=F.bit_depth_chroma_minus8)!=null?ae:0,constant_frame_rate:(W=F.constant_frame_rate)!=null?W:0,num_temporal_layers:(Q=I.num_temporal_layers)!=null?Q:1,temporal_id_nested:(oe=I.temporal_id_nested)!=null?oe:!0}).getData();if(this._configUnchanged("hvcc",te))return;this._sentVideoConfig.hvcc=te,n=F.codec_mimetype;let ve=F.codec_size.width,R=F.codec_size.height;i={codecType:2,codec:n,codecConfig:te,codecWidth:ve,codecHeight:R,presentWidth:F.present_size.width,presentHeight:F.present_size.height,profile:F.profile_string,level:F.level_string,bitDepth:F.bit_depth,chromaFormat:F.chroma_format,sarRatio:F.sar_ratio,frameRate:F.frame_rate.fixed?F.frame_rate:Ii}}catch(F){return}else{let F=this._nalHeaders.sps,D=this._nalHeaders.pps;if(!F||!D||!Ui.has(F[1])){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let I;try{I=$t.parseSPS(F)}catch(Xe){this._nalHeaders.sps=this._nalHeaders.pps=null;return}if(!((H=I==null?void 0:I.codec_size)!=null&&H.width)||!I.codec_size.height){this._nalHeaders.sps=this._nalHeaders.pps=null;return}let te=new Wt(F,D,I).getData();if(this._configUnchanged("avcc",te))return;this._sentVideoConfig.avcc=te,n=`avc1.${F[1].toString(16).padStart(2,"0")}${F[2].toString(16).padStart(2,"0")}${F[3].toString(16).padStart(2,"0")}`;let ve=I.codec_size.width,R=I.codec_size.height;i={codecType:1,codec:n,codecConfig:te,codecWidth:ve,codecHeight:R,presentWidth:ve,presentHeight:R,profile:(me=In[F[1]])!=null?me:`Profile ${F[1]}`,level:(F[3]/10).toFixed(1),chromaFormat:I.chroma_format_idc}}if(i){let F=j({type:"video",trackId:1,timescale:1e3,duration:0,colorRange:0,colourPrimaries:1,transferCharacteristics:1,matrixCoefficients:1,sarRatio:{width:1,height:1},frameRate:Ii,refFrameDuration:40},i);this._registerVideoMetadata(F,n,i.codecWidth,i.codecHeight)}}_parseAudioSpecificConfig(t){try{let i=new ot(new at(t));return{config:new Uint8Array(i.config),samplingRate:i.sampling_rate,channelCount:i.channel_count,codec:i.codec_mimetype,originalCodec:i.original_codec_mimetype}}catch(i){return null}}_registerAudioMetadata(t,i,n,r,s){let a=this._audioCodec==="opus",l={type:"audio",codecType:a?3:2,codec:t,codecConfig:n,trackId:2,timescale:1e3,duration:0,audioSampleRate:a?48e3:r,channelCount:s,originalCodec:i,preSkipSamples:a?X.u16(n,2):0,inputSampleRate:r,outputGain:0,bitsPerSample:16,littleEndian:!1,refFrameDuration:a?20:1024/r*1e3};if(a){let _=new DataView(n.buffer,n.byteOffset,n.byteLength);l.inputSampleRate=_.getUint32(4,!0),l.outputGain=_.getInt16(8,!0)}this.onTrackMetadata(l),this._hasAudioMetaSent=!0,this._audioFrameDuration=l.refFrameDuration;let h=this._asfMediaInfo;h.audioCodec=l.originalCodec,h.audioSampleRate=l.audioSampleRate,h.audioChannelCount=l.channelCount,this._maybeEmitMediaInfo()}_sendAudioMetadataFromHeader(){var t,i,n;if(!(this._hasAudioMetaSent||!this._audioCodec)){if(this._audioCodec==="opus"){let r=$n(this._headerAudioConfig,this._headerAudioChannels,this._headerAudioSampleRate);this._registerAudioMetadata("opus","opus",r,this._headerAudioSampleRate||48e3,this._headerAudioChannels||2);return}if((t=this._headerAudioConfig)!=null&&t.length){let r=this._parseAudioSpecificConfig(this._headerAudioConfig);if(r){this._registerAudioMetadata(r.codec,r.originalCodec,r.config,r.samplingRate,r.channelCount);return}}if(this._headerAudioChannels>0&&this._headerAudioSampleRate>0){let r=Be.indexOf(this._headerAudioSampleRate),s=Hr(2,r>=0?r:4,this._headerAudioChannels),a=this._parseAudioSpecificConfig(s);this._registerAudioMetadata((i=a==null?void 0:a.codec)!=null?i:"mp4a.40.2",(n=a==null?void 0:a.originalCodec)!=null?n:"mp4a.40.2",s,this._headerAudioSampleRate,this._headerAudioChannels)}}}_parseAudio(t,i){var n,r,s,a,l;if(t.length){if(this._audioCodec==="aac"&&t.length>=7&&t[0]===255&&(t[1]&240)===240){let h=0;for(let _=0;_+7<=t.length&&!(t[_]!==255||(t[_+1]&240)!==240);){let c=((t[_+2]&192)>>6)+1,p=(t[_+2]&60)>>2,u=(t[_+2]&1)<<2|(t[_+3]&192)>>6,y=(t[_+3]&3)<<11|t[_+4]<<3|t[_+5]>>5&7,g=t[_+1]&1?7:9;if(y<g||_+y>t.length)break;if(!this._hasAudioMetaSent){let x=Hr(c,p,u),b=this._parseAudioSpecificConfig(x);this._registerAudioMetadata((n=b==null?void 0:b.originalCodec)!=null?n:`mp4a.40.${c}`,(r=b==null?void 0:b.originalCodec)!=null?r:`mp4a.40.${c}`,x,(a=(s=b==null?void 0:b.samplingRate)!=null?s:Be[p])!=null?a:44100,(l=b==null?void 0:b.channelCount)!=null?l:u)}this._pushAudioFrame(t.subarray(_+g,_+y),i+h*this._audioFrameDuration),h++,_+=y}return}this._hasAudioMetaSent||this._sendAudioMetadataFromHeader(),this._pushAudioFrame(t,i)}}_pushAudioFrame(t,i){var a,l,h;if(!t.length||this._asfHasVideo&&!this._hasReceivedFirstKeyframe)return;this._baseTimestamp===null&&(this._baseTimestamp=i);let n=(l=(a=this._firstVideoPts)!=null?a:this._baseTimestamp)!=null?l:i,r=Math.max(0,i-n),s=(h=this._audioNextDts)!=null?h:this._asfTimestampBase+r;this._audioNextDts!==null&&Math.abs(this._asfTimestampBase+r-s)>500&&(s=this._asfTimestampBase+r),this._lastAudioDts!==null&&s<=this._lastAudioDts&&(s=this._lastAudioDts+1),this._lastAudioDts=s,this._audioNextDts=s+this._audioFrameDuration,this._asfAudioTrack.frames.push({unit:t,length:t.length,dts:s,pts:s}),this._asfAudioTrack.length+=t.length}_maybeEmitMediaInfo(){let t=this._asfMediaInfo;t.hasAudio=this._asfHasAudio,t.hasVideo=this._asfHasVideo,(!t.hasAudio||this._hasAudioMetaSent)&&(!t.hasVideo||this._hasVideoMetaSent)&&this.onMediaInfo(t)}_requireKeyframe(t,i,n){return this._hasReceivedFirstKeyframe?!0:t?(this._hasReceivedFirstKeyframe=!0,this._baseTimestamp===null&&(this._baseTimestamp=n),this._firstVideoPts===null&&(this._firstVideoPts=i),!0):!1}_getVideoTimestamp(t){let i=this._firstVideoPts!==null?Math.max(0,t-this._firstVideoPts):0;return this._lastVideoPts!==null&&i<=this._lastVideoPts&&(i=this._lastVideoPts+1),this._lastVideoPts=i,this._asfTimestampBase+i}_pushVideoFrame(t,i,n,r,s,a,l,h){let _={fileposition:t,dts:i,pts:n,cts:r,isKeyframe:s,units:a,length:l};h&&(_.rawData=h),this._videoTrack.frames.push(_),this._videoTrack.length+=l}_parseNalVideo(t,i,n,r,s,a){let l=(r&1)!==0;if(!this._requireKeyframe(l,i,n))return;let h=[],_=0,c=!1,p=!1;for(let{type:g,data:x}of this._getNalUnits(t,a)){if(a){if(g===32&&this._updateNalHeader("vps",x))c=!0;else if(g===33&&this._updateNalHeader("sps",x))c=!0;else if(g===34&&this._updateNalHeader("pps",x))c=!0;else if(g===35)continue;Vn.has(g)&&(p=!0)}else{if(g===7&&this._updateNalHeader("sps",x,S=>Ui.has(S[1])))c=!0;else if(g===8&&this._updateNalHeader("pps",x))c=!0;else if(g===9)continue;g===5&&(p=!0)}let b=a?new zt({type:g,data:x}):new Gt({type:g,data:x});h.push({type:g,data:b.data}),_+=b.data.length}if(p&&(l=!0),(a?this._nalHeaders.vps&&this._nalHeaders.sps&&this._nalHeaders.pps:this._nalHeaders.sps&&this._nalHeaders.pps)&&(!this._hasVideoMetaSent||c)&&this._sendVideoMetadataFromHeader(c),!this._hasVideoMetaSent||!h.length)return;let y=this._getVideoTimestamp(i);this._pushVideoFrame(s,y,y,0,l,h,_)}_parseAV1(t,i,n,r,s){let a=(r&1)!==0;try{let h=Re.parseOBUs(t);h&&(this._headerAv1c||(this._headerAv1c=$r(h)),h.keyframe&&(a=!0))}catch(h){}if(!this._requireKeyframe(a,i,n)||(this._headerAv1c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(s,l,l,0,a,[{type:0,data:t}],t.length,t)}_parseVP9(t,i,n,r,s){let a=(r&1)!==0;try{let h=dt.parseVp9Header(t);h.isValid&&(a=!0,h.width>0&&(this._headerVideoWidth=h.width),h.height>0&&(this._headerVideoHeight=h.height),this._headerVp9c||(this._headerVp9c=Hn(h.profile||0)))}catch(h){}if(!this._requireKeyframe(a,i,n)||(this._headerVp9c&&!this._hasVideoMetaSent&&this._sendVideoMetadataFromHeader(),!this._hasVideoMetaSent))return;let l=this._getVideoTimestamp(i);this._pushVideoFrame(s,l,l,0,a,[{type:a?0:1,data:t}],t.length)}_dispatchVideoFrame(t,i,n,r,s){switch(this._videoCodec){case"hevc":case"h264":this._parseNalVideo(t,i,n,r,s,this._videoCodec==="hevc");break;case"av1":this._parseAV1(t,i,n,r,s);break;case"vp9":this._parseVP9(t,i,n,r,s);break}}};var m=class m{static init(){m.types={avc1:[],avcC:[],btrt:[],dinf:[],dref:[],esds:[],ftyp:[],hdlr:[],hvc1:[],hvcC:[],av01:[],av1C:[],mdat:[],mdhd:[],mdia:[],mfhd:[],minf:[],moof:[],moov:[],mp4a:[],mvex:[],mvhd:[],sdtp:[],stbl:[],stco:[],stsc:[],stsd:[],stsz:[],stts:[],tfdt:[],tfhd:[],traf:[],trak:[],trun:[],trex:[],tkhd:[],vmhd:[],smhd:[],chnl:[],".mp3":[],Opus:[],dOps:[],fLaC:[],dfLa:[],ipcm:[],pcmC:[],"ac-3":[],dac3:[],"ec-3":[],dec3:[],vp08:[],vp09:[],vpcC:[],colr:[]};for(let t in m.types)m.types.hasOwnProperty(t)&&(m.types[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)]);let e=m.constants={};e.FTYP=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,109,112,52,49]),e.FTYP_AV1=new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,105,115,111,54,97,118,48,49,109,112,52,49]),e.FTYP_VP9=new Uint8Array([118,112,48,57,0,0,0,0,118,112,48,57,105,115,111,109,105,115,111,54]),e.STSD_PREFIX=new Uint8Array([0,0,0,0,0,0,0,1]),e.STTS=new Uint8Array([0,0,0,0,0,0,0,0]),e.STSC=e.STCO=e.STTS,e.STSZ=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]),e.HDLR_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]),e.HDLR_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]),e.DREF=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e.SMHD=new Uint8Array([0,0,0,0,0,0,0,0]),e.VMHD=new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0])}static box(e){let t=8,i=null,n=Array.prototype.slice.call(arguments,1),r=n.length;for(let a=0;a<r;a++)t+=n[a].byteLength;i=new Uint8Array(t),i[0]=t>>>24&255,i[1]=t>>>16&255,i[2]=t>>>8&255,i[3]=t&255,i.set(e,4);let s=8;for(let a=0;a<r;a++)i.set(n[a],s),s+=n[a].byteLength;return i}static generateInitSegment(e){let t=m.constants.FTYP;e.type==="video"&&e.codec&&(e.codec.startsWith("av01")?t=m.constants.FTYP_AV1:e.codec.startsWith("vp09")&&(t=m.constants.FTYP_VP9));let i=m.box(m.types.ftyp,t),n=m.moov(e),r=new Uint8Array(i.byteLength+n.byteLength);return r.set(i,0),r.set(n,i.byteLength),r}static moov(e){let t=m.mvhd(e.timescale,e.duration),i=m.trak(e),n=m.mvex(e);return m.box(m.types.moov,t,i,n)}static mvhd(e,t){return m.box(m.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255,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]))}static trak(e){return m.box(m.types.trak,m.tkhd(e),m.mdia(e))}static tkhd(e){let t=e.trackId,i=e.duration,n=(e.presentWidth||e.codecWidth||0)>>>0,r=(e.presentHeight||e.codecHeight||0)>>>0;return m.box(m.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255,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,n&255,0,0,r>>>8&255,r&255,0,0]))}static mdia(e){return m.box(m.types.mdia,m.mdhd(e),m.hdlr(e),m.minf(e))}static mdhd(e){let t=e.timescale,i=e.duration;return m.box(m.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,i>>>24&255,i>>>16&255,i>>>8&255,i&255,85,196,0,0]))}static hdlr(e){let t=null;return e.type==="audio"?t=m.constants.HDLR_AUDIO:t=m.constants.HDLR_VIDEO,m.box(m.types.hdlr,t)}static minf(e){let t=null;return e.type==="audio"?t=m.box(m.types.smhd,m.constants.SMHD):t=m.box(m.types.vmhd,m.constants.VMHD),m.box(m.types.minf,t,m.dinf(),m.stbl(e))}static dinf(){return m.box(m.types.dinf,m.box(m.types.dref,m.constants.DREF))}static stbl(e){return m.box(m.types.stbl,m.stsd(e),m.box(m.types.stts,m.constants.STTS),m.box(m.types.stsc,m.constants.STSC),m.box(m.types.stsz,m.constants.STSZ),m.box(m.types.stco,m.constants.STCO))}static stsd(e){return e.type==="audio"?e.codec==="mp3"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.mp3(e)):e.codec==="ac-3"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.ac3(e)):e.codec==="ec-3"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.ec3(e)):e.codec==="opus"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.Opus(e)):e.codec=="flac"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.fLaC(e)):e.codec=="ipcm"?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.ipcm(e)):m.box(m.types.stsd,m.constants.STSD_PREFIX,m.mp4a(e)):e.type==="video"&&e.codec.startsWith("hvc1")?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.hvc1(e)):e.type==="video"&&e.codec.startsWith("av01")?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.av01(e)):e.type==="video"&&e.codec.startsWith("vp09")?m.box(m.types.stsd,m.constants.STSD_PREFIX,m.vp09(e)):m.box(m.types.stsd,m.constants.STSD_PREFIX,m.avc1(e))}static mp3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types[".mp3"],n)}static mp4a(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types.mp4a,n,m.esds(e))}static ac3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types["ac-3"],n,m.box(m.types.dac3,new Uint8Array(e.codecConfig)))}static ec3(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types["ec-3"],n,m.box(m.types.dec3,new Uint8Array(e.codecConfig)))}static esds(e){let t=Array.from(e.codecConfig||[]),i=t.length,n=new Uint8Array([0,0,0,0,3,23+i,0,1,0,4,15+i,64,21,0,0,0,0,0,0,0,0,0,0,0,5].concat([i]).concat(t).concat([6,1,2]));return m.box(m.types.esds,n)}static Opus(e){let t=e.channelCount,i=e.audioSampleRate,n=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,16,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types.Opus,n,m.dOps(e))}static dOps(e){let t=e.channelCount,i=e.channelConfigCode,n=e.audioSampleRate;if(e.codecConfig){let a=new Uint8Array(e.codecConfig).slice(),l=new DataView(a.buffer);return l.setUint8(0,0),l.setUint16(2,e.preSkipSamples,!1),l.setUint32(4,e.inputSampleRate,!1),l.setUint16(8,e.outputGain,!1),m.box(m.types.dOps,a)}let r=[];switch(i){case 1:case 2:r=[0];break;case 0:r=[255,1,1,0,1];break;case 128:r=[255,2,0,0,1];break;case 3:r=[1,2,1,0,2,1];break;case 4:r=[1,2,2,0,1,2,3];break;case 5:r=[1,3,2,0,4,1,2,3];break;case 6:r=[1,4,2,0,4,1,2,3,5];break;case 7:r=[1,4,2,0,4,1,2,3,5,6];break;case 8:r=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:r=[1,1,2,0,1];break;case 131:r=[1,1,3,0,1,2];break;case 132:r=[1,1,4,0,1,2,3];break;case 133:r=[1,1,5,0,1,2,3,4];break;case 134:r=[1,1,6,0,1,2,3,4,5];break;case 135:r=[1,1,7,0,1,2,3,4,5,6];break;case 136:r=[1,1,8,0,1,2,3,4,5,6,7];break}let s=new Uint8Array([0,t,0,0,n>>>24&255,n>>>17&255,n>>>8&255,n>>>0&255,0,0,...r]);return m.box(m.types.dOps,s)}static fLaC(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return m.box(m.types.fLaC,r,m.dfLa(e))}static dfLa(e){let t=new Uint8Array([0,0,0,0,...e.codecConfig]);return m.box(m.types.dfLa,t)}static ipcm(e){let t=e.channelCount,i=Math.min(e.audioSampleRate,65535),n=e.bitsPerSample,r=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t,0,n,0,0,0,0,i>>>8&255,i&255,0,0]);return e.channelCount===1?m.box(m.types.ipcm,r,m.pcmC(e)):m.box(m.types.ipcm,r,m.chnl(e),m.pcmC(e))}static chnl(e){let t=new Uint8Array([0,0,0,0,1,e.channelCount,0,0,0,0,0,0,0,0]);return m.box(m.types.chnl,t)}static pcmC(e){let t=e.littleEndian?1:0,i=e.bitsPerSample,n=new Uint8Array([0,0,0,0,t,i]);return m.box(m.types.pcmC,n)}static avc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=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,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return m.box(m.types.avc1,r,m.box(m.types.avcC,t))}static hvc1(e){let t=e.codecConfig,i=e.codecWidth,n=e.codecHeight,r=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,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return m.box(m.types.hvc1,r,m.box(m.types.hvcC,t))}static buildVp9CodecConfig(e){let t=Number.isFinite(Number(e.profile))?Number(e.profile):0,i=Number.isFinite(Number(e.level))?Number(e.level):10,n=Number.isFinite(e.bitDepth)?e.bitDepth:8,r=Number.isFinite(e.chromaFormat)?e.chromaFormat:1,s=e.colorRange?1:0,a=Number.isFinite(e.colourPrimaries)?e.colourPrimaries:1,l=Number.isFinite(e.transferCharacteristics)?e.transferCharacteristics:1,h=Number.isFinite(e.matrixCoefficients)?e.matrixCoefficients:1;return new Uint8Array([1,0,0,0,t&255,i&255,(n&15)<<4|(r&7)<<1|s&1,a&255,l&255,h&255,0,0])}static normalizeVp9CodecConfig(e){let i=new Uint8Array(e);if(i.length===12)return i;if(i.length===9){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,9),4),n}if(i.length===8){let n=new Uint8Array(12);return n[0]=1,n.set(i,4),n}if(i.length===7){let n=new Uint8Array(12);return n[0]=i[0]||1,n.set(i.subarray(1,7),4),n}return null}static vp09(e){let t=e.codecConfig?m.normalizeVp9CodecConfig(e.codecConfig):null,i=e.codecWidth||e.presentWidth||192,n=e.codecHeight||e.presentHeight||108;t||(t=m.buildVp9CodecConfig(e));let r=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,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]),s=[m.box(m.types.vpcC,t)],a=m.colr(e);return a&&s.push(a),m.box(m.types.vp09,r,...s)}static colr(e){let t=e.colourPrimaries,i=e.transferCharacteristics,n=e.matrixCoefficients,r=l=>Number.isFinite(l)&&l!==2;if(!r(t)||!r(i)||!r(n))return null;let s=e.colorRange?128:0,a=new Uint8Array([110,99,108,120,t>>>8&255,t&255,i>>>8&255,i&255,n>>>8&255,n&255,s]);return m.box(m.types.colr,a)}static av01(e){let t=e.codecConfig,i=e.codecWidth||192,n=e.codecHeight||108,r=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,i>>>8&255,i&255,n>>>8&255,n&255,0,72,0,0,0,72,0,0,0,0,0,0,0,1,10,120,113,113,47,102,108,118,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,255,255]);return m.box(m.types.av01,r,m.box(m.types.av1C,t))}static mvex(e){return m.box(m.types.mvex,m.trex(e))}static trex(e){let t=e.trackId,i=new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]);return m.box(m.types.trex,i)}static moof(e,t){return m.box(m.types.moof,m.mfhd(e.sequenceNumber),m.traf(e,t))}static mfhd(e){let t=new Uint8Array([0,0,0,0,e>>>24&255,e>>>16&255,e>>>8&255,e&255]);return m.box(m.types.mfhd,t)}static traf(e,t){let i=e.id,n=m.box(m.types.tfhd,new Uint8Array([0,0,0,0,i>>>24&255,i>>>16&255,i>>>8&255,i&255])),r=m.box(m.types.tfdt,new Uint8Array([0,0,0,0,t>>>24&255,t>>>16&255,t>>>8&255,t&255])),s=m.sdtp(e),a=m.trun(e,s.byteLength+16+16+8+16+8+8);return m.box(m.types.traf,n,r,a,s)}static sdtp(e){let t=e.frames||[],i=t.length,n=new Uint8Array(4+i);for(let r=0;r<i;r++){let s=t[r].flags;n[r+4]=s.isLeading<<6|s.dependsOn<<4|s.isDependedOn<<2|s.hasRedundancy}return m.box(m.types.sdtp,n)}static trun(e,t){let i=e.frames||[],n=i.length,r=!1;for(let _=0;_<n;_++)if(i[_].cts!==0){r=!0;break}let s=r?16:12,a=12+s*n,l=new Uint8Array(a);t+=8+a;let h=r?3841:1793;l.set([h>>>24&255,h>>>16&255,h>>>8&255,h&255,n>>>24&255,n>>>16&255,n>>>8&255,n&255,t>>>24&255,t>>>16&255,t>>>8&255,t&255],0);for(let _=0;_<n;_++){let c=i[_].duration,p=i[_].size,u=i[_].flags,y=i[_].cts,g=[c>>>24&255,c>>>16&255,c>>>8&255,c&255,p>>>24&255,p>>>16&255,p>>>8&255,p&255,u.isLeading<<2|u.dependsOn,u.isDependedOn<<6|u.hasRedundancy<<4|u.isNonSync,0,0];r&&g.push(y>>>24&255,y>>>16&255,y>>>8&255,y&255),l.set(g,12+s*_)}return m.box(m.types.trun,l)}static mdat(e){return m.box(m.types.mdat,e)}};d(m,"types");var Jt=m;Jt.init();var it=Jt;var Pi=class{static getSilentFrame(e,t){if(e==="mp4a.40.2"){if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)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(t===6)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(t===1)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(t===2)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]);if(t===3)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])}return null}},Oi=Pi;var ye=class{constructor(e,t,i,n,r){d(this,"dts");d(this,"pts");d(this,"duration");d(this,"originalDts");d(this,"isSyncPoint");d(this,"fileposition",null);this.dts=e,this.pts=t,this.duration=i,this.originalDts=n,this.isSyncPoint=r}},We=class{constructor(){d(this,"beginDts",0);d(this,"endDts",0);d(this,"beginPts",0);d(this,"endPts",0);d(this,"originalBeginDts",0);d(this,"originalEndDts",0);d(this,"syncPoints",[]);d(this,"firstFrame",null);d(this,"lastFrame",null)}appendSyncPoint(e){e.isSyncPoint=!0,this.syncPoints.push(e)}},ei=class{constructor(){d(this,"_list",[])}clear(){this._list=[]}appendArray(e){let t=this._list;e.length!==0&&(t.length>0&&e[0].originalDts<t[t.length-1].originalDts&&this.clear(),Array.prototype.push.apply(t,e))}getLastSyncPointBeforeDts(e){if(this._list.length==0)return null;let t=this._list,i=0,n=t.length-1,r=0,s=0,a=n;for(e<t[0].dts&&(i=0,s=a+1);s<=a;)if(r=s+Math.floor((a-s)/2),r===n||e>=t[r].dts&&e<t[r+1].dts){i=r;break}else t[r].dts<e?s=r+1:a=r-1;return this._list[i]}},ze=class{constructor(e){d(this,"_type");d(this,"_list",[]);d(this,"_lastAppendLocation",-1);this._type=e}get type(){return this._type}get length(){return this._list.length}isEmpty(){return this._list.length===0}clear(){this._list=[],this._lastAppendLocation=-1}_searchNearestSegmentBefore(e){let t=this._list;if(t.length===0)return-2;let i=t.length-1,n=0,r=0,s=i,a=0;if(e<t[0].originalBeginDts)return a=-1,a;for(;r<=s;){let l=t[n].lastFrame;if(n=r+Math.floor((s-r)/2),n===i||l&&e>l.originalDts&&e<t[n+1].originalBeginDts){a=n;break}else t[n].originalBeginDts<e?r=n+1:s=n-1}return a}_searchNearestSegmentAfter(e){return this._searchNearestSegmentBefore(e)+1}append(e){let t=this._list,i=e,n=this._lastAppendLocation,r=0;n!==-1&&n<t.length&&t[n].lastFrame&&i.originalBeginDts>=t[n].lastFrame.originalDts&&(n===t.length-1||n<t.length-1&&i.originalBeginDts<t[n+1].originalBeginDts)?r=n+1:t.length>0&&(r=this._searchNearestSegmentBefore(i.originalBeginDts)+1),this._lastAppendLocation=r,this._list.splice(r,0,i)}getLastSegmentBefore(e){let t=this._searchNearestSegmentBefore(e);return t>=0?this._list[t]:null}getLastFrameBefore(e){let t=this.getLastSegmentBefore(e);return t!=null?t.lastFrame:null}getLastSyncPointBefore(e){let t=this._searchNearestSegmentBefore(e),i=this._list[t].syncPoints;for(;i.length===0&&t>0;)t--,i=this._list[t].syncPoints;return i.length>0?i[i.length-1]:null}};function Ke(o){return`${Math.max(0,Math.trunc(o))}`.padStart(2,"0")}function Ni(o){return Number.isFinite(o)&&o!==2}function Gn(o){let e=Number.parseInt(o.profile,10),t=Number.parseInt(o.level,10),i=o.bitDepth;if(!Number.isFinite(e)||!Number.isFinite(t)||!Number.isFinite(i))return o.codec;let n=["vp09",Ke(e),Ke(t),Ke(i)];return!Number.isFinite(o.chromaFormat)||!Ni(o.colourPrimaries)||!Ni(o.transferCharacteristics)||!Ni(o.matrixCoefficients)||!Number.isFinite(o.colorRange)?n.join("."):n.concat([Ke(o.chromaFormat),Ke(o.colourPrimaries),Ke(o.transferCharacteristics),Ke(o.matrixCoefficients),Ke(o.colorRange?1:0)]).join(".")}function qn(o){return o?o instanceof Uint8Array?o:ArrayBuffer.isView(o)?new Uint8Array(o.buffer,o.byteOffset,o.byteLength):o instanceof ArrayBuffer?new Uint8Array(o):typeof o.length=="number"?Uint8Array.from(o):null:null}function qr(o,e=16){let t=qn(o);return!t||t.byteLength===0?"empty":Array.from(t.subarray(0,Math.min(e,t.byteLength))).map(i=>i.toString(16).padStart(2,"0")).join(" ")}var xe=class xe extends Le{constructor(t){var i,n;super(t);d(this,"_dtsBase",1/0);d(this,"_audioDtsBase",1/0);d(this,"_videoDtsBase",1/0);d(this,"_audioNextDts",1/0);d(this,"_videoNextDts",1/0);d(this,"_audioStashedLastFrame",null);d(this,"_videoStashedLastFrame",null);d(this,"_audioSegmentInfoList",new ze("audio"));d(this,"_videoSegmentInfoList",new ze("video"));d(this,"_onInitSegment",_e);d(this,"_onMediaSegment",_e);d(this,"_pendingAudioInitSegment",null);d(this,"_pendingVideoInitSegment",null);d(this,"_forceFirstIDR");d(this,"_fillSilentAfterSeek");d(this,"_mp3UseMpegAudio");d(this,"_fillAudioTimestampGap");this._forceFirstIDR=!!(Z.chrome&&Z.version&&(Z.version.major<50||Z.version.major===50&&Z.version.build&&Z.version.build<2661)),this._fillSilentAfterSeek=((i=Z)==null?void 0:i.msedge)||((n=Z)==null?void 0:n.msie)||!1,this._mp3UseMpegAudio=!Z.firefox,this._fillAudioTimestampGap=this._config.fixAudioTimestampGap}destroy(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._audioMeta=null,this._videoMeta=null,this._audioSegmentInfoList.clear(),this._videoSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null,this._onInitSegment=_e,this._onMediaSegment=_e}bindDataSource(t){return t.onTrackData=this._onTrackData.bind(this),t.onTrackMetadata=this._onTrackMetadata.bind(this),this}get onInitSegment(){return this._onInitSegment}set onInitSegment(t){this._onInitSegment=t}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(t){this._onMediaSegment=t}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingAudioInitSegment=null,this._pendingVideoInitSegment=null}_getMp4TrackId(t,i){return Number.isFinite(i)&&i>0?i:t==="video"?1:2}_getMp4Metadata(t){return se(j({},t),{trackId:this._getMp4TrackId(t.type,t.trackId)})}_describeMetadata(t){let i=`type=${t.type} codec=${t.codec} duration=${t.duration}`;return t.type==="audio"&&(i+=` channels=${t.channelCount} sampleRate=${t.audioSampleRate}`,i+=` config=${qr(t.codecConfig)}`),i}_describeInitSegment(t){return`type=${t.type} codec=${t.codec||"none"} container=${t.container} bytes=${t.data.byteLength} head=${qr(t.data)}`}_onTrackData(t,i){this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._pendingVideoInitSegment&&(f.v(xe.TAG,`_onTrackData(): flushing pending video init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingVideoInitSegment)}`),this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null),this._pendingAudioInitSegment&&(f.v(xe.TAG,`_onTrackData(): flushing pending audio init before data batch, videoFrames=${i.frames.length} audioFrames=${t.frames.length} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null),this._remuxVideo(i,!1),this._remuxAudio(t,!1)}_onTrackMetadata(t){let i=null,n="mp4",r=t.codec,s=t.type;t.type==="audio"?(this._isAudioMetadataDispatched=!0,this._audioMeta=t,t.codec==="mp3"&&this._mp3UseMpegAudio?(n="mpeg",r="",i=new Uint8Array):i=it.generateInitSegment(this._getMp4Metadata(t))):(this._isVideoMetadataDispatched=!0,this._videoMeta=t,t.codecType===4&&(r=Gn(t)),i=it.generateInitSegment(this._getMp4Metadata(t)));let a={kind:0,type:s,data:new Uint8Array(i.buffer),codec:r,container:`${s}/${n}`,mediaDuration:t.duration};s==="audio"?(this._pendingAudioInitSegment?f.v(xe.TAG,`_onTrackMetadata(): replacing pending audio init ${this._describeInitSegment(this._pendingAudioInitSegment)} -> ${this._describeMetadata(t)}`):f.v(xe.TAG,`_onTrackMetadata(): stashing audio init from metadata ${this._describeMetadata(t)}`),this._pendingAudioInitSegment=a):(this._pendingVideoInitSegment?f.v(xe.TAG,`_onTrackMetadata(): replacing pending video init ${this._describeInitSegment(this._pendingVideoInitSegment)} -> ${this._describeMetadata(t)}`):f.v(xe.TAG,`_onTrackMetadata(): stashing video init from metadata ${this._describeMetadata(t)}`),this._pendingVideoInitSegment=a)}_calculateDtsBase(t,i){this._dtsBase===1/0&&(t&&t.frames&&t.frames.length&&(this._audioDtsBase=t.frames[0].dts),i&&i.frames&&i.frames.length&&(this._videoDtsBase=i.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}get timestampBase(){if(this._dtsBase!==1/0)return this._dtsBase}flushStashedFrames(){let t=this._videoStashedLastFrame,i=this._audioStashedLastFrame,n={type:"video",id:1,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length);let r={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};i!=null&&(r.frames.push(i),r.length=i.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(n,!0),this._remuxAudio(r,!0)}_remuxAudio(t,i){if(!this._audioMeta||t.frames.length===0)return;this._pendingAudioInitSegment&&(f.v(xe.TAG,`_remuxAudio(): flushing pending audio init before audio remux, audioFrames=${t.frames.length} force=${i} ${this._describeInitSegment(this._pendingAudioInitSegment)}`),this._onInitSegment("audio",this._pendingAudioInitSegment),this._pendingAudioInitSegment=null);let n=t,r=n.frames,s,a=-1,l=-1,h=-1,_=this._audioMeta.refFrameDuration,c=this._audioMeta.codec==="mp3"&&this._mp3UseMpegAudio,p=this._dtsBase!==1/0&&this._audioNextDts===1/0,u=!1;if(r.length===1&&!i)return;let y=0,g=null,x=0;c?(y=0,x=n.length):(y=8,x=8+n.length);let b;if(r.length>1&&(b=r.pop(),x-=(b==null?void 0:b.length)||0),this._audioStashedLastFrame!=null){let v=this._audioStashedLastFrame;this._audioStashedLastFrame=null,r.unshift(v),x+=(v==null?void 0:v.length)||0}b!=null&&(this._audioStashedLastFrame=b);let S=r[0].dts-this._dtsBase;if(this._audioNextDts!==1/0)s=S-this._audioNextDts;else if(this._audioSegmentInfoList.isEmpty())s=0,this._fillSilentAfterSeek&&!this._videoSegmentInfoList.isEmpty()&&this._audioMeta.originalCodec!=="mp3"&&(u=!0);else{let v=this._audioSegmentInfoList.getLastFrameBefore(S);if(v!=null){let w=S-(v.originalDts+v.duration);w<=3&&(w=0);let k=v.dts+v.duration+w;s=S-k}else s=0}if(u){let v=S-s,w=this._videoSegmentInfoList.getLastSegmentBefore(S);if(w!=null&&w.beginDts<v){let k=Oi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);if(k){let N=w.beginDts,G=v-w.beginDts;f.v(xe.TAG,`InsertPrefixSilentAudio: dts: ${N}, duration: ${G}`),r.unshift({unit:k,length:k.byteLength,dts:N,pts:N}),x+=k.byteLength}}else u=!1}let A=[];for(let v=0;v<r.length;v++){let w=r[v],k=w.unit,N=w.dts-this._dtsBase,G=N,le=!1,ne=[],ae=0;if(!(N<-.001)){if(this._audioMeta.codec!=="mp3"&&!Number.isNaN(_)){let W=N,Q=3;if(this._audioNextDts!==1/0&&(W=this._audioNextDts),s=N-W,s<=-Q*_){f.w(xe.TAG,`Dropping 1 audio frame (originalDts: ${N} ms ,curRefDts: ${W} ms)  due to dtsCorrection: ${s} ms overlap.`);continue}else if(s>=Q*_&&this._fillAudioTimestampGap&&!Z.safari){le=!0;let oe=Math.floor(s/_);f.w(xe.TAG,`Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.
originalDts: ${N} ms, curRefDts: ${W} ms, dtsCorrection: ${Math.round(s)} ms, generate: ${oe} frames`),G=Math.floor(W),ae=Math.floor(W+_)-G;let H=Oi.getSilentFrame(this._audioMeta.originalCodec,this._audioMeta.channelCount);H===null&&(f.w(xe.TAG,`Unable to generate silent frame for ${this._audioMeta.originalCodec} with ${this._audioMeta.channelCount} channels, repeat last frame`),H=k);for(let me=0;me<oe;me++){W=W+_;let F=Math.floor(W),D=Math.floor(W+_)-F,I={dts:F,pts:F,cts:0,unit:H,size:H.byteLength,duration:D,originalDts:N,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}};ne.push(I),x+=I.size}this._audioNextDts=W+_}else G=Math.floor(W),ae=Math.floor(W+_)-G,this._audioNextDts=W+_}else G=N-s,v!==r.length-1?ae=r[v+1].dts-this._dtsBase-s-G:b!=null?ae=b.dts-this._dtsBase-s-G:A.length>=1?ae=A[A.length-1].duration:ae=Math.floor(_),this._audioNextDts=G+ae;a===-1&&(a=G),A.push({dts:G,pts:G,cts:0,unit:w.unit,size:w.unit.byteLength,duration:ae,originalDts:N,flags:{isLeading:0,dependsOn:1,isDependedOn:0,hasRedundancy:0}}),le&&A.push(...ne)}}if(A.length===0){n.frames=[],n.length=0;return}c?g=new Uint8Array(x):(g=new Uint8Array(x),g[0]=x>>>24&255,g[1]=x>>>16&255,g[2]=x>>>8&255,g[3]=x&255,g.set(it.types.mdat,4));for(let v=0;v<A.length;v++){let w=A[v].unit;g.set(w,y),y+=w.byteLength}let T=A[A.length-1];l=T.dts+T.duration;let P=new We;P.beginDts=a,P.endDts=l,P.beginPts=a,P.endPts=l,P.originalBeginDts=A[0].originalDts,P.originalEndDts=T.originalDts+T.duration,P.firstFrame=new ye(A[0].dts,A[0].pts,A[0].duration,A[0].originalDts,!1),P.lastFrame=new ye(T.dts,T.pts,T.duration,T.originalDts,!1),this._isLive||this._audioSegmentInfoList.append(P),n.frames=A,n.sequenceNumber++;let M=null;c?M=new Uint8Array:M=it.moof(se(j({},n),{id:this._getMp4TrackId("audio",n.id)}),a),n.frames=[],n.length=0;let B={kind:1,type:"audio",data:new Uint8Array(this._mergeBoxes(M,g).buffer),frameCount:A.length,info:P};c&&p&&(B.timestampOffset=a),this._onMediaSegment("audio",B)}_remuxVideo(t,i){if(t.frames.length<=1&&!i)return;if(!this._videoMeta){f.w(xe.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}this._pendingVideoInitSegment&&(this._onInitSegment("video",this._pendingVideoInitSegment),this._pendingVideoInitSegment=null);let n=t,r=n.frames,s,a=-1,l=-1,h=-1,_=-1,c=8,p=null,u=8+t.length,y;if(r.length>1&&(y=r.pop(),u-=(y==null?void 0:y.length)||0),this._videoStashedLastFrame!=null){let B=this._videoStashedLastFrame;this._videoStashedLastFrame=null,r.unshift(B),u+=B.length}y!=null&&(this._videoStashedLastFrame=y);let g=this._videoMeta.codecType===5,x=r[0].dts-this._dtsBase;if(this._videoNextDts!==1/0)s=x-this._videoNextDts;else if(this._videoSegmentInfoList.isEmpty())s=0;else{let B=this._videoSegmentInfoList.getLastFrameBefore(x);if(B!=null){let v=x-(B.originalDts+B.duration);v<=3&&(v=0);let w=B.dts+B.duration+v;s=x-w}else s=0}let b=new We,S=[],A=0;for(let B=0;B<r.length;B++){let v=r[B],w=v.dts-this._dtsBase,k=v.isKeyframe,N=w-s,G=g?0:v.cts,le=N+G;a===-1&&(a=N,h=le);let ne=0;if(B!==r.length-1?ne=r[B+1].dts-this._dtsBase-s-N:y!=null?ne=y.dts-this._dtsBase-s-N:S.length>=1?ne=S[S.length-1].duration:ne=Math.floor(this._videoMeta.refFrameDuration),k){let Q=new ye(N,le,ne,v.dts,!0);Q.fileposition=v.fileposition,b.appendSyncPoint(Q)}let ae=v.units,W=v.length;if(g){let Q=0;ae=v.units.map(oe=>{let H=Re.stripLeadingObuFraming(oe.data);return Q+=H.byteLength,{type:oe.type,data:H}}),W=Q,A+=Q}S.push({dts:N,pts:le,cts:G,units:ae,size:W,isKeyframe:k,duration:ne,originalDts:w,flags:{isLeading:0,dependsOn:k?2:1,isDependedOn:k?1:0,hasRedundancy:0,isNonSync:k?0:1}})}g&&(u=8+A),p=new Uint8Array(u),p[0]=u>>>24&255,p[1]=u>>>16&255,p[2]=u>>>8&255,p[3]=u&255,p.set(it.types.mdat,4);for(let B=0;B<S.length;B++){let v=S[B].units;for(;v.length;){let k=v.shift().data;p.set(k,c),c+=k.byteLength}}let T=S[S.length-1];if(l=T.dts+T.duration,_=T.pts+T.duration,this._videoNextDts=l,b.beginDts=a,b.endDts=l,b.beginPts=h,b.endPts=_,b.originalBeginDts=S[0].originalDts,b.originalEndDts=T.originalDts+T.duration,b.firstFrame=new ye(S[0].dts,S[0].pts,S[0].duration,S[0].originalDts,S[0].isKeyframe),b.lastFrame=new ye(T.dts,T.pts,T.duration,T.originalDts,T.isKeyframe),this._isLive||this._videoSegmentInfoList.append(b),n.frames=S,n.sequenceNumber++,this._forceFirstIDR){let B=S[0].flags;B.dependsOn=2,B.isNonSync=0}let P=it.moof(se(j({},n),{id:this._getMp4TrackId("video",n.id)}),a);n.frames=[],n.length=0;let M={kind:1,type:"video",data:new Uint8Array(this._mergeBoxes(P,p).buffer),frameCount:S.length,info:b};this._onMediaSegment("video",M)}_mergeBoxes(t,i){let n=new Uint8Array(t.byteLength+i.byteLength);return n.set(t,0),n.set(i,t.byteLength),n}};d(xe,"TAG","MP4Remuxer");var Hi=xe,$i=Hi;var ti=0;function je(o){return new TextEncoder().encode(o)}function Wn(o){let e=new ArrayBuffer(8);return new DataView(e).setFloat64(0,o,!1),new Uint8Array(e)}function Ve(o){return o<=255?Y(o,1):o<=65535?Y(o,2):o<=16777215?Y(o,3):Y(o,4)}function Y(o,e){let t=new Uint8Array(e);for(let i=e-1;i>=0;i--)t[i]=o&255,o>>=8;return t}function zn(o){f.a(Ge.TAG,`writeVint assert failed: value of ${o} > 0xFFFFFFF`,o>=0&&o<=4294967295);let e=0,t=o+1;do e++;while((t>>>=7)>0&&e<8);let i=new Uint8Array(e);t=o|1<<e*7;for(let n=e-1,r=0;n>=0;n--,r++)i[r]=t>>n*8&255;return i}function L(o,e){let t=Ve(o),i=zn(e.length);return K([t,i,e])}function K(o){let e=o.reduce((n,r)=>n+r.length,0),t=new Uint8Array(e),i=0;for(let n of o)t.set(n,i),i+=n.length;return t}function Kn(o){switch(o){case 4:return"V_VP9";case 5:return"V_AV1";default:return f.a(Ge.TAG,`GetCodecId(): Unsupported codec ${Zt[o]}`),""}}function jn(o){let e=Number(o.profile),t=Number(o.level),i=o.bitDepth,n=o.chromaFormat;return K([[1,e],[2,t],[3,i],[4,n]].map(([s,a])=>new Uint8Array([s,1,a&255])))}function Yn(o){let e=[];if(Number.isFinite(o.matrixCoefficients)&&e.push(L(21937,Ve(o.matrixCoefficients))),Number.isFinite(o.bitDepth)&&e.push(L(21938,Ve(o.bitDepth))),Number.isFinite(o.colorRange)){let t=o.colorRange>0?2:1;e.push(L(21945,Ve(t)))}return Number.isFinite(o.transferCharacteristics)&&e.push(L(21946,Ve(o.transferCharacteristics))),Number.isFinite(o.colourPrimaries)&&e.push(L(21947,Ve(o.colourPrimaries))),e.length===0?null:L(21936,K(e))}var Se=class Se{static generateVideoInitSegment(e){let t=e.codecWidth,i=e.codecHeight,n=e.codecConfig,r=e.codecType===4?jn(e):n,s=Yn(e);if(!r)return f.e(Se.TAG,"generateVideoInitSegment(): Missing codec configuration for video track"),new Uint8Array(0);let a=L(440786851,K([L(17030,Y(1,1)),L(17143,Y(1,1)),L(17138,Y(4,1)),L(17139,Y(8,1)),L(17026,je("webm")),L(17031,Y(2,1)),L(17029,Y(2,1))])),l=L(357149030,K([L(2807729,Y(1e6,3)),L(19840,je("e-remux")),L(22337,je("e-remux"))])),h=[L(176,Y(t,2)),L(186,Y(i,2)),...s?[s]:[]],_=L(174,K([L(215,Y(1,1)),L(29637,Y(1,1)),L(131,Y(1,1)),L(134,je(Kn(e.codecType))),L(25506,r),L(224,K(h))])),c=L(374648427,K([_])),p=K([l,c]),u=new Uint8Array([24,83,128,103,255]),y=K([u,p]);return K([a,y])}static generateAudioInitSegment(e){let t=e.codecConfig,i=e.codec,n=i==="opus",r=n?48e3:e.audioSampleRate,s=e.channelCount,a=Math.round(e.preSkipSamples*(1e9/r)),l=8e7;if(!t)return f.e(Se.TAG,"generateAudioInitSegment(): Missing codec configuration for audio track"),new Uint8Array(0);let h;switch(i){case"opus":h="A_OPUS";break;case"vorbis":h="A_VORBIS";break;default:return f.w(Se.TAG,`generateAudioInitSegment: Unsupported codec ${i}`),new Uint8Array}let _=L(440786851,K([L(17030,Y(1,1)),L(17143,Y(1,1)),L(17138,Y(4,1)),L(17139,Y(8,1)),L(17026,je("webm")),L(17031,Y(2,1)),L(17029,Y(2,1))])),c=L(357149030,K([L(2807729,Y(1e6,3)),L(19840,je("e-remux")),L(22337,je("e-remux"))])),p=L(174,K([L(215,Y(2,1)),L(29637,Y(2,1)),L(131,Y(2,1)),L(134,je(h)),L(25506,t),...n?[L(22186,Ve(a)),L(22203,Ve(l))]:[],L(225,K([L(181,Wn(r)),L(159,Y(s,1))]))])),u=L(374648427,K([p])),y=K([c,u]),g=new Uint8Array([24,83,128,103,255]),x=K([g,y]),b=K([_,x]);return f.v(Se.TAG,`generateAudioInitSegment() codec=${i}, sampleRate=${r}, channels=${s}, codecConfig.length=${t.length}`),b}static generateVideoCluster(e,t,i,n){let r=e[t].dts,s=L(231,Ve(r)),a=0,l,h=e[e.length-1].dts-e[t].dts;(h<0||h>32767)&&f.w(Se.TAG,`generateVideoCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${r} dtsDelta: ${h} framesToProcess: ${e.length-t}`),e[0].isKeyframe||f.e(Se.TAG,"Cluster must start with a keyframe");let _=[];for(let c=t;c<e.length;c++){let{rawData:p,dts:u,isKeyframe:y}=e[c],g=u-r;if(g<0||g>32767){a=c;break}if(c>t&&y&&f.e(Se.TAG,`generateVideoCluster() - Frame at index ${c} is a keyframe but not the first frame in the cluster.`),ti===0||ti===2&&c<e.length-1){let b=new Uint8Array(4);b[0]=129,b[1]=g>>8&255,b[2]=g&255,b[3]=y?128:0;let S=n===5?Re.stripLeadingObuFraming(p):p,A=L(163,K([b,S]));_.push(A)}else{let b=new Uint8Array(4);b[0]=129,b[1]=g>>8&255,b[2]=g&255,b[3]=y?128:0;let S=n===5?Re.stripLeadingObuFraming(p):p,A=L(161,K([b,S])),T=L(155,Y(i,4)),P=L(160,K([A,T]));_.push(P)}}if(a>0){let c=L(524531317,K([s,..._])),p=Se.generateVideoCluster(e,a,i,n);l=K([c,p])}else l=L(524531317,K([s,..._]));return l}static generateAudioCluster(e,t,i){let n=e[t].dts,r=L(231,Ve(n)),s=0,a,l=e[e.length-1].dts-e[t].dts;(l<0||l>32767)&&f.w(Se.TAG,`generateAudioCluster() - cluster contains blockTimecode(s) out of range; clusterDTS: ${n} dtsDelta: ${l} framesToProcess: ${e.length-t}`);let h=[];for(let _=t;_<e.length;_++){let{unit:c,dts:p}=e[_],u=p-n;if(u<0||u>32767){s=_;break}if(ti===0||ti===2&&_<e.length-1){let g=new Uint8Array(4);g[0]=130,g[1]=u>>8&255,g[2]=u&255,g[3]=0;let x=L(163,K([g,c]));h.push(x)}else{let g=new Uint8Array(3);g[0]=130,g[1]=u>>8&255,g[2]=u&255;let x=L(161,K([g,c])),b=L(155,Y(i,4)),S=L(160,K([x,b]));h.push(S)}}if(s>0){let _=L(524531317,K([r,...h])),c=Se.generateAudioCluster(e,s,i);a=K([_,c])}else a=L(524531317,K([r,...h]));return a}};d(Se,"TAG","WebMGenerator");var Ge=Se;var Ye=class Ye extends Le{constructor(){super(...arguments);d(this,"_dtsBase",1/0);d(this,"_audioDtsBase",1/0);d(this,"_videoDtsBase",1/0);d(this,"_audioNextDts",1/0);d(this,"_videoNextDts",1/0);d(this,"_audioStashedLastFrame",null);d(this,"_videoStashedLastFrame",null);d(this,"_refVideoFrameDuration",33.333333333333336);d(this,"_refAudioFrameDuration",20);d(this,"_audioSegmentInfoList",new ze("audio"));d(this,"_videoSegmentInfoList",new ze("video"));d(this,"_pendingVideoFrames",[]);d(this,"_onInitSegment",_e);d(this,"_onMediaSegment",_e);d(this,"_onTrackData",(t,i)=>{f.a(Ye.TAG,"onMediaSegment callback must be specificed!",this._onMediaSegment),this._dtsBase===1/0&&this._calculateDtsBase(t,i),this._remuxVideo(i),this._remuxAudio(t)});d(this,"_onTrackMetadata",t=>{f.a(Ye.TAG,"onTrackMetadata: onInitSegment callback must be specified!",this._onInitSegment);let i;if(t.type==="audio"){let r=this._audioMeta=t;this._refAudioFrameDuration=Number.isFinite(r.refFrameDuration)?r.refFrameDuration:this._refAudioFrameDuration,i=Ge.generateAudioInitSegment(r),this._isAudioMetadataDispatched=!0}else{let r=this._videoMeta=t;this._refVideoFrameDuration=Number.isFinite(r.refFrameDuration)?r.refFrameDuration:this._refVideoFrameDuration,i=Ge.generateVideoInitSegment(r),this._isVideoMetadataDispatched=!0}let n={kind:0,type:t.type,data:i,codec:`${t.codec}`,container:t.type==="audio"?"audio/webm":"video/webm",mediaDuration:t.duration};this._onInitSegment(t.type,n)})}destroy(){this._onInitSegment=_e,this._onMediaSegment=_e,this.clear()}get onInitSegment(){return this._onInitSegment}set onInitSegment(t){this._onInitSegment=t}get onMediaSegment(){return this._onMediaSegment}set onMediaSegment(t){this._onMediaSegment=t}bindDataSource(t){return t.onTrackData=this._onTrackData,t.onTrackMetadata=this._onTrackMetadata,this}insertDiscontinuity(){this._audioNextDts=this._videoNextDts=1/0}clear(){this._dtsBase=1/0,this._audioDtsBase=1/0,this._videoDtsBase=1/0,this._audioNextDts=1/0,this._videoNextDts=1/0,this._videoMeta=null,this._audioMeta=null,this._audioStashedLastFrame=null,this._videoStashedLastFrame=null,this._videoSegmentInfoList.clear(),this._audioSegmentInfoList.clear(),this._pendingVideoFrames=[]}get timestampBase(){return this._dtsBase!==1/0?this._dtsBase:void 0}flushStashedFrames(){let t=this._videoStashedLastFrame,i=this._audioStashedLastFrame,n={type:"video",id:1,sequenceNumber:0,frames:[],length:0};t!=null&&(n.frames.push(t),n.length=t.length);let r={type:"audio",id:2,sequenceNumber:0,frames:[],length:0};i!=null&&(r.frames.push(i),r.length=i.length),this._videoStashedLastFrame=null,this._audioStashedLastFrame=null,this._remuxVideo(n,!0),this._remuxAudio(r,!0)}_calculateDtsBase(t,i){this._dtsBase===1/0&&(t.frames.length>0&&(this._audioDtsBase=t.frames[0].dts),i.frames.length>0&&(this._videoDtsBase=i.frames[0].dts),this._dtsBase=Math.min(this._audioDtsBase,this._videoDtsBase))}_flushPendingVideoFrames(){if(this._pendingVideoFrames.length===0)return;let t=new We,i=this._pendingVideoFrames[0],n=this._pendingVideoFrames[this._pendingVideoFrames.length-1];if(i.isKeyframe||f.e(Ye.TAG,"Pending video frames must start with a keyframe"),i.isKeyframe){let a=new ye(i.dts,i.pts,0,i.dts,!0);t.appendSyncPoint(a)}t.beginDts=i.dts,t.endDts=n.dts,t.beginPts=i.pts,t.endPts=n.pts,t.originalBeginDts=i.dts,t.originalEndDts=n.dts,t.firstFrame=new ye(i.dts,i.pts,0,i.dts,i.isKeyframe),t.lastFrame=new ye(n.dts,n.pts,0,n.dts,n.isKeyframe);let r=Ge.generateVideoCluster(this._pendingVideoFrames,0,this._refVideoFrameDuration,this._videoMeta.codecType),s={kind:1,type:"video",data:r,frameCount:this._pendingVideoFrames.length,info:t};this._onMediaSegment("video",s),this._pendingVideoFrames=[]}_remuxVideo(t,i=!1){if(!(t.frames.length===0&&!i)){if(!this.isVideoMetadataDispatched){f.w(Ye.TAG,"_remuxVideo: VideoData received before CodecConfigurationRecord");return}for(let n of t.frames)n.isKeyframe&&(this._flushPendingVideoFrames(),t.sequenceNumber++),this._pendingVideoFrames.push(n);i&&this._flushPendingVideoFrames(),t.frames=[],t.length=0}}_remuxAudio(t,i=!1){if(t.frames.length===0)return;if(!this._isAudioMetadataDispatched){f.w(Ye.TAG,"_remuxAudio: AudioData received before CodecConfigurationRecord");return}let n=t,r=n.frames,s=-1,a=-1;if(r.length===1&&!i)return;let l;if(r.length>1&&(l=r.pop()),this._audioStashedLastFrame!=null){let u=this._audioStashedLastFrame;this._audioStashedLastFrame=null,r.unshift(u)}if(l!=null&&(this._audioStashedLastFrame=l),r.length===0)return;let h=r[0].dts-this._dtsBase;if(this._audioNextDts!==1/0){let u=h-this._audioNextDts;for(let y=0;y<r.length;y++)r[y].dts=r[y].dts-u}else this._audioNextDts=h;s=r[0].dts,a=r[r.length-1].dts,this._audioNextDts=a+this._refAudioFrameDuration;let _=Ge.generateAudioCluster(r,0,this._refAudioFrameDuration),c=new We;c.beginDts=s,c.endDts=a,c.beginPts=s,c.endPts=a,c.originalBeginDts=h,c.originalEndDts=r[r.length-1].dts-this._dtsBase,c.firstFrame=new ye(s,s,this._refAudioFrameDuration,r[0].length,!1),c.lastFrame=new ye(a,a,this._refAudioFrameDuration,r[r.length-1].length,!1),this._audioSegmentInfoList.append(c);let p={kind:1,type:"audio",data:_,frameCount:r.length,info:c};this._onMediaSegment&&this._onMediaSegment("audio",p),n.frames=[],n.length=0}};d(Ye,"TAG","WebMRemuxer");var Tt=Ye;var Gi=class{constructor(){this._firstCheckpoint=0,this._lastCheckpoint=0,this._intervalBytes=0,this._totalBytes=0,this._lastSecondBytes=0,self.performance&&self.performance.now?this._now=self.performance.now.bind(self.performance):this._now=Date.now}reset(){this._firstCheckpoint=this._lastCheckpoint=0,this._totalBytes=this._intervalBytes=0,this._lastSecondBytes=0}addBytes(e){this._firstCheckpoint===0?(this._firstCheckpoint=this._now(),this._lastCheckpoint=this._firstCheckpoint,this._intervalBytes+=e,this._totalBytes+=e):this._now()-this._lastCheckpoint<1e3?(this._intervalBytes+=e,this._totalBytes+=e):(this._lastSecondBytes=this._intervalBytes,this._intervalBytes=e,this._totalBytes+=e,this._lastCheckpoint=this._now())}get currentKBps(){this.addBytes(0);let e=(this._now()-this._lastCheckpoint)/1e3;return e==0&&(e=1),this._intervalBytes/e/1024}get lastSecondKBps(){return this.addBytes(0),this._lastSecondBytes!==0?this._lastSecondBytes/1024:this._now()-this._lastCheckpoint>=500?this.currentKBps:0}get averageKBps(){let e=(this._now()-this._firstCheckpoint)/1e3;return this._totalBytes/e/1024}},ii=Gi;var U={kIdle:0,kConnecting:1,kBuffering:2,kError:3,kComplete:4},$={OK:"OK",EXCEPTION:"Exception",HTTP_STATUS_CODE_INVALID:"HttpStatusCodeInvalid",CONNECTING_TIMEOUT:"ConnectingTimeout",EARLY_EOF:"EarlyEof",UNRECOVERABLE_EARLY_EOF:"UnrecoverableEarlyEof"},Ee=class{constructor(e){this._type=e||"undefined",this._status=U.kIdle,this._needStash=!1,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}destroy(){this._status=U.kIdle,this._onContentLengthKnown=null,this._onURLRedirect=null,this._onDataArrival=null,this._onError=null,this._onComplete=null}isWorking(){return this._status===U.kConnecting||this._status===U.kBuffering}get type(){return this._type}get status(){return this._status}get needStashBuffer(){return this._needStash}get onContentLengthKnown(){return this._onContentLengthKnown}set onContentLengthKnown(e){this._onContentLengthKnown=e}get onURLRedirect(){return this._onURLRedirect}set onURLRedirect(e){this._onURLRedirect=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}open(e,t){throw new St("Unimplemented abstract function!")}abort(){throw new St("Unimplemented abstract function!")}};var qi=class extends Ee{static isSupported(){try{let e=Z.msedge&&Z.version.minor>=15048,t=Z.msedge?e:!0;return self.fetch&&self.ReadableStream&&t}catch(e){return!1}}constructor(e,t){super("fetch-stream-loader"),this.TAG="FetchStreamLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._requestAbort=!1,this._abortController=null,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let n=this._seekHandler.getConfig(i,t),r=new self.Headers;if(typeof n.headers=="object"){let a=n.headers;for(let l in a)a.hasOwnProperty(l)&&r.append(l,a[l])}let s={method:"GET",headers:r,mode:"cors",cache:"default",referrerPolicy:"no-referrer-when-downgrade"};if(typeof this._config.headers=="object")for(let a in this._config.headers)r.append(a,this._config.headers[a]);e.cors===!1&&(s.mode="same-origin"),e.withCredentials&&(s.credentials="include"),e.referrerPolicy&&(s.referrerPolicy=e.referrerPolicy),self.AbortController&&(this._abortController=new self.AbortController,s.signal=this._abortController.signal),this._status=U.kConnecting,self.fetch(n.url,s).then(a=>{if(this._requestAbort){this._status=U.kIdle,a.body.cancel();return}if(a.ok&&a.status>=200&&a.status<=299){if(a.url!==n.url&&this._onURLRedirect){let h=this._seekHandler.removeURLParameters(a.url);this._onURLRedirect(h)}let l=a.headers.get("Content-Length");return l!=null&&(this._contentLength=parseInt(l),this._contentLength!==0&&this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)),this._pump.call(this,a.body.getReader())}else if(this._status=U.kError,this._onError)this._onError($.HTTP_STATUS_CODE_INVALID,{code:a.status,msg:a.statusText});else throw new J("FetchStreamLoader: Http code invalid, "+a.status+" "+a.statusText)}).catch(a=>{if(!(this._abortController&&this._abortController.signal.aborted))if(this._status=U.kError,this._onError)this._onError($.EXCEPTION,{code:-1,msg:a.message});else throw a})}abort(){if(this._requestAbort=!0,(this._status!==U.kBuffering||!Z.chrome)&&this._abortController)try{this._abortController.abort()}catch(e){}}_pump(e){return e.read().then(t=>{if(t.done)if(this._contentLength!==null&&this._receivedLength<this._contentLength){this._status=U.kError;let i=$.EARLY_EOF,n={code:-1,msg:"Fetch stream meet Early-EOF"};if(this._onError)this._onError(i,n);else throw new J(n.msg)}else this._status=U.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1);else{if(this._abortController&&this._abortController.signal.aborted){this._status=U.kComplete;return}else if(this._requestAbort===!0)return this._status=U.kComplete,e.cancel();this._status=U.kBuffering;let i=t.value.buffer,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),this._pump(e)}}).catch(t=>{if(this._abortController&&this._abortController.signal.aborted){this._status=U.kComplete;return}if(t.code===11&&Z.msedge)return;this._status=U.kError;let i=0,n=null;if((t.code===19||t.message==="network error")&&(this._contentLength===null||this._contentLength!==null&&this._receivedLength<this._contentLength)?(i=$.EARLY_EOF,n={code:t.code,msg:"Fetch stream meet Early-EOF"}):(i=$.EXCEPTION,n={code:t.code,msg:t.message}),this._onError)this._onError(i,n);else throw new J(n.msg)})}},Wi=qi;var zi=class extends Ee{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="moz-chunked-arraybuffer",e.responseType==="moz-chunked-arraybuffer"}catch(e){return f.w("MozChunkedLoader",e.message),!1}}constructor(e,t){super("xhr-moz-chunked-loader"),this.TAG="MozChunkedLoader",this._seekHandler=e,this._config=t,this._needStash=!0,this._xhr=null,this._requestAbort=!1,this._contentLength=null,this._receivedLength=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onloadend=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}open(e,t){this._dataSource=e,this._range=t;let i=e.url;this._config.reuseRedirectedURL&&e.redirectedURL!=null&&(i=e.redirectedURL);let n=this._seekHandler.getConfig(i,t);this._requestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="moz-chunked-arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onloadend=this._onLoadEnd.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let s=n.headers;for(let a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}if(typeof this._config.headers=="object"){let s=this._config.headers;for(let a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}this._status=U.kConnecting,r.send()}abort(){this._requestAbort=!0,this._xhr&&this._xhr.abort(),this._status=U.kComplete}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null&&t.responseURL!==this._requestURL&&this._onURLRedirect){let i=this._seekHandler.removeURLParameters(t.responseURL);this._onURLRedirect(i)}if(t.status!==0&&(t.status<200||t.status>299))if(this._status=U.kError,this._onError)this._onError($.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new J("MozChunkedLoader: Http code invalid, "+t.status+" "+t.statusText);else this._status=U.kBuffering}}_onProgress(e){if(this._status===U.kError)return;this._contentLength===null&&e.total!==null&&e.total!==0&&(this._contentLength=e.total,this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength));let t=e.target.response,i=this._range.from+this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onLoadEnd(e){if(this._requestAbort===!0){this._requestAbort=!1;return}else if(this._status===U.kError)return;this._status=U.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1)}_onXhrError(e){this._status=U.kError;let t=0,i=null;if(this._contentLength&&e.loaded<this._contentLength?(t=$.EARLY_EOF,i={code:-1,msg:"Moz-Chunked stream meet Early-Eof"}):(t=$.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new J(i.msg)}},Ki=zi;var ji=class extends Ee{static isSupported(){try{let e=new XMLHttpRequest;return e.open("GET","https://example.com",!0),e.responseType="arraybuffer",e.responseType==="arraybuffer"}catch(e){return f.w("RangeLoader",e.message),!1}}constructor(e,t){super("xhr-range-loader"),this.TAG="RangeLoader",this._seekHandler=e,this._config=t,this._needStash=!1,this._chunkSizeKBList=[128,256,384,512,768,1024,1536,2048,3072,4096,5120,6144,7168,8192],this._currentChunkSizeKB=384,this._currentSpeedNormalized=0,this._zeroSpeedChunkCount=0,this._xhr=null,this._speedSampler=new ii,this._requestAbort=!1,this._waitForTotalLength=!1,this._totalLengthReceived=!1,this._currentRequestURL=null,this._currentRedirectedURL=null,this._currentRequestRange=null,this._totalLength=null,this._contentLength=null,this._receivedLength=0,this._lastTimeLoaded=0}destroy(){this.isWorking()&&this.abort(),this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr=null),super.destroy()}get currentSpeed(){return this._speedSampler.lastSecondKBps}open(e,t){this._dataSource=e,this._range=t,this._status=U.kConnecting;let i=!1;this._dataSource.filesize!=null&&this._dataSource.filesize!==0&&(i=!0,this._totalLength=this._dataSource.filesize),!this._totalLengthReceived&&!i?(this._waitForTotalLength=!0,this._internalOpen(this._dataSource,{from:0,to:-1})):this._openSubRange()}_openSubRange(){let e=this._currentChunkSizeKB*1024,t=this._range.from+this._receivedLength,i=t+e;this._contentLength!=null&&i-this._range.from>=this._contentLength&&(i=this._range.from+this._contentLength-1),this._currentRequestRange={from:t,to:i},this._internalOpen(this._dataSource,this._currentRequestRange)}_internalOpen(e,t){this._lastTimeLoaded=0;let i=e.url;this._config.reuseRedirectedURL&&(this._currentRedirectedURL!=null?i=this._currentRedirectedURL:e.redirectedURL!=null&&(i=e.redirectedURL));let n=this._seekHandler.getConfig(i,t);this._currentRequestURL=n.url;let r=this._xhr=new XMLHttpRequest;if(r.open("GET",n.url,!0),r.responseType="arraybuffer",r.onreadystatechange=this._onReadyStateChange.bind(this),r.onprogress=this._onProgress.bind(this),r.onload=this._onLoad.bind(this),r.onerror=this._onXhrError.bind(this),e.withCredentials&&(r.withCredentials=!0),typeof n.headers=="object"){let s=n.headers;for(let a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}if(typeof this._config.headers=="object"){let s=this._config.headers;for(let a in s)s.hasOwnProperty(a)&&r.setRequestHeader(a,s[a])}r.send()}abort(){this._requestAbort=!0,this._internalAbort(),this._status=U.kComplete}_internalAbort(){this._xhr&&(this._xhr.onreadystatechange=null,this._xhr.onprogress=null,this._xhr.onload=null,this._xhr.onerror=null,this._xhr.abort(),this._xhr=null)}_onReadyStateChange(e){let t=e.target;if(t.readyState===2){if(t.responseURL!=null){let i=this._seekHandler.removeURLParameters(t.responseURL);t.responseURL!==this._currentRequestURL&&i!==this._currentRedirectedURL&&(this._currentRedirectedURL=i,this._onURLRedirect&&this._onURLRedirect(i))}if(t.status>=200&&t.status<=299){if(this._waitForTotalLength)return;this._status=U.kBuffering}else if(this._status=U.kError,this._onError)this._onError($.HTTP_STATUS_CODE_INVALID,{code:t.status,msg:t.statusText});else throw new J("RangeLoader: Http code invalid, "+t.status+" "+t.statusText)}}_onProgress(e){if(this._status===U.kError)return;if(this._contentLength===null){let i=!1;if(this._waitForTotalLength){this._waitForTotalLength=!1,this._totalLengthReceived=!0,i=!0;let n=e.total;this._internalAbort(),n!=null&n!==0&&(this._totalLength=n)}if(this._range.to===-1?this._contentLength=this._totalLength-this._range.from:this._contentLength=this._range.to-this._range.from+1,i){this._openSubRange();return}this._onContentLengthKnown&&this._onContentLengthKnown(this._contentLength)}let t=e.loaded-this._lastTimeLoaded;this._lastTimeLoaded=e.loaded,this._speedSampler.addBytes(t)}_normalizeSpeed(e){let t=this._chunkSizeKBList,i=t.length-1,n=0,r=0,s=i;if(e<t[0])return t[0];for(;r<=s;){if(n=r+Math.floor((s-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:s=n-1}}_onLoad(e){if(this._status===U.kError)return;if(this._waitForTotalLength){this._waitForTotalLength=!1;return}this._lastTimeLoaded=0;let t=this._speedSampler.lastSecondKBps;if(t===0&&(this._zeroSpeedChunkCount++,this._zeroSpeedChunkCount>=3&&(t=this._speedSampler.currentKBps)),t!==0){let s=this._normalizeSpeed(t);this._currentSpeedNormalized!==s&&(this._currentSpeedNormalized=s,this._currentChunkSizeKB=s)}let i=e.target.response,n=this._range.from+this._receivedLength;this._receivedLength+=i.byteLength;let r=!1;this._contentLength!=null&&this._receivedLength<this._contentLength?this._openSubRange():r=!0,this._onDataArrival&&this._onDataArrival(i,n,this._receivedLength),r&&(this._status=U.kComplete,this._onComplete&&this._onComplete(this._range.from,this._range.from+this._receivedLength-1))}_onXhrError(e){this._status=U.kError;let t=0,i=null;if(this._contentLength&&this._receivedLength>0&&this._receivedLength<this._contentLength?(t=$.EARLY_EOF,i={code:-1,msg:"RangeLoader meet Early-Eof"}):(t=$.EXCEPTION,i={code:-1,msg:e.constructor.name+" "+e.type}),this._onError)this._onError(t,i);else throw new J(i.msg)}},ri=ji;var Yi=class extends Ee{static isSupported(){try{return typeof self.WebSocket!="undefined"}catch(e){return!1}}constructor(){super("websocket-loader"),this.TAG="WebSocketLoader",this._needStash=!0,this._ws=null,this._requestAbort=!1,this._receivedLength=0}destroy(){this._ws&&this.abort(),super.destroy()}open(e){try{let t=this._ws=new self.WebSocket(e.url);t.binaryType="arraybuffer",t.onopen=this._onWebSocketOpen.bind(this),t.onclose=this._onWebSocketClose.bind(this),t.onmessage=this._onWebSocketMessage.bind(this),t.onerror=this._onWebSocketError.bind(this),this._status=U.kConnecting}catch(t){this._status=U.kError;let i={code:t.code,msg:t.message};if(this._onError)this._onError($.EXCEPTION,i);else throw new J(i.msg)}}abort(){let e=this._ws;e&&(e.readyState===0||e.readyState===1)&&(this._requestAbort=!0,e.close()),this._ws=null,this._status=U.kComplete}_onWebSocketOpen(e){this._status=U.kBuffering}_onWebSocketClose(e){if(this._requestAbort===!0){this._requestAbort=!1;return}this._status=U.kComplete,this._onComplete&&this._onComplete(0,this._receivedLength-1)}_onWebSocketMessage(e){if(e.data instanceof ArrayBuffer)this._dispatchArrayBuffer(e.data);else if(e.data instanceof Blob){let t=new FileReader;t.onload=()=>{this._dispatchArrayBuffer(t.result)},t.readAsArrayBuffer(e.data)}else{this._status=U.kError;let t={code:-1,msg:"Unsupported WebSocket message type: "+e.data.constructor.name};if(this._onError)this._onError($.EXCEPTION,t);else throw new J(t.msg)}}_dispatchArrayBuffer(e){let t=e,i=this._receivedLength;this._receivedLength+=t.byteLength,this._onDataArrival&&this._onDataArrival(t,i,this._receivedLength)}_onWebSocketError(e){this._status=U.kError;let t={code:e.code,msg:e.message};if(this._onError)this._onError($.EXCEPTION,t);else throw new J(t.msg)}},Wr=Yi;var Xi=class{constructor(e){this._zeroStart=e||!1}getConfig(e,t){let i={};if(t.from!==0||t.to!==-1){let n;t.to!==-1?n=`bytes=${t.from.toString()}-${t.to.toString()}`:n=`bytes=${t.from.toString()}-`,i.Range=n}else this._zeroStart&&(i.Range="bytes=0-");return{url:e,headers:i}}removeURLParameters(e){return e}},zr=Xi;var Qi=class{constructor(e,t){this._startName=e,this._endName=t}getConfig(e,t){let i=e;if(t.from!==0||t.to!==-1){let n=!0;i.indexOf("?")===-1&&(i+="?",n=!1),n&&(i+="&"),i+=`${this._startName}=${t.from.toString()}`,t.to!==-1&&(i+=`&${this._endName}=${t.to.toString()}`)}return{url:i,headers:{}}}removeURLParameters(e){let t=e.split("?")[0],i,n=e.indexOf("?");n!==-1&&(i=e.substring(n+1));let r="";if(i!=null&&i.length>0){let s=i.split("&");for(let a=0;a<s.length;a++){let l=s[a].split("="),h=a>0;l[0]!==this._startName&&l[0]!==this._endName&&(h&&(r+="&"),r+=s[a])}}return r.length===0?t:t+"?"+r}},Kr=Qi;var Zi=class{constructor(e,t,i){this.TAG="IOController",this._config=t,this._extraData=i,this._stashInitialSize=64*1024,t.stashInitialSize!=null&&t.stashInitialSize>0&&(this._stashInitialSize=t.stashInitialSize),this._stashUsed=0,this._stashSize=this._stashInitialSize,this._bufferSize=Math.max(this._stashSize,1024*1024*3),this._stashBuffer=new ArrayBuffer(this._bufferSize),this._stashByteStart=0,this._enableStash=!0,t.enableStashBuffer===!1&&(this._enableStash=!1),this._loader=null,this._loaderClass=null,this._seekHandler=null,this._dataSource=e,this._isWebSocketURL=/wss?:\/\/(.+?)/.test(e.url),this._refTotalLength=e.filesize?e.filesize:null,this._totalLength=this._refTotalLength,this._fullRequestFlag=!1,this._currentRange=null,this._redirectedURL=null,this._speedNormalized=0,this._speedSampler=new ii,this._speedNormalizeList=[32,64,96,128,192,256,384,512,768,1024,1536,2048,3072,4096],this._isEarlyEofReconnecting=!1,this._paused=!1,this._resumeFrom=0,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._selectSeekHandler(),this._selectLoader(),this._createLoader()}destroy(){this._loader.isWorking()&&this._loader.abort(),this._loader.destroy(),this._loader=null,this._loaderClass=null,this._dataSource=null,this._stashBuffer=null,this._stashUsed=this._stashSize=this._bufferSize=this._stashByteStart=0,this._currentRange=null,this._speedSampler=null,this._isEarlyEofReconnecting=!1,this._onDataArrival=null,this._onSeeked=null,this._onError=null,this._onComplete=null,this._onRedirect=null,this._onRecoveredEarlyEof=null,this._extraData=null}isWorking(){return this._loader&&this._loader.isWorking()&&!this._paused}isPaused(){return this._paused}get status(){return this._loader.status}get extraData(){return this._extraData}set extraData(e){this._extraData=e}get onDataArrival(){return this._onDataArrival}set onDataArrival(e){this._onDataArrival=e}get onSeeked(){return this._onSeeked}set onSeeked(e){this._onSeeked=e}get onError(){return this._onError}set onError(e){this._onError=e}get onComplete(){return this._onComplete}set onComplete(e){this._onComplete=e}get onRedirect(){return this._onRedirect}set onRedirect(e){this._onRedirect=e}get onRecoveredEarlyEof(){return this._onRecoveredEarlyEof}set onRecoveredEarlyEof(e){this._onRecoveredEarlyEof=e}get currentURL(){return this._dataSource.url}get hasRedirect(){return this._redirectedURL!=null||this._dataSource.redirectedURL!=null}get currentRedirectedURL(){return this._redirectedURL||this._dataSource.redirectedURL}get currentSpeed(){return this._loaderClass===ri?this._loader.currentSpeed:this._speedSampler.lastSecondKBps}get loaderType(){return this._loader.type}_selectSeekHandler(){let e=this._config;if(e.seekType==="range")this._seekHandler=new zr(this._config.rangeLoadZeroStart);else if(e.seekType==="param"){let t=e.seekParamStart||"bstart",i=e.seekParamEnd||"bend";this._seekHandler=new Kr(t,i)}else if(e.seekType==="custom"){if(typeof e.customSeekHandler!="function")throw new ue("Custom seekType specified in config but invalid customSeekHandler!");this._seekHandler=new e.customSeekHandler}else throw new ue(`Invalid seekType in config: ${e.seekType}`)}_selectLoader(){if(this._config.customLoader!=null)this._loaderClass=this._config.customLoader;else if(this._isWebSocketURL)this._loaderClass=Wr;else if(Wi.isSupported())this._loaderClass=Wi;else if(Ki.isSupported())this._loaderClass=Ki;else if(ri.isSupported())this._loaderClass=ri;else throw new J("Your browser doesn't support xhr with arraybuffer responseType!")}_createLoader(){this._loader=new this._loaderClass(this._seekHandler,this._config),this._loader.needStashBuffer===!1&&(this._enableStash=!1),this._loader.onContentLengthKnown=this._onContentLengthKnown.bind(this),this._loader.onURLRedirect=this._onURLRedirect.bind(this),this._loader.onDataArrival=this._onLoaderChunkArrival.bind(this),this._loader.onComplete=this._onLoaderComplete.bind(this),this._loader.onError=this._onLoaderError.bind(this)}open(e){this._currentRange={from:0,to:-1},e&&(this._currentRange.from=e),this._speedSampler.reset(),e||(this._fullRequestFlag=!0),this._loader.open(this._dataSource,Object.assign({},this._currentRange))}abort(){this._loader.abort(),this._paused&&(this._paused=!1,this._resumeFrom=0)}pause(){this.isWorking()&&(this._loader.abort(),this._stashUsed!==0?(this._resumeFrom=this._stashByteStart,this._currentRange.to=this._stashByteStart-1):this._resumeFrom=this._currentRange.to+1,this._stashUsed=0,this._stashByteStart=0,this._paused=!0)}resume(){if(this._paused){this._paused=!1;let e=this._resumeFrom;this._resumeFrom=0,this._internalSeek(e,!0)}}seek(e){this._paused=!1,this._stashUsed=0,this._stashByteStart=0,this._internalSeek(e,!0)}_internalSeek(e,t){this._loader.isWorking()&&this._loader.abort(),this._flushStashBuffer(t),this._loader.destroy(),this._loader=null;let i={from:e,to:-1};this._currentRange={from:i.from,to:-1},this._speedSampler.reset(),this._stashSize=this._stashInitialSize,this._createLoader(),this._loader.open(this._dataSource,i),this._onSeeked&&this._onSeeked()}updateUrl(e){if(!e||typeof e!="string"||e.length===0)throw new ue("Url must be a non-empty string!");this._dataSource.url=e}_expandBuffer(e){let t=this._stashSize;for(;t+1024*1024*1<e;)t*=2;if(t+=1024*1024*1,t===this._bufferSize)return;let i=new ArrayBuffer(t);if(this._stashUsed>0){let n=new Uint8Array(this._stashBuffer,0,this._stashUsed);new Uint8Array(i,0,t).set(n,0)}this._stashBuffer=i,this._bufferSize=t}_normalizeSpeed(e){let t=this._speedNormalizeList,i=t.length-1,n=0,r=0,s=i;if(e<t[0])return t[0];for(;r<=s;){if(n=r+Math.floor((s-r)/2),n===i||e>=t[n]&&e<t[n+1])return t[n];t[n]<e?r=n+1:s=n-1}}_adjustStashSize(e){let t=0;this._config.isLive?t=e/8:e<512?t=e:e>=512&&e<=1024?t=Math.floor(e*1.5):t=e*2,t>8192&&(t=8192);let i=t*1024+1024*1024*1;this._bufferSize<i&&this._expandBuffer(i),this._stashSize=t*1024}_dispatchChunks(e,t){return this._currentRange.to=t+e.byteLength-1,this._onDataArrival(e,t)}_onURLRedirect(e){this._redirectedURL=e,this._onRedirect&&this._onRedirect(e)}_onContentLengthKnown(e){e&&this._fullRequestFlag&&(this._totalLength=e,this._fullRequestFlag=!1)}_onLoaderChunkArrival(e,t,i){if(!this._onDataArrival)throw new re("IOController: No existing consumer (onDataArrival) callback!");if(this._paused)return;this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,this._onRecoveredEarlyEof&&this._onRecoveredEarlyEof()),this._speedSampler.addBytes(e.byteLength);let n=this._speedSampler.lastSecondKBps;if(n!==0){let r=this._normalizeSpeed(n);this._speedNormalized!==r&&(this._speedNormalized=r,this._adjustStashSize(r))}if(this._enableStash)if(this._stashUsed===0&&this._stashByteStart===0&&(this._stashByteStart=t),this._stashUsed+e.byteLength<=this._stashSize)new Uint8Array(this._stashBuffer,0,this._stashSize).set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;else{let r=new Uint8Array(this._stashBuffer,0,this._bufferSize);if(this._stashUsed>0){let s=this._stashBuffer.slice(0,this._stashUsed),a=this._dispatchChunks(s,this._stashByteStart);if(a<s.byteLength){if(a>0){let l=new Uint8Array(s,a);r.set(l,0),this._stashUsed=l.byteLength,this._stashByteStart+=a}}else this._stashUsed=0,this._stashByteStart+=a;this._stashUsed+e.byteLength>this._bufferSize&&(this._expandBuffer(this._stashUsed+e.byteLength),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength}else{let s=this._dispatchChunks(e,t);if(s<e.byteLength){let a=e.byteLength-s;a>this._bufferSize&&(this._expandBuffer(a),r=new Uint8Array(this._stashBuffer,0,this._bufferSize)),r.set(new Uint8Array(e,s),0),this._stashUsed+=a,this._stashByteStart=t+s}}}else if(this._stashUsed===0){let r=this._dispatchChunks(e,t);if(r<e.byteLength){let s=e.byteLength-r;s>this._bufferSize&&this._expandBuffer(s),new Uint8Array(this._stashBuffer,0,this._bufferSize).set(new Uint8Array(e,r),0),this._stashUsed+=s,this._stashByteStart=t+r}}else{this._stashUsed+e.byteLength>this._bufferSize&&this._expandBuffer(this._stashUsed+e.byteLength);let r=new Uint8Array(this._stashBuffer,0,this._bufferSize);r.set(new Uint8Array(e),this._stashUsed),this._stashUsed+=e.byteLength;let s=this._dispatchChunks(this._stashBuffer.slice(0,this._stashUsed),this._stashByteStart);if(s<this._stashUsed&&s>0){let a=new Uint8Array(this._stashBuffer,s);r.set(a,0)}this._stashUsed-=s,this._stashByteStart+=s}}_flushStashBuffer(e){if(this._stashUsed>0){let t=this._stashBuffer.slice(0,this._stashUsed),i=this._dispatchChunks(t,this._stashByteStart),n=t.byteLength-i;if(i<t.byteLength)if(e)f.w(this.TAG,`${n} bytes unconsumed data remain when flush buffer, dropped`);else{if(i>0){let r=new Uint8Array(this._stashBuffer,0,this._bufferSize),s=new Uint8Array(t,i);r.set(s,0),this._stashUsed=s.byteLength,this._stashByteStart+=i}return 0}return this._stashUsed=0,this._stashByteStart=0,n}return 0}_onLoaderComplete(e,t){this._flushStashBuffer(!0),this._onComplete&&this._onComplete(this._extraData)}_onLoaderError(e,t){switch(f.e(this.TAG,`Loader error, code = ${t.code}, msg = ${t.msg}`),this._flushStashBuffer(!1),this._isEarlyEofReconnecting&&(this._isEarlyEofReconnecting=!1,e=$.UNRECOVERABLE_EARLY_EOF),e){case $.EARLY_EOF:{if(!this._config.isLive&&this._totalLength){let i=this._currentRange.to+1;i<this._totalLength&&(f.w(this.TAG,"Connection lost, trying reconnect..."),this._isEarlyEofReconnecting=!0,this._internalSeek(i,!1));return}e=$.UNRECOVERABLE_EARLY_EOF;break}case $.UNRECOVERABLE_EARLY_EOF:case $.CONNECTING_TIMEOUT:case $.HTTP_STATUS_CODE_INVALID:case $.EXCEPTION:break}if(this._onError)this._onError(e,t);else throw new J("IOException: "+t.msg)}},Ft=Zi;var jr=(A=>(A.IO_ERROR="io_error",A.DEMUX_ERROR="demux_error",A.INIT_SEGMENT="init_segment",A.MEDIA_SEGMENT="media_segment",A.LOADING_COMPLETE="loading_complete",A.RECOVERED_EARLY_EOF="recovered_early_eof",A.MEDIA_INFO="media_info",A.METADATA_ARRIVED="metadata_arrived",A.SCRIPTDATA_ARRIVED="scriptdata_arrived",A.TIMED_ID3_METADATA_ARRIVED="timed_id3_metadata_arrived",A.PGS_SUBTITLE_ARRIVED="pgs_subtitle_arrived",A.SYNCHRONOUS_KLV_METADATA_ARRIVED="synchronous_klv_metadata_arrived",A.ASYNCHRONOUS_KLV_METADATA_ARRIVED="asynchronous_klv_metadata_arrived",A.SMPTE2038_METADATA_ARRIVED="smpte2038_metadata_arrived",A.SCTE35_METADATA_ARRIVED="scte35_metadata_arrived",A.PES_PRIVATE_DATA_DESCRIPTOR="pes_private_data_descriptor",A.PES_PRIVATE_DATA_ARRIVED="pes_private_data_arrived",A.STATISTICS_INFO="statistics_info",A.RECOMMEND_SEEKPOINT="recommend_seekpoint",A))(jr||{}),E=jr;var Ji=class{constructor(e,t){d(this,"TAG","TransmuxingController");d(this,"_emitter",new ce);d(this,"_config");d(this,"_mediaDataSource");d(this,"_currentSegmentIndex",0);d(this,"_remuxer");d(this,"_demuxer",null);d(this,"_mediaInfo",null);d(this,"_ioctl",null);d(this,"_pendingSeekTime",null);d(this,"_pendingResolveSeekPoint",null);d(this,"_statisticsReporter",null);this._config=t,e.segments||(e.segments=[{duration:e.duration,filesize:e.filesize,url:e.url}]),typeof e.cors!="boolean"&&(e.cors=!0),typeof e.withCredentials!="boolean"&&(e.withCredentials=!1),this._mediaDataSource=e,this._mediaDataSource.useWebM?this._remuxer=new Tt(t):this._remuxer=new $i(t);let i=0;this._mediaDataSource.segments.forEach(n=>{n.timestampBase=i,i+=n.duration,n.cors=e.cors,n.withCredentials=e.withCredentials,t.referrerPolicy&&(n.referrerPolicy=t.referrerPolicy)}),!isNaN(i)&&this._mediaDataSource.duration!==i&&(this._mediaDataSource.duration=i)}destroy(){this._mediaInfo=null,this._mediaDataSource=null,this._statisticsReporter&&this._disableStatisticsReporter(),this._ioctl&&(this._ioctl.destroy(),this._ioctl=null),this._demuxer&&(this._demuxer.destroy(),this._demuxer=null),this._remuxer&&this._remuxer.destroy(),this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}start(){this._loadSegment(0),this._enableStatisticsReporter()}_loadSegment(e,t){this._currentSegmentIndex=e;let i=this._mediaDataSource.segments[e],n=this._ioctl=new Ft(i,this._config,e);n.onError=this._onIOException.bind(this),n.onSeeked=this._onIOSeeked.bind(this),n.onComplete=this._onIOComplete.bind(this),n.onRedirect=this._onIORedirect.bind(this),n.onRecoveredEarlyEof=this._onIORecoveredEarlyEof.bind(this),t?this._demuxer.bindDataSource(this._ioctl):n.onDataArrival=this._onInitChunkArrival.bind(this),n.open(t)}stop(){this._internalAbort(),this._disableStatisticsReporter()}_internalAbort(){this._ioctl&&(this._ioctl.destroy(),this._ioctl=null)}pause(){this._ioctl&&this._ioctl.isWorking()&&(this._ioctl.pause(),this._disableStatisticsReporter())}resume(){this._ioctl&&this._ioctl.isPaused()&&(this._ioctl.resume(),this._enableStatisticsReporter())}seek(e){if(this._mediaInfo==null||!this._mediaInfo.isSeekable())return;let t=this._searchSegmentIndexContains(e);if(t===this._currentSegmentIndex){let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e;else{let n=i.getNearestKeyframe(e);this._remuxer.clear(),this._ioctl.seek(n.fileposition),this._pendingResolveSeekPoint=n.milliseconds}}else{let i=this._mediaInfo.segments[t];if(i==null)this._pendingSeekTime=e,this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._loadSegment(t);else{let n=i.getNearestKeyframe(e);this._internalAbort(),this._remuxer.clear(),this._remuxer.insertDiscontinuity(),this._demuxer.resetMediaInfo(),this._demuxer.timestampBase=this._mediaDataSource.segments[t].timestampBase,this._loadSegment(t,n.fileposition),this._pendingResolveSeekPoint=n.milliseconds,this._reportSegmentMediaInfo(t)}}this._enableStatisticsReporter()}_searchSegmentIndexContains(e){let t=this._mediaDataSource.segments,i=t.length-1;for(let n=0;n<t.length;n++)if(e<t[n].timestampBase){i=n-1;break}return i}_onInitChunkArrival(e,t){let i=0;if(t>0)this._demuxer.bindDataSource(this._ioctl),this._demuxer.timestampBase=this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase,i=this._demuxer.parseChunks(e,t);else{let n=ct.probe(e);"match"in n&&n.match?(this._setupFLVDemuxerRemuxer(n),i=this._demuxer.parseChunks(e,t)):"needMoreData"in n&&n.needMoreData||(f.e(this.TAG,"Non MPEG-TS/FLV, Unsupported media type!"),Promise.resolve().then(()=>{this._internalAbort()}),this._emitter.emit(E.DEMUX_ERROR,q.FORMAT_UNSUPPORTED,"Non MPEG-TS/FLV, Unsupported media type!"))}return i}_setupFLVDemuxerRemuxer(e){this._remuxer||(this._mediaDataSource.useWebM?this._remuxer=new Tt(this._config):this._remuxer=new $i(this._config)),this._demuxer=new ct(e,this._config,this._remuxer);let t=this._mediaDataSource;t.duration!=null&&!isNaN(t.duration)&&(this._demuxer.overridedDuration=t.duration),typeof t.hasAudio=="boolean"&&(this._demuxer.overridedHasAudio=t.hasAudio),typeof t.hasVideo=="boolean"&&(this._demuxer.overridedHasVideo=t.hasVideo),this._demuxer.timestampBase=t.segments[this._currentSegmentIndex].timestampBase,this._demuxer.onError=this._onDemuxException.bind(this),this._demuxer.onMediaInfo=this._onMediaInfo.bind(this),this._demuxer.onScriptMetadata=this._onScriptMetadata.bind(this),this._demuxer.onScriptData=this._onScriptData.bind(this);this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)),this._remuxer.onInitSegment=this._onRemuxerInitSegmentArrival.bind(this),this._remuxer.onMediaSegment=this._onRemuxerMediaSegmentArrival.bind(this)}_onMediaInfo(e){this._mediaInfo==null&&(this._mediaInfo=Object.assign({},e),this._mediaInfo.keyframesIndex=null,this._mediaInfo.segments=[],this._mediaInfo.segmentCount=this._mediaDataSource.segments.length,Object.setPrototypeOf(this._mediaInfo,De.prototype));let t=Object.assign({},e);Object.setPrototypeOf(t,De.prototype),this._mediaInfo.segments[this._currentSegmentIndex]=t,this._reportSegmentMediaInfo(this._currentSegmentIndex),this._pendingSeekTime!=null&&Promise.resolve().then(()=>{let i=this._pendingSeekTime;this._pendingSeekTime=null,this.seek(i)})}_onScriptMetadata(e){this._emitter.emit(E.METADATA_ARRIVED,e)}_onScriptData(e){this._emitter.emit(E.SCRIPTDATA_ARRIVED,e)}_onTimedID3Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.TIMED_ID3_METADATA_ARRIVED,e))}_onPGSSubtitle(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.PGS_SUBTITLE_ARRIVED,e))}_onSynchronousKLVMetadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e))}_onAsynchronousKLVMetadata(e){this._emitter.emit(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}_onSMPTE2038Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.dts!=null&&(e.dts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(E.SMPTE2038_METADATA_ARRIVED,e))}_onSCTE35Metadata(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),this._emitter.emit(E.SCTE35_METADATA_ARRIVED,e))}_onPESPrivateDataDescriptor(e){this._emitter.emit(E.PES_PRIVATE_DATA_DESCRIPTOR,e)}_onPESPrivateData(e){let t=this._remuxer.timestampBase;t!=null&&(e.pts!=null&&(e.pts-=t),e.nearest_pts!=null&&(e.nearest_pts-=t),e.dts!=null&&(e.dts-=t),this._emitter.emit(E.PES_PRIVATE_DATA_ARRIVED,e))}_onIOSeeked(){this._remuxer.insertDiscontinuity()}_onIOComplete(e){let i=e+1;i<this._mediaDataSource.segments.length?(this._internalAbort(),this._remuxer&&this._remuxer.flushStashedFrames(),this._loadSegment(i)):(this._remuxer&&this._remuxer.flushStashedFrames(),this._emitter.emit(E.LOADING_COMPLETE),this._disableStatisticsReporter())}_onIORedirect(e){let t=this._ioctl.extraData;this._mediaDataSource.segments[t].redirectedURL=e}_onIORecoveredEarlyEof(){this._emitter.emit(E.RECOVERED_EARLY_EOF)}_onIOException(e,t){f.e(this.TAG,`IOException: type = ${e}, code = ${t.code}, msg = ${t.msg}`),this._emitter.emit(E.IO_ERROR,e,t),this._disableStatisticsReporter()}_onDemuxException(e,t){f.e(this.TAG,`DemuxException: type = ${e}, info = ${t}`),this._emitter.emit(E.DEMUX_ERROR,e,t)}_onRemuxerInitSegmentArrival(e,t){this._emitter.emit(E.INIT_SEGMENT,e,t)}_onRemuxerMediaSegmentArrival(e,t){if(this._pendingSeekTime==null&&(this._emitter.emit(E.MEDIA_SEGMENT,e,t),this._pendingResolveSeekPoint!=null&&e==="video")){let i=t.info.syncPoints,n=this._pendingResolveSeekPoint;this._pendingResolveSeekPoint=null,Z.safari&&i.length>0&&i[0].originalDts===n&&(n=i[0].pts),this._emitter.emit(E.RECOMMEND_SEEKPOINT,n)}}_enableStatisticsReporter(){this._statisticsReporter==null&&(this._statisticsReporter=self.setInterval(this._reportStatisticsInfo.bind(this),this._config.statisticsInfoReportInterval))}_disableStatisticsReporter(){this._statisticsReporter&&(self.clearInterval(this._statisticsReporter),this._statisticsReporter=null)}_reportSegmentMediaInfo(e){var l;let t=this._mediaInfo,i=(l=t==null?void 0:t.segments)==null?void 0:l[e];if(!i)return;let h=i,{keyframesIndex:n,segments:r}=h,s=vr(h,["keyframesIndex","segments"]),a=se(j({},s),{duration:t.duration,segmentCount:t.segmentCount});this._emitter.emit(E.MEDIA_INFO,a)}_reportStatisticsInfo(){let e={};e.url=this._ioctl.currentURL,e.hasRedirect=this._ioctl.hasRedirect,e.hasRedirect&&(e.redirectedURL=this._ioctl.currentRedirectedURL),e.speed=this._ioctl.currentSpeed,e.loaderType=this._ioctl.loaderType,e.currentSegmentIndex=this._currentSegmentIndex,e.totalSegmentCount=this._mediaDataSource.segments.length,this._emitter.emit(E.STATISTICS_INFO,e)}},er=Ji;var Xn={},tr=class{constructor(e,t){if(this.TAG="Transmuxer",this._emitter=new ce,t.enableWorker&&typeof Worker!="undefined")try{this._worker=new Worker(new URL("./transmuxing-worker.js",Xn.url)),this._workerDestroying=!1,this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",param:[e,t]}),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this)},Ie.registerListener(this.e.onLoggingConfigChanged),this._worker.postMessage({cmd:"logging_config",param:Ie.getConfig()})}catch(i){f.e(this.TAG,"Error while initialize transmuxing worker, fallback to inline transmuxing"),this._worker=null,this._controller=new er(e,t)}else this._controller=new er(e,t);if(this._controller){let i=this._controller;i.on(E.IO_ERROR,this._onIOError.bind(this)),i.on(E.DEMUX_ERROR,this._onDemuxError.bind(this)),i.on(E.INIT_SEGMENT,this._onInitSegment.bind(this)),i.on(E.MEDIA_SEGMENT,this._onMediaSegment.bind(this)),i.on(E.LOADING_COMPLETE,this._onLoadingComplete.bind(this)),i.on(E.RECOVERED_EARLY_EOF,this._onRecoveredEarlyEof.bind(this)),i.on(E.MEDIA_INFO,this._onMediaInfo.bind(this)),i.on(E.METADATA_ARRIVED,this._onScriptMetadata.bind(this)),i.on(E.SCRIPTDATA_ARRIVED,this._onScriptData.bind(this)),i.on(E.TIMED_ID3_METADATA_ARRIVED,this._onTimedID3MetadataArrived.bind(this)),i.on(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,this._onSynchronousKLVMetadataArrived.bind(this)),i.on(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,this._onAsynchronousKLVMetadataArrived.bind(this)),i.on(E.SMPTE2038_METADATA_ARRIVED,this._onSMPTE2038MetadataArrived.bind(this)),i.on(E.SCTE35_METADATA_ARRIVED,this._onSCTE35MetadataArrived.bind(this)),i.on(E.PES_PRIVATE_DATA_DESCRIPTOR,this._onPESPrivateDataDescriptor.bind(this)),i.on(E.PES_PRIVATE_DATA_ARRIVED,this._onPESPrivateDataArrived.bind(this)),i.on(E.STATISTICS_INFO,this._onStatisticsInfo.bind(this)),i.on(E.RECOMMEND_SEEKPOINT,this._onRecommendSeekpoint.bind(this))}}destroy(){this._worker?this._workerDestroying||(this._workerDestroying=!0,this._worker.postMessage({cmd:"destroy"}),Ie.removeListener(this.e.onLoggingConfigChanged),this.e=null):(this._controller.destroy(),this._controller=null),this._emitter.removeAllListeners(),this._emitter=null}on(e,t){this._emitter.addListener(e,t)}off(e,t){this._emitter.removeListener(e,t)}hasWorker(){return this._worker!=null}open(){this._worker?this._worker.postMessage({cmd:"start"}):this._controller.start()}close(){this._worker?this._worker.postMessage({cmd:"stop"}):this._controller.stop()}seek(e){this._worker?this._worker.postMessage({cmd:"seek",param:e}):this._controller.seek(e)}pause(){this._worker?this._worker.postMessage({cmd:"pause"}):this._controller.pause()}resume(){this._worker?this._worker.postMessage({cmd:"resume"}):this._controller.resume()}_onInitSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.INIT_SEGMENT,e,t)})}_onMediaSegment(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.MEDIA_SEGMENT,e,t)})}_onLoadingComplete(){Promise.resolve().then(()=>{this._emitter.emit(E.LOADING_COMPLETE)})}_onRecoveredEarlyEof(){Promise.resolve().then(()=>{this._emitter.emit(E.RECOVERED_EARLY_EOF)})}_onMediaInfo(e){Promise.resolve().then(()=>{this._emitter.emit(E.MEDIA_INFO,e)})}_onScriptMetadata(e){Promise.resolve().then(()=>{this._emitter.emit(E.METADATA_ARRIVED,e)})}_onScriptData(e){Promise.resolve().then(()=>{this._emitter.emit(E.SCRIPTDATA_ARRIVED,e)})}_onTimedID3MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.TIMED_ID3_METADATA_ARRIVED,e)})}_onPGSSubtitleArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.PGS_SUBTITLE_ARRIVED,e)})}_onSynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onAsynchronousKLVMetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)})}_onSMPTE2038MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SMPTE2038_METADATA_ARRIVED,e)})}_onSCTE35MetadataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.SCTE35_METADATA_ARRIVED,e)})}_onPESPrivateDataDescriptor(e){Promise.resolve().then(()=>{this._emitter.emit(E.PES_PRIVATE_DATA_DESCRIPTOR,e)})}_onPESPrivateDataArrived(e){Promise.resolve().then(()=>{this._emitter.emit(E.PES_PRIVATE_DATA_ARRIVED,e)})}_onStatisticsInfo(e){Promise.resolve().then(()=>{this._emitter.emit(E.STATISTICS_INFO,e)})}_onIOError(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.IO_ERROR,e,t)})}_onDemuxError(e,t){Promise.resolve().then(()=>{this._emitter.emit(E.DEMUX_ERROR,e,t)})}_onRecommendSeekpoint(e){Promise.resolve().then(()=>{this._emitter.emit(E.RECOMMEND_SEEKPOINT,e)})}_onLoggingConfigChanged(e){this._worker&&this._worker.postMessage({cmd:"logging_config",param:e})}_onWorkerMessage(e){let t=e.data,i=t.data;if(t.msg==="destroyed"||this._workerDestroying){this._workerDestroying=!1,this._worker.terminate(),this._worker=null;return}switch(t.msg){case E.INIT_SEGMENT:case E.MEDIA_SEGMENT:this._emitter.emit(t.msg,i.type,i.data);break;case E.LOADING_COMPLETE:case E.RECOVERED_EARLY_EOF:this._emitter.emit(t.msg);break;case E.MEDIA_INFO:Object.setPrototypeOf(i,De.prototype),this._emitter.emit(t.msg,i);break;case E.METADATA_ARRIVED:case E.SCRIPTDATA_ARRIVED:case E.TIMED_ID3_METADATA_ARRIVED:case E.PGS_SUBTITLE_ARRIVED:case E.SYNCHRONOUS_KLV_METADATA_ARRIVED:case E.ASYNCHRONOUS_KLV_METADATA_ARRIVED:case E.SMPTE2038_METADATA_ARRIVED:case E.SCTE35_METADATA_ARRIVED:case E.PES_PRIVATE_DATA_DESCRIPTOR:case E.PES_PRIVATE_DATA_ARRIVED:case E.STATISTICS_INFO:this._emitter.emit(t.msg,i);break;case E.IO_ERROR:case E.DEMUX_ERROR:this._emitter.emit(t.msg,i.type,i.info);break;case E.RECOMMEND_SEEKPOINT:this._emitter.emit(t.msg,i);break;case"logcat_callback":f.emitter.emit("log",i.type,i.logcat);break;default:break}}},Yr=tr;var ut={NETWORK_ERROR:"NetworkError",MEDIA_ERROR:"MediaError",OTHER_ERROR:"OtherError"},ni={NETWORK_EXCEPTION:$.EXCEPTION,NETWORK_STATUS_CODE_INVALID:$.HTTP_STATUS_CODE_INVALID,NETWORK_TIMEOUT:$.CONNECTING_TIMEOUT,NETWORK_UNRECOVERABLE_EARLY_EOF:$.UNRECOVERABLE_EARLY_EOF,MEDIA_MSE_ERROR:"MediaMSEError",MEDIA_FORMAT_ERROR:q.FORMAT_ERROR,MEDIA_FORMAT_UNSUPPORTED:q.FORMAT_UNSUPPORTED,MEDIA_CODEC_UNSUPPORTED:q.CODEC_UNSUPPORTED};var Pe=Z,ir=class o{constructor(e,t,i){d(this,"TAG","SeekingHandler");d(this,"_config");d(this,"_media_element");d(this,"_always_seek_keyframe",!1);d(this,"_on_unbuffered_seek");d(this,"_request_set_current_time",!1);d(this,"_seek_request_record_clocktime",null);d(this,"_idr_sample_list",new ei);d(this,"e",null);this._config=e,this._media_element=t,this._on_unbuffered_seek=i,this.e={onMediaSeeking:this._onMediaSeeking.bind(this)};let n=Pe.chrome&&(Pe.version.major<50||Pe.version.major===50&&Pe.version.build<2661);this._always_seek_keyframe=!!(n||Pe.msedge||Pe.msie),this._always_seek_keyframe&&(this._config.accurateSeek=!1),this._media_element.addEventListener("seeking",this.e.onMediaSeeking)}destroy(){this._idr_sample_list.clear(),this._media_element.removeEventListener("seeking",this.e.onMediaSeeking)}seek(e){let t=this._isPositionBuffered(e),i=!1;if(e<1&&this._media_element.buffered.length>0){let n=this._media_element.buffered.start(0);(n<1&&e<n||Pe.safari)&&(i=!0,e=Pe.safari?.1:n)}if(i)this.directSeek(e);else if(t)if(!this._always_seek_keyframe)this.directSeek(e);else{let n=this._getNearestKeyframe(Math.floor(e*1e3));n!=null&&(e=n.dts/1e3),this.directSeek(e)}else this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(e*1e3)),this._config.accurateSeek&&this.directSeek(e)}directSeek(e){this._request_set_current_time=!0,this._media_element.currentTime=e}appendSyncPoints(e){this._idr_sample_list.appendArray(e)}_onMediaSeeking(e){if(this._request_set_current_time){this._request_set_current_time=!1;return}let t=this._media_element.currentTime,i=this._media_element.buffered;if(t<1&&i.length>0){let n=i.start(0);if(n<1&&t<n||Pe.safari){let r=Pe.safari?.1:n;this.directSeek(r);return}}if(this._isPositionBuffered(t)){if(this._always_seek_keyframe){let n=this._getNearestKeyframe(Math.floor(t*1e3));n!=null&&(t=n.dts/1e3,this.directSeek(t))}return}this._seek_request_record_clocktime=o._getClockTime(),window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_pollAndApplyUnbufferedSeek(){if(this._seek_request_record_clocktime==null)return;if(this._seek_request_record_clocktime<=o._getClockTime()-100){let t=this._media_element.currentTime;this._seek_request_record_clocktime=null,this._isPositionBuffered(t)||(this._idr_sample_list.clear(),this._on_unbuffered_seek(Math.floor(t*1e3)),this._config.accurateSeek&&this.directSeek(t))}else window.setTimeout(this._pollAndApplyUnbufferedSeek.bind(this),50)}_isPositionBuffered(e){let t=this._media_element.buffered;for(let i=0;i<t.length;i++){let n=t.start(i),r=t.end(i);if(e>=n&&e<r)return!0}return!1}_getNearestKeyframe(e){return this._idr_sample_list.getLastSyncPointBeforeDts(e)}static _getClockTime(){return self.performance&&self.performance.now?self.performance.now():Date.now()}},si=ir;var ft=class ft{constructor(e,t,i,n){d(this,"_config");d(this,"_media_element");d(this,"_on_pause_transmuxer");d(this,"_on_resume_transmuxer");d(this,"_paused",!1);d(this,"e",null);d(this,"_lazyLoadMaxDuration");d(this,"_lazyLoadRecoverDuration");this._config=e,this._lazyLoadMaxDuration=e.lazyLoadMaxDuration,this._lazyLoadRecoverDuration=e.lazyLoadRecoverDuration,this._media_element=t,this._on_pause_transmuxer=i,this._on_resume_transmuxer=n,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)}}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this.e=null}adjustLazyLoadDurations(e){this._lazyLoadMaxDuration=Math.max(4,this._lazyLoadMaxDuration*e),this._lazyLoadRecoverDuration=Math.max(2,this._lazyLoadRecoverDuration*e),f.v(ft.TAG,`Adjusted lazy load durations (factor: ${e}) to - Max: ${this._lazyLoadMaxDuration}, Recover: ${this._lazyLoadRecoverDuration}`)}notifyBufferedPositionChanged(e){this._config.isLive||!this._config.lazyLoad||(e==null?this._suspendTransmuxerIfNeeded():this._suspendTransmuxerIfBufferedPositionExceeded(e))}_onMediaTimeUpdate(e){this._paused&&this._resumeTransmuxerIfNeeded()}_suspendTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=0;for(let n=0;n<e.length;n++){let r=e.start(n),s=e.end(n);if(r<=t&&t<s){i=s;break}}i>0&&this._suspendTransmuxerIfBufferedPositionExceeded(i)}_suspendTransmuxerIfBufferedPositionExceeded(e){let t=this._media_element.currentTime;e>=t+this._lazyLoadMaxDuration&&!this._paused&&(f.v(ft.TAG,".   Maximum buffering duration exceeded, suspend transmuxing task"),this.suspendTransmuxer(),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate))}suspendTransmuxer(){this._paused=!0,this._on_pause_transmuxer()}_resumeTransmuxerIfNeeded(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._lazyLoadRecoverDuration,n=!1;for(let r=0;r<e.length;r++){let s=e.start(r),a=e.end(r);if(t>=s&&t<a){t>=a-i&&(n=!0);break}}n&&(f.v(ft.TAG,"Continue loading from paused position"),this.resumeTransmuxer(),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate))}resumeTransmuxer(){this._paused=!1,this._on_resume_transmuxer()}};d(ft,"TAG","LoadingController");var rr=ft,ai=rr;var nr=class{constructor(e,t){d(this,"TAG","StartupStallJumper");d(this,"_media_element");d(this,"_on_direct_seek");d(this,"_canplay_received",!1);d(this,"e",null);this._media_element=e,this._on_direct_seek=t,this.e={onMediaCanPlay:this._onMediaCanPlay.bind(this),onMediaStalled:this._onMediaStalled.bind(this),onMediaProgress:this._onMediaProgress.bind(this)},this._media_element.addEventListener("canplay",this.e.onMediaCanPlay),this._media_element.addEventListener("stalled",this.e.onMediaStalled),this._media_element.addEventListener("progress",this.e.onMediaProgress)}destroy(){this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay),this._media_element.removeEventListener("stalled",this.e.onMediaStalled),this._media_element.removeEventListener("progress",this.e.onMediaProgress)}_onMediaCanPlay(e){this._canplay_received=!0,this._media_element.removeEventListener("canplay",this.e.onMediaCanPlay)}_onMediaStalled(e){this._detectAndFixStuckPlayback(!0)}_onMediaProgress(e){this._detectAndFixStuckPlayback()}_detectAndFixStuckPlayback(e){let t=this._media_element,i=t.buffered;e||!this._canplay_received||t.readyState<2?i.length>0&&t.currentTime<i.start(0)&&(f.w(this.TAG,`Playback seems stuck at ${t.currentTime}, seek to ${i.start(0)}`),this._on_direct_seek(i.start(0)),this._media_element.removeEventListener("progress",this.e.onMediaProgress)):this._media_element.removeEventListener("progress",this.e.onMediaProgress)}},oi=nr;var sr=class{constructor(e,t,i){d(this,"_config");d(this,"_media_element");d(this,"_on_direct_seek");this._config=e,this._media_element=t,this._on_direct_seek=i}notifyBufferedRangeUpdate(){this._chaseLiveLatency()}_chaseLiveLatency(){let e=this._media_element.buffered,t=this._media_element.currentTime,i=this._media_element.paused;if(!this._config.isLive||!this._config.liveBufferLatencyChasing||e.length==0||!this._config.liveBufferLatencyChasingOnPaused&&i)return;let n=e.end(e.length-1);if(n>this._config.liveBufferLatencyMaxLatency&&n-t>this._config.liveBufferLatencyMaxLatency){let r=n-this._config.liveBufferLatencyMinRemain;this._on_direct_seek(r)}}},li=sr;var ar=class{constructor(e,t){d(this,"_config",null);d(this,"_media_element");d(this,"e",null);this._config=e,this._media_element=t,this.e={onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this)},this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate)}destroy(){this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element=null,this._config=null}_onMediaTimeUpdate(e){if(!this._config.isLive||!this._config.liveSync)return;let t=this._getCurrentLatency();if(t>this._config.liveSyncMaxLatency){let i=Math.min(2,Math.max(1,this._config.liveSyncPlaybackRate));this._media_element.playbackRate=i}else t>this._config.liveSyncTargetLatency||this._media_element.playbackRate!==1&&this._media_element.playbackRate!==0&&(this._media_element.playbackRate=1)}_getCurrentLatency(){if(!this._media_element)return 0;let e=this._media_element.buffered,t=this._media_element.currentTime;return e.length==0?0:e.end(e.length-1)-t}},di=ar;var or=class{constructor(e,t){d(this,"TAG","PlayerEngineMainThread");d(this,"_emitter",new ce);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_mse_controller",null);d(this,"_transmuxer",null);d(this,"_pending_seek_time",null);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_mse_source_opened",!1);d(this,"_has_pending_load",!1);d(this,"_loaded_metadata_received",!1);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=j(j(j({},He()),t),e.isLive===!0&&{isLive:!0}),this.e={onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this)}}destroy(){var e,t;(e=this._emitter)==null||e.emit(V.DESTROYING),this._transmuxer&&this.unload(),this._media_element&&this.detachMediaElement(),this.e=null,this._media_data_source=null,(t=this._emitter)==null||t.removeAllListeners(),this._emitter=null}on(e,t){var i;(i=this._emitter)==null||i.addListener(e,t),e===V.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>{var n;return(n=this._emitter)==null?void 0:n.emit(V.MEDIA_INFO,this.mediaInfo)}):e==V.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>{var n;return(n=this._emitter)==null?void 0:n.emit(V.STATISTICS_INFO,this.statisticsInfo)})}off(e,t){var i;(i=this._emitter)==null||i.removeListener(e,t)}attachMediaElement(e){this._media_element=e,e.src="",e.removeAttribute("src"),e.srcObject=null,e.load(),e.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata);let t={getCurrentTime:()=>e.currentTime,getReadyState:()=>e.readyState,getError:()=>e.error,setOnMediaTimeUpdate:i=>{e.ontimeupdate=i}};this._mse_controller=new Fr(this._config,t),this._mse_controller.on(ee.UPDATE_END,this._onMSEUpdateEnd.bind(this)),this._mse_controller.on(ee.BUFFER_FULL,this._onMSEBufferFull.bind(this)),this._mse_controller.on(ee.QUOTA_EXCEEDED_BUFFER_FULL,this._onMSEQuotaExceededBufferFull.bind(this)),this._mse_controller.on(ee.SOURCE_OPEN,this._onMSESourceOpen.bind(this)),this._mse_controller.on(ee.ERROR,this._onMSEError.bind(this)),this._mse_controller.on(ee.START_STREAMING,this._onMSEStartStreaming.bind(this)),this._mse_controller.on(ee.END_STREAMING,this._onMSEEndStreaming.bind(this)),this._mse_controller.isManagedMediaSource()?(e.disableRemotePlayback=!0,e.srcObject=this._mse_controller.getObject()):e.src=this._mse_controller.getObjectURL()}detachMediaElement(){var e,t;this._media_element&&((e=this._mse_controller)==null||e.shutdown(),this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null,(t=this._mse_controller)==null||t.revokeObjectURL()),this._mse_controller&&(this._mse_controller.destroy(),this._mse_controller=null)}load(){if(!this._media_element)throw new re("HTMLMediaElement must be attached before load()!");if(this._transmuxer)throw new re("load() has been called, please call unload() first!");if(!this._has_pending_load){if(this._config.deferLoadAfterSourceOpen&&!this._mse_source_opened){this._has_pending_load=!0;return}this._transmuxer=new Yr(this._media_data_source,this._config),this._transmuxer.on(E.INIT_SEGMENT,(e,t)=>{var i;(i=this._mse_controller)==null||i.appendInitSegment(t)}),this._transmuxer.on(E.MEDIA_SEGMENT,(e,t)=>{var i,n,r;(i=this._mse_controller)==null||i.appendMediaSegment(t),!this._config.isLive&&e==="video"&&t.data&&t.data.byteLength>0&&"info"in t&&((n=this._seeking_handler)==null||n.appendSyncPoints(t.info.syncPoints)),(r=this._loading_controller)==null||r.notifyBufferedPositionChanged(t.info.endDts/1e3)}),this._transmuxer.on(E.LOADING_COMPLETE,()=>{var e,t;(e=this._mse_controller)==null||e.endOfStream(),(t=this._emitter)==null||t.emit(V.LOADING_COMPLETE)}),this._transmuxer.on(E.RECOVERED_EARLY_EOF,()=>{var e;(e=this._emitter)==null||e.emit(V.RECOVERED_EARLY_EOF)}),this._transmuxer.on(E.IO_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit(V.ERROR,ut.NETWORK_ERROR,e,t)}),this._transmuxer.on(E.DEMUX_ERROR,(e,t)=>{var i;(i=this._emitter)==null||i.emit(V.ERROR,ut.MEDIA_ERROR,e,t)}),this._transmuxer.on(E.MEDIA_INFO,e=>{var t;this._media_info=e,(t=this._emitter)==null||t.emit(V.MEDIA_INFO,Object.assign({},e))}),this._transmuxer.on(E.STATISTICS_INFO,e=>{var t;this._statistics_info=this._fillStatisticsInfo(e),(t=this._emitter)==null||t.emit(V.STATISTICS_INFO,Object.assign({},e))}),this._transmuxer.on(E.RECOMMEND_SEEKPOINT,e=>{var t;this._media_element&&!this._config.accurateSeek&&((t=this._seeking_handler)==null||t.directSeek(e/1e3))}),this._transmuxer.on(E.METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.METADATA_ARRIVED,e)}),this._transmuxer.on(E.SCRIPTDATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.SCRIPTDATA_ARRIVED,e)}),this._transmuxer.on(E.TIMED_ID3_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.TIMED_ID3_METADATA_ARRIVED,e)}),this._transmuxer.on(E.PGS_SUBTITLE_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.PGS_SUBTITLE_ARRIVED,e)}),this._transmuxer.on(E.SYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.SYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(E.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.ASYNCHRONOUS_KLV_METADATA_ARRIVED,e)}),this._transmuxer.on(E.SMPTE2038_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.SMPTE2038_METADATA_ARRIVED,e)}),this._transmuxer.on(E.SCTE35_METADATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.SCTE35_METADATA_ARRIVED,e)}),this._transmuxer.on(E.PES_PRIVATE_DATA_DESCRIPTOR,e=>{var t;(t=this._emitter)==null||t.emit(V.PES_PRIVATE_DATA_DESCRIPTOR,e)}),this._transmuxer.on(E.PES_PRIVATE_DATA_ARRIVED,e=>{var t;(t=this._emitter)==null||t.emit(V.PES_PRIVATE_DATA_ARRIVED,e)}),this._seeking_handler=new si(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new ai(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new oi(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new li(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new di(this._config,this._media_element)),this._media_element.readyState>0&&this._seeking_handler.directSeek(0),this._transmuxer.open()}}unload(){var e,t,i,n,r,s,a,l;(e=this._media_element)==null||e.pause(),(t=this._live_latency_synchronizer)==null||t.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(i=this._startup_stall_jumper)==null||i.destroy(),this._startup_stall_jumper=null,(n=this._loading_controller)==null||n.destroy(),this._loading_controller=null,(r=this._seeking_handler)==null||r.destroy(),this._seeking_handler=null,(s=this._mse_controller)==null||s.flush(),(a=this._transmuxer)==null||a.close(),(l=this._transmuxer)==null||l.destroy(),this._transmuxer=null}play(){return this._media_element.play()}pause(){this._media_element.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onMSESourceOpen(){this._mse_source_opened=!0,this._has_pending_load&&(this._has_pending_load=!1,this.load())}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEQuotaExceededBufferFull(e){var t;if(f.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){f.w(this.TAG,"LoadingController not available for quota adjustment");return}(t=this._loading_controller)==null||t.adjustLazyLoadDurations(.5)}_onMSEBufferFull(){var e;f.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMSEError(e){var t;(t=this._emitter)==null||t.emit(V.ERROR,ut.MEDIA_ERROR,ni.MEDIA_MSE_ERROR,e)}_onMSEStartStreaming(){var e;this._loaded_metadata_received&&(this._config.isLive||(f.v(this.TAG,"Resume transmuxing task due to ManagedMediaSource onStartStreaming"),(e=this._loading_controller)==null||e.resumeTransmuxer()))}_onMSEEndStreaming(){var e;this._config.isLive||(f.v(this.TAG,"Suspend transmuxing task due to ManagedMediaSource onEndStreaming"),(e=this._loading_controller)==null||e.suspendTransmuxer())}_onMediaLoadedMetadata(e){var t;this._loaded_metadata_received=!0,this._pending_seek_time!=null&&((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=null)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t,i;(t=this._mse_controller)==null||t.flush(),(i=this._transmuxer)==null||i.seek(e)}_onRequestPauseTransmuxer(){var e;(e=this._transmuxer)==null||e.pause()}_onRequestResumeTransmuxer(){var e;(e=this._transmuxer)==null||e.resume()}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},lr=or;var Qn={};var dr=class{constructor(e,t){d(this,"TAG","PlayerEngineDedicatedThread");d(this,"_emitter",new ce);d(this,"_media_data_source");d(this,"_config");d(this,"_media_element",null);d(this,"_worker");d(this,"_worker_destroying",!1);d(this,"_seeking_handler",null);d(this,"_loading_controller",null);d(this,"_startup_stall_jumper",null);d(this,"_live_latency_chaser",null);d(this,"_live_latency_synchronizer",null);d(this,"_pending_seek_time",NaN);d(this,"_media_info",null);d(this,"_statistics_info",null);d(this,"e",null);this._media_data_source=e,this._config=He(),typeof t=="object"&&Object.assign(this._config,t),e.isLive===!0&&(this._config.isLive=!0),this.e={onLoggingConfigChanged:this._onLoggingConfigChanged.bind(this),onMediaLoadedMetadata:this._onMediaLoadedMetadata.bind(this),onMediaTimeUpdate:this._onMediaTimeUpdate.bind(this),onMediaReadyStateChanged:this._onMediaReadyStateChange.bind(this)},Ie.registerListener(this.e.onLoggingConfigChanged),this._worker=new Worker(new URL("./player-engine-worker.js",Qn.url),{type:"module"}),this._worker.addEventListener("message",this._onWorkerMessage.bind(this)),this._worker.postMessage({cmd:"init",media_data_source:this._media_data_source,config:this._config}),this._worker.postMessage({cmd:"logging_config",logging_config:Ie.getConfig()})}static isSupported(){return self.Worker?!!(self.MediaSource&&"canConstructInDedicatedWorker"in self.MediaSource&&self.MediaSource.canConstructInDedicatedWorker===!0||self.ManagedMediaSource&&"canConstructInDedicatedWorker"in self.ManagedMediaSource&&self.ManagedMediaSource.canConstructInDedicatedWorker===!0):!1}destroy(){var e;this._emitter.emit(V.DESTROYING),this.unload(),this.detachMediaElement(),this._worker_destroying=!0,(e=this._worker)==null||e.postMessage({cmd:"destroy"}),Ie.removeListener(this.e.onLoggingConfigChanged),this.e=null,this._media_data_source=null,this._emitter.removeAllListeners()}on(e,t){this._emitter.addListener(e,t),e===V.MEDIA_INFO&&this._media_info?Promise.resolve().then(()=>this._emitter.emit(V.MEDIA_INFO,this.mediaInfo)):e==V.STATISTICS_INFO&&this._statistics_info&&Promise.resolve().then(()=>this._emitter.emit(V.STATISTICS_INFO,this.statisticsInfo))}off(e,t){this._emitter.removeListener(e,t)}attachMediaElement(e){var t;this._media_element=e,this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element.addEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.addEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.addEventListener("readystatechange",this.e.onMediaReadyStateChanged),(t=this._worker)==null||t.postMessage({cmd:"initialize_mse"})}detachMediaElement(){var e;(e=this._worker)==null||e.postMessage({cmd:"shutdown_mse"}),this._media_element&&(this._media_element.removeEventListener("loadedmetadata",this.e.onMediaLoadedMetadata),this._media_element.removeEventListener("timeupdate",this.e.onMediaTimeUpdate),this._media_element.removeEventListener("readystatechange",this.e.onMediaReadyStateChanged),this._media_element.src="",this._media_element.removeAttribute("src"),this._media_element.srcObject=null,this._media_element.load(),this._media_element=null)}load(){var e,t;(e=this._worker)==null||e.postMessage({cmd:"load"}),this._seeking_handler=new si(this._config,this._media_element,this._onRequiredUnbufferedSeek.bind(this)),this._loading_controller=new ai(this._config,this._media_element,this._onRequestPauseTransmuxer.bind(this),this._onRequestResumeTransmuxer.bind(this)),this._startup_stall_jumper=new oi(this._media_element,this._onRequestDirectSeek.bind(this)),this._config.isLive&&this._config.liveBufferLatencyChasing&&(this._live_latency_chaser=new li(this._config,this._media_element,this._onRequestDirectSeek.bind(this))),this._config.isLive&&this._config.liveSync&&(this._live_latency_synchronizer=new di(this._config,this._media_element)),this._media_element.readyState>0&&((t=this._seeking_handler)==null||t.directSeek(0))}unload(){var e,t,i,n,r,s;(e=this._media_element)==null||e.pause(),(t=this._worker)==null||t.postMessage({cmd:"unload"}),(i=this._live_latency_synchronizer)==null||i.destroy(),this._live_latency_synchronizer=null,this._live_latency_chaser=null,(n=this._startup_stall_jumper)==null||n.destroy(),this._startup_stall_jumper=null,(r=this._loading_controller)==null||r.destroy(),this._loading_controller=null,(s=this._seeking_handler)==null||s.destroy(),this._seeking_handler=null}play(){var e;return((e=this._media_element)==null?void 0:e.play())||Promise.resolve()}pause(){var e;(e=this._media_element)==null||e.pause()}seek(e){this._media_element&&this._seeking_handler?this._seeking_handler.seek(e):this._pending_seek_time=e}get mediaInfo(){return Object.assign({},this._media_info)}get statisticsInfo(){return Object.assign({},this._statistics_info)}_onLoggingConfigChanged(e){var t;(t=this._worker)==null||t.postMessage({cmd:"logging_config",logging_config:e})}_onMSEUpdateEnd(){var e;this._config.isLive&&this._config.liveBufferLatencyChasing&&this._live_latency_chaser&&this._live_latency_chaser.notifyBufferedRangeUpdate(),(e=this._loading_controller)==null||e.notifyBufferedPositionChanged()}_onMSEBufferFull(){var e;f.v(this.TAG,"MSE SourceBuffer is full, suspend transmuxing task"),(e=this._loading_controller)==null||e.suspendTransmuxer()}_onMediaLoadedMetadata(e){var t;Number.isNaN(this._pending_seek_time)||((t=this._seeking_handler)==null||t.seek(this._pending_seek_time),this._pending_seek_time=NaN)}_onRequestDirectSeek(e){var t;(t=this._seeking_handler)==null||t.directSeek(e)}_onRequiredUnbufferedSeek(e){var t;(t=this._worker)==null||t.postMessage({cmd:"unbuffered_seek",milliseconds:e})}_onRequestPauseTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"pause_transmuxer"})}_onRequestResumeTransmuxer(){var e;(e=this._worker)==null||e.postMessage({cmd:"resume_transmuxer"})}_onMediaTimeUpdate(e){var t;(t=this._worker)==null||t.postMessage({cmd:"timeupdate",current_time:e.target.currentTime})}_onMediaReadyStateChange(e){var t;(t=this._worker)==null||t.postMessage({cmd:"readystatechange",ready_state:e.target.readyState})}_onWorkerMessage(e){var n,r,s;let t=e.data,i=t.msg;if(i=="destroyed"||this._worker_destroying){this._worker_destroying=!1,(n=this._worker)==null||n.terminate(),this._worker=null;return}switch(i){case"mse_init":{let a=t;"ManagedMediaSource"in self&&!("MediaSource"in self)&&(this._media_element.disableRemotePlayback=!0),this._media_element.srcObject=a.handle;break}case"mse_event":{let a=t;a.event==ee.UPDATE_END?this._onMSEUpdateEnd():a.event==ee.BUFFER_FULL?this._onMSEBufferFull():a.event==ee.QUOTA_EXCEEDED_BUFFER_FULL&&this._onMSEQuotaExceededBufferFull(a.data);break}case"transmuxing_event":{let a=t;if(a.event==E.MEDIA_INFO){let l=t;this._media_info=l.info,this._emitter.emit(V.MEDIA_INFO,Object.assign({},l.info))}else if(a.event==E.STATISTICS_INFO){let l=t;this._statistics_info=this._fillStatisticsInfo(l.info),this._emitter.emit(V.STATISTICS_INFO,Object.assign({},l.info))}else if(a.event==E.RECOMMEND_SEEKPOINT){let l=t;this._media_element&&!this._config.accurateSeek&&((r=this._seeking_handler)==null||r.directSeek(l.milliseconds/1e3))}break}case"player_event":{let a=t;if(a.event==V.ERROR){let l=t;this._emitter.emit(V.ERROR,l.error_type,l.error_detail,l.info)}else if("extraData"in a){let l=t;this._emitter.emit(l.event,l.extraData)}break}case"logcat_callback":{let a=t;f.emitLog(a.type,a.logcat);break}case"buffered_position_changed":{let a=t;(s=this._loading_controller)==null||s.notifyBufferedPositionChanged(a.buffered_position_milliseconds/1e3);break}}}_onMSEQuotaExceededBufferFull(e){if(f.w(this.TAG,`Quota exceeded - reducing buffer durations. Type: ${e.type}, Buffer length: ${e.currentBufferLength}, Segment size: ${e.segmentSize}`),!this._loading_controller){f.w(this.TAG,"LoadingController not available for quota adjustment");return}this._loading_controller.adjustLazyLoadDurations(.5)}_fillStatisticsInfo(e){if(e.playerType="MSEPlayer",!(this._media_element instanceof HTMLVideoElement))return e;let t=!0,i=0,n=0;if(this._media_element.getVideoPlaybackQuality){let r=this._media_element.getVideoPlaybackQuality();i=r.totalVideoFrames,n=r.droppedVideoFrames}else this._media_element.webkitDecodedFrameCount!=null?(i=this._media_element.webkitDecodedFrameCount,n=this._media_element.webkitDroppedFrameCount):t=!1;return t&&(e.decodedFrames=i,e.droppedFrames=n),e}},_r=dr;var hr=class{constructor(e,t){d(this,"TAG","MSEPlayer");d(this,"_type","MSEPlayer");d(this,"_media_element",null);d(this,"_player_engine",null);let i=e.type.toLowerCase();if(i!=="mse"&&i!=="flv")throw new ue("MSEPlayer requires an mse/flv MediaDataSource input!");if(t!=null&&t.enableWorkerForMSE&&_r.isSupported())try{this._player_engine=new _r(e,t)}catch(n){f.e(this.TAG,"Error while initializing PlayerEngineDedicatedThread, fallback to PlayerEngineMainThread"),this._player_engine=new lr(e,t)}else this._player_engine=new lr(e,t)}destroy(){this._player_engine.destroy(),this._player_engine=null,this._media_element=null}on(e,t){this._player_engine.on(e,t)}off(e,t){this._player_engine.off(e,t)}attachMediaElement(e){this._media_element=e,this._player_engine.attachMediaElement(e)}detachMediaElement(){this._media_element=null,this._player_engine.detachMediaElement()}load(){this._player_engine.load()}unload(){this._player_engine.unload()}play(){return this._player_engine.play()}pause(){this._player_engine.pause()}get type(){return this._type}get buffered(){return this._media_element.buffered}get duration(){return this._media_element.duration}get volume(){return this._media_element.volume}set volume(e){this._media_element.volume=e}get muted(){return this._media_element.muted}set muted(e){this._media_element.muted=e}get currentTime(){return this._media_element?this._media_element.currentTime:0}set currentTime(e){this._player_engine.seek(e)}get mediaInfo(){return this._player_engine.mediaInfo}get statisticsInfo(){return this._player_engine.statisticsInfo}},Lt=hr;var cr=class o{static supportMSEH264Playback(){let e='video/mp4; codecs="avc1.42E01E,mp4a.40.2"',t=self.MediaSource&&self.MediaSource.isTypeSupported(e),i=self.ManagedMediaSource&&self.ManagedMediaSource.isTypeSupported(e);return t||i}static supportMSEH265Playback(){let e='video/mp4; codecs="hvc1.1.6.L93.B0"',t=self.MediaSource&&self.MediaSource.isTypeSupported(e),i=self.ManagedMediaSource&&self.ManagedMediaSource.isTypeSupported(e);return t||i}static supportNetworkStreamIO(){let e=new Ft({},He()),t=e.loaderType;return e.destroy(),t=="fetch-stream-loader"||t=="xhr-moz-chunked-loader"}static getNetworkLoaderTypeName(){let e=new Ft({},He()),t=e.loaderType;return e.destroy(),t}static supportNativeMediaPlayback(e){o.videoElement==null&&(o.videoElement=window.document.createElement("video"));let t=o.videoElement.canPlayType(e);return t==="probably"||t=="maybe"}static getFeatureList(){let e={msePlayback:!1,mseLivePlayback:!1,mseH265Playback:!1,networkStreamIO:!1,networkLoaderName:"",nativeMP4H264Playback:!1,nativeMP4H265Playback:!1,nativeWebmVP8Playback:!1,nativeWebmVP9Playback:!1};return e.msePlayback=o.supportMSEH264Playback(),e.networkStreamIO=o.supportNetworkStreamIO(),e.networkLoaderName=o.getNetworkLoaderTypeName(),e.mseLivePlayback=e.msePlayback&&e.networkStreamIO,e.mseH265Playback=o.supportMSEH265Playback(),e.nativeMP4H264Playback=o.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'),e.nativeMP4H265Playback=o.supportNativeMediaPlayback('video/mp4; codecs="hvc1.1.6.L93.B0"'),e.nativeWebmVP8Playback=o.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'),e.nativeWebmVP9Playback=o.supportNativeMediaPlayback('video/webm; codecs="vp9"'),e}},ur=cr;function Zn(o,e){let t=o;if(t==null||typeof t!="object")throw new ue("MediaDataSource must be a javascript object!");if(!t.hasOwnProperty("type"))throw new ue("MediaDataSource must has type field to indicate video file type!");switch(t.type){case"mse":case"flv":return new Lt(t,e);default:return new Et(t,e)}}function Jn(){return ur.supportMSEH264Playback()}function es(){return ur.getFeatureList()}var ts={createPlayer:Zn,isSupported:Jn,getFeatureList:es,BaseLoader:Ee,LoaderStatus:U,LoaderErrors:$,Events:V,ErrorTypes:ut,ErrorDetails:ni,MSEPlayer:Lt,NativePlayer:Et,LoggingControl:Ie,get version(){return"0.0.1-alpha.0"}},Xr=ts;return on(is);})();
    </script>
    <style>
        /* {IȃZbgƍ̃X^CO */
        * {
            box-sizing: border-box;
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #0b0f19;
            color: #e2e8f0;
            font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }
        main {
            width: 100%;
            max-width: 800px;
            display: flex;
            flex-direction: column;
            gap: 20px;
        }
        
        /* rfIvC[̃X^CO */
        .player-container {
            position: relative;
            background-color: #000000;
            border: 1px solid #1e293b;
            border-radius: 8px;
            overflow: hidden;
            aspect-ratio: 16 / 9;
            width: 100%;
        }
        video {
            width: 100%;
            height: 100%;
            object-fit: contain;
            display: block;
        }

        /* Xe[^XZNVi|[gԕ\j */
        .status-container {
            background-color: #0f172a;
            border: 1px solid #1e293b;
            border-radius: 8px;
            padding: 16px;
            font-size: 12px;
            line-height: 1.6;
        }
        .status-title {
            font-size: 14px;
            font-weight: bold;
            color: #818cf8;
            border-bottom: 1px solid #1e293b;
            padding-bottom: 8px;
            margin-bottom: 12px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        .status-title::before {
            content: "";
            display: inline-block;
            width: 8px;
            height: 8px;
            background-color: #22c55e;
            border-radius: 50%;
        }

        /* Xe[^XObh */
        .grid {
            display: grid;
            grid-template-columns: 1fr;
            gap: 12px;
        }
        @media (min-width: 600px) {
            .grid {
                grid-template-columns: 1fr 1fr;
                gap: 24px;
            }
        }
        .info-block {
            display: flex;
            flex-direction: column;
            gap: 4px;
        }
        .info-item {
            display: flex;
            justify-content: space-between;
            border-bottom: 1px dashed #1e293b;
            padding-bottom: 4px;
        }
        .label {
            color: #94a3b8;
        }
        .value {
            color: #f1f5f9;
            text-align: right;
            word-break: break-all;
            max-width: 70%;
        }
        .value a {
            color: #818cf8;
            text-decoration: none;
        }
        .value a:hover {
            text-decoration: underline;
        }
    </style>
</head>
<body>

    <main>
        <!-- rfIRei -->
        <div class="player-container" id="player-container">
            <!-- WRg[gp -->
            <video id="video-element" controls playsinline></video>
        </div>

        <!-- |[gԕ\ / Xe[^XZNV -->
        <div class="status-container">
            <div class="status-title">|[gԕ\</div>

            <div class="grid">
                <!-- { -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">zMURL:</span>
                        <span class="value"><SRC_URL></span>
                    </div>
                    <div class="info-item">
                        <span class="label">^Cg:</span>
                        <span class="value"><TITLE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">Rg:</span>
                        <span class="value"><COMMENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">URL:</span>
                        <span class="value">
                            <a href="<LIVE_URL>" target="_blank"><LIVE_URL></a>
                        </span>
                    </div>
                </div>

                <!-- ڑptH[}X -->
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">ڑ:</span>
                        <span class="value"><TIME></span>
                    </div>
                    <div class="info-item">
                        <span class="label">݂̐ڑ:</span>
                        <span class="value">
                            <CONN> / <MAXCONN>
                        </span>
                    </div>
                    <div class="info-item">
                        <span class="label">rbg[g:</span>
                        <span class="value" style="color: #4ade80;"><CURRENT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">\rbg[g:</span>
                        <span class="value"><BITRATE></span>
                    </div>
                    <div class="info-item">
                        <span class="label">ш搧:</span>
                        <span class="value"><BANDWIDTH></span>
                    </div>
                </div>
            </div>

            <!-- G[JE^Ȇ -->
            <div class="grid" style="margin-top: 12px; padding-top: 12px; border-top: 1px dashed #1e293b;">
                <div class="info-block">
                    <div class="info-item">
                        <span class="label">rW[JE^:</span>
                        <span class="value"><BUSYCOUNT></span>
                    </div>
                    <div class="info-item">
                        <span class="label">IMG[JE^:</span>
                        <span class="value" style="color: #f87171;"><IMPORT_ERROR></span>
                    </div>
                    <div class="info-item">
                        <span class="label">EXG[JE^:</span>
                        <span class="value" style="color: #f87171;"><EXPORT_ERROR></span>
                    </div>
                </div>

                <div class="info-block">
                    <div class="info-item">
                        <span class="label">q:</span>
                        <span class="value"><CHILD></span>
                    </div>
                    <div class="info-item">
                        <span class="label">o[W:</span>
                        <span class="value" style="color: #64748b;"><VERSION></span>
                    </div>
                </div>
            </div>
        </div>
    </main>

    <!-- zMVXe̋ɏĐXNvg -->
    <script>
        if (asf_stream.eflv.getFeatureList().mseLivePlayback) {
            var videoElement = document.getElementById('video-element');
            var player = asf_stream.eflv.createPlayer({
                type: 'mse',
                isLive: true,
                url: '/play?stream-switch'
            });
            player.attachMediaElement(videoElement);
            player.load();
            player.play();
        }
    </script>
</body>
</html>