@vindral/web-sdk 4.7.0-1-gb0d0369b → 4.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -12107,7 +12107,7 @@ var Cb = class {
12107
12107
  let e = this.modules.canvasModule instanceof Ny ? !0 : void 0;
12108
12108
  return y({
12109
12109
  uptime: this.uptime,
12110
- version: "4.7.0-1-gb0d0369b",
12110
+ version: "4.7.0",
12111
12111
  clientId: this.clientId,
12112
12112
  sessionId: this.sessionId,
12113
12113
  channelId: this.channelId,
@@ -1,7 +1,7 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
2
  import { i as n, n as r, r as i, t as a } from "./DSw1XhvD.js";
3
3
  import { t as o } from "./D1kpe8tT.js";
4
- import { C as s, S as c, b as l, i as u, r as ee, t as d, y as f } from "./BK-84KPi.js";
4
+ import { C as s, S as c, b as l, i as u, r as ee, t as d, y as f } from "./Ctk0PAlI.js";
5
5
  import { t as p } from "./Tj9xPXja.js";
6
6
  //#region \0rolldown/runtime.js
7
7
  var m = Object.defineProperty, h = (e, t) => {
@@ -1153,7 +1153,7 @@ function De() {
1153
1153
  function Oe() {
1154
1154
  if (!a(H, this) || !a(W, this) || !a(U, this)) return;
1155
1155
  let { scrollLeft: e, scrollWidth: t, clientWidth: n } = a(W, this), r = t > n + 4, i = e + n >= t - 4;
1156
- a(H, this).setAttribute("data-visible", String(r)), a(H, this).innerHTML = i ? le : ce, r && !i ? a(U, this).setAttribute("data-can-scroll-right", "") : a(U, this).removeAttribute("data-can-scroll-right");
1156
+ a(H, this).setAttribute("data-visible", String(r)), a(H, this).innerHTML = i ? le : ce, a(U, this).toggleAttribute("data-can-scroll-right", r && !i);
1157
1157
  }
1158
1158
  function ke(e) {
1159
1159
  let t = i(G, this, K).call(this, `.section#${e}`);
@@ -1168,7 +1168,7 @@ function Ae(e, t) {
1168
1168
  o && (o.setAttribute("data-active", String(t)), o.setAttribute("aria-pressed", String(t)), !a(O, this) && r !== t && i(G, this, Ie).call(this), e === "events-section" && t && a(V, this) && i(G, this, Et).call(this, !0), i(G, this, je).call(this));
1169
1169
  }
1170
1170
  function je() {
1171
- i(G, this, Ne).call(this).length === 0 ? this.setAttribute("data-collapsed", "") : this.removeAttribute("data-collapsed");
1171
+ this.toggleAttribute("data-collapsed", i(G, this, Ne).call(this).length === 0);
1172
1172
  }
1173
1173
  function Me() {
1174
1174
  var e;
@@ -284,7 +284,7 @@ var A = /* @__PURE__ */ new WeakMap(), j = /* @__PURE__ */ new WeakMap(), M = /*
284
284
  if (i(j, this).style.setProperty("--tooltip-shift", "0px"), i(j, this).removeAttribute("below"), !i(A, this)) return;
285
285
  let e = i(A, this).getBoundingClientRect(), t = i(j, this).getBoundingClientRect();
286
286
  if (t.width === 0) return;
287
- t.top < e.top && i(j, this).setAttribute("below", "");
287
+ i(j, this).toggleAttribute("below", t.top < e.top);
288
288
  let n = e.left - t.left, r = t.right - e.right, a = 0;
289
289
  n > 0 ? a = n : r > 0 && (a = -r), i(j, this).style.setProperty("--tooltip-shift", `${a}px`);
290
290
  }), t(this, F, (e) => {
@@ -1,10 +1,10 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { C as n, D as r, E as i, O as a, S as o, T as s, _ as c, b as l, g as u, h as ee, k as d, m as te, p as ne, t as re, v as ie, w as ae, x as oe, y as se } from "./CXHN3nqn.js";
2
+ import { C as n, D as r, E as i, O as a, S as o, T as s, _ as c, b as l, g as u, h as ee, k as d, m as te, p as ne, t as re, v as ie, w as ae, x as oe, y as se } from "./5u5UZABw.js";
3
3
  import { t as ce } from "./CuYn2z5X.js";
4
4
  import { i as f, n as p, r as m, t as h } from "./DSw1XhvD.js";
5
5
  import { c as le, n as ue, t as de } from "./D40eQS8l.js";
6
6
  import { n as fe, r as pe } from "./BaDhuUsA.js";
7
- import { C as me, S as he, _ as ge, a as _e, b as g, c as _, d as ve, f as ye, g as be, h as xe, i as v, l as Se, m as Ce, n as we, o as Te, p as Ee, r as y, s as De, t as Oe, u as b, v as ke, x as Ae, y as x } from "./BK-84KPi.js";
7
+ import { C as me, S as he, _ as ge, a as _e, b as g, c as _, d as ve, f as ye, g as be, h as xe, i as v, l as Se, m as Ce, n as we, o as Te, p as Ee, r as y, s as De, t as Oe, u as b, v as ke, x as Ae, y as x } from "./Ctk0PAlI.js";
8
8
  import { t as S } from "./Tj9xPXja.js";
9
9
  import { t as je } from "./DQ5kuB8C.js";
10
10
  //#region ../../libs/utils/src/mediaMetadata.ts
@@ -2661,7 +2661,7 @@ function Ua(e) {
2661
2661
  }
2662
2662
  }
2663
2663
  function Wa() {
2664
- let e = () => (customElements.get("vindral-debug-panel") || import("./XEQIIc9P.js").then((e) => e.n).then(({ registerDebugComponents: e }) => e()), this.setAttribute(g.DEBUG_PANEL_OPEN, ""), h(I, this));
2664
+ let e = () => (customElements.get("vindral-debug-panel") || import("./Bo-fEHbb.js").then((e) => e.n).then(({ registerDebugComponents: e }) => e()), this.setAttribute(g.DEBUG_PANEL_OPEN, ""), h(I, this));
2665
2665
  window._vindralDebug = e, p(Ui, this, e);
2666
2666
  }
2667
2667
  function Ga() {
package/core.js CHANGED
@@ -1,2 +1,2 @@
1
- import { a as e, c as t, d as n, f as r, i, l as a, o, r as s, s as c, t as l, u } from "./CXHN3nqn.js";
1
+ import { a as e, c as t, d as n, f as r, i, l as a, o, r as s, s as c, t as l, u } from "./5u5UZABw.js";
2
2
  export { s as AUTHENTICATION_EXPIRED_CODE, i as AUTHENTICATION_FAILED_CODE, e as CHANNEL_NOT_FOUND_CODE, o as CHANNEL_NOT_LIVE_CODE, c as CONNECTION_FAILED_AFTER_RETRIES_CODE, t as CONNECTION_FAILED_CODE, a as DISCONNECTED_BY_EDGE, u as INACTIVITY_CODE, n as NO_INCOMING_DATA, l as Vindral, r as VindralError };
package/legacy.es.js CHANGED
@@ -13691,7 +13691,7 @@ var AC = 1e4, jC = 1280 * 720, MC = /* @__PURE__ */ new WeakMap(), NC = /* @__PU
13691
13691
  let e = this.modules.canvasModule instanceof SS ? !0 : void 0;
13692
13692
  return L({
13693
13693
  uptime: this.uptime,
13694
- version: "4.7.0-1-gb0d0369b",
13694
+ version: "4.7.0",
13695
13695
  clientId: this.clientId,
13696
13696
  sessionId: this.sessionId,
13697
13697
  channelId: this.channelId,
package/legacy.umd.js CHANGED
@@ -1319,7 +1319,7 @@ var __async = (__this, __arguments, generator) => {
1319
1319
  });
1320
1320
  })();
1321
1321
  `,Ax=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,kx],{type:`text/javascript;charset=utf-8`})})),Mx=r({VideoDecoderWorkerContext:()=>Px}),Nx,Px,Fx=n((()=>{U(),jx(),h(),z(),F(),Px=class{get isWebCodecs(){return this._isWebCodecs}get usingOffscreenCanvas(){return this._usingOffscreenCanvas}constructor(e,t,n,r,i=!1,a=!1){m(this,`decodedSamples`,[]),m(this,`codedSamples`,[]),m(this,`decoder`,void 0),m(this,`logger`,void 0),m(this,`errors`,new T(10)),m(this,`pool`,void 0),m(this,`getCurrentTime`,void 0),m(this,`_usingOffscreenCanvas`,void 0),m(this,`_isWebCodecs`,void 0),m(this,`_renderedFrameCount`,0),m(this,`_rendererDroppedFrameCount`,0),m(this,`statisticsQueue`,new T(1e3)),m(this,`samplesInTransitToWorker`,0),m(this,`workerPendingDecodeCount`,0),m(this,`videoTrackLostListener`,void 0),m(this,`targetSamplesInBatch`,4),m(this,`maxSamplesInFlight`,20),m(this,`unload`,()=>{this.decoder.postMessage({type:`unload`}),this.decoder.removeEventListener(`message`,this.onDecoderEvent),this.decoder.terminate(),this.statisticsQueue.clear(),this.codedSamples=[],this.decodedSamples.forEach(e=>{var t;return(t=e.videoFrame)==null?void 0:t.close()}),this.decodedSamples=[],this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0}),m(this,`enqueue`,e=>{this.codedSamples.push(R({},e)),this.flushQueuedSamples()}),m(this,`setRenderingEnabled`,e=>{this.decoder.postMessage({type:`render enabled`,enabled:e})}),m(this,`setMaxCanvasPixels`,e=>{this.decoder.postMessage({type:`max canvas pixels`,maxPixels:e})}),m(this,`_videoTrack`,void 0),m(this,`onVideoTrackLost`,e=>{this.videoTrackLostListener=e}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{this.decoder.postMessage({type:`subtitle cues`,cues:e,containerWidth:t,containerHeight:n,devicePixelRatio:r,bottomPadding:i})}),m(this,`prepareOutputBuffers`,e=>{this._isWebCodecs||e.forEach(e=>{let t=Math.ceil(e.width/16)*16*(Math.ceil(e.height/16)*16)*3/2;e.buffer=this.pool.get(t)})}),m(this,`flushQueuedSamples`,()=>{for(;this.codedSamples.length>0&&this.samplesInFlight()<this.maxSamplesInFlight;){let e=Math.max(this.maxSamplesInFlight-this.samplesInFlight(),0),t=Math.min(this.targetSamplesInBatch,this.codedSamples.length,e);if(t<=0)return;let n=this.codedSamples.slice(0,t);this.codedSamples=this.codedSamples.slice(t),this.prepareOutputBuffers(n),this.sendSamples(n),this.samplesInTransitToWorker+=n.length}}),m(this,`initSegment`,e=>{let t={type:`init segment`,initSegment:e};this.decoder.postMessage(t)}),m(this,`take`,()=>this.decodedSamples.shift()),m(this,`samplesInFlight`,()=>this.samplesInTransitToWorker+this.workerPendingDecodeCount),m(this,`getRenderStatistics`,()=>({renderedFrameCount:this._renderedFrameCount,rendererDroppedFrameCount:this._rendererDroppedFrameCount})),m(this,`takeEstimatedStatistics`,()=>this.statisticsQueue.pop()),m(this,`sendSamples`,e=>{var t;let n={type:`decode samples`,samples:e,timestamp:Date.now(),currentTime:(t=this.getCurrentTime)==null?void 0:t.call(this)},r=this._isWebCodecs?e.map(e=>e.data):e.flatMap(e=>[e.data,e.buffer]).filter(e=>e!==void 0);this.decoder.postMessage(n,r)}),m(this,`onDecoderEvent`,e=>{switch(e.data.type){case`ready`:break;case`video track lost`:var t;this._videoTrack=void 0,(t=this.videoTrackLostListener)==null||t.call(this,e.data.error);break;case`error`:this.errors.push(Error(e.data.message)),this.samplesInTransitToWorker=0,this.workerPendingDecodeCount=0;break;case`decoder error`:this.errors.push(Object.assign(Error(e.data.message),{name:e.data.name,stream:e.data.stream}));break;case`decoded samples`:{typeof e.data.samplesAcceptedCount==`number`&&e.data.samplesAcceptedCount>0&&(this.samplesInTransitToWorker=Math.max(0,this.samplesInTransitToWorker-e.data.samplesAcceptedCount)),typeof e.data.decoderPendingCount==`number`&&e.data.decoderPendingCount>=0&&(this.workerPendingDecodeCount=e.data.decoderPendingCount);let t=e.data.timestamp,n=Date.now()-t;if(typeof e.data.estimatedSampleCount==`number`&&e.data.estimatedSampleCount>0&&typeof e.data.estimatedDecodeTimeSum==`number`&&typeof e.data.estimatedTransportTimeToWorkerSum==`number`){let t=e.data.estimatedSampleCount,r=e.data.estimatedDecodeTimeSum/t,i=e.data.estimatedTransportTimeToWorkerSum/t+n;for(let e=0;e<t;e++)this.statisticsQueue.push({decodeTime:r,transportTime:i})}e.data.samples.forEach(e=>{e.statistics&&(e.statistics.transportTimeFromWorker=n)}),typeof e.data.renderedFrameCount==`number`&&(this._renderedFrameCount=e.data.renderedFrameCount),typeof e.data.rendererDroppedFrameCount==`number`&&(this._rendererDroppedFrameCount=e.data.rendererDroppedFrameCount),this.decodedSamples.push(...e.data.samples),this.flushQueuedSamples()}break}}),this.decoder=e,this.logger=t,this.pool=n,this.getCurrentTime=r,this._isWebCodecs=i,this._usingOffscreenCanvas=a,this.decoder.addEventListener(`message`,this.onDecoderEvent)}get videoTrack(){return this._videoTrack}error(){return this.errors.pop()}},Nx=Px,m(Px,`create`,function(){var e=P(function*(e,t,n,r=!1,i=`no-preference`,a,o,s=!1,c){let l=new Ox,{isWebCodecs:u,usingOffscreenCanvas:d,videoTrack:f,videoTrackError:p}=yield new Promise((n,o)=>{let u=!1,d=setTimeout(()=>{u||(u=!0,f(Error(`Decoder worker initialization timed out`)))},1e4),f=e=>{if(u=!0,clearTimeout(d),l.removeEventListener(`message`,p),l.terminate(),e instanceof Error){o(e);return}o(Error(`Failed to initialize decoder worker`))},p=e=>{if(!u)switch(u=!0,clearTimeout(d),l.removeEventListener(`message`,p),e.data.type){case`ready`:n({isWebCodecs:e.data.isWebCodecs,usingOffscreenCanvas:e.data.usingOffscreenCanvas,videoTrack:e.data.videoTrack,videoTrackError:e.data.videoTrackError});break;case`error`:var t;f(Error((t=e.data.message)==null?`Failed to initialize decoder worker`:t));break;default:f(Error(`Failed to initialize decoder worker`));break}};l.addEventListener(`message`,p);let m={type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:a,videoTrackRequested:s,maxCanvasPixels:c};try{a?l.postMessage(m,[a]):l.postMessage(m)}catch(n){let o=n instanceof DOMException&&n.name===`DataCloneError`;if(a&&o){e.warn(`Failed to transfer OffscreenCanvas to worker, falling back to main-thread rendering`,n);try{l.postMessage({type:`init`,logLevel:t,useWebCodecs:r,webcodecsHardwareAcceleration:i,offscreenCanvas:void 0})}catch(e){f(e)}}else f(n)}}),m=new Nx(l,e,n,o,u,d);return m._videoTrack=f,s&&!f&&e.info(`Worker video track unavailable, using canvas capture`,{error:p}),m});return function(t,n,r){return e.apply(this,arguments)}}())}));U(),h(),z(),F();var Ix=5,Lx=40,Rx=1,zx=5,Bx=e=>{var t,n;return((t=e.maxCompositionOffsetMs)==null?0:t)-((n=e.minCompositionOffsetMs)==null?0:n)},Vx=(e,t,n)=>{let r=[];for(let i of e){let e=r[r.length-1];if(e&&e.end>=t&&i.start-e.end<=n){e.end=Math.max(e.end,i.end);continue}r.push({start:i.start,end:i.end})}return r},Hx=(e,t)=>{let n=e[e.length-1];n&&n.end>t&&n.start<t&&(n.end=t)},Ux=100,Wx=1e3,Gx=class e{constructor(e,t,n,r,i=!1,a=!1,o=!1){m(this,`backgroundTimersEnabled`,!1),m(this,`timers`,this.createTimers()),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`trackContexts`,void 0),m(this,`playbackSource`,void 0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!1),m(this,`_webCodecsInUse`,void 0),m(this,`_audioWebCodecsInUse`,void 0),m(this,`_offscreenCanvasInUse`,void 0),m(this,`currentVideoDecodeRate`,2),m(this,`decodeRateGraceIntervals`,3),m(this,`isAudioEmitRetryScheduled`,!1),m(this,`videoKeyframeTimestamps`,[]),m(this,`load`,()=>{this.isLoaded=!0,this.armTimers(),this.emitter.on(`init segment`,this.onInitSegment),this.emitter.on(`coded sample`,this.decode),this.emitter.on(`flush buffers`,this.resetContexts)}),m(this,`enableBackgroundTimers`,()=>{this.backgroundTimersEnabled||(this.backgroundTimersEnabled=!0,this.replaceTimers())}),m(this,`unload`,()=>{this.isLoaded=!1,this.trackContexts.forEach(({decoderContext:e})=>e.unload()),this.timers.unload(),this.isAudioEmitRetryScheduled=!1,this.videoKeyframeTimestamps=[],this.emitter.off(`init segment`,this.onInitSegment),this.emitter.off(`coded sample`,this.decode),this.emitter.off(`flush buffers`,this.resetContexts)}),m(this,`resetContexts`,()=>{this.trackContexts.forEach(({decoderContext:e})=>{var t;(t=e.reset)==null||t.call(e)})}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.emitDecodedFrames(),this._audioWebCodecsInUse&&this.scheduleAudioEmitRetry()}),m(this,`armTimers`,()=>{let e=this._audioWebCodecsInUse?20:Ux;this.timers.setInterval(this.emitDecodedFrames,e),this.timers.setInterval(this.emitDecodeRate,Wx)}),m(this,`replaceTimers`,()=>{let e=this.isAudioEmitRetryScheduled;this.isAudioEmitRetryScheduled=!1,this.timers.unload(),this.timers=this.createTimers(),this.timers.isWorkerBackendUnavailable()&&this.logger.warn(`Background timer worker is unavailable (likely blocked by CSP or unsupported in this environment). Falling back to main-thread timers; hidden-tab playback may be throttled.`),this.isLoaded&&(this.armTimers(),e&&this.scheduleAudioEmitRetry())}),m(this,`getBuffer`,e=>{let t=this.trackContexts.get(e);return t&&this.playableRanges(t).map(e=>({start:e.start,end:e.end}))}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`videoDecodeRate`,()=>this.currentVideoDecodeRate),m(this,`calculateVideoDecodeRate`,()=>{var e;if(this._webCodecsInUse)return 2;let t=this.trackContexts.get(`video`);if(!t)return 2**53-1;let n=(e=t.sampleDuration)==null?40:e,r=Ht(t.decodeTime.items()),i=Ht(t.transportTime.items()),a=r.average+i.average;return a<=0?2:Math.min(n/a,100)}),m(this,`getStatistics`,()=>{var e,t,n,r,i;let a=this.trackContexts.get(`video`),o=Ht((e=a==null?void 0:a.decodeTime.items())==null?[]:e),s=Ht((t=a==null?void 0:a.transportTime.items())==null?[]:t),c=Ht((n=(r=this.trackContexts.get(`audio`))==null?void 0:r.decodeTime.items())==null?[]:n),l=this._offscreenCanvasInUse?a==null||(i=a.getRenderStatistics)==null?void 0:i.call(a):void 0;return R(R({videoDecodeRate:this.videoDecodeRate(),videoDecodeTime:o,audioDecodeTime:c,videoTransportTime:s,videoKeyframeIntervalMs:Bt(this.videoKeyframeTimestamps)},l?{renderedFrameCount:l.renderedFrameCount,rendererDroppedFrameCount:l.rendererDroppedFrameCount}:{}),{},{videoRenderer:this._offscreenCanvasInUse?`OffscreenCanvas`:`Canvas`,videoDecoder:this._webCodecsInUse?`WebCodecs`:`WASM`,audioRenderer:`AudioContext`,audioDecoder:this._audioWebCodecsInUse?`WebCodecs`:`WASM`})}),m(this,`setVideoRenderingEnabled`,e=>{var t,n,r;this._offscreenCanvasInUse&&((t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).setRenderingEnabled)==null||r.call(n,e))}),m(this,`setMaxVideoCanvasPixels`,e=>{var t,n,r;this._offscreenCanvasInUse&&((t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).setMaxCanvasPixels)==null||r.call(n,e))}),m(this,`onVideoTrackLost`,e=>{var t,n,r;(t=this.trackContexts.get(`video`))==null||(r=(n=t.decoderContext).onVideoTrackLost)==null||r.call(n,e)}),m(this,`setSubtitleCues`,(e,t,n,r,i)=>{var a;if(!this._offscreenCanvasInUse)return;let o=(a=this.trackContexts.get(`video`))==null?void 0:a.decoderContext;o&&`setSubtitleCues`in o&&o.setSubtitleCues(e,t,n,r,i)}),m(this,`onInitSegment`,({initSegment:e})=>{var t;let n=(t=this.trackContexts.get(e.type))==null?void 0:t.decoderContext;if(!n)throw new W(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});n.initSegment(e)}),m(this,`decode`,e=>{var t,n,r;let i=this.trackContexts.get(e.type);if(!i)throw new W(`No known decoder context`,{code:`no_known_decoder_context`,isFatal:!1});if(this.isSuspended)return;let a=e.compositionTimeOffset||0,{decoderContext:o,buffer:s}=i;i.stream=`${e.channelId}/${e.renditionId}`;let c=(e.timestamp+a)/e.timescale*1e3,l=e.duration/e.timescale*1e3;l>0&&(i.sampleDuration=l);let u=i.sampleDuration||Lx,d=e.timestamp/e.timescale*1e3,f=a/e.timescale*1e3,p=Bx(i),m=(t=s[s.length-1])==null?void 0:t.end,h=Math.max(u*zx,p+((n=i.frontierSampleDurationMs)==null?u:n)),g=m!==void 0&&c+h<m;i.lastDecodeTimestampMs=g?d:Math.max((r=i.lastDecodeTimestampMs)==null?d:r,d);let _=i.channelId!==void 0&&!sx(i.channelId,i.renditionId,e.channelId,e.renditionId);i.channelId=e.channelId,i.renditionId=e.renditionId,(g||_)&&(i.minCompositionOffsetMs=void 0,i.maxCompositionOffsetMs=void 0,i.hasAnchoredGop=!1,i.isReorderStructureStale=!0);let v=i.hasAnchoredGop===!0;if(e.isSync&&(i.hasAnchoredGop=!0),!g&&i.hasAnchoredGop){var y,b;i.minCompositionOffsetMs=Math.min((y=i.minCompositionOffsetMs)==null?f:y,f),i.maxCompositionOffsetMs=Math.max((b=i.maxCompositionOffsetMs)==null?f:b,f),v&&(i.isReorderStructureStale=!1)}let ee=Bx(i)>0;if(g)i.buffer=[{start:c,end:c+u}],i.frontierSampleDurationMs=u,e.type===`video`&&(this.videoKeyframeTimestamps=[]);else{var x;!ee&&!i.isReorderStructureStale&&Hx(s,c+u);let e=(x=s[s.length-1])==null?void 0:x.end;(e===void 0||c+u>=e)&&(i.frontierSampleDurationMs=u),pr(s,c,c+u,Ix)}if(i.playableRangesCache=void 0,e.type===`video`&&e.isSync){let e=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];e!==void 0&&c<e&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(c),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}o.enqueue(e),this.emitDecodedFrames(),this._audioWebCodecsInUse&&e.type===`audio`&&this.scheduleAudioEmitRetry()}),m(this,`scheduleAudioEmitRetry`,()=>{this.isAudioEmitRetryScheduled||(this.isAudioEmitRetryScheduled=!0,this.timers.setTimeout(()=>{this.isAudioEmitRetryScheduled=!1,this.emitDecodedFrames()},0))}),m(this,`emitDecodedFrames`,()=>{let e;this.updateBufferState(),this.trackContexts.forEach((t,n)=>{var r,i,a,o;let s;for(;(s=(r=(i=t.decoderContext).error)==null?void 0:r.call(i))!==void 0;){var c;let e=`${(c=s.stream)==null?t.stream:c} ${s.name}: ${s.message}`;e!==t.lastReportedError&&(t.lastReportedError=e,this.emitter.emit(`error`,ki(!1,s,n)))}for(;(e=t.decoderContext.take())!==void 0;){t.lastReportedError=void 0;let{statistics:n}=e;n&&(t.decodeTime.push(n.decodeTime),t.transportTime.push((n.transportTimeToWorker+n.transportTimeFromWorker)/n.samplesInBatch)),this.emitter.emit(`decoded frame`,e)}let l=(a=(o=t.decoderContext).takeEstimatedStatistics)==null?void 0:a.call(o);for(;l!==void 0;){var u,d;t.decodeTime.push(l.decodeTime),t.transportTime.push(l.transportTime),l=(u=(d=t.decoderContext).takeEstimatedStatistics)==null?void 0:u.call(d)}})}),m(this,`emitDecodeRate`,()=>{if(this.decodeRateGraceIntervals>0){this.decodeRateGraceIntervals--;return}this.currentVideoDecodeRate=this.calculateVideoDecodeRate(),this.emitter.emit(`video decode rate`,this.currentVideoDecodeRate)}),m(this,`playableRanges`,e=>{let t=Bx(e);if(t<=0)return e.buffer;if(e.playableRangesCache===void 0){var n,r;e.playableRangesCache=Vx(e.buffer,((n=e.lastDecodeTimestampMs)==null?1/0:n)-Math.max(0,-((r=e.minCompositionOffsetMs)==null?0:r))-Rx,t+(e.sampleDuration||Lx)+Rx)}return e.playableRangesCache}),m(this,`updateBufferState`,()=>{let e=this.playbackSource.currentTime,t,n=!0;this.trackContexts.forEach(r=>{var i,a,o,s;let c=this.playableRanges(r),l=(i=t==null||(a=t[t.length-1])==null?void 0:a.end)==null?0:i,u=(o=(s=c[c.length-1])==null?void 0:s.end)==null?0:o;(t===void 0||l>u)&&(t=c),mr(c,e)||(n=!1)}),t&&this.emitter.emit(`buffer state`,{buffered:t,currentTime:e,isPaused:this.playbackSource.isPaused,playbackState:n?`playing`:`buffering`})}),this.logger=t,this.emitter=e,this.trackContexts=n,this.playbackSource=r,this._webCodecsInUse=i,this._audioWebCodecsInUse=a,this._offscreenCanvasInUse=o}get audioWebCodecsInUse(){return this._audioWebCodecsInUse}createTimers(){return sr.create(this.backgroundTimersEnabled?{mode:`worker-preferred`}:void 0)}static create(t,n,r,i,a,o,s=!1,c=`no-preference`,l,u=!1,d){return P(function*(){let f=new Map,p=new Set,m=!1,h=!1,g=!1;for(let e of i){if(p.has(e.type)){n.warn(`Received duplicate track type for decoder initialization. Ignoring subsequent track.`,{trackType:e.type,codec:e.codec,mimeType:e.mimeType});continue}switch(p.add(e.type),e.type){case`audio`:{let t,r,i=!1;if(s){let{WebCodecsAudioDecoderContext:a}=yield Promise.resolve().then(()=>(gx(),dx));if(i=a.isSupported(),i)try{t=yield a.create(n.createContext(`WebCodecsAudio`)),h=!0}catch(t){r=t instanceof Error?t:Error(`Failed to initialize WebCodecs audio decoder`),e.codec===`opus`&&n.warn(`Failed to initialize WebCodecs audio decoder, falling back to WASM Opus decoder`,{codec:e.codec,error:r})}}if(!t)if(e.codec===`opus`){let{OpusDecoderContext:n}=yield Promise.resolve().then(()=>(Dx(),wx));t=yield n.create(e.sampleRate||48e3,e.channels||2)}else{let t=s?r?`WebCodecs audio decoder initialization failed: ${r.message}`:i?`WebCodecs audio decoder could not be initialized.`:`WebCodecs AudioDecoder API is not supported in this environment.`:`WebCodecs audio decoding is disabled.`;throw Ai(e.codec,t,r)}f.set(e.type,{buffer:[],decoderContext:t,decodeTime:new T(100),transportTime:new T(100),sampleDuration:40});break}case`video`:{let{VideoDecoderWorkerContext:t}=yield Promise.resolve().then(()=>(Fx(),Mx)),i=yield t.create(n.createContext(`VideoDecoderWorker`),r,o,s,c,l,()=>a.currentTime,u,d);m=i.isWebCodecs,g=i.usingOffscreenCanvas,f.set(e.type,{buffer:[],decoderContext:i,decodeTime:new T(100),transportTime:new T(100),sampleDuration:40,getRenderStatistics:i.getRenderStatistics});break}default:break}}return new e(t,n,f,a,m,h,g)})()}get videoTrack(){var e;if(this._offscreenCanvasInUse)return(e=this.trackContexts.get(`video`))==null?void 0:e.decoderContext.videoTrack}};U(),h(),z();var Kx,qx=class{constructor(e){m(this,`emitter`,void 0),m(this,`isVisibleCount`,0),m(this,`isHiddenCount`,0),m(this,`isOnlineCount`,0),m(this,`isOfflineCount`,0),m(this,`isActive`,document.visibilityState===`visible`),m(this,`isBehindAnotherApp`,!1),m(this,`unload`,()=>{this.emitter.off(`fullscreen app switch`,this.onFullscreenAppSwitch),window.removeEventListener(`focus`,this.onVisibilityChanged),document.removeEventListener(`visibilitychange`,this.onVisibilityChanged),window.removeEventListener(`pageshow`,this.onPageShow),window.removeEventListener(`pagehide`,this.onPageHide),window.removeEventListener(`online`,this.onOnline),window.removeEventListener(`offline`,this.onOffline)}),m(this,`load`,()=>{this.emitter.on(`fullscreen app switch`,this.onFullscreenAppSwitch),window.addEventListener(`focus`,this.onVisibilityChanged),document.addEventListener(`visibilitychange`,this.onVisibilityChanged),window.addEventListener(`pageshow`,this.onPageShow),window.addEventListener(`pagehide`,this.onPageHide),window.addEventListener(`online`,this.onOnline),window.addEventListener(`offline`,this.onOffline)}),m(this,`unsuspend`,()=>{}),m(this,`getStatistics`,()=>R({isVisible:this.isVisible,isOnline:this.isOnline,isVisibleCount:this.isVisibleCount,isHiddenCount:this.isHiddenCount,isOnlineCount:this.isOnlineCount,isOfflineCount:this.isOfflineCount},Xt())),m(this,`onOnline`,()=>this.isOnlineCount++),m(this,`onOffline`,()=>this.isOfflineCount++),m(this,`onPageShow`,e=>{this.emitter.emit(`pageshow`,e),this.onVisibilityChanged()}),m(this,`onPageHide`,e=>this.emitter.emit(`pagehide`,e)),m(this,`onVisibilityChanged`,()=>{this.isBehindAnotherApp=!1,this.setIsActive(this.isVisible)}),m(this,`onFullscreenAppSwitch`,()=>{this.isBehindAnotherApp=!0,this.setIsActive(!1)}),m(this,`setIsActive`,e=>{e!==this.isActive&&(this.emitter.emit(`page active`,e),e?this.isVisibleCount++:this.isHiddenCount++),this.isActive=e}),this.emitter=e}get isOnline(){return navigator.onLine}get isVisible(){return document.visibilityState===`visible`&&!this.isBehindAnotherApp}};Kx=qx,m(qx,`create`,e=>new Kx(e)),U(),h(),z();var Jx,Yx=e=>(t,n,r)=>t.timestamp<=n||t.timestampAdded<=r-e,Xx=class e{constructor(t,n,r){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`waitingEvents`,[]),m(this,`isTriggered`,Yx(e.EVENT_TIMEOUT)),m(this,`timeSource`,void 0),m(this,`timers`,new sr),m(this,`load`,()=>{this.timers.setInterval(this.onBufferedStateChanged,e.EVENT_CHECK_INTERVAL),this.emitter.on(`add event`,this.addEvent)}),m(this,`unload`,()=>{this.timers.unload(),this.emitter.off(`add event`,this.addEvent)}),m(this,`addEvent`,e=>{this.logger.debug(`Adding event`,{event:e}),!this.waitingEvents.some(t=>t.id!==void 0&&t.id===e.id)&&this.waitingEvents.push(R(R({},e),{},{timestampAdded:performance.now()}))}),m(this,`extractEvent`,(e,t)=>{t.type===`video`&&e.channelId!==t.channelId&&this.addEvent({type:`channel switch`,channelId:t.channelId,timestamp:t.timestamp/t.timescale*1e3}),t.type===`audio`&&e.type===`audio`&&t.language!==void 0&&t.language!==e.language&&this.addEvent({type:`language switch`,language:t.language,timestamp:t.timestamp/t.timescale*1e3})}),m(this,`onBufferedStateChanged`,()=>{var e;let t=performance.now(),n=(e=this.timeSource.drift)==null?0:e,r=this.timeSource.serverCurrentTime-n;if(this.waitingEvents.length===0)return;let i=this.waitingEvents.filter(e=>this.isTriggered(e,r,t));this.waitingEvents=this.waitingEvents.filter(e=>!this.isTriggered(e,r,t)),i.forEach(e=>{this.logger.debug(`Emitting event`,{event:e}),this.emitter.emit(`event`,e)})}),this.logger=n,this.emitter=t,this.timeSource=r}};Jx=Xx,m(Xx,`EVENT_TIMEOUT`,5e3),m(Xx,`EVENT_CHECK_INTERVAL`,20),m(Xx,`create`,(e,t,n)=>new Jx(e,t,n)),U(),h();var Zx,Qx=class e{constructor(t){m(this,`emitter`,void 0),m(this,`timers`,sr.create()),m(this,`bytesReceived`,new Map),m(this,`timeoutInterval`,void 0),m(this,`lastBytesUpdated`,performance.now()),m(this,`load`,()=>{this.emitter.on(`connection state`,this.onConnectionState),this.timers.setInterval(()=>this.bytesReceived.forEach(e=>e.tick()),100)}),m(this,`unload`,()=>{this.emitter.off(`connection state`,this.onConnectionState),this.timers.unload()}),m(this,`averageBitRate`,e=>{var t,n;return((t=(n=this.bytesReceived.get(e))==null?void 0:n.average)==null?0:t)*8}),m(this,`totalBytesReceived`,()=>{let e=0;return this.bytesReceived.forEach(t=>{e+=t.total}),e}),m(this,`add`,(t,n)=>{let r=this.bytesReceived.get(t);r||(r=new Gt(20),this.bytesReceived.set(t,r)),n>0&&(this.lastBytesUpdated=performance.now(),this.timeoutInterval||(this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))),r.add(n)}),m(this,`getStatistics`,()=>({bytesReceived:this.totalBytesReceived(),videoBitRate:this.averageBitRate(`video`),audioBitRate:this.averageBitRate(`audio`)})),m(this,`onConnectionState`,t=>{this.clearTimeoutInterval(),t===`connected`&&(this.lastBytesUpdated=performance.now(),this.timeoutInterval=this.timers.setInterval(this.checkTimeout,e.UPDATE_RECEIVED_BYTES_INTERVAL))}),m(this,`checkTimeout`,()=>{let t=performance.now()-this.lastBytesUpdated;if(this.totalBytesReceived()===0&&t>e.NO_DATA_ERROR_TIMEOUT){this.emitter.emit(`error`,Ui()),this.emitter.emit(`reconnect`,`no incoming data`),this.clearTimeoutInterval();return}t>e.NO_DATA_TIMEOUT&&this.totalBytesReceived()>0&&(this.emitter.emit(`no data timeout`,this.totalBytesReceived()),this.clearTimeoutInterval())}),m(this,`clearTimeoutInterval`,()=>{this.timeoutInterval&&(this.timers.clearInterval(this.timeoutInterval),this.timeoutInterval=void 0)}),this.emitter=t}};Zx=Qx,m(Qx,`NO_DATA_ERROR_TIMEOUT`,20*1e3),m(Qx,`NO_DATA_TIMEOUT`,5*1e3),m(Qx,`UPDATE_RECEIVED_BYTES_INTERVAL`,1e3),m(Qx,`create`,e=>new Zx(e)),U(),h();var $x=1e3,eS=50,tS=class e{constructor(e){m(this,`logger`,void 0),m(this,`trackingState`,new Map),m(this,`runningJitter`,new Map),m(this,`recentJitterSamples`,new Map),m(this,`load`,()=>{this.logger.debug(`JitterModule loaded`)}),m(this,`unload`,()=>{this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear(),this.logger.debug(`JitterModule unloaded`)}),this.logger=e}static create(t){return new e(t)}getTrackingKey(e,t){return`${e}-${t}`}recordSample(e){var t;let n=this.getTrackingKey(e.type,e.renditionId),r=performance.now(),i=e.timestamp/e.timescale*1e3,a=this.trackingState.get(n);if(!a){this.trackingState.set(n,{lastArrivalTime:r,lastTimestampMs:i,jitterSamples:new T($x),interArrivalTimes:new T($x)}),this.runningJitter.set(n,0),this.recentJitterSamples.set(n,new T(eS));return}let o=i-a.lastTimestampMs;if(o<=0){a.lastArrivalTime=r,a.lastTimestampMs=i;return}let s=r-a.lastArrivalTime,c=Math.abs(s-o);a.jitterSamples.push(c),a.interArrivalTimes.push(s);let l=(t=this.runningJitter.get(n))==null?0:t,u=l+(c-l)/16;this.runningJitter.set(n,u);let d=this.recentJitterSamples.get(n);d||(d=new T(eS),this.recentJitterSamples.set(n,d)),d.push(c),a.lastArrivalTime=r,a.lastTimestampMs=i}getJitterForType(e){for(let[i,a]of this.trackingState)if(i.startsWith(e)){var t,n,r;if(a.jitterSamples.items().length<1)return;let e=(t=this.runningJitter.get(i))==null?0:t,{min:o,max:s,average:c}=Ht((n=(r=this.recentJitterSamples.get(i))==null?void 0:r.items())==null?[]:n);return{min:Math.round(o),max:Math.round(s),last:Math.round(c),average:Math.round(e)}}}getRunningJitter(e){for(let[t,n]of this.runningJitter)if(t.startsWith(e))return n}reset(e,t){if(e!==void 0&&t!==void 0){let n=this.getTrackingKey(e,t);this.trackingState.delete(n),this.runningJitter.delete(n),this.recentJitterSamples.delete(n)}else if(e!==void 0)for(let t of this.trackingState.keys())t.startsWith(e)&&(this.trackingState.delete(t),this.runningJitter.delete(t),this.recentJitterSamples.delete(t));else this.trackingState.clear(),this.runningJitter.clear(),this.recentJitterSamples.clear()}getStatistics(){return{audioJitter:this.getJitterForType(`audio`),videoJitter:this.getJitterForType(`video`)}}};U(),h(),F();var nS=()=>window.AudioContext||window.webkitAudioContext,rS=class e extends en{constructor(){var t;super(),t=this,m(this,`context`,new(nS())),m(this,`timers`,sr.create()),m(this,`previousCurrentTime`,0),m(this,`_isStuck`,!1),m(this,`mediaStreamDestination`,void 0),m(this,`unload`,()=>(this.timers.unload(),this.context.removeEventListener(`statechange`,this.onStateChange),this.context.state===`closed`?Promise.resolve():this.context.close())),m(this,`createGain`,()=>this.context.createGain()),m(this,`createBuffer`,(e,t,n)=>this.context.createBuffer(e,t,n)),m(this,`createBufferSource`,()=>this.context.createBufferSource()),m(this,`getMediaStreamDestination`,()=>(this.mediaStreamDestination||(this.mediaStreamDestination=this.context.createMediaStreamDestination()),this.mediaStreamDestination)),m(this,`getDefaultDestination`,()=>this.context.destination),m(this,`createSplitter`,()=>this.context.createChannelSplitter(2)),m(this,`resume`,P(function*(){let e=!0,n=t.context.resume();n.then(()=>{e=!1},()=>{e=!1});try{return yield Promise.race([n,Er(1e3,Ii())])}catch(n){throw!e&&t.context.state!==`running`&&t.suspend().catch(C),n}})),m(this,`suspend`,P(function*(){var e;yield(e=t.context.suspend())==null?Promise.resolve():e})),m(this,`onStateChange`,()=>this.emit(`state`,this.state)),this.context.addEventListener(`statechange`,this.onStateChange),this.timers.setInterval(()=>{this._isStuck=this.isRunning&&this.context.currentTime===this.previousCurrentTime,this._isStuck&&this.emit(`stuck`),this.previousCurrentTime=this.context.currentTime},e.CHECK_INTERVAL)}get isStuck(){return this._isStuck}get isRunning(){return this.state===`running`}get currentTime(){return this.context.currentTime}get sampleRate(){return this.context.sampleRate}get state(){return this.context.state}};m(rS,`CHECK_INTERVAL`,1e3),U(),h(),F(),z();var iS,aS=150,oS=400,sS=e=>e===void 0?5:e<=aS?1:e<=oS?2:5,cS=class extends en{get isContextRunning(){var e;return((e=this.audio)==null?void 0:e.state)===`running`}get contextState(){var e,t;return(e=(t=this.audio)==null?void 0:t.state)==null?`none`:e}get volume(){return this._volume}set volume(e){this._volume=e,this.muted||this.setGain(e)}get seekTime(){return 0}get totalSeekTime(){return 0}get isSeeking(){return!1}get muted(){var e;return this._muted||!((e=this.audio)!=null&&e.isRunning)}get userMuted(){return this._userProvidedMuted}set muted(e){this._userProvidedMuted=e,this._muted=e,this.setGain(this._volume)}get isPaused(){return!1}get currentTime(){return!this.audio||!this.audio.isRunning||this.audio.isStuck||this.startTimeIsInvalidated?this.clockSource.currentTime:this.audio.currentTime*1e3+this.clockDelta}set currentTime(e){this.logger.debug(`setting current time to`,{currentTime:e}),this.startTimeIsInvalidated=!0}get bufferTime(){return this._bufferTime}set bufferTime(e){this._bufferTime=e,this.audioBufferMultiplier=sS(e)}get sinkPaused(){return this._sinkPaused}set sinkPaused(e){if(this._sinkPaused&&!e){let e=this.clockSource.currentTime;this.preInitSampleQueue.filterPop(({timestamp:t,timescale:n})=>t/n*1e3>e),this.startTimeIsInvalidated=!0}this._sinkPaused=e}get audioNode(){return this.splitter}constructor(e,t,{muted:n,reInitWhenStuck:r,bufferTime:i}){var a;super(),a=this,m(this,`logger`,void 0),m(this,`audio`,void 0),m(this,`gainNode`,void 0),m(this,`splitter`,void 0),m(this,`_volume`,1),m(this,`_userProvidedMuted`,!1),m(this,`_muted`,!1),m(this,`startTime`,0),m(this,`samples`,new Float32Array),m(this,`preInitSampleQueue`,new T(500)),m(this,`unplayedBufferSources`,new T(100)),m(this,`sampleRate`,48e3),m(this,`channels`,2),m(this,`index`,0),m(this,`clockSource`,void 0),m(this,`clockDelta`,0),m(this,`startTimeIsInvalidated`,!0),m(this,`lastSampleTimestamp`,0),m(this,`reInitWhenStuck`,void 0),m(this,`ignoreSuspendCalls`,!1),m(this,`_bufferTime`,void 0),m(this,`_sinkPaused`,!1),m(this,`audioBufferMultiplier`,void 0),m(this,`isActivated`,!1),m(this,`unload`,P(function*(){var e,t;(e=a.gainNode)==null||e.disconnect(),yield(t=a.audio)==null?void 0:t.unload(),a.reset(),a.audio=void 0,a.gainNode=void 0})),m(this,`suspend`,()=>{this.setGain(0)}),m(this,`unsuspend`,()=>{if(this.setGain(this._volume),!it()){this.resume().catch(this.onUnsuspendFailure);return}this.restartContext()}),m(this,`restartContext`,()=>{var e;this.ignoreSuspendCalls=!!this.audio,(e=this.audio)==null||e.suspend().then(P(function*(){yield a.resume(),a.ignoreSuspendCalls=!1})).catch(this.onUnsuspendFailure)}),m(this,`flush`,(e=this.samples.length)=>{if(!this.audio||!this.gainNode)throw new W(`AudioContext must be initialized to flush`,{isFatal:!1,code:`audiocontext_must_be_initialized`});let t=Math.floor(e/this.channels);if(t<=0)return;let n=this.audio.createBufferSource(),r=this.audio.createBuffer(this.channels,t,this.sampleRate);if(this.channels===2){let e=r.getChannelData(0),n=r.getChannelData(1);for(let r=0;r<t;r++){let t=r*2;e[r]=this.samples[t],n[r]=this.samples[t+1]}}else if(this.channels===1)r.getChannelData(0).set(this.samples.subarray(0,t));else{let e=0;for(let n=0;n<this.channels;n++){e=n;let i=r.getChannelData(n);for(let n=0;n<t;n++)i[n]=this.samples[e],e+=this.channels}}let i=Math.max(this.startTime,0);n.buffer=r,n.connect(this.gainNode),this.splitter&&n.connect(this.splitter),n.start(i),this.unplayedBufferSources.push([i,n]),this.startTime+=r.duration}),m(this,`onDecodedFrame`,e=>{var t;if(this._sinkPaused||!(this.gainNode&&(t=this.audio)!=null&&t.isRunning)){if(e.type===`audio`){this.preInitSampleQueue.push(R(R({},e),{},{data:e.data.slice(0,e.data.length)}));let t=this.clockSource.currentTime;this.preInitSampleQueue.filterPop(({timestamp:e,timescale:n})=>e/n*1e3>t)}return}for(;!this.preInitSampleQueue.isEmpty();){let e=this.preInitSampleQueue.items();this.preInitSampleQueue.clear(),e.forEach(this.onDecodedFrame)}if(this.unplayedBufferSources.filterPop(([e,t])=>{var n,r;return((n=(r=this.audio)==null?void 0:r.currentTime)==null?0:n)<e}),e.type===`audio`){let t=e.timestamp/e.timescale*1e3;if(t<this.lastSampleTimestamp&&(this.logger.info(`Unordered timestamp - invalidating start time`),this.startTimeIsInvalidated=!0),this.lastSampleTimestamp=t,this.startTimeIsInvalidated){let e=this.audio.currentTime*1e3,n=this.clockSource.currentTime,r=(e+t-n)/1e3;this.clockDelta=n-e,this.startTime=r,this.startTimeIsInvalidated=!1,this.unplayedBufferSources.items().forEach(([e,t])=>{r<=e&&t.stop()})}let n=e.data.length*this.audioBufferMultiplier;this.samples.length!==n&&(this.index>0&&this.flush(this.index),this.samples=new Float32Array(n),this.index=0),this.channels=e.channels,this.sampleRate=e.sampleRate,this.samples.set(e.data,this.index),this.index+=e.data.length,this.samples.length<=this.index&&(this.flush(this.samples.length),this.index=0)}}),m(this,`play`,P(function*(){a.audio=a.getAudioContext(),yield a.resume()})),m(this,`pause`,()=>{}),m(this,`flushBuffer`,()=>{var e,t;this.unplayedBufferSources.items().forEach(([e,t])=>{try{t.stop()}catch(e){}}),this.unplayedBufferSources.clear(),this.preInitSampleQueue.clear(),this.samples=new Float32Array,this.index=0,this.lastSampleTimestamp=0,this.startTime=(e=(t=this.audio)==null?void 0:t.currentTime)==null?0:e,this.startTimeIsInvalidated=!0}),m(this,`resume`,P(function*(){if(!a._userProvidedMuted)try{var e;yield(e=a.audio)==null?void 0:e.resume(),a._muted=a._userProvidedMuted,a.startTimeIsInvalidated=!0}catch(e){throw a._muted=!0,e}})),m(this,`onUnsuspendFailure`,()=>{this.ignoreSuspendCalls=!1,this.emit(`state change`,`suspended`)}),m(this,`getAudioContext`,()=>this.audio?this.audio:this.setupContext()),m(this,`setupContext`,()=>{var e,t,n;return(e=this.audio)==null||e.unload(),this.audio=new rS,this.audio.on(`state`,e=>{this.logger.info(`AudioContext state change`,{state:e}),e===`running`&&(this._muted=this._userProvidedMuted,this.setGain(this._volume)),!this.ignoreSuspendCalls&&this.emit(`state change`,e)}),this.audio.on(`stuck`,()=>{if(!this.reInitWhenStuck){this.restartContext();return}this.logger.info(`Re-init audio context`),this.setupContext(),this.resume().catch(C),this.emit(`stuck`)}),(t=this.gainNode)==null||t.disconnect(),this.gainNode=this.audio.createGain(),this.setGain(this._volume),this.startTime=this.audio.currentTime,(n=this.splitter)==null||n.disconnect(),this.splitter=this.audio.createSplitter(),this.audio}),m(this,`setGain`,e=>{this.gainNode&&(this.gainNode.gain.value=this._muted?0:e)}),this._muted=n,this._userProvidedMuted=n,this.logger=e,this.clockSource=t,this.reInitWhenStuck=r,this._bufferTime=i,this.audioBufferMultiplier=sS(i)}useMediaStreamDestination(){var e;let t=this.getAudioContext(),n=t.getMediaStreamDestination();return(e=this.gainNode)==null||e.connect(n),t.isRunning||t.resume().catch(()=>{}),n}useDefaultDestination(){var e;let t=this.getAudioContext().getDefaultDestination();return(e=this.gainNode)==null||e.connect(t),t}};iS=cS,m(cS,`create`,(e,t,n)=>new iS(e,t,n)),h();var lS,uS=class{constructor(e,t,n,r,i,a){m(this,`staleFrameThresholdMs`,400),m(this,`pool`,void 0),m(this,`logger`,void 0),m(this,`videoRenderer`,new ma),m(this,`videoFrameCanvas2DRenderer`,null),m(this,`renderQueue`,[]),m(this,`clockSource`,void 0),m(this,`isFirstFrame`,!0),m(this,`usingWebCodecs`,!1),m(this,`onCanvasChangeCallback`,void 0),m(this,`onRendererErrorCallback`,void 0),m(this,`animationFrameRequest`,void 0),m(this,`firstFrameAnimationFrameRequest`,void 0),m(this,`pendingFirstFrameSample`,void 0),m(this,`renderedFrameCount`,0),m(this,`rendererDroppedFrameCount`,0),m(this,`renderTargetSize`,void 0),m(this,`load`,()=>{this.videoRenderer.load(),this.subscribeToContextLost(this.videoRenderer)}),m(this,`unload`,()=>(this.stopRender(),this.clearRenderQueue(),this.unsubscribeFromContextLost(this.videoRenderer),this.videoRenderer.unload(),this.videoFrameCanvas2DRenderer&&(this.unsubscribeFromContextLost(this.videoFrameCanvas2DRenderer),this.videoFrameCanvas2DRenderer.unload()),Promise.resolve())),m(this,`suspend`,()=>{this.clearRenderQueue(),this.stopRender()}),m(this,`unsuspend`,()=>{this.animationFrameRequest===void 0&&(this.animationFrameRequest=requestAnimationFrame(this.render))}),m(this,`element`,()=>this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.canvas:this.videoRenderer.canvas),m(this,`getStatistics`,()=>({renderedFrameCount:this.renderedFrameCount,rendererDroppedFrameCount:this.rendererDroppedFrameCount})),m(this,`resetSize`,()=>{this.videoRenderer.resetSize()}),m(this,`setActiveCues`,(e,t)=>{this.usingWebCodecs&&this.videoFrameCanvas2DRenderer?this.videoFrameCanvas2DRenderer.setActiveCues(e,t):this.usingWebCodecs||this.videoRenderer.getTextRenderer().setActiveCues(e,t)}),m(this,`onDecodedFrame`,e=>{if(e.type===`video`)if(this.isFirstFrame)this.isFirstFrame=!1,this.pendingFirstFrameSample=e,this.firstFrameAnimationFrameRequest=requestAnimationFrame(()=>{this.firstFrameAnimationFrameRequest=void 0;let e=this.pendingFirstFrameSample;this.pendingFirstFrameSample=void 0,e&&this.renderSample(e)});else{let t=(this.clockSource.currentTime-this.staleFrameThresholdMs)/1e3;this.renderQueue=this.renderQueue.filter(n=>{let r=this.samplePresentationTime(n),i=this.samplePresentationTime(e),a=r>t&&r<=i;return a||this.releaseSampleResources(n),a}),this.renderQueue.push(e)}}),m(this,`render`,()=>{let e=this.clockSource.currentTime,t=this.renderQueue[0],n,r=0;for(;t&&this.samplePresentationTime(t)*1e3<=e;)t=this.renderQueue.shift(),t&&(r++,n&&this.releaseSampleResources(n),n=t),t=this.renderQueue[0];n&&this.renderSample(n),this.rendererDroppedFrameCount+=Math.max(r-1,0),this.animationFrameRequest=requestAnimationFrame(this.render)}),m(this,`renderSample`,e=>{if(this.renderedFrameCount++,e.videoFrame){let n=this.videoFrameCanvas2DRenderer;if(!this.usingWebCodecs){var t;this.logger.info(`Switching to Canvas2D renderer for WebCodecs`),n||(n=new ai,n.load(),this.subscribeToContextLost(n),this.videoFrameCanvas2DRenderer=n);let e=this.videoRenderer.canvas,r=n.canvas;if(e.parentElement)try{e.parentElement.replaceChild(r,e)}catch(e){}this.usingWebCodecs=!0,(t=this.onCanvasChangeCallback)==null||t.call(this)}n?n.render(e,this.getSubtitlePadding()):this.videoRenderer.render(e,this.renderTargetSize),e.videoFrame.close()}else{if(this.usingWebCodecs){var n;this.logger.info(`Switching back to WebGL renderer for WASM`);let t=this.videoFrameCanvas2DRenderer;if(!t){this.usingWebCodecs=!1,this.videoRenderer.render(e,this.renderTargetSize),e.buffer.byteLength>0&&this.pool.reclaim(e.buffer);return}let r=t.canvas,i=this.videoRenderer.canvas;if(r.parentElement)try{r.parentElement.replaceChild(i,r)}catch(e){}this.usingWebCodecs=!1,(n=this.onCanvasChangeCallback)==null||n.call(this)}this.videoRenderer.render(e,this.renderTargetSize)}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),m(this,`stopRender`,()=>{this.animationFrameRequest!==void 0&&(cancelAnimationFrame(this.animationFrameRequest),this.animationFrameRequest=void 0),this.firstFrameAnimationFrameRequest!==void 0&&(cancelAnimationFrame(this.firstFrameAnimationFrameRequest),this.firstFrameAnimationFrameRequest=void 0),this.pendingFirstFrameSample&&(this.releaseSampleResources(this.pendingFirstFrameSample),this.pendingFirstFrameSample=void 0)}),m(this,`clearRenderQueue`,()=>{this.renderQueue.forEach(e=>{this.releaseSampleResources(e)}),this.renderQueue=[]}),m(this,`onRendererContextLost`,e=>{var t;(t=this.onRendererErrorCallback)==null||t.call(this,e)}),m(this,`subscribeToContextLost`,e=>{let t=e;typeof t.on==`function`&&t.on(`context lost`,this.onRendererContextLost)}),m(this,`unsubscribeFromContextLost`,e=>{let t=e;typeof t.off==`function`&&t.off(`context lost`,this.onRendererContextLost)}),m(this,`getSubtitlePadding`,()=>{let e=this.renderTargetSize.style.getPropertyValue(`--vindral-subtitle-offset`)||this.renderTargetSize.style.getPropertyValue(`--vindral-control-bar-offset`),t=parseInt(e||`0`,10);return Number.isNaN(t)?0:-t}),m(this,`samplePresentationTime`,e=>(e.timestamp+(e.compositionTimeOffset||0))/e.timescale),m(this,`releaseSampleResources`,e=>{try{var t;(t=e.videoFrame)==null||t.close()}catch(e){}e.buffer.byteLength>0&&this.pool.reclaim(e.buffer)}),this.logger=e,this.clockSource=t,this.pool=n,this.renderTargetSize=r||this.videoRenderer.canvas,this.onCanvasChangeCallback=i,this.onRendererErrorCallback=a}};lS=uS,m(uS,`create`,(e,t,n,r,i,a)=>new lS(e,t,n,r,i,a)),D(),j(),N();var dS=new WeakMap,fS=class{constructor(){E(this,dS,[]),A(dS,this,[])}addTextTrack(e,t,n){let r=[],i={kind:e,label:t,language:n,mode:`disabled`,cues:r,addCue:e=>{r.push(e)},removeCue:e=>{let t=r.findIndex(t=>t===e);t!==-1&&r.splice(t,1)}};return M(dS,this).push(i),i}set language(e){M(dS,this).forEach(t=>{t.language===e?t.mode=`showing`:t.mode=`hidden`})}get language(){var e;return(e=M(dS,this).find(e=>e.mode===`showing`))==null?void 0:e.language}get tracks(){return M(dS,this)}get activeTrack(){return M(dS,this).find(e=>e.mode===`showing`)}getActiveCues(e){let t=M(dS,this).find(e=>e.mode===`showing`);return t?t.cues.filter(({startTime:t,endTime:n})=>e>=t&&e<n):[]}};U(),h();var pS=(e,t)=>{let n;for(n=t;e>1;e--)n+=t;return n},mS=class{constructor(){m(this,`audio`,void 0),m(this,`unmute`,()=>this.audio.play().catch(C));let e=document.createElement(`div`);e.innerHTML=`<audio x-webkit-airplay='deny'></audio>`;let t=e.children.item(0);if(t instanceof HTMLAudioElement)this.audio=t,this.audio.controls=!1,this.audio.disableRemotePlayback=!0,this.audio.preload=`auto`,this.audio.src=`data:audio/mpeg;base64,//uQx`+pS(23,`A`)+`WGluZwAAAA8AAAACAAACcQCA`+pS(16,`gICA`)+pS(66,`/`)+`8AAABhTEFNRTMuMTAwA8MAAAAAAAAAABQgJAUHQQAB9AAAAnGMHkkI`+pS(320,`A`)+`//sQxAADgnABGiAAQBCqgCRMAAgEAH`+pS(15,`/`)+`7+n/9FTuQsQH//////2NG0jWUGlio5gLQTOtIoeR2WX////X4s9Atb/JRVCbBUpeRUq`+pS(18,`/`)+`9RUi0f2jn/+xDECgPCjAEQAABN4AAANIAAAAQVTEFNRTMuMTAw`+pS(97,`V`)+`Q==`,this.audio.loop=!1,this.audio.load();else throw Error(`Failed to create audio tag`)}};U(),h(),z();var hS,gS=class{constructor(e,t,n,r,i,a,o,s){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`unmuter`,new mS),m(this,`_isPaused`,!1),m(this,`isDisconnected`,!1),m(this,`timers`,new sr),m(this,`isVideoRenderingEnabled`,!0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!0),m(this,`isVideoPlayerLoaded`,!1),m(this,`volumeState`,void 0),m(this,`textTracks`,new fS),m(this,`playbackRate`,void 0),m(this,`emitVolumeState`,()=>{let e={volume:this.volume,isMuted:this.userMuted};Qt(e,this.volumeState)||(this.volumeState=e,this.emitter.emit(`volume state`,e))}),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.audioPlayer.useDefaultDestination(),this.emitter.on(`decoded frame`,this.onDecodedFrame),this.emitter.on(`flush buffers`,this.flushBuffers),this.isLoaded=!0,this.isVideoRenderingEnabled&&(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0,this.startTextTrackInterval())}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`decoded frame`,this.onDecodedFrame),this.emitter.off(`flush buffers`,this.flushBuffers),this.audioPlayer.unload(),this.isVideoPlayerLoaded&&(this.videoPlayer.unload(),this.isVideoPlayerLoaded=!1),this.timers.unload(),this.isLoaded=!1}),m(this,`suspend`,()=>{this.isSuspended=!0,this.isVideoRenderingEnabled&&this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.isVideoRenderingEnabled&&this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`setVideoRenderingEnabled`,e=>{if(e!==this.isVideoRenderingEnabled&&(this.isVideoRenderingEnabled=e,this.isLoaded)){if(!e){this.timers.unload(),this.videoPlayer.suspend();return}this.isVideoPlayerLoaded||(this.videoPlayer.load(),this.isVideoPlayerLoaded=!0),this.startTextTrackInterval(),this.isSuspended||this.videoPlayer.unsuspend()}}),m(this,`element`,()=>this.videoPlayer.element()),m(this,`getStatistics`,()=>R(R({},this.videoPlayer.getStatistics()),{},{audioContextState:this.audioPlayer.contextState})),m(this,`startTextTrackInterval`,()=>{this.timers.setInterval(()=>{if(!this.textTracks.language)return;let e=this.textTracks.getActiveCues(this.currentTime/1e3);this.videoPlayer.setActiveCues(e,{width:this.videoPlayer.element().clientWidth,height:this.videoPlayer.element().clientHeight})},100)}),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&(this.isDisconnected=!1,this.audioPlayer.useDefaultDestination()),this._isPaused=!1,this.unmuter.unmute(),this.audioPlayer.play())),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,ji(!1,e))}this.isVideoRenderingEnabled&&this.videoPlayer.onDecodedFrame(e)}),this.logger=t,this.emitter=e,this.pool=n,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.audioPlayer=cS.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:i,reInitWhenStuck:!0,bufferTime:s}),a!==void 0&&(this.audioPlayer.volume=a),this.audioPlayer.on(`stuck`,()=>{this.isDisconnected=!0}),this.audioPlayer.on(`state change`,this.emitVolumeState),this.videoPlayer=uS.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,void 0,o)}get volume(){return this.audioPlayer.volume}set volume(e){this.audioPlayer.volume=e,this.emitVolumeState()}get muted(){return this.audioPlayer.muted}get userMuted(){return this.audioPlayer.userMuted}set muted(e){let t=this.muted;this.audioPlayer.muted=e,this.emitVolumeState(),!e&&t&&this.activateAudioPlayer().catch(C)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.audioPlayer.isActivated}set isActivated(e){this.audioPlayer.isActivated=e}get seekTime(){return this.audioPlayer.seekTime}get totalSeekTime(){return this.audioPlayer.totalSeekTime}get isPaused(){return this._isPaused}get isSeeking(){return this.audioPlayer.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){this.activateAudioPlayer().then(()=>{this.emitter.emit(`media element state`,`playing`)}).catch(()=>{this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})})}pause(){this._isPaused=!0,this.audioPlayer.pause(),this.emitter.emit(`media element state`,`paused`)}};hS=gS,m(gS,`create`,(e,t,n,r,i,a,o,s)=>new hS(e,t,n,r,i,a,o,s)),h(),z();var _S,vS=[`play`,`pause`,`stop`],yS,bS=new Set,xS=class e{constructor(t,n,r){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`options`,void 0),m(this,`isLoaded`,!1),m(this,`playbackState`,void 0),m(this,`pageMetadata`,null),m(this,`load`,()=>{this.isLoaded||!e.isSupported()||(this.isLoaded=!0,bS.add(this),this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`volume state`,this.update))}),m(this,`unload`,()=>{var e;this.isLoaded&&(this.isLoaded=!1,bS.delete(this),this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`volume state`,this.update),this.handOverOwnership(`on unload`),(e=this.options.decoy)==null||e.unload())}),m(this,`stop`,()=>{var e;this.playbackState=void 0,(e=this.options.decoy)==null||e.unload(),yS===this&&this.handOverOwnership(`on stop`)}),m(this,`getStatistics`,()=>{var t;return{mediaSessionSupported:e.isSupported(),mediaSessionOwner:yS===this,mediaSessionPlaybackState:yS===this?this.isPaused?`paused`:`playing`:`none`,decoyState:(t=this.options.decoy)==null?void 0:t.getStatistics().decoyState}}),m(this,`onPlaybackState`,e=>{this.playbackState=e,this.update()}),m(this,`refresh`,()=>{this.update()}),m(this,`update`,()=>{if(this.isLoaded){if(this.isEligibleToOwn&&yS!==this){this.claimOwnership();return}this.sync()}}),m(this,`handOverOwnership`,e=>{if(yS===this){this.logger.debug(`Handing over the media session ${e}`),this.releaseOwnership();for(let e of bS)if(e!==this&&e.isEligibleToOwn){e.claimOwnership();return}}}),m(this,`sync`,()=>{var e,t,n,r,i,a;if(yS!==this)return;if((e=(t=this.options).isSuppressed)!=null&&e.call(t)){var o;(o=this.options.decoy)==null||o.unload(),this.handOverOwnership(`as suppressed`);return}if(this.options.isMuted()&&this.options.pauseMeansMute!==!0){if(this.options.keepDecoyWhenMuted){var s;(s=this.options.decoy)==null||s.pause()}else{var c;(c=this.options.decoy)==null||c.unload()}this.handOverOwnership(`as muted`);return}if(this.isPaused&&(n=(r=this.options).releaseOnHiddenPause)!=null&&n.call(r)&&(i=(a=this.options).isHidden)!=null&&i.call(a)){var l;(l=this.options.decoy)==null||l.unload(),this.handOverOwnership(`as a hidden pause`);return}let u=this.isPaused?`paused`:`playing`;if(navigator.mediaSession.playbackState=u,u===`paused`){if(!this.options.holdDecoyWhilePaused){var d;(d=this.options.decoy)==null||d.pause()}}else{var f;(f=this.options.decoy)==null||f.play()}}),m(this,`claimOwnership`,()=>{yS==null||yS.releaseOwnership(),yS=this,this.pageMetadata=navigator.mediaSession.metadata,this.applyMetadata();for(let e of vS)this.safely(e,()=>navigator.mediaSession.setActionHandler(e,this.onAction[e]));this.safely(`position state`,()=>{var e,t;return(e=(t=navigator.mediaSession).setPositionState)==null?void 0:e.call(t,{duration:1/0,playbackRate:1,position:0})}),this.sync()}),m(this,`applyMetadata`,()=>{let e=this.options.metadata;e&&this.safely(`metadata`,()=>{navigator.mediaSession.metadata=new MediaMetadata(R({},e))})}),m(this,`releaseOwnership`,()=>{var e;if(yS===this){yS=void 0,(e=this.options.decoy)==null||e.pause();for(let e of vS)this.safely(e,()=>navigator.mediaSession.setActionHandler(e,null));this.options.metadata&&this.safely(`metadata restore`,()=>{navigator.mediaSession.metadata=this.pageMetadata}),this.safely(`release`,()=>{navigator.mediaSession.playbackState=`none`}),this.pageMetadata=null}}),m(this,`safely`,(e,t)=>{try{t()}catch(t){this.logger.debug(`Media session ${e} failed`,{error:t})}}),m(this,`onAction`,{play:()=>{this.emitter.emit(`media session: request play`)},pause:()=>{this.emitter.emit(`media session: request pause`)},stop:()=>{this.emitter.emit(`media session: request stop`)}}),this.emitter=t,this.logger=n,this.options=r}get isPaused(){var e,t;return this.playbackState===`paused`||((e=(t=this.options).isSinkPaused)==null?void 0:e.call(t))===!0||this.options.pauseMeansMute===!0&&this.options.isMuted()}get isEligibleToOwn(){var e,t;return this.playbackState!==void 0&&!this.isPaused&&!this.options.isMuted()&&((e=(t=this.options).isSuppressed)==null?void 0:e.call(t))!==!0}};_S=xS,m(xS,`create`,(e,t,n)=>new _S(e,t,n)),m(xS,`isSupported`,()=>typeof navigator<`u`&&`mediaSession`in navigator&&typeof MediaMetadata<`u`),U(),h(),z();var SS,CS=class{constructor(e,t,n,r,{muted:i,volume:a,type:o,poster:s,offscreenCanvas:c,bufferTime:l,backgroundPlaybackEnabled:u,splitAudio:d}){if(m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`sound`,void 0),m(this,`wantsPlay`,void 0),m(this,`audioPlayer`,void 0),m(this,`videoPlayer`,void 0),m(this,`pool`,void 0),m(this,`isDisconnected`,!0),m(this,`_userProvidedMuted`,!1),m(this,`timers`,new sr),m(this,`offscreenCanvas`,void 0),m(this,`videoTrack`,void 0),m(this,`canvasCaptureTracks`,[]),m(this,`backgroundPlaybackEnabled`,void 0),m(this,`nativeTracksByLanguage`,new Map),m(this,`nativeCuesByLanguage`,new Map),m(this,`lastCanvasCueTexts`,[]),m(this,`isIOSNativeFullscreen`,!1),m(this,`knownNativeLanguage`,void 0),m(this,`renderCanvasSubtitlesInNativeFullscreen`,(()=>{let e=dt().platform;return e.isIOS&&e.iosVersion<=16})()),m(this,`volumeState`,void 0),m(this,`textTracks`,new fS),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.mediaElement.load(),this.sound&&(this.sound.load(),document.body.appendChild(this.sound.element),this.mediaElement.element.addEventListener(`pause`,this.onVideoPause),this.mediaElement.element.addEventListener(`play`,this.onVideoPlay),window.addEventListener(`focus`,this.onWindowFocus)),this.emitter.on(`decoded frame`,this.onDecodedFrame),this.emitter.on(`flush buffers`,this.flushBuffers),this.emitter.on(`ios-hack: reset size`,this.resetCanvasSize),this.emitter.on(`enter picture in picture`,this.onEnterIOSHack),this.emitter.on(`exit picture in picture`,this.onExitIOSHack),this.element().element.textTracks.addEventListener(`change`,this.onNativeTextTrackChange),this.element().element.addEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.addEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack),this.videoPlayer.load(),this.timers.setInterval(this.syncNativeTextTracks,100)}),m(this,`unload`,()=>{this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`decoded frame`,this.onDecodedFrame),this.emitter.off(`flush buffers`,this.flushBuffers),this.emitter.off(`ios-hack: reset size`,this.resetCanvasSize),this.emitter.off(`enter picture in picture`,this.onEnterIOSHack),this.emitter.off(`exit picture in picture`,this.onExitIOSHack),this.element().element.textTracks.removeEventListener(`change`,this.onNativeTextTrackChange),this.element().element.removeEventListener(`webkitendfullscreen`,this.onExitIOSHack),this.element().element.removeEventListener(`webkitbeginfullscreen`,this.onEnterIOSHack);for(let e of this.nativeTracksByLanguage.keys())this.clearNativeCues(e);this.nativeTracksByLanguage.clear(),this.nativeCuesByLanguage.clear(),this.sound&&(this.mediaElement.element.removeEventListener(`pause`,this.onVideoPause),this.mediaElement.element.removeEventListener(`play`,this.onVideoPlay),window.removeEventListener(`focus`,this.onWindowFocus),this.sound.pause(),this.sound.element.srcObject=null,this.sound.unload(),this.sound.element.remove()),this.mediaElement.unload(),this.timers.unload(),this.audioPlayer.unload(),this.videoPlayer.unload()}),m(this,`suspend`,()=>{this.videoPlayer.suspend(),this.audioPlayer.suspend()}),m(this,`unsuspend`,()=>{this.videoPlayer.unsuspend(),this.audioPlayer.unsuspend()}),m(this,`element`,()=>this.mediaElement),m(this,`elements`,()=>this.sound?[this.mediaElement,this.sound]:[this.mediaElement]),m(this,`getStatistics`,()=>R(R({},this.videoPlayer.getStatistics()),{},{audioContextState:this.audioPlayer.contextState})),m(this,`activateAudioPlayer`,()=>(this.isDisconnected&&this.connectStreams(),this.audioPlayer.play())),m(this,`flushBuffers`,()=>{this.audioPlayer.flushBuffer()}),m(this,`onTargetBufferTime`,e=>{this.audioPlayer.bufferTime=e}),m(this,`resetCanvasSize`,()=>{this.videoPlayer.resetSize()}),m(this,`onVideoPause`,()=>{this.mediaElement.element.paused&&(this.emitPlaybackState(),this.wantsPlay&&this.timers.setTimeout(this.isIOSNativeFullscreen?this.reportFullscreenPause:this.restartVideoIfWanted,400))}),m(this,`onVideoPlay`,()=>{if(!this.mediaElement.element.paused){if(!this.wantsPlay){this.isIOSNativeFullscreen?this.emitter.emit(`native control`,`play`):this.mediaElement.pause();return}this.emitPlaybackState()}}),m(this,`onEnterIOSHack`,()=>{this.isIOSNativeFullscreen=!0,this.mediaElement._iosHackEnterPiPMode()}),m(this,`onExitIOSHack`,()=>{this.isIOSNativeFullscreen=!1,this.clearCanvasCues(),this.mediaElement._iosHackExitPiPMode(),this.sound&&this.restartVideoIfWanted()}),m(this,`reportFullscreenPause`,()=>{!this.isIOSNativeFullscreen||!this.wantsPlay||!this.mediaElement.element.paused||(Ot(this.mediaElement.element)===`picture-in-picture`||document.hasFocus()?this.emitter.emit(`native control`,`pause`):this.emitter.emit(`fullscreen app switch`))}),m(this,`onWindowFocus`,()=>{this.isIOSNativeFullscreen&&this.wantsPlay&&this.mediaElement.element.paused&&this.mediaElement.tryPlay()}),m(this,`lastPlaybackState`,void 0),m(this,`emitPlaybackState`,()=>{let e=this.isPaused?`paused`:`playing`;e!==this.lastPlaybackState&&(this.lastPlaybackState=e,this.emitter.emit(`media element state`,e))}),m(this,`restartVideoIfWanted`,()=>{this.wantsPlay&&this.mediaElement.element.paused&&!this.isIOSNativeFullscreen&&document.visibilityState===`visible`&&this.mediaElement.tryPlay()}),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,ji(!1,e))}this.offscreenCanvas||this.videoPlayer.onDecodedFrame(e)}),m(this,`onVideoPlayerError`,e=>{if(e instanceof W){this.emitter.emit(`error`,e);return}this.emitter.emit(`error`,ki(!1,e,`video`))}),m(this,`connectStreams`,()=>{let e=this.offscreenCanvas||this.videoPlayer.element();this.logger.info(`Connecting streams using ${this.offscreenCanvas?`OffscreenCanvas`:`VideoPlayer`} canvas (${e.width}x${e.height})`);let t=this.videoTrack?[this.videoTrack]:e.captureStream().getTracks(),n=this.canvasCaptureTracks;this.canvasCaptureTracks=this.videoTrack?[]:t;let r=this.audioPlayer.useMediaStreamDestination().stream,i=this.sound?t:[...t,...r.getTracks()];this.logger.info(`Video tracks: ${t.length} (${this.videoTrack?`worker track`:`canvas capture`}), Audio tracks: ${r.getTracks().length}`);for(let e of n)e.stop();this.mediaElement.element.srcObject=new MediaStream(i),this.sound&&this.sound.element.srcObject!==r&&(this.sound.element.srcObject=r),this.isDisconnected=!1}),m(this,`setVideoTrack`,e=>{this.videoTrack!==e&&(this.videoTrack=e,this.reconnectCanvasStream())}),m(this,`setOffscreenCanvas`,e=>{this.offscreenCanvas!==e&&(this.offscreenCanvas=e,this.reconnectCanvasStream())}),m(this,`setBackgroundPlaybackEnabled`,e=>{this.backgroundPlaybackEnabled!==e&&(this.backgroundPlaybackEnabled=e,this.applyVisibilityMutePolicy())}),m(this,`reconnectCanvasStream`,()=>{if(!this.isDisconnected){let e=!this.mediaElement.element.paused;this.logger.info(`Reconnecting canvas stream after renderer change`,{wasPlaying:e}),this.connectStreams(),e&&this.mediaElement.tryPlay()}}),m(this,`ensureNativeTrack`,e=>{let t=this.nativeTracksByLanguage.get(e.language);if(t)return t;let n=this.mediaElement.element.addTextTrack(e.kind,e.label,e.language);return this.nativeTracksByLanguage.set(e.language,n),this.nativeCuesByLanguage.set(e.language,[]),n}),m(this,`getSelectedNativeTextTrack`,()=>{let e=this.mediaElement.element.textTracks;for(let t=0;t<e.length;t++){let n=e[t];if((n==null?void 0:n.mode)===`showing`)return n}}),m(this,`onNativeTextTrackChange`,()=>{let e=this.getSelectedNativeTextTrack();if((e==null?void 0:e.language)===this.knownNativeLanguage)return;if(this.knownNativeLanguage=e==null?void 0:e.language,!e){this.emitter.emit(`native text track selected`,void 0);return}let t=this.textTracks.tracks.find(t=>t.language===e.language);t&&this.emitter.emit(`native text track selected`,t.label)}),m(this,`clearNativeCues`,e=>{let t=this.nativeTracksByLanguage.get(e),n=this.nativeCuesByLanguage.get(e);if(!(!t||!n||n.length===0)){for(let e of n)try{t.removeCue(e)}catch(e){}this.nativeCuesByLanguage.set(e,[])}}),m(this,`setNativeCues`,(e,t)=>{let n=this.nativeTracksByLanguage.get(e),r=this.nativeCuesByLanguage.get(e);if(!n||!r||Qt(t.map(e=>e.text),r.map(e=>e.text)))return;this.clearNativeCues(e);let i=[];for(let e of t){let t=new VTTCue(0,2**53-1,e.text);n.addCue(t),i.push(t)}this.nativeCuesByLanguage.set(e,i)}),m(this,`shouldRenderCanvasCues`,()=>this.canvasCuesEnabled&&this.isIOSNativeFullscreen),m(this,`setCanvasCues`,(e,t=!1)=>{let n=e.map(e=>e.text);!t&&Qt(n,this.lastCanvasCueTexts)||(this.lastCanvasCueTexts=n,this.videoPlayer.setActiveCues(e,{width:this.mediaElement.element.clientWidth,height:this.mediaElement.element.clientHeight}))}),m(this,`clearCanvasCues`,()=>{this.canvasCuesEnabled&&this.setCanvasCues([],!0)}),m(this,`syncNativeTextTracks`,()=>{var e;for(let e of this.textTracks.tracks)this.ensureNativeTrack(e);let t=this.textTracks.activeTrack,n=t?this.textTracks.getActiveCues(this.currentTime/1e3):[];this.shouldRenderCanvasCues()&&this.setCanvasCues(n);for(let[e,r]of this.nativeTracksByLanguage)e===(t==null?void 0:t.language)?(r.mode!==`showing`&&(r.mode=`showing`),this.setNativeCues(e,n)):(r.mode!==`disabled`&&(r.mode=`disabled`),this.clearNativeCues(e));this.knownNativeLanguage=(e=this.getSelectedNativeTextTrack())==null?void 0:e.language}),m(this,`updateVolumeState`,()=>{let e={isMuted:this.userMuted,volume:this.volume};Qt(e,this.volumeState)||(this.volumeState=e,this.emitter.emit(`volume state`,this.volumeState))}),m(this,`applyVisibilityMutePolicy`,()=>{if(!this.audioPlayer.isContextRunning)return;let e=document.visibilityState===`hidden`;this.soundElement.muted=this._userProvidedMuted||e&&!this.backgroundPlaybackEnabled}),this.logger=t,this.emitter=e,this.pool=n,this._userProvidedMuted=i,this.offscreenCanvas=c,this.backgroundPlaybackEnabled=u==null?!1:u,this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.mediaElement=new eu({poster:s,type:o,muted:d?!0:i,volume:a,autoplay:!1,logger:this.logger.createContext(`MediaElement`)}),d&&(this.sound=new eu({type:`audio`,muted:i,volume:a,autoplay:!1,logger:this.logger.createContext(`SoundElement`)}),this.sound.element.style.display=`none`,this.sound.element.setAttribute(`aria-hidden`,`true`)),this.soundElement.on(`volume state`,e=>{this.updateVolumeState(),!e.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(C),e.isMuted||(this._userProvidedMuted=!1)}),this.soundElement.on(`media element state`,e=>{e===`paused`&&this.audioPlayer.flushBuffer(),this.audioPlayer.sinkPaused=e===`paused`,this.emitPlaybackState()}),this.sound)for(let e of this.elements())e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`error`,e=>this.emitter.emit(`error`,e));this.audioPlayer=cS.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:!1,reInitWhenStuck:!1,bufferTime:l}),this.audioPlayer.on(`state change`,e=>{e===`suspended`||e===`interrupted`?this.soundElement.muted=!0:e===`running`&&this.applyVisibilityMutePolicy(),this.updateVolumeState()}),this.videoPlayer=uS.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,this.mediaElement.element,()=>this.reconnectCanvasStream(),this.onVideoPlayerError)}get volume(){return this.soundElement.volume}set volume(e){this.soundElement.volume=e}get muted(){return this.soundElement.muted||this.audioPlayer.muted}get userMuted(){return this.audioPlayer.isContextRunning?this.soundElement.muted:this._userProvidedMuted}set muted(e){let t=this.muted;this._userProvidedMuted=e,this.soundElement.muted=e,!e&&t&&this.activateAudioPlayer().catch(C)}get currentTime(){return this.audioPlayer.currentTime}set currentTime(e){this.audioPlayer.currentTime=e}get isActivated(){return this.mediaElement.isActivated}set isActivated(e){this.mediaElement.isActivated=e}get seekTime(){return this.mediaElement.seekTime}get totalSeekTime(){return this.mediaElement.totalSeekTime}get isPaused(){return this.sound?this.wantsPlay===!1||this.sound.isPaused&&this.mediaElement.element.paused:this.mediaElement.isPaused}get isPlayingAsRequested(){let e=this.soundElement.element;return!this.wantsPlay||!e.paused&&e.muted===this._userProvidedMuted}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){var e;this.wantsPlay=!0;let t=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{t||this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})}),(e=this.sound)==null||e.play(),this.mediaElement.play()}pause(){var e;this.wantsPlay=!1,(e=this.sound)==null||e.pause(),this.mediaElement.pause()}get soundElement(){var e;return(e=this.sound)==null?this.mediaElement:e}get canvasCuesEnabled(){return this.renderCanvasSubtitlesInNativeFullscreen&&!this.offscreenCanvas}};SS=CS,m(CS,`create`,(e,t,n,r,i)=>new SS(e,t,n,r,i)),U(),h(),z(),F();var wS,TS=class{constructor(){m(this,`initSegments`,new Map),m(this,`set`,(e,t,n)=>{var r;let i=(r=this.initSegments.get(e))==null?new Map:r;i.set(t,n),this.initSegments.set(e,i)}),m(this,`get`,(e,t)=>{var n;return(n=this.initSegments.get(e))==null?void 0:n.get(t)})}};function ES(e,{mediaSource:t,mimeType:n,codec:r}){return R(R({},e),{},{state:`initialized`,mimeType:n,sourceBufferMimeType:n,codec:r,sourceBuffer:t.addSourceBuffer(n),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:performance.now()})}function DS({initSegments:e,pendingSamples:t}){return{state:`uninitialized`,initSegments:e==null?new TS:e,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:t.some(e=>e.isSync),pendingSamples:t==null?[]:t,pendingSamplesOffset:0,consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}var OS=class{constructor(e,t,n){var r=this;m(this,`maxChunkSize`,20),m(this,`minConsecutiveErrorsBeforeEmit`,5),m(this,`maxSecondsInBuffer`,60),m(this,`logger`,void 0),m(this,`timers`,sr.create()),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`mediaSource`,new Rl),m(this,`trackContexts`,new Map),m(this,`autoRecoverFromMediaErrors`,!0),m(this,`quotaErrorCount`,0),m(this,`recoveredFromErrorCount`,0),m(this,`sourceOpenStartTime`,performance.now()),m(this,`sourceOpenEndTime`,performance.now()),m(this,`pendingTracksToAddSourceBuffers`,void 0),m(this,`hasAddedInitialPosterFrame`,!0),m(this,`videoKeyframeTimestamps`,[]),m(this,`isReopening`,!1),m(this,`pendingMediaError`,void 0),m(this,`isFlushDeferred`,!1),m(this,`hasRecoveredSinceShown`,!1),m(this,`playbackStallCount`,0),m(this,`hasStartedPlayback`,!1),m(this,`isPlaybackStalled`,!1),m(this,`load`,()=>{this.emitter.on(`init segment`,this.init),this.emitter.on(`coded sample`,this.onCodedSample),this.emitter.on(`flush buffers`,this.flushBuffers),this.emitter.on(`fragment`,this.onFragment),this.emitter.on(`page active`,this.onPageActive)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.pendingMediaError=void 0,this.emitter.off(`init segment`,this.init),this.emitter.off(`coded sample`,this.onCodedSample),this.emitter.off(`flush buffers`,this.flushBuffers),this.emitter.off(`fragment`,this.onFragment),this.emitter.off(`page active`,this.onPageActive),this.mediaSource.off(`source ended`,this.onSourceEnded),this.mediaSource.off(`source open`,this.onSourceOpen),this.mediaElement.removeEventListener(`error`,this.onMediaElementError),this.mediaElement.removeEventListener(`waiting`,this.onPlaybackStall),this.mediaElement.removeEventListener(`stalled`,this.onPlaybackStall),this.mediaElement.removeEventListener(`playing`,this.onPlaybackProgress),this.mediaElement.removeEventListener(`pause`,this.onPlaybackPauseOrSeek),this.mediaElement.removeEventListener(`play`,this.onPlay),this.mediaElement.removeEventListener(`seeking`,this.onPlaybackPauseOrSeek),this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(e=>{e.state===`initialized`&&e.sourceBuffer.dispose(),e.pendingSamples=[],e.pendingSamplesOffset=0}),this.videoKeyframeTimestamps=[],this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`getStatistics`,()=>{var e,t;let n={quotaErrorCount:this.quotaErrorCount,mediaSourceOpenTime:this.sourceOpenEndTime-this.sourceOpenStartTime,playbackStallCount:this.playbackStallCount,successfulAudioAppendsCalls:(e=this.trackContexts.get(`audio`))==null?void 0:e.successfulAppendCalls,successfulVideoAppendCalls:(t=this.trackContexts.get(`video`))==null?void 0:t.successfulAppendCalls,videoKeyframeIntervalMs:Bt(this.videoKeyframeTimestamps),videoRenderer:`MSE`,videoDecoder:`MSE`,audioRenderer:`MSE`,audioDecoder:`MSE`};if(this.mediaElement instanceof HTMLVideoElement){var r,i;let e=(r=(i=this.mediaElement).getVideoPlaybackQuality)==null?void 0:r.call(i);n.totalVideoFrames=e==null?void 0:e.totalVideoFrames,n.droppedVideoFrames=e==null?void 0:e.droppedVideoFrames}return n}),m(this,`flushBuffers`,()=>{if(document.visibilityState!==`visible`&&this.mediaElement.paused&&this.hasStartedPlayback){this.logger.info(`Deferring the buffer flush until the page is visible or playback resumes`),this.isFlushDeferred=!0;return}this.isFlushDeferred=!1,this.videoKeyframeTimestamps=[];let e=[];this.trackContexts.forEach(t=>{t.pendingSamples=[],t.pendingSamplesOffset=0,t.hasFirstSync=!1,t.state!==`uninitialized`&&this.mediaSource.isOpen()&&e.push(t.sourceBuffer.removeBuffer(0,1/0).catch(e=>{if(!(e instanceof Il))throw e}))}),Promise.all(e).then(()=>this.emitter.emit(`buffers flushed`)).catch(e=>this.logger.error(`Failed to remove buffer`,e))}),m(this,`setTrackContexts`,(e=new Map)=>{this.logger.debug(`setTrackContexts`),[`audio`,`video`].forEach(t=>{var n,r,i;let a=e.get(t),o=(n=a==null?void 0:a.pendingSamples)==null?[]:n,s=a==null?void 0:a.initSegments,c=(r=a==null?void 0:a.pendingSamplesOffset)==null?0:r;for(;c<o.length&&!((i=o[c])!=null&&i.isSync);)c++;let l=DS({pendingSamples:o,initSegments:s});l.pendingSamplesOffset=c,this.trackContexts.set(t,l)})}),m(this,`resetRemovedTrackContexts`,e=>{let t=new Set(e.map(e=>e.type));this.trackContexts.forEach((e,n)=>{if(t.has(n))return;e.state===`initialized`&&this.mediaSource.isOpen()&&this.mediaSource.removeSourceBuffer(e.sourceBuffer);let r=DS({pendingSamples:[],initSegments:e.initSegments});this.trackContexts.set(n,r)})}),m(this,`isCurrentTrackContext`,(e,t)=>this.trackContexts.get(e)===t),m(this,`initializeSourceBuffer`,(e,t)=>{let n=ES(e,{mimeType:t.mimeType,mediaSource:this.mediaSource,codec:t.codec});n.sourceBuffer.setErrorCallback(this.onSourceBufferError(t.type)),this.trackContexts.set(t.type,n)}),m(this,`setSourceBuffers`,function(){var e=P(function*(e){if(!r.mediaSource.isOpen()){r.pendingTracksToAddSourceBuffers=e;return}r.resetRemovedTrackContexts(e);let t=!0;for(let n of e){let e=r.trackContexts.get(n.type);if(!e||e.state===`uninitialized`||e.sourceBufferMimeType!==n.mimeType){t=!1;break}}if(t){r.logger.debug(`Already setup with the correct mime types`);return}for(let t of e){let n=r.trackContexts.get(t.type);if(n||(n=DS({pendingSamples:[],initSegments:new TS}),r.trackContexts.set(t.type,n)),n.state===`initialized`){if(t.mimeType!==n.sourceBufferMimeType)try{yield n.sourceBuffer.changeType(t.mimeType),n.sourceBufferMimeType=t.mimeType}catch(i){if(i instanceof Il)throw r.logger.debug(`Abandoning source buffer setup for a disposed buffer`,{type:t.type}),i;r.logger.warn(`changeType failed, recreating source buffer`,{from:n.sourceBufferMimeType,to:t.mimeType,error:i});try{r.mediaSource.removeSourceBuffer(n.sourceBuffer)}catch(t){r.logger.warn(`removeSourceBuffer failed`,{removeError:t}),r.reopenMediaSource(`changeType recovery failed`),r.pendingTracksToAddSourceBuffers=e;return}let a=DS({pendingSamples:n.pendingSamples,initSegments:n.initSegments});a.pendingSamplesOffset=n.pendingSamplesOffset,r.initializeSourceBuffer(a,t)}}else r.initializeSourceBuffer(n,t)}});return function(t){return e.apply(this,arguments)}}()),m(this,`getBuffer`,e=>{if(this.mediaSource.isClosed())return[];let t=this.trackContexts.get(e);return!t||t.state===`uninitialized`?[]:this.getBufferedRanges(t.sourceBuffer)}),m(this,`getBufferState`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return{buffered:t,playbackState:this.getPlaybackStateForBufferedRanges(e,t)}}),m(this,`getNextBufferedRangeStart`,e=>{let t=this.getCommonBufferedRangesForCurrentTracks();if(t)return kS(e,t)}),m(this,`getVideoKeyframeTimestamps`,()=>this.videoKeyframeTimestamps),m(this,`init`,({initSegment:e,mimeType:t})=>{this.logger.debug(`Added init segment`,{channel:e.channelId,renditionId:e.renditionId});let n=this.trackContexts.get(e.type);if(!n)throw Pi(e.type,e.renditionId);n.state===`initialized`&&(n.mimeType=t);let r=pl({codec:e.codec,timescale:e.timescale,initData:e.data,codecString:e.codecString,width:e.width,height:e.height});r&&n.initSegments.set(e.channelId,e.renditionId,new Uint8Array(r))}),m(this,`append`,function(){var e=P(function*(e,t){let n=e[0];if(!n)return;let i=r.trackContexts.get(n.type),a=i==null?void 0:i.initSegments.get(n.channelId,n.renditionId);if(r.mediaSource.isClosed())return;if(!a)throw Mi(n.renditionId,n.channelId);if(!i)throw Pi(n.type,n.renditionId);if(i.state===`uninitialized`)throw Fi(n.type,n.renditionId);if(t){var o;let e=(n.timestamp+((o=n.compositionTimeOffset)==null?0:o))/n.timescale;if(yield i.sourceBuffer.removeBuffer(e,1/0),i.mimeType!==i.sourceBufferMimeType&&i.sourceBuffer.changeType)try{yield i.sourceBuffer.changeType(i.mimeType),i.sourceBufferMimeType=i.mimeType}catch(e){if(e instanceof Il)throw e;r.logger.warn(`changeType failed`,{from:i.sourceBufferMimeType,to:i.mimeType,error:e})}`fragmented`in n||(yield i.sourceBuffer.appendBuffer(a))}let s=Math.max(0,n.timestamp/n.timescale-r.maxSecondsInBuffer);s>0&&performance.now()-i.lastBufferCleanupTime>1e4&&(i.lastBufferCleanupTime=performance.now(),yield i.sourceBuffer.removeBuffer(0,s+10));try{let t=i.sequenceNumber;if(`fragmented`in n)for(let t of e)`initData`in t&&(yield i.sourceBuffer.appendBuffer(t.data,t.initData));else{let n=bl(e,t++);yield i.sourceBuffer.appendBuffer(n)}i.sequenceNumber=t,i.consecutiveQuotaExceededErrorCount=0,i.successfulAppendCalls++}catch(e){throw e instanceof DOMException&&e.code===DOMException.QUOTA_EXCEEDED_ERR&&(r.quotaErrorCount++,i.consecutiveQuotaExceededErrorCount++,r.logger.error(`quota exceeded error`,{error:e})),e}});return function(t,n){return e.apply(this,arguments)}}()),m(this,`onFragment`,({fragment:e,mimeType:t,codec:n,channelId:r,renditionId:i})=>{let a=e.mediaType(),o=e.rawBytes(),s=e.header().rawBytes(),c=e.baseMediaDecodeTime(),l=e.timescale(),u=e.duration(),d=a===`video`?e.startsWithKeyframe():!0,f=e.compositionTimeOffset(0);if(a===`text`){this.logger.warn(`Skipping unexpected text fragment`);return}if(!n){this.logger.warn(`Skipping fragment with no codec`);return}let p=this.trackContexts.get(a);if(!p)throw Pi(a);p.state===`initialized`&&t&&(p.mimeType=t,p.initSegments.set(r,i,s));let m={fragmented:!0,type:a,data:o,initData:s,timestamp:c,duration:u,timescale:l,channelId:r,renditionId:i,isSync:d,codec:n,fragment:e,compositionTimeOffset:f};this.onCodedSample(m)}),m(this,`onCodedSample`,e=>{if(e.duration===0)return;let t=this.trackContexts.get(e.type);if(!t)throw Pi(e.type,e.renditionId);if(!(!t.hasFirstSync&&!e.isSync)){if(this.hasAddedInitialPosterFrame&&e.isSync&&e.type===`video`){this.hasAddedInitialPosterFrame=!1;let n=R({},e);`fragment`in n?(n.fragment=n.fragment.clone(),n.fragment.updateBaseMediaDecodeTime(0),n.data=n.fragment.rawBytes()):n.timestamp=0,t.pendingSamples.push(n)}if(t.hasFirstSync=!0,t.pendingSamples.push(e),e.type===`video`&&e.isSync){var n;let t=(e.timestamp+((n=e.compositionTimeOffset)==null?0:n))/e.timescale*1e3,r=this.videoKeyframeTimestamps[this.videoKeyframeTimestamps.length-1];r!==void 0&&t<r&&(this.videoKeyframeTimestamps=[]),this.videoKeyframeTimestamps.push(t),this.videoKeyframeTimestamps.length>20&&(this.videoKeyframeTimestamps=this.videoKeyframeTimestamps.slice(-20))}t.state!==`uninitialized`&&(t.isWorkingOnPendingSamples||PS(t,this.append,this.maxChunkSize).catch(n=>{if(t.isWorkingOnPendingSamples=!1,!this.isReopening){if(!this.isCurrentTrackContext(e.type,t)){this.logger.debug(`Suppressing append error from stale track context`,{type:e.type});return}if(n instanceof Il){this.logger.debug(`Suppressing append error from a disposed source buffer`,{type:e.type});return}if(n instanceof Error){if(this.mediaElement.error){this.onMediaElementError();return}if(this.logger.error(`append failed`,{message:n.message,name:n.name}),n instanceof DOMException&&n.code===DOMException.QUOTA_EXCEEDED_ERR){if(t.consecutiveQuotaExceededErrorCount>=this.minConsecutiveErrorsBeforeEmit){let r=Ni(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}else{let r=Ni(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}}}))}}),m(this,`onSourceBufferError`,e=>()=>{var t;this.logger.warn(`SourceBuffer error`,{trackType:e,mediaElementError:(t=this.mediaElement.error)==null?void 0:t.message})}),m(this,`onSourceOpen`,()=>{this.logger.debug(`source opened`),this.sourceOpenEndTime=performance.now(),this.isReopening=!1;let e=this.pendingTracksToAddSourceBuffers,t=this.pendingMediaError;this.pendingTracksToAddSourceBuffers=void 0,e&&this.setSourceBuffers(e).then(()=>{t&&this.pendingMediaError===t&&(this.pendingMediaError=void 0,this.hasRecoveredSinceShown=!0,this.emitter.emit(`recovered from media error`,{error:t,count:this.recoveredFromErrorCount}))}).catch(e=>{e instanceof Il||(this.logger.error(`Failed to set source buffers after source open`,e),t&&this.pendingMediaError===t&&this.onRecoveryFailed(e))})}),m(this,`reopenMediaSource`,e=>{this.logger.info(`Re-opening MediaSource`,{reason:e}),this.isReopening=!0,this.recoveredFromErrorCount++;let t=!this.mediaElement.paused,n=[];this.trackContexts.forEach((e,t)=>{e.state===`initialized`&&n.push({type:t,mimeType:e.mimeType,codec:e.codec})}),this.sourceOpenStartTime=performance.now(),this.pendingTracksToAddSourceBuffers=n,this.mediaSource.detach(this.mediaElement),this.trackContexts.forEach(e=>{e.state===`initialized`&&e.sourceBuffer.dispose()}),this.setTrackContexts(this.trackContexts),this.mediaSource.attach(this.mediaElement),t&&this.mediaElement.play().catch(C)}),m(this,`onMediaElementError`,()=>{let{error:e}=this.mediaElement;if(!e||this.isReopening)return;let t=Oi(/AUDIO_RENDERER/.test(e.message)||!this.autoRecoverFromMediaErrors,e);if(this.logger.error(`MediaElement error`,{error:t}),this.emitter.emit(`error`,t),!t.isFatal()){this.pendingMediaError=t;try{this.reopenMediaSource(`media element error recovery`)}catch(e){this.onRecoveryFailed(e)}}}),m(this,`onRecoveryFailed`,e=>{this.pendingMediaError=void 0,this.isReopening=!1,this.emitter.emit(`error`,new W(`MediaSource recovery failed`,{isFatal:!0,code:Ci,source:e instanceof Error?e:Error(String(e))}))}),m(this,`onPlay`,()=>{this.isFlushDeferred&&!this.mediaElement.paused&&this.flushBuffers()}),m(this,`onPageActive`,e=>{if(e&&(this.isFlushDeferred&&this.flushBuffers(),this.hasRecoveredSinceShown)){var t;this.hasRecoveredSinceShown=!1,((t=this.trackContexts.get(`video`))==null?void 0:t.state)===`initialized`&&(this.mediaElement.currentTime+=.05)}}),m(this,`onSourceEnded`,()=>{this.mediaElement.error&&this.onMediaElementError(),this.logger.debug(`source ended`)}),m(this,`onPlaybackProgress`,()=>{this.hasStartedPlayback=!0,this.isPlaybackStalled=!1}),m(this,`onPlaybackPauseOrSeek`,()=>{this.isPlaybackStalled=!1}),m(this,`onPlaybackStall`,e=>{!this.hasStartedPlayback||this.mediaElement.paused||this.mediaElement.seeking||this.isPlaybackStalled||(this.playbackStallCount++,this.isPlaybackStalled=!0,this.logger.info(`Detected playback stall`,{event:e.type,currentTime:this.mediaElement.currentTime*1e3,playbackStallCount:this.playbackStallCount}))}),m(this,`getBufferedRanges`,e=>{let t=[];try{let n=e.buffered();if(!n)return[];for(let e=0;e<n.length;e++)t.push({start:n.start(e)*1e3,end:n.end(e)*1e3});return t}catch(e){return[]}}),m(this,`getInitializedTrackBuffers`,()=>{let e=[];return this.trackContexts.forEach(t=>{t.state!==`uninitialized`&&e.push(this.getBufferedRanges(t.sourceBuffer))}),e}),m(this,`getCommonBufferedRangesForCurrentTracks`,()=>{if(this.mediaSource.isClosed())return;let e=this.getInitializedTrackBuffers();if(e.length!==0)return this.getCommonBufferedRanges(e)}),m(this,`getCommonBufferedRanges`,e=>e.slice(1).reduce((e,t)=>MS(e,t),e[0]?Array.from(e[0]):[])),m(this,`getPlaybackStateForBufferedRanges`,(e,t)=>mr(t,e)?`playing`:`buffering`),this.logger=e,this.mediaElement=n,this.emitter=t}};wS=OS,m(OS,`create`,(e,t,n)=>{let r=new wS(e,t,n);return r.setTrackContexts(),r.mediaSource.on(`source ended`,r.onSourceEnded),r.mediaSource.on(`source open`,r.onSourceOpen),n.addEventListener(`error`,r.onMediaElementError),n.addEventListener(`waiting`,r.onPlaybackStall),n.addEventListener(`stalled`,r.onPlaybackStall),n.addEventListener(`playing`,r.onPlaybackProgress),n.addEventListener(`pause`,r.onPlaybackPauseOrSeek),n.addEventListener(`play`,r.onPlay),n.addEventListener(`seeking`,r.onPlaybackPauseOrSeek),r.mediaSource.attach(n),r});var kS=(e,t)=>{for(let r=0;r<t.length;r++){let i=t[r];if(i){if(e<i.start)return i.start;if(i.start<=e&&e<i.end){var n;return(n=t[r+1])==null?void 0:n.start}}}},AS=(e,t)=>{var n;let r=e.renditionId!==t.renditionId,i=e.channelId!==t.channelId,a=((n=e.timestamp)==null?0:n)>t.timestamp,o=e.type===`video`&&t.type===`video`&&`levelIdc`in e&&`levelIdc`in t&&e.levelIdc!==t.levelIdc,s=!1;return e.type===`video`&&t.type===`video`&&`width`in e&&`width`in t&&(s=t.width!==e.width||t.height!==e.height),i||r||a||s||o},jS=32,MS=(e,t)=>{let n=[],r=0,i=0;for(;r<e.length&&i<t.length;){let a=e[r],o=t[i];if(!a||!o)break;let s=Math.max(a.start,o.start),c=Math.min(a.end,o.end);s<c&&n.push({start:s,end:c}),a.end<=o.end?r++:i++}return n},NS=e=>{let t=e.pendingSamplesOffset;if(t!==0){if(t>=e.pendingSamples.length){e.pendingSamples=[],e.pendingSamplesOffset=0;return}t<jS||t*2<e.pendingSamples.length||(e.pendingSamples=e.pendingSamples.slice(t),e.pendingSamplesOffset=0)}},PS=function(){var e=P(function*(e,t,n){for(e.isWorkingOnPendingSamples=!0;e.pendingSamplesOffset<e.pendingSamples.length;){let r=[],i=e.pendingSamplesOffset;for(let t=e.pendingSamplesOffset;t<e.pendingSamples.length;t++){i=t;let a=e.pendingSamples[t],o=e.pendingSamples[t+1];if(a&&(r.push(a),o)){if(AS(a,o))break;let e=(a.timestamp+a.duration)/a.timescale;if(o.timestamp/o.timescale-e>.1)break}if(t-e.pendingSamplesOffset>=n-1)break}let a=r[0];if(!a)break;yield t(r,e.previousSample?AS(e.previousSample,a):!0),e.pendingSamplesOffset=i+1,e.previousSample=r[r.length-1],NS(e)}e.isWorkingOnPendingSamples=!1});return function(t,n,r){return e.apply(this,arguments)}}();U(),h(),F();var FS,IS=class{constructor(e,t){var n=this;m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`element`,void 0),m(this,`pictureInPictureWindow`,void 0),m(this,`unload`,()=>{this.emitter.off(`add picture in picture listener`,this.onEnablePictureInPicture),this.detachElementListeners()}),m(this,`onEnablePictureInPicture`,e=>{this.detachElementListeners(),this.element=e.element,e.element.addEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),e.element.addEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),jt(e.element,!0)}),m(this,`getPictureInPictureSize`,()=>this.pictureInPictureWindow),m(this,`isPictureInPictureActive`,()=>this.isWebkitPresentationModeActive()||this.isStandardPictureInPictureActive()),m(this,`isPictureInPictureSupported`,()=>this.isWebkitPresentationModeSupported()||this.isStandardPictureInPictureSupported()),m(this,`requestPictureInPicture`,()=>(this.emitter.emit(`ios-hack: reset size`),this.isStandardPictureInPictureSupported()?this.requestStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`picture-in-picture`):Promise.reject(Error(`Picture in picture is not supported`)))),m(this,`exitPictureInPicture`,()=>this.isStandardPictureInPictureSupported()?this.exitStandardPictureInPicture():this.isWebkitPresentationModeSupported()?this.requestWebkitPresentationMode(`inline`):Promise.reject(Error(`Picture in picture is not supported`))),m(this,`getStatistics`,()=>({isPictureInPictureActive:this.isPictureInPictureActive()})),m(this,`detachElementListeners`,()=>{this.element&&(this.element.removeEventListener(`leavepictureinpicture`,this.onLeavePictureInPicture),this.element.removeEventListener(`enterpictureinpicture`,this.onEnterPictureInPicture),jt(this.element,!1))}),m(this,`onLeavePictureInPicture`,()=>{this.pictureInPictureWindow=void 0,this.logger.debug(`Leave picture in picture`),this.emitter.emit(`exit picture in picture`)}),m(this,`onEnterPictureInPicture`,e=>{this.pictureInPictureWindow=Dt(e),this.logger.debug(`Enter picture in picture`),this.emitter.emit(`enter picture in picture`,this)}),m(this,`requestStandardPictureInPicture`,P(function*(){if(!n.element)throw Error(`Picture in picture is not supported`);let e=St(n.element);if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`exitStandardPictureInPicture`,P(function*(){let e=Ct();if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`isStandardPictureInPictureSupported`,()=>!!this.element&&Et(this.element)),m(this,`isStandardPictureInPictureActive`,()=>!!this.element&&Tt()),m(this,`isWebkitPresentationModeActive`,()=>!!this.element&&Ot(this.element)===`picture-in-picture`),m(this,`requestWebkitPresentationMode`,function(){var e=P(function*(e){return n.element&&kt(n.element,e),Promise.resolve()});return function(t){return e.apply(this,arguments)}}()),m(this,`isWebkitPresentationModeSupported`,()=>!!this.element&&At(this.element)),this.emitter=e,this.logger=t,this.emitter.on(`add picture in picture listener`,this.onEnablePictureInPicture)}};FS=IS,m(IS,`create`,(e,t)=>new FS(e,t)),U(),h();var LS,RS=class{constructor(e,t,n,r){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`clockSource`,void 0),m(this,`state`,`buffering`),m(this,`bufferFullness`,0),m(this,`targetBufferTime`,void 0),m(this,`lastBufferStateEvent`,`drained`),m(this,`firstFrameTime`,void 0),m(this,`currentTimeIsInRange`,!1),m(this,`needsInputForAudioCount`,0),m(this,`needsInputForVideoCount`,0),m(this,`unload`,()=>{this.emitter.off(`buffer state`,this.onBufferedStateChanged),this.emitter.off(`needs user input`,this.onNeedsUserInput)}),m(this,`setTargetBufferTime`,e=>{this.targetBufferTime=e,this.emitter.emit(`target buffer time`,e)}),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`getBufferFullness`,()=>this.bufferFullness),m(this,`getLastBufferStateEvent`,()=>this.lastBufferStateEvent),m(this,`getState`,()=>this.state),m(this,`getFirstFrameTime`,()=>this.firstFrameTime),m(this,`getStatistics`,()=>({bufferTime:this.targetBufferTime,needsInputForAudioCount:this.needsInputForAudioCount,needsInputForVideoCount:this.needsInputForVideoCount})),m(this,`onBufferedStateChanged`,({buffered:e,isPaused:t,playbackState:n})=>{let r=this.clockSource.currentTime,i=mr(e,r),a=e[e.length-1],o=a?a.end-a.start>=this.targetBufferTime:!1,s=a?Math.max(0,a.end-r)/this.targetBufferTime:0,c=t?`paused`:n,l=this.state;this.currentTimeIsInRange!==i&&!i?(this.lastBufferStateEvent=`drained`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)):i&&o&&this.lastBufferStateEvent===`drained`&&(this.lastBufferStateEvent=`filled`,this.emitter.emit(`buffer state event`,this.lastBufferStateEvent)),c===`playing`&&this.firstFrameTime===void 0&&(this.firstFrameTime=performance.now()),this.currentTimeIsInRange=i,this.state=c,this.bufferFullness=i?s:0,l!==c&&this.emitter.emit(`playback state`,c),this.emitter.emit(`buffer fullness`,this.bufferFullness)}),m(this,`onNeedsUserInput`,({forAudio:e,forVideo:t})=>{e&&this.needsInputForAudioCount++,t&&this.needsInputForVideoCount++}),this.emitter=e,this.logger=t,this.clockSource=n,this.targetBufferTime=r,this.emitter.on(`buffer state`,this.onBufferedStateChanged),this.emitter.on(`needs user input`,this.onNeedsUserInput),this.emitter.emit(`target buffer time`,r)}};LS=RS,m(RS,`create`,(e,t,n,r)=>new LS(e,t,n,r)),U(),h();var zS,BS=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:2**53-1}),VS=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:BS()}),HS=class{constructor(e,t,n){m(this,`minBufferFullnessLengthForRegression`,6),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`timers`,sr.create()),m(this,`metrics`,VS()),m(this,`bufferFullness`,new T(30)),m(this,`bufferFullnessRegression`,void 0),m(this,`currentLevel`,void 0),m(this,`isSuspended`,!1),m(this,`_fatalQosCount`,0),m(this,`targetBufferTime`,0),m(this,`renditionLevelSource`,void 0),m(this,`qualityIndexOrder`,[]),m(this,`hasPlayedInSession`,!1),m(this,`hasAsserted`,!1),m(this,`load`,()=>{this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`buffer fullness`,this.onBufferFullness),this.emitter.on(`rendition level changed`,this.onRenditionLevelChanged),this.emitter.on(`video decode rate`,this.onVideoDecodeRate),this.emitter.on(`target buffer time`,this.onTargetBufferTime),this.emitter.on(`connection state`,this.onConnectionState)}),m(this,`unload`,()=>{this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`buffer fullness`,this.onBufferFullness),this.emitter.off(`rendition level changed`,this.onRenditionLevelChanged),this.emitter.off(`video decode rate`,this.onVideoDecodeRate),this.emitter.off(`target buffer time`,this.onTargetBufferTime),this.emitter.off(`connection state`,this.onConnectionState),this.suspend()}),m(this,`suspend`,()=>{this.isSuspended=!0,this.timers.unload(),this.stopBuffering(),this.unsetActive(),this.hasPlayedInSession=!1}),m(this,`unsuspend`,()=>{this.isSuspended=!1,this.currentLevel&&this.setActive()}),m(this,`fatalQosGraceTime`,()=>1e4*(this.fatalQosCount+1)),m(this,`incrementFatalQosCount`,()=>{this._fatalQosCount++}),m(this,`getMetrics`,()=>this.metrics),m(this,`getLevelStats`,e=>{var t,n,r,i;let a=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r);return this.metrics.levels[a]}),m(this,`getBufferFullnessRegression`,()=>this.bufferFullnessRegression),m(this,`getTargetBufferTime`,()=>this.targetBufferTime),m(this,`activeRatios`,()=>{let e=new Map,t=dr(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?dr(r.activeRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=e.size?Math.abs(Array.from(e.values()).reduce((e,t)=>e+t,0)-1)<=.02:!0;t||(this.hasAsserted=!0,console.assert(t,`Active ratios should be close to 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingRatios`,()=>{let e=new Map,t=dr(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?dr(r.bufferingRanges)/t:0,s=this.getQualityIndex(a).toString();e.set(s,((i=e.get(s))==null?0:i)+o)}),!this.hasAsserted){let t=Array.from(e.values()).reduce((e,t)=>e+t,0)<=1;t||(this.hasAsserted=!0,console.assert(t,`Buffering ratios should be less than 1 - actual: ${Array.from(e.values()).reduce((e,t)=>e+t,0)}`))}return e}),m(this,`bufferingEventsLast`,e=>this.metrics.general.bufferingRanges.filter(t=>t.start>=performance.now()-e).length),m(this,`timeSpentBufferingLast`,e=>fr(this.metrics.general.bufferingRanges,e)),m(this,`timeSpentActiveLast`,e=>fr(this.metrics.general.activeRanges,e)),m(this,`timeSpentPlayingInAtLeastLevelRatio`,e=>{var t,n,r,i;let a=this.timeSpentBuffering(),o=this.timeActive(),s=this.bufferingRatios(),c=this.activeRatios(),l=((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r),u=a/o;return Object.keys(this.metrics.levels).map(e=>parseInt(e,10)).filter(e=>e>=l).reduce((e,t)=>{var n,r;let i=this.getQualityIndex(t).toString();return((n=c.get(i))==null?0:n)-((r=s.get(i))==null?0:r)*u+e},0)}),m(this,`timeSpentBuffering`,()=>dr(this.metrics.general.bufferingRanges)),m(this,`timeActive`,()=>dr(this.metrics.general.activeRanges)),m(this,`getStatistics`,()=>{let e=this.timeSpentBuffering(),t=this.timeActive(),n=this.metrics.general.bufferingRanges.length,r=this.activeRatios(),i=t/6e4,a=t>0?e/t:0,o=Math.max(i,1),s=i>0?n/o:0,c=[...r].reduce((e,[t,n])=>e+parseInt(t,10)*n,0),l=6e4,u=this.timeSpentActiveLast(l),d=this.timeSpentBufferingLast(l),f=u>0?d/u:0,p=this.metrics.general.upgradesFromLevel.length+this.metrics.general.downgradesFromLevel.length,m=i>0?p/o:0,h=n>0?e/n:0;return{timeSpentBuffering:e,bufferingEventsCount:n,timeSpentRatio:[...r].reduce((e,[t,n])=>(e[t]=n,e),{}),fatalQosCount:this.fatalQosCount,bufferingRatio:a,bufferingEventsPerMinute:s,averageRenditionIndex:c,bufferingRatioPerMinute:f,renditionChangesPerMinute:m,timePerBufferingEvent:h}}),m(this,`onRenditionLevelChanged`,e=>{var t,n,r,i,a,o,s,c;let l=((t=(n=e.from)==null||(n=n.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.from)==null||(i=i.audio)==null?void 0:i.bitRate)==null?0:r),u=((a=(o=e.to)==null||(o=o.video)==null?void 0:o.bitRate)==null?0:a)+((s=(c=e.to)==null||(c=c.audio)==null?void 0:c.bitRate)==null?0:s);this.logger.info(`rendition level changed`,{fromLevel:l,toLevel:u}),this.metrics.general.activeRanges.length===0&&this.setActive(),e.from&&e.to&&(l<u?this.metrics.general.upgradesFromLevel.push(performance.now()):this.metrics.general.downgradesFromLevel.push(performance.now()));let d=!1;if(e.from){var f;let e=(f=this.metrics.levels[l])==null?BS():f;l<u?e.upgradesFromLevel.push(performance.now()):e.downgradesFromLevel.push(performance.now()),lr(e.activeRanges);let t=e.bufferingRanges[e.bufferingRanges.length-1];d=!!t&&!t.end,lr(e.bufferingRanges),this.metrics.levels[l]=e}if(e.to){var p;let e=(p=this.metrics.levels[u])==null?BS():p;ur(e.activeRanges),d&&ur(e.bufferingRanges),this.metrics.levels[u]=e,this.currentLevel=u}}),m(this,`onBufferFullness`,e=>{this.bufferFullness.push(e),this.metrics.bufferFullness=e,this.bufferFullness.items().length>=this.minBufferFullnessLengthForRegression&&(this.bufferFullnessRegression=this.calculateLinearRegression())}),m(this,`onPlaybackState`,e=>{switch(this.logger.info(`Playback state`,{state:e,currentLevel:this.currentLevel}),e){case`playing`:this.hasPlayedInSession=!0,this.stopBuffering();break;case`buffering`:!this.isSuspended&&this.hasPlayedInSession&&this.startBuffering();break}}),m(this,`onConnectionState`,e=>{e!==`connected`&&this.isSuspended&&(this.hasPlayedInSession=!1)}),m(this,`onVideoDecodeRate`,e=>{var t;if(this.metrics.general.decodeRate=e,!this.currentLevel)return;let n=this.metrics.levels[(t=this.currentLevel)==null?0:t];n&&(n.decodeRate=e)}),m(this,`onTargetBufferTime`,e=>{this.targetBufferTime=e}),m(this,`calculateLinearRegression`,()=>Ut(this.bufferFullness.items().map((e,t)=>({x:t,y:e})))),m(this,`stopBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&lr(e.bufferingRanges)}lr(this.metrics.general.bufferingRanges)}),m(this,`startBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&ur(e.bufferingRanges)}ur(this.metrics.general.bufferingRanges)}),m(this,`unsetActive`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&lr(e.activeRanges)}lr(this.metrics.general.activeRanges)}),m(this,`getQualityIndex`,e=>{if(!this.qualityIndexOrder.length){var t,n;let e=((t=(n=this.renditionLevelSource)==null?void 0:n.getRenditionLevels())==null?[]:t).map(e=>{var t,n,r,i;return((t=(n=e.video)==null?void 0:n.bitRate)==null?0:t)+((r=(i=e.audio)==null?void 0:i.bitRate)==null?0:r)}).filter(e=>e>0);this.qualityIndexOrder=[...new Set(e)].sort((e,t)=>t-e)}let r=this.qualityIndexOrder.indexOf(e);return r===-1&&(this.qualityIndexOrder.push(e),this.qualityIndexOrder.sort((e,t)=>t-e),r=this.qualityIndexOrder.indexOf(e)),r}),this.logger=t,this.emitter=e,this.renditionLevelSource=n}get fatalQosCount(){return this._fatalQosCount}setActive(){if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&ur(e.activeRanges)}ur(this.metrics.general.activeRanges)}};zS=HS,m(HS,`create`,(e,t,n)=>new zS(e,t,n)),U(),h();var US,WS=class{constructor(e,t){m(this,`renditions`,new Map),m(this,`renditionLevels`,[]),m(this,`languages`,[]),m(this,`emitter`,void 0),m(this,`subscriptionSource`,void 0),m(this,`renditionLevelChangeCount`,0),m(this,`unload`,()=>{this.emitter.off(`renditions`,this.onRenditions),this.emitter.off(`subscription changed`,this.onSubscriptionChanged)}),m(this,`getRenditionLevels`,e=>e?this.createRenditionLevels(e):this.renditionLevels),m(this,`getRenditionLevel`,e=>{var t;let n=e==null?this.getCurrentSubscription():e,r=e?this.createRenditionLevels(e):this.renditionLevels;if(!n.video)return r.length?r[0]:void 0;let i=n.video.bitRate||2**53-1,a=n.video.width||2**53-1,o=n.video.height||2**53-1;return(t=r.filter(e=>e.video&&n.video?e.video.bitRate<=i&&e.video.width<=a&&e.video.height<=o:!0).pop())==null?r[0]:t}),m(this,`setRenditions`,(e,t)=>{this.renditions.set(e,t)}),m(this,`getLanguages`,()=>this.languages),m(this,`getVideoRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&Ir(n))return n}),m(this,`getAudioRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Lr(e))}),m(this,`getVideoRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Ir(e))}),m(this,`getAudioRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&Lr(n))return n}),m(this,`getRendition`,(e,t=this.getCurrentSubscription().channelId)=>{var n;return(n=this.renditions.get(t))==null?void 0:n.find(t=>t.id===e)}),m(this,`getStatistics`,()=>{var e,t,n,r,i,a,o,s,c,l;let u=this.getRenditionLevel();return{videoCodec:u==null||(e=u.video)==null?void 0:e.codec,audioCodec:u==null||(t=u.audio)==null?void 0:t.codec,videoRenditionId:u==null||(n=u.video)==null?void 0:n.id,audioRenditionId:u==null||(r=u.audio)==null?void 0:r.id,videoWidth:u==null||(i=u.video)==null?void 0:i.width,videoHeight:u==null||(a=u.video)==null?void 0:a.height,expectedVideoBitRate:u==null||(o=u.video)==null?void 0:o.bitRate,expectedAudioBitRate:u==null||(s=u.audio)==null?void 0:s.bitRate,frameRate:u==null||(c=u.video)==null?void 0:c.frameRate,language:u==null||(l=u.audio)==null?void 0:l.language,renditionLevelChangeCount:this.renditionLevelChangeCount}}),m(this,`onRenditions`,e=>{let t=this.subscriptionSource.getCurrentSubscription();this.renditions.set(e.channelId,e.renditions),this.updateRenditionLevels({to:t,from:t})}),m(this,`onSubscriptionChanged`,e=>{this.updateRenditionLevels(e)}),m(this,`updateRenditionLevels`,({to:e,from:t})=>{var n;let{channelId:r,initiator:i}=e,a=this.getRenditionLevel(t),o=new Set;((n=this.renditions.get(r))==null?[]:n).filter(e=>e.codec!==`webvtt`).forEach(e=>e.language?o.add(e.language):void 0),this.languages=Array.from(o),this.renditionLevels=this.createRenditionLevels(e);let s=this.getRenditionLevel(e);Qt(a,s)||(this.renditionLevelChangeCount++,this.emitter.emit(`rendition level changed`,{to:s,from:a,reason:i?`manual`:`abr`}))}),m(this,`createRenditionLevels`,e=>{var t;let{video:n,audio:r,channelId:i}=e,a=(t=this.renditions.get(i))==null?[]:t,o=a.filter(Ir).filter(e=>n&&e.codec===n.codec),s=a.filter(Lr).filter(e=>r&&e.codec===r.codec&&e.language===r.language),c=Math.max(o.length,s.length),l=[];for(let e=0;e<c;e++){let t=o[Math.min(o.length-1,e)],n=s[Math.min(s.length-1,e)];l.push({audio:n,video:t})}return l}),m(this,`getCurrentSubscription`,()=>this.subscriptionSource.getCurrentSubscription()),this.subscriptionSource=t,this.emitter=e,this.emitter.on(`renditions`,this.onRenditions),this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};US=WS,m(WS,`create`,(e,t)=>new US(e,t)),U(),h();var GS,KS=e=>JSON.parse(JSON.stringify(e)),qS=1e4,JS=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`timers`,new sr),m(this,`emitter`,void 0),m(this,`targetSubscription`,void 0),m(this,`currentSubscription`,void 0),m(this,`_isSwitchingSubscription`,!1),m(this,`pendingSubscriptionTimeoutId`,void 0),m(this,`burstMs`,0),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.timers.unload(),this.emitter.off(`subscription changed`,this.onSubscriptionChanged),this.logger.debug(`Unloaded module`)}),m(this,`isSwitchingSubscription`,()=>this._isSwitchingSubscription),m(this,`getTargetSubscription`,()=>this.targetSubscription),m(this,`getCurrentSubscription`,()=>this.currentSubscription),m(this,`enableBurst`,e=>{this.burstMs=e}),m(this,`setSize`,e=>{this.targetSubscription.video.width=e.width,this.targetSubscription.video.height=e.height,this.scheduleSubscriptionChange()}),m(this,`setVideoConstraint`,e=>{this.targetSubscription.video=e,this.scheduleSubscriptionChange()}),m(this,`setAudioConstraint`,e=>{this.targetSubscription.audio=e,this.scheduleSubscriptionChange()}),m(this,`setVideoBitRate`,e=>{this.targetSubscription.video.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setAudioBitRate`,e=>{this.targetSubscription.audio.bitRate=e,this.scheduleSubscriptionChange()}),m(this,`setChannelId`,e=>{this.targetSubscription.channelId=e,this.scheduleSubscriptionChange()}),m(this,`setLanguage`,e=>{this.targetSubscription.audio.language=e,this.scheduleSubscriptionChange()}),m(this,`setVideoCodec`,e=>{this.targetSubscription.video.codec=e,this.scheduleSubscriptionChange()}),m(this,`setAudioCodec`,e=>{this.targetSubscription.audio.codec=e,this.scheduleSubscriptionChange()}),m(this,`setBurst`,e=>{e?this.targetSubscription.burstMs=e:delete this.targetSubscription.burstMs}),m(this,`isNewSubscription`,()=>{let e=[`burstMs`,`meta`,`initiator`,`channelGroupId`];return!Qt(Qn(this.currentSubscription,e),Qn(this.targetSubscription,e))}),m(this,`onSubscriptionChanged`,({to:e,reset:t})=>{this.logger.debug(`onSubscriptionChanged`,{to:e,reset:t}),t?this.targetSubscription=KS(this.currentSubscription):this.currentSubscription=KS(e),this._isSwitchingSubscription=this.isNewSubscription()}),m(this,`scheduleSubscriptionChange`,()=>{this.targetSubscription=KS(this.targetSubscription),this._isSwitchingSubscription=this.isNewSubscription();let e=this.currentSubscription.channelId,t=this.targetSubscription.channelId,n=e!==t;this._isSwitchingSubscription&&(n&&this.burstMs?this.setBurst(this.burstMs):this.setBurst(0),this.pendingSubscriptionTimeoutId&&(this.timers.clearTimeout(this.pendingSubscriptionTimeoutId),this.pendingSubscriptionTimeoutId=void 0),n&&this.timers.setTimeout(()=>{this.currentSubscription.channelId===e&&this.targetSubscription.channelId===t&&(this.logger.warn(`Channel switch timeout`,t),this.targetSubscription=KS(this.currentSubscription),this.emitter.emit(`channel switch timeout`,t))},qS),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit(`send signal`,{type:`subscribe`,subscription:this.getTargetSubscription()}),0))}),this.logger=e,this.targetSubscription=t,this.currentSubscription=KS(t),this.emitter=n,this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};GS=JS,m(JS,`create`,(e,t,n)=>new GS(e,n,t)),U(),h();var YS=class e{constructor(){m(this,`channelId`,void 0),m(this,`renditionId`,void 0),m(this,`anchorCts`,void 0),m(this,`hasBFramesValue`,!1),m(this,`isAwaitingAssessment`,!1),m(this,`zeroOffsetSamples`,0),m(this,`omittedBoundaryCrossings`,0),m(this,`hasSeenKeyframe`,!1),m(this,`hasObservedReordering`,!1),m(this,`rememberedRenditions`,new nn(e.MAX_REMEMBERED_RENDITIONS))}get hasBFrames(){return this.hasBFramesValue}get isAwaitingReorderAssessment(){return this.isAwaitingAssessment}update(e){var t;e.type===`video`&&(this.resetOnSwitch(e.channelId,e.renditionId),!this.hasObservedReordering&&(e.isSync&&this.noteKeyframe(),this.observeOffset((t=e.compositionTimeOffset)==null?0:t,e.isSync)))}updateFromFragment(e){var t;if(e.type!==`video`||(this.resetOnSwitch(e.channelId,e.renditionId),this.hasObservedReordering))return;if(e.startsWithKeyframe&&this.noteKeyframe(),e.compositionTimeOffsets.length===0){if(!e.startsWithKeyframe&&this.hasSeenKeyframe&&this.anchorCts!==void 0&&this.anchorCts!==0&&this.noteOmittedBoundaryCrossing())return;this.zeroOffsetSamples+=e.sampleCount,this.zeroOffsetSamples>=2&&(this.isAwaitingAssessment=!1),this.anchorCts=void 0;return}let n=this.zeroOffsetSamples>0;if(this.zeroOffsetSamples=0,!(this.hasSeenKeyframe&&n&&!e.startsWithKeyframe&&((t=e.compositionTimeOffsets[0])==null?0:t)!==0&&this.noteOmittedBoundaryCrossing()))for(let t=0;t<e.sampleCount;t++){var r;let n=(r=e.compositionTimeOffsets[t])==null?0:r;if(this.observeOffset(n,t===0&&e.startsWithKeyframe))return}}observeOffset(e,t){return t||this.anchorCts===void 0?(this.anchorCts!==void 0&&(this.isAwaitingAssessment=!1),this.anchorCts=e,!1):e===this.anchorCts?(this.isAwaitingAssessment=!1,!1):(this.latchBFrames(),!0)}reset(){this.channelId=void 0,this.renditionId=void 0,this.anchorCts=void 0,this.hasBFramesValue=!1,this.zeroOffsetSamples=0,this.omittedBoundaryCrossings=0,this.hasSeenKeyframe=!1,this.hasObservedReordering=!1,this.isAwaitingAssessment=!0}remember(e){this.channelId!==void 0&&this.rememberedRenditions.set(ox(this.channelId,this.renditionId),e)}latchBFrames(){this.hasBFramesValue=!0,this.hasObservedReordering=!0,this.isAwaitingAssessment=!1,this.remember(!0)}noteOmittedBoundaryCrossing(){return this.omittedBoundaryCrossings+=1,this.omittedBoundaryCrossings>=2?(this.latchBFrames(),!0):!1}noteKeyframe(){this.hasSeenKeyframe&&!this.hasObservedReordering&&(this.remember(!1),this.hasBFramesValue=!1),this.hasSeenKeyframe=!0,this.omittedBoundaryCrossings=0}resetOnSwitch(e,t){if(!sx(e,t,this.channelId,this.renditionId)){let n=this.channelId!==void 0;this.channelId=e,this.renditionId=t,this.anchorCts=void 0,this.zeroOffsetSamples=0,this.omittedBoundaryCrossings=0,this.hasSeenKeyframe=!1,this.hasObservedReordering=!1;let r=this.rememberedRenditions.get(ox(e,t));this.hasBFramesValue=r==null?!1:r,n&&(this.isAwaitingAssessment=r===void 0)}}};m(YS,`MAX_REMEMBERED_RENDITIONS`,32),U(),h(),z();var XS,ZS=5e3,QS=()=>it()||tt(),$S=e=>e&&QS()?100:0,eC=e=>t=>t>e,tC=100,nC=1e3,rC={seek:{toleranceMs:200,toleranceMaxMs:2500,toleranceMultiplierStep:1,backoffEveryN:2,cooldownMs:1e3,timeoutMs:5e3,aheadToleranceMs:150,keyframeSearchBeforeMs:50,keyframeSearchAfterMs:100},timeshift:{enabled:!1,toleranceMs:50,toleranceMaxMs:600,backoffEveryN:3},playbackRate:{enabled:!1,startDiff:60,stopDiff:40,maxDiff:300,speed:.02,cooldownMs:2e3},backoff:{enabled:!0,decayEnabled:!0,decayCooldownMultiplier:3,decayCheckInterval:15e3}},iC=class{get driftSamplesToCollect(){return this._driftSamplesToCollect}set driftSamplesToCollect(e){this._driftSamplesToCollect=e,this.driftSamples=new T(e)}constructor(e,t,n,r,i,a=!0){m(this,`emitter`,void 0),m(this,`logger`,void 0),m(this,`playbackSource`,void 0),m(this,`bufferSource`,void 0),m(this,`keyframeTimestamps`,new T(10)),m(this,`lastSeekTime`,void 0),m(this,`needsMediaSourceRecovery`,!1),m(this,`lastAdjustmentTime`,performance.now()),m(this,`lastDecayCheckTime`,performance.now()),m(this,`syncInterval`,void 0),m(this,`currentSyncIntervalMs`,tC),m(this,`config`,void 0),m(this,`state`,void 0),m(this,`allowTimeshiftOnAudio`,!1),m(this,`syncInfoToleranceMaxMs`,150),m(this,`syncInfoToleranceStep`,20),m(this,`seekOvershoot`,void 0),m(this,`timers`,sr.create()),m(this,`rtt`,0),m(this,`channelSyncInfo`,new Map),m(this,`seekAdjustmentCount`,0),m(this,`timeshiftAdjustmentCount`,0),m(this,`syncInfoCorrectionCount`,0),m(this,`playbackRateAdjustmentCount`,0),m(this,`lastPlaybackRateChangeTime`,0),m(this,`seekAdjustmentTimestamps`,[]),m(this,`timeshiftAdjustmentTimestamps`,[]),m(this,`_driftSamplesToCollect`,5),m(this,`driftSamples`,new T(this._driftSamplesToCollect)),m(this,`timestampOffset`,void 0),m(this,`hasObservedBFrames`,!1),m(this,`bFrameDetector`,new YS),m(this,`currentChannelId`,void 0),m(this,`highestSeenTimestamps`,new Map),m(this,`isSuspended`,!1),m(this,`isSyncAdjustmentActivated`,!1),m(this,`queuedTimeshift`,!1),m(this,`playbackState`,void 0),m(this,`hasPerformedRecoverySeekInCurrentRecoveryState`,!1),m(this,`shouldSeekAfterBuffering`,!1),m(this,`usesMse`,void 0),m(this,`load`,()=>{this.emitter.on(`page active`,this.onPageActive),this.emitter.on(`pageshow`,this.onPageShow),this.setSyncInterval(document.visibilityState===`hidden`?nC:tC)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),this.emitter.off(`rtt`,this.updateRtt),this.emitter.off(`playback state`,this.onPlaybackState),this.emitter.off(`page active`,this.onPageActive),this.emitter.off(`pageshow`,this.onPageShow),this.emitter.off(`buffers flushed`,this.clearBFrameLatch),this.emitter.off(`recovered from media error`,this.onMediaSourceRecovered),this.clearSyncInterval(),this.timers.unload(),this.logger.debug(`Unloaded module`)}),m(this,`suspend`,()=>{this.isSuspended=!0}),m(this,`unsuspend`,()=>{this.resetSyncState(),this.isSuspended=!1,this.onSync()}),m(this,`deactivateSyncAdjustments`,()=>{this.isSyncAdjustmentActivated=!1}),m(this,`activateSyncAdjustments`,()=>{this.tryApplySyncInfo(0),this.isSyncAdjustmentActivated=!0}),m(this,`reset`,()=>{this.logger.info(`Reset sync state`),this.needsMediaSourceRecovery=!1,this.currentChannelId=void 0,this.timestampOffset=void 0,this.bFrameDetector.reset(),this.resetSyncState(),this.highestSeenTimestamps.clear()}),m(this,`getTimeshiftOffset`,()=>{var e;return(e=this.timestampOffset)==null?0:e}),m(this,`getCurrentChannelId`,()=>this.currentChannelId),m(this,`resetSyncState`,()=>{this.state.seekToleranceMultiplier=1,this.state.timeshiftToleranceMultiplier=1,this.seekAdjustmentTimestamps=[],this.timeshiftAdjustmentTimestamps=[],this.driftSamples.clear(),this.playbackState=void 0,this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags()}),m(this,`getEffectiveSeekToleranceMs`,()=>this.config.timeshift.enabled?this.config.seek.toleranceMs*2:this.config.seek.toleranceMs),m(this,`isTimeshiftUnsafe`,()=>this.usesMse&&(this.hasObservedBFrames||this.bFrameDetector.isAwaitingReorderAssessment)),m(this,`clearBFrameLatch`,()=>{this.hasObservedBFrames=!1}),m(this,`latchBFramesIfDetected`,()=>{!this.hasObservedBFrames&&this.bFrameDetector.hasBFrames&&(this.hasObservedBFrames=!0,this.logger.info(this.usesMse?`B-frame stream detected; disabling timeshift drift correction`:`B-frame stream detected; timeshift drift correction stays enabled (no MSE buffer to splice)`))}),m(this,`getLiveEdgeTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=performance.now()-t.localTimestamp;return t.timestamp+n}),m(this,`getLiveEdgeTimeLatencyAdjusted`,e=>{let t=this.getLiveEdgeTime(e);if(t)return t+this.rtt/2}),m(this,`getWallclockTime`,e=>{let t=this.channelSyncInfo.get(e);if(!t)return;let n=performance.now()-t.localTimestamp;return t.wallclockTime+n}),m(this,`getWallclockTimeLatencyAdjusted`,e=>{let t=this.getWallclockTime(e);if(t)return t+this.rtt/2}),m(this,`processSample`,e=>{var t;if(!e.channelId)throw Error(`Sample must be assigned to a channel`);this.currentChannelId||(this.currentChannelId=e.channelId),this.timestampOffset||(this.timestampOffset=e.timestamp/e.timescale*1e3-ZS);let n=e.type===`video`&&e.isSync;if(this.bFrameDetector.update(e),this.latchBFramesIfDetected(),this.currentChannelId!==e.channelId){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)});let n=e.timestamp/e.timescale*1e3;this.currentChannelId=e.channelId,this.timestampOffset=n-t}else (n||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let r=this.timestampOffset*e.timescale/1e3;return e.timestamp-=r,n&&this.keyframeTimestamps.push(e.timestamp/e.timescale*1e3),this.highestSeenTimestamps.set(e.type,Math.max((t=this.highestSeenTimestamps.get(e.type))==null?0:t,e.timestamp/e.timescale*1e3)),e}),m(this,`processFragment`,(e,t,n)=>{var r;this.currentChannelId||(this.currentChannelId=e);let i=t.mediaType();if(!i)throw Error(`Fragment must have a media type`);this.timestampOffset||(this.timestampOffset=t.baseMediaDecodeTime()/t.timescale()*1e3-ZS);let a=i===`video`&&t.startsWithKeyframe();if(i===`video`&&(this.bFrameDetector.updateFromFragment({type:i,channelId:e,renditionId:n,startsWithKeyframe:a,sampleCount:t.samplesCount(),compositionTimeOffsets:t.sampleCompositionTimeOffsets()}),this.latchBFramesIfDetected()),this.currentChannelId!==e){let t=2**53-1;console.assert(this.highestSeenTimestamps.size!==0,`no known timestamps`),this.highestSeenTimestamps.forEach(e=>{t=Math.min(t,e)}),this.currentChannelId=e}else (a||this.allowTimeshiftOnAudio)&&this.tryTimeshiftSync();let o=this.timestampOffset*t.timescale()/1e3;return t.updateBaseMediaDecodeTime(t.baseMediaDecodeTime()-o),a&&this.keyframeTimestamps.push(t.baseMediaDecodeTime()/t.timescale()*1e3),this.highestSeenTimestamps.set(i,Math.max((r=this.highestSeenTimestamps.get(i))==null?0:r,t.baseMediaDecodeTime()/t.timescale()*1e3)),t}),m(this,`forceSeek`,()=>{this.logger.debug(`Forcing seek`,{amount:this.serverCurrentTime-this.playbackSource.currentTime}),this.clearRecoverySeekFlags(),this.playbackSource.currentTime=this.serverCurrentTime}),m(this,`forceTimeshift`,()=>{this.queuedTimeshift=!0}),m(this,`setPlaybackRateAdjustmentEnabled`,e=>{this.config.playbackRate.enabled=e}),m(this,`getStatistics`,()=>{let e=this.driftSamples.items(),t=e.length>0?zt(e.map(Math.abs)):0;return{drift:this.drift,seekAdjustmentCount:this.seekAdjustmentCount,timeshiftAdjustmentCount:this.timeshiftAdjustmentCount,seekTime:this.playbackSource.seekTime,totalSeekTime:this.playbackSource.totalSeekTime,seekToleranceMultiplier:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs(),currentAheadToleranceMs:this.currentAheadToleranceMs(),isPlaybackRateAdjustmentEnabled:this.config.playbackRate.enabled,playbackRate:this.playbackSource.playbackRate||1,playbackRateAdjustmentCount:this.playbackRateAdjustmentCount,averageDrift:t,videoHasBFrames:this.bFrameDetector.hasBFrames}}),m(this,`updateRtt`,e=>{this.rtt=e}),m(this,`isPlaybackSourceReadyToSeek`,()=>!this.isSeeking()&&this.isSeekCooldownExpired()&&this.isSyncAdjustmentActivated),m(this,`isPlaybackSourceReady`,()=>!this.isSeeking()&&this.isSyncAdjustmentActivated),m(this,`isSeeking`,()=>this.playbackSource.isSeeking?!this.isSeekTimeoutExpired():!1),m(this,`isAllowedToSync`,()=>this.isPlaybackSourceReadyToSeek()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isAllowedToSyncIgnoringCooldown`,()=>this.isPlaybackSourceReady()&&!!this.currentChannelId&&!this.isSuspended&&!this.playbackSource.isPaused),m(this,`isSeekCooldownExpired`,()=>this.lastSeekTime===void 0||performance.now()-this.lastSeekTime>this.config.seek.cooldownMs),m(this,`isSeekTimeoutExpired`,()=>this.lastSeekTime===void 0||performance.now()-this.lastSeekTime>this.config.seek.timeoutMs),m(this,`currentTimeshiftToleranceMs`,()=>Math.min(this.config.timeshift.toleranceMs*this.state.timeshiftToleranceMultiplier,this.config.timeshift.toleranceMaxMs)),m(this,`currentSeekToleranceMs`,()=>Math.min(this.state.seekToleranceMultiplier*this.getEffectiveSeekToleranceMs(),this.config.seek.toleranceMaxMs)),m(this,`currentEmergencySeekToleranceMs`,()=>Math.max(this.currentSeekToleranceMs()+this.getEffectiveSeekToleranceMs(),this.bufferSource.getTargetBufferTime())),m(this,`currentAheadToleranceMs`,()=>{let e=Math.max(this.config.seek.aheadToleranceMs*this.state.seekToleranceMultiplier,400),t=this.playbackSource.seekTime>500?e:this.config.seek.aheadToleranceMs;return Math.min(t,this.bufferSource.getTargetBufferTime()/2)}),m(this,`tryDecayMultipliers`,()=>{if(!this.config.backoff.decayEnabled)return;let e=performance.now();if(e-this.lastDecayCheckTime<this.config.backoff.decayCheckInterval)return;this.lastDecayCheckTime=e;let t=this.seekAdjustmentTimestamps.length>0?Math.max(...this.seekAdjustmentTimestamps):0,n=this.timeshiftAdjustmentTimestamps.length>0?Math.max(...this.timeshiftAdjustmentTimestamps):0,r=e-Math.max(t,n,this.lastAdjustmentTime),i=Math.max(this.state.seekToleranceMultiplier,this.state.timeshiftToleranceMultiplier),a=this.config.seek.timeoutMs*this.config.backoff.decayCooldownMultiplier*i;if(r<a)return;let o=!1;if(this.state.seekToleranceMultiplier>1){let e=Math.max(1,this.state.seekToleranceMultiplier-.5);e!==this.state.seekToleranceMultiplier&&(this.logger.info(`Decaying seek tolerance multiplier`,{from:this.state.seekToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.seekToleranceMultiplier=e,o=!0)}if(this.state.timeshiftToleranceMultiplier>1){let e=Math.max(1,this.state.timeshiftToleranceMultiplier-.5);e!==this.state.timeshiftToleranceMultiplier&&(this.logger.info(`Decaying timeshift tolerance multiplier`,{from:this.state.timeshiftToleranceMultiplier,to:e,timeSinceLastAdjustment:r,requiredStabilityMs:a}),this.state.timeshiftToleranceMultiplier=e,o=!0)}if(o){let t=e-a*2;this.seekAdjustmentTimestamps=this.seekAdjustmentTimestamps.filter(e=>e>t),this.timeshiftAdjustmentTimestamps=this.timeshiftAdjustmentTimestamps.filter(e=>e>t)}}),m(this,`applyBackoff`,()=>{if(this.config.backoff.enabled&&(this.lastAdjustmentTime=performance.now(),this.seekAdjustmentCount>0&&this.seekAdjustmentCount%this.config.seek.backoffEveryN===0)){let e=this.state.seekToleranceMultiplier,t=this.config.seek.toleranceMaxMs/this.getEffectiveSeekToleranceMs();this.state.seekToleranceMultiplier=Math.min(this.state.seekToleranceMultiplier+this.config.seek.toleranceMultiplierStep,t),e!==this.state.seekToleranceMultiplier&&this.logger.info(`Backoff: Increasing seek tolerance multiplier`,{from:e,to:this.state.seekToleranceMultiplier,currentSeekToleranceMs:this.currentSeekToleranceMs()})}}),m(this,`tryPlaybackRateSync`,e=>{if(!this.config.playbackRate.enabled)return!1;let t=this.playbackSource.playbackRate!==1,n=Math.abs(e),r=t&&n<this.config.playbackRate.stopDiff,i=!t&&n>=this.config.playbackRate.startDiff;if(n>this.config.playbackRate.maxDiff)return t&&(this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=performance.now()),!1;let a=performance.now(),o=a-this.lastPlaybackRateChangeTime>=this.config.playbackRate.cooldownMs;if(r&&o)return this.playbackSource.playbackRate=1,this.lastPlaybackRateChangeTime=a,this.logger.info(`Resetting playback rate to 1`,{drift:e}),!0;if(i&&o){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.playbackRateAdjustmentCount++,this.logger.info(`Adjusting playback rate`,{drift:e,targetRate:t}),!0}if(t&&n>=this.config.playbackRate.stopDiff&&n<=this.config.playbackRate.maxDiff){let t=e>0?1+this.config.playbackRate.speed:1-this.config.playbackRate.speed;return this.playbackSource.playbackRate!==t&&o&&(this.playbackSource.playbackRate=t,this.lastPlaybackRateChangeTime=a,this.logger.info(`Changing playback rate direction`,{drift:e,targetRate:t})),!0}return!t&&n<this.config.playbackRate.startDiff?!0:t}),m(this,`tryTimeshiftSync`,()=>{var e;if(!this.config.timeshift.enabled)return;if(this.isTimeshiftUnsafe()){this.queuedTimeshift&&this.hasObservedBFrames&&(this.queuedTimeshift=!1,this.logger.info(`Dropping forced timeshift: suppressed for B-frame stream, use forceSeek to resync`));return}if(this.hasPendingRecoverySeek()||!this.isAllowedToSync()||this.playbackSource.playbackRate!==1)return;let t=(e=this.drift)==null?0:e;this.driftSamples.push(t);let n=Vt(this.driftSamples.items());if(this.queuedTimeshift&&n>0){this.queuedTimeshift=!1,this.applyTimeshift(n);return}if(n>=this.getEffectiveSeekToleranceMs()||n<this.currentTimeshiftToleranceMs())return;let r=performance.now()-this.config.seek.timeoutMs*this.state.timeshiftToleranceMultiplier,i=this.timeshiftAdjustmentTimestamps.filter(eC(r)).length;if(i&&this.state.timeshiftToleranceMultiplier>2){this.logger.debug(`Too many timeshifts within sliding window`,{timeshiftCooldownThreshold:r,recentTimeshiftCount:i});return}this.applyTimeshift(n)}),m(this,`clearRecoverySeekFlags`,()=>{this.shouldSeekAfterBuffering=!1}),m(this,`hasActiveRecoveryTrigger`,()=>this.playbackState===`buffering`),m(this,`hasPendingRecoverySeek`,()=>(this.refreshRecoverySeekState(),this.getRecoverySeekReason()!==void 0)),m(this,`refreshRecoverySeekState`,()=>{var e,t;if(!this.hasActiveRecoveryTrigger()||!this.usesMse||this.hasPerformedRecoverySeekInCurrentRecoveryState){this.clearRecoverySeekFlags();return}let n=(e=(t=this.bufferSource).getNextBufferedRangeStart)==null?void 0:e.call(t,this.playbackSource.currentTime);return this.shouldSeekAfterBuffering=n!==void 0,n}),m(this,`getRecoverySeekReason`,()=>{if(this.needsMediaSourceRecovery)return`media source reopen`;if(this.shouldSeekAfterBuffering)return`buffering`}),m(this,`shouldSkipNormalSeek`,e=>e<0&&-e<this.currentAheadToleranceMs()||e>0&&e<this.currentSeekToleranceMs()||Math.abs(e)<1?!0:!this.isAllowedToSync()),m(this,`shouldDeferRecoverySeek`,(e,t)=>t!==void 0&&t>e),m(this,`buildSeekPlan`,(e,t)=>{var n,r;let i=this.playbackSource.currentTime+e,a=t?(n=(r=this.bufferSource).getNextBufferedRangeStart)==null?void 0:n.call(r,this.playbackSource.currentTime):void 0;if(t===`media source reopen`&&a===void 0)return;let o=i+this.seekOvershoot,s=this.playbackSource.currentTime+this.seekOvershoot,c=t?Math.max(o,s):o;if(t&&this.shouldDeferRecoverySeek(c,a)){this.logger.debug(`Deferring recovery seek until expected playhead reaches next buffered range start`,{currentTime:this.playbackSource.currentTime,desiredCurrentTime:c,nextBufferedRangeStart:a,recoverySeekReason:t});return}let l=t&&a?a:i,u=this.findKeyframeCloseToTimestamp(l);if(!(!t&&!u&&!this.keyframeTimestamps.isEmpty()))return{closestKeyFrame:u,keyframeSearchTime:l,nextBufferedRangeStart:a,targetCurrentTime:u&&u>c?a?Math.max(a,u):u:c}}),m(this,`applySeek`,(e,t)=>{let n=this.playbackSource.seekTime,r=this.buildSeekPlan(e,t);if(!r)return;this.logger.info(`Adjusting for drift using seek`,{drift:e,currentTime:this.playbackSource.currentTime,recoverySeekReason:t,keyframeSearchTime:r.keyframeSearchTime,closestKeyFrame:r.closestKeyFrame,nextBufferedRangeStart:r.nextBufferedRangeStart,targetCurrentTime:r.targetCurrentTime,seekTime:n,rtt:this.rtt,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.needsMediaSourceRecovery=!1;let i=performance.now();this.lastSeekTime=i,t&&(this.hasPerformedRecoverySeekInCurrentRecoveryState=!0),this.clearRecoverySeekFlags(),this.driftSamples.clear(),this.seekAdjustmentTimestamps.push(i),this.seekAdjustmentCount++,this.playbackSource.currentTime=r.targetCurrentTime+Math.min(n,this.bufferSource.getTargetBufferTime()),this.applyBackoff()}),m(this,`applyTimeshift`,e=>{var t;let n=(t=e==null?this.drift:e)==null?0:t;if(!this.timestampOffset)return;let r=n;this.logger.info(`Adjusting for drift using timeshift`,{drift:n,syncAmount:r,currentTime:this.playbackSource.currentTime,rtt:this.rtt,timeshiftToleranceMultiplier:this.state.timeshiftToleranceMultiplier}),this.timestampOffset+=r;let i=performance.now();if(this.lastSeekTime=i,this.lastAdjustmentTime=i,!this.playbackSource.isPaused&&(this.driftSamples.clear(),this.timeshiftAdjustmentTimestamps.push(i),this.timeshiftAdjustmentCount++,this.config.backoff.enabled&&this.timeshiftAdjustmentCount>0&&this.timeshiftAdjustmentCount%this.config.timeshift.backoffEveryN===0)){let e=this.state.timeshiftToleranceMultiplier,t=this.config.timeshift.toleranceMaxMs/this.config.timeshift.toleranceMs;this.state.timeshiftToleranceMultiplier=Math.min(this.state.timeshiftToleranceMultiplier+1,t),e!==this.state.timeshiftToleranceMultiplier&&this.logger.info(`Backoff: Increasing timeshift tolerance multiplier`,{from:e,to:this.state.timeshiftToleranceMultiplier,currentTimeshiftToleranceMs:this.currentTimeshiftToleranceMs()})}}),m(this,`onSync`,()=>{var e;this.tryDecayMultipliers(),this.refreshRecoverySeekState();let t=(e=this.drift)==null?0:e,n=this.getRecoverySeekReason(),r=n!==void 0;if(!r&&!this.isAllowedToSyncIgnoringCooldown()||r&&(this.isSeeking()||!this.currentChannelId||this.isSuspended||this.playbackSource.isPaused)||(this.driftSamples.push(t),!this.isSeekCooldownExpired())||!r&&this.driftSamples.items().length<this.driftSamplesToCollect&&Math.abs(t)<2e3)return;let i=r?t:Vt(this.driftSamples.items());if(!r&&this.tryPlaybackRateSync(i)||!r&&this.shouldSkipNormalSeek(i))return;let a=performance.now()-this.config.seek.timeoutMs*this.state.seekToleranceMultiplier,o=this.seekAdjustmentTimestamps.filter(eC(a)).length,s=this.currentEmergencySeekToleranceMs(),c=i>0&&i>=s;if(o&&this.state.seekToleranceMultiplier>2&&!r&&!c){this.logger.debug(`Too many seek adjustments within sliding window`,{seekCooldownThreshold:a,recentSeekCount:o});return}o&&(r||c)&&this.logger.debug(`Bypassing recent seek limit`,{drift:i,recoverySeekReason:n,emergencySeekToleranceMs:s,recentSeekCount:o,seekToleranceMultiplier:this.state.seekToleranceMultiplier}),this.applySeek(i,n)}),m(this,`onMediaSourceRecovered`,()=>{this.needsMediaSourceRecovery=!0,this.lastSeekTime=void 0,this.keyframeTimestamps.clear(),this.driftSamples.clear()}),m(this,`onPlaybackState`,e=>{e===`playing`&&(this.needsMediaSourceRecovery=!1);let t=this.playbackState===`buffering`;if(this.playbackState=e,e!==`buffering`){this.hasPerformedRecoverySeekInCurrentRecoveryState=!1,this.clearRecoverySeekFlags();return}if(t||(this.hasPerformedRecoverySeekInCurrentRecoveryState=!1),this.refreshRecoverySeekState()!==void 0){this.onSync();return}}),m(this,`onPageActive`,e=>{this.setSyncInterval(e?tC:nC),e&&this.onSync()}),m(this,`onPageShow`,e=>{e.persisted&&(this.setSyncInterval(document.visibilityState===`hidden`?nC:tC),this.onSync())}),m(this,`setSyncInterval`,e=>{this.syncInterval!==void 0&&this.currentSyncIntervalMs===e||(this.clearSyncInterval(),this.currentSyncIntervalMs=e,this.syncInterval=this.timers.setInterval(this.onSync,e))}),m(this,`clearSyncInterval`,()=>{this.syncInterval!==void 0&&(this.timers.clearInterval(this.syncInterval),this.syncInterval=void 0)}),m(this,`findKeyframeCloseToTimestamp`,e=>{let t=this.keyframeTimestamps.items();for(let n of t){let t=n>=e-this.config.seek.keyframeSearchBeforeMs,r=n<=e+this.config.seek.keyframeSearchAfterMs;if(t&&r)return n}}),this.logger=t,this.emitter=e,this.playbackSource=n,this.bufferSource=r,this.usesMse=a,this.seekOvershoot=$S(a),this.config={seek:R({},rC.seek),timeshift:R({},rC.timeshift),playbackRate:R({},rC.playbackRate),backoff:R({},rC.backoff)},this.config.timeshift.enabled=i,a||(this.config.seek.toleranceMs=50,this.config.timeshift.toleranceMs=20,this.config.seek.aheadToleranceMs=40),this.state={seekToleranceMultiplier:1,timeshiftToleranceMultiplier:1},typeof window<`u`&&window.location.search.includes(`playbackRateAdjustmentEnabled`)&&(this.config.playbackRate.enabled=!0),this.emitter.on(`rtt`,this.updateRtt),this.emitter.on(`playback state`,this.onPlaybackState),this.emitter.on(`buffers flushed`,this.clearBFrameLatch),this.emitter.on(`recovered from media error`,this.onMediaSourceRecovered),this.logger.info(`SyncModule initialized`,{config:this.config})}updateChannelSyncInfo(e,t){let n=performance.now(),r=this.channelSyncInfo.get(e),i=this.getLiveEdgeTime(e);if(this.isSuspended)return;if(!r||!i){this.logger.info(`Initial timing info`,{syncInfo:t}),this.channelSyncInfo.set(e,R(R({},t),{},{localTimestamp:n,timeDifferences:new T(12)}));return}let a=t.wallclockTime-r.wallclockTime,o=t.timestamp-r.timestamp,s=n-r.localTimestamp,c=o-s;if(r.timeDifferences.push(c),this.logger.debug(`Timing info`,{rtt:this.rtt,channelId:e,syncInfo:t,localTimestamp:n,diffFromEstimated:c,timestampDelta:o,wallclockDelta:a,localTimestampDelta:s}),Math.abs(c)>=Math.max(this.bufferSource.getTargetBufferTime()*2,3e3)){this.logger.info(`Resetting sync info`,{diffFromEstimated:c}),this.channelSyncInfo.set(e,R(R({},t),{},{localTimestamp:n,timeDifferences:new T(r.timeDifferences.maxSize+1)})),this.currentChannelId&&this.currentChannelId===e&&(this.reset(),this.emitter.emit(`channel reset`));return}r.timeDifferences.items().length<3||this.tryApplySyncInfo(Math.min(this.syncInfoToleranceMaxMs,this.syncInfoCorrectionCount*this.syncInfoToleranceStep))}tryApplySyncInfo(e){let t=this.getCurrentChannelId();if(!t)return;let n=this.channelSyncInfo.get(t);if(!n)return;let r=n.timeDifferences.items();if(r.length===0)return;let i=Vt(r);Math.abs(i)>e&&(this.logger.info(`Adjusting sync info`,{medianDifference:i,tolerance:e,count:r.length}),n.timestamp+=i,this.syncInfoCorrectionCount++,n.timeDifferences.clear())}get serverCurrentTime(){return this.channelCurrentTime-this.getTimeshiftOffset()}get channelCurrentTime(){let e=this.getCurrentChannelId();if(!e)return 0;let t=this.getLiveEdgeTime(e);return t?t-this.bufferSource.getTargetBufferTime():0}get drift(){return this.serverCurrentTime-this.playbackSource.currentTime}};XS=iC,m(iC,`create`,(e,t,n,r,i,a=!0)=>new XS(e,t,n,r,i,a)),U(),z(),h(),F();var aC,oC={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},sC=(e,t)=>R(R({},t),{},{type:e,timestamp:new Date().toISOString(),discriminator:`web`}),cC=class{constructor(e,t,n,r){var i=this;m(this,`logger`,void 0),m(this,`timers`,new sr),m(this,`emitter`,void 0),m(this,`options`,void 0),m(this,`parentContext`,void 0),m(this,`unsentLines`,new T(100)),m(this,`retries`,0),m(this,`errorCount`,0),m(this,`eventCount`,0),m(this,`statsCount`,0),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),window.removeEventListener(`error`,this.onError),window.removeEventListener(`unhandledrejection`,this.onRejection),this.timers.unload(),this.emitter.off(`error`,this.addError),this.emitter.off(`visibilitystate`,this.onVisibilityChange),this.emitter.off(`pagehide`,this.onPageHide),this.emitter.off(`telemetry event`,this.addEvent),this.addStats({isFinal:!0,initiator:`unload`}),this.send(`beacon`),this.logger.debug(`Unloaded module`)}),m(this,`load`,()=>{window.addEventListener(`error`,this.onError),window.addEventListener(`unhandledrejection`,this.onRejection),this.emitter.on(`error`,this.addError),this.emitter.on(`visibilitystate`,this.onVisibilityChange),this.emitter.on(`pagehide`,this.onPageHide),this.emitter.on(`telemetry event`,this.addEvent),this.timers.setInterval(()=>{this.addStats(),this.send(`fetch`)},this.options.interval)}),m(this,`addStats`,({isFinal:e,initiator:t}={isFinal:!1,initiator:`interval`},n={})=>{if(!this.options.includeStats)return;let r=this.parentContext.getStatistics(),i=sC(`stats`,R(R(R({},n),r),{},{isFinal:e,initiator:t,count:this.statsCount++}));this.unsentLines.push(i)}),m(this,`addEvent`,e=>{if(!this.options.includeEvents||this.eventCount>this.options.maxEvents)return;let t=sC(`event`,R(R({},this.parentContext.getStatistics()),e));this.eventCount++,this.unsentLines.push(t)}),m(this,`getStatistics`,()=>({errorCount:this.errorCount})),m(this,`send`,function(){var e=P(function*(e){if(i.options.enabled&&!(i.retries>=i.options.maxRetries)&&!i.unsentLines.isEmpty()){i.logger.debug(`Sending telemetry`,{lines:i.unsentLines.items()});try{let t=i.unsentLines.items().map(e=>JSON.stringify(e)).reverse().join(`
1322
- `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield ju(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(!(e instanceof W)||e.code()===`channel_not_live`||!t||(this.errorCount++,this.errorCount>n))return;let r=this.parentContext.getStatistics();this.unsentLines.push(sC(`error`,R(R({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=R(R({},oC),n),this.parentContext=r}};aC=cC,m(cC,`create`,(e,t,n,r)=>new aC(e,t,n,r)),U(),h();var lC,uC=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`elements`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new sr),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{if(!(!this.documentState.isVisible||!this.documentState.isOnline))for(let e of this.elements)e.userHasProvidedInput&&e.isPaused&&(this.logger.debug(`Unpause media element`),e.tryPlay())}),this.logger=e,this.elements=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};lC=uC,m(uC,`create`,(e,t,n)=>new lC(e,t,n)),h();var dC=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function fC(e){return dC.includes(e)}var pC=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&fC(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};z();var mC=6,hC=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&El(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&El(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),R(R({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&El(e.flags)&&n&&(i=!i),!(n&&t.length<mC&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},gC=[`mse`,`wasm`],_C=e=>e==null?gC:e,vC=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},yC=(e,t,n)=>{if(vC(n))return`mse`;let r=_C(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};z();var bC=(e,t,n)=>{if(Ir(t))return R(R({},e),{},{type:`video`,codec:t.codec,isSync:El(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return R(R({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:El(e.flags),data:e.payload,duration:0})};z();var xC=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),SC=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],CC=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],wC=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,TC=e=>{let t=R({},e);for(let e of SC){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of CC){let n=t[e];wC(n)&&(t[e]=xC(n))}return t};z();var EC=(e,t)=>e&&typeof e==`object`&&t in e,DC=e=>!(typeof e!=`object`||!EC(e,`channelId`)||typeof e.channelId!=`string`||!EC(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),OC=e=>{if(!DC(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=R({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},kC=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};ho(),wl(),ux(),h(),F();var AC=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=P(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=P(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?lx(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?oo(e.channels,e.sampleRate):e.codec===`opus`?Sl(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};U(),h(),D(),z(),F(),N(),j();var jC=1e4,MC=1280*720,NC=new WeakMap,PC=new WeakMap,FC=new WeakMap,IC=class e extends en{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,dt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new en),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,Cr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`hasRequestedAudioSession`,!1),m(this,`isUserPaused`,!1),m(this,`isMediaElementPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new xr),m(this,`encryptedMediaExtensions`,void 0),E(this,NC,0),E(this,PC,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new cx),m(this,`unextractableSamplesWarned`,new cx),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`visiblePauseTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,FC,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`applyBurstEnabled`,e=>{this.modules.subscription.enableBurst(this.options.get(`burstEnabled`,e)?this.targetBufferTime:0)}),m(this,`getOptions`,()=>this.options.getOptions()),m(this,`getThumbnailUrl`,()=>{let e=this.options.get(`edgeUrl`)||this.options.get(`url`);e=e.replace(`wss://`,`https://`),e=e.replace(`ws://`,`http://`),e=e.endsWith(`/`)?e.slice(0,-1):e;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(this,`updateAuthenticationToken`,e=>{this.logger.debug(`Got new auth token`,{token:e}),this.options.set(`authenticationToken`,e),this.emitter.emit(`send signal`,{type:`refresh auth`,token:e})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.playbackSource instanceof eu){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.unsuspend()}}),m(this,`getCastOptions`,()=>({url:this.options.get(`url`),channelId:this.options.get(`channelId`),channelGroupId:this.options.get(`channelGroupId`),authenticationToken:this.options.get(`authenticationToken`),language:this.options.get(`language`),logLevel:this.options.get(`logLevel`),minBufferTime:this.options.get(`minBufferTime`),tags:this.options.get(`tags`),ownerSessionId:this.sessionId,edgeUrl:this.options.get(`edgeUrl`),media:this.options.get(`media`),drm:this.options.get(`drm`),burstEnabled:this.options.get(`burstEnabled`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=Cr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>R(R({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=P(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw Vi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.applyBurstEnabled(n.channelId),n.emit(`is live`,i.isLive),!i.isLive)throw Hi();let c=n.modules.connection.estimatedBandwidth;n.patchSubscription(i,c),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let l=n.options.get(`burstEnabled`,n.channelId)&&n.burstFits(c);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:l?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!M(PC,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);M(PC,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(PC,this).push(t)}}});for(let e of M(PC,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{M(PC,this).forEach(t=>{if(t.cues)for(let n of Array.from(t.cues))n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=P(function*(e){let t=yield Promise.all(e.map(function(){var e=P(function*(e){if(Lr(e)){var t;return n.willUseMediaSource()&&!((t=Ke())!=null&&t.isTypeSupported(Rr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Ir(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield tu(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>R(R({codec:e.codec,codecString:e.codecString},Ir(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>R(R({codec:e.codec,codecString:e.codecString},Ir(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`burstFits`,e=>{var t,n;let{video:r,audio:i,channelId:a}=this.modules.subscription.getTargetSubscription(),o=Zl(((t=this.modules.renditions.getVideoRenditions(a))==null?[]:t).filter(e=>e.codec===r.codec).map(e=>e.bitRate),r.bitRate),s=Zl(((n=this.modules.renditions.getAudioRenditions(a))==null?[]:n).filter(e=>e.codec===i.codec).filter(e=>!i.language||e.language===i.language).map(e=>e.bitRate),i.bitRate),c=Ql(e,o+s);return c||this.logger.info(`Skipping the join burst: the starting rendition needs more than half the bandwidth`,{estimatedBandwidth:e,videoBitRate:o,audioBitRate:s}),c}),m(this,`patchSubscription`,(e,t)=>{var n;let r=this.options.get(`maxInitialBitRate`),i=Math.min(this.options.get(`maxVideoBitRate`),r,t,this.targetSubscription.video.bitRate),a=Math.min(this.options.get(`maxAudioBitRate`),r,t,this.targetSubscription.audio.bitRate),o=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),s=this.supportedAudioCodecs(),c=e.renditions.filter(Lr),l=e.renditions.filter(Ir),u=s.find(e=>c.find(t=>t.codec===e)!==void 0),d=o.find(e=>l.find(t=>t.codec===e)!==void 0),f=c.map(e=>e.language);this.logger.debug(`supported and selected codecs`,{audioCodecs:s,videoCodecs:o,audioCodec:u,videoCodec:d});let p=(n=this.modules.subscription.getTargetSubscription().audio.language)==null?this.options.get(`language`):n;if(d&&this.abrEnabled&&this.options.get(`burstEnabled`,this.channelId)){let e=c.filter(e=>e.codec===u),n=e.filter(e=>e.language===p),r=Xl(t,l.filter(e=>e.codec===d).map(e=>e.bitRate),(n.length?n:e).map(e=>e.bitRate));i=Math.min(i,r)}if(d){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(R({codec:d,bitRate:this.abrEnabled?i:this.options.get(`maxVideoBitRate`)},e))}u&&(this.modules.subscription.setAudioConstraint({codec:u,bitRate:this.abrEnabled?a:this.options.get(`maxAudioBitRate`),language:p}),(p===void 0||!f.includes(p))&&this.modules.subscription.setLanguage(f[0])),this.alignSizeAndBitRate(this.targetSubscription);let m=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:m,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Ke();return n?n.isTypeSupported(Rr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,P(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new W(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:Rr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:Rr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new W(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){n.emitter.emit(`flush buffers`);try{var i;yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r)}catch(e){throw e instanceof Il?(n.logger.debug(`Abandoning decoding module setup for a disposed source buffer`),new W(`Source buffer setup was superseded`,{code:`start_failed`,isFatal:!1,type:`internal`,source:e})):e}return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Gr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=n.capturesCanvasOnWebKit(u),p=yield Gx.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u,f),{videoRenderer:m}=p.getStatistics(),h=n.modules.canvasModule;if(h instanceof gS)if(m===`OffscreenCanvas`&&d){h.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{h.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=h.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else h instanceof CS&&(h.setBackgroundPlaybackEnabled(n.isBackgroundPlayEnabled(n.channelId)),m===`OffscreenCanvas`&&d?(h.setOffscreenCanvas(d),n.offscreenCanvasElement=d,f&&n.connectWebKitVideoOutput(p,h)):(h.setVideoTrack(void 0),h.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=p,n.isHiddenWithBackgroundPlayback()&&n.modules.decoder.enableBackgroundTimers(),n.modules.decoder.setVideoRenderingEnabled(n.isVideoOnScreen()),n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`capturesCanvasOnWebKit`,e=>!!e&&this.browser.platform.isWebKit&&this.modules.canvasModule instanceof CS),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(MC)};e.onVideoTrackLost(e=>{this.logger.warn(`Worker video track lost, falling back to canvas capture`,{error:e}),n()});let r=e.videoTrack;r?t.setVideoTrack(r):n()}),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof CS)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,P(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new re(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{if(this.options.get(`pauseSupportEnabled`)&&(this.isUserPaused=!0,this.playbackState!==`paused`&&this.playbackSource.pause(),this.hasCalledConnect)){let e=!this.modules.documentState.isVisible;this.suspend(e),e&&this.disconnectForInactivePage(`Background playback paused`)}}),m(this,`yieldToInterruption`,()=>{if(!this.browser.platform.isWebKit&&(this.logger.info(`Yielding playback after an interruption`),this.options.get(`pauseSupportEnabled`)?this.pause():this.muted=!0,!this.modules.documentState.isVisible)){var e;(e=this.modules.mediaSession)==null||e.stop()}}),m(this,`fromNativeControls`,e=>{if(this.options.get(`pauseSupportEnabled`)){e===`pause`?this.pause():this.play();return}this.muted=e===`pause`,e===`play`&&this.play()}),m(this,`registerDebugInstance`,()=>{$l(this)}),m(this,`play`,()=>{var t;this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.requestAudioSessionOnce(),this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&this.playbackSource.isActivated&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play(),this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?R(R({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return TC(R(R({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c}))}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.playbackSource instanceof eu&&this.modules.adaptivity.reset(jC),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{if(this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),!this.isBackgroundPlayEnabled(this.channelId)){var t;(t=this.modules.mediaSession)==null||t.stop()}this.connectionState!==`disconnected`&&this.modules.connection.disconnect(e)}),m(this,`scheduleInactivityDisconnect`,()=>{this.clearInactivityDisconnect(),this.inactivityDisconnectInterval=this.modules.timer.setInterval(()=>{let e=this.modules.pictureInPicture.isPictureInPictureActive(),t=this.playbackState===`paused`||this.muted&&!e;this.connectionState===`connected`&&t&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Background playback inactive timeout`),this.suspend(!0),this.clearInactivityDisconnect())},e.BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT)}),m(this,`onVisiblePause`,()=>{if(!this.browser.platform.isIOS){this.disconnectForVisiblePause();return}this.clearVisiblePauseDisconnect(),this.visiblePauseTimeout=this.modules.timer.setTimeout(()=>{this.visiblePauseTimeout=void 0,this.disconnectForVisiblePause()},e.VISIBLE_PAUSE_DISCONNECT_DELAY)}),m(this,`disconnectForVisiblePause`,()=>{this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect()}),m(this,`clearVisiblePauseDisconnect`,()=>{this.visiblePauseTimeout!==void 0&&(this.modules.timer.clearTimeout(this.visiblePauseTimeout),this.visiblePauseTimeout=void 0)}),m(this,`clearInactivityDisconnect`,()=>{this.inactivityDisconnectInterval!==void 0&&(this.modules.timer.clearInterval(this.inactivityDisconnectInterval),this.inactivityDisconnectInterval=void 0)}),m(this,`isHiddenWithBackgroundPlayback`,()=>!this.modules.documentState.isVisible&&this.shouldAllowBackgroundPlayback(this.channelId)),m(this,`isVideoOnScreen`,(e=this.modules.documentState.isVisible)=>e||this.modules.pictureInPicture.isPictureInPictureActive()),m(this,`isHiddenWithBackgroundPlayDisabled`,()=>!this.modules.documentState.isVisible&&!this.isBackgroundPlayEnabled(this.channelId)),m(this,`resumeModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()})}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof CS?!0:void 0;return R({uptime:this.uptime,version:`4.7.0-1-gb0d0369b`,clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get(`channelGroupId`),ip:this.clientIp,url:this.options.get(`url`),timeToFirstFrame:this.timeToFirstFrame(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e,mediaElementPaused:this.element&&`paused`in this.element?this.element.paused:void 0},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return R(R({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{var t;if(this.logger.info(`media element state`,{state:e}),this.isMediaElementPaused=e===`paused`,(t=this.modules.mediaSession)==null||t.refresh(),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&this.onVisiblePause();else{if(this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.isHiddenWithBackgroundPlayDisabled())return;this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()}}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectStartTime;if(t!==void 0&&e!==void 0)return Math.round(e-t)}),m(this,`hiddenPauseIsStop`,()=>{var e;if(this.browser.platform.isWebKit||!this.browser.isMobile)return!1;let t=(e=this.modules)==null?void 0:e.decoder;return t?t.audioWebCodecsInUse:this.isWebCodecsAudioAvailable(this.channelId)}),this.options=new pC(R(R({},Hr),OC(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let a={channelId:this.options.get(`channelId`),audio:{language:this.options.get(`language`),bitRate:this.options.get(`maxAudioBitRate`)},video:{bitRate:this.options.get(`maxVideoBitRate`),width:this.options.get(`maxSize`).width,height:this.options.get(`maxSize`).height}},o=bn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new AC(o),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let s=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;s!==void 0&&(this.options.set(`streamToMediaElementEnabled`,s),this.options.set(`iosMediaElementEnabled`,s)),t.iosBackgroundPlayEnabled!==void 0&&this.logger.warn(`Option iosBackgroundPlayEnabled is deprecated and will be removed in a future release. Use backgroundPlayEnabled instead.`);let c=(i=t.backgroundPlayEnabled)==null?t.iosBackgroundPlayEnabled:i;c!==void 0&&(this.options.set(`backgroundPlayEnabled`,c),this.options.set(`iosBackgroundPlayEnabled`,c));let l=t.mseEnabled!==void 0,u=t.decoders!==void 0;l&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),l&&!u&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let d=IS.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=this.options.get(`mediaSessionEnabled`)?xS.create(this.emitter,this.logger.createContext(`MediaSessionModule`),{metadata:this.options.get(`mediaSessionMetadata`),decoy:this.willUseMediaSource()||this.usesSplitCanvasAudio()?void 0:_u.create(this.logger.createContext(`AudioFocusDecoy`),this.yieldToInterruption),isMuted:()=>this.playbackSource.userMuted,isHidden:()=>!this.modules.documentState.isVisible,isSinkPaused:()=>this.isMediaElementPaused,releaseOnHiddenPause:this.hiddenPauseIsStop,isSuppressed:this.isHiddenWithBackgroundPlayDisabled,holdDecoyWhilePaused:this.holdsDecoyWhilePaused(),keepDecoyWhenMuted:this.isWebKitCanvasPath(),pauseMeansMute:!this.options.get(`pauseSupportEnabled`)}):void 0,p=sr.create(),h=ex.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),g=JS.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),_=WS.create(this.emitter,g),v=HS.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),_),y=RS.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Xa(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let b=qx.create(this.emitter),ee=this.options.get(`poster`),x=ee===!0?this.getThumbnailUrl():ee||void 0,S,te,ne;if(this.willUseMediaSource()){let e=new eu({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:x});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,S)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emitter.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Xa.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=OS.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(te=uC.create(this.logger.createContext(`UnpauseModule`),[e],b)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.streamsToMediaElement()){let e=CS.create(this.emitter,this.logger.createContext(`ModernCanvasModule`),this.pool,this,{type:this.options.get(`media`)===`audio`?`audio`:`video`,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),poster:x,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`),backgroundPlaybackEnabled:this.isBackgroundPlayEnabled(this.channelId),splitAudio:this.usesSplitCanvasAudio()});this.element=e.element().element,this.playbackSource=e,ne=e;let t=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!t&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(te=uC.create(this.logger.createContext(`UnpauseModule`),e.elements(),b))}else{let e;e=gS.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ne=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Vl)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>p.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>d.requestPictureInPicture(),exit:()=>d.exitPictureInPicture(),isActive:()=>d.isPictureInPictureActive(),isSupported:()=>d.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let ie=this.willUseMediaSource(),C=ie?!this.browser.platform.isWebKit:!0,ae={getTargetBufferTime:()=>y.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},w=iC.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,ae,C,ie),oe=tS.create(this.logger.createContext(`JitterModule`)),T=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),se=new URL(`/telemetry`,T).toString();this.modules={telemetry:cC.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:se,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:xu.create(this.emitter,this.logger.createContext(`BufferTimeModule`),v,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:Qx.create(this.emitter),adaptivity:du.create(this.emitter,this.logger.createContext(`AdaptivityModule`),v,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:ax.create(this.emitter,this.element,_,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:Xx.create(this.emitter,this.logger.createContext(`EventModule`),w),sync:w,jitter:oe,documentState:b,connection:h,playback:y,pictureInPicture:d,mediaSession:f,timer:p,subscription:g,renditions:_,qualityOfService:v,mseModule:S,unpause:te,canvasModule:ne},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`enter picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(!0)}),this.emitter.on(`exit picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(this.modules.documentState.isVisible)}),this.emitter.on(`media session: request play`,()=>this.fromNativeControls(`play`)),this.emitter.on(`media session: request pause`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`media session: request stop`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`native control`,e=>{this.options.get(`pauseSupportEnabled`)&&this.fromNativeControls(e)}),this.emitter.on(`page active`,e=>{var t,n;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend(),this.usesSplitCanvasAudio()&&this.playbackSource.isPlayingAsRequested===!1&&(this.logger.debug(`Playing again after show`),this.play()));else if(this.clearVisiblePauseDisconnect(),this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var r,i,a;(r=this.modules.decoder)==null||r.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(i=this.modules.decoder)==null||i.unsuspend(),(a=this.modules.canvasModule)==null||a.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`);(n=this.modules.mediaSession)==null||n.refresh()}),this.emitter.on(`pageshow`,e=>{if(!e.persisted||this.isUserPaused)return;let t=this.shouldAllowBackgroundPlayback(this.channelId),n=document.visibilityState===`visible`;if(!n&&!t){this.logger.debug(`Ignoring pageshow while hidden`);return}if(this.logger.debug(`Resuming after pageshow`),!n){var r;(r=this.modules.decoder)==null||r.enableBackgroundTimers()}this.resumeModules(),this.isSuspended=!1,this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()});let ce;this.emitter.on(`context switch complete`,()=>{ce||(ce=window.setTimeout(()=>{window.clearTimeout(ce),ce=void 0,this.emit(`context switch`,`completed`),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on(`context switch started`,()=>this.emit(`context switch`,`started`)),this.emitter.on(`needs user input`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2),!this.isUserPaused&&this.visiblePauseTimeout===void 0&&this.playbackSource.play()}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=cC.create(this.logger.createContext(`TelemetryModule`),this.emitter,R(R({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?zr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(this.modules.connection.lastConnectionTime===void 0||performance.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!==`connected`)return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info(`Reconnecting due to poor qos`),this.modules.connection.reconnect(`Fatal QOS`),this.emitter.emit(`adapted level`);return}else a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(R(R({},this.targetSubscription),{},{video:R(R({},this.targetSubscription.video),d==null?void 0:d.video),audio:R(R({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(PC,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(NC,this);if(A(NC,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`native text track selected`,e=>{this.textTrack=e}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,R({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(FC,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{A(FC,this,void 0)}));break;case`subscription changed`:var r;try{kC(t.subscription)}catch(e){this.emitter.emit(`error`,new W(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,Ji(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,Ji(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=jl(e);if(!t){this.logger.warn(`Received unwanted message`,R({},n));return}D(R(R({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload,r),a=i.unbackedSamplesCount();if(a>0&&this.unbackedSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Fragment declares more samples than its payload holds`,{unbackedSamples:a,samplesCount:i.samplesCount(),channelId:n,renditionId:r}),t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Yi(`Switching between DRM and non-DRM channels is not supported`,!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:`channel switch`,channelId:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Oo(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var o,s;let a=(o=i.header().init().moov.traks[0])==null?void 0:o.mdia.minf.stbl.stsd,m=(s=a==null?void 0:a.codec)==null?`h264`:s,h;if(m===`h264`){var c;h=a==null||(c=a.avc1)==null?void 0:c.avcC.bytes}else if(m===`h265`){var l,u,d;let e=(l=a==null||(u=a.hvc1)==null?void 0:u.data())==null?a==null||(d=a.hev1)==null?void 0:d.data():l;e&&(h=Eo(e))}else if(m===`av1`&&a!=null&&a.av01)h=qc(a.av01.data());else if(m===`aac`){var f;h=a==null||(f=a.mp4a)==null||(f=f.esds)==null?void 0:f.decoderConfig}else if(m===`opus`){var p;h=xl(a==null||(p=a.opus)==null?void 0:p.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});let g=0;for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);if(!t){g++;continue}this.emitter.emit(`coded sample`,R(R({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}g>0&&this.unextractableSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Dropped samples the demuxer could not extract`,{droppedSamples:g,samplesCount:i.samplesCount(),channelId:n,renditionId:r})}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let le=this.options.get(`container`);le&&this.attach(le),this.logger.info(`Created Vindral instance`,{options:this.options});let D=function(){var e=P(function*(e){let t=e.channelId;M(FC,n)&&(yield M(FC,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Ol(e.flags)){if(kl(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=vr(t);if(e&&e.language!==void 0){let t=new ql,i=[];try{i=t.parse(e.content||``)}catch(e){n.logger.warn(`failed to parse WebVTT segment, dropping it`,e)}let a=r/1e3,o=M(PC,n).find(t=>t.language===e.language),s=a-M(NC,n);if(A(NC,n,a),o){if(o.cues)for(let e of o.cues)e.startTime-=s,e.endTime-=s;for(let e of i){let t=new VTTCue(e.startTime-a,e.endTime-a,e.text);o.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=Mr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),Dl(e.flags)){let a=R(R({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Ir(r)?{width:r.width,height:r.height}:{}),o=ml(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=Rr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=bC(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=hC(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Qt(this.options.get(`maxSize`),Br())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&g.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){let t=this.playbackSource.muted;e===this.playbackSource.userMuted&&(e||!t)||(this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play())}get muted(){return this.playbackSource.muted}get media(){return this.options.get(`media`)}get videoBitRate(){return this.modules.incomingData.averageBitRate(`video`)}get audioBitRate(){return this.modules.incomingData.averageBitRate(`audio`)}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get(`sizeBasedResolutionCapEnabled`):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.applyBurstEnabled(this.channelId))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(M(PC,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return M(PC,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(PC,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.applyBurstEnabled(e),this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?Br():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?zr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?zr():e}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return Math.round(this.modules.qualityOfService.timeSpentBuffering())}get timeActive(){return Math.round(this.modules.qualityOfService.timeActive())}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Math.round(performance.now()-this.createdAt)}suspend(e=!1){this.isSuspended&&!e||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){if(this.isSuspended){if(this.isHiddenWithBackgroundPlayDisabled()){this.logger.debug(`Deferring resume until the page is visible`);return}this.resumeModules(),this.isSuspended=!1}}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(R(R({},e),{},{video:R({},e.video),audio:R({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return yC(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}usesSplitCanvasAudio(){return!this.willUseMediaSource()&&this.options.get(`streamToMediaElementEnabled`)&&Ft(this.browser)&&this.options.get(`media`)!==`audio`&&this.options.get(`media`)!==`video`&&this.browser.platform.isIOS}isWebKitCanvasPath(){return!this.willUseMediaSource()&&this.browser.platform.isWebKit}holdsDecoyWhilePaused(){return!(!this.isWebKitCanvasPath()||this.browser.platform.isIOS&&this.streamsToMediaElement()&&lt(this.browser,26))}streamsToMediaElement(){return this.options.get(`streamToMediaElementEnabled`)===!0&&Ft(this.browser)}requestAudioSessionOnce(){this.hasRequestedAudioSession||!this.options.get(`mediaSessionEnabled`)||!this.isWebKitCanvasPath()||!this.isBackgroundPlayEnabled(this.channelId)||(this.hasRequestedAudioSession=!0,this.logger.info(`Requested playback audio session`,{playback:De()}))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}isBackgroundPlayEnabled(e){return this.options.get(`backgroundPlayEnabled`,e)}shouldAllowBackgroundPlayback(e){return this.hasCalledConnect&&this.isBackgroundPlayEnabled(e)&&!this.isUserPaused}};m(IC,`MAX_POOL_SIZE`,10),m(IC,`REMOVE_CUE_THRESHOLD`,1e3*10),m(IC,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15),m(IC,`VISIBLE_PAUSE_DISCONNECT_DELAY`,1e3);var LC={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},RC=`_withThumbnails_suenn_19`,zC={"channel-selection-item":`_channel-selection-item_suenn_1`,"channel-selection-item-selected":`_channel-selection-item-selected_suenn_8`,"channel-selection-item-image":`_channel-selection-item-image_suenn_13`,withThumbnails:RC,"hide-on-small":`_hide-on-small_suenn_27`},BC={"icon-button":`_icon-button_5fg7v_1`},VC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1322
+ `);switch(e){case`beacon`:navigator.sendBeacon(i.options.url,t);break;default:i.parentContext.connectionState===`connected`?i.emitter.emit(`send signal`,{type:`telemetry`,body:t}):yield ju(new URL(i.options.url),{body:t,headers:{"Content-Type":`text/plain`}});break}i.retries=0,i.unsentLines.clear()}catch(e){i.retries++}}});return function(t){return e.apply(this,arguments)}}()),m(this,`onVisibilityChange`,e=>{e===`hidden`&&(this.addStats({isFinal:!0,initiator:`visibilitychange`}),this.send(`beacon`))}),m(this,`onPageHide`,e=>{this.addStats({isFinal:!0,initiator:`pagehide`},{persisted:e.persisted}),this.send(`beacon`)}),m(this,`onRejection`,e=>this.addError(e.reason)),m(this,`onError`,e=>this.addError(e.error)),m(this,`addError`,e=>{let{includeErrors:t,maxErrorReports:n}=this.options;if(!(e instanceof W)||e.code()===`channel_not_live`||!t||(this.errorCount++,this.errorCount>n))return;let r=this.parentContext.getStatistics();this.unsentLines.push(sC(`error`,R(R({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=R(R({},oC),n),this.parentContext=r}};aC=cC,m(cC,`create`,(e,t,n,r)=>new aC(e,t,n,r)),U(),h();var lC,uC=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`elements`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new sr),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{if(!(!this.documentState.isVisible||!this.documentState.isOnline))for(let e of this.elements)e.userHasProvidedInput&&e.isPaused&&(this.logger.debug(`Unpause media element`),e.tryPlay())}),this.logger=e,this.elements=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};lC=uC,m(uC,`create`,(e,t,n)=>new lC(e,t,n)),h();var dC=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function fC(e){return dC.includes(e)}var pC=class{constructor(e){m(this,`options`,void 0),m(this,`overrides`,new Map),this.options=e}getOptions(){return this.options}addOverrides(e,t){this.overrides.set(e,t)}set(e,t){this.options[e]=t}get(e,t){if(t&&fC(e)){var n;let r=(n=this.overrides.get(t))==null?void 0:n[e];if(r!==void 0)return r}return this.options[e]}getOverride(e,t){var n;return(n=this.overrides.get(t))==null?void 0:n[e]}};z();var mC=6,hC=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&El(e.flags)){var o;n=(o=e.compositionTimeOffset)==null?0:o}e.timestamp+=n,e.compositionTimeOffset=((i=e.compositionTimeOffset)==null?0:i)-n;let s=e.timestamp/e.timescale,c=t.flags&&El(t.flags)?(a=t.compositionTimeOffset)==null?0:a:n,l=(t.timestamp+c)/t.timescale,u=Math.max(0,Math.round((l-s)*e.timescale));return u>0&&(r=u),R(R({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&El(e.flags)&&n&&(i=!i),!(n&&t.length<mC&&i)&&t.length>0){i=!1;let n=e;for(let e=t.length-1;e>0;e--){let r=t[e];if(!r||!n)break;r.timestamp>=n.timestamp?t.splice(e,1):n=r}let r=t.map((n,r)=>a(n,t[r+1]||e));return t=[e],r}return t.push(e),[]}},gC=[`mse`,`wasm`],_C=e=>e==null?gC:e,vC=e=>{if(!e)return!1;let t=e.headers&&Object.keys(e.headers).length>0,n=e.queryParams&&Object.keys(e.queryParams).length>0;return!!(t||n)},yC=(e,t,n)=>{if(vC(n))return`mse`;let r=_C(e);for(let e of r)switch(e){case`mse`:if(t)return`mse`;break;case`webcodecs`:if(typeof VideoDecoder<`u`)return`webcodecs`;break;case`wasm`:return`wasm`}return`wasm`};z();var bC=(e,t,n)=>{if(Ir(t))return R(R({},e),{},{type:`video`,codec:t.codec,isSync:El(e.flags),data:e.payload,duration:0,width:t.width,height:t.height},n);if(t.codec===`webvtt`)throw Error(`WebVTT is not supported`);return R(R({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:El(e.flags),data:e.payload,duration:0})};z();var xC=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),SC=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],CC=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],wC=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,TC=e=>{let t=R({},e);for(let e of SC){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of CC){let n=t[e];wC(n)&&(t[e]=xC(n))}return t};z();var EC=(e,t)=>e&&typeof e==`object`&&t in e,DC=e=>!(typeof e!=`object`||!EC(e,`channelId`)||typeof e.channelId!=`string`||!EC(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),OC=e=>{if(!DC(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=R({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},kC=e=>{if(typeof e!=`object`||!e)throw Error(`not an object`);if(!(`video`in e))throw Error(`missing video in subscription`);if(!(`audio`in e))throw Error(`missing audio in subscription`);if(!(`channelId`in e))throw Error(`missing channelId`);return!0};ho(),wl(),ux(),h(),F();var AC=class{constructor(e){var t=this;m(this,`cache`,new Map),m(this,`inFlight`,new Map),m(this,`checkVideoSupport`,function(){var e=P(function*(e){var n;if(typeof VideoDecoder>`u`)return!1;let r=VideoDecoder.isConfigSupported;if(typeof r!=`function`)return!0;if(e.codec===`h265`&&!e.codecString)return t.logger.warn(`Missing HEVC codec string for WebCodecs support check. Falling back to optimistic support.`,{renditionId:e.id}),!0;let i=(n=e.codecString)==null?e.codec===`av1`?`av01.0.08M.08`:`avc1.42E01E`:n,a=`video|${i}|${e.width}x${e.height}`;return t.check(a,()=>r({codec:i,optimizeForLatency:!0,codedWidth:e.width,codedHeight:e.height}),!0,{message:`Failed to check WebCodecs rendition support. Falling back to optimistic support check.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`checkAudioSupport`,function(){var e=P(function*(e){var n;if(typeof AudioDecoder>`u`)return!1;let r=AudioDecoder.isConfigSupported;if(typeof r!=`function`)return!0;let i=(n=e.codecString)==null?lx(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?oo(e.channels,e.sampleRate):e.codec===`opus`?Sl(e.channels,e.sampleRate):void 0;return t.check(a,()=>r({codec:i,sampleRate:e.sampleRate,numberOfChannels:e.channels,description:o}),!1,{message:`Failed to check WebCodecs audio rendition support. Treating rendition as unsupported.`,codec:i,renditionId:e.id})});return function(t){return e.apply(this,arguments)}}()),m(this,`check`,(e,t,n,r)=>{let i=this.cache.get(e);if(i!==void 0)return Promise.resolve(i);let a=this.inFlight.get(e);if(a)return a;let o=Promise.resolve().then(t).then(({supported:t})=>(this.cache.set(e,t),t)).catch(t=>(this.logger.warn(r.message,{codec:r.codec,renditionId:r.renditionId,error:t}),this.cache.set(e,n),n)).finally(()=>{this.inFlight.delete(e)});return this.inFlight.set(e,o),o}),this.logger=e}};U(),h(),D(),z(),F(),N(),j();var jC=1e4,MC=1280*720,NC=new WeakMap,PC=new WeakMap,FC=new WeakMap,IC=class e extends en{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,dt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new en),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,Cr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`hasRequestedAudioSession`,!1),m(this,`isUserPaused`,!1),m(this,`isMediaElementPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new xr),m(this,`encryptedMediaExtensions`,void 0),E(this,NC,0),E(this,PC,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new cx),m(this,`unextractableSamplesWarned`,new cx),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`visiblePauseTimeout`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,FC,void 0),m(this,`attach`,e=>{var t;(t=this.wakeLock)==null||t.attach(e),e.appendChild(this.element)}),m(this,`setElement`,e=>{this.element!==e&&(this.element=e,this.modules.constraintCap.setElement(e))}),m(this,`applyBurstEnabled`,e=>{this.modules.subscription.enableBurst(this.options.get(`burstEnabled`,e)?this.targetBufferTime:0)}),m(this,`getOptions`,()=>this.options.getOptions()),m(this,`getThumbnailUrl`,()=>{let e=this.options.get(`edgeUrl`)||this.options.get(`url`);e=e.replace(`wss://`,`https://`),e=e.replace(`ws://`,`http://`),e=e.endsWith(`/`)?e.slice(0,-1):e;let t=window.devicePixelRatio||1,n=Math.round(window.innerWidth*t),r=Math.round(window.innerHeight*t),i=this.options.get(`authenticationToken`),a=i?`&auth.token=${i}`:``;return`${e}/api/thumbnail?channelId=${this.channelId}${a}&width=${n}&height=${r}`}),m(this,`updateAuthenticationToken`,e=>{this.logger.debug(`Got new auth token`,{token:e}),this.options.set(`authenticationToken`,e),this.emitter.emit(`send signal`,{type:`refresh auth`,token:e})}),m(this,`connect`,()=>{this.hasCalledConnect||(this.play(),this._connect())}),m(this,`_connect`,()=>{if(!this.hasCalledConnect){if(this.hasCalledConnect=!0,Object.values(this.modules).forEach(e=>{e&&`load`in e&&e.load()}),this.playbackSource instanceof eu){var e,t;(e=(t=this.playbackSource).load)==null||e.call(t)}this.unsuspend()}}),m(this,`getCastOptions`,()=>({url:this.options.get(`url`),channelId:this.options.get(`channelId`),channelGroupId:this.options.get(`channelGroupId`),authenticationToken:this.options.get(`authenticationToken`),language:this.options.get(`language`),logLevel:this.options.get(`logLevel`),minBufferTime:this.options.get(`minBufferTime`),tags:this.options.get(`tags`),ownerSessionId:this.sessionId,edgeUrl:this.options.get(`edgeUrl`),media:this.options.get(`media`),drm:this.options.get(`drm`),burstEnabled:this.options.get(`burstEnabled`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=Cr();let r=n.modules.subscription.getTargetSubscription(),i=e.channels.find(e=>e.channelId===r.channelId);if(n.emitter.emit(`connect info`,e),`timeshift`in e&&e.timeshift?(e.timeshift,n._channels=e.channels.map(t=>R(R({},t),{},{timeshift:e.timeshift})),n.emit(`timeshift info`,e.timeshift)):n._channels=e.channels,n.updateTextTracks((t=i==null?void 0:i.renditions)==null?[]:t),!n.textTrack&&n.options.get(`textTrack`)&&(n.textTrack=n.options.get(`textTrack`)),yield Promise.all(e.channels.map(function(){var e=P(function*(e){e.overrides&&n.options.addOverrides(e.channelId,e.overrides),e.renditions=yield n.filterRenditions(e.renditions),n.modules.renditions.setRenditions(e.channelId,e.renditions)});return function(t){return e.apply(this,arguments)}}())),!i)throw Vi(`external`);let a=n.options.getOverride(`sizeBasedResolutionCapEnabled`,n.channelId);a!==void 0&&(n.modules.constraintCap.sizeBasedResolutionCapEnabled=a);let o=n.options.getOverride(`minBufferTime`,n.channelId),s=n.options.getOverride(`maxBufferTime`,n.channelId);if((o||s)&&(n.modules.bufferTime.updateConfig({minBufferTime:n.options.get(`minBufferTime`,n.channelId),maxBufferTime:n.options.get(`maxBufferTime`,n.channelId)}),n.targetBufferTime=n.options.get(`minBufferTime`,n.channelId)),n.applyBurstEnabled(n.channelId),n.emit(`is live`,i.isLive),!i.isLive)throw Hi();let c=n.modules.connection.estimatedBandwidth;n.patchSubscription(i,c),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let l=n.options.get(`burstEnabled`,n.channelId)&&n.burstFits(c);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:l?n.targetBufferTime:void 0,sessionId:n.sessionId,clientId:n.clientId,channelId:n.channelId,channelGroupId:n.options.get(`channelGroupId`),authToken:n.options.get(`authenticationToken`),textTrack:n.textTrack}});return function(t){return e.apply(this,arguments)}}()),m(this,`emitLanguagesIfChanged`,()=>{let e=this.modules.renditions.getLanguages(),t=this.latestEmittedLanguages;e.length===t.length&&e.every(e=>t.includes(e))||(this.logger.debug(`Emitting new languages`,{currentLanguages:e}),this.latestEmittedLanguages=e,this.emit(`languages`,this.latestEmittedLanguages))}),m(this,`updateTextTracks`,e=>{let t=e.filter(e=>e.codec===`webvtt`);t.forEach(e=>{if(!M(PC,this).find(t=>t.language===e.language)){if(this.modules.canvasModule){let t=this.modules.canvasModule.textTracks.addTextTrack(e.kind,e.label||e.language||``,e.language||``);M(PC,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(PC,this).push(t)}}});for(let e of M(PC,this))t.find(t=>t.language===e.language)?e.mode===`disabled`&&(e.mode=`hidden`):e.mode=`disabled`;this.emit(`text tracks`,this.textTracks)}),m(this,`cleanupTextTracks`,(e=this.currentTime-2e4)=>{M(PC,this).forEach(t=>{if(t.cues)for(let n of Array.from(t.cues))n.endTime*1e3<e-2e3&&t.removeCue(n)})}),m(this,`filterRenditions`,function(){var e=P(function*(e){let t=yield Promise.all(e.map(function(){var e=P(function*(e){if(Lr(e)){var t;return n.willUseMediaSource()&&!((t=Ke())!=null&&t.isTypeSupported(Rr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Ir(e)||!n.isSupportedVideoCodecProfile(e.codec,e.codecString))return!1;if(!n.willUseMediaSource())return n.isWebCodecsVideoAvailable(n.channelId)?n.webCodecsRenditionSupport.checkVideoSupport(e):!0;let r=yield tu(e);if(!r.supported)return!1;if(e.codec===`av1`&&!r.smooth&&!r.powerEfficient)return n.logger.debug(`discarding av1 rendition, neither smooth nor power efficient`,{codecString:e.codecString,width:e.width,height:e.height,bitRate:e.bitRate,capabilities:r}),!1;let i=n.options.getOverride(`maxVideoBitRate`,n.channelId);return i?i>=e.bitRate:!0});return function(t){return e.apply(this,arguments)}}())),r=e.filter((e,n)=>t[n]),i=e.filter((e,n)=>!t[n]);i.length>0&&n.logger.debug(`unsupported renditions filtered out`,{renditions:i.map(e=>R(R({codec:e.codec,codecString:e.codecString},Ir(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))});let a=r.filter(e=>e.codec===`h264`).reverse()[0],o=r.filter(e=>e.codec===`av1`).reverse()[0];return a&&o&&a.width>o.width&&a.height>o.height&&(n.logger.debug(`discarding av1 renditions, h264 ladder has higher resolution`,{bestH264:{width:a.width,height:a.height,bitRate:a.bitRate},bestAV1:{width:o.width,height:o.height,bitRate:o.bitRate}}),r=r.filter(e=>e.codec!==`av1`)),n.logger.debug(`supported renditions`,{renditions:r.map(e=>R(R({codec:e.codec,codecString:e.codecString},Ir(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`burstFits`,e=>{var t,n;let{video:r,audio:i,channelId:a}=this.modules.subscription.getTargetSubscription(),o=Zl(((t=this.modules.renditions.getVideoRenditions(a))==null?[]:t).filter(e=>e.codec===r.codec).map(e=>e.bitRate),r.bitRate),s=Zl(((n=this.modules.renditions.getAudioRenditions(a))==null?[]:n).filter(e=>e.codec===i.codec).filter(e=>!i.language||e.language===i.language).map(e=>e.bitRate),i.bitRate),c=Ql(e,o+s);return c||this.logger.info(`Skipping the join burst: the starting rendition needs more than half the bandwidth`,{estimatedBandwidth:e,videoBitRate:o,audioBitRate:s}),c}),m(this,`patchSubscription`,(e,t)=>{var n;let r=this.options.get(`maxInitialBitRate`),i=Math.min(this.options.get(`maxVideoBitRate`),r,t,this.targetSubscription.video.bitRate),a=Math.min(this.options.get(`maxAudioBitRate`),r,t,this.targetSubscription.audio.bitRate),o=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),s=this.supportedAudioCodecs(),c=e.renditions.filter(Lr),l=e.renditions.filter(Ir),u=s.find(e=>c.find(t=>t.codec===e)!==void 0),d=o.find(e=>l.find(t=>t.codec===e)!==void 0),f=c.map(e=>e.language);this.logger.debug(`supported and selected codecs`,{audioCodecs:s,videoCodecs:o,audioCodec:u,videoCodec:d});let p=(n=this.modules.subscription.getTargetSubscription().audio.language)==null?this.options.get(`language`):n;if(d&&this.abrEnabled&&this.options.get(`burstEnabled`,this.channelId)){let e=c.filter(e=>e.codec===u),n=e.filter(e=>e.language===p),r=Xl(t,l.filter(e=>e.codec===d).map(e=>e.bitRate),(n.length?n:e).map(e=>e.bitRate));i=Math.min(i,r)}if(d){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(R({codec:d,bitRate:this.abrEnabled?i:this.options.get(`maxVideoBitRate`)},e))}u&&(this.modules.subscription.setAudioConstraint({codec:u,bitRate:this.abrEnabled?a:this.options.get(`maxAudioBitRate`),language:p}),(p===void 0||!f.includes(p))&&this.modules.subscription.setLanguage(f[0])),this.alignSizeAndBitRate(this.targetSubscription);let m=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:m,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Ke();return n?n.isTypeSupported(Rr({codec:e,codecString:t})):!0}if(this.isWebCodecsVideoAvailable(this.channelId)&&(e===`h264`||e===`h265`||e===`av1`))return!0;if(e===`h264`){let e=!!(t!=null&&t.startsWith(`avc1.42`)),n=!!(t!=null&&t.startsWith(`avc1.66.`));return e||n}return!(e===`h265`||e===`av1`)}),m(this,`supportedAudioCodecs`,()=>{if(this.options.get(`media`)===`video`)return[];let e=[];return(this.willUseMediaSource()||this.isWebCodecsAudioAvailable(this.channelId))&&e.push(`aac`),(this.browser.supportsMp4Opus&&this.options.get(`mseOpusEnabled`)||!this.willUseMediaSource())&&e.push(`opus`),this.isWebCodecsAudioAvailable(this.channelId)&&e.push(`mp3`),e}),m(this,`initializeDecodingModule`,P(function*(){var e;let t=n.currentRenditionLevel,r=[];if(!t)throw new W(`No currentRenditionLevel`,{code:`no_current_rendition_level`,isFatal:!1});if(t!=null&&t.video&&r.push({type:`video`,mimeType:Rr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:Rr(t.audio),channels:t.audio.channels,sampleRate:t.audio.sampleRate}),r.length===0)throw new W(`Can't initialize decoding module without tracks`,{code:`no_tracks`,isFatal:!1});if(n.willUseMediaSource()&&n.element instanceof HTMLMediaElement){n.emitter.emit(`flush buffers`);try{var i;yield(i=n.modules.mseModule)==null?void 0:i.setSourceBuffers(r)}catch(e){throw e instanceof Il?(n.logger.debug(`Abandoning decoding module setup for a disposed source buffer`),new W(`Source buffer setup was superseded`,{code:`start_failed`,isFatal:!1,type:`internal`,source:e})):e}return}let a=n.shouldUseWebCodecs(n.channelId),o=n.options.get(`webcodecsHardwareAcceleration`,n.channelId),s=n.shouldUseOffscreenCanvas(n.channelId)&&a,c=typeof OffscreenCanvas<`u`&&typeof HTMLCanvasElement<`u`&&typeof HTMLCanvasElement.prototype.transferControlToOffscreen==`function`,l=s&&c&&typeof VideoDecoder<`u`,u,d;if(l)try{d=document.createElement(`canvas`),Gr(d),u=d.transferControlToOffscreen()}catch(e){u=void 0,d=void 0,n.logger.warn(`Failed to enable OffscreenCanvas; falling back to main thread rendering`,{error:e})}else s&&n.logger.warn(`OffscreenCanvas requested but not supported; falling back to main thread rendering`);let f=n.capturesCanvasOnWebKit(u),p=yield Gx.create(n.emitter,n.logger.createContext(`DecoderModule`),n.options.get(`logLevel`),r,n.playbackSource,n.pool,a,o,u,f),{videoRenderer:m}=p.getStatistics(),h=n.modules.canvasModule;if(h instanceof gS)if(m===`OffscreenCanvas`&&d){h.setVideoRenderingEnabled(!1);let e=n.element;e.parentElement?e.parentElement.replaceChild(d,e):n.logger.warn(`OffscreenCanvas rendering is active but the current element is not attached to the DOM. Updating internal element reference only.`),n.offscreenCanvasElement=d,n.setElement(d)}else{h.setVideoRenderingEnabled(!0),n.offscreenCanvasElement=void 0;let e=h.element();if(e!==n.element){let t=n.element;t.parentElement&&t.parentElement.replaceChild(e,t),n.setElement(e)}}else h instanceof CS&&(h.setBackgroundPlaybackEnabled(n.isBackgroundPlayEnabled(n.channelId)),m===`OffscreenCanvas`&&d?(h.setOffscreenCanvas(d),n.offscreenCanvasElement=d,f&&n.connectWebKitVideoOutput(p,h)):(h.setVideoTrack(void 0),h.setOffscreenCanvas(void 0),n.offscreenCanvasElement=void 0));(e=n.modules.decoder)==null||e.unload(),n.modules.decoder=p,n.isHiddenWithBackgroundPlayback()&&n.modules.decoder.enableBackgroundTimers(),n.modules.decoder.setVideoRenderingEnabled(n.isVideoOnScreen()),n.modules.decoder.load(),n.setupOffscreenSubtitleRouting()})),m(this,`capturesCanvasOnWebKit`,e=>!!e&&this.browser.platform.isWebKit&&this.modules.canvasModule instanceof CS),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(MC)};e.onVideoTrackLost(e=>{this.logger.warn(`Worker video track lost, falling back to canvas capture`,{error:e}),n()});let r=e.videoTrack;r?t.setVideoTrack(r):n()}),m(this,`setupOffscreenSubtitleRouting`,()=>{if(this.offscreenSubtitleInterval!==void 0&&(clearInterval(this.offscreenSubtitleInterval),this.offscreenSubtitleInterval=void 0),!this.offscreenCanvasElement||!this.modules.decoder||this.modules.canvasModule instanceof CS)return;let e=this.modules.decoder,t=this.modules.canvasModule;if(!t)return;let n=!1;this.offscreenSubtitleInterval=setInterval(()=>{var r,i,a,o;if(!t.textTracks.language){n&&(e.setSubtitleCues([],0,0,1,0),n=!1);return}n=!0;let s=t.textTracks.getActiveCues(this.currentTime/1e3).map(e=>({text:e.text})),c=((r=this.element)==null?void 0:r.clientWidth)||0,l=((i=this.element)==null?void 0:i.clientHeight)||0,u=((a=this.element)==null?void 0:a.style.getPropertyValue(`--vindral-subtitle-offset`))||((o=this.element)==null?void 0:o.style.getPropertyValue(`--vindral-control-bar-offset`)),d=parseInt(u||`0`,10)||0;e.setSubtitleCues(s,c,l,globalThis.devicePixelRatio||1,-d)},100)}),m(this,`unload`,P(function*(){var t,r,i;n.logger.debug(`Unloading modules...`),n.offscreenSubtitleInterval!==void 0&&(clearInterval(n.offscreenSubtitleInterval),n.offscreenSubtitleInterval=void 0),yield Promise.all(Object.values(n.modules).map(e=>e==null?void 0:e.unload())),(t=n.wakeLock)==null||t.unload(),n.pool=new re(e.MAX_POOL_SIZE),(r=(i=n.playbackSource).unload)==null||r.call(i),n.element.remove(),n.emitter.reset(),n.encryptedMediaExtensions.unload(),n.reset(),n.logger.debug(`Unloaded modules`)})),m(this,`userInput`,()=>{this.play()}),m(this,`pause`,()=>{if(this.options.get(`pauseSupportEnabled`)&&(this.isUserPaused=!0,this.playbackState!==`paused`&&this.playbackSource.pause(),this.hasCalledConnect)){let e=!this.modules.documentState.isVisible;this.suspend(e),e&&this.disconnectForInactivePage(`Background playback paused`)}}),m(this,`yieldToInterruption`,()=>{if(!this.browser.platform.isWebKit&&(this.logger.info(`Yielding playback after an interruption`),this.options.get(`pauseSupportEnabled`)?this.pause():this.muted=!0,!this.modules.documentState.isVisible)){var e;(e=this.modules.mediaSession)==null||e.stop()}}),m(this,`fromNativeControls`,e=>{if(this.options.get(`pauseSupportEnabled`)){e===`pause`?this.pause():this.play();return}this.muted=e===`pause`,e===`play`&&this.play()}),m(this,`registerDebugInstance`,()=>{$l(this)}),m(this,`play`,()=>{var t;this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.requestAudioSessionOnce(),this.hasCalledConnect?this.unsuspend():this.playbackState!==`playing`&&(this._connect(),self.addEventListener(`__vindral_register_debug__`,this.registerDebugInstance),this.modules.timer.setInterval(()=>this.cleanupTextTracks(),e.REMOVE_CUE_THRESHOLD)),(t=this.wakeLock)==null||t.enable(),this.playbackState===`paused`&&this.playbackSource.isActivated&&(this.resetModules(),this.emitter.emit(`flush buffers`),this.cleanupTextTracks(2**53-1)),this.playbackSource.play(),this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()}),m(this,`getStatistics`,()=>{let e=Object.values(this.modules).reduce((e,t)=>t&&`getStatistics`in t?R(R({},e),t.getStatistics()):e,this.getRuntimeInfo()),t=Math.round(this.timeActive>0?(e.bytesReceived||0)*8/(this.timeActive/1e3):0),n=this.uptime/36e5,r=Math.max(0,(e.connectCount||0)-1),i=n>0?r/n:0,a=this.timeActive/6e4,o=Math.max(a,1),s=a>0?(e.seekAdjustmentCount||0)/o:0,c=a>0?(e.timeshiftAdjustmentCount||0)/o:0;return TC(R(R({},e),{},{averageBitRate:t,reconnectsPerHour:i,seekAdjustmentsPerMinute:s,timeshiftAdjustmentsPerMinute:c}))}),m(this,`resetModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`reset`in e&&e.reset()}),this.playbackSource instanceof eu&&this.modules.adaptivity.reset(jC),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{if(this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),!this.isBackgroundPlayEnabled(this.channelId)){var t;(t=this.modules.mediaSession)==null||t.stop()}this.connectionState!==`disconnected`&&this.modules.connection.disconnect(e)}),m(this,`scheduleInactivityDisconnect`,()=>{this.clearInactivityDisconnect(),this.inactivityDisconnectInterval=this.modules.timer.setInterval(()=>{let e=this.modules.pictureInPicture.isPictureInPictureActive(),t=this.playbackState===`paused`||this.muted&&!e;this.connectionState===`connected`&&t&&(this.emitter.emit(`flush buffers`),this.modules.connection.disconnect(`Background playback inactive timeout`),this.suspend(!0),this.clearInactivityDisconnect())},e.BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT)}),m(this,`onVisiblePause`,()=>{if(!this.browser.platform.isIOS){this.disconnectForVisiblePause();return}this.clearVisiblePauseDisconnect(),this.visiblePauseTimeout=this.modules.timer.setTimeout(()=>{this.visiblePauseTimeout=void 0,this.disconnectForVisiblePause()},e.VISIBLE_PAUSE_DISCONNECT_DELAY)}),m(this,`disconnectForVisiblePause`,()=>{this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect()}),m(this,`clearVisiblePauseDisconnect`,()=>{this.visiblePauseTimeout!==void 0&&(this.modules.timer.clearTimeout(this.visiblePauseTimeout),this.visiblePauseTimeout=void 0)}),m(this,`clearInactivityDisconnect`,()=>{this.inactivityDisconnectInterval!==void 0&&(this.modules.timer.clearInterval(this.inactivityDisconnectInterval),this.inactivityDisconnectInterval=void 0)}),m(this,`isHiddenWithBackgroundPlayback`,()=>!this.modules.documentState.isVisible&&this.shouldAllowBackgroundPlayback(this.channelId)),m(this,`isVideoOnScreen`,(e=this.modules.documentState.isVisible)=>e||this.modules.pictureInPicture.isPictureInPictureActive()),m(this,`isHiddenWithBackgroundPlayDisabled`,()=>!this.modules.documentState.isVisible&&!this.isBackgroundPlayEnabled(this.channelId)),m(this,`resumeModules`,()=>{Object.values(this.modules).forEach(e=>{e&&`unsuspend`in e&&e.unsuspend()})}),m(this,`getRuntimeInfo`,()=>{let e=this.modules.canvasModule instanceof CS?!0:void 0;return R({uptime:this.uptime,version:`4.7.0`,clientId:this.clientId,sessionId:this.sessionId,channelId:this.channelId,channelGroupId:this.options.get(`channelGroupId`),ip:this.clientIp,url:this.options.get(`url`),timeToFirstFrame:this.timeToFirstFrame(),streamToMediaElementEnabled:e,iosMediaElementEnabled:e,mediaElementPaused:this.element&&`paused`in this.element?this.element.paused:void 0},this.userAgentInformation.getUserAgentInformation())}),m(this,`getPlaybackBufferState`,(e,t)=>{let n=t==null?void 0:t.getBufferState(e.currentTime);if(!n)return e;let r=e.playbackState===`buffering`||n.playbackState===`buffering`?`buffering`:e.playbackState===`paused`?`paused`:`playing`;return R(R({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{var t;if(this.logger.info(`media element state`,{state:e}),this.isMediaElementPaused=e===`paused`,(t=this.modules.mediaSession)==null||t.refresh(),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&this.onVisiblePause();else{if(this.clearVisiblePauseDisconnect(),this.isUserPaused=!1,this.isHiddenWithBackgroundPlayDisabled())return;this.unsuspend(),this.modules.connection.getState()===`disconnected`&&this.modules.connection.unsuspend()}}),m(this,`onBufferEvent`,e=>{this.emit(`buffer state event`,e);let t=!this.playbackSource.isActivated||this.playbackSource.isPaused;if(e===`filled`&&t){var n,r,i,a;let e=Math.max(this.currentTime,(n=(r=this.videoBufferedRanges[0])==null?void 0:r.start)==null?0:n,(i=(a=this.audioBufferedRanges[0])==null?void 0:a.start)==null?0:i);this.logger.info(`Buffer filled - starting playback`,{currentTime:e}),this.playbackSource.currentTime=e,this.modules.sync.activateSyncAdjustments(),this.playbackSource.isActivated=!0}else e===`drained`&&this.playbackSource.isPaused&&(this.playbackSource.isActivated=!1,this.modules.sync.deactivateSyncAdjustments())}),m(this,`timeToFirstFrame`,()=>{let e=this.modules.playback.getFirstFrameTime(),t=this.modules.connection.firstConnectStartTime;if(t!==void 0&&e!==void 0)return Math.round(e-t)}),m(this,`hiddenPauseIsStop`,()=>{var e;if(this.browser.platform.isWebKit||!this.browser.isMobile)return!1;let t=(e=this.modules)==null?void 0:e.decoder;return t?t.audioWebCodecsInUse:this.isWebCodecsAudioAvailable(this.channelId)}),this.options=new pC(R(R({},Hr),OC(t))),t.telemetryEnabled===void 0&&[`localhost`,`127.0.0.1`].includes(location.hostname)&&this.options.set(`telemetryEnabled`,!1);let a={channelId:this.options.get(`channelId`),audio:{language:this.options.get(`language`),bitRate:this.options.get(`maxAudioBitRate`)},video:{bitRate:this.options.get(`maxVideoBitRate`),width:this.options.get(`maxSize`).width,height:this.options.get(`maxSize`).height}},o=bn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new AC(o),t.iosMediaElementEnabled!==void 0&&this.logger.warn(`Option iosMediaElementEnabled is deprecated and will be removed in a future release. Use streamToMediaElementEnabled instead.`);let s=(r=t.streamToMediaElementEnabled)==null?t.iosMediaElementEnabled:r;s!==void 0&&(this.options.set(`streamToMediaElementEnabled`,s),this.options.set(`iosMediaElementEnabled`,s)),t.iosBackgroundPlayEnabled!==void 0&&this.logger.warn(`Option iosBackgroundPlayEnabled is deprecated and will be removed in a future release. Use backgroundPlayEnabled instead.`);let c=(i=t.backgroundPlayEnabled)==null?t.iosBackgroundPlayEnabled:i;c!==void 0&&(this.options.set(`backgroundPlayEnabled`,c),this.options.set(`iosBackgroundPlayEnabled`,c));let l=t.mseEnabled!==void 0,u=t.decoders!==void 0;l&&this.logger.warn(`Option mseEnabled is deprecated and will be removed in a future release. Use decoders instead (e.g. decoders: ["wasm"]).`),l&&!u&&t.mseEnabled===!1&&this.options.set(`decoders`,[`wasm`]);let d=IS.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=this.options.get(`mediaSessionEnabled`)?xS.create(this.emitter,this.logger.createContext(`MediaSessionModule`),{metadata:this.options.get(`mediaSessionMetadata`),decoy:this.willUseMediaSource()||this.usesSplitCanvasAudio()?void 0:_u.create(this.logger.createContext(`AudioFocusDecoy`),this.yieldToInterruption),isMuted:()=>this.playbackSource.userMuted,isHidden:()=>!this.modules.documentState.isVisible,isSinkPaused:()=>this.isMediaElementPaused,releaseOnHiddenPause:this.hiddenPauseIsStop,isSuppressed:this.isHiddenWithBackgroundPlayDisabled,holdDecoyWhilePaused:this.holdsDecoyWhilePaused(),keepDecoyWhenMuted:this.isWebKitCanvasPath(),pauseMeansMute:!this.options.get(`pauseSupportEnabled`)}):void 0,p=sr.create(),h=ex.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),g=JS.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),_=WS.create(this.emitter,g),v=HS.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),_),y=RS.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new Xa(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let b=qx.create(this.emitter),ee=this.options.get(`poster`),x=ee===!0?this.getThumbnailUrl():ee||void 0,S,te,ne;if(this.willUseMediaSource()){let e=new eu({type:this.options.get(`media`)===`audio`?`audio`:`video`,autoplay:!1,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),logger:this.logger.createContext(`MediaElement`),poster:x});e.on(`buffer state`,e=>this.onMediaElementBufferState(e,S)),e.on(`needs user input`,e=>this.emitter.emit(`needs user input`,e)),e.on(`volume state`,e=>this.emitter.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,Xa.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=OS.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(te=uC.create(this.logger.createContext(`UnpauseModule`),[e],b)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.streamsToMediaElement()){let e=CS.create(this.emitter,this.logger.createContext(`ModernCanvasModule`),this.pool,this,{type:this.options.get(`media`)===`audio`?`audio`:`video`,muted:this.options.get(`muted`)||this.options.get(`media`)===`video`,volume:this.options.get(`volume`),poster:x,offscreenCanvas:this.offscreenCanvasElement,bufferTime:this.options.get(`minBufferTime`),backgroundPlaybackEnabled:this.isBackgroundPlayEnabled(this.channelId),splitAudio:this.usesSplitCanvasAudio()});this.element=e.element().element,this.playbackSource=e,ne=e;let t=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!t&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(te=uC.create(this.logger.createContext(`UnpauseModule`),e.elements(),b))}else{let e;e=gS.create(this.emitter,this.logger.createContext(`LegacyCanvasModule`),this.pool,this,this.options.get(`muted`)||this.options.get(`media`)===`video`,this.options.get(`volume`),()=>{this.setElement(e.element())},this.options.get(`minBufferTime`)),this.element=e.element(),this.playbackSource=e,ne=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new Vl)}this.emitter.on(`channel reset`,this.resetModules),this.emitter.on(`no data timeout`,this.resetModules),this.emitter.on(`media element state`,e=>this.onMediaElementState(e)),this.emitter.on(`volume state`,e=>this.emit(`volume state`,e)),this.options.get(`pauseSupportEnabled`)||this.emitter.on(`exit picture in picture`,()=>p.setTimeout(()=>this.play(),0)),this.emitter.on(`constraint cap changed`,e=>{this.logger.info(`new cap set`,{cap:e}),this.alignSizeAndBitRate(this.targetSubscription)}),this.pictureInPicture={enter:()=>d.requestPictureInPicture(),exit:()=>d.exitPictureInPicture(),isActive:()=>d.isPictureInPictureActive(),isSupported:()=>d.isPictureInPictureSupported()},this.emitter.on(`error`,e=>{if(e.type()===`external`&&this.emit(`error`,e),e.isFatal())return()=>void this.unload()});let ie=this.willUseMediaSource(),C=ie?!this.browser.platform.isWebKit:!0,ae={getTargetBufferTime:()=>y.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},w=iC.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,ae,C,ie),oe=tS.create(this.logger.createContext(`JitterModule`)),T=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),se=new URL(`/telemetry`,T).toString();this.modules={telemetry:cC.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:se,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:xu.create(this.emitter,this.logger.createContext(`BufferTimeModule`),v,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:Qx.create(this.emitter),adaptivity:du.create(this.emitter,this.logger.createContext(`AdaptivityModule`),v,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:ax.create(this.emitter,this.element,_,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:Xx.create(this.emitter,this.logger.createContext(`EventModule`),w),sync:w,jitter:oe,documentState:b,connection:h,playback:y,pictureInPicture:d,mediaSession:f,timer:p,subscription:g,renditions:_,qualityOfService:v,mseModule:S,unpause:te,canvasModule:ne},this.modules.adaptivity.isEnabled=this.options.get(`abrEnabled`),this.emitter.on(`enter picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(!0)}),this.emitter.on(`exit picture in picture`,()=>{var e;return(e=this.modules.decoder)==null?void 0:e.setVideoRenderingEnabled(this.modules.documentState.isVisible)}),this.emitter.on(`media session: request play`,()=>this.fromNativeControls(`play`)),this.emitter.on(`media session: request pause`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`media session: request stop`,()=>this.fromNativeControls(`pause`)),this.emitter.on(`native control`,e=>{this.options.get(`pauseSupportEnabled`)&&this.fromNativeControls(e)}),this.emitter.on(`page active`,e=>{var t,n;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend(),this.usesSplitCanvasAudio()&&this.playbackSource.isPlayingAsRequested===!1&&(this.logger.debug(`Playing again after show`),this.play()));else if(this.clearVisiblePauseDisconnect(),this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var r,i,a;(r=this.modules.decoder)==null||r.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(i=this.modules.decoder)==null||i.unsuspend(),(a=this.modules.canvasModule)==null||a.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`);(n=this.modules.mediaSession)==null||n.refresh()}),this.emitter.on(`pageshow`,e=>{if(!e.persisted||this.isUserPaused)return;let t=this.shouldAllowBackgroundPlayback(this.channelId),n=document.visibilityState===`visible`;if(!n&&!t){this.logger.debug(`Ignoring pageshow while hidden`);return}if(this.logger.debug(`Resuming after pageshow`),!n){var r;(r=this.modules.decoder)==null||r.enableBackgroundTimers()}this.resumeModules(),this.isSuspended=!1,this.isHiddenWithBackgroundPlayback()&&this.scheduleInactivityDisconnect()});let ce;this.emitter.on(`context switch complete`,()=>{ce||(ce=window.setTimeout(()=>{window.clearTimeout(ce),ce=void 0,this.emit(`context switch`,`completed`),this.emitLanguagesIfChanged()},this.targetBufferTime))}),this.emitter.on(`context switch started`,()=>this.emit(`context switch`,`started`)),this.emitter.on(`needs user input`,e=>this.emit(`needs user input`,e)),this.emitter.on(`event`,e=>{switch(e.type){case`metadata`:this.emit(`metadata`,e);break;case`channel switch`:this.emit(`channel switch`,{channelId:e.channelId});break;case`language switch`:this.emit(`language switch`,{language:e.language});break}}),this.emitter.on(`buffer state event`,this.onBufferEvent),this.emitter.on(`playback state`,e=>this.emit(`playback state`,e)),this.emitter.on(`rendition level changed`,({to:e})=>{e&&this.emit(`rendition level`,e)}),this.emitter.on(`connection state`,e=>{this.emit(`connection state`,e)}),this.emitter.on(`recovered from media error`,()=>{this.modules.adaptivity.reset(this.targetBufferTime*2),!this.isUserPaused&&this.visiblePauseTimeout===void 0&&this.playbackSource.play()}),this.emitter.once(`connect info`,e=>{var t,n;let r=((t=(n=e.telemetry)==null?void 0:n.probability)==null?1:t)>=Math.random();if(e.telemetry){var i;(i=this.modules.telemetry)==null||i.unload(),this.modules.telemetry=cC.create(this.logger.createContext(`TelemetryModule`),this.emitter,R(R({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{let t=this.modules.renditions.getRenditionLevels(),n=this.modules.renditions.getRenditionLevel(),r=t.findIndex(e=>e===n),i=t.length-1,a=r;switch(e){case`upgrade`:{var o,s,c,l,u;let e=Math.min(r+1,i),n=t[e],d=(o=this.modules.connection.estimatedBandwidth)==null?zr():o,f=((s=n==null||(c=n.audio)==null?void 0:c.bitRate)==null?0:s)+((l=n==null||(u=n.video)==null?void 0:u.bitRate)==null?0:l),p=d*2>f;n&&p&&this.modules.adaptivity.isQoSOk(n)&&(a=e)}break;case`downgrade`:a=Math.max(r-1,0);break;case`double downgrade`:a=Math.max(r-2,0);break;case`reconnect`:if(r===0||this.modules.qualityOfService.timeSpentBufferingLast(6e3)>5e3){if(this.modules.connection.lastConnectionTime===void 0||performance.now()-this.modules.connection.lastConnectionTime<this.modules.qualityOfService.fatalQosGraceTime()||this.modules.connection.getState()!==`connected`)return;this.modules.qualityOfService.incrementFatalQosCount(),this.logger.info(`Reconnecting due to poor qos`),this.modules.connection.reconnect(`Fatal QOS`),this.emitter.emit(`adapted level`);return}else a=0}if(a===r)return;let d=t[a];this.alignSizeAndBitRate(R(R({},this.targetSubscription),{},{video:R(R({},this.targetSubscription.video),d==null?void 0:d.video),audio:R(R({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(PC,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(NC,this);if(A(NC,this,n),t){if(t.cues)for(let e of t.cues)e.startTime-=r,e.endTime-=r;for(let r of e.cues){let e=new VTTCue(r.startTime-n,r.endTime-n,r.text);t.addCue(e)}}}),this.emitter.on(`native text track selected`,e=>{this.textTrack=e}),this.emitter.on(`received signal`,e=>{let t=e,n=this.modules.subscription.getCurrentSubscription();switch(this.logger.debug(`received`,R({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(FC,this,this.filterRenditions(t.renditions).then(e=>{this.emitter.emit(`renditions`,{renditions:e,channelId:this.currentSubscription.channelId}),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.emitLanguagesIfChanged()}).finally(()=>{A(FC,this,void 0)}));break;case`subscription changed`:var r;try{kC(t.subscription)}catch(e){this.emitter.emit(`error`,new W(`Subscription failed validation`,{source:e instanceof Error?e:void 0,isFatal:!1,code:`subscription_failed_validation`}))}this.emitter.emit(`subscription changed`,{reset:t.reset,to:t.subscription,from:this.modules.subscription.getCurrentSubscription()}),t.reset&&n.channelId!==t.subscription.channelId&&(this.emit(`error`,Ji(t.subscription.channelId)),this.emit(`channel switch failed`,{channelId:n.channelId})),this.modules.sync.allowTimeshiftOnAudio=!((r=t.subscription.video)!=null&&r.codec),this.modules.adaptivity.reset();break;case`timing info`:this.modules.sync.updateChannelSyncInfo(t.timingInfo.channelId,t.timingInfo),this.emit(`server wallclock time`,t.timingInfo.wallclockTime);break}}),this.emitter.on(`channel switch timeout`,e=>{this.emit(`error`,Ji(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=jl(e);if(!t){this.logger.warn(`Received unwanted message`,R({},n));return}D(R(R({},n),{},{channelId:t.channelId}))}),this.emitter.on(`received moq data`,e=>{let t=e.payload.mediaType(),n=e.channelId,r=e.renditionId,i=this.modules.sync.processFragment(n,e.payload,r),a=i.unbackedSamplesCount();if(a>0&&this.unbackedSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Fragment declares more samples than its payload holds`,{unbackedSamples:a,samplesCount:i.samplesCount(),channelId:n,renditionId:r}),t!==`text`&&this.modules.jitter.recordSample({type:t,renditionId:r,timestamp:i.baseMediaDecodeTime(),timescale:i.timescale()}),e.switchInfo.channelId&&(e.switchInfo.drmTransition&&this.emitter.emit(`error`,Yi(`Switching between DRM and non-DRM channels is not supported`,!0)),this.encryptedMediaExtensions.onChannelSwitch(),this.emit(`rendition levels`,this.modules.renditions.getRenditionLevels()),this.modules.event.addEvent({type:`channel switch`,channelId:e.switchInfo.channelId,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3})),e.switchInfo.language&&this.modules.event.addEvent({type:`language switch`,language:e.switchInfo.language,timestamp:i.baseMediaDecodeTime()/i.timescale()*1e3}),this.modules.incomingData.add(t,e.payload.rawBytes().byteLength),(t===`video`||t===`audio`)&&this.hasListeners(`cmaf fragment`)&&this.emit(`cmaf fragment`,{mediaType:t,initSegment:i.header().rawBytes().slice(),fragment:i.rawBytes().slice(),isKeyframe:i.startsWithKeyframe()}),i.fragment().emsgs.forEach(e=>{if(!e.presentationTime)return;let t=Oo(e.data);t&&this.modules.event.addEvent({id:e.id,timestamp:e.presentationTime/e.timescale*1e3-this.modules.sync.getTimeshiftOffset(),content:t.txx.value,type:`metadata`})}),this.modules.decoder){var o,s;let a=(o=i.header().init().moov.traks[0])==null?void 0:o.mdia.minf.stbl.stsd,m=(s=a==null?void 0:a.codec)==null?`h264`:s,h;if(m===`h264`){var c;h=a==null||(c=a.avc1)==null?void 0:c.avcC.bytes}else if(m===`h265`){var l,u,d;let e=(l=a==null||(u=a.hvc1)==null?void 0:u.data())==null?a==null||(d=a.hev1)==null?void 0:d.data():l;e&&(h=Eo(e))}else if(m===`av1`&&a!=null&&a.av01)h=qc(a.av01.data());else if(m===`aac`){var f;h=a==null||(f=a.mp4a)==null||(f=f.esds)==null?void 0:f.decoderConfig}else if(m===`opus`){var p;h=xl(a==null||(p=a.opus)==null?void 0:p.dops)}if(h){let i=h.buffer.slice(h.byteOffset,h.byteOffset+h.byteLength);if(t===`text`)throw Error(`Subtitles are not supported`);this.emitter.emit(`init segment`,{initSegment:{channelId:n,renditionId:r,data:i,timescale:1e3,type:t,codec:m,codecString:e.codecString},mimeType:t})}else m&&this.logger.warn(`Failed to extract init data for codec`,{codec:m,channelId:n,renditionId:r});let g=0;for(let e=0;e<i.samplesCount();e++){let t=i.sample(e);if(!t){g++;continue}this.emitter.emit(`coded sample`,R(R({},t),{},{renditionId:r,channelId:n,data:t.data.buffer.slice(t.data.byteOffset,t.data.byteOffset+t.data.byteLength)}))}g>0&&this.unextractableSamplesWarned.shouldNotify(n,r)&&this.logger.warn(`Dropped samples the demuxer could not extract`,{droppedSamples:g,samplesCount:i.samplesCount(),channelId:n,renditionId:r})}else this.emitter.emit(`fragment`,{mimeType:e.mimeType,codec:e.codec,fragment:i,channelId:n,renditionId:r})});let le=this.options.get(`container`);le&&this.attach(le),this.logger.info(`Created Vindral instance`,{options:this.options});let D=function(){var e=P(function*(e){let t=e.channelId;M(FC,n)&&(yield M(FC,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!Ol(e.flags)){if(kl(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=vr(t);if(e&&e.language!==void 0){let t=new ql,i=[];try{i=t.parse(e.content||``)}catch(e){n.logger.warn(`failed to parse WebVTT segment, dropping it`,e)}let a=r/1e3,o=M(PC,n).find(t=>t.language===e.language),s=a-M(NC,n);if(A(NC,n,a),o){if(o.cues)for(let e of o.cues)e.startTime-=s,e.endTime-=s;for(let e of i){let t=new VTTCue(e.startTime-a,e.endTime-a,e.text);o.addCue(t)}}}}else n.modules.event.addEvent({timestamp:e.timestamp/e.timescale*1e3-n.modules.sync.getTimeshiftOffset(),content:t,type:`metadata`})}else if(r!=null&&r.codec){let i=Mr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),Dl(e.flags)){let a=R(R({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Ir(r)?{width:r.width,height:r.height}:{}),o=ml(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=Rr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=bC(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=hC(n.modules.sync.processSample(t)),n.sampleProcessingSesssions.set(i,a);else{let e=n.willUseMediaSource()&&n.isSwitchingRenditionLevel&&t.type===`video`,r=a(n.modules.sync.processSample(t),e),i=t;r.forEach(e=>{n.modules.event.extractEvent(e,i),n.emitter.emit(`coded sample`,e),i=e})}}}}});return function(t){return e.apply(this,arguments)}}();this.options.get(`maxVideoBitRate`)!==2**53-1&&(this.maxVideoBitRate=this.options.get(`maxVideoBitRate`)),this.options.get(`maxAudioBitRate`)!==2**53-1&&(this.maxAudioBitRate=this.options.get(`maxAudioBitRate`)),Qt(this.options.get(`maxSize`),Br())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&g.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){let t=this.playbackSource.muted;e===this.playbackSource.userMuted&&(e||!t)||(this.playbackSource.muted=e,!e&&t&&!this.playbackSource.isPaused&&this.playbackSource.play())}get muted(){return this.playbackSource.muted}get media(){return this.options.get(`media`)}get videoBitRate(){return this.modules.incomingData.averageBitRate(`video`)}get audioBitRate(){return this.modules.incomingData.averageBitRate(`audio`)}get connectionState(){return this.modules.connection.getState()}get playbackState(){return this.modules.playback.getState()}get bufferFullness(){return this.modules.playback.getBufferFullness()}get sizeBasedResolutionCapEnabled(){return this.modules.constraintCap.sizeBasedResolutionCapEnabled}set sizeBasedResolutionCapEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e}get abrEnabled(){return this.modules.adaptivity.isEnabled}set abrEnabled(e){this.modules.constraintCap.sizeBasedResolutionCapEnabled=e?this.options.get(`sizeBasedResolutionCapEnabled`):!1,this.modules.adaptivity.isEnabled=e,this.alignSizeAndBitRate(this.targetSubscription)}get serverEdgeTime(){return this.modules.sync.getLiveEdgeTimeLatencyAdjusted(this.currentSubscription.channelId)}get serverWallclockTime(){return this.modules.sync.getWallclockTimeLatencyAdjusted(this.currentSubscription.channelId)}get currentTime(){return this.modules.sync.serverCurrentTime}get channelCurrentTime(){return this.modules.sync.channelCurrentTime}get targetBufferTime(){return this.modules.playback.getTargetBufferTime()}set targetBufferTime(e){this.modules.playback.getTargetBufferTime()!==e&&(this.modules.playback.setTargetBufferTime(e),this.playbackSource.currentTime=this.modules.sync.serverCurrentTime,this.applyBurstEnabled(this.channelId))}updateBufferTimeConfig(e){this.modules.bufferTime.updateConfig(e)}get playbackLatency(){var e;if(this.playbackSource.currentTime!==0)return this.targetBufferTime+((e=this.modules.sync.drift)==null?0:e)+this.modules.connection.rtt/2}get playbackWallclockTime(){if(!(!this.serverWallclockTime||!this.playbackLatency))return this.serverWallclockTime-this.playbackLatency}get channels(){return this._channels}get languages(){return this.modules.renditions.getLanguages()}get language(){return this.modules.subscription.getTargetSubscription().audio.language}set language(e){if(e===this.language)return;let t=this.languages;if(e!==void 0&&t.length>0&&!t.includes(e)){this.logger.warn(`Language "${e}" is not available. Available languages: ${t.join(`, `)}`);return}this.modules.subscription.setLanguage(e),this.alignSizeAndBitRate(this.targetSubscription)}set textTrack(e){e!==this.textTrack&&(M(PC,this).forEach(t=>{if(t.label===e)t.mode=`showing`;else{if(t.mode===`showing`&&t.cues)for(let e of[...t.cues])t.removeCue(e);t.mode=`hidden`}}),this.emitter.emit(`text track`,e))}get textTracks(){return M(PC,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(PC,this).find(e=>e.mode===`showing`))==null?void 0:e.label}get channelId(){var e,t;return(e=(t=this.modules)==null?void 0:t.subscription.getTargetSubscription().channelId)==null?this.options.get(`channelId`):e}set channelId(e){if(e===this.channelId)return;this.applyBurstEnabled(e),this.modules.subscription.setChannelId(e);let t=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`),n=this.modules.renditions.getAudioRenditions(e),r=this.modules.renditions.getVideoRenditions(e),i=this.targetSubscription.audio.language,a=n==null?void 0:n.some(e=>e.language===i),o=t.find(e=>(r==null?void 0:r.find(t=>t.codec===e))!==void 0);o&&this.modules.subscription.setVideoCodec(o),this.logger.debug(`Channel switch - started`,{audioRenditions:n,targetSubscriptionLanguage:i,targetHasCurrentLanguage:a}),this.alignSizeAndBitRate(this.targetSubscription)}get maxSize(){var e,t;let{width:n,height:r}=(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video)==null?Br():e;return{width:n,height:r}}set maxSize(e){this.modules.constraintCap.setUserSpecifiedCap({video:{width:e.width,height:e.height}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxVideoBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.video.bitRate)==null?zr():e}set maxVideoBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({video:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get maxAudioBitRate(){var e,t;return(e=(t=this.modules.constraintCap.getCurrentConstraintCap())==null?void 0:t.audio.bitRate)==null?zr():e}set maxAudioBitRate(e){this.modules.constraintCap.setUserSpecifiedCap({audio:{bitRate:e}}),this.alignSizeAndBitRate(this.targetSubscription)}get renditionLevels(){return this.modules.renditions.getRenditionLevels()}get currentRenditionLevel(){return this.modules.renditions.getRenditionLevel()}get targetRenditionLevel(){return this.modules.renditions.getRenditionLevel(this.modules.subscription.getTargetSubscription())}get isSwitchingRenditionLevel(){return this.modules.subscription.isSwitchingSubscription()}get videoBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`video`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`video`):t)==null?[]:e}get audioBufferedRanges(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getBuffer(`audio`))==null?(r=this.modules.decoder)==null?void 0:r.getBuffer(`audio`):t)==null?[]:e}get videoKeyframeTimestamps(){var e,t,n,r;return(e=(t=(n=this.modules.mseModule)==null?void 0:n.getVideoKeyframeTimestamps())==null?(r=this.modules.decoder)==null?void 0:r.getVideoKeyframeTimestamps():t)==null?[]:e}getApiClient(){return this.modules.connection.apiClient}get lastBufferEvent(){return this.modules.playback.getLastBufferStateEvent()}get activeRatios(){return this.modules.qualityOfService.activeRatios()}get bufferingRatios(){return this.modules.qualityOfService.bufferingRatios()}get timeSpentBuffering(){return Math.round(this.modules.qualityOfService.timeSpentBuffering())}get timeActive(){return Math.round(this.modules.qualityOfService.timeActive())}get mediaElement(){return this.element}get audioNode(){var e;return(e=this.modules)!=null&&e.canvasModule?this.modules.canvasModule.audioNode:void 0}get drmStatistics(){var e;return(e=this.encryptedMediaExtensions)==null?void 0:e.getStatistics()}get uptime(){return Math.round(performance.now()-this.createdAt)}suspend(e=!1){this.isSuspended&&!e||(Object.values(this.modules).forEach(e=>{e&&`suspend`in e&&e.suspend()}),this.isSuspended=!0)}unsuspend(){if(this.isSuspended){if(this.isHiddenWithBackgroundPlayDisabled()){this.logger.debug(`Deferring resume until the page is visible`);return}this.resumeModules(),this.isSuspended=!1}}alignSizeAndBitRate(e){let t=this.modules.constraintCap.constrainSubscription(R(R({},e),{},{video:R({},e.video),audio:R({},e.audio)})),n=this.modules.constraintCap.getUserSpecifiedCap();!this.abrEnabled&&n&&(t.audio.bitRate=n.audio.bitRate,t.video.bitRate=n.video.bitRate,t.video.width=n.video.width,t.video.height=n.video.height);let r=this.modules.renditions.getRenditionLevel(t);if(r){if(r.video&&(this.modules.subscription.setVideoBitRate(r.video.bitRate),this.modules.subscription.setSize(r.video)),r.audio)this.modules.subscription.setAudioBitRate(r.audio.bitRate),this.modules.subscription.setLanguage(r.audio.language);else if(t.audio.language){let e=this.modules.renditions.getAudioRenditions(t.channelId);!this.abrEnabled&&n&&(e=e==null?void 0:e.filter(e=>e.bitRate<n.audio.bitRate));let r=t.audio.language,i=e==null?void 0:e.some(e=>e.language===r),a=e==null?void 0:e.find(e=>e.language),o=(e==null?void 0:e.length)&&e[0]||void 0;i||(a?(this.logger.debug(`Randomizing language since target did not have current language`),this.modules.subscription.setAudioBitRate(a.bitRate),this.modules.subscription.setLanguage(a.language)):(this.logger.debug(`Randomizing audio rendition since target did not have current language`),o!=null&&o.bitRate&&this.modules.subscription.setAudioBitRate(o.bitRate),this.modules.subscription.setLanguage(o==null?void 0:o.language)))}}}get currentSubscription(){return this.modules.subscription.getCurrentSubscription()}get targetSubscription(){return this.modules.subscription.getTargetSubscription()}resolvedDecoder(e){return yC(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}usesSplitCanvasAudio(){return!this.willUseMediaSource()&&this.options.get(`streamToMediaElementEnabled`)&&Ft(this.browser)&&this.options.get(`media`)!==`audio`&&this.options.get(`media`)!==`video`&&this.browser.platform.isIOS}isWebKitCanvasPath(){return!this.willUseMediaSource()&&this.browser.platform.isWebKit}holdsDecoyWhilePaused(){return!(!this.isWebKitCanvasPath()||this.browser.platform.isIOS&&this.streamsToMediaElement()&&lt(this.browser,26))}streamsToMediaElement(){return this.options.get(`streamToMediaElementEnabled`)===!0&&Ft(this.browser)}requestAudioSessionOnce(){this.hasRequestedAudioSession||!this.options.get(`mediaSessionEnabled`)||!this.isWebKitCanvasPath()||!this.isBackgroundPlayEnabled(this.channelId)||(this.hasRequestedAudioSession=!0,this.logger.info(`Requested playback audio session`,{playback:De()}))}willUseMediaSource(){return this.resolvedDecoder()===`mse`}shouldUseWebCodecs(e){return this.resolvedDecoder(e)===`webcodecs`}isWebCodecsVideoAvailable(e){return this.shouldUseWebCodecs(e)&&typeof VideoDecoder<`u`}isWebCodecsAudioAvailable(e){return this.shouldUseWebCodecs(e)&&typeof AudioDecoder<`u`}shouldUseOffscreenCanvas(e){let t=this.options.get(`offscreenCanvasEnabled`,e);return t===void 0?this.shouldUseWebCodecs(e):t}isBackgroundPlayEnabled(e){return this.options.get(`backgroundPlayEnabled`,e)}shouldAllowBackgroundPlayback(e){return this.hasCalledConnect&&this.isBackgroundPlayEnabled(e)&&!this.isUserPaused}};m(IC,`MAX_POOL_SIZE`,10),m(IC,`REMOVE_CUE_THRESHOLD`,1e3*10),m(IC,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15),m(IC,`VISIBLE_PAUSE_DISCONNECT_DELAY`,1e3);var LC={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},RC=`_withThumbnails_suenn_19`,zC={"channel-selection-item":`_channel-selection-item_suenn_1`,"channel-selection-item-selected":`_channel-selection-item-selected_suenn_8`,"channel-selection-item-image":`_channel-selection-item-image_suenn_13`,withThumbnails:RC,"hide-on-small":`_hide-on-small_suenn_27`},BC={"icon-button":`_icon-button_5fg7v_1`},VC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
1323
1323
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5.586 15H4a1 1 0 01-1-1v-4a1 1 0 011-1h1.586l4.707-4.707C10.923 3.663 12 4.109 12 5v14c0 .891-1.077 1.337-1.707.707L5.586 15z" clip-rule="evenodd" />
1324
1324
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2" />
1325
1325
  </g>`},HC={viewBox:`-160 -160 832 832`,content:`<path fill="white" d="M208,432H160a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,208,432Z"/><path fill="white" d="M352,432H304a16,16,0,0,1-16-16V96a16,16,0,0,1,16-16h48a16,16,0,0,1,16,16V416A16,16,0,0,1,352,432Z"/>`},UC={viewBox:`-6 -6 36 36`,content:`<path d="M7 17.259V6.74104C7 5.96925 7.83721 5.48837 8.50387 5.87726L18.2596 11.5681C18.5904 11.761 18.5904 12.2389 18.2596 12.4319L8.50387 18.1227C7.83721 18.5116 7 18.0308 7 17.259Z" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>`},WC={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.7.0-1-gb0d0369b",
2
+ "version": "4.7.0",
3
3
  "name": "@vindral/web-sdk",
4
4
  "main": "./legacy.umd.js",
5
5
  "module": "./legacy.es.js",
package/player.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as e } from "./XEQIIc9P.js";
2
- import "./CXHN3nqn.js";
3
- import { t } from "./Bp523I7T.js";
1
+ import { t as e } from "./Bo-fEHbb.js";
2
+ import "./5u5UZABw.js";
3
+ import { t } from "./DYgG1Gmb.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
@@ -1,5 +1,5 @@
1
- import "./CXHN3nqn.js";
2
- import { t as e } from "./Bp523I7T.js";
1
+ import "./5u5UZABw.js";
2
+ import { t as e } from "./DYgG1Gmb.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion