@vindral/web-sdk 4.5.1-21-g6ea9dc89e → 4.5.1-22-g5030974ef

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.
@@ -1,5 +1,5 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { A as n, C as r, D as i, E as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, b as p, d as m, f as h, g, h as _, j as ee, k as v, m as te, p as ne, v as re, w as ie, x as y, y as ae } from "./CiWlpwR0.js";
2
+ import { A as n, C as r, D as i, E as a, M as o, N as s, O as c, P as l, S as u, T as d, _ as f, b as p, d as m, f as h, g, h as _, j as ee, k as v, m as te, p as ne, v as re, w as ie, x as y, y as ae } from "./meSswGs4.js";
3
3
  import { t as b } from "./DrWNJwZx.js";
4
4
  import { i as x, n as S, r as C, t as w } from "./DSw1XhvD.js";
5
5
  import { a as oe, c as se, i as ce, l as le, n as ue, o as de, r as fe, s as pe, t as me } from "./BOdyvABa.js";
@@ -8741,7 +8741,7 @@ var L_ = (e, t) => `${e}\u0000${t == null ? "" : t}`, R_ = (e, t, n, r) => e ===
8741
8741
  }
8742
8742
  }
8743
8743
  if (!n) if (e.codec === "opus") {
8744
- let { OpusDecoderContext: t } = yield import("./DRMUL9n5.js");
8744
+ let { OpusDecoderContext: t } = yield import("./DhmYSwuX.js");
8745
8745
  n = yield t.create(e.sampleRate || 48e3, e.channels || 2);
8746
8746
  } else {
8747
8747
  let t = l ? i ? `WebCodecs audio decoder initialization failed: ${i.message}` : a ? "WebCodecs audio decoder could not be initialized." : "WebCodecs AudioDecoder API is not supported in this environment." : "WebCodecs audio decoding is disabled.";
@@ -11500,7 +11500,7 @@ var fy = class {
11500
11500
  let e = this.modules.canvasModule instanceof Sv ? !0 : void 0;
11501
11501
  return D({
11502
11502
  uptime: this.uptime,
11503
- version: "4.5.1-21-g6ea9dc89e",
11503
+ version: "4.5.1-22-g5030974ef",
11504
11504
  clientId: this.clientId,
11505
11505
  sessionId: this.sessionId,
11506
11506
  channelId: this.channelId,
@@ -1,5 +1,5 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { P as n, b as r } from "./CiWlpwR0.js";
2
+ import { P as n, b as r } from "./meSswGs4.js";
3
3
  import { t as i } from "./DrWNJwZx.js";
4
4
  import { t as a } from "./BKeRxR4O.js";
5
5
  //#region ../../libs/wasm-decoders/src/opus/wasm/opus.js
@@ -1,6 +1,6 @@
1
1
  import { n as e, t } from "./BsfwXDui.js";
2
- import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as ee, n as d, o as te, p as ne, r as re, s as ie, t as ae, u as oe, v as se } from "./v9wYC9jr.js";
3
- import { P as ce } from "./CiWlpwR0.js";
2
+ import { _ as n, a as r, c as i, d as a, f as o, g as s, h as c, i as l, l as u, m as ee, n as d, o as te, p as ne, r as re, s as ie, t as ae, u as oe, v as se } from "./D-32Y9A0.js";
3
+ import { P as ce } from "./meSswGs4.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 "./BOdyvABa.js";
6
6
  import { n as fe, r as pe } from "./B1PhBNUa.js";
package/core.js CHANGED
@@ -1,3 +1,3 @@
1
- import { t as e } from "./v9wYC9jr.js";
2
- import { a as t, c as n, d as r, i, l as a, n as o, o as s, r as c, s as l, u } from "./CiWlpwR0.js";
1
+ import { t as e } from "./D-32Y9A0.js";
2
+ import { a as t, c as n, d as r, i, l as a, n as o, o as s, r as c, s as l, u } from "./meSswGs4.js";
3
3
  export { o as AUTHENTICATION_EXPIRED_CODE, c as AUTHENTICATION_FAILED_CODE, i as CHANNEL_NOT_FOUND_CODE, t as CHANNEL_NOT_LIVE_CODE, s as CONNECTION_FAILED_AFTER_RETRIES_CODE, l as CONNECTION_FAILED_CODE, n as DISCONNECTED_BY_EDGE, a as INACTIVITY_CODE, u as NO_INCOMING_DATA, e as Vindral, r as VindralError };
package/legacy.es.js CHANGED
@@ -1769,7 +1769,7 @@ var Wr = {
1769
1769
  source: t,
1770
1770
  type: "internal"
1771
1771
  }, {
1772
- type: r,
1772
+ mediaType: r,
1773
1773
  consecutiveErrorsCount: n
1774
1774
  }), bi = (e, t) => new U(`No track context for ${e}${t ? `, rendition id ${t}` : ""}`, {
1775
1775
  isFatal: !1,
@@ -13081,7 +13081,7 @@ var AS = 1e4, jS = 1280 * 720, MS = /* @__PURE__ */ new WeakMap(), NS = /* @__PU
13081
13081
  let e = this.modules.canvasModule instanceof Sx ? !0 : void 0;
13082
13082
  return z({
13083
13083
  uptime: this.uptime,
13084
- version: "4.5.1-21-g6ea9dc89e",
13084
+ version: "4.5.1-22-g5030974ef",
13085
13085
  clientId: this.clientId,
13086
13086
  sessionId: this.sessionId,
13087
13087
  channelId: this.channelId,
package/legacy.umd.js CHANGED
@@ -69,7 +69,7 @@ void main() {
69
69
  texture_coordinate = position;
70
70
  gl_Position = model * vec4(position, 0.0, 1.0);
71
71
  }
72
- `,Jr,Yr,Xr,Zr,Qr,$r,ei,ti,ni,ri,ii,ai,oi,si,ci,li,ui,di,fi,pi,W,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii=n((()=>{h(),V(),Jr=`connection_failed`,Yr=`connection_failed_will_not_attempt_again`,Xr=`authentication_error`,Zr=`authentication_expired`,Qr=`channel_not_found`,$r=`channel_not_live`,ei=`no_incoming_data_error`,ti=`connection_inactivity`,ni=`missing_init_segment`,ri=`no_track_context`,ii=`invalid_track_context_state`,ai=`disconnected_by_edge`,oi=`decoder_error`,si=`audio_player_error`,ci=`unsupported_audio_codec`,li=`media_source_error`,ui=`webgl_context_lost_error`,di=`access_forbidden`,fi=`channel_switch_failed`,pi=`drm_error`,W=class extends Error{constructor(e,t,n={}){super(e),m(this,`props`,void 0),m(this,`extra`,{}),m(this,`code`,()=>this.props.code),m(this,`isFatal`,()=>this.props.isFatal),m(this,`source`,()=>this.props.source),m(this,`type`,()=>{var e;return(e=this.props.type)==null?`external`:e}),m(this,`toStringifiable`,()=>{var e;let t=this.source(),n=t instanceof Error?t.stack:this.stack;return B(B({},this.extra),{},{code:this.props.code,isFatal:this.props.isFatal,type:this.props.type,message:this.message,sourceMessage:(e=this.source())==null?void 0:e.message,stack:n})}),this.props=t,this.extra=n,Object.setPrototypeOf(this,new.target.prototype)}},mi=(e,t)=>new W(`MediaElement Error`,{isFatal:e,code:`media_element_error`,source:t},{mediaErrorCode:t.code}),hi=(e,t)=>new W(`Decoder Error`,{isFatal:e,code:oi,source:t,type:`internal`}),gi=(e,t,n)=>new W(`No decoder available for audio codec "${e}" in non-MSE playback. ${t}`,{isFatal:!0,code:ci,source:n,type:`external`},{codec:e,reason:t}),_i=(e,t)=>new W(`Audio Player Error`,{isFatal:e,code:si,source:t,type:`internal`}),vi=(e,t)=>new W(`No init segment for rendition id ${e} for channel ${t}`,{isFatal:!1,code:ni,type:`internal`}),yi=(e,t,n,r)=>new W(`MediaSource Error`,{isFatal:e,code:li,source:t,type:`internal`},{type:r,consecutiveErrorsCount:n}),bi=(e,t)=>new W(`No track context for ${e}${t?`, rendition id ${t}`:``}`,{isFatal:!1,code:ri,type:`internal`}),xi=(e,t)=>new W(`Track context is in an invalid state for ${e}${t?`, rendition id ${t}`:``}`,{isFatal:!1,code:ii,type:`internal`}),Si=()=>new W(`Web Audio Context resume timeout`,{isFatal:!1,code:`web_audio_context_resume_timeout`}),Ci=e=>new W(`Disconnected From Edge Server`,{type:`external`,source:e,isFatal:!1,code:ai}),wi=e=>new W(`Authentication Failed`,{isFatal:!0,code:Xr,source:e}),Ti=e=>new W(`Authentication Expired`,{isFatal:!0,code:Zr,source:e}),Ei=(e,t)=>new W(`Connection closed due to inactivity`,{isFatal:!1,code:ti,source:t,type:e}),Di=(e,t)=>new W(`Channel not found`,{isFatal:!1,code:Qr,source:t,type:e}),Oi=e=>new W(`Waiting for channel to go live`,{isFatal:!1,code:$r,source:e,type:`external`}),ki=e=>new W(`No Incoming Data`,{isFatal:!1,code:ei,source:e}),Ai=e=>new W(`Connection attempt failed`,{isFatal:!1,code:Jr,source:e}),ji=()=>new W(`Connection failed - no more reconnect attempts`,{isFatal:!0,code:Yr}),Mi=e=>new W(`WebGL Context Lost`,{isFatal:!1,code:ui,source:e,type:`internal`}),Ni=e=>new W(e,{isFatal:!0,code:di}),Pi=e=>new W(`Channel switch to '${e}' failed`,{isFatal:!1,code:fi}),Fi=(e,t=!1,n)=>new W(e,{isFatal:t,code:pi,source:n})}));Ii();var Li=(e,t)=>{let n=e.getContext(`webgl`,t);if(n||(n=e.getContext(`experimental-webgl`,t)),!n)throw new W(`Failed to create webgl context`,{isFatal:!0,code:`failed_to_create_web_gl_context`});return n},Ri=(e,t,n)=>{let r=e.createShader(t);if(!r)throw new W(`Failed to create shader`,{isFatal:!0,code:`failed_to_create_shader`});if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw new W(`Failed to compile shader: ${t==null?``:t}`,{isFatal:!0,code:`failed_to_compile_shader`})}return r},zi=e=>{let t=e.createTexture();if(!t)throw new W(`Failed to create texture`,{isFatal:!0,code:`failed_to_create_texture`});return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},Bi=(e,t)=>{let n=e.createBuffer();if(!n)throw new W(`Failed to create buffer`,{isFatal:!0,code:`failed_to_create_buffer`});return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,t.buffer,e.STATIC_DRAW),n},Vi=(e,t,n)=>{let r=e.createProgram();if(!r)throw new W(`Failed to create program`,{isFatal:!0,code:`failed_to_create_program`});if(e.attachShader(r,n),e.attachShader(r,t),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS)){let t=e.getShaderInfoLog(r);throw new W(`Failed to link program: ${t==null?``:t}`,{isFatal:!0,code:`failed_to_link_program`})}return r};U(),z(),D(),h(),j(),N(),k();var G=new WeakMap,Hi=new WeakMap,Ui=new WeakMap,Wi=new WeakMap,Gi=new WeakMap,Ki=new WeakSet,qi=new WeakMap,Ji=class{constructor(e){R(this,Ki),E(this,G,void 0),E(this,Hi,void 0),E(this,Ui,void 0),E(this,Wi,void 0),E(this,Gi,void 0),m(this,`subtitleRenderer`,new Rr),E(this,qi,(e,t,n,r)=>[e,0,0,0,0,-t,0,0,0,0,1,0,n,r,0,1]),A(G,this,e),A(Hi,this,zi(e)),A(Ui,this,Ri(e,e.FRAGMENT_SHADER,Kr)),A(Wi,this,Ri(e,e.VERTEX_SHADER,qr)),A(Gi,this,Vi(e,M(Wi,this),M(Ui,this)))}setActiveCues(e,t){this.subtitleRenderer.config.fontSize=Hn(t.width,t.height),this.subtitleRenderer.setActiveCues(e),this.subtitleRenderer.render(t)}render(e){let t=this.subtitleRenderer.canvas;if(t.width===0)return;let n=window.devicePixelRatio||1,r=Ur(Hr({subtitleWidth:t.width/n,subtitleHeight:t.height/n,canvasWidth:e.canvasWidth,canvasHeight:e.canvasHeight,containerWidth:e.containerWidth,bottomPadding:e.bottomPadding}),e.canvasWidth,e.canvasHeight);M(G,this).useProgram(M(Gi,this)),O(Ki,this,Yi).call(this),O(Ki,this,Xi).call(this,r.scaleX,r.scaleY,r.translateX,r.translateY),M(G,this).uniform1i(M(G,this).getUniformLocation(M(Gi,this),`texture`),4),M(G,this).activeTexture(M(G,this).TEXTURE4),M(G,this).bindTexture(M(G,this).TEXTURE_2D,M(Hi,this)),M(G,this).enable(M(G,this).BLEND),M(G,this).blendFunc(M(G,this).SRC_ALPHA,M(G,this).ONE_MINUS_SRC_ALPHA),M(G,this).texImage2D(M(G,this).TEXTURE_2D,0,M(G,this).RGBA,M(G,this).RGBA,M(G,this).UNSIGNED_BYTE,t),M(G,this).texParameteri(M(G,this).TEXTURE_2D,M(G,this).TEXTURE_MAG_FILTER,M(G,this).LINEAR),M(G,this).drawArrays(M(G,this).TRIANGLE_STRIP,0,4)}};function Yi(){let e=M(G,this).getAttribLocation(M(Gi,this),`position`);M(G,this).enableVertexAttribArray(e),M(G,this).vertexAttribPointer(e,2,M(G,this).FLOAT,!1,0,0)}function Xi(e,t,n,r){let i=M(G,this).getUniformLocation(M(Gi,this),`model`);M(G,this).uniformMatrix4fv(i,!1,M(qi,this).call(this,e,t,n,r))}var Zi=`
72
+ `,Jr,Yr,Xr,Zr,Qr,$r,ei,ti,ni,ri,ii,ai,oi,si,ci,li,ui,di,fi,pi,W,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci,wi,Ti,Ei,Di,Oi,ki,Ai,ji,Mi,Ni,Pi,Fi,Ii=n((()=>{h(),V(),Jr=`connection_failed`,Yr=`connection_failed_will_not_attempt_again`,Xr=`authentication_error`,Zr=`authentication_expired`,Qr=`channel_not_found`,$r=`channel_not_live`,ei=`no_incoming_data_error`,ti=`connection_inactivity`,ni=`missing_init_segment`,ri=`no_track_context`,ii=`invalid_track_context_state`,ai=`disconnected_by_edge`,oi=`decoder_error`,si=`audio_player_error`,ci=`unsupported_audio_codec`,li=`media_source_error`,ui=`webgl_context_lost_error`,di=`access_forbidden`,fi=`channel_switch_failed`,pi=`drm_error`,W=class extends Error{constructor(e,t,n={}){super(e),m(this,`props`,void 0),m(this,`extra`,{}),m(this,`code`,()=>this.props.code),m(this,`isFatal`,()=>this.props.isFatal),m(this,`source`,()=>this.props.source),m(this,`type`,()=>{var e;return(e=this.props.type)==null?`external`:e}),m(this,`toStringifiable`,()=>{var e;let t=this.source(),n=t instanceof Error?t.stack:this.stack;return B(B({},this.extra),{},{code:this.props.code,isFatal:this.props.isFatal,type:this.props.type,message:this.message,sourceMessage:(e=this.source())==null?void 0:e.message,stack:n})}),this.props=t,this.extra=n,Object.setPrototypeOf(this,new.target.prototype)}},mi=(e,t)=>new W(`MediaElement Error`,{isFatal:e,code:`media_element_error`,source:t},{mediaErrorCode:t.code}),hi=(e,t)=>new W(`Decoder Error`,{isFatal:e,code:oi,source:t,type:`internal`}),gi=(e,t,n)=>new W(`No decoder available for audio codec "${e}" in non-MSE playback. ${t}`,{isFatal:!0,code:ci,source:n,type:`external`},{codec:e,reason:t}),_i=(e,t)=>new W(`Audio Player Error`,{isFatal:e,code:si,source:t,type:`internal`}),vi=(e,t)=>new W(`No init segment for rendition id ${e} for channel ${t}`,{isFatal:!1,code:ni,type:`internal`}),yi=(e,t,n,r)=>new W(`MediaSource Error`,{isFatal:e,code:li,source:t,type:`internal`},{mediaType:r,consecutiveErrorsCount:n}),bi=(e,t)=>new W(`No track context for ${e}${t?`, rendition id ${t}`:``}`,{isFatal:!1,code:ri,type:`internal`}),xi=(e,t)=>new W(`Track context is in an invalid state for ${e}${t?`, rendition id ${t}`:``}`,{isFatal:!1,code:ii,type:`internal`}),Si=()=>new W(`Web Audio Context resume timeout`,{isFatal:!1,code:`web_audio_context_resume_timeout`}),Ci=e=>new W(`Disconnected From Edge Server`,{type:`external`,source:e,isFatal:!1,code:ai}),wi=e=>new W(`Authentication Failed`,{isFatal:!0,code:Xr,source:e}),Ti=e=>new W(`Authentication Expired`,{isFatal:!0,code:Zr,source:e}),Ei=(e,t)=>new W(`Connection closed due to inactivity`,{isFatal:!1,code:ti,source:t,type:e}),Di=(e,t)=>new W(`Channel not found`,{isFatal:!1,code:Qr,source:t,type:e}),Oi=e=>new W(`Waiting for channel to go live`,{isFatal:!1,code:$r,source:e,type:`external`}),ki=e=>new W(`No Incoming Data`,{isFatal:!1,code:ei,source:e}),Ai=e=>new W(`Connection attempt failed`,{isFatal:!1,code:Jr,source:e}),ji=()=>new W(`Connection failed - no more reconnect attempts`,{isFatal:!0,code:Yr}),Mi=e=>new W(`WebGL Context Lost`,{isFatal:!1,code:ui,source:e,type:`internal`}),Ni=e=>new W(e,{isFatal:!0,code:di}),Pi=e=>new W(`Channel switch to '${e}' failed`,{isFatal:!1,code:fi}),Fi=(e,t=!1,n)=>new W(e,{isFatal:t,code:pi,source:n})}));Ii();var Li=(e,t)=>{let n=e.getContext(`webgl`,t);if(n||(n=e.getContext(`experimental-webgl`,t)),!n)throw new W(`Failed to create webgl context`,{isFatal:!0,code:`failed_to_create_web_gl_context`});return n},Ri=(e,t,n)=>{let r=e.createShader(t);if(!r)throw new W(`Failed to create shader`,{isFatal:!0,code:`failed_to_create_shader`});if(e.shaderSource(r,n),e.compileShader(r),!e.getShaderParameter(r,e.COMPILE_STATUS)){let t=e.getShaderInfoLog(r);throw new W(`Failed to compile shader: ${t==null?``:t}`,{isFatal:!0,code:`failed_to_compile_shader`})}return r},zi=e=>{let t=e.createTexture();if(!t)throw new W(`Failed to create texture`,{isFatal:!0,code:`failed_to_create_texture`});return e.bindTexture(e.TEXTURE_2D,t),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),t},Bi=(e,t)=>{let n=e.createBuffer();if(!n)throw new W(`Failed to create buffer`,{isFatal:!0,code:`failed_to_create_buffer`});return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,t.buffer,e.STATIC_DRAW),n},Vi=(e,t,n)=>{let r=e.createProgram();if(!r)throw new W(`Failed to create program`,{isFatal:!0,code:`failed_to_create_program`});if(e.attachShader(r,n),e.attachShader(r,t),e.linkProgram(r),!e.getProgramParameter(r,e.LINK_STATUS)){let t=e.getShaderInfoLog(r);throw new W(`Failed to link program: ${t==null?``:t}`,{isFatal:!0,code:`failed_to_link_program`})}return r};U(),z(),D(),h(),j(),N(),k();var G=new WeakMap,Hi=new WeakMap,Ui=new WeakMap,Wi=new WeakMap,Gi=new WeakMap,Ki=new WeakSet,qi=new WeakMap,Ji=class{constructor(e){R(this,Ki),E(this,G,void 0),E(this,Hi,void 0),E(this,Ui,void 0),E(this,Wi,void 0),E(this,Gi,void 0),m(this,`subtitleRenderer`,new Rr),E(this,qi,(e,t,n,r)=>[e,0,0,0,0,-t,0,0,0,0,1,0,n,r,0,1]),A(G,this,e),A(Hi,this,zi(e)),A(Ui,this,Ri(e,e.FRAGMENT_SHADER,Kr)),A(Wi,this,Ri(e,e.VERTEX_SHADER,qr)),A(Gi,this,Vi(e,M(Wi,this),M(Ui,this)))}setActiveCues(e,t){this.subtitleRenderer.config.fontSize=Hn(t.width,t.height),this.subtitleRenderer.setActiveCues(e),this.subtitleRenderer.render(t)}render(e){let t=this.subtitleRenderer.canvas;if(t.width===0)return;let n=window.devicePixelRatio||1,r=Ur(Hr({subtitleWidth:t.width/n,subtitleHeight:t.height/n,canvasWidth:e.canvasWidth,canvasHeight:e.canvasHeight,containerWidth:e.containerWidth,bottomPadding:e.bottomPadding}),e.canvasWidth,e.canvasHeight);M(G,this).useProgram(M(Gi,this)),O(Ki,this,Yi).call(this),O(Ki,this,Xi).call(this,r.scaleX,r.scaleY,r.translateX,r.translateY),M(G,this).uniform1i(M(G,this).getUniformLocation(M(Gi,this),`texture`),4),M(G,this).activeTexture(M(G,this).TEXTURE4),M(G,this).bindTexture(M(G,this).TEXTURE_2D,M(Hi,this)),M(G,this).enable(M(G,this).BLEND),M(G,this).blendFunc(M(G,this).SRC_ALPHA,M(G,this).ONE_MINUS_SRC_ALPHA),M(G,this).texImage2D(M(G,this).TEXTURE_2D,0,M(G,this).RGBA,M(G,this).RGBA,M(G,this).UNSIGNED_BYTE,t),M(G,this).texParameteri(M(G,this).TEXTURE_2D,M(G,this).TEXTURE_MAG_FILTER,M(G,this).LINEAR),M(G,this).drawArrays(M(G,this).TRIANGLE_STRIP,0,4)}};function Yi(){let e=M(G,this).getAttribLocation(M(Gi,this),`position`);M(G,this).enableVertexAttribArray(e),M(G,this).vertexAttribPointer(e,2,M(G,this).FLOAT,!1,0,0)}function Xi(e,t,n,r){let i=M(G,this).getUniformLocation(M(Gi,this),`model`);M(G,this).uniformMatrix4fv(i,!1,M(qi,this).call(this,e,t,n,r))}var Zi=`
73
73
  precision mediump float;
74
74
  uniform sampler2D y_texture;
75
75
  uniform sampler2D u_texture;
@@ -1319,7 +1319,7 @@ var __async = (__this, __arguments, generator) => {
1319
1319
  });
1320
1320
  })();
1321
1321
  `,Fb=typeof self<`u`&&self.Blob&&new Blob([`(self.URL || self.webkitURL).revokeObjectURL(self.location.href);`,Pb],{type:`text/javascript;charset=utf-8`})})),Lb=r({VideoDecoderWorkerContext:()=>zb}),Rb,zb,Bb=n((()=>{U(),Ib(),h(),V(),F(),zb=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(B({},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`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()}},Rb=zb,m(zb,`create`,function(){var e=P(function*(e,t,n,r=!1,i=`no-preference`,a,o,s=!1,c){let l=new Nb,{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 Rb(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)}}())}));Ii(),U(),h(),V(),F();var Vb=5,Hb=40,Ub=1,Wb=5,Gb=e=>{var t,n;return((t=e.maxCompositionOffsetMs)==null?0:t)-((n=e.minCompositionOffsetMs)==null?0:n)},Kb=(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},qb=(e,t)=>{let n=e[e.length-1];n&&n.end>t&&n.start<t&&(n.end=t)},Jb=100,Yb=1e3,Xb=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)}),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)}),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:Jb;this.timers.setInterval(this.emitDecodedFrames,e),this.timers.setInterval(this.emitDecodeRate,Yb)}),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=Mt(t.decodeTime.items()),i=Mt(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=Mt((e=a==null?void 0:a.decodeTime.items())==null?[]:e),s=Mt((t=a==null?void 0:a.transportTime.items())==null?[]:t),c=Mt((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 B(B({videoDecodeRate:this.videoDecodeRate(),videoDecodeTime:o,audioDecodeTime:c,videoTransportTime:s,videoKeyframeIntervalMs:At(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,c=(e.timestamp+a)/e.timescale*1e3,l=e.duration/e.timescale*1e3;l>0&&(i.sampleDuration=l);let u=i.sampleDuration||Hb,d=e.timestamp/e.timescale*1e3,f=a/e.timescale*1e3,p=Gb(i),m=(t=s[s.length-1])==null?void 0:t.end,h=Math.max(u*Wb,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&&!db(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 x=Gb(i)>0;if(g)i.buffer=[{start:c,end:c+u}],i.frontierSampleDurationMs=u,e.type===`video`&&(this.videoKeyframeTimestamps=[]);else{var S;!x&&!i.isReorderStructureStale&&qb(s,c+u);let e=(S=s[s.length-1])==null?void 0:S.end;(e===void 0||c+u>=e)&&(i.frontierSampleDurationMs=u),$n(s,c,c+u,Vb)}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;)this.emitter.emit(`error`,hi(!1,s));for(;(e=t.decoderContext.take())!==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 c=(a=(o=t.decoderContext).takeEstimatedStatistics)==null?void 0:a.call(o);for(;c!==void 0;){var l,u;t.decodeTime.push(c.decodeTime),t.transportTime.push(c.transportTime),c=(l=(u=t.decoderContext).takeEstimatedStatistics)==null?void 0:l.call(u)}})}),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=Gb(e);if(t<=0)return e.buffer;if(e.playableRangesCache===void 0){var n,r;e.playableRangesCache=Kb(e.buffer,((n=e.lastDecodeTimestampMs)==null?1/0:n)-Math.max(0,-((r=e.minCompositionOffsetMs)==null?0:r))-Ub,t+(e.sampleDuration||Hb)+Ub)}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),er(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}createTimers(){return qn.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(()=>(xb(),_b));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(()=>(Mb(),kb));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 gi(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(()=>(Bb(),Lb)),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}};h();var Zb,Qb=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,`unload`,()=>{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`,()=>{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`,()=>{var e,t,n,r,i;return{isVisible:this.isVisible,isOnline:this.isOnline,isVisibleCount:this.isVisibleCount,isHiddenCount:this.isHiddenCount,isOnlineCount:this.isOnlineCount,isOfflineCount:this.isOfflineCount,navigatorRtt:(e=navigator.connection)==null?void 0:e.rtt,navigatorEffectiveType:(t=navigator.connection)==null?void 0:t.effectiveType,navigatorConnectionType:(n=navigator.connection)==null?void 0:n.type,navigatorSaveData:(r=navigator.connection)==null?void 0:r.saveData,navigatorDownlink:(i=navigator.connection)==null?void 0:i.downlink}}),m(this,`onOnline`,()=>this.isOnlineCount++),m(this,`onOffline`,()=>this.isOfflineCount++),m(this,`onPageShow`,e=>{this.emitter.emit(`pageshow`,e),this.setIsActive(document.visibilityState===`visible`)}),m(this,`onPageHide`,e=>this.emitter.emit(`pagehide`,e)),m(this,`onVisibilityChanged`,()=>{this.setIsActive(document.visibilityState===`visible`)}),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`}};Zb=Qb,m(Qb,`create`,e=>new Zb(e)),U(),h(),V();var $b,ex=e=>(t,n,r)=>t.timestamp<=n||t.timestampAdded<=r-e,tx=class e{constructor(t,n,r){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`waitingEvents`,[]),m(this,`isTriggered`,ex(e.EVENT_TIMEOUT)),m(this,`timeSource`,void 0),m(this,`timers`,new qn),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(B(B({},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}};$b=tx,m(tx,`EVENT_TIMEOUT`,5e3),m(tx,`EVENT_CHECK_INTERVAL`,20),m(tx,`create`,(e,t,n)=>new $b(e,t,n)),Ii(),U(),h();var nx,rx=class e{constructor(t){m(this,`emitter`,void 0),m(this,`timers`,qn.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 Ft(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`,ki()),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}};nx=rx,m(rx,`NO_DATA_ERROR_TIMEOUT`,20*1e3),m(rx,`NO_DATA_TIMEOUT`,5*1e3),m(rx,`UPDATE_RECEIVED_BYTES_INTERVAL`,1e3),m(rx,`create`,e=>new nx(e)),U(),h();var ix=1e3,ax=50,ox=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(ix),interArrivalTimes:new T(ix)}),this.runningJitter.set(n,0),this.recentJitterSamples.set(n,new T(ax));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(ax),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}=Mt((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`)}}};Ii(),U(),h(),F();var sx=()=>window.AudioContext||window.webkitAudioContext,cx=class e extends Ht{constructor(){var t;super(),t=this,m(this,`context`,new(sx())),m(this,`timers`,qn.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*(){try{return yield Promise.race([t.context.resume(),fr(1e3,Si())])}catch(e){throw t.suspend().catch(C),e}})),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(cx,`CHECK_INTERVAL`,1e3),Ii(),U(),h(),F(),V();var lx,ux=150,dx=400,fx=e=>e===void 0?5:e<=ux?1:e<=dx?2:5,px=class extends Ht{get isContextRunning(){var e;return((e=this.audio)==null?void 0:e.state)===`running`}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)}set muted(e){this._userProvidedMuted=e,this._muted=e,this.setGain(this._volume)}get isPaused(){return!1}get currentTime(){var e;return!this.audio||!this.audio.isRunning||this.audio.isStuck?this.clockSource.currentTime:this.audio.currentTime*1e3+((e=this.clockDelta)==null?0:e)}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=fx(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`,void 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,`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`,()=>{var e;if(this.setGain(this._volume),!Xe()){this.resume().catch(this.onUnsuspendFailure);return}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.gainNode&&(t=this.audio)!=null&&t.isRunning)){if(e.type===`audio`){this.preInitSampleQueue.push(B(B({},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 cx,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`,()=>{this.reInitWhenStuck&&(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=fx(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}};lx=px,m(px,`create`,(e,t,n)=>new lx(e,t,n)),h();var mx,hx=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 ta),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 Gr,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}};mx=hx,m(hx,`create`,(e,t,n,r,i,a)=>new mx(e,t,n,r,i,a)),D(),j(),N();var gx=new WeakMap,_x=class{constructor(){E(this,gx,[]),A(gx,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(gx,this).push(i),i}set language(e){M(gx,this).forEach(t=>{t.language===e?t.mode=`showing`:t.mode=`hidden`})}get language(){var e;return(e=M(gx,this).find(e=>e.mode===`showing`))==null?void 0:e.language}get tracks(){return M(gx,this)}get activeTrack(){return M(gx,this).find(e=>e.mode===`showing`)}getActiveCues(e){let t=M(gx,this).find(e=>e.mode===`showing`);return t?t.cues.filter(({startTime:t,endTime:n})=>e>=t&&e<n):[]}};U(),h();var vx=(e,t)=>{let n;for(n=t;e>1;e--)n+=t;return n},yx=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`+vx(23,`A`)+`WGluZwAAAA8AAAACAAACcQCA`+vx(16,`gICA`)+vx(66,`/`)+`8AAABhTEFNRTMuMTAwA8MAAAAAAAAAABQgJAUHQQAB9AAAAnGMHkkI`+vx(320,`A`)+`//sQxAADgnABGiAAQBCqgCRMAAgEAH`+vx(15,`/`)+`7+n/9FTuQsQH//////2NG0jWUGlio5gLQTOtIoeR2WX////X4s9Atb/JRVCbBUpeRUq`+vx(18,`/`)+`9RUi0f2jn/+xDECgPCjAEQAABN4AAANIAAAAQVTEFNRTMuMTAw`+vx(97,`V`)+`Q==`,this.audio.loop=!1,this.audio.load();else throw Error(`Failed to create audio tag`)}};Ii(),U(),h();var bx,xx=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 yx),m(this,`_isPaused`,!1),m(this,`isDisconnected`,!1),m(this,`timers`,new qn),m(this,`isVideoRenderingEnabled`,!0),m(this,`isLoaded`,!1),m(this,`isSuspended`,!0),m(this,`isVideoPlayerLoaded`,!1),m(this,`textTracks`,new _x),m(this,`playbackRate`,void 0),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`,()=>this.videoPlayer.getStatistics()),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`,_i(!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=px.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.emitter.emit(`volume state`,{volume:this.volume,isMuted:this.muted})}),this.videoPlayer=hx.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}get muted(){return this.audioPlayer.muted}set muted(e){let t=this.muted;this.audioPlayer.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.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`)}};bx=xx,m(xx,`create`,(e,t,n,r,i,a,o,s)=>new bx(e,t,n,r,i,a,o,s)),Ii(),U(),h();var Sx,Cx=class{constructor(e,t,n,r,{muted:i,volume:a,type:o,poster:s,offscreenCanvas:c,bufferTime:l,backgroundPlaybackEnabled:u}){m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`mediaElement`,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 qn),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,`isSyncingNativeTextTracks`,!1),m(this,`renderCanvasSubtitlesInNativeFullscreen`,(()=>{let e=tt().platform;return e.isIOS&&e.iosVersion<=16})()),m(this,`volumeState`,void 0),m(this,`textTracks`,new _x),m(this,`reset`,()=>{}),m(this,`load`,()=>{this.mediaElement.load(),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.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,`getStatistics`,()=>this.videoPlayer.getStatistics()),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,`onEnterIOSHack`,()=>{this.isIOSNativeFullscreen=!0,this.mediaElement._iosHackEnterPiPMode()}),m(this,`onExitIOSHack`,()=>{this.isIOSNativeFullscreen=!1,this.clearCanvasCues(),this.mediaElement._iosHackExitPiPMode()}),m(this,`onDecodedFrame`,e=>{try{this.audioPlayer.onDecodedFrame(e)}catch(e){e instanceof Error&&this.emitter.emit(`error`,_i(!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`,hi(!1,e))}),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=[...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.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`,()=>{if(this.isSyncingNativeTextTracks)return;let e=this.getSelectedNativeTextTrack();if(!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||Bt(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&&Bt(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`,()=>{for(let e of this.textTracks.tracks)this.ensureNativeTrack(e);let e=this.textTracks.activeTrack,t=e?this.textTracks.getActiveCues(this.currentTime/1e3):[];this.shouldRenderCanvasCues()&&this.setCanvasCues(t),this.isSyncingNativeTextTracks=!0;try{for(let[n,r]of this.nativeTracksByLanguage)n===(e==null?void 0:e.language)?(r.mode!==`showing`&&(r.mode=`showing`),this.setNativeCues(n,t)):(r.mode!==`disabled`&&(r.mode=`disabled`),this.clearNativeCues(n))}finally{this.isSyncingNativeTextTracks=!1}}),m(this,`updateVolumeState`,()=>{let e={isMuted:this.muted,volume:this.volume};Bt(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.mediaElement.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 jl({poster:s,type:o,muted:i,volume:a,autoplay:!1,logger:this.logger.createContext(`MediaElement`)}),this.mediaElement.on(`volume state`,e=>{this.updateVolumeState(),!e.isMuted&&!this.audioPlayer.isContextRunning&&this.activateAudioPlayer().catch(C),e.isMuted||(this._userProvidedMuted=!1)}),this.mediaElement.on(`media element state`,e=>{e===`paused`&&this.audioPlayer.flushBuffer(),this.emitter.emit(`media element state`,e)}),this.audioPlayer=px.create(this.logger.createContext(`AudioPlayerModule`),r,{muted:!1,reInitWhenStuck:!1,bufferTime:l}),this.audioPlayer.on(`stuck`,()=>{this.isDisconnected=!0}),this.audioPlayer.on(`state change`,e=>{e===`suspended`||e===`interrupted`?this.mediaElement.muted=!0:e===`running`&&this.applyVisibilityMutePolicy(),this.updateVolumeState()}),this.videoPlayer=hx.create(this.logger.createContext(`VideoPlayerModule`),this.audioPlayer,this.pool,this.mediaElement.element,()=>this.reconnectCanvasStream(),this.onVideoPlayerError),this.volumeState={volume:this.volume,isMuted:this.muted}}get volume(){return this.mediaElement.volume}set volume(e){this.mediaElement.volume=e}get muted(){return this.mediaElement.muted||this.audioPlayer.muted}set muted(e){let t=this.muted;this._userProvidedMuted=e,this.mediaElement.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.mediaElement.isPaused}get isSeeking(){return this.mediaElement.isSeeking}get audioNode(){return this.audioPlayer.audioNode}play(){let e=this._userProvidedMuted;return this.activateAudioPlayer().catch(()=>{e||this.emitter.emit(`needs user input`,{forAudio:!0,forVideo:!1})}),this.mediaElement.play()}pause(){this.mediaElement.pause()}get canvasCuesEnabled(){return this.renderCanvasSubtitlesInNativeFullscreen&&!this.offscreenCanvas}};Sx=Cx,m(Cx,`create`,(e,t,n,r,i)=>new Sx(e,t,n,r,i)),Ii(),U(),h(),V(),F();var wx,Tx=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 Ex(e,{mediaSource:t,mimeType:n,codec:r}){return B(B({},e),{},{state:`initialized`,mimeType:n,sourceBufferMimeType:n,codec:r,sourceBuffer:t.addSourceBuffer(n),isWorkingOnPendingSamples:!1,sequenceNumber:0,lastBufferCleanupTime:performance.now()})}function Dx({initSegments:e,pendingSamples:t}){return{state:`uninitialized`,initSegments:e==null?new Tx:e,sequenceNumber:0,isWorkingOnPendingSamples:!1,hasFirstSync:t.some(e=>e.isSync),pendingSamples:t==null?[]:t,pendingSamplesOffset:0,consecutiveQuotaExceededErrorCount:0,successfulAppendCalls:0}}var Ox=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`,qn.create()),m(this,`emitter`,void 0),m(this,`mediaElement`,void 0),m(this,`mediaSource`,new vl),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,`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)}),m(this,`unload`,()=>{this.logger.debug(`Unloading module...`),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.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(`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:At(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`,()=>{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 gl))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=Dx({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=Dx({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=Ex(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=Dx({pendingSamples:[],initSegments:new Tx}),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 gl)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=Dx({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 kx(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 bi(e.type,e.renditionId);n.state===`initialized`&&(n.mimeType=t);let r=qc({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 vi(n.renditionId,n.channelId);if(!i)throw bi(n.type,n.renditionId);if(i.state===`uninitialized`)throw xi(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 gl)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=el(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 bi(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 bi(e.type,e.renditionId);if(!(!t.hasFirstSync&&!e.isSync)){if(this.hasAddedInitialPosterFrame&&e.isSync&&e.type===`video`){this.hasAddedInitialPosterFrame=!1;let n=B({},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||Px(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 gl){this.logger.debug(`Suppressing append error from a disposed source buffer`,{type:e.type});return}if(n instanceof Error){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=yi(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}}else{let r=yi(!1,n,t.consecutiveQuotaExceededErrorCount,e.type);this.emitter.emit(`error`,r)}this.mediaElement.error&&this.onSourceEnded()}}}))}}),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,this.pendingTracksToAddSourceBuffers&&(this.setSourceBuffers(this.pendingTracksToAddSourceBuffers).catch(e=>{e instanceof gl||this.logger.error(`Failed to set source buffers after source open`,e)}),this.pendingTracksToAddSourceBuffers=void 0)}),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=mi(/AUDIO_RENDERER/.test(e.message)||!this.autoRecoverFromMediaErrors,e);this.logger.error(`MediaElement error`,{error:t}),this.emitter.emit(`error`,t),t.isFatal()||(this.emitter.emit(`recovered from media error`,{error:t,count:this.recoveredFromErrorCount}),this.reopenMediaSource(`media element error recovery`))}),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)=>Mx(e,t),e[0]?Array.from(e[0]):[])),m(this,`getPlaybackStateForBufferedRanges`,(e,t)=>er(t,e)?`playing`:`buffering`),this.logger=e,this.mediaElement=n,this.emitter=t}};wx=Ox,m(Ox,`create`,(e,t,n)=>{let r=new wx(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(`seeking`,r.onPlaybackPauseOrSeek),r.mediaSource.attach(n),r});var kx=(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}}}},Ax=(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},jx=32,Mx=(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},Nx=e=>{let t=e.pendingSamplesOffset;if(t!==0){if(t>=e.pendingSamples.length){e.pendingSamples=[],e.pendingSamplesOffset=0;return}t<jx||t*2<e.pendingSamples.length||(e.pendingSamples=e.pendingSamples.slice(t),e.pendingSamplesOffset=0)}},Px=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(Ax(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?Ax(e.previousSample,a):!0),e.pendingSamplesOffset=i+1,e.previousSample=r[r.length-1],Nx(e)}e.isWorkingOnPendingSamples=!1});return function(t,n,r){return e.apply(this,arguments)}}();U(),h(),F();var Fx,Ix=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),xt(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),xt(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=_t(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=ft(n.element);if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`exitStandardPictureInPicture`,P(function*(){let e=pt();if(!e)throw Error(`Picture in picture is not supported`);yield e()})),m(this,`isStandardPictureInPictureSupported`,()=>!!this.element&&gt(this.element)),m(this,`isStandardPictureInPictureActive`,()=>!!this.element&&ht()),m(this,`isWebkitPresentationModeActive`,()=>!!this.element&&vt(this.element)===`picture-in-picture`),m(this,`requestWebkitPresentationMode`,function(){var e=P(function*(e){return n.element&&yt(n.element,e),Promise.resolve()});return function(t){return e.apply(this,arguments)}}()),m(this,`isWebkitPresentationModeSupported`,()=>!!this.element&&bt(this.element)),this.emitter=e,this.logger=t,this.emitter.on(`add picture in picture listener`,this.onEnablePictureInPicture)}};Fx=Ix,m(Ix,`create`,(e,t)=>new Fx(e,t)),U(),h();var Lx,Rx=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=er(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)}};Lx=Rx,m(Rx,`create`,(e,t,n,r)=>new Lx(e,t,n,r)),U(),h();var zx,Bx=()=>({upgradesFromLevel:[],downgradesFromLevel:[],bufferingRanges:[],activeRanges:[],decodeRate:2**53-1}),Vx=()=>({levels:{},levelDowngrades:[],levelUpgrades:[],bufferFullness:0,general:Bx()}),Hx=class{constructor(e,t,n){m(this,`minBufferFullnessLengthForRegression`,6),m(this,`logger`,void 0),m(this,`emitter`,void 0),m(this,`timers`,qn.create()),m(this,`metrics`,Vx()),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=Zn(this.metrics.general.activeRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?Zn(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=Zn(this.metrics.general.bufferingRanges);if(Object.entries(this.metrics.levels).forEach(([n,r])=>{var i;let a=parseInt(n,10),o=t?Zn(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=>Qn(this.metrics.general.bufferingRanges,e)),m(this,`timeSpentActiveLast`,e=>Qn(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`,()=>Zn(this.metrics.general.bufferingRanges)),m(this,`timeActive`,()=>Zn(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?Bx():f;l<u?e.upgradesFromLevel.push(performance.now()):e.downgradesFromLevel.push(performance.now()),Yn(e.activeRanges);let t=e.bufferingRanges[e.bufferingRanges.length-1];d=!!t&&!t.end,Yn(e.bufferingRanges),this.metrics.levels[l]=e}if(e.to){var p;let e=(p=this.metrics.levels[u])==null?Bx():p;Xn(e.activeRanges),d&&Xn(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`,()=>Nt(this.bufferFullness.items().map((e,t)=>({x:t,y:e})))),m(this,`stopBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Yn(e.bufferingRanges)}Yn(this.metrics.general.bufferingRanges)}),m(this,`startBuffering`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Xn(e.bufferingRanges)}Xn(this.metrics.general.bufferingRanges)}),m(this,`unsetActive`,()=>{if(this.currentLevel){let e=this.metrics.levels[this.currentLevel];e&&Yn(e.activeRanges)}Yn(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&&Xn(e.activeRanges)}Xn(this.metrics.general.activeRanges)}};zx=Hx,m(Hx,`create`,(e,t,n)=>new zx(e,t,n)),U(),h();var Ux,Wx=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&&Sr(n))return n}),m(this,`getAudioRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Cr(e))}),m(this,`getVideoRenditions`,e=>{let t=this.renditions.get(e);return t==null?void 0:t.filter(e=>Sr(e))}),m(this,`getAudioRendition`,(e,t=this.getCurrentSubscription().channelId)=>{let n=this.getRendition(e,t);if(n&&Cr(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);Bt(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(Sr).filter(e=>n&&e.codec===n.codec),s=a.filter(Cr).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)}};Ux=Wx,m(Wx,`create`,(e,t)=>new Ux(e,t)),U(),h();var Gx,Kx=e=>JSON.parse(JSON.stringify(e)),qx=1e4,Jx=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`timers`,new qn),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!Bt(Rn(this.currentSubscription,e),Rn(this.targetSubscription,e))}),m(this,`onSubscriptionChanged`,({to:e,reset:t})=>{this.logger.debug(`onSubscriptionChanged`,{to:e,reset:t}),t?this.targetSubscription=Kx(this.currentSubscription):this.currentSubscription=Kx(e),this._isSwitchingSubscription=this.isNewSubscription()}),m(this,`scheduleSubscriptionChange`,()=>{this.targetSubscription=Kx(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=Kx(this.currentSubscription),this.emitter.emit(`channel switch timeout`,t))},qx),this.pendingSubscriptionTimeoutId=this.timers.setTimeout(()=>this.emitter.emit(`send signal`,{type:`subscribe`,subscription:this.getTargetSubscription()}),0))}),this.logger=e,this.targetSubscription=t,this.currentSubscription=Kx(t),this.emitter=n,this.emitter.on(`subscription changed`,this.onSubscriptionChanged)}};Gx=Jx,m(Jx,`create`,(e,t,n)=>new Gx(e,n,t)),U(),h();var Yx=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 Wt(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(ub(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(!db(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(ub(e,t));this.hasBFramesValue=r==null?!1:r,n&&(this.isAwaitingAssessment=r===void 0)}}};m(Yx,`MAX_REMEMBERED_RENDITIONS`,32),U(),h(),V();var Xx,Zx=5e3,Qx=()=>Xe()||qe(),$x=e=>e&&Qx()?100:0,eS=e=>t=>t>e,tS=100,nS=1e3,rS={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}},iS=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,`lastAdjustmentTime`,performance.now()),m(this,`lastDecayCheckTime`,performance.now()),m(this,`syncInterval`,void 0),m(this,`currentSyncIntervalMs`,tS),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`,qn.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 Yx),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`?nS:tS)}),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.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.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-Zx);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-Zx);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?kt(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=jt(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(eS(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.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,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});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:jt(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(eS(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,`onPlaybackState`,e=>{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?tS:nS),e&&this.onSync()}),m(this,`onPageShow`,e=>{e.persisted&&(this.setSyncInterval(document.visibilityState===`hidden`?nS:tS),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=$x(a),this.config={seek:B({},rS.seek),timeshift:B({},rS.timeshift),playbackRate:B({},rS.playbackRate),backoff:B({},rS.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.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,B(B({},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,B(B({},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=jt(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}};Xx=iS,m(iS,`create`,(e,t,n,r,i,a=!0)=>new Xx(e,t,n,r,i,a)),Ii(),U(),V(),h(),F();var aS,oS={enabled:!0,interval:3e4,includeErrors:!0,includeEvents:!0,includeStats:!0,maxRetries:10,maxErrorReports:50,maxEvents:50},sS=(e,t)=>B(B({},t),{},{type:e,timestamp:new Date().toISOString(),discriminator:`web`}),cS=class{constructor(e,t,n,r){var i=this;m(this,`logger`,void 0),m(this,`timers`,new qn),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=sS(`stats`,B(B(B({},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=sS(`event`,B(B({},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 tu(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(sS(`error`,B(B({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=B(B({},oS),n),this.parentContext=r}};aS=cS,m(cS,`create`,(e,t,n,r)=>new aS(e,t,n,r)),U(),h();var lS,uS=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`element`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new qn),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug(`Unpause video`),this.element.tryPlay())}),this.logger=e,this.element=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};lS=uS,m(uS,`create`,(e,t,n)=>new lS(e,t,n)),h();var dS=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function fS(e){return dS.includes(e)}var pS=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&&fS(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]}};V();var mS=6,hS=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&ol(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&&ol(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),B(B({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&ol(e.flags)&&n&&(i=!i),!(n&&t.length<mS&&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),[]}},gS=[`mse`,`wasm`],_S=e=>e==null?gS:e,vS=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)},yS=(e,t,n)=>{if(vS(n))return`mse`;let r=_S(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`};V();var bS=(e,t,n)=>{if(Sr(t))return B(B({},e),{},{type:`video`,codec:t.codec,isSync:ol(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 B(B({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:ol(e.flags),data:e.payload,duration:0})};V();var xS=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),SS=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],CS=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],wS=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,TS=e=>{let t=B({},e);for(let e of SS){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of CS){let n=t[e];wS(n)&&(t[e]=xS(n))}return t};Ii(),V();var ES=(e,t)=>e&&typeof e==`object`&&t in e,DS=e=>!(typeof e!=`object`||!ES(e,`channelId`)||typeof e.channelId!=`string`||!ES(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),OS=e=>{if(!DS(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=B({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},kS=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};Ja(),il(),mb(),h(),F();var AS=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?pb(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?qa(e.channels,e.sampleRate):e.codec===`opus`?nl(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}};Ii(),U(),h(),D(),V(),F(),N(),j();var jS=1e4,MS=1280*720,NS=new WeakMap,PS=new WeakMap,FS=new WeakMap,IS=class e extends Ht{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,tt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Ht),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,lr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`isUserPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new sr),m(this,`encryptedMediaExtensions`,void 0),E(this,NS,0),E(this,PS,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new fb),m(this,`unextractableSamplesWarned`,new fb),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,FS,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,`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 jl){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`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=lr();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=>B(B({},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 Di(`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.options.get(`burstEnabled`,n.channelId)&&n.modules.subscription.enableBurst(n.targetBufferTime),n.emit(`is live`,i.isLive),!i.isLive)throw Oi();n.patchSubscription(i,n.modules.connection.estimatedBandwidth),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let c=n.options.get(`burstEnabled`,n.channelId);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:c?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(PS,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(PS,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(PS,this).push(t)}}});for(let e of M(PS,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(PS,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(Cr(e)){var t;return n.willUseMediaSource()&&!((t=Re())!=null&&t.isTypeSupported(wr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Sr(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 Ml(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=>B(B({codec:e.codec,codecString:e.codecString},Sr(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=>B(B({codec:e.codec,codecString:e.codecString},Sr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`patchSubscription`,(e,t)=>{let n=this.options.get(`maxInitialBitRate`),r=Math.min(this.options.get(`maxVideoBitRate`),n,t,this.targetSubscription.video.bitRate),i=Math.min(this.options.get(`maxAudioBitRate`),n,t,this.targetSubscription.audio.bitRate),a=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),o=this.supportedAudioCodecs(),s=e.renditions.filter(Cr),c=e.renditions.filter(Sr),l=o.find(e=>s.find(t=>t.codec===e)!==void 0),u=a.find(e=>c.find(t=>t.codec===e)!==void 0),d=s.map(e=>e.language);if(this.logger.debug(`supported and selected codecs`,{audioCodecs:o,videoCodecs:a,audioCodec:l,videoCodec:u}),u){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(B({codec:u,bitRate:this.abrEnabled?r:this.options.get(`maxVideoBitRate`)},e))}if(l){let e=this.modules.subscription.getTargetSubscription().audio.language,t=e==null?this.options.get(`language`):e;this.modules.subscription.setAudioConstraint({codec:l,bitRate:this.abrEnabled?i:this.options.get(`maxAudioBitRate`),language:t}),(t===void 0||!d.includes(t))&&this.modules.subscription.setLanguage(d[0])}this.alignSizeAndBitRate(this.targetSubscription);let f=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:f,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Re();return n?n.isTypeSupported(wr({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:wr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:wr(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 gl?(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`),jr(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 Xb.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 xx)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 Cx&&(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 Cx),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(MS)};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 Cx)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,`registerDebugInstance`,()=>{Al(this)}),m(this,`play`,()=>{var t;this.isUserPaused=!1,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?B(B({},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 TS(B(B({},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 jl&&this.modules.adaptivity.reset(jS),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),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,`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 Cx?!0:void 0;return B({uptime:this.uptime,version:`4.5.1-21-g6ea9dc89e`,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},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 B(B({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{if(this.logger.info(`media element state`,{state:e}),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&(this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect());else{if(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)}),this.options=new pS(B(B({},Or),OS(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=cn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new AS(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=Ix.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=qn.create(),p=ib.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),h=Jx.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),g=Wx.create(this.emitter,h),_=Hx.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),g),v=Rx.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new La(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let y=Qb.create(this.emitter),b=this.options.get(`poster`),x=b===!0?this.getThumbnailUrl():b||void 0,S,ee,te;if(this.willUseMediaSource()){let e=new jl({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.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,La.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=Ox.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(ee=uS.create(this.logger.createContext(`UnpauseModule`),e,y)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.options.get(`streamToMediaElementEnabled`)&&Tt(this.browser)){let e=Cx.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)}),t=e.element();this.element=t.element,this.playbackSource=e,te=e;let n=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!n&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(ee=uS.create(this.logger.createContext(`UnpauseModule`),t,y))}else{let e;e=xx.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,te=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new xl)}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`,()=>f.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 ne=this.willUseMediaSource(),ie=ne?!this.browser.platform.isWebKit:!0,C={getTargetBufferTime:()=>v.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},ae=iS.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,C,ie,ne),w=ox.create(this.logger.createContext(`JitterModule`)),oe=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),T=new URL(`/telemetry`,oe).toString();this.modules={telemetry:cS.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:T,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:Gl.create(this.emitter,this.logger.createContext(`BufferTimeModule`),_,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:rx.create(this.emitter),adaptivity:Hl.create(this.emitter,this.logger.createContext(`AdaptivityModule`),_,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:lb.create(this.emitter,this.element,g,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:tx.create(this.emitter,this.logger.createContext(`EventModule`),ae),sync:ae,jitter:w,documentState:y,connection:p,playback:v,pictureInPicture:d,timer:f,subscription:h,renditions:g,qualityOfService:_,mseModule:S,unpause:ee,canvasModule:te},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(`page active`,e=>{var t;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend());else if(this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var n,r,i;(n=this.modules.decoder)==null||n.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(r=this.modules.decoder)==null||r.unsuspend(),(i=this.modules.canvasModule)==null||i.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`)}),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 se;this.emitter.on(`context switch complete`,()=>{se||(se=window.setTimeout(()=>{window.clearTimeout(se),se=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.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=cS.create(this.logger.createContext(`TelemetryModule`),this.emitter,B(B({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{this.logger.debug(`adapt level`,{direction: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?Tr():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(B(B({},this.targetSubscription),{},{video:B(B({},this.targetSubscription.video),d==null?void 0:d.video),audio:B(B({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(PS,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(NS,this);if(A(NS,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`,B({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(FS,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(FS,this,void 0)}));break;case`subscription changed`:var r;try{kS(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`,Pi(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`,Pi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=dl(e);if(!t){this.logger.warn(`Received unwanted message`,B({},n));return}le(B(B({},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`,Fi(`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=so(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=ao(e))}else if(m===`av1`&&a!=null&&a.av01)h=Dc(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=tl(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`,B(B({},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 ce=this.options.get(`container`);ce&&this.attach(ce),this.logger.info(`Created Vindral instance`,{options:this.options});let le=function(){var e=P(function*(e){let t=e.channelId;M(FS,n)&&(yield M(FS,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!cl(e.flags)){if(ll(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=ir(t);if(e&&e.language!==void 0){let t=new Dl,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(PS,n).find(t=>t.language===e.language),s=a-M(NS,n);if(A(NS,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=vr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),sl(e.flags)){let a=B(B({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Sr(r)?{width:r.width,height:r.height}:{}),o=Jc(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=wr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=bS(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=hS(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`)),Bt(this.options.get(`maxSize`),Er())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&h.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;let t=this.playbackSource.muted;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.options.get(`burstEnabled`,this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}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(PS,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(PS,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(PS,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.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?Er():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?Tr():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?Tr():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(B(B({},e),{},{video:B({},e.video),audio:B({},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 yS(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}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(IS,`MAX_POOL_SIZE`,10),m(IS,`REMOVE_CUE_THRESHOLD`,1e3*10),m(IS,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15);var LS={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},RS=`_withThumbnails_suenn_19`,zS={"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:RS,"hide-on-small":`_hide-on-small_suenn_27`},BS={"icon-button":`_icon-button_5fg7v_1`},VS={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 tu(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(sS(`error`,B(B({},r),e.toStringifiable())))}),this.logger=e,this.emitter=t,this.options=B(B({},oS),n),this.parentContext=r}};aS=cS,m(cS,`create`,(e,t,n,r)=>new aS(e,t,n,r)),U(),h();var lS,uS=class{constructor(e,t,n){m(this,`logger`,void 0),m(this,`element`,void 0),m(this,`documentState`,void 0),m(this,`timers`,new qn),m(this,`unload`,()=>{this.timers.unload()}),m(this,`unpause`,()=>{this.element.userHasProvidedInput&&this.element.isPaused&&this.documentState.isVisible&&this.documentState.isOnline&&(this.logger.debug(`Unpause video`),this.element.tryPlay())}),this.logger=e,this.element=t,this.documentState=n,this.timers.setInterval(this.unpause,100)}};lS=uS,m(uS,`create`,(e,t,n)=>new lS(e,t,n)),h();var dS=[`minBufferTime`,`maxBufferTime`,`burstEnabled`,`sizeBasedResolutionCapEnabled`,`webcodecsHardwareAcceleration`,`offscreenCanvasEnabled`,`videoCodecs`];function fS(e){return dS.includes(e)}var pS=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&&fS(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]}};V();var mS=6,hS=e=>{let t=[e],n=0,r=0,i=!1,a=(e,t)=>{var i,a;if(e.flags&&ol(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&&ol(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),B(B({},e),{},{duration:u>0?u:r})};return(e,n=!1)=>{if(e.flags&&ol(e.flags)&&n&&(i=!i),!(n&&t.length<mS&&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),[]}},gS=[`mse`,`wasm`],_S=e=>e==null?gS:e,vS=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)},yS=(e,t,n)=>{if(vS(n))return`mse`;let r=_S(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`};V();var bS=(e,t,n)=>{if(Sr(t))return B(B({},e),{},{type:`video`,codec:t.codec,isSync:ol(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 B(B({},e),{},{type:`audio`,channels:t.channels,sampleRate:t.sampleRate,codec:t.codec,language:t.language,isSync:ol(e.flags),data:e.payload,duration:0})};V();var xS=({average:e,last:t,max:n,min:r})=>({average:Math.round(e),last:Math.round(t),max:Math.round(n),min:Math.round(r)}),SS=[`timeSpentBuffering`,`timePerBufferingEvent`,`drift`,`seekTime`,`totalSeekTime`,`currentSeekToleranceMs`,`currentAheadToleranceMs`,`averageDrift`,`videoKeyframeIntervalMs`,`timeToConnected`,`mediaSourceOpenTime`],CS=[`videoDecodeTime`,`audioDecodeTime`,`videoTransportTime`,`rtt`],wS=e=>typeof e==`object`&&!!e&&`min`in e&&`max`in e&&`average`in e&&`last`in e,TS=e=>{let t=B({},e);for(let e of SS){let n=t[e];typeof n==`number`&&(t[e]=Math.round(n))}for(let e of CS){let n=t[e];wS(n)&&(t[e]=xS(n))}return t};Ii(),V();var ES=(e,t)=>e&&typeof e==`object`&&t in e,DS=e=>!(typeof e!=`object`||!ES(e,`channelId`)||typeof e.channelId!=`string`||!ES(e,`url`)||typeof e.url!=`string`||e.channelId.length===0||e.url.length===0),OS=e=>{if(!DS(e))throw new W(`Invalid options`,{isFatal:!0,code:`invalid_options`});let t=B({},e);return Object.keys(t).forEach(e=>{let n=t;n[e]===void 0&&delete n[e]}),t},kS=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};Ja(),il(),mb(),h(),F();var AS=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?pb(e.codec):n,a=`audio|${i}|${e.sampleRate}|${e.channels}`,o=e.codec===`aac`?qa(e.channels,e.sampleRate):e.codec===`opus`?nl(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}};Ii(),U(),h(),D(),V(),F(),N(),j();var jS=1e4,MS=1280*720,NS=new WeakMap,PS=new WeakMap,FS=new WeakMap,IS=class e extends Ht{constructor(t){var n,r,i;super(),n=this,m(this,`pictureInPicture`,void 0),m(this,`drm`,void 0),m(this,`browser`,tt()),m(this,`options`,void 0),m(this,`element`,void 0),m(this,`playbackSource`,void 0),m(this,`emitter`,new Ht),m(this,`logger`,void 0),m(this,`modules`,void 0),m(this,`clientIp`,void 0),m(this,`sessionId`,void 0),m(this,`clientId`,lr()),m(this,`_channels`,[]),m(this,`createdAt`,performance.now()),m(this,`offscreenCanvasElement`,void 0),m(this,`webCodecsRenditionSupport`,void 0),m(this,`hasCalledConnect`,!1),m(this,`isUserPaused`,!1),m(this,`latestEmittedLanguages`,[]),m(this,`wakeLock`,void 0),m(this,`pool`,new re(e.MAX_POOL_SIZE)),m(this,`userAgentInformation`,new sr),m(this,`encryptedMediaExtensions`,void 0),E(this,NS,0),E(this,PS,[]),m(this,`sampleProcessingSesssions`,new Map),m(this,`unbackedSamplesWarned`,new fb),m(this,`unextractableSamplesWarned`,new fb),m(this,`sizes`,new Map),m(this,`isSuspended`,!0),m(this,`inactivityDisconnectInterval`,void 0),m(this,`offscreenSubtitleInterval`,void 0),E(this,FS,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,`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 jl){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`)})),m(this,`onConnectInfo`,function(){var e=P(function*(e){var t;n.sessionId=lr();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=>B(B({},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 Di(`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.options.get(`burstEnabled`,n.channelId)&&n.modules.subscription.enableBurst(n.targetBufferTime),n.emit(`is live`,i.isLive),!i.isLive)throw Oi();n.patchSubscription(i,n.modules.connection.estimatedBandwidth),yield n.initializeDecodingModule(),n.resetModules(),n.emit(`rendition levels`,n.modules.renditions.getRenditionLevels()),n.emit(`channels`,n.channels),n.emitLanguagesIfChanged(),n.sampleProcessingSesssions.clear();let c=n.options.get(`burstEnabled`,n.channelId);return{video:n.targetSubscription.video,audio:n.targetSubscription.audio,burstMs:c?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(PS,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(PS,this).push(t)}else if(this.mediaElement instanceof HTMLVideoElement){let t=this.mediaElement.addTextTrack(e.kind,e.label||e.language,e.language);M(PS,this).push(t)}}});for(let e of M(PS,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(PS,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(Cr(e)){var t;return n.willUseMediaSource()&&!((t=Re())!=null&&t.isTypeSupported(wr(e)))?!1:n.willUseMediaSource()||e.codec===`opus`?!0:n.isWebCodecsAudioAvailable(n.channelId)?n.webCodecsRenditionSupport.checkAudioSupport(e):!1}if(!Sr(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 Ml(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=>B(B({codec:e.codec,codecString:e.codecString},Sr(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=>B(B({codec:e.codec,codecString:e.codecString},Sr(e)?{width:e.width,height:e.height}:{}),{},{bitRate:e.bitRate}))}),r});return function(t){return e.apply(this,arguments)}}()),m(this,`patchSubscription`,(e,t)=>{let n=this.options.get(`maxInitialBitRate`),r=Math.min(this.options.get(`maxVideoBitRate`),n,t,this.targetSubscription.video.bitRate),i=Math.min(this.options.get(`maxAudioBitRate`),n,t,this.targetSubscription.audio.bitRate),a=this.options.get(`media`)===`audio`?[]:this.options.get(`videoCodecs`,this.channelId),o=this.supportedAudioCodecs(),s=e.renditions.filter(Cr),c=e.renditions.filter(Sr),l=o.find(e=>s.find(t=>t.codec===e)!==void 0),u=a.find(e=>c.find(t=>t.codec===e)!==void 0),d=s.map(e=>e.language);if(this.logger.debug(`supported and selected codecs`,{audioCodecs:o,videoCodecs:a,audioCodec:l,videoCodec:u}),u){let e=this.options.get(`maxSize`);this.modules.subscription.setVideoConstraint(B({codec:u,bitRate:this.abrEnabled?r:this.options.get(`maxVideoBitRate`)},e))}if(l){let e=this.modules.subscription.getTargetSubscription().audio.language,t=e==null?this.options.get(`language`):e;this.modules.subscription.setAudioConstraint({codec:l,bitRate:this.abrEnabled?i:this.options.get(`maxAudioBitRate`),language:t}),(t===void 0||!d.includes(t))&&this.modules.subscription.setLanguage(d[0])}this.alignSizeAndBitRate(this.targetSubscription);let f=this.modules.subscription.getTargetSubscription();this.emitter.emit(`subscription changed`,{to:f,from:this.modules.subscription.getCurrentSubscription()})}),m(this,`isSupportedVideoCodecProfile`,(e,t)=>{if(this.willUseMediaSource()){let n=Re();return n?n.isTypeSupported(wr({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:wr(t.video),codec:t.video.codec}),t!=null&&t.audio&&r.push({type:`audio`,codec:t.audio.codec,mimeType:wr(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 gl?(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`),jr(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 Xb.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 xx)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 Cx&&(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 Cx),m(this,`connectWebKitVideoOutput`,(e,t)=>{let n=()=>{t.setVideoTrack(void 0),this.browser.platform.isIOS&&e.setMaxVideoCanvasPixels(MS)};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 Cx)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,`registerDebugInstance`,()=>{Al(this)}),m(this,`play`,()=>{var t;this.isUserPaused=!1,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?B(B({},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 TS(B(B({},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 jl&&this.modules.adaptivity.reset(jS),this.sampleProcessingSesssions.clear(),this.cleanupTextTracks(1/0),this.playbackSource.currentTime=0,this.playbackSource.isActivated=!1}),m(this,`disconnectForInactivePage`,e=>{this.clearInactivityDisconnect(),this.emitter.emit(`flush buffers`),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,`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 Cx?!0:void 0;return B({uptime:this.uptime,version:`4.5.1-22-g5030974ef`,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},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 B(B({},e),{},{buffered:n.buffered,playbackState:r})}),m(this,`onMediaElementBufferState`,(e,t)=>{this.emitter.emit(`buffer state`,this.getPlaybackBufferState(e,t))}),m(this,`onMediaElementState`,e=>{if(this.logger.info(`media element state`,{state:e}),this.options.get(`pauseSupportEnabled`))if(e===`paused`)this.modules.documentState.isVisible&&(this.isUserPaused=!0,this.suspend(),this.modules.connection.disconnect());else{if(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)}),this.options=new pS(B(B({},Or),OS(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=cn.get();o.setLevel(this.options.get(`logLevel`)),o.setDebug(!1),this.logger=o,this.webCodecsRenditionSupport=new AS(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=Ix.create(this.emitter,this.logger.createContext(`PictureInPictureModule`)),f=qn.create(),p=ib.create(this.emitter,this.logger.createContext(`ConnectionModule`),{reconnectHandler:this.options.get(`reconnectHandler`),options:this.options,onConnectInfo:this.onConnectInfo}),h=Jx.create(this.logger.createContext(`SubscriptionModule`),this.emitter,a),g=Wx.create(this.emitter,h),_=Hx.create(this.emitter,this.logger.createContext(`QualityOfServiceModule`),g),v=Rx.create(this.emitter,this.logger.createContext(`PlaybackModule`),this,this.options.get(`minBufferTime`));this.encryptedMediaExtensions=new La(this.emitter,this.logger.createContext(`EncryptedMediaExtensions`),t.drm),this.drm={setHeaders:e=>{this.encryptedMediaExtensions.headers=e},setQueryParams:e=>{this.encryptedMediaExtensions.queryParams=e}};let y=Qb.create(this.emitter),b=this.options.get(`poster`),x=b===!0?this.getThumbnailUrl():b||void 0,S,ee,te;if(this.willUseMediaSource()){let e=new jl({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.emit(`volume state`,e)),e.on(`media element state`,e=>this.onMediaElementState(e)),this.element=e.element,this.playbackSource=e,La.isSupported()&&this.encryptedMediaExtensions.attach(e.element),S=Ox.create(this.logger.createContext(`MseModule`),this.emitter,this.element),this.options.get(`pauseSupportEnabled`)||(ee=uS.create(this.logger.createContext(`UnpauseModule`),e,y)),this.options.get(`pictureInPictureEnabled`)&&this.emitter.emit(`add picture in picture listener`,{element:e.element})}else if(this.options.get(`streamToMediaElementEnabled`)&&Tt(this.browser)){let e=Cx.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)}),t=e.element();this.element=t.element,this.playbackSource=e,te=e;let n=this.browser.platform.isIOS&&this.browser.platform.iosVersion<=15;this.options.get(`pictureInPictureEnabled`)&&!n&&this.emitter.emit(`add picture in picture listener`,{element:this.element}),this.options.get(`pauseSupportEnabled`)||(ee=uS.create(this.logger.createContext(`UnpauseModule`),t,y))}else{let e;e=xx.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,te=e,this.options.get(`iosWakeLockEnabled`)&&(this.wakeLock=new xl)}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`,()=>f.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 ne=this.willUseMediaSource(),ie=ne?!this.browser.platform.isWebKit:!0,C={getTargetBufferTime:()=>v.getTargetBufferTime(),getNextBufferedRangeStart:S?e=>S.getNextBufferedRangeStart(e):void 0},ae=iS.create(this.emitter,this.logger.createContext(`SyncModule`),this.playbackSource,C,ie,ne),w=ox.create(this.logger.createContext(`JitterModule`)),oe=(this.options.get(`edgeUrl`)||this.options.get(`url`)).replace(`wss://`,`https://`).replace(`ws://`,`http://`).replace(`//lb.`,`//errors.`),T=new URL(`/telemetry`,oe).toString();this.modules={telemetry:cS.create(this.logger.createContext(`TelemetryModule`),this.emitter,{url:T,enabled:this.options.get(`telemetryEnabled`),includeStats:!1,interval:5e3},this),bufferTime:Gl.create(this.emitter,this.logger.createContext(`BufferTimeModule`),_,this,{maxBufferTime:this.options.get(`maxBufferTime`),minBufferTime:this.options.get(`minBufferTime`)}),incomingData:rx.create(this.emitter),adaptivity:Hl.create(this.emitter,this.logger.createContext(`AdaptivityModule`),_,{cooldownTime:Math.max(this.options.get(`minBufferTime`),2e3)}),constraintCap:lb.create(this.emitter,this.element,g,this.options.get(`abrEnabled`)?this.options.get(`sizeBasedResolutionCapEnabled`):!1),event:tx.create(this.emitter,this.logger.createContext(`EventModule`),ae),sync:ae,jitter:w,documentState:y,connection:p,playback:v,pictureInPicture:d,timer:f,subscription:h,renditions:g,qualityOfService:_,mseModule:S,unpause:ee,canvasModule:te},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(`page active`,e=>{var t;if((t=this.modules.decoder)==null||t.setVideoRenderingEnabled(this.isVideoOnScreen(e)),e)this.clearInactivityDisconnect(),this.isUserPaused||(this.logger.debug(`Unsuspending`),this.unsuspend());else if(this.logger.debug(`Suspending`),this.suspend(),this.shouldAllowBackgroundPlayback(this.channelId)){var n,r,i;(n=this.modules.decoder)==null||n.enableBackgroundTimers(),this.modules.connection.unsuspend(),this.modules.sync.unsuspend(),(r=this.modules.decoder)==null||r.unsuspend(),(i=this.modules.canvasModule)==null||i.unsuspend(),this.scheduleInactivityDisconnect()}else this.disconnectForInactivePage(this.isUserPaused?`Background playback paused`:`Background playback disabled`)}),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 se;this.emitter.on(`context switch complete`,()=>{se||(se=window.setTimeout(()=>{window.clearTimeout(se),se=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.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=cS.create(this.logger.createContext(`TelemetryModule`),this.emitter,B(B({},e.telemetry),{},{enabled:this.options.get(`telemetryEnabled`)&&r}),this),this.modules.telemetry.load()}}),this.emitter.on(`adapt level`,e=>{this.logger.debug(`adapt level`,{direction: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?Tr():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(B(B({},this.targetSubscription),{},{video:B(B({},this.targetSubscription.video),d==null?void 0:d.video),audio:B(B({},this.targetSubscription.audio),d==null?void 0:d.audio)})),this.emitter.emit(`adapted level`)}),this.emitter.on(`text track data`,e=>{let t=M(PS,this).find(t=>t.language===e.language),n=this.modules.sync.getTimeshiftOffset()/1e3,r=n-M(NS,this);if(A(NS,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`,B({},t)),t.type){case`client ip`:this.clientIp=t.ip;break;case`renditions`:this.updateTextTracks(t.renditions),A(FS,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(FS,this,void 0)}));break;case`subscription changed`:var r;try{kS(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`,Pi(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`,Pi(e)),this.emit(`channel switch failed`,{channelId:this.currentSubscription.channelId})}),this.emitter.on(`received data`,e=>{let t=this.modules.subscription.getCurrentSubscription(),n=dl(e);if(!t){this.logger.warn(`Received unwanted message`,B({},n));return}le(B(B({},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`,Fi(`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=so(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=ao(e))}else if(m===`av1`&&a!=null&&a.av01)h=Dc(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=tl(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`,B(B({},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 ce=this.options.get(`container`);ce&&this.attach(ce),this.logger.info(`Created Vindral instance`,{options:this.options});let le=function(){var e=P(function*(e){let t=e.channelId;M(FS,n)&&(yield M(FS,n));let r=n.modules.renditions.getRendition(e.renditionId,t);if(!cl(e.flags)){if(ll(e.flags)){let t=new TextDecoder().decode(e.payload),r=n.modules.sync.getTimeshiftOffset();if(e.renditionId!==0){let e=ir(t);if(e&&e.language!==void 0){let t=new Dl,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(PS,n).find(t=>t.language===e.language),s=a-M(NS,n);if(A(NS,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=vr(r.codec);if(i===`text`)throw Error(`Subtitles are not supported`);if(n.modules.incomingData.add(i,e.payload.byteLength),sl(e.flags)){let a=B(B({type:i,data:e.payload,codec:r.codec,codecString:r.codecString},e),{},{channelId:t},Sr(r)?{width:r.width,height:r.height}:{}),o=Jc(a.codec,a.payload);o&&n.sizes.set(a.renditionId,o);let s=wr({codec:r.codec,codecString:r.codecString});n.emitter.emit(`init segment`,{initSegment:a,mimeType:s}),n.emit(`initialized media`)}else{let t=bS(e,r,n.sizes.get(e.renditionId));n.modules.jitter.recordSample(t);let a=n.sampleProcessingSesssions.get(i);if(!a)a=hS(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`)),Bt(this.options.get(`maxSize`),Er())||(this.maxSize=this.options.get(`maxSize`)),this.options.get(`burstEnabled`)&&h.enableBurst(this.targetBufferTime)}set volume(e){this.playbackSource.volume=e}get volume(){return this.playbackSource.volume}set muted(e){if(e===this.muted)return;let t=this.playbackSource.muted;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.options.get(`burstEnabled`,this.channelId)?this.modules.subscription.enableBurst(this.targetBufferTime):this.modules.subscription.enableBurst(0))}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(PS,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(PS,this).filter(e=>e.mode!==`disabled`).map(e=>e.label)}get textTrack(){var e;return(e=M(PS,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.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?Er():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?Tr():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?Tr():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(B(B({},e),{},{video:B({},e.video),audio:B({},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 yS(this.options.get(`decoders`,e),this.browser.supportsMediaSource,this.options.get(`drm`))}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(IS,`MAX_POOL_SIZE`,10),m(IS,`REMOVE_CUE_THRESHOLD`,1e3*10),m(IS,`BACKGROUND_INACTIVITY_DISCONNECT_TIMEOUT`,1e3*15);var LS={bar:`_bar_qm7bl_1`,hidden:`_hidden_qm7bl_47`},RS=`_withThumbnails_suenn_19`,zS={"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:RS,"hide-on-small":`_hide-on-small_suenn_27`},BS={"icon-button":`_icon-button_5fg7v_1`},VS={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>`},HS={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"/>`},US={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"/>`},WS={viewBox:`-10 -10 44 44`,content:`<g fill="none" stroke="white">
@@ -51,7 +51,7 @@ var n = () => {}, r = "connection_failed", i = "connection_failed_will_not_attem
51
51
  source: t,
52
52
  type: "internal"
53
53
  }, {
54
- type: r,
54
+ mediaType: r,
55
55
  consecutiveErrorsCount: n
56
56
  }), A = (e, t) => new C(`No track context for ${e}${t ? `, rendition id ${t}` : ""}`, {
57
57
  isFatal: !1,
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.5.1-21-g6ea9dc89e",
2
+ "version": "4.5.1-22-g5030974ef",
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
1
  import { t as e } from "./DbdwBdhd.js";
2
- import "./v9wYC9jr.js";
3
- import { t } from "./CpHwnDBU.js";
2
+ import "./D-32Y9A0.js";
3
+ import { t } from "./ELviPbbt.js";
4
4
  export { t as registerComponents, e as registerDebugComponents };
@@ -1,5 +1,5 @@
1
- import "./v9wYC9jr.js";
2
- import { t as e } from "./CpHwnDBU.js";
1
+ import "./D-32Y9A0.js";
2
+ import { t as e } from "./ELviPbbt.js";
3
3
  //#region src/vindral-player-component.ts
4
4
  e();
5
5
  //#endregion