shaka-ts 5.2.4
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.
- package/NOTICE +16 -0
- package/README.md +141 -0
- package/package.json +26 -0
- package/shaka-player.d.ts +82 -0
- package/shaka-player.min.js +1161 -0
|
@@ -0,0 +1,1161 @@
|
|
|
1
|
+
var Io=Object.defineProperty,Co=Object.defineProperties;var xo=Object.getOwnPropertyDescriptors;var yo=Object.getOwnPropertySymbols;var wo=Object.prototype.hasOwnProperty,Mo=Object.prototype.propertyIsEnumerable;var ja=(y,e,t)=>e in y?Io(y,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):y[e]=t,To=(y,e)=>{for(var t in e||(e={}))wo.call(e,t)&&ja(y,t,e[t]);if(yo)for(var t of yo(e))Mo.call(e,t)&&ja(y,t,e[t]);return y},vo=(y,e)=>Co(y,xo(e));var l=(y,e,t)=>ja(y,typeof e!="symbol"?e+"":e,t);var So,bo,Fe=((bo=(So=globalThis.process)==null?void 0:So.env)==null?void 0:bo.NODE_ENV)!=="production";/*! @license
|
|
2
|
+
* Shaka Player
|
|
3
|
+
* Copyright 2016 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/var v=class{static assert(e,t){}};v.ENABLE_ASSERTS=Fe;v.ENABLE_ASSERTS&&console.assert&&console.assert.bind&&(v.assert=console.assert.bind(console));/*! @license
|
|
6
|
+
* Shaka Player
|
|
7
|
+
* Copyright 2016 Google LLC
|
|
8
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
9
|
+
*/var ys=class y{constructor(e,t){l(this,"major_");l(this,"minor_");this.major_=e,this.minor_=t}major(){return this.major_}minor(){return this.minor_}compareTo(e){let t=this.major_-e.major_,i=this.minor_-e.minor_;return t||i}toString(){return"v"+this.major_+"."+this.minor_}static parse(e){let t=e.substring(1).split(".",2);return new y(Number(t[0]),Number(t[1]))}};/*! @license
|
|
10
|
+
* Shaka Player
|
|
11
|
+
* Copyright 2016 Google LLC
|
|
12
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
*/var Qs=class{constructor(e,t,i){l(this,"libraryVersion_");l(this,"onPending_");l(this,"onExpired_");this.libraryVersion_=e,this.onPending_=t,this.onExpired_=i}enforce(e,t,i){(e.compareTo(this.libraryVersion_)>0?this.onPending_:this.onExpired_)(this.libraryVersion_,e,t,i)}};/*! @license
|
|
14
|
+
* Shaka Player
|
|
15
|
+
* Copyright 2016 Google LLC
|
|
16
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
17
|
+
*/var ar=class ar{static alwaysError(...e){}static alwaysWarn(...e){}static warnOnce(e,...t){ar.oneTimeWarningIssued_.has(e)||(ar.oneTimeWarningIssued_.add(e),ar.alwaysWarn(...t))}static error(...e){}static warning(...e){}static info(...e){}static debug(...e){}static v1(...e){}static v2(...e){}};l(ar,"Level",{NONE:0,ERROR:1,WARNING:2,INFO:3,DEBUG:4,V1:5,V2:6}),l(ar,"MAX_LOG_LEVEL",3),l(ar,"oneTimeWarningIssued_",new Set);var p=ar;self.console&&(p.logMap_=new Map().set(p.Level.ERROR,(...y)=>console.error(...y)).set(p.Level.WARNING,(...y)=>console.warn(...y)).set(p.Level.INFO,(...y)=>console.info(...y)).set(p.Level.DEBUG,(...y)=>console.log(...y)).set(p.Level.V1,(...y)=>console.debug(...y)).set(p.Level.V2,(...y)=>console.debug(...y)),p.alwaysWarn=(...y)=>console.warn(...y),p.alwaysError=(...y)=>console.error(...y),Fe?(p.currentLevel,p.setLevel=y=>{let e=t=>t<=y?(v.assert(p.logMap_.has(t),"Unexpected log level"),p.logMap_.get(t)):()=>{};p.currentLevel=y,p.error=e(p.Level.ERROR),p.warning=e(p.Level.WARNING),p.info=e(p.Level.INFO),p.debug=e(p.Level.DEBUG),p.v1=e(p.Level.V1),p.v2=e(p.Level.V2)},p.setLevel(p.MAX_LOG_LEVEL)):(p.MAX_LOG_LEVEL>=p.Level.ERROR&&(p.error=p.logMap_.get(p.Level.ERROR)),p.MAX_LOG_LEVEL>=p.Level.WARNING&&(p.warning=p.logMap_.get(p.Level.WARNING)),p.MAX_LOG_LEVEL>=p.Level.INFO&&(p.info=p.logMap_.get(p.Level.INFO)),p.MAX_LOG_LEVEL>=p.Level.DEBUG&&(p.debug=p.logMap_.get(p.Level.DEBUG)),p.MAX_LOG_LEVEL>=p.Level.V1&&(p.v1=p.logMap_.get(p.Level.V1)),p.MAX_LOG_LEVEL>=p.Level.V2&&(p.v2=p.logMap_.get(p.Level.V2))));/*! @license
|
|
18
|
+
* Shaka Player
|
|
19
|
+
* Copyright 2016 Google LLC
|
|
20
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
21
|
+
*/var or=class or{static init(e){v.assert(or.enforcer_==null,"Deprecate.init should only be called once."),or.enforcer_=new Qs(ys.parse(e),or.onPending_,or.onExpired_)}static deprecateFeature(e,t,i){let r=or.enforcer_;v.assert(r,"Missing deprecation enforcer. Was |init| called?");let s=new ys(e,0);r.enforce(s,t,i)}static onPending_(e,t,i,r){p.alwaysWarn([i,"has been deprecated and will be removed in",t,". We are currently at version",e,". Additional information:",r].join(" "))}static onExpired_(e,t,i,r){let s=[i,"has been deprecated and has been removed in",t,". We are now at version",e,". Additional information:",r].join(" ");p.alwaysError(s),v.assert(!1,s)}};l(or,"enforcer_",null);var Cr=or;/*! @license
|
|
22
|
+
* Shaka Player
|
|
23
|
+
* Copyright 2016 Google LLC
|
|
24
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
25
|
+
*/var _e=class{constructor(e){l(this,"gen_");l(this,"value_");this.gen_=e,this.value_=void 0}value(){return this.value_===void 0&&(this.value_=this.gen_(),v.assert(this.value_!==void 0,"Unable to create lazy value")),this.value_}reset(){this.value_=void 0}};/*! @license
|
|
26
|
+
* Shaka Player
|
|
27
|
+
* Copyright 2016 Google LLC
|
|
28
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
29
|
+
*/var Ai=class Ai{static registerDeviceFactory(e){v.assert(!Ai.factory_,"Device Factory should NOT be defined"),Ai.factory_=e}static registerDefaultDeviceFactory(e){v.assert(!Ai.defaultFactory_,"Default device Factory should NOT be defined"),Ai.defaultFactory_=e}static getDevice(){return v.assert(Ai.factory_||Ai.defaultFactory_,"Device Factory should be defined"),Ai.device_.value()}};l(Ai,"factory_",null),l(Ai,"defaultFactory_",null);var j=Ai;j.device_=new _e(()=>{let y;return j.factory_&&(y=j.factory_()),!y&&j.defaultFactory_&&(y=j.defaultFactory_()),y&&p.info(y.toString()),y});/*! @license
|
|
30
|
+
* Shaka Player
|
|
31
|
+
* Copyright 2016 Google LLC
|
|
32
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
33
|
+
*/var ie=class{supportsMediaSource(){}supportsMediaType(e){}supportsMediaCapabilities(){}getVersion(){}getDeviceName(){}getDeviceType(){}getBrowserEngine(){}requiresEncryptionInfoInAllInitSegments(e,t){}requiresClearAndEncryptedInitSegments(e){}insertEncryptionDataBeforeClear(e){}requiresTfhdFix(e){}requiresEC3InitSegments(){}requiresDvvcWorkaround(e){}supportsSequenceMode(){}supportsSmoothCodecSwitching(e){}seekDelay(){}detectMaxHardwareResolution(){}supportsServerCertificate(){}adjustConfig(e){}shouldOverrideDolbyVisionCodecs(){}shouldAvoidUseTextDecoderEncoder(){}supportsOfflineStorage(){}rejectCodecs(){}getHdrLevel(e){}supportsAirPlay(){}misreportAC3UsingDrm(){}returnLittleEndianUsingPlayReady(){}supportsEncryptionSchemePolyfill(){}misreportsSupportForPersistentLicenses(){}supportStandardVP9Checking(){}createMediaKeysWhenCheckingSupport(){}disableHEVCSupport(){}supportsCbcsWithoutEncryptionSchemeSupport(){}supportsContainerChangeType(){}needWaitForEncryptedEvent(e){}getRemote(e){}supportsWorkerTransmux(){}hasWorkingClearKeySupport(){}};l(ie,"DeviceType",{DESKTOP:"DESKTOP",MOBILE:"MOBILE",TV:"TV",VR:"VR",APPLE_VR:"APPLE_VR",CONSOLE:"CONSOLE",CAST:"CAST"}),l(ie,"BrowserEngine",{CHROMIUM:"CHROMIUM",EDGE:"EDGE",GECKO:"GECKO",WEBKIT:"WEBKIT",UNKNOWN:"UNKNOWN"});/*! @license
|
|
34
|
+
* Shaka Player
|
|
35
|
+
* Copyright 2016 Google LLC
|
|
36
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
37
|
+
*/var D=class y{static equal(e,t){if(!e&&!t)return!0;if(!e||!t||e.byteLength!=t.byteLength)return!1;if(y.unsafeGetArrayBuffer_(e)==y.unsafeGetArrayBuffer_(t)&&(e.byteOffset||0)==(t.byteOffset||0))return!0;let i=y.toUint8(e),r=y.toUint8(t);for(let s=0;s<e.byteLength;s++)if(i[s]!=r[s])return!1;return!0}static unsafeGetArrayBuffer_(e){return ArrayBuffer.isView(e)?e.buffer:e}static toArrayBuffer(e){if(ArrayBuffer.isView(e)){let t=e;return t.byteOffset==0&&t.byteLength==t.buffer.byteLength?t.buffer:new Uint8Array(t).buffer}else return e}static toUint8(e,t=0,i=1/0){return y.view_(e,t,i,Uint8Array)}static toUint16(e,t=0,i=1/0){return y.view_(e,t,i,Uint16Array)}static toDataView(e,t=0,i=1/0){return y.view_(e,t,i,DataView)}static view_(e,t,i,r){let s=y.unsafeGetArrayBuffer_(e),n=1;"BYTES_PER_ELEMENT"in r&&(n=r.BYTES_PER_ELEMENT);let a=((e.byteOffset||0)+e.byteLength)/n,o=((e.byteOffset||0)+t)/n,c=Math.floor(Math.max(0,Math.min(o,a))),d=Math.floor(Math.min(c+Math.max(i,0),a));return new r(s,c,d-c)}};/*! @license
|
|
38
|
+
* Shaka Player
|
|
39
|
+
* Copyright 2016 Google LLC
|
|
40
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
41
|
+
*/var Ii=class Ii{constructor(e,t,i,...r){l(this,"severity");l(this,"category");l(this,"code");l(this,"data");l(this,"handled");l(this,"message");l(this,"stack");this.severity=e,this.category=t,this.code=i,this.data=r,this.handled=!1;let s="Shaka Error "+this.code;if(Fe){let n="UNKNOWN",a="UNKNOWN";for(let o in Ii.Category)Ii.Category[o]==this.category&&(n=o);for(let o in Ii.Code)Ii.Code[o]==this.code&&(a=o);s="Shaka Error "+n+"."+a+" ("+this.data.toString()+")"}if(this.message=s,Ii.createStack)try{throw new Error(this.message||"Shaka Error")}catch(n){this.stack=n.stack}}toString(){return"shaka.util.Error "+JSON.stringify(this,null," ")}static getMediaElementErrorDetails(e){let t=e.code,i=e.msExtendedCode;i&&(i<0&&(i+=Math.pow(2,32)),i=i.toString(16));let r=e.message;return{code:t,extended:i,message:r}}};l(Ii,"createStack",!0),l(Ii,"Severity",{RECOVERABLE:1,CRITICAL:2}),l(Ii,"Category",{NETWORK:1,TEXT:2,MEDIA:3,MANIFEST:4,STREAMING:5,DRM:6,PLAYER:7,CAST:8,STORAGE:9,ADS:10}),l(Ii,"Code",{UNSUPPORTED_SCHEME:1e3,BAD_HTTP_STATUS:1001,HTTP_ERROR:1002,TIMEOUT:1003,MALFORMED_DATA_URI:1004,REQUEST_FILTER_ERROR:1006,RESPONSE_FILTER_ERROR:1007,MALFORMED_TEST_URI:1008,UNEXPECTED_TEST_REQUEST:1009,ATTEMPTS_EXHAUSTED:1010,SEGMENT_MISSING:1011,INVALID_TEXT_HEADER:2e3,INVALID_TEXT_CUE:2001,UNABLE_TO_DETECT_ENCODING:2003,BAD_ENCODING:2004,INVALID_XML:2005,INVALID_MP4_TTML:2007,INVALID_MP4_VTT:2008,UNABLE_TO_EXTRACT_CUE_START_TIME:2009,INVALID_MP4_CEA:2010,TEXT_COULD_NOT_GUESS_MIME_TYPE:2011,CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS:2012,TEXT_ONLY_WEBVTT_SRC_EQUALS:2013,MISSING_TEXT_PLUGIN:2014,UNSUPPORTED_EXTERNAL_THUMBNAILS_URI:2017,BUFFER_READ_OUT_OF_BOUNDS:3e3,JS_INTEGER_OVERFLOW:3001,EBML_OVERFLOW:3002,EBML_BAD_FLOATING_POINT_SIZE:3003,MP4_SIDX_WRONG_BOX_TYPE:3004,MP4_SIDX_INVALID_TIMESCALE:3005,MP4_SIDX_TYPE_NOT_SUPPORTED:3006,WEBM_CUES_ELEMENT_MISSING:3007,WEBM_EBML_HEADER_ELEMENT_MISSING:3008,WEBM_SEGMENT_ELEMENT_MISSING:3009,WEBM_INFO_ELEMENT_MISSING:3010,WEBM_DURATION_ELEMENT_MISSING:3011,WEBM_CUE_TRACK_POSITIONS_ELEMENT_MISSING:3012,WEBM_CUE_TIME_ELEMENT_MISSING:3013,MEDIA_SOURCE_OPERATION_FAILED:3014,MEDIA_SOURCE_OPERATION_THREW:3015,VIDEO_ERROR:3016,QUOTA_EXCEEDED_ERROR:3017,TRANSMUXING_FAILED:3018,CONTENT_TRANSFORMATION_FAILED:3019,TRANSMUXING_NO_VIDEO_DATA:3023,STREAMING_NOT_ALLOWED:3024,BUFFER_WRITE_OUT_OF_BOUNDS:3025,UNABLE_TO_GUESS_MANIFEST_TYPE:4e3,DASH_INVALID_XML:4001,DASH_NO_SEGMENT_INFO:4002,DASH_EMPTY_ADAPTATION_SET:4003,DASH_EMPTY_PERIOD:4004,DASH_WEBM_MISSING_INIT:4005,DASH_UNSUPPORTED_CONTAINER:4006,DASH_PSSH_BAD_ENCODING:4007,DASH_NO_COMMON_KEY_SYSTEM:4008,DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED:4009,DASH_CONFLICTING_KEY_IDS:4010,RESTRICTIONS_CANNOT_BE_MET:4012,HLS_PLAYLIST_HEADER_MISSING:4015,INVALID_HLS_TAG:4016,HLS_INVALID_PLAYLIST_HIERARCHY:4017,DASH_DUPLICATE_REPRESENTATION_ID:4018,HLS_MULTIPLE_MEDIA_INIT_SECTIONS_FOUND:4020,HLS_REQUIRED_ATTRIBUTE_MISSING:4023,HLS_REQUIRED_TAG_MISSING:4024,HLS_COULD_NOT_GUESS_CODECS:4025,HLS_KEYFORMATS_NOT_SUPPORTED:4026,DASH_UNSUPPORTED_XLINK_ACTUATE:4027,DASH_XLINK_DEPTH_LIMIT:4028,CONTENT_UNSUPPORTED_BY_BROWSER:4032,CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM:4033,NO_VARIANTS:4036,PERIOD_FLATTENING_FAILED:4037,INCONSISTENT_DRM_ACROSS_PERIODS:4038,HLS_VARIABLE_NOT_FOUND:4039,HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED:4040,HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED:4041,NO_WEB_CRYPTO_API:4042,CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM:4045,AES_128_INVALID_IV_LENGTH:4048,AES_128_INVALID_KEY_LENGTH:4049,DASH_CONFLICTING_AES_128:4050,DASH_UNSUPPORTED_AES_128:4051,DASH_INVALID_PATCH:4052,HLS_EMPTY_MEDIA_PLAYLIST:4053,DASH_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED:4054,CANNOT_ADD_EXTERNAL_CHAPTERS_TO_LIVE_STREAM:4055,WEBTRANSPORT_NOT_AVAILABLE:4056,WEBTRANSPORT_INITIALIZATION_FAILED:4057,MSF_VOD_CONTENT_NOT_SUPPORTED:4058,HLS_INVALID_KEY_IV_FOR_GCM:4059,HLS_INVALID_GCM_SEGMENT:4060,DASH_INVALID_JSON:4061,MSF_NO_CATALOG:4062,DASH_UNSUPPORTED_ESSENTIAL_PROPERTY:4063,MSF_CATALOG_TIMEOUT:4064,STREAMING_ENGINE_STARTUP_INVALID_STATE:5006,NO_RECOGNIZED_KEY_SYSTEMS:6e3,REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE:6001,FAILED_TO_CREATE_CDM:6002,FAILED_TO_ATTACH_TO_VIDEO:6003,INVALID_SERVER_CERTIFICATE:6004,FAILED_TO_CREATE_SESSION:6005,FAILED_TO_GENERATE_LICENSE_REQUEST:6006,LICENSE_REQUEST_FAILED:6007,LICENSE_RESPONSE_REJECTED:6008,ENCRYPTED_CONTENT_WITHOUT_DRM_INFO:6010,NO_LICENSE_SERVER_GIVEN:6012,OFFLINE_SESSION_REMOVED:6013,EXPIRED:6014,SERVER_CERTIFICATE_REQUIRED:6015,INIT_DATA_TRANSFORM_ERROR:6016,SERVER_CERTIFICATE_REQUEST_FAILED:6017,MIN_HDCP_VERSION_NOT_MATCH:6018,ERROR_CHECKING_HDCP_VERSION:6019,MISSING_EME_SUPPORT:6020,LOAD_INTERRUPTED:7e3,OPERATION_ABORTED:7001,NO_VIDEO_ELEMENT:7002,OBJECT_DESTROYED:7003,CONTENT_NOT_LOADED:7004,SRC_EQUALS_PRELOAD_NOT_SUPPORTED:7005,PRELOAD_DESTROYED:7006,QUEUE_INDEX_OUT_OF_BOUNDS:7007,CAST_API_UNAVAILABLE:8e3,NO_CAST_RECEIVERS:8001,ALREADY_CASTING:8002,UNEXPECTED_CAST_ERROR:8003,CAST_CANCELED_BY_USER:8004,CAST_CONNECTION_TIMED_OUT:8005,CAST_RECEIVER_APP_UNAVAILABLE:8006,STORAGE_NOT_SUPPORTED:9e3,INDEXED_DB_ERROR:9001,DEPRECATED_OPERATION_ABORTED:9002,REQUESTED_ITEM_NOT_FOUND:9003,MALFORMED_OFFLINE_URI:9004,CANNOT_STORE_LIVE_OFFLINE:9005,NO_INIT_DATA_FOR_OFFLINE:9007,LOCAL_PLAYER_INSTANCE_REQUIRED:9008,NEW_KEY_OPERATION_NOT_SUPPORTED:9011,KEY_NOT_FOUND:9012,MISSING_STORAGE_CELL:9013,STORAGE_LIMIT_REACHED:9014,DOWNLOAD_SIZE_CALLBACK_ERROR:9015,MODIFY_OPERATION_NOT_SUPPORTED:9016,INDEXED_DB_INIT_TIMED_OUT:9017,CS_IMA_SDK_MISSING:1e4,SS_IMA_SDK_MISSING:10002,CURRENT_DAI_REQUEST_NOT_FINISHED:10004,VAST_INVALID_XML:10007,CS_AD_CONTAINER_MISSING:10008,SS_AD_CONTAINER_MISSING:10009,MEDIATAILOR_REQUEST_FAILED:10010});var h=Ii;/*! @license
|
|
42
|
+
* Shaka Player
|
|
43
|
+
* Copyright 2016 Google LLC
|
|
44
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
45
|
+
*/var q=class y{static fromUTF8(e){if(!e)return"";let t=D.toUint8(e);if(t[0]==239&&t[1]==187&&t[2]==191&&(t=t.subarray(3)),self.TextDecoder&&!j.getDevice().shouldAvoidUseTextDecoderEncoder()){let r=new TextDecoder().decode(t);return r.includes("\uFFFD")&&p.alwaysError('Decoded string contains an "unknown character" codepoint. That probably means the UTF8 encoding was incorrect!'),r}else{let i="";for(let r=0;r<t.length;++r){let s=65533;if((t[r]&128)==0?s=t[r]:t.length>=r+2&&(t[r]&224)==192&&(t[r+1]&192)==128?(s=(t[r]&31)<<6|t[r+1]&63,r+=1):t.length>=r+3&&(t[r]&240)==224&&(t[r+1]&192)==128&&(t[r+2]&192)==128?(s=(t[r]&15)<<12|(t[r+1]&63)<<6|t[r+2]&63,r+=2):t.length>=r+4&&(t[r]&241)==240&&(t[r+1]&192)==128&&(t[r+2]&192)==128&&(t[r+3]&192)==128&&(s=(t[r]&7)<<18|(t[r+1]&63)<<12|(t[r+2]&63)<<6|t[r+3]&63,r+=3),s<=65535)i+=String.fromCharCode(s);else{let n=s-65536,a=n>>10,o=n&1023;i+=String.fromCharCode(55296+a),i+=String.fromCharCode(56320+o)}}return i}}static fromUTF16(e,t,i){if(!e)return"";if(!i&&e.byteLength%2!=0)throw p.error("Data has an incorrect length, must be even."),new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.BAD_ENCODING);let r=Math.floor(e.byteLength/2),s=new Uint16Array(r),n=D.toDataView(e);for(let a=0;a<r;a++)s[a]=n.getUint16(a*2,t);return y.fromCharCode(s)}static fromBytesAutoDetect(e){if(!e)return"";let t=D.toUint8(e);if(t[0]==239&&t[1]==187&&t[2]==191)return y.fromUTF8(t);if(t[0]==254&&t[1]==255)return y.fromUTF16(t.subarray(2),!1);if(t[0]==255&&t[1]==254)return y.fromUTF16(t.subarray(2),!0);let i=r=>t.byteLength<=r||t[r]>=9&&t[r]<=126;if(p.debug("Unable to find byte-order-mark, making an educated guess."),t[0]==0&&t[2]==0)return y.fromUTF16(e,!1);if(t[1]==0&&t[3]==0)return y.fromUTF16(e,!0);if(i(0)&&i(1)&&i(2)&&i(3))return y.fromUTF8(e);throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.UNABLE_TO_DETECT_ENCODING)}static toUTF8(e){if(self.TextEncoder&&!j.getDevice().shouldAvoidUseTextDecoderEncoder()){let t=new TextEncoder;return D.toArrayBuffer(t.encode(e))}else{let t=encodeURIComponent(e),i=unescape(t),r=new Uint8Array(i.length);for(let s=0;s<i.length;s++){let n=i[s];r[s]=n.charCodeAt(0)}return D.toArrayBuffer(r)}}static toUTF16(e,t){let i=new ArrayBuffer(e.length*2),r=new DataView(i);for(let s=0;s<e.length;++s){let n=e.charCodeAt(s);r.setUint16(s*2,n,t)}return i}static fromCharCode(e){return y.fromCharCodeImpl_.value()(e)}static resetFromCharCode(){y.fromCharCodeImpl_.reset()}static htmlUnescape(e){let t={"&":"&","<":"<",">":">",""":'"',"'":"'"," ":"\xA0","‎":"\u200E","‏":"\u200F"},i=/&(?:amp|lt|gt|quot|apos|nbsp|lrm|rlm|#[xX]?[0-9a-fA-F]+);/g,r=RegExp(i.source);return e&&r.test(e)?e.replace(i,s=>{if(s[1]=="#"){let n=0;return s[2]=="x"||s[2]=="X"?n=parseInt(s.substring(3),16):n=parseInt(s.substring(2),10),n>=0&&n<=1114111?String.fromCodePoint(n):""}return t[s]||"'"}):e||""}};q.fromCharCodeImpl_=new _e(()=>{let y=e=>{try{let t=new Uint8Array(e),i=String.fromCharCode.apply(null,t);return v.assert(i,"Should get value"),i.length>0}catch(t){return!1}};for(let e=64*1024;e>0;e/=2)if(y(e))return t=>{let i="";for(let r=0;r<t.length;r+=e){let s=t.subarray(r,r+e);i+=String.fromCharCode.apply(null,s)}return i};return v.assert(!1,"Unable to create a fromCharCode method"),null});/*! @license
|
|
46
|
+
* Shaka Player
|
|
47
|
+
* Copyright 2016 Google LLC
|
|
48
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
49
|
+
*/var ne=class y{static toStandardBase64(e){let t=D.toUint8(e);if(!Uint8Array.prototype.toBase64){let i=q.fromCharCode(t);return btoa(i)}return t.toBase64({alphabet:"base64",omitPadding:!1})}static toBase64(e,t){if(t=t==null?!0:t,!Uint8Array.prototype.toBase64){let r=y.toStandardBase64(e).replace(/\+/g,"-").replace(/\//g,"_");return t?r:r.replace(/[=]*$/,"")}return D.toUint8(e).toBase64({alphabet:"base64url",omitPadding:!t})}static fromBase64(e){if(!("fromBase64"in Uint8Array)){let r=self.atob(e.replace(/-/g,"+").replace(/_/g,"/")),s=new Uint8Array(r.length);for(let n=0;n<r.length;++n)s[n]=r.charCodeAt(n);return s}let t=e.replace(/\s+/g,""),i=/[-_]/.test(t);return Uint8Array.fromBase64(t,{alphabet:i?"base64url":"base64"})}static fromHex(e){if(!("fromHex"in Uint8Array)){let t=e.length/2,i=new Uint8Array(t);for(let r=0;r<t;r++)i[r]=parseInt(e.substr(r*2,2),16);return i}return Uint8Array.fromHex(e)}static toHex(e){let t=D.toUint8(e);if(!Uint8Array.prototype.toHex){let i="";for(let r of t)r=r.toString(16),r.length==1&&(r="0"+r),i+=r;return i}return t.toHex()}static concat(...e){return y.concatRange(e,0,e.length)}static concatRange(e,t=0,i=e.length){let r=0;for(let a=t;a<i;++a)r+=e[a].byteLength;let s=new Uint8Array(r),n=0;for(let a=t;a<i;++a){let o=e[a];ArrayBuffer.isView(o)&&o.BYTES_PER_ELEMENT===1?s.set(o,n):s.set(D.toUint8(o),n),n+=o.byteLength}return s}static removeEmulationPreventionBytes(e){let t=new Uint8Array(e.length),i=0,r=0;for(let s=0;s<e.length;s++){let n=e[s];if(i>=2&&n==3){i=0;continue}t[r++]=n,n==0?i++:i=0}return t.subarray(0,r)}};/*! @license
|
|
50
|
+
* Shaka Player
|
|
51
|
+
* Copyright 2016 Google LLC
|
|
52
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
53
|
+
*/var Vt=class Vt{static isBrowserSupported(){return!!window.MediaKeys&&!!window.navigator&&!!window.navigator.requestMediaKeySystemAccess&&!!window.MediaKeySystemAccess&&!!window.MediaKeySystemAccess.prototype.getConfiguration}static areDrmCompatible(e,t){if(e===t||!e.length||!t.length)return!0;for(let i of e){if(Vt.isClearKeyWihRawKey(i))return!0;for(let r of t)if(i.keySystem===r.keySystem||Vt.isClearKeyWihRawKey(r))return!0}return!1}static getCommonDrmInfos(e,t){if(!e.length)return t;if(!t.length)return e;let i=[];for(let r of e)for(let s of t)if(r.keySystem==s.keySystem){let n=new Map,a=(r.initData||[]).concat(s.initData||[]);for(let u of a)n.set(u.keyId,u);let o=Array.from(n.values()),c=r.keyIds&&s.keyIds?new Set([...r.keyIds,...s.keyIds]):r.keyIds||s.keyIds,d={keySystem:r.keySystem,licenseServerUri:r.licenseServerUri||s.licenseServerUri,distinctiveIdentifierRequired:r.distinctiveIdentifierRequired||s.distinctiveIdentifierRequired,persistentStateRequired:r.persistentStateRequired||s.persistentStateRequired,videoRobustness:r.videoRobustness||s.videoRobustness,audioRobustness:r.audioRobustness||s.audioRobustness,serverCertificate:r.serverCertificate||s.serverCertificate,serverCertificateUri:r.serverCertificateUri||s.serverCertificateUri,initData:o,keyIds:c};i.push(d);break}else Vt.isClearKeyWihRawKey(r)?i.push(r):Vt.isClearKeyWihRawKey(s)&&i.push(s);return i}static keySystem(e){return e?e.keySystem:""}static isClearKeySystem(e){return e==="org.w3.clearkey"}static isWidevineKeySystem(e){return e?!!e.match(/^com\.widevine\.alpha/):!1}static isPlayReadyKeySystem(e){return e?!!e.match(/^com\.(microsoft|chromecast)\.playready/):!1}static isFairPlayKeySystem(e){return e?!!e.match(/^com\.apple\.fps/):!1}static isWisePlayKeySystem(e){return e==="com.huawei.wiseplay"}static isClearKeyWihRawKey(e){let t=e.licenseServerUri;return t?t.startsWith("data:application/json;base64,"):!1}static generateKeySystemCacheKey_(e,t,i,r){let n=[...new Set(r)].sort().join("#");return`${e}#${t}#${i}#${n}`}static hasMediaKeySystemAccess(e,t,i,r){let s=Vt.generateKeySystemCacheKey_(e,t,i,r);return Vt.memoizedMediaKeySystemAccessRequests_.has(s)}static getMediaKeySystemAccess(e,t,i,r){let s=Vt.generateKeySystemCacheKey_(e,t,i,r);return Vt.memoizedMediaKeySystemAccessRequests_.get(s)||null}static setMediaKeySystemAccess(e,t,i,r,s){let n=Vt.generateKeySystemCacheKey_(e,t,i,r);Vt.memoizedMediaKeySystemAccessRequests_.set(n,s)}static clearMediaKeySystemAccessMap(){Vt.memoizedMediaKeySystemAccessRequests_.clear()}static isMediaKeysPolyfilled(e){return e===window.shakaMediaKeysPolyfill}static getUuidMap(e=!1,t=!1){let i={"1077efec-c0b2-4d02-ace3-3c1e52e2fb4b":"org.w3.clearkey","e2719d58-a985-b3c9-781a-b030af78d30e":"org.w3.clearkey","edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":"com.widevine.alpha","9a04f079-9840-4286-ab92-e65be0885f95":"com.microsoft.playready","79f0049a-4098-8642-ab92-e65be0885f95":"com.microsoft.playready","94ce86fb-07ff-4f43-adb8-93d2fa968ca2":"com.apple.fps","3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c":"com.huawei.wiseplay"};if(!e&&!t)return i;let r={};for(let s in i){let n=i[s],a=s;t?a="urn:uuid:"+s:e&&(a=s.replace(/-/g,"")),r[a]=n}return r}static normalizeClearKeyValue(e){return e.length===Vt.CLEAR_KEY_BASE64URL_LENGTH_?e:ne.toBase64(ne.fromHex(e),!1)}};l(Vt,"memoizedMediaKeySystemAccessRequests_",new Map),l(Vt,"CLEAR_KEY_BASE64URL_LENGTH_",22);var de=Vt;de.DUMMY_KEY_ID=new _e(()=>D.toArrayBuffer(new Uint8Array([0])));/*! @license
|
|
54
|
+
* Shaka Player
|
|
55
|
+
* Copyright 2016 Google LLC
|
|
56
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
57
|
+
*/var ae=class y{constructor(e){l(this,"onTick_");l(this,"cancelPending_");this.onTick_=e,this.cancelPending_=null}tickNow(){return this.stop(),this.onTick_(),this}tickAfter(e){return this.stop(),this.schedule_(()=>{this.onTick_()},e),this}tickEvery(e){if(this.stop(),Fe){let t=Error("Timer created").stack;y.activeTimers.set(this,t)}return this.scheduleRepeating_(e),this}stop(){var e;(e=this.cancelPending_)==null||e.call(this),this.cancelPending_=null,Fe&&y.activeTimers.delete(this)}schedule_(e,t){let i=!0,r=null;this.cancelPending_=()=>{clearTimeout(r),i=!1},r=setTimeout(()=>{i&&e()},t*1e3)}scheduleRepeating_(e){this.schedule_(()=>{this.scheduleRepeating_(e),this.onTick_()},e)}};Fe&&(ae.activeTimers=new Map);/*! @license
|
|
58
|
+
* Shaka Player
|
|
59
|
+
* Copyright 2016 Google LLC
|
|
60
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
61
|
+
*/var xr=class y{constructor(e,t=!1){l(this,"maxAttempts_");l(this,"baseDelay_");l(this,"fuzzFactor_");l(this,"backoffFactor_");l(this,"numAttempts_");l(this,"nextUnfuzzedDelay_");l(this,"autoReset_");let i=y.defaultRetryParameters();this.maxAttempts_=e.maxAttempts==null?i.maxAttempts:e.maxAttempts,v.assert(this.maxAttempts_>=1,"maxAttempts should be >= 1"),this.baseDelay_=e.baseDelay==null?i.baseDelay:e.baseDelay,v.assert(this.baseDelay_>=0,"baseDelay should be >= 0"),this.fuzzFactor_=e.fuzzFactor==null?i.fuzzFactor:e.fuzzFactor,v.assert(this.fuzzFactor_>=0,"fuzzFactor should be >= 0"),this.backoffFactor_=e.backoffFactor==null?i.backoffFactor:e.backoffFactor,v.assert(this.backoffFactor_>=0,"backoffFactor should be >= 0"),this.numAttempts_=0,this.nextUnfuzzedDelay_=this.baseDelay_,this.autoReset_=t,this.autoReset_&&(v.assert(this.maxAttempts_>=2,"maxAttempts must be >= 2 for autoReset == true"),this.numAttempts_=1)}async attempt(){if(this.numAttempts_>=this.maxAttempts_)if(this.autoReset_)this.reset_();else throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.ATTEMPTS_EXHAUSTED);let e=this.numAttempts_;if(this.numAttempts_++,e==0){v.assert(!this.autoReset_,"Failed to delay with auto-reset!");return}let t=y.fuzz_(this.nextUnfuzzedDelay_,this.fuzzFactor_);await new Promise(i=>{y.defer(t,i)}),this.nextUnfuzzedDelay_*=this.backoffFactor_}static defaultRetryParameters(){return{maxAttempts:2,baseDelay:1e3,backoffFactor:2,fuzzFactor:.5,timeout:3e4,stallTimeout:5e3,connectionTimeout:1e4}}static fuzz_(e,t){let r=(Math.random()*2-1)*t;return e*(1+r)}reset_(){v.assert(this.autoReset_,"Should only be used for auto-reset!"),this.numAttempts_=1,this.nextUnfuzzedDelay_=this.baseDelay_}static defer(e,t){new ae(t).tickAfter(e/1e3)}};/*! @license
|
|
62
|
+
* Shaka Player
|
|
63
|
+
* Copyright 2016 Google LLC
|
|
64
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
65
|
+
*/var je=class y{constructor(e,t){l(this,"promise");l(this,"onAbort_");l(this,"abortPromise_");this.promise=e,this.onAbort_=t,this.abortPromise_=null}get aborted(){return this.abortPromise_!==null}static failed(e){return new y(Promise.reject(e),()=>Promise.resolve())}static aborted(){let e=Promise.reject(y.abortError());return e.catch(()=>{}),new y(e,()=>Promise.resolve())}static abortError(){return new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED)}static completed(e){return new y(Promise.resolve(e),()=>Promise.resolve())}static notAbortable(e){return new y(e,()=>e.catch(()=>{}))}abort(){return this.abortPromise_||(this.abortPromise_=this.onAbort_()),this.abortPromise_}static all(e){return new y(Promise.all(e.map(t=>t.promise)),()=>Promise.all(e.map(t=>t.abort())))}finally(e){return this.promise.then(t=>e(!0),t=>e(!1)),this}chain(e,t){let i=Promise.withResolvers();i.promise.catch(()=>{});let r=y.abortError(),s=()=>(i.reject(r),this.abort()),n=a=>o=>{if(this.abortPromise_&&a){i.reject(r);return}let c=a?e:t;if(!c){(a?i.resolve:i.reject)(o);return}s=y.wrapChainCallback_(c,o,i)};return this.promise.then(n(!0),n(!1)),new y(i.promise,()=>s())}static wrapChainCallback_(e,t,i){try{let r=e(t);return r&&r.promise&&r.abort?(i.resolve(r.promise),()=>r.abort()):(i.resolve(r),()=>Promise.resolve(r).then(()=>{},()=>{}))}catch(r){return i.reject(r),()=>Promise.resolve()}}};/*! @license
|
|
66
|
+
* Shaka Player
|
|
67
|
+
* Copyright 2016 Google LLC
|
|
68
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
69
|
+
*/var Ts=class Ts{constructor(e,t){l(this,"bubbles");l(this,"cancelable");l(this,"defaultPrevented");l(this,"timeStamp");l(this,"type");l(this,"isTrusted");l(this,"currentTarget");l(this,"target");l(this,"stopped");if(t)if(t instanceof Map)for(let i of t.keys())Object.defineProperty(this,i,{value:t.get(i),writable:!0,enumerable:!0});else{let i=Ts.recastDictAsObject_(t);for(let r in i)Object.defineProperty(this,r,{value:i[r],writable:!0,enumerable:!0})}this.bubbles=!1,this.cancelable=!1,this.defaultPrevented=!1,this.timeStamp=window.performance&&window.performance.now?window.performance.now():Date.now(),this.type=e,this.isTrusted=!1,this.currentTarget=null,this.target=null,this.stopped=!1}static fromRealEvent(e){let t=new Ts(e.type);for(let i in e)Object.defineProperty(t,i,{value:e[i],writable:!0,enumerable:!0});return t}static recastDictAsObject_(e){return v.assert(!(e instanceof Map),"dict should not be a map"),e}preventDefault(){this.cancelable&&(this.defaultPrevented=!0)}stopImmediatePropagation(){this.stopped=!0}stopPropagation(){}};l(Ts,"EventName",{AbrStatusChanged:"abrstatuschanged",Adaptation:"adaptation",AudioTrackChanged:"audiotrackchanged",AudioTracksChanged:"audiotrackschanged",BoundaryCrossed:"boundarycrossed",Buffering:"buffering",BufferAppending:"bufferappending",CanUpdateStartTime:"canupdatestarttime",Complete:"complete",ConfigurationChanged:"configurationchanged",CurrentItemChanged:"currentitemchanged",DownloadCompleted:"downloadcompleted",DownloadFailed:"downloadfailed",DownloadHeadersReceived:"downloadheadersreceived",DrmSessionUpdate:"drmsessionupdate",Emsg:"emsg",ItemsInserted:"itemsinserted",ItemsRemoved:"itemsremoved",Prft:"prft",Error:"error",ExpirationUpdated:"expirationupdated",FirstQuartile:"firstquartile",GapJumped:"gapjumped",KeyStatusChanged:"keystatuschanged",Loaded:"loaded",Loading:"loading",ManifestParsed:"manifestparsed",ManifestUpdated:"manifestupdated",MediaQualityChanged:"mediaqualitychanged",MediaSourceRecovered:"mediasourcerecovered",MetadataAdded:"metadataadded",Metadata:"metadata",Midpoint:"midpoint",NoSpatialVideoInfoEvent:"nospatialvideoinfo",OnStateChange:"onstatechange",ProgramInformation:"programinformation",RateChange:"ratechange",SegmentAppended:"segmentappended",SessionDataEvent:"sessiondata",SpatialVideoInfoEvent:"spatialvideoinfo",StallDetected:"stalldetected",Started:"started",StateChanged:"statechanged",Streaming:"streaming",TextChanged:"textchanged",ThirdQuartile:"thirdquartile",TimelineChanged:"timelinechange",TimelineRegionAdded:"timelineregionadded",TimelineRegionEnter:"timelineregionenter",TimelineRegionExit:"timelineregionexit",TracksChanged:"trackschanged",Unloading:"unloading",VariantChanged:"variantchanged"});var U=Ts;/*! @license
|
|
70
|
+
* Shaka Player
|
|
71
|
+
* Copyright 2016 Google LLC
|
|
72
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
73
|
+
*//*! @license
|
|
74
|
+
* Shaka Player
|
|
75
|
+
* Copyright 2016 Google LLC
|
|
76
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
77
|
+
*/var lr=class{constructor(){l(this,"map_");this.map_=new Map}push(e,t){this.map_.getOrInsertComputed(e,()=>[]).push(t)}get(e){return this.map_.has(e)?this.map_.get(e).slice():null}getAll(){let e=[];for(let t of this.map_.values())e.push(...t);return e}remove(e,t){if(!this.map_.has(e))return;let i=this.map_.get(e).filter(r=>r!=t);this.map_.set(e,i),i.length||this.map_.delete(e)}clear(){this.map_.clear()}forEach(e){this.map_.forEach((t,i)=>{e(i,t)})}size(){return this.map_.size}keys(){return Array.from(this.map_.keys())}};/*! @license
|
|
78
|
+
* Shaka Player
|
|
79
|
+
* Copyright 2016 Google LLC
|
|
80
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
81
|
+
*/var vs=class vs{constructor(){l(this,"listeners_");l(this,"dispatchTarget");this.listeners_=new lr,this.dispatchTarget=this}addEventListener(e,t,i){this.listeners_&&this.listeners_.push(e,t)}listenToAllEvents(e){this.addEventListener(vs.ALL_EVENTS,e)}removeEventListener(e,t,i){this.listeners_&&this.listeners_.remove(e,t)}dispatchEvent(e){if(v.assert(e instanceof U,"FakeEventTarget can only dispatch FakeEvents!"),!this.listeners_)return!0;let t=this.listeners_.get(e.type)||[],i=this.listeners_.get(vs.ALL_EVENTS);i&&(t=t.concat(i));for(let r of t){e.target=this.dispatchTarget,e.currentTarget=this.dispatchTarget;try{r.handleEvent?r.handleEvent(e):r.call(this,e)}catch(s){p.error("Uncaught exception in event handler",s,s?s.message:null,s?s.stack:null)}if(e.stopped)break}return e.defaultPrevented}release(){this.listeners_=null}};l(vs,"ALL_EVENTS","__shaka_all_events__");var Le=vs;/*! @license
|
|
82
|
+
* Shaka Player
|
|
83
|
+
* Copyright 2016 Google LLC
|
|
84
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
85
|
+
*//*! @license
|
|
86
|
+
* Shaka Player
|
|
87
|
+
* Copyright 2016 Google LLC
|
|
88
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
89
|
+
*/var Ne=class y{static cloneObject(e){let t=new WeakSet,i=r=>{switch(typeof r){case"undefined":case"boolean":case"number":case"string":case"symbol":case"function":return r;default:{if(!r||ArrayBuffer.isView(r))return r;if(t.has(r))return null;let n=Array.isArray(r);if(r.constructor!=Object&&!n)return null;t.add(r);let a=n?[]:{};for(let o in r)a[o]=i(r[o]);return n&&(a.length=r.length),a}}};return i(e)}static shallowCloneObject(e){let t={};for(let i in e)t[i]=e[i];return t}static alphabeticalKeyOrderStringify(e){return Array.isArray(e)?y.arrayStringify_(e):typeof e=="function"?"":e instanceof Object?y.objectStringify_(e):JSON.stringify(e)}static objectStringify_(e){let t=Object.keys(e);t.sort();let i=[];for(let r of t){let s=JSON.stringify(r),n=e[r];if(n!==void 0){let a=y.alphabeticalKeyOrderStringify(n);a&&i.push(s+":"+a)}}return"{"+i.join(",")+"}"}static arrayStringify_(e){let t=[];for(let i=0;i<e.length;i++){let r=i.toString(),s=e[i];if(s!==void 0){let n=y.alphabeticalKeyOrderStringify(s);n&&t.push(r+":"+n)}}return"["+t.join(",")+"]"}};/*! @license
|
|
90
|
+
* Shaka Player
|
|
91
|
+
* Copyright 2016 Google LLC
|
|
92
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
93
|
+
*/var ye=class y{static defaultEquals(e,t){return typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)?!0:e===t}static remove(e,t){let i=e.indexOf(t);i>-1&&e.splice(i,1)}static count(e,t){let i=0;for(let r of e)i+=t(r)?1:0;return i}static hasSameElements(e,t,i){if(i||(i=y.defaultEquals),e.length!=t.length)return!1;let r=t.slice();for(let s of e){let n=r.findIndex(a=>i(s,a));if(n==-1)return!1;r[n]=r[r.length-1],r.pop()}return r.length==0}static partition(e,t){let i=[],r=[];for(let s of e)t(s)?i.push(s):r.push(s);return[i,r]}static binarySearch(e,t){let i=0,r=e.length;for(;i<r;){let s=i+r>>>1;t(e[s])?i=s+1:r=s}return i}static equal(e,t,i){if(e===t)return!0;if(!e||!t)return e==t;if(i||(i=y.defaultEquals),e.length!=t.length)return!1;for(let r=0;r<e.length;r++)if(!i(e[r],t[r]))return!1;return!0}};/*! @license
|
|
94
|
+
* Shaka Player
|
|
95
|
+
* Copyright 2016 Google LLC
|
|
96
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
97
|
+
*/var gi=class{constructor(){l(this,"operations_");this.operations_=[]}manage(e){this.operations_.push(e.finally(()=>{ye.remove(this.operations_,e)}))}destroy(){let e=[];for(let t of this.operations_)t.promise.catch(()=>{}),e.push(t.abort());return this.operations_=[],Promise.all(e)}};/*! @license
|
|
98
|
+
* Shaka Player
|
|
99
|
+
* Copyright 2016 Google LLC
|
|
100
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
101
|
+
*/var fe=class{static resolve(e,t){return new URL(t,e).toString()}static resolveUris(e,t,i=""){if(t.length==0)return e;let r=[];for(let s of e)for(let n of t){let a=new URL(n,s);if(i){let o=new URLSearchParams(i);for(let[c,d]of o.entries())a.searchParams.append(c,d)}r.push(a.toString())}return r}static getScheme(e){try{let i=new URL(e).protocol.slice(0,-1);if(i&&e.toLowerCase().startsWith(i+":"))return i}catch(i){}let t=e.match(/^([a-zA-Z][a-zA-Z0-9+.-]*):/);return t?t[1].toLowerCase():""}static setScheme(e,t){try{let r=new URL(e);if(r.protocol=t,r.protocol===t+":")return r.toString()}catch(r){}let i=e.indexOf(":");return i===-1?t+":"+e:t+e.slice(i)}static getDomain(e){try{let i=new URL(e).hostname;if(i)return i}catch(i){}let t=e.match(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/([^/?#]*)/);return t?t[1]:""}static setDomain(e,t){let i=new URL(e);return i.hostname=t,i.toString()}static applyUrlParams(e,t){let i=t==null?void 0:t();if(!i)return e;let r=new URL(e);for(let[s,n]of new URLSearchParams(i))r.searchParams.set(s,n);return r.toString()}static appendParams(e,t){if(!t.size)return e;let i=new URL(e);for(let[r,s]of t.entries())i.searchParams.set(r,s);return i.toString()}};/*! @license
|
|
102
|
+
* Shaka Player
|
|
103
|
+
* Copyright 2016 Google LLC
|
|
104
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
105
|
+
*/var _i=class _i extends Le{constructor(t,i,r,s,n,a,o){super();l(this,"config_");l(this,"destroyed_");l(this,"operationManager_");l(this,"requestFilters_");l(this,"responseFilters_");l(this,"onProgressUpdated_");l(this,"onHeadersReceived_");l(this,"onDownloadCompleted_");l(this,"onDownloadFailed_");l(this,"onRequest_");l(this,"onRetry_");l(this,"onResponse_");l(this,"hostCommonAccessTokenMap_");this.config_=null,this.destroyed_=!1,this.operationManager_=new gi,this.requestFilters_=new Set,this.responseFilters_=new Set,this.onProgressUpdated_=t||null,this.onHeadersReceived_=i||null,this.onDownloadCompleted_=r||null,this.onDownloadFailed_=s||null,this.onRequest_=n||null,this.onRetry_=a||null,this.onResponse_=o||null,this.hostCommonAccessTokenMap_=new Map}configure(t){this.config_=t}static registerScheme(t,i,r,s=!1){v.assert(r==null||r>0,"explicit priority must be > 0"),r=r||_i.PluginPriority.APPLICATION;let n=_i.schemes_.get(t);(!n||r>=n.priority)&&_i.schemes_.set(t,{priority:r,plugin:i,progressSupport:s})}static unregisterScheme(t){_i.schemes_.delete(t)}copyFiltersInto(t){for(let i of this.requestFilters_)t.requestFilters_.add(i);for(let i of this.responseFilters_)t.responseFilters_.add(i)}registerRequestFilter(t){this.requestFilters_.add(t)}unregisterRequestFilter(t){this.requestFilters_.delete(t)}clearAllRequestFilters(){this.requestFilters_.clear()}registerResponseFilter(t){this.responseFilters_.add(t)}unregisterResponseFilter(t){this.responseFilters_.delete(t)}clearAllResponseFilters(){this.responseFilters_.clear()}clearCommonAccessTokenMap(){this.hostCommonAccessTokenMap_.clear()}static defaultRetryParameters(){return xr.defaultRetryParameters()}static makeRequest(t,i,r=null){return{uris:t,method:"GET",body:null,headers:{},allowCrossSiteCredentials:!1,retryParameters:i,licenseRequestType:null,sessionId:null,drmInfo:null,initData:null,initDataType:null,streamDataCallback:r,attempt:0}}destroy(){return this.destroyed_=!0,this.requestFilters_.clear(),this.responseFilters_.clear(),this.hostCommonAccessTokenMap_.clear(),super.release(),this.operationManager_.destroy()}request(t,i,r){let s=new _i.NumBytesRemainingClass;if(this.destroyed_){let m=Promise.reject(new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED));return m.catch(()=>{}),new Js(m,()=>Promise.resolve(),s)}v.assert(i.uris&&i.uris.length,"Request without URIs!"),i.method=i.method||"GET",i.headers=i.headers||{};let n=Ne.cloneObject(i.headers);i.retryParameters=i.retryParameters?Ne.cloneObject(i.retryParameters):_i.defaultRetryParameters(),i.uris=Ne.cloneObject(i.uris),i.attempt=0;let a=this.makeRequestWithRetry_(t,i,r,s,n),o=a.chain(m=>this.filterResponse_(t,m,r)),c=0;a.promise.then(()=>{c=Date.now()},()=>{});let d=o.chain(m=>{let f=Date.now()-c,g=m.response;if(g.timeMs+=f,!m.gotProgress&&this.onProgressUpdated_&&!g.fromCache&&i.method!="HEAD"&&t==Eo.SEGMENT){let _=this.allowSwitch_(r);this.onProgressUpdated_(g.timeMs,g.data.byteLength,_,i,r)}return this.onResponse_&&this.onResponse_(t,g,r),g},m=>{throw m&&(v.assert(m instanceof h,"Wrong error type"),m.severity=h.Severity.CRITICAL),m}),u=new Js(d.promise,()=>d.abort(),s);return this.operationManager_.manage(u),u}filterRequest_(t,i,r){let s=je.completed(void 0),n=a=>{s=s.chain(()=>(i.body&&(i.body=D.toArrayBuffer(i.body)),a(t,i,r)))};this.onRequest_&&n(this.onRequest_);for(let a of this.requestFilters_)n(a);return s.chain(void 0,a=>{throw a instanceof h&&a.code==h.Code.OPERATION_ABORTED?a:new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.REQUEST_FILTER_ERROR,a)})}makeRequestWithRetry_(t,i,r,s,n){let a=new xr(i.retryParameters,!1);return this.send_(t,i,r,a,null,s,n)}send_(t,i,r,s,n,a,o){v.assert(this.config_,"Config must not be null!");let c=i.attempt%i.uris.length;i.headers=Ne.cloneObject(o);let d=this.filterRequest_(t,i,r),u=Date.now(),m=0;if(d.promise.then(()=>{m=Date.now()-u},()=>{}),this.config_.forceHTTP&&(i.uris[c]=i.uris[c].replace("https://","http://")),this.config_.forceHTTPS&&(i.uris[c]=i.uris[c].replace("http://","https://")),c>0&&this.onRetry_){let L=i.uris[c],V=i.uris[c-1];this.onRetry_(t,r,L,V)}let f=fe.getScheme(i.uris[c]),g=!1;f||(f=_i.getLocationProtocol_(),v.assert(f[f.length-1]==":","location.protocol expected to end with a colon!"),f=f.slice(0,-1),i.uris[c]=fe.setScheme(i.uris[c],f)),f=f.toLowerCase();let _=_i.schemes_.get(f),T=_?_.plugin:null;if(!T)return je.failed(new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.UNSUPPORTED_SCHEME,i.uris[c]));let S=_.progressSupport,b=this.hostCommonAccessTokenMap_.get(fe.getDomain(i.uris[c]));b&&(i.headers[this.config_.commonAccessTokenHeaderName]=b);let E=d.chain(()=>je.notAbortable(s.attempt())),C=null,A=null,w=!1,M=!1,x;return E.chain(()=>{if(this.destroyed_)return je.aborted();x=Date.now();let L=Eo.SEGMENT,V=0,ee=(Z,ce,W)=>{if(C&&C.stop(),A&&A.tickAfter(J/1e3),this.onProgressUpdated_&&t==L){V++,i.packetNumber=V;let z=this.allowSwitch_(r);this.onProgressUpdated_(Z,ce,z,i,r),g=!0,a.setBytes(W)}},oe=Z=>{M=!0,i.timeToFirstByte=Date.now()-i.requestStartTime,this.onHeadersReceived_&&this.onHeadersReceived_(Z,i,t)};i.requestStartTime=Date.now();let le=T(i.uris[c],i,t,ee,oe,{minBytesForProgressEvents:this.config_.minBytesForProgressEvents});if(!S)return le;let H=i.retryParameters.connectionTimeout;H&&(C=new ae(()=>{w=!0,le.abort()}),C.tickAfter(H/1e3));let J=i.retryParameters.stallTimeout;return J&&(A=new ae(()=>{w=!0,le.abort()})),le}).chain(L=>{C&&C.stop(),A&&A.stop(),L.timeMs==null&&(L.timeMs=Date.now()-x,L.timeMs+=m);let V=L.headers[this.config_.commonAccessTokenHeaderName];V&&this.hostCommonAccessTokenMap_.set(fe.getDomain(L.uri),V);let ee={response:L,gotProgress:g};return M||this.onHeadersReceived_&&this.onHeadersReceived_(L.headers,i,t),this.onDownloadCompleted_&&this.onDownloadCompleted_(t,i,r,L),ee},L=>{if(C&&C.stop(),A&&A.stop(),this.onDownloadFailed_){let V=null,ee=0;L instanceof h&&(V=L,L.code==h.Code.BAD_HTTP_STATUS&&(ee=L.data[1])),this.onDownloadFailed_(t,i,r,V,ee,w)}if(this.destroyed_)return je.aborted();if(w&&(L=new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,i.uris[c],t)),L instanceof h){if(L.code==h.Code.OPERATION_ABORTED)throw L;if(L.code==h.Code.ATTEMPTS_EXHAUSTED)throw v.assert(n,"Should have last error"),n;if(L.severity==h.Severity.RECOVERABLE){let V=new Map().set("error",L),ee=new U("retry",V);if(ee.cancelable=!0,this.dispatchEvent(ee),ee.defaultPrevented)throw L;return++i.attempt,this.send_(t,i,r,s,L,a,o)}}throw L})}filterResponse_(t,i,r){let s=je.completed(void 0);for(let n of this.responseFilters_)s=s.chain(()=>{let a=i.response;return a.data&&(a.data=D.toArrayBuffer(a.data)),n(t,a,r)});return s.chain(()=>i,n=>{let a=h.Severity.CRITICAL;if(n instanceof h){if(n.code==h.Code.OPERATION_ABORTED)throw n;a=n.severity}throw new h(a,h.Category.NETWORK,h.Code.RESPONSE_FILTER_ERROR,n)})}allowSwitch_(t){if(t){let i=t.segment,r=t.stream;if(i&&r&&r.fastSwitching&&i.isPartial())return!1}return!0}static getLocationProtocol_(){return location.protocol}};l(_i,"PluginPriority",{FALLBACK:1,PREFERRED:2,APPLICATION:3}),l(_i,"schemes_",new Map);var K=_i;K.NumBytesRemainingClass=class{constructor(){this.bytesToLoad_=0}setBytes(y){this.bytesToLoad_=y}getBytes(){return this.bytesToLoad_}};var Js=class extends je{constructor(t,i,r){super(t,i);l(this,"bytesRemaining_");this.bytesRemaining_=r}getBytesRemaining(){return this.bytesRemaining_.getBytes()}},Eo={MANIFEST:0,SEGMENT:1,LICENSE:2,APP:3,TIMING:4,SERVER_CERTIFICATE:5,KEY:6,ADS:7,CONTENT_STEERING:8,CMCD:9,SESSION_DATA:10,FINGERPRINT:11,PLAYLIST:12,EVENT_CALLBACK:13};/*! @license
|
|
106
|
+
* Shaka Player
|
|
107
|
+
* Copyright 2016 Google LLC
|
|
108
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
109
|
+
*/var ci=class y{constructor(e){l(this,"destroyed_");l(this,"waitOnDestroy_");l(this,"onDestroy_");this.destroyed_=!1,this.waitOnDestroy_=Promise.withResolvers(),this.onDestroy_=e}destroyed(){return this.destroyed_}destroy(){return this.destroyed_?this.waitOnDestroy_.promise:(this.destroyed_=!0,this.onDestroy_().then(()=>{this.waitOnDestroy_.resolve()},()=>{this.waitOnDestroy_.resolve()}))}ensureNotDestroyed(e){if(this.destroyed_)throw e instanceof h&&e.code==h.Code.OBJECT_DESTROYED?e:y.destroyedError(e)}static destroyedError(e){return new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OBJECT_DESTROYED,e)}};/*! @license
|
|
110
|
+
* Shaka Player
|
|
111
|
+
* Copyright 2016 Google LLC
|
|
112
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
113
|
+
*/var ue=class y{constructor(){l(this,"bindingMap_");this.bindingMap_=new lr}release(){this.removeAll(),this.bindingMap_=null}listen(e,t,i,r){if(!this.bindingMap_)return;let s=new y.Binding_(e,t,i,r);this.bindingMap_.push(t,s)}listenOnce(e,t,i,r){let s=n=>{this.unlisten(e,t,s),i(n)};this.listen(e,t,s,r)}listenMulti(e,t,i,r){if(this.bindingMap_)for(let s of t)this.listen(e,s,i,r)}listenOnceMulti(e,t,i,r){if(!this.bindingMap_)return;let s=!1,n=a=>{if(!s){s=!0;for(let o of t)this.unlisten(e,o,n);i(a)}};for(let a of t)this.listen(e,a,n,r)}unlisten(e,t,i){if(!this.bindingMap_)return;let r=this.bindingMap_.get(t)||[];for(let s of r)s.target==e&&(i==s.listener||!i)&&(s.unlisten(),this.bindingMap_.remove(t,s))}unlistenMulti(e,t,i){if(this.bindingMap_)for(let r of t)this.unlisten(e,r,i)}removeAll(){if(!this.bindingMap_)return;let e=this.bindingMap_.getAll();for(let t of e)t.unlisten();this.bindingMap_.clear()}};ue.Binding_=class{constructor(y,e,t,i){this.target=y,this.type=e,this.listener=t,this.options=ue.Binding_.convertOptions_(y,i),this.target.addEventListener(e,t,this.options)}unlisten(){v.assert(this.target,"Missing target"),this.target.removeEventListener(this.type,this.listener,this.options),this.target=null,this.listener=null,this.options=!1}static convertOptions_(y,e){if(e==null)return!1;if(typeof e=="boolean")return e;{let t=new Set(["passive","capture"]),i=Object.keys(e).filter(s=>!t.has(s));return v.assert(i.length==0,"Unsupported flag(s) to addEventListener: "+i.join(",")),ue.Binding_.doesSupportObject_(y)?e:e.capture||!1}}static doesSupportObject_(y){let e=ue.Binding_.supportsObject_;if(e==null){e=!1;try{let t={},i={get:()=>(e=!0,!1)};Object.defineProperty(t,"passive",i),Object.defineProperty(t,"capture",i);let r=()=>{};y.addEventListener("test",r,t),y.removeEventListener("test",r,t)}catch(t){e=!1}ue.Binding_.supportsObject_=e}return e||!1}};ue.Binding_.supportsObject_=void 0;/*! @license
|
|
114
|
+
* Shaka Player
|
|
115
|
+
* Copyright 2016 Google LLC
|
|
116
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
117
|
+
*/var it=class{static isNotNull(e){return e!=null}static promiseWithTimeout(e,t){return Promise.race([t,new Promise(((i,r)=>{new ae(r).tickAfter(e)}))])}static delay(e){return new Promise(t=>{new ae(t).tickAfter(e)})}};/*! @license
|
|
118
|
+
* Shaka Player
|
|
119
|
+
* Copyright 2016 Google LLC
|
|
120
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
121
|
+
*/var Qi=class{static map(e,t){let i=[];for(let r of e)i.push(t(r));return i}static every(e,t){for(let i of e)if(!t(i))return!1;return!0}static some(e,t){for(let i of e)if(t(i))return!0;return!1}static filter(e,t){let i=[];for(let r of e)t(r)&&i.push(r);return i}};/*! @license
|
|
122
|
+
* Shaka Player
|
|
123
|
+
* Copyright 2016 Google LLC
|
|
124
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
125
|
+
*/var Ve=class Ve{static areLocaleCompatible(e,t){return e=Ve.normalize(e),t=Ve.normalize(t),e==t}static areLanguageCompatible(e,t){e=Ve.normalize(e),t=Ve.normalize(t);let i=Ve.disassembleLocale_(e),r=Ve.disassembleLocale_(t);return i[0]==r[0]}static isParentOf(e,t){e=Ve.normalize(e),t=Ve.normalize(t);let i=Ve.disassembleLocale_(e),r=Ve.disassembleLocale_(t);return i[0]==r[0]&&i.length==1&&r.length==2}static isSiblingOf(e,t){e=Ve.normalize(e),t=Ve.normalize(t);let i=Ve.disassembleLocale_(e),r=Ve.disassembleLocale_(t);return i.length==2&&r.length==2&&i[0]==r[0]}static normalize(e){let[i="",r=""]=e.split("-x-"),[s="",n=""]=i.split("-"),a=r?`x-${r}`:"",o=s.toLowerCase();o=Ve.isoMap_.get(o)||o;let c=n.toUpperCase();return`${c?`${o}-${c}`:o}${a?`-${a}`:""}`}static areSiblings(e,t){let i=Ve.getBase(e),r=Ve.getBase(t);return e!=i&&t!=r&&i==r}static relatedness(e,t){return e=Ve.normalize(e),t=Ve.normalize(t),t==e?4:Ve.isParentOf(t,e)?3:Ve.isSiblingOf(t,e)?2:Ve.isParentOf(e,t)?1:0}static getBase(e){let t=e.indexOf("-"),i;return t>=0?i=e.substring(0,t):i=e,i=i.toLowerCase(),i=Ve.isoMap_.get(i)||i,i}static getLocaleForText(e){let t=e.language||"und";return Ve.normalize(t)}static getLocaleForVariant(e){return e.language?Ve.normalize(e.language):e.audio&&e.audio.language?Ve.normalize(e.audio.language):e.video&&e.video.language?Ve.normalize(e.video.language):"und"}static findClosestLocale(e,t){let i=Ve.normalize(e),r=new Set;for(let s of t)r.add(Ve.normalize(s));for(let s of r)if(s==i)return s;for(let s of r)if(Ve.isParentOf(s,i))return s;for(let s of r)if(Ve.isSiblingOf(s,i))return s;for(let s of r)if(Ve.isParentOf(i,s))return s;return null}static disassembleLocale_(e){let t=e.split("-");return v.assert(t.length<=2,["Locales should not have more than 2 components. ",e," has too many components."].join()),t}};l(Ve,"isoMap_",new Map([["aar","aa"],["abk","ab"],["afr","af"],["aka","ak"],["alb","sq"],["amh","am"],["ara","ar"],["arg","an"],["arm","hy"],["asm","as"],["ava","av"],["ave","ae"],["aym","ay"],["aze","az"],["bak","ba"],["bam","bm"],["baq","eu"],["bel","be"],["ben","bn"],["bih","bh"],["bis","bi"],["bod","bo"],["bos","bs"],["bre","br"],["bul","bg"],["bur","my"],["cat","ca"],["ces","cs"],["cha","ch"],["che","ce"],["chi","zh"],["chu","cu"],["chv","cv"],["cor","kw"],["cos","co"],["cre","cr"],["cym","cy"],["cze","cs"],["dan","da"],["deu","de"],["div","dv"],["dut","nl"],["dzo","dz"],["ell","el"],["eng","en"],["epo","eo"],["est","et"],["eus","eu"],["ewe","ee"],["fao","fo"],["fas","fa"],["fij","fj"],["fin","fi"],["fra","fr"],["fre","fr"],["fry","fy"],["ful","ff"],["geo","ka"],["ger","de"],["gla","gd"],["gle","ga"],["glg","gl"],["glv","gv"],["gre","el"],["grn","gn"],["guj","gu"],["hat","ht"],["hau","ha"],["heb","he"],["her","hz"],["hin","hi"],["hmo","ho"],["hrv","hr"],["hun","hu"],["hye","hy"],["ibo","ig"],["ice","is"],["ido","io"],["iii","ii"],["iku","iu"],["ile","ie"],["ina","ia"],["ind","id"],["ipk","ik"],["isl","is"],["ita","it"],["jav","jv"],["jpn","ja"],["kal","kl"],["kan","kn"],["kas","ks"],["kat","ka"],["kau","kr"],["kaz","kk"],["khm","km"],["kik","ki"],["kin","rw"],["kir","ky"],["kom","kv"],["kon","kg"],["kor","ko"],["kua","kj"],["kur","ku"],["lao","lo"],["lat","la"],["lav","lv"],["lim","li"],["lin","ln"],["lit","lt"],["ltz","lb"],["lub","lu"],["lug","lg"],["mac","mk"],["mah","mh"],["mal","ml"],["mao","mi"],["mar","mr"],["may","ms"],["mkd","mk"],["mlg","mg"],["mlt","mt"],["mon","mn"],["mri","mi"],["msa","ms"],["mya","my"],["nau","na"],["nav","nv"],["nbl","nr"],["nde","nd"],["ndo","ng"],["nep","ne"],["nld","nl"],["nno","nn"],["nob","nb"],["nor","no"],["nya","ny"],["oci","oc"],["oji","oj"],["ori","or"],["orm","om"],["oss","os"],["pan","pa"],["per","fa"],["pli","pi"],["pol","pl"],["por","pt"],["pus","ps"],["que","qu"],["roh","rm"],["ron","ro"],["rum","ro"],["run","rn"],["rus","ru"],["sag","sg"],["san","sa"],["sin","si"],["slk","sk"],["slo","sk"],["slv","sl"],["sme","se"],["smo","sm"],["sna","sn"],["snd","sd"],["som","so"],["sot","st"],["spa","es"],["sqi","sq"],["srd","sc"],["srp","sr"],["ssw","ss"],["sun","su"],["swa","sw"],["swe","sv"],["tah","ty"],["tam","ta"],["tat","tt"],["tel","te"],["tgk","tg"],["tgl","tl"],["tha","th"],["tib","bo"],["tir","ti"],["ton","to"],["tsn","tn"],["tso","ts"],["tuk","tk"],["tur","tr"],["twi","tw"],["uig","ug"],["ukr","uk"],["urd","ur"],["uzb","uz"],["ven","ve"],["vie","vi"],["vol","vo"],["wel","cy"],["wln","wa"],["wol","wo"],["xho","xh"],["yid","yi"],["yor","yo"],["zha","za"],["zho","zh"],["zul","zu"]]));var ve=Ve;/*! @license
|
|
126
|
+
* Shaka Player
|
|
127
|
+
* Copyright 2016 Google LLC
|
|
128
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
129
|
+
*/var Ci=class Ci{static createDrmInfo(e,t,i,r=void 0,s=void 0){let n={keySystem:e,encryptionScheme:t,licenseServerUri:"",distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,serverCertificateUri:"",sessionType:"",initData:i||[],keyIds:new Set,mediaTypes:s};return r&&(n.keySystemUris=new Set([r])),!i&&de.isFairPlayKeySystem(e)&&n.initData.push({initDataType:"sinf",initData:new Uint8Array(0),keyId:null}),n}static createDrmInfoFromClearKeys(e,t="cenc"){let i=[],r=[],s=[],n=new Map;e.forEach((m,f)=>{let g=de.normalizeClearKeyValue(f),_=de.normalizeClearKeyValue(m),T={kty:"oct",kid:g,k:_};i.push(T),r.push(T.kid),s.push(f),n.set(g,_)});let o=JSON.stringify({keys:i}),c=JSON.stringify({kids:r}),u=[{initData:D.toUint8(q.toUTF8(c)),initDataType:"keyids"}];return{keySystem:"org.w3.clearkey",encryptionScheme:t,licenseServerUri:"data:application/json;base64,"+window.btoa(o),distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,serverCertificateUri:"",sessionType:"",initData:u,keyIds:new Set(s),clearKeys:n}}static guessCodecs(e,t){if(t.length==1)return t[0];let i=Ci.guessCodecsSafe(e,t);if(i!=null)return i;throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_COULD_NOT_GUESS_CODECS,t)}static guessCodecsSafe(e,t){let i=Ci.CODEC_REGEXPS_BY_CONTENT_TYPE_.get(e);for(let r of i)for(let s of t)if(r.test(s.trim()))return s.trim();return e==Ci.ContentType.TEXT?"":null}static parseCEA608Captions(e,t){if(!e){t.set("CC1","und");return}let i=1,r=e.split(";");for(let s of r){let n,a;if(!s.includes("="))n=`CC${i}`,i+=r.length==2?2:1,a=s;else{let o=s.split("=");n=o[0].startsWith("CC")?o[0]:`CC${o[0]}`,a=o[1]||"und"}t.set(n,ve.normalize(a))}}static parseCEA708Captions(e,t){if(!e){t.set("svc1","und");return}let i=1;for(let r of e.split(";")){let s,n;if(!r.includes("="))s=`svc${i}`,i++,n=r;else{let a=r.split("=");s=`svc${a[0]}`,n=a[1].split(",")[0].split(":").pop()}t.set(s,ve.normalize(n))}}static guessAllCodecsSafe(e,t){let i=[],r=Ci.CODEC_REGEXPS_BY_CONTENT_TYPE_.get(e);for(let s of r)for(let n of t)s.test(n.trim())&&i.push(n.trim());return i}};l(Ci,"ContentType",{VIDEO:"video",AUDIO:"audio",TEXT:"text",IMAGE:"image",APPLICATION:"application",CHAPTER:"chapter"}),l(Ci,"TextStreamKind",{SUBTITLE:"subtitle",CLOSED_CAPTION:"caption"}),l(Ci,"VIDEO_CODEC_REGEXPS",[/^avc/,/^hev/,/^hvc/,/^vvc/,/^vvi/,/^vp0?[89]/,/^av01/,/^mp2v/,/^dvh/,/^dva/,/^dav/]),l(Ci,"AUDIO_CODEC_REGEXPS",[/^vorbis$/,/^Opus$/,/^opus$/,/^fLaC$/,/^flac$/,/^mp4a/,/^[ae]c-3$/,/^ac-4/,/^dts[cehx]?$/,/^iamf/,/^mhm[12]/,/^ac3$/,/^eac3$/,/^apac$/]),l(Ci,"TEXT_CODEC_REGEXPS",[/^vtt$/,/^wvtt/,/^stpp/]);var R=Ci;R.GAP_OVERLAP_TOLERANCE_SECONDS=1/15;R.CODEC_REGEXPS_BY_CONTENT_TYPE_=new Map().set("audio",R.AUDIO_CODEC_REGEXPS).set("video",R.VIDEO_CODEC_REGEXPS).set("text",R.TEXT_CODEC_REGEXPS);/*! @license
|
|
130
|
+
* Shaka Player
|
|
131
|
+
* Copyright 2016 Google LLC
|
|
132
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
133
|
+
*/var Zt=class{static asMap(e){let t=new Map;for(let i of Object.keys(e))t.set(i,e[i]);return t}static asObject(e){let t={};return e.forEach((i,r)=>{t[r]=i}),t}static hasSameElements(e,t){if(!e&&!t)return!0;if(e&&!t)return!1;if(t&&!e||e.size!=t.size)return!1;for(let[i,r]of e){if(!t.has(i))return!1;let s=t.get(i);if(s!=r||s==null)return!1}return!0}};/*! @license
|
|
134
|
+
* Shaka Player
|
|
135
|
+
* Copyright 2016 Google LLC
|
|
136
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
137
|
+
*/var Zs=class Zs{constructor(e,t){l(this,"dataView_");l(this,"littleEndian_");l(this,"position_");this.dataView_=D.toDataView(e),this.littleEndian_=t==Zs.Endianness.LITTLE_ENDIAN,this.position_=0}getDataView(){return this.dataView_}hasMoreData(){return this.position_<this.dataView_.byteLength}getPosition(){return this.position_}getLength(){return this.dataView_.byteLength}readUint8(){try{let e=this.dataView_.getUint8(this.position_);return this.position_+=1,e}catch(e){throw this.outOfBounds_()}}readUint16(){try{let e=this.dataView_.getUint16(this.position_,this.littleEndian_);return this.position_+=2,e}catch(e){throw this.outOfBounds_()}}readUint32(){try{let e=this.dataView_.getUint32(this.position_,this.littleEndian_);return this.position_+=4,e}catch(e){throw this.outOfBounds_()}}readInt32(){try{let e=this.dataView_.getInt32(this.position_,this.littleEndian_);return this.position_+=4,e}catch(e){throw this.outOfBounds_()}}readUint64(){let e,t;try{this.littleEndian_?(e=this.dataView_.getUint32(this.position_,!0),t=this.dataView_.getUint32(this.position_+4,!0)):(t=this.dataView_.getUint32(this.position_,!1),e=this.dataView_.getUint32(this.position_+4,!1))}catch(i){throw this.outOfBounds_()}if(t>2097151)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.JS_INTEGER_OVERFLOW);return this.position_+=8,t*Math.pow(2,32)+e}readBytes(e,t){if(v.assert(e>=0,"Bad call to DataViewReader.readBytes"),this.position_+e>this.dataView_.byteLength)throw this.outOfBounds_();let i=D.toUint8(this.dataView_,this.position_,e);return this.position_+=e,t?new Uint8Array(i):i}skip(e){if(v.assert(e>=0,"Bad call to DataViewReader.skip"),this.position_+e>this.dataView_.byteLength)throw this.outOfBounds_();this.position_+=e}rewind(e){if(v.assert(e>=0,"Bad call to DataViewReader.rewind"),this.position_<e)throw this.outOfBounds_();this.position_-=e}seek(e){if(v.assert(e>=0,"Bad call to DataViewReader.seek"),e<0||e>this.dataView_.byteLength)throw this.outOfBounds_();this.position_=e}readTerminatedString(){let e=this.position_;for(;this.hasMoreData()&&this.dataView_.getUint8(this.position_)!=0;)this.position_+=1;let t=D.toUint8(this.dataView_,e,this.position_-e);return this.position_+=1,q.fromUTF8(t)}outOfBounds_(){return new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.BUFFER_READ_OUT_OF_BOUNDS)}};l(Zs,"Endianness",{BIG_ENDIAN:0,LITTLE_ENDIAN:1});var Et=Zs;/*! @license
|
|
138
|
+
* Shaka Player
|
|
139
|
+
* Copyright 2016 Google LLC
|
|
140
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
141
|
+
*/var Mt=class Mt{constructor(){l(this,"headers_");l(this,"boxDefinitions_");l(this,"done_");this.headers_=new Map,this.boxDefinitions_=new Map,this.done_=!1}box(e,t){let i=Mt.typeFromString_(e);return this.headers_.set(i,Mt.BoxType_.BASIC_BOX),this.boxDefinitions_.set(i,t),this}boxes(e,t){for(let i of e)this.box(i,t);return this}fullBox(e,t){let i=Mt.typeFromString_(e);return this.headers_.set(i,Mt.BoxType_.FULL_BOX),this.boxDefinitions_.set(i,t),this}fullBoxes(e,t){for(let i of e)this.fullBox(i,t);return this}stop(){this.done_=!0}parse(e,t,i){let r=new Et(e,Et.Endianness.BIG_ENDIAN);for(this.done_=!1;r.hasMoreData()&&!this.done_;)this.parseNext(0,r,t,i)}parseNext(e,t,i,r){let s=t.getPosition();if(r&&s+8>t.getLength()){this.done_=!0;return}let n=t.readUint32(),a=t.readUint32(),o=Mt.typeToString(a),c=!1;switch(p.v2("Parsing MP4 box",o),n){case 0:n=t.getLength()-s;break;case 1:if(r&&t.getPosition()+8>t.getLength()){this.done_=!0;return}n=t.readUint64(),c=!0;break}let d=this.boxDefinitions_.get(a);if(d){let u=null,m=null;if(this.headers_.get(a)==Mt.BoxType_.FULL_BOX){if(r&&t.getPosition()+4>t.getLength()){this.done_=!0;return}let b=t.readUint32();u=b>>>24,m=b&16777215}let f=s+n;if(i&&f>t.getLength()&&(f=t.getLength()),r&&f>t.getLength()){this.done_=!0;return}let g=f-t.getPosition(),_=g>0?t.readBytes(g,!1):new Uint8Array(0),T=new Et(_,Et.Endianness.BIG_ENDIAN),S={name:o,parser:this,partialOkay:i||!1,stopOnPartial:r||!1,version:u,flags:m,reader:T,size:n,start:s+e,has64BitSize:c};d(S)}else{let u=Math.min(s+n-t.getPosition(),t.getLength()-t.getPosition());t.skip(u)}}static children(e){let t=Mt.headerSize(e);for(;e.reader.hasMoreData()&&!e.parser.done_;)e.parser.parseNext(e.start+t,e.reader,e.partialOkay,e.stopOnPartial)}static sampleDescription(e){let t=Mt.headerSize(e),i=e.reader.readUint32();for(let r=0;r<i&&(e.parser.parseNext(e.start+t,e.reader,e.partialOkay,e.stopOnPartial),!e.parser.done_);r++);}static visualSampleEntry(e){let t=Mt.headerSize(e);for(e.reader.skip(78);e.reader.hasMoreData()&&!e.parser.done_;)e.parser.parseNext(e.start+t,e.reader,e.partialOkay,e.stopOnPartial)}static audioSampleEntry(e){let t=Mt.headerSize(e);e.reader.skip(8);let i=e.reader.readUint16();for(e.reader.skip(6),i==2?e.reader.skip(48):e.reader.skip(12),i==1&&e.reader.skip(16);e.reader.hasMoreData()&&!e.parser.done_;)e.parser.parseNext(e.start+t,e.reader,e.partialOkay,e.stopOnPartial)}static allData(e,t){return i=>{let r=i.reader.getLength()-i.reader.getPosition();e(i.reader.readBytes(r,t))}}static typeFromString_(e){v.assert(e.length==4,"Mp4 box names must be 4 characters long");let t=0;for(let i of e)t=t<<8|i.charCodeAt(0);return t}static typeToString(e){return String.fromCharCode(e>>24&255,e>>16&255,e>>8&255,e&255)}static headerSize(e){let i=e.has64BitSize?8:0,r=e.flags!=null?4:0;return 8+i+r}};l(Mt,"BoxType_",{BASIC_BOX:0,FULL_BOX:1}),l(Mt,"SAMPLE_TABLE_PATH",["moov","trak","mdia","minf","stbl"]),l(Mt,"FRAGMENT_PATH",["moof","traf"]),l(Mt,"AVC_DV_",["avc1","avc3","dvav","dva1"]),l(Mt,"HEVC_DV_",["hev1","hvc1","dvh1","dvhe"]),l(Mt,"VVC_DV_",["vvc1","vvi1","dvc1","dvi1"]),l(Mt,"GENERIC_AUDIO_SAMPLE_ENTRIES",["ac-3","ec-3","ac-4","Opus","fLaC","apac"]);var F=Mt;F.AVC_HEVC_DV=[...F.AVC_DV_,...F.HEVC_DV_];F.AVC_HEVC_VVC_DV=[...F.AVC_HEVC_DV,...F.VVC_DV_];/*! @license
|
|
142
|
+
* Shaka Player
|
|
143
|
+
* Copyright 2016 Google LLC
|
|
144
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
145
|
+
*/var ei=class y{constructor(e){l(this,"systemIds");l(this,"data");this.systemIds=[],this.data=[],new F().boxes(["moov","moof"],F.children).fullBox("pssh",t=>this.parsePsshBox_(t)).parse(e),this.data.length==0&&p.v2("No pssh box found!")}parsePsshBox_(e){if(v.assert(e.version!=null,"PSSH boxes are full boxes and must have a valid version"),v.assert(e.flags!=null,"PSSH boxes are full boxes and must have a valid flag"),e.version>1){p.warning("Unrecognized PSSH version found!");return}let t=e.reader.getDataView();v.assert(t.byteOffset>=12,"DataView at incorrect position");let i=D.toUint8(t,-12,e.size);this.data.push(i);let r=e.reader.readBytes(16,!1);this.systemIds.push(ne.toHex(r))}static createPssh(e,t,i,r){v.assert(t.byteLength==16,"Invalid system ID length");let s=e.length,n=12+t.length+4+s;r>0&&(n+=4+16*i.size);let a=new Uint8Array(n),o=D.toDataView(a),c=0;if(o.setUint32(c,n),c+=4,o.setUint32(c,1886614376),c+=4,r<1?o.setUint32(c,0):o.setUint32(c,16777216),c+=4,a.set(t,c),c+=t.length,r>0){o.setUint32(c,i.size),c+=4;for(let d of i){let u=ne.fromHex(d);a.set(u,c),c+=u.length}}return o.setUint32(c,s),c+=4,a.set(e,c),c+=s,v.assert(c===n,"PSSH invalid length."),a}static getPsshData(e){let t=8,i=D.toDataView(e),r=i.getUint8(t);return t+=20,r>0&&(t+=4+16*i.getUint32(t)),t+=4,D.toUint8(i,t)}static normaliseInitData(e){if(!e)return e;let t=new y(e);if(t.data.length<=1)return e;let i=[];for(let r of t.data)i.some(n=>D.equal(n,r))||i.push(r);return ne.concat(...i)}};/*! @license
|
|
146
|
+
* Shaka Player
|
|
147
|
+
* Copyright 2016 Google LLC
|
|
148
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
149
|
+
*/var xi=class xi{constructor(e,t,i,r){l(this,"dec_");l(this,"media_");l(this,"canvas_");l(this,"decConfig_");l(this,"isDualTrack_");l(this,"lcevcLib_");this.lcevcLib_,this.dec_=null,this.media_=e,this.canvas_=t,this.decConfig_=i,this.isDualTrack_=r,this.create_()}appendBuffer(e,t,i){let r=R.ContentType;i.type!==r.VIDEO||this.isDualTrack_&&!xi.isStreamSupported(i)||this.dec_&&this.dec_.appendBuffer(e,"video",i.id,-t,!this.isDualTrack_)}removeBuffer(e,t,i){let r=R.ContentType;e===r.VIDEO&&this.dec_&&this.dec_.flushBuffer(t,i)}hideCanvas(){this.dec_&&this.canvas_.classList.add("shaka-hidden")}create_(){this.isSupported_()&&!this.dec_&&this.lcevcLib_.SupportObject.webGLSupport(this.canvas_)&&(this.canvas_.classList.remove("shaka-hidden"),this.dec_=new this.lcevcLib_.LCEVCdec(this.media_,this.canvas_,this.decConfig_))}release(){this.dec_&&(this.dec_.close(),this.dec_=null)}isSupported_(){if(typeof libDPIModule=="undefined"&&p.alwaysWarn("Could not find LCEVC Library dependencies on this page"),typeof LCEVCdec!="undefined")this.lcevcLib_=LCEVCdec;else return p.alwaysWarn("Could not find LCEVC Library on this page"),!1;return typeof this.lcevcLib_.SupportObject=="undefined"?(p.alwaysWarn("Could not find LCEVC Library on this page"),!1):(this.lcevcLib_.SupportObject.SupportStatus||p.alwaysWarn(this.lcevcLib_.SupportObject.SupportError),typeof this.lcevcLib_!="undefined"&&typeof libDPIModule!="undefined"&&this.canvas_ instanceof HTMLCanvasElement&&this.lcevcLib_.SupportObject.SupportStatus)}updateVariant(e,t){let i=e.video;if(!i)return;i.dependencyStream&&(i=i.dependencyStream);let r=xi.ContainerFormat.MPEG2_TS,s=xi.StreamingFormat.OTHER;switch(i.mimeType){case"video/webm":{r=xi.ContainerFormat.WEBM;break}case"video/mp4":{r=xi.ContainerFormat.MP4;break}}switch(t){case"DASH":{s=xi.StreamingFormat.DASH;break}case"HLS":{s=xi.StreamingFormat.HLS;break}}this.dec_&&(this.dec_.setLevelSwitching(i.id,!0),this.dec_.setContainerFormat(r),this.dec_.setStreamingFormat(s))}static isStreamSupported(e){return!e||typeof LCEVCdec=="undefined"?!1:e.codecs=="lvc1"}};l(xi,"ContainerFormat",{MPEG2_TS:0,WEBM:1,MP4:2}),l(xi,"StreamingFormat",{HLS:0,DASH:1,OTHER:-1});var wr=xi;/*! @license
|
|
150
|
+
* Shaka Player
|
|
151
|
+
* Copyright 2016 Google LLC
|
|
152
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
153
|
+
*/var ti=class ti{static registerParserByMime(e,t){ti.parsersByMime.set(e,t)}static unregisterParserByMime(e){ti.parsersByMime.delete(e)}static probeSupport(){let e={},t=j.getDevice();if(t.supportsMediaSource())for(let r of ti.parsersByMime.keys())e[r]=!0;let i=["application/dash+xml","application/x-mpegurl","application/vnd.apple.mpegurl","audio/x-mpegurl"];for(let r of i)t.supportsMediaSource()?e[r]=ti.parsersByMime.has(r):e[r]=t.supportsMediaType(r);return e}static getFactory(e,t){if(t){let i=ti.parsersByMime.get(t);if(i)return i;p.warning("Could not determine manifest type using MIME type ",t)}throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.UNABLE_TO_GUESS_MANIFEST_TYPE,e,t)}static isSupported(e){return j.getDevice().supportsMediaSource()?ti.parsersByMime.has(e):!1}};l(ti,"HLS","HLS"),l(ti,"DASH","DASH"),l(ti,"MSF","MSF"),l(ti,"UNKNOWN","UNKNOWN"),l(ti,"AccessibilityPurpose",{VISUALLY_IMPAIRED:"visually impaired",HARD_OF_HEARING:"hard of hearing",SPOKEN_SUBTITLES:"spoken subtitles"}),l(ti,"parsersByMime",new Map);var me=ti;/*! @license
|
|
154
|
+
* Shaka Player
|
|
155
|
+
* Copyright 2016 Google LLC
|
|
156
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
157
|
+
*/var en=class{extract(e,t){}extractRaw608(e,t){}decode(){return[]}clear(){}getStreams(){return[]}};/*! @license
|
|
158
|
+
* Shaka Player
|
|
159
|
+
* Copyright 2016 Google LLC
|
|
160
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
161
|
+
*/var tn=class{init(e){}parse(e){return[]}};/*! @license
|
|
162
|
+
* Shaka Player
|
|
163
|
+
* Copyright 2016 Google LLC
|
|
164
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
165
|
+
*/var Ht=class Ht{constructor(e){l(this,"decoderCache_");l(this,"currentContinuityTimeline_");l(this,"ceaParser_");l(this,"ceaDecoder_");this.decoderCache_=new Map,this.currentContinuityTimeline_=0,this.ceaParser_=new tn;let t=Ht.findParser(e.toLowerCase());t&&(this.ceaParser_=t()),this.ceaDecoder_=new en;let i=Ht.findDecoder();i&&(this.ceaDecoder_=i(),this.decoderCache_.set(this.currentContinuityTimeline_,this.ceaDecoder_))}init(e,t=!1,i=-1){p.debug("Passing new init segment to CEA parser"),i!=-1&&this.currentContinuityTimeline_!=i?this.updateDecoder_(i):t||this.reset(),this.ceaParser_.init(e),i!=-1&&(this.currentContinuityTimeline_=i)}parseFrom(e){let t=this.ceaParser_.parse(e);for(let i of t){let r=D.toUint8(i.packet);if(r.length>0)switch(i.format){case Ht.CaptionPacketFormat.SEI:this.ceaDecoder_.extract(r,i.pts);break;case Ht.CaptionPacketFormat.RAW608:this.ceaDecoder_.extractRaw608(r,i.pts);break}}return this.ceaDecoder_.decode()}updateDecoder_(e){this.decoderCache_.set(this.currentContinuityTimeline_,this.ceaDecoder_),this.ceaDecoder_=this.decoderCache_.getOrInsertComputed(e,()=>{let t=Ht.findDecoder();return t?t():this.ceaDecoder_})}reset(){this.ceaDecoder_.clear()}remove(e=[]){let t=new Set(e);for(let i of this.decoderCache_.keys())if(!t.has(i)){let r=this.decoderCache_.get(i);r&&r.clear(),this.decoderCache_.delete(i)}}getStreams(){return this.ceaDecoder_.getStreams()}static registerParser(e,t){Ht.parserMap_.set(e,t)}static unregisterParser(e){Ht.parserMap_.delete(e)}static findParser(e){return Ht.parserMap_.get(e)}static registerDecoder(e){Ht.decoderFactory_=e}static unregisterDecoder(){Ht.decoderFactory_=null}static findDecoder(){return Ht.decoderFactory_}};l(Ht,"parserMap_",new Map),l(Ht,"decoderFactory_",null),l(Ht,"CaptionPacketFormat",{SEI:"sei",RAW608:"raw608"});var Rt=Ht;/*! @license
|
|
166
|
+
* Shaka Player
|
|
167
|
+
* Copyright 2016 Google LLC
|
|
168
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
169
|
+
*/var Ji=class Ji{constructor(){l(this,"id");l(this,"viewportAnchorX");l(this,"viewportAnchorY");l(this,"regionAnchorX");l(this,"regionAnchorY");l(this,"width");l(this,"height");l(this,"heightUnits");l(this,"widthUnits");l(this,"viewportAnchorUnits");l(this,"scroll");this.id="",this.viewportAnchorX=0,this.viewportAnchorY=0,this.regionAnchorX=0,this.regionAnchorY=0,this.width=100,this.height=100,this.heightUnits=Ji.units.PERCENTAGE,this.widthUnits=Ji.units.PERCENTAGE,this.viewportAnchorUnits=Ji.units.PERCENTAGE,this.scroll=Ji.scrollMode.NONE}clone(){let e=new Ji;return e.id=this.id,e.viewportAnchorX=this.viewportAnchorX,e.viewportAnchorY=this.viewportAnchorY,e.regionAnchorX=this.regionAnchorX,e.regionAnchorY=this.regionAnchorY,e.width=this.width,e.height=this.height,e.heightUnits=this.heightUnits,e.widthUnits=this.widthUnits,e.viewportAnchorUnits=this.viewportAnchorUnits,e.scroll=this.scroll,e}};l(Ji,"units",{PX:0,PERCENTAGE:1,LINES:2}),l(Ji,"scrollMode",{NONE:"",UP:"up"});var He=Ji;/*! @license
|
|
170
|
+
* Shaka Player
|
|
171
|
+
* Copyright 2016 Google LLC
|
|
172
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
173
|
+
*/var Ss=class Ss{constructor(e){l(this,"data_");l(this,"position_");this.data_=e||"",this.position_=0}atEnd(){return this.position_==this.data_.length}readLine(){return this.readRegexReturnCapture_(/(.*?)(\n|$)/gm,1)}readWord(){return this.readRegexReturnCapture_(/[^ \t\n]*/gm,0)}skipWhitespace(){this.readRegex(/[ \t]+/gm)}forEachWord(e){let t=this.readWord();for(;t;)e(t),this.skipWhitespace(),t=this.readWord()}readRegex(e){let t=this.indexOf_(e);return this.atEnd()||t==null||t.position!=this.position_?null:(this.position_+=t.length,t.results)}readRegexReturnCapture_(e,t){if(this.atEnd())return null;let i=this.readRegex(e);return i?i[t]:null}indexOf_(e){v.assert(e.global,"global flag should be set"),e.lastIndex=this.position_;let t=e.exec(this.data_);return t==null?null:{position:t.index,length:t[0].length,results:t}}parseTime(){let e=this.readRegex(Ss.timeFormat_);if(e==null)return null;let t=Number(e[1])||0,i=Number(e[2]),r=Number(e[3]),s=Number(e[6])||0;return i>59||r>59?null:s/1e3+r+i*60+t*3600}static parseTime(e){return e?new Ss(e).parseTime():null}};l(Ss,"timeFormat_",/(?:(\d{1,}):)?(\d{2}):(\d{2})((\.(\d{1,3})))?/g);var Gt=Ss;/*! @license
|
|
174
|
+
* tXml
|
|
175
|
+
* Copyright 2015 Tobias Nickel
|
|
176
|
+
* SPDX-License-Identifier: MIT
|
|
177
|
+
*/var At=class At{static parseXml(e,t,i=!1){let r=q.fromBytesAutoDetect(e);return At.parseXmlString(r,t,i)}static parseXmlString(e,t,i=!1){let r=At.parse(e,i);if(!t&&r.length)return r[0];let s=t.split(","),n=r.find(a=>s.includes(a.tagName));return n||(p.error("parseXml root element not found!"),null)}static getKnownNameSpace(e){return At.uriToNameSpace_.has(e)?At.uriToNameSpace_.get(e):""}static getKnownSchema(e){return At.nameSpaceToUri_.has(e)?At.nameSpaceToUri_.get(e):""}static setKnownNameSpace(e,t){At.uriToNameSpace_.set(e,t),At.nameSpaceToUri_.set(t,e)}static parse(e,t){let i=0,r=0,s="<",n=60,a=">",o=62,c=45,d=47,u=33,m=39,f=34,g=91;function _(A,w=!1){let M=[];for(;e[i];)if(e.charCodeAt(i)==n){if(e.charCodeAt(i+1)===d){let k=i+2;i=e.indexOf(a,i);let L=e.substring(k,i),V=L.indexOf(A);if(V==-1){let ee=A.indexOf(".");if(ee>0){let oe=A.substring(0,ee);V=L.indexOf(oe)}}if(V==-1){let ee=e.substring(0,i).split(`
|
|
178
|
+
`);throw new Error(`Unexpected close tag
|
|
179
|
+
Line: `+(ee.length-1)+`
|
|
180
|
+
Column: `+(ee[ee.length-1].length+1)+`
|
|
181
|
+
Char: `+e[i])}return i+1&&(i+=1),M}else if(e.charCodeAt(i+1)===u){if(e.charCodeAt(i+2)==c){for(;i!==-1&&!(e.charCodeAt(i)===o&&e.charCodeAt(i-1)==c&&e.charCodeAt(i-2)==c&&i!=-1);)i=e.indexOf(a,i+1);i===-1&&(i=e.length)}else if(e.charCodeAt(i+2)===g&&e.charCodeAt(i+8)===g&&e.substr(i+3,5).toLowerCase()==="cdata"){let k=e.indexOf("]]>",i);k==-1?(M.push(e.substr(i+9)),i=e.length):(M.push(e.substring(i+9,k)),i=k+3);continue}i++;continue}if(r>512)throw new Error("XML is too deeply nested");r++;let x=E(w);if(r--,M.push(x),typeof x=="string")return M;x.tagName[0]==="?"&&x.children&&(M.push(...x.children),x.children=[])}else{let x=T();w?x.length>0&&M.push(x):(M.length&&x.length==1&&x[0]==`
|
|
182
|
+
`||x.trim().length>0)&&M.push(x),i++}return M}function T(){let A=i;return i=e.indexOf(s,i)-1,i===-2&&(i=e.length),(" "+e.slice(A,i+1)).slice(1)}let S=`\r
|
|
183
|
+
>/= `;function b(){let A=i;for(;S.indexOf(e[i])===-1&&e[i];)i++;return(" "+e.slice(A,i)).slice(1)}function E(A){i++;let w=b(),M={},x=[];for(;e.charCodeAt(i)!==o&&e[i];){let V=e.charCodeAt(i);if(V>64&&V<91||V>96&&V<123){let ee=b(),oe=e.charCodeAt(i);for(;oe&&oe!==m&&oe!==f&&!(oe>64&&oe<91||oe>96&&oe<123)&&oe!==o;)i++,oe=e.charCodeAt(i);let le=C();if(oe===m||oe===f){if(i===-1){let H={tagName:w,attributes:M,children:x,parent:null};if(t)for(let J=0;J<x.length;J++)typeof x[J]!="string"&&(x[J].parent=H);return H}}else le=null,i--;if(ee.startsWith("xmlns:")){let H=ee.split(":");At.setKnownNameSpace(le,H[1])}w==="tt"&&ee==="xml:space"&&le==="preserve"&&(A=!0),M[ee]=le}i++}e.charCodeAt(i-1)!==d?(i++,x=_(w,A)):i++;let k={tagName:w,attributes:M,children:x,parent:null},L=x.length;for(let V=0;V<L;V++){let ee=x[V];typeof ee!="string"?t&&(ee.parent=k):V==L-1&&ee==`
|
|
184
|
+
`&&x.pop()}return k}function C(){let A=e[i],w=i+1;return i=e.indexOf(A,w),(" "+e.slice(w,i)).slice(1)}return _("")}static isNode(e){return!!e.tagName}static isText(e){return typeof e=="string"}static getChildNodes(e){let t=[];if(!e.children)return[];for(let i of e.children)typeof i!="string"&&t.push(i);return t}static findChildren(e,t){let i=[];if(!e.children)return[];for(let r of e.children)r.tagName===t&&i.push(r);return i}static getTextContents(e){if(typeof e=="string")return q.htmlUnescape(e);let t=[];for(let r of e.children)typeof r=="string"&&t.push(r);let i=t.join("");return i===""?null:q.htmlUnescape(i)}static getContents(e){for(let i of e.children)if(typeof i!="string")return null;let t=At.getTextContents(e);return t&&(t=t.trim()),t}static getElementsByTagName(e,t,i=[]){if(e.tagName===t&&i.push(e),e.children)for(let r of e.children)At.getElementsByTagName(r,t,i);return i}static findChild(e,t){let i=At.findChildren(e,t);return i.length!=1?null:i[0]}static findChildNS(e,t,i){let r=At.findChildrenNS(e,t,i);return r.length!=1?null:r[0]}static parseAttr(e,t,i,r=null){let s=null,n=e.attributes[t];return n!=null&&(n!==""||r===null)&&(s=i(n)),s==null?r:s}static getAttributeNS(e,t,i){let r=At.getKnownNameSpace(t);return e.attributes[`${r}:${i}`]||null}static findChildrenNS(e,t,i){let r=At.getKnownNameSpace(t),s=[];if(e.children){let n=r?`${r}:${i}`:i;for(let a of e.children)a&&a.tagName===n&&s.push(a)}return s}static getAttributeNSList(e,t,i){for(let r of t){let s=At.getAttributeNS(e,r,i);if(s)return s}return null}static parseDate(e){if(!e)return null;/^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e)&&(e+="Z");let t=Date.parse(e);return isNaN(t)?null:t/1e3}static parseDuration(e){if(!e)return null;let t="^P(?:([0-9]*)Y)?(?:([0-9]*)M)?(?:([0-9]*)D)?(?:T(?:([0-9]*)H)?(?:([0-9]*)M)?(?:([0-9.]*)S)?)?$",i=new RegExp(t,"i").exec(e);if(!i)return p.warning("Invalid duration string:",e),null;let r=Number(i[1]||null),s=Number(i[2]||null),n=Number(i[3]||null),a=Number(i[4]||null),o=Number(i[5]||null),c=Number(i[6]||null),d=3600*24*365*r+3600*24*30*s+3600*24*n+3600*a+60*o+c;return isFinite(d)?d:null}static parseRange(e){let t=/([0-9]+)-([0-9]+)/.exec(e);if(!t)return null;let i=Number(t[1]);if(!isFinite(i))return null;let r=Number(t[2]);return isFinite(r)?{start:i,end:r}:null}static parseInt(e){let t=Number(e);return t%1===0?t:null}static parsePositiveInt(e){let t=Number(e);return t%1===0&&t>0?t:null}static parseNonNegativeInt(e){let t=Number(e);return t%1===0&&t>=0?t:null}static parseFloat(e){let t=Number(e);return isNaN(t)?null:t}static parseBoolean(e){return e?e.toLowerCase()==="true":!1}static evalDivision(e){let t,i;return(t=e.match(/^(\d+)\/(\d+)$/))?i=Number(t[1])/Number(t[2]):i=Number(e),isNaN(i)?null:i}static parseXpath(e){let t=[],i=q.htmlUnescape(e).split(/\/+(?=(?:[^'"]*['"][^'"]*['"])*[^'"]*$)/);for(let r of i){let s=r.match(/^([\w]+)/);if(s){let n=r.match(/(@id='(.*?)')/),a=r.match(/(@t='(\d+)')/),o=r.match(/(@n='(\d+)')/),c=r.match(/\[(\d+)\]/);t.push({name:s[0],id:n?n[0].match(/'(.*?)'/)[0].replace(/'/gm,""):null,t:a?Number(a[0].match(/'(.*?)'/)[0].replace(/'/gm,"")):null,n:o?Number(o[0].match(/'(.*?)'/)[0].replace(/'/gm,"")):null,position:c?Number(c[1])-1:null,attribute:r.split("/@")[1]||null})}else r.startsWith("@")&&t.length&&(t[t.length-1].attribute=r.slice(1))}return t}static modifyNodes(e,t){let i=shaka.util.TXml,r=i.parseXpath(t.attributes.sel||"");if(!r.length)return;let s=r[r.length-1],n=t.attributes.pos||null,a=s.position;a==null&&(s.t!==null&&(a=i.nodePositionByAttribute_(e,"t",s.t)),s.n!==null&&(a=i.nodePositionByAttribute_(e,"n",s.n))),a===null?a=n==="prepend"?0:e.length:n==="prepend"?--a:n==="after"&&++a;let o=t.tagName,c=s.attribute;if(c&&e[a])i.modifyNodeAttribute(e[a],o,c,i.getContents(t)||"");else if((o==="remove"||o==="replace")&&e.splice(a,1),o==="add"||o==="replace"){let d=t.children;e.splice(a,0,...d)}}static nodePositionByAttribute_(e,t,i){let r=0;for(let s of e){let n=s.attributes;if(Number(n[t])===i)return r;r++}return null}static modifyNodeAttribute(e,t,i,r){t==="remove"?delete e.attributes[i]:(t==="add"||t==="replace")&&(e.attributes[i]=r)}static cloneNode(e){if(!e)return null;let t={tagName:e.tagName,attributes:shaka.util.ObjectUtils.shallowCloneObject(e.attributes),children:[],parent:null};for(let i of e.children)if(typeof i=="string")t.children.push(i);else{let r=At.cloneNode(i);r.parent=t,t.children.push(r)}return t}};l(At,"uriToNameSpace_",new Map),l(At,"nameSpaceToUri_",new Map);var I=At;/*! @license
|
|
185
|
+
* Shaka Player
|
|
186
|
+
* Copyright 2016 Google LLC
|
|
187
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
188
|
+
*/var Ee=class Ee{constructor(e,t,i){l(this,"startTime");l(this,"endTime");l(this,"payload");l(this,"region");l(this,"position");l(this,"positionAlign");l(this,"size");l(this,"textAlign");l(this,"direction");l(this,"writingMode");l(this,"lineInterpretation");l(this,"line");l(this,"lineHeight");l(this,"lineAlign");l(this,"displayAlign");l(this,"color");l(this,"backgroundColor");l(this,"backgroundImage");l(this,"border");l(this,"fontSize");l(this,"fontWeight");l(this,"fontStyle");l(this,"fontFamily");l(this,"letterSpacing");l(this,"linePadding");l(this,"opacity");l(this,"textCombineUpright");l(this,"textDecoration");l(this,"textShadow");l(this,"textStrokeColor");l(this,"textStrokeWidth");l(this,"wrapLine");l(this,"id");l(this,"nestedCues");l(this,"isContainer");l(this,"lineBreak");l(this,"rubyTag");l(this,"cellResolution");this.startTime=e,this.endTime=t,this.payload=i,this.region=new He,this.position=null,this.positionAlign=Ee.positionAlign.AUTO,this.size=0,this.textAlign=Ee.textAlign.CENTER,this.direction=Ee.direction.HORIZONTAL_LEFT_TO_RIGHT,this.writingMode=Ee.writingMode.HORIZONTAL_TOP_TO_BOTTOM,this.lineInterpretation=Ee.lineInterpretation.LINE_NUMBER,this.line=null,this.lineHeight="",this.lineAlign=Ee.lineAlign.START,this.displayAlign=Ee.displayAlign.AFTER,this.color="",this.backgroundColor="",this.backgroundImage="",this.border="",this.fontSize="",this.fontWeight=Ee.fontWeight.NORMAL,this.fontStyle=Ee.fontStyle.NORMAL,this.fontFamily="",this.letterSpacing="",this.linePadding="",this.opacity=1,this.textCombineUpright="",this.textDecoration=[],this.textShadow="",this.textStrokeColor="",this.textStrokeWidth="",this.wrapLine=!0,this.id="",this.nestedCues=[],this.isContainer=!1,this.lineBreak=!1,this.rubyTag=null,this.cellResolution={columns:32,rows:15}}static lineBreak(e,t){let i=new Ee(e,t,"");return i.lineBreak=!0,i}clone(){let e=new Ee(0,0,""),t=i=>{if(i===null||typeof i!="object")return i;if(Array.isArray(i))return i.map(t);if(i instanceof Ee||i instanceof He)return i.clone();let r={};for(let s in i)r[s]=t(i[s]);return r};for(let i in this)e[i]=t(this[i]);return e}static equal(e,t){if(e.payload!=t.payload)return!1;let i=(r,s)=>Math.abs(r-s)<.001;if(!i(e.startTime,t.startTime)||!i(e.endTime,t.endTime))return!1;for(let r in e)if(!(r=="startTime"||r=="endTime"||r=="payload")){if(r=="nestedCues"){if(!ye.equal(e.nestedCues,t.nestedCues,Ee.equal))return!1}else if(r=="region"||r=="cellResolution"){for(let s in e[r])if(e[r][s]!=t[r][s])return!1}else if(Array.isArray(e[r])){if(!ye.equal(e[r],t[r]))return!1}else if(e[r]!=t[r])return!1}return!0}static parseCuePayload(e,t=new Map){let i=e.payload;if(!i.includes("<")){e.payload=q.htmlUnescape(i);return}t.size===0&&Ee.addDefaultTextColor(t),i=Ee.replaceKaraokeStylePayload_(i),i=Ee.replaceVoiceStylePayload_(i),i=Ee.escapeInvalidChevrons_(i),e.payload="";let r="<span>"+i.replace(/\n/g,"<br />")+"</span>",s;try{s=I.parseXmlString(r,"span")}catch(n){p.warning("cue parse fail: ",n)}if(s){let n=s.children;if(n.length==1){let a=n[0];if(!I.isNode(a)){e.payload=q.htmlUnescape(i);return}}for(let a of n)Ee.generateCueFromElement_(a,e,t)}else p.warning("The cue's markup could not be parsed: ",i),e.payload=q.htmlUnescape(i)}static addDefaultTextColor(e){let t=Ee.defaultTextColor;for(let[r,s]of Object.entries(t)){let n=new Ee(0,0,"");n.color=s,e.set("."+r,n)}let i=Ee.defaultTextBackgroundColor;for(let[r,s]of Object.entries(i)){let n=new Ee(0,0,"");n.backgroundColor=s,e.set("."+r,n)}}static replaceKaraokeStylePayload_(e){let t=[],i=-1;for(let s=0;s<e.length;s++)if(e[s]==="<")i=s+1;else if(e[s]===">"&&i>0){let n=e.substr(i,s-i);n.match(Ee.timeFormat_)&&t.push(n),i=-1}let r=e;for(let s of t){let n="<"+s+">",a='<div time="'+s+'">',o="</div>";r=r.replace(n,a),r+=o}return r}static replaceVoiceStylePayload_(e){let i=[],r=-1,s="",n=!1;for(let a=0;a<e.length;a++)if(e[a]==="/"){let o=e.indexOf(">",a);if(o===-1)return e;let c=e.substring(a+1,o);if(!c||c!="v"){s+=e[a];continue}n=!0;let d=null;if(i.length&&(d=i[i.length-1]),!d)s+=e[a];else if(d===c)s+="/"+c+">",a+=c.length+1;else{if(!d.startsWith("v")){s+=e[a];continue}s+="/"+d+">",a+=c.length+1}}else e[a]==="<"?(r=a+1,e[r]!="v"&&(r=-1)):e[a]===">"&&r>0&&(i.push(e.substr(r,a-r)),r=-1),s+=e[a];for(let a of i){let o=a.replace(" ",".voice-");s=s.replace(`<${a}>`,`<${o}>`),s=s.replace(`</${a}>`,`</${o}>`),n||(s+=`</${o}>`)}return s}static escapeInvalidChevrons_(e){let t={"< ":""," >":" >"},i=/(< +>|<\s|\s>)/g,r=RegExp(i.source);return e&&r.test(e)?e.replace(i,s=>t[s]||""):e||""}static generateCueFromElement_(e,t,i){let r=t.clone();if(r.nestedCues=[],r.payload="",r.rubyTag="",r.line=null,r.region=new He,r.position=null,r.size=0,r.textAlign=Ee.textAlign.CENTER,I.isNode(e)){let a=Ee.fontWeight.BOLD,o=Ee.fontStyle.ITALIC,c=Ee.textDecoration.UNDERLINE,d=e.tagName.split(/(?=[ .])+/g);for(let u of d){let m=u;if(m.startsWith(".voice-")){let f=m.split("-").pop();m=`v[voice="${f}"]`,i.has(m)||(m=`v[voice=${f}]`)}switch(i.has(m)&&Ee.mergeStyle_(r,i.get(m)),u){case"br":{let f=Ee.lineBreak(r.startTime,r.endTime);t.nestedCues.push(f);return}case"b":r.fontWeight=a;break;case"i":r.fontStyle=o;break;case"u":r.textDecoration.push(c);break;case"font":{let f=e.attributes.color;f&&(r.color=f);break}case"div":{let f=e.attributes.time;if(!f)break;let g=Gt.parseTime(f);g&&(r.startTime=g);break}case"ruby":case"rp":case"rt":r.rubyTag=u;break;default:break}}}let s=a=>I.isText(a),n=e.children;if(s(e)||n.length==1&&s(n[0])){let a=I.getTextContents(e).split(`
|
|
189
|
+
`),o=!0;for(let c of a){if(!o){let d=Ee.lineBreak(r.startTime,r.endTime);t.nestedCues.push(d)}if(c.length>0){let d=r.clone();d.payload=q.htmlUnescape(c),t.nestedCues.push(d)}o=!1}}else{t.nestedCues.push(r);for(let a of n)Ee.generateCueFromElement_(a,r,i)}}static mergeStyle_(e,t){t&&(e.backgroundColor=Ee.getOrDefault_(t.backgroundColor,e.backgroundColor),e.color=Ee.getOrDefault_(t.color,e.color),e.fontFamily=Ee.getOrDefault_(t.fontFamily,e.fontFamily),e.fontSize=Ee.getOrDefault_(t.fontSize,e.fontSize),e.textShadow=Ee.getOrDefault_(t.textShadow,e.textShadow),e.fontWeight=t.fontWeight,e.fontStyle=t.fontStyle,e.opacity=t.opacity,e.rubyTag=t.rubyTag,e.textCombineUpright=t.textCombineUpright,e.wrapLine=t.wrapLine)}static getOrDefault_(e,t){return e||t}};l(Ee,"positionAlign",{LEFT:"line-left",RIGHT:"line-right",CENTER:"center",AUTO:"auto"}),l(Ee,"textAlign",{LEFT:"left",RIGHT:"right",CENTER:"center",START:"start",END:"end"}),l(Ee,"displayAlign",{BEFORE:"before",CENTER:"center",AFTER:"after"}),l(Ee,"direction",{HORIZONTAL_LEFT_TO_RIGHT:"ltr",HORIZONTAL_RIGHT_TO_LEFT:"rtl"}),l(Ee,"writingMode",{HORIZONTAL_TOP_TO_BOTTOM:"horizontal-tb",VERTICAL_LEFT_TO_RIGHT:"vertical-lr",VERTICAL_RIGHT_TO_LEFT:"vertical-rl"}),l(Ee,"lineInterpretation",{LINE_NUMBER:0,PERCENTAGE:1}),l(Ee,"lineAlign",{CENTER:"center",START:"start",END:"end"}),l(Ee,"defaultTextColor",{white:"white",lime:"lime",cyan:"cyan",red:"red",yellow:"yellow",magenta:"magenta",blue:"blue",black:"black"}),l(Ee,"defaultTextBackgroundColor",{bg_white:"white",bg_lime:"lime",bg_cyan:"cyan",bg_red:"red",bg_yellow:"yellow",bg_magenta:"magenta",bg_blue:"blue",bg_black:"black"}),l(Ee,"fontWeight",{NORMAL:400,BOLD:700}),l(Ee,"fontStyle",{NORMAL:"normal",ITALIC:"italic",OBLIQUE:"oblique"}),l(Ee,"textDecoration",{UNDERLINE:"underline",LINE_THROUGH:"line-through",OVERLINE:"overline"}),l(Ee,"timeFormat_",/(?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{2,3})/g);var B=Ee;/*! @license
|
|
190
|
+
* Shaka Player
|
|
191
|
+
* Copyright 2016 Google LLC
|
|
192
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
193
|
+
*/var Xt=class Xt{destroy(){}static registerTransmuxer(e,t,i){let s=Xt.normalizeMimeType_(e)+"-"+i;Xt.transmuxerMap_.set(s,{priority:i,plugin:t})}static unregisterTransmuxer(e,t){let r=Xt.normalizeMimeType_(e)+"-"+t;Xt.transmuxerMap_.delete(r)}static findTransmuxer(e,t){for(let i of Xt.PLUGIN_PRIORITY_ORDER){let r=Xt.findTransmuxerPlugin(e,i);if(!r)continue;let s=r(),n=s.isSupported(e,t);if(s.destroy(),n)return r}return null}static findTransmuxerPlugin(e,t=null){let i=Xt.normalizeMimeType_(e),r=t!==null?[t]:Xt.PLUGIN_PRIORITY_ORDER;for(let s of r){let n=i+"-"+s,a=Xt.transmuxerMap_.get(n);if(a)return a.plugin}return null}static normalizeMimeType_(e){return e.toLowerCase().split(";")[0]}static isSupported(e,t){return!!Xt.findTransmuxer(e)}static convertCodecs(e,t){let i=Xt.findTransmuxer(t);if(!i)return t;let r=i(),s=r.convertCodecs(e,t);return r.destroy(),s}};l(Xt,"transmuxerMap_",new Map),l(Xt,"PluginPriority",{FALLBACK:1,PREFERRED_SECONDARY:2,PREFERRED:3,APPLICATION:4});var Oe=Xt;Oe.PLUGIN_PRIORITY_ORDER=[Oe.PluginPriority.APPLICATION,Oe.PluginPriority.PREFERRED,Oe.PluginPriority.PREFERRED_SECONDARY,Oe.PluginPriority.FALLBACK];/*! @license
|
|
194
|
+
* Shaka Player
|
|
195
|
+
* Copyright 2016 Google LLC
|
|
196
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
197
|
+
*/var di=class di{static getFullType(e,t){let i=e;return t&&!di.RAW_FORMATS.includes(e)&&(i+='; codecs="'+t+'"'),i}static getFullTypeWithAllCodecs(e,t){let i=e;return t&&(i+='; codecs="'+t+'"'),i}static getFullOrConvertedType(e,t,i){let r=di.getFullType(e,t),s=di.getFullTypeWithAllCodecs(e,t),n=R.ContentType;return Oe.isSupported(s,i)?Oe.convertCodecs(i,s):e!="video/mp2t"&&i==n.AUDIO?r.replace("video","audio"):r}static getExtendedType(e,t,i){let r=[t];return di.EXTENDED_MIME_PARAMETERS_.forEach((n,a)=>{let o=e[a];a=="codecs"?di.RAW_FORMATS.includes(e.mimeType)||r.push('codecs="'+i+'"'):o&&r.push(n+'="'+o+'"')}),e.hdr=="PQ"&&r.push('eotf="smpte2084"'),r.join(";")}static getContainerType(e){return e.split(";")[0].split("/")[1]}static splitCodecs(e){return e.split(",")}static getNormalizedCodec(e){let t=di.getCodecParts_(e),i=t[0].toLowerCase(),r=t[1].toLowerCase();switch(!0){case(i==="mp4a"&&r==="69"):case(i==="mp4a"&&r==="6b"):case(i==="mp4a"&&r==="40.34"):return"mp3";case(i==="mp4a"&&r==="66"):case(i==="mp4a"&&r==="67"):case(i==="mp4a"&&r==="68"):case(i==="mp4a"&&r==="40.2"):case(i==="mp4a"&&r==="40.02"):case(i==="mp4a"&&r==="40.5"):case(i==="mp4a"&&r==="40.05"):case(i==="mp4a"&&r==="40.29"):case(i==="mp4a"&&r==="40.42"):return"aac";case(i==="mp4a"&&r==="a5"):case i==="ac3":case i==="ac-3":return"ac-3";case(i==="mp4a"&&r==="a6"):case i==="eac3":case i==="ec-3":return"ec-3";case i==="ac-4":return"ac-4";case(i==="mp4a"&&r==="b2"):return"dtsx";case(i==="mp4a"&&r==="a9"):return"dtsc";case i==="vp09":case i==="vp9":return"vp9";case i==="avc1":case i==="avc3":return"avc";case i==="hvc1":case i==="hev1":return"hevc";case i==="vvc1":case i==="vvi1":return"vvc";case i==="dvh1":case i==="dvhe":return r&&r.startsWith("05")?"dovi-p5":"dovi-hevc";case i==="dvav":case i==="dva1":return"dovi-avc";case i==="dav1":return"dovi-av1";case i==="dvc1":case i==="dvi1":return"dovi-vvc";case i==="lvc1":return"lcevc"}return i}static getCodecBase(e){let t=[];for(let i of e.split(",")){let r=di.getCodecParts_(i);t.push(r[0])}return t.sort().join(",")}static getBasicType(e){return e.split(";")[0]}static getCodecs(e){let t=e.split(/ *; */);t.shift();let i=t.find(s=>s.startsWith("codecs="));return i?i.split("=")[1].replace(/^"|"$/g,""):""}static isHlsType(e){return e==="application/x-mpegurl"||e==="application/vnd.apple.mpegurl"||e==="audio/x-mpegurl"}static isDashType(e){return e==="application/dash+xml"||e==="video/vnd.mpeg.dash.mpd"}static getCorrectAudioCodecs(e,t){let i=j.getDevice(),r=ie.BrowserEngine.WEBKIT,s=e.toLowerCase();return s=="flac"?i.getBrowserEngine()!=r?"flac":"fLaC":s==="opus"?i.getBrowserEngine()!=r?"opus":di.getContainerType(t)=="mp4"?"Opus":"opus":s=="ac-3"&&i.requiresEC3InitSegments()?"ec-3":e}static getCorrectVideoCodecs(e){if(e.includes("avc1")){let t=e.split(".");if(t.length==3){let i=t.shift()+".";return i+=parseInt(t.shift(),10).toString(16),i+=("000"+parseInt(t.shift(),10).toString(16)).slice(-4),i}}else if(e=="vp9")return"vp09.00.41.08";return e}static getCodecParts_(e){let t=e.split("."),i=t[0];t.shift();let r=t.join(".");return[i,r]}};l(di,"CEA608_CLOSED_CAPTION_MIMETYPE","application/cea-608"),l(di,"CEA708_CLOSED_CAPTION_MIMETYPE","application/cea-708"),l(di,"RAW_FORMATS",["audio/aac","audio/ac3","audio/ec3","audio/mpeg"]);var N=di;N.EXTENDED_MIME_PARAMETERS_=new Map().set("codecs","codecs").set("frameRate","framerate").set("bandwidth","bitrate").set("width","width").set("height","height").set("channelsCount","channels");/*! @license
|
|
198
|
+
* Shaka Player
|
|
199
|
+
* Copyright 2016 Google LLC
|
|
200
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
201
|
+
*/var cr=class cr{constructor(e,t=me.UNKNOWN){l(this,"parser_");l(this,"displayer_");l(this,"manifestType_");l(this,"segmentRelativeVttTiming_");l(this,"containerIsMpegTs_");l(this,"external_");l(this,"timestampOffsetMap_");l(this,"deferredAppends_");l(this,"appendWindowStart_");l(this,"appendWindowEnd_");l(this,"bufferStart_");l(this,"bufferEnd_");l(this,"selectedClosedCaptionId_");l(this,"modifyCueCallback_");l(this,"closedCaptionsMap_");this.parser_=null,this.displayer_=e,this.manifestType_=t,this.segmentRelativeVttTiming_=!1,this.containerIsMpegTs_=!1,this.external_=!1,this.timestampOffsetMap_=new Map,this.deferredAppends_=new Map,this.appendWindowStart_=0,this.appendWindowEnd_=1/0,this.bufferStart_=null,this.bufferEnd_=null,this.selectedClosedCaptionId_="",this.modifyCueCallback_=(i,r)=>{},this.closedCaptionsMap_=new Map}static registerParser(e,t){cr.parserMap_.set(e,t)}static unregisterParser(e){cr.parserMap_.delete(e)}static findParser(e){return cr.parserMap_.get(e)}static isTypeSupported(e){return cr.parserMap_.has(e)?!0:e==N.CEA608_CLOSED_CAPTION_MIMETYPE||e==N.CEA708_CLOSED_CAPTION_MIMETYPE?!!Rt.findDecoder():!1}destroy(){return this.parser_=null,this.displayer_=null,this.timestampOffsetMap_.clear(),this.deferredAppends_.clear(),this.closedCaptionsMap_.clear(),Promise.resolve()}setDisplayer(e){this.displayer_=e}initParser(e,t,i){if(e==N.CEA608_CLOSED_CAPTION_MIMETYPE||e==N.CEA708_CLOSED_CAPTION_MIMETYPE){this.parser_=null;return}let r=cr.parserMap_.get(e);v.assert(r,"Text type negotiation should have happened already"),this.parser_=r(),this.parser_.setManifestType(this.manifestType_),this.segmentRelativeVttTiming_=i,this.external_=t}setModifyCueCallback(e){this.modifyCueCallback_=e}async appendBuffer(e,t,i,r,s=-1){if(v.assert(this.parser_,"The parser should already be initialized"),!this.external_&&!this.timestampOffsetMap_.has(s)){let u=this.deferredAppends_.get(s)||[];u.push({buffer:e,startTime:t,endTime:i,uri:r,disco:s}),this.deferredAppends_.set(s,u);return}if(await Promise.resolve(),!this.parser_||!this.displayer_)return;if(t==null||i==null){this.parser_.parseInit(D.toUint8(e));return}let n=this.external_?0:this.timestampOffsetMap_.get(s),a=this.segmentRelativeVttTiming_||this.external_?t:this.timestampOffsetMap_.get(s),o={periodStart:n,segmentStart:t,segmentEnd:i,vttOffset:a,isMpegTs:this.containerIsMpegTs_},c=this.parser_.parseMedia(D.toUint8(e),o,r,[]);for(let u of c)this.modifyCueCallback_(u,r||null,o);let d=c.filter(u=>u.startTime>=this.appendWindowStart_&&u.startTime<this.appendWindowEnd_);this.displayer_.append(d),this.bufferStart_==null?this.bufferStart_=Math.max(t,this.appendWindowStart_):(v.assert(this.bufferEnd_!=null,"There should already be a buffered range end."),v.assert(t-this.bufferEnd_<=1,"There should not be a gap in text references >1s")),this.bufferEnd_=Math.min(i,this.appendWindowEnd_)}async remove(e,t,i=!1){if(await Promise.resolve(),e>=t||i&&(this.removeClosedCaptions_(e,t),this.selectedClosedCaptionId_===""))return;let r=s=>s.startTime<t&&s.endTime>e;for(let s of this.deferredAppends_.keys()){let n=this.deferredAppends_.get(s),a=[];for(let o=0;o<n.length;o++){let c=n[o];r(c)||a.push(c)}this.deferredAppends_.set(s,a)}this.displayer_&&this.displayer_.remove(e,t)&&(this.bufferStart_==null?v.assert(this.bufferEnd_==null,"end must be null if startTime is null"):(v.assert(this.bufferEnd_!=null,"end must be non-null if startTime is non-null"),t<=this.bufferStart_||e>=this.bufferEnd_||(e<=this.bufferStart_&&t>=this.bufferEnd_?this.bufferStart_=this.bufferEnd_=null:e<=this.bufferStart_&&t<this.bufferEnd_?this.bufferStart_=t:e>this.bufferStart_&&t>=this.bufferEnd_?this.bufferEnd_=e:v.assert(!1,"removal from the middle is not supported by TextEngine")),this.updateRangesWithClosedCaptions_()))}setTimestampOffset(e,t=-1){(!this.timestampOffsetMap_.has(t)||this.manifestType_!==me.HLS||this.manifestType_===me.HLS&&t===-1&&this.timestampOffsetMap_.get(t)===0)&&this.timestampOffsetMap_.set(t,e);let r=this.deferredAppends_.get(t)||[];for(let s=0;s<r.length;s++){let{buffer:n,startTime:a,endTime:o,uri:c,disco:d}=r[s];this.appendBuffer(n,a,o,c,d)}this.deferredAppends_.set(t,[])}setContainerIsMpegTs(e){this.containerIsMpegTs_=e}setAppendWindow(e,t){this.appendWindowStart_=e,this.appendWindowEnd_=t}bufferStart(){return this.bufferStart_}bufferEnd(){return this.bufferEnd_}isBuffered(e){return this.bufferStart_==null||this.bufferEnd_==null?!1:e>=this.bufferStart_&&e<this.bufferEnd_}bufferedAheadOf(e){return this.bufferEnd_==null||this.bufferEnd_<e?0:(v.assert(this.bufferStart_!=null,"start should not be null if end is not null"),this.bufferEnd_-Math.max(e,this.bufferStart_))}bufferedBehindOf(e){return this.bufferStart_==null||this.bufferStart_>e?0:(v.assert(this.bufferEnd_!=null,"end should not be null if start is not null"),Math.min(e,this.bufferEnd_)-this.bufferStart_)}setSelectedClosedCaptionId(e,t){this.selectedClosedCaptionId_=e;let i=this.closedCaptionsMap_.get(e);if(i){let r=i.filter(s=>s.endTime<=t);r.length&&this.displayer_.append(r)}}applyVideoTimestampOffsetRecursive_(e,t){e.startTime+=t,e.endTime+=t;for(let i of e.nestedCues)this.applyVideoTimestampOffsetRecursive_(i,t)}storeAndAppendClosedCaptions(e,t){let i=new Map;for(let r of e){let s=r.stream,n=r.cue;i.getOrInsert(s,[]),this.applyVideoTimestampOffsetRecursive_(n,t),n.startTime>=this.appendWindowStart_&&n.startTime<this.appendWindowEnd_&&(i.get(s).push(n),s==this.selectedClosedCaptionId_&&this.displayer_.append([n]))}for(let r of i.keys()){let s=this.closedCaptionsMap_.getOrInsertComputed(r,()=>[]);for(let n of i.get(r))s.push(n)}this.updateRangesWithClosedCaptions_()}removeClosedCaptions_(e,t){for(let i of this.closedCaptionsMap_.keys()){let r=this.closedCaptionsMap_.get(i);r=r.filter(s=>s.startTime<e||s.endTime>=t),this.closedCaptionsMap_.set(i,r)}}updateRangesWithClosedCaptions_(){let e=1/0,t=-1/0;for(let i of this.closedCaptionsMap_.values())for(let r of i)e=Math.min(e,r.startTime),t=Math.max(t,r.endTime);e===1/0||t===-1/0||(this.bufferStart_==null?this.bufferStart_=Math.max(e,this.appendWindowStart_):this.bufferStart_=Math.min(this.bufferStart_,Math.max(e,this.appendWindowStart_)),this.bufferEnd_=Math.max(this.bufferEnd_,Math.min(t,this.appendWindowEnd_)))}getNumberOfClosedCaptionChannels(){return this.closedCaptionsMap_.size}getNumberOfClosedCaptionsInChannel(e){let t=this.closedCaptionsMap_.get(e);return t?t.length:0}};l(cr,"parserMap_",new Map);var Ue=cr;/*! @license
|
|
202
|
+
* Shaka Player
|
|
203
|
+
* Copyright 2016 Google LLC
|
|
204
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
205
|
+
*/var Ce=class Ce{static chooseCodecsAndFilterManifest(e,t,i,r,s){if(s.length){let f=e.textStreams;for(let g of s){let _=f.filter(T=>!!(T.codecs.startsWith(g)||T.mimeType.startsWith(g)));if(_.length){f=_;break}}e.textStreams=f}let n=e.variants;if((t.length||i.length)&&(n=Ce.choosePreferredCodecs(n,t,i)),r.length){let f=new lr;for(let _ of n)f.push(String(_.video.width||0),_);let g=[];f.forEach((_,T)=>{let S=0,b=[];for(let E of T){let C=r.filter(A=>E.decodingInfos[0][A]).length;C>S?(S=C,b=[E]):C==S&&b.push(E)}g.push(...b)}),n=g}let a=new Set;for(let f of n)f.video&&a.add(f.video);if(!a.size){e.variants=n;return}let o={vp8:1,avc:1,"dovi-avc":.95,vp9:.9,vp09:.9,hevc:.85,"dovi-hevc":.8,"dovi-p5":.75,av01:.7,"dovi-av1":.65,vvc:.6},c=Array.from(a).sort((f,g)=>{if(f.bandwidth&&g.bandwidth&&f.bandwidth!=g.bandwidth)return f.bandwidth-g.bandwidth;if(f.width!=g.width)return f.width-g.width;if(f.codecs&&g.codecs){let _=N.getNormalizedCodec(f.codecs),T=N.getNormalizedCodec(g.codecs),S=o[_]||1,b=o[T]||1;return S-b}return 0}),d=[],u=new Map,m=f=>{let g=[String(f.width||""),String(f.height||""),String(Math.round(f.frameRate||0)),f.hdr||"",f.fastSwitching];return f.dependencyStream&&g.push(f.dependencyStream.baseOriginalId||""),f.roles&&g.push(f.roles.sort().join("_")),g.join(";")};for(let f of c){let g=m(f),_=u.get(g)||[];if(!_.length)_.push(f),d.push(f.id);else{let T=_[_.length-1],S=N.getNormalizedCodec(T.codecs),b=N.getNormalizedCodec(f.codecs);S==b&&(_.push(f),d.push(f.id))}u.set(g,_)}e.variants=n.filter(f=>{let g=f.video;return g&&!d.includes(g.id)?(p.debug("Dropping Variant (better codec available)",f),!1):!0})}static choosePreferredCodecs(e,t,i){let r=e;for(let s of t){let n=r.filter(a=>a.video&&a.video.codecs.startsWith(s));if(n.length){r=n;break}}for(let s of i){let n=r.filter(a=>a.audio&&a.audio.codecs.startsWith(s));if(n.length){r=n;break}}return r}static filterByRestrictions(e,t,i){e.variants=e.variants.filter(r=>Ce.meetsRestrictions(r,t,i))}static meetsRestrictions(e,t,i){let r=(s,n,a)=>s>=n&&s<=a;if(e&&e.video&&e.video.width&&e.video.height){let s=e.video.width,n=e.video.height;if(n>s&&([s,n]=[n,s]),!r(s,t.minWidth,Math.min(t.maxWidth,i.width))||!r(n,t.minHeight,Math.min(t.maxHeight,i.height))||!r(s*n,t.minPixels,t.maxPixels))return!1}return!(e&&e.video&&e.video.frameRate&&!r(e.video.frameRate,t.minFrameRate,t.maxFrameRate)||e&&e.audio&&e.audio.channelsCount&&!r(e.audio.channelsCount,t.minChannelsCount,t.maxChannelsCount)||!r(e.bandwidth,t.minBandwidth,t.maxBandwidth))}static applyRestrictions(e,t,i){let r=!1;for(let s of e){let n=s.allowedByApplication;s.allowedByApplication=Ce.meetsRestrictions(s,t,i),n!=s.allowedByApplication&&(r=!0)}return r}static async filterManifest(e,t,i=[],r={}){await Ce.filterManifestByMediaCapabilities(e,t,t.offlineSessionIds.length>0,i,r),Ce.filterTextStreams_(t),await Ce.filterImageStreams_(t)}static async filterManifestByMediaCapabilities(e,t,i,r,s){v.assert(navigator.mediaCapabilities,"MediaCapabilities should be valid."),j.getDevice().shouldOverrideDolbyVisionCodecs()&&Ce.overrideDolbyVisionCodecs(t.variants),await Ce.getDecodingInfosForVariants(t.variants,i,!1,r);let n=null;if(e){let a=e.getDrmInfo();a&&(n=a.keySystem)}t.variants=t.variants.filter(a=>{let o=Ce.checkVariantSupported_(a,n,s);return o||p.debug("Dropping variant - not compatible with platform",Ce.getVariantSummaryString_(a)),o})}static overrideDolbyVisionCodecs(e){let t=new Map().set("dvav","avc3").set("dva1","avc1").set("dvhe","hev1").set("dvh1","hvc1").set("dvc1","vvc1").set("dvi1","vvi1"),i=new Set;for(let r of e)r.video&&i.add(r.video);for(let r of i)for(let[s,n]of t)if(r.codecs.includes(s)){r.codecs=r.codecs.replace(s,n);break}}static checkVariantSupported_(e,t,i){if(!e.decodingInfos.some(g=>{if(!g.supported)return!1;if(t){let _=g.keySystemAccess;if(_&&(i[_.keySystem]||_.keySystem)!=t)return!1}return!0}))return!1;let s=j.getDevice(),n=s.getDeviceName()==="Xbox",a=s.getDeviceType()===ie.DeviceType.MOBILE&&s.getBrowserEngine()===ie.BrowserEngine.GECKO,o=e.video,c=o&&o.width||0,d=o&&o.height||0;if(n&&o&&(c>1920||d>1080)&&(o.codecs.includes("avc1.")||o.codecs.includes("avc3.")))return!1;let u=o&&o.dependencyStream;if(u&&!wr.isStreamSupported(u))return!1;let m=e.audio;return!(a&&m&&m.encrypted&&m.codecs.toLowerCase().includes("opus")||m&&m.dependencyStream)}static async getDecodingInfosForVariant_(e,t){let i=(n,a)=>{if(n){let o=Ne.shallowCloneObject(n);return o.supported=n.supported&&a.supported,o.powerEfficient=n.powerEfficient&&a.powerEfficient,o.smooth=n.smooth&&a.smooth,a.keySystemAccess&&!o.keySystemAccess&&(o.keySystemAccess=a.keySystemAccess),o}else return a},r=null,s=[];for(let n of t){let a=Ne.alphabeticalKeyOrderStringify(n),o=Ce.decodingConfigCache_;o.has(a)?(p.v2("Using cached results of mediaCapabilities.decodingInfo","for key",a),r=i(r,o.get(a))):s.push(Ce.checkEachDecodingConfigCombination_(n).then(c=>{let d=null;for(let u of c||[])d=i(d,u);d&&(o.set(a,d),r=i(r,d))}))}await Promise.all(s),r&&e.decodingInfos.push(r)}static checkEachDecodingConfigCombination_(e){let t=[""];e.video&&(t=N.getCodecs(e.video.contentType).split(","));let i=[""];e.audio&&(i=N.getCodecs(e.audio.contentType).split(","));let r=[];for(let s of t)for(let n of i){let a=Ne.cloneObject(e);if(e.video){let o=N.getBasicType(a.video.contentType);a.video.contentType=N.getFullType(o,s)}if(e.audio){let o=N.getBasicType(a.audio.contentType);a.audio.contentType=N.getFullType(o,n)}r.push(new Promise((o,c)=>{let u;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?u=it.promiseWithTimeout(5,navigator.mediaCapabilities.decodingInfo(a)):u=navigator.mediaCapabilities.decodingInfo(a),u.then(f=>{o(f)}).catch(c)}))}return Promise.all(r).catch(s=>(p.info("MediaCapabilities.decodingInfo() failed.",JSON.stringify(e),s),null))}static async getDecodingInfosForVariants(e,t,i,r){if(e.some(n=>n.decodingInfos.length)){p.debug("Already got the variants' decodingInfo.");return}for(let n of r){let a=!1;for(let o of e){let c=Ce.getDecodingConfigs_(o,t,i).filter(d=>{let u=d[0],m=u.keySystemConfiguration&&u.keySystemConfiguration.keySystem;return!m||m===n});for(let d of c)await Ce.getDecodingInfosForVariant_(o,d);o.decodingInfos.some(d=>d.supported)&&(a=!0)}if(a)return}for(let n of e){let a=Ce.getDecodingConfigs_(n,t,i).filter(o=>{let c=o[0],d=c.keySystemConfiguration&&c.keySystemConfiguration.keySystem;return!d||!r.includes(d)});for(let o of a)await Ce.getDecodingInfosForVariant_(n,o)}}static getDecodingConfigs_(e,t,i){let r=e.audio,s=e.video,n=R.ContentType,a=[],o=[];if(s)for(let S of s.fullMimeTypes){let b=N.getCodecs(S);if(b.includes(",")&&!r){let A=b.split(","),w=N.getBasicType(S);b=R.guessCodecs(n.VIDEO,A);let M=R.guessCodecs(n.AUDIO,A);M=N.getCorrectAudioCodecs(M,w);let x=N.getFullOrConvertedType(w,M,n.AUDIO);o.push({contentType:x,channels:2,bitrate:e.bandwidth||1,samplerate:1,spatialRendering:!1})}b=N.getCorrectVideoCodecs(b);let C={contentType:N.getFullOrConvertedType(N.getBasicType(S),b,n.VIDEO),width:s.width||64,height:s.height||64,bitrate:s.bandwidth||e.bandwidth||1,framerate:s.frameRate||30};if(s.hdr)switch(s.hdr){case"PQ":C.transferFunction="pq";break;case"HLG":C.transferFunction="hlg";break}s.colorGamut&&(C.colorGamut=s.colorGamut),a.push(C)}if(r)for(let S of r.fullMimeTypes){let b=N.getBasicType(S),E=N.getCorrectAudioCodecs(N.getCodecs(S),b),C=N.getFullOrConvertedType(b,E,n.AUDIO);o.push({contentType:C,channels:r.channelsCount||2,bitrate:r.bandwidth||e.bandwidth||1,samplerate:r.audioSamplingRate||1,spatialRendering:r.spatialAudio})}let c=[];a.length==0&&a.push(null),o.length==0&&o.push(null);for(let S of a)for(let b of o){let E={type:i?"file":"media-source"};S&&(E.video=S),b&&(E.audio=b),c.push(E)}let d=e.video?e.video.drmInfos:[],u=e.audio?e.audio.drmInfos:[],m=d.concat(u);if(!m.length)return[c];let f=[],g=new Map;for(let S of m)g.get(S.keySystem)||g.set(S.keySystem,[]),g.get(S.keySystem).push(S);let _=t?"required":"optional",T=t?["persistent-license"]:["temporary"];for(let S of g.keys()){let b=g.get(S),E=new Map;for(let C of b){let A=`${C.videoRobustness},${C.audioRobustness}`;E.get(A)||E.set(A,[]),E.get(A).push(C)}for(let C of E.values()){let A=[];for(let w of c){let M=Object.assign({},w),x={keySystem:S,initDataType:"cenc",persistentState:_,distinctiveIdentifier:"optional",sessionTypes:T};for(let k of C){if(k.initData&&k.initData.length){let L=new Set;for(let V of k.initData)L.add(V.initDataType);L.size>1&&p.v2("DrmInfo contains more than one initDataType,","and we use the initDataType of the first initData.",k),x.initDataType=k.initData[0].initDataType}k.distinctiveIdentifierRequired&&(x.distinctiveIdentifier="required"),k.persistentStateRequired&&(x.persistentState="required"),k.sessionType&&(x.sessionTypes=[k.sessionType]),r&&(x.audio?(k.encryptionScheme&&(x.audio.encryptionScheme=x.audio.encryptionScheme||k.encryptionScheme),x.audio.robustness=x.audio.robustness||k.audioRobustness):(x.audio={robustness:k.audioRobustness},k.encryptionScheme&&(x.audio.encryptionScheme=k.encryptionScheme)),x.audio.robustness==""&&delete x.audio.robustness),s&&(x.video?(k.encryptionScheme&&(x.video.encryptionScheme=x.video.encryptionScheme||k.encryptionScheme),x.video.robustness=x.video.robustness||k.videoRobustness):(x.video={robustness:k.videoRobustness},k.encryptionScheme&&(x.video.encryptionScheme=k.encryptionScheme)),x.video.robustness==""&&delete x.video.robustness)}M.keySystemConfiguration=x,A.push(M)}f.push(A)}}return f}static filterManifestByCurrentVariant(e,t){t.variants=t.variants.filter(i=>{let r=i.audio,s=i.video;return r&&e&&e.audio&&!Ce.areStreamsCompatible_(r,e.audio)?(p.debug("Dropping variant - not compatible with active audio","active audio",Ce.getStreamSummaryString_(e.audio),"variant.audio",Ce.getStreamSummaryString_(r)),!1):s&&e&&e.video&&!Ce.areStreamsCompatible_(s,e.video)?(p.debug("Dropping variant - not compatible with active video","active video",Ce.getStreamSummaryString_(e.video),"variant.video",Ce.getStreamSummaryString_(s)),!1):!0})}static filterTextStreams_(e){e.textStreams=e.textStreams.filter(t=>{let i=N.getFullType(t.mimeType,t.codecs),r=Ue.isTypeSupported(i);return r||p.debug("Dropping text stream. Is not supported by the platform.",t),r})}static async filterImageStreams_(e){let t=[];for(let i of e.imageStreams){let r=i.mimeType;if(r=="application/mp4"&&i.codecs=="mjpg"&&(r="image/jpg"),!Ce.supportedImageMimeTypes_.has(r)){let n=Ce.minImage_.get(r);if(n){let a=await Ce.isImageSupported_(n);Ce.supportedImageMimeTypes_.set(r,a)}else Ce.supportedImageMimeTypes_.set(r,!1)}Ce.supportedImageMimeTypes_.get(r)?t.push(i):p.debug("Dropping image stream. Is not supported by the platform.",i)}e.imageStreams=t}static isImageSupported_(e){return new Promise(t=>{let i=new Image;i.src=e,"decode"in i?i.decode().then(()=>{t(!0)}).catch(()=>{t(!1)}):i.onload=i.onerror=()=>{t(i.height===2)}})}static areStreamsCompatible_(e,t){return!(e.mimeType!=t.mimeType||e.codecs.split(".")[0]!=t.codecs.split(".")[0])}static variantToTrack(e){let t=R.ContentType,i=e.audio,r=e.video,s=i?i.mimeType:null,n=r?r.mimeType:null,a=i?i.codecs:null,o=r?r.codecs:null,c=i?i.groupId:null,d=[];r&&d.push(r.mimeType),i&&d.push(i.mimeType);let u=d[0]||null,m=[];i&&m.push(i.kind),r&&m.push(r.kind);let f=m[0]||null,g=new Set;if(i)for(let S of i.roles)g.add(S);if(r)for(let S of r.roles)g.add(S);let _={id:e.id,active:!1,type:"variant",bandwidth:e.bandwidth,language:e.language,label:null,videoLabel:null,kind:f,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:u,audioMimeType:s,videoMimeType:n,codecs:"",audioCodec:a,videoCodec:o,primary:e.primary,roles:Array.from(g),audioRoles:null,videoRoles:null,audioLanguage:null,videoLanguage:null,forced:!1,videoId:null,audioId:null,audioGroupId:c,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:null,originalAudioId:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:null};if(r){_.videoId=r.id,_.originalVideoId=r.originalId,_.width=r.width||null,_.height=r.height||null,_.frameRate=r.frameRate||null,_.pixelAspectRatio=r.pixelAspectRatio||null,_.videoBandwidth=r.bandwidth||null,_.hdr=r.hdr||null,_.colorGamut=r.colorGamut||null,_.videoLayout=r.videoLayout||null,_.videoRoles=r.roles,_.videoLanguage=r.language||null,_.videoLabel=r.label;let S=r.dependencyStream;if(S&&(_.width=S.width||_.width,_.height=S.height||_.height,_.videoCodec=S.codecs||_.videoCodec,_.pixelAspectRatio=S.pixelAspectRatio||_.pixelAspectRatio,_.videoBandwidth&&S.bandwidth&&(_.videoBandwidth+=S.bandwidth)),o.includes(",")){_.channelsCount=r.channelsCount,_.audioSamplingRate=r.audioSamplingRate,_.spatialAudio=r.spatialAudio,_.originalLanguage=r.originalLanguage,_.audioMimeType=n;let b=o.split(",");try{_.videoCodec=R.guessCodecs(t.VIDEO,b),_.audioCodec=R.guessCodecs(t.AUDIO,b)}catch(E){}}}if(i){_.audioId=i.id,_.originalAudioId=i.originalId,_.channelsCount=i.channelsCount,_.audioSamplingRate=i.audioSamplingRate,_.audioBandwidth=i.bandwidth||null,_.spatialAudio=i.spatialAudio,_.label=i.label,_.audioRoles=i.roles,_.audioLanguage=i.language||null,_.accessibilityPurpose=i.accessibilityPurpose,_.originalLanguage=i.originalLanguage;let S=i.dependencyStream;S&&(_.audioCodec=S.codecs||_.audioCodec,_.audioBandwidth&&S.bandwidth&&(_.audioBandwidth+=S.bandwidth))}r&&!_.videoBandwidth&&(i?_.audioBandwidth&&(_.videoBandwidth=_.bandwidth-_.audioBandwidth):_.videoBandwidth=_.bandwidth),i&&!_.audioBandwidth&&(r?_.videoBandwidth&&(_.audioBandwidth=_.bandwidth-_.videoBandwidth):_.audioBandwidth=_.bandwidth);let T=[];return _.videoCodec&&T.push(_.videoCodec),_.audioCodec&&T.push(_.audioCodec),_.codecs=T.join(", "),_}static textStreamToTrack(e){let t=R.ContentType;return{id:e.id,active:!1,type:t.TEXT,bandwidth:e.bandwidth||0,language:e.language,label:e.label,kind:e.kind||null,mimeType:e.mimeType,codecs:e.codecs||null,primary:e.primary,roles:e.roles,accessibilityPurpose:e.accessibilityPurpose,forced:e.forced,originalTextId:e.originalId,originalLanguage:e.originalLanguage}}static imageStreamToTrack(e){let t=R.ContentType,i=e.width||null,r=e.height||null,s=null;e.segmentIndex&&(s=e.segmentIndex.earliestReference());let n=e.tilesLayout;return s&&(n=s.getTilesLayout()||n),n&&i!=null&&(i/=Number(n.split("x")[0])),n&&r!=null&&(r/=Number(n.split("x")[1])),{id:e.id,type:t.IMAGE,bandwidth:e.bandwidth||0,width:i,height:r,mimeType:e.mimeType,codecs:e.codecs||null,tilesLayout:n||null,originalImageId:e.originalId}}static chapterStreamToTrack(e){let t=R.ContentType;return{id:e.id,type:t.CHAPTER,bandwidth:e.bandwidth||0,language:e.language}}static html5TrackId(e){return e.__shaka_id==null&&(e.__shaka_id=Ce.nextTrackId_++),e.__shaka_id}static html5TextTrackToTrack(e,t=!1){let i=R.ContentType,r={id:Ce.html5TrackId(e),active:t&&e.mode!="disabled",type:i.TEXT,bandwidth:0,language:ve.normalize(e.language||"und"),label:e.label,kind:e.kind,mimeType:null,codecs:null,primary:!1,roles:[],accessibilityPurpose:null,forced:e.kind=="forced",originalTextId:e.id,originalLanguage:e.language};return e.kind=="captions"&&(r.mimeType="unknown"),e.kind=="subtitles"&&(r.mimeType="text/vtt"),e.kind&&(r.roles=[e.kind]),r}static html5TextTrackToChapterTrack(e){let t=R.ContentType;return{id:Ce.html5TrackId(e),type:t.CHAPTER,bandwidth:0,language:ve.normalize(e.language||"und")}}static html5AudioTrackToTrack(e){let t=e.language,i={active:e.enabled,language:ve.normalize(t||"und"),label:e.label,mimeType:null,codecs:null,primary:e.kind=="main",roles:[],accessibilityPurpose:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,originalLanguage:t};return e.kind&&(e.kind=="description"&&(i.accessibilityPurpose=me.AccessibilityPurpose.VISUALLY_IMPAIRED),i.roles.push(e.kind)),e.configuration&&(e.configuration.codec&&(i.codecs=e.configuration.codec),e.configuration.sampleRate&&(i.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(i.channelsCount=e.configuration.numberOfChannels)),i}static html5TrackToShakaTrack(e,t){v.assert(e||t,"There must be at least audioTrack or videoTrack.");let i=e?e.language:null,r={id:Ce.html5TrackId(e||t),active:e?e.enabled:t.selected,type:"variant",bandwidth:0,language:ve.normalize(i||"und"),label:e?e.label:null,videoLabel:null,kind:e?e.kind:null,width:null,height:null,frameRate:null,pixelAspectRatio:null,hdr:null,colorGamut:null,videoLayout:null,mimeType:null,audioMimeType:null,videoMimeType:null,codecs:null,audioCodec:null,videoCodec:null,primary:e?e.kind=="main":!1,roles:[],forced:!1,audioRoles:null,videoRoles:null,audioLanguage:e?ve.normalize(e.language||"und"):null,videoLanguage:t?ve.normalize(t.language||"und"):null,videoId:null,audioId:null,audioGroupId:null,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,tilesLayout:null,audioBandwidth:null,videoBandwidth:null,originalVideoId:t?t.id:null,originalAudioId:e?e.id:null,originalTextId:null,originalImageId:null,accessibilityPurpose:null,originalLanguage:i};if(e&&e.kind&&(r.roles=[e.kind],r.audioRoles=[e.kind]),e&&e.configuration&&(e.configuration.codec&&(r.audioCodec=e.configuration.codec,r.codecs=r.audioCodec),e.configuration.bitrate&&(r.audioBandwidth=e.configuration.bitrate,r.bandwidth+=r.audioBandwidth),e.configuration.sampleRate&&(r.audioSamplingRate=e.configuration.sampleRate),e.configuration.numberOfChannels&&(r.channelsCount=e.configuration.numberOfChannels)),t&&t.configuration&&(t.configuration.codec&&(r.videoCodec=t.configuration.codec,r.codecs?r.codecs+=","+r.videoCodec:r.codecs=r.videoCodec),t.configuration.bitrate&&(r.videoBandwidth=t.configuration.bitrate,r.bandwidth+=r.videoBandwidth),t.configuration.framerate&&(r.frameRate=t.configuration.framerate),t.configuration.width&&(r.width=t.configuration.width),t.configuration.height&&(r.height=t.configuration.height),t.configuration.colorSpace&&t.configuration.colorSpace.transfer))switch(t.configuration.colorSpace.transfer){case"pq":r.hdr="PQ";break;case"hlg":r.hdr="HLG";break;case"bt709":r.hdr="SDR";break}return r}static isPlayable(e){return e.allowedByApplication&&e.allowedByKeySystem&&e.disabledUntilTime==0}static getPlayableVariants(e){return e.filter(t=>Ce.isPlayable(t))}static filterStreamsByLanguageAndRole(e,t,i,r){if(!t)return[];let s=e,n=e.filter(c=>c.primary);n.length&&(s=n);let a=s.length?s[0].language:"";if(s=s.filter(c=>c.language==a),t){let c=ve.findClosestLocale(ve.normalize(t),e.map(d=>d.language));if(c)s=e.filter(d=>ve.normalize(d.language)==c);else return[]}if(s=s.filter(c=>c.forced==r),i){let c=Ce.filterStreamsByRole_(s,i);if(c.length)return c;p.warning("No exact match for the text role could be found.")}else{let c=s.filter(d=>d.roles.length==0);if(c.length)return c}let o=s.map(c=>c.roles).reduce((c,d)=>c.concat(d),[]);return o.length?Ce.filterStreamsByRole_(s,o[0]):s}static filterStreamsByRole_(e,t){return e.filter(i=>i.roles.includes(t))}static isAudio(e){let t=R.ContentType;return e.type==t.AUDIO}static isVideo(e){let t=R.ContentType;return e.type==t.VIDEO}static getVariantStreams(e){let t=[];return e.audio&&t.push(e.audio),e.video&&t.push(e.video),t}static isFastSwitching(e){return!!(e.audio&&e.audio.fastSwitching||e.video&&e.video.fastSwitching)}static setBetterIFrameStream(e,t){if(!t.length)return;let i=t.filter(r=>N.getNormalizedCodec(e.codecs)==N.getNormalizedCodec(r.codecs)).sort((r,s)=>!r.bandwidth||!s.bandwidth||r.bandwidth==s.bandwidth?(r.width||0)-(s.width||0):r.bandwidth-s.bandwidth);if(e.trickModeVideo=i[0],i.length>1){let r=i.find(s=>e.width==s.width&&e.height==s.height);r&&(e.trickModeVideo=r)}}static getVariantSummaryString_(e){let t=[];return e.audio&&t.push(Ce.getStreamSummaryString_(e.audio)),e.video&&t.push(Ce.getStreamSummaryString_(e.video)),t.join(", ")}static getStreamSummaryString_(e){return Ce.isAudio(e)?"type=audio codecs="+e.codecs+" bandwidth="+e.bandwidth+" channelsCount="+e.channelsCount+" audioSamplingRate="+e.audioSamplingRate:Ce.isVideo(e)?"type=video codecs="+e.codecs+" bandwidth="+e.bandwidth+" frameRate="+e.frameRate+" width="+e.width+" height="+e.height:"unexpected stream type"}static clearDecodingConfigCache(){Ce.decodingConfigCache_.clear()}static createStream(e){let t={id:0,originalId:null,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:"",codecs:"",supplementalCodecs:"",encrypted:!1,drmInfos:[],keyIds:new Set,language:"",originalLanguage:null,label:null,type:"",primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:[],accessibilityPurpose:null,forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return Object.assign(t,e),t.mimeType&&t.fullMimeTypes.add(N.getFullType(t.mimeType,t.codecs)),t}static createEmptyVariant(e){let t=R.ContentType,i={id:0,language:"und",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:100,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};for(let r of e){let s=Ce.createStream({mimeType:r?N.getBasicType(r):"",codecs:r?N.getCodecs(r):"",encrypted:!0,language:"und",type:t.VIDEO});r.startsWith("audio/")?(s.type=t.AUDIO,i.audio=s):i.video=s}return i}};l(Ce,"decodingConfigCache_",new Map),l(Ce,"nextTrackId_",0),l(Ce,"DecodingAttributes",{SMOOTH:"smooth",POWER:"powerEfficient"});var se=Ce;se.supportedImageMimeTypes_=new Map().set("image/svg+xml",!0).set("image/png",!0).set("image/jpeg",!0).set("image/jpg",!0);se.minWebPImage_="data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA";se.minAvifImage_="data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=";se.minImage_=new Map().set("image/webp",se.minWebPImage_).set("image/avif",se.minAvifImage_);/*! @license
|
|
206
|
+
* Shaka Player
|
|
207
|
+
* Copyright 2016 Google LLC
|
|
208
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
209
|
+
*/var yi=class yi{constructor(e){l(this,"playerInterface_");l(this,"mediaKeys_");l(this,"video_");l(this,"initialized_");l(this,"initializedForStorage_");l(this,"licenseTimeSeconds_");l(this,"currentDrmInfo_");l(this,"eventManager_");l(this,"activeSessions_");l(this,"activeRequests_");l(this,"storedPersistentSessions_");l(this,"hasInitData_");l(this,"allSessionsLoaded_");l(this,"config_");l(this,"onError_");l(this,"keyStatusByKeyId_");l(this,"announcedKeyStatusByKeyId_");l(this,"keyStatusTimer_");l(this,"usePersistentLicenses_");l(this,"mediaKeyMessageEvents_");l(this,"initialRequestsSent_");l(this,"expirationTimer_");l(this,"destroyer_");l(this,"srcEquals_");l(this,"mediaKeysAttached_");l(this,"manifestInitData_");l(this,"isPreload_");this.playerInterface_=e,this.mediaKeys_=null,this.video_=null,this.initialized_=!1,this.initializedForStorage_=!1,this.licenseTimeSeconds_=0,this.currentDrmInfo_=null,this.eventManager_=new ue,this.activeSessions_=new Map,this.activeRequests_=[],this.storedPersistentSessions_=new Map,this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.config_=null,this.onError_=i=>{i.severity==h.Severity.CRITICAL&&this.allSessionsLoaded_.reject(i),e.onError(i)},this.keyStatusByKeyId_=new Map,this.announcedKeyStatusByKeyId_=new Map,this.keyStatusTimer_=new ae(()=>this.processKeyStatusChanges_()),this.usePersistentLicenses_=!1,this.mediaKeyMessageEvents_=[],this.initialRequestsSent_=!1,this.expirationTimer_=new ae(()=>{this.pollExpiration_()});let t=()=>{};this.allSessionsLoaded_.promise.catch(t),this.destroyer_=new ci(()=>this.destroyNow_()),this.srcEquals_=!1,this.mediaKeysAttached_=null,this.manifestInitData_=null,this.isPreload_=()=>!1}destroy(){return this.destroyer_.destroy()}async destroyNow_(){if(this.eventManager_.release(),this.eventManager_=null,this.allSessionsLoaded_.reject(),this.expirationTimer_.stop(),this.expirationTimer_=null,this.keyStatusTimer_.stop(),this.keyStatusTimer_=null,await this.closeOpenSessions_(),this.video_){de.isMediaKeysPolyfilled("webkit")||v.assert(!this.video_.src&&!this.video_.getElementsByTagName("source").length,"video src must be removed first!");try{await this.video_.setMediaKeys(null)}catch(e){p.alwaysWarn("DrmEngine.destroyNow_ exception",e)}this.video_=null}this.currentDrmInfo_=null,this.mediaKeys_=null,this.storedPersistentSessions_=new Map,this.config_=null,this.onError_=()=>{},this.playerInterface_=null,this.srcEquals_=!1,this.mediaKeysAttached_=null}configure(e,t){this.config_=e,t&&(this.isPreload_=t),this.expirationTimer_&&this.initialized_&&this.currentDrmInfo_&&this.expirationTimer_.tickEvery(this.config_.updateExpirationTime)}setSrcEquals(e){this.srcEquals_=e}initForStorage(e,t){return this.initializedForStorage_=!0,this.storedPersistentSessions_=new Map,this.usePersistentLicenses_=t,this.init_(e,!1)}initForPlayback(e,t,i=!0){this.storedPersistentSessions_=new Map;for(let r of t)this.storedPersistentSessions_.set(r,{initData:null,initDataType:null});for(let r of this.config_.persistentSessionsMetadata)this.storedPersistentSessions_.set(r.sessionId,{initData:r.initData,initDataType:r.initDataType});return this.usePersistentLicenses_=this.storedPersistentSessions_.size>0,this.init_(e,i)}async initForRemoval(e,t,i,r,s){let n=[];s.length&&n.push(s[0].contentType),r.length&&n.push(r[0].contentType);let a=c=>{let d=R.createDrmInfo(e,c,null);return d.licenseServerUri=t,d.serverCertificate=i,d.persistentStateRequired=!0,d.sessionType="persistent-license",d},o=se.createEmptyVariant(n);if(o.video){let c=a(s[0].encryptionScheme||"");o.video.drmInfos.push(c)}if(o.audio){let c=a(r[0].encryptionScheme||"");o.audio.drmInfos.push(c)}return await se.getDecodingInfosForVariants([o],!0,this.srcEquals_,[]),this.destroyer_.ensureNotDestroyed(),this.queryMediaKeys_([o])}async init_(e,t){v.assert(this.config_,"DrmEngine configure() must be called before init()!"),yi.configureClearKey(this.config_.clearKeys,e);let i=e.some(u=>!!(u.video&&u.video.drmInfos.length||u.audio&&u.audio.drmInfos.length)),r=Zt.asMap(this.config_.servers),s=Zt.asMap(this.config_.advanced||{});!i&&t&&yi.replaceDrmInfo_(e,r);let n=new WeakSet;for(let u of e){let m=this.getVariantDrmInfos_(u);for(let f of m)n.has(f)||(n.add(f),yi.fillInDrmInfoDefaults_(f,r,s,this.config_.keySystemsMapping))}let a=(u,m)=>{let f=[];for(let g of u){let _=g[m]||s.has(g.keySystem)&&s.get(g.keySystem)[m]||"";if(_==""&&de.isWidevineKeySystem(g.keySystem)&&(m=="audioRobustness"?_=[this.config_.defaultAudioRobustnessForWidevine]:m=="videoRobustness"&&(_=[this.config_.defaultVideoRobustnessForWidevine])),typeof _=="string")f.push(g);else if(Array.isArray(_)){_.length===0&&(_=[""]);for(let T of _)f.push(Object.assign({},g,{[m]:T}))}}return f},o=new WeakSet;for(let u of e)u.video&&!o.has(u.video)&&(u.video.drmInfos=a(u.video.drmInfos,"videoRobustness"),u.video.drmInfos=a(u.video.drmInfos,"audioRobustness"),o.add(u.video)),u.audio&&!o.has(u.audio)&&(u.audio.drmInfos=a(u.audio.drmInfos,"videoRobustness"),u.audio.drmInfos=a(u.audio.drmInfos,"audioRobustness"),o.add(u.audio));if(await se.getDecodingInfosForVariants(e,this.usePersistentLicenses_,this.srcEquals_,this.config_.preferredKeySystems),this.destroyer_.ensureNotDestroyed(),!(i||r.size>0))return this.initialized_=!0,Promise.resolve();let d=this.queryMediaKeys_(e);return i?d:d.catch(()=>{})}async attachMediaKeys_(){if(!this.video_.mediaKeys){if(this.mediaKeysAttached_){await this.mediaKeysAttached_,this.destroyer_.ensureNotDestroyed();return}try{this.mediaKeysAttached_=this.video_.setMediaKeys(this.mediaKeys_),await this.mediaKeysAttached_}catch(e){v.assert(e instanceof Error,"Wrong error type!"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_ATTACH_TO_VIDEO,e.message))}this.destroyer_.ensureNotDestroyed()}}async onEncryptedEvent_(e){await this.attachMediaKeys_(),this.newInitData(e.initDataType,D.toUint8(e.initData))}async attach(e){if(this.video_===e)return;if(!this.mediaKeys_){this.eventManager_.listenOnce(e,"encrypted",n=>{this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ENCRYPTED_CONTENT_WITHOUT_DRM_INFO))});return}let t=j.getDevice();this.video_=e,this.config_.delayLicenseRequestUntilPlayed&&this.eventManager_.listenOnce(this.video_,"play",()=>this.onPlay_());let i=t.getRemote(this.video_);i?this.eventManager_.listenMulti(i,["connect","connecting","disconnect"],()=>{this.closeOpenSessions_()}):"webkitCurrentPlaybackTargetIsWireless"in this.video_&&this.eventManager_.listen(this.video_,"webkitcurrentplaybacktargetiswirelesschanged",()=>this.closeOpenSessions_()),this.manifestInitData_=this.currentDrmInfo_&&this.currentDrmInfo_.initData.find(n=>n.initData.length>0)||null;let r=this.currentDrmInfo_.keySystem,s=t.needWaitForEncryptedEvent(r);!s&&(this.manifestInitData_||this.currentDrmInfo_.keySystem!=="com.apple.fps"||this.storedPersistentSessions_.size)&&await this.attachMediaKeys_(),this.createOrLoad().catch(()=>{}),(s||!this.manifestInitData_&&!this.storedPersistentSessions_.size&&!this.config_.parseInbandPsshEnabled)&&this.eventManager_.listen(this.video_,"encrypted",n=>this.onEncryptedEvent_(n))}hasManifestInitData(){return!!this.manifestInitData_}async setServerCertificate(){if(v.assert(this.initialized_,"Must call init() before setServerCertificate"),!(!this.mediaKeys_||!this.currentDrmInfo_)){if(this.currentDrmInfo_.serverCertificateUri&&(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length)){let e=K.makeRequest([this.currentDrmInfo_.serverCertificateUri],this.config_.retryParameters);try{let i=await this.playerInterface_.netEngine.request(K.RequestType.SERVER_CERTIFICATE,e,{isPreload:this.isPreload_()}).promise;this.currentDrmInfo_.serverCertificate=D.toUint8(i.data)}catch(t){throw v.assert(t instanceof h,"Wrong NetworkingEngine error type!"),new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.SERVER_CERTIFICATE_REQUEST_FAILED,t)}if(this.destroyer_.destroyed())return}if(!(!this.currentDrmInfo_.serverCertificate||!this.currentDrmInfo_.serverCertificate.length))try{await this.mediaKeys_.setServerCertificate(this.currentDrmInfo_.serverCertificate)||p.warning("Server certificates are not supported by the key system. The server certificate has been ignored.")}catch(e){throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INVALID_SERVER_CERTIFICATE,e.message)}}}async removeSession(e){v.assert(this.mediaKeys_,"Must call init() before removeSession");let t=await this.loadOfflineSession_(e,{initData:null,initDataType:null});if(!t){p.v2("Ignoring attempt to remove missing session",e);return}let i=[],r=this.activeSessions_.get(t);r&&(r.updatePromise=Promise.withResolvers(),i.push(r.updatePromise.promise)),p.v2("Attempting to remove session",e),i.push(t.remove()),await Promise.all(i),this.activeSessions_.delete(t)}async createOrLoad(){if(this.storedPersistentSessions_.size){if(this.storedPersistentSessions_.forEach((i,r)=>{this.loadOfflineSession_(r,i)}),await this.allSessionsLoaded_.promise,(this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([])).size>0&&this.areAllKeysUsable_())return this.allSessionsLoaded_.promise;this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})}let e=(this.currentDrmInfo_?this.currentDrmInfo_.initData:[])||[];for(let t of e)this.newInitData(t.initDataType,t.initData);return this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve(),this.allSessionsLoaded_.promise}updateCurrentDrmInfo(e){this.currentDrmInfo_&&(this.currentDrmInfo_.mediaTypes!==e.mediaTypes&&(this.currentDrmInfo_.mediaTypes=e.mediaTypes),de.isClearKeyWihRawKey(e)&&(this.currentDrmInfo_=this.createDrmInfoByInfos_(this.currentDrmInfo_.keySystem,[this.currentDrmInfo_,e])))}newInitData(e,t){if(t.length){try{t=this.config_.initDataTransform(t,e,this.currentDrmInfo_)}catch(i){let r=i;i instanceof h||(r=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.INIT_DATA_TRANSFORM_ERROR,i)),this.onError_(r);return}if(this.config_.ignoreDuplicateInitData){let i=this.activeSessions_.values();for(let s of i)if(D.equal(t,s.initData)){p.debug("Ignoring duplicate init data.");return}let r=!1;if(this.storedPersistentSessions_.forEach((s,n)=>{!r&&D.equal(t,s.initData)&&(r=!0)}),r){p.debug("Ignoring duplicate init data.");return}}this.hasInitData_=!0,this.activeSessions_.size>0&&this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.hasInitData_=!1,this.allSessionsLoaded_=Promise.withResolvers(),this.allSessionsLoaded_.promise.catch(()=>{})),this.createSession(e,t,this.currentDrmInfo_.sessionType)}}initialized(){return this.initialized_}getSessionIds(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>i.sessionId);return Array.from(t)}getActiveSessionsMetadata(){let e=this.activeSessions_.keys(),t=Qi.map(e,i=>{let r=this.activeSessions_.get(i);return{sessionId:i.sessionId,sessionType:r.type,initData:r.initData,initDataType:r.initDataType}});return Array.from(t)}renewLicense(e){this.activeSessions_.forEach((t,i)=>{(e==null||i.sessionId==e)&&this.triggerRenewal_(i)})}async retryLicensing(e,t=.1){this.destroyer_.ensureNotDestroyed(),p.info("Retrying licensing for session",e.sessionId);let i=null,r=null;if(this.activeSessions_.forEach((a,o)=>{o.sessionId===e.sessionId&&(i=o,r=a)}),!i||!r)return p.warning("Session not found for retry:",e.sessionId),!1;if(!this.currentDrmInfo_)return p.warning("No DRM info available for retry"),!1;if(!r.initData||!r.initDataType)return p.error("Missing initData or initDataType for session retry"),!1;let s=r.initData,n=r.initDataType;t>0&&await it.delay(t);try{this.activeSessions_.delete(i),await this.closeSession_(i);let a=this.createSession(n,s,this.currentDrmInfo_.sessionType,!1);if(!a)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for license retry");return p.info("Successfully created new session for retry:",a.sessionId),!0}catch(a){return p.error("Failed to retry licensing:",a),!1}}getExpiration(){let e=1/0,t=this.activeSessions_.keys();for(let i of t)isNaN(i.expiration)||(e=Math.min(e,i.expiration));return e}getLicenseTime(){return this.licenseTimeSeconds_?this.licenseTimeSeconds_:NaN}getDrmInfo(){return this.currentDrmInfo_}getMediaKeys(){return this.mediaKeys_}getKeyStatuses(){return Zt.asObject(this.announcedKeyStatusByKeyId_)}async queryMediaKeys_(e){let t=new Map,i=this.getKeySystemAccessFromVariants_(e,t);if(!i)throw navigator.requestMediaKeySystemAccess?new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.REQUESTED_KEY_SYSTEM_CONFIG_UNAVAILABLE):new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MISSING_EME_SUPPORT);this.destroyer_.ensureNotDestroyed();try{let r=i.getConfiguration();p.v2("Got MediaKeySystemAccess with configuration",r);let s=this.config_.keySystemsMapping[i.keySystem]||i.keySystem;if(this.currentDrmInfo_=this.createDrmInfoByInfos_(s,t.get(s)),!this.currentDrmInfo_.licenseServerUri)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_LICENSE_SERVER_GIVEN,this.currentDrmInfo_.keySystem);let n=await i.createMediaKeys();if(this.destroyer_.ensureNotDestroyed(),p.info("Created MediaKeys object for key system",this.currentDrmInfo_.keySystem),this.mediaKeys_=n,this.config_.minHdcpVersion!=""&&"getStatusForPolicy"in this.mediaKeys_)try{if(await this.mediaKeys_.getStatusForPolicy({minHdcpVersion:this.config_.minHdcpVersion})!="usable")throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.MIN_HDCP_VERSION_NOT_MATCH);this.destroyer_.ensureNotDestroyed()}catch(a){throw a instanceof h?a:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.ERROR_CHECKING_HDCP_VERSION,a.message)}this.initialized_=!0,this.expirationTimer_.tickEvery(this.config_.updateExpirationTime),await this.setServerCertificate(),this.destroyer_.ensureNotDestroyed()}catch(r){throw this.destroyer_.ensureNotDestroyed(r),this.currentDrmInfo_=null,r instanceof h?r:new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_CDM,r.message)}}getKeySystemAccessFromVariants_(e,t){for(let r of e){let s=this.getVariantDrmInfos_(r);for(let n of s)t.getOrInsertComputed(n.keySystem,()=>[]).push(n)}if(t.size==1&&t.has(""))throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.NO_RECOGNIZED_KEY_SYSTEMS);let i=this.config_.preferredKeySystems;if(!i.length){let r=Zt.asMap(this.config_.servers);r.size==1&&(i=Array.from(r.keys()))}for(let r of i)for(let s of e){let n=s.decodingInfos.find(a=>a.supported&&a.keySystemAccess!=null&&a.keySystemAccess.keySystem==r);if(n)return n.keySystemAccess}for(let r of[!0,!1])for(let s of e)for(let n of s.decodingInfos){if(!n.supported||!n.keySystemAccess)continue;let a=n.keySystemAccess.keySystem;if(i.includes(a))continue;let o=t.get(a);!o&&this.config_.keySystemsMapping[a]&&(o=t.get(this.config_.keySystemsMapping[a]));for(let c of o)if(!!c.licenseServerUri==r)return n.keySystemAccess}return null}checkSessionsLoaded_(){this.areAllSessionsLoaded_()&&this.allSessionsLoaded_.resolve()}setLoadSessionTimeoutTimer_(e){new ae(()=>{e.loaded=!0,this.checkSessionsLoaded_()}).tickAfter(yi.SESSION_LOAD_TIMEOUT_)}async loadOfflineSession_(e,t){let i,r="persistent-license";try{p.v1("Attempting to load an offline session",e),i=this.mediaKeys_.createSession(r)}catch(n){let a=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message);return this.onError_(a),Promise.reject(a)}this.eventManager_.listen(i,"message",(n=>this.onSessionMessage_(n))),this.eventManager_.listen(i,"keystatuseschange",n=>this.onKeyStatusesChange_(n));let s={initData:t.initData,initDataType:t.initDataType,loaded:!1,oldExpiration:1/0,updatePromise:null,type:r,lastRenewalTime:0,isRenewal:!1};this.activeSessions_.set(i,s);try{let n=await i.load(e);if(this.destroyer_.ensureNotDestroyed(),p.v2("Loaded offline session",e,n),!n){this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.OFFLINE_SESSION_REMOVED)),s.loaded=!0}return this.setLoadSessionTimeoutTimer_(s),this.checkSessionsLoaded_(),i}catch(n){this.destroyer_.ensureNotDestroyed(n),this.activeSessions_.delete(i);let a=this.config_.persistentSessionOnlinePlayback?h.Severity.RECOVERABLE:h.Severity.CRITICAL;this.onError_(new h(a,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,n.message)),s.loaded=!0,this.checkSessionsLoaded_()}return Promise.resolve()}createSession(e,t,i,r=!1){v.assert(this.mediaKeys_,"mediaKeys_ should be valid when creating temporary session.");let s;try{p.info("Creating new",i,"session"),s=this.mediaKeys_.createSession(i)}catch(a){return this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,a.message)),null}this.eventManager_.listen(s,"message",(a=>this.onSessionMessage_(a))),this.eventManager_.listen(s,"keystatuseschange",a=>this.onKeyStatusesChange_(a));let n={initData:t,initDataType:e,loaded:!1,oldExpiration:1/0,updatePromise:null,type:i,lastRenewalTime:0,isRenewal:r};if(this.activeSessions_.set(s,n),s.closed.then(a=>{if(this.destroyer_.destroyed())return;let o=this.activeSessions_.get(s);o&&this.onSessionClosed_(s,o,a||"unknown")}).catch(a=>{p.warning("session.closed rejected:",a)}),this.config_.logLicenseExchange){let a=ne.toBase64(t);p.info("EME init data: type=",e,"data=",a)}return s.generateRequest(e,t).catch(a=>{if(this.destroyer_.destroyed())return;v.assert(a instanceof Error,"Wrong error type!"),this.activeSessions_.delete(s);let o=a.errorCode,c;o&&o.systemCode&&(c=o.systemCode,c<0&&(c+=Math.pow(2,32)),c="0x"+c.toString(16)),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_GENERATE_LICENSE_REQUEST,a.message,a,c))}),s}onSessionMessage_(e){this.delayLicenseRequest_()?this.mediaKeyMessageEvents_.push(e):this.sendLicenseRequest_(e)}delayLicenseRequest_(){return this.video_?this.config_.delayLicenseRequestUntilPlayed&&this.video_.paused&&!this.initialRequestsSent_:!this.initializedForStorage_&&this.config_.delayLicenseRequestUntilPlayed}async waitForActiveRequests(){this.hasInitData_&&!this.delayLicenseRequest_()&&(await this.allSessionsLoaded_.promise,await Promise.all(this.activeRequests_.map(e=>e.promise)))}async sendLicenseRequest_(e){let t=e.target;if(p.v1("Sending license request for session",t.sessionId,"of type",e.messageType),this.config_.logLicenseExchange){let m=ne.toBase64(e.message);p.info("EME license request",m)}let i=this.activeSessions_.get(t),r=this.currentDrmInfo_.licenseServerUri,s=this.config_.advanced[this.currentDrmInfo_.keySystem];e.messageType=="individualization-request"&&s&&s.individualizationServer&&(r=s.individualizationServer);let n=K.RequestType.LICENSE,a=K.makeRequest([r],this.config_.retryParameters);if(a.body=e.message,a.method="POST",a.licenseRequestType=e.messageType,a.sessionId=t.sessionId,a.drmInfo=this.currentDrmInfo_,i&&(a.initData=i.initData,a.initDataType=i.initDataType,i.isRenewal&&(a.licenseRequestType="license-renewal")),s&&s.headers)for(let m in s.headers)a.headers[m]=s.headers[m];let o=de.isClearKeySystem(this.currentDrmInfo_.keySystem);o&&this.fixClearKeyRequest_(a,this.currentDrmInfo_),de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&this.unpackPlayReadyRequest_(a);let c=Date.now(),d;try{let m=this.playerInterface_.netEngine.request(n,a,{isPreload:this.isPreload_()});this.activeRequests_.push(m),d=await m.promise,ye.remove(this.activeRequests_,m)}catch(m){if(this.destroyer_.destroyed())return;v.assert(m instanceof h,"Wrong NetworkingEngine error type!");let f={sessionId:t.sessionId,sessionType:i.type,initData:i.initData,initDataType:i.initDataType},g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_REQUEST_FAILED,m,f);if(this.config_.failureCallback)try{this.config_.failureCallback(g)}catch(_){p.error("Error in failureCallback:",_)}if(g.handled){p.info("License request failure handled by failureCallback"),i&&i.updatePromise&&i.updatePromise.reject(g);return}this.activeSessions_.size==1?(this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g)):(i&&i.updatePromise&&i.updatePromise.reject(g),this.activeSessions_.delete(t),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(.1)));return}if(this.destroyer_.destroyed())return;if(this.licenseTimeSeconds_+=(Date.now()-c)/1e3,this.config_.logLicenseExchange){let m=ne.toBase64(d.data);p.info("EME license response",m)}o&&this.processClearKeyResponse_(d);try{p.v1("Updating session",t.sessionId),await t.update(d.data),i&&(i.lastRenewalTime=Date.now()/1e3)}catch(m){let f=m&&m.message||String(m),g=new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.LICENSE_RESPONSE_REJECTED,f);this.onError_(g),i&&i.updatePromise&&i.updatePromise.reject(g);return}if(this.destroyer_.destroyed())return;let u=new U("drmsessionupdate");this.playerInterface_.onEvent(u),i&&(i.updatePromise&&i.updatePromise.resolve(),this.setLoadSessionTimeoutTimer_(i))}processClearKeyResponse_(e){let t=q.fromUTF8(e.data);try{let i=JSON.parse(t),r=new Map(i.keys.map(({kid:s,k:n})=>[de.normalizeClearKeyValue(s),de.normalizeClearKeyValue(n)]));if(!this.currentDrmInfo_.clearKeys)this.currentDrmInfo_.clearKeys=r;else for(let[s,n]of r)this.currentDrmInfo_.clearKeys.set(s,n)}catch(i){}}unpackPlayReadyRequest_(e){let t=q.fromUTF16(e.body,!0,!0);if(!t.includes("PlayReadyKeyMessage")){p.debug("PlayReady request is already unwrapped."),e.headers["Content-Type"]="text/xml; charset=utf-8";return}p.debug("Unwrapping PlayReady request.");let i=I.parseXmlString(t,"PlayReadyKeyMessage");v.assert(i,"Failed to parse PlayReady XML!");let r=I.getElementsByTagName(i,"HttpHeader");for(let n of r){let a=I.getElementsByTagName(n,"name")[0],o=I.getElementsByTagName(n,"value")[0];v.assert(a&&o,"Malformed PlayReady headers!"),e.headers[I.getTextContents(a)]=I.getTextContents(o)}let s=I.getElementsByTagName(i,"Challenge")[0];v.assert(s,"Malformed PlayReady challenge!"),v.assert(s.attributes.encoding=="base64encoded","Unexpected PlayReady challenge encoding!"),e.body=ne.fromBase64(I.getTextContents(s))}fixClearKeyRequest_(e,t){try{let i=q.fromBytesAutoDetect(e.body);if(i){let r=JSON.parse(i);r.type||(r.type=t.sessionType,e.body=q.toUTF8(JSON.stringify(r)))}}catch(i){p.info("Error unpacking ClearKey license",i)}}onKeyStatusesChange_(e){let t=e.target;p.v2("Key status changed for session",t.sessionId);let i=this.activeSessions_.get(t),r=t.keyStatuses,s=!1;r.forEach((a,o)=>{if(typeof o=="string"){let u=o;o=a,a=u}let c=j.getDevice();if(de.isPlayReadyKeySystem(this.currentDrmInfo_.keySystem)&&o.byteLength==16&&c.returnLittleEndianUsingPlayReady()){let u=D.toDataView(o),m=u.getUint32(0,!0),f=u.getUint16(4,!0),g=u.getUint16(6,!0);u.setUint32(0,m,!1),u.setUint16(4,f,!1),u.setUint16(6,g,!1)}i&&a!="status-pending"&&(i.loaded=!0),i||v.assert(a!="usable","Usable keys found in closed session"),a=="expired"&&(s=!0);let d=ne.toHex(o).slice(0,32);this.keyStatusByKeyId_.set(d,a)});let n=t.expiration-Date.now();(n<0||s&&n<1e3)&&i&&!i.updatePromise&&(p.debug("Session has expired",t.sessionId),this.activeSessions_.delete(t),this.closeSession_(t)),this.areAllSessionsLoaded_()&&(this.allSessionsLoaded_.resolve(),this.keyStatusTimer_.tickAfter(yi.KEY_STATUS_BATCH_TIME))}processKeyStatusChanges_(){let e=this.keyStatusByKeyId_,t=this.announcedKeyStatusByKeyId_;t.clear(),e.forEach((s,n)=>t.set(n,s));let i=Array.from(t.values());i.length&&i.every(s=>s=="expired")&&this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.EXPIRED)),this.playerInterface_.onKeyStatus(Zt.asObject(t))}static async probeSupport(){let e=["org.w3.clearkey","com.widevine.alpha","com.microsoft.playready","com.microsoft.playready.hardware","com.microsoft.playready.recommendation","com.microsoft.playready.recommendation.3000","com.microsoft.playready.recommendation.3000.clearlead","com.chromecast.playready","com.apple.fps.1_0","com.apple.fps","com.huawei.wiseplay"];if(!de.isBrowserSupported()){let _={};for(let T of e)_[T]=null;return _}let t=["1.0","1.1","1.2","1.3","1.4","2.0","2.1","2.2","2.3"],i=["SW_SECURE_CRYPTO","SW_SECURE_DECODE","HW_SECURE_CRYPTO","HW_SECURE_DECODE","HW_SECURE_ALL"],s={"com.widevine.alpha":i,"com.widevine.alpha.experiment":i,"com.microsoft.playready.recommendation":["150","2000","3000"]},o={videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'},{contentType:'video/webm; codecs="vp8"'}],audioCapabilities:[{contentType:'audio/mp4; codecs="mp4a.40.2"'},{contentType:'audio/webm; codecs="opus"'}],initDataTypes:["cenc","sinf","skd","keyids"]},c=[null,"cenc","cbcs"],d=new Map,u=j.getDevice(),m=async(_,T,S)=>{let b;try{if(u.createMediaKeysWhenCheckingSupport())b=await T.createMediaKeys();else throw new Error("Suppressing Firefox Windows DRM in testing!")}catch(V){return}let E=T.getConfiguration().sessionTypes,C=E?E.includes("persistent-license"):!1;u.misreportsSupportForPersistentLicenses()&&(C=!1);let A=T.getConfiguration().videoCapabilities,w=T.getConfiguration().audioCapabilities,M={persistentState:C,encryptionSchemes:[],videoRobustnessLevels:[],audioRobustnessLevels:[],minHdcpVersions:[]};d.get(_)?M=d.get(_):d.set(_,M);let x=A[0].encryptionScheme;x&&!M.encryptionSchemes.includes(x)&&M.encryptionSchemes.push(x);let k=A[0].robustness;k&&!M.videoRobustnessLevels.includes(k)&&M.videoRobustnessLevels.push(k);let L=w[0].robustness;if(L&&!M.audioRobustnessLevels.includes(L)&&M.audioRobustnessLevels.push(L),S&&"getStatusForPolicy"in b)for(let V of t){if(M.minHdcpVersions.includes(V))continue;if(await b.getStatusForPolicy({minHdcpVersion:V})=="usable")M.minHdcpVersions.includes(V)||M.minHdcpVersions.push(V);else break}},f=async(_,T,S,b,E=!1)=>{try{let C=Ne.cloneObject(o);for(let L of C.videoCapabilities)L.encryptionScheme=T,L.robustness=S;for(let L of C.audioCapabilities)L.encryptionScheme=T,L.robustness=b;let A=Ne.cloneObject(C);A.persistentState="required",A.sessionTypes=["persistent-license"];let w=[A,C],M=5,x;j.getDevice().getDeviceType()==ie.DeviceType.MOBILE?x=await it.promiseWithTimeout(M,navigator.requestMediaKeySystemAccess(_,w)):x=await navigator.requestMediaKeySystemAccess(_,w),await m(_,x,E)}catch(C){}},g=[];for(let _ of e){d.set(_,null);let T=!0;for(let S of c)g.push(f(_,S,"","",T)),T=!1;for(let S of s[_]||[])g.push(f(_,null,S,"")),g.push(f(_,null,"",S))}return await Promise.all(g),Zt.asObject(d)}onPlay_(){for(let e of this.mediaKeyMessageEvents_)this.sendLicenseRequest_(e);this.initialRequestsSent_=!0,this.mediaKeyMessageEvents_=[]}async closeSession_(e){let t=null;try{t=(await it.promiseWithTimeout(yi.CLOSE_TIMEOUT_,Promise.all([e.close().catch(()=>{}),e.closed])))[1]}catch(i){p.warning("Timeout waiting for session close")}t&&this.handleSessionCloseReason_(e,t)}processSessionCloseReason_(e,t){e==="internal-error"?(p.error("CDM internal error. Cannot create new sessions."),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"CDM reported internal error"))):e==="closed-by-application"?p.v1("Session closed by application"):e==="release-acknowledged"?p.v1("Session closed: license release acknowledged"):e==="resource-evicted"?p.warning("Session closed: resources evicted"):e==="hardware-context-reset"?t?(p.warning("Hardware context reset detected. Recreating session..."),this.recreateSessionAfterHardwareReset_(t)):p.warning("Hardware context reset detected during app close"):p.warning("Session closed with unknown reason:",e)}handleSessionCloseReason_(e,t){p.info("Session closed with reason",t,"sessionId",e.sessionId),t!=="unknown"&&this.processSessionCloseReason_(t)}onSessionClosed_(e,t,i){i!=="unknown"&&(p.info("CDM closed session with reason",i,"sessionId",e.sessionId),this.activeSessions_.delete(e),this.processSessionCloseReason_(i,t))}recreateSessionAfterHardwareReset_(e){if(p.info("Recreating session after hardware context reset","initDataType",e.initDataType),!e.initDataType||!e.initData){p.error("Cannot recreate session: missing initData or initDataType"),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Cannot recreate session after hardware reset: missing metadata"));return}try{this.createSession(e.initDataType,e.initData,e.type),p.info("Session successfully recreated after hardware reset")}catch(t){p.error("Failed to recreate session after hardware reset:",t),this.onError_(new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to recreate session after hardware context reset: "+t.message))}}async closeOpenSessions_(){let e=Array.from(this.activeSessions_.entries());this.activeSessions_.clear(),await Promise.all(e.map(async([t,i])=>{try{!this.initializedForStorage_&&!this.storedPersistentSessions_.has(t.sessionId)&&i.type==="persistent-license"&&!this.config_.persistentSessionOnlinePlayback?(p.v1("Removing session",t.sessionId),await t.remove()):(p.v1("Closing session",t.sessionId,i),await this.closeSession_(t))}catch(r){p.error("Failed to close or remove the session",r)}}))}getVariantDrmInfos_(e){let t=e.video?e.video.drmInfos:[],i=e.audio?e.audio.drmInfos:[];return t.concat(i)}pollExpiration_(){let e=Date.now()/1e3;this.activeSessions_.forEach((t,i)=>{let r=t.oldExpiration,s=i.expiration;if(isNaN(s)&&(s=1/0),s!=r&&(this.playerInterface_.onExpirationUpdated(i.sessionId,s),t.oldExpiration=s),this.config_.renewalIntervalSec>0){let n=e-t.lastRenewalTime;t.lastRenewalTime>0&&n>=this.config_.renewalIntervalSec&&this.triggerRenewal_(i)}})}async triggerRenewal_(e){p.info("Triggering license renewal for session",e.sessionId);let t=this.activeSessions_.get(e);if(t&&(t.lastRenewalTime=Date.now()/1e3),!this.currentDrmInfo_)return;let i=this.currentDrmInfo_.keySystem,r=e,s={sessionId:e.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:t?t.initData:null,initDataType:t?t.initDataType:null};try{if(de.isFairPlayKeySystem(i)){let c=q.toUTF8("renew");await e.update(c)}else if(de.isPlayReadyKeySystem(i)&&t&&t.initData&&t.initDataType)r=await this.requestPlayReadyLicenseForRenewal_(e,t);else{p.alwaysWarn("Manual license renewal is not supported for "+i);return}}catch(c){p.error("Failed to renew license:",c);return}let n=this.activeSessions_.get(r),a={sessionId:r.sessionId,sessionType:this.currentDrmInfo_.sessionType,initData:n?n.initData:null,initDataType:n?n.initDataType:null},o=new U("licenserenewal",new Map().set("oldSessionMetadata",s).set("newSessionMetadata",a));this.playerInterface_.onEvent(o)}async requestPlayReadyLicenseForRenewal_(e,t){v.assert(t.initDataType,"initDataType must be defined"),v.assert(t.initData,"initData must be defined"),this.activeSessions_.delete(e),await this.closeSession_(e);let i=this.createSession(t.initDataType,t.initData,this.currentDrmInfo_.sessionType,!0);if(!i)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.FAILED_TO_CREATE_SESSION,"Failed to create new session for renewal");return i}areAllSessionsLoaded_(){let e=this.activeSessions_.values();return Qi.every(e,t=>t.loaded)}areAllKeysUsable_(){let e=this.currentDrmInfo_&&this.currentDrmInfo_.keyIds||new Set([]);for(let t of e)if(this.keyStatusByKeyId_.get(t)!=="usable")return!1;return!0}static replaceDrmInfo_(e,t){let i=[];t.forEach((r,s)=>{i.push({keySystem:s,licenseServerUri:r,distinctiveIdentifierRequired:!1,persistentStateRequired:!1,audioRobustness:"",videoRobustness:"",serverCertificate:null,serverCertificateUri:"",initData:[],keyIds:new Set})});for(let r of e)r.video&&(r.video.drmInfos=i),r.audio&&(r.audio.drmInfos=i)}createDrmInfoByInfos_(e,t){let i=[],r=[],s=[],n=[],a=[],o=new Set,c=new Set;yi.processDrmInfos_(t,i,r,n,s,a,o,c),i.length>1&&p.warning("Multiple unique encryption schemes found! Only the first will be used."),n.length>1&&p.warning("Multiple unique server certificates found! Only the first will be used."),r.length>1&&p.warning("Multiple unique license server URIs found! Only the first will be used."),s.length>1&&p.warning("Multiple unique server certificate URIs found! Only the first will be used.");let d=this.usePersistentLicenses_?"persistent-license":"temporary",u={keySystem:e,encryptionScheme:i[0],licenseServerUri:r[0],distinctiveIdentifierRequired:t[0].distinctiveIdentifierRequired,persistentStateRequired:t[0].persistentStateRequired,sessionType:t[0].sessionType||d,audioRobustness:t[0].audioRobustness||"",videoRobustness:t[0].videoRobustness||"",serverCertificate:n[0],serverCertificateUri:s[0],initData:a,keyIds:o,mediaTypes:t[0].mediaTypes};c.size>0&&(u.keySystemUris=c);for(let m of t)m.distinctiveIdentifierRequired&&(u.distinctiveIdentifierRequired=m.distinctiveIdentifierRequired),m.persistentStateRequired&&(u.persistentStateRequired=m.persistentStateRequired);return u}static processDrmInfos_(e,t,i,r,s,n,a,o){let c=(m,f)=>m.keyId&&m.keyId==f.keyId?!0:m.initDataType==f.initDataType&&D.equal(m.initData,f.initData),d="data:application/json;base64,",u=[];for(let m of e){if(t.includes(m.encryptionScheme)||t.push(m.encryptionScheme),de.isClearKeySystem(m.keySystem)&&m.licenseServerUri.startsWith(d)?u.includes(m.licenseServerUri)||u.push(m.licenseServerUri):i.includes(m.licenseServerUri)||i.push(m.licenseServerUri),s.includes(m.serverCertificateUri)||s.push(m.serverCertificateUri),m.serverCertificate&&(r.some(g=>D.equal(g,m.serverCertificate))||r.push(m.serverCertificate)),m.initData)for(let f of m.initData)n.some(_=>c(_,f))||n.push(f);if(m.keyIds)for(let f of m.keyIds)a.add(f);if(m.keySystemUris&&o)for(let f of m.keySystemUris)o.add(f)}if(u.length==1)i.push(u[0]);else if(u.length>0){let m=[];for(let _ of u){let T=window.atob(_.split(d).pop()),S=JSON.parse(T);m.push(...S.keys)}let g=JSON.stringify({keys:m});i.push(d+window.btoa(g))}}static fillInDrmInfoDefaults_(e,t,i,r){let s=e.keySystem;if(!s||de.isClearKeySystem(s)&&e.licenseServerUri)return;if(t.size&&t.get(s)){let a=t.get(s);e.licenseServerUri=a}e.keyIds||(e.keyIds=new Set);let n=i.get(s);n&&(e.distinctiveIdentifierRequired||(e.distinctiveIdentifierRequired=n.distinctiveIdentifierRequired),e.persistentStateRequired||(e.persistentStateRequired=n.persistentStateRequired),e.serverCertificate||(e.serverCertificate=n.serverCertificate),n.sessionType&&(e.sessionType=n.sessionType),e.serverCertificateUri||(e.serverCertificateUri=n.serverCertificateUri)),r[s]&&(e.keySystem=r[s]),window.cast&&window.cast.__platform__&&s=="com.microsoft.playready"&&(e.keySystem="com.chromecast.playready")}parseInbandPssh(e,t){if(!this.config_.parseInbandPsshEnabled||this.manifestInitData_)return Promise.resolve();let i=R.ContentType;if(![i.AUDIO,i.VIDEO].includes(e))return Promise.resolve();let r=new ei(D.toUint8(t)),s=0;for(let o of r.data)s+=o.length;if(s==0)return Promise.resolve();let n=new Uint8Array(s),a=0;for(let o of r.data)n.set(o,a),a+=o.length;return this.newInitData("cenc",n),this.allSessionsLoaded_.promise}static configureClearKey(e,t){let i=Zt.asMap(e);if(i.size==0)return;let r=R.createDrmInfoFromClearKeys(i);for(let s of t)s.video&&(s.video.drmInfos=[r]),s.audio&&(s.audio.drmInfos=[r])}};l(yi,"CLOSE_TIMEOUT_",1),l(yi,"SESSION_LOAD_TIMEOUT_",5),l(yi,"KEY_STATUS_BATCH_TIME",.5);var Bi=yi;/*! @license
|
|
210
|
+
* Shaka Player
|
|
211
|
+
* Copyright 2016 Google LLC
|
|
212
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
213
|
+
*/var Kt={CAN_PLAY:"canplay",CAN_PLAY_THROUGH:"canplaythrough",DURATION_CHANGE:"durationchange",ENCRYPTED:"encrypted",ENDED:"ended",LOADED_DATA:"loadeddata",LOADED_METADATA:"loadedmetadata",PAUSE:"pause",PLAY:"play",PLAYING:"playing",PROGRESS:"progress",RATE_CHANGE:"ratechange",SEEKED:"seeked",SEEKING:"seeking",STALLED:"stalled",TIME_UPDATE:"timeupdate",VOLUME_CHANGE:"volumechange",WAITING:"waiting"};/*! @license
|
|
214
|
+
* Shaka Player
|
|
215
|
+
* Copyright 2016 Google LLC
|
|
216
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
217
|
+
*/var Fi=class Fi{constructor(e,t){l(this,"previousState_");l(this,"thresholds_");l(this,"lastRebufferTime_");l(this,"lastReportedTime_");let i=Fi.State;this.previousState_=i.SATISFIED,this.thresholds_=new Map().set(i.SATISFIED,t).set(i.STARVING,e),this.lastRebufferTime_=0,this.lastReportedTime_=-1}setThresholds(e,t){let i=Fi.State;this.thresholds_.set(i.SATISFIED,t).set(i.STARVING,e)}update(e,t){let i=Fi.State,r=this.thresholds_.get(this.previousState_),s=t||e>=r&&e>0?i.SATISFIED:i.STARVING;return this.setState(s)}setState(e){let t=Fi.State,i=this.previousState_!==e;return this.previousState_=e,i&&e===t.SATISFIED&&(this.lastRebufferTime_=Date.now()),i}getState(){return this.previousState_}getLastRebufferTime(){return this.lastRebufferTime_}resetLastRebufferTime(){this.lastRebufferTime_=0}reportEvent(e,t){p.v2("BufferingObserver got event",e,"at time",t);let i=this.lastReportedTime_;this.lastReportedTime_=t;let r;switch(e){case Kt.SEEKING:case Kt.WAITING:this.lastReportedTime_=-1,r=Fi.State.STARVING;break;case Kt.CAN_PLAY_THROUGH:case Kt.PLAYING:case Kt.SEEKED:r=Fi.State.SATISFIED;break;case Kt.TIME_UPDATE:i>=0&&t-i>.01&&(r=Fi.State.SATISFIED);break}return r!==void 0?this.setState(r):!1}};l(Fi,"State",{STARVING:0,SATISFIED:1});var Mr=Fi;/*! @license
|
|
218
|
+
* Shaka Player
|
|
219
|
+
* Copyright 2016 Google LLC
|
|
220
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
221
|
+
*/var rn=class rn{constructor(e,t,i){l(this,"config_");l(this,"maxHwRes_");l(this,"drmEngine_");v.assert(e,"Must have config"),this.config_=e,this.maxHwRes_=t,this.drmEngine_=i}setDrmEngine(e){this.drmEngine_=e}async filterManifest(e){if(v.assert(e,"Manifest should exist!"),await se.filterManifest(this.drmEngine_,e,this.config_.drm.preferredKeySystems,this.config_.drm.keySystemsMapping),!this.config_.streaming.dontChooseCodecs){let t=this.config_.preferredVideo.map(s=>s.codec).filter(Boolean),i=this.config_.preferredAudio.map(s=>s.codec).filter(Boolean),r=this.config_.preferredText.map(s=>s.format).filter(Boolean);se.chooseCodecsAndFilterManifest(e,t,i,this.config_.preferredDecodingAttributes,r)}return this.checkPlayableVariants_(e),this.filterManifestWithRestrictions(e)}applyRestrictions(e){return se.applyRestrictions(e.variants,this.config_.restrictions,this.maxHwRes_)}filterManifestWithRestrictions(e){let t=this.applyRestrictions(e);if(e){let i=this.drmEngine_?this.drmEngine_.getDrmInfo():null;if(i&&this.drmEngine_.getMediaKeys()){let r=new Set;for(let s of e.variants)s.audio&&r.add(s.audio),s.video&&r.add(s.video);for(let s of r)this.processDrmInfos(i.keySystem,s)}this.checkRestrictedVariants(e)}return t}checkPlayableVariants_(e){if(!e.variants.some(se.isPlayable))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.CONTENT_UNSUPPORTED_BY_BROWSER)}processDrmInfos(e,t){for(let i of t.drmInfos)if(i.keySystem==e){for(let r of i.initData||[])this.drmEngine_.newInitData(r.initDataType,r.initData);this.drmEngine_.updateCurrentDrmInfo(i)}}checkRestrictedVariants(e){let t=rn.restrictedStatuses,i=this.drmEngine_?this.drmEngine_.getKeyStatuses():{},r=Object.keys(i),s=r.length&&r[0]=="00",n=!1,a=new Set,o=new Set,c=new WeakSet,d=m=>{if(!(!m||c.has(m))&&(c.add(m),m.keyIds.size))for(let f of m.keyIds){let g=i[s?"00":f];g?t.includes(g)&&o.add(g):a.add(f)}};for(let m of e.variants){if(!m.allowedByApplication)n=!0;else if(m.allowedByKeySystem)return;d(m.audio),d(m.video)}let u={hasAppRestrictions:n,missingKeys:Array.from(a),restrictedKeyStatuses:Array.from(o)};throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.RESTRICTIONS_CANNOT_BE_MET,u)}};l(rn,"restrictedStatuses",["output-restricted","internal-error"]);var Rr=rn;/*! @license
|
|
222
|
+
* Shaka Player
|
|
223
|
+
* Copyright 2016 Google LLC
|
|
224
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
225
|
+
*/var Pr={RELOAD:"reload",SMOOTH:"smooth"};/*! @license
|
|
226
|
+
* Shaka Player
|
|
227
|
+
* Copyright 2016 Google LLC
|
|
228
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
229
|
+
*/var pe=class y{static parseTFHD(e,t){let i=null,r=null,s=null,n=null,a=e.readUint32();return t&1&&(s=e.readUint64()),t&2&&(n=e.readUint32()),t&8&&(i=e.readUint32()),t&16&&(r=e.readUint32()),{trackId:a,defaultSampleDuration:i,defaultSampleSize:r,baseDataOffset:s,sampleDescriptionIndex:n}}static parseTFDT(e,t){return{baseMediaDecodeTime:t==1?e.readUint64():e.readUint32()}}static parseTFDTInaccurate(e,t){if(t==1){let i=e.readUint32(),r=e.readUint32();return{baseMediaDecodeTime:i*Math.pow(2,32)+r}}else return{baseMediaDecodeTime:e.readUint32()}}static parsePRFTInaccurate(e,t){e.readUint32();let i=e.readUint32(),r=e.readUint32(),s=i*1e3+r/2**32*1e3,n;if(t===0)n=e.readUint32();else{let a=e.readUint32(),o=e.readUint32();n=a*Math.pow(2,32)+o}return{mediaTime:n,ntpTimestamp:s}}static parseMDHD(e,t){t==1?(e.skip(8),e.skip(8)):(e.skip(4),e.skip(4));let i=e.readUint32();e.skip(4);let r=e.readUint16(),s=String.fromCharCode((r>>10)+96)+String.fromCharCode(((r&960)>>5)+96)+String.fromCharCode((r&31)+96);return{timescale:i,language:s}}static parseTREX(e){e.skip(4),e.skip(4);let t=e.readUint32(),i=e.readUint32();return{defaultSampleDuration:t,defaultSampleSize:i}}static parseTRUN(e,t,i){let r=e.readUint32(),s=[],n=null;i&1&&(n=e.readInt32()),i&4&&e.skip(4);for(let a=0;a<r;a++){let o={sampleDuration:null,sampleSize:null,sampleCompositionTimeOffset:null};i&256&&(o.sampleDuration=e.readUint32()),i&512&&(o.sampleSize=e.readUint32()),i&1024&&e.skip(4),i&2048&&(o.sampleCompositionTimeOffset=t==0?e.readUint32():e.readInt32()),s.push(o)}return{sampleCount:r,sampleData:s,dataOffset:n}}static parseTKHD(e,t){t==1?(e.skip(8),e.skip(8)):(e.skip(4),e.skip(4));let i=e.readUint32();t==1?e.skip(8):e.skip(4),e.skip(4),e.skip(8),e.skip(2),e.skip(2),e.skip(2),e.skip(2),e.skip(36);let r=e.readUint16()+e.readUint16()/16,s=e.readUint16()+e.readUint16()/16;return{trackId:i,width:r,height:s}}static visualSampleEntry(e){e.skip(24);let t=e.readUint16(),i=e.readUint16();return e.skip(50),{width:t,height:i}}static audioSampleEntry(e){e.skip(6),e.skip(2),e.skip(8);let t=e.readUint16();e.skip(2),e.skip(2),e.skip(2);let i=e.readUint16()+e.readUint16()/65536;return{channelCount:t,sampleRate:i}}static parseESDS(e){let t="mp4a",i,r;for(;e.hasMoreData();){i=e.readUint8();let s=e.readUint8();for(;s&128;)s=e.readUint8();if(i==3){e.readUint16();let n=e.readUint8();n&128&&e.readUint16(),n&64&&e.skip(e.readUint8()),n&32&&e.readUint16()}else if(i==4)r=e.readUint8(),e.skip(12);else if(i==5)break}if(r&&(t+="."+y.toHex_(r),i==5&&e.hasMoreData())){let s=e.readUint8(),n=(s&248)>>3;n===31&&e.hasMoreData()&&(n=32+((s&7)<<3)+((e.readUint8()&224)>>5)),t+="."+n}return{codec:t}}static parseAVCC(e,t){return t.skip(1),{codec:e+"."+y.toHex_(t.readUint8())+y.toHex_(t.readUint8())+y.toHex_(t.readUint8())}}static parseHVCC(e,t){t.skip(1);let i=t.readUint8(),r=["","A","B","C"][i>>6],s=i&31,n=t.readUint32(),a=(i&32)>>5?"H":"L",o=[t.readUint8(),t.readUint8(),t.readUint8(),t.readUint8(),t.readUint8(),t.readUint8()],c=t.readUint8(),d=e;d+="."+r+s,d+="."+y.toHex_(y.reverseBits_(n),!0),d+="."+a+c;let u="";for(let m=o.length;m--;){let f=o[m];(f||u)&&(u="."+f.toString(16).toUpperCase()+u)}return d+=u,{codec:d}}static parseDVCC(e,t){t.skip(2);let i=t.readUint8(),r=t.readUint8(),s=i>>1&127,n=i<<5&32|r>>3&31;return{codec:e+"."+y.addLeadingZero_(s)+"."+y.addLeadingZero_(n)}}static parseDVVC(e,t){t.skip(2);let i=t.readUint8(),r=t.readUint8(),s=i>>1&127,n=i<<5&32|r>>3&31;return{codec:e+"."+y.addLeadingZero_(s)+"."+y.addLeadingZero_(n)}}static parseVPCC(e,t){let i=t.readUint8(),r=t.readUint8(),s=t.readUint8()>>4&15;return{codec:e+"."+y.addLeadingZero_(i)+"."+y.addLeadingZero_(r)+"."+y.addLeadingZero_(s)}}static parseAV1C(e,t){t.skip(1);let i=t.readUint8(),r=t.readUint8(),s=i>>>5,n=i&31,a=r>>>7?"H":"M",o=(r&64)>>6,c=(r&32)>>5,d=s===2&&o?c?12:10:o?10:8,u=(r&16)>>4,m=(r&8)>>3,f=(r&4)>>2,g=r&3;return{codec:e+"."+s+"."+y.addLeadingZero_(n)+a+"."+y.addLeadingZero_(d)+"."+u+"."+m+f+g+"."+y.addLeadingZero_(1)+"."+y.addLeadingZero_(1)+"."+y.addLeadingZero_(1)+"."+0}}static parseFRMA(e){let t=e.readUint32();return{codec:F.typeToString(t)}}static parseTENC(e,t){e.readUint8();let i=e.readUint8(),r=t>=1?i>>4&15:0,s=t>=1?i&15:0,n=e.readUint8(),a=e.readUint8(),o=e.readBytes(16,!1),c=ne.toHex(o),d=null;if(n===1&&a===0){let u=e.readUint8();d=e.readBytes(u,!0)}return{defaultKID:c,defaultIsProtected:n,defaultPerSampleIVSize:a,defaultCryptByteBlock:r,defaultSkipByteBlock:s,defaultConstantIV:d}}static parseHDLR(e){e.skip(4);let t=e.readBytes(4,!1);return{handlerType:String.fromCharCode(t[0],t[1],t[2],t[3])}}static parsePRJI(e){return{projection:e.readTerminatedString()}}static parseHFOV(e){return{hfov:e.readUint32()/1e3}}static parseCOLR(e){let t=null,i=null,r=e.readBytes(4,!1),s="";if(s+=String.fromCharCode(r[0]),s+=String.fromCharCode(r[1]),s+=String.fromCharCode(r[2]),s+=String.fromCharCode(r[3]),s==="nclx"){switch(e.readUint16()){case 1:case 5:case 6:case 7:t="srgb";break;case 9:t="rec2020";break;case 11:case 12:t="p3";break}let a=e.readUint16();switch(e.readUint16(),a){case 1:case 6:case 13:case 14:case 15:i="SDR";break;case 16:i="PQ";break;case 18:i="HLG";break}}return{colorGamut:t,videoRange:i}}static updateAV1CodecWithCOLRBox(e,t){let i=t.getPosition(),r=t.readBytes(4,!1),s="";if(s+=String.fromCharCode(r[0]),s+=String.fromCharCode(r[1]),s+=String.fromCharCode(r[2]),s+=String.fromCharCode(r[3]),s==="nclx"){let n=t.readUint16(),a=t.readUint16(),o=t.readUint16(),c=t.readUint8()>>7,d=e.split(".");d.length==10&&(d[6]=y.addLeadingZero_(n),d[7]=y.addLeadingZero_(a),d[8]=y.addLeadingZero_(o),d[9]=String(c),e=d.join("."))}return t.seek(i),e}static parseSCHM(e){return{encryptionScheme:F.typeToString(e.readUint32())}}static toHex_(e,t=!1){let i=e.toString(16).toUpperCase();return t?i:("0"+i).slice(-2)}static reverseBits_(e){let t=e,i=0;for(let r=0;r<32&&(i|=t&1,r!=31);r++)i<<=1,t>>=1;return i}static addLeadingZero_(e){return(e<10?"0":"")+e}static parseSENC(e,t,i,r){let s=!!(t&1),n=!!(t&2),a=i,o=r;if(s&&(e.skip(3),a=e.readUint8(),e.skip(16),a===0)){let u=e.readUint8();o=e.readBytes(u,!0)}let c=e.readUint32(),d=[];for(let u=0;u<c;u++){let m=o;if(a>0)m=e.readBytes(a,!0);else if(!m)throw new Error("SENC specifies IV size 0 but no constant IV is available.");let f=new Uint8Array(16);f.set(m.subarray(0,Math.min(m.length,16)),0);let g=null;if(n){let _=e.readUint16();g=[];for(let T=0;T<_;T++)g.push({clearBytes:e.readUint16(),encryptedBytes:e.readUint32()})}d.push({iv:f,subsamples:g})}return{samples:d}}};/*! @license
|
|
230
|
+
* Shaka Player
|
|
231
|
+
* Copyright 2016 Google LLC
|
|
232
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
233
|
+
*/var bs=class bs{constructor(){l(this,"drmInfo_");l(this,"keyMap_");l(this,"keyMapPromise_");l(this,"lastInit_");this.drmInfo_=null,this.keyMap_=new Map,this.keyMapPromise_=null,this.lastInit_=null}async decrypt(e,t,i){let r=D.toUint8(e);return t?(this.lastInit_=r,this.stripEncryptionFromInit_(r)):this.lastInit_?(this.drmInfo_!==i&&(this.drmInfo_=i,this.keyMapPromise_=this.buildKeyMap_(this.drmInfo_),this.keyMap_=await this.keyMapPromise_,this.keyMapPromise_=null),this.decryptSegment_(r,this.lastInit_)):r}async destroy(){if(this.keyMapPromise_)try{await this.keyMapPromise_}catch(e){}this.drmInfo_=null,this.keyMap_.clear(),this.keyMapPromise_=null,this.lastInit_=null}async buildKeyMap_(e){let t=new Map;if(!e.clearKeys)return t;let i=await Promise.all([...e.clearKeys.entries()].map(([r,s])=>{let n=ne.fromBase64(s),a=ne.fromBase64(r);return Promise.all([crypto.subtle.importKey("raw",n,{name:"AES-CBC"},!1,["decrypt","encrypt"]),crypto.subtle.importKey("raw",n,{name:"AES-CTR"},!1,["decrypt"])]).then(([o,c])=>({kidHex:ne.toHex(a),cbc:o,ctr:c}))}));for(let{kidHex:r,cbc:s,ctr:n}of i)t.set(r,{cbc:s,ctr:n});return t}async decryptSegment_(e,t){let i=this.parseInitSegment_(t),r=this.parseMediaSegment_(e,i),s=r.fragments.map(o=>{let c=i.get(o.trackId)||i.values().next().value;return this.decryptFragment_(o,e,c)}),n=await Promise.all(s),a=[e.slice(0,r.firstFragmentOffset),...n];return ne.concat(...a)}stripEncryptionFromInit_(e){let t=D.toUint8(e).slice(),i=D.toDataView(t),r=[],s=-1,n=a=>{r.push(()=>{i.setUint32(a.start+4,bs.BOX_TYPE_FREE_,!1),t.fill(0,a.start+8,a.start+a.size)})};new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("encv",a=>{s=a.start,F.visualSampleEntry(a)}).box("enca",a=>{s=a.start,F.audioSampleEntry(a)}).box("sinf",a=>{n(a),F.children(a)}).box("frma",a=>{let{codec:o}=pe.parseFRMA(a.reader),c=s;c!==-1&&o&&r.push(()=>{for(let d=0;d<4;++d)i.setUint8(c+4+d,o.charCodeAt(d))})}).fullBox("sgpd",n).box("pssh",n).parse(t,!0);for(let a of r)a();return t}parseInitSegment_(e){let t=new Map,i=0;return new F().boxes(["moov","mdia","minf","stbl"],F.children).box("trak",r=>{i=0,F.children(r)}).fullBox("tkhd",r=>{v.assert(r.version!=null,"TKHD is a full box and should have a valid version."),i=pe.parseTKHD(r.reader,r.version).trackId,t.getOrInsert(i,{defaultKID:"",encryptionScheme:"cenc",defaultIVSize:8,defaultConstantIV:null,defaultCryptByteBlock:0,defaultSkipByteBlock:0})}).fullBox("stsd",F.sampleDescription).box("encv",F.visualSampleEntry).box("enca",F.audioSampleEntry).box("sinf",F.children).fullBox("schm",r=>{let s=pe.parseSCHM(r.reader),n=t.get(i);n&&(n.encryptionScheme=s.encryptionScheme.toLowerCase())}).box("schi",F.children).fullBox("tenc",r=>{v.assert(r.version!=null,"TENC is a full box and should have a valid version.");let s=pe.parseTENC(r.reader,r.version),n=t.get(i);n&&(n.defaultKID=s.defaultKID,n.defaultIVSize=s.defaultPerSampleIVSize,n.defaultConstantIV=s.defaultConstantIV,n.defaultCryptByteBlock=s.defaultCryptByteBlock,n.defaultSkipByteBlock=s.defaultSkipByteBlock)}).parse(e,!0),t}parseMediaSegment_(e,t){let i=[],r=0,s=null,n=a=>{s&&s.boxesToFree.push({start:a.start,size:a.size})};return new F().box("moof",a=>{i.length||(r=a.start),s={moofStart:a.start,moofSize:a.size,mdatStart:-1,mdatSize:-1,sencInfo:null,tfhdDefaultSize:0,trackId:0,trunSamples:[],boxesToFree:[]},F.children(a)}).box("traf",F.children).fullBox("tfhd",a=>{if(!s)return;v.assert(a.flags!=null,"TFHD is a full box and should have valid flags.");let o=pe.parseTFHD(a.reader,a.flags);s.trackId=o.trackId,s.tfhdDefaultSize=o.defaultSampleSize||0}).fullBox("trun",a=>{if(!s)return;v.assert(a.version!=null&&a.flags!=null,"TRUN is a full box and should have a valid version & flags.");let o=pe.parseTRUN(a.reader,a.version,a.flags);for(let c of o.sampleData)s.trunSamples.push({size:c.sampleSize||s.tfhdDefaultSize})}).fullBox("senc",a=>{if(!s)return;v.assert(a.flags!=null,"SENC is a full box and should have valid flags.");let o=t.get(s.trackId);o&&(s.sencInfo=pe.parseSENC(a.reader,a.flags,o.defaultIVSize,o.defaultConstantIV)),n(a)}).fullBoxes(["saiz","saio","sgpd","sbgp"],n).box("pssh",n).box("mdat",a=>{s&&(s.mdatStart=a.start,s.mdatSize=a.size,i.push(s),s=null)}).parse(e),{fragments:i,firstFragmentOffset:r}}async decryptFragment_(e,t,i){let r=i.defaultKID,s=this.keyMap_.get(r);if(!s)return p.warning("[ClearKeyDecryptor] No key found for KID:",r),t.slice(e.moofStart,e.mdatStart+e.mdatSize);let n=i.encryptionScheme,a=e.sencInfo;if(a&&i.defaultIVSize!==8){let _=t.subarray(e.moofStart,e.moofStart+e.moofSize);new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("senc",T=>{v.assert(T.flags!=null,"SENC is a full box and should have valid flags."),a=pe.parseSENC(T.reader,T.flags,i.defaultIVSize,i.defaultConstantIV)}).parse(_,!1)}let o=e.mdatStart+8,c=t.subarray(o,o+e.mdatSize-8),d=await this.decryptMdat_(c,e.trunSamples.map(_=>_.size),a,i,s,n),u=t.slice(e.moofStart,e.moofStart+e.moofSize),m=D.toDataView(u);if(e.boxesToFree)for(let _ of e.boxesToFree){let T=_.start-e.moofStart;T>=0&&T+_.size<=u.byteLength&&(m.setUint32(T+4,bs.BOX_TYPE_FREE_,!1),u.fill(0,T+8,T+_.size))}let f=8+d.byteLength,g=new Uint8Array(f);return D.toDataView(g).setUint32(0,f,!1),g.set([109,100,97,116],4),g.set(d,8),ne.concat(u,g)}async decryptMdat_(e,t,i,r,s,n){let a=new Uint8Array(e.byteLength),o=0,c=t.map((u,m)=>{let f=o;o+=u;let g=e.subarray(f,f+u);if(i&&i.samples[m]){let _=i.samples[m],T=r.defaultIVSize===16?16:8,S=new Uint8Array(16);if(S.set(_.iv.slice(0,T),0),n==="cenc")return this.decryptSampleCenc_(g,S,_.subsamples,s).then(E=>({offset:f,dec:E}));let b=r.defaultConstantIV||S;return this.decryptSampleCbcs_(g,b,_.subsamples,r,s).then(E=>({offset:f,dec:E}))}return n==="cbcs"&&r.defaultConstantIV?this.decryptSampleCbcs_(g,r.defaultConstantIV,null,r,s).then(_=>({offset:f,dec:_})):Promise.resolve({offset:f,dec:g})}),d=await Promise.all(c);for(let{offset:u,dec:m}of d)a.set(m,u);return a}async decryptSampleCenc_(e,t,i,r){if(!i||!i.length)return D.toUint8(await crypto.subtle.decrypt({name:"AES-CTR",counter:t,length:64},r.ctr,e));let s=new Uint8Array(e.byteLength),n=0,a=0,o=i.map(d=>{let u=n;if(n+=d.clearBytes,d.encryptedBytes===0)return Promise.resolve({clearStart:u,clearLen:d.clearBytes,encStart:n,encLen:0,decrypted:null});let m=t.slice();this.addCounterOffset_(m,a);let f=n;n+=d.encryptedBytes,a+=Math.ceil(d.encryptedBytes/16);let g=e.subarray(f,f+d.encryptedBytes);return crypto.subtle.decrypt({name:"AES-CTR",counter:m,length:64},r.ctr,g).then(_=>({clearStart:u,clearLen:d.clearBytes,encStart:f,encLen:d.encryptedBytes,decrypted:D.toUint8(_)}))}),c=await Promise.all(o);for(let d of c)s.set(e.subarray(d.clearStart,d.clearStart+d.clearLen),d.clearStart),d.decrypted&&s.set(d.decrypted,d.encStart);return s}async decryptSampleCbcs_(e,t,i,r,s){let n=r.defaultCryptByteBlock,a=r.defaultSkipByteBlock;n===0&&(n=1,a=0);let o=new Uint8Array(e.byteLength),c=[],d=t,u=(m,f)=>{let g=m,_=m+f;for(;g<_;){let T=_-g,S=Math.min(n*16,T);if(S>=16){let E=Math.floor(S/16)*16,C=g,A=S-E,w=g+E,M=d;c.push(this.rawCBCDecrypt_(e.subarray(C,C+E),M,s.cbc).then(x=>{o.set(x,C),A>0&&o.set(e.subarray(w,w+A),w)})),d=e.slice(C+E-16,C+E),g+=E+A}else o.set(e.subarray(g,g+S),g),g+=S;let b=Math.min(a*16,_-g);b>0&&(o.set(e.subarray(g,g+b),g),g+=b)}};if(!i||!i.length)u(0,e.byteLength);else{let m=0;for(let f of i){let g=m;if(m+=f.clearBytes,o.set(e.subarray(g,g+f.clearBytes),g),f.encryptedBytes>0){let _=m;m+=f.encryptedBytes,u(_,f.encryptedBytes)}}}return await Promise.all(c),o}async rawCBCDecrypt_(e,t,i){if(!e||!e.byteLength||e.byteLength%16!==0)return new Uint8Array(0);let r=e.byteLength/16,n=e.subarray((r-1)*16,r*16).map(m=>16^m),a=new Uint8Array(16),o=await crypto.subtle.encrypt({name:"AES-CBC",iv:a},i,n),c=new Uint8Array(o,0,16),d=new Uint8Array(e.byteLength+16);d.set(e,0),d.set(c,e.byteLength);let u=await crypto.subtle.decrypt({name:"AES-CBC",iv:t},i,d);return D.toUint8(u)}addCounterOffset_(e,t){let i=t;for(let r=15;r>=8&&i>0;r--)i+=e[r],e[r]=i&255,i>>>=8}static shouldUse(e){var t;return!e||!((t=window.crypto)!=null&&t.subtle)||!de.isClearKeySystem(e.keySystem)?!1:!j.getDevice().hasWorkingClearKeySupport()}};l(bs,"BOX_TYPE_FREE_",1718773093);var Es=bs;/*! @license
|
|
234
|
+
* Shaka Player
|
|
235
|
+
* Copyright 2016 Google LLC
|
|
236
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
237
|
+
*/var sn=class sn{static isTypeSupported(e){return sn.MediaSourceTypeSupportMap.getOrInsertComputed(e,()=>{var r;let i=self.ManagedMediaSource||self.MediaSource;return(r=i==null?void 0:i.isTypeSupported(e))!=null?r:!1})}static isInfiniteLiveStreamDurationSupported(){let e=self.ManagedMediaSource||self.MediaSource;return e&&e.prototype?!!e.prototype.setLiveSeekableRange&&!!e.prototype.clearLiveSeekableRange:!1}};l(sn,"MediaSourceTypeSupportMap",new Map);var Ke=sn;/*! @license
|
|
238
|
+
* Shaka Player
|
|
239
|
+
* Copyright 2016 Google LLC
|
|
240
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
241
|
+
*/var te=class te{constructor(e=[]){l(this,"streamInfos_");this.streamInfos_=e}initSegment(){let e=this.moov_(),t=te.FTYP_.value(),i=t.byteLength+e.byteLength,r=new Uint8Array(i);return r.set(t),r.set(e,t.byteLength),r}moov_(){if(this.streamInfos_.length===0)throw new Error("StreamInfos must have elements");let e=[];for(let i of this.streamInfos_)e.push(this.trak_(i));let t=this.streamInfos_[0];return te.box("moov",this.mvhd_(t),...e,this.mvex_(),this.psshs(t.stream))}mvhd_(e){let t=e.duration*e.timescale,i=Math.floor(t/(te.UINT32_MAX_+1)),r=Math.floor(t%(te.UINT32_MAX_+1)),s=te.MVHD_TEMPLATE_.value();return this.writeUint32_(s,e.timescale,20),this.writeUint32_(s,i,24),this.writeUint32_(s,r,28),te.box("mvhd",s)}trak_(e){return te.box("trak",this.tkhd_(e),this.mdia_(e))}tkhd_(e){let t=R.ContentType,i=e.id+1,r=e.stream.width||0,s=e.stream.height||0;e.type==t.AUDIO&&(r=0,s=0);let n=e.duration*e.timescale,a=Math.floor(n/(te.UINT32_MAX_+1)),o=Math.floor(n%(te.UINT32_MAX_+1)),c=te.TKHD_TEMPLATE_.value();return this.writeUint32_(c,i,20),this.writeUint32_(c,a,28),this.writeUint32_(c,o,32),this.writeUint16_(c,r,88),this.writeUint16_(c,s,92),te.box("tkhd",c)}mdia_(e){return te.box("mdia",this.mdhd_(e),this.hdlr_(e),this.minf_(e))}mdhd_(e){let t=e.duration*e.timescale,i=Math.floor(t/(te.UINT32_MAX_+1)),r=Math.floor(t%(te.UINT32_MAX_+1)),s=e.stream.language,n=s.charCodeAt(0)-96<<10|s.charCodeAt(1)-96<<5|s.charCodeAt(2)-96,a=te.MDHD_TEMPLATE_.value();return this.writeUint32_(a,e.timescale,20),this.writeUint32_(a,i,24),this.writeUint32_(a,r,28),this.writeUint16_(a,n,32),te.box("mdhd",a)}hdlr_(e){let t=R.ContentType,i=new Uint8Array([]);switch(e.type){case t.VIDEO:i=te.HDLR_TYPES_.video.value();break;case t.AUDIO:i=te.HDLR_TYPES_.audio.value();break}return te.box("hdlr",i)}minf_(e){let t=R.ContentType;switch(e.type){case t.VIDEO:return te.box("minf",te.box("vmhd",te.VMHD_.value()),te.DINF_.value(),this.stbl_(e));case t.AUDIO:return te.box("minf",te.box("smhd",te.SMHD_.value()),te.DINF_.value(),this.stbl_(e))}return new Uint8Array([])}stbl_(e){return te.box("stbl",this.stsd_(e),te.STTS_BOX_.value(),te.STSC_BOX_.value(),te.STSZ_BOX_.value(),te.STCO_BOX_.value())}stsd_(e){let t=R.ContentType,i="aac";e.codecs.includes("mp3")?i="mp3":e.codecs.includes("ac-3")?j.getDevice().requiresEC3InitSegments()?i="ec-3":i="ac-3":e.codecs.includes("ec-3")?i="ec-3":e.codecs.includes("opus")&&(i="opus");let r=new Uint8Array([]);switch(e.type){case t.VIDEO:e.codecs.includes("avc1")?r=this.avc1_(e):e.codecs.includes("hvc1")&&(r=this.hvc1_(e));break;case t.AUDIO:i=="mp3"?r=this.mp3_(e):i=="ac-3"?r=this.ac3_(e):i=="ec-3"?r=this.ec3_(e):i=="opus"?r=this.opus_(e):r=this.mp4a_(e);break}return te.box("stsd",te.STSD_.value(),r)}videoSampleEntry_(e,t,i){let r=e.stream.width||0,s=e.stream.height||0,n=new Uint8Array([]);e.mediaConfig.byteLength>0&&(n=te.box(i,e.mediaConfig));let a=te.VIDEO_SAMPLE_ENTRY_TEMPLATE_.value();this.writeUint16_(a,r,24),this.writeUint16_(a,s,26);let o=this.pasp_(e),c=new Uint8Array([]),d=t;return te.isStreamEncrypted_(e.stream)&&(c=this.sinf(e.stream,e.codecs),d="encv"),te.box(d,a,n,o,c)}avc1_(e){return this.videoSampleEntry_(e,"avc1","avcC")}hvc1_(e){return this.videoSampleEntry_(e,"hvc1","hvcC")}pasp_(e){if(!e.hSpacing&&!e.vSpacing)return new Uint8Array([]);let t=e.hSpacing||0,i=e.vSpacing||0,r=te.allocBox_("pasp",8);return this.writeUint32_(r,t,te.BOX_HEADER_SIZE_),this.writeUint32_(r,i,te.BOX_HEADER_SIZE_+4),r}audioStsd_(e){let t=e.stream.channelsCount||2,i=e.stream.audioSamplingRate||44100,r=te.AUDIO_STSD_TEMPLATE_.value();return r[17]=t,this.writeUint16_(r,i,24),r}mp3_(e){return te.box(".mp3",this.audioStsd_(e))}ac3_(e){let t=te.box("dac3",e.mediaConfig),i="ac-3",r=new Uint8Array([]);return te.isStreamEncrypted_(e.stream)&&(r=this.sinf(e.stream,e.codecs),i="enca"),te.box(i,this.audioStsd_(e),t,r)}ec3_(e){let t=te.box("dec3",e.mediaConfig),i="ec-3",r=new Uint8Array([]);return te.isStreamEncrypted_(e.stream)&&(r=this.sinf(e.stream,e.codecs),i="enca"),te.box(i,this.audioStsd_(e),t,r)}opus_(e){let t=te.box("dOps",e.mediaConfig),i="Opus",r=new Uint8Array([]);return te.isStreamEncrypted_(e.stream)&&(r=this.sinf(e.stream,e.codecs),i="enca"),te.box(i,this.audioStsd_(e),t,r)}mp4a_(e){let t;e.mediaConfig.byteLength>0?t=te.box("esds",e.mediaConfig):t=te.box("esds",this.esds_(e));let i="mp4a",r=new Uint8Array([]);return te.isStreamEncrypted_(e.stream)&&(r=this.sinf(e.stream,e.codecs),i="enca"),te.box(i,this.audioStsd_(e),t,r)}esds_(e){let t=R.ContentType,i=e.id+1,r=e.stream.channelsCount||2,s=e.stream.audioSamplingRate||44100,n=R.guessCodecs(t.AUDIO,e.codecs.split(",")),a={96e3:0,88200:1,64e3:2,48e3:3,44100:4,32e3:5,24e3:6,22050:7,16e3:8,12e3:9,11025:10,8e3:11,7350:12},o=a[s];(n==="mp4a.40.5"||n==="mp4a.40.29")&&(o=a[s*2]);let c=parseInt(n.split(".").pop(),10),d=te.ESDS_TEMPLATE_.value();return this.writeUint16_(d,i,6),d[26]=c<<3|o>>>1,d[27]=o<<7|r<<3,d}mvex_(){let e=[];for(let t of this.streamInfos_)e.push(this.trex_(t));return te.box("mvex",...e)}trex_(e){let t=e.id+1,i=te.TREX_TEMPLATE_.value();return this.writeUint32_(i,t,4),te.box("trex",i)}psshs(e){let t=[];if(!te.isStreamEncrypted_(e))return new Uint8Array([]);for(let r of e.drmInfos)if(r.initData)for(let s of r.initData)t.push(s.initData);return ne.concat(...t)}sinf(e,t){return te.box("sinf",this.frma_(t),this.schm_(e),this.schi_(e))}frma_(e){let t=e.split(".")[0],i=te.BOX_HEADER_SIZE_,r=te.allocBox_("frma",4);return this.writeUint32_(r,this.stringToCharCode_(t),i),r}schm_(e){let t="cenc",i=e.drmInfos[0];i&&i.encryptionScheme&&(t=i.encryptionScheme);let r=te.SCHM_TEMPLATE_.value();return this.writeUint32_(r,this.stringToCharCode_(t),4),te.box("schm",r)}schi_(e){return te.box("schi",this.tenc_(e))}tenc_(e){let t=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);for(let i of e.drmInfos)if(i&&i.keyIds&&i.keyIds.size)for(let r of i.keyIds)t=this.hexStringToBuffer_(r);return v.assert(t,"Default KID should be non-null"),te.box("tenc",te.TENC_HEADER_.value(),t)}segmentData(){let e=te.BOX_HEADER_SIZE_,t=[],i=0;for(let n of this.streamInfos_){let a=this.moof_(n),o=n.data?n.data.samples:[],c=0;for(let u of o)c+=u.data.byteLength;let d=e+c;t.push({moof:a,samples:o,mdatSize:d}),i+=a.byteLength+d}let r=D.toUint8(new ArrayBuffer(i)),s=0;for(let{moof:n,samples:a,mdatSize:o}of t){r.set(n,s),s+=n.byteLength,this.writeUint32_(r,o,s),r.set(te.MDAT_TYPE_.value(),s+4),s+=e;for(let c of a)r.set(c.data,s),s+=c.data.byteLength}return r}moof_(e){return te.box("moof",this.mfhd_(e),this.traf_(e))}mfhd_(e){let t=e.data?e.data.sequenceNumber:0,i=te.allocBox_("mfhd",8);return this.writeUint32_(i,t,te.BOX_HEADER_SIZE_+4),i}traf_(e){let t=this.sdtp_(e),i=t.length+32+20+8+16+8+8;return te.box("traf",this.tfhd_(e),this.tfdt_(e),this.trun_(e,i),t)}sdtp_(e){let t=e.data?e.data.samples:[],i=te.allocBox_("sdtp",4+t.length),r=te.BOX_HEADER_SIZE_+4;for(let s=0;s<t.length;s++){let n=t[s].flags;i[s+r]=n.dependsOn<<4|n.isDependedOn<<2|n.hasRedundancy}return i}tfhd_(e){let t=e.id+1,i=te.TFHD_TEMPLATE_.value();return this.writeUint32_(i,t,4),te.box("tfhd",i)}tfdt_(e){let t=te.BOX_HEADER_SIZE_,i=e.data?e.data.baseMediaDecodeTime:0,r=Math.floor(i/(te.UINT32_MAX_+1)),s=Math.floor(i%(te.UINT32_MAX_+1)),n=te.allocBox_("tfdt",12);return n[t]=1,this.writeUint32_(n,r,t+4),this.writeUint32_(n,s,t+8),n}trun_(e,t){let i=R.ContentType,r=e.data?e.data.samples:[],s=r.length,n=12+16*s,a=te.allocBox_("trun",n);t+=te.BOX_HEADER_SIZE_+n;let o=e.type===i.VIDEO;a[te.BOX_HEADER_SIZE_]=o?1:0,a[te.BOX_HEADER_SIZE_+1]=0,a[te.BOX_HEADER_SIZE_+2]=15,a[te.BOX_HEADER_SIZE_+3]=1,this.writeUint32_(a,s,te.BOX_HEADER_SIZE_+4),this.writeUint32_(a,t,te.BOX_HEADER_SIZE_+8);for(let c=0;c<s;c++){let d=r[c],u=d.flags,m=te.BOX_HEADER_SIZE_+12+16*c;this.writeUint32_(a,d.duration,m),this.writeUint32_(a,d.size,m+4),a[m+8]=u.isLeading<<2|u.dependsOn,a[m+9]=u.isDependedOn<<6|u.hasRedundancy<<4|u.isNonSync,a[m+10]=u.degradPrio&61440,a[m+11]=u.degradPrio&15,this.writeUint32_(a,d.cts,m+12)}return a}writeUint32_(e,t,i){e[i]=t>>>24&255,e[i+1]=t>>>16&255,e[i+2]=t>>>8&255,e[i+3]=t&255}writeUint16_(e,t,i){e[i]=t>>>8&255,e[i+1]=t&255}hexStringToBuffer_(e){let t=new Uint8Array(e.length/2);for(let i=0;i<e.length/2;i+=1)t[i]=parseInt(String(e[i*2]+e[i*2+1]),16);return t}stringToCharCode_(e){let t=0;for(let i=0;i<e.length;i+=1)t|=e.charCodeAt(i)<<(e.length-i-1)*8;return t}static box(e,...t){let i=0;for(let n of t)i+=n.byteLength;let r=te.allocBox_(e,i),s=te.BOX_HEADER_SIZE_;for(let n=0;n<t.length;n++)r.set(t[n],s),s+=t[n].byteLength;return r}static allocBox_(e,t){let i=te.BOX_TYPES_.get(e);i||(i=[e.charCodeAt(0),e.charCodeAt(1),e.charCodeAt(2),e.charCodeAt(3)],te.BOX_TYPES_.set(e,i));let r=te.BOX_HEADER_SIZE_+t,s=new Uint8Array(r);return s[0]=r>>24&255,s[1]=r>>16&255,s[2]=r>>8&255,s[3]=r&255,s.set(i,4),s}static isStreamEncrypted_(e){return e.encrypted&&e.drmInfos.length>0}};l(te,"BOX_TYPES_",new Map),l(te,"BOX_HEADER_SIZE_",8);var xe=te;xe.UINT32_MAX_=Math.pow(2,32)-1;xe.MDAT_TYPE_=new _e(()=>new Uint8Array([109,100,97,116]));xe.MVHD_TEMPLATE_=new _e(()=>new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]));xe.TKHD_TEMPLATE_=new _e(()=>new Uint8Array([1,0,0,7,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0]));xe.MDHD_TEMPLATE_=new _e(()=>new Uint8Array([1,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]));xe.TREX_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]));xe.TFHD_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,58,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]));xe.ESDS_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,0,3,25,0,0,0,4,17,64,21,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,6,1,2]));xe.AUDIO_STSD_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0]));xe.VIDEO_SAMPLE_ENTRY_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,0,0,0,72,0,0,0,0,0,0,0,1,19,118,105,100,101,111,106,115,45,99,111,110,116,114,105,98,45,104,108,115,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]));xe.TENC_HEADER_=new _e(()=>new Uint8Array([0,0,0,0,0,0,1,8]));xe.SCHM_TEMPLATE_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,0,0,1,0,0]));xe.HDLR_TYPES_={video:new _e(()=>new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0])),audio:new _e(()=>new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0]))};xe.VMHD_=new _e(()=>new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]));xe.SMHD_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,0]));xe.STSD_=new _e(()=>new Uint8Array([0,0,0,0,0,0,0,1]));xe.FTYP_=new _e(()=>{let y=new Uint8Array([105,115,111,109]),e=new Uint8Array([97,118,99,49]),t=new Uint8Array([0,0,0,1]);return xe.box("ftyp",y,t,y,e)});xe.DINF_=new _e(()=>{let y=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1]),e=xe.box("dref",y);return xe.box("dinf",e)});xe.STTS_BOX_=new _e(()=>xe.allocBox_("stts",8));xe.STSC_BOX_=new _e(()=>xe.allocBox_("stsc",8));xe.STSZ_BOX_=new _e(()=>xe.allocBox_("stsz",12));xe.STCO_BOX_=new _e(()=>xe.allocBox_("stco",8));/*! @license
|
|
242
|
+
* Shaka Player
|
|
243
|
+
* Copyright 2016 Google LLC
|
|
244
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
245
|
+
*/var Pe=class Pe{static correctEnca(e){let t=D.toUint8(e),i=t,r=16,s=null;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("enca",n=>(s=n.reader.getDataView(),F.audioSampleEntry(n))).box("sinf",F.children).box("frma",n=>{n.parser.stop();let{codec:a}=pe.parseFRMA(n.reader);a==="ec-3"&&s&&s.getUint16(r)!==2&&s.setUint16(r,2)}).parse(t),i}static freeDvvcBox(e){let t=D.toUint8(e),i=null,r=-1;return new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("hvc1",s=>(i=s.reader.getDataView(),r=s.start,F.visualSampleEntry(s))).box("dvvC",s=>{s.parser.stop();let n=s.start-r-4;i.setUint32(n,Pe.BOX_TYPE_FREE_)}).parse(t),t}static fakeEncryption(e,t,i,r){let s=D.toUint8(t),n=s,a=!1,o,c=[],d=T=>{c.push(T),F.children(T)},u=T=>{a=!0,T.parser.stop()},m=[],f=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCV_})},g=T=>{m.push({box:T,newType:Pe.BOX_TYPE_ENCA_})};if(new F().boxes(F.SAMPLE_TABLE_PATH,d).fullBox("stsd",T=>{o=T,c.push(T),F.sampleDescription(T)}).boxes(["encv","enca"],u).boxes(F.AVC_HEVC_VVC_DV,f).boxes([...F.GENERIC_AUDIO_SAMPLE_ENTRIES,"mp4a"],g).parse(s),a)return p.debug("Init segment already indicates encryption."),s;if(m.length==0||!o)throw p.error("Failed to find boxes needed to fake encryption!"),p.v2("Failed init segment (hex):",ne.toHex(s)),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.CONTENT_TRANSFORMATION_FAILED,i);m.reverse();for(let T of m){let S=F.typeToString(T.newType);p.debug(`Inserting "${S}" box into init segment.`),n=Pe.insertEncryptionMetadata_(e,n,o,T.box,c,T.newType,r)}if(n=Pe.insertPsshBoxes_(e,n),j.getDevice().requiresClearAndEncryptedInitSegments(r)){let T=new Uint8Array(s.byteLength+n.byteLength);return T.set(n),T.set(s,n.byteLength),T}return n}static fakeMediaEncryption(e){let t=D.toUint8(e),i=[];new F().box("mdat",s=>{i.push(s)}).parse(t);let r=[];for(let s=0;s<i.length;s++){let n=i[s-1],a=i[s],o=n?n.start+n.size:0,c=a.start+a.size,d=t.subarray(o,c);r.push(Pe.fakeMediaEncryptionInChunk_(d))}return ne.concat(...r)}static fakeMediaEncryptionInChunk_(e){let i,r,s,n,a=[],o=u=>{a.push(u),F.children(u)},c=u=>{i=u,s=pe.parseTFHD(u.reader,u.flags)},d=u=>{r=u,n=pe.parseTRUN(u.reader,u.version,u.flags)};if(new F().boxes(F.FRAGMENT_PATH,o).fullBox("tfhd",c).fullBox("trun",d).parse(e),s&&s.sampleDescriptionIndex!==2){let u=i.start+F.headerSize(i)+4+(s.baseDataOffset!==null?8:0),m=D.toDataView(e);if(s.sampleDescriptionIndex!==null)m.setUint32(u,2);else{Pe.updateBoxSize_(e,i.start,i.size+4);let g=m.getUint32(i.start+8);if(m.setUint32(i.start+8,g|2),n&&n.dataOffset!==null){let b=n.dataOffset+4,E=r.start+F.headerSize(r)+4;m.setInt32(E,b)}let _=e.subarray(0,u),T=e.subarray(u);e=new Uint8Array(e.byteLength+4),e.set(_);let S=[];for(let b=3;b>=0;b--)S.push(2>>8*b&255);e.set(new Uint8Array(S),u),e.set(T,u+4);for(let b of a)Pe.updateBoxSize_(e,b.start,b.size+4)}}return e}static insertEncryptionMetadata_(e,t,i,r,s,n,a){let o=Pe.createEncryptionMetadata_(e,t,r,n),c=new Uint8Array(t.byteLength+o.byteLength),u=j.getDevice().insertEncryptionDataBeforeClear(a)?r.start:r.start+r.size,m=t.subarray(0,u),f=t.subarray(u);c.set(m),c.set(o,u),c.set(f,u+o.byteLength);for(let S of s)v.assert(S.start<u,"Ancestor MP4 box found in the wrong location! Modified init segment will not make sense!"),Pe.updateBoxSize_(c,S.start,S.size+o.byteLength);let g=D.toDataView(c,i.start),_=F.headerSize(i),T=g.getUint32(_);return g.setUint32(_,T+1),c}static createEncryptionMetadata_(e,t,i,r){let n=new xe().sinf(e,i.name),a=t.subarray(i.start,i.start+i.size),o=new Uint8Array(i.size+n.byteLength);return o.set(a,0),D.toDataView(o).setUint32(Pe.BOX_TYPE_OFFSET_,r),o.set(n,i.size),Pe.updateBoxSize_(o,0,o.byteLength),o}static insertPsshBoxes_(e,t){let i=new xe().psshs(e);if(i.byteLength===0)return t;let r=0,s=0;new F().box("moov",u=>{r=u.start,s=u.size,u.parser.stop()}).parse(t);let n=s+i.byteLength,a=r+s;Pe.updateBoxSize_(t,r,n);let o=new Uint8Array(t.byteLength+i.byteLength),c=t.subarray(0,a),d=t.subarray(a);return o.set(c),o.set(i,a),o.set(d,a+i.byteLength),o}static updateBoxSize_(e,t,i){let r=D.toDataView(e,t),s=r.getUint32(Pe.BOX_SIZE_OFFSET_);s==0||(s==1?(r.setUint32(Pe.BOX_SIZE_64_OFFSET_,i>>32),r.setUint32(Pe.BOX_SIZE_64_OFFSET_+4,i&4294967295)):r.setUint32(Pe.BOX_SIZE_OFFSET_,i))}static fakeEC3(e){let t=D.toUint8(e),i=[],r=s=>{i.push({start:s.start,size:s.size}),F.children(s)};return new F().boxes(F.SAMPLE_TABLE_PATH,r).box("stsd",s=>{i.push({start:s.start,size:s.size});let n=D.toDataView(t,s.start);for(let a=0;a<s.size-3;a++){let o=n.getUint32(a);o==Pe.BOX_TYPE_AC_3_?n.setUint32(a,Pe.BOX_TYPE_EC_3_):o==Pe.BOX_TYPE_DAC3_&&n.setUint32(a,Pe.BOX_TYPE_DEC3_)}}).parse(t),t}static fixBrokenIframes(e){let t=D.toUint8(e),i=[],r=[],s=[],n=[],a=!1;if(new F().box("moof",W=>{i.push(W),F.children(W)}).box("traf",W=>{r.push(W),F.children(W)}).fullBox("tfhd",W=>{s.push(W)}).fullBox("trun",W=>{n.push(W)}).boxes(["senc","saiz","saio"],()=>{a=!0}).parse(t,!1,!0),a||i.length!=1||r.length!=1||s.length!=1||n.length!=1)return t;let o=i[0],c=r[0],d=s[0],u=n[0];v.assert(d.flags!=null,"TFHD should have valid flags"),v.assert(u.flags!=null,"TRUN should have valid flags"),v.assert(u.version!=null,"TRUN should have a valid version");let m=u.flags,f=pe.parseTFHD(d.reader,d.flags),g=pe.parseTRUN(u.reader,u.version,u.flags);if(f.baseDataOffset!=null||!(m&1)||g.dataOffset==null)return t;let _=o.start+o.size,T=D.toDataView(t);if(_+8>t.byteLength||T.getUint32(_+Pe.BOX_TYPE_OFFSET_)!=Pe.BOX_TYPE_MDAT_)return t;let S=T.getUint32(_),b=8;if(S==1)return t;S==0&&(S=t.byteLength-_);let E=t.byteLength-(_+b),C=S-b;if(E>=C)return t;let A=0,w=0;for(let W of g.sampleData){let z=W.sampleSize!=null?W.sampleSize:f.defaultSampleSize;if(z==null)return t;if(A+z>E)break;A+=z,w++}if(w!=1||w>=g.sampleCount)return t;let M=(m&256)!=0,x=0;for(let W of g.sampleData){let z=M?W.sampleDuration:f.defaultSampleDuration;if(z==null)return t;x+=z}let k=F.headerSize(u),L=u.start+k+4;L+=4,m&4&&(L+=4);let V=0;m&256&&(V+=4),m&512&&(V+=4),m&1024&&(V+=4),m&2048&&(V+=4);let oe=(g.sampleCount-w)*V,le=L+w*V;if(le+oe!=_)return t;let H=t.slice(0,le),J=D.toDataView(H);if(J.setUint32(u.start+k,w),J.setInt32(u.start+k+4,g.dataOffset-oe),M)J.setUint32(L,x);else{let W=d.start+F.headerSize(d)+4;f.sampleDescriptionIndex!=null&&(W+=4),J.setUint32(W,x)}Pe.updateBoxSize_(H,u.start,u.size-oe),Pe.updateBoxSize_(H,c.start,c.size-oe),Pe.updateBoxSize_(H,o.start,o.size-oe);let Z=t.slice(_,_+b);Pe.updateBoxSize_(Z,0,b+A);let ce=t.subarray(_+b,_+b+A);return ne.concat(H,Z,ce)}};l(Pe,"BOX_SIZE_OFFSET_",0),l(Pe,"BOX_TYPE_OFFSET_",4),l(Pe,"BOX_SIZE_64_OFFSET_",8),l(Pe,"BOX_TYPE_MDAT_",1835295092),l(Pe,"BOX_TYPE_ENCV_",1701733238),l(Pe,"BOX_TYPE_ENCA_",1701733217),l(Pe,"BOX_TYPE_AC_3_",1633889587),l(Pe,"BOX_TYPE_DAC3_",1684103987),l(Pe,"BOX_TYPE_EC_3_",1700998451),l(Pe,"BOX_TYPE_FREE_",1718773093),l(Pe,"BOX_TYPE_DEC3_",1684366131);var Zi=Pe;/*! @license
|
|
246
|
+
* Shaka Player
|
|
247
|
+
* Copyright 2016 Google LLC
|
|
248
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
249
|
+
*/var Tt=class{constructor(e,t,i,r=null,s=null,n=null,a=null,o=!1){l(this,"getUris");l(this,"startByte");l(this,"endByte");l(this,"mediaQuality");l(this,"timescale");l(this,"segmentData");l(this,"aesKey");l(this,"codecs");l(this,"mimeType");l(this,"boundaryEnd");l(this,"encrypted");this.getUris=e,this.startByte=t,this.endByte=i,this.mediaQuality=r,this.timescale=s,this.segmentData=n,this.aesKey=a,this.codecs=null,this.mimeType=null,this.boundaryEnd=null,this.encrypted=o}getStartByte(){return this.startByte}getEndByte(){return this.endByte}getSize(){return this.endByte?this.endByte+1-this.startByte:null}getMediaQuality(){return this.mediaQuality}setSegmentData(e){this.segmentData=e}getSegmentData(){return this.segmentData}static equal(e,t){return e===t?!0:!e||!t?e==t:e.getStartByte()==t.getStartByte()&&e.getEndByte()==t.getEndByte()&&ye.equal(e.getUris().sort(),t.getUris().sort())&&D.equal(e.getSegmentData(),t.getSegmentData())}},As=class As{constructor(e,t,i,r,s,n,a,o,c,d=[],u="",m=null,f=null,g=As.Status.AVAILABLE,_=null,T=!1){l(this,"startTime");l(this,"endTime");l(this,"trueEndTime");l(this,"getUrisInner");l(this,"startByte");l(this,"endByte");l(this,"initSegmentReference");l(this,"timestampOffset");l(this,"appendWindowStart");l(this,"appendWindowEnd");l(this,"partialReferences");l(this,"tilesLayout");l(this,"tileDuration");l(this,"syncTime");l(this,"status");l(this,"preload");l(this,"independent");l(this,"byterangeOptimization");l(this,"aesKey");l(this,"thumbnailSprite");l(this,"discontinuitySequence");l(this,"allPartialSegments");l(this,"partial");l(this,"lastPartial");l(this,"codecs");l(this,"mimeType");l(this,"bandwidth");l(this,"segmentData");l(this,"removeSegmentDataOnGet");l(this,"metadata_");v.assert(e<=t,"startTime must be less than or equal to endTime"),v.assert(s==null||r<s,"startByte must be < endByte"),this.startTime=e,this.endTime=t,this.trueEndTime=t,this.getUrisInner=i,this.startByte=r,this.endByte=s,this.initSegmentReference=n,this.timestampOffset=a,this.appendWindowStart=o,this.appendWindowEnd=c,this.partialReferences=d,this.tilesLayout=u,this.tileDuration=m,this.syncTime=f,this.status=g,this.preload=!1,this.independent=!0,this.byterangeOptimization=!1,this.aesKey=_,this.thumbnailSprite=null,this.discontinuitySequence=-1,this.allPartialSegments=T,this.partial=!1,this.lastPartial=!1;for(let S of this.partialReferences)S.markAsPartial();this.allPartialSegments&&this.partialReferences.length&&this.partialReferences[this.partialReferences.length-1].markAsLastPartial(),this.codecs=null,this.mimeType=null,this.bandwidth=null,this.segmentData=null,this.removeSegmentDataOnGet=!1,this.metadata_=null}getUris(){return this.getUrisInner()}getStartTime(){return this.startTime}getEndTime(){return this.endTime}getStartByte(){return this.startByte}getEndByte(){return this.endByte}getSize(){if(this.endByte)return this.endByte+1-this.startByte;if(this.bandwidth){let e=this.bandwidth*(this.endTime-this.startTime);if(!isNaN(e)&&e>0)return e}if(this.hasPartialSegments()&&this.hasAllPartialSegments()){let e=0;for(let t of this.partialReferences){let i=t.getSize();return i&&(e+=i),null}if(e)return e}return null}hasPartialSegments(){return this.partialReferences.length>0}hasAllPartialSegments(){return this.allPartialSegments}getTilesLayout(){return this.tilesLayout}getTileDuration(){return this.tileDuration}getStatus(){return this.status}markAsUnavailable(){this.status=As.Status.UNAVAILABLE}markAsPreload(){this.preload=!0}isPreload(){return this.preload}markAsNonIndependent(){this.independent=!1}isIndependent(){return this.independent}markAsPartial(){this.partial=!0}isPartial(){return this.partial}markAsLastPartial(){this.lastPartial=!0}isLastPartial(){return this.lastPartial}markAsByterangeOptimization(){this.byterangeOptimization=!0}hasByterangeOptimization(){return this.byterangeOptimization}setThumbnailSprite(e){this.thumbnailSprite=e}getThumbnailSprite(){return this.thumbnailSprite}offset(e){this.startTime+=e,this.endTime+=e,this.trueEndTime+=e;for(let t of this.partialReferences)t.startTime+=e,t.endTime+=e,t.trueEndTime+=e}syncAgainst(e){if(this.syncTime==null){p.alwaysError("Sync attempted without sync time!");return}let i=this.syncTime-e-this.startTime;Math.abs(i)>=.001&&this.offset(i)}setSegmentData(e,t=!1){this.segmentData=e,this.removeSegmentDataOnGet=t}getSegmentData(e=!0){let t=this.segmentData;return e&&this.removeSegmentDataOnGet&&(this.segmentData=null),t}updateInitSegmentReference(e){this.initSegmentReference=e;for(let t of this.partialReferences)t.updateInitSegmentReference(e)}setMetadata(e){this.metadata_=e}getMetadata(){return this.metadata_}};l(As,"Status",{AVAILABLE:0,UNAVAILABLE:1,MISSING:2});var Se=As;/*! @license
|
|
250
|
+
* Shaka Player
|
|
251
|
+
* Copyright 2016 Google LLC
|
|
252
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
253
|
+
*/var Je=class y{static isBufferNegligible_(e){return e.length==1&&e.end(0)-e.start(0)<1e-4}static bufferStart(e){return!e||y.isBufferNegligible_(e)?null:e.length==1&&e.start(0)<0?0:e.length?e.start(0):null}static bufferEnd(e){return!e||y.isBufferNegligible_(e)?null:e.length?e.end(e.length-1):null}static isBuffered(e,t){return!e||!e.length||y.isBufferNegligible_(e)||t>e.end(e.length-1)?!1:t>=e.start(0)}static bufferedAheadOf(e,t){if(!e||!e.length||y.isBufferNegligible_(e))return 0;let i=0;for(let{start:r,end:s}of y.getBufferedInfo(e))s>t&&(i+=s-Math.max(r,t));return i}static bufferedBehindOf(e,t){if(!e||!e.length||y.isBufferNegligible_(e))return 0;let i=0;for(let{start:r,end:s}of y.getBufferedInfo(e))r<t&&(i+=Math.min(s,t)-r);return i}static getGapIndex(e,t,i){if(!e||!e.length||y.isBufferNegligible_(e))return null;let r=y.getBufferedInfo(e).findIndex((s,n,a)=>s.start>t&&(n==0||a[n-1].end-t<=i));return r>=0?r:null}static getBufferedInfo(e){if(!e)return[];let t=[];for(let i=0;i<e.length;i++)t.push({start:e.start(i),end:e.end(i)});return t}static computeAddedRange(e,t){if(!e||!e.length)return null;if(!t||!t.length)return y.getBufferedInfo(t).pop();let i=y.getBufferedInfo(t).reverse(),r=y.getBufferedInfo(e).reverse();for(let s of i){let n=!1;for(let a of r)if(a.end>=s.start&&a.end<=s.end&&(n=!0,s.end>a.end))return{start:a.end,end:s.end};if(!n)return s}return null}};/*! @license
|
|
254
|
+
* Shaka Player
|
|
255
|
+
* Copyright 2016 Google LLC
|
|
256
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
257
|
+
*/var kr=class kr{static getMetadataFrames(e,t){let i=kr.parsersByMime_.get(t)||[],r=[];for(let a of i)r.push(...a().parse(e));let s=new Set,n=[];for(let a of r)s.has(a.key)||(s.add(a.key),n.push(a));return n}static supports(e){let t=kr.parsersByMime_.get(e);return t!=null&&t.length>0}static registerParserByMime(e,t){let i=kr.parsersByMime_;i.has(e)||i.set(e,[]),i.get(e).push(t)}static unregisterParserByMime(e){kr.parsersByMime_.delete(e)}};l(kr,"parsersByMime_",new Map);var kt=kr;/*! @license
|
|
258
|
+
* Shaka Player
|
|
259
|
+
* Copyright 2016 Google LLC
|
|
260
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
261
|
+
*/var ke=class ke{static isHeader_(e,t){return t+10<=e.length&&e[t]===73&&e[t+1]===68&&e[t+2]===51&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static isFooter_(e,t){return t+10<=e.length&&e[t]===51&&e[t+1]===68&&e[t+2]===73&&e[t+3]<255&&e[t+4]<255&&e[t+6]<128&&e[t+7]<128&&e[t+8]<128&&e[t+9]<128}static readSize_(e,t){let i=0;return i=(e[t]&127)<<21,i|=(e[t+1]&127)<<14,i|=(e[t+2]&127)<<7,i|=e[t+3]&127,i}static readSizeBE_(e,t){let i=0;return i=e[t]<<24,i|=e[t+1]<<16,i|=e[t+2]<<8,i|=e[t+3],i>>>0}static decodeString_(e,t){switch(t){case ke.LATIN1_encoding:return Array.from(e).map(i=>String.fromCharCode(i)).join("");case ke.UTF16BOM_encoding:return q.fromBytesAutoDetect(e);case ke.UTF16BE_encoding:return q.fromUTF16(e,!1);case ke.UTF8_encoding:return q.fromUTF8(e);default:return""}}static nullTermSize_(e){return e===ke.UTF16BOM_encoding||e===ke.UTF16BE_encoding?2:1}static findNull_(e,t,i=0){if(t===ke.UTF16BOM_encoding||t===ke.UTF16BE_encoding){for(let r=i;r+1<e.length;r+=2)if(e[r]===0&&e[r+1]===0)return r;return-1}return e.indexOf(0,i)}static getFrameData_(e,t){let i=String.fromCharCode(e[0],e[1],e[2],e[3]),r=t>=4?ke.readSize_(e,4):ke.readSizeBE_(e,4),s=10;return{type:i,size:r,data:e.subarray(s,s+r)}}static decodeFrame_(e){let t={key:e.type,description:"",data:"",mimeType:null,pictureType:null};if(e.type==="APIC"){if(e.size<2)return null;let i=e.data[0],r=e.data.subarray(1).indexOf(0);if(r===-1)return null;let s=q.fromUTF8(D.toUint8(e.data,1,r)),n=e.data[2+r],a=3+r,o=ke.findNull_(e.data,i,a);if(o===-1)return null;let c=ke.decodeString_(e.data.subarray(a,o),i),d=ke.nullTermSize_(i),u=o+d,m;return s==="-->"?m=q.fromUTF8(e.data.subarray(u)):m=D.toArrayBuffer(e.data.subarray(u)),t.mimeType=s,t.pictureType=n,t.description=c,t.data=m,t}else if(e.type==="COMM"){if(e.size<5)return null;let i=e.data[0],r=q.fromUTF8(e.data.subarray(1,4)).replace(/\0/g,""),s=4,n=ke.findNull_(e.data,i,s);if(n===-1)return null;let a=ke.decodeString_(e.data.subarray(s,n),i),o=ke.nullTermSize_(i),c=ke.decodeString_(e.data.subarray(n+o),i).replace(/\0*$/,"");return t.description=a||r,t.data=c,t}else if(e.type==="TXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=ke.decodeString_(e.data.subarray(r+n),i).replace(/^\ufeff/,"").replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="WXXX"){if(e.size<2)return null;let i=e.data[0],r=ke.findNull_(e.data,i,1);if(r===-1)return null;let s=ke.decodeString_(e.data.subarray(1,r),i),n=ke.nullTermSize_(i),a=q.fromUTF8(e.data.subarray(r+n)).replace(/\0*$/,"");return t.description=s,t.data=a,t}else if(e.type==="PRIV"){if(e.size<2)return null;let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));if(t.description=r,r=="com.apple.streaming.transportStreamTimestamp"){let s=e.data.subarray(r.length+1),n=s[3]&1,a=(s[4]<<23)+(s[5]<<15)+(s[6]<<7)+s[7];a/=45,n&&(a+=4772185884e-2),t.data=a}else{let s=D.toArrayBuffer(e.data.subarray(r.length+1));t.data=s}return t}else if(e.type==="UFID"){let i=e.data.indexOf(0);if(i===-1)return null;let r=q.fromUTF8(D.toUint8(e.data,0,i));return t.description=r,t.data=D.toArrayBuffer(e.data.subarray(i+1)),t}else if(e.type[0]==="T"){if(e.size<2)return null;let i=e.data[0],s=ke.decodeString_(e.data.subarray(1),i).replace(/\0+$/,"").split("\0").map(n=>n.replace(/^\ufeff/,"")).filter(n=>n.length>0).join(" / ");return t.data=s,t}else if(e.type[0]==="W"){let i=q.fromUTF8(e.data).replace(/\0*$/,"");return t.data=i,t}else if(e.data)return p.warning("Unrecognized ID3 frame type:",e.type),t.data=D.toArrayBuffer(e.data),t;return null}static getID3Frames(e){let t=0,i=[];for(;ke.isHeader_(e,t);){let r=e[t+3],s=ke.readSize_(e,t+6);e[t+5]>>6&1&&(t+=10),t+=10;let n=t+s;for(;t+10<n&&e[t]!==0;){let a=ke.getFrameData_(e.subarray(t),r),o=ke.decodeFrame_(a);o&&i.push(o),t+=a.size+10}ke.isFooter_(e,t)&&(t+=10)}return i}static getID3Data(e,t=0){let i=t,r=0;for(;ke.isHeader_(e,t);){e[t+5]>>6&1&&(r+=10),r+=10;let s=ke.readSize_(e,t+6);r+=s,ke.isFooter_(e,t+10)&&(r+=10),t+=r}return r>0?e.subarray(i,i+r):new Uint8Array([])}parse(e){return ke.getID3Frames(e)}};l(ke,"LATIN1_encoding",0),l(ke,"UTF16BOM_encoding",1),l(ke,"UTF16BE_encoding",2),l(ke,"UTF8_encoding",3);var It=ke;for(let y of N.RAW_FORMATS)kt.registerParserByMime(y,()=>new It);/*! @license
|
|
262
|
+
* Shaka Player
|
|
263
|
+
* Copyright 2016 Google LLC
|
|
264
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
265
|
+
*/var rt=class rt{constructor(e,t=""){l(this,"innerTransmuxer_");l(this,"workerUrl_");l(this,"workerFailed_");l(this,"nextReqId_");l(this,"pendingRequests_");l(this,"id_");l(this,"workerReady_");l(this,"attachedToWorker_");this.innerTransmuxer_=e,this.workerUrl_=t,this.workerFailed_=!1,this.nextReqId_=0,this.pendingRequests_=new Map,this.id_=rt.nextId_++,this.workerReady_=!1,this.attachedToWorker_=!1}destroy(){for(let e of this.pendingRequests_.values())e.timer.stop(),e.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,"Worker transmuxer destroyed"));this.pendingRequests_.clear(),this.attachedToWorker_&&(rt.sharedWorker_&&rt.sharedWorker_.postMessage({cmd:"destroy",id:this.id_}),rt.activeInstances_.delete(this.id_),this.attachedToWorker_=!1,rt.activeInstances_.size===0&&rt.sharedWorker_&&(rt.sharedWorker_.terminate(),rt.sharedWorker_=null)),this.innerTransmuxer_.destroy()}isSupported(e,t){return this.innerTransmuxer_.isSupported(e,t)}convertCodecs(e,t){return this.innerTransmuxer_.convertCodecs(e,t)}getOriginalMimeType(){return this.innerTransmuxer_.getOriginalMimeType()}async transmux(e,t,i,r,s){if(this.workerFailed_)return this.innerTransmuxer_.transmux(e,t,i,r,s);if(!this.attachedToWorker_){if(!rt.getOrCreateWorker_(this.workerUrl_))return this.workerFailed_=!0,this.innerTransmuxer_.transmux(e,t,i,r,s);rt.activeInstances_.set(this.id_,this),this.attachedToWorker_=!0}let n=rt.sharedWorker_;if(!n)return this.workerFailed_=!0,this.innerTransmuxer_.transmux(e,t,i,r,s);if(!this.workerReady_){let E=this.innerTransmuxer_.getOriginalMimeType();n.postMessage({cmd:"init",id:this.id_,mimeType:E}),this.workerReady_=!0}let a=this.nextReqId_++,o={id:t.id,codecs:t.codecs,channelsCount:t.channelsCount,audioSamplingRate:t.audioSamplingRate,height:t.height,width:t.width,language:t.language},c=i?{discontinuitySequence:i.discontinuitySequence,startTime:i.startTime,endTime:i.endTime,uris:i.getUris()}:null,d=D.toArrayBuffer(ne.concat(e)),{promise:u,resolve:m,reject:f}=Promise.withResolvers(),g=!1,_=new ae(()=>{this.pendingRequests_.has(a)&&(this.pendingRequests_.delete(a),this.workerFailed_=!0,g=!0,m(null))});_.tickAfter(rt.TIMEOUT_MS_/1e3),this.pendingRequests_.set(a,{resolve:m,reject:f,timer:_});try{n.postMessage({cmd:"transmux",id:this.id_,reqId:a,data:d,streamProps:o,refProps:c,duration:r,contentType:s},[d])}catch(E){return _.stop(),this.pendingRequests_.delete(a),p.warning("Failed to post message to worker, falling back to main thread",E),rt.terminateWorker_("Worker postMessage failed"),this.innerTransmuxer_.transmux(e,t,i,r,s)}let T=await u;if(g||T===null)return p.alwaysWarn("Worker transmux unavailable; falling back to main-thread transmuxing"),this.innerTransmuxer_.transmux(e,t,i,r,s);let S=T.streamMutations;if(S&&Object.keys(S).length>0)for(let E of Object.keys(S))t[E]=S[E];let b=T.output;return b.type==="raw"?D.toUint8(b.data):{data:D.toUint8(b.data),init:b.init?D.toUint8(b.init):null}}onWorkerMessage_(e){let t=e.cmd;if(t==="transmuxed"||t==="error"){let i=e.reqId,r=this.pendingRequests_.get(i);if(!r)return;if(r.timer.stop(),this.pendingRequests_.delete(i),t==="error"){let s=e.error;r.reject(new h(s.severity,s.category,s.code,...s.data))}else r.resolve(e)}}};l(rt,"nextId_",0),l(rt,"TIMEOUT_MS_",3e4),l(rt,"sharedWorker_",null),l(rt,"activeInstances_",new Map),l(rt,"getOrCreateWorker_",e=>{if(rt.sharedWorker_)return rt.sharedWorker_;if(!j.getDevice().supportsWorkerTransmux())return p.info("Device does not support worker transmuxing; falling back to main-thread transmuxing"),null;if(!e)return p.warning("Transmuxer worker URL is not configured (mediaSource.transmuxWorkerUrl); falling back to main-thread transmuxing"),null;try{let i=new Worker(e);return i.addEventListener("message",r=>{let s=r.data,n=s.cmd;if(n==="transmuxed"||n==="error"){let a=rt.activeInstances_.get(s.id);a&&a.onWorkerMessage_(s)}}),i.addEventListener("error",r=>{p.warning("Transmuxer worker error:",r),rt.terminateWorker_("Worker error")}),rt.sharedWorker_=i,i}catch(i){return p.warning("Failed to create transmuxer worker, falling back to main thread",i),null}}),l(rt,"terminateWorker_",e=>{p.warning("Transmuxer worker terminated, falling back to main thread:",e);for(let t of rt.activeInstances_.values()){t.workerFailed_=!0;for(let i of t.pendingRequests_.values())i.timer.stop(),i.resolve(null);t.pendingRequests_.clear()}rt.sharedWorker_=null,rt.activeInstances_.clear()});var Is=rt;/*! @license
|
|
266
|
+
* Shaka Player
|
|
267
|
+
* Copyright 2016 Google LLC
|
|
268
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
269
|
+
*/var qt=class qt{static createHTMLElement(e){return document.createElement(e)}static createSVGElement(e){return document.createElementNS("http://www.w3.org/2000/svg",e)}static createButton(){let e=document.createElement("button");return e.setAttribute("type","button"),e}static createSourceElement(e,t=""){let i=document.createElement("source");return i.src=e,i.type=t,i}static clearSourceFromVideo(e){let t=!1,i=e.getElementsByTagName("source");for(let r=i.length-1;r>=0;--r)e.removeChild(i[r]),t=!0;return e.src&&(e.removeAttribute("src"),t=!0),t}static asHTMLElement(e){return e}static asHTMLCanvasElement(e){return e}static asHTMLMediaElement(e){return e}static asHTMLIFrameElement(e){return e}static getElementByClassName(e,t){let i=t.getElementsByClassName(e);return v.assert(i.length==1,"Should only be one element with class name "+e),qt.asHTMLElement(i[0])}static getElementByClassNameIfItExists(e,t){let i=t.getElementsByClassName(e);return i.length?(v.assert(i.length==1,"Should only be one element with class name "+e),qt.asHTMLElement(i[0])):null}static removeAllChildren(e){for(;e.firstChild;)e.removeChild(e.firstChild)}static anyMediaElement(){return qt.cachedMediaElement_||(qt.cacheExpirationTimer_||(qt.cacheExpirationTimer_=new ae(()=>{qt.cachedMediaElement_=null})),qt.cachedMediaElement_=document.getElementsByTagName("video")[0]||document.getElementsByTagName("audio")[0],qt.cachedMediaElement_||(qt.cachedMediaElement_=document.createElement("video")),qt.cacheExpirationTimer_.tickAfter(1)),qt.cachedMediaElement_}static async addFont(e,t){if(!("fonts"in document&&"FontFace"in window)||(await document.fonts.ready,!("entries"in document.fonts)))return;let i=s=>{let n=s.entries(),a=[],o=n.next();for(;o.done===!1;)a.push(o.value),o=n.next();return a};for(let s of i(document.fonts))if(s.family===e&&s.display==="swap")return;let r=new FontFace(e,`url(${t})`,{display:"swap"});document.fonts.add(r)}};l(qt,"cacheExpirationTimer_",null),l(qt,"cachedMediaElement_",null);var Ge=qt;/*! @license
|
|
270
|
+
* Shaka Player
|
|
271
|
+
* Copyright 2016 Google LLC
|
|
272
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
273
|
+
*/var jt=class{static isFloatEqual(e,t,i=Number.EPSILON){if(e===t)return!0;let r=Math.abs(e-t);return r<=i?!0:i!==Number.EPSILON?Math.abs(r-i)<=Number.EPSILON:!1}};/*! @license
|
|
274
|
+
* Shaka Player
|
|
275
|
+
* Copyright 2016 Google LLC
|
|
276
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
277
|
+
*/var Wr=class{static convertNtp(e){let t=Date.UTC(1900,0,1,0,0,0,0);return new Date(t+e).getTime()}};/**
|
|
278
|
+
* @license
|
|
279
|
+
* Copyright Brightcove, Inc.
|
|
280
|
+
*
|
|
281
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
282
|
+
* you may not use this file except in compliance with the License.
|
|
283
|
+
* You may obtain a copy of the License at
|
|
284
|
+
*
|
|
285
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
286
|
+
*
|
|
287
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
288
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
289
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
290
|
+
* See the License for the specific language governing permissions and
|
|
291
|
+
* limitations under the License.
|
|
292
|
+
*/var ii=class{constructor(e,t=!1){l(this,"data_");l(this,"workingBytesAvailable_");l(this,"workingWord_");l(this,"workingBitsAvailable_");this.data_=e,t&&(this.data_=ne.removeEmulationPreventionBytes(e)),this.workingBytesAvailable_=this.data_.byteLength,this.workingWord_=0,this.workingBitsAvailable_=0}loadWord_(){let e=this.data_.byteLength-this.workingBytesAvailable_,t=Math.min(4,this.workingBytesAvailable_);if(t===0)return;let i=0;for(let r=0;r<t;r++)i=i<<8|this.data_[e+r];this.workingWord_=i<<(4-t)*8,this.workingBitsAvailable_=t*8,this.workingBytesAvailable_-=t}skipBits(e){if(this.workingBitsAvailable_<=e){e-=this.workingBitsAvailable_;let t=Math.floor(e/8);e-=t*8,this.workingBitsAvailable_-=t,this.loadWord_()}this.workingWord_<<=e,this.workingBitsAvailable_-=e}readBits(e){let t=Math.min(this.workingBitsAvailable_,e),i=this.workingWord_>>>32-t;return this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0?this.workingWord_<<=t:this.workingBytesAvailable_>0&&this.loadWord_(),t=e-t,t>0?i<<t|this.readBits(t):i}skipLeadingZeros_(){let e=0;for(;this.workingBitsAvailable_===0;){if(this.workingBytesAvailable_===0)return e;this.loadWord_()}for(;;){let t=Math.clz32(this.workingWord_);if(t>this.workingBitsAvailable_&&(t=this.workingBitsAvailable_),e+=t,this.workingWord_<<=t,this.workingBitsAvailable_-=t,this.workingBitsAvailable_>0||this.workingBytesAvailable_===0)break;this.loadWord_()}return e}skipExpGolomb(){this.skipBits(1+this.skipLeadingZeros_())}readUnsignedExpGolomb(){let e=this.skipLeadingZeros_();return this.readBits(e+1)-1}readExpGolomb(){let e=this.readUnsignedExpGolomb();return 1&e?1+e>>>1:-1*(e>>>1)}readBoolean(){return this.readBits(1)===1}readUnsignedByte(){return this.readBits(8)}skipScalingList(e){let t=8,i=8;for(let r=0;r<e;r++){if(i!==0){let s=this.readExpGolomb();i=(t+s+256)%256}t=i===0?t:i}}readSliceType(){return this.readUnsignedByte(),this.readUnsignedExpGolomb(),this.readUnsignedExpGolomb()}};/*! @license
|
|
293
|
+
* Shaka Player
|
|
294
|
+
* Copyright 2016 Google LLC
|
|
295
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
296
|
+
*/var lt=class lt{constructor(){l(this,"pmtId_");l(this,"pmtParsed_");l(this,"videoPid_");l(this,"videoCodec_");l(this,"videoData_");l(this,"videoDataPesIndices_");l(this,"videoPes_");l(this,"audioPid_");l(this,"audioCodec_");l(this,"audioData_");l(this,"audioDataPesIndices_");l(this,"audioPes_");l(this,"id3Pid_");l(this,"id3Data_");l(this,"id3DataPesIndices_");l(this,"referencePts_");l(this,"opusMetadata_");l(this,"discontinuitySequence_");this.pmtId_=null,this.pmtParsed_=!1,this.videoPid_=null,this.videoCodec_=null,this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioPid_=null,this.audioCodec_=null,this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Pid_=null,this.id3Data_=[],this.id3DataPesIndices_=[],this.referencePts_=null,this.opusMetadata_=null,this.discontinuitySequence_=null}clearData(){this.videoData_=[],this.videoDataPesIndices_=[],this.videoPes_=[],this.audioData_=[],this.audioDataPesIndices_=[],this.audioPes_=[],this.id3Data_=[],this.id3DataPesIndices_=[]}setDiscontinuitySequence(e){this.discontinuitySequence_!=null&&this.discontinuitySequence_!=e&&(this.referencePts_=null),this.discontinuitySequence_=e}parse(e){let t=lt.PacketLength_;if(e.length<3*t)return this;let i=Math.max(0,lt.syncOffset(e)),r=e.length-(e.length+i)%t,s=!1;for(let n=i;n<r;n+=t)if(e[n]==71){let a=!!(e[n+1]&64),o=((e[n+1]&31)<<8)+e[n+2],c=(e[n+3]&48)>>4,d;if(c>1){if(d=n+5+e[n+4],d==n+t)continue}else d=n+4;switch(o){case 0:a&&(d+=e[d]+1),this.pmtId_=this.getPmtId_(e,d);break;case 17:case 8191:break;case this.pmtId_:{a&&(d+=e[d]+1);let u=this.parsePMT_(e,d);u.video!=-1&&(this.videoPid_=u.video,this.videoCodec_=u.videoCodec),u.audio!=-1&&(this.audioPid_=u.audio,this.audioCodec_=u.audioCodec),u.id3!=-1&&(this.id3Pid_=u.id3),s&&!this.pmtParsed_&&(p.debug("reparse from beginning"),s=!1,n=i-t),this.pmtParsed_=!0;break}case this.videoPid_:{let u=e.subarray(d,n+t);a?(this.videoDataPesIndices_.push(this.videoData_.length),this.videoData_.push(u)):this.videoDataPesIndices_.length&&this.videoData_.push(u);break}case this.audioPid_:{let u=e.subarray(d,n+t);a?(this.audioDataPesIndices_.push(this.audioData_.length),this.audioData_.push(u)):this.audioDataPesIndices_.length&&this.audioData_.push(u);break}case this.id3Pid_:{let u=e.subarray(d,n+t);a?(this.id3DataPesIndices_.push(this.id3Data_.length),this.id3Data_.push(u)):this.id3DataPesIndices_.length&&this.id3Data_.push(u);break}default:s=!0;break}}else p.warning("Found TS packet that do not start with 0x47");return this}getPmtId_(e,t){return(e[t+10]&31)<<8|e[t+11]}parsePMT_(e,t){let i={audio:-1,video:-1,id3:-1,audioCodec:"",videoCodec:""},r=(e[t+1]&15)<<8|e[t+2],s=t+3+r-4,n=(e[t+10]&15)<<8|e[t+11];for(t+=12+n;t<s;){let a=(e[t+1]&31)<<8|e[t+2],o=(e[t+3]&15)<<8|e[t+4];switch(e[t]){case 6:if(o>0){let c=t+5,d=o;for(;d>2;){let u=e[c],m=e[c+1]+2;switch(u){case 5:{let f=c+2,g=e[f]<<24|e[f+1]<<16|e[f+2]<<8|e[f+3];i.audio==-1&&g===1332770163?(i.audio=a,i.audioCodec="opus"):i.video==-1&&g===1096167473&&(i.video=a,i.videoCodec="av1");break}case 106:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 122:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;case 124:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 127:if(i.audioCodec=="opus"){let f=e[c+2],g=null;if(f===128&&(g=e[c+3]),g==null)break;let _=(g&15)===0?2:g&15;this.opusMetadata_={channelCount:_,channelConfigCode:g,sampleRate:48e3}}break}c+=m,d-=m}}break;case 207:break;case 15:i.audio==-1&&(i.audio=a,i.audioCodec="aac");break;case 17:i.audio==-1&&(i.audio=a,i.audioCodec="aac-loas");break;case 21:i.id3==-1&&(i.id3=a);break;case 219:break;case 27:i.video==-1&&(i.video=a,i.videoCodec="avc");break;case 3:case 4:i.audio==-1&&(i.audio=a,i.audioCodec="mp3");break;case 36:i.video==-1&&(i.video=a,i.videoCodec="hvc");break;case 129:i.audio==-1&&(i.audio=a,i.audioCodec="ac3");break;case 132:case 135:i.audio==-1&&(i.audio=a,i.audioCodec="ec3");break;default:break}t+=o+5}return i}concatPesPackets_(e,t,i){let r=this.getPesPacketRange_(e,t,i);return this.concatPesPacketRange_(e,r)}concatPesPacketRange_(e,t){return ne.concatRange(e,t.first,t.end)}getPesPacketRange_(e,t,i){let r=t[i],s=i+1<t.length?t[i+1]:e.length;return{first:r,end:s}}parsePESHeader_(e,t){if(e.byteLength<lt.MIN_PES_HEADER_LENGTH_||(e[0]<<16|e[1]<<8|e[2])!==1)return null;let r=e[4]<<8|e[5];if(r&&r>t-6)return null;let s=null,n=null,a=e[7];if(e.byteLength<this.getRequiredPesHeaderLength_(e))return null;if(a&192){let d=(e[9]&14)*536870912+(e[10]&255)*4194304+(e[11]&254)*16384+(e[12]&255)*128+(e[13]&254)/2,u=null;a&64&&(u=(e[14]&14)*536870912+(e[15]&255)*4194304+(e[16]&254)*16384+(e[17]&255)*128+(e[18]&254)/2,d=this.handleRollover_(d,u)),this.referencePts_==null&&(this.referencePts_=d),s=this.handleRollover_(d,this.referencePts_),this.referencePts_=s,n=s,u!=null&&(n=this.handleRollover_(u,s))}let c=e[8]+9;return t<=c?null:{packetLength:r,payloadStartOffset:c,pts:s,dts:n}}parsePES_(e){let t=this.parsePESHeader_(e,e.byteLength);return t?{data:e.subarray(t.payloadStartOffset),packetLength:t.packetLength,pts:t.pts,dts:t.dts,nalus:[]}:null}parseNalus(e,t){let i=lt.Timescale,r=e.pts?e.pts/i:null,s=e.data,n=s.byteLength,a=1;this.videoCodec_=="hvc"&&(a=2);let o=t.state||0,c=o,d=0,u=[],m=-1,f=0,g=this.videoCodec_==="hvc",_=S=>g?s[S]>>1&63:s[S]&31,T=()=>u.length?u[u.length-1]:t.nalu;for(o==-1&&(m=0,f=_(0),o=0,d=1);d<n;){let S=s[d++];if(!o){o=S?0:1;continue}if(o===1){o=S?0:2;continue}if(!S)o=3;else if(S==1){let b=d-o-1;if(m>=0){let E={data:s.subarray(m+a,b),fullData:s.subarray(m,b),type:f,time:r,state:null};u.push(E)}else{let E=T();if(E&&(c&&d<=4-c&&E.state&&(E.data=E.data.subarray(0,E.data.byteLength-c),E.fullData=E.fullData.subarray(0,E.fullData.byteLength-c)),b>0)){let C=s.subarray(0,b);E.data=ne.concat(E.data,C),E.fullData=ne.concat(E.fullData,C),E.state=0}}d<n?(f=_(d),m=d,o=0):o=-1}else o=0}if(m>=0&&o>=0){let S={data:s.subarray(m+a,n),fullData:s.subarray(m,n),type:f,time:r,state:o};u.push(S)}if(!u.length&&t.nalu){let S=T();S&&(S.data=ne.concat(S.data,s),S.fullData=ne.concat(S.fullData,s))}return t.state=o,u}getMetadata(){let e=lt.Timescale,t=[];for(let i=0;i<this.id3DataPesIndices_.length;i++){let r=this.concatPesPackets_(this.id3Data_,this.id3DataPesIndices_,i),s=this.parsePES_(r);s&&t.push({cueTime:s.pts?s.pts/e:null,data:s.data,frames:It.getID3Frames(s.data),dts:s.dts,pts:s.pts})}return t}getAudioData(){if(this.audioDataPesIndices_.length&&!this.audioPes_.length)for(let e=0;e<this.audioDataPesIndices_.length;e++){let t=this.concatPesPackets_(this.audioData_,this.audioDataPesIndices_,e),i=this.parsePES_(t),r=this.audioPes_.length?this.audioPes_[this.audioPes_.length-1]:null;if(i&&i.pts!=null&&i.dts!=null&&(!r||r.pts!=i.pts&&r.dts!=i.dts))this.audioPes_.push(i);else if(this.audioPes_.length){let s=i?i.data:t;if(!s)continue;r=this.audioPes_[this.audioPes_.length-1],r.data=ne.concat(r.data,s)}}return this.audioPes_}getVideoData(e=!0){if(this.videoDataPesIndices_.length&&!this.videoPes_.length){for(let t=0;t<this.videoDataPesIndices_.length;t++){let i=this.concatPesPackets_(this.videoData_,this.videoDataPesIndices_,t),r=this.parsePES_(i),s=this.videoPes_.length?this.videoPes_[this.videoPes_.length-1]:null;if(r&&r.pts!=null&&r.dts!=null&&(!s||s.pts!=r.pts&&s.dts!=r.dts))this.videoPes_.push(r);else if(this.videoPes_.length){let n=r?r.data:i;if(!n)continue;s=this.videoPes_[this.videoPes_.length-1],s.data=ne.concat(s.data,n)}}if(e){let t={nalu:null,state:null},i=[];for(let r of this.videoPes_)r.nalus=this.parseNalus(r,t),r.nalus.length&&(i.push(r),t.nalu=r.nalus[r.nalus.length-1]);this.videoPes_=i}}if(!e){let t=this.videoPes_;return this.videoPes_=[],t}return this.videoPes_}getStartTimeFromPesHeaders(e){let t,i;if(e=="audio")t=this.audioData_,i=this.audioDataPesIndices_;else if(e=="video")t=this.videoData_,i=this.videoDataPesIndices_;else return null;for(let r=0;r<i.length;r++){let s=this.getPesPacketRange_(t,i,r),n=t[s.first];if(!n)continue;let a=0;for(let m=s.first;m<s.end;m++)a+=t[m].byteLength;let c=n.byteLength>=lt.MIN_PES_HEADER_LENGTH_&&n.byteLength>=this.getRequiredPesHeaderLength_(n)?n:this.concatPesPacketRange_(t,s),d=this.parsePESHeader_(c,a);if(!d)continue;let u=this.getStartTimeFromPes_(d);if(u!=null)return u}return null}getRequiredPesHeaderLength_(e){let t=e[7];return t&64?lt.PES_HEADER_WITH_DTS_LENGTH_:t&192?lt.PES_HEADER_WITH_PTS_LENGTH_:lt.MIN_PES_HEADER_LENGTH_}getStartTimeFromPes_(e){return e.pts==null||e.dts==null?null:Math.min(e.dts,e.pts)/lt.Timescale}getStartTime(e){let t;if(e=="audio")t=this.getAudioData();else if(e=="video")t=this.getVideoData(!1);else return null;return t.length?this.getStartTimeFromPes_(t[0]):null}getCodecs(){return{audio:this.audioCodec_,video:this.videoCodec_}}getVideoNalus(){let e=[];for(let t of this.getVideoData())e.push(...t.nalus);return e}getVideoInfo(){return this.videoCodec_=="hvc"?this.getHvcInfo_():this.getAvcInfo_()}getFrameRate_(){let e=lt.Timescale,t=this.getVideoData();if(t.length>1){let i=t[0].pts;v.assert(typeof i=="number","Should be an number!");let r=t[1].pts;if(v.assert(typeof r=="number","Should be an number!"),!isNaN(r-i))return Math.abs(1/(r-i)*e)}return null}getAvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(T=>T.type==lt.H264_NALU_TYPE_SPS_);if(!i)return e;let r=new ii(i.data),s=r.readUnsignedByte(),n=r.readUnsignedByte(),a=r.readUnsignedByte();if(r.skipExpGolomb(),lt.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let T=r.readUnsignedExpGolomb();if(T===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let S=T!==3?8:12;for(let b=0;b<S;b++)r.readBoolean()&&(b<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let o=r.readUnsignedExpGolomb();if(o===0)r.readUnsignedExpGolomb();else if(o===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let T=r.readUnsignedExpGolomb();for(let S=0;S<T;S++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let c=r.readUnsignedExpGolomb(),d=r.readUnsignedExpGolomb(),u=r.readBits(1);u===0&&r.skipBits(1),r.skipBits(1);let m=0,f=0,g=0,_=0;return r.readBoolean()&&(m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb(),g=r.readUnsignedExpGolomb(),_=r.readUnsignedExpGolomb()),e.height=String((2-u)*(d+1)*16-g*2-_*2),e.width=String((c+1)*16-m*2-f*2),e.codec="avc1."+this.byteToHex_(s)+this.byteToHex_(n)+this.byteToHex_(a),e.frameRate=this.getFrameRate_(),e}getHvcInfo_(){let e={height:null,width:null,codec:null,frameRate:null},t=this.getVideoNalus();if(!t.length)return e;let i=t.find(ce=>ce.type==lt.H265_NALU_TYPE_SPS_);if(!i)return e;let r=new ii(i.fullData,!0);r.readUnsignedByte(),r.readUnsignedByte(),r.readBits(4);let s=r.readBits(3);r.readBoolean();let n=r.readBits(2),a=r.readBits(1),o=r.readBits(5),c=r.readBits(32),d=r.readUnsignedByte(),u=r.readUnsignedByte(),m=r.readUnsignedByte(),f=r.readUnsignedByte(),g=r.readUnsignedByte(),_=r.readUnsignedByte(),T=r.readUnsignedByte(),S=[],b=[];for(let ce=0;ce<s;ce++)S.push(r.readBoolean()),b.push(r.readBoolean());if(s>0)for(let ce=s;ce<8;ce++)r.readBits(2);for(let ce=0;ce<s;ce++)S[ce]&&r.readBits(88),b[ce]&&r.readUnsignedByte();r.readUnsignedExpGolomb();let E=r.readUnsignedExpGolomb();E==3&&r.readBits(1);let C=r.readUnsignedExpGolomb(),A=r.readUnsignedExpGolomb(),w=0,M=0,x=0,k=0;r.readBoolean()&&(w+=r.readUnsignedExpGolomb(),M+=r.readUnsignedExpGolomb(),x+=r.readUnsignedExpGolomb(),k+=r.readUnsignedExpGolomb());let V=E===1||E===2?2:1,ee=E===1?2:1;e.width=String(C-(w+M)*V),e.height=String(A-(x+k)*ee);let oe=ce=>{let W=0;for(let z=0;z<32;z++)W|=(ce>>z&1)<<31-z;return W>>>0},le=["","A","B","C"][n],H=oe(c),J=a==1?"H":"L",Z="hvc1";return Z+="."+le+o,Z+="."+H.toString(16).toUpperCase(),Z+="."+J+T,_&&(Z+="."+_.toString(16).toUpperCase()),g&&(Z+="."+g.toString(16).toUpperCase()),f&&(Z+="."+f.toString(16).toUpperCase()),m&&(Z+="."+m.toString(16).toUpperCase()),u&&(Z+="."+u.toString(16).toUpperCase()),d&&(Z+="."+d.toString(16).toUpperCase()),e.codec=Z,e.frameRate=this.getFrameRate_(),e}getOpusMetadata(){return this.opusMetadata_}byteToHex_(e){return("0"+e.toString(16).toUpperCase()).slice(-2)}handleRollover_(e,t){let s=1;for(e>t&&(s=-1);Math.abs(t-e)>4294967296;)e+=s*8589934592;return e}static probe(e){let t=lt.syncOffset(e);return t<0?!1:(t>0&&p.warning("MPEG2-TS detected but first sync word found @ offset "+t+", junk ahead ?"),!0)}static syncOffset(e){let t=lt.PacketLength_,i=Math.min(1e3,e.length-3*t),r=0;for(;r<i;){if(e[r]==71&&e[r+t]==71&&e[r+2*t]==71)return r;{let s=e.indexOf(71,r+1);r=s>=0&&s<i?s:r+1}}return-1}};l(lt,"Timescale",9e4),l(lt,"PacketLength_",188),l(lt,"MIN_PES_HEADER_LENGTH_",9),l(lt,"PES_HEADER_WITH_PTS_LENGTH_",14),l(lt,"PES_HEADER_WITH_DTS_LENGTH_",19),l(lt,"H264_NALU_TYPE_SPS_",7),l(lt,"H265_NALU_TYPE_SPS_",33),l(lt,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var pt=lt;/*! @license
|
|
297
|
+
* Shaka Player
|
|
298
|
+
* Copyright 2016 Google LLC
|
|
299
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
300
|
+
*/var ri=class ri{constructor(e,t,i,r,s){l(this,"video_");l(this,"playerInterface_");l(this,"config_");l(this,"textDisplayer_");l(this,"sourceBuffers_");l(this,"sourceBufferTypes_");l(this,"expectedEncryption_");l(this,"textEngine_");l(this,"segmentRelativeVttTiming_");l(this,"lcevcDec_");l(this,"queues_");l(this,"eventManager_");l(this,"transmuxers_");l(this,"captionParser_");l(this,"mediaSourceOpen_");l(this,"url_");l(this,"playbackHasBegun_");l(this,"streamingAllowed_");l(this,"usingRemotePlayback_");l(this,"source_");l(this,"secondarySource_");l(this,"mediaSource_");l(this,"reloadingMediaSource_");l(this,"playAfterReset_");l(this,"destroyer_");l(this,"sequenceMode_");l(this,"manifestType_");l(this,"ignoreManifestTimestampsInSegmentsMode_");l(this,"attemptTimestampOffsetCalculation_");l(this,"needSplitMuxedContent_");l(this,"lastDuration_");l(this,"tsParsers_");l(this,"firstVideoTimestamp_");l(this,"firstVideoReferenceStartTime_");l(this,"firstAudioTimestamp_");l(this,"firstAudioReferenceStartTime_");l(this,"audioCompensation_");l(this,"usesLiveSeekableRange_");l(this,"clearKeyDecryptors_");this.video_=e,this.playerInterface_=i,this.config_=r,this.textDisplayer_=t,this.sourceBuffers_=new Map,this.sourceBufferTypes_=new Map,this.expectedEncryption_=new Map,this.textEngine_=null,this.segmentRelativeVttTiming_=!1,this.lcevcDec_=s||null,this.queues_=new Map,this.eventManager_=new ue,this.transmuxers_=new Map,this.captionParser_=null,this.mediaSourceOpen_=Promise.withResolvers(),this.url_="",this.playbackHasBegun_=!1,this.streamingAllowed_=!0,this.usingRemotePlayback_=!1,this.source_=null,this.secondarySource_=null,this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),this.reloadingMediaSource_=!1,this.playAfterReset_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.sequenceMode_=!1,this.manifestType_=me.UNKNOWN,this.ignoreManifestTimestampsInSegmentsMode_=!1,this.attemptTimestampOffsetCalculation_=!1,this.needSplitMuxedContent_=!1,this.lastDuration_=null,this.tsParsers_=new Map,this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();let a=j.getDevice().getRemote(this.video_);a&&(this.usingRemotePlayback_=a.state!="disconnected",this.eventManager_.listenMulti(a,["connect","connecting","disconnect"],()=>{this.usingRemotePlayback_=a.state!="disconnected"})),this.usesLiveSeekableRange_=!1,this.clearKeyDecryptors_=new Map}createMediaSource(e){this.streamingAllowed_=!0;let t;return window.ManagedMediaSource?(this.secondarySource_||(this.video_.disableRemotePlayback=!0),t=new ManagedMediaSource,this.eventManager_.listen(t,"startstreaming",()=>{p.info("MMS startstreaming"),this.streamingAllowed_=!0}),this.eventManager_.listen(t,"endstreaming",()=>{p.info("MMS endstreaming"),this.streamingAllowed_=!1})):t=new MediaSource,this.eventManager_.listenOnce(t,"sourceopen",()=>this.onSourceOpen_(e)),this.eventManager_.listenOnce(this.video_,"playing",()=>{this.playbackHasBegun_=!0}),this.url_=ri.createObjectURL(t),this.removeSources_(),this.config_.useSourceElements?(this.source_=Ge.createSourceElement(this.url_),this.video_.appendChild(this.source_),this.secondarySource_&&this.video_.appendChild(this.secondarySource_),this.video_.load()):this.video_.src=this.url_,t}addSecondarySource(e,t){var i;if(!this.video_||!window.ManagedMediaSource||!this.mediaSource_){p.warning("Secondary source is used only with ManagedMediaSource");return}this.config_.useSourceElements&&(((i=this.secondarySource_)==null?void 0:i.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_),this.secondarySource_=Ge.createSourceElement(e,t),this.video_.appendChild(this.secondarySource_),this.video_.disableRemotePlayback=!1)}onSourceOpen_(e){v.assert(this.url_,"Must have object URL"),URL.revokeObjectURL(this.url_),e.resolve()}static probeSupport(){let e=['video/mp4; codecs="avc1.42E01E"','video/mp4; codecs="avc3.42E01E"','video/mp4; codecs="hev1.1.6.L93.90"','video/mp4; codecs="hvc1.1.6.L93.90"','video/mp4; codecs="hev1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.4.L153.B0"; eotf="smpte2084"','video/mp4; codecs="hvc1.2.20000000.L153.B0"','video/mp4; codecs="hvc1.2.4.L120.b0"','video/mp4; codecs="hvc1.2.4.L123.b0"','video/mp4; codecs="vp9"','video/mp4; codecs="vp09.00.10.08"','video/mp4; codecs="av01.0.01M.08"','video/mp4; codecs="av01.0.31M.10.0.111.09.16.09.0"','video/mp4; codecs="av01.0.31M.10.0.112.09.18.09.0"','video/mp4; codecs="dvh1.05.01"','video/mp4; codecs="dvh1.08.01"','video/mp4; codecs="dav1.10.01"','video/mp4; codecs="dvh1.20.01"','audio/mp4; codecs="mp4a.40.2"','audio/mp4; codecs="ac-3"','audio/mp4; codecs="ec-3"','audio/mp4; codecs="ac-4.02.01.03"','audio/mp4; codecs="opus"','audio/mp4; codecs="flac"','audio/mp4; codecs="dtsc"','audio/mp4; codecs="dtse"','audio/mp4; codecs="dtsx"','audio/mp4; codecs="apac.31.00"','video/webm; codecs="vp8"','video/webm; codecs="vp9"','video/webm; codecs="vp09.00.10.08"','audio/webm; codecs="vorbis"','audio/webm; codecs="opus"','video/mp2t; codecs="avc1.42E01E"','video/mp2t; codecs="avc3.42E01E"','video/mp2t; codecs="hvc1.1.6.L93.90"','video/mp2t; codecs="mp4a.40.2"','video/mp2t; codecs="ac-3"','video/mp2t; codecs="ec-3"',"text/vtt",'application/mp4; codecs="wvtt"',"application/ttml+xml",'application/mp4; codecs="stpp"',...N.RAW_FORMATS],t={},i=j.getDevice();for(let r of e){if(Ue.isTypeSupported(r))t[r]=!0;else if(i.supportsMediaSource()){let n=N.getBasicType(r),a=N.getCorrectAudioCodecs(N.getCodecs(r),n),o=N.getFullType(n,a);t[r]=Ke.isTypeSupported(o)||Oe.isSupported(o)}else t[r]=i.supportsMediaType(r);let s=r.split(";")[0];t[s]=t[s]||t[r]}return t}destroy(){return this.destroyer_.destroy()}async doDestroy_(){let e=[];for(let[t,i]of this.queues_){let r=i[0],s=t;this.queues_.set(s,i.slice(0,1)),r&&e.push(r.p.promise.catch(()=>{}));for(let n of i.slice(1))n.p.reject(ci.destroyedError())}this.textEngine_&&e.push(this.textEngine_.destroy()),await Promise.all(e),e=[];for(let t of this.transmuxers_.values())t.destroy();for(let t of this.clearKeyDecryptors_.values())e.push(t.destroy());if(this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.video_&&(this.removeSources_(),this.video_.load(),this.video_.disableRemotePlayback=!1),this.video_=null,this.source_=null,this.secondarySource_=null,this.config_=null,this.mediaSource_=null,this.textEngine_=null,this.textDisplayer_=null,this.sourceBuffers_.clear(),this.expectedEncryption_.clear(),this.clearKeyDecryptors_.clear(),this.transmuxers_.clear(),this.captionParser_=null,Fe)for(let[t,i]of this.queues_)v.assert(i.length==0,t+" queue should be empty after destroy!");this.queues_.clear(),this.lcevcDec_=null,this.tsParsers_.clear(),this.playerInterface_=null,await Promise.all(e)}removeSources_(){var e,t;this.video_&&(this.video_.removeAttribute("src"),((e=this.source_)==null?void 0:e.parentElement)===this.video_&&this.video_.removeChild(this.source_),((t=this.secondarySource_)==null?void 0:t.parentElement)===this.video_&&this.video_.removeChild(this.secondarySource_))}open(){return this.mediaSourceOpen_.promise}async init(e,t=!1,i=me.UNKNOWN,r=!1){let s=R.ContentType;await this.mediaSourceOpen_.promise,(this.ended()||this.closed())&&(p.alwaysError("Expected MediaSource to be open during init(); reopening the media source."),this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise),this.sequenceMode_=t,this.manifestType_=i,this.ignoreManifestTimestampsInSegmentsMode_=r,this.attemptTimestampOffsetCalculation_=!this.sequenceMode_&&this.manifestType_==me.HLS&&!this.ignoreManifestTimestampsInSegmentsMode_,this.tsParsers_.clear(),this.firstVideoTimestamp_=null,this.firstVideoReferenceStartTime_=null,this.firstAudioTimestamp_=null,this.firstAudioReferenceStartTime_=null,this.audioCompensation_=Promise.withResolvers();for(let a of e.keys()){let o=e.get(a);this.initSourceBuffer_(a,o,o.codecs),this.needSplitMuxedContent_?(this.queues_.set(s.AUDIO,[]),this.queues_.set(s.VIDEO,[])):this.queues_.set(a,[])}let n=e.get(s.AUDIO);n&&n.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0)}initSourceBuffer_(e,t,i){var n;let r=R.ContentType;e==r.AUDIO&&i&&(i=N.getCorrectAudioCodecs(i,t.mimeType)),e==r.VIDEO&&i&&t.mimeType=="video/mp4"&&(i=N.getCorrectVideoCodecs(i));let s=N.getFullType(t.mimeType,i);if(e==r.TEXT)this.reinitText(s,t.external);else{let a=this.config_.forceTransmux;(!Ke.isTypeSupported(s)||!this.sequenceMode_&&N.RAW_FORMATS.includes(s))&&(a=!0);let o=N.getFullTypeWithAllCodecs(t.mimeType,i);if(a){let m=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),f=R.guessCodecsSafe(r.VIDEO,(i||"").split(","));if(m&&f){this.needSplitMuxedContent_=!0,this.initSourceBuffer_(r.AUDIO,t,m),this.initSourceBuffer_(r.VIDEO,t,f);return}let g=Oe.findTransmuxer(o);if(g){let _=new Is(g(),this.config_.transmuxWorkerUrl);this.transmuxers_.set(e,_),s=_.convertCodecs(e,o)}}let c=this.addExtraFeaturesToMimeType_(s);this.destroyer_.ensureNotDestroyed();let d;try{d=this.mediaSource_.addSourceBuffer(c)}catch(m){throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,m,"The mediaSource_ status was "+this.mediaSource_.readyState+" expected 'open'",null)}this.sequenceMode_&&(d.mode=ri.SourceBufferMode_.SEQUENCE),this.eventManager_.listen(d,"error",()=>this.onError_(e)),this.eventManager_.listen(d,"updateend",()=>this.onUpdateEnd_(e)),this.sourceBuffers_.set(e,d),this.sourceBufferTypes_.set(e,s),this.expectedEncryption_.set(e,!!t.drmInfos.length);let u=this.playerInterface_.getDrmInfo();if(Es.shouldUse(u)){let m=new Es;this.clearKeyDecryptors_.set(e,m)}else(n=this.clearKeyDecryptors_.get(e))==null||n.destroy(),this.clearKeyDecryptors_.delete(e)}}configure(e){this.config_=e,this.textEngine_&&this.textEngine_.setModifyCueCallback(e.modifyCueCallback)}isStreamingAllowed(){return this.streamingAllowed_&&!this.usingRemotePlayback_&&!this.reloadingMediaSource_}isReloadingMediaSource(){return this.reloadingMediaSource_}reinitText(e,t){this.textEngine_||(this.textEngine_=new Ue(this.textDisplayer_,this.manifestType_),this.textEngine_&&this.textEngine_.setModifyCueCallback(this.config_.modifyCueCallback)),this.textEngine_.initParser(e,t,this.segmentRelativeVttTiming_)}ended(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="ended":!0}closed(){return this.reloadingMediaSource_?!1:this.mediaSource_?this.mediaSource_.readyState=="closed":!0}bufferStart(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferStart():Je.bufferStart(this.getBuffered_(e))}bufferEnd(e){if(!this.sourceBuffers_.size)return null;let t=R.ContentType;return e==t.TEXT?this.textEngine_.bufferEnd():Je.bufferEnd(this.getBuffered_(e))}isBuffered(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.isBuffered(t);{let r=this.getBuffered_(e);return Je.isBuffered(r,t)}}bufferedAheadOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedAheadOf(t);{let r=this.getBuffered_(e);return Je.bufferedAheadOf(r,t)}}bufferedBehindOf(e,t){let i=R.ContentType;if(e==i.TEXT)return this.textEngine_.bufferedBehindOf(t);{let r=this.getBuffered_(e);return Je.bufferedBehindOf(r,t)}}getBufferedInfo(){let e=R.ContentType,t={total:this.reloadingMediaSource_?[]:Je.getBufferedInfo(this.video_.buffered),audio:Je.getBufferedInfo(this.getBuffered_(e.AUDIO)),video:Je.getBufferedInfo(this.getBuffered_(e.VIDEO)),text:[]};if(this.textEngine_){let i=this.textEngine_.bufferStart(),r=this.textEngine_.bufferEnd();i!=null&&r!=null&&t.text.push({start:i,end:r})}return t}getBuffered_(e){if(!this.canPerformOperations_())return null;try{return this.sourceBuffers_.get(e).buffered}catch(t){return this.sourceBuffers_.has(e)&&p.error("failed to get buffered range for "+e,t),null}}getCaptionParser(e){return new Rt(e)}getTimestampAndDispatchMetadata(e,t,i,r,s,n=!1){let a=null,o=[],c=D.toUint8(t);if(N.RAW_FORMATS.includes(s)){let d=It.getID3Frames(c);if(d.length&&i){let u=d.find(f=>f.description==="com.apple.streaming.transportStreamTimestamp");u&&typeof u.data=="number"&&(a=Math.round(u.data)/1e3);let m={cueTime:i.startTime,data:c,frames:d,dts:i.startTime,pts:i.startTime};this.playerInterface_.onMetadata([m],0,i.endTime)}}else if(s.includes("/mp4")&&i&&i.initSegmentReference){let d=new F,u=r.emsgSchemeIdUris!=null&&r.emsgSchemeIdUris.length>0||this.config_.dispatchAllEmsgBoxes,m=[];u&&d.fullBox("emsg",S=>{let b=this.parseEMSG_(i,r.emsgSchemeIdUris,S);b&&m.push(b)});let f=i.initSegmentReference.timescale,g=f&&!isNaN(f),_=0,T=!1;g&&d.fullBox("prft",S=>{v.assert(typeof f=="number","Timescale should be a number!"),this.parsePrft_(f,S)}).boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",S=>{T||(v.assert(S.version==0||S.version==1,"TFDT version can only be 0 or 1"),v.assert(typeof f=="number","Timescale should be a number!"),_=pe.parseTFDTInaccurate(S.reader,S.version).baseMediaDecodeTime/f,T=!0,u||S.parser.stop())}),(u||g)&&d.parse(t,!1,n),T&&i.timestampOffset==0&&(a=_);for(let S of m)this.dispatchEmsg_(S,i,a)}else if(!s.includes("/mp4")&&!s.includes("/webm")&&pt.probe(c)){let d=this.tsParsers_.getOrInsertComputed(e,()=>new pt);d.clearData(),d.setDiscontinuitySequence(i.discontinuitySequence),d.parse(c);let u=d.getStartTimeFromPesHeaders(e);u!=null&&(a=u),o=d.getMetadata()}return{timestamp:a,metadata:o}}parseEMSG_(e,t,i){let r,s,n,a,o,c,d;i.version===0?(a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString(),r=i.reader.readUint32(),c=i.reader.readUint32(),n=i.reader.readUint32(),s=i.reader.readUint32(),o=e.startTime+c/r):(r=i.reader.readUint32(),o=i.reader.readUint64()/r+e.timestampOffset,c=o-e.startTime,n=i.reader.readUint32(),s=i.reader.readUint32(),a=i.reader.readTerminatedString(),d=i.reader.readTerminatedString());let u=i.reader.readBytes(i.reader.getLength()-i.reader.getPosition(),!0);if(t&&t.includes(a)||this.config_.dispatchAllEmsgBoxes)if(a=="urn:mpeg:dash:event:2012")this.playerInterface_.onManifestUpdate();else{let m=o;return(a!=="https://aomedia.org/emsg/ID3"||n!==4294967295)&&(m+=n/r),{startTime:o,endTime:m,schemeIdUri:a,value:d,timescale:r,presentationTimeDelta:c,eventDuration:n,id:s,messageData:u}}return null}dispatchEmsg_(e,t,i){let r=jt.isFloatEqual(e.startTime,t.startTime+e.presentationTimeDelta/e.timescale);if(i&&this.manifestType_==me.HLS&&!r){let s=-i+t.startTime;e.startTime=e.startTime+s,e.endTime=e.endTime+s}if(this.playerInterface_.onEmsg(e),e.messageData&&(e.schemeIdUri=="https://aomedia.org/emsg/ID3"||e.schemeIdUri=="https://developer.apple.com/streaming/emsg-id3")){let s=It.getID3Frames(e.messageData);if(s.length){let n=e.startTime,a={cueTime:n,data:e.messageData,frames:s,dts:n,pts:n};this.playerInterface_.onMetadata([a],0,e.endTime)}}}parsePrft_(e,t){v.assert(t.version==0||t.version==1,"PRFT version can only be 0 or 1");let i=pe.parsePRFTInaccurate(t.reader,t.version),r=Wr.convertNtp(i.ntpTimestamp),s=new Date(r-i.mediaTime/e*1e3),n={wallClockTime:r,programStartDate:s},a=U.EventName.Prft,o=new Map().set("detail",n),c=new U(a,o);this.playerInterface_.onEvent(c)}dispatchBufferAppending_(e,t,i=!1){let r=U.EventName.BufferAppending,s=new Map().set("data",t).set("contentType",e).set("isInitData",i),n=new U(r,s);this.playerInterface_.onEvent(n)}async appendBuffer(e,t,i,r,s,n=!1,a=!1,o=!1,c=!1,d){let u=R.ContentType;if(e==u.TEXT)return await this.textEngine_.appendBuffer(t,i?i.startTime:null,i?i.endTime:null,i?i.getUris()[0]:null,i?i.discontinuitySequence:-1),{mediaTimestamp:null};if(!c&&this.needSplitMuxedContent_){let T=await this.appendBuffer(u.AUDIO,t,i,r,s,n,a,o,!0),S=await this.appendBuffer(u.VIDEO,t,i,r,s,n,a,o,!0);return S.mediaTimestamp!=null?S:T}if(!this.sourceBuffers_.has(e))return p.warning("Attempted to restore a non-existent source buffer"),{mediaTimestamp:null};let m=this.sourceBuffers_.get(e).timestampOffset,f=null;this.ended()&&this.enqueueOperation_(e,()=>this.reopenMediaSource_(e),null);let g=this.sourceBufferTypes_.get(e);if(this.transmuxers_.has(e)&&(g=this.transmuxers_.get(e).getOriginalMimeType()),i){let{timestamp:T,metadata:S}=this.getTimestampAndDispatchMetadata(e,t,i,r,g,o);if(T!=null){if(f=T,this.firstVideoTimestamp_==null&&e==u.VIDEO&&(this.firstVideoTimestamp_=T,this.firstVideoReferenceStartTime_=i.startTime,this.firstAudioTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}if(this.firstAudioTimestamp_==null&&e==u.AUDIO&&(this.firstAudioTimestamp_=T,this.firstAudioReferenceStartTime_=i.startTime,this.firstVideoTimestamp_!=null)){let M=0;this.firstVideoReferenceStartTime_==this.firstAudioReferenceStartTime_&&(M=this.firstVideoTimestamp_-this.firstAudioTimestamp_),this.audioCompensation_.resolve(M)}let b=T,E=N.RAW_FORMATS;!this.sequenceMode_&&E.includes(this.sourceBufferTypes_.get(e))&&(b=0);let C=i.startTime-b;(Math.abs(m-C)>=.001||n||a)&&(!o||C>0||!m)&&(m=C,this.attemptTimestampOffsetCalculation_&&(this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,m),null))),(e==u.VIDEO||!this.sourceBuffers_.has(u.VIDEO))&&this.textEngine_&&(this.textEngine_.setTimestampOffset(m,i.discontinuitySequence),this.textEngine_.setContainerIsMpegTs((g||"").includes("mp2t")))}S.length&&this.playerInterface_.onMetadata(S,m,i?i.endTime:null)}if(s&&e==u.VIDEO){if(this.textEngine_||this.reinitText(N.CEA608_CLOSED_CAPTION_MIMETYPE,!1),!this.captionParser_){let T=g.split(";",1)[0];this.captionParser_=this.getCaptionParser(T)}if(!i)this.captionParser_.init(t,a,d);else{let T=this.captionParser_.parseFrom(t);T.length&&this.textEngine_.storeAndAppendClosedCaptions(T,m)}}if(this.transmuxers_.has(e)){let T=await this.transmuxers_.get(e).transmux(t,r,i,this.mediaSource_.duration,e);if(ArrayBuffer.isView(T))t=T;else{let S=T;if(S.init!=null){let b=S.init;this.enqueueOperation_(e,()=>{this.append_(e,b,m,r,!0)},i?i.getUris()[0]:null)}t=S.data}}if(t=this.workAroundBrokenPlatforms_(r,t,i,e),this.clearKeyDecryptors_.has(e)){let T=N.getContainerType(this.sourceBufferTypes_.get(e))=="mp4",S=this.playerInterface_.getDrmInfo();if(T&&S){let b=i===null;t=await this.clearKeyDecryptors_.get(e).decrypt(t,b,S)}}if(i&&this.sequenceMode_&&e!=u.TEXT&&(n||a)){let T=i.startTime;if(this.manifestType_==me.HLS&&!this.needSplitMuxedContent_&&e==u.AUDIO&&this.sourceBuffers_.has(u.VIDEO)){let S=await this.audioCompensation_.promise;Math.abs(S)>.15&&(T-=S)}this.enqueueOperation_(e,()=>this.abort_(e),null),this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,T),null)}let _=null;if(await this.enqueueOperation_(e,()=>{Fe&&i&&!i.isPreload()&&!o&&(_=this.getBuffered_(e)),this.append_(e,t,m,r,!i)},i?i.getUris()[0]:null),Fe&&i&&!i.isPreload()&&!o&&this.manifestType_!==me.MSF){let T=this.getBuffered_(e),S=Je.computeAddedRange(_,T);if(S){let b=i.endTime-i.startTime,E=S.end-S.start,C=Math.abs(S.end-i.endTime);b>.1&&(C>b/2||Math.abs(b-E)>.03)&&p.error("Possible encoding problem detected!","Unexpected buffered range for reference",i,"from URIs",i.getUris(),"should be",{start:i.startTime,end:i.endTime},"but got",S)}}return{mediaTimestamp:f}}setSelectedClosedCaptionId(e){let t=R.ContentType.VIDEO,i=this.bufferEnd(t)||0;this.textEngine_.setSelectedClosedCaptionId(e,i)}clearSelectedClosedCaptionId(){this.textEngine_&&this.textEngine_.setSelectedClosedCaptionId("",0)}async remove(e,t,i,r){let s=R.ContentType;if(e==s.VIDEO&&this.captionParser_){this.captionParser_.remove(r);let n=this.textEngine_.bufferStart()||0;this.textEngine_.remove(n,i,!0)}e==s.TEXT?await this.textEngine_.remove(t,i):i>t&&(await this.enqueueOperation_(e,()=>this.remove_(e,t,i),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(s.AUDIO,()=>this.remove_(s.AUDIO,t,i),null))}async clear(e){let t=R.ContentType;if(e==t.TEXT){if(!this.textEngine_)return;await this.textEngine_.remove(0,1/0)}else e===t.VIDEO&&this.captionParser_&&this.textEngine_&&await this.textEngine_.remove(0,1/0,!0),await this.enqueueOperation_(e,()=>this.remove_(e,0,this.mediaSource_.duration),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.remove_(t.AUDIO,0,this.mediaSource_.duration),null)}resetCaptionParser(){this.captionParser_&&this.captionParser_.reset()}async flush(e){let t=R.ContentType;e!=t.TEXT&&(await this.enqueueOperation_(e,()=>this.flush_(e),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(t.AUDIO,()=>this.flush_(t.AUDIO),null))}async setStreamProperties(e,t,i,r,s,n,a,o){let c=R.ContentType;if(e==c.TEXT){s||this.textEngine_.setTimestampOffset(t),this.textEngine_.setAppendWindow(i,r);return}let d=[];await this.codecSwitchIfNecessary_(e,n,a,o)||(d.push(this.enqueueOperation_(e,()=>this.abort_(e),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.abort_(c.AUDIO),null))),s||(d.push(this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setTimestampOffset_(c.AUDIO,t),null))),(i!=0||r!=1/0)&&(d.push(this.enqueueOperation_(e,()=>this.setAppendWindow_(e,i,r),null)),this.needSplitMuxedContent_&&d.push(this.enqueueOperation_(c.AUDIO,()=>this.setAppendWindow_(c.AUDIO,i,r),null))),d.length&&await Promise.all(d)}async resync(e,t){let i=R.ContentType;if(e==i.TEXT||!this.sequenceMode_)return;let r=this.bufferEnd(e);r&&Math.abs(r-t)<.15||(this.enqueueOperation_(e,()=>this.abort_(e),null),this.needSplitMuxedContent_&&this.enqueueOperation_(i.AUDIO,()=>this.abort_(i.AUDIO),null),await this.enqueueOperation_(e,()=>this.setTimestampOffset_(e,t),null),this.needSplitMuxedContent_&&await this.enqueueOperation_(i.AUDIO,()=>this.setTimestampOffset_(i.AUDIO,t),null))}async endOfStream(e){await this.enqueueBlockingOperation_(()=>{this.ended()||this.closed()||(e?this.mediaSource_.endOfStream(e):this.mediaSource_.endOfStream())})}async setDuration(e){await this.enqueueBlockingOperation_(()=>{if(this.config_.durationReductionEmitsUpdateEnd&&e<this.mediaSource_.duration)for(let t of this.sourceBuffers_.keys()){let i={start:()=>{},p:Promise.withResolvers(),uri:null};this.queues_.get(t).unshift(i)}this.mediaSource_.duration=e,this.lastDuration_=e})}getDuration(){return this.mediaSource_.duration}async setLiveSeekableRange(e,t){!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||(v.assert("setLiveSeekableRange"in this.mediaSource_,"Using setLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!0,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.setLiveSeekableRange(e,t)}))}async clearLiveSeekableRange(){!this.canPerformOperations_()||!this.usesLiveSeekableRange_||this.mediaSource_.duration!==1/0||(v.assert("clearLiveSeekableRange"in this.mediaSource_,"Using clearLiveSeekableRange on not supported platform"),this.usesLiveSeekableRange_=!1,await this.enqueueBlockingOperation_(()=>{!this.canPerformOperations_()||this.mediaSource_.duration!==1/0||this.mediaSource_.clearLiveSeekableRange()}))}appendDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.appendBuffer(e,t,i)}removeDependency(e,t,i){this.lcevcDec_&&this.lcevcDec_.removeBuffer(e,t,i)}append_(e,t,i,r,s=!1){this.appendDependency(t,i,r),this.dispatchBufferAppending_(e,t,s),this.sourceBuffers_.get(e).appendBuffer(t)}remove_(e,t,i){if(i<=t){this.onUpdateEnd_(e);return}this.removeDependency(e,t,i),this.sourceBuffers_.get(e).remove(t,i)}abort_(e){let t=this.sourceBuffers_.get(e),i=t.appendWindowStart,r=t.appendWindowEnd;t.abort(),t.appendWindowStart=i,t.appendWindowEnd=r,this.onUpdateEnd_(e)}reopenMediaSource_(e){let t=this.sourceBuffers_.get(e);if(!this.ended()){this.onUpdateEnd_(e);return}let i=t.buffered,r=i.length?i.end(i.length-1):0;t.remove(r,r+.001)}flush_(e){v.assert(this.video_.buffered.length==0,"MediaSourceEngine.flush_ should only be used after clearing all data!"),this.video_.currentTime-=.001,this.onUpdateEnd_(e)}setTimestampOffset_(e,t){t<0&&(t+=.001),this.sourceBuffers_.get(e).timestampOffset=t,this.onUpdateEnd_(e)}setAppendWindow_(e,t,i){let r=this.sourceBuffers_.get(e);(r.appendWindowEnd!==i||r.appendWindowStart!==t)&&(r.appendWindowStart=0,r.appendWindowEnd=i,r.appendWindowStart=t),this.onUpdateEnd_(e)}onError_(e){let t=this.queues_.get(e)[0];v.assert(t,"Spurious error event!"),v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on error!");let i=this.video_.error?this.video_.error.code:0;t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_FAILED,i,t.uri))}onUpdateEnd_(e){if(this.reloadingMediaSource_||this.destroyer_.destroyed()){let i=this.queues_.get(e);if(i&&i.length){let r=i[0];r&&r.p&&r.p.resolve(),this.queues_.set(e,[])}return}let t=this.queues_.get(e)[0];v.assert(t,"Spurious updateend event!"),t&&(v.assert(!this.sourceBuffers_.get(e).updating,"SourceBuffer should not be updating on updateend!"),t.p.resolve(),this.popFromQueue_(e))}enqueueOperation_(e,t,i){this.destroyer_.ensureNotDestroyed();let r={start:t,p:Promise.withResolvers(),uri:i};return this.queues_.get(e).push(r),this.queues_.get(e).length==1&&this.startOperation_(e),r.p.promise}async enqueueBlockingOperation_(e){this.destroyer_.ensureNotDestroyed();let t=[],i=Array.from(this.sourceBuffers_.keys()),r=new Map;for(let s of i){let n=Promise.withResolvers(),a={start:()=>n.resolve(),p:n,uri:null},o=this.queues_.get(s);o.push(a),t.push(n.promise),r.set(s,a),o.length==1&&a.start()}try{await Promise.all(t)}catch(s){if(this.destroyer_.destroyed()){for(let n of i){let a=this.queues_.get(n);r.has(n)&&ye.remove(a,r.get(n))}return}throw s}if(Fe)for(let s of i)v.assert(this.sourceBuffers_.get(s).updating==!1,"SourceBuffers should not be updating after a blocking op!");try{await e()}catch(s){let n=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,s,n,null)}finally{for(let s of i)this.popFromQueue_(s)}}popFromQueue_(e){v.assert(this.queues_.has(e),"Queue should exist"),this.queues_.get(e).shift(),this.startOperation_(e)}startOperation_(e){let t=this.queues_.get(e)[0];if(t)try{t.start()}catch(i){if(i.name=="QuotaExceededError")t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.QUOTA_EXCEEDED_ERROR,e));else if(!this.isStreamingAllowed())t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.STREAMING_NOT_ALLOWED,e));else{let r=this.video_.error?h.getMediaElementErrorDetails(this.video_.error):"No error in the media element";t.p.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MEDIA_SOURCE_OPERATION_THREW,i,r,t.uri))}this.popFromQueue_(e)}}getTextDisplayer(){return v.assert(this.textDisplayer_,"TextDisplayer should only be null when this is destroyed"),this.textDisplayer_}setTextDisplayer(e){this.textDisplayer_=e,this.textEngine_&&this.textEngine_.setDisplayer(e)}setSegmentRelativeVttTiming(e){this.segmentRelativeVttTiming_=e}workAroundBrokenPlatforms_(e,t,i,r){let s=R.ContentType;if(!(N.getContainerType(this.sourceBufferTypes_.get(r))=="mp4"))return t;let a=i===null,o=this.expectedEncryption_.get(r),c=this.playerInterface_.getKeySystem(),d=!1;i&&i.initSegmentReference&&(d=i.initSegmentReference.encrypted);let u=i?i.getUris()[0]:null,m=j.getDevice();return this.config_.correctEc3Enca&&a&&r===s.AUDIO&&(t=Zi.correctEnca(t)),a&&m.requiresDvvcWorkaround(e)&&(t=Zi.freeDvvcBox(t)),this.config_.insertFakeEncryptionInInit&&o&&m.requiresEncryptionInfoInAllInitSegments(c,r)&&(a?(p.debug("Forcing fake encryption information in init segment."),t=Zi.fakeEncryption(e,t,u,c)):!d&&m.requiresTfhdFix(r)&&(p.debug("Forcing fake encryption information in media segment."),t=Zi.fakeMediaEncryption(t))),a&&m.requiresEC3InitSegments()&&(p.debug("Forcing fake EC-3 information in init segment."),t=Zi.fakeEC3(t)),!a&&e.isIframe&&this.config_.repairIFrames&&(t=Zi.fixBrokenIframes(t)),t}change_(e,t,i){let r=R.ContentType;if(e===r.TEXT){p.debug(`Change not supported for ${e}`);return}let s=this.sourceBufferTypes_.get(e);p.debug(`Change Type: ${s} -> ${t}`);let n=j.getDevice(),a=this.playerInterface_.getKeySystem();if(n.supportsSmoothCodecSwitching(a)){this.transmuxers_.has(e)&&(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)),i&&this.transmuxers_.set(e,i);let o=this.addExtraFeaturesToMimeType_(t);this.sourceBuffers_.get(e).changeType(o),this.sourceBufferTypes_.set(e,t)}else p.debug("Change Type not supported");this.onUpdateEnd_(e)}changeType(e,t,i){return this.enqueueOperation_(e,()=>this.change_(e,t,i),null)}async reset_(e){if(this.reloadingMediaSource_||this.usingRemotePlayback_)return;let t=R.ContentType;this.reloadingMediaSource_=!0,this.needSplitMuxedContent_=!1;let i=this.video_.currentTime,r=this.video_.autoplay;this.video_.paused||(this.playAfterReset_=!0),this.playbackHasBegun_&&(this.video_.autoplay=!1);try{this.eventManager_.removeAll();for(let m of this.transmuxers_.values())m.destroy();for(let m of this.clearKeyDecryptors_.values())m.destroy();for(let m of this.sourceBuffers_.values())try{this.mediaSource_.removeSourceBuffer(m)}catch(f){p.debug("Exception on removeSourceBuffer",f)}this.transmuxers_.clear(),this.sourceBuffers_.clear(),this.clearKeyDecryptors_.clear();let s=this.mediaSource_.duration;this.mediaSourceOpen_=Promise.withResolvers(),this.mediaSource_=this.createMediaSource(this.mediaSourceOpen_),await this.mediaSourceOpen_.promise,!isNaN(s)&&s?this.mediaSource_.duration=s:!isNaN(this.lastDuration_)&&this.lastDuration_&&(this.mediaSource_.duration=this.lastDuration_);let n=Promise.withResolvers(),a=this.mediaSource_.sourceBuffers,o=e.size,c=0,d=()=>{c++,c===o&&(n.resolve(),this.eventManager_.unlisten(a,"addsourcebuffer",d))};this.eventManager_.listen(a,"addsourcebuffer",d);for(let m of e.keys()){let f=e.get(m);this.initSourceBuffer_(m,f,f.codecs)}let u=e.get(t.AUDIO);u&&u.isAudioMuxedInVideo&&(this.needSplitMuxedContent_=!0),this.needSplitMuxedContent_&&!this.queues_.has(t.AUDIO)&&this.queues_.set(t.AUDIO,[]),await n.promise}finally{this.reloadingMediaSource_=!1,this.destroyer_.ensureNotDestroyed(),this.eventManager_.listenOnce(this.video_,Kt.LOADED_METADATA,()=>{this.destroyer_.destroyed()||(this.video_.currentTime=i)}),this.eventManager_.listenOnce(this.video_,Kt.CAN_PLAY_THROUGH,()=>{this.destroyer_.destroyed()||(this.video_.autoplay=r,this.playAfterReset_&&(this.playAfterReset_=!1,this.video_.play()))})}}reset(e){return this.enqueueBlockingOperation_(()=>this.reset_(e))}getRealInfo_(e,t,i){let r=R.ContentType,s,n=!1,a=R.guessCodecsSafe(r.AUDIO,(i||"").split(",")),o=R.guessCodecsSafe(r.VIDEO,(i||"").split(",")),c=o;e==r.AUDIO&&(c=a),c||(c=i);let d=N.getFullType(t,c),u=N.getBasicType(this.sourceBufferTypes_.get(e)),m=this.config_.forceTransmux;if(!Ke.isTypeSupported(d)||!this.sequenceMode_&&N.RAW_FORMATS.includes(d)?m=!0:!m&&t!=u&&(m=!j.getDevice().supportsContainerChangeType()&&N.RAW_FORMATS.includes(t)),m){let _=N.getFullTypeWithAllCodecs(t,c),T=Oe.findTransmuxer(_);T&&(s=new Is(T(),this.config_.transmuxWorkerUrl),a&&o&&(n=!0),d=s.convertCodecs(e,_))}!s&&e===r.VIDEO&&a&&(d=N.getFullType(t,i));let f=N.getNormalizedCodec(N.getCodecs(d)),g=N.getBasicType(d);return{transmuxer:s,transmuxerMuxed:n,basicType:g,codec:f,mimeType:d}}getInfoAboutResetOrChangeType_(e,t,i,r){let s=R.ContentType;if(e==s.TEXT)return{type:ri.ResetMode_.NONE,newMimeType:t,transmuxer:null};let n=N.getNormalizedCodec(N.getCodecs(this.sourceBufferTypes_.get(e))),a=N.getBasicType(this.sourceBufferTypes_.get(e)),o=this.getRealInfo_(e,t,i),c=o.transmuxer,d=o.transmuxerMuxed,u=o.basicType,m=o.codec,f=o.mimeType,g=!0;if(d&&this.sourceBufferTypes_.has(s.AUDIO)){let b=this.getRealInfo_(s.AUDIO,t,i),E=N.getNormalizedCodec(N.getCodecs(this.sourceBufferTypes_.get(s.AUDIO))),C=N.getBasicType(this.sourceBufferTypes_.get(s.AUDIO));g=E==b.codec&&C==b.basicType,b.transmuxer&&b.transmuxer.destroy()}if(n===m&&a===u&&g)return{type:ri.ResetMode_.NONE,newMimeType:f,transmuxer:c};let _=!0;(this.needSplitMuxedContent_&&!r.has(s.AUDIO)||d&&c&&!this.transmuxers_.has(e))&&(_=!1);let T=j.getDevice(),S=this.playerInterface_.getKeySystem();return _&&this.config_.codecSwitchingStrategy===Pr.SMOOTH&&T.supportsSmoothCodecSwitching(S)?{type:ri.ResetMode_.CHANGE_TYPE,newMimeType:f,transmuxer:c}:(c&&c.destroy(),{type:ri.ResetMode_.RESET,newMimeType:f,transmuxer:null})}async codecSwitchIfNecessary_(e,t,i,r){let s=R.ContentType,{type:n,transmuxer:a,newMimeType:o}=this.getInfoAboutResetOrChangeType_(e,t,i,r),c=r.get(s.AUDIO);return c&&(this.needSplitMuxedContent_=c.isAudioMuxedInVideo),n==ri.ResetMode_.NONE?(this.transmuxers_.has(e)&&!a?(this.transmuxers_.get(e).destroy(),this.transmuxers_.delete(e)):!this.transmuxers_.has(e)&&a?this.transmuxers_.set(e,a):a&&(this.transmuxers_.has(e)&&this.transmuxers_.get(e).transmux!==a.transmux?(this.transmuxers_.get(e).destroy(),this.transmuxers_.set(e,a)):a.destroy()),!1):(n==ri.ResetMode_.CHANGE_TYPE?await this.changeType(e,o,a):n==ri.ResetMode_.RESET&&(a&&a.destroy(),await this.reset(r)),!0)}isResetMediaSourceNecessary(e,t,i,r){let s=this.getInfoAboutResetOrChangeType_(e,t,i,r);return s.transmuxer&&s.transmuxer.destroy(),s.type==ri.ResetMode_.RESET}updateLcevcDec(e){this.lcevcDec_=e}addExtraFeaturesToMimeType_(e){let t=this.config_.addExtraFeaturesToSourceBuffer(e),i=e+t;return p.debug("Using full mime type",i),i}canPerformOperations_(){return!(!this.mediaSource_||this.destroyer_.destroyed()||this.video_.error||this.usingRemotePlayback_||this.reloadingMediaSource_||this.closed())}};l(ri,"SourceBufferMode_",{SEQUENCE:"sequence",SEGMENTS:"segments"}),l(ri,"ResetMode_",{NONE:"none",RESET:"reset",CHANGE_TYPE:"changeType"});var dr=ri;dr.createObjectURL=window.URL.createObjectURL;/*! @license
|
|
301
|
+
* Shaka Player
|
|
302
|
+
* Copyright 2016 Google LLC
|
|
303
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
304
|
+
*/var wi=class{constructor(e,t,i=!0,r=1){l(this,"presentationStartTime_");l(this,"presentationDelay_");l(this,"duration_");l(this,"segmentAvailabilityDuration_");l(this,"maxSegmentDuration_");l(this,"minSegmentStartTime_");l(this,"maxSegmentEndTime_");l(this,"clockOffset_");l(this,"static_");l(this,"isLive2VodTransition_");l(this,"userSeekStart_");l(this,"autoCorrectDrift_");l(this,"availabilityTimeOffset_");l(this,"startTimeLocked_");l(this,"initialProgramDateTime_");l(this,"programDateTimeRegions_");this.presentationStartTime_=e,this.presentationDelay_=t,this.duration_=1/0,this.segmentAvailabilityDuration_=1/0,this.maxSegmentDuration_=r,this.minSegmentStartTime_=null,this.maxSegmentEndTime_=null,this.clockOffset_=0,this.static_=!0,this.isLive2VodTransition_=!1,this.userSeekStart_=0,this.autoCorrectDrift_=i,this.availabilityTimeOffset_=0,this.startTimeLocked_=!1,this.initialProgramDateTime_=e,this.programDateTimeRegions_=[]}getDuration(){return this.duration_}getMaxSegmentDuration(){return this.maxSegmentDuration_}setPresentationStartTime(e){v.assert(e>=0,"presentationStartTime must be >= 0"),this.presentationStartTime_=e}setDuration(e){v.assert(e>0,"duration must be > 0"),this.duration_=e}getPresentationStartTime(){return this.presentationStartTime_}setClockOffset(e){this.clockOffset_=e}setStatic(e){e&&!this.static_&&(this.isLive2VodTransition_=!0),this.static_=e}setSegmentAvailabilityDuration(e){v.assert(e>=0,"segmentAvailabilityDuration must be >= 0"),this.segmentAvailabilityDuration_=e}getSegmentAvailabilityDuration(){return this.segmentAvailabilityDuration_}setDelay(e){v.assert(e>=0,"delay must be >= 0"),this.presentationDelay_=e}getDelay(){return this.presentationDelay_}notifyTimeRange(e,t){if(e.length==0)return;let i=(Date.now()+this.clockOffset_)/1e3,r=e.filter(a=>a.start+t<i);if(r.length==0)return;let s=r[0].start+t,n=r[r.length-1].end+t;this.notifyMinSegmentStartTime(s),this.maxSegmentDuration_=r.reduce((a,o)=>Math.max(a,o.end-o.start),this.maxSegmentDuration_),this.maxSegmentEndTime_=Math.max(this.maxSegmentEndTime_,n),this.presentationStartTime_!=null&&this.autoCorrectDrift_&&!this.startTimeLocked_&&(this.presentationStartTime_=i-this.maxSegmentEndTime_-this.maxSegmentDuration_),p.v1("notifySegments:","maxSegmentDuration="+this.maxSegmentDuration_)}notifySegments(e){if(e.length==0)return;let t=e[0].startTime,i=e[0].endTime,r=(Date.now()+this.clockOffset_)/1e3;for(let s of e)r<s.startTime||(t=Math.min(t,s.startTime),i=Math.max(i,s.endTime),this.maxSegmentDuration_=Math.max(this.maxSegmentDuration_,s.endTime-s.startTime));this.notifyMinSegmentStartTime(t),this.maxSegmentEndTime_=Math.max(this.maxSegmentEndTime_,i),this.presentationStartTime_!=null&&this.autoCorrectDrift_&&!this.startTimeLocked_&&(this.presentationStartTime_=r-this.maxSegmentEndTime_-this.maxSegmentDuration_),p.v1("notifySegments:","maxSegmentDuration="+this.maxSegmentDuration_)}notifyPeriodDuration(e,t){this.notifyMinSegmentStartTime(e),t!=1/0&&!this.isLive()&&(this.maxSegmentEndTime_=Math.max(this.maxSegmentEndTime_,t))}getMaxSegmentEndTime(){return this.maxSegmentEndTime_}lockStartTime(){this.startTimeLocked_=!0}isStartTimeLocked(){return this.startTimeLocked_}setInitialProgramDateTime(e){this.initialProgramDateTime_=e}getInitialProgramDateTime(){return this.initialProgramDateTime_}setProgramDateTimeRegions(e){this.programDateTimeRegions_=e}getProgramDateTimeRegionForTime(e){if(!this.programDateTimeRegions_.length)return null;let t=this.programDateTimeRegions_[0];for(let i of this.programDateTimeRegions_)if(i.start<=e)t=i;else break;return t}getProgramDateTimeForTime(e){let t=this.getProgramDateTimeRegionForTime(e);return t?t.pdt+(e-t.start):this.initialProgramDateTime_==null?null:this.initialProgramDateTime_+e}notifyMinSegmentStartTime(e){this.minSegmentStartTime_==null?this.minSegmentStartTime_=e:this.isLive2VodTransition_||(this.minSegmentStartTime_=Math.min(this.minSegmentStartTime_,e))}notifyMaxSegmentDuration(e){this.maxSegmentDuration_=Math.max(this.maxSegmentDuration_,e),p.v1("notifyNewSegmentDuration:","maxSegmentDuration="+this.maxSegmentDuration_)}offset(e){this.minSegmentStartTime_!=null&&(this.minSegmentStartTime_+=e),this.maxSegmentEndTime_!=null&&(this.maxSegmentEndTime_+=e)}isLive(){return this.duration_==1/0&&!this.static_}isInProgress(){return this.duration_!=1/0&&!this.static_}isDynamic(){return!this.static_}getSegmentAvailabilityStart(){v.assert(this.segmentAvailabilityDuration_>=0,"The availability duration should be positive");let t=this.getSegmentAvailabilityEnd()-this.segmentAvailabilityDuration_;return Math.max(this.userSeekStart_,t)}setUserSeekStart(e){this.userSeekStart_=e}getSegmentAvailabilityEnd(){return this.isDynamic()?Math.min(this.getLiveEdge_()+this.availabilityTimeOffset_,this.duration_):this.maxSegmentEndTime_?Math.min(this.maxSegmentEndTime_,this.duration_):this.duration_}getSafeSeekRangeStart(e){let t=Math.max(this.minSegmentStartTime_,this.userSeekStart_);if(this.segmentAvailabilityDuration_==1/0)return Math.ceil(t*1e3)/1e3;let r=this.getSegmentAvailabilityEnd()-this.segmentAvailabilityDuration_,s=Math.min(r+e,this.getSeekRangeEnd());return Math.max(t,s)}getSeekRangeStart(){return this.getSafeSeekRangeStart(0)}getSeekRangeEnd(){let t=this.isDynamic()?this.presentationDelay_:0;return Math.max(0,this.getSegmentAvailabilityEnd()-t)}usingPresentationStartTime(){return!(this.presentationStartTime_==null||this.maxSegmentEndTime_!=null&&this.autoCorrectDrift_)}getLiveEdge_(){v.assert(this.presentationStartTime_!=null,"Cannot compute timeline live edge without start time");let e=(Date.now()+this.clockOffset_)/1e3;return Math.max(0,e-this.maxSegmentDuration_-this.presentationStartTime_)}setAvailabilityTimeOffset(e){this.availabilityTimeOffset_=e}getAvailabilityTimeOffset(){return this.availabilityTimeOffset_}assertIsValid(){Fe&&(this.isLive()?v.assert(this.presentationStartTime_!=null,"Detected as live stream, but does not match our model of live!"):this.isInProgress()?v.assert(this.presentationStartTime_!=null&&this.segmentAvailabilityDuration_==1/0,"Detected as IPR stream, but does not match our model of IPR!"):v.assert(this.segmentAvailabilityDuration_==1/0&&this.duration_!=1/0&&this.static_,"Detected as VOD stream, but does not match our model of VOD!"))}};/*! @license
|
|
305
|
+
* Shaka Player
|
|
306
|
+
* Copyright 2016 Google LLC
|
|
307
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
308
|
+
*/var nn=class nn{constructor(e,t,i,r,s){l(this,"onEvent_");l(this,"getPlaybackRate_");l(this,"video_");l(this,"timeline_");l(this,"config_");l(this,"eventManager_");l(this,"started_");l(this,"seekingEventReceived_");l(this,"startTime_");l(this,"isJumpingGap_");l(this,"gapsJumped_");l(this,"stallsDetected_");l(this,"stallDetector_");l(this,"hadSegmentAppended_");l(this,"gapJumpTimer_");this.onEvent_=r,this.getPlaybackRate_=s||(()=>e.playbackRate),this.video_=e,this.timeline_=t,this.config_=i,this.eventManager_=new ue,this.started_=!1,this.seekingEventReceived_=!1,this.startTime_=0,this.isJumpingGap_=!1,this.gapsJumped_=0,this.stallsDetected_=0,this.stallDetector_=this.createStallDetector_(),this.hadSegmentAppended_=!1,this.eventManager_.listen(e,"waiting",()=>this.onPollGapJump_()),this.gapJumpTimer_=new ae(()=>{this.onPollGapJump_()}).tickEvery(this.config_.gapJumpTimerTime)}release(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.gapJumpTimer_!=null&&(this.gapJumpTimer_.stop(),this.gapJumpTimer_=null),this.stallDetector_&&(this.stallDetector_.release(),this.stallDetector_=null),this.onEvent_=null,this.timeline_=null,this.video_=null}onSegmentAppended(){this.hadSegmentAppended_=!0,this.gapJumpTimer_&&this.gapJumpTimer_.tickEvery(this.config_.gapJumpTimerTime),this.onPollGapJump_()}onStarted(e){this.video_.seeking&&!this.seekingEventReceived_&&(this.seekingEventReceived_=!0,this.startTime_=e),this.gapJumpTimer_&&this.gapJumpTimer_.tickEvery(this.config_.gapJumpTimerTime),this.onPollGapJump_()}onSeeking(){this.seekingEventReceived_=!0,this.hadSegmentAppended_=!1,this.gapJumpTimer_&&this.gapJumpTimer_.tickEvery(this.config_.gapJumpTimerTime),this.onPollGapJump_()}getGapsJumped(){return this.gapsJumped_}getStallsDetected(){return this.stallsDetected_}getIsJumpingGap(){return this.isJumpingGap_}onPollGapJump_(){if(this.video_.readyState==0)return;if(this.video_.seeking){if(!this.seekingEventReceived_)return}else this.seekingEventReceived_=!1;if(this.video_.paused&&(this.video_.currentTime!=this.startTime_||!this.video_.autoplay&&this.video_.currentTime==this.startTime_)||this.stallDetector_&&this.stallDetector_.poll())return;let e=this.video_.currentTime,t=this.video_.buffered,i=this.config_.gapDetectionThreshold;if(this.getPlaybackRate_()<0)return;let r=Je.getGapIndex(t,e,i);if(r==null&&this.stallDetector_&&!this.stallDetector_.poll()){let c=Je.getBufferedInfo(t);for(let d=0;d<c.length-1;d++)if(Math.abs(e-c[d].end)<.1&&c[d+1].start>c[d].end){r=d+1;break}}if(r==null||r==0&&!this.hadSegmentAppended_)return;let s=t.start(r),n=this.config_.gapPadding;n&&(s=Math.ceil((s+n)*100)/100);let a=this.timeline_.getSeekRangeEnd();if(s>=a)return;let o=s-e;o<nn.BROWSER_GAP_TOLERANCE||(r==0?p.info("Jumping forward",o,"seconds because of gap before start time of",s):p.info("Jumping forward",o,"seconds because of gap starting at",t.end(r-1),"and ending at",s),this.seek_(s),e==this.startTime_&&(this.startTime_=s),this.gapsJumped_++,this.onEvent_(new U(U.EventName.GapJumped)))}seek_(e){this.isJumpingGap_=!0,this.eventManager_.listenOnce(this.video_,"seeked",()=>{this.isJumpingGap_=!1}),this.video_.currentTime=e}createStallDetector_(){if(!this.config_.stallEnabled)return null;v.assert(this.video_,"Must have video");let e=this.config_.stallThreshold,t=this.config_.stallSkip,i=async(s,n,a)=>{if(v.assert(this.video_,"Must have video"),!!Je.getBufferedInfo(this.video_.buffered).length){if(p.debug(`Stall detected at ${s} for ${n} seconds (attempt ${a+1}).`),t)p.debug(`Seeking forward ${t} seconds to break stall.`),this.video_.currentTime+=t;else{if(p.debug("Wait for play to avoid reject a possible other play call."),await this.video_.play(),!this.video_)return;p.debug("Pausing and unpausing to break stall."),this.video_.pause(),this.video_.play()}a==0&&(this.stallsDetected_++,this.onEvent_(new U(U.EventName.StallDetected)))}};return new Ya(new $a(this.video_),e,i)}};l(nn,"BROWSER_GAP_TOLERANCE",.001);var Cs=nn,an=class an{constructor(e,t,i){l(this,"implementation_");l(this,"wasMakingProgress_");l(this,"value_");l(this,"lastUpdateSeconds_");l(this,"stallAttempts_");l(this,"lastAttemptSeconds_");l(this,"stallThresholdSeconds_");l(this,"onStall_");this.implementation_=e,this.wasMakingProgress_=e.shouldBeMakingProgress(),this.value_=e.getPresentationSeconds(),this.lastUpdateSeconds_=e.getWallSeconds(),this.stallAttempts_=0,this.lastAttemptSeconds_=0,this.stallThresholdSeconds_=t,this.onStall_=i}release(){this.implementation_&&this.implementation_.release(),this.implementation_=null,this.onStall_=null}poll(){let e=this.implementation_,t=e.shouldBeMakingProgress(),i=e.getPresentationSeconds(),r=e.getWallSeconds();(this.value_!=i||this.wasMakingProgress_!=t)&&(this.lastUpdateSeconds_=r,this.value_=i,this.wasMakingProgress_=t,this.stallAttempts_=0);let n=r-this.lastUpdateSeconds_,a=1+an.MAX_STALL_RETRIES,o=n>=this.stallThresholdSeconds_&&t&&this.stallAttempts_<a&&(this.stallAttempts_==0||r-this.lastAttemptSeconds_>=this.stallThresholdSeconds_);return o&&(this.onStall_&&this.onStall_(this.value_,n,this.stallAttempts_),this.stallAttempts_++,this.lastAttemptSeconds_=r,this.value_=e.getPresentationSeconds()),o}};l(an,"MAX_STALL_RETRIES",2);var Ya=an;var $a=class{constructor(e){l(this,"mediaElement_");l(this,"audioEventManager_");l(this,"audioFocusPaused_");this.mediaElement_=e,this.audioEventManager_=new ue,this.audioFocusPaused_=!1,this.audioEventManager_.listen(this.mediaElement_,"audiofocuspaused",()=>{p.info("Audio focus paused"),this.audioFocusPaused_=!0}),this.audioEventManager_.listen(this.mediaElement_,"audiofocusgranted",()=>{p.info("Audio focus granted"),this.audioFocusPaused_=!1}),this.audioEventManager_.listen(this.mediaElement_,"audiofocuslost",()=>{p.info("Audio focus lost"),this.audioFocusPaused_=!0})}shouldBeMakingProgress(){return this.mediaElement_.paused||this.mediaElement_.playbackRate==0||this.audioFocusPaused_||this.mediaElement_.buffered.length==0?!1:this.hasContentFor_(this.mediaElement_.buffered,this.mediaElement_.currentTime)}getPresentationSeconds(){return this.mediaElement_.currentTime}getWallSeconds(){return Date.now()/1e3}hasContentFor_(e,t){for(let{start:i,end:r}of Je.getBufferedInfo(e))if(!(t<i-.1)&&!(t>r-.5))return!0;return!1}release(){this.audioEventManager_&&this.audioEventManager_.release(),this.audioEventManager_=null}};/*! @license
|
|
309
|
+
* Shaka Player
|
|
310
|
+
* Copyright 2016 Google LLC
|
|
311
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
312
|
+
*/var ui=class y{static waitForReadyState(e,t,i,r){if(t==HTMLMediaElement.HAVE_NOTHING||e.readyState>=t)r();else{let s=y.READY_STATES_TO_EVENT_NAMES_.value().get(t);i.listenOnce(e,s,r)}}};ui.READY_STATES_TO_EVENT_NAMES_=new _e(()=>new Map([[HTMLMediaElement.HAVE_METADATA,"loadedmetadata"],[HTMLMediaElement.HAVE_CURRENT_DATA,"loadeddata"],[HTMLMediaElement.HAVE_FUTURE_DATA,"canplay"],[HTMLMediaElement.HAVE_ENOUGH_DATA,"canplaythrough"]]));/*! @license
|
|
313
|
+
* Shaka Player
|
|
314
|
+
* Copyright 2016 Google LLC
|
|
315
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
316
|
+
*/var on=class{constructor(e,t,i,r){l(this,"video_");l(this,"onSeek_");l(this,"onStarted_");l(this,"startTime_");l(this,"getStartTime_");l(this,"started_");l(this,"eventManager_");l(this,"mover_");this.video_=e,this.onSeek_=t,this.onStarted_=i,this.startTime_=null,this.getStartTime_=()=>(this.startTime_==null&&(this.startTime_=r()),this.startTime_),this.started_=!1,this.eventManager_=new ue,this.mover_=new Qa(e,10),ui.waitForReadyState(this.video_,HTMLMediaElement.HAVE_METADATA,this.eventManager_,()=>{this.setStartTime_(this.getStartTime_())})}release(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.mover_!=null&&(this.mover_.release(),this.mover_=null),this.onSeek_=()=>{},this.video_=null}getTime(){return this.started_?this.video_.currentTime:this.getStartTime_()}setTime(e){this.video_.readyState>0?this.mover_.moveTo(e):(this.startTime_=e,ui.waitForReadyState(this.video_,HTMLMediaElement.HAVE_METADATA,this.eventManager_,()=>{this.setStartTime_(this.getStartTime_())}))}setStartTime_(e){if(Math.abs(this.video_.currentTime-e)<.001){this.startListeningToSeeks_();return}this.eventManager_.listenOnce(this.video_,"seeking",()=>{this.startListeningToSeeks_()}),this.mover_.moveTo(e)}startListeningToSeeks_(){v.assert(this.video_.readyState>0,"The media element should be ready before we listen for seeking."),this.started_=!0,this.eventManager_.listen(this.video_,"seeking",()=>this.onSeek_()),this.onStarted_(this.video_.currentTime)}},Qa=class{constructor(e,t){l(this,"mediaElement_");l(this,"maxAttempts_");l(this,"remainingAttempts_");l(this,"originTime_");l(this,"targetTime_");l(this,"timer_");this.mediaElement_=e,this.maxAttempts_=t,this.remainingAttempts_=0,this.originTime_=0,this.targetTime_=0,this.timer_=new ae(()=>this.onTick_())}release(){this.timer_&&(this.timer_.stop(),this.timer_=null),this.mediaElement_=null}moveTo(e){this.originTime_=this.mediaElement_.currentTime,this.targetTime_=e,this.remainingAttempts_=this.maxAttempts_,this.mediaElement_.currentTime=e,this.timer_.tickEvery(.1)}onTick_(){if(this.remainingAttempts_<=0){p.warning(["Failed to move playhead from",this.originTime_,"to",this.targetTime_].join(" ")),this.timer_.stop();return}if(this.mediaElement_.currentTime!=this.originTime_||this.mediaElement_.currentTime===this.targetTime_){this.timer_.stop();return}this.mediaElement_.currentTime=this.targetTime_,this.remainingAttempts_--}};/*! @license
|
|
317
|
+
* Shaka Player
|
|
318
|
+
* Copyright 2016 Google LLC
|
|
319
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
320
|
+
*/var ln=class{constructor(e){l(this,"mediaElement_");l(this,"started_");l(this,"startTime_");l(this,"eventManager_");this.mediaElement_=e,this.started_=!1,this.startTime_=null,this.eventManager_=new ue}ready(){v.assert(this.mediaElement_!=null,"Playhead should not be released before calling ready()");let e=()=>{if(this.startTime_==null||this.startTime_==0&&this.mediaElement_.duration!=1/0)this.started_=!0;else{let t=this.mediaElement_.currentTime,i=null;if(typeof this.startTime_=="number")i=this.startTime_;else if(this.startTime_ instanceof Date){let r=this.getProgramStartTime_();r!==null&&(i=this.startTime_.getTime()/1e3-r,i=this.clampTime_(i))}if(i==null){this.started_=!0;return}i<0&&(i=Math.max(0,t+i)),t!=i?(this.eventManager_.listenOnce(this.mediaElement_,"seeking",()=>{this.started_=!0}),this.mediaElement_.currentTime=i):this.started_=!0}};ui.waitForReadyState(this.mediaElement_,HTMLMediaElement.HAVE_FUTURE_DATA,this.eventManager_,()=>{e()})}release(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.mediaElement_=null}setStartTime(e){this.startTime_=this.started_?this.startTime_:e}getTime(){let e=this.started_?this.mediaElement_.currentTime:this.startTime_;return e instanceof Date&&(e=e.getTime()/1e3-(this.getProgramStartTime_()||0),e=this.clampTime_(e)),e||0}getStallsDetected(){return 0}getGapsJumped(){return 0}getIsJumpingGap(){return!1}notifyOfBufferingChange(){}isBufferedToEnd(){v.assert(this.mediaElement_,"We need a video element to get buffering information");let e=Je.bufferEnd(this.mediaElement_.buffered);return e!=null&&e>=this.mediaElement_.duration-1}getProgramStartTime_(){if(this.mediaElement_.getStartDate){let t=this.mediaElement_.getStartDate().getTime();if(!isNaN(t))return t/1e3}return null}clampTime_(e){let t=this.mediaElement_.seekable;return t.length>0&&(e=Math.max(t.start(0),e),e=Math.min(t.end(t.length-1),e)),e}},cn=class{constructor(e,t,i,r,s,n,a){l(this,"minSeekRange_");l(this,"mediaElement_");l(this,"timeline_");l(this,"config_");l(this,"onSeek_");l(this,"lastCorrectiveSeek_");l(this,"gapController_");l(this,"videoWrapper_");l(this,"checkWindowTimer_");this.minSeekRange_=3,this.mediaElement_=e,this.timeline_=t.presentationTimeline,this.config_=i,this.onSeek_=s,this.lastCorrectiveSeek_=null,this.gapController_=new Cs(e,t.presentationTimeline,i,n,a),this.videoWrapper_=new on(e,()=>this.onSeeking_(),o=>this.onStarted_(o),()=>this.getStartTime_(r)),this.checkWindowTimer_=new ae(()=>{this.onPollWindow_()})}ready(){this.checkWindowTimer_.tickEvery(.25)}release(){this.videoWrapper_&&(this.videoWrapper_.release(),this.videoWrapper_=null),this.gapController_&&(this.gapController_.release(),this.gapController_=null),this.checkWindowTimer_&&(this.checkWindowTimer_.stop(),this.checkWindowTimer_=null),this.config_=null,this.timeline_=null,this.videoWrapper_=null,this.mediaElement_=null,this.onSeek_=()=>{}}setStartTime(e){this.videoWrapper_.setTime(this.getStartTime_(e))}getTime(){let e=this.videoWrapper_.getTime();return this.mediaElement_.readyState>0&&!this.mediaElement_.paused?this.clampTime_(e):e}getStallsDetected(){return this.gapController_.getStallsDetected()}getGapsJumped(){return this.gapController_.getGapsJumped()}getIsJumpingGap(){return this.gapController_.getIsJumpingGap()}getStartTime_(e){if(e==null)this.timeline_.isDynamic()?e=this.timeline_.getSeekRangeEnd():e=this.timeline_.getSeekRangeStart();else if(e instanceof Date){let t=this.timeline_.getInitialProgramDateTime()||this.timeline_.getPresentationStartTime();v.assert(t!=null,"Presentation start time should not be null!"),e=e.getTime()/1e3-t}else e<0&&(e=this.timeline_.getSeekRangeEnd()+e);return this.clampSeekToDuration_(this.clampTime_(e))}notifyOfBufferingChange(){this.gapController_.onSegmentAppended()}isBufferedToEnd(){if(v.assert(this.mediaElement_,"We need a video element to get buffering information"),v.assert(this.timeline_,"We need a timeline to get buffering information"),this.timeline_.isDynamic()){let e=this.timeline_.getSegmentAvailabilityEnd(),t=Je.bufferEnd(this.mediaElement_.buffered);if(t!=null&&t>=e)return!0}return!1}onPollWindow_(){if(this.mediaElement_.readyState==0||this.mediaElement_.paused)return;let e=this.videoWrapper_.getTime(),t=this.timeline_.getSeekRangeStart(),i=this.timeline_.getSeekRangeEnd();if(i-t<this.minSeekRange_&&(t=i-this.minSeekRange_),e<t){let r=this.reposition_(e);p.info("Jumping forward "+(r-e)+" seconds to catch up with the seek range."),this.mediaElement_.currentTime=r}}onStarted_(e){this.gapController_.onStarted(e)}onSeeking_(){this.gapController_.onSeeking();let e=this.videoWrapper_.getTime(),t=this.reposition_(e),i=Cs.BROWSER_GAP_TOLERANCE;if(!Ke.isInfiniteLiveStreamDurationSupported()&&Math.abs(t-e)>i){let s=!1,n=j.getDevice().seekDelay();if(n){let a=Date.now()/1e3;(!this.lastCorrectiveSeek_||this.lastCorrectiveSeek_<a-n)&&(this.lastCorrectiveSeek_=a,s=!0)}else s=!0;if(s){this.videoWrapper_.setTime(t);return}}p.v1("Seek to "+e),this.onSeek_()}clampSeekToDuration_(e){let t=this.timeline_.getDuration();return e>=t?(v.assert(this.config_.durationBackoff>=0,"Duration backoff must be non-negative!"),t-this.config_.durationBackoff):e}reposition_(e){v.assert(this.config_,"Cannot reposition playhead when it has been destroyed");let t=u=>Je.isBuffered(this.mediaElement_.buffered,u),i=this.config_.rebufferingGoal,r=this.config_.safeSeekOffset,s=this.timeline_.getSeekRangeStart(),n=this.timeline_.getSeekRangeEnd(),a=this.timeline_.getDuration();n-s<this.minSeekRange_&&(s=n-this.minSeekRange_);let o=this.timeline_.getSafeSeekRangeStart(i),c=this.timeline_.getSafeSeekRangeStart(r),d=this.timeline_.getSafeSeekRangeStart(i+r);return e>=a?(p.v1("Playhead past duration."),this.clampSeekToDuration_(e)):e>n?(p.v1("Playhead past end."),n-this.config_.safeSeekEndOffset):e<s?this.timeline_.isLive()&&this.config_.returnToEndOfLiveWindowWhenOutside?n-this.config_.safeSeekEndOffset:t(c)?(p.v1("Playhead before start & start is buffered"),c):(p.v1("Playhead before start & start is unbuffered"),d):e>=o||t(e)?(p.v1("Playhead in safe region or in buffered region."),e):(p.v1("Playhead outside safe region & in unbuffered region."),d)}clampTime_(e){let t=this.timeline_.getSeekRangeStart();if(e<t)return t;let i=this.timeline_.getSeekRangeEnd();return e>i?i:e}};/*! @license
|
|
321
|
+
* Shaka Player
|
|
322
|
+
* Copyright 2016 Google LLC
|
|
323
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
324
|
+
*/var Ze=class y{constructor(e){l(this,"references");l(this,"timer_");l(this,"numEvicted_");l(this,"immutable_");Fe&&y.assertCorrectReferences_(e),this.references=e,this.timer_=null,this.numEvicted_=0,this.immutable_=!1}getIsImmutable(){return this.immutable_}getNumReferences(){return this.references.length}getNumEvicted(){return this.numEvicted_}release(){this.immutable_||(this.references=[],this.timer_&&this.timer_.stop(),this.timer_=null)}markImmutable(){this.immutable_=!0}forEachTopLevelReference(e){for(let t of this.references)e(t)}earliestReference(){return this.references[0]||null}dropFirstReferences(e){this.references.splice(0,e)}find(e){let t=this.references.length-1;if(t<0)return null;if(e<this.references[0].startTime)return this.numEvicted_;let i=ye.binarySearch(this.references,n=>n.startTime<=e)-1;if(i<0)return null;let r=this.references[i],s=i<t?this.references[i+1].startTime:r.endTime;return e>=r.startTime&&e<s?i+this.numEvicted_:null}get(e){if(this.references.length==0)return null;let t=e-this.numEvicted_;return t<0||t>=this.references.length?null:this.references[t]}offset(e){if(!this.immutable_)for(let t of this.references)t.offset(e)}merge(e){if(Fe&&y.assertCorrectReferences_(e),this.immutable_||!e.length)return;let t=Math.round(e[0].startTime*1e3)/1e3,i=ye.binarySearch(this.references,r=>Math.round(r.startTime*1e3)/1e3<t);this.references.length=i,this.references.push(...e),Fe&&y.assertCorrectReferences_(this.references)}mergeAndEvict(e,t){let i=this.references.length>0?this.references[0].startTime:-1/0,r=Math.max(t,i),s=0;for(;s<e.length&&e[s].endTime<=r;)s++;s>0&&(e=e.slice(s));let n=this.references[0];this.merge(e);let a=this.references[0];n&&v.assert(n.startTime==a.startTime,"SegmentIndex.merge should not change the first reference time!"),this.evict(t)}evict(e){if(this.immutable_)return;let t=ye.binarySearch(this.references,i=>i.endTime<=e);t>0&&(this.numEvicted_+=t,this.references=this.references.slice(t))}fit(e,t,i=!1){if(v.assert(t!=null,"Content duration must be known for static content!"),v.assert(t!=1/0,"Content duration must be finite for static content!"),this.immutable_)return;for(;this.references.length&&this.references[this.references.length-1].startTime>=t;)this.references.pop();let r=ye.binarySearch(this.references,a=>a.endTime<=e);if(r>0&&(i||(this.numEvicted_+=r),this.references=this.references.slice(r)),this.references.length==0)return;let s=this.references[this.references.length-1],n=new Se(s.startTime,t,s.getUrisInner,s.startByte,s.endByte,s.initSegmentReference,s.timestampOffset,s.appendWindowStart,s.appendWindowEnd,s.partialReferences,s.tilesLayout,s.tileDuration,s.syncTime,s.status,s.aesKey);n.mimeType=s.mimeType,n.codecs=s.codecs,n.discontinuitySequence=s.discontinuitySequence,this.references[this.references.length-1]=n}updateEvery(e,t){v.assert(!this.timer_,"SegmentIndex timer already started!"),!this.immutable_&&(this.timer_&&this.timer_.stop(),this.timer_=new ae(()=>{let i=t();i?this.references.push(...i):(this.timer_.stop(),this.timer_=null)}),this.timer_.tickEvery(e))}[Symbol.iterator](){let e=this.getIteratorForTime(0);return v.assert(e!=null,"Iterator for 0 should never be null!"),e}getIteratorForTime(e,t=!1,i=!1){let r=this.find(e);if(r==null)return null;let s=this.get(r);i?r++:r--;let n=-1;if(s&&s.hasPartialSegments())for(let a=s.partialReferences.length-1;a>=0;--a){let o=s.partialReferences[a];if(e>=o.startTime&&e<o.endTime){if(!t){for(;a&&!o.isIndependent();)a--,o=s.partialReferences[a];if(!o.isIndependent())return p.alwaysError("No independent partial segment found!"),null}i?r--:r++,n=a-1;break}}return new Ja(this,r,n,i)}isEmpty(){return this.getNumReferences()==0}continuityTimeline(){return-1}static forSingleSegment(e,t,i){let r=new Se(e,e+t,()=>i,0,null,null,e,e,e+t);return new y([r])}};Fe&&(Ze.assertCorrectReferences_=y=>{v.assert(y.every((e,t)=>{if(t==0)return!0;let i=y[t-1];return i.startTime<e.startTime?!0:i.startTime>e.startTime?!1:i.endTime<=e.endTime}),"SegmentReferences are incorrect")});var Ja=class{constructor(e,t,i,r){l(this,"segmentIndex_");l(this,"currentPosition_");l(this,"currentPartialPosition_");l(this,"reverse");this.segmentIndex_=e,this.currentPosition_=t,this.currentPartialPosition_=i,this.reverse=r}setReverse(e){this.reverse=e}currentPosition(){return this.currentPosition_}current(){let e=this.segmentIndex_.get(this.currentPosition_);return e&&e.hasPartialSegments()&&e.hasAllPartialSegments()&&this.currentPartialPosition_>=e.partialReferences.length&&(this.currentPosition_++,this.currentPartialPosition_=0,e=this.segmentIndex_.get(this.currentPosition_)),e&&e.hasPartialSegments()?e.partialReferences[this.currentPartialPosition_]:e}next(){let e=this.segmentIndex_.get(this.currentPosition_);if(!this.reverse)e&&e.hasPartialSegments()?(this.currentPartialPosition_++,e.hasAllPartialSegments()&&this.currentPartialPosition_==e.partialReferences.length&&(this.currentPosition_++,this.currentPartialPosition_=0)):(this.currentPosition_++,this.currentPartialPosition_=0);else if(e&&e.hasPartialSegments()){if(this.currentPartialPosition_--,this.currentPartialPosition_<0){this.currentPosition_--;let i=this.segmentIndex_.get(this.currentPosition_);i&&i.hasPartialSegments()?this.currentPartialPosition_=i.partialReferences.length-1:this.currentPartialPosition_=0}}else this.currentPosition_--,this.currentPartialPosition_=0;let t=this.current();return{value:t,done:!t}}resetToLastIndependent(){let e=this.current();if(e&&e.isPartial()&&!e.isIndependent()){let t=this.segmentIndex_.get(this.currentPosition_);if(t&&t.hasPartialSegments()){let i=t.partialReferences[this.currentPartialPosition_];for(;i.isIndependent()&&!(this.currentPartialPosition_<=0);)this.currentPartialPosition_--,i=t.partialReferences[this.currentPartialPosition_]}}}},Mi=class y extends Ze{constructor(){super([]);l(this,"indexes_");this.indexes_=[]}appendSegmentIndex(t){v.assert(this.indexes_.length==0||t.getNumEvicted()==0,"Should not append a new segment index with already-evicted segments"),this.indexes_.push(t)}clone(){let t=new y;return t.indexes_=this.indexes_.slice(),t.numEvicted_=this.numEvicted_,t}release(){this.indexes_=[]}forEachTopLevelReference(t){for(let i of this.indexes_)i.forEachTopLevelReference(t)}forEachIndex(t){for(let i of this.indexes_)t(i)}find(t){let i=this.numEvicted_;for(let r of this.indexes_){let s=r.find(t);if(s!=null)return s+i;i+=r.getNumEvicted()+r.getNumReferences()}return null}getTimelineForTime(t){for(let i of this.indexes_)if(i.find(t)!=null)return i.continuityTimeline();return-1}get(t){let i=this.numEvicted_,r=!1;for(let s of this.indexes_){v.assert(!r||s.getNumEvicted()==0,"Should not see evicted segments after available segments");let n=s.get(t-i);if(n)return n;let a=s.getNumReferences();i+=s.getNumEvicted()+a,r=r||a!=0}return null}offset(t){v.assert(!1,"offset() should not be used in MetaSegmentIndex!")}merge(t){v.assert(!1,"merge() should not be used in MetaSegmentIndex!")}evict(t){if(!this.indexes_.length)return;let i=this.indexes_[0];i.evict(t),i.isEmpty()&&(this.indexes_.shift(),this.numEvicted_+=i.getNumEvicted(),i.release(),this.evict(t))}mergeAndEvict(t,i){v.assert(!1,"mergeAndEvict() should not be used in MetaSegmentIndex!")}fit(t,i){v.assert(!1,"fit() should not be used in MetaSegmentIndex!")}updateEvery(t,i){v.assert(!1,"updateEvery() should not be used in MetaSegmentIndex!")}};/*! @license
|
|
325
|
+
* Shaka Player
|
|
326
|
+
* Copyright 2016 Google LLC
|
|
327
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
328
|
+
*/var dn=class{constructor(e){l(this,"harness_");l(this,"isBuffering_");l(this,"rate_");l(this,"pollRate_");l(this,"timer_");this.harness_=e,this.isBuffering_=!1,this.rate_=this.harness_.getRate(),this.pollRate_=.25,this.timer_=new ae(()=>{this.harness_.isPaused()||this.harness_.movePlayhead(this.rate_*this.pollRate_)})}release(){this.set(this.getDefaultRate()),this.timer_&&(this.timer_.stop(),this.timer_=null),this.harness_=null}setBuffering(e){this.isBuffering_=e,this.apply_()}set(e){v.assert(e!=0,"Should never set rate of 0 explicitly!"),this.rate_=e,this.apply_()}getRealRate(){return this.rate_}getDefaultRate(){return this.harness_.getDefaultRate()}apply_(){this.timer_.stop();let e=this.calculateCurrentRate_();if(p.v1("Changing effective playback rate to",e),e>=0&&e<=16)try{this.applyRate_(e);return}catch(t){}this.timer_.tickEvery(this.pollRate_),this.applyRate_(0)}calculateCurrentRate_(){return this.isBuffering_?0:this.rate_}applyRate_(e){let t=this.harness_.getRate();return t!=e&&this.harness_.setRate(e),t!=e}};/*! @license
|
|
329
|
+
* Shaka Player
|
|
330
|
+
* Copyright 2016 Google LLC
|
|
331
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
332
|
+
*/var xs=class{constructor(e){l(this,"mediaElement_");l(this,"eventManager_");l(this,"observers_");l(this,"pollingLoop_");this.mediaElement_=e,this.eventManager_=new ue,this.observers_=new Set,this.pollingLoop_=new ae(()=>{this.pollAllObservers_(!1)}).tickNow(),e.paused||this.pollingLoop_.tickEvery(.25),this.eventManager_.listen(e,"playing",()=>{this.pollingLoop_.tickNow().tickEvery(.25)}),this.eventManager_.listen(e,"pause",()=>{this.pollingLoop_.stop()}),this.eventManager_.listen(e,"seeked",()=>{this.pollingLoop_.tickNow(),e.paused||this.pollingLoop_.tickEvery(.25)})}release(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.pollingLoop_.stop();for(let e of this.observers_)e.release();this.observers_.clear()}manage(e){this.observers_.add(e)}notifyOfSeek(e){this.pollAllObservers_(e)}pollAllObservers_(e){let t=this.mediaElement_.currentTime;for(let i of this.observers_)i.poll(t,e)}};/*! @license
|
|
333
|
+
* Shaka Player
|
|
334
|
+
* Copyright 2016 Google LLC
|
|
335
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
336
|
+
*/var ur=class y extends Le{constructor(t){super();l(this,"contentTypeStates_");l(this,"getBufferedInfo_");this.contentTypeStates_=new Map,this.getBufferedInfo_=t}release(){this.contentTypeStates_.clear(),super.release()}getContentTypeState_(t){let i=this.contentTypeStates_.get(t);return i||(i={qualityChangePositions:[],currentQuality:null,contentType:t},this.contentTypeStates_.set(t,i)),i}addMediaQualityChange(t,i){let r=this.getContentTypeState_(t.contentType);this.purgeQualityChangePositions_(r);let s={mediaQuality:t,position:i},n=r.qualityChangePositions,a=n.findIndex(o=>o.position>=i);if(a>=0){let o=n[a].position==i?1:0;n.splice(a,o,s)}else n.push(s)}static getMediaQualityAtPosition_(t,i){let r=i.qualityChangePositions;for(let s=r.length-1;s>=0;s--){let n=r[s];if(n.position<=t)return n.mediaQuality}return null}static mediaQualitiesAreTheSame_(t,i){return t===i?!0:!t||!i?!1:t.bandwidth==i.bandwidth&&t.audioSamplingRate==i.audioSamplingRate&&t.codecs==i.codecs&&t.contentType==i.contentType&&t.frameRate==i.frameRate&&t.height==i.height&&t.mimeType==i.mimeType&&t.channelsCount==i.channelsCount&&t.pixelAspectRatio==i.pixelAspectRatio&&t.width==i.width}poll(t,i){for(let r of this.contentTypeStates_.values()){let s=r.currentQuality,n=y.getMediaQualityAtPosition_(t,r),a=n&&!y.mediaQualitiesAreTheSame_(s,n),o=n&&s&&n.label&&s.label&&s.label!==n.label,c=n&&s&&n.language&&s.language&&s.language!==n.language,d=n&&s&&n.roles&&s.roles&&!ye.equal(s.roles,n.roles);if((o||c||d)&&this.positionIsBuffered_(t,n.contentType)){r.currentQuality=n;let u=new U("audiotrackchange",new Map([["quality",n],["position",t]]));this.dispatchEvent(u)}if(a&&this.positionIsBuffered_(t,n.contentType)){r.currentQuality=n,p.debug("Media quality changed at position "+t+" "+JSON.stringify(n));let u=new U("qualitychange",new Map([["quality",n],["position",t]]));this.dispatchEvent(u)}}}positionIsBuffered_(t,i){let s=this.getBufferedInfo_()[i];if(s&&s.length>0){let n=s[0].start,a=s[s.length-1].end;if(t>=n&&t<a)return!0}return!1}purgeQualityChangePositions_(t){let r=this.getBufferedInfo_()[t.contentType];if(r&&r.length>0){let s=r[0].start,n=r[r.length-1].end,a=t.qualityChangePositions;t.qualityChangePositions=a.filter((o,c)=>!(o.position<=s&&c+1<a.length&&a[c+1].position<=s||o.position>=n))}else t.qualityChangePositions=[]}static createQualityInfo(t){let i={bandwidth:t.bandwidth||0,audioSamplingRate:null,codecs:t.codecs,contentType:t.type,frameRate:null,height:null,mimeType:t.mimeType,channelsCount:null,pixelAspectRatio:null,width:null,label:null,roles:t.roles,language:null};return t.type==R.ContentType.VIDEO&&(i.frameRate=t.frameRate||null,i.height=t.height||null,i.pixelAspectRatio=t.pixelAspectRatio||null,i.width=t.width||null),t.type==R.ContentType.AUDIO&&(i.audioSamplingRate=t.audioSamplingRate,i.channelsCount=t.channelsCount,i.label=t.label||null,i.language=t.language),i}};/*! @license
|
|
337
|
+
* Shaka Player
|
|
338
|
+
* Copyright 2016 Google LLC
|
|
339
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
340
|
+
*/var un=class un extends Le{constructor(t){super();l(this,"regions_");l(this,"getFilterRange_");l(this,"filterTimer_");this.regions_=new Map,this.getFilterRange_=t,this.filterTimer_=null}release(){this.regions_.clear(),this.releaseTimer_(),super.release()}addRegion(t){let i=this.generateKey_(t);if(!this.regions_.has(i)){this.regions_.set(i,t);let r=new U("regionadd",new Map([["region",t]]));this.dispatchEvent(r),this.setupTimer_()}}filterByRange_(){let t=this.getFilterRange_();for(let[i,r]of this.regions_)if(r.endTime<t.start){this.regions_.delete(i);let s=new U("regionremove",new Map([["region",r]]));this.dispatchEvent(s)}this.regions_.size||this.releaseTimer_()}setupTimer_(){this.filterTimer_||(this.filterTimer_=new ae(()=>{this.filterByRange_()}).tickEvery(un.REGION_FILTER_INTERVAL))}releaseTimer_(){this.filterTimer_&&(this.filterTimer_.stop(),this.filterTimer_=null)}regions(){return this.regions_.values()}generateKey_(t){return`${t.schemeIdUri}_${t.id}_${t.startTime.toFixed(1)}_${t.endTime.toFixed(1)}`}};l(un,"REGION_FILTER_INTERVAL",2);var zr=un;/*! @license
|
|
341
|
+
* Shaka Player
|
|
342
|
+
* Copyright 2016 Google LLC
|
|
343
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
344
|
+
*/var Xr=class y{constructor(e,t,i,r,s,n){l(this,"prefetchLimit_");l(this,"stream_");l(this,"fetchDispatcher_");l(this,"segmentPrefetchMap_");l(this,"initSegmentPrefetchMap_");l(this,"iterator_");l(this,"reverse_");l(this,"shouldPrefetchNextSegment_");l(this,"getPlaybackRate_");this.prefetchLimit_=e,this.stream_=t,this.fetchDispatcher_=i,this.segmentPrefetchMap_=new Map,this.initSegmentPrefetchMap_=new Map,this.iterator_=null,this.reverse_=r;let a=(c,d)=>!d.fastSwitching||!c.isPartial()||!c.isLastPartial();this.shouldPrefetchNextSegment_=s||a;let o=()=>1;this.getPlaybackRate_=n||o}replaceFetchDispatcher(e){this.fetchDispatcher_=e;for(let t of this.segmentPrefetchMap_.values())t.replaceFetchDispatcher(e)}prefetchSegmentsByTime(e,t=!1){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(i,"missing segmentIndex"),Promise.resolve();if(this.iterator_||(this.iterator_=this.stream_.segmentIndex.getIteratorForTime(e,!0,this.reverse_)),!this.iterator_)return p.debug(i,"missing iterator"),Promise.resolve();t&&this.iterator_.next();let r=[],s=Math.abs(this.getPlaybackRate_()),n=Math.ceil(this.prefetchLimit_*s);for(;this.segmentPrefetchMap_.size<n;){let a=this.iterator_.next().value;if(!a)break;let o=!0;if(a.isPreload()&&a.endByte!=null&&(o=!1),a.getStatus()==Se.Status.MISSING&&(o=!1),a.getSegmentData(!1)&&(o=!1),o&&a.initSegmentReference&&r.push(this.prefetchInitSegment(a.initSegmentReference)),o&&!this.segmentPrefetchMap_.has(a)){let c=new hn(this.fetchDispatcher_);r.push(c.dispatchFetch(a,this.stream_)),this.segmentPrefetchMap_.set(a,c)}if(!this.shouldPrefetchNextSegment_(a,this.stream_))break}return this.clearInitSegments_(),Promise.all(r)}prefetchInitSegment(e){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let t=y.logPrefix_(this.stream_);if(!this.stream_.segmentIndex)return p.debug(t,"missing segmentIndex"),Promise.resolve();if(e.getSegmentData()||Array.from(this.initSegmentPrefetchMap_.keys()).some(a=>Tt.equal(a,e)))return Promise.resolve();let s=new hn(this.fetchDispatcher_),n=s.dispatchFetch(e,this.stream_);return this.initSegmentPrefetchMap_.set(e,s),n}getPrefetchedSegment(e,t){v.assert(this.prefetchLimit_>0,"SegmentPrefetch can not be used when prefetchLimit <= 0.");let i=y.logPrefix_(this.stream_),r=this.segmentPrefetchMap_;if(e instanceof Tt&&(r=this.initSegmentPrefetchMap_),r.has(e)){let s=r.get(e);return t&&s.setStreamDataCallback(t),e instanceof Se?p.debug(i,"reused prefetched segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"reused prefetched init segment at time, mapSize",r.size),s.getOperation()}else return e instanceof Se?p.debug(i,"missed segment at time:",e.startTime,"mapSize",r.size):p.debug(i,"missed init segment at time, mapSize",r.size),null}clearMap_(e){for(let t of e.keys())t&&this.abortPrefetchedSegment_(t)}resetPosition(){this.iterator_=null}clearAll(){this.clearMap_(this.segmentPrefetchMap_),this.clearMap_(this.initSegmentPrefetchMap_),this.resetPosition();let e=y.logPrefix_(this.stream_);p.debug(e,"cleared all")}removeReference(e){this.abortPrefetchedSegment_(e)}evict(e,t=!1){for(let i of this.segmentPrefetchMap_.keys())e>i.endTime&&this.abortPrefetchedSegment_(i);t&&this.clearInitSegments_()}setReverse(e){this.reverse_=e,this.iterator_&&this.iterator_.setReverse(e)}clearInitSegments_(){if(!this.segmentPrefetchMap_.size)return;let e=Array.from(this.segmentPrefetchMap_.keys());for(let t of this.initSegmentPrefetchMap_.keys())e.some(r=>Tt.equal(r.initSegmentReference,t))||this.abortPrefetchedSegment_(t)}resetLimit(e){v.assert(e>=0,"The new prefetch limit must be >= 0.");let t=y.logPrefix_(this.stream_);p.debug(t,"resetting prefetch limit to",e),this.prefetchLimit_=e;let i=Array.from(this.segmentPrefetchMap_.keys());for(;i.length>e;){let r=i.pop();r&&this.abortPrefetchedSegment_(r)}this.clearInitSegments_()}switchStream(e){e&&e!==this.stream_&&(this.clearAll(),this.stream_=e)}getStream(){return this.stream_}abortPrefetchedSegment_(e){let t=y.logPrefix_(this.stream_),i=this.segmentPrefetchMap_;e instanceof Tt&&(i=this.initSegmentPrefetchMap_);let r=i.get(e);i.delete(e),r&&(r.abort(),e instanceof Se?p.debug(t,"pop and abort prefetched segment at time:",e.startTime):p.debug(t,"pop and abort prefetched init segment"))}static logPrefix_(e){return"SegmentPrefetch("+e.type+":"+e.id+")"}},hn=class{constructor(e){l(this,"fetchDispatcher_");l(this,"streamDataCallback_");l(this,"operation_");this.fetchDispatcher_=e,this.streamDataCallback_=null,this.operation_=null}replaceFetchDispatcher(e){this.fetchDispatcher_=e}dispatchFetch(e,t){let i=new Uint8Array(0);return this.operation_=this.fetchDispatcher_(e,t,async r=>{i.byteLength>0?i=ne.concat(i,r):i=r,this.streamDataCallback_&&(await this.streamDataCallback_(i),i=new Uint8Array(0))}),this.operation_.promise.catch(r=>r instanceof h&&r.code==h.Code.OPERATION_ABORTED?Promise.resolve():Promise.reject(r))}getOperation(){return this.operation_}setStreamDataCallback(e){this.streamDataCallback_=e}abort(){this.operation_&&this.operation_.abort()}};/*! @license
|
|
345
|
+
* Shaka Player
|
|
346
|
+
* Copyright 2016 Google LLC
|
|
347
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
348
|
+
*/var Ti={KEEP:"keep",RESET:"reset",RESET_TO_ENCRYPTED:"reset_to_encrypted",RESET_ON_ENCRYPTION_CHANGE:"RESET_ON_ENCRYPTION_CHANGE"};/*! @license
|
|
349
|
+
* Shaka Player
|
|
350
|
+
* Copyright 2016 Google LLC
|
|
351
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
352
|
+
*/var Vi=class Vi{static parseMsProRecords_(e,t){let i=[];for(;t<e.byteLength-1;){let r=e.getUint16(t,!0);t+=2;let s=e.getUint16(t,!0);if(t+=2,(s&1)!=0||s+t>e.byteLength)return p.warning("Malformed MS PRO object"),[];let n=D.toUint8(e,t,s);i.push({type:r,value:n}),t+=s}return i}static parseMsPro_(e){let t=0,i=D.toDataView(e),r=i.getUint32(t,!0);return t+=4,r!=e.byteLength?(p.warning("PlayReady Object with invalid length encountered."),[]):(t+=2,Vi.parseMsProRecords_(i,t))}static getLaurl_(e){for(let t of I.getElementsByTagName(e,"DATA"))if(t.children){for(let i of t.children)if(i.tagName=="LA_URL")return I.getTextContents(i)}return""}static getPlayReadyHeaderObject_(e){let t=Vi.PLAYREADY_RECORD_TYPES,r=Vi.parseMsPro_(e).find(a=>a.type===t.RIGHTS_MANAGEMENT);if(!r)return null;let s=q.fromUTF16(r.value,!0),n=I.parseXmlString(s,"WRMHEADER");return n||null}static getLicenseUrl(e){let t=ne.fromBase64(I.getTextContents(e));return Vi.getLicenseFromHeader_(t)}static getLicenseUrlFromPssh(e){let t=ei.getPsshData(e);return Vi.getLicenseFromHeader_(t)}static getLicenseFromHeader_(e){try{let t=Vi.getPlayReadyHeaderObject_(e);return t?Vi.getLaurl_(t):""}catch(t){return""}}};l(Vi,"PLAYREADY_RECORD_TYPES",{RIGHTS_MANAGEMENT:1,RESERVED:2,EMBEDDED_LICENSE:3});var Ri=Vi;/*! @license
|
|
353
|
+
* Shaka Player
|
|
354
|
+
* Copyright 2016 Google LLC
|
|
355
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
356
|
+
*/var vt=class y{static getBasicInfoFromMimeType(e){let t=N.getBasicType(e),i=t.split("/")[0],r=N.getCodecs(e);return{type:i,mimeType:t,codecs:r,language:null,height:null,width:null,channelCount:null,sampleRate:null,closedCaptions:new Map,videoRange:null,colorGamut:null,frameRate:null,timescale:null,drmInfos:[]}}static getBasicInfoFromTs(e,t,i,r){let s=D.toUint8(e),n=new pt().parse(s),a=n.getCodecs(),o=n.getVideoInfo(),c=[],d=!1,u=!1;if(!t)switch(a.audio){case"aac":case"aac-loas":n.getAudioData().length&&(c.push("mp4a.40.2"),d=!0);break;case"mp3":n.getAudioData().length&&(c.push("mp4a.40.34"),d=!0);break;case"ac3":n.getAudioData().length&&(c.push("ac-3"),d=!0);break;case"ec3":n.getAudioData().length&&(c.push("ec-3"),d=!0);break;case"opus":n.getAudioData().length&&(c.push("opus"),d=!0);break}if(!i)switch(a.video){case"avc":o.codec?c.push(o.codec):c.push("avc1.42E01E"),u=!0;break;case"hvc":o.codec?c.push(o.codec):c.push("hvc1.1.6.L93.90"),u=!0;break;case"av1":c.push("av01.0.01M.08"),u=!0;break}if(!c.length)return null;let m=d&&!u,f=new Map;if(u&&!r){let g=new Rt("video/mp2t");g.parseFrom(e);for(let _ of g.getStreams())f.set(_,_);g.reset()}return{type:m?"audio":"video",mimeType:"video/mp2t",codecs:c.join(", "),language:null,height:o.height,width:o.width,channelCount:null,sampleRate:null,closedCaptions:f,videoRange:null,colorGamut:null,frameRate:o.frameRate,timescale:null,drmInfos:[]}}static getBasicInfoFromMp4(e,t,i){var X;v.assert(e!=null||t!=null,"Either initData or data must be non-null.");let r=[],s=[],n=[],a=!1,o=!1,c=!1,d=O=>{let $=O.toLowerCase();switch($){case"avc1":case"avc3":s.push($+".42E01E"),o=!0;break;case"hev1":case"hvc1":s.push($+".1.6.L93.90"),o=!0;break;case"dvh1":case"dvhe":s.push($+".05.04"),o=!0;break;case"vp09":s.push($+".00.10.08"),o=!0;break;case"av01":s.push($+".0.01M.08"),o=!0;break;case"mp4a":r.push("mp4a.40.2"),a=!0;break;case"ac-3":case"ec-3":case"ac-4":case"opus":case"flac":r.push($),a=!0;break;case"apac":r.push("apac.31.00"),a=!0;break}},u=O=>d(O.name),m=null,f=null,g=null,_=null,T=null,S=null,b=null,E=null,C=null,A=new Map,w=new Set,M=null,x=null,k,L=0,V=[],ee=new Map,oe=null,le=new Map,H;if(e&&t){let O=D.toUint8(e),$=D.toUint8(t);H=ne.concat(O,$)}else t?H=D.toUint8(t):e&&(H=D.toUint8(e));let J=O=>{let $=pe.audioSampleEntry(O.reader);_=$.channelCount,T=$.sampleRate,u(O),O.reader.hasMoreData()&&F.children(O)},Z=O=>{k=O.name;let $=pe.visualSampleEntry(O.reader);g=String($.width),f=String($.height),O.reader.hasMoreData()&&F.children(O)},ce;if(new F().boxes([...F.SAMPLE_TABLE_PATH,...F.FRAGMENT_PATH],F.children).fullBox("tkhd",O=>{v.assert(O.version!=null,"TKHD is a full box and should have a valid version."),oe=pe.parseTKHD(O.reader,O.version).trackId}).fullBox("mdhd",O=>{v.assert(O.version!=null,"MDHD is a full box and should have a valid version.");let $=pe.parseMDHD(O.reader,O.version);m=$.language,oe!==null&&ee.set(oe,$.timescale)}).fullBox("stsd",F.sampleDescription).fullBox("tfhd",O=>{v.assert(O.flags!=null,"A TFHD box should have a valid flags value");let $=pe.parseTFHD(O.reader,O.flags);$.defaultSampleDuration&&(L=$.defaultSampleDuration)}).fullBox("trun",O=>{v.assert(O.version!=null,"A TRUN box should have a valid version value"),v.assert(O.flags!=null,"A TRUN box should have a valid flags value"),V=pe.parseTRUN(O.reader,O.version,O.flags).sampleData}).box("mp4a",O=>{let $=pe.audioSampleEntry(O.reader);_=$.channelCount,T=$.sampleRate,O.reader.hasMoreData()?F.children(O):u(O)}).box("esds",O=>{let $=pe.parseESDS(O.reader);r.push($.codec),a=!0}).boxes(F.GENERIC_AUDIO_SAMPLE_ENTRIES,J).boxes([...F.AVC_HEVC_DV,"vp09","av01"],Z).box("avcC",O=>{let $=k||"";switch(k){case"dvav":$="avc3";break;case"dva1":$="avc1";break}let Ie=pe.parseAVCC($,O.reader);s.push(Ie.codec),o=!0}).box("hvcC",O=>{let $=k||"";switch(k){case"dvh1":$="hvc1";break;case"dvhe":$="hev1";break}let Ie=pe.parseHVCC($,O.reader);s.push(Ie.codec),o=!0}).box("dvcC",O=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVCC($,O.reader);s.push(Ie.codec),o=!0}).box("dvvC",O=>{let $=k||"";switch(k){case"hvc1":$="dvh1";break;case"hev1":$="dvhe";break;case"avc1":$="dva1";break;case"avc3":$="dvav";break;case"av01":$="dav1";break}let Ie=pe.parseDVVC($,O.reader);s.push(Ie.codec),o=!0}).fullBox("vpcC",O=>{let $=k||"",Ie=pe.parseVPCC($,O.reader);s.push(Ie.codec),o=!0}).box("av1C",O=>{let $=k||"";k==="dav1"&&($="av01");let Ie=pe.parseAV1C($,O.reader);s.push(Ie.codec),o=!0}).boxes(["wvtt","stpp"],O=>{n.push(O.name),c=!0}).box("c608",()=>{le.set("CC1","CC1"),oe!==null&&ee.delete(oe)}).box("enca",J).box("encv",Z).box("sinf",F.children).box("frma",O=>{let{codec:$}=pe.parseFRMA(O.reader);d($)}).box("colr",O=>{s=s.map(tt=>tt.startsWith("av01.")?pe.updateAV1CodecWithCOLRBox(tt,O.reader):tt);let{videoRange:$,colorGamut:Ie}=pe.parseCOLR(O.reader);S=$,b=Ie}).fullBox("schm",O=>{M=pe.parseSCHM(O.reader).encryptionScheme}).box("schi",F.children).fullBox("tenc",O=>{v.assert(O.version!=null,"TENC is a full box and should have a valid version."),x=pe.parseTENC(O.reader,O.version).defaultKID}).fullBox("pssh",O=>{v.assert(O.version!=null,"PSSH is a full box and should have a valid version.");let $=O.reader.getDataView();v.assert($.byteOffset>=12,"DataView at incorrect position");let Ie=D.toUint8($,-12,O.size),tt=ne.toHex(Ie);if(w.has(tt))return;w.add(tt);let _t=O.reader.readBytes(16,!1),bt=ne.toHex(_t);ce||(ce=de.getUuidMap(!0));let yt=ce[bt.toLowerCase()];if(!yt)return;let xt=R.createDrmInfo(yt,"cenc",[{initDataType:"cenc",initData:Ie}]);if(de.isPlayReadyKeySystem(yt)&&(xt.licenseServerUri=Ri.getLicenseUrlFromPssh(Ie)),O.version>0){let mt=O.reader.readUint32();for(let Qe=0;Qe<mt;Qe++){let Ft=O.reader.readBytes(16,!1);xt.keyIds.add(ne.toHex(Ft))}}A.set(yt,xt)}).parse(H,!0,!0),!r.length&&!s.length&&!n.length)return null;C=ee.values().next().value;let W=a&&!o;if(o&&!i&&t&&!le.size){let O=new Rt("video/mp4");e&&O.init(e);try{O.parseFrom(t);for(let $ of O.getStreams())le.set($,$)}catch($){p.debug("Error detecting CC streams",$)}O.reset()}let z=r.concat(s).concat(n);M==="cbcs"&&x&&!A.has("com.apple.fps")&&A.set("com.apple.fps",R.createDrmInfo("com.apple.fps",M,null));for(let O of A.values())M&&(O.encryptionScheme=M),x&&O.keyIds.add(x);let ge="video",Y="video/mp4";if(c?(ge="text",Y="application/mp4"):W&&(ge="audio",Y="audio/mp4"),ge==="video"&&C!=null&&V.length){let O=C,$=0;for(let Ie of V)$+=(X=Ie.sampleDuration)!=null?X:L;$>0&&(E=O*V.length/$)}return{type:ge,mimeType:Y,codecs:y.codecsFiltering(z).join(", "),language:m,height:f,width:g,channelCount:_,sampleRate:T,closedCaptions:le,videoRange:S,colorGamut:b,frameRate:E,timescale:C,drmInfos:Array.from(A.values())}}static codecsFiltering(e){let t=R.ContentType,i=y.filterDuplicateCodecs_(e),r=R.guessAllCodecsSafe(t.AUDIO,i),s=R.guessAllCodecsSafe(t.VIDEO,i),n=R.guessAllCodecsSafe(t.TEXT,i),a=y.chooseBetterCodecs_(s),o=r.concat(a).concat(n);return i.length&&!o.length?i:o}static getStartTimeAndDurationFromMp4(e,t){var o;let i=0,r=0,s=[];new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfhd",c=>{v.assert(c.flags!=null,"A TFHD box should have a valid flags value"),r=pe.parseTFHD(c.reader,c.flags).defaultSampleDuration}).fullBox("tfdt",c=>{v.assert(c.version==0||c.version==1,"TFDT version can only be 0 or 1"),i=pe.parseTFDTInaccurate(c.reader,c.version).baseMediaDecodeTime/t}).fullBox("trun",c=>{v.assert(c.version!=null,"A TRUN box should have a valid version value"),v.assert(c.flags!=null,"A TRUN box should have a valid flags value"),s=pe.parseTRUN(c.reader,c.version,c.flags).sampleData,c.parser.stop()}).parse(e);let n=0;for(let c of s)n+=(o=c.sampleDuration)!=null?o:r;let a=n/t;return{startTime:i,duration:a}}static filterDuplicateCodecs_(e){let t=new Set,i=[];for(let r of e){let s=N.getCodecBase(r);t.has(s)?p.debug("Ignoring duplicate codec"):(i.push(r),t.add(s))}return i}static chooseBetterCodecs_(e){if(e.length<=1)return e;let t=e.find(r=>r.startsWith("dvav.")||r.startsWith("dva1.")||r.startsWith("dvh1.")||r.startsWith("dvhe.")||r.startsWith("dav1.")||r.startsWith("dvc1.")||r.startsWith("dvi1."));if(!t)return e;let i=`video/mp4; codecs="${t}"`;return Ke.isTypeSupported(i)?[t]:e.filter(r=>r!=t)}static getDefaultKID(e){let t=null;return new F().boxes([...F.SAMPLE_TABLE_PATH,"sinf","schi"],F.children).fullBox("stsd",F.sampleDescription).box("encv",F.visualSampleEntry).box("enca",F.audioSampleEntry).fullBox("tenc",i=>{v.assert(i.version!=null,"TENC is a full box and should have a valid version."),t=pe.parseTENC(i.reader,i.version).defaultKID}).parse(e,!0),t}static async aesDecrypt(e,t,i){let r=t;if(r.cryptoKey||(v.assert(r.fetchKey,"If AES cryptoKey was not preloaded, fetchKey function should be provided"),await r.fetchKey(),v.assert(r.cryptoKey,"AES cryptoKey should now be set")),t.blockCipherMode=="GCM"&&t.bitsKey==256){let a=D.toUint8(e);if(a.byteLength<32)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_GCM_SEGMENT);let o=a.slice(0,16),c=a.slice(16),d={name:"AES-GCM",iv:o,tagLength:128};return window.crypto.subtle.decrypt(d,r.cryptoKey,c)}let s=r.iv;if(!s){s=D.toUint8(new ArrayBuffer(16));let a=r.firstMediaSequenceNumber+i;for(let o=s.byteLength-1;o>=0;o--)s[o]=a&255,a>>=8}let n;return t.blockCipherMode=="CBC"?n={name:"AES-CBC",iv:s}:n={name:"AES-CTR",counter:s,length:64},window.crypto.subtle.decrypt(n,r.cryptoKey,e)}};/*! @license
|
|
357
|
+
* Shaka Player
|
|
358
|
+
* Copyright 2016 Google LLC
|
|
359
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
360
|
+
*/var ct=class y{static async getMimeType(e,t,i){let r=y.getMimeTypeFromUri(e);if(r)return r;let s=K.RequestType.MANIFEST,n=K.makeRequest([e],i);try{n.method="HEAD",r=(await t.request(s,n).promise).headers["content-type"]}catch(a){a&&(a.code==h.Code.HTTP_ERROR||a.code==h.Code.BAD_HTTP_STATUS)&&(n.method="GET",r=(await t.request(s,n).promise).headers["content-type"])}return r?r.toLowerCase().split(";").shift():""}static getMimeTypeFromUri(e){let t=y.getExtension(e),i=y.EXTENSIONS_TO_MIME_TYPES_.get(t);return i!=null?i:""}static getExtension(e){let t=e.length;for(let i=0;i<e.length;i++){let r=e.charCodeAt(i);if(r===63||r===35){t=i;break}}for(let i=t-1;i>=0;i--){let r=e.charCodeAt(i);if(r===46)return i+1<t?e.slice(i+1,t).toLowerCase():"";if(r===47)return""}return""}static createSegmentRequest(e,t,i,r,s){let n=K.makeRequest(e,r,s);return t==0&&i==null||(i?n.headers.Range="bytes="+t+"-"+i:n.headers.Range="bytes="+t+"-"),n}};ct.EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","video/mp4").set("m4v","video/mp4").set("m4a","audio/mp4").set("cmfv","video/mp4").set("cmfa","audio/mp4").set("webm","video/webm").set("weba","audio/webm").set("mkv","video/webm").set("ts","video/mp2t").set("ogv","video/ogg").set("ogg","audio/ogg").set("opus","audio/opus").set("mpg","video/mpeg").set("mpeg","video/mpeg").set("mov","video/quicktime").set("m3u8","application/x-mpegurl").set("mpd","application/dash+xml").set("mp3","audio/mpeg").set("aac","audio/aac").set("flac","audio/flac").set("wav","audio/wav").set("srt","text/srt").set("vtt","text/vtt").set("webvtt","text/vtt").set("ttml","application/ttml+xml").set("jpeg","image/jpeg").set("jpg","image/jpeg").set("png","image/png").set("svg","image/svg+xml").set("webp","image/webp").set("avif","image/avif").set("html","text/html").set("htm","text/html");/*! @license
|
|
361
|
+
* Shaka Player
|
|
362
|
+
* Copyright 2016 Google LLC
|
|
363
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
364
|
+
*/var Be=class Be{constructor(e,t){l(this,"playerInterface_");l(this,"manifest_");l(this,"config_");l(this,"deferredCloseSegmentIndex_");l(this,"bufferingScale_");l(this,"currentVariant_");l(this,"currentTextStream_");l(this,"textStreamSequenceId_");l(this,"mediaStates_");l(this,"startupComplete_");l(this,"failureCallbackBackoff_");l(this,"fatalError_");l(this,"destroyer_");l(this,"lastMediaSourceReset_");l(this,"audioPrefetchMap_");l(this,"spatialVideoInfo_");l(this,"playRangeStart_");l(this,"playRangeEnd_");l(this,"lastTextMediaStateBeforeUnload_");l(this,"requestedDependencySegments_");l(this,"liveSeekableRangeEventManager_");l(this,"updateLiveSeekableRangeTimer_");l(this,"boundaryTime_");l(this,"crossBoundarySeek_");l(this,"crossBoundaryTimer_");l(this,"crossBoundaryEventManager_");this.playerInterface_=t,this.manifest_=e,this.config_=null,this.deferredCloseSegmentIndex_=new Map,this.bufferingScale_=1,this.currentVariant_=null,this.currentTextStream_=null,this.textStreamSequenceId_=0,this.mediaStates_=new Map,this.startupComplete_=!1,this.failureCallbackBackoff_=null,this.fatalError_=!1,this.destroyer_=new ci(()=>this.doDestroy_()),this.lastMediaSourceReset_=Date.now()/1e3,this.audioPrefetchMap_=new Map,this.spatialVideoInfo_={projection:null,hfov:null},this.playRangeStart_=0,this.playRangeEnd_=1/0,this.lastTextMediaStateBeforeUnload_=null,this.requestedDependencySegments_=[],this.liveSeekableRangeEventManager_=new ue,this.updateLiveSeekableRangeTimer_=new ae(()=>{if(!this.manifest_||!this.playerInterface_){this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}if(!this.manifest_.presentationTimeline.isDynamic()){this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange(),this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop();return}let i=this.manifest_.presentationTimeline.getSeekRangeStart(),r=this.manifest_.presentationTimeline.getSeekRangeEnd();r-i>1?this.playerInterface_.mediaSourceEngine.setLiveSeekableRange(i,r):this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()}),this.boundaryTime_=null,this.crossBoundarySeek_=!1,this.crossBoundaryTimer_=new ae(()=>{let i=this.playerInterface_.video;i.ended||this.boundaryTime_&&(p.info("Crossing boundary at",this.boundaryTime_),this.crossBoundarySeek_=!0,i.currentTime=this.boundaryTime_,this.boundaryTime_=null)}),this.crossBoundaryEventManager_=new ue}destroy(){return this.destroyer_.destroy()}async doDestroy_(){var t,i,r,s;(t=this.updateLiveSeekableRangeTimer_)==null||t.stop(),this.updateLiveSeekableRangeTimer_=null,(i=this.liveSeekableRangeEventManager_)==null||i.release(),this.liveSeekableRangeEventManager_=null,(r=this.crossBoundaryTimer_)==null||r.stop(),this.crossBoundaryTimer_=null,(s=this.crossBoundaryEventManager_)==null||s.release(),this.crossBoundaryEventManager_=null;let e=[];for(let n of this.mediaStates_.values())this.cancelUpdate_(n),e.push(this.abortOperations_(n)),n.segmentPrefetch&&(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.values())n.clearAll();await Promise.all(e),this.mediaStates_.clear(),this.audioPrefetchMap_.clear(),this.playerInterface_=null,this.manifest_=null,this.config_=null,this.boundaryTime_=null}configure(e){this.config_=e;let t={maxAttempts:Math.max(e.retryParameters.maxAttempts,2),baseDelay:e.retryParameters.baseDelay,backoffFactor:e.retryParameters.backoffFactor,fuzzFactor:e.retryParameters.fuzzFactor,timeout:0,stallTimeout:0,connectionTimeout:0},i=!0;this.failureCallbackBackoff_=new xr(t,i);let r=R.ContentType;if(e.disableAudioPrefetch){let s=this.mediaStates_.get(r.AUDIO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null);for(let n of this.audioPrefetchMap_.keys())this.audioPrefetchMap_.get(n).clearAll(),this.audioPrefetchMap_.delete(n)}if(e.disableTextPrefetch){let s=this.mediaStates_.get(r.TEXT);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}if(e.disableVideoPrefetch){let s=this.mediaStates_.get(r.VIDEO);s&&s.segmentPrefetch&&(s.segmentPrefetch.clearAll(),s.segmentPrefetch=null)}for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s);n.segmentPrefetch?(n.segmentPrefetch.resetLimit(e.segmentPrefetchLimit),e.segmentPrefetchLimit>0||(n.segmentPrefetch.clearAll(),n.segmentPrefetch=null)):e.segmentPrefetchLimit>0&&(n.segmentPrefetch=this.createSegmentPrefetch_(n.stream))}e.disableAudioPrefetch||this.updatePrefetchMapForAudio_()}applyPlayRange(e,t){this.manifest_.presentationTimeline.isDynamic()||(this.playRangeStart_=e,this.playRangeEnd_=t)}async start(e){v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),await this.initStreams_(e||new Map),this.destroyer_.ensureNotDestroyed(),p.debug("init: completed initial Stream setup"),this.startupComplete_=!0}getCurrentVariant(){return this.currentVariant_}getCurrentTextStream(){return this.currentTextStream_}async loadNewTextStream_(e){let t=R.ContentType;v.assert(!this.mediaStates_.has(t.TEXT),"Should not call loadNewTextStream_ while streaming text!"),this.textStreamSequenceId_++;let i=this.textStreamSequenceId_;try{await this.playerInterface_.mediaSourceEngine.clear(t.TEXT)}catch(a){this.playerInterface_&&this.playerInterface_.onError(a)}let r=N.getFullType(e.mimeType,e.codecs);if(this.playerInterface_.mediaSourceEngine.reinitText(r,e.external),this.playerInterface_.mediaSourceEngine.getTextDisplayer().isTextVisible()&&this.textStreamSequenceId_==i){let a=this.createMediaState_(e);this.mediaStates_.set(t.TEXT,a),this.scheduleUpdate_(a,0)}}unloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&(this.cancelUpdate_(t),this.abortOperations_(t).catch(()=>{}),this.lastTextMediaStateBeforeUnload_=this.mediaStates_.get(e.TEXT),this.mediaStates_.delete(e.TEXT),t.stream&&t.stream.closeSegmentIndex&&t.stream.closeSegmentIndex()),this.currentTextStream_=null}setTrickPlay(e){let t=R.ContentType;this.updateSegmentIteratorReverse_();let i=this.mediaStates_.get(t.VIDEO);if(!i)return;let r=i.stream;if(r)if(p.debug("setTrickPlay",e),e){let s=r.trickModeVideo;if(!s||i.restoreStreamAfterTrickPlay)return;p.debug("Engaging trick mode stream",s),this.switchInternal_(s,!1,0,!1),i.restoreStreamAfterTrickPlay=r}else{let s=i.restoreStreamAfterTrickPlay;if(!s)return;p.debug("Restoring non-trick-mode stream",s),i.restoreStreamAfterTrickPlay=null,this.switchInternal_(s,!0,0,!1)}}switchVariant(e,t=!1,i=0,r=!1,s=!1){this.currentVariant_=e,this.startupComplete_&&(e.video&&this.switchInternal_(e.video,t,i,r,s),e.audio&&this.switchInternal_(e.audio,t,i,r,s))}async switchTextStream(e){if(this.lastTextMediaStateBeforeUnload_=null,this.currentTextStream_=e,!this.startupComplete_)return;let t=R.ContentType;v.assert(e&&e.type==t.TEXT,"Wrong stream type passed to switchTextStream!"),e.segmentIndex||await e.createSegmentIndex(),this.switchInternal_(e,!0,0,!1)}reloadTextStream(){let e=R.ContentType,t=this.mediaStates_.get(e.TEXT);t&&this.switchInternal_(t.stream,!0,0,!0)}handleDeferredCloseSegmentIndexes_(e){for(let[t,i]of this.deferredCloseSegmentIndex_.entries()){let r=t,s=i;r.includes(e.type)&&(s(),this.deferredCloseSegmentIndex_.delete(r))}}switchInternal_(e,t,i,r,s){let n=R.ContentType,a=e.type,o=this.mediaStates_.get(a);if(!o&&e.type==n.TEXT){this.loadNewTextStream_(e);return}if(v.assert(o,"switch: expected mediaState to exist"),!o)return;if(o.restoreStreamAfterTrickPlay&&(p.debug("switch during trick play mode",e),e.trickModeVideo?(o.restoreStreamAfterTrickPlay=e,e=e.trickModeVideo,p.debug("switch found trick play stream",e)):(o.restoreStreamAfterTrickPlay=null,p.debug("switch found no special trick play stream"))),o.stream==e&&!r){let u=Be.logPrefix_(o);p.debug("switch: Stream "+u+" already active");return}if(this.audioPrefetchMap_.has(e)?o.segmentPrefetch=this.audioPrefetchMap_.get(e):o.segmentPrefetch&&o.segmentPrefetch.switchStream(e),e.type==n.TEXT&&o.stream!=e){let u=N.getFullType(e.mimeType,e.codecs);this.playerInterface_.mediaSourceEngine.reinitText(u,e.external)}if(!this.audioPrefetchMap_.has(o.stream)&&o.stream.closeSegmentIndex)if(o.performingUpdate){let u=Be.logPrefix_(o);this.deferredCloseSegmentIndex_.getOrInsert(u,o.stream.closeSegmentIndex)}else o.stream.closeSegmentIndex();let c=o.stream.isAudioMuxedInVideo!=e.isAudioMuxedInVideo;o.stream=e,o.segmentIterator=null,o.adaptation=!!s,e.dependencyStream?o.dependencyMediaState=this.createMediaState_(e.dependencyStream):o.dependencyMediaState=null,this.setupCrossBoundaryListeners_();let d=Be.logPrefix_(o);if(p.debug("switch: switching to Stream "+d),c&&(o.lastInitSegmentReference=null,o.lastAppendWindowStart=null,o.lastAppendWindowEnd=null,e.isAudioMuxedInVideo)){let u=null;o.type===n.VIDEO?u=this.mediaStates_.get(n.AUDIO):o.type===n.AUDIO&&(u=this.mediaStates_.get(n.VIDEO)),u&&(this.abortOperations_(u).catch(()=>{}),u.lastInitSegmentReference=null,u.lastAppendWindowStart=null,u.lastAppendWindowEnd=null,this.forceClearBuffer_(u),this.makeAbortDecision_(u).catch(m=>{this.playerInterface_&&(v.assert(m instanceof h,"Wrong error type!"),this.playerInterface_.onError(m))}))}t?o.clearingBuffer?o.waitingToFlushBuffer=!0:o.performingUpdate?(o.waitingToClearBuffer=!0,o.clearBufferSafeMargin=i,o.waitingToFlushBuffer=!0):(this.cancelUpdate_(o),this.clearBuffer_(o,!0,i).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})):!o.performingUpdate&&!o.updateTimer&&this.scheduleUpdate_(o,0),this.makeAbortDecision_(o).catch(u=>{this.playerInterface_&&(v.assert(u instanceof h,"Wrong error type!"),this.playerInterface_.onError(u))})}async makeAbortDecision_(e){if(!e.operation)return;let t=e.stream,i=e.operation;t.segmentIndex||await t.createSegmentIndex();let r=t.dependencyStream;r&&!r.segmentIndex&&await r.createSegmentIndex(),e.operation==i&&e.stream==t&&(v.assert(e.stream.segmentIndex,"Segment index should exist by now!"),this.shouldAbortCurrentRequest_(e)&&(p.info("Aborting current segment request."),e.operation.abort()))}shouldAbortCurrentRequest_(e){v.assert(e.operation,"Abort logic requires an ongoing operation!"),v.assert(e.stream&&e.stream.segmentIndex,"Abort logic requires a segment index");let t=this.playerInterface_.getPresentationTime(),i=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),r=this.getTimeNeeded_(e,t),s=e.stream.segmentIndex.find(r),n=s==null?null:e.stream.segmentIndex.get(s),a=n?n.getSize():null;if(n&&!a){let _=n.getEndTime()-n.getStartTime(),T=e.stream.bandwidth||this.currentVariant_.bandwidth;a=_*T/8}if(!a)return!0;let o=n.initSegmentReference;o&&(a+=o.getSize()||0);let c=this.playerInterface_.getBandwidthEstimate(),d=a*8/c,u=(i||0)-t,m=this.config_.rebufferingGoal,f=u-m;return d<f||e.operation.getBytesRemaining()>a}seeked(){if(!this.playerInterface_)return;let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=s=>this.playerInterface_.mediaSourceEngine.isBuffered(s,e),r=!1;for(let s of this.mediaStates_.keys()){let n=this.mediaStates_.get(s),a=Be.logPrefix_(n);if(!this.crossBoundarySeek_&&!i(s)){if(this.lastMediaSourceReset_=0,n.segmentPrefetch&&n.segmentPrefetch.resetPosition(),n.type===t.AUDIO)for(let d of this.audioPrefetchMap_.values())d.resetPosition();n.segmentIterator=null,(this.playerInterface_.mediaSourceEngine.bufferEnd(s)!=null||n.performingUpdate)&&(this.forceClearBuffer_(n),r=!0),n.operation&&(n.operation.abort(),p.debug(a,"Aborting operation due to seek"),n.operation=null),s===t.TEXT&&this.playerInterface_.mediaSourceEngine.resetCaptionParser(),n.seeked=!0}this.crossBoundarySeek_&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0)}this.shouldUseCrossBoundaryLogic_()&&this.forwardTimeForCrossBoundary_(),r||p.debug("(all): seeked: buffered seek: presentationTime="+e)}forceClearBuffer_(e){let t=Be.logPrefix_(e);if(e.clearingBuffer){p.debug(t,"clear: already clearing the buffer");return}if(e.waitingToClearBuffer){p.debug(t,"clear: already waiting");return}if(e.performingUpdate){p.debug(t,"clear: currently updating"),e.waitingToClearBuffer=!0,e.clearBufferSafeMargin=0;return}let i=e.type;if(this.playerInterface_.mediaSourceEngine.bufferStart(i)==null){p.debug(t,"clear: nothing buffered"),e.updateTimer==null&&this.scheduleUpdate_(e,0);return}p.debug(t,"clear: handling right now"),this.cancelUpdate_(e),this.clearBuffer_(e,!1,0).catch(r=>{this.playerInterface_&&(v.assert(r instanceof h,"Wrong error type!"),this.playerInterface_.onError(r))})}async initStreams_(e){if(v.assert(this.config_,"StreamingEngine configure() must be called before init()!"),!this.currentVariant_)throw p.error("init: no Streams chosen"),new h(h.Severity.CRITICAL,h.Category.STREAMING,h.Code.STREAMING_ENGINE_STARTUP_INVALID_STATE);let t=this.getStreamsByType_(!0);await this.playerInterface_.mediaSourceEngine.init(t,this.manifest_.sequenceMode,this.manifest_.type,this.manifest_.ignoreManifestTimestampsInSegmentsMode),this.destroyer_.ensureNotDestroyed(),this.updateDuration().catch(()=>{});for(let r of t.keys()){let s=t.get(r);if(!this.mediaStates_.has(r)){let n=this.createMediaState_(s),a=e.get(s.id);a&&(a.replaceFetchDispatcher((o,c,d)=>this.dispatchFetch_(o,c,d)),n.segmentPrefetch=a),this.mediaStates_.set(r,n),this.scheduleUpdate_(n,0)}}this.setupCrossBoundaryListeners_()}createMediaState_(e){let t={stream:e,type:e.type,segmentIterator:null,segmentPrefetch:this.createSegmentPrefetch_(e),lastSegmentReference:null,lastInitSegmentReference:null,lastTimestampOffset:null,lastAppendWindowStart:null,lastAppendWindowEnd:null,lastCodecs:null,lastMimeType:null,restoreStreamAfterTrickPlay:null,endOfStream:!1,performingUpdate:!1,updateTimer:null,waitingToClearBuffer:!1,clearBufferSafeMargin:0,waitingToFlushBuffer:!1,clearingBuffer:!1,seeked:!0,adaptation:!1,recovering:!1,hasError:!1,operation:null,dependencyMediaState:null};return e.dependencyStream&&(t.dependencyMediaState=this.createMediaState_(e.dependencyStream)),t}createSegmentPrefetch_(e){let t=R.ContentType;if(this.manifest_.type==me.MSF||e.type===t.VIDEO&&this.config_.disableVideoPrefetch||e.type===t.AUDIO&&this.config_.disableAudioPrefetch)return null;let i=N.CEA608_CLOSED_CAPTION_MIMETYPE,r=N.CEA708_CLOSED_CAPTION_MIMETYPE;if(e.type===t.TEXT&&(e.mimeType==i||e.mimeType==r)||e.type===t.TEXT&&this.config_.disableTextPrefetch)return null;if(this.audioPrefetchMap_.has(e))return this.audioPrefetchMap_.get(e);let s=e.type,n=this.mediaStates_.get(s),a=n&&n.segmentPrefetch;if(a&&e===a.getStream())return a;if(this.config_.segmentPrefetchLimit>0){let o=this.playerInterface_.getPlaybackRate()<0;return new Xr(this.config_.segmentPrefetchLimit,e,(c,d,u)=>this.dispatchFetch_(c,d,u),o,this.playerInterface_.shouldPrefetchNextSegment,this.playerInterface_.getPlaybackRate)}return null}updatePrefetchMapForAudio_(){let e=this.config_.segmentPrefetchLimit,t=this.config_.prefetchAudioLanguages;for(let i of this.manifest_.variants){if(!i.audio)continue;if(this.audioPrefetchMap_.has(i.audio)){let s=this.audioPrefetchMap_.get(i.audio);if(s.resetLimit(e),!(e>0)||!t.some(n=>ve.areLanguageCompatible(i.audio.language,n))){let n=i.audio.type,a=this.mediaStates_.get(n),o=a&&a.segmentPrefetch;s!==o&&s.clearAll(),this.audioPrefetchMap_.delete(i.audio)}continue}if(e<=0||!t.some(s=>ve.areLanguageCompatible(i.audio.language,s)))continue;let r=this.createSegmentPrefetch_(i.audio);r&&(i.audio.segmentIndex||i.audio.createSegmentIndex(),this.audioPrefetchMap_.set(i.audio,r))}}async updateDuration(){let e=Ke.isInfiniteLiveStreamDurationSupported(),t=this.manifest_.presentationTimeline.getDuration();this.liveSeekableRangeEventManager_.removeAll(),t<1/0?(e&&(this.updateLiveSeekableRangeTimer_&&this.updateLiveSeekableRangeTimer_.stop(),this.playerInterface_.mediaSourceEngine.clearLiveSeekableRange()),await this.playerInterface_.mediaSourceEngine.setDuration(t)):e?(await this.playerInterface_.mediaSourceEngine.setDuration(1/0),this.updateLiveSeekableRangeTimer_&&(this.updateLiveSeekableRangeTimer_.tickNow(),this.liveSeekableRangeEventManager_.listenOnce(this.playerInterface_.video,"timeupdate",()=>{this.updateLiveSeekableRangeTimer_.tickNow().tickEvery(.5)}))):this.playerInterface_.mediaSourceEngine.setDuration(Math.pow(2,32))}async onUpdate_(e){this.destroyer_.ensureNotDestroyed();let t=R.ContentType,i=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer!=null,i+" unexpected call to onUpdate_()"),e.performingUpdate||e.updateTimer==null||(v.assert(!e.clearingBuffer,i+" onUpdate_() should not be called when clearing the buffer"),e.clearingBuffer))return;if(e.updateTimer=null,e.waitingToClearBuffer){p.debug(i,"skipping update and clearing the buffer"),await this.clearBuffer_(e,e.waitingToFlushBuffer,e.clearBufferSafeMargin);return}if(this.handleDeferredCloseSegmentIndexes_(e),!e.stream.segmentIndex){let a=e.stream,o=e.stream.codecs,c=e.stream.mimeType;try{await e.stream.createSegmentIndex()}catch(d){await this.handleStreamingError_(e,d);return}if(e.type===t.TEXT&&(o!=e.stream.codecs||c!=e.stream.mimeType)){let d=N.getFullType(e.stream.mimeType,e.stream.codecs);this.playerInterface_.mediaSourceEngine.reinitText(d,e.stream.external)}if(a!=e.stream){a.closeSegmentIndex&&(v.assert(!e.stream.segmentIndex,"mediaState.stream should not have segmentIndex yet."),a.closeSegmentIndex()),!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0);return}}if(e.dependencyMediaState&&!e.dependencyMediaState.stream.segmentIndex)try{await e.dependencyMediaState.stream.createSegmentIndex()}catch(a){p.warning("Could not create segment index for dependency",a)}try{let a=this.update_(e);a!=null&&(this.scheduleUpdate_(e,a),e.hasError=!1)}catch(a){await this.handleStreamingError_(e,a);return}if(e.type===t.TEXT)return;let r=[];e.stream&&!e.stream.isAudioMuxedInVideo&&r.push(e);let s=e.type===t.AUDIO?t.VIDEO:t.AUDIO,n=this.mediaStates_.get(s);if(n&&n.stream&&!n.stream.isAudioMuxedInVideo&&r.push(n),this.startupComplete_&&r.every(a=>a.endOfStream)){p.v1(i,"calling endOfStream()..."),await this.playerInterface_.mediaSourceEngine.endOfStream(),this.destroyer_.ensureNotDestroyed();let a=this.playerInterface_.mediaSourceEngine.getDuration();a!=0&&a<this.manifest_.presentationTimeline.getDuration()&&this.manifest_.presentationTimeline.setDuration(a)}}update_(e){v.assert(this.manifest_,"manifest_ should not be null"),v.assert(this.config_,"config_ should not be null");let t=R.ContentType;if(Be.isEmbeddedText_(e))return this.playerInterface_.mediaSourceEngine.setSelectedClosedCaptionId(e.stream.originalId||""),null;if(e.type==t.TEXT&&this.playerInterface_.mediaSourceEngine.clearSelectedClosedCaptionId(),e.stream.isAudioMuxedInVideo&&e.type==t.AUDIO)return null;if(e.type!=t.TEXT&&this.playerInterface_.mediaSourceEngine.closed())return this.resetMediaSource(!0),null;let i=this.config_.updateIntervalSeconds/Math.max(1,Math.abs(this.playerInterface_.getPlaybackRate()));if(!this.playerInterface_.mediaSourceEngine.isStreamingAllowed()&&e.type!=t.TEXT)return i/2;let r=Be.logPrefix_(e),s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.getPlaybackRate()<0;if(e.type===t.AUDIO)for(let k of this.audioPrefetchMap_.keys()){let L=this.audioPrefetchMap_.get(k);L.evict(s,!0),L.prefetchSegmentsByTime(s)}let a=this.getTimeNeeded_(e,s);p.v2(r,"timeNeeded="+a);let o=n?this.playerInterface_.mediaSourceEngine.bufferedBehindOf(e.type,s):this.playerInterface_.mediaSourceEngine.bufferedAheadOf(e.type,s);p.v2(r,"update_:","presentationTime="+s,"bufferedAhead="+o);let c=Math.max(this.config_.rebufferingGoal,this.config_.bufferingGoal),d=Math.max(1,c*this.bufferingScale_),u=this.manifest_.presentationTimeline.isDynamic()?1/0:this.manifest_.presentationTimeline.getDuration()-a,m=1e-6,f=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);if(!n&&u<m&&f){if(p.debug(r,"buffered to end of presentation"),e.endOfStream=!0,e.type==t.VIDEO){let k=this.mediaStates_.get(t.TEXT);k&&Be.isEmbeddedText_(k)&&(k.endOfStream=!0);let L=this.mediaStates_.get(t.AUDIO);L&&L.stream.isAudioMuxedInVideo&&(L.endOfStream=!0)}return null}if(e.endOfStream=!1,n){let k=this.manifest_.presentationTimeline.getSeekRangeStart();if(f!=null&&a<=k+m)return p.debug(r,"buffered to start of presentation"),null}if(o>0&&this.config_.stopFetchingOnPause&&this.playerInterface_.video.paused)return p.v2(r,"video paused"),i/2;if(o>=d)return p.v2(r,"buffering goal met"),i/2;let g=!e.segmentIterator,_=this.getSegmentReferenceNeeded_(e,s,f);if(!_){if(!this.manifest_.presentationTimeline.isDynamic()&&u<m){if(p.info(r,"Close to end with no buffer and no segment reference.","Marking as end of stream."),e.endOfStream=!0,e.type==t.VIDEO){let V=this.mediaStates_.get(t.TEXT);V&&Be.isEmbeddedText_(V)&&(V.endOfStream=!0)}return null}let k=1/0,L=e.lastSegmentReference;return L&&(k=L.endTime-L.startTime),Math.min(k/2,i)}let T=e.lastInitSegmentReference,S=_.initSegmentReference;T&&S&&Tt.equal(S,T)&&(T.boundaryEnd=S.boundaryEnd);let b=!1;g&&e.adaptation&&(b=!0,e.adaptation=!1);let E=1/0,C=-1/0;for(let k of this.mediaStates_.values()){if(Be.isEmbeddedText_(k)||k.stream.isAudioMuxedInVideo||k.segmentIterator&&!k.segmentIterator.current())continue;let L=this.getTimeNeeded_(k,s);E=Math.min(E,L),C=Math.max(C,L)}let w=this.manifest_.presentationTimeline.getMaxSegmentDuration()*Be.MAX_RUN_AHEAD_SEGMENTS_;return(n?C-a:a-E)>=w?(p.v2(r,"waiting for other streams to buffer"),i):(e.segmentPrefetch&&e.segmentIterator&&!this.audioPrefetchMap_.has(e.stream)&&(e.segmentPrefetch.evict(_.startTime+.001),e.segmentPrefetch.prefetchSegmentsByTime(_.startTime).catch(()=>{})),this.shouldUseCrossBoundaryLogic_()&&this.discardReferenceByBoundary_(e,_)||(this.fetchAndAppend_(e,s,_,b).catch(()=>{}),e.dependencyMediaState&&this.fetchAndAppendDependency_(e.dependencyMediaState,s,d)),null)}getTimeNeeded_(e,t){return e.lastSegmentReference?this.playerInterface_.getPlaybackRate()<0?e.lastSegmentReference.startTime:e.lastSegmentReference.endTime:t}getSegmentReferenceNeeded_(e,t,i){var s,n;let r=Be.logPrefix_(e);if(v.assert(e.stream.segmentIndex,"segment index should have been generated already"),e.segmentIterator){let a=e.segmentIterator.current();if(a&&e.lastSegmentReference){let o=e.lastSegmentReference.startTime,c=e.lastSegmentReference.endTime;jt.isFloatEqual(o,a.startTime,.002)&&jt.isFloatEqual(c,a.endTime,.002)&&(a=e.segmentIterator.next().value)}return a}else if(e.lastSegmentReference||i){let a=this.playerInterface_.getPlaybackRate()<0,o;if(a){let d=this.playerInterface_.mediaSourceEngine.bufferStart(e.type),u=e.lastSegmentReference?e.lastSegmentReference.startTime:null,m=d;u!=null&&(m==null||u<m)&&(m=u),o=m!=null?m-.001:i}else o=e.lastSegmentReference?e.lastSegmentReference.endTime:i;v.assert(o!=null,"Should have a time to search"),p.v1(r,"looking up segment from new stream endTime:",o),e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,a));let c=e.segmentIterator&&e.segmentIterator.next().value;return c==null&&p.warning(r,"cannot find segment","endTime:",o),c}else{let a=this.manifest_.sequenceMode||this.shouldUseCrossBoundaryLogic_()||this.manifest_.type===me.MSF?0:this.config_.inaccurateManifestTolerance,o=Math.max(t-a,0),c=this.playerInterface_.mediaSourceEngine.getDuration(),d=Be.LOOKUP_TIME_DURATION_THRESHOLD_;Math.abs(o-c)<d&&(a=d,o=Math.max(t-a,0)),p.v1(r,"looking up segment","lookupTime:",o,"presentationTime:",t);let u=this.playerInterface_.getPlaybackRate()<0,m=null;for(a&&(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(o,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value),m||(e.stream.segmentIndex&&(e.segmentIterator=e.stream.segmentIndex.getIteratorForTime(t,!1,u)),m=e.segmentIterator&&e.segmentIterator.next().value);(m==null?void 0:m.getStatus())===Se.Status.MISSING;)m=(n=(s=e.segmentIterator)==null?void 0:s.next().value)!=null?n:null;return m==null&&p.warning(r,"cannot find segment","lookupTime:",o,"presentationTime:",t),m}}async fetchAndAppend_(e,t,i,r){let s=R.ContentType,n=Be.logPrefix_(e);p.v1(n,"fetchAndAppend_:","presentationTime="+t,"reference.startTime="+i.startTime,"reference.endTime="+i.endTime);let a=e.stream,o=e.segmentIterator;e.performingUpdate=!0;try{if(i.getStatus()==Se.Status.MISSING)throw new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.SEGMENT_MISSING);if(await this.initSourceBuffer_(e,i,r),this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;p.v2(n,"fetching segment");let c=a.mimeType=="video/mp4"||a.mimeType=="audio/mp4",d=window.ReadableStream,u=this.config_.lowLatencyMode&&this.manifest_.isLowLatency,m={mediaTimestamp:null};if(u&&d&&c&&(this.manifest_.type!=me.HLS||i.hasByterangeOptimization())){let T=new Uint8Array(0),S=!1,b=!1,E,C=async w=>{if(!S&&(b=!0,this.destroyer_.ensureNotDestroyed(),!this.fatalError_))try{T=ne.concat(T,w);let M=!1,x=0;if(new F().box("mdat",k=>{x=k.size+k.start,M=!0}).parse(T,!1,!0),M){let k=T.subarray(0,x);T=T.subarray(x);let L=await this.append_(e,t,a,i,k,!0,r);m.mediaTimestamp==null&&(m=L),e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}}catch(M){E=M}},A=await this.fetch_(e,i,C);if(E)throw E;if(!b){if(S=!0,this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,A,!1,r)}e.segmentPrefetch&&e.segmentIterator&&e.segmentPrefetch.prefetchSegmentsByTime(i.startTime,!0)}else{u&&!d&&p.warning("Low latency streaming mode is enabled, but ReadableStream is not supported by the browser.");let S=await this.fetch_(e,i);if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;if(this.destroyer_.ensureNotDestroyed(),e.waitingToClearBuffer){p.info(n,"waitingToClearBuffer, skip append"),e.performingUpdate=!1,this.scheduleUpdate_(e,0);return}m=await this.append_(e,t,a,i,S,!1,r)}if(this.destroyer_.ensureNotDestroyed(),this.fatalError_)return;e.lastSegmentReference=i;let f=o.next().value;p.v2(n,"advancing to next segment",f),e.performingUpdate=!1,e.recovering=!1;let _=this.playerInterface_.mediaSourceEngine.getBufferedInfo()[e.type];if(p.v1(n,"finished fetch and append",JSON.stringify(_)),!e.waitingToClearBuffer){let T=null;e.type===s.VIDEO?T=this.mediaStates_.get(s.AUDIO):e.type===s.AUDIO&&(T=this.mediaStates_.get(s.VIDEO)),T&&T.type==s.AUDIO?this.playerInterface_.onSegmentAppended(i,e.stream,T.stream.isAudioMuxedInVideo,!1,m.mediaTimestamp):this.playerInterface_.onSegmentAppended(i,e.stream,e.stream.codecs.includes(","),!1,m.mediaTimestamp)}this.cancelUpdate_(e),this.scheduleUpdate_(e,0)}catch(c){if(this.destroyer_.ensureNotDestroyed(c),this.fatalError_)return;v.assert(c instanceof h,"Should only receive a Shaka error"),e.performingUpdate=!1,c.code==h.Code.OPERATION_ABORTED?(e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0)):e.type==s.TEXT&&this.config_.ignoreTextStreamFailures?(c.code==h.Code.BAD_HTTP_STATUS?p.warning(n,"Text stream failed to download. Proceeding without it."):p.warning(n,"Text stream failed to parse. Proceeding without it."),this.mediaStates_.delete(s.TEXT)):c.code==h.Code.QUOTA_EXCEEDED_ERROR?await this.handleQuotaExceeded_(e,c):(p.error(n,"failed fetch and append: code="+c.code),e.hasError=!0,c.category==h.Category.NETWORK&&e.segmentPrefetch&&e.segmentPrefetch.removeReference(i),c.severity=h.Severity.CRITICAL,await this.handleStreamingError_(e,c))}}async fetchAndAppendDependency_(e,t,i){let r=R.ContentType,s=e.stream,n=s.segmentIndex,a=n&&n.getIteratorForTime(t),o=a&&a.next().value;for(;o&&this.requestedDependencySegments_.includes(o.startTime);)o=a&&a.next().value;if(o){let c=o.initSegmentReference;if(c&&!Tt.equal(c,e.lastInitSegmentReference)){e.lastInitSegmentReference=c;try{let d=await this.fetch_(e,c);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(d,0,s),this.requestedDependencySegments_=[]}catch(d){throw e.lastInitSegmentReference=null,d}}if(!e.lastSegmentReference||e.lastSegmentReference!=o){e.lastSegmentReference=o;try{let m=await this.fetch_(e,o);if(!this.playerInterface_)return;this.playerInterface_.mediaSourceEngine.appendDependency(m,0,s),this.requestedDependencySegments_.push(o.startTime)}catch(m){throw e.lastSegmentReference=null,m}if(!this.playerInterface_)return;if(!e.waitingToClearBuffer){let m=null;e.type===r.VIDEO?m=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(m=this.mediaStates_.get(r.VIDEO)),m&&m.type==r.AUDIO?this.playerInterface_.onSegmentAppended(o,e.stream,m.stream.isAudioMuxedInVideo,!0,null):this.playerInterface_.onSegmentAppended(o,e.stream,e.stream.codecs.includes(","),!0,null)}let d=Math.max(0,...this.requestedDependencySegments_);this.playerInterface_.getPresentationTime()+i>d&&await this.fetchAndAppendDependency_(e,o.startTime,i)}}}retry(e){if(this.destroyer_.destroyed())return p.error("Unable to retry after StreamingEngine is destroyed!"),!1;if(this.fatalError_)return p.error("Unable to retry after StreamingEngine encountered a fatal error!"),!1;for(let t of this.mediaStates_.values()){let i=Be.logPrefix_(t);t.hasError&&!t.performingUpdate&&!t.updateTimer&&(p.info(i,"Retrying after failure..."),t.hasError=!1,this.scheduleUpdate_(t,e))}return!0}async handleQuotaExceeded_(e,t){let i=Be.logPrefix_(e),r=!1;for(let s of this.mediaStates_.values())if(s!=e&&s.recovering){r=!0;break}if(r)p.debug(i,"MediaSource threw QuotaExceededError:","waiting for another stream to recover...");else{if(this.config_.avoidEvictionOnQuotaExceededError){let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o))return;this.scheduleUpdate_(e,4);return}let s=Math.round(100*this.bufferingScale_);if(s>20)this.bufferingScale_-=.2;else if(s>4)this.bufferingScale_-=.04;else{let o=this.getDisabledTime_(t);if(o&&p.debug(i,"Disabling stream due to quota",t),this.playerInterface_.disableStream(e.stream,o)){this.bufferingScale_=1;let d=this.playerInterface_.getPresentationTime();await this.evict_(e,d)}else p.error(i,"MediaSource threw QuotaExceededError too many times"),e.hasError=!0,this.fatalError_=!0,this.playerInterface_.onError(t);return}let n=Math.round(100*this.bufferingScale_);p.warning(i,"MediaSource threw QuotaExceededError:","reducing buffering goals by "+(100-n)+"%"),e.recovering=!0;let a=this.playerInterface_.getPresentationTime();await this.evict_(e,a)}this.scheduleUpdate_(e,4)}async initSourceBuffer_(e,t,i){let r=R.ContentType,s=Be.logPrefix_(e),n=e.lastSegmentReference==null,a=[],o=Math.max(0,Math.max(t.appendWindowStart,this.playRangeStart_)-Be.APPEND_WINDOW_START_FUDGE_),c=Math.min(t.appendWindowEnd,this.playRangeEnd_)+Be.APPEND_WINDOW_END_FUDGE_;if(this.config_.clampAppendWindowToDuration){let _=this.manifest_.presentationTimeline.getDuration();_<1/0&&(c=Math.min(c,_))}v.assert(t.startTime<=c,s+" segment should start before append window end");let d=t.codecs||e.stream.codecs,u=N.getCodecBase(d),m=N.getBasicType(t.mimeType||e.stream.mimeType),f=t.timestampOffset;if(f!=e.lastTimestampOffset||o!=e.lastAppendWindowStart||c!=e.lastAppendWindowEnd||u!=e.lastCodecs||m!=e.lastMimeType){if(p.v1(s,"setting timestamp offset to "+f),p.v1(s,"setting append window start to "+o),p.v1(s,"setting append window end to "+c),e.lastCodecs&&e.lastMimeType&&this.playerInterface_.mediaSourceEngine.isResetMediaSourceNecessary(e.type,m,d,this.getStreamsByType_())){let T=null;e.type===r.VIDEO?T=this.mediaStates_.get(r.AUDIO):e.type===r.AUDIO&&(T=this.mediaStates_.get(r.VIDEO)),T&&(await this.abortOperations_(T).catch(()=>{}),T.lastInitSegmentReference=null,T.lastAppendWindowStart=null,T.lastAppendWindowEnd=null,this.forceClearBuffer_(T))}await this.setProperties_(e,f,o,c,t,u,m)}if(!Tt.equal(t.initSegmentReference,e.lastInitSegmentReference)&&(e.lastInitSegmentReference=t.initSegmentReference,t.isIndependent()&&t.initSegmentReference)){p.v1(s,"fetching init segment");let _=this.fetch_(e,t.initSegmentReference),T=async()=>{try{let b=await _;this.destroyer_.ensureNotDestroyed();let E=null,C=new Map,A={projection:null,hfov:null};if(e.stream){let L=e.stream.videoLayout;if(L){let V=L.split("/");V.includes("PROJ-RECT")?A.projection="rect":V.includes("PROJ-EQUI")?A.projection="equi":V.includes("PROJ-HEQU")?A.projection="hequ":V.includes("PROJ-PRIM")?A.projection="prim":V.includes("PROJ-AIV")&&(A.projection="aiv")}}let w=new F;w.boxes(["moov","trak","mdia"],F.children).fullBox("mdhd",L=>{v.assert(L.version!=null,"MDHD is a full box and should have a valid version."),E=pe.parseMDHD(L.reader,L.version).timescale}).fullBox("hdlr",L=>{switch(v.assert(L.version!=null,"HDLR is a full box and should have a valid version."),pe.parseHDLR(L.reader).handlerType){case"soun":C.set(r.AUDIO,E);break;case"vide":C.set(r.VIDEO,E);break}E=null}),e.type===r.VIDEO&&!A.projection&&w.boxes(["minf","stbl"],F.children).fullBox("stsd",F.sampleDescription).boxes([...F.AVC_HEVC_VVC_DV,"encv"],F.visualSampleEntry).boxes(["vexu","proj"],F.children).fullBox("prji",L=>{let V=pe.parsePRJI(L.reader);A.projection=V.projection}).box("hfov",L=>{let V=pe.parseHFOV(L.reader);A.hfov=V.hfov}),w.parse(b,!0,!0),e.type===r.VIDEO&&this.updateSpatialVideoInfo_(A),C.has(e.type)?t.initSegmentReference.timescale=C.get(e.type):E!=null&&(t.initSegmentReference.timescale=E);let M=e.stream.segmentIndex,x;M instanceof Mi&&(x=M.getTimelineForTime(t.startTime)),p.v1(s,"appending init segment");let k=e.stream.closedCaptions&&e.stream.closedCaptions.size>0;await this.playerInterface_.beforeAppendSegment(e.type,b),await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,b,null,e.stream,k,e.seeked,i,!1,!1,x)}catch(b){throw e.lastInitSegmentReference=null,b}},S=t.startTime;if(n){let b=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type);b!=null&&(S=b)}this.playerInterface_.onInitSegmentAppended(S,t.initSegmentReference),a.push(T())}let g=e.lastSegmentReference?e.lastSegmentReference.discontinuitySequence:-1;t.discontinuitySequence!=g&&a.push(this.playerInterface_.mediaSourceEngine.resync(e.type,t.startTime)),await Promise.all(a)}async setProperties_(e,t,i,r,s,n,a){let o=R.ContentType,c=this.getStreamsByType_();try{e.lastAppendWindowStart=i,e.lastAppendWindowEnd=r,n&&(e.lastCodecs=n),a&&(e.lastMimeType=a),e.lastTimestampOffset=t;let d=this.manifest_.sequenceMode||this.manifest_.type==me.HLS,u=null;e.type===o.VIDEO?u=this.mediaStates_.get(o.AUDIO):e.type===o.AUDIO&&(u=this.mediaStates_.get(o.VIDEO)),u&&u.stream&&u.stream.isAudioMuxedInVideo&&await this.playerInterface_.mediaSourceEngine.setStreamProperties(u.type,t,i,r,d,u.stream.mimeType,u.stream.codecs,c),await this.playerInterface_.mediaSourceEngine.setStreamProperties(e.type,t,i,r,d,s.mimeType||e.stream.mimeType,s.codecs||e.stream.codecs,c)}catch(d){throw e.lastAppendWindowStart=null,e.lastAppendWindowEnd=null,e.lastCodecs=null,e.lastMimeType=null,e.lastTimestampOffset=null,d}}async append_(e,t,i,r,s,n=!1,a=!1){let o=Be.logPrefix_(e),c=i.closedCaptions&&i.closedCaptions.size>0;if(this.config_.shouldFixTimestampOffset){let m=i.mimeType=="video/mp4"||i.mimeType=="audio/mp4",f=null;r.initSegmentReference&&(f=r.initSegmentReference.timescale),m&&f&&i.type===R.ContentType.VIDEO&&this.manifest_.type==me.DASH&&new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",async _=>{v.assert(_.version!=null,"TFDT is a full box and should have a valid version.");let S=pe.parseTFDTInaccurate(_.reader,_.version).baseMediaDecodeTime;if(!S)return;v.assert(typeof f=="number","Should be an number!");let b=-S/f;if((Number(e.lastTimestampOffset)||0)<b){let C=e.lastAppendWindowStart,A=e.lastAppendWindowEnd;v.assert(typeof C=="number","Should be an number!"),v.assert(typeof A=="number","Should be an number!"),await this.setProperties_(e,b,C,A,r)}}).parse(s,!1,n)}await this.evict_(e,t),this.destroyer_.ensureNotDestroyed();let d=e.seeked;e.seeked=!1,await this.playerInterface_.beforeAppendSegment(e.type,s);let u=await this.playerInterface_.mediaSourceEngine.appendBuffer(e.type,s,r,i,c,d,a,n);return this.destroyer_.ensureNotDestroyed(),p.v2(o,"appended media segment"),u}async evict_(e,t){this.lastTextMediaStateBeforeUnload_==e&&(this.lastTextMediaStateBeforeUnload_=null);let i=e.stream.segmentIndex,r;i instanceof Mi&&(i.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart()),r=[],i.forEachIndex(g=>{r.push(g.continuityTimeline())}));let s=Be.logPrefix_(e);p.v2(s,"checking buffer length");let n=Math.max(this.config_.bufferBehind*this.bufferingScale_,this.manifest_.presentationTimeline.getMaxSegmentDuration()),a=this.playerInterface_.mediaSourceEngine.bufferStart(e.type);if(a==null){p.v2(s,"buffer behind okay because nothing buffered:","presentationTime="+t,"bufferBehind="+n);return}let o=t-a,c=this.config_.evictionGoal,d=this.manifest_.presentationTimeline.getSeekRangeStart(),m=this.manifest_.presentationTimeline.getSeekRangeEnd()-d,f=o-n;if(m>c&&(f=Math.max(o-n,d-c-a)),f<=c){p.v2(s,"buffer behind okay:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"underflow="+Math.abs(f));return}p.v1(s,"buffer behind too large:","presentationTime="+t,"bufferedBehind="+o,"bufferBehind="+n,"evictionGoal="+c,"overflow="+f),await this.playerInterface_.mediaSourceEngine.remove(e.type,a,a+f,r),this.destroyer_.ensureNotDestroyed(),p.v1(s,"evicted "+f+" seconds"),this.lastTextMediaStateBeforeUnload_&&(await this.evict_(this.lastTextMediaStateBeforeUnload_,t),this.destroyer_.ensureNotDestroyed())}static isEmbeddedText_(e){let t=N.CEA608_CLOSED_CAPTION_MIMETYPE,i=N.CEA708_CLOSED_CAPTION_MIMETYPE;return e&&e.type==R.ContentType.TEXT&&(e.stream.mimeType==t||e.stream.mimeType==i)}async fetch_(e,t,i){let r=t.getSegmentData();if(r)return r;let s=null;e.segmentPrefetch&&(s=e.segmentPrefetch.getPrefetchedSegment(t,i)),s||(s=this.dispatchFetch_(t,e.stream,i));let n=0;e.segmentIterator&&(n=e.segmentIterator.currentPosition()),e.operation=s;let a=await s.promise;e.operation=null;let o=a.data;return t.aesKey&&(o=await vt.aesDecrypt(o,t.aesKey,n)),o}dispatchFetch_(e,t,i,r=!1){return v.assert(this.playerInterface_.netEngine,"Must have net engine"),Be.dispatchFetch(e,t,i||null,this.config_.retryParameters,this.playerInterface_.netEngine)}static dispatchFetch(e,t,i,r,s,n=!1){let a=K.RequestType.SEGMENT,o=e instanceof Se?e:void 0,c=o?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,d=ct.createSegmentRequest(e.getUris(),e.startByte,e.endByte,r,i);return d.contentType=t.type,p.v2("fetching: reference=",e),s.request(a,d,{type:c,stream:t,segment:o,isPreload:n})}async clearBuffer_(e,t,i){let r=Be.logPrefix_(e);if(v.assert(!e.performingUpdate&&e.updateTimer==null,r+" unexpected call to clearBuffer_()"),e.waitingToClearBuffer=!1,e.waitingToFlushBuffer=!1,e.clearBufferSafeMargin=0,e.clearingBuffer=!0,e.lastSegmentReference=null,e.segmentIterator=null,p.debug(r,"clearing buffer"),e.segmentPrefetch&&!this.audioPrefetchMap_.has(e.stream)&&e.segmentPrefetch.clearAll(),i){let s=this.playerInterface_.getPresentationTime(),n=this.playerInterface_.mediaSourceEngine.getDuration();await this.playerInterface_.mediaSourceEngine.remove(e.type,s+i,n)}else await this.playerInterface_.mediaSourceEngine.clear(e.type),this.destroyer_.ensureNotDestroyed(),t&&await this.playerInterface_.mediaSourceEngine.flush(e.type);this.destroyer_.ensureNotDestroyed(),p.debug(r,"cleared buffer"),e.clearingBuffer=!1,e.endOfStream=!1,!e.performingUpdate&&!e.updateTimer&&this.scheduleUpdate_(e,0)}scheduleUpdate_(e,t){let i=Be.logPrefix_(e),r=e.type;if(r==R.ContentType.TEXT&&!this.mediaStates_.has(r)){p.v1(i,"Text stream is unloaded. No update is needed.");return}p.v2(i,"updating in "+t+" seconds"),v.assert(e.updateTimer==null,i+" did not expect update to be scheduled"),e.updateTimer=new ae(async()=>{try{await this.onUpdate_(e)}catch(s){this.playerInterface_&&this.playerInterface_.onError(s)}}).tickAfter(t)}cancelUpdate_(e){e.updateTimer!=null&&(e.updateTimer.stop(),e.updateTimer=null)}async abortOperations_(e){e.operation&&await e.operation.abort()}async handleStreamingError_(e,t){let i=Be.logPrefix_(e);if(t.code==h.Code.STREAMING_NOT_ALLOWED){e.performingUpdate=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}if(await this.failureCallbackBackoff_.attempt(),this.destroyer_.ensureNotDestroyed(),t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.category===h.Category.NETWORK&&t.code!=h.Code.TIMEOUT){if(e.restoreStreamAfterTrickPlay){this.setTrickPlay(!1);return}if(t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED){t.handled=await this.resetMediaSource(!0);for(let s of this.mediaStates_.values())this.cancelUpdate_(s);this.destroyer_.ensureNotDestroyed()}let r=this.getDisabledTime_(t);r&&p.debug(i,"Disabling stream due to error",t),t.handled=this.playerInterface_.disableStream(e.stream,r)||t.handled,t.handled&&(t.severity=h.Severity.RECOVERABLE)}if(!t.handled&&t.code==h.Code.SEGMENT_MISSING){let r=this.playerInterface_.getPresentationTime(),s=this.playerInterface_.mediaSourceEngine.bufferEnd(e.type),n=this.getSegmentReferenceNeeded_(e,r,s);for(;(n==null?void 0:n.getStatus())===Se.Status.MISSING;)e.lastSegmentReference=n,n=this.getSegmentReferenceNeeded_(e,r,s);if(n){await this.playerInterface_.mediaSourceEngine.resync(e.type,n.startTime),e.performingUpdate=!1,e.hasError=!1,this.cancelUpdate_(e),this.scheduleUpdate_(e,0);return}}(!t.handled||t.code!=h.Code.SEGMENT_MISSING)&&this.playerInterface_.onError(t),t.handled||this.config_.failureCallback(t)}getDisabledTime_(e){return this.config_.maxDisabledTime===0&&e.code==h.Code.SEGMENT_MISSING?1:e.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||e.code==h.Code.MEDIA_SOURCE_OPERATION_THREW?1/0:this.config_.maxDisabledTime}async resetMediaSource(e=!1,t=!0){let i=Date.now()/1e3,r=this.config_.minTimeBetweenRecoveries;if(!e&&(!this.config_.allowMediaSourceRecoveries||i-this.lastMediaSourceReset_<r))return!1;this.lastMediaSourceReset_=i;let s=R.ContentType,n=this.mediaStates_.get(s.AUDIO);n&&(this.cancelUpdate_(n),n.operation&&(n.operation.abort(),n.operation=null),n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.lastInitSegmentReference=null,n.lastAppendWindowStart=null,n.lastAppendWindowEnd=null,n.performingUpdate=!1,n.waitingToClearBuffer=!1,n.clearBufferSafeMargin=0,n.waitingToFlushBuffer=!1,n.clearingBuffer=!1,n.segmentIterator&&n.segmentIterator.resetToLastIndependent());let a=this.mediaStates_.get(s.VIDEO);a&&(this.cancelUpdate_(a),a.operation&&(a.operation.abort(),a.operation=null),a.lastInitSegmentReference=null,a.lastAppendWindowStart=null,a.lastAppendWindowEnd=null,a.performingUpdate=!1,a.waitingToClearBuffer=!1,a.clearBufferSafeMargin=0,a.waitingToFlushBuffer=!1,a.clearingBuffer=!1,a.segmentIterator&&a.segmentIterator.resetToLastIndependent());let o=this.playerInterface_.video.paused;return await this.playerInterface_.mediaSourceEngine.reset(this.getStreamsByType_()),a&&!a.clearingBuffer&&!a.performingUpdate&&!a.updateTimer&&this.scheduleUpdate_(a,0),n&&!n.clearingBuffer&&!n.performingUpdate&&!n.updateTimer&&this.scheduleUpdate_(n,0),o||this.playerInterface_.video.play(),!0}updateSpatialVideoInfo_(e){if(this.spatialVideoInfo_.projection!=e.projection||this.spatialVideoInfo_.hfov!=e.hfov){let t=U.EventName,i;if(e.projection!=null||e.hfov!=null){let r=t.SpatialVideoInfoEvent,s=new Map().set("detail",e);i=new U(r,s)}else{let r=t.NoSpatialVideoInfoEvent;i=new U(r)}i.cancelable=!0,this.playerInterface_.onEvent(i),this.spatialVideoInfo_=e}}updateSegmentIteratorReverse_(){let e=this.playerInterface_.getPlaybackRate()<0;for(let t of this.mediaStates_.values())t.segmentIterator&&t.segmentIterator.setReverse(e),t.segmentPrefetch&&t.segmentPrefetch.setReverse(e),e&&(t.segmentIterator=null,t.endOfStream=!1,!t.performingUpdate&&!t.updateTimer&&!t.clearingBuffer&&!t.waitingToClearBuffer&&this.scheduleUpdate_(t,0));for(let t of this.audioPrefetchMap_.values())t.setReverse(e)}shouldUseCrossBoundaryLogic_(){if(this.config_.crossBoundaryStrategy!==Ti.KEEP)return!0;let e=j.getDevice(),t=this.playerInterface_.getKeySystem();if(e.supportsSmoothCodecSwitching(t)){if(!e.supportsContainerChangeType())for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1){let a=new Set;for(let o of n.fullMimeTypes)a.add(N.getContainerType(o));return a.size>1}}}else for(let i of this.mediaStates_.keys()){let r=this.mediaStates_.get(i),s=R.ContentType;if(r.type===s.TEXT)continue;let n=r.stream;if(n&&n.fullMimeTypes&&n.fullMimeTypes.size>1)return!0}return!1}setupCrossBoundaryListeners_(){this.crossBoundaryEventManager_.removeAll(),this.shouldUseCrossBoundaryLogic_()&&this.crossBoundaryEventManager_.listenMulti(this.playerInterface_.video,["waiting","timeupdate"],()=>{this.forwardTimeForCrossBoundary_()})}forwardTimeForCrossBoundary_(){if(!this.shouldUseCrossBoundaryLogic_())return;this.crossBoundaryTimer_.stop();let e=this.playerInterface_.getPresentationTime(),t=R.ContentType,i=this.mediaStates_.get(t.VIDEO)||this.mediaStates_.get(t.AUDIO);if(!i)return;let r=i.lastInitSegmentReference;if(!r||r.boundaryEnd===null)return;let s=Be.CROSS_BOUNDARY_END_THRESHOLD_,n=r.boundaryEnd-e;n<0||n>s||(this.boundaryTime_=r.boundaryEnd+Be.APPEND_WINDOW_END_FUDGE_,this.crossBoundaryTimer_.tickAfter(n))}discardReferenceByBoundary_(e,t){let i=R.ContentType;if(e.type===i.TEXT)return!1;let r=e.lastInitSegmentReference;if(!r)return!1;let s=Be.logPrefix_(e),n=t.initSegmentReference,a=r.boundaryEnd!==n.boundaryEnd;if(this.config_.crossBoundaryStrategy===Ti.RESET_TO_ENCRYPTED&&(!r.encrypted&&!n.encrypted&&(a=!1),r.encrypted&&(p.debug(s,"stream is encrypted, discard crossBoundaryStrategy"),this.config_.crossBoundaryStrategy=Ti.KEEP)),this.config_.crossBoundaryStrategy===Ti.RESET_ON_ENCRYPTION_CHANGE&&r.encrypted==n.encrypted&&(a=!1),this.config_.crossBoundaryStrategy===Ti.KEEP&&r.mimeType&&n.mimeType){let c=N.getNormalizedCodec(N.getCodecs(r.mimeType)),d=N.getNormalizedCodec(N.getCodecs(n.mimeType));r.mimeType==n.mimeType&&c==d&&(a=!1)}return(this.mediaStates_.get(i.VIDEO)||this.mediaStates_.get(i.AUDIO))===e&&a&&(this.crossBoundarySeek_||e.seeked)&&(p.debug(s,"reset mediaSource","from=",e.lastInitSegmentReference,"to=",t.initSegmentReference),this.crossBoundarySeek_=!1,this.resetMediaSource(!0).then(()=>{let c=U.EventName.BoundaryCrossed,d=new Map().set("oldEncrypted",r.encrypted).set("newEncrypted",n.encrypted);this.playerInterface_.onEvent(new U(c,d))})),a}getStreamsByType_(e=!1){let t=R.ContentType,i=a=>{if(a.fullMimeTypes&&a.fullMimeTypes.size>1&&this.mediaStates_.has(a.type)){let o=this.mediaStates_.get(a.type),c=this.playerInterface_.mediaSourceEngine.bufferEnd(o.type),d=this.playerInterface_.getPresentationTime(),u=this.getSegmentReferenceNeeded_(o,d,c);u&&u.codecs&&u.mimeType&&(a.codecs=u.codecs,a.mimeType=u.mimeType)}},r=new Map,s=this.currentVariant_.audio;s&&(i(s),r.set(t.AUDIO,s));let n=this.currentVariant_.video;return n&&(i(n),r.set(t.VIDEO,n)),e&&this.currentTextStream_&&r.set(t.TEXT,this.currentTextStream_),r}static logPrefix_(e){return"("+e.type+":"+e.stream.id+")"}};l(Be,"APPEND_WINDOW_START_FUDGE_",.1),l(Be,"APPEND_WINDOW_END_FUDGE_",.1),l(Be,"MAX_RUN_AHEAD_SEGMENTS_",1),l(Be,"CROSS_BOUNDARY_END_THRESHOLD_",1),l(Be,"LOOKUP_TIME_DURATION_THRESHOLD_",1);var jr=Be;/*! @license
|
|
365
|
+
* Shaka Player
|
|
366
|
+
* Copyright 2016 Google LLC
|
|
367
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
368
|
+
*/var Pt=class y{static mergeConfigObjects(e,t,i,r,s){v.assert(e,"Destination config must not be null!");let n=s in r,a=new Set(["__proto__","constructor","prototype"]),o=!1;n?o=i.constructor==Object&&Object.keys(r).length==0:o=i.constructor==Object&&Object.keys(i).length==0;let c=n||o,d=!0;for(let u of Object.keys(t)){let m=s+"."+u,f=n?r[s]:i[u];if(a.has(u))p.alwaysError("Invalid config, dangerous key "+m),d=!1;else if(!c&&!(u in i))p.alwaysError("Invalid config, unrecognized key "+m),d=!1;else if(t[u]===void 0)f===void 0||c?delete e[u]:e[u]=Ne.cloneObject(f);else if(o)e[u]=t[u];else if(f.constructor==Object&&t[u]&&t[u].constructor==Object){e[u]||(e[u]=Ne.cloneObject(f));let g=y.mergeConfigObjects(e[u],t[u],f,r,m);d=d&&g}else typeof t[u]!=typeof f||t[u]==null||typeof t[u]!="function"&&t[u].constructor!=f.constructor?(p.alwaysError("Invalid config, wrong type for "+m),d=!1):typeof i[u]=="function"&&i[u].length!=t[u].length?(p.alwaysWarn("Unexpected number of arguments for "+m),e[u]=t[u]):Array.isArray(e[u])?e[u]=t[u].slice():e[u]=t[u]}return d}static convertToConfigObject(e,t){let i={},r=i,s=0,n=0;for(;;){let a=e.indexOf(".",s);if(a<0)break;if(a==0||e[a-1]!="\\"){let o=e.substring(n,a).replace(/\\\./g,".");r[o]={},r=r[o],n=a+1}s=a+1}return r[e.substring(n).replace(/\\\./g,".")]=t,i}static referenceParametersAndReturn(e,t){return e&&t}static getDifferenceFromConfigObjects(e,t){let i=a=>a&&typeof a=="object"&&!Array.isArray(a),r=(a,o)=>Object.keys(a).reduce((c,d)=>{let u=a[d];if(!o.hasOwnProperty(d))c[d]=u;else if(u instanceof HTMLElement&&o[d]instanceof HTMLElement)u.isEqualNode(o[d])||(c[d]=u);else if(i(u)&&i(o[d])){let m=r(u,o[d]);(Object.keys(m).length>0||!i(m))&&(c[d]=m)}else Array.isArray(u)&&Array.isArray(o[d])?ye.equal(u,o[d])||(c[d]=u):Number.isNaN(u)&&Number.isNaN(o[d])||u!==o[d]&&(c[d]=u);return c},{}),s=r(e,t),n=a=>{for(let o of Object.keys(a))a[o]instanceof HTMLElement||(i(a[o])&&Object.keys(a[o]).length===0||typeof a[o]=="function"?delete a[o]:i(a[o])&&(n(a[o]),Object.keys(a[o]).length===0&&delete a[o]))};return n(s),s}};/*! @license
|
|
369
|
+
* Shaka Player
|
|
370
|
+
* Copyright 2016 Google LLC
|
|
371
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
372
|
+
*/var er=class{constructor(e){l(this,"logHalf_");l(this,"alpha_");l(this,"estimate_");l(this,"totalWeight_");v.assert(e>0,"expected halfLife to be positive"),this.logHalf_=Math.log(.5),this.alpha_=Math.exp(this.logHalf_/e),this.estimate_=0,this.totalWeight_=0}updateAlpha(e){v.assert(e>0,"expected halfLife to be positive"),this.alpha_=Math.exp(this.logHalf_/e)}sample(e,t){let i=Math.pow(this.alpha_,e),r=t*(1-i)+i*this.estimate_;isNaN(r)||(this.estimate_=r,this.totalWeight_+=e)}getEstimate(){let e=1-Math.pow(this.alpha_,this.totalWeight_);return this.estimate_/e}};/*! @license
|
|
373
|
+
* Shaka Player
|
|
374
|
+
* Copyright 2016 Google LLC
|
|
375
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
376
|
+
*/var ws=class{constructor(){l(this,"fast_");l(this,"slow_");l(this,"bytesSampled_");l(this,"minTotalBytes_");l(this,"minBytes_");this.fast_=new er(2),this.slow_=new er(5),this.bytesSampled_=0,this.minTotalBytes_=128e3,this.minBytes_=16e3}configure(e){this.minTotalBytes_=e.minTotalBytes,this.minBytes_=e.minBytes,this.fast_.updateAlpha(e.fastHalfLife),this.slow_.updateAlpha(e.slowHalfLife)}sample(e,t){if(t<this.minBytes_)return;let i=8e3*t/e,r=e/1e3;this.bytesSampled_+=t,this.fast_.sample(r,i),this.slow_.sample(r,i)}getBandwidthEstimate(e){return this.bytesSampled_<this.minTotalBytes_?e:Math.min(this.fast_.getEstimate(),this.slow_.getEstimate())}hasGoodEstimate(){return this.bytesSampled_>=this.minTotalBytes_}};/*! @license
|
|
377
|
+
* Shaka Player
|
|
378
|
+
* Copyright 2016 Google LLC
|
|
379
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
380
|
+
*/var mn=class mn{constructor(){l(this,"switch_");l(this,"disableStreamCallback_");l(this,"enabled_");l(this,"bandwidthEstimator_");l(this,"eventManager_");l(this,"variants_");l(this,"playbackRate_");l(this,"startupComplete_");l(this,"lastTimeChosenMs_");l(this,"config_");l(this,"mediaElement_");l(this,"resizeObserver_");l(this,"resizeObserverTimer_");l(this,"windowToCheck_");l(this,"pictureInPictureWindow_");l(this,"cmsdManager_");l(this,"droppedFramePoller_");l(this,"lastDroppedFrames_");l(this,"lastTotalFrames_");this.switch_=null,this.disableStreamCallback_=null,this.enabled_=!1,this.bandwidthEstimator_=new ws,this.eventManager_=new ue,navigator.connection&&navigator.connection.addEventListener&&this.eventManager_.listen(navigator.connection,"change",()=>{this.config_.useNetworkInformation&&navigator.onLine&&(this.bandwidthEstimator_=new ws,this.config_&&this.bandwidthEstimator_.configure(this.config_.advanced),this.trySuggestStreams())}),this.variants_=[],this.playbackRate_=1,this.startupComplete_=!1,this.lastTimeChosenMs_=null,this.config_=null,this.mediaElement_=null,this.resizeObserver_=null,this.resizeObserverTimer_=new ae(()=>{if(this.enabled_&&(this.config_.restrictToElementSize||this.config_.restrictToScreenSize)){let e=this.chooseVariant();e&&this.switch_&&this.switch_(e,this.config_.clearBufferSwitch,this.config_.safeMarginSwitch)}}),this.windowToCheck_=window,"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",()=>{this.windowToCheck_=window.documentPictureInPicture.window,this.resizeObserverTimer_&&this.resizeObserverTimer_.tickNow(),this.eventManager_.listenOnce(this.windowToCheck_,"pagehide",()=>{this.windowToCheck_=window,this.resizeObserverTimer_&&this.resizeObserverTimer_.tickNow()})}),this.pictureInPictureWindow_=null,this.cmsdManager_=null,this.droppedFramePoller_=null,this.lastDroppedFrames_=0,this.lastTotalFrames_=0}stop(){var e,t;this.switch_=null,this.enabled_=!1,this.variants_=[],this.playbackRate_=1,this.lastTimeChosenMs_=null,this.mediaElement_=null,(e=this.resizeObserver_)==null||e.disconnect(),this.resizeObserver_=null,(t=this.resizeObserverTimer_)==null||t.stop(),this.pictureInPictureWindow_=null,this.cmsdManager_=null,this.stopDroppedFramePoller_()}release(){this.stop(),this.eventManager_.release(),this.resizeObserverTimer_=null}init(e,t){this.switch_=e,this.disableStreamCallback_=t}chooseVariant(e=!1){let t=1/0,i=1/0;if(this.config_.restrictToScreenSize){let c=this.config_.ignoreDevicePixelRatio?1:this.windowToCheck_.devicePixelRatio;t=this.windowToCheck_.screen.height*c,i=this.windowToCheck_.screen.width*c}if(this.resizeObserver_&&this.config_.restrictToElementSize){let c=this.config_.ignoreDevicePixelRatio?1:this.windowToCheck_.devicePixelRatio,d=this.mediaElement_.clientHeight,u=this.mediaElement_.clientWidth;this.pictureInPictureWindow_&&document.pictureInPictureElement&&document.pictureInPictureElement==this.mediaElement_&&(d=this.pictureInPictureWindow_.height,u=this.pictureInPictureWindow_.width),t=Math.min(t,d*c),i=Math.min(i,u*c)}let r=this.variants_.filter(c=>c&&!se.isFastSwitching(c));r.length||(r=this.variants_);let s=r;e&&r.length!=this.variants_.length&&(s=this.variants_.filter(c=>c&&se.isFastSwitching(c)));let n=this.filterAndSortVariants_(this.config_.restrictions,s,1/0,1/0);if(t!=1/0||i!=1/0){let c=this.getResolutionList_(n);for(let d of c)if(d.height>=t&&d.width>=i){t=d.height,i=d.width;break}n=this.filterAndSortVariants_(this.config_.restrictions,s,t,i)}let a=this.getBandwidthEstimate();s.length&&!n.length&&(p.warning("No variants met the ABR restrictions. Choosing a variant by lowest bandwidth."),n=this.filterAndSortVariants_(null,s,1/0,1/0),n=[n[0]]);let o=n[0]||null;for(let c=0;c<n.length;c++){let d=n[c],u=isNaN(this.playbackRate_)?1:Math.abs(this.playbackRate_),m=u*d.bandwidth,f=m/this.config_.bandwidthDowngradeTarget,g={bandwidth:1/0};for(let S=c+1;S<n.length;S++)if(d.bandwidth!=n[S].bandwidth){g=n[S];break}let T=u*g.bandwidth/this.config_.bandwidthUpgradeTarget;p.v2("Bandwidth ranges:",(m/1e6).toFixed(3),(f/1e6).toFixed(3),(T/1e6).toFixed(3)),o&&d&&a>=f&&a<=T&&(o.bandwidth!=d.bandwidth||this.isSameBandwidthAndHigherResolution_(o,d))&&(o=d)}return this.lastTimeChosenMs_=Date.now(),o}enable(){this.enabled_=!0,this.updateFramesInfo_(),this.variants_.length&&this.trySuggestStreams()}disable(){this.enabled_=!1}segmentDownloaded(e,t,i,r,s){e>=this.config_.cacheLoadThreshold&&(p.v2("Segment downloaded:","contentType="+(r&&r.contentType),"deltaTimeMs="+e,"numBytes="+t,"lastTimeChosenMs="+this.lastTimeChosenMs_,"enabled="+this.enabled_),v.assert(e>=0,"expected a non-negative duration"),this.bandwidthEstimator_.sample(e,t)),i&&this.lastTimeChosenMs_!=null&&this.enabled_&&this.suggestStreams_()}trySuggestStreams(){this.enabled_&&(this.lastTimeChosenMs_=Date.now(),this.suggestStreams_(!0))}getBandwidthEstimate(){let e=this.getDefaultBandwidth_();if(navigator.connection&&navigator.connection.downlink&&this.config_.useNetworkInformation&&this.config_.preferNetworkInformationBandwidth)return e;let t=this.bandwidthEstimator_.getBandwidthEstimate(e);return this.cmsdManager_?this.cmsdManager_.getBandwidthEstimate(t):t}setVariants(e,t){return ye.hasSameElements(e,this.variants_)?!1:(this.variants_=e,!0)}playbackRateChanged(e){this.playbackRate_=e}setMediaElement(e){this.mediaElement_=e,this.resizeObserver_&&(this.resizeObserver_.disconnect(),this.resizeObserver_=null);let t=()=>{this.resizeObserverTimer_.tickAfter(mn.RESIZE_OBSERVER_BATCH_TIME)};this.mediaElement_&&"ResizeObserver"in window&&(this.resizeObserver_=new ResizeObserver(t),this.resizeObserver_.observe(this.mediaElement_)),this.eventManager_.listen(e,"enterpictureinpicture",i=>{let r=i;r.pictureInPictureWindow&&(this.pictureInPictureWindow_=r.pictureInPictureWindow,this.eventManager_.listen(this.pictureInPictureWindow_,"resize",t))}),this.eventManager_.listen(e,"leavepictureinpicture",()=>{this.pictureInPictureWindow_&&this.eventManager_.unlisten(this.pictureInPictureWindow_,"resize",t),this.pictureInPictureWindow_=null}),this.startDroppedFramePoller_()}setCmsdManager(e){this.cmsdManager_=e}configure(e){this.config_=e,this.bandwidthEstimator_&&this.config_&&this.bandwidthEstimator_.configure(this.config_.advanced),this.startDroppedFramePoller_()}suggestStreams_(e=!1){if(p.v2("Suggesting Streams..."),v.assert(this.lastTimeChosenMs_!=null,"lastTimeChosenMs_ should not be null"),!e){if(!this.startupComplete_){if(!this.bandwidthEstimator_.hasGoodEstimate()){p.v2("Still waiting for a good estimate...");return}this.startupComplete_=!0,this.lastTimeChosenMs_-=(this.config_.switchInterval-this.config_.minTimeToSwitch)*1e3}if(Date.now()-this.lastTimeChosenMs_<this.config_.switchInterval*1e3){p.v2("Still within switch interval...");return}}let t=this.chooseVariant(),i=this.getBandwidthEstimate(),r=Math.round(i/1e3);t&&this.switch_&&(p.debug("Calling switch_(), bandwidth="+r+" kbps"),this.switch_(t,this.config_.clearBufferSwitch,this.config_.safeMarginSwitch),this.updateFramesInfo_())}getDefaultBandwidth_(){let e=this.config_.defaultBandwidthEstimate;return navigator.connection&&navigator.connection.downlink&&this.config_.useNetworkInformation&&(e=navigator.connection.downlink*1e6),e}filterAndSortVariants_(e,t,i,r){if(this.cmsdManager_){let s=this.cmsdManager_.getMaxBitrate();s&&(t=t.filter(n=>!n.bandwidth||!s?!0:n.bandwidth<=s))}return e&&(t=t.filter(s=>(v.assert(e,"Restrictions should exist!"),se.meetsRestrictions(s,e,{width:r,height:i})))),t.sort((s,n)=>s.bandwidth-n.bandwidth)}getResolutionList_(e){let t=[];for(let i of e){if(!i)continue;let r=i.video;!r||!r.height||!r.width||t.push({height:r.height,width:r.width})}return t.sort((i,r)=>i.width-r.width)}isSameBandwidthAndHigherResolution_(e,t){return e.bandwidth!=t.bandwidth||!e.video||!t.video?!1:e.video.width<t.video.width||e.video.height<t.video.height}startDroppedFramePoller_(){this.stopDroppedFramePoller_();let e=this.mediaElement_;!this.config_.droppedFrames||!(e!=null&&e.getVideoPlaybackQuality)||(this.updateFramesInfo_(),this.startListeningToResize_(),this.droppedFramePoller_=new ae(()=>{this.checkDroppedFrames_()}).tickEvery(this.config_.advanced.droppedFramesInterval))}stopDroppedFramePoller_(){var e;this.stopListeningToResize_(),(e=this.droppedFramePoller_)==null||e.stop(),this.droppedFramePoller_=null}checkDroppedFrames_(){if(this.mediaElement_.paused||!this.enabled_||!this.config_.droppedFrames)return;let t=this.mediaElement_.getVideoPlaybackQuality(),i=t.droppedVideoFrames,r=t.totalVideoFrames;if((isNaN(this.playbackRate_)?1:Math.abs(this.playbackRate_))>1||!r){this.lastDroppedFrames_=i,this.lastTotalFrames_=r;return}let n=i-this.lastDroppedFrames_,a=r-this.lastTotalFrames_;this.lastDroppedFrames_=i,this.lastTotalFrames_=r;let o=n/a,c=this.config_.advanced.droppedFramesThreshold;o>=c&&this.disableStreamCallback_&&(p.warning("Dropped frame ratio exceeded threshold: "+o.toFixed(2)+" >= "+c+". Disabling current video stream."),this.disableStreamCallback_("video",this.config_.advanced.droppedFramesBanDuration))}updateFramesInfo_(){let e=this.mediaElement_;if(this.config_.droppedFrames&&(e!=null&&e.getVideoPlaybackQuality)){let t=e.getVideoPlaybackQuality();this.lastDroppedFrames_=t.droppedVideoFrames,this.lastTotalFrames_=t.totalVideoFrames}}startListeningToResize_(){let e=this.mediaElement_;this.eventManager_.listen(e,"resize",()=>{p.debug("video resolution changed to "+e.videoWidth+"x"+e.videoHeight+". Resetting frame counters."),this.updateFramesInfo_()}),p.v1("listening to resize started.")}stopListeningToResize_(){this.eventManager_.unlisten(this.mediaElement_,"resize"),p.v1("listening to resize stopped.")}};l(mn,"RESIZE_OBSERVER_BATCH_TIME",1);var Ms=mn;/*! @license
|
|
381
|
+
* Shaka Player
|
|
382
|
+
* Copyright 2016 Google LLC
|
|
383
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
384
|
+
*/var Ao={NONE:0,NEXT_GROUP_START:1,LARGEST_OBJECT:2,ABSOLUTE_START:3,ABSOLUTE_RANGE:4};/*! @license
|
|
385
|
+
* Shaka Player
|
|
386
|
+
* Copyright 2016 Google LLC
|
|
387
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
388
|
+
*/var Dr={AUTO:"auto",DRAFT_14:"draft-14",DRAFT_16:"draft-16"};/*! @license
|
|
389
|
+
* Shaka Player
|
|
390
|
+
* Copyright 2016 Google LLC
|
|
391
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
392
|
+
*/var Yt={DEFAULT:0,TOP_LEFT:1,TOP_CENTER:2,TOP_RIGHT:3,CENTER_LEFT:4,CENTER:5,CENTER_RIGHT:6,BOTTOM_LEFT:7,BOTTOM_CENTER:8,BOTTOM_RIGHT:9};/*! @license
|
|
393
|
+
* Shaka Player
|
|
394
|
+
* Copyright 2016 Google LLC
|
|
395
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
396
|
+
*/var Yr={OFF:0,ALL:1,SINGLE:2};/*! @license
|
|
397
|
+
* Shaka Player
|
|
398
|
+
* Copyright 2016 Google LLC
|
|
399
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
400
|
+
*/var hr=class y{static async isFairPlaySupported(){let e={initDataTypes:["cenc","sinf","skd"],videoCapabilities:[{contentType:'video/mp4; codecs="avc1.42E01E"'}]};try{return await navigator.requestMediaKeySystemAccess("com.apple.fps",[e]),!0}catch(t){return!1}}static defaultGetContentId(e){let t=q.fromBytesAutoDetect(e);return fe.getDomain(t)}static defaultGetKeyId(e){let i=fe.getDomain(e).replace(/-/g,"").toLowerCase();return i.length===32&&/^[0-9a-f]+$/.test(i)?i:null}static initDataTransform(e,t,i){if(!i||!i.byteLength)throw new h(h.Severity.CRITICAL,h.Category.DRM,h.Code.SERVER_CERTIFICATE_REQUIRED);let r;typeof t=="string"?r=q.toUTF16(t,!0):r=t;let s=q.fromBytesAutoDetect(e),n=q.toUTF16(s,!0),a=new Uint8Array(12+n.byteLength+r.byteLength+i.byteLength),o=0,c=u=>{a.set(D.toUint8(u),o),o+=u.byteLength},d=u=>{let m=D.toDataView(a),f=u.byteLength;m.setUint32(o,f,!0),o+=4,c(u)};return d(n),d(r),d(i),v.assert(o==a.length,"Inconsistent init data length"),a}static basicInitDataTransform_(e,t,i){if(t!=="skd")return e;let r=i.serverCertificate,n=q.fromBytesAutoDetect(e).split("skd://").pop();return y.initDataTransform(e,n,r)}static verimatrixInitDataTransform(e,t,i){return y.basicInitDataTransform_(e,t,i)}static ezdrmInitDataTransform(e,t,i){if(t!=="skd")return e;let r=i.serverCertificate,n=q.fromBytesAutoDetect(e).split(";").pop();return y.initDataTransform(e,n,r)}static conaxInitDataTransform(e,t,i){if(t!=="skd")return e;let r=i.serverCertificate,n=q.fromBytesAutoDetect(e).split("skd://").pop().split("?").shift(),o=(c=>{let d=new ArrayBuffer(c.length*2),u=D.toUint16(d);for(let m=0,f=c.length;m<f;m++)u[m]=c.charCodeAt(m);return u})(window.atob(n));return y.initDataTransform(e,o,r)}static expressplayInitDataTransform(e,t,i){return y.basicInitDataTransform_(e,t,i)}static muxInitDataTransform(e,t,i){return y.basicInitDataTransform_(e,t,i)}static verimatrixFairPlayRequest(e,t,i){if(e!==K.RequestType.LICENSE||t.attempt>0)return;let r=t.drmInfo;if(!r||!de.isFairPlayKeySystem(r.keySystem))return;let s=t.body,n=D.toUint8(s),a=ne.toBase64(n);t.headers["Content-Type"]="application/x-www-form-urlencoded",t.body=q.toUTF8("spc="+a)}static octetStreamFairPlayRequest_(e,t,i){if(e!==K.RequestType.LICENSE||t.attempt>0)return;let r=t.drmInfo;!r||!de.isFairPlayKeySystem(r.keySystem)||(t.headers["Content-Type"]="application/octet-stream")}static ezdrmFairPlayRequest(e,t,i){y.octetStreamFairPlayRequest_(e,t)}static conaxFairPlayRequest(e,t,i){y.octetStreamFairPlayRequest_(e,t)}static expressplayFairPlayRequest(e,t,i){y.octetStreamFairPlayRequest_(e,t)}static muxFairPlayRequest(e,t,i){y.octetStreamFairPlayRequest_(e,t)}static gumletFairPlayRequest(e,t,i){if(e!==K.RequestType.LICENSE||t.attempt>0)return;let r=t.drmInfo;if(!r||!de.isFairPlayKeySystem(r.keySystem)||!t.body)return;let s=D.toUint8(t.body),n=ne.toBase64(s);t.body=q.toUTF8(JSON.stringify({spc:n})),t.headers["Content-Type"]="application/json"}static commonFairPlayResponse(e,t,i){if(e!==K.RequestType.LICENSE)return;let r=t.originalRequest.drmInfo;if(!r||!de.isFairPlayKeySystem(r.keySystem))return;let s;try{s=q.fromUTF8(t.data)}catch(a){return}let n=!1;if(s=s.trim(),s.substr(0,5)==="<ckc>"&&s.substr(-6)==="</ckc>"&&(s=s.slice(5,-6),n=!0),!n)try{let a=JSON.parse(s);a.ckc&&(s=a.ckc,n=!0),a.CkcMessage&&(s=a.CkcMessage,n=!0),a.License&&(s=a.License,n=!0)}catch(a){}n&&(t.data=D.toArrayBuffer(ne.fromBase64(s)))}};/*! @license
|
|
401
|
+
* Shaka Player
|
|
402
|
+
* Copyright 2016 Google LLC
|
|
403
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
404
|
+
*/var pn=class y{constructor(e,t,i=!0){l(this,"root_");l(this,"variants_");this.root_=e,this.variants_=new Set([e]),t=t||[];for(let r of t)this.add(r,i)}add(e,t){return this.canInclude(e,t)?(this.variants_.add(e),!0):(p.warning("Rejecting variant - not compatible with root."),!1)}canInclude(e,t=!0){return y.areAdaptable(this.root_,e,t)}static areAdaptable(e,t,i){return!(!!e.audio!=!!t.audio||!!e.video!=!!t.video||e.language!=t.language||(v.assert(!!e.audio==!!t.audio,"Both should either have audio or not have audio."),e.audio&&t.audio&&!y.areAudiosCompatible_(e.audio,t.audio,i))||(v.assert(!!e.video==!!t.video,"Both should either have video or not have video."),e.video&&t.video&&!y.areVideosCompatible_(e.video,t.video,i)))}values(){return this.variants_.values()}static areAudiosCompatible_(e,t,i){return!((!e.channelsCount||!t.channelsCount||e.channelsCount>2||t.channelsCount>2)&&e.channelsCount!=t.channelsCount||e.spatialAudio!==t.spatialAudio||i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles)||e.groupId!==t.groupId)}static areVideosCompatible_(e,t,i){return!(i&&!y.canTransitionBetween_(e,t)||!y.areRolesEqual_(e.roles,t.roles))}static canTransitionBetween_(e,t){if(e.mimeType!=t.mimeType)return!1;let i=N.splitCodecs(e.codecs).map(s=>N.getCodecBase(s)),r=N.splitCodecs(t.codecs).map(s=>N.getCodecBase(s));return ye.hasSameElements(i,r)}static areRolesEqual_(e,t){return ye.hasSameElements(e,t)}};/*! @license
|
|
405
|
+
* Shaka Player
|
|
406
|
+
* Copyright 2016 Google LLC
|
|
407
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
408
|
+
*/var Rs=class y{constructor(){l(this,"config_");l(this,"lastAdaptationSet_");this.config_=null,this.lastAdaptationSet_=null}configure(e){this.config_=e}getConfiguration(){return this.config_}create(e){let t=y,i=t.applyAudioPreferences_(e,this.config_.preferredAudio,this.config_.audioCodec,this.config_.activeAudioCodec);i=t.applyVideoPreferences_(i,this.config_.preferredVideo);let r=j.getDevice(),s=this.config_.keySystem,n=this.config_.codecSwitchingStrategy==Pr.SMOOTH&&r.supportsSmoothCodecSwitching(s);return this.lastAdaptationSet_=new pn(i[0],i,!n),this.lastAdaptationSet_}getLastAdaptationSet(){return this.lastAdaptationSet_}static applyAudioPreferences_(e,t,i,r){let s=y;for(let d of t){let u=e;if(d.language){let g=s.filterByLanguage_(u,d.language);if(g.length)u=g;else continue}if(d.role){let g=s.filterVariantsByAudioRole_(u,d.role);if(g.length)u=g;else continue}if(d.label){let g=s.filterVariantsByAudioLabel_(u,d.label);if(g.length)u=g;else continue}if(d.channelCount){let g=s.filterVariantsByAudioChannelCount_(u,d.channelCount);if(g.length)u=g;else continue}let m=[];d.codec&&m.push(d.codec),i&&m.push(i),r&&m.push(r);let f=m.filter((g,_)=>m.indexOf(g)===_);if(f.length){let g=!1;for(let _ of f){let T=s.filterVariantsByAudioCodec_(u,_);if(T.length){u=T,g=!0;break}}if(!g&&d.codec)continue}if(d.spatialAudio!==void 0){let g=s.filterVariantsBySpatialAudio_(u,d.spatialAudio);if(g.length)u=g;else continue}if(u.length)return u}let n=e,a=[];i&&a.push(i),r&&a.push(r);let o=a.filter((d,u)=>a.indexOf(d)===u);if(o.length)for(let d of o){let u=s.filterVariantsByAudioCodec_(n,d);if(u.length){n=u;break}}let c=n.filter(d=>d.primary);return c.length?c:n}static applyVideoPreferences_(e,t){let i=y;for(let r of t){let s=e;if(r.role){let n=i.filterVariantsByVideoRole_(s,r.role);if(n.length)s=n;else continue}if(r.language){let n=i.filterVariantsByVideoLanguage_(s,r.language);if(n.length)s=n;else continue}if(r.label){let n=i.filterVariantsByVideoLabel_(s,r.label);if(n.length)s=n;else continue}if(r.hdrLevel){let n=i.filterVariantsByHDRLevel_(s,r.hdrLevel);if(n.length)s=n;else continue}if(r.layout){let n=i.filterVariantsByVideoLayout_(s,r.layout);if(n.length)s=n;else continue}if(r.codec){let n=i.filterVariantsByVideoCodec_(s,r.codec);if(n.length)s=n;else continue}if(s.length)return s}return e}static filterByLanguage_(e,t){let i=ve.normalize(t),r=ve.findClosestLocale(i,e.map(s=>ve.getLocaleForVariant(s)));return r?e.filter(s=>r==ve.getLocaleForVariant(s)):[]}static filterVariantsByAudioRole_(e,t){return e.filter(i=>i.audio?t?i.audio.roles.includes(t):i.audio.roles.length==0:!1)}static filterVariantsByVideoRole_(e,t){return e.filter(i=>i.video?t?i.video.roles.includes(t):i.video.roles.length==0:!1)}static filterVariantsByVideoLanguage_(e,t){let i=ve.normalize(t);return e.filter(r=>!r.video||!r.video.language?!1:ve.normalize(r.video.language)==i)}static filterVariantsByAudioLabel_(e,t){return e.filter(i=>{if(!i.audio||!i.audio.label)return!1;let r=i.audio.label.toLowerCase(),s=t.toLowerCase();return r==s})}static filterVariantsByVideoLabel_(e,t){return e.filter(i=>{if(!i.video||!i.video.label)return!1;let r=i.video.label.toLowerCase(),s=t.toLowerCase();return r==s})}static filterVariantsByAudioChannelCount_(e,t){return e.filter(i=>!(i.audio&&i.audio.channelsCount&&i.audio.channelsCount>t)).sort((i,r)=>!i.audio&&!r.audio?0:i.audio?r.audio?(r.audio.channelsCount||0)-(i.audio.channelsCount||0):1:-1)}static filterVariantsByHDRLevel_(e,t){if(t=="AUTO"){let i=e.some(s=>!!(s.video&&s.video.hdr&&s.video.hdr=="HLG"));t=j.getDevice().getHdrLevel(i)}return e.filter(i=>!(i.video&&i.video.hdr&&i.video.hdr!=t))}static filterVariantsByVideoLayout_(e,t){return e.filter(i=>!(i.video&&i.video.videoLayout&&i.video.videoLayout!=t))}static filterVariantsBySpatialAudio_(e,t){return e.filter(i=>!(i.audio&&i.audio.spatialAudio!=t))}static filterVariantsByAudioCodec_(e,t){return e.filter(i=>!(i.audio&&i.audio.codecs!=t))}static filterVariantsByVideoCodec_(e,t){return e.filter(i=>!(i.video&&i.video.codecs!=t))}};/*! @license
|
|
409
|
+
* Shaka Player
|
|
410
|
+
* Copyright 2016 Google LLC
|
|
411
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
412
|
+
*/var st=class y{static createDefault(){let i=1/0,r=j.getDevice();navigator.connection&&navigator.connection.saveData&&(i=360);let s={retryParameters:K.defaultRetryParameters(),servers:{},clearKeys:{},advanced:{},delayLicenseRequestUntilPlayed:!1,persistentSessionOnlinePlayback:!1,persistentSessionsMetadata:[],initDataTransform:(A,w,M)=>{if(de.isMediaKeysPolyfilled("apple")&&w=="skd"){let x=M.serverCertificate,k=hr.defaultGetContentId(A);A=hr.initDataTransform(A,k,x)}return A},logLicenseExchange:!1,updateExpirationTime:1,preferredKeySystems:[],keySystemsMapping:{},parseInbandPsshEnabled:!1,minHdcpVersion:"",ignoreDuplicateInitData:!0,defaultAudioRobustnessForWidevine:"SW_SECURE_CRYPTO",defaultVideoRobustnessForWidevine:"SW_SECURE_DECODE",renewalIntervalSec:0,failureCallback:A=>Pt.referenceParametersAndReturn([A],void 0)},n=Pr.RELOAD;r.supportsSmoothCodecSwitching("")&&(n=Pr.SMOOTH);let a={retryParameters:K.defaultRetryParameters(),availabilityWindowOverride:NaN,disableAudio:!1,disableVideo:!1,disableText:!1,disableThumbnails:!1,disableIFrames:!1,disableChapters:!1,defaultPresentationDelay:0,segmentRelativeVttTiming:!1,raiseFatalErrorOnManifestUpdateRequestFailure:!1,continueLoadingWhenPaused:!0,ignoreSupplementalCodecs:!1,updatePeriod:-1,ignoreDrmInfo:!1,enableAudioGroups:!0,dash:{clockSyncUri:"",xlinkFailGracefully:!1,ignoreMinBufferTime:!1,autoCorrectDrift:!0,initialSegmentLimit:1e3,ignoreSuggestedPresentationDelay:!1,ignoreEmptyAdaptationSet:!1,ignoreMaxSegmentDuration:!1,keySystemsByURI:de.getUuidMap(!1,!0),manifestPreprocessorTXml:y.defaultManifestPreprocessorTXml,sequenceMode:!1,useStreamOnceInPeriodFlattening:!1,enableFastSwitching:!0},hls:{ignoreTextStreamFailures:!1,ignoreImageStreamFailures:!1,defaultAudioCodec:"mp4a.40.2",defaultVideoCodec:"avc1.42E01E",ignoreManifestProgramDateTime:!1,ignoreManifestProgramDateTimeForTypes:[],mediaPlaylistFullMimeType:'video/mp2t; codecs="avc1.42E01E, mp4a.40.2"',liveSegmentsDelay:3,sequenceMode:!1,ignoreManifestTimestampsInSegmentsMode:!1,disableCodecGuessing:!1,disableClosedCaptionsDetection:!1,allowLowLatencyByteRangeOptimization:!0,allowRangeRequestsToGuessMimeType:!1,chaptersUri:""},msf:{fingerprintUri:"",namespaces:[],authorizationToken:"",subscribeFilterType:Ao.LARGEST_OBJECT,useFetchCatalog:!1,version:Dr.AUTO,catalogPreprocessor:y.defaultCatalogPreprocessor}},o={retryParameters:K.defaultRetryParameters(),failureCallback:A=>(p.error("Unhandled streaming error",A),Pt.referenceParametersAndReturn([A],void 0)),rebufferingGoal:0,bufferingGoal:10,bufferBehind:30,evictionGoal:1,ignoreTextStreamFailures:!1,startAtSegmentBoundary:!1,gapDetectionThreshold:.5,gapPadding:0,gapJumpTimerTime:.25,durationBackoff:1,safeSeekOffset:5,safeSeekEndOffset:0,stallEnabled:!0,stallThreshold:1,stallSkip:.1,useNativeHlsForFairPlay:!0,inaccurateManifestTolerance:2,lowLatencyMode:!0,preferNativeDash:!1,preferNativeHls:!1,updateIntervalSeconds:1,observeQualityChanges:!1,maxDisabledTime:30,segmentPrefetchLimit:1,prefetchAudioLanguages:[],disableAudioPrefetch:!1,disableTextPrefetch:!1,disableVideoPrefetch:!1,liveSync:{enabled:!1,targetLatency:.5,targetLatencyTolerance:.5,maxPlaybackRate:1.1,minPlaybackRate:.95,panicMode:!1,panicThreshold:60,dynamicTargetLatency:{enabled:!1,stabilityThreshold:60,rebufferIncrement:.5,maxAttempts:10,maxLatency:4,minLatency:1}},allowMediaSourceRecoveries:!0,minTimeBetweenRecoveries:5,vodDynamicPlaybackRate:!1,vodDynamicPlaybackRateLowBufferRate:.95,vodDynamicPlaybackRateBufferRatio:.5,preloadNextUrlWindow:30,loadTimeout:30,clearDecodingCache:!1,dontChooseCodecs:!1,shouldFixTimestampOffset:!1,avoidEvictionOnQuotaExceededError:!1,crossBoundaryStrategy:Ti.KEEP,returnToEndOfLiveWindowWhenOutside:!1,stopFetchingOnPause:!1,clampAppendWindowToDuration:!1,processSrcEqualMetadata:!0},c={forceHTTP:!1,forceHTTPS:!1,minBytesForProgressEvents:16e3,commonAccessTokenHeaderName:"cta-common-access-token"},d={trackSelectionCallback:async A=>A,downloadSizeCallback:async A=>{if(navigator.storage&&navigator.storage.estimate){let w=await navigator.storage.estimate();return w.usage+A<w.quota*.95}else return!0},progressCallback:(A,w)=>Pt.referenceParametersAndReturn([A,w],void 0),usePersistentLicense:!0,numberOfParallelDownloads:5},u={enabled:!0,useNetworkInformation:!0,defaultBandwidthEstimate:1e6,switchInterval:8,bandwidthUpgradeTarget:.85,bandwidthDowngradeTarget:.95,restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:i,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},advanced:{minTotalBytes:128e3,minBytes:16e3,fastHalfLife:2,slowHalfLife:5,droppedFramesThreshold:.15,droppedFramesInterval:2,droppedFramesBanDuration:30},restrictToElementSize:!1,restrictToScreenSize:!1,ignoreDevicePixelRatio:!1,clearBufferSwitch:!1,safeMarginSwitch:0,cacheLoadThreshold:5,minTimeToSwitch:0,preferNetworkInformationBandwidth:!1,droppedFrames:!0},m={enabled:!1,sessionId:"",contentId:"",rtpSafetyFactor:5,useHeaders:!1,includeKeys:[],version:1,eventTargets:[]},f={enabled:!0,applyMaximumSuggestedBitrate:!0,estimatedThroughputWeightRatio:.5},g={enabled:!1,dynamicPerformanceScaling:!0,logLevel:0,drawLogo:!1,poster:!0},_={codecSwitchingStrategy:n,addExtraFeaturesToSourceBuffer:A=>Pt.referenceParametersAndReturn([A],""),forceTransmux:!1,insertFakeEncryptionInInit:!0,correctEc3Enca:!1,modifyCueCallback:(A,w,M)=>Pt.referenceParametersAndReturn([A,w,M],void 0),dispatchAllEmsgBoxes:!1,useSourceElements:!0,durationReductionEmitsUpdateEnd:!0,transmuxWorkerUrl:"",repairIFrames:!0},T={customPlayheadTracker:!1,skipPlayDetection:!1,supportsMultipleMediaElements:!0,disableHLSInterstitial:!1,disableDASHInterstitial:!1,allowPreloadOnDomElements:!0,allowStartInMiddleOfInterstitial:!0,disableTrackingEvents:!1,disableSnapback:!1,interstitialPreloadAheadTime:10,disablePlayedLinearAdSkip:!1,disableTrackingForPlayedLinearAds:!1},S={fontScaleFactor:1,positionArea:Yt.DEFAULT,subtitleDelay:0,suspendRenderingWhenHidden:!0},b={preloadNextUrlWindow:1/0,preloadPrevItem:!0,repeatMode:Yr.OFF},C={drm:s,manifest:a,streaming:o,networking:c,mediaSource:_,offline:d,abrFactory:()=>new Ms,adaptationSetCriteriaFactory:(...A)=>new Rs(...A),abr:u,preferredAudio:[{language:"",role:"",label:"",channelCount:2,codec:""}],preferredText:[],preferredVideo:[{label:"",role:"",language:"",codec:"",hdrLevel:"AUTO",layout:""}],preferredDecodingAttributes:[],restrictions:{minWidth:0,maxWidth:1/0,minHeight:0,maxHeight:1/0,minPixels:0,maxPixels:1/0,minFrameRate:0,maxFrameRate:1/0,minBandwidth:0,maxBandwidth:1/0,minChannelsCount:0,maxChannelsCount:1/0},playRangeStart:0,playRangeEnd:1/0,textDisplayer:S,textDisplayFactory:A=>null,cmcd:m,cmsd:f,lcevc:g,ads:T,ignoreHardwareResolution:!1,queue:b,accessibility:{handleForcedSubtitlesAutomatically:!0,speechToText:{enabled:!1,maxTextLength:140,processLocally:!1,languagesToTranslate:[]}}};return d.trackSelectionCallback=async A=>{let w=C.preferredAudio.map(x=>x.language).filter(Boolean),M=C.preferredVideo[0]&&C.preferredVideo[0].hdrLevel||"";return y.defaultTrackSelect(A,w,M)},r.adjustConfig(C)}static createDefaultForLL(){return{streaming:{inaccurateManifestTolerance:0,segmentPrefetchLimit:2,updateIntervalSeconds:.1,maxDisabledTime:1,retryParameters:{baseDelay:100}},manifest:{dash:{autoCorrectDrift:!1},retryParameters:{baseDelay:100}},drm:{retryParameters:{baseDelay:100}}}}static mergeConfigObjects(e,t,i){let r={".drm.keySystemsMapping":"",".drm.servers":"",".drm.clearKeys":"",".drm.advanced":{distinctiveIdentifierRequired:!1,persistentStateRequired:!1,videoRobustness:[],audioRobustness:[],sessionType:"",serverCertificate:new Uint8Array(0),serverCertificateUri:"",individualizationServer:"",headers:{}}};return Pt.mergeConfigObjects(e,t,i||y.createDefault(),r,"")}static addDeprecatedConfigFields(e){var r,s,n,a,o,c,d,u,m,f;let t=e.preferredAudio[0],i=e.preferredVideo[0];e.language=(r=t==null?void 0:t.language)!=null?r:"",e.role=(s=t==null?void 0:t.role)!=null?s:"",e.channelCount=(n=t==null?void 0:t.channelCount)!=null?n:2,e.spatialAudio=(a=t==null?void 0:t.spatialAudio)!=null?a:!1,e.audioLabel=(o=t==null?void 0:t.label)!=null?o:"",e.videoRole=(c=i==null?void 0:i.role)!=null?c:"",e.hdrLevel=(d=i==null?void 0:i.hdrLevel)!=null?d:"",e.videoLayout=(u=i==null?void 0:i.layout)!=null?u:"",e.videoLabel=(m=i==null?void 0:i.label)!=null?m:"",e.preferredAudioCodecs=e.preferredAudio.map(g=>g.codec).filter(Boolean),e.preferredAudioChannelCount=(f=t==null?void 0:t.channelCount)!=null?f:2}static defaultTrackSelect(e,t,i){let r=R.ContentType,s=i;if(s=="AUTO"){let m=e.some(g=>!!(g.hdr&&g.hdr=="HLG"));s=j.getDevice().getHdrLevel(m)}let n=e.filter(m=>!(m.type!="variant"||m.hdr&&m.hdr!=s)),a=[],o=n.map(m=>m.language),c=null;for(let m of t)if(c=ve.findClosestLocale(m,o),c)break;c&&(a=n.filter(m=>ve.normalize(m.language)==c)),a.length==0&&(a=n.filter(m=>m.primary)),a.length==0&&(new Set(n.map(f=>f.language)).size>1&&p.warning("Could not choose a good audio track based on language preferences or primary tracks. An arbitrary language will be stored!"),a=n);let d=a.filter(m=>m.height&&m.height<=480);d.length&&(d.sort((m,f)=>(v.assert(m.height!=null,"Null height"),v.assert(f.height!=null,"Null height"),f.height-m.height)),a=d.filter(m=>m.height==d[0].height));let u=[];if(a.length){let m=Math.floor(a.length/2);a.sort((f,g)=>f.bandwidth-g.bandwidth),u.push(a[m])}for(let m of e)(m.type==r.TEXT||m.type==r.IMAGE||m.type==r.CHAPTER)&&u.push(m);return u}static defaultManifestPreprocessorTXml(e){return Pt.referenceParametersAndReturn([e],e)}static defaultCatalogPreprocessor(e){return Pt.referenceParametersAndReturn([e],e)}};/*! @license
|
|
413
|
+
* Shaka Player
|
|
414
|
+
* Copyright 2016 Google LLC
|
|
415
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
416
|
+
*/var fn=class{constructor(){l(this,"open_");l(this,"closed_");this.open_=null,this.closed_=[]}update(e){return this.open_==null?(this.start_(e),!0):this.update_(e)}getTimeSpentIn(e){let t=0;this.open_&&this.open_.state==e&&(t+=this.open_.duration);for(let i of this.closed_)t+=i.state==e?i.duration:0;return t}getCopy(){let e=i=>({timestamp:i.timestamp,state:i.state,duration:i.duration}),t=[];for(let i of this.closed_)t.push(e(i));return this.open_&&t.push(e(this.open_)),t}start_(e){v.assert(this.open_==null,"There must be no open entry in order when we start"),p.v1("Changing Player state to",e),this.open_={timestamp:this.getNowInSeconds_(),state:e,duration:0}}update_(e){v.assert(this.open_,"There must be an open entry in order to update it");let t=this.getNowInSeconds_();return this.open_.duration=t-this.open_.timestamp,this.open_.state==e?!1:(p.v1("Changing Player state to",e),this.closed_.push(this.open_),this.open_={timestamp:t,state:e,duration:0},!0)}getNowInSeconds_(){return Date.now()/1e3}};/*! @license
|
|
417
|
+
* Shaka Player
|
|
418
|
+
* Copyright 2016 Google LLC
|
|
419
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
420
|
+
*/var gn=class{constructor(){l(this,"currentVariant_");l(this,"currentText_");l(this,"history_");this.currentVariant_=null,this.currentText_=null,this.history_=[]}updateCurrentVariant(e,t){this.currentVariant_!=e&&(this.currentVariant_=e,this.history_.push({timestamp:this.getNowInSeconds_(),id:e.id,type:"variant",fromAdaptation:t,bandwidth:e.bandwidth}))}updateCurrentText(e,t){this.currentText_!=e&&(this.currentText_=e,this.history_.push({timestamp:this.getNowInSeconds_(),id:e.id,type:"text",fromAdaptation:t,bandwidth:null}))}getCopy(){let e=[];for(let t of this.history_)e.push(this.clone_(t));return e}getNowInSeconds_(){return Date.now()/1e3}clone_(e){return{timestamp:e.timestamp,id:e.id,type:e.type,fromAdaptation:e.fromAdaptation,bandwidth:e.bandwidth}}};/*! @license
|
|
421
|
+
* Shaka Player
|
|
422
|
+
* Copyright 2016 Google LLC
|
|
423
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
424
|
+
*/var tr=class{constructor(){l(this,"width_");l(this,"height_");l(this,"currentCodecs_");l(this,"totalDroppedFrames_");l(this,"totalDecodedFrames_");l(this,"totalCorruptedFrames_");l(this,"totalStallsDetected_");l(this,"totalGapsJumped_");l(this,"completionPercent_");l(this,"loadLatencySeconds_");l(this,"timeToFirstFrameSeconds_");l(this,"manifestTimeSeconds_");l(this,"drmTimeSeconds_");l(this,"licenseTimeSeconds_");l(this,"liveLatencySeconds_");l(this,"maxSegmentDurationSeconds_");l(this,"currentStreamBandwidth_");l(this,"bandwidthEstimate_");l(this,"manifestSizeBytes_");l(this,"bytesDownloaded_");l(this,"nonFatalErrorCount_");l(this,"manifestPeriodCount_");l(this,"manifestGapCount_");l(this,"stateHistory_");l(this,"switchHistory_");this.width_=NaN,this.height_=NaN,this.currentCodecs_="",this.totalDroppedFrames_=NaN,this.totalDecodedFrames_=NaN,this.totalCorruptedFrames_=NaN,this.totalStallsDetected_=NaN,this.totalGapsJumped_=NaN,this.completionPercent_=NaN,this.loadLatencySeconds_=NaN,this.timeToFirstFrameSeconds_=NaN,this.manifestTimeSeconds_=NaN,this.drmTimeSeconds_=NaN,this.licenseTimeSeconds_=NaN,this.liveLatencySeconds_=NaN,this.maxSegmentDurationSeconds_=NaN,this.currentStreamBandwidth_=NaN,this.bandwidthEstimate_=NaN,this.manifestSizeBytes_=NaN,this.bytesDownloaded_=NaN,this.nonFatalErrorCount_=0,this.manifestPeriodCount_=NaN,this.manifestGapCount_=NaN,this.stateHistory_=new fn,this.switchHistory_=new gn}setDroppedFrames(e,t){this.totalDroppedFrames_=e,this.totalDecodedFrames_=t}setCorruptedFrames(e){this.totalCorruptedFrames_=e}setStallsDetected(e){this.totalStallsDetected_=e}setGapsJumped(e){this.totalGapsJumped_=e}setResolution(e,t){this.width_=e,this.height_=t}setCodecs(e){this.currentCodecs_=e}setLoadLatency(e){e>=0&&(this.loadLatencySeconds_=e)}setTimeToFirstFrame(e){e>=0&&(this.timeToFirstFrameSeconds_=e)}setManifestTime(e){e>=0&&(this.manifestTimeSeconds_=e)}setCompletionPercent(e){isNaN(this.completionPercent_)?this.completionPercent_=e:this.completionPercent_=Math.max(this.completionPercent_,e)}setDrmTime(e){e>=0&&(this.drmTimeSeconds_=e)}setLicenseTime(e){e>=0&&(this.licenseTimeSeconds_=e)}setLiveLatency(e){e>=0&&(this.liveLatencySeconds_=e)}setMaxSegmentDuration(e){e>=0&&(this.maxSegmentDurationSeconds_=e)}setCurrentStreamBandwidth(e){this.currentStreamBandwidth_=e}setBandwidthEstimate(e){this.bandwidthEstimate_=e}setManifestSize(e){this.manifestSizeBytes_=e}addBytesDownloaded(e){isNaN(this.bytesDownloaded_)?this.bytesDownloaded_=e:this.bytesDownloaded_+=e}addNonFatalError(){this.nonFatalErrorCount_++}setManifestPeriodCount(e){this.manifestPeriodCount_=e}setManifestGapCount(e){this.manifestGapCount_=e}getStateHistory(){return this.stateHistory_}getSwitchHistory(){return this.switchHistory_}getBlob(){return{width:this.width_,height:this.height_,currentCodecs:this.currentCodecs_,streamBandwidth:this.currentStreamBandwidth_,decodedFrames:this.totalDecodedFrames_,droppedFrames:this.totalDroppedFrames_,corruptedFrames:this.totalCorruptedFrames_,stallsDetected:this.totalStallsDetected_,gapsJumped:this.totalGapsJumped_,estimatedBandwidth:this.bandwidthEstimate_,completionPercent:this.completionPercent_,loadLatency:this.loadLatencySeconds_,timeToFirstFrame:this.timeToFirstFrameSeconds_,manifestTimeSeconds:this.manifestTimeSeconds_,drmTimeSeconds:this.drmTimeSeconds_,playTime:this.stateHistory_.getTimeSpentIn("playing"),pauseTime:this.stateHistory_.getTimeSpentIn("paused"),bufferingTime:this.stateHistory_.getTimeSpentIn("buffering"),licenseTime:this.licenseTimeSeconds_,liveLatency:this.liveLatencySeconds_,maxSegmentDuration:this.maxSegmentDurationSeconds_,manifestSizeBytes:this.manifestSizeBytes_,bytesDownloaded:this.bytesDownloaded_,nonFatalErrorCount:this.nonFatalErrorCount_,manifestPeriodCount:this.manifestPeriodCount_,manifestGapCount:this.manifestGapCount_,stateHistory:this.stateHistory_.getCopy(),switchHistory:this.switchHistory_.getCopy()}}static getEmptyBlob(){return{width:NaN,height:NaN,currentCodecs:"",streamBandwidth:NaN,decodedFrames:NaN,droppedFrames:NaN,corruptedFrames:NaN,stallsDetected:NaN,gapsJumped:NaN,estimatedBandwidth:NaN,completionPercent:NaN,loadLatency:NaN,timeToFirstFrame:NaN,manifestTimeSeconds:NaN,drmTimeSeconds:NaN,playTime:NaN,pauseTime:NaN,bufferingTime:NaN,licenseTime:NaN,liveLatency:NaN,maxSegmentDuration:NaN,manifestSizeBytes:NaN,bytesDownloaded:NaN,nonFatalErrorCount:NaN,manifestPeriodCount:NaN,manifestGapCount:NaN,switchHistory:[],stateHistory:[]}}};/*! @license
|
|
425
|
+
* Shaka Player
|
|
426
|
+
* Copyright 2016 Google LLC
|
|
427
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
428
|
+
*/var Ps=class y extends Le{constructor(t,i,r,s){super();l(this,"assetUri_");l(this,"mimeType_");l(this,"networkingEngine_");l(this,"startTime_");l(this,"currentAdaptationSetCriteria_");l(this,"startTimeOfDrm_");l(this,"createDrmEngine_");l(this,"manifestFilterer_");l(this,"manifestPlayerInterface_");l(this,"config_");l(this,"manifest_");l(this,"parserFactory_");l(this,"parser_");l(this,"parserEntrusted_");l(this,"regionTimeline_");l(this,"regionTimelineEntrusted_");l(this,"drmEngine_");l(this,"drmEngineEntrusted_");l(this,"abrManager_");l(this,"segmentPrefetchById_");l(this,"segmentPrefetchEntrusted_");l(this,"qualityObserver_");l(this,"stats_");l(this,"manifestPromise_");l(this,"successPromise_");l(this,"eventHandoffTarget_");l(this,"destroyed_");l(this,"allowPrefetch_");l(this,"prefetchedVariant_");l(this,"prefetchedTextStream_");l(this,"hasBeenAttached_");l(this,"queuedOperations_");l(this,"latePhaseQueuedOperations_");l(this,"isPreload_");let n=s;this.assetUri_=t,this.mimeType_=i,this.networkingEngine_=n.networkingEngine,this.startTime_=r,this.currentAdaptationSetCriteria_=null,this.startTimeOfDrm_=0,this.createDrmEngine_=n.createDrmEngine,this.manifestFilterer_=n.manifestFilterer,this.manifestPlayerInterface_=n.manifestPlayerInterface,this.config_=n.config,this.manifest_=null,this.parserFactory_=null,this.parser_=null,this.parserEntrusted_=!1,this.regionTimeline_=n.regionTimeline,this.regionTimelineEntrusted_=!1,this.drmEngine_=null,this.drmEngineEntrusted_=!1,this.abrManager_=null,this.segmentPrefetchById_=new Map,this.segmentPrefetchEntrusted_=!1,this.qualityObserver_=n.qualityObserver,this.stats_=new tr,this.manifestPromise_=Promise.withResolvers(),this.successPromise_=Promise.withResolvers(),this.eventHandoffTarget_=null,this.destroyed_=!1,this.allowPrefetch_=n.allowPrefetch,this.prefetchedVariant_=null,this.prefetchedTextStream_=null,this.hasBeenAttached_=!1,this.queuedOperations_=[],this.latePhaseQueuedOperations_=[],this.isPreload_=!0}markIsLoad(){this.isPreload_=!1}addQueuedOperation(t,i){let r=t?this.latePhaseQueuedOperations_:this.queuedOperations_;r?r.push(i):i()}stopQueuingLatePhaseQueuedOperations(){if(this.latePhaseQueuedOperations_)for(let t of this.latePhaseQueuedOperations_)t();this.latePhaseQueuedOperations_=null}setEventHandoffTarget(t){if(this.eventHandoffTarget_=t,this.hasBeenAttached_=!0,this.queuedOperations_)for(let i of this.queuedOperations_)i();this.queuedOperations_=null}setOffsetToStartTime(t){this.startTime_&&t&&(typeof this.startTime_=="number"?this.startTime_+=t:this.startTime_.setTime(this.startTime_.getTime()+t*1e3))}getStartTime(){return this.startTime_}getStartTimeOfDRM(){return this.startTimeOfDrm_}getMimeType(){return this.mimeType_}getAssetUri(){return this.assetUri_}getManifest(){return this.manifest_}getParserFactory(){return this.parserFactory_}getCurrentAdaptationSetCriteria(){return this.currentAdaptationSetCriteria_}receiveParser(){return this.parserEntrusted_=!0,this.parser_}getParser(){return this.parser_}receiveRegionTimeline(){return this.regionTimelineEntrusted_=!0,this.regionTimeline_}getRegionTimeline(){return this.regionTimeline_}getQualityObserver(){return this.qualityObserver_}getStats(){return this.stats_}getManifestFilterer(){return this.manifestFilterer_}receiveDrmEngine(){return this.drmEngineEntrusted_=!0,this.drmEngine_}getDrmEngine(){return this.drmEngine_}setPrefetchVariant(t){this.prefetchedVariant_=t}getPrefetchedVariant(){return this.prefetchedVariant_}getPrefetchedVariantTrack(){return this.prefetchedVariant_?se.variantToTrack(this.prefetchedVariant_):null}getPrefetchedTextTrack(){return this.prefetchedTextStream_?se.textStreamToTrack(this.prefetchedTextStream_):null}receiveSegmentPrefetchesById(){return this.segmentPrefetchEntrusted_=!0,this.segmentPrefetchById_}attachAdaptationSetCriteria(t){this.currentAdaptationSetCriteria_=t}attachManifest(t,i,r){this.manifest_=t,this.parser_=i,this.parserFactory_=r}start(){(async()=>{await Promise.resolve();try{await this.parseManifestInner_(),this.throwIfDestroyed_(),de.isMediaKeysPolyfilled("webkit")||(await this.initializeDrm(),this.throwIfDestroyed_()),await this.validatePrefetchedVariant_(),this.throwIfDestroyed_(),this.allowPrefetch_&&(await this.prefetchInner_(),this.throwIfDestroyed_()),this.allowPrefetch_&&this.drmEngine_&&(await this.drmEngine_.waitForActiveRequests(),this.throwIfDestroyed_()),this.successPromise_.resolve()}catch(t){(!(t instanceof h)||t.code!=h.Code.OPERATION_ABORTED&&t.code!=h.Code.OBJECT_DESTROYED)&&this.successPromise_.reject(t)}})()}dispatchEvent(t){return this.eventHandoffTarget_?this.eventHandoffTarget_.dispatchEvent(t):super.dispatchEvent(t)}onError(t){t.severity===h.Severity.CRITICAL&&(this.successPromise_.reject(t),this.destroy());let i=U.EventName.Error,r=this.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}throwIfDestroyed_(){if(this.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OBJECT_DESTROYED)}makeStateChangeEvent_(t){this.dispatchEvent(new U(U.EventName.OnStateChange,new Map().set("state",t)))}makeEvent_(t,i){return new U(t,i)}async parseManifestInner_(){this.makeStateChangeEvent_("manifest-parser"),this.parser_||(this.parserFactory_=me.getFactory(this.assetUri_,this.mimeType_),v.assert(this.parserFactory_,"Must have manifest parser"),this.parser_=this.parserFactory_(),this.parser_.configure(this.config_.manifest,()=>this.isPreload_));let t=Date.now()/1e3;this.makeStateChangeEvent_("manifest"),this.manifest_||(this.manifest_=await this.parser_.start(this.assetUri_,this.manifestPlayerInterface_),y.filterForAVVariants_(this.manifest_),await this.chooseInitialVariant_()),this.manifestPromise_.resolve();let i=this.makeEvent_(U.EventName.ManifestParsed);if(await Promise.resolve(),this.dispatchEvent(i),this.manifest_.variants.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_VARIANTS);if(y.filterForAVVariants_(this.manifest_),this.manifestFilterer_.applyRestrictions(this.manifest_)){let a=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.throwIfDestroyed_(),this.dispatchEvent(a)}let n=Date.now()/1e3-t;this.stats_.setManifestTime(n)}async initializeDrm(t){if(!this.manifest_||this.drmEngine_)return;this.makeStateChangeEvent_("drm-engine"),this.startTimeOfDrm_=Date.now()/1e3,this.drmEngine_=this.createDrmEngine_(),this.manifestFilterer_.setDrmEngine(this.drmEngine_),this.drmEngine_.configure(this.config_.drm,()=>this.isPreload_);let i=se.getPlayableVariants(this.manifest_.variants),r=!0;if(this.manifest_&&this.manifest_.presentationTimeline&&(r=this.manifest_.presentationTimeline.isDynamic()),await this.drmEngine_.initForPlayback(i,this.manifest_.offlineSessionIds,r),this.throwIfDestroyed_(),t&&(await this.drmEngine_.attach(t),this.throwIfDestroyed_()),this.currentAdaptationSetCriteria_){let n=this.currentAdaptationSetCriteria_.getConfiguration();n.keySystem=this.keySystem_(),this.currentAdaptationSetCriteria_.configure(n)}if(await this.manifestFilterer_.filterManifest(this.manifest_)){let n=this.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),this.dispatchEvent(n)}}reconfigure(t){this.config_=t}configure(t,i){let r=Pt.convertToConfigObject(t,i);st.mergeConfigObjects(this.config_,r),this.reconfigurePrefetched_()}getConfiguration(){return Ne.cloneObject(this.config_)}async chooseInitialVariant_(){if(!this.currentAdaptationSetCriteria_){this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let t={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};st.addDeprecatedConfigFields(t),this.currentAdaptationSetCriteria_.configure(t)}this.shouldCreateSegmentIndexBeforeDrmEngineInitialization_()&&(this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}shouldCreateSegmentIndexBeforeDrmEngineInitialization_(){return this.prefetchedVariant_||(v.assert(this.manifest_,"The manifest should already be parsed."),!this.manifest_.variants.length)?!1:this.manifest_.variants.length==1||this.manifest_.type==me.HLS}async validatePrefetchedVariant_(){this.prefetchedVariant_&&!this.manifest_.variants.includes(this.prefetchedVariant_)&&(await this.closeSegmentIndexFromVariant_(this.prefetchedVariant_),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_(),this.prefetchedVariant_&&await this.createSegmentIndexFromVariant_(this.prefetchedVariant_))}async prefetchInner_(){if(!this.prefetchedVariant_){let t=this.configureAbrManagerAndChooseVariant_();t&&(this.prefetchedVariant_=t)}if(this.prefetchedVariant_){let t=this.manifest_.presentationTimeline.isLive(),i=[],r=this.prefetchedVariant_;r.video&&i.push(this.prefetchStream_(r.video,t)),r.audio&&i.push(this.prefetchStream_(r.audio,t));let s=this.chooseTextStream_(r);s&&(i.push(this.prefetchStream_(s,t)),this.prefetchedTextStream_=s),await Promise.all(i)}}configureAbrManagerAndChooseVariant_(){if(v.assert(this.currentAdaptationSetCriteria_,"Must have an AdaptationSetCriteria"),!this.abrManager_){let s=this.config_.abrFactory;this.abrManager_=s(),this.abrManager_.configure(this.config_.abr)}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i);return this.abrManager_.setVariants(Array.from(r.values()),t),this.abrManager_.chooseVariant(!0)}chooseTextStream_(t){let i=null,r=this.config_.preferredText;for(let s of r){if(!s.language)continue;let n=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,s.language,s.role,s.forced);if(n.length){i=n[0];break}}if(!i&&(t!=null&&t.audio)&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0);s.length&&(i=s[0])}return i}async prefetchStream_(t,i){let r=this.config_.streaming.segmentPrefetchLimit||2,s=new Xr(r,t,(c,d,u)=>jr.dispatchFetch(c,d,u||null,this.config_.streaming.retryParameters,this.networkingEngine_,this.isPreload_),!1);this.segmentPrefetchById_.set(t.id,s),t.segmentIndex||await t.createSegmentIndex();let n=typeof this.startTime_=="number"?this.startTime_:0,a=t.segmentIndex.getIteratorForTime(n),o=null;a&&(o=a.current(),o||(o=a.next().value)),o||(o=t.segmentIndex.earliestReference()),o&&(i?o.initSegmentReference&&await s.prefetchInitSegment(o.initSegmentReference):await s.prefetchSegmentsByTime(o.startTime))}async reconfigurePrefetched_(){if(!this.prefetchedVariant_)return;let t=this.manifest_.presentationTimeline.isLive(),i=[],r=d=>{d&&(this.segmentPrefetchById_.has(d.id)&&(this.segmentPrefetchById_.get(d.id).clearAll(),this.segmentPrefetchById_.delete(d.id)),d.segmentIndex&&d.closeSegmentIndex&&i.push(d.closeSegmentIndex()))},s=()=>{let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])r(u);this.prefetchedTextStream_=null},n=()=>{r(this.prefetchedTextStream_),this.prefetchedTextStream_=null},a=this.currentAdaptationSetCriteria_.getConfiguration(),o={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem_()};if(st.addDeprecatedConfigFields(o),Ne.alphabeticalKeyOrderStringify(a)!=Ne.alphabeticalKeyOrderStringify(o)&&(this.currentAdaptationSetCriteria_.configure(o),s(),this.prefetchedVariant_=this.configureAbrManagerAndChooseVariant_()),this.prefetchedVariant_){let d=this.chooseTextStream_(this.prefetchedVariant_);d?d!=this.prefetchedTextStream_&&(n(),this.prefetchedTextStream_=d):n()}else n();await Promise.all(i);let c=[];if(this.prefetchedVariant_){let d=this.prefetchedVariant_;for(let u of[d.video,d.audio])c.push(this.prefetchStream_(u,t));this.prefetchedTextStream_&&c.push(this.prefetchStream_(this.prefetchedTextStream_,t))}await Promise.all(c)}async createSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&!r.segmentIndex&&i.push(r.createSegmentIndex());i.length>0&&await Promise.all(i)}async closeSegmentIndexFromVariant_(t){let i=[];for(let r of[t.video,t.audio])r&&r.segmentIndex&&r.closeSegmentIndex&&i.push(r.closeSegmentIndex());i.length>0&&await Promise.all(i)}waitForFinish(){return this.successPromise_.promise}waitForManifest(){let t=[this.manifestPromise_.promise,this.successPromise_.promise];return Promise.race(t)}async destroy(){if(this.destroyed_=!0,this.parser_&&!this.parserEntrusted_&&await this.parser_.stop(),this.abrManager_&&this.abrManager_.release(),this.regionTimeline_&&!this.regionTimelineEntrusted_&&this.regionTimeline_.release(),this.drmEngine_&&!this.drmEngineEntrusted_&&await this.drmEngine_.destroy(),this.segmentPrefetchById_.size>0&&!this.segmentPrefetchEntrusted_)for(let t of this.segmentPrefetchById_.values())t.clearAll()}isDestroyed(){return this.destroyed_}hasBeenAttached(){return this.hasBeenAttached_}keySystem_(){return de.keySystem(this.drmEngine_?this.drmEngine_.getDrmInfo():null)}static filterForAVVariants_(t){let i=r=>r.video&&r.audio||r.video&&r.video.codecs.includes(",");t.variants.some(i)&&(p.debug("Found variant with audio and video content, so filtering out audio-only content."),t.variants=t.variants.filter(i))}};/*! @license
|
|
429
|
+
* Shaka Player
|
|
430
|
+
* Copyright 2016 Google LLC
|
|
431
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
432
|
+
*/var _n=class extends Le{constructor(t){super();l(this,"timeline_");l(this,"previousBase_");this.timeline_=t,this.previousBase_=null}release(){this.timeline_=null,super.release()}poll(t,i){if(!this.timeline_)return;let r=this.timeline_.getProgramDateTimeRegionForTime(t);if(!r)return;let s=r.pdt-r.start;if(this.previousBase_==null){this.previousBase_=s;return}Math.abs(s-this.previousBase_)>.5&&this.dispatchEvent(new U("change",new Map([["programDateTime",new Date(r.pdt*1e3)],["timestamp",r.start]]))),this.previousBase_=s}};/*! @license
|
|
433
|
+
* Shaka Player
|
|
434
|
+
* Copyright 2016 Google LLC
|
|
435
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
436
|
+
*/var $r=class $r extends Le{constructor(t,i){super();l(this,"timeline_");l(this,"startsPastZero_");l(this,"oldPosition_");l(this,"rules_");l(this,"eventManager_");this.timeline_=t,this.startsPastZero_=i,this.oldPosition_=new Map;let r=$r.RelativePosition_,s=r.BEFORE_THE_REGION,n=r.IN_THE_REGION,a=r.AFTER_THE_REGION;this.rules_=[{weWere:null,weAre:n,invoke:(o,c)=>this.onEvent_("enter",o,c)},{weWere:s,weAre:n,invoke:(o,c)=>this.onEvent_("enter",o,c)},{weWere:a,weAre:n,invoke:(o,c)=>this.onEvent_("enter",o,c)},{weWere:n,weAre:s,invoke:(o,c)=>this.onEvent_("exit",o,c)},{weWere:n,weAre:a,invoke:(o,c)=>this.onEvent_("exit",o,c)},{weWere:s,weAre:a,invoke:(o,c)=>{c?this.onEvent_("skip",o,c):(this.onEvent_("enter",o,c),this.onEvent_("exit",o,c))}},{weWere:a,weAre:s,invoke:(o,c)=>this.onEvent_("skip",o,c)}],this.eventManager_=new ue,this.eventManager_.listen(this.timeline_,"regionremove",o=>{let c=o.region;this.oldPosition_.delete(c)})}release(){this.timeline_=null,this.oldPosition_.clear(),this.eventManager_.release(),this.eventManager_=null,super.release()}poll(t,i){if(!(this.startsPastZero_&&t==0)){this.startsPastZero_=!1;for(let r of this.timeline_.regions()){let s=this.oldPosition_.get(r),n=$r.determinePositionRelativeTo_(r,t);this.oldPosition_.set(r,n);for(let a of this.rules_)a.weWere==s&&a.weAre==n&&a.invoke(r,i)}}}onEvent_(t,i,r){let s=new U(t,new Map([["region",i],["seeking",r]]));this.dispatchEvent(s)}static determinePositionRelativeTo_(t,i){let r=$r.RelativePosition_;return i<t.startTime?r.BEFORE_THE_REGION:i>t.endTime?r.AFTER_THE_REGION:r.IN_THE_REGION}};l($r,"RelativePosition_",{BEFORE_THE_REGION:1,IN_THE_REGION:2,AFTER_THE_REGION:3});var Ur=$r;/*! @license
|
|
437
|
+
* Shaka Player
|
|
438
|
+
* Copyright 2016 Google LLC
|
|
439
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
440
|
+
*/var Lr={ach:"Lwo",ady:"\u0410\u0434\u044B\u0433\u044D\u0431\u0437\u044D",af:"Afrikaans","af-NA":"Afrikaans (Namibia)","af-ZA":"Afrikaans (South Africa)",ak:"T\u0255\u0265i",ar:"\u0627\u0644\u0639\u0631\u0628\u064A\u0629","ar-AR":"\u0627\u0644\u0639\u0631\u0628\u064A\u0629","ar-MA":"\u0627\u0644\u0639\u0631\u0628\u064A\u0629","ar-SA":"\u0627\u0644\u0639\u0631\u0628\u064A\u0629 (\u0627\u0644\u0633\u0639\u0648\u062F\u064A\u0629)","ay-BO":"Aymar aru",az:"Az\u0259rbaycan dili","az-AZ":"Az\u0259rbaycan dili","be-BY":"\u0411\u0435\u043B\u0430\u0440\u0443\u0441\u043A\u0430\u044F",bg:"\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438","bg-BG":"\u0411\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438",bn:"\u09AC\u09BE\u0982\u09B2\u09BE","bn-IN":"\u09AC\u09BE\u0982\u09B2\u09BE (\u09AD\u09BE\u09B0\u09A4)","bn-BD":"\u09AC\u09BE\u0982\u09B2\u09BE(\u09AC\u09BE\u0982\u09B2\u09BE\u09A6\u09C7\u09B6)","bs-BA":"Bosanski",ca:"Catal\xE0","ca-ES":"Catal\xE0",cak:"Maya Kaqchikel","ck-US":"\u13E3\u13B3\u13A9 (tsalagi)",cs:"\u010Ce\u0161tina","cs-CZ":"\u010Ce\u0161tina",cy:"Cymraeg","cy-GB":"Cymraeg",da:"Dansk","da-DK":"Dansk",de:"Deutsch","de-AT":"Deutsch (\xD6sterreich)","de-DE":"Deutsch (Deutschland)","de-CH":"Deutsch (Schweiz)",dsb:"Dolnoserb\u0161\u0107ina",el:"\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC","el-GR":"\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC",en:"English","en-GB":"English (UK)","en-AU":"English (Australia)","en-CA":"English (Canada)","en-IE":"English (Ireland)","en-IN":"English (India)","en-PI":"English (Pirate)","en-UD":"English (Upside Down)","en-US":"English (US)","en-ZA":"English (South Africa)","en@pirate":"English (Pirate)",eo:"Esperanto","eo-EO":"Esperanto",es:"Espa\xF1ol","es-AR":"Espa\xF1ol (Argentine)","es-419":"Espa\xF1ol (Latinoam\xE9rica)","es-CL":"Espa\xF1ol (Chile)","es-CO":"Espa\xF1ol (Colombia)","es-EC":"Espa\xF1ol (Ecuador)","es-ES":"Espa\xF1ol (Espa\xF1a)","es-LA":"Espa\xF1ol (Latinoam\xE9rica)","es-NI":"Espa\xF1ol (Nicaragua)","es-MX":"Espa\xF1ol (M\xE9xico)","es-US":"Espa\xF1ol (Estados Unidos)","es-VE":"Espa\xF1ol (Venezuela)",et:"eesti keel","et-EE":"Eesti (Estonia)",eu:"Euskara","eu-ES":"Euskara",fa:"\u0641\u0627\u0631\u0633\u06CC","fa-IR":"\u0641\u0627\u0631\u0633\u06CC","fb-LT":"Leet Speak",ff:"Fulah",fi:"Suomi","fi-FI":"Suomi","fo-FO":"F\xF8royskt",fr:"Fran\xE7ais","fr-CA":"Fran\xE7ais (Canada)","fr-FR":"Fran\xE7ais (France)","fr-BE":"Fran\xE7ais (Belgique)","fr-CH":"Fran\xE7ais (Suisse)","fy-NL":"Frysk",ga:"Gaeilge","ga-IE":"Gaeilge (Gaelic)",gl:"Galego","gl-ES":"Galego","gn-PY":"Ava\xF1e'\u1EBD","gu-IN":"\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0","gx-GR":"\u1F19\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AE \u1F00\u03C1\u03C7\u03B1\u03AF\u03B1",he:"\u05E2\u05D1\u05E8\u05D9\u05EA\u200F","he-IL":"\u05E2\u05D1\u05E8\u05D9\u05EA\u200F",hi:"\u0939\u093F\u0928\u094D\u0926\u0940","hi-IN":"\u0939\u093F\u0928\u094D\u0926\u0940",hr:"Hrvatski","hr-HR":"Hrvatski",hsb:"Hornjoserb\u0161\u0107ina",ht:"Krey\xF2l",hu:"Magyar","hu-HU":"Magyar","hy-AM":"\u0540\u0561\u0575\u0565\u0580\u0565\u0576",id:"Bahasa Indonesia","id-ID":"Bahasa Indonesia",is:"\xCDslenska","is-IS":"\xCDslenska (Iceland)",it:"Italiano","it-IT":"Italiano",ja:"\u65E5\u672C\u8A9E","ja-JP":"\u65E5\u672C\u8A9E","jv-ID":"Basa Jawa","ka-GE":"\u10E5\u10D0\u10E0\u10D7\u10E3\u10DA\u10D8","kk-KZ":"\u049A\u0430\u0437\u0430\u049B\u0448\u0430",km:"\u1797\u17B6\u179F\u17B6\u1781\u17D2\u1798\u17C2\u179A","km-KH":"\u1797\u17B6\u179F\u17B6\u1781\u17D2\u1798\u17C2\u179A",kab:"Taqbaylit",kn:"\u0C95\u0CA8\u0CCD\u0CA8\u0CA1","kn-IN":"\u0C95\u0CA8\u0CCD\u0CA8\u0CA1 (India)",ko:"\uD55C\uAD6D\uC5B4","ko-KR":"\uD55C\uAD6D\uC5B4 (\u97E9\u56FD)",ku:"Kurd\xEE","ku-TR":"Kurd\xEE",la:"Latin","la-VA":"Latin",lb:"L\xEBtzebuergesch","li-NL":"L\xE8mb\xF6rgs",lt:"Lietuvi\u0173","lt-LT":"Lietuvi\u0173",lv:"Latvie\u0161u","lv-LV":"Latvie\u0161u",mai:"\u092E\u0948\u0925\u093F\u0932\u0940, \u09AE\u09C8\u09A5\u09BF\u09B2\u09C0","mg-MG":"Malagasy",mk:"\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438","mk-MK":"\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438 (\u041C\u0430\u043A\u0435\u0434\u043E\u043D\u0441\u043A\u0438)",ml:"\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02","ml-IN":"\u0D2E\u0D32\u0D2F\u0D3E\u0D33\u0D02","mn-MN":"\u041C\u043E\u043D\u0433\u043E\u043B",mr:"\u092E\u0930\u093E\u0920\u0940","mr-IN":"\u092E\u0930\u093E\u0920\u0940",ms:"Bahasa Melayu","ms-MY":"Bahasa Melayu",mt:"Malti","mt-MT":"Malti",my:"\u1017\u1019\u102C\u1005\u1000\u102C",nb:"Norsk (bokm\xE5l)","nb-NO":"Norsk (bokm\xE5l)",ne:"\u0928\u0947\u092A\u093E\u0932\u0940","ne-NP":"\u0928\u0947\u092A\u093E\u0932\u0940",nl:"Nederlands","nl-BE":"Nederlands (Belgi\xEB)","nl-NL":"Nederlands (Nederland)","nn-NO":"Norsk (nynorsk)",no:"Norsk",oc:"Occitan","or-IN":"\u0B13\u0B21\u0B3C\u0B3F\u0B06",pa:"\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40","pa-IN":"\u0A2A\u0A70\u0A1C\u0A3E\u0A2C\u0A40 (\u0A2D\u0A3E\u0A30\u0A24 \u0A28\u0A42\u0A70)",pl:"Polski","pl-PL":"Polski","ps-AF":"\u067E\u069A\u062A\u0648",pt:"Portugu\xEAs","pt-BR":"Portugu\xEAs (Brasil)","pt-PT":"Portugu\xEAs (Portugal)","qu-PE":"Qhichwa","rm-CH":"Rumantsch",ro:"Rom\xE2n\u0103","ro-RO":"Rom\xE2n\u0103",ru:"\u0420\u0443\u0441\u0441\u043A\u0438\u0439","ru-RU":"\u0420\u0443\u0441\u0441\u043A\u0438\u0439","sa-IN":"\u0938\u0902\u0938\u094D\u0915\u0943\u0924\u092E\u094D","se-NO":"Davvis\xE1megiella","si-LK":"\u0DB4\u0DC5\u0DCF\u0DAD",sk:"Sloven\u010Dina","sk-SK":"Sloven\u010Dina (Slovakia)",sl:"Sloven\u0161\u010Dina","sl-SI":"Sloven\u0161\u010Dina","so-SO":"Soomaaliga",sq:"Shqip","sq-AL":"Shqip",sr:"\u0421\u0440\u043F\u0441\u043A\u0438","sr-RS":"\u0421\u0440\u043F\u0441\u043A\u0438 (Serbia)",su:"Basa Sunda",sv:"Svenska","sv-SE":"Svenska",sw:"Kiswahili","sw-KE":"Kiswahili",ta:"\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD","ta-IN":"\u0BA4\u0BAE\u0BBF\u0BB4\u0BCD",te:"\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41","te-IN":"\u0C24\u0C46\u0C32\u0C41\u0C17\u0C41",tg:"\u0437\u0430\u0431\u043E\u0301\u043D\u0438 \u0442\u043E\u04B7\u0438\u043A\u04E3\u0301","tg-TJ":"\u0442\u043E\u04B7\u0438\u043A\u04E3",th:"\u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22","th-TH":"\u0E20\u0E32\u0E29\u0E32\u0E44\u0E17\u0E22 (\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28\u0E44\u0E17\u0E22)",tl:"Filipino","tl-PH":"Filipino",tlh:"tlhIngan-Hol",tr:"T\xFCrk\xE7e","tr-TR":"T\xFCrk\xE7e","tt-RU":"\u0442\u0430\u0442\u0430\u0440\u0447\u0430",uk:"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430","uk-UA":"\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430",ur:"\u0627\u0631\u062F\u0648","ur-PK":"\u0627\u0631\u062F\u0648",uz:"O'zbek","uz-UZ":"O'zbek",vi:"Ti\u1EBFng Vi\u1EC7t","vi-VN":"Ti\u1EBFng Vi\u1EC7t","xh-ZA":"isiXhosa",yi:"\u05D9\u05D9\u05B4\u05D3\u05D9\u05E9","yi-DE":"\u05D9\u05D9\u05B4\u05D3\u05D9\u05E9 (German)",zh:"\u4E2D\u6587","zh-HANS":"\u4E2D\u6587\u7B80\u4F53","zh-HANT":"\u4E2D\u6587\u7E41\u9AD4","zh-CN":"\u4E2D\u6587\uFF08\u4E2D\u56FD\uFF09","zh-HK":"\u4E2D\u6587\uFF08\u9999\u6E2F\uFF09","zh-SG":"\u4E2D\u6587\uFF08\u65B0\u52A0\u5761\uFF09","zh-TW":"\u4E2D\u6587\uFF08\u53F0\u7063\uFF09","zu-ZA":"isiZulu",ase:"American Sign Language",bfi:"British Sign Language",bzs:"Brazilian Sign Language",csn:"Colombian Sign Language",dse:"Dutch Sign Language",dsl:"Danish Sign Language",fsl:"French Sign Language",gsg:"German Sign Language",gss:"Greek Sign Language",isg:"Irish Sign Language",ise:"Italian Sign Language",jsl:"Japanese Sign Language",mfs:"Mexican Sign Language",ncs:"Nicaraguan Sign Language",nsl:"Norwegian Sign Language",psr:"Portuguese Sign Language",sfb:"French Belgian Sign Language",sfs:"South African Sign Language",sgg:"Swiss German Sign Language",ssp:"Spanish Sign Language",swl:"Swedish Sign Language",vgt:"Flemish Sign Language"};for(let y of Object.keys(Lr))Lr[y.toLowerCase()]=Lr[y];/*! @license
|
|
441
|
+
* Shaka Player
|
|
442
|
+
* Copyright 2016 Google LLC
|
|
443
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
444
|
+
*/var si=class y{static flattenPayload_(e,t){if(e.lineBreak)return`
|
|
445
|
+
`;if(e.nestedCues.length)return e.nestedCues.map(m=>y.flattenPayload_(m,e)).join("");if(!e.payload)return e.payload;let i=[],r=e.fontWeight>=B.fontWeight.BOLD,s=e.fontStyle==B.fontStyle.ITALIC,n=e.textDecoration.includes(B.textDecoration.UNDERLINE);r&&i.push(["b"]),s&&i.push(["i"]),n&&i.push(["u"]);let a=e.color;a==""&&t&&(a=t.color);let o="",c=y.getColorName(a);c&&(o+=`.${c}`);let d=e.backgroundColor;d==""&&t&&(d=t.backgroundColor);let u=y.getColorName(d);return u&&(o+=`.bg_${u}`),o&&i.push(["c",o]),i.reduceRight((m,[f,g=""])=>`<${f}${g}>${m}</${f}>`,e.payload)}static getColorName(e){let t=e.toLowerCase(),i=t.replace(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+),?([^,\s)]+)?/i);switch(i?t="#"+(parseInt(i[1],10)|256).toString(16).slice(1)+(parseInt(i[2],10)|256).toString(16).slice(1)+(parseInt(i[3],10)|256).toString(16).slice(1):t.startsWith("#")&&t.length>7&&(t=t.slice(0,7)),t){case"white":case"#fff":case"#ffffff":return"white";case"lime":case"#0f0":case"#00ff00":return"lime";case"cyan":case"#0ff":case"#00ffff":return"cyan";case"red":case"#f00":case"#ff0000":return"red";case"yellow":case"#ff0":case"#ffff00":return"yellow";case"magenta":case"#f0f":case"#ff00ff":return"magenta";case"blue":case"#00f":case"#0000ff":return"blue";case"black":case"#000":case"#000000":return"black"}return null}static getCuesToFlatten(e,t){let i=[];for(let r of y.removeDuplicates(e))if(r.isContainer)i.push(...y.getCuesToFlatten(r.nestedCues,r));else{let s=r.clone();s.nestedCues=[],s.payload=y.flattenPayload_(r,t),i.push(s)}return i}static removeDuplicates(e){let t=[];for(let i of e)!t.some(s=>B.equal(i,s))&&t.push(i);return t}static mapShakaCueToNativeCue(e){if(e.startTime>=e.endTime)return p.warning("Invalid cue times: "+e.startTime+" - "+e.endTime),null;let t=new VTTCue(e.startTime,e.endTime,e.payload),i=r=>{let s=5381,n=r.length;for(;n;)s=s*33^r.charCodeAt(--n);return(s>>>0).toString()};t.id=i(e.startTime.toString())+i(e.endTime.toString())+i(e.payload),t.lineAlign=e.lineAlign,t.positionAlign=e.positionAlign,e.size&&(t.size=e.size);try{t.align=e.textAlign}catch(r){}return e.textAlign=="center"&&t.align!="center"&&(t.align="middle"),e.writingMode==B.writingMode.VERTICAL_LEFT_TO_RIGHT?t.vertical="lr":e.writingMode==B.writingMode.VERTICAL_RIGHT_TO_LEFT&&(t.vertical="rl"),e.lineInterpretation==B.lineInterpretation.PERCENTAGE&&(t.snapToLines=!1),e.line!=null&&(t.line=e.line),e.position!=null&&(t.position=e.position),t}static mapNativeCueToShakaCue(e){if(e.endTime===1/0||e.endTime<e.startTime)return null;let t=new B(e.startTime,e.endTime,e.text);return t.line=typeof e.line=="number"?e.line:null,e.lineAlign&&(t.lineAlign=e.lineAlign),t.lineInterpretation=e.snapToLines?B.lineInterpretation.LINE_NUMBER:B.lineInterpretation.PERCENTAGE,t.position=typeof e.position=="number"?e.position:null,e.positionAlign&&(t.positionAlign=e.positionAlign),t.size=e.size,t.textAlign=e.align,e.vertical==="lr"?t.writingMode=B.writingMode.VERTICAL_LEFT_TO_RIGHT:e.vertical==="rl"&&(t.writingMode=B.writingMode.VERTICAL_RIGHT_TO_LEFT),e.region&&(t.region.id=e.region.id,t.region.height=e.region.lines,t.region.heightUnits=He.units.LINES,t.region.regionAnchorX=e.region.regionAnchorX,t.region.regionAnchorY=e.region.regionAnchorY,t.region.scroll=e.region.scroll,t.region.viewportAnchorX=e.region.viewportAnchorX,t.region.viewportAnchorY=e.region.viewportAnchorY,t.region.viewportAnchorUnits=He.units.PERCENTAGE,t.region.width=e.region.width,t.region.widthUnits=He.units.PERCENTAGE),B.parseCuePayload(t),t}static appendCuesToTextTrack(e,t){let i=y.getCuesToFlatten(t),r=[],s=e.cues?Array.from(e.cues):[];for(let a of i)if(!s.some(c=>c.startTime==a.startTime&&c.endTime==a.endTime&&c.text==a.payload)&&a.payload){let c=y.mapShakaCueToNativeCue(a);c&&r.push(c)}let n=r.slice().sort((a,o)=>a.startTime!=o.startTime?a.startTime-o.startTime:a.endTime!=o.endTime?a.endTime-o.startTime:"line"in VTTCue.prototype?r.indexOf(o)-r.indexOf(a):r.indexOf(a)-r.indexOf(o));for(let a of n)e.addCue(a)}static removeCuesFromTextTrack(e,t){let i=!1;e.mode==="disabled"&&(i=!0,e.mode="hidden",v.assert(e.cues,'Cues should be accessible when mode is set to "hidden".'));let r=0;for(;r<e.cues.length;){let s=e.cues[r];t(s)?e.removeCue(s):r++}i&&(e.mode="disabled")}static resetCuePositioning(e){let t=new B(0,0,""),i=r=>{r.line=t.line,r.lineAlign=t.lineAlign,r.position=t.position,r.positionAlign=t.positionAlign,r.size=t.size,r.displayAlign=t.displayAlign,r.region=t.region;for(let s of r.nestedCues)i(s)};i(e)}};/*! @license
|
|
446
|
+
* Shaka Player
|
|
447
|
+
* Copyright 2016 Google LLC
|
|
448
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
449
|
+
*/var ks=class ks{constructor(e){l(this,"player_");l(this,"eventManager_");l(this,"loadEventManager_");l(this,"config_");l(this,"video_");l(this,"trackNodes_");l(this,"trackId_");l(this,"visible_");l(this,"timer_");this.player_=e,this.eventManager_=new ue,this.loadEventManager_=new ue,this.config_=null,this.video_=null,this.trackNodes_=new Map,this.trackId_=-1,this.visible_=!1,this.timer_=null,this.eventManager_.listen(e,U.EventName.Loaded,()=>this.checkMsePlayback_()),this.checkMsePlayback_()}configure(e){this.config_=e}remove(e,t){if(!this.player_)return!1;let i=this.getActiveTrack_();return i&&si.removeCuesFromTextTrack(i,r=>r.startTime<t&&r.endTime>e),!0}append(e){var s,n;let t=this.getActiveTrack_();if(!t)return;let i=(n=(s=this.config_)==null?void 0:s.subtitleDelay)!=null?n:0,r=i!==0?e.map(a=>{let o=a.clone();return o.startTime=Math.max(0,o.startTime+i),o.endTime=Math.max(0,o.endTime+i),o}):e;si.appendCuesToTextTrack(t,r)}destroy(){var e,t,i;return this.player_&&(this.video_&&this.onUnloading_(),this.player_=null),(e=this.timer_)==null||e.stop(),this.timer_=null,(t=this.eventManager_)==null||t.release(),this.eventManager_=null,(i=this.loadEventManager_)==null||i.release(),this.loadEventManager_=null,Promise.resolve()}isTextVisible(){return this.visible_}setTextVisibility(e){this.visible_=e;let t=this.getActiveTrack_();if(t){this.applyVisibilityToTrack_(t,e);return}this.isSrcEqualsMode_()&&this.applyVisibilityToSrcEqualsTracks_(e)}setTextLanguage(e){}onUnloading_(){var e,t;(e=this.timer_)==null||e.stop(),this.timer_=null,(t=this.loadEventManager_)==null||t.removeAll();for(let i of this.trackNodes_.values())i.remove();this.trackNodes_.clear(),this.trackId_=-1,this.video_=null}onTextChanged_(){let e=new Map,t=this.player_.getTextTracks();for(let i of t){let r=this.trackNodes_.has(i.id)?this.reuseTrackNode_(i):this.createTrackNode_(i);e.set(i.id,r),i.active&&(this.trackId_=i.id)}for(let i of this.trackNodes_.values())i.remove();this.trackNodes_=e,this.activateCurrentTrack_()}onChange_(){if(this.timer_)return;let e=this.video_;this.timer_=new ae(()=>{if(this.timer_=null,this.video_!==e)return;let t=this.resolveActiveTrackId_();this.disableAllTracksExcept_(t),this.trackId_!==t&&(this.trackId_=t,this.syncTrackSelectionWithPlayer_(t))}).tickAfter(0)}getActiveTrack_(){return this.trackNodes_.has(this.trackId_)?this.trackNodes_.get(this.trackId_).track:null}applyVisibilityToTrack_(e,t){if(e.mode==="disabled")return;let i=t?"showing":"hidden";e.mode!==i&&(e.mode=i)}isSrcEqualsMode_(){if(!this.player_)return!1;let e=ks.LoadMode;return this.player_.getLoadMode()===e.SRC_EQUALS}applyVisibilityToSrcEqualsTracks_(e){let t=Array.from(this.player_.getMediaElement().textTracks).filter(i=>["captions","subtitles","forced"].includes(i.kind));if(e){if(!t.some(r=>r.mode==="showing")){let r=t.find(s=>s.mode==="hidden");r&&(r.mode="showing")}}else for(let i of t)i.mode==="showing"&&(i.mode="hidden")}reuseTrackNode_(e){let t=this.trackNodes_.get(e.id);return!e.active&&t.track.mode!=="disabled"&&(t.track.mode="disabled"),this.trackNodes_.delete(e.id),t}createTrackNode_(e){let t=this.video_.ownerDocument.createElement("track");return t.kind=this.getTrackKind_(e),t.label=this.getTrackLabel_(e),t.srclang=this.resolveTrackLanguage_(e),t.src="data:,WEBVTT",t.track.mode="disabled",this.video_.appendChild(t),t}resolveTrackLanguage_(e){var t;return e.language?e.language in Lr?e.language:(t=ve.getBase(e.language))!=null?t:"und":"und"}activateCurrentTrack_(){if(this.trackId_<=-1)return;if(!this.trackNodes_.has(this.trackId_)){this.trackId_=-1;return}let e=this.trackNodes_.get(this.trackId_).track;e.mode==="disabled"&&(e.mode=this.visible_?"showing":"hidden")}resolveActiveTrackId_(){let e=-1;if(this.trackNodes_.has(this.trackId_)){let t=this.trackNodes_.get(this.trackId_).track.mode;if(t==="showing")return this.trackId_;t==="hidden"&&(e=this.trackId_)}for(let t of this.trackNodes_.keys()){let i=this.trackNodes_.get(t);if(i.track.mode==="showing")return t;e<0&&i.track.mode==="hidden"&&(e=t)}return e}disableAllTracksExcept_(e){let t=this.trackNodes_.get(e);for(let i of this.trackNodes_.values())i!==t&&i.track.mode!=="disabled"&&(i.track.mode="disabled")}syncTrackSelectionWithPlayer_(e){if(e>-1){let t=this.player_.getTextTracks().find(i=>i.id===e);if(t){this.player_.selectTextTrack(t);return}}this.player_.selectTextTrack(null)}checkMsePlayback_(){if(this.video_||!this.player_)return;let e=ks.LoadMode;if(this.player_.getLoadMode()!==e.MEDIA_SOURCE)return;this.video_=this.player_.getMediaElement();let t=U.EventName;this.eventManager_.listenOnce(this.player_,t.Unloading,()=>this.onUnloading_()),this.loadEventManager_.listen(this.player_,t.TextChanged,()=>this.onTextChanged_()),this.loadEventManager_.listen(this.video_.textTracks,"change",()=>this.onChange_()),this.onTextChanged_()}getTrackKind_(e){let t=j.getDevice();return e.forced&&t.getBrowserEngine()===ie.BrowserEngine.WEBKIT?"forced":e.kind===R.TextStreamKind.CLOSED_CAPTION?"captions":"subtitles"}getTrackLabel_(e){var i;if(e.label)return e.label;if(e.language){let r=ve.getBase(e.language);if(window.Intl&&"DisplayNames"in Intl)try{let o=new Intl.DisplayNames(e.language,{type:"language",languageDisplay:"standard"}).of(e.language);if(o&&o.toLowerCase()!=e.language.toLowerCase())return o.charAt(0).toUpperCase()+o.slice(1)}catch(a){}let s=Lr[e.language];if(s)return s;let n=r&&Lr[r];if(n)return r===e.language?n:`${n} (${e.language})`}let t=String((i=e.originalTextId)!=null?i:"");return e.language&&e.language!==e.originalTextId?`${t} (${e.language})`:t}};l(ks,"LoadMode",{MEDIA_SOURCE:2,SRC_EQUALS:3});var mr=ks;/*! @license
|
|
450
|
+
* Shaka Player
|
|
451
|
+
* Copyright 2016 Google LLC
|
|
452
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
453
|
+
*/var Ds=class Ds{constructor(e){l(this,"player_");l(this,"config_");l(this,"eventManager_");l(this,"supported_");l(this,"textContainer_");l(this,"enabled_");l(this,"translatorController_");l(this,"recognitionTimer_");l(this,"nextTextTrackId_");l(this,"basicTextTrack_");l(this,"textTracks_");l(this,"activeTrackId_");l(this,"renderer_");l(this,"lastSourceLanguage_");l(this,"lastTargetLanguage_");l(this,"recognitionController_");this.player_=e,this.config_=null,this.eventManager_=new ue,this.supported_=Ds.isMediaStreamTrackSupported.value(),this.textContainer_=null,this.enabled_=!1,this.translatorController_=new to,this.recognitionTimer_=new ae(()=>{this.initRecognition_()}),this.nextTextTrackId_=1e15,this.basicTextTrack_=this.createTextTrack_(),this.textTracks_=[this.basicTextTrack_],this.activeTrackId_=null,this.renderer_=null,this.lastSourceLanguage_=null,this.lastTargetLanguage_=null,this.recognitionController_=new eo(this.translatorController_,this.recognitionTimer_,t=>{var r;if(!this.enabled_||!this.textContainer_)return;let i=this.truncateLastWords_(t,this.config_.maxTextLength);(r=this.renderer_)==null||r.render(i)},()=>{var t;(t=this.renderer_)==null||t.clear()})}configure(e){this.config_=e,this.checkTextTrackChanges_()}release(){var e;this.activeTrackId_=null,this.eventManager_.removeAll(),this.stopRecognition_(),this.player_=null,this.eventManager_.release(),(e=this.renderer_)==null||e.release(),this.textContainer_&&this.textContainer_.parentElement&&(this.textContainer_.remove(),this.textContainer_=null)}enable(e){if(!this.supported_||(this.textContainer_||(this.textContainer_=this.getTextContainer_()),!this.textContainer_)||(this.renderer_||(this.renderer_=new Za(this.textContainer_)),this.enabled_&&e.id==this.activeTrackId_))return;this.enabled_=!0,this.activeTrackId_=e.id,this.eventManager_.listen(this.player_,"audiotrackschanged",()=>{this.initRecognition_()});let t=this.player_.getMediaElement();this.eventManager_.listen(t,"seeking",()=>{this.initRecognition_()}),this.eventManager_.listen(t,"pause",()=>{this.stopRecognition_(!1)}),this.eventManager_.listen(t,"play",()=>{this.initRecognition_()}),t.paused||this.initRecognition_()}disable(){var e;this.enabled_&&(this.enabled_=!1,this.activeTrackId_=null,this.eventManager_.removeAll(),this.stopRecognition_(),(e=this.renderer_)==null||e.release(),this.renderer_=null,this.translatorController_.release(),this.recognitionController_.release())}isEnabled(){return this.enabled_}isSupported(){return!(!this.supported_||(this.textContainer_||(this.textContainer_=this.getTextContainer_()),!this.textContainer_))}getTextTracks(){if(!this.isSupported())return[];for(let e of this.textTracks_)e.active=e.id==this.activeTrackId_;return this.textTracks_}async initRecognition_(){var a;v.assert(this.config_,"Config must not be null!"),(a=this.renderer_)==null||a.clear();let e=this.player_.getAudioTracks();if(!e.length)return;let t=this.getAudioTrackFromMediaElement_();if(!t)return;let i=e.find(o=>o.active),r="en";i&&i.language&&i.language!="und"&&(r=i.language);let s=this.textTracks_.find(o=>o.id==this.activeTrackId_),n="";if(s&&s.language&&s.language!="und"&&(n=s.language),this.recognitionController_.isActive()&&this.lastSourceLanguage_===r&&this.lastTargetLanguage_!==n){this.lastTargetLanguage_=n,await this.translatorController_.setup(r,n);return}this.stopRecognition_();try{await this.translatorController_.setup(r,n)}catch(o){if(o.name=="NotSupportedError")return}await this.recognitionController_.start(t,r,this.config_.processLocally),this.lastSourceLanguage_=r,this.lastTargetLanguage_=n}stopRecognition_(e=!0){this.recognitionController_.stop(e)}truncateLastWords_(e,t){if(e.length<=t)return e;let i=e.length-t;for(;i>0&&e[i-1]!==" ";)i--;return"..."+e.slice(i).trimStart()}getAudioTrackFromMediaElement_(){let e=this.player_.getMediaElement();return e?Ds.audioObjectMap_.getOrInsertComputed(e,()=>{let i=window.AudioContext||window.webkitAudioContext,r=new i;v.assert(e,"MediaElement should be null");let s=r.createMediaElementSource(e),n=r.createMediaStreamDestination();s.connect(n),s.connect(r.destination);let a=n.stream.getAudioTracks()[0];return{audioContext:r,sourceNode:s,destinationNode:n,audioTrack:a}}).audioTrack:null}getTextContainer_(){let e=this.player_.getVideoContainer();if(!e)return null;let t=Ge.createHTMLElement("div");return t.classList.add("shaka-speech-to-text-container"),t.style.textAlign="center",t.style.display="flex",t.style.flexDirection="column",t.style.alignItems="center",t.style.justifyContent="flex-end",e.appendChild(t),t}checkTextTrackChanges_(){v.assert(this.config_,"Config must not be null!");let e=this.textTracks_.map(i=>i.language).filter(i=>i);if(!ye.hasSameElements(this.config_.languagesToTranslate,e)&&"Translator"in window){this.textTracks_=this.textTracks_.filter(r=>r.id==this.basicTextTrack_.id||this.config_.languagesToTranslate.includes(r.language)?!0:(r.id==this.activeTrackId_&&this.disable(),!1));for(let r of this.config_.languagesToTranslate){let s=this.textTracks_.find(n=>n.language==r);s||(s=this.createTextTrack_(),s.language=r,this.textTracks_.push(s))}let i=new U(U.EventName.TextChanged);this.player_.dispatchEvent(i)}}createTextTrack_(){return{id:this.nextTextTrackId_++,active:!1,type:R.ContentType.TEXT,bandwidth:0,language:"",label:null,kind:null,mimeType:null,codecs:null,primary:!1,roles:[],accessibilityPurpose:null,forced:!1,originalTextId:null,originalLanguage:"speech-to-text"}}};l(Ds,"audioObjectMap_",new Map);var Qr=Ds;Qr.isMediaStreamTrackSupported=new _e(()=>{let y=Ge.asHTMLIFrameElement(document.body.appendChild(document.createElement("iframe"))),e=y.contentWindow,t=e.SpeechRecognition||e.webkitSpeechRecognition;if(!t)return y.remove(),!1;let i=new t;y.remove();try{return i.start(0),i.stop(),!1}catch(r){return r.name=="TypeError"}});var Za=class{constructor(e){l(this,"container_");l(this,"span_");this.container_=e,this.span_=null}render(e){this.container_&&(this.span_||(this.span_=Ge.createHTMLElement("span"),this.span_.setAttribute("translate","no"),this.span_.style.backgroundColor="rgba(0,0,0,0.8)",this.span_.style.padding="0px 5px",this.span_.style.margin="2.5% 5%",this.container_.appendChild(this.span_)),this.span_.textContent=e)}clear(){this.span_&&(this.span_.textContent="")}release(){this.container_&&Ge.removeAllChildren(this.container_),this.span_=null}},eo=class{constructor(e,t,i,r){l(this,"translatorController_");l(this,"timer_");l(this,"onText_");l(this,"onClear_");l(this,"eventManager_");l(this,"recognition_");l(this,"version_");l(this,"active_");this.translatorController_=e,this.timer_=t,this.onText_=i,this.onClear_=r,this.eventManager_=new ue,this.recognition_=null,this.version_=0,this.active_=!1}async start(e,t,i){this.stop(),this.version_++;let r=this.version_;this.active_=!0;let s=window.SpeechRecognition||window.webkitSpeechRecognition,n=new s;if(this.recognition_=n,n.lang=t,n.continuous=!0,n.interimResults=!0,i&&"install"in s&&"available"in s)try{switch(await s.available({langs:[t],processLocally:!0})){case"available":n.processLocally=!0;break;case"downloading":case"downloadable":await s.install({langs:[t],processLocally:!0}),n.processLocally=!0;break;default:return}}catch(o){p.error("SpeechRecognition processLocally error",o)}if(r!==this.version_)return;let a=!1;this.eventManager_.listen(n,"start",()=>{r===this.version_&&this.timer_.tickAfter(5)}),this.eventManager_.listen(n,"result",async o=>{if(r!==this.version_)return;let c=o,d="";for(let m=c.resultIndex;m<c.results.length;m++)d+=c.results[m][0].transcript;let u=await this.translatorController_.translate(d);u===null||r!==this.version_||(this.onText_(u),this.timer_.tickAfter(.75))}),this.eventManager_.listen(n,"error",o=>{if(r!==this.version_)return;a=!0,this.onClear_(),o.error=="network"&&this.timer_.tickAfter(30)}),this.eventManager_.listen(n,"end",()=>{!this.active_||r!==this.version_||a||this.start(e,t,i)}),n.start(e)}stop(e=!0){this.version_++,this.active_=!1,this.eventManager_.removeAll(),this.timer_.stop(),this.recognition_&&(this.recognition_.stop(),this.recognition_=null),e&&this.onClear_()}release(){this.stop(),this.translatorController_.release()}isActive(){return this.active_}},to=class{constructor(){l(this,"translator_");l(this,"abortController_");l(this,"setupVersion_");l(this,"translationVersion_");l(this,"lastSource_");l(this,"lastTarget_");this.translator_=null,this.abortController_=null,this.setupVersion_=0,this.translationVersion_=0,this.lastSource_=null,this.lastTarget_=null}async setup(e,t){if(this.lastSource_===e&&this.lastTarget_===t&&this.translator_)return;this.release(),this.setupVersion_++;let i=this.setupVersion_;if(!(!t||e==t||!("Translator"in window))){this.abortController_=new AbortController;try{let r=await Translator.create({sourceLanguage:e,targetLanguage:t,signal:this.abortController_.signal});if(i!==this.setupVersion_){r.destroy();return}this.translator_=r,this.lastSource_=e,this.lastTarget_=t}catch(r){if(r.name=="NotSupportedError")throw r}}}async translate(e){if(!this.translator_)return e;this.translationVersion_++;let t=this.translationVersion_;try{let i=await this.translator_.translate(e);return t!==this.translationVersion_?null:i}catch(i){return null}}release(){var e,t;(e=this.abortController_)==null||e.abort(),this.abortController_=null,(t=this.translator_)==null||t.destroy(),this.translator_=null,this.lastSource_=null,this.lastTarget_=null}};/*! @license
|
|
454
|
+
* Shaka Player
|
|
455
|
+
* Copyright 2016 Google LLC
|
|
456
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
457
|
+
*/var yn=class{configure(e){}remove(e,t){}append(e){}destroy(){}isTextVisible(){return!1}setTextVisibility(e){}setTextLanguage(e){}};/*! @license
|
|
458
|
+
* Shaka Player
|
|
459
|
+
* Copyright 2016 Google LLC
|
|
460
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
461
|
+
*/var Dt=class Dt{constructor(e){l(this,"isTextVisible_");l(this,"cues_");l(this,"player_");l(this,"video_");l(this,"videoContainer_");l(this,"aspectRatio_");l(this,"renderSuspended_");l(this,"isContainerActuallyVisible_");l(this,"config_");l(this,"previewConfig_");l(this,"previewCue_");l(this,"showingPreviewCue_");l(this,"textContainer_");l(this,"captionsTimer_");l(this,"applyVisibilityTimer_");l(this,"currentCuesMap_");l(this,"eventManager_");l(this,"pendingResize_");l(this,"resizeObserver_");l(this,"regionElements_");l(this,"visibilityObserver_");if(this.isTextVisible_=!1,this.cues_=[],this.player_=e,this.video_=e.getMediaElement(),this.videoContainer_=e.getVideoContainer(),this.aspectRatio_=null,this.renderSuspended_=!1,this.isContainerActuallyVisible_=!0,this.config_=null,this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.textContainer_=Ge.createHTMLElement("div"),this.textContainer_.classList.add("shaka-text-container"),this.textContainer_.style.textAlign="center",this.textContainer_.style.display="flex",this.textContainer_.style.flexDirection="column",this.textContainer_.style.alignItems="center",this.textContainer_.style.justifyContent="flex-end",this.captionsTimer_=new ae(()=>{this.updateCaptions_(),this.configureCaptionsTimer_()}),this.configureCaptionsTimer_(),this.applyVisibilityTimer_=new ae(()=>{this.applyVisibility_()}),this.currentCuesMap_=new Map,this.eventManager_=new ue,this.eventManager_.listen(document,"fullscreenchange",()=>{this.updateCaptions_(!0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.updateCaptions_(!0),this.configureCaptionsTimer_()}),this.eventManager_.listenMulti(this.video_,["play","playing","pause","waiting"],()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.player_,"ratechange",()=>{this.configureCaptionsTimer_()}),this.eventManager_.listen(this.video_,"resize",()=>{let i=this.video_,r=i.videoWidth,s=i.videoHeight;r&&s?this.aspectRatio_=r/s:this.aspectRatio_=null}),this.pendingResize_=!1,this.resizeObserver_=null,"ResizeObserver"in window&&(this.resizeObserver_=new ResizeObserver(()=>{this.pendingResize_||(this.pendingResize_=!0,requestAnimationFrame(()=>{this.pendingResize_=!1,this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_(!0)}))}),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.resizeObserver_.observe(this.videoContainer_)),this.regionElements_=new Map,this.visibilityObserver_=null,"IntersectionObserver"in window){let i={root:null,threshold:[.01]};this.visibilityObserver_=new IntersectionObserver(r=>{if(r.length){let s=r[r.length-1];this.isContainerActuallyVisible_=s.isIntersecting&&s.intersectionRatio>0,this.applyVisibilityTimer_.tickAfter(Dt.VISIBILITY_DEBOUNCE_)}},i),v.assert(this.videoContainer_,"this.videoContainer_ must be non-null"),this.visibilityObserver_.observe(this.videoContainer_)}this.eventManager_.listen(document,"visibilitychange",i=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listen(document,"fullscreenchange",()=>{this.applyVisibilityTimer_.tickNow()}),this.eventManager_.listenMulti(this.video_,["enterpictureinpicture","leavepictureinpicture"],()=>{this.applyVisibilityTimer_.tickNow()}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",i=>{this.applyVisibilityTimer_.tickNow();let s=i.window;this.eventManager_.listenOnce(s,"pagehide",()=>{this.applyVisibilityTimer_.tickNow()})});let t=this.video_;(t.webkitPresentationMode||t.webkitSupportsFullscreen)&&this.eventManager_.listen(t,"webkitpresentationmodechanged",()=>{this.applyVisibilityTimer_.tickNow()}),this.applyVisibility_()}configure(e){this.config_=e,this.configureCaptionsTimer_(),this.applyVisibility_(),this.updateCaptions_(!0)}setTextStylePreview(e,t){this.previewConfig_=Object.assign({},e),this.previewCue_=new B(Number.NEGATIVE_INFINITY,Number.POSITIVE_INFINITY,t),this.updateCaptions_(!0)}clearTextStylePreview(){!this.previewConfig_&&!this.previewCue_||(this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,this.updateCaptions_(!0))}append(e){let t=[...this.cues_];for(let i of si.removeDuplicates(e))t.some(s=>B.equal(s,i))||this.cues_.push(i);this.cues_.length&&this.configureCaptionsTimer_(),this.updateCaptions_()}destroy(){var e,t,i,r,s;return this.textContainer_&&(this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),this.textContainer_=null,this.isTextVisible_=!1,this.cues_=[],this.previewConfig_=null,this.previewCue_=null,this.showingPreviewCue_=!1,(e=this.captionsTimer_)==null||e.stop(),this.captionsTimer_=null,(t=this.applyVisibilityTimer_)==null||t.stop(),this.applyVisibilityTimer_=null,this.currentCuesMap_.clear(),(i=this.eventManager_)==null||i.release(),this.eventManager_=null,(r=this.resizeObserver_)==null||r.disconnect(),this.resizeObserver_=null,(s=this.visibilityObserver_)==null||s.disconnect(),this.visibilityObserver_=null),Promise.resolve()}remove(e,t){if(!this.textContainer_)return!1;let i=this.cues_.length;this.cues_=this.cues_.filter(s=>s.startTime<e||s.endTime>=t);let r=i>this.cues_.length;return this.updateCaptions_(r),this.cues_.length||this.configureCaptionsTimer_(),!0}isTextVisible(){return this.isTextVisible_}setTextVisibility(e){this.isTextVisible_=e,this.isTextVisible_?(this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_),this.updateCaptions_(!0)):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_)}setTextLanguage(e){e&&e!="und"?this.textContainer_.setAttribute("lang",e):this.textContainer_.setAttribute("lang","")}configureCaptionsTimer_(){var a,o;if(!this.captionsTimer_)return;if(!this.cues_.length||this.renderSuspended_||this.video_.paused){this.captionsTimer_.stop();return}let e=(o=(a=this.getActiveConfig_())==null?void 0:a.subtitleDelay)!=null?o:0,t=this.video_.currentTime-e,i=Dt.SAFETY_REFRESH_PERIOD_,r=this.getNextBoundary_(this.cues_,t);r!=null&&this.video_.readyState>=HTMLMediaElement.HAVE_FUTURE_DATA&&(i=Math.min(i,Math.max(0,r-t)));let s=Math.abs(this.player_.getPlaybackRate())||1,n=Math.max(Dt.MIN_REFRESH_PERIOD_,i/s);this.captionsTimer_.tickAfter(n)}getNextBoundary_(e,t){let i=null,r=s=>{s>t&&(i==null||s<i)&&(i=s)};for(let s of e)if(r(s.startTime),r(s.endTime),s.nestedCues.length){let n=this.getNextBoundary_(s.nestedCues,t);n!=null&&r(n)}return i}getActiveConfig_(){return this.previewConfig_||this.config_}applyVisibility_(){var a,o;let e=this.video_,t=!1;(window.documentPictureInPicture&&window.documentPictureInPicture.window||document.pictureInPictureElement===e)&&(t=!0);let i=!1;document.fullscreenEnabled&&document.fullscreenElement===this.videoContainer_?i=!0:e.webkitSupportsFullscreen&&(i=e.webkitDisplayingFullscreen);let r=document.visibilityState==="visible";!((o=(a=this.config_)==null?void 0:a.suspendRenderingWhenHidden)!=null?o:!0)||t||i||r&&this.isContainerActuallyVisible_?this.renderSuspended_&&(this.renderSuspended_=!1,this.configureCaptionsTimer_(),requestAnimationFrame(()=>{this.textContainer_&&this.textContainer_.parentElement&&this.isTextVisible_&&this.updateCaptions_()})):this.renderSuspended_||(this.renderSuspended_=!0,this.captionsTimer_&&this.captionsTimer_.stop())}isElementUnderTextContainer_(e){for(;e!=null;){if(e==this.textContainer_)return!0;e=e.parentElement}return!1}findCueRegistry_(e,t){let i=e,r=this.currentCuesMap_.get(e)||null;if(!r&&t&&t.positionArea!=Yt.DEFAULT)for(let s of this.currentCuesMap_.keys())B.equal(e,s)&&(i=s,r=this.currentCuesMap_.get(s));return{key:i,registry:r}}updateCuesRecursive_(e,t,i,r){let s=this.getActiveConfig_(),n=!1,a=[],o=[];for(let c of e){r.push(c);let d=this.findCueRegistry_(c,s),u=d.key,m=d.registry,f=c.startTime<=i&&c.endTime>i,g=m?m.wrapper:null;m&&(a.push(m.cueElement),m.regionElement&&a.push(m.regionElement),f||(n=!0,this.currentCuesMap_.delete(u),m=null)),f&&(o.push(c),m?this.isElementUnderTextContainer_(g)||(n=!0):(this.createCue_(c,r),m=this.currentCuesMap_.get(u),g=m.wrapper,n=!0)),c.nestedCues.length>0&&g&&this.updateCuesRecursive_(c.nestedCues,g,i,r);let _=r.pop();v.assert(_==c,"Parent cues should be kept in order")}if(n){for(let c of a)c.parentElement&&c.parentElement.removeChild(c);o.sort((c,d)=>c.startTime!=d.startTime?c.startTime-d.startTime:c.endTime-d.endTime);for(let c of o){let d=this.findCueRegistry_(c,s).registry;v.assert(d,"cueRegistry should exist."),d.regionElement?(d.regionElement.contains(t)&&d.regionElement.removeChild(t),t.appendChild(d.regionElement),d.regionElement.appendChild(d.cueElement)):t.appendChild(d.cueElement)}}}hasCueAtTime_(e,t){return e.some(i=>i.startTime<=t&&i.endTime>t&&this.hasCueContent_(i))}hasCueContent_(e){return!!e.payload.replace(/[\u00a0\u200B]/g," ").trim()||!!e.backgroundImage||e.nestedCues.some(i=>this.hasCueContent_(i))}updateCaptions_(e=!1){var a;if(!this.textContainer_||this.renderSuspended_)return;let t=this.getActiveConfig_(),i=(a=t==null?void 0:t.subtitleDelay)!=null?a:0,r=this.video_.currentTime-i,s=!!this.previewCue_&&!this.hasCueAtTime_(this.cues_,r);s!=this.showingPreviewCue_&&(e=!0,this.showingPreviewCue_=s),s&&(e=!0);let n=this.isTextVisible_||s;if(n?this.textContainer_.parentElement||this.videoContainer_.appendChild(this.textContainer_):this.textContainer_.parentElement&&this.videoContainer_.removeChild(this.textContainer_),!n||e){for(let o of this.regionElements_.values())Ge.removeAllChildren(o);Ge.removeAllChildren(this.textContainer_),this.currentCuesMap_.clear(),this.regionElements_.clear()}if(n){let o=new Map;if(Fe)for(let d of this.currentCuesMap_.keys())o.set(d,this.currentCuesMap_.get(d));let c=s&&this.previewCue_?[this.previewCue_]:this.cues_;if(t&&t.positionArea!=Yt.DEFAULT&&(c=c.map(d=>this.processCueStyle_(d))),this.updateCuesRecursive_(c,this.textContainer_,r,[]),Fe){for(let d of o.keys())if(!this.currentCuesMap_.has(d)){let u=o.get(d).cueElement;v.assert(!u.parentNode,"Cue was not properly removed!")}}}}processCueStyle_(e){let t=this.getActiveConfig_();v.assert(t.positionArea!==Yt.DEFAULT,"processCueStyle_ is intended to use on non default positioning");let i=e.clone();switch(si.resetCuePositioning(i),i.region=Dt.CustomRegion_.value(),t.positionArea){case Yt.TOP_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.TOP_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.TOP_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.BEFORE;break;case Yt.CENTER_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.CENTER;break;case Yt.CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.CENTER;break;case Yt.CENTER_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.CENTER;break;case Yt.BOTTOM_LEFT:i.textAlign=B.textAlign.LEFT,i.displayAlign=B.displayAlign.AFTER;break;case Yt.BOTTOM_CENTER:i.textAlign=B.textAlign.CENTER,i.displayAlign=B.displayAlign.AFTER;break;case Yt.BOTTOM_RIGHT:i.textAlign=B.textAlign.RIGHT,i.displayAlign=B.displayAlign.AFTER;break}return i}generateRegionId_(e){let t=He.units.PERCENTAGE,i=e.heightUnits==t?"%":"px",r=e.viewportAnchorUnits==t?"%":"px";return`${e.id}_${e.width}x${e.height}${i}-${e.viewportAnchorX}x${e.viewportAnchorY}${r}-${e.regionAnchorX}x${e.regionAnchorY}`}getRegionElement_(e){let t=e.region,i=this.aspectRatio_===4/3?2.5:1.9,r=5.33,s=this.generateRegionId_(t);if(this.regionElements_.has(s))return this.regionElements_.get(s);let n=Ge.createHTMLElement("span"),a=He.units.LINES,o=He.units.PERCENTAGE,c=He.units.PX,d=t.heightUnits==o?"%":"px",u=t.widthUnits==o?"%":"px",m=t.viewportAnchorUnits==o?"%":"px";n.id="shaka-text-region---"+s,n.classList.add("shaka-text-region"),n.style.position="absolute";let f=t.height,g=t.width;if(t.heightUnits===a&&(f=t.height*r,d="%"),t.widthUnits===a&&(g=t.width*i,u="%"),n.style.height=f+d,n.style.width=g+u,t.viewportAnchorUnits===a){let _=t.viewportAnchorY/75*100,T=this.aspectRatio_===4/3?160:210,S=t.viewportAnchorX/T*100;_-=t.regionAnchorY*f/100,S-=t.regionAnchorX*g/100,n.style.top=_+"%",n.style.left=S+"%"}else n.style.top=t.viewportAnchorY-t.regionAnchorY*f/100+m,n.style.left=t.viewportAnchorX-t.regionAnchorX*g/100+m;if(t.heightUnits!==c&&t.widthUnits!==c&&t.viewportAnchorUnits!==c){let _=parseInt(n.style.top.slice(0,-1),10)||0,T=parseInt(n.style.left.slice(0,-1),10)||0,S=parseInt(n.style.height.slice(0,-1),10)||0,b=parseInt(n.style.width.slice(0,-1),10)||0,E=Math.max(0,Math.min(100-S,_)),C=Math.max(0,Math.min(100-b,T));n.style.top=E+"%",n.style.left=C+"%"}return n.style.display="flex",n.style.flexDirection="column",n.style.alignItems="center",n.style.justifyContent=Dt.displayAlignToJustifyContent_(e.displayAlign),this.regionElements_.set(s,n),n}createCue_(e,t){let i=t.length>1,r=i?"span":"div";e.lineBreak&&(r="br"),e.rubyTag&&(r=e.rubyTag);let s=!i&&e.nestedCues.length>0,n=Ge.createHTMLElement(r);r!="br"&&this.setCaptionStyles_(n,e,t,s);let a=null;e.region&&e.region.id&&(a=this.getRegionElement_(e));let o=n;s&&(o=Ge.createHTMLElement("span"),o.classList.add("shaka-text-wrapper"),o.style.backgroundColor=e.backgroundColor,o.style.lineHeight="normal",n.appendChild(o)),this.currentCuesMap_.set(e,{cueElement:n,wrapper:o,regionElement:a})}computeCuePositionAlignment_(e){let{direction:t,positionAlign:i,textAlign:r}=e;return i!==B.positionAlign.AUTO?i:r===B.textAlign.LEFT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT?B.positionAlign.LEFT:r===B.textAlign.RIGHT||r===B.textAlign.START&&t===B.direction.HORIZONTAL_RIGHT_TO_LEFT||r===B.textAlign.END&&t===B.direction.HORIZONTAL_LEFT_TO_RIGHT?B.positionAlign.RIGHT:B.positionAlign.CENTER}setCaptionStyles_(e,t,i,r){let s=g=>Dt.inheritProperty_(i,g),n=e.style,a=t.nestedCues.length==0,o=i.length>1;n.whiteSpace="pre-wrap";let c=t.payload.replace(/\s+$/g,g=>"\xA0".repeat(g.length));if(n.webkitTextStrokeColor=t.textStrokeColor,n.webkitTextStrokeWidth=t.textStrokeWidth,n.color=t.color,n.direction=t.direction,n.opacity=t.opacity,n.paddingLeft=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.paddingRight=Dt.convertLengthValue_(t.linePadding,t,this.videoContainer_),n.textCombineUpright=t.textCombineUpright,n.textShadow=t.textShadow,t.backgroundImage){let g=t.backgroundImage.replace(/['"()\\]/g,"");n.backgroundImage="url('"+g+"')",n.backgroundRepeat="no-repeat",n.backgroundSize="contain",n.backgroundPosition="center",t.backgroundColor&&(n.backgroundColor=t.backgroundColor),n.width="100%",n.height="100%"}else{let g;if(t.nestedCues.length?g=e:(g=Ge.createHTMLElement("span"),e.appendChild(g)),t.border&&(g.style.border=t.border),!r){let _=s(T=>T.backgroundColor);_?g.style.backgroundColor=_:c&&(g.style.backgroundColor="rgba(0, 0, 0, 0.8)")}c&&(g.setAttribute("translate","no"),g.textContent=c)}o&&!i[i.length-1].isContainer?n.display="inline":(n.display="flex",n.flexDirection="column",n.alignItems="center",t.textAlign==B.textAlign.LEFT||t.textAlign==B.textAlign.START?(n.width="100%",n.alignItems="flex-start"):(t.textAlign==B.textAlign.RIGHT||t.textAlign==B.textAlign.END)&&(n.width="100%",n.alignItems="flex-end"),n.justifyContent=Dt.displayAlignToJustifyContent_(t.displayAlign)),a||(n.margin="0"),n.fontFamily=t.fontFamily,n.fontWeight=t.fontWeight.toString(),n.fontStyle=t.fontStyle,n.letterSpacing=t.letterSpacing;let d=this.getActiveConfig_(),u=d?d.fontScaleFactor:1;if(u!==1||t.fontSize){let g=t.fontSize||"1em";n.fontSize=Dt.convertLengthValue_(g,t,this.videoContainer_,u)}let m=t.line;if(m!=null){let g=t.lineInterpretation;if(g==B.lineInterpretation.LINE_NUMBER){g=B.lineInterpretation.PERCENTAGE;let _=16;this.aspectRatio_&&this.aspectRatio_<1&&(_=32),m<0?m=100+m/_*100:m=m/_*100}g==B.lineInterpretation.PERCENTAGE&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.width="100%",t.lineAlign==B.lineAlign.START?n.top=m+"%":t.lineAlign==B.lineAlign.END&&(n.bottom=100-m+"%")):t.writingMode==B.writingMode.VERTICAL_LEFT_TO_RIGHT?(n.height="100%",t.lineAlign==B.lineAlign.START?n.left=m+"%":t.lineAlign==B.lineAlign.END&&(n.right=100-m+"%")):(n.height="100%",t.lineAlign==B.lineAlign.START?n.right=m+"%":t.lineAlign==B.lineAlign.END&&(n.left=100-m+"%")))}n.lineHeight=t.lineHeight;let f=this.computeCuePositionAlignment_(t);f==B.positionAlign.LEFT?(n.cssFloat="left",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%")):f==B.positionAlign.RIGHT?(n.cssFloat="right",t.position!==null&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.right=100-t.position+"%",n.width="auto"):n.bottom=t.position+"%")):t.position!==null&&t.position!=50&&(n.position="absolute",t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?(n.left=t.position+"%",n.width="auto"):n.top=t.position+"%",t.size&&(n.transform="translateX(-50%)")),n.textAlign=t.textAlign,n.textDecoration=t.textDecoration.join(" "),n.writingMode=t.writingMode,(!("writingMode"in document.documentElement.style)||n.writingMode!=t.writingMode)&&(n.webkitWritingMode=t.writingMode),t.size&&(t.writingMode==B.writingMode.HORIZONTAL_TOP_TO_BOTTOM?n.width=t.size+"%":n.height=t.size+"%")}static getLengthValueInfo_(e){let t=new RegExp(/(\d*\.?\d+)([a-z]+|%+)/).exec(e);return t?{value:Number(t[1]),unit:t[2]}:null}static convertLengthValue_(e,t,i,r=1){let s=Dt.getLengthValueInfo_(e);if(!s)return e;let{unit:n,value:a}=s,o=a*r;switch(n){case"%":return Dt.getAbsoluteLengthInPixels_(o/100,t,i);case"c":return Dt.getAbsoluteLengthInPixels_(o,t,i);default:return o+n}}static getAbsoluteLengthInPixels_(e,t,i){return i.clientHeight*e/t.cellResolution.rows+"px"}static inheritProperty_(e,t){for(let i=e.length-1;i>=0;i--){let r=t(e[i]);if(r||r===0)return r}return null}static displayAlignToJustifyContent_(e){switch(e){case B.displayAlign.BEFORE:return"flex-start";case B.displayAlign.CENTER:return"center";default:return"flex-end"}}};l(Dt,"SAFETY_REFRESH_PERIOD_",1),l(Dt,"VISIBILITY_DEBOUNCE_",.25);var Jr=Dt;Jr.MIN_REFRESH_PERIOD_=1/60;Jr.CustomRegion_=new _e(()=>{let y=new He;return y.id="shaka-custom-region",y.height=90,y.width=90,y.viewportAnchorX=5,y.viewportAnchorY=5,y});/*! @license
|
|
462
|
+
* Shaka Player
|
|
463
|
+
* Copyright 2016 Google LLC
|
|
464
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
465
|
+
*/var Us=class{static convert(e,t){let i=a=>{let o=a;for(let f of t)if(f.end&&f.start<a){let g=f.end-f.start;o+=g}let c=Math.floor(o/3600),d=Math.floor(o/60%60),u=Math.floor(o%60),m=Math.floor(o*1e3%1e3);return(c<10?"0":"")+c+":"+(d<10?"0":"")+d+":"+(u<10?"0":"")+u+"."+(m<100?m<10?"00":"0":"")+m},r=a=>{let o=[];switch(a.textAlign){case B.textAlign.LEFT:o.push("align:left");break;case B.textAlign.RIGHT:o.push("align:right");break;case B.textAlign.CENTER:o.push("align:middle");break;case B.textAlign.START:o.push("align:start");break;case B.textAlign.END:o.push("align:end");break}switch(a.writingMode){case B.writingMode.VERTICAL_LEFT_TO_RIGHT:o.push("vertical:lr");break;case B.writingMode.VERTICAL_RIGHT_TO_LEFT:o.push("vertical:rl");break}return o.length?" "+o.join(" "):""},s=si.getCuesToFlatten(e),n=`WEBVTT
|
|
466
|
+
|
|
467
|
+
`;for(let a of s)n+=i(a.startTime)+" --> "+i(a.endTime)+r(a)+`
|
|
468
|
+
`,n+=a.payload+`
|
|
469
|
+
|
|
470
|
+
`;return n}};/*! @license
|
|
471
|
+
* Shaka Player
|
|
472
|
+
* Copyright 2016 Google LLC
|
|
473
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
474
|
+
*/var Nr=class{constructor(e,t){l(this,"player_");l(this,"config_");l(this,"video_");l(this,"reporter_");l(this,"lastPlayerState_");l(this,"sf_");l(this,"requestTimestampMap_");l(this,"eventManager_");l(this,"startTimeOfLoad_");this.player_=e,this.config_=t,this.video_=null,this.reporter_=null,this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_=new Map,this.eventManager_=new ue,this.startTimeOfLoad_=0}setMediaElement(e){this.video_=e,this.maybeStartReporter_(),this.reporter_&&this.setupEventListeners_()}configure(e){let t=this.config_;if(this.config_=e,this.reporter_){let i=t&&t.enabled&&!e.enabled,r=t&&e.enabled&&(t.sessionId!==e.sessionId||t.contentId!==e.contentId||t.version!==e.version||t.useHeaders!==e.useHeaders||t.eventTargets!==e.eventTargets);(i||r)&&(this.reporter_.stop(!0),this.reporter_=null,this.lastPlayerState_=null)}!this.reporter_&&this.video_&&(this.maybeStartReporter_(),this.reporter_&&this.setupEventListeners_())}reset(){this.reporter_&&(this.reporter_.stop(!0),this.reporter_=null),this.lastPlayerState_=null,this.sf_=void 0,this.requestTimestampMap_.clear(),this.startTimeOfLoad_=0,this.eventManager_.removeAll()}setBuffering(e){this.setPlayerState_(e?cml.cmcd.CmcdPlayerState.REBUFFERING:cml.cmcd.CmcdPlayerState.PLAYING)}setLowLatency(e){}setStartTimeOfLoad(e){if(this.reporter_&&(this.startTimeOfLoad_=e,this.video_&&this.video_.autoplay)){let t=this.video_.play();t&&t.catch(()=>{this.startTimeOfLoad_=0})}}applyRequestData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType,s=cml.cmcd.CmcdObjectType;if(t.method==="HEAD"){this.applyToRequest_(t,{});return}switch(e){case r.MANIFEST:{if(i.type){let n=this.getStreamFormat_(i.type);n&&n!==this.sf_&&(this.sf_=n,this.reporter_.update({sf:n,st:this.getStreamType_()}))}this.applyToRequest_(t,{ot:s.MANIFEST,su:this.lastPlayerState_===null});break}case r.SEGMENT:{let n=this.getDataForSegment_(i,t.uris[0]);this.requestTimestampMap_.has(t)&&this.requestTimestampMap_.delete(t),this.requestTimestampMap_.set(t,Date.now()),this.applyToRequest_(t,n);break}case r.LICENSE:case r.SERVER_CERTIFICATE:case r.KEY:this.applyToRequest_(t,{ot:s.KEY});break;case r.TIMING:this.applyToRequest_(t,{ot:s.OTHER});break}}applyResponseData(e,t,i={}){if(!this.reporter_)return;let r=K.RequestType;if(e!==r.SEGMENT)return;let s=this.requestTimestampMap_.get(t.originalRequest);if(this.requestTimestampMap_.delete(t.originalRequest),!!this.responseModeEnabled_())try{let n=this.removeCmcdQueryFromUri_(t.originalUri||t.uri),a={url:n};t.status!=null&&(a.rc=t.status),t.originalRequest&&t.originalRequest.timeToFirstByte!=null&&(a.ttfb=t.originalRequest.timeToFirstByte),t.timeMs!=null&&(a.ttlb=t.timeMs),s!=null&&(a.ts=s),t.headers&&t.headers["CMSD-Static"]&&(a.cmsds=btoa(t.headers["CMSD-Static"])),t.headers&&t.headers["CMSD-Dynamic"]&&(a.cmsdd=btoa(t.headers["CMSD-Dynamic"])),this.reporter_.recordResponseReceived({request:{url:n},status:t.status||0},a)}catch(n){p.warnOnce("CMCD_RESPONSE_ERROR","Could not apply CMCD data to response.",n)}}applyTextData(e){this.reporter_&&this.applyToRequest_(e,{ot:cml.cmcd.CmcdObjectType.CAPTION,su:!0})}appendSrcData(e,t){if(!this.reporter_)return e;try{let i=this.buildExternalUriData_();return i.ot=this.getObjectTypeFromMimeType_(t),i.su=!0,cml.cmcd.appendCmcdQuery(e,i,this.encodeOptionsForUri_(e))}catch(i){return p.warnOnce("CMCD_SRC_ERROR","Could not generate src CMCD data.",i),e}}appendTextTrackData(e){if(!this.reporter_)return e;try{let t=this.buildExternalUriData_();return t.ot=cml.cmcd.CmcdObjectType.CAPTION,t.su=!0,cml.cmcd.appendCmcdQuery(e,t,this.encodeOptionsForUri_(e))}catch(t){return p.warnOnce("CMCD_TEXT_TRACK_ERROR","Could not generate text track CMCD data.",t),e}}maybeStartReporter_(){if(this.reporter_||!this.config_||!this.config_.enabled||!this.video_)return;let e=this.toReporterConfig_(this.config_);this.reporter_=new cml.cmcd.CmcdReporter(e,this.makeRequester_()),this.reporter_.start()}toReporterConfig_(e){e.sessionId||(e.sessionId=window.crypto.randomUUID());let t=e.includeKeys&&e.includeKeys.length?e.includeKeys:this.allKeysForVersion_(e.version),i={sid:e.sessionId,cid:e.contentId,transmissionMode:e.useHeaders?cml.cmcd.CMCD_HEADERS:cml.cmcd.CMCD_QUERY,enabledKeys:t,version:e.version===2?cml.cmcd.CMCD_V2:cml.cmcd.CMCD_V1},r=e.eventTargets;return r&&r.length&&(i.eventTargets=r.filter(s=>s.enabled!==!1&&s.url&&s.events&&s.events.length).map(s=>{let n=s.includeKeys&&s.includeKeys.length?s.includeKeys:this.allKeysForVersion_(s.version||e.version);return{url:s.url,events:s.events,interval:s.interval,batchSize:s.batchSize,enabledKeys:n,version:cml.cmcd.CMCD_V2}})),i}allKeysForVersion_(e){return e===2||e===cml.cmcd.CMCD_V2?Array.from(new Set([].concat(cml.cmcd.CMCD_REQUEST_KEYS,cml.cmcd.CMCD_RESPONSE_KEYS,cml.cmcd.CMCD_EVENT_KEYS))):[].concat(cml.cmcd.CMCD_V1_KEYS)}makeRequester_(){return async e=>{let t=K.RequestType,i=K.defaultRetryParameters(),r=e.url,s=K.makeRequest([r],i);s.method=e.method||"POST",s.headers=e.headers||{},s.body=q.toUTF8(e.body);try{let n=this.player_.getNetworkingEngine();return v.assert(n,"Must have net engine"),await n.request(t.CMCD,s).promise,{status:200}}catch(n){return{status:n&&n.status?n.status:0}}}}setPlayerState_(e){!this.reporter_||this.lastPlayerState_===e||(this.lastPlayerState_=e,this.reporter_.update({sta:e}))}applyToRequest_(e,t){try{let i={url:e.uris[0],headers:Object.assign({},e.headers||{}),customData:{}},r=this.reporter_.createRequestReport(i,t),s=r.headers||{},n=Object.keys(i.headers).length;if(Object.keys(s).length>n){e.headers||(e.headers={});for(let c of Object.keys(s))c in i.headers||(e.headers[c]=s[c])}let o=r.url;if(o&&o!==i.url)if(e.uris.length===1)e.uris=[o];else{let c=null;try{c=new URL(o).searchParams.get("CMCD")}catch(d){}if(c!=null){let d=c;e.uris=e.uris.map(u=>{if(u.includes("offline:"))return u;try{let m=new URL(u);return m.searchParams.set("CMCD",d),m.toString()}catch(m){return u}})}}}catch(i){p.warnOnce("CMCD_REQUEST_ERROR","Could not apply CMCD data to request.",i)}}responseModeEnabled_(){let e=this.config_.eventTargets;return e?e.some(t=>t.enabled!==!1&&t.events&&t.events.includes(cml.cmcd.CmcdEventType.RESPONSE_RECEIVED)):!1}buildExternalUriData_(){return{v:this.config_.version,sid:this.config_.sessionId,cid:this.config_.contentId,sf:this.sf_,mtp:this.player_.getBandwidthEstimate()/1e3}}encodeOptionsForUri_(e){let t={};if(e&&!e.includes("offline:"))try{t.baseUrl=new URL(e).origin}catch(i){}return this.config_.version!=null&&(t.version=this.config_.version),t.reportingMode=cml.cmcd.CMCD_REQUEST_MODE,t}setupEventListeners_(){let e=cml.cmcd.CmcdPlayerState,t=cml.cmcd.CmcdEventType;this.eventManager_.listen(this.video_,"pause",()=>{this.setPlayerState_(e.PAUSED)}),this.eventManager_.listen(this.video_,"playing",()=>{this.setPlayerState_(e.PLAYING),this.reporter_&&this.startTimeOfLoad_&&(this.reporter_.update({msd:Date.now()-this.startTimeOfLoad_}),this.startTimeOfLoad_=0)}),this.eventManager_.listen(this.video_,"seeking",()=>{this.setPlayerState_(e.SEEKING)}),this.eventManager_.listen(this.video_,"ended",()=>{this.setPlayerState_(e.ENDED)}),this.eventManager_.listen(this.video_,"volumechange",()=>{if(!this.reporter_||!this.video_)return;let r=this.video_.muted;this.reporter_.recordEvent(r?t.MUTE:t.UNMUTE)}),this.eventManager_.listen(this.player_,"buffering",r=>{let s=r.buffering;this.setPlayerState_(s?e.REBUFFERING:e.PLAYING)}),this.eventManager_.listen(this.player_,"adaptation",()=>{if(!this.reporter_||!this.player_)return;let s=this.player_.getVariantTracks().find(n=>n.active);s&&s.bandwidth&&this.reporter_.update({br:[s.bandwidth/1e3]})}),this.eventManager_.listen(this.player_,"error",()=>{this.setPlayerState_(e.FATAL_ERROR),this.reporter_&&this.reporter_.recordEvent(t.ERROR)}),this.eventManager_.listen(document,"fullscreenchange",()=>{if(!this.reporter_)return;let r=!!document.fullscreenElement;this.reporter_.recordEvent(r?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE)});let i=this.video_;(i.webkitPresentationMode||i.webkitSupportsFullscreen)&&this.eventManager_.listen(i,"webkitpresentationmodechanged",()=>{this.reporter_&&(i.webkitPresentationMode?this.reporter_.recordEvent(i.webkitPresentationMode!=="inline"?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE):i.webkitSupportsFullscreen&&this.reporter_.recordEvent(i.webkitDisplayingFullscreen?t.PLAYER_EXPAND:t.PLAYER_COLLAPSE))}),this.eventManager_.listen(this.video_,"enterpictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_EXPAND)}),this.eventManager_.listen(this.video_,"leavepictureinpicture",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)}),"documentPictureInPicture"in window&&this.eventManager_.listen(window.documentPictureInPicture,"enter",r=>{if(!this.reporter_)return;this.reporter_.recordEvent(t.PLAYER_EXPAND);let n=r.window;this.eventManager_.listenOnce(n,"pagehide",()=>{this.reporter_&&this.reporter_.recordEvent(t.PLAYER_COLLAPSE)})}),this.eventManager_.listen(document,"visibilitychange",()=>{if(!this.reporter_)return;let r=document.hidden;this.reporter_.update({bg:r})}),this.eventManager_.listen(this.player_,"complete",()=>{this.setPlayerState_(e.ENDED)})}removeCmcdQueryFromUri_(e){if(!e.includes("CMCD="))return e;try{let t=new URL(e);return t.searchParams.delete("CMCD"),t.toString()}catch(t){return p.error("Failed to parse URI for CMCD removal:",e,t),e}}getObjectType_(e){if(e.type===K.AdvancedRequestType.INIT_SEGMENT)return cml.cmcd.CmcdObjectType.INIT;let t=e.stream;if(!t)return;let i=t.type;if(i=="video")return t.codecs&&t.codecs.includes(",")?cml.cmcd.CmcdObjectType.MUXED:cml.cmcd.CmcdObjectType.VIDEO;if(i=="audio")return cml.cmcd.CmcdObjectType.AUDIO;if(i=="text")return t.mimeType==="application/mp4"?cml.cmcd.CmcdObjectType.TIMED_TEXT:cml.cmcd.CmcdObjectType.CAPTION}getObjectTypeFromMimeType_(e){switch(e.toLowerCase()){case"audio/mp4":case"audio/webm":case"audio/ogg":case"audio/mpeg":case"audio/aac":case"audio/flac":case"audio/wav":return cml.cmcd.CmcdObjectType.AUDIO;case"video/webm":case"video/mp4":case"video/mpeg":case"video/mp2t":return cml.cmcd.CmcdObjectType.MUXED;case"application/x-mpegurl":case"application/vnd.apple.mpegurl":case"audio/x-mpegurl":case"application/dash+xml":case"video/vnd.mpeg.dash.mpd":case"application/vnd.ms-sstr+xml":return cml.cmcd.CmcdObjectType.MANIFEST;default:return}}getBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return NaN;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:NaN}getRemainingBufferLength_(e){let t=this.player_.getBufferedInfo()[e];if(!t.length)return 0;let i=this.getCurrentTime_(),r=t.find(s=>s.start<=i&&s.end>=i);return r?(r.end-i)*1e3:0}calculateRtp_(e,t){let i=this.player_.getPlaybackRate()||1,r=this.getRemainingBufferLength_(e.type)||500,s=e.bandwidth;if(!s)return NaN;let n=t.endTime-t.startTime,a=s*n/1e3,o=r/i/1e3;return a/o*this.config_.rtpSafetyFactor}getStreamFormat_(e){let t=K.AdvancedRequestType;switch(e){case t.MPD:return cml.cmcd.CmcdStreamingFormat.DASH;case t.MASTER_PLAYLIST:case t.MEDIA_PLAYLIST:return cml.cmcd.CmcdStreamingFormat.HLS}}getStreamType_(){return this.player_.isLive()?cml.cmcd.CmcdStreamType.LIVE:cml.cmcd.CmcdStreamType.VOD}getTopBandwidth_(e){let t=this.player_.getVariantTracks();if(!t.length)return NaN;let i=t[0];for(let s of t)s.type==="variant"&&s.bandwidth>i.bandwidth&&(i=s);let r=cml.cmcd.CmcdObjectType;switch(e){case r.VIDEO:return i.videoBandwidth||NaN;case r.AUDIO:return i.audioBandwidth||NaN;default:return i.bandwidth}}getDataForSegment_(e,t){let i=e.segment,r=0;i&&(r=i.endTime-i.startTime);let s={d:r*1e3,st:this.getStreamType_()};s.ot=this.getObjectType_(e);let n=cml.cmcd.CmcdObjectType,a=s.ot===n.VIDEO||s.ot===n.AUDIO||s.ot===n.MUXED||s.ot===n.TIMED_TEXT,o=e.stream;if(o){let c=this.player_.getPlaybackRate();if(a){let d=this.getBufferLength_(o.type);if(Number.isFinite(d)&&(s.bl=d),s.ot!==n.TIMED_TEXT){let u=this.getRemainingBufferLength_(o.type);c?s.dl=u/Math.abs(c):s.dl=u}}if(o.bandwidth&&(s.br=o.bandwidth/1e3),o.segmentIndex&&i){let d=c<0,u=o.segmentIndex.getIteratorForTime(i.endTime,!0,d);if(u){let f=u.next().value;if(f&&f!=i&&(t&&!ye.equal(i.getUris(),f.getUris())&&(s.nor=f.getUris()[0]),(f.startByte||f.endByte)&&(i.startByte!=f.startByte||i.endByte!=f.endByte))){let g=f.startByte+"-";f.endByte&&(g+=f.endByte),s.nrr=g}}let m=this.calculateRtp_(o,i);Number.isFinite(m)&&(s.rtp=m)}}if(a&&s.ot!==n.TIMED_TEXT){let c=this.getTopBandwidth_(s.ot)/1e3;Number.isFinite(c)&&(s.tb=c)}if(this.player_.isLive()){let c=this.player_.getLiveLatency();c&&(s.ltc=c)}return s.su=this.lastPlayerState_===null||this.lastPlayerState_===cml.cmcd.CmcdPlayerState.REBUFFERING,s}getCurrentTime_(){return this.video_?this.video_.currentTime:0}};l(Nr,"StreamingFormat",{DASH:"d",HLS:"h",SMOOTH:"s",OTHER:"o"}),l(Nr,"EventType",{BITRATE_CHANGE:"bc",PLAY_STATE:"ps",PLAYBACK_RATE:"pr",ERROR:"e",TIME_INTERVAL:"t",CONTENT_ID:"c",BACKGROUNDED_MODE:"b",MUTE:"m",UNMUTE:"um",PLAYER_EXPAND:"pe",PLAYER_COLLAPSE:"pc",RESPONSE_RECEIVED:"rr",AD_START:"as",AD_END:"ae",AD_BREAK_START:"abs",AD_BREAK_END:"abe",SKIP:"sk",CUSTOM_EVENT:"ce"}),l(Nr,"PlayerState",{STARTING:"s",PLAYING:"p",SEEKING:"k",REBUFFERING:"r",PAUSED:"a",WAITING:"w",ENDED:"e",FATAL_ERROR:"f",QUIT:"q",PRELOADING:"d"});/*! @license
|
|
475
|
+
* Shaka Player
|
|
476
|
+
* Copyright 2016 Google LLC
|
|
477
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
478
|
+
*/var Pi=class Pi{constructor(e){l(this,"config_");l(this,"staticParams_");l(this,"dynamicParams_");this.config_=e,this.staticParams_=null,this.dynamicParams_=null}configure(e){this.config_=e}reset(){this.staticParams_=null,this.dynamicParams_=null}processHeaders(e){if(!this.config_.enabled)return;let t=e[Pi.CMSD_STATIC_HEADER_NAME_];if(t){let r=this.parseCMSDStatic_(t);r&&(this.staticParams_=r)}let i=e[Pi.CMSD_DYNAMIC_HEADER_NAME_];if(i){let r=this.parseCMSDDynamic_(i);r&&(this.dynamicParams_=r)}}getMaxBitrate(){let e=Pi.KEYS_.MAX_SUGGESTED_BITRATE;return!this.config_.enabled||!this.config_.applyMaximumSuggestedBitrate||!this.dynamicParams_||!this.dynamicParams_.has(e)?null:this.dynamicParams_.get(e)*1e3}getEstimatedThroughput(){let e=Pi.KEYS_.ESTIMATED_THROUGHPUT;return!this.config_.enabled||!this.dynamicParams_||!this.dynamicParams_.has(e)?null:this.dynamicParams_.get(e)*1e3}getResponseDelay(){let e=Pi.KEYS_.RESPONSE_DELAY;return!this.config_.enabled||!this.dynamicParams_||!this.dynamicParams_.has(e)?null:this.dynamicParams_.get(e)}getRoundTripTime(){let e=Pi.KEYS_.ROUND_TRIP_TIME;return!this.config_.enabled||!this.dynamicParams_||!this.dynamicParams_.has(e)?null:this.dynamicParams_.get(e)}getBandwidthEstimate(e){let t=this.getEstimatedThroughput();if(!t)return e;let i=this.config_.estimatedThroughputWeightRatio;return i>0&&i<=1?e*(1-i)+t*i:e}parseCMSDStatic_(e){try{let t=new Map,i=e.split(",");for(let r=0;r<i.length;r++){let s=i[r].split("="),n=s[0],a=this.parseParameterValue_(s[1]);t.set(n,a)}return t}catch(t){return p.warning("Failed to parse CMSD-Static response header value:",t),null}}parseCMSDDynamic_(e){try{let t=new Map,i=e.split(";");for(let r=1;r<i.length;r++){let s=i[r].split("="),n=s[0],a=this.parseParameterValue_(s[1]);t.set(n,a)}return t}catch(t){return p.warning("Failed to parse CMSD-Dynamic response header value:",t),null}}parseParameterValue_(e){return e?e.toLowerCase()==="false"?!1:/^[-0-9]/.test(e)?parseInt(e,10):e.replace(/["]+/g,""):!0}};l(Pi,"CMSD_STATIC_HEADER_NAME_","cmsd-static"),l(Pi,"CMSD_DYNAMIC_HEADER_NAME_","cmsd-dynamic"),l(Pi,"KEYS_",{AVAILABILITY_TIME:"at",DURESS:"du",ENCODED_BITRATE:"br",ESTIMATED_THROUGHPUT:"etp",HELD_TIME:"ht",INTERMEDIARY_IDENTIFIER:"n",MAX_SUGGESTED_BITRATE:"mb",NEXT_OBJECT_RESPONSE:"nor",NEXT_RANGE_RESPONSE:"nrr",OBJECT_DURATION:"d",OBJECT_TYPE:"ot",RESPONSE_DELAY:"rd",ROUND_TRIP_TIME:"rtt",STARTUP:"su",STREAM_TYPE:"st",STREAMING_FORMAT:"sf",VERSION:"v"});var Tn=Pi;/*! @license
|
|
479
|
+
* Shaka Player
|
|
480
|
+
* Copyright 2016 Google LLC
|
|
481
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
482
|
+
*/var Zr=class{constructor(){l(this,"acquiredIdentifier");l(this,"unlockQueue");this.acquiredIdentifier=null,this.unlockQueue=[]}async acquire(e){p.v2(e+" has requested mutex"),this.acquiredIdentifier&&await new Promise(t=>this.unlockQueue.push(t)),this.acquiredIdentifier=e,p.v2(e+" has acquired mutex")}release(){p.v2(this.acquiredIdentifier+" has released mutex"),this.unlockQueue.length>0?this.unlockQueue.shift()():this.acquiredIdentifier=null}releaseAll(){for(;this.acquiredIdentifier;)this.release()}};/*! @license
|
|
483
|
+
* Shaka Player
|
|
484
|
+
* Copyright 2016 Google LLC
|
|
485
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
486
|
+
*/var es=class{constructor(e){l(this,"video_");l(this,"callbackHandle_");l(this,"boundCallback_");this.video_=e,this.callbackHandle_=null,this.boundCallback_=null}start(e,t=!1){if(this.cancelPending_(),!this.video_||!("requestVideoFrameCallback"in this.video_))return!1;let i=(r,s)=>{this.video_&&this.boundCallback_===i&&e(r,s),this.video_&&this.boundCallback_===i&&!t&&(this.callbackHandle_=this.video_.requestVideoFrameCallback(i))};return this.boundCallback_=i,this.callbackHandle_=this.video_.requestVideoFrameCallback(i),!0}release(){this.cancelPending_(),this.video_=null}cancelPending_(){var e,t;this.callbackHandle_!==null&&((t=(e=this.video_)==null?void 0:e.cancelVideoFrameCallback)==null||t.call(e,this.callbackHandle_),this.callbackHandle_=null),this.boundCallback_=null}};/*! @license
|
|
487
|
+
* Shaka Player
|
|
488
|
+
* Copyright 2016 Google LLC
|
|
489
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
490
|
+
*/var Q=class Q extends Le{constructor(t,i=null,r){var n,a,o;super();l(this,"loadMode_");l(this,"video_");l(this,"videoContainer_");l(this,"isTextVisible_");l(this,"globalEventManager_");l(this,"attachEventManager_");l(this,"loadEventManager_");l(this,"trickPlayEventManager_");l(this,"adManagerEventManager_");l(this,"networkingEngine_");l(this,"drmEngine_");l(this,"mediaSourceEngine_");l(this,"playhead_");l(this,"operationId_");l(this,"mutex_");l(this,"playheadObservers_");l(this,"playRateController_");l(this,"bufferPoller_");l(this,"bufferObserver_");l(this,"regionTimeline_");l(this,"metadataRegionTimeline_");l(this,"emsgRegionTimeline_");l(this,"cmcdManager_");l(this,"cmsdManager_");l(this,"lcevcCanvas_");l(this,"lcevcDec_");l(this,"qualityObserver_");l(this,"streamingEngine_");l(this,"parser_");l(this,"parserFactory_");l(this,"manifest_");l(this,"assetUri_");l(this,"mimeType_");l(this,"startTime_");l(this,"fullyLoaded_");l(this,"abrManager_");l(this,"abrManagerFactory_");l(this,"nextExternalStreamId_");l(this,"externalSrcEqualsThumbnailsStreams_");l(this,"deferredCloseSegmentIndex_");l(this,"externalSrcEqualsChapterStreams_");l(this,"completionPercent_");l(this,"config_");l(this,"lowLatencyConfig_");l(this,"currentTargetLatency_");l(this,"rebufferingCount_");l(this,"targetLatencyReached_");l(this,"maxHwRes_");l(this,"manifestFilterer_");l(this,"createdPreloadManagers_");l(this,"stats_");l(this,"currentAdaptationSetCriteria_");l(this,"currentTextLanguage_");l(this,"currentTextRole_");l(this,"currentTextForced_");l(this,"cleanupOnUnload_");l(this,"adManager_");l(this,"queueManager_");l(this,"preloadDueAdManager_");l(this,"preloadDueAdManagerVideo_");l(this,"preloadDueAdManagerVideoEnded_");l(this,"externalSrcEqualsTextTracks_");l(this,"preloadDueAdManagerTimer_");l(this,"checkVariantsTimer_");l(this,"preloadNextUrl_");l(this,"textDisplayer_");l(this,"speechToText_");l(this,"pendingExtraTrackPromises_");l(this,"frameHandler_");l(this,"operationManager_");l(this,"playbackObjectUrl_");l(this,"lastTextFactory_");this.loadMode_=Q.LoadMode.NOT_LOADED,this.video_=null,this.videoContainer_=i,this.isTextVisible_=!1,this.globalEventManager_=new ue,this.attachEventManager_=new ue,this.loadEventManager_=new ue,this.trickPlayEventManager_=new ue,this.adManagerEventManager_=new ue,this.networkingEngine_=null,this.drmEngine_=null,this.mediaSourceEngine_=null,this.playhead_=null,this.operationId_=0,this.mutex_=new Zr,this.playheadObservers_=null,this.playRateController_=null,this.bufferPoller_=null,this.bufferObserver_=null,this.regionTimeline_=null,this.metadataRegionTimeline_=null,this.emsgRegionTimeline_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.lcevcCanvas_=null,this.lcevcDec_=null,this.qualityObserver_=null,this.streamingEngine_=null,this.parser_=null,this.parserFactory_=null,this.manifest_=null,this.assetUri_=null,this.mimeType_=null,this.startTime_=null,this.fullyLoaded_=!1,this.abrManager_=null,this.abrManagerFactory_=null,this.nextExternalStreamId_=1e9,this.externalSrcEqualsThumbnailsStreams_=[],this.deferredCloseSegmentIndex_=new Map,this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.config_=this.defaultConfig_(),this.lowLatencyConfig_=st.createDefaultForLL(),this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.targetLatencyReached_=null,this.lastTextFactory_,this.maxHwRes_={width:1/0,height:1/0},this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,null),this.createdPreloadManagers_=[],this.stats_=null,this.currentAdaptationSetCriteria_=this.config_.adaptationSetCriteriaFactory();let s={preferredAudio:this.config_.preferredAudio,preferredVideo:this.config_.preferredVideo,language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:"",activeAudioCodec:"",activeAudioChannelCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(s),this.currentAdaptationSetCriteria_.configure(s),this.currentTextLanguage_=((n=this.config_.preferredText[0])==null?void 0:n.language)||"",this.currentTextRole_=((a=this.config_.preferredText[0])==null?void 0:a.role)||"",this.currentTextForced_=((o=this.config_.preferredText[0])==null?void 0:o.forced)||!1,this.cleanupOnUnload_=[],r&&r(this),this.cmcdManager_=this.createCmcd_(),this.cmsdManager_=this.createCmsd_(),this.networkingEngine_=this.createNetworkingEngine(),this.adManager_=null,this.queueManager_=null,this.preloadDueAdManager_=null,this.preloadDueAdManagerVideo_=null,this.preloadDueAdManagerVideoEnded_=!1,this.externalSrcEqualsTextTracks_=[],this.preloadDueAdManagerTimer_=new ae(async()=>{this.preloadDueAdManager_&&(v.assert(this.preloadDueAdManagerVideo_,"Must have video"),await this.attach(this.preloadDueAdManagerVideo_,!0),await this.load(this.preloadDueAdManager_),this.preloadDueAdManagerVideoEnded_?this.preloadDueAdManagerVideo_.pause():this.preloadDueAdManagerVideo_.play(),this.preloadDueAdManager_=null,this.preloadDueAdManagerVideoEnded_=!1)}),Q.adManagerFactory_&&(this.adManager_=Q.adManagerFactory_(this),this.adManager_.configure(this.config_.ads),this.adManagerEventManager_.listen(this.adManager_,"ad-content-pause-requested",async c=>{if(this.preloadDueAdManagerTimer_.stop(),!this.preloadDueAdManager_){this.preloadDueAdManagerVideo_=this.video_,this.preloadDueAdManagerVideoEnded_=this.isEnded();let d=c.saveLivePosition||!1,u=!0;this.isLive()&&(u=d),this.preloadDueAdManager_=await this.detachAndSavePreload(!0,u)}}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-resume-requested",c=>{let d=c.offset||0;this.preloadDueAdManager_&&this.preloadDueAdManager_.setOffsetToStartTime(d),this.preloadDueAdManagerTimer_.tickAfter(.1)}),this.adManagerEventManager_.listen(this.adManager_,"ad-content-attach-requested",async c=>{!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null)})),Q.queueManagerFactory_&&(this.queueManager_=Q.queueManagerFactory_(this),this.queueManager_.configure(this.config_.queue)),this.globalEventManager_.listen(window,"online",()=>{this.restoreDisabledVariants_(),this.retryStreaming()}),this.checkVariantsTimer_=new ae(()=>this.checkVariants_()),this.preloadNextUrl_=null,this.textDisplayer_=null,this.speechToText_=null,this.pendingExtraTrackPromises_=new Set,this.frameHandler_=null,this.operationManager_=new gi,this.playbackObjectUrl_=null,t&&(p.alwaysWarn("Please migrate from initializing Player with a mediaElement; use the attach method instead."),this.attach(t,!0))}createLcevcDec_(t,i){this.lcevcDec_==null&&(this.lcevcDec_=new wr(this.video_,this.lcevcCanvas_,t,i),this.mediaSourceEngine_&&this.mediaSourceEngine_.updateLcevcDec(this.lcevcDec_))}closeLcevcDec_(){this.lcevcDec_!=null&&(this.lcevcDec_.hideCanvas(),this.lcevcDec_.release(),this.lcevcDec_=null)}setupLcevc_(t,i){i||t.lcevc.enabled?(this.closeLcevcDec_(),this.createLcevcDec_(t.lcevc,i)):this.closeLcevcDec_()}static makeEvent_(t,i){return new U(t,i)}async destroy(){if(this.loadMode_==Q.LoadMode.DESTROYED)return;this.closeLcevcDec_();let t=this.detach();this.loadMode_=Q.LoadMode.DESTROYED,await t,await this.destroyAllPreloads(),this.globalEventManager_&&(this.globalEventManager_.release(),this.globalEventManager_=null),this.attachEventManager_&&(this.attachEventManager_.release(),this.attachEventManager_=null),this.loadEventManager_&&(this.loadEventManager_.release(),this.loadEventManager_=null),this.trickPlayEventManager_&&(this.trickPlayEventManager_.release(),this.trickPlayEventManager_=null),this.adManagerEventManager_&&(this.adManagerEventManager_.release(),this.adManagerEventManager_=null),this.abrManagerFactory_=null,this.config_=null,this.stats_=null,this.videoContainer_=null,this.cmcdManager_=null,this.cmsdManager_=null,this.networkingEngine_&&(await this.networkingEngine_.destroy(),this.networkingEngine_=null),this.abrManager_&&(this.abrManager_.release(),this.abrManager_=null),this.queueManager_&&(this.queueManager_.destroy(),this.queueManager_=null),this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),super.release()}static registerSupportPlugin(t,i){Q.supportPlugins_.set(t,i)}static setAdManagerFactory(t){Q.adManagerFactory_=t}static setQueueManagerFactory(t){Q.queueManagerFactory_=t}static isBrowserSupported(){if(window.Promise||p.alwaysWarn("A Promise implementation or polyfill is required"),!(!!window.Promise&&!!window.Uint8Array&&!!Array.prototype.forEach)||(navigator.userAgent||"").includes("Trident/"))return!1;let r=j.getDevice();return r.supportsMediaSource()?!0:r.supportsMediaType("application/x-mpegurl")}static async probeSupport(t=!0){v.assert(Q.isBrowserSupported(),"Must have basic support");let i={};t&&(i=await Bi.probeSupport());let r=me.probeSupport(),s=dr.probeSupport(),n=j.getDevice();v.assert(n,"device must be non-null");let a=await n.detectMaxHardwareResolution(),o={manifest:r,media:s,drm:i,hardwareResolution:a};return Q.supportPlugins_.forEach((d,u)=>{o[u]=d()}),o}makeStateChangeEvent_(t){this.dispatchEvent(Q.makeEvent_(U.EventName.OnStateChange,new Map().set("state",t)))}async attach(t,i=!0){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();let r=this.video_&&this.video_==t;if(this.video_&&this.video_!=t&&await this.detach(),!await this.atomicOperationAcquireMutex_("attach"))try{if(!r){this.makeStateChangeEvent_("attach");let n=a=>this.onVideoError_(a);this.attachEventManager_.listen(t,"error",n),this.video_=t,this.cmcdManager_&&this.cmcdManager_.setMediaElement(t)}let s=j.getDevice();i&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&await this.initializeMediaSourceEngineInner_()}catch(s){throw await this.detach(),s}finally{this.mutex_.release()}}attachCanvas(t){this.lcevcCanvas_=t}async detach(t=!1,i=!1){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();if(await this.unload(!1,t,i),!await this.atomicOperationAcquireMutex_("detach"))try{this.video_&&(this.attachEventManager_.removeAll(),this.video_=null),this.makeStateChangeEvent_("detach"),this.adManager_&&!t&&this.adManager_.release()}finally{this.mutex_.release()}}async atomicOperationAcquireMutex_(t){let i=++this.operationId_;return await this.mutex_.acquire(t),i!=this.operationId_?(this.mutex_.release(),!0):!1}async unload(t=!0,i=!1,r=!1){if(this.loadMode_!=Q.LoadMode.DESTROYED&&(this.loadMode_=Q.LoadMode.NOT_LOADED),await this.atomicOperationAcquireMutex_("unload"))return;try{this.fullyLoaded_=!1,this.makeStateChangeEvent_("unload"),this.closeLcevcDec_();let n=this.cleanupOnUnload_.map(o=>o());this.cleanupOnUnload_=[],await Promise.all(n);let a=new Map().set("isSwitchingContent",r);if(this.dispatchEvent(Q.makeEvent_(U.EventName.Unloading,a)),this.regionTimeline_&&(this.regionTimeline_.release(),this.regionTimeline_=null),this.metadataRegionTimeline_&&(this.metadataRegionTimeline_.release(),this.metadataRegionTimeline_=null),this.emsgRegionTimeline_&&(this.emsgRegionTimeline_.release(),this.emsgRegionTimeline_=null),this.video_&&(this.loadEventManager_.removeAll(),this.trickPlayEventManager_.removeAll()),this.checkVariantsTimer_.stop(),this.playheadObservers_&&(this.playheadObservers_.release(),this.playheadObservers_=null),this.bufferPoller_&&(this.bufferPoller_.stop(),this.bufferPoller_=null),this.parser_&&(await this.parser_.stop(),this.parser_=null,this.parserFactory_=null),this.abrManager_&&this.abrManager_.stop(),this.streamingEngine_&&(await this.streamingEngine_.destroy(),this.streamingEngine_=null),this.playRateController_&&(this.playRateController_.release(),this.playRateController_=null),this.playhead_&&(this.playhead_.release(),this.playhead_=null),de.isMediaKeysPolyfilled("webkit")&&this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),this.adManager_&&!i&&this.adManager_.onAssetUnload(),this.preloadDueAdManager_&&!i&&(this.preloadDueAdManager_.destroy(),this.preloadDueAdManager_=null),i||this.preloadDueAdManagerTimer_.stop(),this.cmcdManager_&&this.cmcdManager_.reset(),this.cmsdManager_&&this.cmsdManager_.reset(),this.textDisplayer_&&(await this.textDisplayer_.destroy(),this.textDisplayer_=null),this.isTextVisible_=!1,this.speechToText_&&this.speechToText_.disable(),this.pendingExtraTrackPromises_.clear(),this.frameHandler_&&(this.frameHandler_.release(),this.frameHandler_=null),await this.operationManager_.destroy(),this.video_){for(let o of this.externalSrcEqualsTextTracks_)o.src.startsWith("blob:")&&URL.revokeObjectURL(o.src),o.remove();this.externalSrcEqualsTextTracks_=[],Ge.clearSourceFromVideo(this.video_)&&this.video_.load()}if(this.drmEngine_&&(await this.drmEngine_.destroy(),this.drmEngine_=null),this.preloadNextUrl_&&this.assetUri_!=this.preloadNextUrl_.getAssetUri()&&(this.preloadNextUrl_.isDestroyed()||this.preloadNextUrl_.destroy(),this.preloadNextUrl_=null),this.assetUri_=null,this.mimeType_=null,this.bufferObserver_=null,this.manifest_){for(let o of this.manifest_.variants)for(let c of[o.audio,o.video])c&&c.segmentIndex&&c.segmentIndex.release();for(let o of this.manifest_.textStreams)o.segmentIndex&&o.segmentIndex.release()}this.config_&&this.config_.streaming.clearDecodingCache&&(se.clearDecodingConfigCache(),de.clearMediaKeySystemAccessMap()),this.manifest_=null,this.stats_=new tr,this.lastTextFactory_=null,this.targetLatencyReached_=null,this.currentTargetLatency_=null,this.rebufferingCount_=-1,this.externalSrcEqualsThumbnailsStreams_=[];for(let o of this.deferredCloseSegmentIndex_.values())o.stop();this.deferredCloseSegmentIndex_.clear(),this.externalSrcEqualsChapterStreams_=[],this.completionPercent_=-1,this.networkingEngine_&&this.networkingEngine_.clearCommonAccessTokenMap(),this.playbackObjectUrl_&&(URL.revokeObjectURL(this.playbackObjectUrl_),this.playbackObjectUrl_=null),this.updateBufferState_()}finally{this.mutex_.release()}let s=j.getDevice();t&&s.supportsMediaSource()&&!this.mediaSourceEngine_&&this.video_&&await this.initializeMediaSourceEngineInner_()}updateStartTime(t){this.startTime_=t}async load(t,i=null,r){if(this.loadMode_==Q.LoadMode.DESTROYED)throw this.createAbortLoadError_();!this.video_&&this.preloadDueAdManagerVideo_&&(await this.attach(this.preloadDueAdManagerVideo_,!0),this.preloadDueAdManagerVideo_=null);let s=null,n="";if(r=r==null?void 0:r.toLowerCase(),t instanceof Ps){if(t.isDestroyed())throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.PRELOAD_DESTROYED);s=t,n=s.getAssetUri()||""}else n=t||"";if(await this.mutex_.acquire("load"),this.mutex_.release(),!this.video_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.NO_VIDEO_ELEMENT);this.assetUri_&&(this.assetUri_=n,await this.unload(!1,!1,!0));let a=++this.operationId_,o=async()=>{if(this.operationId_!=a)throw s&&await s.destroy(),this.createAbortLoadError_()},c=async(d,u)=>{try{await this.mutex_.acquire(u),await o(),await d(),await o(),s&&this.config_&&s.reconfigure(this.config_)}finally{this.mutex_.release()}};try{i==null&&s&&(i=s.getStartTime()),this.startTime_=i,this.fullyLoaded_=!1,this.dispatchEvent(Q.makeEvent_(U.EventName.Loading)),s?r=s.getMimeType():r||await c(async()=>{r=await this.guessMimeType_(n)},"guessMimeType_");let d=!!s;s?(s.setEventHandoffTarget(this),this.stats_=s.getStats()):(s=await this.preloadInner_(n,i,r,!0,this.config_),s?(s.markIsLoad(),s.setEventHandoffTarget(this),this.stats_=s.getStats(),s.start(),s.waitForFinish().catch(()=>{})):this.stats_=new tr);let u=!s,m=Date.now()/1e3;this.stats_=s?s.getStats():new tr,this.assetUri_=n,this.mimeType_=r||null,this.updateBufferState_();let f=()=>{let g=this.video_?this.video_.buffered:null;return{start:Je.bufferStart(g)||0,end:Je.bufferEnd(g)||0}};if(this.metadataRegionTimeline_=new zr(f),this.metadataRegionTimeline_.addEventListener("regionadd",g=>{let _=g.region;this.dispatchMetadataEvent_(_,U.EventName.MetadataAdded)}),u)await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.initializeSrcEqualsDrmInner_(r)},"initializeSrcEqualsDrmInner_"),await c(async()=>{v.assert(r,"We should know the mimeType by now!"),await this.srcEqualsInner_(m,r)},"srcEqualsInner_");else{this.emsgRegionTimeline_=new zr(f),await c(async()=>{await s.waitForManifest(),this.parserFactory_=s.getParserFactory(),this.parser_=s.receiveParser(),this.manifest_=s.getManifest()},"waitForFinish"),this.mediaSourceEngine_||await c(async()=>{await this.initializeMediaSourceEngineInner_()},"initializeMediaSourceEngineInner_"),await c(async()=>{await s.waitForFinish()},"waitForFinish"),this.config_=s.getConfiguration(),this.manifestFilterer_=s.getManifestFilterer(),this.parser_&&this.parser_.setMediaElement&&this.video_&&this.parser_.setMediaElement(this.video_),this.regionTimeline_=s.receiveRegionTimeline(),this.qualityObserver_=s.getQualityObserver();let g=s.getCurrentAdaptationSetCriteria();if(g&&(this.currentAdaptationSetCriteria_=g),d&&this.video_&&this.video_.nodeName==="AUDIO"&&(this.makeManifestAudioOnly_(),this.configure("manifest.disableVideo",!0)),s.getDrmEngine()||await c(async()=>{await s.initializeDrm(this.video_)},"drmEngine_.init"),this.drmEngine_=s.receiveDrmEngine(),await c(async()=>{await this.drmEngine_.attach(this.video_)},"drmEngine_.attach"),this.currentAdaptationSetCriteria_){let b=this.currentAdaptationSetCriteria_.getConfiguration();b.keySystem=this.keySystem(),this.currentAdaptationSetCriteria_.configure(b)}let _=this.config_.abrFactory;(!this.abrManager_||this.abrManagerFactory_!=_)&&(this.abrManagerFactory_=_,this.abrManager_&&this.abrManager_.release(),this.abrManager_=_(),this.abrManager_.configure(this.config_.abr));let T=s.receiveSegmentPrefetchesById(),S=s.getPrefetchedVariant();await c(async()=>{await this.loadInner_(m,S,T)},"loadInner_"),s.stopQueuingLatePhaseQueuedOperations(),this.mimeType_&&j.getDevice().supportsAirPlay()&&N.isHlsType(this.mimeType_)&&this.mediaSourceEngine_.addSecondarySource(this.assetUri_,this.mimeType_)}this.dispatchEvent(Q.makeEvent_(U.EventName.Loaded))}catch(d){throw d&&d.code!=h.Code.LOAD_INTERRUPTED&&await this.unload(!1),d}finally{s&&await s.destroy(),this.preloadNextUrl_=null}}makeManifestAudioOnly_(){for(let t of this.manifest_.variants)t.video&&(t.video.closeSegmentIndex(),t.video=null),t.audio&&t.audio.bandwidth?t.bandwidth=t.audio.bandwidth:t.bandwidth=0;this.manifest_.variants=this.manifest_.variants.filter(t=>t.audio)}async unloadAndSavePreload(t=!0,i=!1,r=!1,s=!1){let n=await this.savePreload_(r);return await this.unload(t,i,s),n}async detachAndSavePreload(t=!1,i=!1,r=!1){let s=await this.savePreload_(i);return await this.detach(t,r),s}async savePreload_(t=!1){let i=null;if(this.manifest_&&this.parser_&&this.parserFactory_&&this.assetUri_&&this.config_){let r=this.video_.currentTime;t||(r=null),i=await this.makePreloadManager_(this.assetUri_,r,this.mimeType_,this.config_,!0,!1),this.createdPreloadManagers_.push(i),this.parser_&&this.parser_.setMediaElement&&this.parser_.setMediaElement(null);let s=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null;s&&i.setPrefetchVariant(s),i.attachManifest(this.manifest_,this.parser_,this.parserFactory_),i.attachAdaptationSetCriteria(this.currentAdaptationSetCriteria_),i.start(),this.manifest_=null,this.parser_=null,this.parserFactory_=null,this.abrManager_=null,this.abrManagerFactory_=null}return i}async preload(t,i=null,r,s,n=!1){v.assert(this.config_,"Config must not be null!"),r=r==null?void 0:r.toLowerCase();let a=this.defaultConfig_();st.mergeConfigObjects(a,s||this.config_,this.defaultConfig_());let o=await this.preloadInner_(t,i,r,!1,a);if(o)o.start();else{let c=new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.SRC_EQUALS_PRELOAD_NOT_SUPPORTED);if(n)throw c;this.onError_(c)}return o}async destroyAllPreloads(){let t=[];for(let i of this.createdPreloadManagers_)i.isDestroyed()||t.push(i.destroy());this.createdPreloadManagers_=[],await Promise.all(t)}async preloadInner_(t,i,r,s=!1,n){if(v.assert(this.networkingEngine_,"Should have a net engine!"),v.assert(this.config_,"Config must not be null!"),r||(r=await this.guessMimeType_(t)),this.shouldUseSrcEquals_(r))return null;let o=n||this.config_,c=!1;s&&this.video_&&this.video_.nodeName==="AUDIO"&&(c=!0);let d=this.makePreloadManager_(t,i,r||null,o,!s,c);return s?d=d.then(u=>(u.markIsLoad(),u)):d=d.then(u=>(this.createdPreloadManagers_.push(u),u)),d}async makePreloadManager_(t,i,r,s,n=!0,a=!1){v.assert(this.networkingEngine_,"Must have net engine");let o=null,c=Ne.cloneObject(s);a&&(c.manifest.disableVideo=!0);let d=()=>(v.assert(o,"Must have preload manager"),o.hasBeenAttached()&&o.isDestroyed()?null:o),u=()=>d()?d().getConfiguration():this.config_;if(this.maxHwRes_.width==1/0&&this.maxHwRes_.height==1/0&&!this.config_.ignoreHardwareResolution){let A=j.getDevice();v.assert(A,"device must be non-null");let w=await A.detectMaxHardwareResolution();this.maxHwRes_.width=w.width,this.maxHwRes_.height=w.height}let m=new Rr(c,this.maxHwRes_,null),f={networkingEngine:this.networkingEngine_,filter:async A=>{if(await m.filterManifest(A)){let M=Q.makeEvent_(U.EventName.TracksChanged);await Promise.resolve(),o.dispatchEvent(M)}},makeTextStreamsForClosedCaptions:A=>this.makeTextStreamsForClosedCaptions_(A),onTimelineRegionAdded:A=>{o.getRegionTimeline().addRegion(A)},onEvent:A=>o.dispatchEvent(A),onError:A=>o.onError(A),isLowLatencyMode:()=>u().streaming.lowLatencyMode,updateDuration:()=>{this.streamingEngine_&&o.hasBeenAttached()&&this.streamingEngine_.updateDuration()},newDrmInfo:A=>{let w=o.getDrmEngine(),M=w?w.getDrmInfo():null;M&&w.getMediaKeys()&&m.processDrmInfos(M.keySystem,A)},onManifestUpdated:()=>{let A=U.EventName.ManifestUpdated,w=new Map().set("isLive",this.isLive()).set("isInProgress",this.isInProgress());o.dispatchEvent(Q.makeEvent_(A,w)),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onManifestUpdated(this.isDynamic())})},getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),onMetadata:(A,w,M,x)=>{let k=A;(A=="com.apple.hls.interstitial"||A=="com.apple.hls.overlay")&&(k="com.apple.quicktime.HLS");let L={type:k,startTime:w,endTime:M,values:x},V=new Promise(ee=>{o.addQueuedOperation(!1,async()=>{if(this.adManager_){if(this.video_)try{await this.adManager_.onHLSMetadata(L)}catch(oe){}ee()}})});for(let ee of x)ee.name!="ID"&&o.addQueuedOperation(!1,()=>{this.addMetadataToRegionTimeline_(w,M,k,ee)});return V},disableStream:A=>this.disableStream(A,this.config_.streaming.maxDisabledTime),addFont:(A,w)=>this.addFont(A,w),getStreamingRetryParameters:()=>this.config_.streaming.retryParameters,onSegmentReceived:(A,w)=>{o.addQueuedOperation(!1,()=>{var M;(M=this.abrManager_)==null||M.segmentDownloaded(A,w,!0)})}},g=new zr(()=>this.seekRange());g.addEventListener("regionadd",A=>{let w=A.region;this.onRegionEvent_(U.EventName.TimelineRegionAdded,w,o),o.addQueuedOperation(!1,()=>{this.adManager_&&this.adManager_.onDASHMetadata(w)})});let _=null;c.streaming.observeQualityChanges&&(_=new ur(()=>this.getBufferedInfo()),_.addEventListener("qualitychange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M)}),_.addEventListener("audiotrackchange",A=>{let w=A.quality,M=A.position;this.onMediaQualityChange_(w,M,!0)}));let T=!0,S={netEngine:this.networkingEngine_,onError:A=>o.onError(A),onKeyStatus:A=>{o.addQueuedOperation(!0,()=>{this.drmEngine_&&this.onKeyStatus_(A)})},onExpirationUpdated:(A,w)=>{let M=Q.makeEvent_(U.EventName.ExpirationUpdated);o.dispatchEvent(M);let x=o.getParser();x&&x.onExpirationUpdated&&x.onExpirationUpdated(A,w)},onEvent:A=>{if(o.dispatchEvent(A),A.type==U.EventName.DrmSessionUpdate&&T){T=!1;let M=Date.now()/1e3-o.getStartTimeOfDRM();(this.stats_||o.getStats()).setDrmTime(M),this.lcevcDec_&&this.lcevcDec_.hideCanvas()}}},b=this.createNetworkingEngine(d);this.networkingEngine_.copyFiltersInto(b);let C={config:c,manifestPlayerInterface:f,regionTimeline:g,qualityObserver:_,createDrmEngine:()=>this.createDrmEngine(S),manifestFilterer:m,networkingEngine:b,allowPrefetch:n};return o=new Ps(t,r,i,C),o}async guessMimeType_(t){v.assert(this.networkingEngine_,"Should have a net engine!");let i=this.config_.manifest.retryParameters,r=await ct.getMimeType(t,this.networkingEngine_,i);return N.isHlsType(r)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="application/vnd.apple.mpegurl"):r==="video/quicktime"&&j.getDevice().getBrowserEngine()===ie.BrowserEngine.CHROMIUM&&(r="video/mp4"),r}shouldUseSrcEquals_(t){if(!j.getDevice().supportsMediaSource())return!0;if(t){let s=(this.video_||Ge.anyMediaElement()).canPlayType(t)!="";if(!s)return!1;let n=me.isSupported(t);return n?(v.assert(s&&n,"Both native and MSE playback should be possible!"),N.isHlsType(t)?j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(this.config_.drm.servers["com.apple.fps"]||this.config_.drm.servers["com.apple.fps.1_0"])?this.config_.streaming.useNativeHlsForFairPlay:this.config_.streaming.preferNativeHls:N.isDashType(t)?this.config_.streaming.preferNativeDash:!1):!0}return!1}createAndConfigureTextDisplayer_(t=!1){let i=this.config_.textDisplayFactory;if(this.lastTextFactory_!==i||t){let r=this.textDisplayer_;this.textDisplayer_=i(this),this.textDisplayer_.configure(this.config_.textDisplayer),r?(this.textDisplayer_.setTextVisibility(r.isTextVisible()),r.destroy().catch(()=>{})):this.textDisplayer_.setTextVisibility(this.isTextVisible_),this.mediaSourceEngine_&&this.mediaSourceEngine_.setTextDisplayer(this.textDisplayer_),this.lastTextFactory_=i,this.streamingEngine_&&this.streamingEngine_.reloadTextStream()}else this.textDisplayer_&&this.textDisplayer_.configure(this.config_.textDisplayer)}async initializeMediaSourceEngineInner_(){let t=j.getDevice();v.assert(t.supportsMediaSource(),"We should not be initializing media source on a platform that does not support media source."),v.assert(this.video_,"We should have a media element when initializing media source."),v.assert(this.mediaSourceEngine_==null,"We should not have a media source engine yet."),this.makeStateChangeEvent_("media-source"),this.config_.mediaSource.useSourceElements&&Ge.clearSourceFromVideo(this.video_),this.createAndConfigureTextDisplayer_(),v.assert(this.textDisplayer_,"Text displayer should be created already");let i=this.createMediaSourceEngine(this.video_,this.textDisplayer_,{getKeySystem:()=>this.keySystem(),onMetadata:(s,n,a)=>{this.processTimedMetadataMediaSrc_(s,n,a)},onEmsg:s=>{this.addEmsgToRegionTimeline_(s)},onEvent:s=>this.dispatchEvent(s),onManifestUpdate:()=>this.onManifestUpdate_(),getDrmInfo:()=>this.drmInfo()},this.lcevcDec_,this.config_.mediaSource),{segmentRelativeVttTiming:r}=this.config_.manifest;i.setSegmentRelativeVttTiming(r),await i.open(),this.mediaSourceEngine_=i}setupPlayRateController_(t){this.playRateController_=new dn({getRate:()=>t.playbackRate,getDefaultRate:()=>t.defaultPlaybackRate,setRate:i=>{t.playbackRate=i},movePlayhead:i=>{let r=t.currentTime;if(!Je.isBuffered(t.buffered,r)||t.readyState<=HTMLMediaElement.HAVE_CURRENT_DATA)return;let s=r+i,n=this.seekRange();if(s<n.start)r!==n.start&&(t.currentTime=n.start);else if(s>n.end)r!==n.end&&(t.currentTime=n.end);else{if(i<0){let o=Je.getBufferedInfo(t.buffered);for(let c=o.length-1;c>=0;c--)if(s>=o[c].start){s>o[c].end&&(s=Math.max(o[c].start,o[c].end-.5));break}}t.currentTime=s}},isPaused:()=>t.paused})}addBasicMediaListeners_(t,i){this.loadEventManager_.listenMulti(t,[Kt.PLAYING,Kt.PAUSE,Kt.ENDED],()=>{this.updateStateHistory_()}),this.loadEventManager_.listen(t,"ratechange",()=>{this.onRateChange_()});let s=j.getDevice().getRemote(t);s&&(this.loadEventManager_.listen(s,"connect",()=>{this.streamingEngine_&&s.state=="connected"&&this.onTextChanged_(),this.onTracksChanged_()}),this.loadEventManager_.listen(s,"connecting",()=>this.onTracksChanged_()),this.loadEventManager_.listen(s,"disconnect",async()=>{this.streamingEngine_&&s.state=="disconnected"&&(await this.streamingEngine_.resetMediaSource(),this.onTextChanged_()),this.onTracksChanged_()})),t.audioTracks&&this.loadEventManager_.listenMulti(t.audioTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()}),t.videoTracks&&this.loadEventManager_.listenMulti(t.videoTracks,["addtrack","removetrack","change"],()=>{this.onTracksChanged_()});let n=t;if((n.webkitPresentationMode||n.webkitSupportsFullscreen)&&this.loadEventManager_.listen(n,"webkitpresentationmodechanged",()=>{this.videoContainer_&&this.createAndConfigureTextDisplayer_(!0)}),t.textTracks){let a=()=>{this.loadMode_===Q.LoadMode.SRC_EQUALS&&this.textDisplayer_ instanceof mr&&this.onTextChanged_(),this.onTracksChanged_()};this.loadEventManager_.listen(t.textTracks,"addtrack",o=>{let c=o;if(c.track){let d=c.track;switch(v.assert(d instanceof TextTrack,"Wrong track type!"),d.kind){case"metadata":this.processTimedMetadata_(d);break;case"chapters":this.activateChaptersTrack_(d);break;default:a();break}}}),this.loadEventManager_.listenMulti(t.textTracks,["removetrack","change"],a)}t.preload!="none"&&(this.loadEventManager_.listenOnce(t,"loadedmetadata",()=>{let o=Date.now()/1e3-i;this.stats_.setLoadLatency(o)}),this.isAudioOnly()||(this.frameHandler_=new es(t),this.frameHandler_.start(()=>{this.frameHandler_.release(),this.frameHandler_=null;let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)},!0)||this.loadEventManager_.listenOnce(t,"loadeddata",()=>{let c=Date.now()/1e3-i;this.stats_.setTimeToFirstFrame(c)})))}async loadInner_(t,i,r){var g;v.assert(this.video_,"We should have a media element by now."),v.assert(this.manifest_,"The manifest should already be parsed."),v.assert(this.assetUri_,"We should have an asset uri by now."),v.assert(this.abrManager_,"We should have an abr manager by now."),this.makeStateChangeEvent_("load");let s=this.video_;this.setupPlayRateController_(s),this.addBasicMediaListeners_(s,t),"onchange"in window.screen&&this.loadEventManager_.listen(window.screen,"change",()=>{if(this.currentAdaptationSetCriteria_.getConfiguration){let _=this.currentAdaptationSetCriteria_.getConfiguration();_.preferredVideo.some(S=>S.hdrLevel=="AUTO")?this.updateAbrManagerVariants_():this.config_.preferredVideo.some(b=>b.hdrLevel=="AUTO")&&this.config_.abr.enabled&&(_.preferredVideo=this.config_.preferredVideo,st.addDeprecatedConfigFields(_),this.currentAdaptationSetCriteria_.configure(_),this.updateAbrManagerVariants_())}});let n=!1;for(let _ of this.manifest_.variants){let T=_.video&&_.video.dependencyStream;T&&(n=wr.isStreamSupported(T))}this.setupLcevc_(this.config_,n),this.currentTextLanguage_=this.config_.preferredText[0]&&this.config_.preferredText[0].language||"",this.currentTextRole_=this.config_.preferredText[0]&&this.config_.preferredText[0].role||"",this.currentTextForced_=((g=this.config_.preferredText[0])==null?void 0:g.forced)||!1,Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.abrManager_.init((_,T,S)=>this.switch_(_,T,S),(_,T)=>{var E;let S=(E=this.streamingEngine_)==null?void 0:E.getCurrentVariant(),b=S&&S[_];b&&this.disableStream(b,T)}),this.abrManager_.setMediaElement(s),this.abrManager_.setCmsdManager(this.cmsdManager_),this.streamingEngine_=this.createStreamingEngine(),this.streamingEngine_.configure(this.config_.streaming),this.loadMode_=Q.LoadMode.MEDIA_SOURCE,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let a=i,o,c;do{if(c=this.streamingEngine_.getCurrentVariant(),!c){let T=this.chooseVariant_(!0);i||(a=T),v.assert(a,"Must choose an initial variant!")}let _=[];o=c||a;for(let T of[o.video,o.audio])T&&!T.segmentIndex&&(_.push(T.createSegmentIndex()),T.dependencyStream&&_.push(T.dependencyStream.createSegmentIndex()));_.length>0&&await Promise.all(_)}while(!o||o.disabledUntilTime!=0);this.updateAbrManagerVariants_(),this.parser_&&this.parser_.onInitialVariantChosen&&this.parser_.onInitialVariantChosen(o),this.manifest_.isLowLatency&&(this.config_.streaming.lowLatencyMode?this.configure(this.lowLatencyConfig_):p.alwaysWarn("Low-latency live stream detected, but low-latency streaming mode is not enabled in Shaka Player. Set streaming.lowLatencyMode configuration to true, and see https://bit.ly/3clctcj for details.")),this.cmcdManager_&&(this.cmcdManager_.setLowLatency(this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode),this.cmcdManager_.setStartTimeOfLoad(t*1e3)),Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.streamingEngine_.applyPlayRange(this.config_.playRangeStart,this.config_.playRangeEnd),await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0,this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime));let d=_=>{this.playhead_=this.createPlayhead(_),this.playheadObservers_=this.createPlayheadObserversForMSE_(_),this.startBufferManagement_(s,!1)};if(!this.config_.streaming.startAtSegmentBoundary){let _=this.startTime_;_==null&&this.manifest_.startTime&&(_=this.manifest_.startTime),d(_)}if(!c){if(v.assert(a,"Must have chosen an initial variant!"),this.config_.streaming.startAtSegmentBoundary){let _=this.manifest_.presentationTimeline,T;if(this.startTime_ instanceof Date){let C=_.getInitialProgramDateTime()||_.getPresentationStartTime();v.assert(C!=null,"Presentation start time should not be null!");let A=this.startTime_.getTime()/1e3-C;A!=null&&(T=A)}T==null&&(T=typeof this.startTime_=="number"?this.startTime_:this.isLive()?1/0:this.video_.currentTime),this.startTime_==null&&this.manifest_.startTime&&(T=this.manifest_.startTime);let S=_.getSeekRangeStart(),b=_.getSeekRangeEnd();T<S?T=S:T>b&&(T=b);let E=await this.adjustStartTime_(a,T);d(E)}this.switchVariant_(a,!0,!1,0)}if(this.playhead_.ready(),!this.getTextTracks().find(_=>_.active)){v.assert(a,"Must have chosen an initial variant!");let _=this.chooseTextStream_(a);_&&(this.addTextStreamToSwitchHistory_(_,!0),this.setInitialTextState_(_)),_&&this.isTextVisible_&&(this.streamingEngine_.switchTextStream(_),this.setTextDisplayerLanguage_())}await this.streamingEngine_.start(r),this.config_.abr.enabled&&(this.abrManager_.enable(),this.onAbrStatusChanged_()),this.onTracksChanged_();let m=this.manifest_.variants.some(_=>_.primary);!this.config_.preferredAudio.length&&!m&&p.warning("No preferred audio language set. We have chosen an arbitrary language initially");let f=this.isDynamic();if(f&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.manifest_.serviceDescription||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let _=()=>this.onTimeUpdate_();this.loadEventManager_.listen(s,"timeupdate",_)}if(!f){let _=()=>this.onVideoProgress_();if(this.loadEventManager_.listen(s,"timeupdate",_),this.onVideoProgress_(),this.manifest_.nextUrl){if(this.config_.streaming.preloadNextUrlWindow>0){let T=async()=>{let S=this.seekRange().end-this.video_.currentTime;isNaN(S)||S<=this.config_.streaming.preloadNextUrlWindow&&(this.loadEventManager_.unlisten(s,"timeupdate",T),v.assert(this.manifest_.nextUrl,"this.manifest_.nextUrl should be valid."),this.preloadNextUrl_=await this.preload(this.manifest_.nextUrl))};this.loadEventManager_.listen(s,"timeupdate",T)}this.loadEventManager_.listen(s,"ended",()=>{this.load(this.preloadNextUrl_||this.manifest_.nextUrl)})}}this.adManager_&&this.adManager_.onManifestUpdated(f)}async initializeSrcEqualsDrmInner_(t){v.assert(this.networkingEngine_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|"),v.assert(this.config_,"|onInitializeSrcEqualsDrm_| should never be called after |destroy|");let i=Date.now()/1e3,r=!0;this.drmEngine_=this.createDrmEngine({netEngine:this.networkingEngine_,onError:n=>{this.onError_(n)},onKeyStatus:n=>{},onExpirationUpdated:(n,a)=>{let o=Q.makeEvent_(U.EventName.ExpirationUpdated);this.dispatchEvent(o)},onEvent:n=>{if(this.dispatchEvent(n),n.type==U.EventName.DrmSessionUpdate&&r){r=!1;let o=Date.now()/1e3-i;this.stats_.setDrmTime(o)}}}),this.drmEngine_.configure(this.config_.drm);let s=se.createEmptyVariant([t]);this.drmEngine_.setSrcEquals(!0),await this.drmEngine_.initForPlayback([s],[]),await this.drmEngine_.attach(this.video_)}async srcEqualsInner_(t,i){this.makeStateChangeEvent_("src-equals"),v.assert(this.video_,"We should have a media element when loading."),v.assert(this.assetUri_,"We should have a valid uri when loading.");let r=this.video_;this.playhead_=new ln(r);let s=!1;if(this.cleanupOnUnload_.push(()=>{s=!0}),this.dispatchEvent(Q.makeEvent_(U.EventName.CanUpdateStartTime)),this.startTime_!=null&&this.playhead_.setStartTime(this.startTime_),this.playheadObservers_=this.createPlayheadObserversForSrcEquals_(this.startTime_||0),this.setupPlayRateController_(r),this.startBufferManagement_(r,!0),r.textTracks){this.createAndConfigureTextDisplayer_();let m=T=>{if(!(this.textDisplayer_ instanceof mr)){let S=this.getFilteredTextTracks_().find(b=>b.mode!=="disabled");S&&(S.mode=T?"showing":"hidden")}};this.loadEventManager_.listen(r,"enterpictureinpicture",()=>m(!0)),this.loadEventManager_.listen(r,"leavepictureinpicture",()=>m(!1));let g=j.getDevice().getRemote(r);g?this.loadEventManager_.listenMulti(g,["connect","connecting","disconnect"],()=>{m(!1)}):"webkitCurrentPlaybackTargetIsWireless"in r&&this.loadEventManager_.listen(r,"webkitcurrentplaybacktargetiswirelesschanged",()=>m(!1));let _=r;(_.webkitPresentationMode||_.webkitSupportsFullscreen)&&this.loadEventManager_.listen(_,"webkitpresentationmodechanged",()=>{_.webkitPresentationMode?m(_.webkitPresentationMode!=="inline"):_.webkitSupportsFullscreen&&m(_.webkitDisplayingFullscreen)})}this.addBasicMediaListeners_(r,t);let n=this.cmcdManager_.appendSrcData(this.assetUri_,i),a;if(this.mimeType_&&this.config_.streaming.processSrcEqualMetadata&&kt.supports(this.mimeType_)){let m=!1,f=K.RequestType.MANIFEST,g=this.config_.streaming.retryParameters,_=K.makeRequest([n],g),T=this.networkingEngine_.request(f,_);this.operationManager_.manage(T);let S=b=>{if(b.request===_){let E=b.headers;E["content-length"]&&!E["icy-br"]&&!E["icy-description"]&&!E["icy-genre"]&&!E["icy-name"]&&!E["icy-url"]||(m=!0,T.abort())}};this.addEventListener(U.EventName.DownloadHeadersReceived,S);try{let b=await T.promise;a=D.toUint8(b.data);let E=new Blob([b.data],{type:this.mimeType_});n=URL.createObjectURL(E),this.playbackObjectUrl_=n}catch(b){if(!m)throw b}finally{this.removeEventListener(U.EventName.DownloadHeadersReceived,S)}}!n.includes("#t=")&&(this.config_.playRangeStart>0||isFinite(this.config_.playRangeEnd))&&(n+="#t=",this.config_.playRangeStart>0&&(n+=this.config_.playRangeStart),isFinite(this.config_.playRangeEnd)&&(n+=","+this.config_.playRangeEnd)),this.mediaSourceEngine_&&(await this.mediaSourceEngine_.destroy(),this.mediaSourceEngine_=null),Ge.clearSourceFromVideo(r),r.src=n;let o=j.getDevice();o.getDeviceType()==ie.DeviceType.TV&&r.load(),r.preload!="none"&&!r.autoplay&&N.isHlsType(i)&&o.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&r.load(),this.loadMode_=Q.LoadMode.SRC_EQUALS,this.dispatchEvent(Q.makeEvent_(U.EventName.Streaming));let c=()=>new Promise(m=>{let g=new ae(m);this.loadEventManager_.listen(r.textTracks,"change",()=>g.tickAfter(.5)),g.tickAfter(.5)}),d=Promise.withResolvers();ui.waitForReadyState(r,HTMLMediaElement.HAVE_METADATA,this.loadEventManager_,async()=>{this.playhead_.ready(),!this.mimeType_||!N.isHlsType(this.mimeType_)||await c(),d.resolve()}),ui.waitForReadyState(r,HTMLMediaElement.HAVE_CURRENT_DATA,this.loadEventManager_,async()=>{if(await c(),s)return;this.setupPreferredAudioOnSrc_();let m=this.getFilteredTextTracks_();if(m.some(f=>f.mode==="showing")&&(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)),!(this.textDisplayer_ instanceof mr)){let f=!1;for(let g of m)g.mode!=="disabled"&&(f?(g.mode="disabled",p.alwaysWarn("Found more than one enabled text track, disabling it",g)):(this.enableNativeTrack_(g),f=!0))}this.setupPreferredTextOnSrc_()}),r.error?d.reject(this.videoErrorToShakaError_()):r.preload=="none"&&(p.alwaysWarn('With <video preload="none">, the browser will not load anything until play() is called. We are unable to measure load latency in a meaningful way, and we cannot provide track info yet. Please do not use preload="none" with Shaka Player.'),d.resolve()),this.loadEventManager_.listenOnce(r,"error",()=>{d.reject(this.videoErrorToShakaError_())}),await it.promiseWithTimeout(this.config_.streaming.loadTimeout,d.promise);let u=this.isDynamic();if(u&&(this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled||this.config_.streaming.liveSync.panicMode)||this.config_.streaming.vodDynamicPlaybackRate){let m=()=>this.onTimeUpdate_();this.loadEventManager_.listen(r,"timeupdate",m)}if(!u){let m=()=>this.onVideoProgress_();this.loadEventManager_.listen(r,"timeupdate",m),this.onVideoProgress_()}if(this.adManager_&&(this.adManager_.onManifestUpdated(u),u)){let m=this.seekRange().end;this.loadEventManager_.listen(r,"progress",()=>{let f=this.seekRange().end;m!=f&&(this.adManager_.onManifestUpdated(this.isDynamic()),m=f)})}if(this.mimeType_&&a){let m=kt.getMetadataFrames(a,this.mimeType_);if(m.length){let g=this.video_.duration,_="org.id3";for(let T of m)this.addMetadataToRegionTimeline_(0,g,_,T)}}await this.waitForPendingExtraTrackPromises_(),this.fullyLoaded_=!0}setupPreferredAudioOnSrc_(){let t=this.config_.preferredAudio;if(t.length&&this.video_&&this.video_.audioTracks){let i=this.getVariantTracks();for(let r of t){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(i,r.language,r.role,!1)[0];if(s){this.selectVariantTrack(s);return}}}}setupPreferredTextOnSrc_(){let t=this.getTextTracks();if(t.some(r=>r.active))return;let i=this.config_.preferredText;for(let r of i){if(!r.language)continue;let s=se.filterStreamsByLanguageAndRole(t,r.language,r.role,r.forced);if(s.length){this.selectTextTrack(s[0]);return}}if(this.video_&&this.video_.audioTracks&&this.config_.accessibility.handleForcedSubtitlesAutomatically){let s=Array.from(this.video_.audioTracks).find(n=>n.enabled);if(s){let n=se.filterStreamsByLanguageAndRole(t,s.language,"",!0);if(n.length){this.selectTextTrack(n[0]);return}}}this.selectTextTrack(null)}processTimedMetadata_(t){if(t.kind!="metadata")return;t.mode="hidden";let i=()=>{if(t.cues){let s=[];for(let n of t.cues)if(n.startTime!=null&&"type"in n){let a=s.find(o=>o.startTime==n.startTime&&o.endTime==n.endTime);a||(a={type:n.type,startTime:n.startTime,endTime:n.endTime,values:[]},s.push(a)),n.value&&n.value.key=="X-AD-CREATIVE-SIGNALING"&&(a.type="urn:svta:advertising-wg:ad-creative-signaling"),a.values.push(n.value)}for(let n of s)if(this.adManager_){if(n.values.some(o=>o.key=="X-ASSET-URI"||o.key=="X-ASSET-LIST")){let o=n.startTime==0&&!this.isDynamic();n.values.push({key:"CUE",description:"",data:o?"ONCE,PRE":"ONCE",mimeType:null,pictureType:null})}this.adManager_.onHLSMetadata(n)}}};this.loadEventManager_.listen(t,"cuechange",s=>{if(t.activeCues)for(let n of t.activeCues)this.addMetadataToRegionTimeline_(n.startTime,n.endTime,n.type,n.value),this.adManager_&&this.adManager_.onCueMetadataChange(n.value);i()}),i();let r=new ae(()=>{let s=this.getMetadataTracks_();for(let n of s)n.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{r.stop()})}processTimedMetadataMediaSrc_(t,i,r){for(let s of t)if(s.data&&typeof s.cueTime=="number"&&s.frames){let n=s.cueTime+i,a=r;a&&n>a&&(a=n);let o="org.id3";for(let c of s.frames){let d=c;this.addMetadataToRegionTimeline_(n,a,o,d)}this.adManager_&&this.adManager_.onHlsTimedMetadata(s,n)}}dispatchMetadataEvent_(t,i){let r=new Map().set("startTime",t.startTime).set("endTime",t.endTime).set("metadataType",t.schemeIdUri).set("payload",t.payload);this.dispatchEvent(Q.makeEvent_(i,r))}addMetadataToRegionTimeline_(t,i,r,s){if(!this.metadataRegionTimeline_)return;v.assert(!i||t<=i,"Metadata start time should be less or equal to the end time!");let n={schemeIdUri:r,startTime:t,endTime:i||1/0,id:"",payload:s};n.id=JSON.stringify(n),this.metadataRegionTimeline_.addRegion(n)}dispatchEmsgEvent_(t){let i=U.EventName.Emsg,r=t.emsg,s=new Map().set("detail",r);this.dispatchEvent(Q.makeEvent_(i,s))}addEmsgToRegionTimeline_(t){if(!this.emsgRegionTimeline_)return;let i={schemeIdUri:t.schemeIdUri,startTime:t.startTime,endTime:t.endTime,id:String(t.id),emsg:t};this.emsgRegionTimeline_.addRegion(i)}activateChaptersTrack_(t){if(!t||t.kind!="chapters")return;t.mode="hidden";let i=new ae(()=>{t.mode="hidden"}).tickNow().tickAfter(.5);this.cleanupOnUnload_.push(()=>{i.stop()})}releaseAllMutexes(){this.mutex_.releaseAll()}createDrmEngine(t){return new Bi(t)}createNetworkingEngine(t){t||(t=()=>null);let i=()=>t()?t().getParser():this.parser_,r=_=>{t()?t().addQueuedOperation(!0,_):_()},s=_=>{t()?t().dispatchEvent(_):this.dispatchEvent(_)},n=()=>t()?t().getStats():this.stats_,a=(_,T,S,b,E)=>{r(()=>{this.abrManager_&&this.abrManager_.segmentDownloaded(_,T,S,b,E)})},o=(_,T,S)=>{let b=U.EventName.DownloadHeadersReceived,E=new Map().set("headers",_).set("request",T).set("requestType",S);s(Q.makeEvent_(b,E)),r(()=>{this.cmsdManager_&&this.cmsdManager_.processHeaders(_)})},c=(_,T,S,b)=>{let E=U.EventName.DownloadCompleted,C=new Map().set("requestType",_).set("request",T).set("context",S).set("response",b);s(Q.makeEvent_(E,C))},d=(_,T,S,b,E,C)=>{let A=U.EventName.DownloadFailed,w=new Map().set("requestType",_).set("request",T).set("context",S).set("error",b).set("httpResponseCode",E).set("aborted",C);s(Q.makeEvent_(A,w))},u=(_,T,S)=>{r(()=>{this.cmcdManager_&&this.cmcdManager_.applyRequestData(_,T,S)})},m=(_,T,S,b)=>{let E=i();E&&E.banLocation&&E.banLocation(b)},f=(_,T,S)=>{if(T.data){let b=T.data.byteLength,E=n();E&&(E.addBytesDownloaded(b),_===K.RequestType.MANIFEST&&E.setManifestSize(b)),this.cmcdManager_.applyResponseData(_,T,S)}},g=new K(a,o,c,d,u,m,f);return g.configure(this.config_.networking),g}createPlayhead(t){return v.assert(this.manifest_,"Must have manifest"),v.assert(this.video_,"Must have video"),new cn(this.video_,this.manifest_,this.config_.streaming,t,()=>this.onSeek_(),i=>this.dispatchEvent(i),()=>this.getPlaybackRate())}createPlayheadObserversForMSE_(t){v.assert(this.manifest_,"Must have manifest"),v.assert(this.regionTimeline_,"Must have region timeline"),v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.emsgRegionTimeline_,"Must have emsg region timeline"),v.assert(this.video_,"Must have video element");let i=this.isDynamic()||typeof t=="number"&&t>0,r=new Ur(this.regionTimeline_,i);r.addEventListener("enter",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.sendEventStreamCallback_(d)}),r.addEventListener("exit",c=>{let d=c.region;this.onRegionEvent_(U.EventName.TimelineRegionExit,d)}),r.addEventListener("skip",c=>{let d=c.region;c.seeking||(this.onRegionEvent_(U.EventName.TimelineRegionEnter,d),this.onRegionEvent_(U.EventName.TimelineRegionExit,d))});let s=new Ur(this.metadataRegionTimeline_,i);s.addEventListener("enter",c=>{let d=c.region;this.dispatchMetadataEvent_(d,U.EventName.Metadata)});let n=new Ur(this.emsgRegionTimeline_,i);n.addEventListener("enter",c=>{let d=c.region;this.dispatchEmsgEvent_(d)});let a=new _n(this.manifest_.presentationTimeline);a.addEventListener("change",c=>{this.dispatchEvent(Q.makeEvent_(U.EventName.TimelineChanged,new Map([["programDateTime",c.programDateTime],["timestamp",c.timestamp]])))});let o=new xs(this.video_);return o.manage(r),o.manage(s),o.manage(n),o.manage(a),this.qualityObserver_&&o.manage(this.qualityObserver_),o}createPlayheadObserversForSrcEquals_(t){v.assert(this.metadataRegionTimeline_,"Must have metadata region timeline"),v.assert(this.video_,"Must have video element");let i=t instanceof Date||t>0,r=new Ur(this.metadataRegionTimeline_,i);r.addEventListener("enter",n=>{let a=n.region;this.dispatchMetadataEvent_(a,U.EventName.Metadata)});let s=new xs(this.video_);return s.manage(r),s}startBufferManagement_(t,i){let r=Kt;v.assert(!this.bufferObserver_,"No buffering observer should exist before initialization."),v.assert(!this.bufferPoller_,"No buffer timer should exist before initialization."),this.bufferObserver_=new Mr(1,2),this.bufferObserver_.setState(Mr.State.STARVING),this.updateBufferingSettings_(),this.updateBufferState_(),this.bufferPoller_=new ae(()=>{this.pollBufferState_()}),this.config_.streaming.rebufferingGoal&&this.bufferPoller_.tickEvery(.25),this.loadEventManager_.listen(t,r.WAITING,s=>this.pollBufferState_(r.WAITING)),this.loadEventManager_.listen(t,r.CAN_PLAY_THROUGH,s=>this.pollBufferState_(r.CAN_PLAY_THROUGH)),this.loadEventManager_.listen(t,r.PLAYING,s=>this.pollBufferState_(r.PLAYING)),this.loadEventManager_.listen(t,r.SEEKED,s=>this.pollBufferState_(r.SEEKED)),this.loadEventManager_.listen(t,r.TIME_UPDATE,s=>this.pollBufferState_(r.TIME_UPDATE)),i&&(this.loadEventManager_.listen(t,r.PROGRESS,s=>this.pollBufferState_(r.PROGRESS)),this.loadEventManager_.listen(t,r.STALLED,s=>this.pollBufferState_(r.STALLED)))}updateBufferingSettings_(){let t=this.config_.streaming.rebufferingGoal,i=t,r=Math.min(Q.TYPICAL_BUFFERING_THRESHOLD_,t/2);this.bufferObserver_.setThresholds(i,r)}pollBufferState_(t){if(v.assert(this.video_,"Need a media element to update the buffering observer"),v.assert(this.bufferObserver_,"Need a buffering observer to update"),!this.config_.streaming.rebufferingGoal){t&&this.bufferObserver_.reportEvent(t,this.video_.currentTime)&&this.updateBufferState_();return}let i=this.mediaSourceEngine_?this.mediaSourceEngine_.ended():!1,r=this.isEnded()||i||this.playhead_.isBufferedToEnd(),s=this.getPlaybackRate()<0?Je.bufferedBehindOf(this.video_.buffered,this.video_.currentTime):Je.bufferedAheadOf(this.video_.buffered,this.video_.currentTime);this.bufferObserver_.update(s,r)&&this.updateBufferState_()}createMediaSourceEngine(t,i,r,s,n){return new dr(t,i,r,n,s)}createCmcd_(){return new Nr(this,this.config_.cmcd)}createCmsd_(){return new Tn(this.config_.cmsd)}createStreamingEngine(){v.assert(this.abrManager_&&this.mediaSourceEngine_&&this.manifest_&&this.video_,"Must not be destroyed");let t={getPresentationTime:()=>this.playhead_?this.playhead_.getTime():0,getBandwidthEstimate:()=>this.abrManager_.getBandwidthEstimate(),getPlaybackRate:()=>this.getPlaybackRate(),video:this.video_,mediaSourceEngine:this.mediaSourceEngine_,netEngine:this.networkingEngine_,onError:i=>this.onError_(i),onEvent:i=>this.dispatchEvent(i),onSegmentAppended:(i,r,s,n,a)=>{this.onSegmentAppended_(i.startTime,i.endTime,r.type,s,n,a),this.abrManager_&&r.fastSwitching&&i.isPartial()&&i.isLastPartial()&&this.abrManager_.trySuggestStreams()},onInitSegmentAppended:(i,r)=>{let s=r.getMediaQuality();s&&this.qualityObserver_&&this.qualityObserver_.addMediaQualityChange(s,i)},beforeAppendSegment:(i,r)=>this.drmEngine_.parseInbandPssh(i,r),disableStream:(i,r)=>this.disableStream(i,r),shouldPrefetchNextSegment:(i,r)=>!this.config_.abr.enabled||!r.fastSwitching||!i.isPartial()||!i.isLastPartial(),getKeySystem:()=>this.keySystem()};return new jr(this.manifest_,t)}configure(t,i){v.assert(this.config_,"Config must not be null!"),v.assert(typeof t=="object"||arguments.length==2,"String configs should have values!");let r=this.getConfiguration();arguments.length==2&&typeof t=="string"&&(t=Pt.convertToConfigObject(t,i)),v.assert(typeof t=="object","Should be an object!"),t.manifest&&t.manifest.dash&&"disableXlinkProcessing"in t.manifest.dash&&(Cr.deprecateFeature(6,"manifest.dash.disableXlinkProcessing configuration","It is now automatically detected if the manifest has Xlink."),delete t.manifest.dash.disableXlinkProcessing),t.textDisplayer&&"captionsUpdatePeriod"in t.textDisplayer&&(Cr.deprecateFeature(6,"textDisplayer.captionsUpdatePeriod configuration","Captions are now updated based on the cue timings, so this configuration is no longer needed."),delete t.textDisplayer.captionsUpdatePeriod),Q.convertLegacyPreferences_(t);let s=st.mergeConfigObjects(this.config_,t,this.defaultConfig_());return this.applyConfig_(r),s}configurationForLowLatency(t){this.lowLatencyConfig_=t}applyConfig_(t){if(this.manifestFilterer_=new Rr(this.config_,this.maxHwRes_,this.drmEngine_),this.parser_){let s=Ne.cloneObject(this.config_.manifest);this.video_&&this.video_.nodeName==="AUDIO"&&(s.disableVideo=!0),this.parser_.configure(s)}if(this.drmEngine_&&this.drmEngine_.configure(this.config_.drm),this.streamingEngine_){this.streamingEngine_.configure(this.config_.streaming);try{this.loadMode_!=Q.LoadMode.DESTROYED&&this.manifestFilterer_.filterManifestWithRestrictions(this.manifest_)&&this.onTracksChanged_()}catch(n){this.onError_(n)}this.abrManager_&&this.updateAbrManagerVariants_();let s=this.streamingEngine_.getCurrentVariant();s&&(!s.allowedByApplication||!s.allowedByKeySystem)&&(p.debug("Choosing new variant after changing configuration"),this.chooseVariantAndSwitch_())}if(this.networkingEngine_&&this.networkingEngine_.configure(this.config_.networking),this.mediaSourceEngine_){this.mediaSourceEngine_.configure(this.config_.mediaSource);let{segmentRelativeVttTiming:s}=this.config_.manifest;this.mediaSourceEngine_.setSegmentRelativeVttTiming(s)}this.textDisplayer_&&this.createAndConfigureTextDisplayer_(),this.abrManager_&&(this.abrManager_.configure(this.config_.abr),this.config_.abr.enabled?this.abrManager_.enable():this.abrManager_.disable(),this.onAbrStatusChanged_()),this.bufferObserver_&&this.updateBufferingSettings_(),this.bufferPoller_&&(this.config_.streaming.rebufferingGoal?this.bufferPoller_.tickEvery(.25):this.bufferPoller_.stop()),this.manifest_&&Q.applyPlayRange_(this.manifest_.presentationTimeline,this.config_.playRangeStart,this.config_.playRangeEnd),this.adManager_&&this.adManager_.configure(this.config_.ads),this.cmcdManager_&&this.cmcdManager_.configure(this.config_.cmcd),this.cmsdManager_&&this.cmsdManager_.configure(this.config_.cmsd),this.queueManager_&&this.queueManager_.configure(this.config_.queue);let i=this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS;this.config_.accessibility.speechToText.enabled?this.speechToText_?this.speechToText_.configure(this.config_.accessibility.speechToText):(this.speechToText_=new Qr(this),this.speechToText_.configure(this.config_.accessibility.speechToText),i&&this.onTextChanged_()):this.speechToText_&&(this.speechToText_.release(),this.speechToText_=null,i&&this.onTextChanged_()),this.applyCriteriaConfigChanges_(t);let r=Q.makeEvent_(U.EventName.ConfigurationChanged);this.dispatchEvent(r)}applyCriteriaConfigChanges_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE||!this.currentAdaptationSetCriteria_.getConfiguration)return;let i=this.currentAdaptationSetCriteria_.getConfiguration();v.assert(i,"criteriaConfig must not be null!");let r=!1,s=n=>Ne.alphabeticalKeyOrderStringify(n);s(t.preferredVideo)!=s(this.config_.preferredVideo)&&(i.preferredVideo=this.config_.preferredVideo,r=!0),s(t.preferredAudio)!=s(this.config_.preferredAudio)&&(i.preferredAudio=this.config_.preferredAudio,r=!0),r&&(st.addDeprecatedConfigFields(i),this.currentAdaptationSetCriteria_.configure(i),this.chooseVariantAndSwitch_())}getConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),t}getConfigurationForLowLatency(){return this.lowLatencyConfig_}getNonDefaultConfiguration(){v.assert(this.config_,"Config must not be null!");let t=this.defaultConfig_();return st.mergeConfigObjects(t,this.config_,this.defaultConfig_()),Pt.getDifferenceFromConfigObjects(this.config_,this.defaultConfig_())}getSharedConfiguration(){return v.assert(this.config_,"Cannot call getSharedConfiguration after call destroy!"),this.config_}getBufferFullness(){if(this.video_){let t=this.video_.buffered.length,i=t?this.video_.buffered.end(t-1):0,r=this.config_.streaming.bufferingGoal,s=Math.min(this.video_.currentTime+r,this.seekRange().end);if(i>=s)return 1;if(i<=this.video_.currentTime)return 0;if(i<s)return(i-this.video_.currentTime)/(s-this.video_.currentTime)}return 0}resetConfiguration(){v.assert(this.config_,"Cannot be destroyed");let t=this.getConfiguration();for(let i in this.config_)delete this.config_[i];st.mergeConfigObjects(this.config_,this.defaultConfig_(),this.defaultConfig_()),this.applyConfig_(t)}getLoadMode(){return this.loadMode_}getManifestType(){return this.manifest_?this.manifest_.type:null}getMediaElement(){return this.video_}getNetworkingEngine(){return this.networkingEngine_}getAssetUri(){return this.assetUri_}getMimeType(){return this.mimeType_}getAllMetadataRegions(){var t;return Array.from(((t=this.metadataRegionTimeline_)==null?void 0:t.regions())||[])}getAllEmsgRegions(){var t;return Array.from(((t=this.emsgRegionTimeline_)==null?void 0:t.regions())||[])}getAllTimelineRegions(){var t;return Array.from(((t=this.regionTimeline_)==null?void 0:t.regions())||[])}getAdManager(){return this.adManager_?this.adManager_:null}getQueueManager(){return this.queueManager_?this.queueManager_:null}isLive(){return this.manifest_&&!this.isRemotePlayback()?this.manifest_.presentationTimeline.isLive():this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.duration==1/0:!1}isInProgress(){return this.manifest_?this.manifest_.presentationTimeline.isInProgress():!1}isDynamic(){return this.isLive()||this.isInProgress()}isAudioOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;return t.length?!t[0].video:!1}else return this.video_&&(this.video_.src||this.isRemotePlayback())?this.video_.videoTracks?this.video_.videoTracks.length==0:this.video_.videoHeight==0:!1}isVideoOnly(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.variants;if(!t.length)return!1;let i=t[0];return i.audio||!i.video?!1:!i.video.codecs.includes(",")}else if(this.video_&&(this.video_.src||this.isRemotePlayback())&&this.video_.audioTracks)return this.video_.audioTracks.length==0;return!1}seekRange(){if(this.manifest_&&!this.isRemotePlayback()){if(!this.fullyLoaded_&&this.manifest_.type==me.HLS)return{start:0,end:0};let t=this.manifest_.presentationTimeline;return{start:t.getSeekRangeStart(),end:t.getSeekRangeEnd()}}if(this.video_&&(this.video_.src||this.isRemotePlayback())){let t=this.video_.seekable;if(t&&t.length){let i=this.config_?this.config_.playRangeStart:0,r=Math.max(t.start(0),i),s=this.config_?this.config_.playRangeEnd:1/0,n=Math.min(t.end(t.length-1),s);return{start:r,end:n}}}return{start:0,end:0}}goToLive(){this.isDynamic()?this.video_.currentTime=this.seekRange().end:p.warning("goToLive is for live streams!")}isFullyLoaded(){return this.fullyLoaded_}keySystem(){return de.keySystem(this.drmInfo())}drmInfo(){return this.drmEngine_?this.drmEngine_.getDrmInfo():null}getDrmEngine(){return this.drmEngine_}getExpiration(){return this.drmEngine_?this.drmEngine_.getExpiration():1/0}getActiveSessionsMetadata(){return this.drmEngine_?this.drmEngine_.getActiveSessionsMetadata():[]}renewLicense(t){this.drmEngine_&&this.drmEngine_.renewLicense(t)}async retryLicensing(t,i){return this.drmEngine_?await this.drmEngine_.retryLicensing(t,i):!1}getKeyStatuses(){return this.drmEngine_?this.drmEngine_.getKeyStatuses():{}}isBuffering(){let t=Mr.State;return this.bufferObserver_?this.bufferObserver_.getState()==t.STARVING:!!this.assetUri_}getPlaybackRate(){return this.video_?this.playRateController_?this.playRateController_.getRealRate():1:0}useTrickPlayTrackIfAvailable(t){this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.streamingEngine_&&this.streamingEngine_.setTrickPlay(t)}trickPlay(t,i=!0){if(v.assert(t!=0,"Should never set a trick play rate of 0!"),t==0){p.alwaysWarn("A trick play rate of 0 is unsupported!");return}let r=this.video_.playbackRate,s=this.playRateController_.getRealRate();this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(i&&t!=1)),this.setupTrickPlayEventListeners_(t),r===0&&this.video_.playbackRate===0&&t!=s&&this.onRateChange_()}cancelTrickPlay(){let t=this.playRateController_.getDefaultRate();this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&(this.playRateController_.set(t),this.abrManager_.playbackRateChanged(t),this.useTrickPlayTrackIfAvailable(!1)),this.trickPlayEventManager_.removeAll()}getVariantTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.streamingEngine_?this.streamingEngine_.getCurrentVariant():null,i=[],r=0;for(let s of this.manifest_.variants){if(!se.isPlayable(s))continue;let n=se.variantToTrack(s);n.active=s==t,!n.active&&r!=1&&t!=null&&s.video==t.video&&s.audio==t.audio&&(n.active=!0),n.active&&r++,i.push(n)}return v.assert(r<=1,"It should only have one active track"),i}else if(this.video_&&this.video_.audioTracks){let t=this.getActiveHtml5VideoTrack_(),i=Array.from(this.video_.audioTracks);return i.length?i.map(r=>se.html5TrackToShakaTrack(r,t)):t?[se.html5TrackToShakaTrack(null,t)]:[]}else return[]}getTextTracks(){if(this.manifest_){if(this.isRemotePlayback())return[];{let t=this.streamingEngine_?this.streamingEngine_.getCurrentTextStream():null,i=[];for(let r of this.manifest_.textStreams){let s=se.textStreamToTrack(r);s.active=r==t,i.push(s)}return this.speechToText_&&i.push(...this.speechToText_.getTextTracks()),i}}else if(this.video_&&this.video_.src&&this.video_.textTracks){let t=this.getFilteredTextTracks_(),i=this.textDisplayer_.isTextVisible(),r=t.map(s=>se.html5TextTrackToTrack(s,i));return this.speechToText_&&r.push(...this.speechToText_.getTextTracks()),r}else return[]}getImageTracks(){let t=this.externalSrcEqualsThumbnailsStreams_;return this.manifest_&&(t=this.manifest_.imageStreams),t.map(i=>se.imageStreamToTrack(i))}async getAllThumbnails(t){let i=await this.getBestImageStream_(t);if(!i)return null;let r=[];return i.segmentIndex.forEachTopLevelReference(s=>{let n=this.parseTilesLayout_(s.getTilesLayout()||i.tilesLayout);if(n){let a=n.rows*n.columns,c=(s.trueEndTime-s.startTime)/a;for(let d=0;d<a;d++){let u=s.startTime+d*c,m=this.getThumbnailByReference_(s,i,u,n);if(!m)break;r.push(m)}}}),r}parseTilesLayout_(t){if(!t)return null;let i=/(\d+)x(\d+)/.exec(t);if(!i)return p.warning("Tiles layout does not contain a valid format (columns x rows)"),null;let r=parseInt(i[1],10),s=parseInt(i[2],10);return{columns:r,rows:s}}async getThumbnails(t,i){let r=await this.getBestImageStream_(t);if(!r)return null;let s=r.segmentIndex.find(i);if(s==null)return null;let n=r.segmentIndex.get(s),a=this.parseTilesLayout_(n.getTilesLayout()||r.tilesLayout);return a?this.getThumbnailByReference_(n,r,i,a):null}async getBestImageStream_(t){if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)return null;let i=this.externalSrcEqualsThumbnailsStreams_;this.manifest_&&(i=this.manifest_.imageStreams);let r=i[0];if(!r||(t!=null&&(r=i.find(s=>s.id==t)),!r))return null;if(r.segmentIndex||await r.createSegmentIndex(),r.closeSegmentIndex){if(!this.deferredCloseSegmentIndex_.has(r)){let s=new ae(()=>{r&&(r.closeSegmentIndex(),this.deferredCloseSegmentIndex_.delete(r))});this.deferredCloseSegmentIndex_.set(r,s)}this.deferredCloseSegmentIndex_.get(r).tickAfter(5)}return r}getThumbnailByReference_(t,i,r,s){let n=t.getUris();if(!n.length)return null;let a=1e-4,o=i.width||0,c=i.height||0,d=o/s.columns,u=c/s.rows,m=s.columns*s.rows,f=t.trueEndTime-t.startTime,g=t.getTileDuration()||f/m,_=t.startTime,T=0,S=0;if(m>1){let C=(r-t.startTime)/g,A=Math.floor(C+a);_=t.startTime+A*g,T=A%s.columns*d,S=Math.floor(A/s.columns)*u}if(_>=t.endTime||jt.isFloatEqual(_,t.endTime,a))return null;let b=!1,E=t.getThumbnailSprite();return E&&(b=!0,u=E.height,T=E.positionX,S=E.positionY,d=E.width),{segment:t,imageHeight:c,imageWidth:o,height:u,positionX:T,positionY:S,startTime:_,duration:g,uris:n,startByte:t.getStartByte(),endByte:t.getEndByte(),width:d,sprite:b,mimeType:t.mimeType||i.mimeType,codecs:t.codecs||i.codecs}}selectTextTrack(t){let i=!1;if(this.speechToText_&&t&&(i=this.speechToText_.getTextTracks().includes(t)),this.speechToText_&&!i&&this.speechToText_.disable(),!t||i){this.speechToText_&&i&&t&&this.speechToText_.enable(t),this.onTextChanged_(),this.setTextTrackVisibility_(!1);return}let r=()=>{let n=this.manifest_.textStreams.find(a=>a.id==t.id);if(!n){this.isRemotePlayback()||p.error("No stream with id",t.id);return}if(n==this.streamingEngine_.getCurrentTextStream()){p.debug("Text track already selected.");return}this.addTextStreamToSwitchHistory_(n,!1),this.streamingEngine_.switchTextStream(n),this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.currentTextLanguage_=n.language,this.setTextTrackVisibility_(!0)},s=()=>{if(this.video_&&this.video_.textTracks){let n=this.getFilteredTextTracks_(),a=n.find(o=>se.html5TrackId(o)===t.id);if(!a){p.error("No track with id",t.id);return}if(this.textDisplayer_ instanceof mr)for(let o of n){let c=o===a?this.isTextVisible_?"showing":"hidden":"disabled";o.mode!==c&&(o.mode=c)}else{let o=n.find(c=>c.mode!=="disabled");o!==a&&(o&&(o.mode="disabled",this.loadEventManager_.unlisten(o,"cuechange"),this.textDisplayer_.remove(0,1/0)),a&&this.enableNativeTrack_(a))}this.onTextChanged_(),this.setTextDisplayerLanguage_(),this.setTextTrackVisibility_(!0)}};this.manifest_&&this.playhead_&&(r(),!this.isRemotePlayback())||s()}enableNativeTrack_(t){this.loadEventManager_.listen(t,"cuechange",()=>{let i=Math.max(0,this.video_.currentTime-this.config_.streaming.bufferBehind);this.textDisplayer_.remove(0,i);let r={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},s=[],n=Array.from(t.activeCues||[]);for(let a of n){let o=si.mapNativeCueToShakaCue(a);if(o){let c=this.config_.mediaSource.modifyCueCallback;c&&c(o,null,r),s.push(o)}}this.textDisplayer_.append(s)}),t.mode=document.pictureInPictureElement?"showing":"hidden"}selectVariantTrack(t,i=!1,r=0){let s=()=>{let a=this.manifest_.variants.find(m=>m.id==t.id);if(!a){this.isRemotePlayback()||p.error("No variant with id",t.id);return}if(!se.isPlayable(a)){p.error("Unable to switch to restricted track",t.id);return}let o=this.streamingEngine_.getCurrentVariant();this.config_.abr.enabled&&(o.video!=a.video||o.audio&&a.audio&&o.audio.language==a.audio.language&&o.audio.channelsCount==a.audio.channelsCount&&o.audio.label==a.audio.label)&&p.alwaysWarn("Changing tracks while abr manager is enabled will likely result in the selected track being overridden. Consider disabling abr before calling selectVariantTrack()."),this.isRemotePlayback()?this.switchVariant_(a,!1,!1,0):this.switchVariant_(a,!1,i||!1,r||0);let c={language:a.language||"",role:a.audio&&a.audio.roles&&a.audio.roles[0]||"",label:a.audio&&a.audio.label||"",channelCount:a.audio&&a.audio.channelsCount||0,codec:a.audio&&a.audio.codecs||"",spatialAudio:a.audio&&a.audio.spatialAudio?a.audio.spatialAudio:!1},d={label:a.video&&a.video.label||"",role:a.video&&a.video.roles&&a.video.roles[0]||"",language:a.video&&a.video.language||"",codec:a.video&&a.video.codecs||"",hdrLevel:a.video&&a.video.hdr||"",layout:a.video&&a.video.videoLayout||""},u={preferredAudio:[c],preferredVideo:[d],language:"",role:"",videoRole:"",channelCount:0,hdrLevel:"",spatialAudio:!1,videoLayout:"",audioLabel:"",videoLabel:"",preferredAudioCodecs:[],preferredAudioChannelCount:0,codecSwitchingStrategy:this.config_.mediaSource.codecSwitchingStrategy,audioCodec:a.audio&&a.audio.codecs?a.audio.codecs:"",activeAudioCodec:o.audio&&o.audio.codecs?o.audio.codecs:"",activeAudioChannelCount:o.audio&&o.audio.channelsCount?o.audio.channelsCount:0,keySystem:this.keySystem()};st.addDeprecatedConfigFields(u),this.currentAdaptationSetCriteria_.configure(u),this.updateAbrManagerVariants_()},n=()=>{if(t.originalAudioId&&this.video_&&this.video_.audioTracks){let a=Array.from(this.video_.audioTracks);for(let o of a)if(se.html5TrackId(o)==t.id){this.switchHtml5Track_(o);return}}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}selectAudioTrack(t,i=0){let r=(a,o)=>{if(a==o||!this.config_.accessibility.handleForcedSubtitlesAutomatically)return;let c=this.getTextTracks(),d=c.find(g=>g.active),u=d?ve.normalize(d.language):null,m=ve.normalize(a),f=ve.normalize(o);if(!d||u==m&&u!=f&&d.forced){let g=se.filterStreamsByLanguageAndRole(c,f,"",!0);g.length&&this.selectTextTrack(g[0])}},s=()=>{let a=this.currentAdaptationSetCriteria_.getConfiguration();a.audioCodec=t.codecs||"",a.preferredAudio=[{language:t.language,role:t.roles[0]||"",label:t.label||"",channelCount:t.channelsCount||0,codec:"",spatialAudio:t.spatialAudio}];let o=this.streamingEngine_.getCurrentVariant(),c=o&&o.audio;c&&(a.activeAudioCodec=c.codecs||"",a.activeAudioChannelCount=c.channelsCount||0,r(c.language,t.language)),st.addDeprecatedConfigFields(a),this.currentAdaptationSetCriteria_.configure(a),this.chooseVariantAndSwitch_(!0,i,!1,!1)},n=()=>{if(this.video_&&this.video_.audioTracks){let a=ve.normalize(t.language),o=Array.from(this.video_.audioTracks),c=null,d=null;for(let u of o){let m=u.language||"und";!c&&u.label==t.label&&ve.normalize(m)==a&&u.kind==t.roles[0]&&(c=u),u.enabled&&(d=u)}c&&(d&&r(d.language,c.language),this.switchHtml5Track_(c))}};this.manifest_&&this.playhead_&&(s(),!this.isRemotePlayback())||n()}getAudioTracks(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()&&(r=t.filter(n=>n.originalVideoId===i.originalVideoId&&(n.audioCodec||N.RAW_FORMATS.includes(n.audioMimeType||"")))),!r.length)return[];let s=new Map;for(let n of r){let a=[n.language,n.originalLanguage,n.label||"",(n.audioRoles||[]).join(","),n.channelsCount,n.spatialAudio,n.audioCodec||"",n.accessibilityPurpose||""].join("_"),o={active:n.active,language:n.language,label:n.label,mimeType:n.audioMimeType,codecs:n.audioCodec,primary:n.primary,roles:n.audioRoles||[],accessibilityPurpose:n.accessibilityPurpose,channelsCount:n.channelsCount,audioSamplingRate:n.audioSamplingRate,spatialAudio:n.spatialAudio,originalLanguage:n.originalLanguage};s.has(a)?!s.get(a).active&&o.active&&s.set(a,o):s.set(a,o)}return Array.from(s.values())}else return this.video_&&this.video_.audioTracks?Array.from(this.video_.audioTracks).map(t=>se.html5AudioTrackToTrack(t)):[]}selectVideoTrack(t,i=!1,r=0){let s=this.getVariantTracks();if(!s.length)return;let n=s.find(c=>c.active);if(!n)return;let a=s.filter(c=>(c.videoBandwidth||c.bandwidth)==t.bandwidth&&c.width==t.width&&c.height==t.height&&c.frameRate==t.frameRate&&c.pixelAspectRatio==t.pixelAspectRatio&&c.hdr==t.hdr&&c.colorGamut==t.colorGamut&&c.videoLayout==t.videoLayout&&c.videoMimeType==t.mimeType&&c.videoCodec==t.codecs&&ye.equal(c.videoRoles,t.roles)&&(c.videoLanguage||"und")==(t.language||"und")&&c.videoLabel==t.label),o;a.length==1?o=a[0]:o=a.find(c=>c.audioId===n.audioId),o||(o=a.find(c=>c.language==n.language&&c.label===n.label&&c.channelsCount===n.channelsCount&&c.spatialAudio===n.spatialAudio&&c.audioMimeType===n.audioMimeType&&N.getNormalizedCodec(c.audioCodec||"")===N.getNormalizedCodec(n.audioCodec||"")&&ye.equal(c.audioRoles,n.audioRoles))),o&&!o.active&&this.selectVariantTrack(o,i,r)}getVideoTracks(){if(this.loadMode_==Q.LoadMode.SRC_EQUALS||this.isRemotePlayback())return[];let t=this.getVariantTracks();if(!t.length)return[];let i=t.find(n=>n.active);if(!i)return[];let r=t;if(this.isVideoOnly()||(r=t.filter(n=>!n.videoCodec||n.audioGroupId!==i.audioGroupId||n.originalAudioId!==i.originalAudioId?!1:n.audioId===i.audioId?!0:n.language===i.language&&n.label===i.label&&n.channelsCount===i.channelsCount&&n.spatialAudio===i.spatialAudio&&n.audioMimeType===i.audioMimeType&&N.getNormalizedCodec(n.audioCodec||"")===N.getNormalizedCodec(i.audioCodec||"")&&ye.equal(n.audioRoles,i.audioRoles))),!r.length)return[];let s=new Map;for(let n of r){let a=n.originalVideoId;if(!a&&n.videoId!=null&&(a=String(n.videoId)),!a)continue;let o={active:n.active,language:n.videoLanguage||"und",bandwidth:n.videoBandwidth||n.bandwidth,width:n.width,height:n.height,frameRate:n.frameRate,pixelAspectRatio:n.pixelAspectRatio,hdr:n.hdr,colorGamut:n.colorGamut,videoLayout:n.videoLayout,mimeType:n.videoMimeType,codecs:n.videoCodec,roles:n.videoRoles||[],label:n.videoLabel};s.set(a,o)}return Array.from(s.values())}getChaptersTracks(){let t=this.externalSrcEqualsChapterStreams_;this.manifest_&&(t=this.manifest_.chapterStreams);let i=t.map(s=>se.chapterStreamToTrack(s)),r=this.getChaptersTracks_();return r.length&&i.push(...r.map(s=>se.html5TextTrackToChapterTrack(s))),i}async getChaptersAsync(t){var c,d;let i=this.getNativeChapters_(t);if(i.length)return i;let r=this.externalSrcEqualsChapterStreams_;if(this.manifest_&&(r=this.manifest_.chapterStreams),!r.length)return[];let s=ve.normalize(t),n=r.filter(u=>ve.normalize(u.language)==s);if(!n.length)return[];let a=[],o=new Set;for(let u of n){u.segmentIndex||await u.createSegmentIndex();let m=0;if(this.isLive()&&((c=this.manifest_)==null?void 0:c.type)===me.HLS){let f=this.manifest_.presentationTimeline;m=Math.max(0,(d=f.getInitialProgramDateTime())!=null?d:f.getPresentationStartTime())}u.segmentIndex.forEachTopLevelReference(f=>{let g=f.getMetadata();if(!g)return;let _=g.title,T=f.startTime+"-"+f.endTime+"-"+_;m>0&&f.endTime-m<0&&(m=0);let S={id:T,title:_,startTime:Math.max(0,f.startTime-m),endTime:Math.max(0,f.endTime-m),images:g.images};o.has(T)||(a.push(S),o.add(T))})}return a}getNativeChapters_(t){let i=this.getChaptersTracks_();if(!i.length)return[];let r=ve.normalize(t),s=i.filter(o=>ve.normalize(o.language)==r);if(!s||!s.length)return[];let n=[],a=new Set;for(let o of s)if(o&&o.cues)for(let c of o.cues){let d=c.id;(!d||d=="")&&(d=c.startTime+"-"+c.endTime+"-"+c.text);let u={id:d,title:c.text,startTime:c.startTime,endTime:c.endTime,images:[]};a.has(d)||(n.push(u),a.add(d))}return n}getFilteredTextTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind!="metadata"&&t.kind!="chapters"&&t.label!=Q.TextTrackLabel)}getGeneratedTextTrack_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).find(t=>t.label==Q.TextTrackLabel)}getMetadataTracks_(){return v.assert(this.video_.textTracks,"TextTracks should be valid."),Array.from(this.video_.textTracks).filter(t=>t.kind=="metadata")}getChaptersTracks_(){return!this.video_||!this.video_.textTracks?[]:Array.from(this.video_.textTracks).filter(t=>t.kind=="chapters")}setTextTrackVisibility_(t){let i=this.isTextVisible_,r=!!t;if(i!=r)if(this.isTextVisible_=r,this.loadMode_==Q.LoadMode.MEDIA_SOURCE)if(this.textDisplayer_.setTextVisibility(r),r){if(!this.streamingEngine_.getCurrentTextStream()){let s=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);s.length>0&&(this.streamingEngine_.switchTextStream(s[0]),this.onTextChanged_(),this.setTextDisplayerLanguage_())}}else this.streamingEngine_.unloadTextStream();else this.video_&&this.video_.src&&this.video_.textTracks&&this.textDisplayer_.setTextVisibility(r)}getPlayheadTimeAsDate(){let t=0;if(this.playhead_)t=this.playhead_.getTime();else{if(this.startTime_==null)return new Date;if(this.startTime_ instanceof Date)return this.startTime_;t=this.startTime_}if(this.manifest_&&!this.isRemotePlayback()){let i=this.manifest_.presentationTimeline,r=i.getProgramDateTimeForTime(t);if(r!=null)return new Date(r*1e3);let s=i.getPresentationStartTime();return new Date((s+t)*1e3)}else if(this.video_&&this.video_.getStartDate){let i=this.video_.getStartDate();return!(i instanceof Date)||isNaN(i.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get playhead time as Date!"),null):new Date(i.getTime()+t*1e3)}else return p.warning("No way to get playhead time as Date!"),null}getPresentationStartTimeAsDate(){if(this.manifest_&&!this.isRemotePlayback()){let t=this.manifest_.presentationTimeline,i=t.getInitialProgramDateTime()||t.getPresentationStartTime();return i===null?(p.info("Manifest appears to have no PDT or PST"),null):new Date(i*1e3)}else if(this.video_&&this.video_.getStartDate){let t=this.video_.getStartDate();return!(t instanceof Date)||isNaN(t.getTime())?(p.warning("EXT-X-PROGRAM-DATETIME required to get presentation start time as Date!"),null):t}else return p.warning("No way to get presentation start time as Date!"),null}getSegmentAvailabilityDuration(){return this.isLive()?this.manifest_?this.manifest_.presentationTimeline.getSegmentAvailabilityDuration():(p.warning("No way to get segment segment availability duration!"),null):(p.warning("getSegmentAvailabilityDuration is for live streams!"),null)}getBufferedInfo(){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE)return this.mediaSourceEngine_.getBufferedInfo();let t={total:[],audio:[],video:[],text:[]};return this.loadMode_==Q.LoadMode.SRC_EQUALS&&(t.total=Je.getBufferedInfo(this.video_.buffered)),t}getLiveLatency(){if(!this.video_||!this.video_.currentTime)return null;let t=this.getPresentationStartTimeAsDate();if(!t)return null;let i=t.getTime()+this.video_.currentTime*1e3;return Math.floor(Date.now()-i)}getBandwidthEstimate(){return this.abrManager_?this.abrManager_.getBandwidthEstimate():NaN}getStats(){if(!(this.loadMode_==Q.LoadMode.MEDIA_SOURCE||this.loadMode_==Q.LoadMode.SRC_EQUALS))return tr.getEmptyBlob();this.updateStateHistory_(),v.assert(this.video_,"If we have stats, we should have video_");let i=this.video_,r=i.currentTime/i.duration;if(!isNaN(r)&&!this.isDynamic()&&this.stats_.setCompletionPercent(Math.round(100*r)),this.playhead_&&(this.stats_.setGapsJumped(this.playhead_.getGapsJumped()),this.stats_.setStallsDetected(this.playhead_.getStallsDetected())),i.getVideoPlaybackQuality){let d=i.getVideoPlaybackQuality();this.stats_.setDroppedFrames(Number(d.droppedVideoFrames),Number(d.totalVideoFrames)),this.stats_.setCorruptedFrames(Number(d.corruptedVideoFrames))}let s=this.drmEngine_?this.drmEngine_.getLicenseTime():NaN;if(this.stats_.setLicenseTime(s),this.stats_.setResolution(i.videoWidth||NaN,i.videoHeight||NaN),this.stats_.setCodecs(""),this.isDynamic()){let d=this.getLiveLatency();d!=null&&this.stats_.setLiveLatency(d/1e3)}let a=this.getVariantTracks().find(d=>d.active),c=this.getTextTracks().find(d=>d.active);if(a){if(a.bandwidth){let u=this.playRateController_?this.playRateController_.getRealRate():1,f=u*a.bandwidth;c&&c.bandwidth&&(f+=u*c.bandwidth),this.stats_.setCurrentStreamBandwidth(f)}a.width&&a.height&&this.stats_.setResolution(a.width||NaN,a.height||NaN);let d=a.codecs;c&&(d+=","+(c.codecs||c.mimeType)),d&&this.stats_.setCodecs(d)}if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&!this.isRemotePlayback()){if(this.manifest_&&(this.stats_.setManifestPeriodCount(this.manifest_.periodCount),this.stats_.setManifestGapCount(this.manifest_.gapCount),this.manifest_.presentationTimeline)){let u=this.manifest_.presentationTimeline.getMaxSegmentDuration();this.stats_.setMaxSegmentDuration(u)}let d=this.abrManager_.getBandwidthEstimate();this.stats_.setBandwidthEstimate(d)}return this.loadMode_==Q.LoadMode.SRC_EQUALS&&this.stats_.addBytesDownloaded(NaN),this.stats_.getBlob()}addTextTrackAsync(t,i,r,s,n,a,o=!1){let c=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding text tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r!="subtitles"&&r!="captions"&&p.alwaysWarn("Using a kind value different of `subtitles` or `captions` can cause unwanted issues."),s||(s=await this.getTextMimetype_(t));let d=[];if(this.adManager_&&(d=this.adManager_.getCuePoints()),this.loadMode_==Q.LoadMode.SRC_EQUALS){let S=j.getDevice();o&&S.getBrowserEngine()===ie.BrowserEngine.WEBKIT&&(r="forced");let b=await this.addSrcTrackElement_(t,i,r,s,a||"",d);if(b.track)return this.onTracksChanged_(),this.onTextChanged_(),se.html5TextTrackToTrack(b.track,this.textDisplayer_.isTextVisible());throw p.error("Cannot add this text when loaded with src="),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_SRC_EQUALS)}let u=R.ContentType,m=this.seekRange(),f=m.end-m.start;if(this.manifest_&&(f=this.manifest_.presentationTimeline.getDuration()),f==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_TEXT_TO_LIVE_STREAM);if(d.length){let S=await this.getTextData_(t),b=this.convertToWebVTT_(S,s,d),E=new Blob([b],{type:"text/vtt"});t=dr.createObjectURL(E),s="text/vtt"}let g=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,f,[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,label:a||null,type:u.TEXT,forced:!!o,external:!0}),_=N.getFullType(g.mimeType,g.codecs);if(!Ue.isTypeSupported(_))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return this.manifest_.textStreams.push(g),this.onTracksChanged_(),this.onTextChanged_(),se.textStreamToTrack(g)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(c),c}addThumbnailsTrack(t,i){let r=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding image tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);if(i||(i=await this.getTextMimetype_(t)),i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,t);let s=R.ContentType,n=this.seekRange(),a=n.end-n.start;if(this.manifest_&&(a=this.manifest_.presentationTimeline.getDuration()),a==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_THUMBNAILS_TO_LIVE_STREAM);let o=await this.getTextData_(t),c=Ue.findParser(i);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let d=c(),u={periodStart:0,segmentStart:0,segmentEnd:a,vttOffset:0,isMpegTs:!1},m=D.toUint8(o),f=d.parseMedia(m,u,t,[]),g=[];for(let S of f){let b=null,E=()=>(b==null&&(b=fe.resolveUris([t],[S.payload])),b||[]),C=new Se(S.startTime,S.endTime,E,0,null,null,0,0,1/0);if(S.payload.includes("#xywh")){let A=S.payload.split("#xywh=")[1].split(",");A.length===4&&C.setThumbnailSprite({height:parseInt(A[3],10),positionX:parseInt(A[0],10),positionY:parseInt(A[1],10),width:parseInt(A[2],10)})}g.push(C)}let _=i;g.length&&(_=await this.getTextMimetype_(g[0].getUris()[0]));let T=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(g),mimeType:_||"",kind:"",language:"und",type:s.IMAGE,tilesLayout:"1x1",external:!0});return this.loadMode_==Q.LoadMode.SRC_EQUALS?this.externalSrcEqualsThumbnailsStreams_.push(T):this.manifest_.imageStreams.push(T),this.onTracksChanged_(),se.imageStreamToTrack(T)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(r),r}addChaptersTrack(t,i,r){let s=(async()=>{if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE&&this.loadMode_!=Q.LoadMode.SRC_EQUALS)throw p.error("Must call load() and wait for it to resolve before adding chapters tracks."),new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.CONTENT_NOT_LOADED);r||(r=await this.getTextMimetype_(t));let n=R.ContentType,a=this.seekRange(),o=a.end-a.start;if(this.manifest_&&(o=this.manifest_.presentationTimeline.getDuration()),o==1/0)throw new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.CANNOT_ADD_EXTERNAL_CHAPTERS_TO_LIVE_STREAM);let c=Ue.findParser(r);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,r);let d=await this.getTextData_(t),u=c(),m={periodStart:0,segmentStart:0,segmentEnd:o,vttOffset:0,isMpegTs:!1},f=D.toUint8(d),g=u.parseMedia(f,m,t,[]),_=[];for(let b of g){let E=new Se(b.startTime,b.endTime,()=>[],0,null,null,0,0,1/0),C={title:b.payload,images:[]};E.setMetadata(C),_.push(E)}let S=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(_),mimeType:"text/plain",kind:"",language:i,originalLanguage:i,type:n.CHAPTER,external:!0});return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.manifest_.chapterStreams.push(S):this.externalSrcEqualsChapterStreams_.push(S),this.onTracksChanged_(),se.chapterStreamToTrack(S)})();return this.fullyLoaded_||this.registerExtraTrackPromise_(s),s}async getTextMimetype_(t){let i;try{v.assert(this.networkingEngine_,"Need networking engine."),i=await ct.getMimeType(t,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(r){}if(i)return i;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,t)}async addSrcTrackElement_(t,i,r,s,n,a){if(s!="text/vtt"||a.length){let c=await this.getTextData_(t),d=this.convertToWebVTT_(c,s,a),u=new Blob([d],{type:"text/vtt"});t=dr.createObjectURL(u),s="text/vtt"}let o=document.createElement("track");return o.src=this.cmcdManager_.appendTextTrackData(t),o.label=n,o.kind=r,o.srclang=i,this.video_.getAttribute("crossorigin")||this.video_.setAttribute("crossorigin","anonymous"),this.video_.appendChild(o),this.externalSrcEqualsTextTracks_.push(o),o}async getTextData_(t){v.assert(this.networkingEngine_,"Need networking engine.");let i=K.RequestType.SEGMENT,r=this.config_.streaming.retryParameters,s=K.makeRequest([t],r);return s.method="GET",this.cmcdManager_.applyTextData(s),(await this.networkingEngine_.request(i,s).promise).data}convertToWebVTT_(t,i,r){let s=Ue.findParser(i);if(s){let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:this.video_.duration,vttOffset:0,isMpegTs:!1},o=D.toUint8(t),c=n.parseMedia(o,a,null,[]);return Us.convert(c,r)}throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i)}setMaxHardwareResolution(t,i){this.maxHwRes_.width=t,this.maxHwRes_.height=i}retryStreaming(t=.1){return this.loadMode_==Q.LoadMode.MEDIA_SOURCE?this.streamingEngine_.retry(t):!1}getManifest(){return p.alwaysWarn("Shaka Player's internal Manifest structure is NOT covered by semantic versioning compatibility guarantees. It may change at any time! Please consider filing a feature request for whatever you use getManifest() for."),this.manifest_}getManifestParserFactory(){return this.parserFactory_}getFetchedPlaybackInfo(){var a,o,c;let t={video:null,audio:null,text:null};if(this.loadMode_!=Q.LoadMode.MEDIA_SOURCE)return t;let i=R.ContentType,r=this.streamingEngine_.getCurrentVariant(),s=this.streamingEngine_.getCurrentTextStream(),n=this.video_.currentTime;for(let d of[r.video,r.audio,s]){if(!d||!d.segmentIndex)continue;let u=d.segmentIndex.find(n),m=d.segmentIndex.get(u),f={codecs:(a=m==null?void 0:m.codecs)!=null?a:d.codecs,mimeType:(o=m==null?void 0:m.mimeType)!=null?o:d.mimeType,bandwidth:(c=m==null?void 0:m.bandwidth)!=null?c:d.bandwidth};d.type==i.VIDEO?(f.width=d.width,f.height=d.height,t.video=f):d.type==i.AUDIO?t.audio=f:d.type==i.TEXT&&(t.text=f)}return t}addVariantToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentVariant(t,i)}addTextStreamToSwitchHistory_(t,i){this.stats_.getSwitchHistory().updateCurrentText(t,i)}defaultConfig_(){let t=st.createDefault();return t.streaming.failureCallback=i=>{this.defaultStreamingFailureCallback_(i)},t.textDisplayFactory=i=>(()=>{if(!this.videoContainer_)return!1;let s=this.video_;return!(s.webkitDisplayingFullscreen||s.webkitPresentationMode&&s.webkitPresentationMode!="inline")})()?new Jr(i):"track"in document.createElement("track")?new mr(i):(p.warning("Text tracks are not supported by the browser, disabling."),new yn),t}setVideoContainer(t){this.videoContainer_=t}getVideoContainer(){return this.videoContainer_}getTextDisplayer(){return this.textDisplayer_}defaultStreamingFailureCallback_(t){if(!this.isDynamic())return;let i=null;t.code==h.Code.BAD_HTTP_STATUS||t.code==h.Code.HTTP_ERROR?(i=1,this.config_.streaming.lowLatencyMode&&(i=.1)):t.code==h.Code.TIMEOUT&&(i=.1),i!=null&&(t.severity=h.Severity.RECOVERABLE,p.warning("Live streaming error. Retrying automatically..."),this.retryStreaming(i))}makeTextStreamsForClosedCaptions_(t){let i=R.ContentType,r=R.TextStreamKind,s=N.CEA608_CLOSED_CAPTION_MIMETYPE,n=N.CEA708_CLOSED_CAPTION_MIMETYPE,a=new Set;for(let o of t.textStreams)(o.mimeType==s||o.mimeType==n)&&a.add(o.originalId);for(let o of t.variants){let c=o.video;if(c&&c.closedCaptions){for(let d of c.closedCaptions.keys())if(!a.has(d)){let u=d.startsWith("CC")?s:n,m=new Mi,f=c.closedCaptions.get(d),g=se.createStream({id:this.nextExternalStreamId_++,originalId:d,segmentIndex:m,mimeType:u,kind:r.CLOSED_CAPTION,language:f,originalLanguage:f,type:i.TEXT,roles:c.roles});t.textStreams.push(g),a.add(d)}}}}async adjustStartTime_(t,i){let r=t.audio,s=t.video,n=async(c,d)=>{if(!c)return null;c.segmentIndex||await c.createSegmentIndex();let u=c.segmentIndex.getIteratorForTime(d),m=u?u.next().value:null;if(!m)return null;let f=m.startTime;return v.assert(f<=d,"Segment should start before target time!"),f},a=await n(r,i),o=await n(s,i);return o!=null&&a!=null?Math.max(o,a):o!=null?o:a!=null?a:i}updateBufferState_(){let t=this.isBuffering();if(p.v2("Player changing buffering state to",t),this.stats_&&this.bufferObserver_&&this.playhead_){this.config_.streaming.rebufferingGoal==0?this.playRateController_.setBuffering(!1):this.playRateController_.setBuffering(t),this.cmcdManager_&&this.cmcdManager_.setBuffering(t),this.updateStateHistory_();let n=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,a=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(n&&t&&this.rebufferingCount_<a){let o=this.config_.streaming.liveSync.dynamicTargetLatency.maxLatency,c=this.config_.streaming.liveSync.targetLatencyTolerance,d=this.config_.streaming.liveSync.dynamicTargetLatency.rebufferIncrement;this.currentTargetLatency_&&(this.currentTargetLatency_=Math.min(this.currentTargetLatency_+ ++this.rebufferingCount_*d,o-c))}}let r=U.EventName.Buffering,s=new Map().set("buffering",t);this.dispatchEvent(Q.makeEvent_(r,s))}onRateChange_(){let t=this.video_.playbackRate;if(t==0){let r=this.getPlaybackRate();if(r!==0&&r!==1){let s=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(s)}return}this.playRateController_&&(this.playRateController_.set(t),this.loadMode_==Q.LoadMode.MEDIA_SOURCE&&this.abrManager_.playbackRateChanged(t),this.setupTrickPlayEventListeners_(t));let i=Q.makeEvent_(U.EventName.RateChange);this.dispatchEvent(i)}setupTrickPlayEventListeners_(t){this.trickPlayEventManager_.removeAll(),this.trickPlayEventManager_.listen(this.video_,"timeupdate",()=>{let i=this.video_.currentTime,r=this.seekRange(),s=this.isDynamic(),n=s?this.config_.streaming.safeSeekOffset:0;t>0?s&&t>1&&Math.floor(i)>=Math.floor(r.end)&&this.cancelTrickPlay():Math.floor(i)<=Math.floor(r.start+n)&&this.cancelTrickPlay()})}updateStateHistory_(){if(!this.stats_||!this.bufferObserver_)return;let t=Mr.State,i=this.stats_.getStateHistory(),r="playing";if(this.bufferObserver_.getState()==t.STARVING?r="buffering":this.isEnded()?r="ended":this.video_.paused&&(r="paused"),i.update(r)){let n=U.EventName.StateChanged,a=new Map().set("newstate",r);this.dispatchEvent(Q.makeEvent_(n,a))}}onTimeUpdate_(){let t=this.video_.playbackRate,i=this.isDynamic();if(this.config_.streaming.vodDynamicPlaybackRate&&!i){let C=this.config_.streaming.vodDynamicPlaybackRateLowBufferRate,A=this.getBufferFullness(),w=this.config_.streaming.vodDynamicPlaybackRateBufferRatio;A<=w?t!=C&&(p.debug("Buffer fullness ratio ("+A+") is less than the vodDynamicPlaybackRateBufferRatio ("+w+"). Updating playbackRate to "+C),this.trickPlay(C,!1)):A==1&&t!==this.playRateController_.getDefaultRate()&&(p.debug("Buffer is full. Cancel trick play."),this.cancelTrickPlay())}if(!i)return;let r=this.seekRange();if(!Number.isFinite(r.end)||this.video_.currentTime<r.start||this.video_.paused)return;let n,a,o,c,d,u=this.config_.streaming.liveSync.targetLatencyTolerance,m=this.config_.streaming.liveSync.dynamicTargetLatency.enabled,f=this.config_.streaming.liveSync.dynamicTargetLatency.stabilityThreshold;this.config_.streaming.liveSync&&this.config_.streaming.liveSync.enabled?(n=this.config_.streaming.liveSync.targetLatency,a=n+u,c=Math.max(0,n-u),o=this.config_.streaming.liveSync.maxPlaybackRate,d=this.config_.streaming.liveSync.minPlaybackRate):this.manifest_&&this.manifest_.serviceDescription&&(n=this.manifest_.serviceDescription.targetLatency,this.manifest_.serviceDescription.targetLatency!=null?a=this.manifest_.serviceDescription.targetLatency+u:this.manifest_.serviceDescription.maxLatency!=null&&(a=this.manifest_.serviceDescription.maxLatency),this.manifest_.serviceDescription.targetLatency!=null?c=Math.max(0,this.manifest_.serviceDescription.targetLatency-u):this.manifest_.serviceDescription.minLatency!=null&&(c=this.manifest_.serviceDescription.minLatency),o=this.manifest_.serviceDescription.maxPlaybackRate||this.config_.streaming.liveSync.maxPlaybackRate,d=this.manifest_.serviceDescription.minPlaybackRate||this.config_.streaming.liveSync.minPlaybackRate),!this.currentTargetLatency_&&typeof n=="number"&&(this.currentTargetLatency_=n);let g=this.config_.streaming.liveSync.dynamicTargetLatency.maxAttempts;if(m&&this.targetLatencyReached_&&this.currentTargetLatency_!==null&&typeof n=="number"&&this.rebufferingCount_<g&&Date.now()-this.targetLatencyReached_>f*1e3){let C=this.config_.streaming.liveSync.dynamicTargetLatency.minLatency,A=(n-C)/2;this.currentTargetLatency_=Math.max(this.currentTargetLatency_-A,C+u),this.targetLatencyReached_=Date.now()}m&&this.currentTargetLatency_!==null&&(a=this.currentTargetLatency_+u,c=this.currentTargetLatency_-u);let _=r.end-this.video_.currentTime,T=0;if(this.loadMode_==Q.LoadMode.SRC_EQUALS){let C=this.video_.buffered;if(C.length>0){let A=C.end(C.length-1);T=Math.max(o,A-r.end)}}let S=this.config_.streaming.liveSync.panicMode,b=this.config_.streaming.liveSync.panicThreshold*1e3,E=Date.now()-this.bufferObserver_.getLastRebufferTime();S&&!d&&(d=this.config_.streaming.liveSync.minPlaybackRate),S&&d&&E<=b?t!=d&&(p.debug("Time since last rebuffer ("+E+"s) is less than the live sync panicThreshold ("+b+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)):a!=null&&o&&_-T>a?(t!=o&&(p.debug("Latency ("+_+"s) is greater than live sync maxLatency ("+a+"s). Updating playbackRate to "+o),this.trickPlay(o,!1)),this.targetLatencyReached_=null):c!=null&&d&&_-T<c?(t!=d&&(p.debug("Latency ("+_+"s) is smaller than live sync minLatency ("+c+"s). Updating playbackRate to "+d),this.trickPlay(d,!1)),this.targetLatencyReached_=null):t!==this.playRateController_.getDefaultRate()&&(this.cancelTrickPlay(),this.targetLatencyReached_=Date.now())}isQuartile_(t,i){return(jt.isFloatEqual(t,i,.01)||i>t)&&this.completionPercent_<t?(this.completionPercent_=t,!0):!1}checkEnded_(){this.config_&&this.config_.playRangeEnd!=1/0&&this.isEnded()&&this.video_.pause()}onVideoProgress_(){if(!this.video_)return;let t=this.seekRange(),i=t.end-t.start,r=i>0?this.video_.currentTime/i:0;if(isNaN(r))return;let s=r*100,n;this.isQuartile_(0,s)?n=Q.makeEvent_(U.EventName.Started):this.isQuartile_(25,s)?n=Q.makeEvent_(U.EventName.FirstQuartile):this.isQuartile_(50,s)?n=Q.makeEvent_(U.EventName.Midpoint):this.isQuartile_(75,s)?n=Q.makeEvent_(U.EventName.ThirdQuartile):this.isQuartile_(100,s)||s>100?(n=Q.makeEvent_(U.EventName.Complete),this.checkEnded_()):this.checkEnded_(),n&&this.dispatchEvent(n)}onSeek_(){this.playheadObservers_&&this.playheadObservers_.notifyOfSeek(!this.playhead_.getIsJumpingGap()),this.streamingEngine_&&this.streamingEngine_.seeked(),this.bufferObserver_&&this.pollBufferState_(Kt.SEEKING)}updateAbrManagerVariants_(){try{v.assert(this.manifest_,"Manifest should exist by now!"),this.manifestFilterer_.checkRestrictedVariants(this.manifest_)}catch(n){return this.onError_(n),!1}let t=this.manifest_.isLowLatency&&this.config_.streaming.lowLatencyMode,i=se.getPlayableVariants(this.manifest_.variants),r=this.currentAdaptationSetCriteria_.create(i),s=this.abrManager_.setVariants(Array.from(r.values()),t);return typeof s=="boolean"?s:!0}chooseVariant_(t=!1){if(this.updateAbrManagerVariants_()){if(this.config_.abr.enabled)return this.abrManager_.chooseVariant(t);{let r=this.currentAdaptationSetCriteria_.getLastAdaptationSet();if(r){let s=Array.from(r.values());if(s.length){let n=this.streamingEngine_.getCurrentVariant();if(n&&n.video){let a=s.find(o=>o.video==n.video);if(a)return a}}}return this.abrManager_.chooseVariant(t)}}else return null}checkVariants_(){v.assert(this.manifest_,"Should have manifest!");let t=Date.now()/1e3,i=!1,r=n=>{let a="";return n.video&&(a+="video:"+n.video.id),n.audio&&(a+=a?"&":"",a+="audio:"+n.audio.id),a},s=!0;for(let n of this.manifest_.variants)n.disabledUntilTime>0&&n.disabledUntilTime<=t&&(n.disabledUntilTime=0,i=!0,p.v2("Re-enabled variant with "+r(n))),n.disabledUntilTime>0&&(s=!1);s&&this.checkVariantsTimer_.stop(),i&&this.chooseVariantAndSwitch_(!1,void 0,!1,!1)}chooseTextStream_(t){let i=null,r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,this.currentTextLanguage_,this.currentTextRole_,this.currentTextForced_);return r.length&&(i=r[0]),!i&&t.audio&&this.config_.accessibility.handleForcedSubtitlesAutomatically&&(r=se.filterStreamsByLanguageAndRole(this.manifest_.textStreams,t.audio.language,"",!0),r.length&&(i=r[0])),i}chooseVariantAndSwitch_(t=!0,i=0,r=!1,s=!0){v.assert(this.config_,"Must not be destroyed");let n=this.chooseVariant_();n&&this.switchVariant_(n,s,t,i,r)}switchVariant_(t,i,r,s,n=!1){let a=this.streamingEngine_.getCurrentVariant();if(t==a){p.debug("Variant already selected."),r&&this.streamingEngine_.switchVariant(t,r,s,!0);return}this.addVariantToSwitchHistory_(t,i),this.streamingEngine_.switchVariant(t,r,s,n,i);let o=null;a&&(o=se.variantToTrack(a));let c=se.variantToTrack(t);c.active=!0,this.lcevcDec_&&this.lcevcDec_.updateVariant(t,this.getManifestType()),i?this.onAdaptation_(o,c):this.onVariantChanged_(o,c),this.checkAudioTracksChanged_(o,c)}switchHtml5Track_(t){v.assert(this.video_&&this.video_.audioTracks,"Video and video.audioTracks should not be null!");let r=Array.from(this.video_.audioTracks).find(o=>o.enabled);if(t.enabled=!0,!r)return;t.id!==r.id&&(r.enabled=!1);let s=this.getActiveHtml5VideoTrack_(),n=se.html5TrackToShakaTrack(r,s),a=se.html5TrackToShakaTrack(t,s);this.onVariantChanged_(n,a),this.checkAudioTracksChanged_(n,a)}getActiveHtml5VideoTrack_(){return this.video_&&this.video_.videoTracks?Array.from(this.video_.videoTracks).find(i=>i.selected):null}setInitialTextState_(t){t?(this.isTextVisible_=!0,this.textDisplayer_.setTextVisibility(!0)):(this.isTextVisible_=!1,this.textDisplayer_.setTextVisibility(!1))}onManifestUpdate_(){this.parser_&&this.parser_.update&&this.parser_.update()}onSegmentAppended_(t,i,r,s,n,a){let o=R.ContentType;if(r!=o.TEXT){if(this.playhead_){this.playhead_.notifyOfBufferingChange();let d=this.mediaSourceEngine_.bufferStart(r);!this.isDynamic()&&this.video_.paused&&!this.video_.seeking&&!this.mediaSourceEngine_.isReloadingMediaSource()&&d!=null&&d>0&&this.playhead_.getTime()<d&&!jt.isFloatEqual(this.playhead_.getTime(),d,.001)&&this.playhead_.setStartTime(d)}this.pollBufferState_()}let c=new Map().set("start",t).set("end",i).set("contentType",r).set("isMuxed",s).set("isDependency",n).set("mediaTimestamp",a);this.dispatchEvent(Q.makeEvent_(U.EventName.SegmentAppended,c))}switch_(t,i=!1,r=0){p.debug("switch_"),v.assert(this.config_.abr.enabled,"AbrManager should not call switch while disabled!"),this.manifest_&&this.streamingEngine_&&t!=this.streamingEngine_.getCurrentVariant()&&this.switchVariant_(t,!0,i,r)}onAdaptation_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.Adaptation,r);this.delayDispatchEvent_(s)}onTracksChanged_(){let t=Q.makeEvent_(U.EventName.TracksChanged);this.delayDispatchEvent_(t),this.onAudioTracksChanged_()}onVariantChanged_(t,i){let r=new Map().set("oldTrack",t).set("newTrack",i),s=Q.makeEvent_(U.EventName.VariantChanged,r);this.delayDispatchEvent_(s)}checkAudioTracksChanged_(t,i){let r=!1;(!t||t.audioId!=i.audioId||t.audioGroupId!=i.audioGroupId)&&(r=!0),r&&this.onAudioTracksChanged_()}onAudioTracksChanged_(){let t=Q.makeEvent_(U.EventName.AudioTracksChanged);this.delayDispatchEvent_(t)}onTextChanged_(){let t=Q.makeEvent_(U.EventName.TextChanged);this.delayDispatchEvent_(t)}onAbrStatusChanged_(){this.config_.abr.enabled||this.restoreDisabledVariants_();let t=new Map().set("newStatus",this.config_.abr.enabled);this.delayDispatchEvent_(Q.makeEvent_(U.EventName.AbrStatusChanged,t))}setTextDisplayerLanguage_(){let t=this.getTextTracks().find(i=>i.active);t&&this.textDisplayer_&&this.textDisplayer_.setTextLanguage(t.language)}restoreDisabledVariants_(t=!0){if(this.loadMode_==Q.LoadMode.MEDIA_SOURCE){v.assert(this.manifest_,"Should have manifest!"),p.v2("Restoring all disabled streams..."),this.checkVariantsTimer_.stop();for(let i of this.manifest_.variants)isFinite(i.disabledUntilTime)&&(i.disabledUntilTime=0);t&&this.updateAbrManagerVariants_()}}disableStream(t,i){if(!this.config_.abr.enabled||this.loadMode_===Q.LoadMode.DESTROYED||!navigator.onLine||i==0||!this.manifest_)return!1;if(this.manifest_.variants.some(s=>{let n=s[t.type];return n&&n.id!==t.id&&!s.disabledUntilTime?se.isAudio(t)?t.language===n.language:!0:!1})){let s=!1,n=!1;for(let c of this.manifest_.variants){let d=c[t.type];d&&(d.id===t.id?(c.disabledUntilTime=Date.now()/1e3+i,s=!0,p.v2("Disabled stream "+t.type+":"+t.id+" for "+i+" seconds...")):d.trickModeVideo&&d.trickModeVideo.id==t.id&&(n=!0))}if(!s&&n)return!1;v.assert(s,"Must have disabled stream"),this.checkVariantsTimer_.tickEvery(1);let{video:a}=this.getBufferedInfo(),o=a.reduce((c,{start:d,end:u})=>c+u-d,0);return this.chooseVariantAndSwitch_(!1,o,!0,!1),!0}return p.warning("No alternate stream found for active "+t.type+" stream. Will ignore request to disable stream..."),!1}async onError_(t){if(v.assert(t instanceof h,"Wrong error type!"),this.loadMode_==Q.LoadMode.DESTROYED)return;if(t.severity===h.Severity.RECOVERABLE&&this.stats_.addNonFatalError(),this.manifest_&&this.streamingEngine_&&!t.handled&&(t.code==h.Code.VIDEO_ERROR||t.code==h.Code.MEDIA_SOURCE_OPERATION_FAILED||t.code==h.Code.MEDIA_SOURCE_OPERATION_THREW||t.code==h.Code.STREAMING_NOT_ALLOWED||t.code==h.Code.TRANSMUXING_FAILED)&&(se.getPlayableVariants(this.manifest_.variants).length>1||this.fullyLoaded_)){if(j.getDevice().getBrowserEngine()===ie.BrowserEngine.WEBKIT&&t.code==h.Code.VIDEO_ERROR)return;try{if(await this.streamingEngine_.resetMediaSource()){let o=Q.makeEvent_(U.EventName.MediaSourceRecovered);this.dispatchEvent(o);return}}catch(a){}}t.severity===h.Severity.CRITICAL&&this.restoreDisabledVariants_(!1);let i=U.EventName.Error,r=Q.makeEvent_(i,new Map().set("detail",t));this.dispatchEvent(r),r.defaultPrevented&&(t.handled=!0)}addFont(t,i){return Ge.addFont(t,i)}onRegionEvent_(t,i,r=this){let s={schemeIdUri:i.schemeIdUri,value:i.value,startTime:i.startTime,endTime:i.endTime,id:i.id,timescale:i.timescale,eventNode:i.eventNode,urlParams:i.urlParams,values:i.values},n=new Map().set("detail",s);r.dispatchEvent(Q.makeEvent_(t,n))}sendEventStreamCallback_(t){if(t.schemeIdUri!=="urn:mpeg:dash:event:callback:2015"||!t.eventNode)return;let i=I.getTextContents(t.eventNode);if(!i)return;let r=i.trim();if(!r)return;r=fe.applyUrlParams(r,t.urlParams);let s=K.RequestType.EVENT_CALLBACK,n=K.makeRequest([r],K.defaultRetryParameters());this.networkingEngine_.request(s,n).promise.catch(()=>{})}onMediaQualityChange_(t,i,r=!1){let s={bandwidth:t.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate,height:t.height,mimeType:t.mimeType,channelsCount:t.channelsCount,pixelAspectRatio:t.pixelAspectRatio,width:t.width,label:t.label,roles:t.roles,language:t.language},n=new Map().set("mediaQuality",s).set("position",i);this.dispatchEvent(Q.makeEvent_(r?U.EventName.AudioTrackChanged:U.EventName.MediaQualityChanged,n))}videoErrorToShakaError_(t=!0){if(v.assert(this.video_.error,"Video error expected, but missing!"),!this.video_.error)return t?new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR):null;let{code:i,extended:r,message:s}=h.getMediaElementErrorDetails(this.video_.error);return!t&&i===MediaError.MEDIA_ERR_ABORTED?null:new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.VIDEO_ERROR,i,r,s)}onVideoError_(t){let i=this.videoErrorToShakaError_(!1);i&&this.onError_(i)}onKeyStatus_(t){if(!this.streamingEngine_)return;let i=Q.makeEvent_(U.EventName.KeyStatusChanged);this.dispatchEvent(i);let r=Object.keys(t);r.length==0&&p.warning("Got a key status event without any key statuses, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks."),r.length==1&&r[0]==""&&(r=["00"],t={"00":t[""]});let s=r.length==1&&r[0]=="00";s&&p.warning("Got a synthetic key status event, so we don't know the real key statuses. If we don't have all the keys, you'll need to set restrictions so we don't select those tracks.");let n=Rr.restrictedStatuses,a=!1;if(v.assert(this.drmEngine_,"drmEngine should be non-null here."),r.length){let o=this.keySystem(),c=Zt.asMap(this.config_.drm.clearKeys),d=(u,m)=>{u.allowedByKeySystem=!0;for(let f of m){let g=t[s?"00":f];(g||this.drmEngine_.hasManifestInitData())&&(u.allowedByKeySystem=u.allowedByKeySystem&&!!g&&!n.includes(g))}};for(let u of this.manifest_.variants){let m=se.getVariantStreams(u);for(let f of m){let g=u.allowedByKeySystem;if(f.keyIds.size)if(f.drmInfos.length&&!c.size&&this.manifest_.type==me.HLS)for(let _ of f.drmInfos)_.keySystem==o&&(_.keyIds.size?d(u,_.keyIds):d(u,f.keyIds));else d(u,f.keyIds);g!=u.allowedByKeySystem&&(a=!0)}}}if(a){this.onTracksChanged_();let o=this.streamingEngine_.getCurrentVariant();o&&!o.allowedByKeySystem?(p.debug("Choosing new streams after key status changed"),this.chooseVariantAndSwitch_()):this.updateAbrManagerVariants_()}}static applyPlayRange_(t,i,r){i>0&&(t.isDynamic()?p.warning("|playRangeStart| has been configured for live content. Ignoring the setting."):t.setUserSeekStart(i));let s=t.getDuration();r<s&&(t.isDynamic()?p.warning("|playRangeEnd| has been configured for live content. Ignoring the setting."):t.setDuration(r))}async delayDispatchEvent_(t){await Promise.resolve(),this.loadMode_!=Q.LoadMode.DESTROYED&&this.dispatchEvent(t)}createAbortLoadError_(){return new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.LOAD_INTERRUPTED)}isRemotePlayback(){if(!this.video_)return!1;let i=j.getDevice().getRemote(this.video_);return i?i.state!="disconnected":!1}isEnded(){return!this.video_||this.video_.ended?!0:this.fullyLoaded_&&!this.isDynamic()&&this.video_.currentTime>=this.seekRange().end}static convertLegacyPreferences_(t){let i=(d,u)=>{p.alwaysWarn(d,"has been deprecated. Please use",u,"instead.")},r={preferredAudioLanguage:"language",preferredAudioRole:"role",preferredAudioLabel:"label",preferredAudioChannelCount:"channelCount",preferSpatialAudio:"spatialAudio"};if(Object.keys(r).some(d=>d in t)){let d={language:"",role:"",label:"",channelCount:0,codec:""};for(let[u,m]of Object.entries(r))u in t&&(i(u,"preferredAudio"),d[m]=t[u],delete t[u]);t.preferredAudio||(t.preferredAudio=[d])}if("preferredAudioCodecs"in t){i("preferredAudioCodecs","preferredAudio");let d=t.preferredAudioCodecs;Array.isArray(d)&&d.length&&(t.preferredAudio||(t.preferredAudio=d.map(u=>({language:"",role:"",label:"",channelCount:0,codec:u})))),delete t.preferredAudioCodecs}let n={preferredTextLanguage:"language",preferredTextRole:"role",preferForcedSubs:"forced"};if(Object.keys(n).some(d=>d in t)){let d={language:"",role:"",format:""};for(let[u,m]of Object.entries(n))u in t&&(i(u,"preferredText"),d[m]=t[u],delete t[u]);t.preferredText||(t.preferredText=[d])}if("preferredTextFormats"in t){i("preferredTextFormats","preferredText");let d=t.preferredTextFormats;Array.isArray(d)&&d.length&&(t.preferredText||(t.preferredText=d.map(u=>({language:"",role:"",format:u})))),delete t.preferredTextFormats}let o={preferredVideoLabel:"label",preferredVideoRole:"role",preferredVideoHdrLevel:"hdrLevel",preferredVideoLayout:"layout"};if(Object.keys(o).some(d=>d in t)){let d={label:"",role:"",language:"",codec:"",hdrLevel:"",layout:""};for(let[u,m]of Object.entries(o))u in t&&(i(u,"preferredVideo"),d[m]=t[u],delete t[u]);t.preferredVideo||(t.preferredVideo=[d])}if("preferredVideoCodecs"in t){i("preferredVideoCodecs","preferredVideo");let d=t.preferredVideoCodecs;Array.isArray(d)&&d.length&&(t.preferredVideo||(t.preferredVideo=d.map(u=>({label:"",role:"",language:"",codec:u,hdrLevel:"",layout:""})))),delete t.preferredVideoCodecs}}registerExtraTrackPromise_(t){this.pendingExtraTrackPromises_.add(t),t.finally(()=>this.pendingExtraTrackPromises_.delete(t))}async waitForPendingExtraTrackPromises_(){this.pendingExtraTrackPromises_.size&&await Promise.all([...this.pendingExtraTrackPromises_])}};l(Q,"LoadMode",{DESTROYED:0,NOT_LOADED:1,MEDIA_SOURCE:2,SRC_EQUALS:3}),l(Q,"TYPICAL_BUFFERING_THRESHOLD_",.5),l(Q,"supportPlugins_",new Map),l(Q,"adManagerFactory_",null),l(Q,"queueManagerFactory_",null),l(Q,"TextTrackLabel","Shaka Player TextTrack");var dt=Q;dt.version="v5.2.4-uncompiled";Cr.init(dt.version);/*! @license
|
|
491
|
+
* Shaka Player
|
|
492
|
+
* Copyright 2016 Google LLC
|
|
493
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
494
|
+
*/var Ls=class{constructor(){l(this,"loadTimes_");l(this,"started_");l(this,"overlayAds_");l(this,"playedCompletely_");l(this,"skipped_");l(this,"errors_");this.loadTimes_=[],this.started_=0,this.overlayAds_=0,this.playedCompletely_=0,this.skipped_=0,this.errors_=0}addLoadTime(e){this.loadTimes_.push(e)}incrementStarted(){this.started_++}incrementOverlayAds(){this.overlayAds_++}incrementPlayedCompletely(){this.playedCompletely_++}incrementSkipped(){this.skipped_++}incrementErrors(){this.errors_++}getAverageLoadTime_(){return this.loadTimes_.length?this.loadTimes_.reduce((t,i)=>t+i,0)/this.loadTimes_.length:0}getBlob(){return{loadTimes:this.loadTimes_,averageLoadTime:this.getAverageLoadTime_(),started:this.started_,overlayAds:this.overlayAds_,playedCompletely:this.playedCompletely_,skipped:this.skipped_,errors:this.errors_}}};/*! @license
|
|
495
|
+
* Shaka Player
|
|
496
|
+
* Copyright 2016 Google LLC
|
|
497
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
498
|
+
*/var Wt=class{constructor(e=null){l(this,"video");this.video=e}needsSkipUI(){return!0}isClientRendering(){return!0}hasCustomClick(){return!1}isUsingAnotherMediaElement(){return!1}getDuration(){return-1}getMinSuggestedDuration(){return this.getDuration()}getRemainingTime(){return-1}isPaused(){return this.video?this.video.paused:!1}isSkippable(){return!1}getTimeUntilSkippable(){return 0}canSkipNow(){return!1}skip(){}pause(){this.video&&this.video.pause()}play(){this.video&&this.video.play()}getVolume(){return this.video?this.video.volume:1}setVolume(e){this.video&&(this.video.volume=e)}isMuted(){return this.video?this.video.muted:!1}isLinear(){return!0}resize(e,t){}setMuted(e){this.video&&(this.video.muted=e)}getSequenceLength(){return 1}getPositionInSequence(){return 1}getTitle(){return""}getDescription(){return""}getVastMediaBitrate(){return 0}getVastMediaHeight(){return 0}getVastMediaWidth(){return 0}getVastAdId(){return""}getAdId(){return""}getCreativeAdId(){return""}getAdvertiserName(){return""}getMediaUrl(){return null}getTimeOffset(){return 0}getPodIndex(){return 0}release(){this.video=null}};/*! @license
|
|
499
|
+
* Shaka Player
|
|
500
|
+
* Copyright 2016 Google LLC
|
|
501
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
502
|
+
*/var vn=class extends Wt{constructor(t,i,r){super(r);l(this,"ad_");l(this,"manager_");l(this,"isPaused_");l(this,"volume_");l(this,"eventManager_");this.ad_=t,this.manager_=i,this.isPaused_=!1,this.volume_=this.manager_.getVolume(),this.eventManager_=new ue,this.eventManager_.listen(this.manager_,google.ima.AdEvent.Type.PAUSED,()=>{this.isPaused_=!0}),this.eventManager_.listen(this.manager_,google.ima.AdEvent.Type.RESUMED,()=>{this.isPaused_=!1})}needsSkipUI(){return!1}hasCustomClick(){return!0}isUsingAnotherMediaElement(){return!0}getDuration(){return this.ad_.getDuration()}getMinSuggestedDuration(){return this.ad_.getMinSuggestedDuration()}getRemainingTime(){return this.manager_.getRemainingTime()}isPaused(){return this.isPaused_}isSkippable(){return this.ad_.getSkipTimeOffset()>=0}getTimeUntilSkippable(){let t=this.ad_.getSkipTimeOffset(),i=this.getRemainingTime()-t;return Math.max(i,0)}canSkipNow(){return this.manager_.getAdSkippableState()}skip(){return this.manager_.skip()}setPaused(t){this.isPaused_=t}pause(){return this.manager_.pause()}play(){return this.manager_.resume()}getVolume(){return this.manager_.getVolume()}setVolume(t){return this.video.volume=t,this.manager_.setVolume(t)}isMuted(){return this.manager_.getVolume()==0}isLinear(){return this.ad_.isLinear()}resize(t,i){this.manager_.resize(t,i)}setMuted(t){this.video.muted=t,t?(this.volume_=this.getVolume(),this.manager_.setVolume(0)):this.manager_.setVolume(this.volume_)}setInitialMuted(t){this.volume_=t,this.manager_.setVolume(0)}getSequenceLength(){let t=this.ad_.getAdPodInfo();return t==null?1:t.getTotalAds()}getPositionInSequence(){let t=this.ad_.getAdPodInfo();return t==null?1:t.getAdPosition()}getTitle(){return this.ad_.getTitle()}getDescription(){return this.ad_.getDescription()}getVastMediaBitrate(){return this.ad_.getVastMediaBitrate()}getVastMediaHeight(){return this.ad_.getVastMediaHeight()}getVastMediaWidth(){return this.ad_.getVastMediaWidth()}getAdId(){return this.ad_.getAdId()}getCreativeAdId(){return this.ad_.getCreativeAdId()}getAdvertiserName(){return this.ad_.getAdvertiserName()}getMediaUrl(){return this.ad_.getMediaUrl()}getTimeOffset(){let t=this.ad_.getAdPodInfo();return t==null?0:t.getTimeOffset()}getPodIndex(){let t=this.ad_.getAdPodInfo();return t==null?0:t.getPodIndex()}release(){this.ad_=null,this.manager_=null}};/*! @license
|
|
503
|
+
* Shaka Player
|
|
504
|
+
* Copyright 2016 Google LLC
|
|
505
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
506
|
+
*/var Te=class Te{static createTracking(){return{impression:null,clickTracking:null,start:null,firstQuartile:null,midpoint:null,thirdQuartile:null,complete:null,skip:null,error:null,resume:null,pause:null,mute:null,unmute:null}}static createTrackingFromInline(e){let t=Te.createTracking();for(let i of I.findChildren(e,"Error")){let r=I.getTextContents(i);r&&(t.error||(t.error=[]),t.error.push(r))}for(let i of I.findChildren(e,"Impression")){let r=I.getTextContents(i);r&&(t.impression||(t.impression=[]),t.impression.push(r))}return t}static createTrackingFromEvents(e){let t=Te.createTracking();for(let i of e)i.type in t&&(t[i.type]?t[i.type].push(...i.urls):t[i.type]=i.urls);return t}static processTrackingEvents(e,t){for(let i of e){let r=i.attributes.event;if(r in t){let s=I.getTextContents(i);s&&(t[r]||(t[r]=[]),t[r].push(s))}}}static fireTrackingEvents(e,t,i){if(!e)return;let r;switch(t){case Te.AD_IMPRESSION:r=e.impression;break;case Te.AD_CLICKED:r=e.clickTracking;break;case Te.AD_STARTED:r=e.start;break;case Te.AD_FIRST_QUARTILE:r=e.firstQuartile;break;case Te.AD_MIDPOINT:r=e.midpoint;break;case Te.AD_THIRD_QUARTILE:r=e.thirdQuartile;break;case Te.AD_COMPLETE:r=e.complete;break;case Te.AD_SKIPPED:r=e.skip;break;case Te.AD_ERROR:r=e.error;break;case Te.AD_RESUMED:r=e.resume;break;case Te.AD_PAUSED:r=e.pause;break;case Te.AD_MUTED:r=e.mute;break;case Te.AD_VOLUME_CHANGED:r=e.unmute;break}if(!r)return;let s={type:K.AdvancedRequestType.TRACKING_EVENT},n=K.RequestType.ADS;for(let a of r){let o=K.makeRequest([a],K.defaultRetryParameters());o.method="POST",i.request(n,o,s)}}};l(Te,"ADS_LOADED","ads-loaded"),l(Te,"AD_STARTED","ad-started"),l(Te,"AD_PLAYING","ad-playing"),l(Te,"AD_FIRST_QUARTILE","ad-first-quartile"),l(Te,"AD_MIDPOINT","ad-midpoint"),l(Te,"AD_THIRD_QUARTILE","ad-third-quartile"),l(Te,"AD_COMPLETE","ad-complete"),l(Te,"AD_STOPPED","ad-stopped"),l(Te,"AD_SKIPPED","ad-skipped"),l(Te,"AD_VOLUME_CHANGED","ad-volume-changed"),l(Te,"AD_MUTED","ad-muted"),l(Te,"AD_PAUSED","ad-paused"),l(Te,"AD_RESUMED","ad-resumed"),l(Te,"AD_SKIP_STATE_CHANGED","ad-skip-state-changed"),l(Te,"CUEPOINTS_CHANGED","ad-cue-points-changed"),l(Te,"IMA_AD_MANAGER_LOADED","ima-ad-manager-loaded"),l(Te,"IMA_STREAM_MANAGER_LOADED","ima-stream-manager-loaded"),l(Te,"AD_CLICKED","ad-clicked"),l(Te,"AD_PROGRESS","ad-progress"),l(Te,"AD_BUFFERING","ad-buffering"),l(Te,"AD_IMPRESSION","ad-impression"),l(Te,"AD_DURATION_CHANGED","ad-duration-changed"),l(Te,"AD_CLOSED","ad-closed"),l(Te,"AD_LOADED","ad-loaded"),l(Te,"ALL_ADS_COMPLETED","all-ads-completed"),l(Te,"AD_LINEAR_CHANGED","ad-linear-changed"),l(Te,"AD_METADATA","ad-metadata"),l(Te,"AD_RECOVERABLE_ERROR","ad-recoverable-error"),l(Te,"AD_ERROR","ad-error"),l(Te,"AD_BREAK_READY","ad-break-ready"),l(Te,"AD_BREAK_STARTED","ad-break-started"),l(Te,"AD_BREAK_ENDED","ad-break-ended"),l(Te,"AD_INTERSTITIAL_PRELOAD","ad-interstitial-preload"),l(Te,"AD_INTERSTITIAL_PRELOADED","ad-interstitial-preloaded"),l(Te,"AD_INTERACTION","ad-interaction"),l(Te,"AD_CONTENT_PAUSE_REQUESTED","ad-content-pause-requested"),l(Te,"AD_CONTENT_RESUME_REQUESTED","ad-content-resume-requested"),l(Te,"AD_CONTENT_ATTACH_REQUESTED","ad-content-attach-requested");var G=Te;/*! @license
|
|
507
|
+
* Shaka Player
|
|
508
|
+
* Copyright 2016 Google LLC
|
|
509
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
510
|
+
*/var Sn=class{constructor(e,t,i,r,s){l(this,"adContainer_");l(this,"video_");l(this,"videoPlayed_");l(this,"config_");l(this,"resizeObserver_");l(this,"requestAdsStartTime_");l(this,"onEvent_");l(this,"ad_");l(this,"eventManager_");l(this,"adDisplayContainer_");l(this,"adsLoader_");l(this,"imaAdsManager_");l(this,"adsRenderingSettings_");this.adContainer_=e,this.video_=t,this.videoPlayed_=!1,this.config_=null,this.resizeObserver_=null,this.requestAdsStartTime_=NaN,this.onEvent_=s,this.ad_=null,this.eventManager_=new ue,google.ima.settings.setLocale(i),google.ima.settings.setDisableCustomPlaybackForIOS10Plus(!0),this.adDisplayContainer_=new google.ima.AdDisplayContainer(this.adContainer_,this.video_),this.adDisplayContainer_.initialize(),this.adsLoader_=new google.ima.AdsLoader(this.adDisplayContainer_),this.adsLoader_.getSettings().setPlayerType("shaka-player"),this.adsLoader_.getSettings().setPlayerVersion(dt.version),this.imaAdsManager_=null,this.adsRenderingSettings_=r||new google.ima.AdsRenderingSettings,this.eventManager_.listen(this.adsLoader_,google.ima.AdsManagerLoadedEvent.Type.ADS_MANAGER_LOADED,n=>{this.onAdsManagerLoaded_(n)}),this.eventManager_.listen(this.adsLoader_,google.ima.AdErrorEvent.Type.AD_ERROR,n=>{this.onAdError_(n)}),this.eventManager_.listen(this.video_,"ended",()=>{this.adsLoader_.contentComplete()}),this.eventManager_.listenOnce(this.video_,"play",()=>{this.videoPlayed_=!0})}configure(e){this.config_=e}requestAds(e){v.assert(e.adTagUrl||e.adsResponse,"The ad tag needs to be set up before requesting ads, or adsResponse must be filled."),this.imaAdsManager_&&this.imaAdsManager_.destroy(),this.adsLoader_&&this.adsLoader_.contentComplete(),this.requestAdsStartTime_=Date.now()/1e3,this.adsLoader_.requestAds(e)}updateAdsRenderingSettings(e){this.adsRenderingSettings_=e,this.imaAdsManager_&&this.imaAdsManager_.updateAdsRenderingSettings(this.adsRenderingSettings_)}stop(){this.imaAdsManager_&&this.imaAdsManager_.stop(),this.adContainer_&&Ge.removeAllChildren(this.adContainer_)}release(){this.stop(),this.resizeObserver_&&this.resizeObserver_.disconnect(),this.eventManager_&&this.eventManager_.release(),this.imaAdsManager_&&this.imaAdsManager_.destroy(),this.adsLoader_.destroy(),this.adDisplayContainer_.destroy()}onAdError_(e){p.warning("There was an ad error from the IMA SDK: "+e.getError()),p.warning("Resuming playback.");let t=new Map().set("originalEvent",e);this.onEvent_(new U(G.AD_ERROR,t)),this.onAdComplete_(null),this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",[])))}onAdsManagerLoaded_(e){v.assert(this.video_!=null,"Video should not be null!");let i=Date.now()/1e3-this.requestAdsStartTime_;if(this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",i))),!this.config_.customPlayheadTracker)this.imaAdsManager_=e.getAdsManager(this.video_,this.adsRenderingSettings_);else{let s={currentTime:this.video_.currentTime};this.imaAdsManager_=e.getAdsManager(s,this.adsRenderingSettings_),this.video_.muted?this.imaAdsManager_.setVolume(0):this.imaAdsManager_.setVolume(this.video_.volume),this.eventManager_.listen(this.video_,"timeupdate",()=>{this.video_.duration&&(s.currentTime=this.video_.currentTime)}),this.eventManager_.listen(this.video_,"volumechange",()=>{this.ad_&&(this.ad_.setVolume(this.video_.volume),this.video_.muted&&this.ad_.setMuted(!0))})}this.onEvent_(new U(G.IMA_AD_MANAGER_LOADED,new Map().set("imaAdManager",this.imaAdsManager_)));let r=this.imaAdsManager_.getCuePoints();if(r.length){let s=[];for(let n of r){let a={start:n,end:null};s.push(a)}this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",s)))}this.addImaEventListeners_();try{this.imaAdsManager_.init(this.video_.offsetWidth,this.video_.offsetHeight),this.eventManager_.listen(this.video_,"loadeddata",()=>{this.imaAdsManager_.resize(this.video_.offsetWidth,this.video_.offsetHeight)}),"ResizeObserver"in window?(this.resizeObserver_=new ResizeObserver(()=>{this.imaAdsManager_.resize(this.video_.offsetWidth,this.video_.offsetHeight)}),this.resizeObserver_.observe(this.video_)):this.eventManager_.listen(document,"fullscreenchange",()=>{this.imaAdsManager_.resize(this.video_.offsetWidth,this.video_.offsetHeight)}),this.videoPlayed_||this.config_.skipPlayDetection?this.imaAdsManager_.start():this.eventManager_.listenOnce(this.video_,"play",()=>{this.videoPlayed_=!0,this.imaAdsManager_.start()})}catch(s){this.onAdComplete_(null)}}addImaEventListeners_(){let e=(t,i)=>{let r=new Map().set("originalEvent",t);this.onEvent_(new U(i,r))};this.eventManager_.listen(this.imaAdsManager_,google.ima.AdErrorEvent.Type.AD_ERROR,t=>{this.onAdError_(t)}),this.eventManager_.listenMulti(this.imaAdsManager_,[google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED,google.ima.AdEvent.Type.STARTED],t=>{this.onAdStart_(t)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.FIRST_QUARTILE,t=>{e(t,G.AD_FIRST_QUARTILE)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.MIDPOINT,t=>{e(t,G.AD_MIDPOINT)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.THIRD_QUARTILE,t=>{e(t,G.AD_THIRD_QUARTILE)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.COMPLETE,t=>{e(t,G.AD_COMPLETE)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED,t=>{this.onAdComplete_(t)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.ALL_ADS_COMPLETED,t=>{e(t,G.ALL_ADS_COMPLETED),this.onAdComplete_(t)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.SKIPPED,t=>{e(t,G.AD_SKIPPED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.VOLUME_CHANGED,t=>{e(t,G.AD_VOLUME_CHANGED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.VOLUME_MUTED,t=>{e(t,G.AD_MUTED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.PAUSED,t=>{this.ad_&&(this.ad_.setPaused(!0),e(t,G.AD_PAUSED))}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.RESUMED,t=>{this.ad_&&(this.ad_.setPaused(!1),e(t,G.AD_RESUMED))}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.SKIPPABLE_STATE_CHANGED,t=>{this.ad_&&e(t,G.AD_SKIP_STATE_CHANGED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.CLICK,t=>{e(t,G.AD_CLICKED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.AD_PROGRESS,t=>{e(t,G.AD_PROGRESS)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.AD_BUFFERING,t=>{e(t,G.AD_BUFFERING)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.IMPRESSION,t=>{e(t,G.AD_IMPRESSION)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.DURATION_CHANGE,t=>{e(t,G.AD_DURATION_CHANGED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.USER_CLOSE,t=>{e(t,G.AD_CLOSED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.LOADED,t=>{e(t,G.AD_LOADED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.LINEAR_CHANGED,t=>{e(t,G.AD_LINEAR_CHANGED)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.AD_METADATA,t=>{e(t,G.AD_METADATA)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.LOG,t=>{e(t,G.AD_RECOVERABLE_ERROR)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.AD_BREAK_READY,t=>{e(t,G.AD_BREAK_READY)}),this.eventManager_.listen(this.imaAdsManager_,google.ima.AdEvent.Type.INTERACTION,t=>{e(t,G.AD_INTERACTION)})}onAdStart_(e){v.assert(this.imaAdsManager_,"Should have an ads manager at this point!");let t=e.getAd();if(!t){p.alwaysWarn("The IMA SDK fired a "+e.type+" event with no associated ad. Unable to play ad!");return}this.ad_=new vn(t,this.imaAdsManager_,this.video_),e.type==google.ima.AdEvent.Type.CONTENT_PAUSE_REQUESTED&&!this.config_.supportsMultipleMediaElements&&this.onEvent_(new U(G.AD_CONTENT_PAUSE_REQUESTED));let i=new Map().set("ad",this.ad_).set("sdkAdObject",t).set("originalEvent",e);this.onEvent_(new U(G.AD_STARTED,i)),this.ad_.isLinear()&&(this.adContainer_.setAttribute("ad-active","true"),this.config_.customPlayheadTracker||this.video_.pause(),this.video_.muted?this.ad_.setInitialMuted(this.video_.volume):this.ad_.setVolume(this.video_.volume))}onAdComplete_(e){e&&e.type==google.ima.AdEvent.Type.CONTENT_RESUME_REQUESTED&&!this.config_.supportsMultipleMediaElements&&this.onEvent_(new U(G.AD_CONTENT_RESUME_REQUESTED)),this.onEvent_(new U(G.AD_STOPPED,new Map().set("originalEvent",e))),this.ad_&&this.ad_.isLinear()&&(this.adContainer_.removeAttribute("ad-active"),!this.config_.customPlayheadTracker&&!this.video_.ended&&this.video_.play())}};/*! @license
|
|
511
|
+
* Shaka Player
|
|
512
|
+
* Copyright 2016 Google LLC
|
|
513
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
514
|
+
*/var Ns=class y{static isInterstitialRegion(e){if(y.isAlternativeMpd_(e))return!0;let t=e.schemeIdUri;return(t=="urn:mpeg:dash:event:2012"||t=="urn:scte:dash:scte214-events")&&!!e.eventNode&&!!I.findChild(e.eventNode,"OverlayEvent")}static parseRegion(e){return y.isAlternativeMpd_(e)?y.parseAlternativeMpd_(e):y.parseOverlay_(e)}static isAlternativeMpd_(e){return e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025"||e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025"}static parseAlternativeMpd_(e){let t=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:replace:2025",i=e.schemeIdUri=="urn:mpeg:dash:event:alternativeMPD:insert:2025";if(!t&&!i)return p.warning("Unsupported alternative media presentation",e),null;let r=e.startTime,s=e.endTime,n=null,a=0,o,c=!0,d=null,u=null;for(let f of e.eventNode.children)if(f.tagName=="AlternativeMPD"){let g=f.attributes.uri;if(g){o=g;break}}else if(f.tagName=="InsertPresentation"||f.tagName=="ReplacePresentation"){let g=f.attributes.uri||f.attributes.url;if(g){o=q.htmlUnescape(g);let _=I.parseAttr(f,"maxDuration",I.parseInt);_&&(n=_/e.timescale);let T=I.parseAttr(f,"returnOffset",I.parseInt);T&&(a=T/e.timescale),t&&a&&(s=r+a),I.parseAttr(f,"noJump",I.parseInt)&&(c=!1);let b=I.parseAttr(f,"skipAfter",I.parseDuration);typeof b=="number"&&(d=b);let E=I.parseAttr(f,"earliestResolutionTimeOffset",I.parseFloat);E&&(u=E/e.timescale);break}}if(!o)return p.warning("Unsupported alternative media presentation",e),null;o=fe.applyUrlParams(o,e.urlParams);let m={id:e.id,groupId:null,startTime:r,endTime:s,uri:o,mimeType:null,isSkippable:d!=null,skipOffset:d,skipFor:null,canJump:c,resumeOffset:i?a:null,playoutLimit:n,once:!1,pre:!1,post:!1,timelineRange:t&&!i,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null};return u!=null&&(m.resolutionTimeOffset=u),m}static parseOverlay_(e){v.assert(e.eventNode,"Need a region eventNode");let t=I.findChild(e.eventNode,"OverlayEvent"),i=t.attributes.uri,r=t.attributes.mimeType,s=t.attributes.loop=="true",n=I.parseAttr(t,"z",I.parseInt);if(!i||n==0)return p.warning("Unsupported OverlayEvent",e),null;let a=null,o=I.findChild(t,"Background");if(o){let T=o.attributes.uri;T?a=`center / contain no-repeat url('${T}')`:a=I.getContents(o)}let c={x:1920,y:1080},d=I.findChild(t,"Viewport");if(d){let T=I.parseAttr(d,"x",I.parseInt);if(T==null)return p.warning("Unsupported OverlayEvent",e),null;let S=I.parseAttr(d,"y",I.parseInt);if(S==null)return p.warning("Unsupported OverlayEvent",e),null;c.x=T,c.y=S}let u={viewport:{x:c.x,y:c.y},topLeft:{x:0,y:0},size:{x:c.x,y:c.y}},m=I.findChild(t,"Overlay");if(d&&m){let T=I.findChild(m,"TopLeft"),S=I.findChild(m,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;u.topLeft=b.topLeft,u.size=b.size}}let f=null,g=I.findChild(t,"Squeeze");if(d&&g){let T=I.findChild(g,"TopLeft"),S=I.findChild(g,"Size");if(T&&S){let b=y.parseTopLeftSize_(T,S);if(!b)return p.warning("Unsupported OverlayEvent",e),null;f={viewport:{x:c.x,y:c.y},topLeft:b.topLeft,size:b.size}}}return{id:e.id,groupId:null,startTime:e.startTime,endTime:e.endTime,uri:i,mimeType:r,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:!1,pre:!1,post:!1,timelineRange:!0,loop:s,overlay:u,displayOnBackground:n==-1,currentVideo:f,background:a,clickThroughUrl:null,tracking:null}}static parseTopLeftSize_(e,t){let i=I.parseAttr(e,"x",I.parseInt),r=I.parseAttr(e,"y",I.parseInt),s=I.parseAttr(t,"x",I.parseInt),n=I.parseAttr(t,"y",I.parseInt);return i==null||r==null||s==null||n==null?null:{topLeft:{x:i,y:r},size:{x:s,y:n}}}};/*! @license
|
|
515
|
+
* Shaka Player
|
|
516
|
+
* Copyright 2016 Google LLC
|
|
517
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
518
|
+
*/var bn=class extends Wt{constructor(t,i,r,s,n,a){super(t);l(this,"interstitial_");l(this,"isSkippable_");l(this,"skipOffset_");l(this,"skipFor_");l(this,"onSkip_");l(this,"sequenceLength_");l(this,"adPosition_");l(this,"isUsingAnotherMediaElement_");l(this,"overlay_");this.interstitial_=i,this.isSkippable_=i.isSkippable,this.skipOffset_=i.isSkippable?i.skipOffset||0:i.skipOffset,this.skipFor_=i.skipFor,this.onSkip_=r,this.sequenceLength_=s,this.adPosition_=n,this.isUsingAnotherMediaElement_=a,this.overlay_=i.overlay}hasCustomClick(){return this.interstitial_.clickThroughUrl!=null}isUsingAnotherMediaElement(){return this.isUsingAnotherMediaElement_}getDuration(){let t=this.video.duration;return isNaN(t)?-1:t}getRemainingTime(){let t=this.video.duration;return isNaN(t)?-1:t-this.video.currentTime}isSkippable(){if(this.isSkippable_&&this.skipFor_!=null){let t=this.getDuration()-this.getRemainingTime(),i=this.skipOffset_+this.skipFor_;return t<i}return this.isSkippable_}getTimeUntilSkippable(){if(this.isSkippable()){let t=this.getRemainingTime()+this.skipOffset_-this.getDuration();return Math.max(t,0)}return Math.max(this.getRemainingTime(),0)}canSkipNow(){return this.isSkippable_&&this.getTimeUntilSkippable()==0}skip(){this.canSkipNow()&&this.onSkip_()}isLinear(){return this.overlay_==null}getSequenceLength(){return this.sequenceLength_}getPositionInSequence(){return this.adPosition_}getAdId(){return this.interstitial_.id||""}getMediaUrl(){return this.interstitial_.uri}getTimeOffset(){return this.interstitial_.pre?0:this.interstitial_.post?-1:this.interstitial_.startTime}};/*! @license
|
|
519
|
+
* Shaka Player
|
|
520
|
+
* Copyright 2016 Google LLC
|
|
521
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
522
|
+
*/var En=class extends Wt{constructor(t,i,r){super();l(this,"interstitial_");l(this,"sequenceLength_");l(this,"adPosition_");l(this,"isLinear_");this.interstitial_=t,this.sequenceLength_=i,this.adPosition_=r,this.isLinear_=t.overlay==null}hasCustomClick(){return this.interstitial_.clickThroughUrl!=null}isLinear(){return this.isLinear_}getSequenceLength(){return this.sequenceLength_}getPositionInSequence(){return this.adPosition_}getAdId(){return this.interstitial_.id||""}getMediaUrl(){return this.interstitial_.uri}getTimeOffset(){return this.interstitial_.pre?0:this.interstitial_.post?-1:this.interstitial_.startTime}};/*! @license
|
|
523
|
+
* Shaka Player
|
|
524
|
+
* Copyright 2016 Google LLC
|
|
525
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
526
|
+
*/var ts=class y{static parseVastToInterstitials(e,t){let i=[];for(let r of I.findChildren(e,"Ad")){let s=r.attributes.id||null,n=I.findChild(r,"InLine");if(!n)continue;let a=I.findChild(n,"Creatives");if(a)for(let o of I.findChildren(a,"Creative")){let c=I.findChild(o,"Linear");if(c){let u=G.createTrackingFromInline(n);y.processLinearAd_(i,t,c,u,s)}let d=I.findChild(o,"NonLinearAds");if(d){let u=I.findChildren(d,"NonLinear");for(let m of u){let f=G.createTrackingFromInline(n),g=I.findChild(d,"TrackingEvents");g&&G.processTrackingEvents(I.getChildNodes(g),f),y.processNonLinearAd_(i,t,m,f,s)}}}}return i}static processLinearAd_(e,t,i,r,s){let n=0;t!=null&&(n=t);let a=null;i.attributes.skipoffset&&(a=Gt.parseTime(i.attributes.skipoffset),isNaN(a)&&(a=null));let o=I.findChild(i,"MediaFiles");if(!o)return;let c=null,d=I.findChild(i,"VideoClicks");if(d){let T=I.findChild(d,"ClickThrough");if(T){let S=I.getContents(T);S&&(c=S)}for(let S of I.findChildren(d,"ClickTracking")){let b=I.getTextContents(S);b&&(r.clickTracking||(r.clickTracking=[]),r.clickTracking.push(b))}}let u=I.findChild(i,"TrackingEvents");u&&G.processTrackingEvents(I.getChildNodes(u),r);let m=I.findChildren(o,"MediaFile"),f=m,g=m.filter(T=>T.attributes.delivery=="streaming");g.length&&(f=g);let _=f.sort((T,S)=>{let b=parseInt(T.attributes.height,10)||0;return(parseInt(S.attributes.height,10)||0)-b});for(let T of _){if(T.attributes.apiFramework)continue;let S=I.getContents(T);if(S){e.push({id:s,groupId:null,startTime:n,endTime:null,uri:S,mimeType:T.attributes.type||null,isSkippable:a!=null,skipOffset:a,skipFor:null,canJump:!1,resumeOffset:0,playoutLimit:null,once:!0,pre:t==null,post:t==1/0,timelineRange:!1,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:c,tracking:r});break}}}static processNonLinearAd_(e,t,i,r,s){let n=null,a=I.findChild(i,"StaticResource");if(a)n=a.attributes.creativeType;else{if(a=I.findChild(i,"HTMLResource"),!a)return;n="text/html"}let o=I.getContents(a);if(!o)return;n==="text/html"&&(o="data:text/html;charset=UTF-8,"+encodeURIComponent(o));let c=I.parseAttr(i,"width",I.parseInt)||I.parseAttr(i,"expandedWidth",I.parseInt),d=I.parseAttr(i,"height",I.parseInt)||I.parseAttr(i,"expandedHeight",I.parseInt);if(!c&&!d)return;let u=null,m=I.findChild(i,"NonLinearClickThrough");if(m){let T=I.getContents(m);T&&(u=T)}for(let T of I.findChildren(i,"NonLinearClickTracking")){let S=I.getTextContents(T);S&&(r.clickTracking||(r.clickTracking=[]),r.clickTracking.push(S))}let f=null,g=i.attributes.minSuggestedDuration;g&&(f=Gt.parseTime(g));let _=0;t!=null&&(_=t),e.push({id:s,groupId:null,startTime:_,endTime:null,uri:o,mimeType:n,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!1,resumeOffset:0,playoutLimit:f,once:!0,pre:t==null,post:t==1/0,timelineRange:!1,loop:!1,overlay:{viewport:{x:0,y:0},topLeft:{x:0,y:0},size:{x:c||0,y:d||0}},displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:u,tracking:r})}static parseVMAP(e){let t=[];for(let i of I.findChildren(e,"vmap:AdBreak")){let r=i.attributes.timeOffset;if(!r)continue;let s=null;r=="start"?s=null:r=="end"?s=1/0:s=Gt.parseTime(r);let n=I.findChild(i,"vmap:AdSource");if(!n)continue;let a=I.findChild(n,"vmap:AdTagURI");if(!a)continue;let o=I.getTextContents(a);o&&t.push({time:s,uri:o})}return t}};/*! @license
|
|
527
|
+
* Shaka Player
|
|
528
|
+
* Copyright 2016 Google LLC
|
|
529
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
530
|
+
*/var An=class{constructor(e,t,i){l(this,"config_");l(this,"adContainer_");l(this,"basePlayer_");l(this,"baseVideo_");l(this,"adVideo_");l(this,"usingBaseVideo_");l(this,"video_");l(this,"onEvent_");l(this,"hlsMetadataIds_");l(this,"interstitialIds_");l(this,"interstitials_");l(this,"sortedInterstitials_");l(this,"unresolvedAssetLists_");l(this,"preloadOffsets_");l(this,"preloadTasks_");l(this,"preloadOnDomElements_");l(this,"player_");l(this,"eventManager_");l(this,"adEventManager_");l(this,"isEnded_");l(this,"playingAd_");l(this,"lastTime_");l(this,"lastPlayedAd_");l(this,"playingAdStartTime_");l(this,"playoutLimitTimer_");l(this,"lastOnSkip_");l(this,"usingListeners_");l(this,"videoCallbackId_");l(this,"videoFrameCallbackHandler_");l(this,"sessionId_");l(this,"assetStartOffsets_");l(this,"checkForInterstitials_");l(this,"onTimeUpdate_");l(this,"onSeeked_");l(this,"timeUpdateTimer_");l(this,"pollTimer_");this.config_=null,this.adContainer_=e,this.basePlayer_=t,this.baseVideo_=t.getMediaElement(),this.adVideo_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.onEvent_=i,this.hlsMetadataIds_=new Set,this.interstitialIds_=new Set,this.interstitials_=new Set,this.sortedInterstitials_=null,this.unresolvedAssetLists_=new Set,this.preloadOffsets_=new Map,this.preloadTasks_=new Map,this.preloadOnDomElements_=new Map,this.player_=new dt,this.updatePlayerConfig_(),this.eventManager_=new ue,this.adEventManager_=new ue,this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.playoutLimitTimer_=null,this.lastOnSkip_=null,this.usingListeners_=!1,this.videoCallbackId_=-1,this.videoFrameCallbackHandler_=null,this.sessionId_=null,this.assetStartOffsets_=new Map;let r=s=>s?s.overlay?!0:this.isEnded_?s.post:!this.baseVideo_.paused:!1;this.checkForInterstitials_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.lastTime_=this.baseVideo_.currentTime;let s=this.getCurrentInterstitial_();s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onTimeUpdate_=()=>{if(this.playingAd_||this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended,this.baseVideo_.paused||(this.lastTime_=this.baseVideo_.currentTime);let s;this.lastPlayedAd_||(s=this.getCurrentInterstitial_(!0)),s||(s=this.getCurrentInterstitial_()),s&&r(s)&&this.setupAd_(s,1,1,Date.now())},this.onSeeked_=()=>{if(this.playingAd_||!this.lastTime_||this.basePlayer_.isRemotePlayback())return;this.isEnded_=this.baseVideo_.ended;let s=this.baseVideo_.currentTime;this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&s<this.lastPlayedAd_.startTime&&(this.lastPlayedAd_=null),this.maybeResetAssetListsOnSeek_(s)},this.timeUpdateTimer_=new ae(this.checkForInterstitials_),this.pollTimer_=new ae(()=>{if(!this.playingAd_&&this.lastTime_!=null&&(this.interstitials_.size||this.unresolvedAssetLists_.size)){let s=this.basePlayer_.getLoadMode();if(s==dt.LoadMode.DESTROYED||s==dt.LoadMode.NOT_LOADED)return;let n=!1,a=this.basePlayer_.seekRange();for(let c of Array.from(this.unresolvedAssetLists_)){let d=c.endTime||c.startTime;a.start-d>=1?(this.unresolvedAssetLists_.delete(c),this.removeEventListeners_(),n=!0):!c.resolving&&!c.resolved&&this.shouldResolveAssetListNow_(c)&&(c.resolving=!0,this.resolveAssetListDescriptor_(c))}let o=Array.from(this.interstitials_);for(let c of o){if(c==this.lastPlayedAd_)continue;let d=c.endTime||c.startTime;if(a.start-d>=1)this.removeInterstitial_(c),this.removeEventListeners_(),c.overlay||(n=!0);else if(this.isWithinPreloadWindow_(c)){if(!this.preloadTasks_.has(c)&&this.isPreloadAllowed_(c)){v.assert(this.player_,"Need a player");let u=new In(this.player_,c,(m,f)=>{this.sendEvent_(m,f)});this.preloadTasks_.set(c,u)}this.checkPreloadOnDomElements_(c)}}n&&this.cuepointsChanged_()}}),this.configure(this.basePlayer_.getConfiguration().ads)}configure(e){this.config_=e,this.playingAd_||this.determineIfUsingBaseVideo_()}addEventListeners_(){var t;if(this.usingListeners_||!this.interstitials_.size&&!this.unresolvedAssetLists_.size)return;this.eventManager_.listenMulti(this.baseVideo_,["playing","timeupdate"],this.onTimeUpdate_),this.eventManager_.listen(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.listen(this.baseVideo_,"ended",this.checkForInterstitials_);let e=!0;if(!this.isSmartTV_()){(t=this.videoFrameCallbackHandler_)==null||t.release();let i=this.baseVideo_;this.videoFrameCallbackHandler_=new es(i),e=!this.videoFrameCallbackHandler_.start(()=>{this.checkForInterstitials_()})}e&&this.timeUpdateTimer_.tickEvery(.025),this.pollTimer_&&this.pollTimer_.tickEvery(1),this.usingListeners_=!0}removeEventListeners_(){var e,t,i;!this.usingListeners_||this.interstitials_.size||this.unresolvedAssetLists_.size||(this.eventManager_.unlisten(this.baseVideo_,"playing",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"timeupdate",this.onTimeUpdate_),this.eventManager_.unlisten(this.baseVideo_,"seeked",this.onSeeked_),this.eventManager_.unlisten(this.baseVideo_,"ended",this.checkForInterstitials_),(e=this.videoFrameCallbackHandler_)==null||e.release(),this.videoFrameCallbackHandler_=null,(t=this.timeUpdateTimer_)==null||t.stop(),(i=this.pollTimer_)==null||i.stop(),this.usingListeners_=!1)}determineIfUsingBaseVideo_(e=!1){if(!this.adContainer_||!this.config_){this.usingBaseVideo_=!0;return}let t=this.config_.supportsMultipleMediaElements,i=this.baseVideo_;(i.controls||i.webkitPresentationMode&&i.webkitPresentationMode!=="inline"||i.webkitDisplayingFullscreen)&&(t=!1),!(!e&&this.usingBaseVideo_!=t)&&(this.usingBaseVideo_=!t,this.usingBaseVideo_?(this.video_=this.baseVideo_,this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null)):(e&&this.adVideo_&&(this.adVideo_.parentElement&&this.adContainer_.removeChild(this.adVideo_),this.adVideo_=null),this.adVideo_||(this.adVideo_=this.createMediaElement_()),this.video_=this.adVideo_))}stop(){this.adEventManager_&&this.adEventManager_.removeAll(),this.hlsMetadataIds_.clear(),this.interstitialIds_.clear(),this.interstitials_.clear(),this.sortedInterstitials_=null,this.unresolvedAssetLists_.clear(),this.preloadOffsets_.clear(),this.player_.destroyAllPreloads();let e=Array.from(this.preloadTasks_.values());for(let t of e)t.release();if(this.preloadTasks_.clear(),this.preloadOnDomElements_.size){let t=Array.from(this.preloadOnDomElements_.keys());for(let i of t)this.removePreloadOnDomElements_(i)}this.preloadOnDomElements_.clear(),this.assetStartOffsets_.clear(),this.player_.detach(),this.isEnded_=!1,this.playingAd_=!1,this.lastTime_=null,this.lastPlayedAd_=null,this.playingAdStartTime_=null,this.usingBaseVideo_=!0,this.video_=this.baseVideo_,this.adVideo_=null,this.sessionId_=null,this.removeBaseStyles_(),this.removeEventListeners_(),this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null)}release(){this.stop(),this.eventManager_&&this.eventManager_.release(),this.adEventManager_&&this.adEventManager_.release(),this.timeUpdateTimer_&&(this.timeUpdateTimer_.stop(),this.timeUpdateTimer_=null),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null),this.player_.destroy()}getPlayer(){return this.player_}async addMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t)){this.updateInterstitials_(e,t);return}this.hlsMetadataIds_.add(t)}this.updatePlayerConfig_();let i=[];this.getMetadataValue_(e,"X-OVERLAY-ID")!=null?i=this.getOverlaysInfo_(e):i=await this.getInterstitialsInfo_(e),i.length&&await this.addInterstitials(i)}updateInterstitials_(e,t){let i=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");if(i==null)return;let r=parseFloat(i);if(!isNaN(r)){for(let s of this.interstitials_)(s.id===t||s.groupId===t)&&this.applyUpdatedPlayoutLimit_(s,r);for(let s of this.unresolvedAssetLists_)s.id===t&&s.playoutLimit==null&&(s.playoutLimit=r)}}applyUpdatedPlayoutLimit_(e,t){var a;if(e.playoutLimit!=null)return;e.playoutLimit=t;let i=this.playingAd_&&this.lastPlayedAd_!=null&&(this.lastPlayedAd_===e||e.groupId!=null&&this.lastPlayedAd_.groupId===e.groupId),r=!e.overlay&&!(e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html"));if(!i||!r||this.playingAdStartTime_==null)return;let s=(Date.now()-this.playingAdStartTime_)/1e3,n=t-s;(a=this.playoutLimitTimer_)==null||a.stop(),this.playoutLimitTimer_=null,n<=0?this.lastOnSkip_&&this.lastOnSkip_():(this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_&&this.lastOnSkip_()}).tickAfter(n),this.player_.configure("playRangeEnd",t))}addPreloadMetadata(e){let t=this.getMetadataValue_(e,"ID");if(t){if(this.hlsMetadataIds_.has(t))return;this.hlsMetadataIds_.add(t)}let i=this.getMetadataValue_(e,"X-TARGET-ID");if(i){this.preloadOffsets_.set(i,e.startTime);for(let r of this.interstitials_)this.applyPreloadOffset_(r);for(let r of this.unresolvedAssetLists_)this.applyPreloadOffset_(r)}}applyPreloadOffset_(e){let t=null;e.id!=null&&this.preloadOffsets_.has(e.id)?t=this.preloadOffsets_.get(e.id):e.groupId!=null&&this.preloadOffsets_.has(e.groupId)&&(t=this.preloadOffsets_.get(e.groupId)),t!=null&&(e.resolutionTimeOffset=Math.max(0,e.startTime-t))}async addAdUrlInterstitial(e){let t={type:K.AdvancedRequestType.INTERSTITIAL_AD_URL},i=await this.makeAdRequest_(e,t).promise,r=I.parseXml(i.data,"VAST,vmap:VMAP");if(!r)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);let s=[];if(r.tagName=="VAST")s=ts.parseVastToInterstitials(r,this.lastTime_);else if(r.tagName=="vmap:VMAP"){let n=async o=>{let c=await this.makeAdRequest_(o.uri,t).promise,d=I.parseXml(c.data,"VAST");if(!d)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.VAST_INVALID_XML);s.push(...ts.parseVastToInterstitials(d,o.time))},a=[];for(let o of ts.parseVMAP(r))a.push(n(o));a.length&&await Promise.all(a)}this.addInterstitials(s)}async addInterstitials(e){let t=!1;for(let i of e){if(!i.uri){p.alwaysWarn("Missing URL in interstitial",i);continue}if(!i.mimeType)try{let s=this.player_.getNetworkingEngine();v.assert(s,"Need networking engine"),i.mimeType=await ct.getMimeType(i.uri,s,this.basePlayer_.getConfiguration().streaming.retryParameters)}catch(s){}let r=this.interstitialId_(i);if(!this.interstitialIds_.has(r)&&(i.loop&&!i.overlay&&p.alwaysWarn("Loop is only supported in overlay interstitials",i),i.overlay||(t=!0),this.interstitialIds_.add(r),this.interstitials_.add(i),this.sortedInterstitials_=null,this.applyPreloadOffset_(i),this.isWithinPreloadWindow_(i))){if(!this.preloadTasks_.has(i)&&this.isPreloadAllowed_(i)){v.assert(this.player_,"Need a player");let s=new In(this.player_,i,(n,a)=>{this.sendEvent_(n,a)});this.preloadTasks_.set(i,s)}this.checkPreloadOnDomElements_(i)}}t&&this.cuepointsChanged_(),this.addEventListeners_()}createMediaElement_(){let e=document.createElement(this.baseVideo_.tagName);return e.autoplay=!0,e.style.position="absolute",e.style.top="0",e.style.left="0",e.style.width="100%",e.style.height="100%",e.style.display="none",e.setAttribute("playsinline",""),e}getSortedInterstitials_(){return this.sortedInterstitials_||(this.sortedInterstitials_=Array.from(this.interstitials_).sort((e,t)=>t.startTime-e.startTime)),this.sortedInterstitials_}getCurrentInterstitial_(e=!1,t=null){let i=0,r=null;if(this.interstitials_.size&&this.lastTime_!=null){let s=this.getSortedInterstitials_(),n=o=>Math.round(o*1e3)/1e3,a=s;e?a=s.filter(o=>o.pre):this.isEnded_?a=s.filter(o=>o.post):a=s.filter(o=>!o.pre&&!o.post);for(let o of a){let c=!1;if(e)c=o.pre;else if(this.isEnded_)c=o.post;else if(!o.pre&&!o.post){let d=this.lastTime_-n(o.startTime),u=1;this.config_.allowStartInMiddleOfInterstitial&&o.endTime&&o.endTime!=1/0&&(u=o.endTime-o.startTime),(d>0||d==0&&this.lastTime_==0)&&(d<=u||!o.canJump)&&(t==null&&this.lastPlayedAd_&&!this.lastPlayedAd_.pre&&!this.lastPlayedAd_.post&&this.lastPlayedAd_.startTime>=o.startTime?c=!1:c=!0)}if(c&&(!this.lastPlayedAd_||o.startTime>=this.lastPlayedAd_.startTime)){if(i==(t||0))r=o;else if(r&&!o.canJump){let d=n(r.startTime);n(o.startTime)-d>.001&&(r=o,i=0)}i++}}}return r}setupAd_(e,t,i,r,s=0){if(p.info("Starting interstitial",e.startTime,"at",this.lastTime_),this.lastPlayedAd_=e,this.determineIfUsingBaseVideo_(),v.assert(this.video_,"Must have video"),!this.usingBaseVideo_&&this.adContainer_&&!this.video_.parentElement&&this.adContainer_.appendChild(this.video_),i==1&&t==1&&(t=Array.from(this.interstitials_).filter(n=>e.pre?n.pre==e.pre:e.post?n.post==e.post:Math.abs(n.startTime-e.startTime)<.001).length),e.once&&(s++,this.interstitials_.delete(e),this.sortedInterstitials_=null,this.removeEventListeners_(),e.overlay||this.cuepointsChanged_()),e.mimeType&&(e.mimeType.startsWith("image/")||e.mimeType==="text/html")){if(!e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupStaticAd_(e,t,i,s);return}if(this.usingBaseVideo_&&e.overlay){p.alwaysWarn("Unsupported interstitial",e);return}p.info("Starting interstitial",e),this.setupVideoAd_(e,t,i,r,s)}setupStaticAd_(e,t,i,r){let s=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let m=new Map().set("timeOffset",s).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,m)}this.playingAd_=!0;let n=e.overlay;v.assert(n,"Must have overlay");let a=e.mimeType=="text/html"?"iframe":"img",o=document.createElement(a);o.style.objectFit="contain",o.style.position="absolute",o.style.border="none",this.setBaseStyles_(e);let c=()=>{this.playoutLimitTimer_&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.adContainer_.removeChild(o),this.removeBaseStyles_(e),this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll();let m=this.getCurrentInterstitial_(e.pre,i-r);m?this.setupAd_(m,t,++i,Date.now(),r):this.playingAd_=!1,this.playingAd_||this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",s))},d=new En(e,t,i);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",d)),a=="iframe"?o.src=e.uri:(o.src=e.uri,o.onerror=m=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",m)),c()}),n.viewport.x==0&&n.viewport.y==0?(o.width=n.size.x,o.height=n.size.y,o.style.bottom="10%",o.style.left="0",o.style.right="0",o.style.width="100%",!n.size.y&&a=="iframe"&&(o.style.height="auto")):this.applyOverlayPosition_(o,n),this.adContainer_.appendChild(o);let u=Date.now();this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=new ae(()=>{e.playoutLimit&&(Date.now()-u)/1e3>e.playoutLimit?(this.sendEvent_(G.AD_COMPLETE),c()):e.endTime&&this.baseVideo_.currentTime>e.endTime?(this.sendEvent_(G.AD_COMPLETE),c()):this.baseVideo_.currentTime<e.startTime&&(this.sendEvent_(G.AD_SKIPPED),c())}),e.playoutLimit&&!e.endTime?this.playoutLimitTimer_.tickAfter(e.playoutLimit):e.endTime&&this.playoutLimitTimer_.tickEvery(.025),this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let m=this.baseVideo_.currentTime;(m<e.startTime||e.endTime&&m>e.endTime)&&(this.playoutLimitTimer_&&this.playoutLimitTimer_.stop(),this.sendEvent_(G.AD_SKIPPED),c())}),e.clickThroughUrl&&this.adEventManager_.listen(o,"click",m=>{e.clickThroughUrl&&(this.sendEvent_(G.AD_CLICKED),window.open(e.clickThroughUrl,"_blank"))})}async setupVideoAd_(e,t,i,r,s){var T;v.assert(this.video_,"Must have video");let n=Date.now(),a=this.getTimeOffset_(e);if(!this.playingAd_){this.playingAdStartTime_=Date.now();let S=new Map().set("timeOffset",a).set("startedAt",this.lastTime_);this.sendEvent_(G.AD_BREAK_STARTED,S)}this.playingAd_=!0;let o=!1,c=()=>{if(!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null)if(e.timelineRange&&e.endTime&&e.endTime!=1/0)this.baseVideo_.currentTime!=e.endTime&&(this.baseVideo_.currentTime=e.endTime);else{let S=Date.now();this.baseVideo_.currentTime+=(S-r)/1e3,r=S}},d=async(S,b)=>{var C;b||c();let E=this.getCurrentInterstitial_(e.pre,i-s);if(S&&e.groupId)for(;E&&E.groupId==e.groupId;)i++,E=this.getCurrentInterstitial_(e.pre,i-s);if(this.playoutLimitTimer_&&(!e.groupId||E&&E.groupId!=e.groupId)&&(this.playoutLimitTimer_.stop(),this.playoutLimitTimer_=null),this.removeBaseStyles_(e),!E||E.overlay){if(e.post&&(this.lastTime_=null,this.lastPlayedAd_=null),this.usingBaseVideo_?await this.player_.detach():await this.player_.unload(),this.usingBaseVideo_){let A=e.resumeOffset;A==null&&(e.timelineRange&&e.endTime&&e.endTime!=1/0?A=e.endTime-(this.lastTime_||0):A=(Date.now()-r)/1e3),this.sendEvent_(G.AD_CONTENT_RESUME_REQUESTED,new Map().set("offset",A))}else this.basePlayer_.isLive()&&e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset);this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.playingAd_=!1,this.usingBaseVideo_?this.cuepointsChanged_():(this.video_.style.display="none",b||c(),this.isEnded_||this.baseVideo_.play())}E&&this.usingBaseVideo_&&this.isSmartTV_()?(await this.player_.detach(),this.determineIfUsingBaseVideo_(!0)):this.determineIfUsingBaseVideo_(),E&&(this.sendEvent_(G.AD_STOPPED),this.adEventManager_.removeAll(),this.setupAd_(E,t,++i,r,s)),this.playingAd_||(this.sendEvent_(G.AD_BREAK_ENDED,new Map().set("timeOffset",a)),(C=this.playoutLimitTimer_)==null||C.stop(),this.playoutLimitTimer_=null)},u=async(S,b)=>{if(o)return;o=!0;let E=b&&S.code===h.Code.BAD_HTTP_STATUS;this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",S)),await d(!1,E)},m=async()=>{o||(o=!0,await d(!1,!1),this.sendEvent_(G.AD_COMPLETE))};this.lastOnSkip_=async()=>{o||(o=!0,this.sendEvent_(G.AD_SKIPPED),await d(!0,!1))};let f=new bn(this.video_,e,this.lastOnSkip_,t,i,!this.usingBaseVideo_);this.usingBaseVideo_||(f.setMuted(this.baseVideo_.muted),f.setVolume(this.baseVideo_.volume)),this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",f));let g=f.canSkipNow();if(g&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),this.preloadTasks_.has(e)){let b=this.preloadTasks_.get(e).getInitialError();if(b){this.preloadTasks_.delete(e),u(b,!0);return}}this.adEventManager_.listenOnce(this.player_,"error",S=>{u(S.detail,!1)}),this.adEventManager_.listen(this.video_,"timeupdate",()=>{if(!this.video_.duration)return;let b=f.canSkipNow();g!=b&&f.getRemainingTime()>0&&f.getDuration()>0&&this.sendEvent_(G.AD_SKIP_STATE_CHANGED),g=b,!this.usingBaseVideo_&&!e.overlay&&e.resumeOffset==null&&e.timelineRange&&e.endTime&&e.endTime!=1/0&&this.baseVideo_.currentTime!=e.endTime&&this.basePlayer_.seekRange().end>=e.endTime&&(this.baseVideo_.currentTime=e.endTime)}),this.adEventManager_.listenOnce(this.player_,"firstquartile",()=>{c(),this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"midpoint",()=>{c(),this.sendEvent_(G.AD_MIDPOINT)}),this.adEventManager_.listenOnce(this.player_,"thirdquartile",()=>{c(),this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.adEventManager_.listenOnce(this.player_,"complete",m);let _=!1;if(this.adEventManager_.listen(this.video_,"play",()=>{_?this.sendEvent_(G.AD_RESUMED):(_=!0,this.sendEvent_(G.AD_PLAYING,new Map().set("ad",f)))}),this.adEventManager_.listen(this.video_,"pause",()=>{let S=this.player_.getConfiguration();if(this.video_.currentTime>=S.playRangeEnd){m();return}this.sendEvent_(G.AD_PAUSED)}),this.adEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED),this.usingBaseVideo_||(this.baseVideo_.volume=this.video_.volume,this.baseVideo_.muted=this.video_.muted)}),e.clickThroughUrl){let S=this.adContainer_||this.video_;this.adEventManager_.listen(S,"click",b=>{e.clickThroughUrl&&(f.isPaused()||f.pause(),window.open(e.clickThroughUrl,"_blank"))})}if(this.usingBaseVideo_&&i==1){this.sendEvent_(G.AD_CONTENT_PAUSE_REQUESTED,new Map().set("saveLivePosition",!0));let S=Promise.withResolvers(),b=async E=>{E.state=="detach"&&(this.isSmartTV_()&&await it.delay(.1),S.resolve(),this.adEventManager_.unlisten(this.basePlayer_,"onstatechange",b))};this.adEventManager_.listen(this.basePlayer_,"onstatechange",b),await S.promise}this.setBaseStyles_(e),this.usingBaseVideo_||(this.video_.style.display="",e.overlay?(this.video_.loop=e.loop,this.applyOverlayPosition_(this.video_,e.overlay)):(this.baseVideo_.pause(),this.basePlayer_.isLive()||e.resumeOffset!=null&&e.resumeOffset!=0&&(this.baseVideo_.currentTime+=e.resumeOffset),this.video_.loop=!1,this.video_.style.height="100%",this.video_.style.left="0",this.video_.style.top="0",this.video_.style.width="100%"));try{if(this.updatePlayerConfig_(),e.startTime&&e.endTime&&e.endTime!=1/0&&e.startTime!=e.endTime){let C=e.endTime-e.startTime;C>0&&this.player_.configure("playRangeEnd",C)}let S=null;if(i==1&&!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.lastTime_!=null&&e.startTime<=this.lastTime_&&(!e.endTime||e.endTime>this.lastTime_))if(e.id&&this.assetStartOffsets_.has(e.id)){let C=this.assetStartOffsets_.get(e.id);this.assetStartOffsets_.delete(e.id),Math.abs(C)>.25&&(S=C)}else{let C=this.lastTime_-e.startTime;Math.abs(C)>.25&&(S=C)}i==1&&((T=this.playoutLimitTimer_)==null||T.stop(),this.playoutLimitTimer_=null);let b=e.playoutLimit;if(b&&!this.playoutLimitTimer_&&(S&&(b-=S),this.playoutLimitTimer_=new ae(()=>{this.lastOnSkip_()}).tickAfter(b),this.player_.configure("playRangeEnd",b)),this.player_.getMediaElement()!==this.video_&&await this.player_.attach(this.video_),this.preloadTasks_.has(e)){let C=this.preloadTasks_.get(e);this.preloadTasks_.delete(e);let A=C.getInitialError();if(A)throw A;let w=C.getPreloadManager();w?await this.player_.load(w,S):await this.player_.load(e.uri,S,e.mimeType||void 0)}else await this.player_.load(e.uri,S,e.mimeType||void 0);!e.overlay||!this.baseVideo_.paused?this.video_.play():this.video_.pause();let E=(Date.now()-n)/1e3;if(this.sendEvent_(G.ADS_LOADED,new Map().set("loadTime",E)),this.usingBaseVideo_&&this.baseVideo_.play(),e.overlay){if(!e.pre&&!e.post&&(!this.basePlayer_.isLive()||e.startTime>0)){let C=()=>{let A=this.baseVideo_.currentTime-e.startTime;Math.abs(A-this.video_.currentTime)>.1&&(this.video_.currentTime=A)};this.adEventManager_.listenOnce(this.video_,"playing",C),this.adEventManager_.listen(this.baseVideo_,"seeking",C)}this.adEventManager_.listen(this.baseVideo_,"seeked",()=>{let C=this.baseVideo_.currentTime;(C<e.startTime||e.endTime&&C>e.endTime)&&this.lastOnSkip_()})}}catch(S){if(!this.playingAd_)return;u(S,!0)}}applyOverlayPosition_(e,t){let i=t.viewport,r=t.topLeft,s=t.size;e.style.height=s.y/i.y*100+"%",e.style.left=r.x/i.x*100+"%",e.style.top=r.y/i.y*100+"%",e.style.width=s.x/i.x*100+"%"}setBaseStyles_(e){if(e.displayOnBackground&&(this.baseVideo_.style.zIndex="1"),e.currentVideo!=null){let t=e.currentVideo;this.baseVideo_.style.transformOrigin="top left";let i=!0,r=[],s=t.topLeft.x/t.viewport.x*100;s>0&&s<=100&&(r.push(`translateX(${s}%)`),i=!1);let n=t.topLeft.y/t.viewport.y*100;n>0&&n<=100&&(r.push(`translateY(${n}%)`),i=!1);let a=t.size.x/t.viewport.x;a<1&&r.push(`scaleX(${a})`);let o=t.size.y/t.viewport.y;a<1&&r.push(`scaleY(${o})`),r.length&&(this.baseVideo_.style.transform=r.join(" ")),i&&(this.baseVideo_.style.transition="transform 250ms")}this.adContainer_&&(e.clickThroughUrl?(this.adContainer_.setAttribute("ad-active","true"),this.adContainer_.style.pointerEvents=""):this.adContainer_.style.pointerEvents="none",e.background&&(this.adContainer_.style.background=e.background)),this.adVideo_&&(e.overlay?this.adVideo_.style.background="":this.adVideo_.style.background="rgb(0, 0, 0)")}removeBaseStyles_(e){(!e||e.displayOnBackground)&&(this.baseVideo_.style.zIndex=""),(!e||e.currentVideo!=null)&&(this.baseVideo_.style.transformOrigin="",this.baseVideo_.style.transition="",this.baseVideo_.style.transform=""),this.adContainer_&&(this.adContainer_.removeAttribute("ad-active"),this.adContainer_.style.pointerEvents="",(!e||e.background)&&(this.adContainer_.style.background="")),this.adVideo_&&(this.adVideo_.style.background="")}async getInterstitialsInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI"),r=this.getMetadataValue_(e,"X-ASSET-LIST");if(!i&&!r)return t;let s=this.getMetadataValue_(e,"ID"),{startTime:n,endTime:a}=this.getInterstitialTimes_(e,s),o=this.getMetadataValue_(e,"X-RESTRICT"),c=!0,d=!0;o!=null&&(c=!o.includes("SKIP"),d=!o.includes("JUMP"));let u=c?0:null,m=this.getMetadataValue_(e,"X-SKIP-CONTROL-OFFSET");m!=null&&(u=parseFloat(m),isNaN(u)&&(u=c?0:null));let f=null,g=this.getMetadataValue_(e,"X-SKIP-CONTROL-DURATION");g!=null&&(f=parseFloat(g),isNaN(u)&&(f=null));let _=null,T=this.getMetadataValue_(e,"X-RESUME-OFFSET");T!=null&&(_=parseFloat(T),isNaN(_)&&(_=null)),_!=null&&_!=0&&a&&a!=1/0&&jt.isFloatEqual(n+_,a)&&(_=null);let S=null,b=this.getMetadataValue_(e,"X-PLAYOUT-LIMIT");b!=null&&(S=parseFloat(b),isNaN(S)&&(S=null));let{once:E,pre:C,post:A}=this.parseCue_(e),w=!1,M=this.getMetadataValue_(e,"X-TIMELINE-OCCUPIES");if(M!=null?w=M.includes("RANGE"):T==null&&this.basePlayer_.isLive()&&(w=!C&&!A),i!=null){if(!i)return t;t.push({id:s,groupId:null,startTime:n,endTime:a,uri:this.getUriWithHlsParams_(i),mimeType:null,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null})}else if(r!=null){if(!r)return t;let x={id:s,groupId:null,startTime:n,endTime:a,assetListUri:r,isSkippable:c,skipOffset:u,skipFor:f,canJump:d,resumeOffset:_,playoutLimit:S,once:E,pre:C,post:A,timelineRange:w,resolving:!1,resolved:!1};if(this.applyPreloadOffset_(x),this.shouldResolveAssetListNow_(x)){let k=await this.resolveAssetList_(x);return k.length&&this.maybeRetainResolvedAssetList_(x),k}this.addUnresolvedAssetList_(x)}return t}async resolveAssetList_(e){var s;let t=[],i=e.skipOffset,r=e.skipFor;try{let n={type:K.AdvancedRequestType.INTERSTITIAL_ASSET_LIST},a=0;!e.pre&&!e.post&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()&&(a=((s=this.lastTime_)!=null?s:this.baseVideo_.currentTime)-e.startTime);let o=this.getUriWithHlsParams_(e.assetListUri,a),c=await this.makeAdRequest_(o,n).promise,d=q.fromUTF8(c.data),u=JSON.parse(d),m=u["SKIP-CONTROL"];if(m){let g=m.OFFSET;typeof g=="number"&&(i=parseFloat(g),isNaN(g)&&(i=e.isSkippable?0:null));let _=m.DURATION;typeof _=="number"&&(r=parseFloat(_),isNaN(r)&&(r=null))}let f=0;for(let g=0;g<u.ASSETS.length;g++){let _=u.ASSETS[g],T=_.URI,S=parseFloat(_.DURATION)||0;if(a>0&&S>0){let b=f+S;if(b<=a){f=b;continue}}if(T){let b=fe.resolve(c.uri,T),E={id:e.id+"_shaka_asset_"+g,groupId:e.id,startTime:e.startTime,endTime:e.endTime,uri:this.getUriWithHlsParams_(b),mimeType:null,isSkippable:e.isSkippable,skipOffset:i,skipFor:r,canJump:e.canJump,resumeOffset:e.resumeOffset,playoutLimit:e.playoutLimit,once:e.once,pre:e.pre,post:e.post,timelineRange:e.timelineRange,loop:!1,overlay:null,displayOnBackground:!1,currentVideo:null,background:null,clickThroughUrl:null,tracking:null},C=_["X-AD-CREATIVE-SIGNALING"];if(C){let A=C.payload&&C.payload[0];A&&(E.clickThroughUrl=A.clickThrough,A.tracking&&(E.tracking=G.createTrackingFromEvents(A.tracking)))}if(a>0&&f<a){let A=a-f;this.assetStartOffsets_.set(E.id,A)}t.push(E)}f+=S}}catch(n){p.warning("Failed to resolve interstitial asset list",e.assetListUri,n)}return t}addUnresolvedAssetList_(e){this.unresolvedAssetLists_.add(e),this.cuepointsChanged_(),this.addEventListeners_()}async resolveAssetListDescriptor_(e){let t=await this.resolveAssetList_(e);e.resolving=!1,t.length?(this.maybeRetainResolvedAssetList_(e),await this.addInterstitials(t)):(this.unresolvedAssetLists_.delete(e),this.cuepointsChanged_(),this.removeEventListeners_())}maybeRetainResolvedAssetList_(e){this.shouldRetainAssetList_()?(e.resolved=!0,this.unresolvedAssetLists_.add(e)):this.unresolvedAssetLists_.delete(e)}shouldRetainAssetList_(){return!!this.config_&&this.config_.allowStartInMiddleOfInterstitial&&this.basePlayer_.isLive()}maybeResetAssetListsOnSeek_(e){if(this.shouldRetainAssetList_())for(let t of this.unresolvedAssetLists_){if(!t.resolved)continue;let i=t.endTime;e>=t.startTime&&(i==null||i==1/0||e<i)&&(t.resolved=!1,this.removeResolvedAssetListGroup_(t.id))}}removeResolvedAssetListGroup_(e){if(e!=null)for(let t of Array.from(this.interstitials_))t.groupId===e&&this.removeInterstitial_(t)}removeInterstitial_(e){this.preloadTasks_.has(e)&&(this.preloadTasks_.get(e).release(),this.preloadTasks_.delete(e)),this.removePreloadOnDomElements_(e);let t=this.interstitialId_(e);this.interstitialIds_.delete(t),this.interstitials_.delete(e),this.sortedInterstitials_=null,this.lastPlayedAd_===e&&(this.lastPlayedAd_=null)}resolutionAheadTime_(e){return e.resolutionTimeOffset||this.config_.interstitialPreloadAheadTime}shouldResolveAssetListNow_(e){if(e.pre||e.post||e.startTime==0&&!e.canJump)return!0;let t=this.lastTime_!=null?this.lastTime_:this.baseVideo_.currentTime,i=1/0;if(!this.playingAd_&&this.baseVideo_.duration&&(i=this.baseVideo_.duration),Math.min(e.startTime,i)-t>this.resolutionAheadTime_(e))return!1;let s=e.endTime;return!(s!=null&&s!=1/0&&t>=s)}getOverlaysInfo_(e){let t=[];if(!e)return t;let i=this.getMetadataValue_(e,"X-ASSET-URI");if(!i)return t;let r=this.getMetadataValue_(e,"X-OVERLAY-ID"),{startTime:s,endTime:n}=this.getInterstitialTimes_(e,r),{once:a,pre:o,post:c}=this.parseCue_(e),d=this.getMetadataValue_(e,"X-ASSET-MIMETYPE"),u=this.getMetadataValue_(e,"X-LOOP")=="YES",m=1,f=this.getMetadataValue_(e,"X-DEPTH");f!=null&&(m=parseFloat(f),isNaN(m)&&(m=1));let g=this.getMetadataValue_(e,"X-BACKGROUND"),_={x:1920,y:1080},T=this.getMetadataValue_(e,"X-VIEWPORT");if(T!=null){let w=T.split("x");if(w.length!=2)return t;_.x=parseFloat(w[0]),_.y=parseFloat(w[1])}let S={viewport:{x:_.x,y:_.y},topLeft:{x:0,y:0},size:{x:_.x,y:_.y}},b=this.getMetadataValue_(e,"X-OVERLAY-POSITION");if(b!=null){let w=b.split("x");if(w.length!=2)return t;S.topLeft.x=parseFloat(w[0]),S.topLeft.y=parseFloat(w[1])}let E=this.getMetadataValue_(e,"X-OVERLAY-SIZE");if(E!=null){let w=E.split("x");if(w.length!=2)return t;S.size.x=parseFloat(w[0]),S.size.y=parseFloat(w[1])}let C=null,A=this.getMetadataValue_(e,"X-SQUEEZECURRENT");if(A!=null){let w=parseFloat(A);isNaN(w)&&(w=1),C={viewport:{x:1920,y:1080},topLeft:{x:0,y:0},size:{x:1920*w,y:1080*w}};let M=this.getMetadataValue_(e,"X-SQUEEZECURRENT-POSITION");if(M!=null){let x=M.split("x");if(x.length!=2)return t;C.topLeft.x=parseFloat(x[0]),C.topLeft.y=parseFloat(x[1])}}return t.push({id:r,groupId:null,startTime:s,endTime:n,uri:this.getUriWithHlsParams_(i),mimeType:d,isSkippable:!1,skipOffset:null,skipFor:null,canJump:!0,resumeOffset:null,playoutLimit:null,once:a,pre:o,post:c,timelineRange:!0,loop:u,overlay:S,displayOnBackground:m==-1,currentVideo:C,background:g,clickThroughUrl:null,tracking:null}),t}getUriWithHlsParams_(e,t=0){if(e.startsWith("data:"))return e;this.sessionId_||(this.sessionId_=window.crypto.randomUUID());let i=new Map;if(i.set("_HLS_primary_id",this.sessionId_),t>0){let r=Math.round(t*1e3)/1e3;i.set("_HLS_start_offset",String(r))}return fe.appendParams(e,i)}cuepointsChanged_(){let e=[],t=(i,r)=>{!e.find(n=>i==n.start&&r==n.end)&&e.push({start:i,end:r})};for(let i of this.interstitials_)i.overlay||(i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null));for(let i of this.unresolvedAssetLists_)i.pre?t(0,null):i.post?t(-1,null):i.timelineRange?t(i.startTime,i.endTime):t(i.startTime,null);this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}updatePlayerConfig_(){v.assert(this.player_,"Must have player"),v.assert(this.basePlayer_,"Must have base player"),this.player_.configure(this.basePlayer_.getNonDefaultConfiguration()),this.player_.configure("ads.disableHLSInterstitial",!0),this.player_.configure("ads.disableDASHInterstitial",!0),this.player_.configure("playRangeEnd",1/0);let e=this.player_.getNetworkingEngine();v.assert(e,"Need networking engine"),this.basePlayer_.getNetworkingEngine().copyFiltersInto(e)}makeAdRequest_(e,t){let i=K.RequestType.ADS,r=K.makeRequest([e],K.defaultRetryParameters());return this.basePlayer_.getNetworkingEngine().request(i,r,t)}getMetadataValue_(e,t){let i=e.values.find(r=>r.key==t);return i?i.data:null}getInterstitialTimes_(e,t){let i=t==null?Math.floor(e.startTime*10)/10:e.startTime,r=e.endTime;return e.endTime&&e.endTime!=1/0&&typeof e.endTime=="number"&&(r=t==null?Math.floor(e.endTime*10)/10:e.endTime),{startTime:i,endTime:r}}parseCue_(e){let t=this.getMetadataValue_(e,"CUE");return{once:t!=null&&t.includes("ONCE"),pre:t!=null&&t.includes("PRE"),post:t!=null&&t.includes("POST")}}interstitialId_(e){return e.id||JSON.stringify(e)}getTimeOffset_(e){return e.pre?0:e.post?-1:e.startTime}isPreloadAllowed_(e){let t=e.mimeType;return t?!t.startsWith("image/")&&t!=="text/html":!0}getInterstitials(){return Array.from(this.interstitials_)}isSmartTV_(){let t=j.getDevice().getDeviceType();return t==ie.DeviceType.TV||t==ie.DeviceType.CONSOLE||t==ie.DeviceType.CAST}checkPreloadOnDomElements_(e){if(this.preloadOnDomElements_.has(e)||this.config_&&!this.config_.allowPreloadOnDomElements)return;let t=r=>{let s=document.createElement("link");return s.rel="preload",s.href=r,s.as="image",document.head.appendChild(s),s},i=[];if(e.background){let r=/url\(('|")?([^'"()]+)('|")\)?/,s=e.background.match(r);s&&i.push(t(s[2]))}e.mimeType&&e.mimeType.startsWith("image/")&&i.push(t(e.uri)),this.preloadOnDomElements_.set(e,i)}removePreloadOnDomElements_(e){if(!this.preloadOnDomElements_.has(e))return;let t=this.preloadOnDomElements_.get(e);for(let i of t)i.parentNode.removeChild(i);this.preloadOnDomElements_.delete(e)}sendEvent_(e,t){p.info("Interstitial event",e,t),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.lastPlayedAd_&&this.lastPlayedAd_.tracking;G.fireTrackingEvents(t,e,this.basePlayer_.getNetworkingEngine())}isWithinPreloadWindow_(e){if(e.pre&&this.lastTime_==null)return!0;if(e.startTime==0&&!e.canJump)return!0;if(this.lastTime_!=null){let t=1/0;!this.playingAd_&&this.baseVideo_.duration&&(t=this.baseVideo_.duration);let i=Math.min(e.startTime,t)-this.lastTime_;if(i>0&&i<=this.resolutionAheadTime_(e))return!0}return!1}},In=class{constructor(e,t,i=null){l(this,"player_");l(this,"preloadManager_");l(this,"initialError_");l(this,"released_");l(this,"sendEvent_");this.player_=e,this.preloadManager_=null,this.initialError_=null,this.released_=!1,this.sendEvent_=i,this.start_(t)}async start_(e){try{this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOAD,new Map().set("interstitial",e));let t=await this.player_.preload(e.uri,null,e.mimeType||void 0);if(this.released_){if(t)try{await t.destroy()}catch(i){p.error("Error destroying preloadManager",i)}return}this.preloadManager_=t,t&&this.sendEvent_&&this.sendEvent_(G.AD_INTERSTITIAL_PRELOADED,new Map().set("interstitial",e))}catch(t){this.initialError_=t instanceof h?t:null}}getPreloadManager(){return this.preloadManager_}getInitialError(){return this.initialError_}release(){this.released_=!0,this.preloadManager_&&(this.preloadManager_.destroy(),this.preloadManager_=null)}};/*! @license
|
|
531
|
+
* Shaka Player
|
|
532
|
+
* Copyright 2016 Google LLC
|
|
533
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
534
|
+
*/var Os=class extends Wt{constructor(t,i,r,s,n){super(n);l(this,"ad_");l(this,"skipOffset_");l(this,"adPosition_");l(this,"totalAds_");l(this,"isLinear_");l(this,"isSkipped_");this.ad_=t,this.skipOffset_=Gt.parseTime(this.ad_.skipOffset),this.adPosition_=i,this.totalAds_=r,this.isLinear_=s,this.isSkipped_=!1}isClientRendering(){return!1}getDuration(){return this.ad_.durationInSeconds}getRemainingTime(){return this.ad_.startTimeInSeconds+this.ad_.durationInSeconds-this.video.currentTime}isSkippable(){return typeof this.skipOffset_=="number"}getTimeUntilSkippable(){if(typeof this.skipOffset_!="number")return this.getRemainingTime();let t=this.getRemainingTime()+this.skipOffset_-this.getDuration();return Math.max(t,0)}canSkipNow(){return this.getTimeUntilSkippable()==0}skip(){this.isSkipped_=!0,this.video.currentTime+=this.getRemainingTime()}isLinear(){return this.isLinear_}getSequenceLength(){return this.totalAds_?this.totalAds_:1}getPositionInSequence(){return this.adPosition_?this.adPosition_:1}getTitle(){return this.ad_.adTitle}getVastAdId(){return this.ad_.vastAdId||""}getAdId(){return this.ad_.adId}getCreativeAdId(){return this.ad_.creativeId}getTimeOffset(){return this.ad_.startTimeInSeconds}release(){this.ad_=null,this.adPosition_=null,this.totalAds_=null}isSkipped(){return this.isSkipped_}};/*! @license
|
|
535
|
+
* Shaka Player
|
|
536
|
+
* Copyright 2016 Google LLC
|
|
537
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
538
|
+
*/var be=class be{constructor(e,t,i,r){l(this,"adContainer_");l(this,"networkingEngine_");l(this,"config_");l(this,"video_");l(this,"streamPromise_");l(this,"streamRequestStartTime_");l(this,"onEvent_");l(this,"isLive_");l(this,"snapForwardTime_");l(this,"adBreaks_");l(this,"playedAds_");l(this,"ad_");l(this,"mediaTailorAd_");l(this,"mediaTailorAdBreak_");l(this,"staticResources_");l(this,"adListeners_");l(this,"eventsSent_");l(this,"trackingUrl_");l(this,"firstTrackingRequest_");l(this,"backupUrl_");l(this,"currentCuePoints_");l(this,"eventManager_");l(this,"adBreakListenersAttached_");this.adContainer_=e,this.networkingEngine_=t,this.config_=null,this.video_=i,this.streamPromise_=null,this.streamRequestStartTime_=NaN,this.onEvent_=r,this.isLive_=!1,this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_=new Set,this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null,this.staticResources_=new Map,this.adListeners_=[],this.eventsSent_=new Set,this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.currentCuePoints_=[],this.eventManager_=new ue,this.adBreakListenersAttached_=!1}configure(e){this.config_=e}streamRequest(e,t,i){return this.streamPromise_?Promise.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.CURRENT_DAI_REQUEST_NOT_FINISHED)):(this.streamPromise_=Promise.withResolvers(),this.requestSessionInfo_(e,t),this.backupUrl_=i||"",this.streamRequestStartTime_=Date.now()/1e3,this.streamPromise_.promise)}addTrackingUrl(e){this.trackingUrl_=e,this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",0)))}stop(){for(let e of this.adListeners_)this.eventManager_.unlisten(e.target,e.type,e.listener);this.onEnded_(),this.adListeners_=[],this.eventsSent_.clear(),this.trackingUrl_="",this.firstTrackingRequest_=!0,this.backupUrl_="",this.snapForwardTime_=null,this.adBreaks_=[],this.playedAds_.clear(),this.staticResources_.clear(),this.streamPromise_=null,this.adBreakListenersAttached_=!1}release(){this.stop(),this.eventManager_&&this.eventManager_.release()}onManifestUpdated(e){this.isLive_=e,this.trackingUrl_!=""&&(this.requestTrackingInfo_(this.trackingUrl_,this.firstTrackingRequest_),this.firstTrackingRequest_=!1)}getCuePoints(){let e=new Map;for(let t of this.adBreaks_)for(let i of t.ads){let r=i.startTimeInSeconds,s=r+i.durationInSeconds;if(!isFinite(r)||!isFinite(s)||s<=r)continue;let n=`${r.toFixed(1)}|${s.toFixed(1)}`;e.has(n)||e.set(n,{start:r,end:s})}return Array.from(e.values()).sort((t,i)=>t.start-i.start)}async requestSessionInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_SESSION_INFO},s=K.makeRequest([e],K.defaultRetryParameters());if(s.method="POST",t){let a=JSON.stringify(t);s.body=q.toUTF8(a)}let n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=q.fromUTF8(a.data),c=JSON.parse(o);if(c.manifestUrl&&c.trackingUrl){this.trackingUrl_=fe.resolve(e,c.trackingUrl);let u=Date.now()/1e3-this.streamRequestStartTime_;this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",u)));let m=fe.resolve(e,c.manifestUrl);this.streamPromise_.resolve(m),this.streamPromise_=null}else throw new Error("Insufficient data from MediaTailor.")}catch(a){if(!this.backupUrl_.length){this.streamPromise_.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.MEDIATAILOR_REQUEST_FAILED)),this.streamPromise_=null;return}p.warning("MediaTailor request returned an error. Falling back to the backup asset uri."),this.streamPromise_.resolve(this.backupUrl_),this.streamPromise_=null}}async requestTrackingInfo_(e,t){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_INFO},s=K.makeRequest([e],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{let a=await n.promise,o=[],c=q.fromUTF8(a.data),d=JSON.parse(c);if(d.avails.length>0){if(Ne.alphabeticalKeyOrderStringify(this.adBreaks_)!=Ne.alphabeticalKeyOrderStringify(d.avails)){this.adBreaks_=d.avails;for(let u of this.adBreaks_)for(let m of u.nonLinearAdsList)for(let f of m.nonLinearAdList)this.requestStaticResource_(f);o=this.getCuePoints(),this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o)))}}else this.adBreaks_.length&&this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",o))),this.onEnded_(),this.adBreaks_=[];t&&(this.isLive_||o.length>0)&&this.setupAdBreakListeners_()}catch(a){p.warning("Error fetching tracking info",a)}}async requestStaticResource_(e){if(!e.staticResource)return;let t=this.getCacheKeyForNonLinear_(e);if(this.staticResources_.has(t))return;let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_STATIC_RESOURCE},s=K.makeRequest([e.staticResource],K.defaultRetryParameters()),n=this.networkingEngine_.request(i,s,r);try{this.staticResources_.set(t,[]);let a=await n.promise,o=q.fromUTF8(a.data),d=JSON.parse(o).apps;this.staticResources_.set(t,d)}catch(a){this.staticResources_.delete(t)}}getCacheKeyForNonLinear_(e){return[e.adId,e.adParameters,e.adSystem,e.adTitle,e.creativeAdId,e.creativeId,e.creativeSequence,e.height,e.width,e.staticResource].join("|")}setupAdBreakListeners_(){this.adBreakListenersAttached_||(this.adBreakListenersAttached_=!0,this.onTimeupdate_(),this.isLive_||(this.checkForSnapback_(),this.eventManager_.listen(this.video_,"seeked",()=>{this.checkForSnapback_()}),this.eventManager_.listen(this.video_,"ended",()=>{this.onEnded_()})),this.eventManager_.listen(this.video_,"timeupdate",()=>{this.onTimeupdate_()}))}checkForSnapback_(){let e=this.video_.currentTime;if(this.config_&&this.config_.disableSnapback||e==0||this.snapForwardTime_!=null)return;let t,i;for(let r of this.adBreaks_)for(let s of r.ads)if(!i)s.startTimeInSeconds<e&&(i=s,t=r);else if(i.durationInSeconds>0&&s.startTimeInSeconds<e&&s.startTimeInSeconds>i.startTimeInSeconds+i.durationInSeconds){i=s,t=r;break}t&&i&&!this.playedAds_.has(i.adId)&&(p.info("Seeking back to the start of the ad break at "+t.startTimeInSeconds+" and will return to "+e),this.snapForwardTime_=e,this.video_.currentTime=t.startTimeInSeconds)}onAdBreakEnded_(){let e=this.video_.currentTime;this.snapForwardTime_&&this.snapForwardTime_>e&&(this.video_.currentTime=this.snapForwardTime_),this.snapForwardTime_=null}onTimeupdate_(){if(!this.video_.duration||!this.ad_&&!this.adBreaks_.length)return;let e=this.video_.currentTime,t=!1;if(this.ad_){t=!0,v.assert(this.mediaTailorAd_,"Ad should be defined"),this.sendInProgressEvents_(e,this.mediaTailorAd_);let i=this.ad_.getRemainingTime(),r=this.ad_.getDuration();this.ad_.canSkipNow()&&i>0&&r>0&&this.sendTrackingEvent_(be.SKIP_STATE_CHANGED_),r>0&&(i<=0||i>r)&&this.onEnded_()}(!this.ad_||!this.ad_.isLinear())&&(this.checkLinearAds_(e),!this.ad_&&this.adContainer_&&this.checkNonLinearAds_(e),t&&!this.ad_&&this.onAdBreakEnded_())}sendInProgressEvents_(e,t){let i=t.startTimeInSeconds+.25*t.durationInSeconds,r=t.startTimeInSeconds+.5*t.durationInSeconds,s=t.startTimeInSeconds+.75*t.durationInSeconds;e>=i&&!this.eventsSent_.has(be.FIRSTQUARTILE_)?(this.eventsSent_.add(be.FIRSTQUARTILE_),this.sendTrackingEvent_(be.FIRSTQUARTILE_)):e>=r&&!this.eventsSent_.has(be.MIDPOINT_)?(this.eventsSent_.add(be.MIDPOINT_),this.sendTrackingEvent_(be.MIDPOINT_)):e>=s&&!this.eventsSent_.has(be.THIRDQUARTILE_)&&(this.eventsSent_.add(be.THIRDQUARTILE_),this.sendTrackingEvent_(be.THIRDQUARTILE_))}checkLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_&&this.ad_.isLinear())break;for(let i=0;i<t.ads.length;i++){let r=t.ads[i],s=r.startTimeInSeconds,n=r.startTimeInSeconds+r.durationInSeconds;if(s<=e&&n>e){if(!(this.config_&&this.config_.disablePlayedLinearAdSkip)&&this.playedAds_.has(r.adId)){if(this.video_.ended)continue;this.video_.currentTime=n;return}this.onEnded_(),this.mediaTailorAdBreak_=t,this.ad_=new Os(r,i+1,t.ads.length,!0,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}checkNonLinearAds_(e){for(let t of this.adBreaks_){if(this.ad_)break;for(let i=0;i<t.nonLinearAdsList.length;i++){let r=t.nonLinearAdsList[i];if(!r.nonLinearAdList.length)continue;let s=t.startTimeInSeconds,n=this.getCacheKeyForNonLinear_(r.nonLinearAdList[0]),a=this.staticResources_.get(n);if(s<=e&&a&&a.length){this.onEnded_(),this.displayNonLinearAd_(a),this.mediaTailorAdBreak_=t,this.ad_=new Os(r,i+1,t.ads.length,!1,this.video_),this.mediaTailorAd_=r,i===0&&this.sendTrackingEvent_(be.BREAK_START_),this.setupCurrentAdListeners_();break}}}}displayNonLinearAd_(e){for(let t of e){if(!t.data.source.length)continue;let i=document.createElement("img");i.src=t.data.source[0].url,i.style.top=(t.placeholder.top||0)+"%",i.style.height=100-(t.placeholder.top||0)+"%",i.style.left=(t.placeholder.left||0)+"%",i.style.maxWidth=100-(t.placeholder.left||0)+"%",i.style.objectFit="contain",i.style.position="absolute",this.adContainer_.appendChild(i)}}onEnded_(){if(this.ad_&&this.mediaTailorAd_){this.adContainer_&&Ge.removeAllChildren(this.adContainer_),this.isLive_||this.playedAds_.add(this.mediaTailorAd_.adId),this.removeCurrentAdListeners_(this.ad_.isSkipped());let e=this.ad_.getPositionInSequence(),t=this.ad_.getSequenceLength();e===t&&this.sendTrackingEvent_(be.BREAK_END_),this.ad_=null,this.mediaTailorAd_=null,this.mediaTailorAdBreak_=null}}setupCurrentAdListeners_(){let e=!1;this.video_.paused?e=!0:(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_)),this.adListeners_.push({target:this.video_,type:"volumechange",listener:()=>{this.sendTrackingEvent_(this.video_.muted?be.MUTE_:be.UNMUTE_)}}),this.adListeners_.push({target:this.video_,type:"play",listener:()=>{e?(this.sendTrackingEvent_(be.IMPRESSION_),this.sendTrackingEvent_(be.START_),e=!1):this.sendTrackingEvent_(be.RESUME_)}}),this.adListeners_.push({target:this.video_,type:"pause",listener:()=>{this.sendTrackingEvent_(be.PAUSE_)}});for(let t of this.adListeners_)this.eventManager_.listen(t.target,t.type,t.listener)}removeCurrentAdListeners_(e=!1){e?this.sendTrackingEvent_(be.SKIPPED_):this.sendTrackingEvent_(be.COMPLETE_);for(let t of this.adListeners_)this.eventManager_.unlisten(t.target,t.type,t.listener);this.adListeners_=[],this.eventsSent_.clear()}sendTrackingEvent_(e){if(!this.mediaTailorAd_||!this.mediaTailorAdBreak_)return;let t=this.mediaTailorAd_.trackingEvents.find(i=>i.eventType==e);if(t||(t=this.mediaTailorAdBreak_.adBreakTrackingEvents.find(i=>i.eventType==e)),t&&this.config_&&!this.config_.disableTrackingEvents&&!(this.config_.disableTrackingForPlayedLinearAds&&this.mediaTailorAd_&&this.playedAds_.has(this.mediaTailorAd_.adId))){let i=K.RequestType.ADS,r={type:K.AdvancedRequestType.MEDIATAILOR_TRACKING_EVENT};for(let s of t.beaconUrls){if(!s||s=="")continue;let n=K.makeRequest([s],K.defaultRetryParameters());n.method="POST",this.networkingEngine_.request(i,n,r)}}switch(e){case be.IMPRESSION_:this.onEvent_(new U(G.AD_IMPRESSION));break;case be.START_:this.onEvent_(new U(G.AD_STARTED,new Map().set("ad",this.ad_)));break;case be.MUTE_:this.onEvent_(new U(G.AD_MUTED));break;case be.UNMUTE_:this.onEvent_(new U(G.AD_VOLUME_CHANGED));break;case be.RESUME_:this.onEvent_(new U(G.AD_RESUMED));break;case be.PAUSE_:this.onEvent_(new U(G.AD_PAUSED));break;case be.FIRSTQUARTILE_:this.onEvent_(new U(G.AD_FIRST_QUARTILE));break;case be.MIDPOINT_:this.onEvent_(new U(G.AD_MIDPOINT));break;case be.THIRDQUARTILE_:this.onEvent_(new U(G.AD_THIRD_QUARTILE));break;case be.COMPLETE_:this.onEvent_(new U(G.AD_COMPLETE)),this.onEvent_(new U(G.AD_STOPPED));break;case be.SKIPPED_:this.onEvent_(new U(G.AD_SKIPPED)),this.onEvent_(new U(G.AD_STOPPED));break;case be.BREAK_START_:this.adContainer_&&this.adContainer_.setAttribute("ad-active","true");break;case be.BREAK_END_:this.adContainer_&&this.adContainer_.removeAttribute("ad-active");break;case be.SKIP_STATE_CHANGED_:this.onEvent_(new U(G.AD_SKIP_STATE_CHANGED));break}}};l(be,"IMPRESSION_","impression"),l(be,"START_","start"),l(be,"MUTE_","mute"),l(be,"UNMUTE_","unmute"),l(be,"RESUME_","resume"),l(be,"PAUSE_","pause"),l(be,"FIRSTQUARTILE_","firstQuartile"),l(be,"MIDPOINT_","midpoint"),l(be,"THIRDQUARTILE_","thirdQuartile"),l(be,"COMPLETE_","complete"),l(be,"SKIPPED_","skip"),l(be,"BREAK_START_","breakStart"),l(be,"BREAK_END_","breakEnd"),l(be,"SKIP_STATE_CHANGED_","skipStateChanged");var Cn=be;/*! @license
|
|
539
|
+
* Shaka Player
|
|
540
|
+
* Copyright 2016 Google LLC
|
|
541
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
542
|
+
*/var xn=class extends Wt{constructor(t,i){super(i);l(this,"ad_");l(this,"adProgressData_");this.ad_=t,this.adProgressData_=null}setProgressData(t){this.adProgressData_=t}isClientRendering(){return!1}hasCustomClick(){return!0}getDuration(){return this.adProgressData_?this.adProgressData_.duration:-1}getRemainingTime(){return this.adProgressData_?this.adProgressData_.duration-this.adProgressData_.currentTime:-1}isSkippable(){return this.ad_.isSkippable()}getTimeUntilSkippable(){let t=this.ad_.getSkipTimeOffset(),i=this.getRemainingTime()-t;return Math.max(i,0)}canSkipNow(){return this.getTimeUntilSkippable()==0}skip(){this.video.currentTime+=this.getRemainingTime()}getSequenceLength(){let t=this.ad_.getAdPodInfo();return t==null?1:t.getTotalAds()}getPositionInSequence(){let t=this.ad_.getAdPodInfo();return t==null?1:t.getAdPosition()}getTitle(){return this.ad_.getTitle()}getDescription(){return this.ad_.getDescription()}getVastMediaHeight(){return this.ad_.getVastMediaHeight()}getVastMediaWidth(){return this.ad_.getVastMediaWidth()}getAdId(){return this.ad_.getAdId()}getCreativeAdId(){return this.ad_.getCreativeAdId()}getAdvertiserName(){return this.ad_.getAdvertiserName()}getTimeOffset(){let t=this.ad_.getAdPodInfo();return t==null?0:t.getTimeOffset()}getPodIndex(){let t=this.ad_.getAdPodInfo();return t==null?0:t.getPodIndex()}release(){this.ad_=null,this.adProgressData_=null}};/*! @license
|
|
543
|
+
* Shaka Player
|
|
544
|
+
* Copyright 2016 Google LLC
|
|
545
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
546
|
+
*/var wn=class{constructor(e,t,i,r){l(this,"adContainer_");l(this,"video_");l(this,"config_");l(this,"streamPromise_");l(this,"streamRequestStartTime_");l(this,"onEvent_");l(this,"isLiveContent_");l(this,"snapForwardTime_");l(this,"ad_");l(this,"adProgressData_");l(this,"backupUrl_");l(this,"currentCuePoints_");l(this,"eventManager_");l(this,"streamManager_");this.adContainer_=e,this.video_=t,this.config_=null,this.streamPromise_=null,this.streamRequestStartTime_=NaN,this.onEvent_=r,this.isLiveContent_=!1,this.snapForwardTime_=null,this.ad_=null,this.adProgressData_=null,this.backupUrl_="",this.currentCuePoints_=[],this.eventManager_=new ue;let s=new google.ima.dai.api.UiSettings;s.setLocale(i),this.streamManager_=new google.ima.dai.api.StreamManager(this.video_,this.adContainer_,s),this.onEvent_(new U(G.IMA_STREAM_MANAGER_LOADED,new Map().set("imaStreamManager",this.streamManager_))),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.LOADED,n=>{p.info("Ad SS Loaded"),this.onLoaded_(n)}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.ERROR,()=>{p.info("Ad SS Error"),this.onError_()}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.AD_BREAK_STARTED,()=>{p.info("Ad Break Started")}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.STARTED,n=>{p.info("Ad Started"),this.onAdStart_(n)}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.AD_BREAK_ENDED,()=>{p.info("Ad Break Ended"),this.onAdBreakEnded_()}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.AD_PROGRESS,n=>{this.onAdProgress_(n)}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.FIRST_QUARTILE,()=>{p.info("Ad event: First Quartile"),this.onEvent_(new U(G.AD_FIRST_QUARTILE))}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.MIDPOINT,()=>{p.info("Ad event: Midpoint"),this.onEvent_(new U(G.AD_MIDPOINT))}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.THIRD_QUARTILE,()=>{p.info("Ad event: Third Quartile"),this.onEvent_(new U(G.AD_THIRD_QUARTILE))}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.COMPLETE,()=>{p.info("Ad event: Complete"),this.onEvent_(new U(G.AD_COMPLETE)),this.onEvent_(new U(G.AD_STOPPED)),this.adContainer_.removeAttribute("ad-active"),this.ad_=null}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.SKIPPED,()=>{p.info("Ad event: Skipped"),this.onEvent_(new U(G.AD_SKIPPED)),this.onEvent_(new U(G.AD_STOPPED))}),this.eventManager_.listen(this.streamManager_,google.ima.dai.api.StreamEvent.Type.CUEPOINTS_CHANGED,n=>{p.info("Ad event: Cue points changed"),this.onCuePointsChanged_(n)})}configure(e){this.config_=e}streamRequest(e,t){return this.streamPromise_?Promise.reject(new h(h.Severity.RECOVERABLE,h.Category.ADS,h.Code.CURRENT_DAI_REQUEST_NOT_FINISHED)):(e instanceof google.ima.dai.api.LiveStreamRequest&&(this.isLiveContent_=!0),this.streamPromise_=Promise.withResolvers(),this.streamManager_.requestStream(e),this.backupUrl_=t||"",this.streamRequestStartTime_=Date.now()/1e3,this.streamPromise_.promise)}replaceAdTagParameters(e){this.streamManager_.replaceAdTagParameters(e)}stop(){this.streamManager_.reset(),this.backupUrl_="",this.snapForwardTime_=null,this.currentCuePoints_=[]}release(){this.stop(),this.eventManager_&&this.eventManager_.release()}onTimedMetadata(e,t,i){this.streamManager_.processMetadata(e,t,i)}onCueMetadataChange(e){if(e.key&&e.data){let t={};t[e.key]=e.data,this.streamManager_.onTimedMetadata(t)}}getCuePoints(){return this.currentCuePoints_}checkForSnapback_(){let e=this.video_.currentTime;if(this.config_&&this.config_.disableSnapback||e==0)return;this.streamManager_.streamTimeForContentTime(e);let t=this.streamManager_.previousCuePointForStreamTime(e);t&&!t.played&&(p.info("Seeking back to the start of the ad break at "+t.start+" and will return to "+e),this.snapForwardTime_=e,this.video_.currentTime=t.start)}onAdStart_(e){v.assert(this.streamManager_,"Should have a stream manager at this point!");let t=e.getAd();this.ad_=new xn(t,this.video_),this.adProgressData_&&this.ad_.setProgressData(this.adProgressData_),this.onEvent_(new U(G.AD_STARTED,new Map().set("ad",this.ad_))),this.adContainer_.setAttribute("ad-active","true")}onAdBreakEnded_(){this.adContainer_.removeAttribute("ad-active");let e=this.video_.currentTime;this.snapForwardTime_&&this.snapForwardTime_>e&&(this.video_.currentTime=this.snapForwardTime_,this.snapForwardTime_=null)}onLoaded_(e){let i=Date.now()/1e3-this.streamRequestStartTime_;this.onEvent_(new U(G.ADS_LOADED,new Map().set("loadTime",i)));let s=e.getStreamData().url;this.streamPromise_.resolve(s),this.streamPromise_=null,this.isLiveContent_||this.eventManager_.listen(this.video_,"seeked",()=>{this.checkForSnapback_()})}onError_(){if(!this.backupUrl_.length){this.streamPromise_.reject("IMA Stream request returned an error and there was no backup asset uri provided."),this.streamPromise_=null;return}p.warning("IMA stream request returned an error. Falling back to the backup asset uri."),this.streamPromise_.resolve(this.backupUrl_),this.streamPromise_=null}onAdProgress_(e){let i=e.getStreamData().adProgressData;this.adProgressData_=i,this.ad_&&this.ad_.setProgressData(this.adProgressData_)}onCuePointsChanged_(e){let t=e.getStreamData(),i=[];for(let r of t.cuepoints){let s={start:r.start,end:r.end};i.push(s)}this.currentCuePoints_=i,this.onEvent_(new U(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",i)))}};/*! @license
|
|
547
|
+
* Shaka Player
|
|
548
|
+
* Copyright 2016 Google LLC
|
|
549
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
550
|
+
*/var Mn=class extends Wt{constructor(t,i){super(t);l(this,"info_");this.info_=i}isClientRendering(){return!1}getDuration(){return this.info_.endTime?this.info_.endTime-this.info_.startTime:-1}getRemainingTime(){return this.info_.endTime?this.info_.endTime-this.video.currentTime:-1}getSequenceLength(){return this.info_.sequenceLength}getPositionInSequence(){return this.info_.position}getTimeOffset(){return this.info_.startTime}};/*! @license
|
|
551
|
+
* Shaka Player
|
|
552
|
+
* Copyright 2016 Google LLC
|
|
553
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
554
|
+
*/var Or=class y{constructor(e,t){l(this,"config_");l(this,"player_");l(this,"onEvent_");l(this,"video_");l(this,"playbackStarted_");l(this,"trackings_");l(this,"currentTracking_");l(this,"eventManager_");l(this,"playbackEventManager_");l(this,"trackingEventManager_");l(this,"pollTimer_");this.config_=null,this.player_=e,this.onEvent_=t,this.video_=null,this.playbackStarted_=!1,this.trackings_=new Map,this.currentTracking_=null,this.eventManager_=new ue,this.playbackEventManager_=new ue,this.trackingEventManager_=new ue,this.eventManager_.listen(this.player_,"loading",()=>{this.playbackStart_()}),this.eventManager_.listen(this.player_,"unloading",()=>{this.playbackEnd_()}),this.pollTimer_=new ae(()=>{if(this.trackings_.size){let i=this.player_.getLoadMode();if(i==dt.LoadMode.DESTROYED||i==dt.LoadMode.NOT_LOADED)return;let r=!1,s=Array.from(this.trackings_.values()),n=this.player_.seekRange();for(let a of s){if(a==this.currentTracking_)continue;let o=a.endTime||a.startTime;if(n.start-o>=1){let c=JSON.stringify(a);this.trackings_.delete(c),r=!0}}r&&this.cuepointsChanged_()}}),this.player_.getAssetUri()&&this.playbackStart_()}configure(e){this.config_=e}stop(){this.playbackEnd_()}release(){this.stop(),this.player_=null,this.eventManager_&&this.eventManager_.release(),this.playbackEventManager_&&this.playbackEventManager_.release(),this.trackingEventManager_&&this.trackingEventManager_.release(),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null)}addMetadata(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.type))return;let t=e.values.find(n=>n.key=="X-AD-CREATIVE-SIGNALING");if(!t)return;let i=t.data,r;try{r=JSON.parse(window.atob(i))}catch(n){return}if(!r.payload)return;let s=[];for(let n=0;n<r.payload.length;n++){let a=r.payload[n];v.assert(typeof e.startTime=="number","startTime must not be null!");let o=e.startTime+a.start||0,c=a.duration?e.startTime+a.duration:e.endTime;if(a&&a.tracking){let d={startTime:o,endTime:c,tracking:G.createTrackingFromEvents(a.tracking),position:n+1,sequenceLength:r.payload.length};s.push(d)}}this.addTracking_(s)}addRegion(e){if(!this.playbackStarted_||!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)return;let t=I.getTextContents(e.eventNode);if(!t)return;let i;try{i=JSON.parse(t)}catch(s){return}if(!i.payload)return;let r=[];for(let s=0;s<i.payload.length;s++){let n=i.payload[s],a=e.startTime+n.start||0,o=n.duration?e.startTime+n.duration:e.endTime;if(n&&n.tracking){let c={startTime:a,endTime:o,tracking:G.createTrackingFromEvents(n.tracking),position:s+1,sequenceLength:i.payload.length};r.push(c)}}this.addTracking_(r)}addTracking_(e){if(!this.playbackStarted_||!e.length)return;if(!this.player_.isFullyLoaded()){this.playbackEventManager_.listenOnce(this.player_,"loaded",()=>{this.addTracking_(e)});return}let t=!1;for(let i of e){let r=JSON.stringify(i);this.trackings_.getOrInsert(r,i)===i&&(t=!0)}t&&this.cuepointsChanged_(),this.setupCurrentTracking_(),this.playbackEventManager_.listen(this.video_,"timeupdate",()=>this.setupCurrentTracking_()),this.pollTimer_&&this.player_.isLive()&&this.pollTimer_.tickEvery(1)}playbackStart_(){this.playbackStarted_||(this.playbackStarted_=!0,this.video_=this.player_.getMediaElement())}playbackEnd_(){this.playbackStarted_&&(this.playbackStarted_=!1,this.video_=null,this.playbackEventManager_.removeAll(),this.trackings_.clear(),this.unSetupCurrentTracking_(),this.trackingEventManager_.removeAll(),this.pollTimer_&&this.pollTimer_.stop())}setupCurrentTracking_(){if(!this.trackings_.size||this.currentTracking_||!this.video_.duration)return;let e=this.video_.currentTime;for(let i of this.trackings_.values())if(i.startTime<=e&&i.endTime&&e<=i.endTime&&!this.player_.isEnded()){this.currentTracking_=i;break}if(!this.currentTracking_)return;p.info("Found tracking",this.currentTracking_);let t=!1;if(!this.player_.isLive()){let i=this.player_.seekRange();t=i.start===this.currentTracking_.startTime&&i.end===this.currentTracking_.endTime}this.createBaseSetupTracking_(),t?this.createSingleSetupTracking_():this.createSlidingSetupTracking_()}unSetupCurrentTracking_(e=!1){this.currentTracking_&&(e||(this.sendEvent_(G.AD_SKIPPED),this.sendEvent_(G.AD_STOPPED)),this.trackingEventManager_.removeAll(),this.currentTracking_=null)}createBaseSetupTracking_(){v.assert(this.currentTracking_,"AdTrackingInfo must not be null!");let e=new Mn(this.video_,this.currentTracking_);this.sendEvent_(G.AD_IMPRESSION),this.sendEvent_(G.AD_STARTED,new Map().set("ad",e)),this.trackingEventManager_.listen(this.player_,"error",t=>{this.sendEvent_(G.AD_ERROR,new Map().set("originalEvent",t))}),this.trackingEventManager_.listen(this.video_,"play",()=>{this.sendEvent_(G.AD_RESUMED)}),this.trackingEventManager_.listen(this.video_,"pause",()=>{this.sendEvent_(G.AD_PAUSED)}),this.trackingEventManager_.listen(this.video_,"volumechange",()=>{this.video_.muted?this.sendEvent_(G.AD_MUTED):this.sendEvent_(G.AD_VOLUME_CHANGED)})}createSingleSetupTracking_(){this.trackingEventManager_.listenOnce(this.player_,"firstquartile",()=>{this.sendEvent_(G.AD_FIRST_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"midpoint",()=>{this.sendEvent_(G.AD_MIDPOINT)}),this.trackingEventManager_.listenOnce(this.player_,"thirdquartile",()=>{this.sendEvent_(G.AD_THIRD_QUARTILE)}),this.trackingEventManager_.listenOnce(this.player_,"complete",()=>{this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0)})}createSlidingSetupTracking_(){let e=this.currentTracking_.endTime;if(!this.player_.isLive()||!e){let s=this.player_.seekRange();e=Math.min(s.end,this.currentTracking_.endTime||1/0)}let t=e-this.currentTracking_.startTime,i=-1,r=(s,n)=>(jt.isFloatEqual(s,n)||n>s)&&i<s?(i=s,!0):!1;this.trackingEventManager_.listen(this.video_,"timeupdate",()=>{let n=(this.video_.currentTime-this.currentTracking_.startTime)/t;if(isNaN(n))return;let a=n*100;r(25,a)?this.sendEvent_(G.AD_FIRST_QUARTILE):r(50,a)?this.sendEvent_(G.AD_MIDPOINT):r(75,a)?this.sendEvent_(G.AD_THIRD_QUARTILE):(r(100,a)||a>100)&&(this.sendEvent_(G.AD_STOPPED),this.sendEvent_(G.AD_COMPLETE),this.unSetupCurrentTracking_(!0))})}sendEvent_(e,t){p.info("SVTA event",e),this.onEvent_(new U(e,t)),this.processTrackingEvent_(e)}processTrackingEvent_(e){if(this.config_.disableTrackingEvents)return;let t=this.currentTracking_&&this.currentTracking_.tracking;G.fireTrackingEvents(t,e,this.player_.getNetworkingEngine())}cuepointsChanged_(){let e=[];if(this.trackings_.size)for(let t of this.trackings_.values()){let i={start:t.startTime,end:t.endTime};!e.find(s=>i.start==s.start&&i.end==s.end)&&e.push(i)}this.sendEvent_(G.CUEPOINTS_CHANGED,new Map().set("cuepoints",e))}static isValidRegion(e){return!(!y.validSchemes_.has(e.schemeIdUri)||!e.eventNode)}static isValidMetadata(e){return!!y.validSchemes_.has(e.type)}};Or.validSchemes_=new Set().add("urn:svta:advertising-wg:ad-id-signaling").add("urn:svta:advertising-wg:ad-creative-signaling");/*! @license
|
|
555
|
+
* Shaka Player
|
|
556
|
+
* Copyright 2016 Google LLC
|
|
557
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
558
|
+
*/var Rn=class extends Le{constructor(t){super();l(this,"player_");l(this,"interstitialAdManager_");l(this,"csAdManager_");l(this,"mtAdManager_");l(this,"ssAdManager_");l(this,"svtaAdManager_");l(this,"stats_");l(this,"locale_");l(this,"config_");l(this,"currentAd_");l(this,"clientSideAdContainer_");l(this,"serverSideAdContainer_");this.player_=t,this.interstitialAdManager_=null,this.csAdManager_=null,this.mtAdManager_=null,this.ssAdManager_=null,this.svtaAdManager_=null,this.stats_=new Ls,this.locale_=navigator.language,this.config_=null,this.currentAd_=null,this.clientSideAdContainer_=null,this.serverSideAdContainer_=null}setLocale(t){this.locale_=t}setContainers(t,i){this.clientSideAdContainer_=t,this.serverSideAdContainer_=i}configure(t){this.config_=t,this.interstitialAdManager_&&this.interstitialAdManager_.configure(this.config_),this.csAdManager_&&this.csAdManager_.configure(this.config_),this.ssAdManager_&&this.ssAdManager_.configure(this.config_),this.svtaAdManager_&&this.svtaAdManager_.configure(this.config_),this.mtAdManager_&&this.mtAdManager_.configure(this.config_)}release(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&(this.ssAdManager_.release(),this.ssAdManager_=null),this.mtAdManager_&&(this.mtAdManager_.release(),this.mtAdManager_=null),this.interstitialAdManager_&&(this.interstitialAdManager_.release(),this.interstitialAdManager_=null),this.svtaAdManager_&&(this.svtaAdManager_.release(),this.svtaAdManager_=null),super.release()}onAssetUnload(){this.csAdManager_&&(this.csAdManager_.release(),this.csAdManager_=null),this.ssAdManager_&&this.ssAdManager_.stop(),this.mtAdManager_&&this.mtAdManager_.stop(),this.interstitialAdManager_&&this.interstitialAdManager_.stop(),this.svtaAdManager_&&this.svtaAdManager_.stop(),this.currentAd_&&(this.processAndDispatchEvent_(new U(G.AD_STOPPED)),this.processAndDispatchEvent_(new U(G.AD_CONTENT_ATTACH_REQUESTED))),this.stats_=new Ls}initClientSide_(t){if(!window.google||!google.ima||!google.ima.AdsLoader)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_IMA_SDK_MISSING);if(this.csAdManager_&&this.csAdManager_.release(),!this.clientSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.CS_AD_CONTAINER_MISSING);let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!"),this.csAdManager_=new Sn(this.clientSideAdContainer_,i,this.locale_,t,r=>this.processAndDispatchEvent_(r)),v.assert(this.config_,"Config must not be null!"),this.csAdManager_.configure(this.config_)}requestClientSideAds(t,i){this.csAdManager_||this.initClientSide_(i),this.csAdManager_.requestAds(t)}updateClientSideAdsRenderingSettings(t){this.csAdManager_||this.initClientSide_(t),this.csAdManager_.updateAdsRenderingSettings(t)}initServerSide_(){if(!window.google||!google.ima||!google.ima.dai)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_IMA_SDK_MISSING);if(this.ssAdManager_&&this.ssAdManager_.release(),!this.serverSideAdContainer_)throw new h(h.Severity.CRITICAL,h.Category.ADS,h.Code.SS_AD_CONTAINER_MISSING);let t=this.player_.getMediaElement();v.assert(t,"Video must not be null!"),this.ssAdManager_=new wn(this.serverSideAdContainer_,t,this.locale_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.ssAdManager_.configure(this.config_)}requestServerSideStream(t,i=""){this.ssAdManager_||this.initServerSide_(),t.adTagParameters||(t.adTagParameters={});let r=t.adTagParameters;return(r.mpt||r.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.adTagParameters.mpt="shaka-player",t.adTagParameters.mpv=dt.version,this.ssAdManager_.streamRequest(t,i)}replaceServerSideAdTagParameters(t){this.ssAdManager_||this.initServerSide_(),(t.mpt||t.mpv)&&p.alwaysWarn('You have attempted to set "mpt" and/or "mpv" parameters of the ad tag. Please note that those parameters are used for Shaka adoption tracking and will be overridden.'),t.mpt="Shaka Player",t.mpv=dt.version,this.ssAdManager_.replaceAdTagParameters(t)}initMediaTailor_(){this.mtAdManager_&&this.mtAdManager_.release();let t=this.serverSideAdContainer_;t||p.warning("Init Media Tailor without a container causes overlays to not be displayed.");let i=this.player_.getMediaElement();v.assert(i,"Video must not be null!");let r=this.player_.getNetworkingEngine();v.assert(r,"There should be a net engine."),this.mtAdManager_=new Cn(t,r,i,s=>this.processAndDispatchEvent_(s)),v.assert(this.config_,"Config must not be null!"),this.mtAdManager_.configure(this.config_)}requestMediaTailorStream(t,i,r=""){return this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.streamRequest(t,i,r)}addMediaTailorTrackingUrl(t){this.mtAdManager_||this.initMediaTailor_(),this.mtAdManager_.addTrackingUrl(t)}initInterstitial_(){let t=this.clientSideAdContainer_;t||p.info("Initializing interstitials without ad container"),this.interstitialAdManager_&&this.interstitialAdManager_.release(),this.interstitialAdManager_=new An(t,this.player_,i=>this.processAndDispatchEvent_(i)),v.assert(this.config_,"Config must not be null!"),this.interstitialAdManager_.configure(this.config_)}addCustomInterstitial(t){this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addInterstitials([t])}addAdUrlInterstitial(t){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.addAdUrlInterstitial(t)}getInterstitialPlayer(){return this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_.getPlayer()}initSVTA_(){this.svtaAdManager_&&this.svtaAdManager_.release(),this.svtaAdManager_=new Or(this.player_,t=>this.processAndDispatchEvent_(t)),v.assert(this.config_,"Config must not be null!"),this.svtaAdManager_.configure(this.config_)}getCuePoints(){let t=[];return this.ssAdManager_&&(t=t.concat(this.ssAdManager_.getCuePoints())),this.mtAdManager_&&(t=t.concat(this.mtAdManager_.getCuePoints())),t}getStats(){return this.stats_.getBlob()}onManifestUpdated(t){this.mtAdManager_&&this.mtAdManager_.onManifestUpdated(t)}onHlsTimedMetadata(t,i){this.ssAdManager_&&this.ssAdManager_.onTimedMetadata("ID3",t.data,i)}onCueMetadataChange(t){this.ssAdManager_&&this.ssAdManager_.onCueMetadataChange(t)}async onHLSMetadata(t){if(t.type=="com.apple.quicktime.HLS"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&await this.interstitialAdManager_.addMetadata(t)}else if(t.type=="com.apple.hls.preload"){if(this.config_&&this.config_.disableHLSInterstitial)return;this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_&&this.interstitialAdManager_.addPreloadMetadata(t)}else Or.isValidMetadata(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addMetadata(t))}onDASHMetadata(t){if(t.schemeIdUri=="urn:google:dai:2018"){if(this.ssAdManager_){let r=t.schemeIdUri,s=t.eventNode?t.eventNode.attributes.messageData:null,n=t.startTime;this.ssAdManager_.onTimedMetadata(r,s,n)}}else if(Ns.isInterstitialRegion(t)){if(this.config_&&this.config_.disableDASHInterstitial)return;if(this.interstitialAdManager_||this.initInterstitial_(),this.interstitialAdManager_){let r=Ns.parseRegion(t);r&&this.interstitialAdManager_.addInterstitials([r])}}else Or.isValidRegion(t)&&(this.svtaAdManager_||this.initSVTA_(),this.svtaAdManager_.addRegion(t))}getCurrentAd(){return this.currentAd_}processAndDispatchEvent_(t){if(t&&t.type)switch(t.type){case G.ADS_LOADED:{let i=t.loadTime;this.stats_.addLoadTime(i);break}case G.AD_STARTED:{this.stats_.incrementStarted(),this.currentAd_=t.ad,this.currentAd_&&!this.currentAd_.isLinear()&&this.stats_.incrementOverlayAds();break}case G.AD_STOPPED:this.currentAd_=null;break;case G.AD_COMPLETE:this.stats_.incrementPlayedCompletely();break;case G.AD_SKIPPED:this.stats_.incrementSkipped();break;case G.AD_ERROR:this.stats_.incrementErrors();break}this.dispatchEvent(t)}};dt.setAdManagerFactory(y=>new Rn(y));/*! @license
|
|
559
|
+
* Shaka Player
|
|
560
|
+
* Copyright 2016 Google LLC
|
|
561
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
562
|
+
*/var gt=class gt{static serialize(e){return JSON.stringify(e,(t,i)=>{if(typeof i=="function")return;let r=i instanceof U;if(i instanceof Event||r){let s={};for(let n in i){let a=i[n];a&&typeof a=="object"?n=="detail"?s[n]=a:a instanceof Event||a instanceof U?s[n]=gt.unpackEvent_(a):r&&Array.isArray(a)&&(s[n]=a):n in Event||(s[n]=a)}return s}return i instanceof Error?gt.unpackError_(i):i instanceof TimeRanges?gt.unpackTimeRanges_(i):ArrayBuffer.isView(i)&&i.BYTES_PER_ELEMENT===1?gt.unpackUint8Array_(i):typeof i=="number"?isNaN(i)?"NaN":isFinite(i)?i:i<0?"-Infinity":"Infinity":i})}static deserialize(e){return JSON.parse(e,(t,i)=>i=="NaN"?NaN:i=="-Infinity"?-1/0:i=="Infinity"?1/0:i&&typeof i=="object"&&i.__type__=="TimeRanges"?gt.simulateTimeRanges_(i):i&&typeof i=="object"&&i.__type__=="Uint8Array"?gt.makeUint8Array_(i):i&&typeof i=="object"&&i.__type__=="Error"?gt.makeError_(i):i&&typeof i=="object"&&i.__type__=="Event"?gt.makeEvent_(i):i)}static unpackTimeRanges_(e){let t={__type__:"TimeRanges",length:e.length,start:[],end:[]};for(let{start:i,end:r}of Je.getBufferedInfo(e))t.start.push(i),t.end.push(r);return t}static simulateTimeRanges_(e){return{length:e.length,start:t=>e.start[t],end:t=>e.end[t]}}static unpackUint8Array_(e){return{__type__:"Uint8Array",entries:Array.from(e)}}static makeUint8Array_(e){return new Uint8Array(e.entries)}static unpackEvent_(e){return{__type__:"Event",event:gt.serialize(e)}}static makeEvent_(e){return gt.deserialize(e.event)}static unpackError_(e){let t=new Set(["name","message","stack"]);for(let r in e)t.add(r);for(let r of Object.getOwnPropertyNames(e))t.add(r);let i={};for(let r of t)i[r]=e[r];return{__type__:"Error",contents:i}}static makeError_(e){let t=e.contents,i=new Error(t.message);for(let r in t)i[r]=t[r];return i}};l(gt,"VideoEvents",["ended","play","playing","pause","pausing","ratechange","seeked","seeking","timeupdate","volumechange"]),l(gt,"VideoAttributes",["buffered","currentTime","duration","ended","loop","muted","paused","playbackRate","seeking","videoHeight","videoWidth","volume"]),l(gt,"VideoInitStateAttributes",["loop","playbackRate"]),l(gt,"VideoVoidMethods",["pause","play"]),l(gt,"PlayerInitState",[["getNonDefaultConfiguration","configure","getConfigurationForLowLatency","configurationForLowLatency"]]),l(gt,"PlayerVoidMethods",["cancelTrickPlay","configure","configurationForLowLatency","resetConfiguration","retryStreaming","selectAudioTrack","selectTextTrack","selectVariantTrack","selectVideoTrack","trickPlay","updateStartTime","goToLive","useTrickPlayTrackIfAvailable","setMaxHardwareResolution","renewLicense","retryLicensing"]),l(gt,"PlayerPromiseMethods",["addChaptersTrack","addTextTrackAsync","addThumbnailsTrack","getAllThumbnails","getChaptersAsync","getThumbnails","attach","attachCanvas","detach","load","unload"]),l(gt,"AdManagerVoidMethods",["setLocale","configure","requestClientSideAds","updateClientSideAdsRenderingSettings","addMediaTailorTrackingUrl","replaceServerSideAdTagParameters","addCustomInterstitial"]),l(gt,"AdManagerPromiseMethods",["requestMediaTailorStream","requestServerSideStream","addAdUrlInterstitial"]),l(gt,"CurrentAdVoidMethods",["skip","play","pause","setVolume","setMuted","resize"]),l(gt,"SHAKA_MESSAGE_NAMESPACE","urn:x-cast:com.google.shaka.v2"),l(gt,"GENERIC_MESSAGE_NAMESPACE","urn:x-cast:com.google.cast.media");var we=gt;we.PlayerGetterMethods=new Map().set("getAssetUri",2).set("getMimeType",2).set("getBufferFullness",1).set("getBufferedInfo",2).set("getExpiration",2).set("getKeyStatuses",2).set("getPlaybackRate",2).set("isAudioOnly",10).set("isBuffering",1).set("isInProgress",1).set("isLive",10).set("isDynamic",10).set("isVideoOnly",10).set("keySystem",10).set("seekRange",1).set("getLoadMode",10).set("getManifestType",10).set("isFullyLoaded",1).set("isEnded",1).set("getBandwidthEstimate",1).set("isRemotePlayback",1);we.LargePlayerGetterMethods=new Map().set("getConfiguration",4).set("getNonDefaultConfiguration",4).set("getConfigurationForLowLatency",4).set("getStats",5).set("getAudioTracks",2).set("getChaptersTracks",2).set("getImageTracks",2).set("getVideoTracks",2).set("getTextTracks",2).set("getVariantTracks",2).set("getFetchedPlaybackInfo",2).set("getAllMetadataRegions",1).set("getAllEmsgRegions",1).set("getAllTimelineRegions",1);we.PlayerGetterMethodsThatRequireLive=new Map().set("getPlayheadTimeAsDate",1).set("getPresentationStartTimeAsDate",20).set("getSegmentAvailabilityDuration",20).set("getLiveLatency",1);we.LargeAdManagerGetterMethods=new Map().set("getCuePoints",4).set("getStats",5);we.CurrentAdGetterMethods=new Map().set("needsSkipUI",20).set("isClientRendering",20).set("hasCustomClick",20).set("isUsingAnotherMediaElement",20).set("getDuration",1).set("getMinSuggestedDuration",1).set("getRemainingTime",1).set("getTimeUntilSkippable",1).set("isPaused",1).set("isSkippable",1).set("canSkipNow",1).set("getVolume",1).set("isMuted",1).set("isLinear",20).set("getSequenceLength",20).set("getPositionInSequence",20).set("getTitle",20).set("getDescription",20).set("getVastMediaBitrate",20).set("getVastMediaHeight",20).set("getVastMediaWidth",20).set("getVastAdId",20).set("getAdId",20).set("getCreativeAdId",20).set("getAdvertiserName",20).set("getMediaUrl",20).set("getTimeOffset",20).set("getPodIndex",20);/*! @license
|
|
563
|
+
* Shaka Player
|
|
564
|
+
* Copyright 2016 Google LLC
|
|
565
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
566
|
+
*/var De=class De{constructor(e,t,i,r,s,n,a){l(this,"receiverAppId_");l(this,"androidReceiverCompatible_");l(this,"statusChangeTimer_");l(this,"onFirstCastStateUpdate_");l(this,"hasJoinedExistingSession_");l(this,"onRemoteEvent_");l(this,"onResumeLocal_");l(this,"onInitStateRequired_");l(this,"apiReady_");l(this,"isCasting_");l(this,"receiverName_");l(this,"appData_");l(this,"onConnectionStatusChangedBound_");l(this,"onMessageReceivedBound_");l(this,"cachedProperties_");l(this,"nextAsyncCallId_");l(this,"asyncCallPromises_");l(this,"castPromise_");this.receiverAppId_=e,this.androidReceiverCompatible_=a,this.statusChangeTimer_=new ae(t),this.onFirstCastStateUpdate_=i,this.hasJoinedExistingSession_=!1,this.onRemoteEvent_=r,this.onResumeLocal_=s,this.onInitStateRequired_=n,this.apiReady_=!1,this.isCasting_=!1,this.receiverName_="",this.appData_=null,this.onConnectionStatusChangedBound_=()=>this.onConnectionStatusChanged_(),this.onMessageReceivedBound_=(o,c)=>this.onMessageReceived_(o,c),this.cachedProperties_={video:{},player:{},adManager:{},currentAd:{}},this.nextAsyncCallId_=0,this.asyncCallPromises_=new Map,this.castPromise_=null,De.instances_.add(this)}destroy(){return De.instances_.delete(this),this.rejectAllPromises_(),De.session_&&this.removeListeners_(),this.statusChangeTimer_&&(this.statusChangeTimer_.stop(),this.statusChangeTimer_=null),this.onRemoteEvent_=null,this.onResumeLocal_=null,this.apiReady_=!1,this.isCasting_=!1,this.appData_=null,this.cachedProperties_=null,this.asyncCallPromises_=null,this.castPromise_=null,this.onConnectionStatusChangedBound_=null,this.onMessageReceivedBound_=null,Promise.resolve()}apiReady(){return this.apiReady_}hasReceivers(){return De.hasReceivers_}isCasting(){return this.isCasting_}receiverName(){return this.receiverName_}hasRemoteProperties(){return Object.keys(this.cachedProperties_.video).length!=0}init(){if(!this.receiverAppId_.length)return;if(!window.chrome||!chrome.cast||!chrome.cast.isAvailable){window.__onGCastApiAvailable!==De.onGCastApiAvailable_&&(De.__onGCastApiAvailable_=window.__onGCastApiAvailable||null,window.__onGCastApiAvailable=De.onGCastApiAvailable_);return}this.apiReady_=!0,this.statusChangeTimer_.tickNow();let e=new chrome.cast.SessionRequest(this.receiverAppId_,[],null,this.androidReceiverCompatible_,null),t=new chrome.cast.ApiConfig(e,r=>De.onExistingSessionJoined_(r),r=>De.onReceiverStatusChanged_(r),"origin_scoped");chrome.cast.initialize(t,()=>{p.debug("CastSender: init")},r=>{p.error("CastSender: init error",r)}),De.hasReceivers_&&this.statusChangeTimer_.tickAfter(De.STATUS_DELAY);let i=De.session_;i&&i.status!=chrome.cast.SessionStatus.STOPPED?(p.debug("CastSender: re-using existing connection"),this.onExistingSessionJoined_(i)):De.session_=null}setAppData(e){this.appData_=e,this.isCasting_&&this.sendMessage_({type:"appData",appData:this.appData_})}async cast(){if(!this.apiReady_)throw new h(h.Severity.RECOVERABLE,h.Category.CAST,h.Code.CAST_API_UNAVAILABLE);if(!De.hasReceivers_)throw new h(h.Severity.RECOVERABLE,h.Category.CAST,h.Code.NO_CAST_RECEIVERS);if(this.isCasting_)throw new h(h.Severity.RECOVERABLE,h.Category.CAST,h.Code.ALREADY_CASTING);this.castPromise_=Promise.withResolvers(),chrome.cast.requestSession(e=>this.onSessionInitiated_(e),e=>this.onConnectionError_(e)),await this.castPromise_.promise}showDisconnectDialog(){this.isCasting_&&chrome.cast.requestSession(e=>this.onSessionInitiated_(e),e=>this.onConnectionError_(e))}forceDisconnect(){if(this.isCasting_){if(this.rejectAllPromises_(),De.session_){this.removeListeners_();try{De.session_.stop(()=>{},()=>{})}catch(e){}De.session_=null}this.onConnectionStatusChanged_()}}get(e,t){v.assert(e=="video"||e=="player"||e=="adManager"||e=="currentAd","Unexpected target name");let r={video:{voidMethods:we.VideoVoidMethods},player:{voidMethods:we.PlayerVoidMethods,promiseMethods:we.PlayerPromiseMethods,getterMethods:[we.PlayerGetterMethods,we.LargePlayerGetterMethods],requiresLiveMap:we.PlayerGetterMethodsThatRequireLive},adManager:{voidMethods:we.AdManagerVoidMethods,promiseMethods:we.AdManagerPromiseMethods,getterMethods:[we.LargeAdManagerGetterMethods]},currentAd:{voidMethods:we.CurrentAdVoidMethods,getterMethods:[we.CurrentAdGetterMethods]}}[e];if(r.requiresLiveMap&&r.requiresLiveMap.has(t)){let s=this.get("player","isLive")();if(v.assert(s,t+" should be called on a live stream!"),!s)return()=>{}}return r.voidMethods&&r.voidMethods.includes(t)?(...s)=>this.remoteCall_(e,t,...s):r.promiseMethods&&r.promiseMethods.includes(t)?(...s)=>this.remoteAsyncCall_(e,t,...s):r.getterMethods&&r.getterMethods.some(s=>s.has(t))?()=>this.propertyGetter_(e,t):this.propertyGetter_(e,t)}set(e,t,i){v.assert(e=="video"||e=="player"||e=="adManager"||e=="currentAd","Unexpected target name"),this.cachedProperties_[e][t]=i,this.sendMessage_({type:"set",targetName:e,property:t,value:i})}onSessionInitiated_(e){p.debug("CastSender: onSessionInitiated");let t=this.onInitStateRequired_();this.onSessionCreated_(e),this.sendMessage_({type:"init",initState:t,appData:this.appData_}),this.castPromise_.resolve()}onConnectionError_(e){let t=h.Code.UNEXPECTED_CAST_ERROR;switch(e.code){case"cancel":t=h.Code.CAST_CANCELED_BY_USER;break;case"timeout":t=h.Code.CAST_CONNECTION_TIMED_OUT;break;case"receiver_unavailable":t=h.Code.CAST_RECEIVER_APP_UNAVAILABLE;break}this.castPromise_.reject(new h(h.Severity.CRITICAL,h.Category.CAST,t,e))}propertyGetter_(e,t){return v.assert(e=="video"||e=="player"||e=="adManager"||e=="currentAd","Unexpected target name"),this.cachedProperties_[e][t]}remoteCall_(e,t,...i){v.assert(e=="video"||e=="player"||e=="adManager"||e=="currentAd","Unexpected target name"),this.sendMessage_({type:"call",targetName:e,methodName:t,args:i})}remoteAsyncCall_(e,t,...i){v.assert(e=="video"||e=="player"||e=="adManager"||e=="currentAd","Unexpected target name");let r=Promise.withResolvers(),s=this.nextAsyncCallId_.toString();this.nextAsyncCallId_++,this.asyncCallPromises_.set(s,r);try{this.sendMessage_({type:"asyncCall",targetName:e,methodName:t,args:i,id:s})}catch(n){r.reject(n)}return r.promise}static onExistingSessionJoined_(e){for(let t of De.instances_)t.onExistingSessionJoined_(e)}onExistingSessionJoined_(e){p.debug("CastSender: onExistingSessionJoined"),this.castPromise_=Promise.withResolvers(),this.hasJoinedExistingSession_=!0,this.onSessionInitiated_(e)}static onReceiverStatusChanged_(e){for(let t of De.instances_)t.onReceiverStatusChanged_(e)}onReceiverStatusChanged_(e){p.debug("CastSender: receiver status",e),De.hasReceivers_=e=="available",this.statusChangeTimer_.tickNow()}onSessionCreated_(e){De.session_=e,e.addUpdateListener(this.onConnectionStatusChangedBound_),e.addMessageListener(we.SHAKA_MESSAGE_NAMESPACE,this.onMessageReceivedBound_),this.onConnectionStatusChanged_()}removeListeners_(){let e=De.session_;e.removeUpdateListener(this.onConnectionStatusChangedBound_),e.removeMessageListener(we.SHAKA_MESSAGE_NAMESPACE,this.onMessageReceivedBound_)}onConnectionStatusChanged_(){let e=De.session_?De.session_.status=="connected":!1;if(p.info("CastSender: connection status",e),this.isCasting_&&!e){this.onResumeLocal_();for(let t in this.cachedProperties_)this.cachedProperties_[t]={};this.rejectAllPromises_()}this.isCasting_=e,this.receiverName_=e?De.session_.receiver.friendlyName:"",this.statusChangeTimer_.tickNow(),this.receiverName_&&p.info("CastSender: connected to",this.receiverName_)}rejectAllPromises_(){if(this.asyncCallPromises_)for(let e of this.asyncCallPromises_.keys()){let t=this.asyncCallPromises_.get(e);this.asyncCallPromises_.delete(e),t.reject(new h(h.Severity.RECOVERABLE,h.Category.PLAYER,h.Code.LOAD_INTERRUPTED))}}onMessageReceived_(e,t){let i=we.deserialize(t);switch(p.v2("CastSender: message",i),i.type){case"event":{let r=i.targetName,s=i.event,n=U.fromRealEvent(s);this.onRemoteEvent_(r,n);break}case"update":{let r=i.update;for(let s in r){let n=this.cachedProperties_[s]||{};for(let a in r[s])n[a]=r[s][a]}this.hasJoinedExistingSession_&&(this.onFirstCastStateUpdate_(),this.hasJoinedExistingSession_=!1);break}case"asyncComplete":{let r=i.id,s=i.error,n=i.res,a=this.asyncCallPromises_.get(r);if(this.asyncCallPromises_.delete(r),v.assert(a,"Unexpected async id"),!a)break;if(s){let o=new h(s.severity,s.category,s.code);for(let c in s)o[c]=s[c];a.reject(o)}else a.resolve(n);break}}}sendMessage_(e){let t=we.serialize(e),i=De.session_;try{i.sendMessage(we.SHAKA_MESSAGE_NAMESPACE,t,()=>{},p.error)}catch(r){p.error("Cast session sendMessage threw",r);let s=new h(h.Severity.CRITICAL,h.Category.CAST,h.Code.CAST_CONNECTION_TIMED_OUT,r),n=new U("error",new Map().set("detail",s));throw this.onRemoteEvent_("player",n),this.forceDisconnect(),s}}};l(De,"STATUS_DELAY",.02),l(De,"hasReceivers_",!1),l(De,"session_",null),l(De,"__onGCastApiAvailable_",null),l(De,"instances_",new Set),l(De,"onSdkLoaded_",e=>{if(e)for(let t of De.instances_)t.init()}),l(De,"onGCastApiAvailable_",e=>{De.__onGCastApiAvailable_?window.__onGCastApiAvailable=De.__onGCastApiAvailable_:delete window.__onGCastApiAvailable,De.__onGCastApiAvailable_=null,De.onSdkLoaded_(e),typeof window.__onGCastApiAvailable=="function"&&window.__onGCastApiAvailable(e)});var Bs=De;/*! @license
|
|
567
|
+
* Shaka Player
|
|
568
|
+
* Copyright 2016 Google LLC
|
|
569
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
570
|
+
*/var io=class extends Le{constructor(t,i,r,s=!1){super();l(this,"localVideo_");l(this,"localPlayer_");l(this,"localAdManager_");l(this,"videoProxy_");l(this,"playerProxy_");l(this,"adManagerProxy_");l(this,"currentAdProxy_");l(this,"videoEventTarget_");l(this,"playerEventTarget_");l(this,"adManagerEventTarget_");l(this,"eventManager_");l(this,"receiverAppId_");l(this,"androidReceiverCompatible_");l(this,"trackedCalls_");l(this,"playerCompiledToExternNames_");l(this,"adManagerCompiledToExternNames_");l(this,"sender_");this.localVideo_=t,this.localPlayer_=i,this.localAdManager_=this.localPlayer_.getAdManager(),this.videoProxy_=null,this.playerProxy_=null,this.adManagerProxy_=null,this.currentAdProxy_=null,this.videoEventTarget_=null,this.playerEventTarget_=null,this.adManagerEventTarget_=null,this.eventManager_=null,this.receiverAppId_=r,this.androidReceiverCompatible_=s,this.trackedCalls_={addThumbnailsTrack:[],addTextTrackAsync:[],addChaptersTrack:[]},this.playerCompiledToExternNames_=new Map,this.adManagerCompiledToExternNames_=new Map,this.sender_=null,this.shouldInitCastSender_()?(this.sender_=new Bs(r,()=>this.onCastStatusChanged_(),()=>this.onFirstCastStateUpdate_(),(n,a)=>this.onRemoteEvent_(n,a),()=>this.onResumeLocal_(),()=>this.getInitState_(),s),this.init_()):this.initWithoutSender_()}destroy(t=!1){this.sender_&&t&&this.sender_.forceDisconnect(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null);let i=[];return this.localPlayer_&&(i.push(this.localPlayer_.destroy()),this.localPlayer_=null),this.sender_&&(i.push(this.sender_.destroy()),this.sender_=null),this.localVideo_=null,this.localAdManager_=null,this.videoProxy_=null,this.playerProxy_=null,this.adManagerProxy_=null,this.currentAdProxy_=null,super.release(),Promise.all(i)}getVideo(){return this.videoProxy_}getPlayer(){return this.playerProxy_}getAdManager(){return this.adManagerProxy_}canCast(){return this.sender_?this.sender_.apiReady()&&this.sender_.hasReceivers():!1}isCasting(){return this.sender_?this.sender_.isCasting():!1}receiverName(){return this.sender_?this.sender_.receiverName():""}async cast(){this.sender_&&(await this.sender_.cast(),this.localPlayer_&&await this.localPlayer_.unload())}setAppData(t){this.sender_&&this.sender_.setAppData(t)}suggestDisconnect(){this.sender_&&this.sender_.showDisconnectDialog()}forceDisconnect(){this.sender_&&this.sender_.forceDisconnect()}async changeReceiverId(t,i=!1){t==this.receiverAppId_&&i==this.androidReceiverCompatible_||(this.receiverAppId_=t,this.androidReceiverCompatible_=i,this.sender_&&(this.sender_.forceDisconnect(),await this.sender_.destroy(),this.sender_=null,this.sender_=new Bs(t,()=>this.onCastStatusChanged_(),()=>this.onFirstCastStateUpdate_(),(r,s)=>this.onRemoteEvent_(r,s),()=>this.onResumeLocal_(),()=>this.getInitState_(),i),this.sender_.init()))}initWithoutSender_(){this.videoProxy_=this.localVideo_,this.playerProxy_=this.localPlayer_,this.adManagerProxy_=this.localAdManager_}init_(){this.sender_.init(),this.eventManager_=new ue;for(let t of we.VideoEvents)this.eventManager_.listen(this.localVideo_,t,i=>this.videoProxyLocalEvent_(i));this.eventManager_.listen(this.localPlayer_,Le.ALL_EVENTS,t=>this.playerProxyLocalEvent_(t)),this.localAdManager_&&this.eventManager_.listen(this.localAdManager_,Le.ALL_EVENTS,t=>this.adManagerProxyLocalEvent_(t)),this.videoProxy_=new Proxy(this.localVideo_,{get:(t,i)=>typeof i!="string"?t[i]:this.videoProxyGet_(i),set:(t,i,r)=>typeof i!="string"?(t[i]=r,!0):(this.videoProxySet_(i,r),!0)}),this.playerProxy_=new Proxy(this.localPlayer_,{get:(t,i)=>typeof i!="string"?t[i]:this.playerProxyGet_(i)}),this.localAdManager_&&(this.adManagerProxy_=new Proxy(this.localAdManager_,{get:(t,i)=>typeof i!="string"?t[i]:this.adManagerProxyGet_(i)})),COMPILED&&(this.mapCompiledToUncompiledMethodNames_(t=>this.iterateOverPlayerMethods_(t),this.playerCompiledToExternNames_),this.mapCompiledToUncompiledMethodNames_(t=>this.iterateOverAdManagerMethods_(t),this.adManagerCompiledToExternNames_)),this.videoEventTarget_=new Le,this.videoEventTarget_.dispatchTarget=this.videoProxy_,this.playerEventTarget_=new Le,this.playerEventTarget_.dispatchTarget=this.playerProxy_,this.adManagerEventTarget_=new Le,this.adManagerEventTarget_.dispatchTarget=this.adManagerProxy_,this.eventManager_.listen(this.localPlayer_,U.EventName.Unloading,()=>{this.sender_&&this.sender_.isCasting()||this.resetExternalTracks()})}mapCompiledToUncompiledMethodNames_(t,i){let r=new Map;t((s,n)=>{if(r.has(n)){let a=r.get(n);s.length<a.length?i.set(s,a):i.set(a,s)}else r.set(n,s)})}iterateOverPlayerMethods_(t){v.assert(this.localPlayer_,"Must have player!");let i=this.localPlayer_;this.iterateOverClassMethods_(t,i)}iterateOverAdManagerMethods_(t){v.assert(this.localAdManager_,"Must have ad manager!");let i=this.localAdManager_;this.iterateOverClassMethods_(t,i)}iterateOverClassMethods_(t,i){let r=new Set;function s(o){return o=="constructor"||typeof i[o]!="function"?!1:!r.has(o)}for(let o in i)s(o)&&(r.add(o),t(o,i[o]));let n=Object.getPrototypeOf(i),a=Object.getPrototypeOf({});for(;n&&n!=a;){for(let o of Object.getOwnPropertyNames(n))s(o)&&(r.add(o),t(o,i[o]));n=Object.getPrototypeOf(n)}}getInitState_(){let t={video:{},player:{},manifest:this.localPlayer_.getAssetUri(),startTime:null,mimeType:this.localPlayer_.getMimeType(),addThumbnailsTrackCalls:this.trackedCalls_.addThumbnailsTrack,addTextTrackAsyncCalls:this.trackedCalls_.addTextTrackAsync,addChaptersTrackCalls:this.trackedCalls_.addChaptersTrack};this.localVideo_.pause();for(let i of we.VideoInitStateAttributes)t.video[i]=this.localVideo_[i];this.localVideo_.ended||(t.startTime=this.localVideo_.currentTime);for(let i of we.PlayerInitState){let r=i[0],s=i[1],n=this.localPlayer_[r]();t.player[s]=n}return t}onCastStatusChanged_(){let t=new U("caststatuschanged");this.dispatchEvent(t)}onFirstCastStateUpdate_(){let t=this.videoProxy_.paused?"pause":"play",i=new U(t);this.videoEventTarget_.dispatchEvent(i)}onResumeLocal_(){for(let f of we.PlayerInitState){let g=f[0],_=f[1],T=this.sender_.get("player",g)();this.localPlayer_[_](T)}let t=this.trackedCalls_.addThumbnailsTrack,i=this.trackedCalls_.addTextTrackAsync,r=this.trackedCalls_.addChaptersTrack;this.resetExternalTracks();let s=this.sender_.get("player","getAssetUri")(),n=this.sender_.get("video","ended"),a=Promise.resolve(),o=this.localVideo_.autoplay,c=null;n||(c=this.sender_.get("video","currentTime"));let d,u=this.sender_.get("player","getTextTracks")();u&&u.length&&(d=u.find(f=>f.active)),s&&(this.localVideo_.autoplay=!1,a=this.localPlayer_.load(s,c));let m={};for(let f of we.VideoInitStateAttributes)m[f]=this.sender_.get("video",f);a.then(()=>{if(this.localVideo_){for(let f of t)this.getPlayer().addThumbnailsTrack(...f);for(let f of i)this.getPlayer().addTextTrackAsync(...f);for(let f of r)this.getPlayer().addChaptersTrack(...f);for(let f of we.VideoInitStateAttributes)this.localVideo_[f]=m[f];if(d){let g=this.localPlayer_.getTextTracks().find(_=>_.language==d.language&&ye.equal(_.roles,d.roles)&&_.forced==d.forced);this.localPlayer_.selectTextTrack(g)}else this.localPlayer_.selectTextTrack();this.localVideo_.autoplay=o,s&&this.localVideo_.play()}},f=>{v.assert(f instanceof h,"Wrong error type!");let g=U.EventName.Error,_=new Map().set("detail",f),T=new U(g,_);this.localPlayer_.dispatchEvent(T)})}getLocalOrRemote_(t,i,r){if(!this.sender_.isCasting()){let s=t[r];return typeof s=="function"?s.bind(t):s}return r=="getCurrentAd"?()=>this.currentAdProxy_:this.sender_.get(i,r)}videoProxyGet_(t){if(t=="addEventListener")return(i,r,s)=>this.videoEventTarget_.addEventListener(i,r,s);if(t=="removeEventListener")return(i,r,s)=>this.videoEventTarget_.removeEventListener(i,r,s);if(this.sender_.isCasting()&&!this.sender_.hasRemoteProperties()){let i=this.localVideo_[t];if(typeof i!="function")return i}return this.getLocalOrRemote_(this.localVideo_,"video",t)}videoProxySet_(t,i){if(!this.sender_.isCasting()){this.localVideo_[t]=i;return}this.sender_.set("video",t,i)}videoProxyLocalEvent_(t){if(this.sender_.isCasting())return;let i=U.fromRealEvent(t);this.videoEventTarget_.dispatchEvent(i)}playerProxyGet_(t,i=!1){if(this.playerCompiledToExternNames_.has(t)&&(t=this.playerCompiledToExternNames_.get(t)),t=="addEventListener")return(r,s,n)=>this.playerEventTarget_.addEventListener(r,s,n);if(t=="removeEventListener")return(r,s,n)=>this.playerEventTarget_.removeEventListener(r,s,n);if(t=="getMediaElement")return()=>this.videoProxy_;if(t=="getSharedConfiguration")return p.warning("Can't share configuration across a network. Returning copy."),this.sender_.get("player","getConfiguration");if(t=="getNetworkingEngine")return this.sender_.isCasting()&&p.warning("NOTE: getNetworkingEngine() is always local!"),()=>this.localPlayer_.getNetworkingEngine();if(t=="getDrmEngine")return this.sender_.isCasting()&&p.warning("NOTE: getDrmEngine() is always local!"),()=>this.localPlayer_.getDrmEngine();if(t=="getAdManager")return()=>this.adManagerProxy_;if(t=="getQueueManager")return()=>this.localPlayer_.getQueueManager();if(t=="setVideoContainer")return this.sender_.isCasting()&&p.warning("NOTE: setVideoContainer() is always local!"),r=>this.localPlayer_.setVideoContainer(r);if(!i){if(t=="addThumbnailsTrack")return(...r)=>(this.trackedCalls_.addThumbnailsTrack.push(r),this.playerProxyGet_(t,!0)(...r));if(t=="addTextTrackAsync")return(...r)=>(this.trackedCalls_.addTextTrackAsync.push(r),this.playerProxyGet_(t,!0)(...r));if(t=="addChaptersTrack")return(...r)=>(this.trackedCalls_.addChaptersTrack.push(r),this.playerProxyGet_(t,!0)(...r))}if(this.sender_.isCasting()){if(t=="getManifest"||t=="drmInfo")return()=>(p.alwaysWarn(t+"() does not work while casting!"),null);if(t=="attach"||t=="detach")return()=>(p.alwaysWarn(t+"() does not work while casting!"),Promise.resolve())}if(this.sender_.isCasting()&&!this.sender_.hasRemoteProperties()&&(we.PlayerGetterMethods.has(t)||we.LargePlayerGetterMethods.has(t))){let r=this.localPlayer_[t];return typeof r!="function"?r:r.bind(this.localPlayer_)}return this.getLocalOrRemote_(this.localPlayer_,"player",t)}playerProxyLocalEvent_(t){this.sender_.isCasting()||this.playerEventTarget_.dispatchEvent(t)}adManagerProxyGet_(t){return this.adManagerCompiledToExternNames_.has(t)&&(t=this.adManagerCompiledToExternNames_.get(t)),t=="addEventListener"?(i,r,s)=>this.adManagerEventTarget_.addEventListener(i,r,s):t=="removeEventListener"?(i,r,s)=>this.adManagerEventTarget_.removeEventListener(i,r,s):this.getLocalOrRemote_(this.localAdManager_,"adManager",t)}adManagerProxyLocalEvent_(t){this.sender_.isCasting()||this.adManagerEventTarget_.dispatchEvent(t)}currentAdProxyGet_(t){return this.sender_.isCasting()?this.sender_.get("currentAd",t):null}onRemoteEvent_(t,i){v.assert(this.sender_.isCasting(),"Should only receive remote events while casting"),this.sender_.isCasting()&&(t=="video"?this.videoEventTarget_.dispatchEvent(i):t=="player"?(i.type==U.EventName.Unloading&&this.resetExternalTracks(),this.playerEventTarget_.dispatchEvent(i)):t=="adManager"&&(i.type=="ad-started"?this.currentAdProxy_=new Proxy(new ro,{get:(r,s)=>typeof s!="string"?r[s]:this.currentAdProxyGet_(s)}):i.type=="ad-stopped"&&(this.currentAdProxy_=null),this.adManagerEventTarget_.dispatchEvent(i)))}resetExternalTracks(){this.trackedCalls_.addThumbnailsTrack=[],this.trackedCalls_.addTextTrackAsync=[],this.trackedCalls_.addChaptersTrack=[]}shouldInitCastSender_(){return!(!window.chrome||typeof Proxy=="undefined"||j.getDevice().getDeviceType()==ie.DeviceType.CAST)}},ro=class extends Wt{};/*! @license
|
|
571
|
+
* Shaka Player
|
|
572
|
+
* Copyright 2016 Google LLC
|
|
573
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
574
|
+
*/var pr=class pr extends Le{constructor(t,i,r,s){super();l(this,"video_");l(this,"player_");l(this,"adManager_");l(this,"currentAd_");l(this,"eventManager_");l(this,"targets_");l(this,"appDataCallback_");l(this,"contentIdCallback_");l(this,"metadata_");l(this,"isConnected_");l(this,"isIdle_");l(this,"updateNumber_");l(this,"startUpdatingUpdateNumber_");l(this,"initialStatusUpdatePending_");l(this,"shakaBus_");l(this,"genericBus_");l(this,"pollTimer_");this.video_=t,this.player_=i,this.adManager_=i.getAdManager(),this.currentAd_=null,this.eventManager_=new ue,this.targets_={video:t,player:i,adManager:this.adManager_,currentAd:this.currentAd_},this.appDataCallback_=r||(()=>{}),this.contentIdCallback_=s||(n=>n),this.metadata_=null,this.isConnected_=!1,this.isIdle_=!0,this.updateNumber_=0,this.startUpdatingUpdateNumber_=!1,this.initialStatusUpdatePending_=!0,this.shakaBus_=null,this.genericBus_=null,this.pollTimer_=new ae(()=>{this.pollAttributes_()}),this.init_()}isConnected(){return this.isConnected_}isIdle(){return this.isIdle_}setContentMetadata(t){this.metadata_=t}clearContentMetadata(){this.metadata_=null}setContentTitle(t){this.ensureMetadata_(),this.metadata_.title=t}setContentImage(t){this.ensureMetadata_(),this.metadata_.images=[{url:t}]}setContentArtist(t){this.ensureMetadata_(),this.metadata_.artist=t,this.metadata_.metadataType=cast.receiver.media.MetadataType.MUSIC_TRACK}setContentAlbumName(t){this.ensureMetadata_(),this.metadata_.albumName=t,this.metadata_.metadataType=cast.receiver.media.MetadataType.MUSIC_TRACK}ensureMetadata_(){this.metadata_||(this.metadata_={metadataType:cast.receiver.media.MetadataType.GENERIC})}async destroy(){this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null);let t=[];this.player_&&(t.push(this.player_.destroy()),this.player_=null),this.pollTimer_&&(this.pollTimer_.stop(),this.pollTimer_=null),this.video_=null,this.adManager_=null,this.targets_=null,this.appDataCallback_=null,this.isConnected_=!1,this.isIdle_=!0,this.shakaBus_=null,this.genericBus_=null,super.release(),await Promise.all(t),cast.receiver.CastReceiverManager.getInstance().stop()}init_(){let t=cast.receiver.CastReceiverManager.getInstance();t.onSenderConnected=()=>this.onSendersChanged_(),t.onSenderDisconnected=()=>this.onSendersChanged_(),t.onSystemVolumeChanged=()=>this.fakeVolumeChangeEvent_(),this.genericBus_=t.getCastMessageBus(we.GENERIC_MESSAGE_NAMESPACE),this.genericBus_.onMessage=i=>this.onGenericMessage_(i),this.shakaBus_=t.getCastMessageBus(we.SHAKA_MESSAGE_NAMESPACE),this.shakaBus_.onMessage=i=>this.onShakaMessage_(i),Fe?j.getDevice().getDeviceType()===ie.DeviceType.CAST&&t.start():t.start();for(let i of we.VideoEvents)this.eventManager_.listen(this.video_,i,r=>this.proxyEvent_("video",r));this.eventManager_.listen(this.player_,Le.ALL_EVENTS,i=>this.proxyEvent_("player",i)),this.adManager_&&this.eventManager_.listen(this.adManager_,Le.ALL_EVENTS,i=>{i.type=="ad-started"?(this.currentAd_=this.adManager_.getCurrentAd(),this.updateNumber_=0,this.targets_.currentAd=this.currentAd_):i.type=="ad-stopped"&&(this.currentAd_=null,this.targets_.currentAd=this.currentAd_),this.proxyEvent_("adManager",i)}),this.eventManager_.listen(this.video_,"loadeddata",()=>{this.startUpdatingUpdateNumber_=!0}),this.eventManager_.listen(this.player_,"loading",()=>{this.isIdle_=!1,this.onCastStatusChanged_()}),this.eventManager_.listen(this.video_,"playing",()=>{this.isIdle_=!1,this.onCastStatusChanged_()}),this.eventManager_.listen(this.video_,"pause",()=>{this.onCastStatusChanged_()}),this.eventManager_.listen(this.player_,"unloading",()=>{this.isIdle_=!0,this.onCastStatusChanged_()}),this.eventManager_.listen(this.video_,"ended",()=>{new ae(()=>{this.video_&&this.video_.ended&&(this.isIdle_=!0,this.onCastStatusChanged_())}).tickAfter(pr.IDLE_INTERVAL)})}onSendersChanged_(){this.updateNumber_=0,this.initialStatusUpdatePending_=!0;let t=cast.receiver.CastReceiverManager.getInstance();this.isConnected_=t.getSenders().length!=0,this.onCastStatusChanged_()}async onCastStatusChanged_(){if(await Promise.resolve(),!this.player_)return;let t=new U("caststatuschanged");this.dispatchEvent(t),this.maybeSendMediaInfoMessage_()||this.sendMediaStatus_()}async initState_(t,i){for(let s in t.player){let n=t.player[s];this.player_[s](n)}this.appDataCallback_(i);let r=this.video_.autoplay;if(t.manifest){this.video_.autoplay=!1;try{if(await this.player_.load(t.manifest,t.startTime,t.mimeType),t.addThumbnailsTrackCalls)for(let s of t.addThumbnailsTrackCalls)this.player_.addThumbnailsTrack(...s);if(t.addTextTrackAsyncCalls)for(let s of t.addTextTrackAsyncCalls)this.player_.addTextTrackAsync(...s);if(t.addChaptersTrackCalls)for(let s of t.addChaptersTrackCalls)this.player_.addChaptersTrack(...s)}catch(s){v.assert(s instanceof h,"Wrong error type! Error: "+s);let n=U.EventName.Error,a=new Map().set("detail",s),o=new U(n,a);this.player_&&this.player_.dispatchEvent(o);return}}else await Promise.resolve();if(this.player_){for(let s in t.video){let n=t.video[s];this.video_[s]=n}this.video_.autoplay=r,t.manifest&&(this.video_.play(),this.sendMediaStatus_())}}proxyEvent_(t,i){this.player_&&(this.pollAttributes_(),this.sendMessage_({type:"event",targetName:t,event:i},this.shakaBus_))}pollAttributes_(){this.pollTimer_.tickAfter(pr.POLL_INTERVAL);let t={video:{},player:{},currentAd:{}};for(let s of we.VideoAttributes)t.video[s]=this.video_[s];this.player_.isLive()&&we.PlayerGetterMethodsThatRequireLive.forEach((n,a)=>{this.updateNumber_%n==0&&(t.player[a]=this.player_[a]())}),we.PlayerGetterMethods.forEach((s,n)=>{this.updateNumber_%s==0&&(t.player[n]=this.player_[n]())}),this.currentAd_&&we.CurrentAdGetterMethods.forEach((s,n)=>{this.updateNumber_%s==0&&(t.currentAd[n]=this.currentAd_[n]())});let r=cast.receiver.CastReceiverManager.getInstance().getSystemVolume();r&&(t.video.volume=r.level,t.video.muted=r.muted),this.sendMessage_({type:"update",update:t},this.shakaBus_),we.LargePlayerGetterMethods.forEach((s,n)=>{if(this.updateNumber_%s==0){let a={player:{}};a.player[n]=this.player_[n](),this.sendMessage_({type:"update",update:a},this.shakaBus_)}}),this.adManager_&&we.LargeAdManagerGetterMethods.forEach((s,n)=>{if(this.updateNumber_%s==0){let a={adManager:{}};a.adManager[n]=this.adManager_[n](),this.sendMessage_({type:"update",update:a},this.shakaBus_)}}),this.startUpdatingUpdateNumber_&&(this.updateNumber_+=1),this.maybeSendMediaInfoMessage_()}maybeSendMediaInfoMessage_(){return this.initialStatusUpdatePending_&&(this.video_.duration||this.player_.isLive())?(this.sendMediaInfoMessage_(),this.initialStatusUpdatePending_=!1,!0):!1}sendMediaInfoMessage_(t=0){let i={contentId:this.player_.getAssetUri(),streamType:this.player_.isLive()?"LIVE":"BUFFERED",contentType:""};this.player_.isLive()||(i.duration=this.video_.duration),this.metadata_&&(i.metadata=this.metadata_),this.sendMediaStatus_(t,i)}fakeVolumeChangeEvent_(){let i=cast.receiver.CastReceiverManager.getInstance().getSystemVolume();v.assert(i,"System volume should not be null!"),i&&this.sendMessage_({type:"update",update:{video:{volume:i.level,muted:i.muted}}},this.shakaBus_),this.sendMessage_({type:"event",targetName:"video",event:{type:"volumechange"}},this.shakaBus_)}onShakaMessage_(t){let i=we.deserialize(t.data);switch(p.debug("CastReceiver: message",i),i.type){case"init":this.updateNumber_=0,this.startUpdatingUpdateNumber_=!1,this.initialStatusUpdatePending_=!0,this.initState_(i.initState,i.appData),this.pollAttributes_();break;case"appData":this.appDataCallback_(i.appData);break;case"set":{let r=i.targetName,s=i.property,n=i.value;if(r=="video"){let a=cast.receiver.CastReceiverManager.getInstance();if(s=="volume"){a.setSystemVolumeLevel(n);break}else if(s=="muted"){a.setSystemVolumeMuted(n);break}}this.targets_[r]&&(this.targets_[r][s]=n);break}case"call":{let r=i.targetName,s=i.methodName,n=i.args,a=this.targets_[r];a&&a[s].apply(a,n);break}case"asyncCall":{let r=i.targetName,s=i.methodName;r=="player"&&s=="load"&&(this.updateNumber_=0,this.startUpdatingUpdateNumber_=!1);let n=i.args,a=i.id,o=t.senderId,c=this.targets_[r],d=c[s].apply(c,n);r=="player"&&s=="load"&&(d=d.then(()=>{this.initialStatusUpdatePending_=!0})),d.then(u=>this.sendAsyncComplete_(o,a,null,u),u=>this.sendAsyncComplete_(o,a,u,null));break}}}onGenericMessage_(t){let i=we.deserialize(t.data);switch(p.debug("CastReceiver: message",i),i.type){case"PLAY":this.video_.play(),this.sendMediaStatus_();break;case"PAUSE":this.video_.pause(),this.sendMediaStatus_();break;case"SEEK":{let r=i.currentTime,s=i.resumeState;r!=null&&(this.video_.currentTime=Number(r)),s&&s=="PLAYBACK_START"?(this.video_.play(),this.sendMediaStatus_()):s&&s=="PLAYBACK_PAUSE"&&(this.video_.pause(),this.sendMediaStatus_());break}case"STOP":this.player_.unload().then(()=>{this.player_&&this.sendMediaStatus_()});break;case"GET_STATUS":this.sendMediaInfoMessage_(Number(i.requestId));break;case"VOLUME":{let r=i.volume,s=r.level,n=r.muted,a=this.video_.volume,o=this.video_.muted;s!=null&&(this.video_.volume=Number(s)),n!=null&&(this.video_.muted=n),(a!=this.video_.volume||o!=this.video_.muted)&&this.sendMediaStatus_();break}case"LOAD":{this.updateNumber_=0,this.startUpdatingUpdateNumber_=!1,this.initialStatusUpdatePending_=!1;let r=i.media,s=r.contentId,n=i.currentTime,a=this.contentIdCallback_(s),o=i.autoplay||!0,c=r.customData;this.appDataCallback_(c),o&&(this.video_.autoplay=!0),this.player_.load(a,n).then(()=>{this.player_&&this.sendMediaInfoMessage_()}).catch(d=>{v.assert(d instanceof h,"Wrong error type!");let u="LOAD_FAILED";d.category==h.Category.PLAYER&&d.code==h.Code.LOAD_INTERRUPTED&&(u="LOAD_CANCELLED"),this.sendMessage_({requestId:Number(i.requestId),type:u},this.genericBus_)});break}default:p.warning("Unrecognized message type from the generic Chromecast controller!",i.type),this.sendMessage_({requestId:Number(i.requestId),type:"INVALID_REQUEST",reason:"INVALID_COMMAND"},this.genericBus_);break}}sendAsyncComplete_(t,i,r,s){this.player_&&this.sendMessage_({type:"asyncComplete",id:i,error:r,res:s},this.shakaBus_,t)}sendMessage_(t,i,r){if(!this.isConnected_)return;let s=we.serialize(t);r?i.getCastChannel(r).send(s):i.broadcast(s)}getPlayState_(){let t=pr.PLAY_STATE;return this.isIdle_?t.IDLE:this.player_.isBuffering()?t.BUFFERING:this.video_.paused?t.PAUSED:t.PLAYING}sendMediaStatus_(t=0,i=null){let r={mediaSessionId:0,playbackRate:this.video_.playbackRate,playerState:this.getPlayState_(),currentTime:this.video_.currentTime,supportedMediaCommands:63,volume:{level:this.video_.volume,muted:this.video_.muted}};i&&(r.media=i);let s={requestId:t,type:"MEDIA_STATUS",status:[r]};this.sendMessage_(s,this.genericBus_)}};l(pr,"POLL_INTERVAL",.5),l(pr,"IDLE_INTERVAL",5),l(pr,"PLAY_STATE",{IDLE:"IDLE",PLAYING:"PLAYING",BUFFERING:"BUFFERING",PAUSED:"PAUSED"});var so=pr;/*! @license
|
|
575
|
+
* Shaka Player
|
|
576
|
+
* Copyright 2016 Google LLC
|
|
577
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
578
|
+
*/var at=class at{constructor(){l(this,"psshToInitData_");this.psshToInitData_=new Map}release(){this.psshToInitData_.clear()}parseFromAdaptationSet(e,t,i){let r=this.parseElements_(e),s=null,n=[],a=[],o=null,c=new Set(r.map(m=>m.keyId));c.delete(null);let d="cenc";if(c.size>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_KEY_IDS);if(!t){let m=r.filter(g=>g.schemeUri==at.Aes128Protection_);if(m.length>1)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_CONFLICTING_AES_128);m.length&&(o=at.parseAes128_(m[0]));let f=r.find(g=>g.schemeUri==at.MP4Protection_);f&&f.encryptionScheme&&(d=f.encryptionScheme),a=r.filter(g=>g.schemeUri==at.MP4Protection_?(v.assert(!g.init||g.init.length,"Init data must be null or non-empty."),s=g.init||s,!1):g.schemeUri!=at.Aes128Protection_),a.length&&(n=at.convertElements_(s,d,a,i,c),n.length==0&&(n=[R.createDrmInfo("",d,s)]))}if(r.length&&!o&&(t||!a.length)){n=[];for(let m of Object.values(i))if(!de.isClearKeySystem(m)){let f=R.createDrmInfo(m,d,s);n.push(f)}}let u=Array.from(c)[0]||null;if(u)for(let m of n)for(let f of m.initData)f.keyId=u;return{defaultKeyId:u,defaultInit:s,drmInfos:n,aes128Info:o,firstRepresentation:!0}}parseFromRepresentation(e,t,i,r){let s=this.parseFromAdaptationSet(e,i,r);if(t.firstRepresentation){let n=t.drmInfos.length==1&&!t.drmInfos[0].keySystem,a=t.drmInfos.length==0,o=s.drmInfos.length==0;(a||n&&!o)&&(t.drmInfos=s.drmInfos),t.firstRepresentation=!1}else if(s.drmInfos.length>0&&(t.drmInfos=t.drmInfos.filter(n=>s.drmInfos.some(a=>a.keySystem==n.keySystem)),t.drmInfos.length==0))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_COMMON_KEY_SYSTEM);return s.defaultKeyId||t.defaultKeyId}static getFairPlayLicenseUrl(e){if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}static getWidevineLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,"urn:microsoft","laurl");return i&&q.htmlUnescape(i.attributes.licenseUrl)||""}static getClearKeyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let r=I.getTextContents(t);if(r)return r}let i=I.findChildNS(e.node,at.ClearKeyNamespaceUri_,"Laurl");if(i&&i.attributes.Lic_type==="EME-1.0"&&i){let r=I.getTextContents(i);if(r)return r}return""}static getPlayReadyLicenseUrl(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Laurl");if(t){let s=I.getTextContents(t);if(s)return s}let i=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(i&&I.getTextContents(i))return Ri.getLicenseUrl(i);let r=I.findChildNS(e.node,at.CencNamespaceUri_,"pssh");if(r){let s=I.getTextContents(r);if(s){let n=ne.fromBase64(s);return Ri.getLicenseUrlFromPssh(n)}}return""}static getInitDataFromPro_(e){let t=I.findChildNS(e.node,"urn:microsoft:playready","pro");if(!t||!I.getTextContents(t))return null;let i=I.getTextContents(t),r=ne.fromBase64(i),s=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),n=new Set;return[{initData:ei.createPssh(r,s,n,0),initDataType:"cenc",keyId:e.keyId}]}static getInitDataClearKey_(e,t){if(t.size==0)return null;let i=new Uint8Array([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75]),r=new Uint8Array([]);return[{initData:ei.createPssh(r,i,t,1),initDataType:"cenc",keyId:e.keyId}]}static convertElements_(e,t,i,r,s){let n=at.licenseUrlParsers_,a=[];for(let o of i){let c=r[o.schemeUri];if(c){v.assert(!o.init||o.init.length,"Init data must be null or non-empty.");let d=at.getInitDataFromPro_(o),u=null;o.schemeUri===at.ClearKeySchemeUri_&&(u=at.getInitDataClearKey_(o,s));let m=o.init||e||d||u,f=R.createDrmInfo(c,t,m),g=n.get(c);g&&(f.licenseServerUri=g(o)),f.serverCertificateUri=at.getServerCertificateUri(o),a.push(f)}}return a}static getServerCertificateUri(e){let t=I.findChildNS(e.node,at.DashIfNamespaceUri_,"Certurl");if(t){let i=I.getTextContents(t);if(i)return i}return""}parseElements_(e){let t=[];for(let i of e){let r=this.parseElement_(i);r&&t.push(r)}return t}parseElement_(e){let t=at.CencNamespaceUri_,i=e.attributes.schemeIdUri,r=I.getAttributeNS(e,t,"default_KID"),s=I.findChildrenNS(e,t,"pssh").map(I.getContents),n=e.attributes.value;if(!i)return p.error("Missing required schemeIdUri attribute on","ContentProtection element",e),null;if(i=i.toLowerCase(),r&&(r=r.replace(/-/g,"").toLowerCase(),r.includes(" ")))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_MULTIPLE_KEY_IDS_NOT_SUPPORTED);let a=[];try{a=s.map(o=>({initDataType:"cenc",initData:this.psshToInitData_.getOrInsertComputed(o,()=>ne.fromBase64(o)),keyId:null}))}catch(o){throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_PSSH_BAD_ENCODING)}return{node:e,schemeUri:i,keyId:r,init:a.length>0?a:null,encryptionScheme:n}}static parseAes128_(e){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES-128. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let t="urn:mpeg:dash:schema:sea:2012",i=I.findChildNS(e.node,t,"SegmentEncryption");if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);if(i.attributes.schemeIdUri!="urn:mpeg:dash:sea:aes128-cbc:2013")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let n=I.findChildNS(e.node,t,"CryptoPeriod");if(!n)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let a=n.attributes.IV,o=q.htmlUnescape(n.attributes.keyUriTemplate);if(!a||!o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_AES_128);let c=ne.fromHex(a.substr(2));if(c.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);return{keyUri:o,iv:c}}};l(at,"MP4Protection_","urn:mpeg:dash:mp4protection:2011"),l(at,"Aes128Protection_","urn:mpeg:dash:sea:2012"),l(at,"CencNamespaceUri_","urn:mpeg:cenc:2013"),l(at,"ClearKeyNamespaceUri_","http://dashif.org/guidelines/clearKey"),l(at,"ClearKeySchemeUri_","urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e"),l(at,"DashIfNamespaceUri_","https://dashif.org/CPS");var vi=at;vi.licenseUrlParsers_=new Map().set("com.apple.fps",vi.getFairPlayLicenseUrl).set("com.widevine.alpha",vi.getWidevineLicenseUrl).set("com.microsoft.playready",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.recommendation",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.software",vi.getPlayReadyLicenseUrl).set("com.microsoft.playready.hardware",vi.getPlayReadyLicenseUrl).set("org.w3.clearkey",vi.getClearKeyLicenseUrl);/*! @license
|
|
579
|
+
* Shaka Player
|
|
580
|
+
* Copyright 2016 Google LLC
|
|
581
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
582
|
+
*/var ze=class ze{static fillUriTemplate(e,t,i,r,s,n){let a=new Map().set("RepresentationID",t).set("Number",i).set("SubNumber",r).set("Bandwidth",s).set("Time",n),o=/\$(RepresentationID|Number|SubNumber|Bandwidth|Time)?(?:%0([0-9]+)([diouxX]))?\$/g;return e.replace(o,(d,u,m,f)=>{if(d=="$$")return"$";let g=a.get(u);if(v.assert(g!==void 0,"Unrecognized identifier"),g==null)return p.warning("URL template does not have an available substitution for ",'identifier "'+u+'":',e),d;u=="RepresentationID"&&m&&(p.warning("URL template should not contain a width specifier for identifier",'"RepresentationID":',e),m=void 0),u=="Time"&&typeof g!="bigint"&&(v.assert(typeof g=="number","Time value should be a number or bigint!"),Math.abs(g-Math.round(g))>=.2&&p.alwaysWarn("Calculated $Time$ values must be close to integers"),g=Math.round(g));let _;switch(f){case void 0:case"d":case"i":case"u":_=g.toString();break;case"o":_=g.toString(8);break;case"x":_=g.toString(16);break;case"X":_=g.toString(16).toUpperCase();break;default:v.assert(!1,"Unhandled format specifier"),_=g.toString();break}let T=window.parseInt(m,10)||1,S=Math.max(0,T-_.length);return new Array(S+1).join("0")+_})}static createTimeline(e,t,i,r,s){v.assert(t>0&&t<1/0,"timescale must be a positive, finite integer"),v.assert(r>0,"period duration must be a positive integer");let n=[],a=-i;for(let o=0;o<e.length;++o){let c=e[o],d=e[o+1],u=I.parseAttr(c,"t",I.parseNonNegativeInt),m=I.parseAttr(c,"d",I.parseNonNegativeInt),f=I.parseAttr(c,"r",I.parseInt),_=I.parseAttr(c,"k",I.parseInt)||0;if(u!=null&&(u-=i),!m){p.warning('"S" element must have a duration: ignoring this element.',c);continue}let T=u!=null?u:a,S=f||0;if(S<0)if(d){let b=I.parseAttr(d,"t",I.parseNonNegativeInt);if(b==null)return p.warning('An "S" element cannot have a negative repeat','if the next "S" element does not have a valid start time:','ignoring the remaining "S" elements.',c),n;if(T>=b)return p.warning('An "S" element cannot have a negative repeat if its start ',`time exceeds the next "S" element's start time:`,'ignoring the remaining "S" elements.',c),n;S=Math.ceil((b-T)/m)-1}else{if(r==1/0)return p.warning('The last "S" element cannot have a negative repeat',"if the Period has an infinite duration:",'ignoring the last "S" element.',c),n;if(T/t>=r)return p.warning('The last "S" element cannot have a negative repeat',"if its start time exceeds the Period's duration:",'ignoring the last "S" element.',c),n;S=Math.ceil((r*t-T)/m)-1}if(n.length>0&&T!=a){let b=T-a;Math.abs(b/t)>=R.GAP_OVERLAP_TOLERANCE_SECONDS&&p.warning("SegmentTimeline contains a large gap/overlap:","the content may have errors in it.",c),n[n.length-1].end=T/t}for(let b=0;b<=S;++b){let E=T+m,C={start:T/t,unscaledStart:T,end:E/t,unscaledEnd:E,partialSegments:_,segmentPosition:n.length+s};n.push(C),T=E,a=E}}return n}static parseSegmentInfo(e,t){v.assert(t(e.representation),"There must be at least one element of the given type.");let i=ze.inheritAttribute(e,t,"timescale"),r=1;i&&(r=I.parsePositiveInt(i)||1);let s=ze.inheritAttribute(e,t,"duration"),n=I.parsePositiveInt(s||""),a=n?n/r:null,o=ze.inheritAttribute(e,t,"startNumber"),c=Number(ze.inheritAttribute(e,t,"presentationTimeOffset"))||0,d=I.parseNonNegativeInt(o||"");(o==null||d==null)&&(d=1);let u=null,m=ze.inheritChild(e,t,"SegmentTimeline");if(m){let g=[],_=ze.parsePatterns_(m),T=I.findChildren(m,"S");if(_.size)for(let S of T){let b=ze.expandSWithPattern_(S,_);g.push(...b)}else g=T;u=ze.createTimeline(g,r,c,e.periodInfo.duration||1/0,d)}let f=c/r||0;return{timescale:r,unscaledSegmentDuration:n,segmentDuration:a,startNumber:d,scaledPresentationTimeOffset:f,unscaledPresentationTimeOffset:c,timeline:u}}static parsePatterns_(e){let t=new Map,i=I.findChildren(e,"Pattern");for(let r of i){let s=r.attributes.id;s?t.set(s,r):p.warning("Ignoring Pattern without id.",r)}return t}static expandSWithPattern_(e,t){let i=e.attributes.p;if(!i)return[e];if(!t.has(i))return p.error("Referenced Pattern not found:",i),[];let r=t.get(i),s=I.findChildren(r,"P");if(!s.length)return[];let n=[];for(let _ of s){let T=Number(_.attributes.d),S=Number(_.attributes.r||0);if(!(!Number.isFinite(T)||T<=0))for(let b=0;b<=S;b++)n.push(T)}if(!n.length)return[];let a=Number(e.attributes.pE||0),c=Number(e.attributes.r||0)+1,d=Number(e.attributes.t||0),u=Number(e.attributes.k||1),m=[],f=d,g=n.length;for(let _=0;_<c;_++){let T=(a+_)%g,S=n[T],b={tagName:"S",attributes:{t:String(f),d:String(S)},children:[],parent:null};u>1&&(b.attributes.k=String(u)),m.push(b),f+=S}return m}static getNodes(e,t){return v.assert(t(e.representation),"There must be at least one element of the given type."),[t(e.representation),t(e.adaptationSet),t(e.period)].filter(it.isNotNull)}static inheritAttribute(e,t,i){let r=ze.getNodes(e,t),s=null;for(let n of r)if(s=n.attributes[i],s)break;return s}static inheritChild(e,t,i){let r=ze.getNodes(e,t),s=null;for(let n of r)if(s=I.findChild(n,i),s)break;return s}static hasLinkedPeriods(e){for(let t of I.findChildren(e,"Period"))if(I.findChild(t,"ImportedMPD"))return!0;return!1}static processLinkedPeriods(e,t,i,r){var a;let s=K.RequestType.MANIFEST,n=[];for(let o of I.findChildren(e,"Period")){let c=I.findChild(o,"ImportedMPD");if(!c)continue;let d=c,u=(a=I.getContents(d))==null?void 0:a.trim();if(!u){ze.fallbackLinkedPeriod_(e,o,d);continue}let m=fe.resolve(t,u),f=K.makeRequest([m],i),_=r.request(s,f).chain(T=>{let S=null;try{S=I.parseXml(T.data,"MPD")}catch(E){}let b=S?I.findChild(S,"Period"):null;return!S||!b||ze.importedMpdResolutionFails_(S)?ze.fallbackLinkedPeriod_(e,o,d):ze.mergeImportedPeriod_(o,S,b,T.uri),e},T=>(ze.fallbackLinkedPeriod_(e,o,d),e));n.push(_)}return n.length?je.all(n).chain(()=>e):je.completed(e)}static fallbackLinkedPeriod_(e,t,i){t.children=t.children.filter(r=>r!==i),ze.isValidRegularPeriod_(t)?p.warning("Failed to resolve a Linked Period (ImportedMPD); falling back to a regular Period."):(p.warning("Failed to resolve a Linked Period (ImportedMPD) and the Period has no valid content; removing it from the MPD."),e.children=e.children.filter(r=>r!==t))}static isValidRegularPeriod_(e){return I.findChildren(e,"AdaptationSet").length?!0:I.parseDuration(e.attributes.duration||"")===0}static importedMpdResolutionFails_(e){if((e.attributes.type||"static")!=="static"||I.findChildren(e,"Period").length!==1)return!0;let i=I.parseDate(e.attributes.availabilityEndTime||"");return i!=null&&i*1e3<Date.now()}static mergeImportedPeriod_(e,t,i,r){let s=new Set(["id","start","duration"]);for(let f of Object.keys(e.attributes))!s.has(f)&&!f.includes(":")&&delete e.attributes[f];let n=new Set(["ServiceDescription","SupplementalProperty","EssentialProperty","EventStream","RequestParam"]),a=I.getChildNodes(e).filter(f=>n.has(f.tagName)||f.tagName.includes(":")),o=I.getChildNodes(i).filter(f=>f.tagName!=="BaseURL").concat(I.findChildren(t,"SupplementalProperty"),I.findChildren(t,"EssentialProperty")),c=new Set;for(let f of o){let g=ze.linkedPeriodMergeKey_(f);g!=null&&c.add(g)}let d=a.filter(f=>{let g=ze.linkedPeriodMergeKey_(f);return g==null||!c.has(g)}),u=ze.resolveImportedBaseUrls_(t,i,r).map(f=>({tagName:"BaseURL",attributes:{},children:[f],parent:e}));for(let f of o)f.parent=e;e.children=u.concat(o,d);let m=i.attributes.duration;if(m){let f=e.attributes.duration;if(!f)e.attributes.duration=m;else{let g=I.parseDuration(f),_=I.parseDuration(m);g!=null&&_!=null&&_<g&&(e.attributes.duration=m)}}}static linkedPeriodMergeKey_(e){switch(e.tagName){case"ServiceDescription":return"ServiceDescription:"+(e.attributes.id||"");case"SupplementalProperty":case"EssentialProperty":case"EventStream":return e.tagName+":"+(e.attributes.schemeIdUri||"")+":"+(e.attributes.value||"");default:return null}}static resolveImportedBaseUrls_(e,t,i){let r=o=>{let c=[];for(let d of I.findChildren(o,"BaseURL")){let u=I.getContents(d);u&&c.push(u)}return c},s=[i],n=r(e);n.length&&(s=fe.resolveUris(s,n));let a=r(t);return a.length&&(s=fe.resolveUris(s,a)),s}static hasXlinks(e){let t=ze.XlinkNamespaceUri_;if(e.attributes["xmlns:xlink"]!==t)return!1;let i=new Set(["Period","AdaptationSet","SegmentList"]),r=new Set(["MPD","Period","AdaptationSet","Representation","SegmentList"]),s=[e];for(;s.length;){let n=s.pop();if(i.has(n.tagName)&&I.getAttributeNS(n,t,"href"))return!0;for(let a of I.getChildNodes(n))r.has(a.tagName)&&s.push(a)}return!1}static handleXlinkInElement_(e,t,i,r,s,n){let a=h,o=ze.XlinkNamespaceUri_,c=I.getAttributeNS(e,o,"href"),d=I.getAttributeNS(e,o,"actuate")||"onRequest";for(let T of Object.keys(e.attributes)){let S=T.split(":"),b=I.getKnownNameSpace(o);S[0]==b&&delete e.attributes[T]}if(n>=5)return je.failed(new a(a.Severity.CRITICAL,a.Category.MANIFEST,a.Code.DASH_XLINK_DEPTH_LIMIT));if(d!="onLoad")return je.failed(new a(a.Severity.CRITICAL,a.Category.MANIFEST,a.Code.DASH_UNSUPPORTED_XLINK_ACTUATE));let u=fe.resolveUris([r],[c]),m=K.RequestType.MANIFEST,f=K.makeRequest(u,t),g=s.request(m,f);return v.assert(g instanceof je,"Unexpected implementation of IAbortableOperation!"),g.chain(T=>{let S=I.parseXml(T.data,e.tagName);if(!S)return je.failed(new a(a.Severity.CRITICAL,a.Category.MANIFEST,a.Code.DASH_INVALID_XML,c));for(e.children=[];S.children.length;){let b=S.children.shift();e.children.push(b)}for(let b of Object.keys(S.attributes))e.attributes[b]=S.attributes[b];return ze.processXlinks(e,t,i,u[0],s,n+1)})}static processXlinks(e,t,i,r,s,n=0){let a=ze.XlinkNamespaceUri_,o=new Set(["MPD","Period","AdaptationSet","Representation","SegmentList"]);if(I.getAttributeNS(e,a,"href")){let d=ze.handleXlinkInElement_(e,t,i,r,s,n);return i&&(d=d.chain(void 0,u=>ze.processXlinks(e,t,i,r,s,n))),d}let c=[];for(let d of I.getChildNodes(e))I.getAttributeNS(d,a,"href")=="urn:mpeg:dash:resolve-to-zero:2013"?e.children=e.children.filter(m=>m!==d):o.has(d.tagName)&&c.push(ze.processXlinks(d,t,i,r,s,n));return je.all(c).chain(()=>e)}static parseEssentialProperties(e){return ze.parseDescriptorsByTag_(e,"EssentialProperty")}static parseSupplementalProperties(e){return ze.parseDescriptorsByTag_(e,"SupplementalProperty")}static parseDescriptorsByTag_(e,t){return I.findChildren(e,t).map(ze.normalizeDescriptor_)}static getDescriptor(e,t,i){return e.find(r=>r.schemeIdUri==t&&(i==null||r.value==i))||null}static hasDescriptor(e,t,i){return ze.getDescriptor(e,t,i)!=null}static normalizeDescriptor_(e){return{schemeIdUri:e.attributes.schemeIdUri,value:e.attributes.value,id:e.attributes.id,element:e}}};l(ze,"XlinkNamespaceUri_","http://www.w3.org/1999/xlink");var Me=ze;/*! @license
|
|
583
|
+
* Shaka Player
|
|
584
|
+
* Copyright 2016 Google LLC
|
|
585
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
586
|
+
*/var Pn=class y{static parse(e,t,i,r,s,n,a,o){let c,d=new F().fullBox("sidx",u=>{c=y.parseSIDX_(t,r,s,n,a,i,u,o)});if(e&&d.parse(e),c)return c;throw p.error('Invalid box type, expected "sidx".'),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MP4_SIDX_WRONG_BOX_TYPE)}static parseSIDX_(e,t,i,r,s,n,a,o=!1){v.assert(a.version!=null,"SIDX is a full box and should have a valid version.");let c=[];a.reader.skip(4);let d=a.reader.readUint32();if(d==0)throw p.error("Invalid timescale."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MP4_SIDX_INVALID_TIMESCALE);let u,m;a.version==0?(u=a.reader.readUint32(),m=a.reader.readUint32()):(u=a.reader.readUint64(),m=a.reader.readUint64()),a.reader.skip(2);let f=a.reader.readUint16(),g=u,T=(o?-a.size:e)+a.size+m;for(let S=0;S<f;S++){let b=a.reader.readUint32(),E=(b&2147483648)>>>31,C=b&2147483647,A=a.reader.readUint32();if(a.reader.skip(4),E==1)throw p.error("Hierarchical SIDXs are not supported."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.MP4_SIDX_TYPE_NOT_SUPPORTED);let w=g/d,M=(g+A)/d;c.push(new Se(w+i,M+i,(()=>n),T,T+C-1,t,i,r,s)),g+=A,T+=C}return a.parser.stop(),c}};/*! @license
|
|
587
|
+
* Shaka Player
|
|
588
|
+
* Copyright 2016 Google LLC
|
|
589
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
590
|
+
*/var is=class is{constructor(e){l(this,"dataView_");l(this,"reader_");this.dataView_=D.toDataView(e),this.reader_=new Et(this.dataView_,Et.Endianness.BIG_ENDIAN)}hasMoreData(){return this.reader_.hasMoreData()}parseElement(){let e=this.parseId_(),t=this.parseVint_(),i;is.isDynamicSizeValue_(t)?i=this.dataView_.byteLength-this.reader_.getPosition():i=is.getVintValue_(t);let r=this.reader_.getPosition()+i<=this.dataView_.byteLength?i:this.dataView_.byteLength-this.reader_.getPosition(),s=D.toDataView(this.dataView_,this.reader_.getPosition(),r);return this.reader_.skip(r),new no(e,s)}parseId_(){let e=this.parseVint_();if(e.length>7)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.EBML_OVERFLOW);let t=0;for(let i of e)t=256*t+i;return t}parseVint_(){let e=this.reader_.getPosition(),t=this.reader_.readUint8();if(t==0)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.EBML_OVERFLOW);let r=8-Math.floor(Math.log2(t));return v.assert(r<=8&&r>=1,"Incorrect log2 value"),this.reader_.skip(r-1),D.toUint8(this.dataView_,e,r)}static getVintValue_(e){if(e.length==8&&e[1]&224)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.JS_INTEGER_OVERFLOW);let t=0;for(let i=0;i<e.length;i++){let r=e[i];if(i==0){let s=1<<8-e.length;t=r&s-1}else t=256*t+r}return t}static isDynamicSizeValue_(e){for(let t of is.DYNAMIC_SIZES)if(D.equal(e,new Uint8Array(t)))return!0;return!1}};l(is,"DYNAMIC_SIZES",[[255],[127,255],[63,255,255],[31,255,255,255],[15,255,255,255,255],[7,255,255,255,255,255],[3,255,255,255,255,255,255],[1,255,255,255,255,255,255,255]]);var rs=is,no=class{constructor(e,t){l(this,"id");l(this,"dataView_");this.id=e,this.dataView_=t}getOffset(){return this.dataView_.byteOffset}createParser(){return new rs(this.dataView_)}getUint(){if(this.dataView_.byteLength>8)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.EBML_OVERFLOW);if(this.dataView_.byteLength==8&&this.dataView_.getUint8(0)&224)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.JS_INTEGER_OVERFLOW);let e=0;for(let t=0;t<this.dataView_.byteLength;t++){let i=this.dataView_.getUint8(t);e=256*e+i}return e}getFloat(){if(this.dataView_.byteLength==4)return this.dataView_.getFloat32(0);if(this.dataView_.byteLength==8)return this.dataView_.getFloat64(0);throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.EBML_BAD_FLOATING_POINT_SIZE)}};/*! @license
|
|
591
|
+
* Shaka Player
|
|
592
|
+
* Copyright 2016 Google LLC
|
|
593
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
594
|
+
*/var ot=class ot{static parse(e,t,i,r,s,n,a){let o=ot.parseWebmContainer_(t),d=new rs(e).parseElement();if(d.id!=ot.CUES_ID)throw p.error("Not a Cues element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_CUES_ELEMENT_MISSING);return ot.parseCues_(d,o.segmentOffset,o.timecodeScale,o.duration,i,r,s,n,a)}static parseWebmContainer_(e){let t=new rs(e);if(t.parseElement().id!=ot.EBML_ID)throw p.error("Not an EBML element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_EBML_HEADER_ELEMENT_MISSING);let r=t.parseElement();if(r.id!=ot.SEGMENT_ID)throw p.error("Not a Segment element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_SEGMENT_ELEMENT_MISSING);let s=r.getOffset(),n=ot.parseSegment_(r);return{segmentOffset:s,timecodeScale:n.timecodeScale,duration:n.duration}}static parseSegment_(e){let t=e.createParser(),i=null;for(;t.hasMoreData();){let r=t.parseElement();if(r.id==ot.INFO_ID){i=r;break}}if(!i)throw p.error("Not an Info element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_INFO_ELEMENT_MISSING);return ot.parseInfo_(i)}static parseInfo_(e){let t=e.createParser(),i=1e6,r=null;for(;t.hasMoreData();){let a=t.parseElement();a.id==ot.TIMECODE_SCALE_ID?i=a.getUint():a.id==ot.DURATION_ID&&(r=a.getFloat())}if(r==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_DURATION_ELEMENT_MISSING);let s=i/1e9,n=r*s;return{timecodeScale:s,duration:n}}static parseCues_(e,t,i,r,s,n,a,o,c){let d=[],u=()=>s,m=e.createParser(),f=null,g=null;for(;m.hasMoreData();){let _=m.parseElement();if(_.id!=ot.CUE_POINT_ID)continue;let T=ot.parseCuePoint_(_);if(!T)continue;let S=i*T.unscaledTime,b=t+T.relativeOffset;f!=null&&(v.assert(g!=null,"last offset cannot be null"),d.push(new Se(f+a,S+a,u,g,b-1,n,a,o,c))),f=S,g=b}return f!=null&&(v.assert(g!=null,"last offset cannot be null"),d.push(new Se(f+a,r+a,u,g,null,n,a,o,c))),d}static parseCuePoint_(e){let t=e.createParser(),i=t.parseElement();if(i.id!=ot.CUE_TIME_ID)throw p.warning("Not a CueTime element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_CUE_TIME_ELEMENT_MISSING);let r=i.getUint(),s=t.parseElement();if(s.id!=ot.CUE_TRACK_POSITIONS_ID)throw p.warning("Not a CueTrackPositions element."),new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.WEBM_CUE_TRACK_POSITIONS_ELEMENT_MISSING);let n=s.createParser(),a=0;for(;n.hasMoreData();){let o=n.parseElement();if(o.id==ot.CUE_CLUSTER_POSITION){a=o.getUint();break}}return{unscaledTime:r,relativeOffset:a}}};l(ot,"EBML_ID",440786851),l(ot,"SEGMENT_ID",408125543),l(ot,"INFO_ID",357149030),l(ot,"TIMECODE_SCALE_ID",2807729),l(ot,"DURATION_ID",17545),l(ot,"CUES_ID",475249515),l(ot,"CUE_POINT_ID",187),l(ot,"CUE_TIME_ID",179),l(ot,"CUE_TRACK_POSITIONS_ID",183),l(ot,"CUE_CLUSTER_POSITION",241);var kn=ot;/*! @license
|
|
595
|
+
* Shaka Player
|
|
596
|
+
* Copyright 2016 Google LLC
|
|
597
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
598
|
+
*/var Hi=class y{static createInitSegment(e,t,i){let r=Me.inheritChild(e,t,"Initialization");if(!r)return null;let s=e.representation.getBaseUris(),n=r.attributes.sourceURL;n&&(s=fe.resolveUris(s,[q.htmlUnescape(n)],e.urlParams()));let a=0,o=null,c=I.parseAttr(r,"range",I.parseRange);c&&(a=c.start,o=c.end);let d=()=>s,u=y.createQualityInfo(e),m=e.adaptationSet.encrypted,f=new Tt(d,a,o,u,null,null,i,m);return f.codecs=e.representation.codecs,f.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(f.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),f}static createStreamInfo(e,t,i){v.assert(e.representation.segmentBase,"Should only be called with SegmentBase");let r=Number(Me.inheritAttribute(e,y.fromInheritance_,"presentationTimeOffset"))||0,s=Me.inheritAttribute(e,y.fromInheritance_,"timescale"),n=1;s&&(n=I.parsePositiveInt(s)||1);let a=r/n||0,o=y.createInitSegment(e,y.fromInheritance_,i);y.checkSegmentIndexRangeSupport_(e,o);let c=Ne.shallowCloneObject(e);return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndex_(c,t,o,a),timescale:n}}static async generateSegmentIndexFromUris(e,t,i,r,s,n,a){let o=e.presentationTimeline,c=!e.dynamic||!e.periodInfo.isLastPeriod,d=e.periodInfo.start,u=e.periodInfo.duration,m=e.representation.mimeType.split("/")[1],f=t,g=null,_=[f(r,s,n,!1),m=="webm"?f(i.getUris(),i.startByte,i.endByte,!0):null];f=null;let T=await Promise.all(_),S=T[0],b=T[1]||null,E=null,C=d-a,A=d,w=u?d+u:1/0,M=e.representation.getBaseUris(),x=M.length!=r.length||M.some((k,L)=>k!=r[L]);m=="mp4"?E=Pn.parse(S,s,M,i,C,A,w,x):(v.assert(b,"WebM requires init data"),E=kn.parse(S,b,M,i,C,A,w));for(let k of E)k.codecs=e.representation.codecs,k.mimeType=e.representation.mimeType,k.bandwidth=e.bandwidth;return o.notifySegments(E),v.assert(!g,"Should not call generateSegmentIndex twice"),g=new Ze(E),c&&g.fit(A,w,!0),g}static fromInheritance_(e){return e.segmentBase}static computeIndexRange_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=Me.inheritAttribute(e,y.fromInheritance_,"indexRange"),r=I.parseRange(i||"");return t&&(r=I.parseAttr(t,"range",I.parseRange,r)),r}static computeIndexUris_(e){let t=Me.inheritChild(e,y.fromInheritance_,"RepresentationIndex"),i=e.representation.getBaseUris();if(t){let r=q.htmlUnescape(t.attributes.sourceURL);r&&(i=fe.resolveUris(i,[r],e.urlParams()))}return i}static checkSegmentIndexRangeSupport_(e,t){if(y.checkSegmentIndexSupport(e,t),!y.computeIndexRange_(e))throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase does not contain @indexRange","or a RepresentationIndex element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static checkSegmentIndexSupport(e,t){let i=R.ContentType,r=e.representation.contentType,s=e.representation.mimeType.split("/")[1];if(r!=i.TEXT&&s!="mp4"&&s!="webm")throw p.error("SegmentBase specifies an unsupported container type.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_CONTAINER);if(s=="webm"&&!t)throw p.error("SegmentBase does not contain sufficient segment information:","the SegmentBase uses a WebM container,","but does not contain an Initialization element.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_WEBM_MISSING_INIT)}static generateSegmentIndex_(e,t,i,r){let s=y.computeIndexUris_(e),n=y.computeIndexRange_(e);return v.assert(n,"Index range should not be null!"),y.generateSegmentIndexFromUris(e,t,i,s,n.start,n.end,r)}static createQualityInfo(e){let t=e.representation;return{bandwidth:e.bandwidth,audioSamplingRate:t.audioSamplingRate,codecs:t.codecs,contentType:t.contentType,frameRate:t.frameRate||null,height:t.height||null,mimeType:t.mimeType,channelsCount:t.numChannels,pixelAspectRatio:t.pixelAspectRatio||null,width:t.width||null,label:e.adaptationSet.label||null,roles:e.roles||null,language:e.adaptationSet.language||null}}};/*! @license
|
|
599
|
+
* Shaka Player
|
|
600
|
+
* Copyright 2016 Google LLC
|
|
601
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
602
|
+
*/var Dn=class y{static createStreamInfo(e,t,i){v.assert(e.representation.segmentList,"Should only be called with SegmentList");let r=Hi.createInitSegment(e,y.fromInheritance_,i),s=y.parseSegmentListInfo_(e);y.checkSegmentListInfo_(e,s);let n=null,a=null;if(e.period.id&&e.representation.id){let d=e.period.id+","+e.representation.id;a=t.get(d),a&&(n=a.segmentIndex)}let o=y.createSegmentReferences_(e.periodInfo.start,e.periodInfo.duration,s.startNumber,e.representation.getBaseUris,s,r,i,e.representation.mimeType,e.representation.codecs,e.bandwidth,e.urlParams),c=!n;if(n){let d=e.presentationTimeline.getSegmentAvailabilityStart();n.mergeAndEvict(o,d)}else n=new Ze(o);if(e.presentationTimeline.notifySegments(o),!e.dynamic||!e.periodInfo.isLastPeriod){let d=e.periodInfo.start,u=e.periodInfo.duration?e.periodInfo.start+e.periodInfo.duration:1/0;n.fit(d,u,c)}return a&&(a.segmentIndex=n),{endTime:-1,timeline:-1,generateSegmentIndex:()=>((!n||n.isEmpty())&&n.merge(o),Promise.resolve(n)),timescale:s.timescale}}static fromInheritance_(e){return e.segmentList}static parseSegmentListInfo_(e){let t=y.parseMediaSegments_(e),i=Me.parseSegmentInfo(e,y.fromInheritance_),r=i.startNumber;r==0&&(p.warning("SegmentList@startNumber must be > 0"),r=1);let s=0;return i.segmentDuration?s=i.segmentDuration*(r-1):i.timeline&&i.timeline.length>0&&(s=i.timeline[0].start),{segmentDuration:i.segmentDuration,startTime:s,startNumber:r,scaledPresentationTimeOffset:i.scaledPresentationTimeOffset,timescale:i.timescale,timeline:i.timeline,mediaSegments:t}}static checkSegmentListInfo_(e,t){if(!t.segmentDuration&&!t.timeline&&t.mediaSegments.length>1)throw p.warning("SegmentList does not contain sufficient segment information:","the SegmentList specifies multiple segments,","but does not specify a segment duration or timeline.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO);if(!t.segmentDuration&&!e.periodInfo.duration&&!t.timeline&&t.mediaSegments.length==1)throw p.warning("SegmentList does not contain sufficient segment information:","the SegmentList specifies one segment,","but does not specify a segment duration, period duration,","or timeline.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO);if(t.timeline&&t.timeline.length==0)throw p.warning("SegmentList does not contain sufficient segment information:","the SegmentList has an empty timeline.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static createSegmentReferences_(e,t,i,r,s,n,a,o,c,d,u){let m=s.mediaSegments.length;s.timeline&&s.timeline.length!=s.mediaSegments.length&&(m=Math.min(s.timeline.length,s.mediaSegments.length),p.warning("The number of items in the segment timeline and the number of ","segment URLs do not match, truncating",s.mediaSegments.length,"to",m));let f=e-s.scaledPresentationTimeOffset,g=e,_=t?e+t:1/0,T=[],S=s.startTime;for(let b=0;b<m;b++){let E=s.mediaSegments[b],C=S,A;s.segmentDuration!=null?A=C+s.segmentDuration:s.timeline?A=s.timeline[b].end:(v.assert(s.mediaSegments.length==1&&t,"There should be exactly one segment with a Period duration."),A=C+t);let w=null,M=()=>(w==null&&(w=fe.resolveUris(r(),[E.mediaUri],u())),w),x=new Se(e+C,e+A,M,E.start,E.end,n,f,g,_,[],"",null,null,Se.Status.AVAILABLE,a);x.codecs=c,x.mimeType=o,x.bandwidth=d,T.push(x),S=A}return T}static parseMediaSegments_(e){return[e.representation.segmentList,e.adaptationSet.segmentList,e.period.segmentList].filter(it.isNotNull).map(i=>I.findChildren(i,"SegmentURL")).reduce((i,r)=>i.length>0?i:r).map(i=>{i.attributes.indexRange&&!e.indexRangeWarningGiven&&(e.indexRangeWarningGiven=!0,p.warning("We do not support the SegmentURL@indexRange attribute on SegmentList. We only use the SegmentList@duration attribute or SegmentTimeline, which must be accurate."));let r=q.htmlUnescape(i.attributes.media),s=I.parseAttr(i,"mediaRange",I.parseRange,{start:0,end:null});return{mediaUri:r,start:s.start,end:s.end}})}};/*! @license
|
|
603
|
+
* Shaka Player
|
|
604
|
+
* Copyright 2016 Google LLC
|
|
605
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
606
|
+
*/var fr=class y{static createStreamInfo(e,t,i,r,s,n,a,o,c,d){v.assert(e.representation.segmentTemplate,"Should only be called with SegmentTemplate or segment info defined"),!c&&!e.representation.initialization&&(e.representation.initialization=Me.inheritAttribute(e,y.fromInheritance_,"initialization"));let u=e.representation.initialization?y.createInitSegment_(e,a):null,m=y.parseSegmentTemplateInfo_(e);y.checkSegmentTemplateInfo_(e,m);let f=Ne.shallowCloneObject(e);if(m.indexTemplate)return Hi.checkSegmentIndexSupport(e,u),{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromIndexTemplate_(f,t,u,m),timescale:m.timescale};if(m.segmentDuration){if(!r&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let g=e.periodInfo.start,_=e.period.id,T=e.periodInfo.duration,S=_!=null&&n.get(_)||T,b=S?g+S:1/0;e.presentationTimeline.notifyMaxSegmentDuration(m.segmentDuration),e.presentationTimeline.notifyPeriodDuration(g,b)}return{endTime:-1,timeline:-1,generateSegmentIndex:()=>y.generateSegmentIndexFromDuration_(f,m,s,u,n,a,o,e.representation.segmentSequenceCadence),timescale:m.timescale}}else{let g=null,_=null,T=null;e.period.id&&e.representation.id&&(_=e.period.id+","+e.representation.id,T=i.get(_),T&&(g=T.segmentIndex));let S=e.periodInfo.start,b=e.periodInfo.duration?S+e.periodInfo.duration:1/0;if(p.debug(`New manifest ${S} - ${b}`),g){let M=g;M.appendTemplateInfo(m,S,b,u,e.dynamic);let x=e.presentationTimeline.getSegmentAvailabilityStart();M.evict(x)}else{let M=0,x=-1;if(e.period.id!=null&&e.representation.id!=null){let k=d.get(e.period.id);if(k)x=k.timeline;else for(let L of d.values()){let V=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(Math.abs(m.scaledPresentationTimeOffset-L.endTime)<=V&&L.reps.includes(e.representation.id)){x=L.timeline;break}else L.timeline>=M&&(M=L.timeline+1)}}x==-1&&(x=M),p.debug(`Creating TSI with end ${b}`),g=new Fs(e.dynamic,m,e.representation.originalId,e.bandwidth,e.representation.getBaseUris,e.urlParams,S,b,u,a,e.representation.segmentSequenceCadence,x)}if(m.timeline&&e.adaptationSet.contentType!=="image"&&e.adaptationSet.contentType!=="text"){let x=g.getTimeline();e.presentationTimeline.notifyTimeRange(x,S)}T&&e.dynamic&&(T.segmentIndex=g);let E=m.timeline,C=E&&E[E.length-1],A=C?C.end+m.scaledPresentationTimeOffset:-1,w=-1;return g instanceof Fs&&(w=g.continuityTimeline()),{endTime:A,timeline:w,generateSegmentIndex:()=>(g instanceof Fs&&g.isEmpty()&&g.appendTemplateInfo(m,S,b,u,e.dynamic),Promise.resolve(g)),timescale:m.timescale}}}static modifyTimepoints(e,t){let i=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(i,"timeline node not found");let r=I.findChildren(i,"S");v.assert(r,"timepoints should exist"),I.modifyNodes(r,t),i.children=r}static removeTimepoints(e){let t=Me.inheritChild(e,y.fromInheritance_,"SegmentTimeline");v.assert(t,"timeline node not found"),t.children=[]}static fromInheritance_(e){return e.segmentTemplate}static parseSegmentTemplateInfo_(e){let t=Me.parseSegmentInfo(e,y.fromInheritance_),i=Me.inheritAttribute(e,y.fromInheritance_,"media"),r=Me.inheritAttribute(e,y.fromInheritance_,"index"),s=Me.inheritAttribute(e,y.fromInheritance_,"k"),n=0;return s&&(n=parseInt(s,10)),{unscaledSegmentDuration:t.unscaledSegmentDuration,segmentDuration:t.segmentDuration,timescale:t.timescale,startNumber:t.startNumber,scaledPresentationTimeOffset:t.scaledPresentationTimeOffset,unscaledPresentationTimeOffset:t.unscaledPresentationTimeOffset,timeline:t.timeline,mediaTemplate:i&&q.htmlUnescape(i),indexTemplate:r,mimeType:e.representation.mimeType,codecs:e.representation.codecs,bandwidth:e.bandwidth,numChunks:n}}static checkSegmentTemplateInfo_(e,t){let i=0;if(i+=t.indexTemplate?1:0,i+=t.timeline?1:0,i+=t.segmentDuration?1:0,i==0)throw p.error("SegmentTemplate does not contain any segment information:","the SegmentTemplate must contain either an index URL template","a SegmentTimeline, or a segment duration.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO);if(i!=1&&(p.warning("SegmentTemplate contains multiple segment information sources:","the SegmentTemplate should only contain an index URL template,","a SegmentTimeline or a segment duration.",e.representation),t.indexTemplate?(p.info("Using the index URL template by default."),t.timeline=null,t.unscaledSegmentDuration=null,t.segmentDuration=null):(v.assert(t.timeline,"There should be a timeline"),p.info("Using the SegmentTimeline by default."),t.unscaledSegmentDuration=null,t.segmentDuration=null)),!t.indexTemplate&&!t.mediaTemplate)throw p.error("SegmentTemplate does not contain sufficient segment information:","the SegmentTemplate's media URL template is missing.",e.representation),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_NO_SEGMENT_INFO)}static generateSegmentIndexFromIndexTemplate_(e,t,i,r){v.assert(r.indexTemplate,"must be using index template");let s=Me.fillUriTemplate(r.indexTemplate,e.representation.originalId,null,null,e.bandwidth||null,null),n=fe.resolveUris(e.representation.getBaseUris(),[s]);return Hi.generateSegmentIndexFromUris(e,t,i,n,0,null,r.scaledPresentationTimeOffset)}static generateSegmentIndexFromDuration_(e,t,i,r,s,n,a,o){v.assert(t.mediaTemplate,"There should be a media template with duration");let c=e.presentationTimeline,d=e.periodInfo.start,u=e.period.id,m=e.periodInfo.duration,f=()=>{let H=u!=null&&s.get(u)||m;return H?d+H:1/0},g=t.segmentDuration;v.assert(g!=null,"Segment duration must not be null!");let _=t.startNumber,T=t.mediaTemplate,S=e.bandwidth||null,b=e.representation.originalId,E=e.representation.getBaseUris,C=e.urlParams,A=d-t.scaledPresentationTimeOffset,w=()=>[Math.max(c.getSegmentAvailabilityStart(),d),Math.min(c.getSegmentAvailabilityEnd(),f())],M=()=>{let H=w();v.assert(H.every(isFinite),"Available presentation times must be finite!"),v.assert(H.every(W=>W>=0),"Available presentation times must be positive!"),v.assert(g!=null,"Segment duration must not be null!");let J=H.map(W=>W-d),Z=[Math.ceil(J[0]/g),Math.ceil(J[1]/g)-1];return e.representation.availabilityTimeOffset&&Z[1]++,Z.map(W=>W+_)},x=M(),k=e.dynamic?Math.max(x[0],x[1]-i+1):x[0],L=a||x[1],V=H=>{v.assert(g!=null,"Segment duration must not be null!");let J=H-_,Z=J*g,ce=t.unscaledSegmentDuration;v.assert(ce!=null,"Segment duration must not be null!");let W=J*ce;"BigInt"in window&&W>Number.MAX_SAFE_INTEGER&&(W=BigInt(J)*BigInt(ce));let z=Z+d,ge=z+g,Y=Math.min(ge,f());v.assert(z<Y,"Generated a segment outside of the period!");let X=[],O=t.numChunks;if(O){let tt=(Y-z)/O;for(let _t=0;_t<O;_t++){let bt=z+tt*_t,yt=bt+tt,xt=_t,mt=()=>{let Ft=Me.fillUriTemplate(T,b,H,xt,S,W);return fe.resolveUris(E(),[Ft],C())},Qe=new Se(bt,yt,mt,0,null,r,A,d,f(),[],"",null,null,Se.Status.AVAILABLE,n);Qe.codecs=e.representation.codecs,Qe.mimeType=e.representation.mimeType,o==0?_t>0&&Qe.markAsNonIndependent():_t%o!=0&&Qe.markAsNonIndependent(),X.push(Qe)}}let $=()=>{if(O)return[];let tt=Me.fillUriTemplate(T,b,H,null,S,W);return fe.resolveUris(E(),[tt],C())},Ie=new Se(z,Y,$,0,null,r,A,d,f(),X,"",null,null,Se.Status.AVAILABLE,n,X.length>0);return Ie.codecs=e.representation.codecs,Ie.mimeType=e.representation.mimeType,Ie.bandwidth=e.bandwidth,Ie.trueEndTime=ge,Ie},ee=new y.FixedDurationSegmentIndex_(k,L,_,d,g,V),oe=c.getSegmentAvailabilityEnd()<f(),le=c.isLive();if(oe||le){let H=Math.max(k,L+1),J=g;e.representation.availabilityTimeOffset&&(J=.1),ee.updateEvery(J,()=>{let Z=c.getSegmentAvailabilityStart();ee.evict(Z);let[ce,W]=M(),z=[];for(;H<=W;){let ge=V(H);z.push(ge),H++}return Z>f()&&!z.length?null:z})}return Promise.resolve(ee)}static createInitSegment_(e,t){let i=e.representation.initialization;if(i||(i=Me.inheritAttribute(e,y.fromInheritance_,"initialization")),!i)return null;i=q.htmlUnescape(i);let r=e.representation.originalId,s=e.bandwidth||null,n=e.representation.getBaseUris,a=e.urlParams,o=()=>{v.assert(i,"Should have returned earlier");let m=Me.fillUriTemplate(i,r,null,null,s,null);return fe.resolveUris(n(),[m],a())},c=Hi.createQualityInfo(e),d=e.adaptationSet.encrypted,u=new Tt(o,0,null,c,null,null,t,d);return u.codecs=e.representation.codecs,u.mimeType=e.representation.mimeType,e.periodInfo&&!e.periodInfo.isLastPeriod&&(u.boundaryEnd=e.periodInfo.start+e.periodInfo.duration),u}};fr.FixedDurationSegmentIndex_=class extends Ze{constructor(y,e,t,i,r,s){let n=Math.max(0,e-y+1);super(new Array(n)),this.minPosition_=y,this.startNumber_=t,this.periodStart_=i,this.segmentDuration_=r,this.createReference_=s}find(y){let e=this.references.length-1;if(e<0)return null;let t=this.get(this.numEvicted_);if(!t)return null;if(y<t.startTime)return this.numEvicted_;let r=Math.floor((y-this.periodStart_)/this.segmentDuration_)+this.startNumber_-this.minPosition_;if(r<this.numEvicted_)return null;let s=this.get(r);if(!s)return null;let a=r-this.numEvicted_<e?this.get(r+1):null,o=a?a.startTime:s.endTime;return y>=s.startTime&&y<o?r:null}get(y){let e=y-this.numEvicted_;if(e<0||e>=this.references.length)return null;let t=this.references[e];return t||(t=this.createReference_(this.minPosition_+y),this.references[e]=t),t}earliestReference(){return this.get(this.numEvicted_)}forEachTopLevelReference(y){for(let e=0;e<this.references.length;e++){let t=this.get(e+this.numEvicted_);t&&y(t)}}evict(y){if(this.getIsImmutable())return;let e=this.references.length-1;if(e<0)return;let t=this.get(this.numEvicted_);if(!t||t.endTime>y)return;let i=this.numEvicted_+e,r=this.get(i),s=r&&r.endTime<=y?this.references.length:Math.max(0,Math.min(this.references.length,Math.floor((y-this.periodStart_)/this.segmentDuration_+this.startNumber_-1)-(this.minPosition_+this.numEvicted_)+1));s>0&&(this.numEvicted_+=s,this.references=this.references.slice(s))}};var Fs=class y extends Ze{constructor(t,i,r,s,n,a,o,c,d,u,m,f){super([]);l(this,"dynamic_");l(this,"templateInfo_");l(this,"representationId_");l(this,"bandwidth_");l(this,"getBaseUris_");l(this,"urlParams_");l(this,"periodStart_");l(this,"periodEnd_");l(this,"initSegmentReference_");l(this,"aesKey_");l(this,"segmentSequenceCadence_");l(this,"timeline_");l(this,"references");this.dynamic_=t,this.templateInfo_=i,this.representationId_=r,this.bandwidth_=s,this.getBaseUris_=n,this.urlParams_=a,this.periodStart_=o,this.periodEnd_=c,this.initSegmentReference_=d,this.aesKey_=u,this.segmentSequenceCadence_=m,this.timeline_=f,this.fitTimeline()}getNumReferences(){return this.templateInfo_?this.templateInfo_.timeline.length:0}release(){super.release(),this.templateInfo_=null}evict(t){if(!this.templateInfo_)return;p.debug(`${this.representationId_} Evicting at ${t}`);let i=this.templateInfo_.timeline;if(!i)return;let r=0;for(;r<i.length&&i[r].end+this.periodStart_<=t;)r++;r>0&&(this.templateInfo_.timeline=i.slice(r),this.references.length>=r&&(this.references=this.references.slice(r)),this.numEvicted_+=r,this.getNumReferences()===0&&this.release())}appendTemplateInfo(t,i,r,s,n){if(this.updateInitSegmentReference(s),this.dynamic_=n,!this.templateInfo_)this.templateInfo_=t,this.periodStart_=i,this.periodEnd_=r;else{if(this.templateInfo_.unscaledPresentationTimeOffset!==t.unscaledPresentationTimeOffset){let c=t.unscaledPresentationTimeOffset-this.templateInfo_.unscaledPresentationTimeOffset;p.error("Possibly suboptimal manifest detected!","presentationTimeOffset is "+t.unscaledPresentationTimeOffset,"which differs "+c+" from the cache template.");for(let d=0;d<t.timeline.length;d++){let u=t.timeline[d];u.unscaledStart+=c,u.unscaledEnd+=c,u.start=(u.unscaledStart+c)/t.timescale,u.end=(u.unscaledEnd+c)/t.timescale}}this.templateInfo_.mediaTemplate!==t.mediaTemplate&&(this.templateInfo_.mediaTemplate=t.mediaTemplate);let a=this.templateInfo_.timeline,o;if(a.length){let c=a[a.length-1];o=t.timeline.filter(d=>d.end>c.end)}else o=t.timeline.slice();o.length>0&&(p.debug(`Appending ${o.length} entries`),this.templateInfo_.timeline.push(...o)),this.periodEnd_!==r&&(this.periodEnd_=r)}this.fitTimeline()}updateInitSegmentReference(t){if(this.initSegmentReference_!==t){this.initSegmentReference_=t;for(let i of this.references)i&&i.updateInitSegmentReference(t)}}isBeforeFirstEntry(t){if(this.templateInfo_&&this.templateInfo_.timeline&&this.templateInfo_.timeline.length){let r=this.templateInfo_.timeline;return t<r[0].start+this.periodStart_}else return!1}fitTimeline(){if(!this.templateInfo_||this.getIsImmutable())return;let t=this.templateInfo_.timeline;v.assert(t,"Timeline should be non-null!");let i=[];for(let r of t)r.start>=this.periodEnd_||r.end<=0||i.push(r);this.templateInfo_.timeline=i,this.evict(this.periodStart_)}getTimeline(){if(!this.templateInfo_)return[];let t=this.templateInfo_.timeline;return v.assert(t,"Timeline should be non-null!"),t}find(t){if(p.debug(`Find ${t}`),this.isBeforeFirstEntry(t))return this.numEvicted_;if(!this.templateInfo_)return null;let i=this.templateInfo_.timeline;if(t<this.periodStart_||t>=this.periodEnd_)return null;let r=i.length-1,s=ye.binarySearch(i,c=>c.start+this.periodStart_<=t)-1;if(s<0)return null;let n=i[s],a=n.start+this.periodStart_,o;return s<r?o=i[s+1].start+this.periodStart_:this.periodEnd_===1/0?o=n.end+this.periodStart_:o=this.periodEnd_,t>=a&&t<o?s+this.numEvicted_:null}get(t){let i=t-this.numEvicted_;if(i<0||i>=this.getNumReferences()||!this.templateInfo_)return null;let r=this.references[i];if(!r){let s=this.templateInfo_.timeline[i],n=s.segmentPosition,a=s.unscaledStart+this.templateInfo_.unscaledPresentationTimeOffset,o=this.periodStart_-this.templateInfo_.scaledPresentationTimeOffset,c=this.periodStart_+s.end,d=c;i===this.getNumReferences()-1&&this.periodEnd_!==1/0&&(this.dynamic_&&Math.abs(d-this.periodEnd_)>.1?d=Math.min(d,this.periodEnd_):d=this.periodEnd_);let u=this.templateInfo_.codecs,m=this.templateInfo_.mimeType,f=this.templateInfo_.bandwidth,g=[],_=!1;if(s.partialSegments&&this.templateInfo_&&this.templateInfo_.mediaTemplate&&(_=this.templateInfo_.mediaTemplate.includes("$SubNumber$")),_){let S=(s.end-s.start)/s.partialSegments;for(let b=0;b<s.partialSegments;b++){let E=s.start+S*b,C=E+S,A=b,w=null,M=()=>this.templateInfo_?(w==null&&(w=y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,A,this.getBaseUris_,this.urlParams_)),w):[],x=new Se(this.periodStart_+E,this.periodStart_+C,M,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,[],"",null,null,Se.Status.AVAILABLE,this.aesKey_);x.codecs=u,x.mimeType=m,x.bandwidth=f,this.segmentSequenceCadence_==0?b>0&&x.markAsNonIndependent():b%this.segmentSequenceCadence_!=0&&x.markAsNonIndependent(),g.push(x)}}let T=()=>g.length>0||!this.templateInfo_?[]:y.createUris_(this.templateInfo_.mediaTemplate,this.representationId_,n,this.bandwidth_,a,null,this.getBaseUris_,this.urlParams_);r=new Se(this.periodStart_+s.start,d,T,0,null,this.initSegmentReference_,o,this.periodStart_,this.periodEnd_,g,"",null,null,Se.Status.AVAILABLE,this.aesKey_,g.length>0),r.codecs=u,r.mimeType=m,r.trueEndTime=c,r.bandwidth=f,this.references[i]=r}return r}forEachTopLevelReference(t){this.fitTimeline();for(let i=0;i<this.getNumReferences();i++){let r=this.get(i+this.numEvicted_);r&&t(r)}}static createUris_(t,i,r,s,n,a,o,c){let d=Me.fillUriTemplate(t,i,r,a,s||null,n);return fe.resolveUris(o(),[d],c())}continuityTimeline(){return this.timeline_}};/*! @license
|
|
607
|
+
* Shaka Player
|
|
608
|
+
* Copyright 2016 Google LLC
|
|
609
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
610
|
+
*/var ss=class{constructor(e){l(this,"config_");l(this,"playerInterface_");l(this,"operationManager_");l(this,"baseUris_");l(this,"defaultPathwayId_");l(this,"pathwayPriority_");l(this,"lastPathwayUsed_");l(this,"pathwayClones_");l(this,"lastTTL_");l(this,"locations_");l(this,"bannedLocations_");l(this,"updateTimer_");l(this,"manifestType_");this.config_=null,this.playerInterface_=e,this.operationManager_=new gi,this.baseUris_=[],this.defaultPathwayId_=null,this.pathwayPriority_=[],this.lastPathwayUsed_=null,this.pathwayClones_=[],this.lastTTL_=300,this.locations_=new Map,this.bannedLocations_=new Map,this.updateTimer_=null,this.manifestType_=me.UNKNOWN}configure(e){this.config_=e}destroy(){return this.config_=null,this.playerInterface_=null,this.baseUris_=[],this.defaultPathwayId_=null,this.pathwayPriority_=[],this.pathwayClones_=[],this.locations_.clear(),this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null),this.operationManager_.destroy()}setManifestType(e){this.manifestType_=e}setBaseUris(e){this.baseUris_=e}setDefaultPathwayId(e){this.defaultPathwayId_=e}async requestInfo(e){let t=fe.resolveUris(this.baseUris_,[this.addQueryParams_(e)]),i=K.RequestType.CONTENT_STEERING,r=K.makeRequest(t,this.config_.retryParameters),s=this.playerInterface_.networkingEngine.request(i,r);this.operationManager_.manage(s);try{let n=await s.promise,a=q.fromUTF8(n.data),o=JSON.parse(a);o.VERSION==1&&this.processManifest_(o,n.uri)}catch(n){if(n&&n.code==h.Code.OPERATION_ABORTED)return;this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null),this.updateTimer_=new ae(()=>{this.requestInfo(e)}),this.updateTimer_.tickAfter(this.lastTTL_)}}addQueryParams_(e){if(!this.pathwayPriority_.length)return e;let t=new Map,i=this.lastPathwayUsed_||this.pathwayPriority_[0],r=Math.round(this.playerInterface_.getBandwidthEstimate());return this.manifestType_==me.DASH?(t.set("_DASH_pathway",i),t.set("_DASH_throughput",String(r))):this.manifestType_==me.HLS&&(t.set("_HLS_pathway",i),t.set("_HLS_throughput",String(r))),fe.appendParams(e,t)}processManifest_(e,t){this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null);let i=e["RELOAD-URI"]||t;this.updateTimer_=new ae(()=>{this.requestInfo(i)});let r=e.TTL;r&&(this.lastTTL_=r),this.updateTimer_.tickAfter(this.lastTTL_),this.pathwayPriority_=e["PATHWAY-PRIORITY"]||[],this.pathwayClones_=e["PATHWAY-CLONES"]||[]}clearPreviousLocations(){this.locations_.clear()}addLocation(e,t,i){let r=this.locations_.get(e);r||(r=new Map),r.set(t,i),this.locations_.set(e,r)}banLocation(e){let t=Date.now()+6e4;this.bannedLocations_.set(e,t)}getLocations(e,t=!1){let i=this.locations_.get(e)||new Map,r=[];for(let a of this.pathwayPriority_){let o=i.get(a);if(o)r.push({pathwayId:a,location:o});else{let c=this.pathwayClones_.find(d=>d.ID==a);if(c){let d=i.get(c["BASE-ID"]);if(d)if(c["URI-REPLACEMENT"].HOST){let u=fe.setDomain(d,c["URI-REPLACEMENT"].HOST);r.push({pathwayId:a,location:u})}else r.push({pathwayId:a,location:d})}}}let s=Date.now();for(let a of this.bannedLocations_.keys()){let o=this.bannedLocations_.get(a);s>o&&this.bannedLocations_.delete(a)}r=r.filter(a=>{let o=fe.getDomain(a.location);for(let c of this.bannedLocations_.keys())if(c.includes(o))return!1;return!0}),r.length&&(this.lastPathwayUsed_=r[0].pathwayId);let n=r.map(a=>a.location);if(!n.length&&this.defaultPathwayId_)for(let a of this.defaultPathwayId_.split(",")){let o=i.get(a);o&&(this.lastPathwayUsed_=this.defaultPathwayId_,n.push(o))}if(!n.length)for(let a of i.values())n.push(a);return t?n:fe.resolveUris(this.baseUris_,n)}};/*! @license
|
|
611
|
+
* Shaka Player
|
|
612
|
+
* Copyright 2016 Google LLC
|
|
613
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
614
|
+
*/var re=class re{constructor(){l(this,"variants_");l(this,"audioStreams_");l(this,"videoStreams_");l(this,"textStreams_");l(this,"imageStreams_");l(this,"useStreamOnce_");l(this,"usedPeriodIds_");l(this,"streamCollections_");this.variants_=[],this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.useStreamOnce_=!1,this.usedPeriodIds_=new Set;let e=R.ContentType;this.streamCollections_=new Map().set(e.AUDIO,this.audioStreams_).set(e.VIDEO,this.videoStreams_).set(e.TEXT,this.textStreams_).set(e.IMAGE,this.imageStreams_)}release(){let e=this.audioStreams_.concat(this.videoStreams_,this.textStreams_,this.imageStreams_);for(let t of e)t.segmentIndex&&t.segmentIndex.release();this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.imageStreams_=[],this.variants_=[],this.useStreamOnce_=!1,this.usedPeriodIds_.clear(),this.streamCollections_.clear()}getVariants(){return this.variants_}getTextStreams(){return this.textStreams_.slice()}getImageStreams(){return this.imageStreams_}deleteStream(e,t){if(!e)return;let i=this.streamCollections_.get(e.type)||[];for(let r of i){re.removeFromMatchedStreams_(r,e);let s=re.getOptionalStreams(r);for(let n of s)re.removeFromMatchedStreams_(n,e)}e.segmentIndex&&e.closeSegmentIndex(),this.usedPeriodIds_.delete(t)}static removeFromMatchedStreams_(e,t){var i;e.matchedStreams=(i=e.matchedStreams)==null?void 0:i.filter(r=>r!==t)}static toStreamMap_(e,t){return new Map(e.map(i=>[t(i),i]))}getStreamsPerPeriod_(e,t){let i=R.ContentType,r=[],s=[],n=[],a=[];for(let o of e){let c=re.toStreamMap_(o.audioStreams,re.generateAudioKey_),d=re.toStreamMap_(o.videoStreams,re.generateVideoKey_),u=re.toStreamMap_(o.textStreams,re.generateTextKey_),m=re.toStreamMap_(o.imageStreams,re.generateImageKey_);if(t){let f=re.dummyStream_(i.TEXT);u.set(re.generateTextKey_(f),f);let g=re.dummyStream_(i.IMAGE);m.set(re.generateImageKey_(g),g)}r.push(c),s.push(d),n.push(u),a.push(m)}return{audioStreamsPerPeriod:r,videoStreamsPerPeriod:s,textStreamsPerPeriod:n,imageStreamsPerPeriod:a}}async combinePeriods(e,t,i=!1){let r=R.ContentType;if(!t&&e.length==1){let{audioStreamsPerPeriod:a,videoStreamsPerPeriod:o,textStreamsPerPeriod:c,imageStreamsPerPeriod:d}=this.getStreamsPerPeriod_(e,!1);this.audioStreams_=Array.from(a[0].values()),this.videoStreams_=Array.from(o[0].values()),this.textStreams_=Array.from(c[0].values()),this.imageStreams_=Array.from(d[0].values())}else{let a=i?this.usedPeriodIds_.size:0,o=-1;for(let f=0;f<e.length;f++){let g=e[f];this.usedPeriodIds_.has(g.id)||(this.usedPeriodIds_.add(g.id),o==-1&&(o=f))}if(o==-1)return;let{audioStreamsPerPeriod:c,videoStreamsPerPeriod:d,textStreamsPerPeriod:u,imageStreamsPerPeriod:m}=this.getStreamsPerPeriod_(e,!0);await Promise.all([this.combine_(this.audioStreams_,c,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.videoStreams_,d,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.textStreams_,u,o,re.cloneStream_,re.concatenateStreams_,a),this.combine_(this.imageStreams_,m,o,re.cloneStream_,re.concatenateStreams_,a)])}let s=0,n=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let a=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let o of a){let c=s++,d=o.bandwidth||0;o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0),n.push({id:c,language:o.language,disabledUntilTime:0,primary:o.primary,audio:o.type==r.AUDIO?o:null,video:o.type==r.VIDEO?o:null,bandwidth:d,drmInfos:o.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let a of this.audioStreams_)for(let o of this.videoStreams_){let c=de.getCommonDrmInfos(a.drmInfos,o.drmInfos);if(a.drmInfos.length&&o.drmInfos.length&&!c.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",a,o);continue}let d=(a.bandwidth||0)+(o.bandwidth||0);a.dependencyStream&&(d+=a.dependencyStream.bandwidth||0),o.dependencyStream&&(d+=o.dependencyStream.bandwidth||0);let u=s++;n.push({id:u,language:a.language,disabledUntilTime:0,primary:a.primary,audio:a,video:o,bandwidth:d,drmInfos:c,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=n}static async combineDbStreams(e){let t=R.ContentType;if(e.length==1)return e[0];let i=e.map(f=>new Map(f.filter(g=>g.type===t.AUDIO).map(g=>[re.generateAudioKey_(g),g]))),r=e.map(f=>new Map(f.filter(g=>g.type===t.VIDEO).map(g=>[re.generateVideoKey_(g),g]))),s=e.map(f=>new Map(f.filter(g=>g.type===t.TEXT).map(g=>[re.generateTextKey_(g),g]))),n=e.map(f=>new Map(f.filter(g=>g.type===t.IMAGE).map(g=>[re.generateImageKey_(g),g])));for(let f of s){let g=re.dummyStreamDB_(t.TEXT);f.set(re.generateTextKey_(g),g)}for(let f of n){let g=re.dummyStreamDB_(t.IMAGE);f.set(re.generateImageKey_(g),g)}let a=new re,[o,c,d,u]=await Promise.all([i,r,s,n].map(f=>a.combine_([],f,0,re.cloneStreamDB_,re.concatenateStreamDBs_,0))),m=0;if(!c.length||!o.length){let f=c.concat(o);for(let g of f)g.variantIds=[m++]}else for(let f of o)for(let g of c){let _=m++;g.variantIds.push(_),f.variantIds.push(_)}return c.concat(o).concat(d).concat(u)}async combine_(e,t,i,r,s,n){let a=[];for(let o=0;o<t.length;o++)o>=i?a.push(new Set(t[o].values())):a.push(new Set);for(let o of e)if(!await this.extendExistingOutputStream_(o,t,i,s,a,n))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);for(let o of a)for(let c of o){let d=this.createNewOutputStream_(e,c,t,r,s,a);d&&e.push(d)}for(let o of a)for(let c of o)if(!(re.isDummy_(c)||!e.some(u=>this.areAVStreamsCompatible_(c,u))))throw p.error("Unused stream in period-flattening!",c,e),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.PERIOD_FLATTENING_FAILED);return e}async extendExistingOutputStream_(e,t,i,r,s,n){return this.findMatchesInAllPeriods_(t,e,n>0),v.assert(e.createSegmentIndex,"outputStream should be a Stream type!"),e.matchedStreams?(e.segmentIndex&&await re.extendOutputSegmentIndex_(e,i+n),re.extendOutputStream_(e,i,r,s,n),!0):(p.error("No matches extending output stream!",e,t),!1)}static async extendOutputSegmentIndex_(e,t){let i=[],r=e.matchedStreams;v.assert(r,"matched streams should be valid");for(let s=t;s<r.length;s++){let n=r[s];i.push(n.createSegmentIndex());let a=re.getOptionalStreams(n);for(let o of a)o.segmentIndex||i.push(o.createSegmentIndex())}if(await Promise.all(i),e.segmentIndex instanceof Mi)for(let s=t;s<r.length;s++){let n=r[s];v.assert(n.segmentIndex,"stream should have a segmentIndex."),n.segmentIndex&&e.segmentIndex.appendSegmentIndex(n.segmentIndex)}}createNewOutputStream_(e,t,i,r,s,n){if(re.isDummy_(t))return null;let a=r(t);return this.findMatchesInAllPeriods_(i,a),a.createSegmentIndex&&(a.createSegmentIndex=async()=>{a.segmentIndex||(a.segmentIndex=new Mi,await re.extendOutputSegmentIndex_(a,0))},a.closeSegmentIndex=()=>{if(a.segmentIndex&&(a.segmentIndex.release(),a.segmentIndex=null),a.matchedStreams)for(let o of a.matchedStreams)o.segmentIndex&&!re.isStreamActivelyUsed_(o,a,e)&&(o.segmentIndex.release(),o.segmentIndex=null)}),!a.matchedStreams||!a.matchedStreams.length?null:(re.extendOutputStream_(a,0,s,n,0),a)}static extendOutputStream_(e,t,i,r,s){let n=R.ContentType,a=e.matchedStreams;v.assert(e.matchedStreams,"matchedStreams should be non-null");let o=t+s;for(let c=o;c<a.length;c++){let d=a[c];i(e,d);let u=!0;if(e.type==n.AUDIO&&ve.relatedness(e.language,d.language)==0&&(u=!1),u){let m=r[c-s];if(m&&m.delete(d),d.fullMimeTypes)for(let f of d.fullMimeTypes.values())e.fullMimeTypes.add(f)}}}static cloneStream_(e){let t=Object.assign({},e);return t.originalId=null,t.createSegmentIndex=()=>Promise.resolve(),t.closeSegmentIndex=()=>{},t.roles=t.roles.slice(),t.segmentIndex=null,t.emsgSchemeIdUris=[],t.keyIds=new Set(e.keyIds),t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t.trickModeVideo=null,t.dependencyStream=null,t}static cloneStreamDB_(e){let t=Object.assign({},e);return t.roles=t.roles.slice(),t.keyIds=new Set(e.keyIds),t.segments=[],t.variantIds=[],t.closedCaptions=e.closedCaptions?new Map(e.closedCaptions):null,t}static combineArrays_(e,t){e||(e=[]);for(let i of t)e.includes(i)||e.push(i);return e}static concatenateStreams_(e,t){e.roles=re.combineArrays_(e.roles,t.roles),t.emsgSchemeIdUris&&(e.emsgSchemeIdUris=re.combineArrays_(e.emsgSchemeIdUris,t.emsgSchemeIdUris));for(let r of t.keyIds)e.keyIds.add(r);if(e.originalId==null)e.originalId=t.originalId;else{let r=t.originalId||"";r&&!e.originalId.endsWith(r)&&(e.originalId+=","+r)}let i=de.getCommonDrmInfos(e.drmInfos,t.drmInfos);if(t.drmInfos.length&&e.drmInfos.length&&!i.length)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.INCONSISTENT_DRM_ACROSS_PERIODS);if(e.drmInfos=i,e.encrypted=e.encrypted||t.encrypted,t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[r,s]of t.closedCaptions)e.closedCaptions.set(r,s)}e.bandwidth&&t.bandwidth&&(e.bandwidth=Math.max(e.bandwidth,t.bandwidth));for(let r of re.OptionalStreamTypes_)re.combineOptionalStream_(e,t,r)}static combineOptionalStream_(e,t,i){let r=t[i]||null,s=e[i]||null;r?(s||(s=re.cloneStream_(r),s.matchedStreams=[],s.createSegmentIndex=async()=>{if(s.segmentIndex)return;let n=new Mi;v.assert(s.matchedStreams,`${i} matched streams should exist`);for(let a of s.matchedStreams)a.segmentIndex||await a.createSegmentIndex(),v.assert(a.segmentIndex,`${i} segment index should exist`),n.appendSegmentIndex(a.segmentIndex);s.segmentIndex=n},e[i]=s),s.matchedStreams.push(r),re.concatenateStreams_(s,r)):s&&(s.matchedStreams.push(t),re.concatenateStreams_(s,t))}static concatenateStreamDBs_(e,t){e.roles=re.combineArrays_(e.roles,t.roles);for(let i of t.keyIds)e.keyIds.add(i);if(e.encrypted=e.encrypted&&t.encrypted,e.segments.push(...t.segments),t.closedCaptions){e.closedCaptions||(e.closedCaptions=new Map);for(let[i,r]of t.closedCaptions)e.closedCaptions.set(i,r)}}findMatchesInAllPeriods_(e,t,i=!1){let r=i?t.matchedStreams:[];for(let s of e){let n=this.findBestMatchInPeriod_(s,t);if(!n)return;r.push(n)}t.matchedStreams=r}findBestMatchInPeriod_(e,t){let i={audio:re.generateAudioKey_,video:re.generateVideoKey_,text:re.generateTextKey_,image:re.generateImageKey_}[t.type],r=null,s=i(t);if(e.has(s))r=e.get(s);else{let n={audio:(o,c)=>this.areAVStreamsCompatible_(o,c),video:(o,c)=>this.areAVStreamsCompatible_(o,c),text:re.areTextStreamsCompatible_,image:re.areImageStreamsCompatible_}[t.type],a={audio:re.isAudioStreamBetterMatch_,video:re.isVideoStreamBetterMatch_,text:re.isTextStreamBetterMatch_,image:re.isImageStreamBetterMatch_}[t.type];for(let o of e.values())n(t,o)&&t.fastSwitching==o.fastSwitching&&(!r||a(t,r,o))&&(r=o)}return this.useStreamOnce_&&!re.isDummy_(r)&&e.delete(i(r)),r}static areAVStreamsExactMatch_(e,t){return e.mimeType===t.mimeType&&e.codecs===t.codecs}static areAVStreamsCodecsCompatible_(e,t){return e.mimeType!=t.mimeType?!1:re.getCodec_(e.codecs)===re.getCodec_(t.codecs)}setUseStreamOnce(e){this.useStreamOnce_=e}areAVStreamsCompatible_(e,t){return!(e.drmInfos&&!de.areDrmCompatible(e.drmInfos,t.drmInfos))}static areTextStreamsCompatible_(e,t){return t.language?!(e.forced!==t.forced||ve.relatedness(e.language,t.language)==0||t.kind!=e.kind):!0}static areImageStreamsCompatible_(e,t){return!0}static isAudioStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=ve.relatedness(e.language,t.language),c=ve.relatedness(e.language,i.language);if(c>o)return!0;if(c<o)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let m=t.roles.filter(g=>e.roles.includes(g)),f=i.roles.filter(g=>e.roles.includes(g));if(f.length>m.length)return!0;if(f.length<m.length)return!1;if(i.roles.length!==t.roles.length)return i.roles.length<t.roles.length}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;let d=re.compareClosestPreferLower(e.channelsCount,t.channelsCount,i.channelsCount);if(d==r)return!0;if(d==n)return!1;let u=re.compareClosestPreferLower(e.audioSamplingRate,t.audioSamplingRate,i.audioSamplingRate);if(u==r)return!0;if(u==n)return!1;if(e.bandwidth){let m=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(m==r)return!0;if(m==n)return!1}return!1}static isVideoStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareCodecs_(e,t,i);if(a===r)return!0;if(a===n)return!1;let o=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);if(o==r)return!0;if(o==n)return!1;if(e.frameRate){let c=re.compareClosestPreferLower(e.frameRate,t.frameRate,i.frameRate);if(c==r)return!0;if(c==n)return!1}if(e.bandwidth){let c=re.compareClosestPreferMinimalAbsDiff_(e.bandwidth,t.bandwidth,i.bandwidth);if(c==r)return!0;if(c==n)return!1}return!1}static isTextStreamBetterMatch_(e,t,i){let r=ve.relatedness(e.language,t.language),s=ve.relatedness(e.language,i.language);if(s>r)return!0;if(s<r)return!1;if(!t.primary&&i.primary)return!0;if(t.primary&&!i.primary)return!1;if(t.label!==i.label){if(e.label===t.label)return!1;if(e.label===i.label)return!0}if(e.roles.length){let n=t.roles.filter(o=>e.roles.includes(o)),a=i.roles.filter(o=>e.roles.includes(o));if(a.length>n.length)return!0;if(a.length<n.length)return!1}else{if(!i.roles.length&&t.roles.length)return!0;if(i.roles.length&&!t.roles.length)return!1}return i.mimeType==e.mimeType&&i.codecs==e.codecs&&(t.mimeType!=e.mimeType||t.codecs!=e.codecs)}static isImageStreamBetterMatch_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.compareClosestPreferLower(e.width*e.height,t.width*t.height,i.width*i.height);return a==r?!0:(a==n,!1)}static dummyStreamDB_(e){return{id:0,originalId:"",groupId:null,primary:!1,type:e,mimeType:"",codecs:"",supplementalCodecs:"",language:"",originalLanguage:null,label:null,width:null,height:null,encrypted:!1,keyIds:new Set,segments:[],variantIds:[],roles:[],forced:!1,channelsCount:null,audioSamplingRate:null,spatialAudio:!1,closedCaptions:null,external:!1,fastSwitching:!1,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1}}static dummyStream_(e){return se.createStream({originalId:"",segmentIndex:new Ze([]),type:e})}static compareClosestPreferLower(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse;if(t==e&&e!=i)return n;if(i==e&&e!=t)return r;if(t>e){if(i<=e||i-e<t-e)return r;if(i-e>t-e)return n}else{if(i>e)return n;if(e-i<e-t)return r;if(e-i>e-t)return n}return s}static compareCodecs_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=re.areAVStreamsExactMatch_(e,t),o=re.areAVStreamsExactMatch_(e,i);if(a&&!o)return n;if(!a&&o)return r;let c=re.areAVStreamsCodecsCompatible_(e,t),d=re.areAVStreamsCodecsCompatible_(e,i);return c&&!d?n:!c&&d?r:s}static compareClosestPreferMinimalAbsDiff_(e,t,i){let{BETTER:r,EQUAL:s,WORSE:n}=re.BetterOrWorse,a=Math.abs(e-t),o=Math.abs(e-i);return o<a?r:a<o?n:s}static isDummy_(e){let t=R.ContentType;switch(e.type){case t.TEXT:return!e.language;case t.IMAGE:return!e.tilesLayout;default:return!1}}static generateVideoKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.width,e.frameRate,e.codecs,e.mimeType,e.label,e.roles,e.closedCaptions?Array.from(e.closedCaptions.entries()):null,e.bandwidth,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateAudioKey_(e){var t,i;return re.generateKey_([e.fastSwitching,e.channelsCount,e.language,e.bandwidth,e.label,e.codecs,e.mimeType,e.roles,e.audioSamplingRate,e.primary,(i=(t=e.dependencyStream)==null?void 0:t.baseOriginalId)!=null?i:e.baseOriginalId,Array.from(e.keyIds)])}static generateTextKey_(e){return re.generateKey_([e.language,e.label,e.codecs,e.mimeType,e.bandwidth,e.roles])}static generateImageKey_(e){return re.generateKey_([e.width,e.codecs,e.mimeType])}static generateKey_(e){return JSON.stringify(e)}static getCodec_(e){return re.memoizedCodecs.getOrInsertComputed(e,()=>N.getNormalizedCodec(e))}static isStreamActivelyUsed_(e,t,i){for(let r of i)if(r!==t&&r.segmentIndex&&r.matchedStreams&&r.matchedStreams.includes(e))return p.v2(`Stream ${e.id} is already used in output stream ${r.id}, cannot close it now.`),!0;return p.v2(`Stream ${e.id} not used anywhere else besides ${t.id}, good to close.`),!1}static getOptionalStreams(e){let t=[];for(let i of re.OptionalStreamTypes_){let r=e[i];r&&t.push(r)}return t}};l(re,"OptionalStreamTypes_",["trickModeVideo","dependencyStream"]),l(re,"BetterOrWorse",{BETTER:1,EQUAL:0,WORSE:-1}),l(re,"memoizedCodecs",new Map);var gr=re;/*! @license
|
|
615
|
+
* Shaka Player
|
|
616
|
+
* Copyright 2016 Google LLC
|
|
617
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
618
|
+
*/var ft=class ft{constructor(){l(this,"config_");l(this,"playerInterface_");l(this,"manifestUris_");l(this,"manifest_");l(this,"globalId_");l(this,"patchLocationNodes_");l(this,"manifestPatchContext_");l(this,"contextCache_");l(this,"continuityCache_");l(this,"parsedPeriodCache_");l(this,"streamMap_");l(this,"indexStreamMap_");l(this,"periodDurations_");l(this,"periodCombiner_");l(this,"updatePeriod_");l(this,"averageUpdateDuration_");l(this,"updateTimer_");l(this,"operationManager_");l(this,"largestPeriodStartTime_");l(this,"lastManifestUpdatePeriodIds_");l(this,"minTotalAvailabilityTimeOffset_");l(this,"lowLatencyMode_");l(this,"contentSteeringManager_");l(this,"gapCount_");l(this,"isLowLatency_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"isTransitionFromDynamicToStatic_");l(this,"lastManifestQueryParams_");l(this,"mpdpatchUrlParamsFn_");l(this,"mpdUrlParamsFn_");l(this,"isPreloadFn_");l(this,"lastCalculatedBaseUris_");l(this,"parsedPrftNodes_");l(this,"contentProtection_");this.config_=null,this.playerInterface_=null,this.manifestUris_=[],this.manifest_=null,this.globalId_=1,this.patchLocationNodes_=[],this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.contextCache_=new Map,this.continuityCache_=new Map,this.parsedPeriodCache_=new Map,this.streamMap_=new Map,this.indexStreamMap_=new Map,this.periodDurations_=new Map,this.periodCombiner_=new gr,this.updatePeriod_=0,this.averageUpdateDuration_=new er(5),this.updateTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.operationManager_=new gi,this.largestPeriodStartTime_=null,this.lastManifestUpdatePeriodIds_=[],this.minTotalAvailabilityTimeOffset_=1/0,this.lowLatencyMode_=!1,this.contentSteeringManager_=null,this.gapCount_=0,this.isLowLatency_=!1,this.eventManager_=new ue,this.mediaElement_=null,this.isTransitionFromDynamicToStatic_=!1,this.lastManifestQueryParams_="",this.mpdpatchUrlParamsFn_=null,this.mpdUrlParamsFn_=null,this.isPreloadFn_=()=>!1,this.lastCalculatedBaseUris_=[],this.parsedPrftNodes_=new Set,this.contentProtection_=new vi}configure(e,t){v.assert(e.dash!=null,"DashManifestConfiguration should not be null!");let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),i&&this.manifest_&&this.manifest_.presentationTimeline.isLive()&&this.updateNow_(),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),this.periodCombiner_&&this.periodCombiner_.setUseStreamOnce(this.config_.dash.useStreamOnceInPeriodFlattening)}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.lowLatencyMode_=t.isLowLatencyMode(),this.manifestUris_=[e],this.playerInterface_=t;let i=await this.requestManifest_();if(this.playerInterface_&&this.setUpdateTimer_(i),!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);return v.assert(this.manifest_,"Manifest should be non-null!"),this.manifest_}stop(){for(let e of this.streamMap_.values())e.segmentIndex&&e.segmentIndex.release();return this.periodCombiner_&&this.periodCombiner_.release(),this.playerInterface_=null,this.config_=null,this.manifestUris_=[],this.manifest_=null,this.streamMap_.clear(),this.indexStreamMap_.clear(),this.contextCache_.clear(),this.continuityCache_.clear(),this.parsedPeriodCache_.clear(),this.manifestPatchContext_={mpdId:"",type:"",profiles:[],mediaPresentationDuration:null,availabilityTimeOffset:0,getBaseUris:null,publishTime:0},this.periodCombiner_=null,this.updateTimer_!=null&&(this.updateTimer_.stop(),this.updateTimer_=null),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.parsedPrftNodes_.clear(),this.contentProtection_.release(),this.operationManager_.destroy()}async update(){try{await this.requestManifest_()}catch(e){if(!this.playerInterface_||!e)return;v.assert(e instanceof h,"Bad error type"),this.playerInterface_.onError(e)}}onExpirationUpdated(e,t){}onInitialVariantChosen(e){if(this.manifest_&&this.manifest_.presentationTimeline.isLive()){let t=e.video||e.audio;if(t&&t.segmentIndex){let i=this.manifest_.presentationTimeline.getSegmentAvailabilityEnd(),r=t.segmentIndex.find(i);if(r==null)return;let s=t.segmentIndex.get(r);if(!s)return;this.updatePeriod_=s.endTime-i,this.setUpdateTimer_(0)}}}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}async requestManifest_(){let e=K.RequestType.MANIFEST,t=K.AdvancedRequestType.MPD,i="MPD",r=this.getPatchLocationUris_(),s=this.manifestUris_;if(r.length)s=r.map(m=>fe.applyUrlParams(m,this.mpdpatchUrlParamsFn_)),i="Patch",t=K.AdvancedRequestType.MPD_PATCH;else{if(this.manifestUris_.length>1&&this.contentSteeringManager_){let m=this.contentSteeringManager_.getLocations("Location",!0);m.length&&(s=m)}this.mpdUrlParamsFn_&&(s=s.map(m=>fe.applyUrlParams(m,this.mpdUrlParamsFn_)))}let n=K.makeRequest(s,this.config_.retryParameters),a=Date.now(),o=await this.makeNetworkRequest_(n,e,{type:t});if(!this.playerInterface_)return 0;o.uri&&o.uri!=o.originalUri&&!this.manifestUris_.includes(o.uri)&&this.manifestUris_.unshift(o.uri);let c=new URL(o.uri);this.lastManifestQueryParams_=c.searchParams.toString(),await this.parseManifest(o.data,o.uri,i);let u=(Date.now()-a)/1e3;return this.averageUpdateDuration_.sample(1,u),this.parsedPrftNodes_.clear(),u}parseManifest(e,t,i){let r=I.parseXml(e,i);return this.processParsedMpd(r,t,i)}async processParsedMpd(e,t,i){if(!e)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_INVALID_XML,t);let r=this.config_.dash.manifestPreprocessorTXml,s=st.defaultManifestPreprocessorTXml;if(r!=s&&r(e),i==="Patch")return this.processPatchManifest_(e);let n=e;if(Me.hasLinkedPeriods(n)){let d=Me.processLinkedPeriods(n,t,this.config_.retryParameters,this.playerInterface_.networkingEngine);this.operationManager_.manage(d),n=await d.promise}if(!Me.hasXlinks(n))return this.processManifest_(n,t);let a=this.config_.dash.xlinkFailGracefully,o=Me.processXlinks(n,this.config_.retryParameters,a,t,this.playerInterface_.networkingEngine);this.operationManager_.manage(o);let c=await o.promise;return this.processManifest_(c,t)}async processManifest_(e,t){v.assert(this.config_,"Must call configure() before processManifest_()!"),this.contentSteeringManager_&&this.contentSteeringManager_.clearPreviousLocations(),this.checkMpdEssentialProperties_(e);let i=[t],r=[],s=new Map,n=I.findChildren(e,"Location");for(let z of n){let ge=z.attributes.serviceLocation,Y=I.getContents(z);if(!Y)continue;let X=fe.resolveUris(i,[Y])[0];ge&&(this.contentSteeringManager_?this.contentSteeringManager_.addLocation("Location",ge,X):s.set(ge,X)),r.push(X)}if(this.contentSteeringManager_){let z=this.contentSteeringManager_.getLocations("Location",!0);z.length>0&&(this.manifestUris_=z,i=z)}else r.length&&(this.manifestUris_=r,i=r);this.manifestPatchContext_.mpdId=e.attributes.id||"",this.manifestPatchContext_.publishTime=I.parseAttr(e,"publishTime",I.parseDate)||0,this.patchLocationNodes_=I.findChildren(e,"PatchLocation"),this.mpdpatchUrlParamsFn_=this.findRequestParamFn_(e,"mpdpatch")||null,this.mpdUrlParamsFn_=this.findRequestParamFn_(e,"mpd")||null;let a=Promise.resolve(),o=I.findChild(e,"ContentSteering");if(o&&this.playerInterface_){let z=o.attributes.defaultServiceLocation;if(this.contentSteeringManager_)this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);else{this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setManifestType(me.DASH),this.contentSteeringManager_.setBaseUris(i),this.contentSteeringManager_.setDefaultPathwayId(z);let ge=I.getContents(o);ge&&(ge=fe.applyUrlParams(ge,this.findRequestParamFn_(e,"steering")),I.parseAttr(o,"queryBeforeStart",I.parseBoolean,!1)?a=this.contentSteeringManager_.requestInfo(ge):this.contentSteeringManager_.requestInfo(ge))}for(let ge of s.keys()){let Y=s.get(ge);this.contentSteeringManager_.addLocation("Location",ge,Y)}}let c=I.findChildren(e,"BaseURL"),d=!1;if(this.contentSteeringManager_)for(let z of c){let ge=z.attributes.serviceLocation,Y=I.getContents(z);ge&&Y&&(this.contentSteeringManager_.addLocation("BaseURL",ge,Y),d=!0)}if(this.lastCalculatedBaseUris_.splice(0),!d||!this.contentSteeringManager_){let z=c.map(I.getContents);this.lastCalculatedBaseUris_.push(...fe.resolveUris(i,z))}let u=this.contentSteeringManager_,m=this.lastCalculatedBaseUris_,g=ft.makeBaseUriGetter_.call(ft,u,d,m);this.manifestPatchContext_.getBaseUris=g;let _=0;c&&c.length&&(_=I.parseAttr(c[0],"availabilityTimeOffset",I.parseFloat)||0),this.manifestPatchContext_.availabilityTimeOffset=_,this.updatePeriod_=I.parseAttr(e,"minimumUpdatePeriod",I.parseDuration,-1);let T=I.parseAttr(e,"availabilityStartTime",I.parseDate),S=I.parseAttr(e,"timeShiftBufferDepth",I.parseDuration),b=this.config_.dash.ignoreSuggestedPresentationDelay,E=null;b||(E=I.parseAttr(e,"suggestedPresentationDelay",I.parseDuration));let C=this.config_.dash.ignoreMaxSegmentDuration,A=null;C||(A=I.parseAttr(e,"maxSegmentDuration",I.parseDuration));let w=e.attributes.type||"static",M=w=="static"||w=="list";this.manifest_&&this.manifest_.presentationTimeline&&(this.isTransitionFromDynamicToStatic_=this.manifest_.presentationTimeline.isLive()&&M),this.manifestPatchContext_.type=w;let x;if(this.manifest_){x=this.manifest_.presentationTimeline;let z=x.getSegmentAvailabilityStart();for(let ge of this.streamMap_.values())ge.segmentIndex&&ge.segmentIndex.evict(z)}else{let z=this.config_.dash.ignoreMinBufferTime,ge=0;z||(ge=I.parseAttr(e,"minBufferTime",I.parseDuration)||0);let Y=0;E!=null?Y=Math.min(E,S||1/0):this.config_.defaultPresentationDelay>0?Y=this.config_.defaultPresentationDelay:Y=Math.min(ge*1.5,S||1/0),x=new wi(T,Y,this.config_.dash.autoCorrectDrift)}x.setStatic(M),x.isLive()&&!isNaN(this.config_.availabilityWindowOverride)&&(S=this.config_.availabilityWindowOverride),S==null&&(S=1/0),x.setSegmentAvailabilityDuration(S);let L=e.attributes.profiles||"";this.manifestPatchContext_.profiles=L.split(",");let V={dynamic:!M,presentationTimeline:x,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:_,mediaPresentationDuration:null,profiles:L.split(","),roles:null,urlParams:ft.defaultUrlParams_,name:""};await a;let ee=Me.parseEssentialProperties(e),oe=Me.parseSupplementalProperties(e),le=z=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(z.schemeIdUri),H=ee.find(le)||oe.find(le);if(H){let z=this.getURLParametersFunction_(H.element);z&&(V.urlParams=z)}let J=this.findRequestParamFn_(e,"segment");J&&(V.urlParams=J),this.gapCount_=0;let Z=this.parsePeriods_(V,g,e,!1),ce=Z.duration,W=Z.periods;if((M&&!this.isTransitionFromDynamicToStatic_||!Z.durationDerivedFromPeriods)&&x.setDuration(ce||1/0),this.isLowLatency_&&this.lowLatencyMode_&&x.setAvailabilityTimeOffset(this.minTotalAvailabilityTimeOffset_),x.notifyMaxSegmentDuration(A||1),Fe&&!this.isTransitionFromDynamicToStatic_&&x.assertIsValid(),this.isLowLatency_&&this.lowLatencyMode_){let z=E!=null?E:this.config_.defaultPresentationDelay;x.setDelay(z)}if(this.manifest_)this.manifest_.periodCount=W.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(W,!1);else{if(await this.periodCombiner_.combinePeriods(W,V.dynamic),this.manifest_={presentationTimeline:x,variants:this.periodCombiner_.getVariants(),textStreams:this.periodCombiner_.getTextStreams(),imageStreams:this.periodCombiner_.getImageStreams(),chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.dash.sequenceMode,ignoreManifestTimestampsInSegmentsMode:!1,type:me.DASH,serviceDescription:this.parseServiceDescription_(e),nextUrl:this.parseMpdChaining_(e),periodCount:W.length,gapCount:this.gapCount_,isLowLatency:this.isLowLatency_,startTime:null},x.usingPresentationStartTime()){let ge=I.findChildren(e,"UTCTiming"),Y=await this.parseUtcTiming_(g,ge);if(!this.playerInterface_)return;x.setClockOffset(Y)}x.lockStartTime(),this.periodCombiner_&&!this.manifest_.presentationTimeline.isLive()&&this.periodCombiner_.release();let z=I.findChild(e,"ProgramInformation");if(z){let ge=U.EventName.ProgramInformation,Y=new Map().set("detail",z),X=new U(ge,Y);this.playerInterface_.onEvent(X)}}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),this.cleanStreamMap_(),this.cleanContinuityCache_(W)}async postPeriodProcessing_(e,t){await this.periodCombiner_.combinePeriods(e,!0,t),this.manifest_.variants=this.periodCombiner_.getVariants();let i=this.periodCombiner_.getTextStreams();i.length>0&&(this.manifest_.textStreams=i),this.manifest_.imageStreams=this.periodCombiner_.getImageStreams(),this.playerInterface_.filter(this.manifest_)}async processPatchManifest_(e){let t=e.attributes.mpdId,i=I.parseAttr(e,"originalPublishTime",I.parseDate);if(!t||t!==this.manifestPatchContext_.mpdId||i!==this.manifestPatchContext_.publishTime)throw this.patchLocationNodes_=[],new h(h.Severity.RECOVERABLE,h.Category.MANIFEST,h.Code.DASH_INVALID_PATCH);let r=[],s=[],n=new Set;for(let a of I.getChildNodes(e)){let o=!0,c=I.parseXpath(a.attributes.sel||""),d=c[c.length-1],u=I.getContents(a)||"";if(d.name==="MPD")if(d.attribute==="mediaPresentationDuration"){let m=I.getContents(a)||"";this.parsePatchMediaPresentationDurationChange_(m)}else d.attribute==="type"?this.parsePatchMpdTypeChange_(u):d.attribute==="publishTime"?this.manifestPatchContext_.publishTime=I.parseDate(u)||0:d.attribute===null&&a.tagName==="add"?s.push(a):o=!1;else if(d.name==="PatchLocation")this.updatePatchLocationNodes_(a);else if(d.name==="Period")a.tagName==="add"?s.push(a):a.tagName==="remove"&&d.id&&this.removePatchPeriod_(d.id);else if(d.name==="SegmentTemplate"){let m=this.modifySegmentTemplate_(a);for(let f of m)n.add(f)}else if(d.name==="SegmentTimeline"||d.name==="S"){let m=this.modifyTimepoints_(a);for(let f of m)n.add(f)}else o=!1;o||p.warning("Unhandled "+a.tagName+" operation",a.attributes.sel)}for(let a of n)this.parsePatchSegment_(a);for(let a of s)r.push(...this.parsePatchPeriod_(a));if(r.length&&(this.manifest_.periodCount+=r.length,this.manifest_.gapCount=this.gapCount_,await this.postPeriodProcessing_(r,!0)),this.manifestPatchContext_.type=="static"){let a=this.manifestPatchContext_.mediaPresentationDuration;this.manifest_.presentationTimeline.setDuration(a||1/0)}}parsePatchMpdTypeChange_(e){this.manifest_.presentationTimeline.setStatic(e=="static"),this.manifestPatchContext_.type=e;for(let t of this.contextCache_.values())t.dynamic=e=="dynamic";e=="static"&&(this.updatePeriod_=-1)}parsePatchMediaPresentationDurationChange_(e){let t=I.parseDuration(e);if(t!=null){this.manifestPatchContext_.mediaPresentationDuration=t;for(let i of this.contextCache_.values())i.mediaPresentationDuration=t}}parsePatchPeriod_(e){v.assert(this.manifestPatchContext_.getBaseUris,"Must provide getBaseUris on manifestPatchContext_");let t={dynamic:this.manifestPatchContext_.type=="dynamic",presentationTimeline:this.manifest_.presentationTimeline,period:null,periodInfo:null,adaptationSet:null,representation:null,bandwidth:0,indexRangeWarningGiven:!1,availabilityTimeOffset:this.manifestPatchContext_.availabilityTimeOffset,profiles:this.manifestPatchContext_.profiles,mediaPresentationDuration:this.manifestPatchContext_.mediaPresentationDuration,roles:null,urlParams:ft.defaultUrlParams_,name:""};return this.parsePeriods_(t,this.manifestPatchContext_.getBaseUris,e,!0).periods}removePatchPeriod_(e){this.manifest_.periodCount--;for(let i of this.contextCache_.keys())if(i.startsWith(e)){let r=this.contextCache_.get(i);fr.removeTimepoints(r),this.parsePatchSegment_(i),this.contextCache_.delete(i)}let t=this.lastManifestUpdatePeriodIds_.filter(i=>i!==e);this.lastManifestUpdatePeriodIds_=t,this.parsedPeriodCache_.delete(e)}getContextIdsFromPath_(e){let t="",i="",r=-1,s="";for(let a of e)a.name==="Period"?t=a.id:a.name==="AdaptationSet"?(i=a.id,a.position!==null&&(r=a.position)):a.name==="Representation"&&(s=a.id);let n=[];if(s)n.push(t+","+s);else if(i)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.id===i&&a.representation.id&&n.push(t+","+a.representation.id);else if(r>-1)for(let a of this.contextCache_.values())a.period.id===t&&a.adaptationSet.position===r&&a.representation.id&&n.push(t+","+a.representation.id);return n}modifySegmentTemplate_(e){let t=I.parseXpath(e.attributes.sel||""),i=t[t.length-1];if(!i.attribute)return[];let r=this.getContextIdsFromPath_(t),s=I.getContents(e)||"";for(let n of r){let a=this.contextCache_.get(n);v.assert(a&&a.representation.segmentTemplate,"cannot modify segment template"),I.modifyNodeAttribute(a.representation.segmentTemplate,e.tagName,i.attribute,s)}return r}modifyTimepoints_(e){let t=I.parseXpath(e.attributes.sel||""),i=this.getContextIdsFromPath_(t);for(let r of i){let s=this.contextCache_.get(r);fr.modifyTimepoints(s,e)}return i}parsePatchSegment_(e){let t=this.contextCache_.get(e),i=this.streamMap_.get(e);v.assert(i,"stream should exist"),i.segmentIndex&&i.segmentIndex.evict(this.manifest_.presentationTimeline.getSegmentAvailabilityStart());try{let r=(n,a,o,c)=>this.requestSegment_(n,a,o,c),s=fr.createStreamInfo(t,r,this.streamMap_,!0,this.config_.dash.initialSegmentLimit,this.periodDurations_,t.representation.aesKey,null,!0,this.continuityCache_);i.createSegmentIndex=async()=>{i.segmentIndex||(i.segmentIndex=await s.generateSegmentIndex())}}catch(r){let s=R.ContentType,n=t.representation.contentType,a=n==s.TEXT||n==s.APPLICATION,o=n==s.IMAGE;if(!(a||o)||r.code!=h.Code.DASH_NO_SEGMENT_INFO)throw r}}parseServiceDescription_(e){let t=I.findChild(e,"ServiceDescription");if(!t)return null;let i=I.findChild(t,"Latency"),r=I.findChild(t,"PlaybackRate");if(!i&&!r)return null;let s={};return i&&("target"in i.attributes&&(s.targetLatency=parseInt(i.attributes.target,10)/1e3),"max"in i.attributes&&(s.maxLatency=parseInt(i.attributes.max,10)/1e3),"min"in i.attributes&&(s.minLatency=parseInt(i.attributes.min,10)/1e3)),r&&("max"in r.attributes&&(s.maxPlaybackRate=parseFloat(r.attributes.max)),"min"in r.attributes&&(s.minPlaybackRate=parseFloat(r.attributes.min))),s}checkMpdEssentialProperties_(e){let t=ft.SUPPORTED_ESSENTIAL_PROPERTIES_,i=Me.parseEssentialProperties(e);if(!i.length)return;let r=new Map,s=0;for(let n of i){let a=n.id!=null?"id:"+n.id:"no-id:"+s++;r.getOrInsert(a,[]).push(n)}for(let n of r.values())if(!n.some(o=>t.has(o.schemeIdUri)))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_UNSUPPORTED_ESSENTIAL_PROPERTY,n.map(o=>o.schemeIdUri))}parseMpdChaining_(e){let t=Me.parseSupplementalProperties(e),i=Me.getDescriptor(t,"urn:mpeg:dash:chaining:2016");return!i||!i.value?null:fe.applyUrlParams(i.value,this.findRequestParamFn_(e,"chaining"))}parsePeriods_(e,t,i,r){let s=e.mediaPresentationDuration;s||(s=I.parseAttr(i,"mediaPresentationDuration",I.parseDuration),this.manifestPatchContext_.mediaPresentationDuration=s);let n=0;this.manifest_&&this.manifest_.presentationTimeline&&this.isTransitionFromDynamicToStatic_&&(n=this.manifest_.presentationTimeline.getSeekRangeStart());let a=[],o=n,c=I.findChildren(i,"Period"),d=e.dynamic;d||this.parsedPeriodCache_.clear();let u=d&&!r?new Set(this.lastManifestUpdatePeriodIds_.slice(1,-1)):null;for(let m=0;m<c.length;m++){let f=c[m],g=c[m+1],_=I.parseAttr(f,"start",I.parseDuration,o),T=f.attributes.id,S=I.parseAttr(f,"duration",I.parseDuration);_=m==0&&_==0&&this.isTransitionFromDynamicToStatic_?n:_;let b=null;if(g){let M=I.parseAttr(g,"start",I.parseDuration);M!=null&&(b=M-_+n)}else s!=null&&(b=s-_+n);let E=R.GAP_OVERLAP_TOLERANCE_SECONDS;if(b&&S&&Math.abs(b-S)>E&&(p.warning("There is a gap/overlap between Periods",f),b>S&&this.gapCount_++),b==null&&(b=S),this.largestPeriodStartTime_!==null&&T!=null&&_!==null&&_<this.largestPeriodStartTime_&&!this.lastManifestUpdatePeriodIds_.includes(T)&&m+1!=c.length){p.debug(`Skipping Period with ID ${T} as its start time is smaller than the largest period start time that has been seen, and ID is unseen before`);continue}_!==null&&(this.largestPeriodStartTime_===null||_>this.largestPeriodStartTime_)&&(this.largestPeriodStartTime_=_);let C={start:_,duration:b,node:f,isLastPeriod:b==null||!g},A=null,w=m>0&&m<c.length-1;if(d&&u&&w&&!r&&(T!=null||(T=this.periodIdFallback_(_)),u.has(T))){let M=this.parsedPeriodCache_.get(T);M&&(A=M)}if(A||(A=this.parsePeriod_(e,t,C),d&&A.id&&this.parsedPeriodCache_.set(A.id,A)),a.push(A),A.id&&b&&this.periodDurations_.set(A.id,b),b==null){g&&p.warning("Skipping Period",m+1,"and any subsequent Periods:","Period",m+1,"does not have a valid start time.",g),o=null;break}o=_+b}if(d&&!r&&this.prunePeriodCache_(a),r)for(let m of a){let f=m.id;this.lastManifestUpdatePeriodIds_.includes(f)||this.lastManifestUpdatePeriodIds_.push(f)}else this.lastManifestUpdatePeriodIds_=a.map(m=>m.id);if(s!=null){if(o!=null){let m=R.GAP_OVERLAP_TOLERANCE_SECONDS,f=o-n-s;Math.abs(f)>m&&p.warning("@mediaPresentationDuration does not match the total duration ","of all Periods.")}return{periods:a,duration:s+n,durationDerivedFromPeriods:!1}}else return{periods:a,duration:o,durationDerivedFromPeriods:!0}}prunePeriodCache_(e){let t=new Set(e.map(i=>i.id));for(let i of Array.from(this.parsedPeriodCache_.keys()))t.has(i)||this.parsedPeriodCache_.delete(i)}periodIdFallback_(e){return"__shaka_period_"+e}cleanStreamMap_(){let t=Array.from(this.indexStreamMap_.keys()).filter(i=>!this.lastManifestUpdatePeriodIds_.includes(i));for(let i of t){let r=!0;for(let s of this.indexStreamMap_.get(i)){let n=this.streamMap_.get(s);if(n){if(n.segmentIndex&&!n.segmentIndex.isEmpty()){r=!1;continue}this.periodCombiner_&&this.periodCombiner_.deleteStream(n,i),this.streamMap_.delete(s)}}r&&this.indexStreamMap_.delete(i)}}cleanContinuityCache_(e){let t=new Set(e.map(i=>i.id));for(let i of this.continuityCache_.keys())t.has(i)||this.continuityCache_.delete(i)}parsePeriod_(e,t,i){let r=R.ContentType;v.assert(i.node,"periodInfo.node should exist"),e.period=this.createFrame_(i.node,null,t),e.periodInfo=i,e.period.availabilityTimeOffset=e.availabilityTimeOffset,e.period.id||(p.info("No Period ID given for Period with start time "+i.start+", Assigning a default"),e.period.id=this.periodIdFallback_(i.start));let s=I.findChildren(i.node,"EventStream"),n=e.presentationTimeline.getSegmentAvailabilityStart();for(let S of s)this.parseEventStream_(i.start,i.duration,S,n);let a=Me.parseSupplementalProperties(i.node);for(let S of a)if(ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(S.schemeIdUri)){let b=this.getURLParametersFunction_(S.element);b&&(e.urlParams=b)}let o=this.findRequestParamFn_(i.node,"segment");o&&(e.urlParams=o);let c=I.findChildren(i.node,"AdaptationSet").map((S,b)=>this.parseAdaptationSet_(e,b,S)).filter(it.isNotNull);if(e.dynamic){let S=new Set,b=0;for(let E=0;E<c.length;E++){let C=c[E].representationIds;for(let A=0;A<C.length;A++)S.add(C[A]),b++}if(b!=S.size)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_DUPLICATE_REPRESENTATION_ID)}let d=new Map;for(let S of c)for(let[b,E]of S.dependencyStreamMap)d.set(b,E);if(d.size){let S=new Map;for(let b=0;b<c.length;b++){let E=c[b].streams;for(let C=0;C<E.length;C++)d.has(E[C].originalId)&&(S.has(b)||S.set(b,[]),S.get(b).push(E[C].originalId))}if(S.size){let b=I.findChildren(i.node,"AdaptationSet"),E=e.name;e.name="dependencyStream",S.forEach((C,A)=>{let w=b[A];if(!w)return;let M=this.parseAdaptationSet_(e,A,w);if(!M)return;let x=[];for(let k=0;k<C.length;k++){let L=C[k],V=M.streams.find(ee=>ee.originalId==L);if(V){let ee=d.get(V.originalId||"");V.dependencyStream=ee,V.originalId+=ee.originalId,V.baseOriginalId=ee.baseOriginalId,x.push(V)}}x.length&&c[A].streams.push(...x)}),e.name=E}}let[u,m]=ye.partition(c,S=>!!S.trickModeFor);for(let S of u)for(let b of S.streams)b.isIframe=!0;if(!this.config_.disableIFrames)for(let S of u){let b=S.trickModeFor.split(" ");for(let E of m)if(b.includes(E.id))for(let C of E.streams)se.setBetterIFrameStream(C,S.streams)}let f=this.getStreamsFromSets_(this.config_.disableAudio,m,r.AUDIO),g=this.getStreamsFromSets_(this.config_.disableVideo,m,r.VIDEO),_=this.getStreamsFromSets_(this.config_.disableText,m,r.TEXT),T=this.getStreamsFromSets_(this.config_.disableThumbnails,m,r.IMAGE);if(g.length===0&&f.length===0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_PERIOD);return{id:e.period.id,audioStreams:f,videoStreams:g,textStreams:_,imageStreams:T}}getStreamsFromSets_(e,t,i){return e||!t.length?[]:t.reduce((r,s)=>(s.contentType!=i||r.push(...s.streams),r),[])}parseAdaptationSet_(e,t,i){let r=R.ContentType;e.adaptationSet=this.createFrame_(i,e.period,null),e.adaptationSet.position=t;let s=!1,n=I.findChildren(i,"Role"),a=n.map(Y=>Y.attributes.value).filter(it.isNotNull),o,c=e.adaptationSet.contentType==r.TEXT;c&&(o=R.TextStreamKind.SUBTITLE);for(let Y of n){let X=Y.attributes.schemeIdUri;if(X==null||X=="urn:mpeg:dash:role:2011"){let O=Y.attributes.value;switch(O){case"main":s=!0;break;case"caption":case"subtitle":o=O;break}}}let d,u,m="urn:mpeg:mpegB:cicp",f=`${m}:TransferCharacteristics`,g=`${m}:ColourPrimaries`,_=Y=>{switch(Y){case 1:case 6:case 13:case 14:case 15:return"SDR";case 16:return"PQ";case 18:return"HLG"}},T=Y=>{switch(Y){case 1:case 5:case 6:case 7:return"srgb";case 9:return"rec2020";case 11:case 12:return"p3"}},S=Y=>{let X=Y.attributes["dvb:fontFamily"],O=Y.attributes["dvb:url"];if(X&&O){let $=fe.resolveUris(e.adaptationSet.getBaseUris(),[O],e.urlParams());this.playerInterface_.addFont(X,$[0])}},b=Me.parseEssentialProperties(i),E=Me.parseSupplementalProperties(i),C=null,A=!1,w=null,M=!1;for(let Y of b){let X=Y.schemeIdUri;if(!ft.SUPPORTED_ESSENTIAL_PROPERTIES_.has(X)){M=!0;continue}X=="http://dashif.org/guidelines/trickmode"?C=Y.value:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:mpeg:dash:ssr:2023"?this.config_.dash.enableFastSwitching?A=!0:M=!0:X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element),w||(M=!0))}if(M)return null;let x=null;for(let Y of E){let X=Y.schemeIdUri;X=="http://dashif.org/guidelines/last-segment-number"?x=parseInt(Y.value,10)-1:X==f?d=_(parseInt(Y.value,10)):X==g?u=T(parseInt(Y.value,10)):X=="urn:dvb:dash:fontdownload:2014"?S(Y.element):ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(X)&&(w=this.getURLParametersFunction_(Y.element))}let k=this.findRequestParamFn_(i,"segment");k&&(w=k),w&&(e.urlParams=w);let L=I.findChildren(i,"Accessibility"),V=new Map,ee;for(let Y of L){let X=Y.attributes.schemeIdUri,O=Y.attributes.value;X=="urn:scte:dash:cc:cea-608:2015"&&!this.config_.disableText?R.parseCEA608Captions(O,V):X=="urn:scte:dash:cc:cea-708:2015"&&!this.config_.disableText?R.parseCEA708Captions(O,V):X=="urn:mpeg:dash:role:2011"?O!=null&&(a.push(O),O=="captions"&&(o=R.TextStreamKind.CLOSED_CAPTION)):X=="urn:tva:metadata:cs:AudioPurposeCS:2007"&&(O=="1"?ee=me.AccessibilityPurpose.VISUALLY_IMPAIRED:O=="2"?ee=me.AccessibilityPurpose.HARD_OF_HEARING:O=="9"&&(ee=me.AccessibilityPurpose.SPOKEN_SUBTITLES))}let oe=I.findChildren(i,"ContentProtection"),le=this.contentProtection_.parseFromAdaptationSet(oe,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI);e.adaptationSet.encrypted=oe.length>0;let H=ve.normalize(e.adaptationSet.language||"und"),J=e.adaptationSet.label,Z=new Map,ce=I.findChildren(i,"Representation");if(!this.config_.ignoreSupplementalCodecs){let Y=[];for(let X of ce){let O=I.getAttributeNS(X,ft.SCTE214_,"supplementalCodecs");if(O){let $=Ne.cloneObject(X);$.attributes.codecs=O.split(" ").join(","),$.attributes.id&&($.attributes.supplementalId=$.attributes.id+"_supplementalCodecs"),Y.push($)}}ce.push(...Y)}let W=ce.map(Y=>{let X=this.parseRepresentation_(e,le,o,H,J,s,a,V,Y,ee,x);if(X){X.hdr=X.hdr||d,X.colorGamut=X.colorGamut||u,X.fastSwitching=A;let O=Y.attributes.dependencyId;if(O)return X.baseOriginalId=O,Z.set(O,X),null}return X}).filter(Y=>!!Y);if(W.length==0&&Z.size==0){let Y=e.adaptationSet.contentType==r.IMAGE;if(this.config_.dash.ignoreEmptyAdaptationSet||c||Y)return null;throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_EMPTY_ADAPTATION_SET)}if(!e.adaptationSet.contentType||e.adaptationSet.contentType==r.APPLICATION){let Y=W[0].mimeType,X=W[0].codecs;e.adaptationSet.contentType=ft.guessContentType_(Y,X);for(let O of W)O.type=e.adaptationSet.contentType}let z=e.adaptationSet.id||"__fake__"+this.globalId_++;for(let Y of W){for(let X of le.drmInfos)X.keyIds=X.keyIds&&Y.keyIds?new Set([...X.keyIds,...Y.keyIds]):X.keyIds||Y.keyIds;this.config_.enableAudioGroups&&(Y.groupId=z)}let ge=ce.map(Y=>Y.attributes.supplementalId||Y.attributes.id).filter(it.isNotNull);return{id:z,contentType:e.adaptationSet.contentType,language:H,main:s,streams:W,drmInfos:le.drmInfos,trickModeFor:C,representationIds:ge,dependencyStreamMap:Z}}getURLParametersFunction_(e){let t=I.findChildNS(e,ft.UP_NAMESPACE_2014_,"UrlQueryInfo")||I.findChildNS(e,ft.UP_NAMESPACE_2016_,"ExtUrlQueryInfo");return t?this.buildUrlQueryFn_(t):null}findRequestParamFn_(e,t){let i;for(let r of I.findChildren(e,"RequestParam")){let s=(r.attributes.includeInRequests||"segment").split(/\s+/);if(s.includes(t)||s.includes("*")){let n=this.buildUrlQueryFn_(r);n&&(i=n)}}return i}buildUrlQueryFn_(e){let t=I.parseAttr(e,"useMPDUrlQuery",I.parseBoolean,!1),i=q.htmlUnescape(e.attributes.queryString||""),r=q.htmlUnescape(e.attributes.queryTemplate||"");return!r||!t&&!i?null:()=>{let s=[];t&&this.lastManifestQueryParams_&&s.push(this.lastManifestQueryParams_),i&&s.push(i);let n=s.join("&");if(r=="$querypart$")return n;let a;return r.split("&").map(c=>{if(c=="$querypart$")return n;let d=/\$query:(.*?)\$/.exec(c);if(d){let u=d[1];a||(a=new URLSearchParams(n));let m=a.get(u);return m?`${u}=${m}`:""}return c.replace(/\$\$|\$[^$]+\$/g,u=>u==="$$"?"$":"")}).filter(Boolean).join("&")}}parseRepresentation_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType,f=e.period.id;e.representation=this.createFrame_(c,e.adaptationSet,null);let g=e.representation.id;if(this.minTotalAvailabilityTimeOffset_=Math.min(this.minTotalAvailabilityTimeOffset_,e.representation.availabilityTimeOffset),this.isLowLatency_=this.minTotalAvailabilityTimeOffset_>0,!this.verifyRepresentation_(e.representation))return p.warning("Skipping Representation",e.representation),null;let _=e.periodInfo.start;e.bandwidth=I.parseAttr(c,"bandwidth",I.parsePositiveInt)||0,e.roles=a;let T=Me.parseEssentialProperties(c),S=Me.parseSupplementalProperties(c),b=I.findChildren(c,"ContentProtection"),E=O=>ft.URL_PARAM_DESCRIPTOR_SCHEMES_.has(O.schemeIdUri),C=null,A=T.find(E)||S.find(E);A&&(C=this.getURLParametersFunction_(A.element));let w=this.findRequestParamFn_(c,"segment");w&&(C=w),C&&(e.urlParams=C);let M,x=e.representation.contentType,k=x==m.TEXT||x==m.APPLICATION,L=x==m.IMAGE;b.length&&(e.adaptationSet.encrypted=!0);try{let O;if(t.aes128Info){let Ie=e.representation.getBaseUris,tt=e.urlParams,_t=fe.resolveUris(Ie(),[t.aes128Info.keyUri],tt()),bt=K.RequestType.KEY,yt=K.makeRequest(_t,this.config_.retryParameters);O={bitsKey:128,blockCipherMode:"CBC",iv:t.aes128Info.iv,firstMediaSequenceNumber:0},O.fetchKey=async()=>{let xt=await this.makeNetworkRequest_(yt,bt);if(!xt.data||xt.data.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let mt={name:"AES-CBC"};O.cryptoKey=await window.crypto.subtle.importKey("raw",xt.data,mt,!0,["decrypt"]),O.fetchKey=void 0}}e.representation.aesKey=O;let $=(Ie,tt,_t,bt)=>this.requestSegment_(Ie,tt,_t,bt);if(e.representation.segmentBase)M=Hi.createStreamInfo(e,$,O);else if(e.representation.segmentList)M=Dn.createStreamInfo(e,this.streamMap_,O);else if(e.representation.segmentTemplate){let Ie=!!this.manifest_;M=fr.createStreamInfo(e,$,this.streamMap_,Ie,this.config_.dash.initialSegmentLimit,this.periodDurations_,O,u,!1,this.continuityCache_)}else{v.assert(k,"Must have Segment* with non-text streams.");let Ie=e.periodInfo.duration||0,tt=e.representation.getBaseUris,_t=e.representation.mimeType,bt=e.representation.codecs;M={endTime:-1,timeline:-1,generateSegmentIndex:()=>{let yt=Ze.forSingleSegment(_,Ie,tt());return yt.forEachTopLevelReference(xt=>{xt.mimeType=_t,xt.codecs=bt}),Promise.resolve(yt)},timescale:1}}}catch(O){if((k||L)&&O.code==h.Code.DASH_NO_SEGMENT_INFO)return null;throw O}let V=this.contentProtection_.parseFromRepresentation(b,t,this.config_.ignoreDrmInfo,this.config_.dash.keySystemsByURI),ee=new Set(V?[V]:[]),oe=Me.hasDescriptor(S,"tag:dolby.com,2018:dash:EC3_ExtensionType:2018","JOC"),le=Me.hasDescriptor(S,"tag:dolby.com,2016:dash:virtualized_content:2016","1"),H=oe||le,J=!1;k&&(J=a.includes("forced_subtitle")||a.includes("forced-subtitle"));let Z;if(L){let O=["http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile"],$=T.find(Ie=>O.includes(Ie.schemeIdUri));if($&&(Z=$.value),!Z)return null}let ce,W=e.profiles,z=e.representation.codecs;W.includes("http://dashif.org/guidelines/dash-if-uhd#hevc-hdr-pq10")&&(z.includes("hvc1.2.4.L153.B0")||z.includes("hev1.2.4.L153.B0"))&&(ce="PQ");let Y=g?f+","+g:"";if(Y&&e.name&&(Y+=e.name),this.patchLocationNodes_.length&&Y&&this.contextCache_.set(Y,this.cloneContext_(e)),e.representation.producerReferenceTime&&this.parseProducerReferenceTime_(e.representation.producerReferenceTime,M,e.presentationTimeline),M.endTime!=-1&&f!=null&&g!=null){let O=this.continuityCache_.get(f);if(O)O.endTime=M.endTime,O.reps.includes(g)||O.reps.push(g),this.continuityCache_.set(f,O);else{let $={endTime:M.endTime,timeline:M.timeline,reps:[g]};this.continuityCache_.set(f,$)}}let X;return Y&&this.streamMap_.has(Y)?X=this.streamMap_.get(Y):X={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),closeSegmentIndex:()=>{X.segmentIndex&&(X.segmentIndex.release(),X.segmentIndex=null)},segmentIndex:null,mimeType:e.representation.mimeType,codecs:z,supplementalCodecs:e.representation.supplementalCodecs,frameRate:e.representation.frameRate,pixelAspectRatio:e.representation.pixelAspectRatio,bandwidth:e.bandwidth,width:e.representation.width,height:e.representation.height,kind:i,encrypted:t.drmInfos.length>0,drmInfos:t.drmInfos,keyIds:ee,language:r,originalLanguage:e.adaptationSet.language,label:s,type:e.adaptationSet.contentType,primary:n,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:e.representation.emsgSchemeIdUris,roles:a,forced:J,channelsCount:e.representation.numChannels,audioSamplingRate:e.representation.audioSamplingRate,spatialAudio:H,closedCaptions:o,hdr:ce,colorGamut:void 0,videoLayout:void 0,tilesLayout:Z,accessibilityPurpose:d,external:!1,fastSwitching:!1,fullMimeTypes:new Set([N.getFullType(e.representation.mimeType,e.representation.codecs)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},X.createSegmentIndex=async()=>{X.segmentIndex||(X.segmentIndex=await M.generateSegmentIndex())},Y&&e.dynamic&&!this.streamMap_.has(Y)&&(this.streamMap_.set(Y,X),this.indexStreamMap_.getOrInsertComputed(f||"",()=>[]).push(Y)),X}parseProducerReferenceTime_(e,t,i){if(this.parsedPrftNodes_.has(e))return;this.parsedPrftNodes_.add(e);let r=I.parseAttr(e,"presentationTime",I.parseNonNegativeInt)||0,s=I.findChild(e,"UTCTiming"),n;if(!s||!s.attributes.schemeIdUri||ft.isNtpScheme_(s.attributes.schemeIdUri)){let d=I.parseAttr(e,"wallClockTime",I.parseNonNegativeInt)||0;n=Wr.convertNtp(d)}else n=(I.parseAttr(e,"wallClockTime",I.parseDate)||0)*1e3;let o=new Date(n-r/t.timescale*1e3),c=o.getTime()/1e3;if(!isNaN(c)){i.isStartTimeLocked()||i.setInitialProgramDateTime(c);let d={wallClockTime:n,programStartDate:o},u=U.EventName.Prft,m=new Map().set("detail",d),f=new U(u,m);this.playerInterface_.onEvent(f)}}cloneContext_(e){let t=r=>{if(!r)return null;let s=Ne.shallowCloneObject(r);return s.segmentBase=null,s.segmentList=null,s.segmentTemplate=I.cloneNode(s.segmentTemplate),s.producerReferenceTime=null,s},i=Ne.shallowCloneObject(e);return i.period=t(i.period),i.adaptationSet=t(i.adaptationSet),i.representation=t(i.representation),i.periodInfo&&(i.periodInfo=Ne.shallowCloneObject(i.periodInfo),i.periodInfo.node=null),i}async onUpdate_(){v.assert(this.updatePeriod_>=0,"There should be an update period"),p.info("Updating manifest...");let e=0;try{e=await this.requestManifest_()}catch(t){if(v.assert(t instanceof h,"Should only receive a Shaka error"),this.playerInterface_){if(this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(t);return}t.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(t)}}this.playerInterface_&&(this.playerInterface_.onManifestUpdated(),this.setUpdateTimer_(e))}updateNow_(){this.updateTimer_.tickNow()}setUpdateTimer_(e){if(this.updatePeriod_<0)return;let t=this.updatePeriod_;this.config_.updatePeriod>=0&&(t=this.config_.updatePeriod);let i=Math.max(t-e,this.averageUpdateDuration_.getEstimate());this.updateTimer_.tickAfter(i)}createFrame_(e,t,i){v.assert(t||i,"Must provide either parent or getBaseUris"),t=t||{contentType:"",mimeType:"",codecs:"",supplementalCodecs:"",emsgSchemeIdUris:[],frameRate:void 0,pixelAspectRatio:void 0,numChannels:null,audioSamplingRate:null,availabilityTimeOffset:0,segmentSequenceCadence:1,encrypted:!1},i=i||t.getBaseUris;let r=I.parseNonNegativeInt,s=I.evalDivision,n=e.attributes.id,a=e.attributes.supplementalId,o=I.findChildren(e,"BaseURL"),c,d=!1;if(this.contentSteeringManager_)for(let W of o){let z=W.attributes.serviceLocation,ge=I.getContents(W);z&&ge&&(this.contentSteeringManager_.addLocation(n,z,ge),d=!0)}(!d||!this.contentSteeringManager_)&&(c=o.map(I.getContents));let u=this.contentSteeringManager_,m=()=>o.length?u&&d?u.getLocations(n):c||[]:[],f=e.attributes.contentType||t.contentType,g=e.attributes.mimeType||t.mimeType,_=[e.attributes.codecs||t.codecs],T=vt.codecsFiltering(_).join(","),S=[I.getAttributeNS(e,ft.SCTE214_,"supplementalCodecs")||t.supplementalCodecs],b=vt.codecsFiltering(S).join(","),E=I.parseAttr(e,"frameRate",s)||t.frameRate,C=e.attributes.sar||t.pixelAspectRatio,A=this.emsgSchemeIdUris_(I.findChildren(e,"InbandEventStream"),t.emsgSchemeIdUris),w=I.findChildren(e,"AudioChannelConfiguration"),M=this.parseAudioChannels_(w)||t.numChannels,x=I.parseAttr(e,"audioSamplingRate",r)||t.audioSamplingRate;f||(f=ft.guessContentType_(g,T));let k=I.findChild(e,"SegmentBase"),L=I.findChild(e,"SegmentTemplate"),V=k&&I.parseAttr(k,"availabilityTimeOffset",I.parseFloat)||0,ee=L&&I.parseAttr(L,"availabilityTimeOffset",I.parseFloat)||0,oe=o&&o.length&&I.parseAttr(o[0],"availabilityTimeOffset",I.parseFloat)||0,le=t.availabilityTimeOffset+oe+V+ee,H=null,J=I.findChild(e,"SegmentSequenceProperties");if(J){let W=I.parseAttr(J,"cadence",I.parsePositiveInt);W&&(H=W)}let Z=e.attributes.label,ce=I.findChildren(e,"Label");if(ce&&ce.length){let W=ce[0];I.getTextContents(W)&&(Z=I.getTextContents(W))}return{getBaseUris:()=>fe.resolveUris(i(),m()),segmentBase:k||t.segmentBase,segmentList:I.findChild(e,"SegmentList")||t.segmentList,segmentTemplate:L||t.segmentTemplate,producerReferenceTime:I.findChild(e,"ProducerReferenceTime")||t.producerReferenceTime,width:I.parseAttr(e,"width",r)||t.width,height:I.parseAttr(e,"height",r)||t.height,contentType:f,mimeType:g,codecs:T,supplementalCodecs:b.split(" ").join(","),frameRate:E,pixelAspectRatio:C,emsgSchemeIdUris:A,id:a||n,originalId:n,language:e.attributes.lang,numChannels:M,audioSamplingRate:x,availabilityTimeOffset:le,initialization:null,segmentSequenceCadence:H||t.segmentSequenceCadence,label:Z||null,encrypted:!1}}emsgSchemeIdUris_(e,t){let i=t.slice();for(let r of e){let s=r.attributes.schemeIdUri;i.includes(s)||i.push(s)}return i}parseAudioChannels_(e){for(let t of e){let i=t.attributes.schemeIdUri;if(!i)continue;let r=t.attributes.value;if(r)switch(i){case"urn:mpeg:dash:outputChannelPositionList:2012":return r.trim().split(/ +/).length;case"urn:mpeg:dash:23003:3:audio_channel_configuration:2011":case"urn:dts:dash:audio_channel_configuration:2012":{let s=parseInt(r,10);if(!s){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}return s}case"tag:dolby.com,2015:dash:audio_channel_configuration:2015":{let s=[2,1,2,2,2,2,1,2,2,1,1,1,1,2,1,1,2,2],n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"tag:dolby.com,2014:dash:audio_channel_configuration:2011":case"urn:dolby:dash:audio_channel_configuration:2011":{let s=[1,1,1,1,1,2,2,1,1,2,2,2,1,2,1,1].reverse(),n=parseInt(r,16);if(!n){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}let a=0;for(let o=0;o<s.length;o++)n&1<<o&&(a+=s[o]);if(a)return a;continue}case"urn:mpeg:mpegB:cicp:ChannelConfiguration":{let n=[0,1,2,3,4,5,6,8,2,3,4,7,8,24,8,12,10,12,14,12,14],a=parseInt(r,10);if(!a){p.warning("Channel parsing failure! Ignoring scheme and value",i,r);continue}if(a>0&&a<n.length)return n[a];continue}default:p.warning("Unrecognized audio channel scheme:",i,r);continue}}return null}verifyRepresentation_(e){let t=R.ContentType,i=0;return i+=e.segmentBase?1:0,i+=e.segmentList?1:0,i+=e.segmentTemplate?1:0,i==0?e.contentType==t.TEXT||e.contentType==t.APPLICATION?!0:(p.warning("Representation does not contain a segment information source:","the Representation must contain one of SegmentBase, SegmentList,",'SegmentTemplate, or explicitly indicate that it is "text".',e),!1):(i!=1&&(p.warning("Representation contains multiple segment information sources:","the Representation should only contain one of SegmentBase,","SegmentList, or SegmentTemplate.",e),e.segmentBase?(p.info("Using SegmentBase by default."),e.segmentList=null,e.segmentTemplate=null):(v.assert(e.segmentList,"There should be a SegmentList"),p.info("Using SegmentList by default."),e.segmentTemplate=null)),!0)}async requestForTiming_(e,t,i){let r=[q.htmlUnescape(t)],s=fe.resolveUris(e(),r),n=K.makeRequest(s,this.config_.retryParameters);n.method=i;let a=K.RequestType.TIMING,o=this.playerInterface_.networkingEngine.request(a,n,{isPreload:this.isPreloadFn_()});this.operationManager_.manage(o);let c=await o.promise,d;if(i=="HEAD"){if(!c.headers||!c.headers.date)return p.warning("UTC timing response is missing","expected date header"),0;d=c.headers.date}else d=q.fromUTF8(c.data);let u=Date.parse(d);return isNaN(u)?(p.warning("Unable to parse date from UTC timing response"),0):u-Date.now()}async parseUtcTiming_(e,t){let i=t.map(s=>({scheme:s.attributes.schemeIdUri,value:s.attributes.value})),r=this.config_.dash.clockSyncUri;!i.length&&r&&i.push({scheme:"urn:mpeg:dash:utc:http-head:2014",value:r});for(let s of i)try{let n=s.scheme,a=s.value;switch(n){case"urn:mpeg:dash:utc:http-head:2014":case"urn:mpeg:dash:utc:http-head:2012":return await this.requestForTiming_(e,a,"HEAD");case"urn:mpeg:dash:utc:http-xsdate:2014":case"urn:mpeg:dash:utc:http-iso:2014":case"urn:mpeg:dash:utc:http-xsdate:2012":case"urn:mpeg:dash:utc:http-iso:2012":return await this.requestForTiming_(e,a,"GET");case"urn:mpeg:dash:utc:direct:2014":case"urn:mpeg:dash:utc:direct:2012":{let o=Date.parse(a);return isNaN(o)?0:o-Date.now()}case"urn:mpeg:dash:utc:http-ntp:2014":case"urn:mpeg:dash:utc:ntp:2014":case"urn:mpeg:dash:utc:sntp:2014":p.alwaysWarn("NTP UTCTiming scheme is not supported");break;default:p.alwaysWarn("Unrecognized scheme in UTCTiming element",n);break}}catch(n){p.warning("Error fetching time from UTCTiming elem",n.message)}return p.alwaysWarn("A UTCTiming element should always be given in live manifests! This content may not play on clients with bad clocks!"),0}parseEventStream_(e,t,i,r){let s=I.parseNonNegativeInt,n=i.attributes.schemeIdUri||"",a=i.attributes.value||"",o=I.parseAttr(i,"timescale",s)||1,c=I.parseAttr(i,"presentationTimeOffset",s)||0,d;n==="urn:mpeg:dash:event:alternativeMPD:insert:2025"||n==="urn:mpeg:dash:event:alternativeMPD:replace:2025"?d="altmpd":n==="urn:mpeg:dash:event:callback:2015"&&(d="callback");let u=d?this.findRequestParamFn_(i,d):void 0;for(let m of I.findChildren(i,"Event")){let f=I.parseAttr(m,"presentationTime",s)||0,g=I.parseAttr(m,"duration",s)||0,_=Math.max((f-c)/o+e,e),T=_+g/o;if(t!=null&&(_=Math.min(_,e+t),T=Math.min(T,e+t)),T<r)continue;let S={schemeIdUri:n,value:a,startTime:_,endTime:T,id:m.attributes.id||"",timescale:o,eventNode:I.cloneNode(m),urlParams:u};this.playerInterface_.onTimelineRegionAdded(S)}}async requestSegment_(e,t,i,r){let s=K.RequestType.SEGMENT,n=r?K.AdvancedRequestType.INIT_SEGMENT:K.AdvancedRequestType.MEDIA_SEGMENT,a=ct.createSegmentRequest(e,t,i,this.playerInterface_.getStreamingRetryParameters());return(await this.makeNetworkRequest_(a,s,{type:n})).data}static guessContentType_(e,t){let i=N.getFullType(e,t);return Ue.isTypeSupported(i)?R.ContentType.TEXT:e.split("/")[0]}makeNetworkRequest_(e,t,i){i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r.promise}updatePatchLocationNodes_(e){I.modifyNodes(this.patchLocationNodes_,e)}getPatchLocationUris_(){let e=this.manifestPatchContext_.mpdId,t=this.manifestPatchContext_.publishTime;if(!e||!t||!this.patchLocationNodes_.length)return[];let i=Date.now()/1e3,r=this.patchLocationNodes_.filter(s=>{let n=I.parseNonNegativeInt(s.attributes.ttl);return!n||t+n>i}).map(I.getContents).filter(it.isNotNull);return r.length?fe.resolveUris(this.manifestUris_,r):[]}static isNtpScheme_(e){return e==="urn:mpeg:dash:utc:http-ntp:2014"||e==="urn:mpeg:dash:utc:ntp:2014"||e==="urn:mpeg:dash:utc:sntp:2014"}static defaultUrlParams_(){return""}static makeBaseUriGetter_(e,t,i){return()=>e&&t?e.getLocations("BaseURL"):i.slice()}};l(ft,"SCTE214_","urn:scte:dash:scte214-extensions"),l(ft,"UP_NAMESPACE_2014_","urn:mpeg:dash:schema:urlparam:2014"),l(ft,"UP_NAMESPACE_2016_","urn:mpeg:dash:schema:urlparam:2016"),l(ft,"URL_PARAM_DESCRIPTOR_SCHEMES_",new Set(["urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016"])),l(ft,"SUPPORTED_ESSENTIAL_PROPERTIES_",new Set(["http://dashif.org/guidelines/trickmode","http://dashif.org/thumbnail_tile","http://dashif.org/guidelines/thumbnail_tile","urn:mpeg:mpegB:cicp:TransferCharacteristics","urn:mpeg:mpegB:cicp:ColourPrimaries","urn:mpeg:mpegB:cicp:MatrixCoefficients","urn:mpeg:dash:ssr:2023","urn:dvb:dash:fontdownload:2014","urn:mpeg:dash:urlparam:2014","urn:mpeg:dash:urlparam:2016","urn:mpeg:dash:urlparam:2025","urn:mpeg:dash:pattern:2024"]));var Br=ft;me.registerParserByMime("application/dash+xml",()=>new Br);me.registerParserByMime("video/vnd.mpeg.dash.mpd",()=>new Br);/*! @license
|
|
619
|
+
* Shaka Player
|
|
620
|
+
* Copyright 2016 Google LLC
|
|
621
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
622
|
+
*/var Un=class{static jsonToMpd(e){let t="urn:mpeg:dash:schema:mpd:2011";function i(c){return String(c).replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function r(c,d,u){let m="<"+c;for(let[f,g]of Object.entries(d))m+=` ${f}="${i(g)}"`;return u===""?m+"/>":m+">"+u+`</${c}>`}function s(c,d,u){if(d==null)return r(c,{},"");if(typeof d!="object")return r(c,{},i(String(d)));let m={},f="",g=[],_=d;for(let[T,S]of Object.entries(_)){if(T==="$value"||T==="$ns")continue;if(u[T]!==void 0&&typeof S=="object"&&S!=null){let A=T,w=S;for(let[M,x]of Object.entries(w))if(Array.isArray(x))for(let k of x){let L=`${A}:${M}`;g.push(s(L,k,u))}else if(typeof x=="object"){let k=`${A}:${M}`;g.push(s(k,x,u))}else m[`${A}:${M}`]=x;continue}let E=S;if(!(typeof E=="object"&&E!=null))m[T]=E;else if(Array.isArray(E))for(let A of E)g.push(s(T,A,u));else g.push(s(T,E,u))}return d.$value!==void 0&&d.$value!==null&&(f=i(d.$value)),r(c,m,f+g.join(""))}let n={};if(e.$ns&&typeof e.$ns=="object")for(let[c,d]of Object.entries(e.$ns)){let u=d.prefix;n[u]=c}let a={xmlns:t};for(let[c,d]of Object.entries(n))a[`xmlns:${c}`]=d;for(let[c,d]of Object.entries(e))c!=="$ns"&&(typeof d!="object"||d===null)&&(a[c]=d);let o="";for(let[c,d]of Object.entries(e))if(c!=="$ns"){if(c in n){let u=d;for(let[m,f]of Object.entries(u))if(Array.isArray(f))for(let g of f){let _=`${c}:${m}`;o+=s(_,g,n)}else if(typeof f=="object"){let g=`${c}:${m}`;o+=s(g,f,n)}else a[`${c}:${m}`]=f;continue}if(typeof d=="object"&&d!==null)if(Array.isArray(d))for(let u of d)o+=s(c,u,n);else o+=s(c,d,n)}return r("MPD",a,o)}};/*! @license
|
|
623
|
+
* Shaka Player
|
|
624
|
+
* Copyright 2016 Google LLC
|
|
625
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
626
|
+
*/var Ln=class extends Br{parseManifest(e,t,i){let r=q.fromBytesAutoDetect(e),s;try{let n=JSON.parse(r),a=Un.jsonToMpd(n);s=I.parseXmlString(a,i)}catch(n){throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.DASH_INVALID_JSON,t)}return this.processParsedMpd(s,t,i)}};me.registerParserByMime("application/dash+json",()=>new Ln);/*! @license
|
|
627
|
+
* Shaka Player
|
|
628
|
+
* Copyright 2016 Google LLC
|
|
629
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
630
|
+
*/var ut=class{constructor(){l(this,"abstractDeviceType_");l(this,"browserEngine_");this.abstractDeviceType_=new _e(()=>{var s;let e=navigator.userAgent.toLowerCase(),t=[{type:ie.DeviceType.VR,regex:/oculus|quest/},{type:ie.DeviceType.TV,regex:/smart[ _]?tv|android ?tv/},{type:ie.DeviceType.MOBILE,regex:/iphone|ipad|ipod|android/}];for(let n of t)if(n.regex.test(e))return n.type;let i=navigator.userAgentData,r=((s=i==null?void 0:i.platform)==null?void 0:s.toLowerCase())||"";return i?i.mobile?ie.DeviceType.MOBILE:r.includes("android")?ie.DeviceType.TV:ie.DeviceType.DESKTOP:ie.DeviceType.DESKTOP}),this.browserEngine_=new _e(()=>{let e=navigator.userAgent;return navigator.vendor.includes("Apple")&&(e.includes("Version/")||e.includes("OS/"))?ie.BrowserEngine.WEBKIT:e.includes("Edge/")?ie.BrowserEngine.EDGE:e.includes("Chrome/")?ie.BrowserEngine.CHROMIUM:e.includes("Firefox/")?ie.BrowserEngine.GECKO:ie.BrowserEngine.UNKNOWN})}supportsMediaSource(){let e=window.ManagedMediaSource||window.MediaSource;return!(!e||!e.isTypeSupported)}supportsMediaType(e){return Ge.anyMediaElement().canPlayType(e)!=""}supportsMediaCapabilities(){return!!navigator.mediaCapabilities}getDeviceType(){return this.abstractDeviceType_.value()}getBrowserEngine(){return this.browserEngine_.value()}requiresEncryptionInfoInAllInitSegments(e,t){return!1}requiresClearAndEncryptedInitSegments(e){return!1}insertEncryptionDataBeforeClear(e){return!1}requiresTfhdFix(e){return!1}requiresEC3InitSegments(){return!1}getChromeVersion_(){let e=null,t=navigator.userAgent.match(/Chrome\/(\d+)/);return t&&(e=parseInt(t[1],10)),e}requiresDvvcWorkaround(e){if(this.getBrowserEngine()!=ie.BrowserEngine.CHROMIUM)return!1;let i=this.getChromeVersion_();return e.type==="video"&&i!=null&&i<94&&e.supplementalCodecs!=e.codecs&&/dvh1|dvhe/.test(e.supplementalCodecs)}supportsSequenceMode(){return!0}supportsSmoothCodecSwitching(e){let t=window.ManagedSourceBuffer||window.SourceBuffer;return!!t&&!!t.prototype&&!!t.prototype.changeType}supportsServerCertificate(){return!0}seekDelay(){return 0}detectMaxHardwareResolution(){return Promise.resolve({width:1/0,height:1/0})}shouldOverrideDolbyVisionCodecs(){return!1}shouldAvoidUseTextDecoderEncoder(){return!1}adjustConfig(e){let t=this.getDeviceType();return(t===ie.DeviceType.TV||t===ie.DeviceType.CONSOLE||t===ie.DeviceType.CAST)&&(e.ads.customPlayheadTracker=!0,e.ads.skipPlayDetection=!0,e.ads.supportsMultipleMediaElements=!1),t===ie.DeviceType.TV&&(e.textDisplayer.suspendRenderingWhenHidden=!1),e}supportsOfflineStorage(){return!!window.indexedDB}rejectCodecs(){return[]}getHdrLevel(e){return window.matchMedia!==void 0&&(window.matchMedia("(color-gamut: p3)").matches||window.matchMedia("(dynamic-range: high)").matches)?e?"HLG":"PQ":"SDR"}supportsAirPlay(){return!1}misreportAC3UsingDrm(){return!1}returnLittleEndianUsingPlayReady(){return!1}supportsEncryptionSchemePolyfill(){return!0}misreportsSupportForPersistentLicenses(){return!1}supportStandardVP9Checking(){return!0}createMediaKeysWhenCheckingSupport(){return!0}disableHEVCSupport(){return!1}supportsCbcsWithoutEncryptionSchemeSupport(){return!1}needWaitForEncryptedEvent(e){return e==="com.apple.fps"}supportsContainerChangeType(){return!0}getRemote(e){let t=this.getDeviceType();return[ie.DeviceType.DESKTOP,ie.DeviceType.MOBILE,ie.DeviceType.VR,ie.DeviceType.APPLE_VR].includes(t)?e.remote:null}supportsWorkerTransmux(){return typeof Worker!="undefined"}hasWorkingClearKeySupport(){return!0}toString(){return`Device: ${this.getDeviceName()} v${this.getVersion()}; Type: ${this.getDeviceType()}`}};/*! @license
|
|
631
|
+
* Shaka Player
|
|
632
|
+
* Copyright 2016 Google LLC
|
|
633
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
634
|
+
*/var Nn=class extends ut{constructor(){super();l(this,"version_");l(this,"deviceType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Version\/(\d+)(?:\.(\d+))?/);return t||(t=navigator.userAgent.match(/OS (\d+)(?:_(\d+))?/)),t?[parseInt(t[1],10),parseInt(t[2]||"0",10)]:[0,0]}),this.deviceType_=new _e(()=>/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1?"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.MOBILE:"xr"in navigator?ie.DeviceType.APPLE_VR:ie.DeviceType.DESKTOP)}getVersion(){return this.version_.value()[0]}getDeviceName(){return"Apple Browser"}getDeviceType(){return this.deviceType_.value()}getBrowserEngine(){return ie.BrowserEngine.WEBKIT}supportsMediaCapabilities(){return!1}requiresEncryptionInfoInAllInitSegments(t,i){return!this.supportsMixedClearEncryptedContent_()&&i==="audio"}insertEncryptionDataBeforeClear(){return!this.supportsMixedClearEncryptedContent_()}requiresTfhdFix(t){return!this.supportsMixedClearEncryptedContent_()&&t==="audio"}adjustConfig(t){return super.adjustConfig(t),t.abr.minTimeToSwitch=.5,t}supportsAirPlay(){return!0}supportsContainerChangeType(){return!1}hasWorkingClearKeySupport(){return!1}supportsMixedClearEncryptedContent_(){let t=this.version_.value();return t[0]>=27?!0:t[0]===26&&t[1]>=4}static isAppleBrowser_(){return(navigator.vendor||"").includes("Apple")?/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1||navigator.userAgentData&&navigator.userAgentData.platform&&navigator.userAgentData.platform.toLowerCase()=="macos"?!0:!!(navigator.platform&&navigator.platform.toLowerCase().includes("mac")):!1}};Nn.isAppleBrowser_()&&j.registerDeviceFactory(()=>new Nn);/*! @license
|
|
635
|
+
* Shaka Player
|
|
636
|
+
* Copyright 2016 Google LLC
|
|
637
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
638
|
+
*/var ki=class ki extends ut{constructor(){if(!ki.isChromecast_())throw new Error("Not a Chromecast device!");super();l(this,"version_");l(this,"osType_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/Chrome\/(\d+)/);return t?parseInt(t[1],10):null}),this.osType_=new _e(()=>{let t=navigator.userAgentData&&navigator.userAgentData.platform||navigator.userAgent;return t=t.toLowerCase(),t.includes("android")?ki.OsType_.ANDROID:t.includes("fuchsia")?ki.OsType_.FUCHSIA:ki.OsType_.LINUX})}getVersion(){return this.version_.value()}getDeviceName(){return"Chromecast with "+this.osType_.value()}getDeviceType(){return ie.DeviceType.CAST}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}supportsMediaCapabilities(){return super.supportsMediaCapabilities()&&this.osType_.value()!==ki.OsType_.LINUX}supportsSmoothCodecSwitching(t){return super.supportsSmoothCodecSwitching(t)&&this.osType_.value()!==ki.OsType_.LINUX}seekDelay(){switch(this.osType_.value()){case ki.OsType_.ANDROID:return 0;case ki.OsType_.FUCHSIA:return 3;default:return 1}}async detectMaxHardwareResolution(){let t=window.cast&&cast.__platform__&&cast.__platform__.canDisplayType,i={width:1280,height:720};try{t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=3840; height=2160')?(i.width=3840,i.height=2160):t&&await cast.__platform__.canDisplayType('video/mp4; codecs="avc1.640028"; width=1920; height=1080')&&(i.width=1920,i.height=1080)}catch(r){p.alwaysError("Failed to check canDisplayType:",r)}return i}adjustConfig(t){return super.adjustConfig(t),t.streaming.stallSkip=0,t}supportsOfflineStorage(){return!1}supportsCbcsWithoutEncryptionSchemeSupport(){return!0}static isChromecast_(){return navigator.userAgent.includes("CrKey")&&!navigator.userAgent.includes("VIZIO SmartCast")}};l(ki,"OsType_",{ANDROID:"Android",FUCHSIA:"Fuchsia",LINUX:"Linux"});var On=ki;On.isChromecast_()&&j.registerDeviceFactory(()=>new On);/*! @license
|
|
639
|
+
* Shaka Player
|
|
640
|
+
* Copyright 2016 Google LLC
|
|
641
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
642
|
+
*//*! @license
|
|
643
|
+
* Shaka Player
|
|
644
|
+
* Copyright 2016 Google LLC
|
|
645
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
646
|
+
*/var ao=class extends ut{constructor(){super();l(this,"version_");l(this,"deviceName_");l(this,"isWindows_");l(this,"isSonyTV_");l(this,"isAndroid_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/(Chrome|Firefox)\/(\d+)/);return t?parseInt(t[2],10):null}),this.deviceName_=new _e(()=>navigator.userAgent.match(/Edge?\//)?"Edge":navigator.userAgent.includes("Chrome")?"Chrome":navigator.userAgent.includes("Firefox")?"Firefox":"Unknown"),this.isWindows_=new _e(()=>navigator.userAgentData&&navigator.userAgentData.platform?navigator.userAgentData.platform.toLowerCase()=="windows":navigator.platform?navigator.platform.toLowerCase().includes("win32"):!1),this.isSonyTV_=new _e(()=>navigator.userAgent.includes("sony.hbbtv.tv")),this.isAndroid_=new _e(()=>navigator.userAgentData&&navigator.userAgentData.platform?navigator.userAgentData.platform.toLowerCase()=="android":!!navigator.userAgent.includes("Android"))}getVersion(){return this.version_.value()}getDeviceName(){return this.deviceName_.value()}requiresEncryptionInfoInAllInitSegments(t){return de.isPlayReadyKeySystem(t)?this.isWindows_.value():!1}requiresClearAndEncryptedInitSegments(t){return de.isPlayReadyKeySystem(t)||this.deviceName_.value()==="Edge"?this.isWindows_.value():!1}insertEncryptionDataBeforeClear(t){return de.isPlayReadyKeySystem(t)||this.deviceName_.value()==="Edge"?this.isWindows_.value():!1}supportsSmoothCodecSwitching(t){return this.isWindows_.value()&&de.isPlayReadyKeySystem(t)?!1:super.supportsSmoothCodecSwitching(t)}adjustConfig(t){if(super.adjustConfig(t),this.isWindows_.value())switch(this.deviceName_.value()){case"Firefox":t.drm.keySystemsMapping={"com.microsoft.playready":"com.microsoft.playready.recommendation"};break;case"Chrome":t.drm.keySystemsMapping={"com.microsoft.playready":"com.microsoft.playready.recommendation.3000","com.microsoft.playready.recommendation":"com.microsoft.playready.recommendation.3000"};break}return this.isAndroid_.value()&&(t.drm.defaultAudioRobustnessForWidevine="SW_SECURE_CRYPTO",t.drm.defaultVideoRobustnessForWidevine="SW_SECURE_CRYPTO"),t}returnLittleEndianUsingPlayReady(){return this.deviceName_.value()==="Edge"||this.isSonyTV_.value()}createMediaKeysWhenCheckingSupport(){return!(Fe&&!1&&this.isWindows_.value()&&this.getBrowserEngine()===ie.BrowserEngine.GECKO)}disableHEVCSupport(){return this.isWindows_.value()&&this.getBrowserEngine()===ie.BrowserEngine.GECKO}supportsCbcsWithoutEncryptionSchemeSupport(){if(this.getBrowserEngine()===ie.BrowserEngine.GECKO){let t=this.getVersion();return t!==null?t>=100:super.supportsCbcsWithoutEncryptionSchemeSupport()}return super.supportsCbcsWithoutEncryptionSchemeSupport()}needWaitForEncryptedEvent(t){return this.getBrowserEngine()===ie.BrowserEngine.GECKO?de.isPlayReadyKeySystem(t):super.needWaitForEncryptedEvent(t)}};j.registerDefaultDeviceFactory(()=>new ao);/*! @license
|
|
647
|
+
* Shaka Player
|
|
648
|
+
* Copyright 2016 Google LLC
|
|
649
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
650
|
+
*/var Bn=class extends ut{getVersion(){return null}getDeviceName(){return"Hisense"}getDeviceType(){return ie.DeviceType.TV}supportsMediaCapabilities(){return!1}supportsSmoothCodecSwitching(){return!1}detectMaxHardwareResolution(){let e={width:1920,height:1080},t=null;if(window.Hisense_Get4KSupportState)try{t=window.Hisense_Get4KSupportState()}catch(i){p.debug("Hisense: Failed to get 4K support state",i)}return t==null&&(t=navigator.userAgent.includes("UHD")),t&&(e.width=3840,e.height=2160),Promise.resolve(e)}adjustConfig(e){return super.adjustConfig(e),e.streaming.stallSkip=0,e}supportsWorkerTransmux(){return!1}static isHisense_(){return navigator.userAgent.includes("Hisense")||navigator.userAgent.includes("VIDAA")}};Bn.isHisense_()&&j.registerDeviceFactory(()=>new Bn);/*! @license
|
|
651
|
+
* Shaka Player
|
|
652
|
+
* Copyright 2016 Google LLC
|
|
653
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
654
|
+
*/var Fn=class extends ut{constructor(){super();l(this,"version_");this.version_=new _e(()=>{let t=navigator.userAgent.match(/PlayStation (\d+)/);return t?parseInt(t[1],10):null})}getDeviceName(){return"PlayStation"}getDeviceType(){return ie.DeviceType.CONSOLE}getBrowserEngine(){return ie.BrowserEngine.WEBKIT}getVersion(){return this.version_.value()}supportsMediaCapabilities(){return!1}supportsSequenceMode(){return!1}supportsSmoothCodecSwitching(t){return!1}shouldAvoidUseTextDecoderEncoder(){return this.getVersion()===4}async detectMaxHardwareResolution(){let t={width:1920,height:1080},i=!1;try{i=(await window.msdk.device.getDisplayInfo()).resolution==="4K"}catch(r){try{i=(await window.msdk.device.getDisplayInfoImmediate()).resolution==="4K"}catch(s){p.alwaysWarn("PlayStation: Failed to get the display info:",s)}}return i&&(t.width=3840,t.height=2160),t}adjustConfig(t){return super.adjustConfig(t),this.getVersion()===4&&t.drm.preferredKeySystems.push("com.microsoft.playready"),t.streaming.clearDecodingCache=!0,t}returnLittleEndianUsingPlayReady(){return this.getVersion()===4}supportsEncryptionSchemePolyfill(){return this.getVersion()!==4}static isPlayStation_(){return navigator.userAgent.includes("PlayStation")}};Fn.isPlayStation_()&&j.registerDeviceFactory(()=>new Fn);/*! @license
|
|
655
|
+
* Shaka Player
|
|
656
|
+
* Copyright 2016 Google LLC
|
|
657
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
658
|
+
*/var Vn=class extends ut{getVersion(){return null}getDeviceName(){return"TitanOS"}getDeviceType(){return ie.DeviceType.TV}detectMaxHardwareResolution(){let e={width:1920,height:1080};try{SmartTvA_API.hasCapability("UHD")?(e.width=3840,e.height=2160):SmartTvA_API.hasCapability("FHD")?(e.width=1920,e.height=1080):(e.width=1280,e.height=720)}catch(t){p.alwaysWarn("Titan OS: Error detecting screen size, default screen size 1920x1080.",t)}return Promise.resolve(e)}getHdrLevel(e){try{if(SmartTvA_API.hasCapability("HDR","HDR10")||SmartTvA_API.hasCapability("HDR","DV"))return e?"HLG":"PQ"}catch(t){return p.alwaysWarn("Titan OS: Error checking HDR support",t),super.getHdrLevel(e)}return"SDR"}static isTitanOS_(){return navigator.userAgent.includes("TitanOS")}};Vn.isTitanOS_()&&j.registerDeviceFactory(()=>new Vn);/*! @license
|
|
659
|
+
* Shaka Player
|
|
660
|
+
* Copyright 2016 Google LLC
|
|
661
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
662
|
+
*/var Hn=class extends ut{getVersion(){return null}getDeviceName(){return"TiVoOS"}getDeviceType(){return ie.DeviceType.TV}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}supportsSmoothCodecSwitching(e){return!1}static isTiVoOS_(){return navigator.userAgent.includes("TiVoOS")}};Hn.isTiVoOS_()&&j.registerDeviceFactory(()=>new Hn);/*! @license
|
|
663
|
+
* Shaka Player
|
|
664
|
+
* Copyright 2016 Google LLC
|
|
665
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
666
|
+
*/var Gn=class extends ut{constructor(){super();l(this,"osMajorVersion_");l(this,"osMinorVersion_");let t=navigator.userAgent.match(/Tizen (\d+).(\d+)/);this.osMajorVersion_=t?parseInt(t[1],10):null,this.osMinorVersion_=t?parseInt(t[2],10):null}getVersion(){return this.osMajorVersion_}getDeviceName(){return"Tizen"}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}getDeviceType(){return ie.DeviceType.TV}requiresEncryptionInfoInAllInitSegments(t){return!0}requiresEC3InitSegments(){return this.getVersion()===3}supportsMediaCapabilities(){return!1}supportsSequenceMode(){let t=this.getVersion();return t!==null?t>=4:super.supportsSequenceMode()}supportsSmoothCodecSwitching(t){return!1}supportsServerCertificate(){return!this.osMajorVersion_||!this.osMinorVersion_?super.supportsServerCertificate():this.osMajorVersion_===5?this.osMinorVersion_>=5:this.osMajorVersion_>5}detectMaxHardwareResolution(){let t=window.devicePixelRatio,i={width:window.screen.width*t>1920?3840:1920,height:window.screen.height*t>1080?2160:1080};try{if(webapis.systeminfo&&webapis.systeminfo.getMaxVideoResolution){let r=webapis.systeminfo.getMaxVideoResolution();i.width=r.width,i.height=r.height}else webapis.productinfo.is8KPanelSupported&&webapis.productinfo.is8KPanelSupported()?(i.width=7680,i.height=4320):webapis.productinfo.isUdPanelSupported&&webapis.productinfo.isUdPanelSupported()&&(i.width=3840,i.height=2160)}catch(r){p.alwaysWarn("Tizen: Error detecting screen size, default screen size 1920x1080.")}return Promise.resolve(i)}adjustConfig(t){return super.adjustConfig(t),t.drm.ignoreDuplicateInitData=this.getVersion()!==2,this.getVersion()===3&&(t.streaming.crossBoundaryStrategy=Ti.RESET_TO_ENCRYPTED),t.streaming.shouldFixTimestampOffset=!0,t.streaming.stallSkip=0,t.streaming.gapPadding=2,t}rejectCodecs(){let t=[];return this.osMajorVersion_!==null&&this.osMajorVersion_<5&&t.push("opus"),t}getHdrLevel(t){try{if(webapis.avinfo.isHdrTvSupport())return t?"HLG":"PQ"}catch(i){return super.getHdrLevel(t)}return"SDR"}misreportAC3UsingDrm(){return!0}misreportsSupportForPersistentLicenses(){return this.getVersion()===3}supportsWorkerTransmux(){let t=this.getVersion();return t!==null&&t<3?!1:super.supportsWorkerTransmux()}static isTizen_(){return navigator.userAgent.includes("Tizen")}};Gn.isTizen_()&&j.registerDeviceFactory(()=>new Gn);/*! @license
|
|
667
|
+
* Shaka Player
|
|
668
|
+
* Copyright 2016 Google LLC
|
|
669
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
670
|
+
*/var Kn=class extends ut{getVersion(){return null}getDeviceName(){return"Vizio"}getDeviceType(){return ie.DeviceType.TV}supportsMediaCapabilities(){return!1}static isVizio_(){return navigator.userAgent.includes("VIZIO SmartCast")}};Kn.isVizio_()&&j.registerDeviceFactory(()=>new Kn);/*! @license
|
|
671
|
+
* Shaka Player
|
|
672
|
+
* Copyright 2016 Google LLC
|
|
673
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
674
|
+
*/var qn=class extends ut{constructor(){super();l(this,"isSkyQ_");l(this,"isOrange_");l(this,"version_");this.isSkyQ_=new _e(()=>navigator.userAgent.includes("DT_STB_BCM")||navigator.userAgent.includes("Sky_STB")),this.isOrange_=new _e(()=>navigator.userAgent.includes("SOPOpenBrowser")),this.version_=new _e(()=>{if(navigator.userAgent.includes("DT_STB_BCM"))return 11;let t=navigator.userAgent.match(/Version\/(\d+)/);return t||(t=navigator.userAgent.match(/OS (\d+)(?:_\d+)?/),t)?parseInt(t[1],10):null})}getVersion(){return this.version_.value()}getDeviceName(){return"WebKit STB"}getDeviceType(){return ie.DeviceType.TV}getBrowserEngine(){return ie.BrowserEngine.WEBKIT}supportsMediaCapabilities(){return!1}supportsSequenceMode(){let t=this.version_.value();return t!==null?t>=15:!0}requiresEncryptionInfoInAllInitSegments(t){return this.isOrange_.value()}detectMaxHardwareResolution(){let t={width:window.screen.width*window.devicePixelRatio,height:window.screen.height*window.devicePixelRatio};return Promise.resolve(t)}supportsEncryptionSchemePolyfill(){return!this.isSkyQ_.value()}supportsContainerChangeType(){return!1}static isWebkitSTB_(){return navigator.userAgent.includes("PlayStation")?!1:navigator.userAgent.includes("SOPOpenBrowser")||navigator.userAgent.includes("DT_STB_BCM")||navigator.userAgent.includes("Sky_STB")?!0:!(navigator.vendor||"").includes("Apple")||/(?:iPhone|iPad|iPod)/.test(navigator.userAgent)||navigator.maxTouchPoints>1||navigator.userAgentData&&navigator.userAgentData.platform&&navigator.userAgentData.platform.toLowerCase()=="macos"?!1:!(navigator.platform&&navigator.platform.toLowerCase().includes("mac"))}};qn.isWebkitSTB_()&&j.registerDeviceFactory(()=>new qn);/*! @license
|
|
675
|
+
* Shaka Player
|
|
676
|
+
* Copyright 2016 Google LLC
|
|
677
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
678
|
+
*/var Wn=class extends ut{constructor(){super();l(this,"osVersion_");l(this,"supportHdr_");this.osVersion_=this.guessWebOSVersion_(),this.supportHdr_=null;try{let t=new PalmServiceBridge;t.onservicecallback=r=>{var n,a,o,c;p.info("WebOS: config support",r);let s=JSON.parse(r);this.supportHdr_=(c=(o=(n=s.configs)==null?void 0:n["tv.model.supportHDR"])!=null?o:(a=s.configs)==null?void 0:a["tv.config.supportDolbyHDRContents"])!=null?c:!1};let i={configNames:["tv.model.supportHDR","tv.config.supportDolbyHDRContents"]};t.call("luna://com.webos.service.config/getConfigs",JSON.stringify(i))}catch(t){p.alwaysWarn("WebOS: getConfigs call failed",t)}}getVersion(){return this.osVersion_}getDeviceName(){return"WebOS"}getDeviceType(){return ie.DeviceType.TV}getBrowserEngine(){return ie.BrowserEngine.CHROMIUM}supportsMediaCapabilities(){return!1}supportsSequenceMode(){let t=this.getVersion();return t!==null?t>3:super.supportsSequenceMode()}supportsSmoothCodecSwitching(t){return!1}supportsServerCertificate(){let t=this.getVersion();return t!==null?t>3:super.supportsServerCertificate()}detectMaxHardwareResolution(){let t={width:1920,height:1080};try{let i=JSON.parse(window.PalmSystem.deviceInfo);t.width=Math.max(1920,i.screenWidth),t.height=Math.max(1080,i.screenHeight)}catch(i){p.alwaysWarn("WebOS: Error detecting screen size, default screen size 1920x1080.")}return Promise.resolve(t)}adjustConfig(t){return super.adjustConfig(t),this.getVersion()===3&&(t.streaming.crossBoundaryStrategy=Ti.RESET),t.streaming.shouldFixTimestampOffset=!0,t.streaming.stallSkip=0,t}getHdrLevel(t){return this.supportHdr_==null?(p.alwaysWarn("WebOS: getConfigs call haven't finished"),super.getHdrLevel(t)):this.supportHdr_?t?"HLG":"PQ":"SDR"}guessWebOSVersion_(){let t=null,i=navigator.userAgent.match(/Chrome\/(\d+)/);switch(i&&(t=parseInt(i[1],10)),t){case 38:return 3;case 53:return 4;case 68:return 5;case 79:return 6;case 87:return 22;case 94:return 23;case 108:return 24;case 120:return 25;case 132:return 26;default:return null}}supportStandardVP9Checking(){return!1}supportsCbcsWithoutEncryptionSchemeSupport(){let t=this.getVersion();return t!==null?t>=6:super.supportsCbcsWithoutEncryptionSchemeSupport()}supportsWorkerTransmux(){let t=this.getVersion();return t!==null&&t<4?!1:super.supportsWorkerTransmux()}static isWebOS_(){return navigator.userAgent.includes("Web0S")}};if(Wn.isWebOS_()){let y=new Wn;j.registerDeviceFactory(()=>y)}/*! @license
|
|
679
|
+
* Shaka Player
|
|
680
|
+
* Copyright 2016 Google LLC
|
|
681
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
682
|
+
*/var zn=class y extends ut{constructor(){super();l(this,"isLegacyEdge_");l(this,"version_");this.isLegacyEdge_=navigator.userAgent.includes("Edge/");let t=navigator.userAgent.match(/Edge?\/(\d+)/);this.version_=t?parseInt(t[1],10):null}getVersion(){return this.version_}getDeviceName(){return"Xbox"}getDeviceType(){return ie.DeviceType.CONSOLE}getBrowserEngine(){return this.isLegacyEdge_?ie.BrowserEngine.EDGE:ie.BrowserEngine.CHROMIUM}requiresEncryptionInfoInAllInitSegments(t){return!0}requiresClearAndEncryptedInitSegments(){return!0}insertEncryptionDataBeforeClear(){return!0}shouldOverrideDolbyVisionCodecs(){return this.isLegacyEdge_}detectMaxHardwareResolution(){let t={width:1920,height:1080},i=y.getWinRT_();if(i)try{let r=new i.Media.Protection.ProtectionCapabilities,s=i.Media.Protection.ProtectionCapabilityResult,n=null,a='video/mp4;codecs="hvc1,mp4a";features="decode-res-x=3840,decode-res-y=2160,decode-bitrate=20000,decode-fps=30,decode-bpc=10,display-res-x=3840,display-res-y=2160,display-bpc=8"',o="com.microsoft.playready.recommendation";do n=r.isTypeSupported(a,o);while(n===s.maybe);n===s.probably&&(t.width=3840,t.height=2160)}catch(r){p.alwaysWarn("Xbox: Error detecting screen size, default screen size 1920x1080.")}return Promise.resolve(t)}adjustConfig(t){return super.adjustConfig(t),t.drm.parseInbandPsshEnabled=this.isLegacyEdge_,t.drm.preferredKeySystems.push("com.microsoft.playready"),this.isLegacyEdge_&&(t.streaming.gapPadding=.01),t}returnLittleEndianUsingPlayReady(){return!0}supportsOfflineStorage(){return!1}static getWinRT_(){let t=null;try{typeof Windows!="undefined"?t=Windows:t=chrome.webview.hostObjects.sync.Windows}catch(i){}return t}static isXbox_(){return navigator.userAgent.includes("Xbox One")||y.getWinRT_()!==null}};zn.isXbox_()&&j.registerDeviceFactory(()=>new zn);/*! @license
|
|
683
|
+
* Shaka Player
|
|
684
|
+
* Copyright 2016 Google LLC
|
|
685
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
686
|
+
*//*! @license
|
|
687
|
+
* Shaka Player
|
|
688
|
+
* Copyright 2016 Google LLC
|
|
689
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
690
|
+
*/var Vs=class{constructor(e,t,i){l(this,"type");l(this,"tags");l(this,"segments");this.type=e,this.tags=t,this.segments=i||null}},Gi={MASTER:0,MEDIA:1},_r=class{constructor(e,t,i,r=null){l(this,"id");l(this,"name");l(this,"attributes");l(this,"value");this.id=e,this.name=t,this.attributes=i,this.value=r}toString(e){let t=s=>{let a=!isNaN(Number(s.value))?s.value:'"'+s.value+'"';return s.name+"="+a},i="#"+this.name,r=this.attributes?this.attributes.filter(s=>e?!e.has(s.name):!0).map(t):[];return this.value&&r.unshift(this.value),r.length>0&&(i+=":"+r.join(",")),i}getTagKey(e){if(e)return this.toString();let t=new Set().add("AUDIO").add("VIDEO").add("SUBTITLES").add("PATHWAY-ID").add("GROUP-ID").add("URI");return this.toString(t)}addAttribute(e){this.attributes.push(e)}getAttribute(e){return this.attributes.find(t=>t.name===e)||null}getAttributeValue(e,t){let i=this.getAttribute(e);return i?i.value:t||null}getRequiredAttrValue(e){let t=this.getAttribute(e);if(!t)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_ATTRIBUTE_MISSING,e);return t.value}setName(e){this.name=e}},Hs=class{constructor(e,t,i=[]){l(this,"tags");l(this,"verbatimSegmentUri");l(this,"partialSegments");this.tags=t,this.verbatimSegmentUri=e,this.partialSegments=i}},Fr=class{constructor(e,t){l(this,"name");l(this,"value");this.name=e,this.value=t}};/*! @license
|
|
691
|
+
* Shaka Player
|
|
692
|
+
* Copyright 2016 Google LLC
|
|
693
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
694
|
+
*/var he=class y{static filterTagsByName(e,t){return e.filter(i=>i.name==t)}static filterTagsByType(e,t){return e.filter(i=>i.getRequiredAttrValue("TYPE")==t)}static getFirstTagWithName(e,t){for(let i of e)if(i.name===t)return i;return null}static getFirstTagWithNameAsNumber(e,t,i=0){let r=y.getFirstTagWithName(e,t);return r?Number(r.value):i}static constructSegmentUris(e,t,i){return t?y.constructUris(e,[t],i):[]}static constructUris(e,t,i){if(!t.length)return[];let r=t;return i&&i.size&&(r=t.map(s=>y.variableSubstitution(s,i))),fe.resolveUris(e,r)}static variableSubstitution(e,t){if(!t||!t.size)return e;let i=String(e).replace(/%7B/g,"{").replace(/%7D/g,"}"),r=i.match(/{\$\w*}/g);if(r)for(let s of r){let n=s.slice(2,s.length-1),a=t.get(n);if(a)i=i.replace(s,a);else throw p.error("A variable has been found that is not declared",n),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_VARIABLE_NOT_FOUND,n)}return i}static getExtinfDuration(e){let t=e.value,i=t.indexOf(",");return Number(i===-1?t:t.substring(0,i))}static isComment(e){return e.startsWith("#")&&!e.startsWith("#EXT")}static getSupplementalCodecs(e){let t=e.getAttributeValue("SUPPLEMENTAL-CODECS");return t?t.split(/\s*,\s*/).map(r=>r.split("/")[0]).join(","):""}};/*! @license
|
|
695
|
+
* Shaka Player
|
|
696
|
+
* Copyright 2016 Google LLC
|
|
697
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
698
|
+
*/var Di=class Di{constructor(){l(this,"globalId_");this.globalId_=0}parsePlaylist(e){let i=q.fromUTF8(e).trim().split(/[\r\n]+/);if(!i[0].startsWith("#EXTM3U"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_PLAYLIST_HEADER_MISSING);let r=Gi.MASTER,s=!1,n=[],a=!0;for(let o=0;o<i.length;o++){let c=i[o],d=i[o+1];if(he.isComment(c)||a){a=!1;continue}let u=this.parseTag_(c);if(s||(Di.MEDIA_PLAYLIST_TAGS.has(u.name)?(r=Gi.MEDIA,s=!0):u.name=="EXT-X-STREAM-INF"||u.name=="EXT-X-MEDIA"?s=!0:Di.SEGMENT_TAGS.has(u.name)&&(r=Gi.MEDIA,s=!0)),Di.SEGMENT_TAGS.has(u.name)){if(r!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let m=this.parseSegments_(i,o,n);return new Vs(r,n,m)}if(n.push(u),u.name=="EXT-X-STREAM-INF"){let m=new Fr("URI",d);u.addAttribute(m),a=!0}}return new Vs(r,n)}parseSegments_(e,t,i){let r=e.length-t,s=Math.max(100,Math.floor(r/2)),n=new Array(s),a=0,o=[],c=[],d=null;for(let u=t;u<e.length;u++){let m=e[u];if(m.startsWith("#EXT")){let f=this.parseTag_(m);Di.MEDIA_PLAYLIST_TAGS.has(f.name)?i.push(f):f.name=="EXT-X-MAP"?d=f:f.name=="EXT-X-PART"?c.push(f):f.name=="EXT-X-PRELOAD-HINT"?f.getAttributeValue("TYPE")=="PART"?c.push(f):f.getAttributeValue("TYPE")=="MAP"&&(f.setName("EXT-X-MAP"),d=f):o.push(f)}else if(!he.isComment(m)){let f=m.trim();d&&o.push(d);let g=new Hs(f,o,c);a<n.length?n[a++]=g:(n.push(g),a++),o=[],c=[]}}if(c.length){d&&o.push(d);let u=new Hs("",o,c);a<n.length?n[a++]=u:(n.push(u),a++)}return a<n.length?n.slice(0,a):n}parseTag_(e){return Di.parseTag(this.globalId_++,e)}static parseTag(e,t){let{name:i,data:r}=Di.splitTag_(t);if(r===null)return new _r(e,i,[]);if(r.indexOf("=")===-1)return new _r(e,i,[],r);let s=Di.parseAttributes_(r);return new _r(e,i,s.list,s.value)}static splitTag_(e){let t=e.indexOf(":"),i=t===-1?e.substring(1):e.substring(1,t);if(!i.startsWith("EXT"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.INVALID_HLS_TAG,e);let r=t===-1?null:e.substring(t+1);return{name:i,data:r}}static parseAttributes_(e){let t=[],i=null,r=0,s=e.indexOf(","),n=e.indexOf("=");for(s!==-1&&s<n&&(i=e.substring(0,s),r=s+1);r<e.length;){for(;e[r]===" ";)r++;let a=e.indexOf("=",r);if(a===-1)break;let o=e.substring(r,a);r=a+1;let c;if(e[r]==='"'){r++;let d=e.indexOf('"',r);c=d===-1?e.substring(r):e.substring(r,d),r=d===-1?e.length:d+1}else{let d=e.indexOf(",",r);c=d===-1?e.substring(r):e.substring(r,d),r=d===-1?e.length:d}r<e.length&&e[r]===","&&r++,t.push(new Fr(o,c))}return{value:i,list:t}}};l(Di,"MEDIA_PLAYLIST_TAGS",new Set(["EXT-X-TARGETDURATION","EXT-X-MEDIA-SEQUENCE","EXT-X-DISCONTINUITY-SEQUENCE","EXT-X-PLAYLIST-TYPE","EXT-X-I-FRAMES-ONLY","EXT-X-ENDLIST","EXT-X-SERVER-CONTROL","EXT-X-SKIP","EXT-X-PART-INF","EXT-X-DATERANGE"])),l(Di,"SEGMENT_TAGS",new Set(["EXTINF","EXT-X-BYTERANGE","EXT-X-DISCONTINUITY","EXT-X-PROGRAM-DATE-TIME","EXT-X-KEY","EXT-X-DATERANGE","EXT-X-MAP","EXT-X-GAP","EXT-X-TILES"]));var Xn=Di;/*! @license
|
|
699
|
+
* Shaka Player
|
|
700
|
+
* Copyright 2016 Google LLC
|
|
701
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
702
|
+
*/var yr=class y{static parse(e,t,i,r){try{let s=y.parseRaw(e),n={uri:e,originalUri:e,data:s.data,headers:{"content-type":s.contentType},originalRequest:t};return je.completed(n)}catch(s){return je.failed(s)}}static parseRaw(e){if(!e.startsWith("data:"))throw p.error("Bad data URI, failed to parse scheme"),new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.MALFORMED_DATA_URI,e);let t=e.substring(5),i=t.indexOf(",");if(i<0)throw p.error("Bad data URI, failed to extract encoding and MIME type"),new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.MALFORMED_DATA_URI,e);let r=t.substring(0,i),s=t.substring(i+1),n=decodeURIComponent(s),a=r.split(";"),o=a[0],c=!1;a.length>1&&a[a.length-1].toLowerCase()=="base64"&&(c=!0,a.pop());let d;return c?d=ne.fromBase64(n):d=q.toUTF8(n),{data:d,contentType:o,typeInfoList:a}}};K.registerScheme("data",yr.parse);/*! @license
|
|
703
|
+
* Shaka Player
|
|
704
|
+
* Copyright 2016 Google LLC
|
|
705
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
706
|
+
*/var St=class St{constructor(){l(this,"playerInterface_");l(this,"config_");l(this,"globalId_");l(this,"globalVariables_");l(this,"groupIdToStreamInfosMap_");l(this,"mediaSequenceToStartTimeByType_");l(this,"keyFormatsToDrmParsers_");l(this,"variantUriSet_");l(this,"uriToStreamInfosMap_");l(this,"presentationTimeline_");l(this,"masterPlaylistUri_");l(this,"manifestTextParser_");l(this,"minSequenceNumber_");l(this,"lowestSyncTime_");l(this,"realProgramDateTimeByReference_");l(this,"usesProgramDateTime_");l(this,"streamsFinalized_");l(this,"codecInfoInManifest_");l(this,"updatePlaylistTimer_");l(this,"presentationType_");l(this,"manifest_");l(this,"maxTargetDuration_");l(this,"lastTargetDuration_");l(this,"partialTargetDuration_");l(this,"presentationDelay_");l(this,"lowLatencyPresentationDelay_");l(this,"operationManager_");l(this,"groupIdToClosedCaptionsMap_");l(this,"groupIdToCodecsMap_");l(this,"mapTagToInitSegmentRefMap_");l(this,"aesKeyInfoMap_");l(this,"aesKeyMap_");l(this,"identityKeyMap_");l(this,"initSegmentToKidMap_");l(this,"lowLatencyMode_");l(this,"lowLatencyByterangeOptimization_");l(this,"averageUpdateDuration_");l(this,"contentSteeringManager_");l(this,"needsClosedCaptionsDetection_");l(this,"eventManager_");l(this,"mediaElement_");l(this,"startTime_");l(this,"isPreloadFn_");l(this,"psshToInitData_");l(this,"chapterUris_");l(this,"chapterStreamsMap_");this.playerInterface_=null,this.config_=null,this.globalId_=1,this.globalVariables_=new Map,this.groupIdToStreamInfosMap_=new Map,this.mediaSequenceToStartTimeByType_=new Map;let e=R.ContentType;this.mediaSequenceToStartTimeByType_.set(e.VIDEO,new Map),this.mediaSequenceToStartTimeByType_.set(e.AUDIO,new Map),this.mediaSequenceToStartTimeByType_.set(e.TEXT,new Map),this.mediaSequenceToStartTimeByType_.set(e.IMAGE,new Map),this.keyFormatsToDrmParsers_=new Map().set("com.apple.streamingkeydelivery",(t,i,r)=>this.fairplayDrmParser_(t,i,r)).set("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",(t,i,r)=>this.widevineDrmParser_(t,i,r)).set("com.microsoft.playready",(t,i,r)=>this.playreadyDrmParser_(t,i,r)).set("urn:uuid:3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c",(t,i,r)=>this.wiseplayDrmParser_(t,i,r)),this.variantUriSet_=new Set,this.uriToStreamInfosMap_=new Map,this.presentationTimeline_=null,this.masterPlaylistUri_="",this.manifestTextParser_=new Xn,this.minSequenceNumber_=-1,this.lowestSyncTime_=1/0,this.realProgramDateTimeByReference_=new WeakMap,this.usesProgramDateTime_=!1,this.streamsFinalized_=!1,this.codecInfoInManifest_=!1,this.updatePlaylistTimer_=new ae(()=>{if(this.mediaElement_&&!this.config_.continueLoadingWhenPaused&&(this.eventManager_.unlisten(this.mediaElement_,"timeupdate"),this.mediaElement_.paused)){this.eventManager_.listenOnce(this.mediaElement_,"timeupdate",()=>this.onUpdate_());return}this.onUpdate_()}),this.presentationType_=St.PresentationType_.VOD,this.manifest_=null,this.maxTargetDuration_=0,this.lastTargetDuration_=1/0,this.partialTargetDuration_=0,this.presentationDelay_=0,this.lowLatencyPresentationDelay_=0,this.operationManager_=new gi,this.groupIdToClosedCaptionsMap_=new Map,this.groupIdToCodecsMap_=new Map,this.mapTagToInitSegmentRefMap_=new Map,this.aesKeyInfoMap_=new Map,this.aesKeyMap_=new Map,this.identityKeyMap_=new Map,this.initSegmentToKidMap_=new Map,this.lowLatencyMode_=!1,this.lowLatencyByterangeOptimization_=!1,this.averageUpdateDuration_=new er(5),this.contentSteeringManager_=null,this.needsClosedCaptionsDetection_=!0,this.eventManager_=new ue,this.mediaElement_=null,this.startTime_=null,this.isPreloadFn_=()=>!1,this.psshToInitData_=new Map,this.chapterUris_=[],this.chapterStreamsMap_=new Map}configure(e,t){let i=this.playerInterface_&&e.updatePeriod!=this.config_.updatePeriod&&e.updatePeriod>=0;this.config_=e,t&&(this.isPreloadFn_=t),this.contentSteeringManager_&&this.contentSteeringManager_.configure(this.config_),i&&this.manifest_&&this.manifest_.presentationTimeline.isDynamic()&&this.updatePlaylistTimer_.tickNow()}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.playerInterface_=t,this.lowLatencyMode_=t.isLowLatencyMode();let i=await this.requestManifest_([e]).promise;return this.masterPlaylistUri_=i.uri,v.assert(i.data,"Response data should be non-null!"),await this.parseManifest_(i.data),v.assert(this.manifest_,"Manifest should be non-null"),this.manifest_}stop(){this.updatePlaylistTimer_&&(this.updatePlaylistTimer_.stop(),this.updatePlaylistTimer_=null);let e=[];return this.operationManager_&&(e.push(this.operationManager_.destroy()),this.operationManager_=null),this.playerInterface_=null,this.config_=null,this.variantUriSet_.clear(),this.manifest_=null,this.uriToStreamInfosMap_.clear(),this.groupIdToStreamInfosMap_.clear(),this.groupIdToCodecsMap_.clear(),this.globalVariables_.clear(),this.mapTagToInitSegmentRefMap_.clear(),this.aesKeyInfoMap_.clear(),this.aesKeyMap_.clear(),this.identityKeyMap_.clear(),this.initSegmentToKidMap_.clear(),this.psshToInitData_.clear(),this.contentSteeringManager_&&this.contentSteeringManager_.destroy(),this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),Promise.all(e)}async update(){if(!this.isDynamic_())return;let e=[],i=Array.from(this.uriToStreamInfosMap_.values()).filter(n=>!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex);if(i.length===0){p.warning("No active streams found during update");return}this.lastTargetDuration_=1/0,this.manifest_.gapCount=0;for(let n of i)e.push(this.updateStream_(n));e.push(this.parseChapters_()),await Promise.all(e);let r=Array.from(this.chapterStreamsMap_.values());for(let n of r)this.manifest_.chapterStreams.includes(n)||this.manifest_.chapterStreams.push(n);this.notifySegmentsForStreams_(i.map(n=>n.stream));let s=i.some(n=>n.hasEndList==!1);i.length&&!s&&(this.setPresentationType_(St.PresentationType_.VOD),this.determineDuration_()),s&&this.determineDuration_();for(let n of i)!n.stream.isAudioMuxedInVideo&&n.stream.segmentIndex&&!n.stream.segmentIndex.earliestReference()&&this.playerInterface_.disableStream(n.stream)}getMediaSequenceToStartTimeFor_(e){return this.isLive_()?this.mediaSequenceToStartTimeByType_.get(e.type):e.mediaSequenceToStartTime}async updateStream_(e){if(e.stream.isAudioMuxedInVideo)return;let t=[];for(let w of e.getUris()){let M=new Map;e.canBlockReload&&(e.nextMediaSequence>=0&&M.set("_HLS_msn",String(e.nextMediaSequence)),e.nextPart>=0&&M.set("_HLS_part",String(e.nextPart))),e.canSkipDateRanges?M.set("_HLS_skip","v2"):e.canSkipSegments&&M.set("_HLS_skip","YES"),t.push(fe.appendParams(w,M))}let i;try{i=await this.requestManifest_(t,!0).promise}catch(w){throw this.playerInterface_&&this.playerInterface_.disableStream(e.stream),w}if(!e.stream.segmentIndex)return;let r=this.manifestTextParser_.parsePlaylist(i.data);if(r.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let s=i.uri;s!=i.originalUri&&!e.getUris().includes(s)&&e.redirectUris.push(s);let n=he.filterTagsByName(r.tags,"EXT-X-DEFINE"),a=this.parseMediaVariables_(n,s),o=e.stream,c=this.getMediaSequenceToStartTimeFor_(e),{keyIds:d,drmInfos:u,encrypted:m,aesEncrypted:f}=await this.parseDrmInfo_(r,o.mimeType,e.getUris,a);!o.encrypted&&m&&!f&&(o.encrypted=!0),((w,M)=>w.size===M.size&&[...w].every(x=>M.has(x)))(o.keyIds,d)||(o.keyIds=d,o.drmInfos=u,this.playerInterface_.newDrmInfo(o));let _=i.uri!==i.originalUri,{segments:T,totalCount:S,bandwidth:b}=this.createSegments_(r,c,a,e.getUris,e.type,_,o.segmentIndex);b&&(o.bandwidth=b);let E=ur.createQualityInfo(o);for(let w of T)w.initSegmentReference&&(w.initSegmentReference.mediaQuality=E);if(T.length&&o.segmentIndex.mergeAndEvict(T,this.presentationTimeline_.getSegmentAvailabilityStart()),S){let w=he.getFirstTagWithNameAsNumber(r.tags,"EXT-X-MEDIA-SEQUENCE",0),M=he.getFirstTagWithName(r.tags,"EXT-X-SKIP"),x=M?Number(M.getAttributeValue("SKIPPED-SEGMENTS")):0,{nextMediaSequence:k,nextPart:L}=this.getNextMediaSequenceAndPart_(w,T,S);e.nextMediaSequence=k+x,e.nextPart=L;let V=c.get(w);o.segmentIndex.evict(V)}this.setProgramDateTimeRegionsFromIndex_(o,e.type);let C=o.segmentIndex.earliestReference();C&&(e.minTimestamp=C.startTime,T.length&&(e.maxTimestamp=T[T.length-1].endTime)),he.getFirstTagWithName(r.tags,"EXT-X-ENDLIST")&&(e.hasEndList=!0),this.determineLastTargetDuration_(r),this.processDateRangeTags_(r.tags,o.type,a,e.getUris)}onExpirationUpdated(e,t){}onInitialVariantChosen(e){}banLocation(e){this.contentSteeringManager_&&this.contentSteeringManager_.banLocation(e)}setMediaElement(e){this.mediaElement_=e}syncStreamsWithSequenceNumber_(e,t=!1){let i=this.minSequenceNumber_==-1;for(let r of e){let s=r.stream.segmentIndex;v.assert(s,"Only loaded streams should be synced");let n=this.getMediaSequenceToStartTimeFor_(r),a=s.earliestReference();if(a){Fe&&n.values().next().value!=a.startTime&&p.warning("Sequence number map is not ordered as expected!");for(let[o,c]of n)if(c==a.startTime){i&&(this.minSequenceNumber_=Math.max(this.minSequenceNumber_,o)),r.firstSequenceNumber=o;break}}}if(!(this.minSequenceNumber_<0)){p.debug("Syncing HLS streams against base sequence number:",this.minSequenceNumber_);for(let r of e){if(!this.ignoreManifestProgramDateTimeFor_(r.type)&&!t)continue;let s=r.stream.segmentIndex;if(s){let n=this.minSequenceNumber_-r.firstSequenceNumber;if(n>0){s.dropFirstReferences(n);let a=s.earliestReference();if(a){let o=-a.startTime;r.stream.segmentIndex.offset(o),this.offsetStreamInfo_(r,o)}}}}}}syncStreamsWithProgramDateTime_(e){if(this.lowestSyncTime_==1/0)for(let i of e){let r=i.stream.segmentIndex;v.assert(r,"Only loaded streams should be synced");let s=r.earliestReference();s!=null&&s.syncTime!=null&&(this.lowestSyncTime_=Math.min(this.lowestSyncTime_,s.syncTime))}let t=this.lowestSyncTime_;if(t!=1/0){p.debug("Syncing HLS streams against base time:",t);for(let i of this.uriToStreamInfosMap_.values()){if(this.ignoreManifestProgramDateTimeFor_(i.type))continue;let r=i.stream.segmentIndex;if(r!=null){let s=r.earliestReference();if(!s)continue;if(s.syncTime==null)p.alwaysError("Missing EXT-X-PROGRAM-DATE-TIME for stream",i.getUris(),"Expect AV sync issues!");else{let a=s.syncTime-t-s.startTime;this.offsetStreamInfo_(i,a);for(let o of r)o.syncAgainst(t)}}}}}offsetStreamInfo_(e,t){if(Math.abs(t)<.001)return;e.minTimestamp+=t,e.maxTimestamp+=t,v.assert(e.maxTimestamp>=0,"Negative maxTimestamp after adjustment!");let i=this.getMediaSequenceToStartTimeFor_(e);for(let[r,s]of i)i.set(r,s+t);p.debug("Offset",t,"applied to",e.getUris())}async parseManifest_(e){let t=R.ContentType;v.assert(this.masterPlaylistUri_,"Master playlist URI must be set before calling parseManifest_!");let i=this.manifestTextParser_.parsePlaylist(e),r=he.filterTagsByName(i.tags,"EXT-X-DEFINE"),s=[],n=[],a=[];v.assert(this.presentationTimeline_==null,"Presentation timeline created early!"),this.presentationTimeline_=new wi(null,0),this.presentationTimeline_.setStatic(!0);let o=()=>[this.masterPlaylistUri_],c=null,d=new Map;if(this.manifest_={presentationTimeline:this.presentationTimeline_,variants:s,textStreams:n,imageStreams:a,chapterStreams:[],offlineSessionIds:[],sequenceMode:this.config_.hls.sequenceMode,ignoreManifestTimestampsInSegmentsMode:this.config_.hls.ignoreManifestTimestampsInSegmentsMode,type:me.HLS,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:this.startTime_},i.type==Gi.MEDIA){this.needsClosedCaptionsDetection_=!1;let u=he.filterTagsByName(i.tags,"EXT-X-DEFINE");d=this.parseMediaVariables_(u,this.masterPlaylistUri_),c=t.VIDEO;let m="",f="",g="",_=null,T=null,S=new Map,b=!1,E=null,C=!1,A=!0,w="Media Playlist",M=this.masterPlaylistUri_,x=await this.convertParsedPlaylistIntoStreamInfo_(this.globalId_++,d,i,o,m,c,g,A,w,_,S,E,C,T,b,f,M);if(this.uriToStreamInfosMap_.set(this.masterPlaylistUri_,x),x.stream){let L=ur.createQualityInfo(x.stream);x.stream.segmentIndex.forEachTopLevelReference(V=>{V.initSegmentReference&&(V.initSegmentReference.mediaQuality=L)})}c=x.stream.type;let k=!0;(this.config_.disableAudio&&x.type=="audio"||this.config_.disableVideo&&x.type=="video"&&!x.stream.codecs.includes(","))&&(k=!1),k&&s.push({id:0,language:this.getLanguage_(g),disabledUntilTime:0,primary:!0,audio:x.type=="audio"?x.stream:null,video:x.type=="video"?x.stream:null,bandwidth:x.stream.bandwidth||0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.parseChapters_()}else{this.parseMasterVariables_(r);let u=he.filterTagsByName(i.tags,"EXT-X-MEDIA"),m=he.filterTagsByName(i.tags,"EXT-X-STREAM-INF"),f=he.filterTagsByName(i.tags,"EXT-X-IMAGE-STREAM-INF"),g=he.filterTagsByName(i.tags,"EXT-X-I-FRAME-STREAM-INF"),_=he.filterTagsByName(i.tags,"EXT-X-SESSION-KEY"),T=he.filterTagsByName(i.tags,"EXT-X-SESSION-DATA"),S=he.filterTagsByName(i.tags,"EXT-X-CONTENT-STEERING");this.chapterUris_=this.processSessionData_(T),this.config_.hls.chaptersUri&&!this.chapterUris_.includes(this.config_.hls.chaptersUri)&&this.chapterUris_.push(this.config_.hls.chaptersUri),await this.processContentSteering_(S),this.config_.ignoreSupplementalCodecs||(m.push(...this.createTagsWithSupplementalCodecs_(m,!0)),g.push(...this.createTagsWithSupplementalCodecs_(g,!1))),this.parseCodecs_(m),this.parseClosedCaptions_(u);let b=this.parseIFrames_(g);s=await this.createVariantsForTags_(m,_,u,o,this.globalVariables_,b),n=this.parseTexts_(u),[a]=await Promise.all([this.parseImages_(f,g),this.parseChapters_()])}if(!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);if(this.determineStartTime_(i),i.type==Gi.MEDIA){if(this.isDynamic_()){this.changePresentationTimelineToLive_(i);let m=this.getUpdatePlaylistDelay_();this.updatePlaylistTimer_.tickAfter(m)}let u=Array.from(this.uriToStreamInfosMap_.values());this.finalizeStreams_(u),this.determineDuration_(),v.assert(c,"mediaPlaylistType should be non-null"),await this.processDateRangeTags_(i.tags,c,d,o)}if(this.manifest_.variants=s,this.manifest_.textStreams=n,this.manifest_.imageStreams=a,this.manifest_.chapterStreams=Array.from(this.chapterStreamsMap_.values()),this.manifest_.startTime=this.startTime_,!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing){let u=[];for(let m of this.manifest_.variants)m.audio&&m.audio.codecs===""&&u.push(m.audio.createSegmentIndex()),m.video&&m.video.codecs===""&&u.push(m.video.createSegmentIndex());await Promise.all(u)}this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_)}async getBasicInfoFromSegments_(e){let t=vt.getBasicInfoFromMimeType(this.config_.hls.mediaPlaylistFullMimeType);if(!e.length)return t;let{segment:i,segmentIndex:r}=this.getAvailableSegment_(e),s=i.getUris(),n=ct.getExtension(s[0]);if(n){let g=St.RAW_FORMATS_TO_MIME_TYPES_.get(n);if(g)return vt.getBasicInfoFromMimeType(g)}let a=await Promise.all([this.getInfoFromSegment_(i.initSegmentReference,0),this.getInfoFromSegment_(i,r)]),o=a[1].mimeType,c=a[0].data,d=a[1].data,u=["mp4","mp4a","m4s","m4i","m4a","m4f","cmfa","mp4v","m4v","cmfv","fmp4"],m=["audio/mp4","video/mp4","video/iso.segment"],f=i.initSegmentReference||m.includes(o);if(!f&&pt.probe(D.toUint8(d))){let g=vt.getBasicInfoFromTs(d,this.config_.disableAudio,this.config_.disableVideo,this.config_.disableText);if(g)return g}else if(f||u.includes(n)){let g=vt.getBasicInfoFromMp4(c,d,this.config_.disableText);if(g)return g}return o?vt.getBasicInfoFromMimeType(o):t}async getInfoFromSegment_(e,t){if(!e)return{mimeType:null,data:null};let i=K.RequestType.SEGMENT,r=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),s=e instanceof Se?K.AdvancedRequestType.MEDIA_SEGMENT:K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(r,i,{type:s}).promise,a=n.data;e.aesKey&&(a=await vt.aesDecrypt(a,e.aesKey,t)),e instanceof Se?e.setSegmentData(a,!0):e.setSegmentData(a);let o=n.headers["content-type"];return o&&(o=o.split(";")[0].toLowerCase()),{mimeType:o,data:a}}determineDuration_(){if(v.assert(this.presentationTimeline_,"Presentation timeline not created!"),this.isLive_()){let e=this.getLiveDuration_()||0;isNaN(this.config_.availabilityWindowOverride)||(e=this.config_.availabilityWindowOverride),this.presentationTimeline_.setSegmentAvailabilityDuration(e)}else this.presentationTimeline_.setDuration(this.getMinDuration_());if(!this.presentationTimeline_.isStartTimeLocked())for(let e of this.uriToStreamInfosMap_.values()){if(!e.stream.segmentIndex||e.type!="audio"&&e.type!="video")continue;let t=e.stream.segmentIndex.earliestReference();if(t&&t.syncTime!=null){let i=t.syncTime;this.presentationTimeline_.setInitialProgramDateTime(i)}}this.presentationTimeline_.lockStartTime(),v.assert(!this.presentationTimeline_.usingPresentationStartTime(),"We should not be using the presentation start time in HLS!")}parseMasterVariables_(e){this.parseVariablesFromTags_(e,this.globalVariables_,this.masterPlaylistUri_)}parseMediaVariables_(e,t){let i=new Map;return this.parseVariablesFromTags_(e,i,t,!0),i}parseVariablesFromTags_(e,t,i,r=!1){let s;for(let n of e){let a=n.getAttributeValue("NAME"),o=n.getAttributeValue("VALUE"),c=n.getAttributeValue("QUERYPARAM");if(a&&o&&t.getOrInsert(a,o),c){s||(s=new URL(i).searchParams);let d=s.get(c);d&&!t.has(d)&&t.set(c,d)}if(r){let d=n.getAttributeValue("IMPORT");if(d){let u=this.globalVariables_.get(d);u&&t.set(d,u)}}}}groupTagsByKey_(e){let t={};for(let i of e){let r=i.getTagKey(!this.contentSteeringManager_);t[r]?t[r].push(i):t[r]=[i]}return t}createTagsWithSupplementalCodecs_(e,t){let i=[];for(let r of e){let s=he.getSupplementalCodecs(r);if(!s)continue;let n=r.attributes.map(a=>{let o=a.name,c=a.value;if(o=="CODECS"&&(c=s,t)){let d=a.value.split(",");if(d.length>1){let u=R.guessCodecsSafe(R.ContentType.AUDIO,d);u&&(c+=","+u)}}return new Fr(o,c)});i.push(new _r(r.id,r.name,n,null))}return i}parseCodecs_(e){let t=R.ContentType;for(let i of e){let r=i.getAttributeValue("AUDIO"),s=i.getAttributeValue("VIDEO"),n=i.getAttributeValue("SUBTITLES"),a=this.getCodecsForVariantTag_(i);if(n){let o=R.guessCodecsSafe(t.TEXT,a);v.assert(o!=null,"Text codecs should be valid."),this.groupIdToCodecsMap_.set(n,o),ye.remove(a,o)}if(r){let o=R.guessCodecsSafe(t.AUDIO,a);o||(o=this.config_.hls.defaultAudioCodec),this.groupIdToCodecsMap_.set(r,o)}if(s){let o=R.guessCodecsSafe(t.VIDEO,a);o||(o=this.config_.hls.defaultVideoCodec),this.groupIdToCodecsMap_.set(s,o)}}}processSessionData_(e){let t=[];for(let i of e){let r=i.getAttributeValue("DATA-ID"),s=i.getAttributeValue("URI"),n=i.getAttributeValue("LANGUAGE"),a=i.getAttributeValue("VALUE"),o=new Map().set("id",r);s&&o.set("uri",he.constructSegmentUris([this.masterPlaylistUri_],s,this.globalVariables_)[0]),n&&o.set("language",n),a&&o.set("value",a),r=="com.apple.hls.chapters"&&s&&t.push(o.get("uri"));let c=new U("sessiondata",o);this.playerInterface_&&this.playerInterface_.onEvent(c)}return t}async processContentSteering_(e){if(!this.playerInterface_||!this.config_)return;let t;for(let i of e){let r=i.getAttributeValue("PATHWAY-ID"),s=i.getAttributeValue("SERVER-URI");if(!(!r||!s)){this.contentSteeringManager_=new ss(this.playerInterface_),this.contentSteeringManager_.configure(this.config_),this.contentSteeringManager_.setBaseUris([this.masterPlaylistUri_]),this.contentSteeringManager_.setManifestType(me.HLS),this.contentSteeringManager_.setDefaultPathwayId(r),t=this.contentSteeringManager_.requestInfo(s);break}}await t}parseTexts_(e){let t=he.filterTagsByType(e,"SUBTITLES"),i=this.groupTagsByKey_(t),r=[];if(!this.config_.disableText)for(let n in i)try{r.push(this.createStreamInfoFromMediaTags_(i[n],new Map).stream)}catch(a){if(this.config_.hls.ignoreTextStreamFailures)continue;throw a}let s=R.ContentType.TEXT;for(let n of t){let a=n.getRequiredAttrValue("GROUP-ID"),o=this.groupIdToCodecsMap_.get(a);if(o){let c=this.groupIdToStreamInfosMap_.get(a);if(c)for(let d of c)d.stream.codecs=o,d.stream.mimeType=this.guessMimeTypeBeforeLoading_(s,o)||this.guessMimeTypeFallback_(s),this.setFullTypeForStream_(d.stream)}}return r.filter(n=>n)}setFullTypeForStream_(e){let t=new Set([N.getFullType(e.mimeType,e.codecs)]);e.segmentIndex&&e.segmentIndex.forEachTopLevelReference(i=>{i.mimeType&&t.add(N.getFullType(i.mimeType,e.codecs))}),e.fullMimeTypes=t}async parseImages_(e,t){let i=e.map(async s=>{if(this.config_.disableThumbnails)return null;try{return(await this.createStreamInfoFromImageTag_(s)).stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}).concat(t.map(s=>{if(this.config_.disableThumbnails)return null;try{let a=this.createStreamInfoFromIframeTag_(s),o=R.ContentType;return a.stream.type!==o.IMAGE?null:a.stream}catch(a){if(this.config_.hls.ignoreImageStreamFailures)return null;throw a}}));return(await Promise.all(i)).filter(s=>s)}async parseChapters_(){if(this.config_.disableChapters)return;let e=[];for(let t of this.chapterUris_)e.push(this.processChapters_(t));await Promise.all(e)}async processChapters_(e){let t=K.RequestType.SESSION_DATA,i=K.makeRequest([e],this.config_.retryParameters),r=await this.makeNetworkRequest_(i,t).promise,s=q.fromUTF8(r.data),n=JSON.parse(s),a=new Map;for(let o=0;o<n.length;o++){let c=n[o];if(!c.titles)continue;let d=[];if(c.images){for(let u of c.images)if(u.url){let m=he.constructSegmentUris([r.uri],u.url);for(let f of m){let g={type:u["image-category"],width:u["pixel-width"],height:u["pixel-height"],url:f};d.push(g)}}}for(let u of c.titles){let m={id:"",title:u.title,startTime:c["start-time"],endTime:c["start-time"],images:d};c.duration?m.endTime+=c.duration:o+1<n.length&&(m.endTime=n[o+1]["start-time"]),a.getOrInsertComputed(u.language,()=>[]).push(m)}}a.forEach((o,c)=>{let d=[];for(let f of o){let g=new Se(f.startTime,f.endTime,()=>[],0,null,null,0,0,1/0),_={title:f.title,images:f.images};g.setMetadata(_),d.push(g)}let u="text/plain",m=this.chapterStreamsMap_.getOrInsertComputed(c,()=>se.createStream({id:this.globalId_++,mimeType:u,kind:"",language:c,originalLanguage:c,type:R.ContentType.CHAPTER,external:!0}));m.segmentIndex?m.segmentIndex.mergeAndEvict(d,this.presentationTimeline_.getSegmentAvailabilityStart()):m.segmentIndex=new Ze(d)})}createStreamInfosFromMediaTags_(e,t){e=e.filter(r=>{let s=r.getAttributeValue("URI")||"",n=r.getAttributeValue("TYPE");return n!="SUBTITLES"&&(s!=""||n=="AUDIO"||n=="VIDEO")});let i=this.groupTagsByKey_(e);for(let r in i)this.createStreamInfoFromMediaTags_(i[r],t,!1)}parseIFrames_(e){return e.map(i=>{let r=this.createStreamInfoFromIframeTag_(i),s=R.ContentType;return r.stream.type!==s.VIDEO?null:r.stream}).filter(i=>i)}async createVariantsForTags_(e,t,i,r,s,n){let a=[],o=new Set;if(!this.config_.ignoreDrmInfo&&t.length>0)for(let u of t){let m=u.getRequiredAttrValue("METHOD"),f=u.getAttributeValue("KEYFORMAT")||"identity",g=null;if(m!="NONE"){if(this.isAesMethod_(m)){let _=he.constructSegmentUris(r(),u.getRequiredAttrValue("URI"),s),T=_.sort().join("");this.aesKeyMap_.getOrInsertComputed(T,()=>{let S=K.RequestType.KEY,b=K.makeRequest(_,this.config_.retryParameters);return this.makeNetworkRequest_(b,S).promise});continue}else if(f=="identity")g=await this.identityDrmParser_(u,"",r,null,s);else{let _=this.keyFormatsToDrmParsers_.get(f);g=_?await _(u,"",null):null}if(g){if(g.keyIds)for(let _ of g.keyIds)o.add(_);a.push(g)}else p.warning("Unsupported HLS KEYFORMAT",f)}}let c=this.groupTagsByKey_(e),d=[];for(let u in c){let m=c[u],f=m[0],g=this.getFrameRate_(f),_=Number(f.getRequiredAttrValue("BANDWIDTH"))||Number(f.getAttributeValue("AVERAGE-BANDWIDTH")),T=f.getAttributeValue("RESOLUTION"),[S,b]=T?T.split("x"):[null,null],E=f.getAttributeValue("VIDEO-RANGE"),C=f.getAttributeValue("REQ-VIDEO-LAYOUT");C&&C.includes(",")&&(C=C.split(",").filter(M=>M=="CH-STEREO"||M=="CH-MONO")[0]),C=C||"CH-MONO";let A=this.createStreamInfosForVariantTags_(m,i,T);v.assert(A.audio.length||A.video.length,"We should have created a stream!"),d.push(...this.createVariants_(A.audio,A.video,_,S,b,g,E,C,a,o,n))}return d.filter(u=>u!=null)}createStreamInfosForVariantTags_(e,t,i){let r=R.ContentType,s={audio:[],video:[]},n=new Map,a=new Set,o=new Set;for(let E of e){let C=E.getAttributeValue("AUDIO"),A=E.getAttributeValue("VIDEO");if(!C&&!A)continue;let w=E.getAttributeValue("PATHWAY-ID");C&&!a.has(C)&&(a.add(C),w&&n.set(C,w)),A&&!o.has(A)&&(o.add(A),w&&n.set(A,w)),p.debug("Guessing stream type for",E.toString())}let c=[...a,...o];if(c.length&&t.length){let E=t.filter(C=>c.includes(C.getRequiredAttrValue("GROUP-ID")));this.createStreamInfosFromMediaTags_(E,n)}s.audio.push(...this.getGroupStreamInfos_(a)),s.video.push(...this.getGroupStreamInfos_(o));let d=s.video.find(E=>E.stream.isAudioMuxedInVideo),u,m=!1,f=e.map(E=>E.getRequiredAttrValue("URI")),g=s.audio.find(E=>E&&E.getUris().find(C=>f.includes(C))),_=this.getCodecsForVariantTag_(e[0]),T=R.guessCodecsSafe(r.VIDEO,_),S=R.guessCodecsSafe(r.AUDIO,_),b=he.getSupplementalCodecs(e[0]);if(d?(p.debug("Guessing video (URI-less VIDEO Rendition)."),u=r.VIDEO,S&&T&&!s.audio.length&&(_=[[T,S].join(",")])):S&&!T?(u=r.AUDIO,p.debug("Guessing audio-only."),m=s.audio.length>0&&!s.audio.some(E=>E.stream.isAudioMuxedInVideo)):!s.audio.length&&!s.video.length&&S&&T?(p.debug("Guessing multiplexed audio+video."),u=r.VIDEO,_=[[T,S].join(",")]):s.audio.length&&g?(p.debug("Guessing audio-only."),u=r.AUDIO,m=!0):s.video.length&&!s.audio.length?(p.debug("Guessing audio-only."),u=r.AUDIO):(p.debug("Guessing video-only."),u=r.VIDEO),!m){let E=this.createStreamInfoFromVariantTags_(e,_,u,b),C=E.stream,A=u==r.AUDIO?s.audio:s.video,w=A.find(M=>M.stream.isAudioMuxedInVideo);if(C.type==u&&w){let M=w.stream;C.language=M.language,C.originalLanguage=M.originalLanguage,C.label=M.label,C.channelsCount=M.channelsCount,C.audioSamplingRate=M.audioSamplingRate,C.originalId=M.originalId,C.primary=M.primary,C.roles=M.roles,A.splice(A.indexOf(w),1,E)}else(C.type==r.AUDIO?s.audio:s.video).push(E)}return s.video=s.video.filter(E=>!E.stream.isAudioMuxedInVideo),s}getGroupStreamInfos_(e){if(!e.size)return[];let t=[...e].sort().join(",");return this.groupIdToStreamInfosMap_.get(t)||[]}getCodecsForVariantTag_(e){let t=e.getAttributeValue("CODECS")||"";if(this.codecInfoInManifest_=t.length>0,!this.codecInfoInManifest_&&!this.config_.hls.disableCodecGuessing){let r=[];this.config_.disableVideo||r.push(this.config_.hls.defaultVideoCodec),this.config_.disableAudio||r.push(this.config_.hls.defaultAudioCodec),t=r.join(",")}let i=t.split(/\s*,\s*/);return vt.codecsFiltering(i)}getChannelsCount_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return null;let i=t.split("/")[0];return parseInt(i,10)}getSampleRate_(e){let t=e.getAttributeValue("SAMPLE-RATE");return t?parseInt(t,10):null}getFrameRate_(e){let t=e.getAttributeValue("FRAME-RATE");return t?parseFloat(t):null}isSpatialAudio_(e){let t=e.getAttributeValue("CHANNELS");if(!t)return!1;let i=t.split("/");return i.length!=2?!1:i[1]==="JOC"||i[1].includes("ATMOS")||i[1].includes("IMSA")}getClosedCaptions_(e,t){let i=R.ContentType,r=e.getAttributeValue("CLOSED-CAPTIONS");if(t==i.VIDEO){if(this.config_.disableText)return this.needsClosedCaptionsDetection_=!1,null;if(r){if(r!="NONE")return this.groupIdToClosedCaptionsMap_.get(r);this.needsClosedCaptionsDetection_=!1}else if(!r&&this.groupIdToClosedCaptionsMap_.size)for(let s of this.groupIdToClosedCaptionsMap_.keys())return this.groupIdToClosedCaptionsMap_.get(s)}return null}getLanguage_(e){return ve.normalize(e||"und")}getType_(e){let t=e.getRequiredAttrValue("TYPE").toLowerCase();return t=="subtitles"&&(t=R.ContentType.TEXT),t}createVariants_(e,t,i,r,s,n,a,o,c,d,u){let m=R.ContentType;for(let T of t)this.addVideoAttributes_(T.stream,r,s,n,a,o,null);let f=this.config_.disableVideo;(!t.length||f)&&(t=[null]),f&&(e=e.filter(T=>!T.stream.isAudioMuxedInVideo));let g=this.config_.disableAudio;(!e.length||g)&&(e=[null]);let _=[];for(let T of e)for(let S of t){let b=T?T.stream:null;b&&(b.drmInfos=c,b.keyIds=d);let E=S?S.stream:null;E&&(E.drmInfos=c,E.keyIds=d,this.config_.disableIFrames||se.setBetterIFrameStream(E,u)),E&&!b&&(E.bandwidth=i),!E&&b&&(b.bandwidth=i);let C=T?T.stream.drmInfos:null,A=S?S.stream.drmInfos:null,w=S?S.getUris().sort().join(","):"",M=T?T.getUris().sort().join(","):"",x=[];b&&b.codecs&&x.push(b.codecs),E&&E.codecs&&x.push(E.codecs);let k=[w,M,x.sort()].join("-");if(b&&E&&!de.areDrmCompatible(C,A)){p.warning("Incompatible DRM info in HLS variant. Skipping.");continue}if(this.variantUriSet_.has(k)){p.debug("Skipping variant which only differs in text streams.");continue}v.assert(!b||b.type==m.AUDIO,"Audio parameter mismatch!"),v.assert(!E||E.type==m.VIDEO,"Video parameter mismatch!");let L={id:this.globalId_++,language:b?b.language:"und",disabledUntilTime:0,primary:!!b&&b.primary||!!E&&E.primary,audio:b,video:E,bandwidth:i,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]};_.push(L),this.variantUriSet_.add(k)}return _}parseClosedCaptions_(e){let t=he.filterTagsByType(e,"CLOSED-CAPTIONS");this.needsClosedCaptionsDetection_=t.length==0;for(let i of t){v.assert(i.name=="EXT-X-MEDIA","Should only be called on media tags!");let r=i.getAttributeValue("LANGUAGE"),s=this.getLanguage_(r);if(!r){let o=i.getAttributeValue("NAME");o&&(s=o)}let n=i.getRequiredAttrValue("GROUP-ID"),a=i.getRequiredAttrValue("INSTREAM-ID").replace("SERVICE","svc");this.groupIdToClosedCaptionsMap_.get(n)||this.groupIdToClosedCaptionsMap_.set(n,new Map),this.groupIdToClosedCaptionsMap_.get(n).set(a,s)}}createStreamInfoFromMediaTags_(e,t,i=!0){let r=[],s=[],n=new Map;for(let L of e){v.assert(L.name=="EXT-X-MEDIA","Should only be called on media tags!");let V=++this.globalId_,ee=()=>St.FAKE_MUXED_URL_+V,oe=i?L.getRequiredAttrValue("URI"):L.getAttributeValue("URI")||ee(),le=L.getRequiredAttrValue("GROUP-ID");r.push(oe),s.push(le),n.set(le,oe);let H=L.getAttributeValue("PATHWAY-ID");H&&t.set(le,H)}let a=s.sort().join(","),o=e[0],c="",d=this.getType_(o);if(d==R.ContentType.TEXT&&(c=o.getAttributeValue("CODECS")||""),!c){for(let L of s)if(this.groupIdToCodecsMap_.has(L)){c=this.groupIdToCodecsMap_.get(L);break}}let u=he.getSupplementalCodecs(o),m=r.sort().join(","),f=m;if(d=="audio"&&a&&(f+=a),this.uriToStreamInfosMap_.has(f))return this.uriToStreamInfosMap_.get(f);let g=this.globalId_++;if(this.contentSteeringManager_)for(let[L,V]of n){let ee=t.get(L);ee&&this.contentSteeringManager_.addLocation(g,ee,V)}let _=o.getAttributeValue("LANGUAGE"),T=o.getAttributeValue("NAME"),b=o.getAttributeValue("DEFAULT")=="YES",E=d=="audio"?this.getChannelsCount_(o):null,C=d=="audio"?this.isSpatialAudio_(o):!1,A=o.getAttributeValue("CHARACTERISTICS"),M=o.getAttributeValue("FORCED")=="YES",x=d=="audio"?this.getSampleRate_(o):null,k=this.createStreamInfo_(g,r,c,d,_,b,T,E,null,A,M,x,C,u,m);return this.groupIdToStreamInfosMap_.has(a)?this.groupIdToStreamInfosMap_.get(a).push(k):this.groupIdToStreamInfosMap_.set(a,[k]),this.uriToStreamInfosMap_.set(f,k),k}async createStreamInfoFromImageTag_(e){v.assert(e.name=="EXT-X-IMAGE-STREAM-INF","Should only be called on image tags!");let t=R.ContentType.IMAGE,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS","jpeg")||"",s=he.getSupplementalCodecs(e);if(this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c),u=e.getAttributeValue("RESOLUTION");if(u){await d.stream.createSegmentIndex();let g=d.stream.segmentIndex.earliestReference().getTilesLayout();g&&(d.stream.width=Number(u.split("x")[0])*Number(g.split("x")[0]),d.stream.height=Number(u.split("x")[1])*Number(g.split("x")[1])),d.stream.closeSegmentIndex()}let m=e.getAttributeValue("BANDWIDTH");return m&&(d.stream.bandwidth=Number(m)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromIframeTag_(e){v.assert(e.name=="EXT-X-I-FRAME-STREAM-INF","Should only be called on iframe tags!");let t=R.ContentType.VIDEO,i=e.getRequiredAttrValue("URI"),r=e.getAttributeValue("CODECS")||"",s=he.getSupplementalCodecs(e);if(r=="mjpg"&&(t=R.ContentType.IMAGE),this.uriToStreamInfosMap_.has(i))return this.uriToStreamInfosMap_.get(i);let n=e.getAttributeValue("LANGUAGE"),a=e.getAttributeValue("NAME"),o=e.getAttributeValue("CHARACTERISTICS"),c=i,d=this.createStreamInfo_(this.globalId_++,[i],r,t,n,!1,a,null,null,o,!1,null,!1,s,c);d.stream.isIframe=!0;let u=e.getAttributeValue("RESOLUTION"),[m,f]=u?u.split("x"):[null,null];d.stream.width=Number(m)||void 0,d.stream.height=Number(f)||void 0;let g=e.getAttributeValue("BANDWIDTH");return g&&(d.stream.bandwidth=Number(g)),this.uriToStreamInfosMap_.set(i,d),d}createStreamInfoFromVariantTags_(e,t,i,r){let s=this.globalId_++,n=[];for(let m of e){v.assert(m.name=="EXT-X-STREAM-INF","Should only be called on variant tags!");let f=m.getRequiredAttrValue("URI"),g=m.getAttributeValue("PATHWAY-ID");this.contentSteeringManager_&&g&&this.contentSteeringManager_.addLocation(s,g,f),n.push(f)}let a=n.sort().join(",")+t.sort().join(",");if(this.uriToStreamInfosMap_.has(a))return this.uriToStreamInfosMap_.get(a);let o=n.join(","),c=this.getClosedCaptions_(e[0],i),d=R.guessCodecs(i,t),u=this.createStreamInfo_(s,n,d,i,null,!1,null,null,c,null,!1,null,!1,r,o);return this.uriToStreamInfosMap_.set(a,u),u}createStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_){let T=this.makeStreamObject_(e,i,r,s,n,a,o,c,d,u,m,f,g,_);t.some(x=>x.startsWith(St.FAKE_MUXED_URL_))&&(T.isAudioMuxedInVideo=!0,r==R.ContentType.AUDIO&&(T.mimeType="video/mp2t",this.setFullTypeForStream_(T)));let b={stream:T,type:r,redirectUris:[],getUris:()=>{},minTimestamp:0,maxTimestamp:0,mediaSequenceToStartTime:new Map,canSkipSegments:!1,canSkipDateRanges:!1,canBlockReload:!1,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:-1,nextPart:-1},E=()=>this.contentSteeringManager_&&t.length>1?this.contentSteeringManager_.getLocations(e):b.redirectUris.concat(he.constructUris([this.masterPlaylistUri_],t,this.globalVariables_));b.getUris=E;let C=async x=>{let k=R.ContentType;try{let L=await x.promise;if(x.aborted)return;let V=L.uri;V!=L.originalUri&&(b.getUris().includes(V)||b.redirectUris.push(V));let ee=this.manifestTextParser_.parsePlaylist(L.data);if(ee.type!=Gi.MEDIA)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_PLAYLIST_HIERARCHY);let oe=he.filterTagsByName(ee.tags,"EXT-X-DEFINE"),le=this.parseMediaVariables_(oe,V),H=void 0,J=!1;(!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing||this.needsClosedCaptionsDetection_&&r==k.VIDEO&&!this.config_.hls.disableClosedCaptionsDetection)&&ee.segments.length>0&&(this.needsClosedCaptionsDetection_=!1,J=!0);let Z=!this.codecInfoInManifest_&&this.config_.hls.disableCodecGuessing,ce=this.isDynamic_(),W=await this.convertParsedPlaylistIntoStreamInfo_(e,le,ee,E,i,r,s,n,a,o,c,d,u,m,f,g,_,H,J,Z);if(x.aborted)return;let z=W.stream;this.determineStartTime_(ee),this.isDynamic_()&&!ce&&this.changePresentationTimelineToLive_(ee),b.minTimestamp=W.minTimestamp,b.maxTimestamp=W.maxTimestamp,b.canSkipSegments=W.canSkipSegments,b.canSkipDateRanges=W.canSkipDateRanges,b.canBlockReload=W.canBlockReload,b.hasEndList=W.hasEndList,b.mediaSequenceToStartTime=W.mediaSequenceToStartTime,b.nextMediaSequence=W.nextMediaSequence,b.nextPart=W.nextPart,T.segmentIndex=z.segmentIndex,T.encrypted=z.encrypted,T.drmInfos=z.drmInfos,T.keyIds=z.keyIds,T.mimeType=z.mimeType,T.bandwidth=T.bandwidth||z.bandwidth,T.codecs=T.codecs||z.codecs,T.closedCaptions=T.closedCaptions||z.closedCaptions,T.width=T.width||z.width,T.height=T.height||z.height,T.hdr=T.hdr||z.hdr,T.colorGamut=T.colorGamut||z.colorGamut,T.frameRate=T.frameRate||z.frameRate,T.language=="und"&&z.language!="und"&&(T.language=z.language),T.language=T.language||z.language,T.channelsCount=T.channelsCount||z.channelsCount,T.audioSamplingRate=T.audioSamplingRate||z.audioSamplingRate,this.setFullTypeForStream_(T),b.type==k.VIDEO&&W.type==k.AUDIO&&(!this.codecInfoInManifest_||N.RAW_FORMATS.includes(T.mimeType))&&this.reclassifyStreamInfo_(b,z),T.drmInfos.length&&this.playerInterface_.newDrmInfo(T);let ge=!1;if((!c&&T.closedCaptions||c&&T.closedCaptions&&c.size!=T.closedCaptions.size)&&(ge=!0),this.manifest_&&ge&&this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),r==k.TEXT){let X=z.segmentIndex.earliestReference();X&&X.initSegmentReference&&(T.mimeType="application/mp4",this.setFullTypeForStream_(T))}let Y=ur.createQualityInfo(T);if(T.segmentIndex.forEachTopLevelReference(X=>{X.initSegmentReference&&(X.initSegmentReference.mediaQuality=Y)}),this.hasEnoughInfoToFinalizeStreams_())if(this.streamsFinalized_)this.finalizeStreams_([b]);else{this.streamsFinalized_=!0;let O=Array.from(this.uriToStreamInfosMap_.values()).filter(Ie=>Ie.stream.segmentIndex);this.finalizeStreams_(O),this.determineDuration_();let $=this.getUpdatePlaylistDelay_();$>0&&this.updatePlaylistTimer_.tickAfter($)}this.manifest_&&(this.manifest_.startTime=this.startTime_),await this.processDateRangeTags_(ee.tags,T.type,le,E)}catch(L){if(T.closeSegmentIndex(),L.code===h.Code.OPERATION_ABORTED)return;if(!this.playerInterface_.disableStream(T))throw L}},A=null,w,M=()=>{if(A)return A;if(T.isAudioMuxedInVideo){let x=new Ze([]);return T.segmentIndex=x,Promise.resolve()}return w=this.requestManifest_(b.getUris(),!0),A=new Promise(x=>{x(C(w))}),A};return T.createSegmentIndex=M,T.closeSegmentIndex=()=>{A&&!T.segmentIndex&&w.abort(),T.segmentIndex&&(T.segmentIndex.release(),T.segmentIndex=null),A=null},b}reclassifyStreamInfo_(e,t){let i=R.ContentType,r=e.stream,s=t.type,n=e.type;if(p.debug("Reclassifying HLS stream",r.id,"from",r.type,"to",s),this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(s,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),e.type=s,r.type=s,r.codecs=R.guessCodecsSafe(s,t.codecs.split(/\s*,\s*/))||"",this.setFullTypeForStream_(r),!!this.manifest_){for(let a of this.manifest_.variants)s==i.AUDIO&&a.video==r&&(a.video=null,a.audio||(a.audio=r,a.language=r.language));this.manifest_.variants=this.manifest_.variants.filter(a=>a.audio||a.video)}}getMinDuration_(){let e=1/0;for(let t of this.uriToStreamInfosMap_.values())t.stream.segmentIndex&&t.stream.type!="text"&&!t.stream.isAudioMuxedInVideo&&(e=Math.min(e,t.maxTimestamp));return e}getLiveDuration_(){let e=1/0,t=1/0;for(let i of this.uriToStreamInfosMap_.values())i.stream.segmentIndex&&i.stream.type!="text"&&!i.stream.isAudioMuxedInVideo&&(e=Math.min(e,i.maxTimestamp),t=Math.min(t,i.minTimestamp));return e-t}notifySegmentsForStreams_(e){let t=[];for(let i of e)i.segmentIndex&&i.segmentIndex.forEachTopLevelReference(r=>{t.push(r)});this.presentationTimeline_.notifySegments(t)}finalizeStreams_(e){if(!this.isDynamic_()){let o=this.getMinDuration_();for(let c of e)c.stream.segmentIndex.fit(0,o)}this.notifySegmentsForStreams_(e.map(o=>o.stream));let t=Array.from(this.uriToStreamInfosMap_.values()).filter(o=>o.stream.segmentIndex),i=R.ContentType,r=t.some(o=>o.stream.type==i.AUDIO),s=t.some(o=>o.stream.type==i.VIDEO),n=this.isLive_()&&!this.usesProgramDateTime_,a=!this.isDynamic_()&&this.usesProgramDateTime_&&!(r&&s);this.config_.hls.ignoreManifestProgramDateTime||n||a?this.syncStreamsWithSequenceNumber_(e,n):(this.syncStreamsWithProgramDateTime_(e),this.config_.hls.ignoreManifestProgramDateTimeForTypes.length>0&&this.syncStreamsWithSequenceNumber_(e))}ignoreManifestProgramDateTimeFor_(e){return this.config_.hls.ignoreManifestProgramDateTime?!0:this.config_.hls.ignoreManifestProgramDateTimeForTypes.includes(e)}hasEnoughInfoToFinalizeStreams_(){if(!this.manifest_||!this.manifest_.variants.length)return!1;let e=[],t=[];for(let i of this.manifest_.variants)i.video&&e.push(i.video),i.audio&&t.push(i.audio);return!(e.length>0&&!e.some(i=>i.segmentIndex)||t.length>0&&!t.some(i=>i.segmentIndex))}async convertParsedPlaylistIntoStreamInfo_(e,t,i,r,s,n,a,o,c,d,u,m,f,g,_,T,S,b=void 0,E=!0,C=!0){let A=n,w=i.segments||[],M=w.every(mt=>!!he.getFirstTagWithName(mt.tags,"EXT-X-GAP"));if(!w.length||M)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_EMPTY_MEDIA_PLAYLIST);this.determinePresentationType_(i),this.isDynamic_()&&this.determineLastTargetDuration_(i);let x=this.isLive_()?this.mediaSequenceToStartTimeByType_.get(n):new Map,{segments:k,bandwidth:L}=this.createSegments_(i,x,t,r,n,!0,null);!b&&n==R.ContentType.TEXT&&(b=await this.guessMimeType_(n,s,k),!s&&b=="application/mp4"&&k[0]&&!k[0].initSegmentReference&&(b="text/vtt"),!s&&b=="application/mp4"&&(E=!0,C=!0));let V=null,ee=null,oe=null,le=null,H=null;if(k.length>0&&E){let mt=await this.getBasicInfoFromSegments_(k);n!=mt.type&&this.isLive_()&&(this.mediaSequenceToStartTimeByType_.set(mt.type,this.mediaSequenceToStartTimeByType_.get(n)),this.mediaSequenceToStartTimeByType_.set(n,new Map)),n=mt.type,mt.type!=R.ContentType.VIDEO&&(a=mt.language),d=mt.channelCount,g=mt.sampleRate,this.config_.disableText||(u=mt.closedCaptions),ee=mt.height,V=mt.width,oe=mt.videoRange,le=mt.colorGamut,H=mt.frameRate,C&&(b=mt.mimeType,s=mt.codecs)}b||(b=await this.guessMimeType_(n,s,k)),A==R.ContentType.VIDEO&&N.RAW_FORMATS.includes(b)&&(p.debug("Raw format",b,"is audio-only, not video."),n=R.ContentType.AUDIO);let{drmInfos:J,keyIds:Z,encrypted:ce,aesEncrypted:W}=await this.parseDrmInfo_(i,b,r,t);if(ce&&!J.length&&!W)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_KEYFORMATS_NOT_SUPPORTED);let z=this.makeStreamObject_(e,s,n,a,o,c,d,u,m,f,g,_,T,S);z.encrypted=ce&&!W,z.drmInfos=J,z.keyIds=Z,z.mimeType=b,L&&(z.bandwidth=L),he.getFirstTagWithName(i.tags,"EXT-X-I-FRAMES-ONLY")&&(z.isIframe=!0),this.setFullTypeForStream_(z),n==R.ContentType.VIDEO&&(V||ee||oe||le)&&this.addVideoAttributes_(z,V,ee,H,oe,null,le),this.isDynamic_()&&this.determineLastTargetDuration_(i);let ge=k[0].startTime,X=k[k.length-1].endTime,O=new Ze(k);z.segmentIndex=O,this.setProgramDateTimeRegionsFromIndex_(z,n);let $=he.getFirstTagWithName(i.tags,"EXT-X-SERVER-CONTROL"),Ie=$?$.getAttribute("CAN-SKIP-UNTIL")!=null:!1,tt=!1;Ie&&(tt=$?$.getAttribute("CAN-SKIP-DATERANGES")!=null:!1);let _t=$?$.getAttribute("CAN-BLOCK-RELOAD")!=null:!1,bt=he.getFirstTagWithNameAsNumber(i.tags,"EXT-X-MEDIA-SEQUENCE",0),{nextMediaSequence:yt,nextPart:xt}=this.getNextMediaSequenceAndPart_(bt,k);return{stream:z,type:n,redirectUris:[],getUris:r,minTimestamp:ge,maxTimestamp:X,canSkipSegments:Ie,canSkipDateRanges:tt,canBlockReload:_t,hasEndList:!1,firstSequenceNumber:-1,nextMediaSequence:yt,nextPart:xt,mediaSequenceToStartTime:x}}getNextMediaSequenceAndPart_(e,t,i=t.length){let s=e+i-1,n=-1;if(!t.length)return s++,{nextMediaSequence:s,nextPart:n};let a=t[t.length-1],o=a.partialReferences;return a.partialReferences.length?(n=o.length-1,o[o.length-1].isPreload()||(s++,n=0),{nextMediaSequence:s,nextPart:n}):(s++,a.hasByterangeOptimization()&&(n=0),{nextMediaSequence:s,nextPart:n})}getReferenceForMediaSequence_(e,t,i){if(!e||!t.has(i))return null;let r=t.get(i),s=e.find(r);if(s==null)return null;let n=e.get(s);return n&&n.startTime==r?n:null}makeStreamObject_(e,t,i,r,s,n,a,o,c,d,u,m,f,g){let _=this.guessMimeTypeBeforeLoading_(i,t)||this.guessMimeTypeFallback_(i),T=[];if(c)for(let C of c.split(","))T.push(C);let S,b=null;i==R.ContentType.TEXT?T.includes("public.accessibility.transcribes-spoken-dialog")&&T.includes("public.accessibility.describes-music-and-sound")?S=R.TextStreamKind.CLOSED_CAPTION:S=R.TextStreamKind.SUBTITLE:T.includes("public.accessibility.describes-video")&&(b=me.AccessibilityPurpose.VISUALLY_IMPAIRED),!T.length&&S===R.TextStreamKind.SUBTITLE&&T.push(R.TextStreamKind.SUBTITLE);let E={id:this.globalId_++,originalId:g,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:_,codecs:t,supplementalCodecs:f,kind:i==R.ContentType.TEXT?R.TextStreamKind.SUBTITLE:void 0,encrypted:!1,drmInfos:[],keyIds:new Set,language:this.getLanguage_(r),originalLanguage:r,label:n,type:i,primary:s,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:void 0,pixelAspectRatio:void 0,width:void 0,height:void 0,bandwidth:void 0,roles:T,forced:d,channelsCount:a,audioSamplingRate:u,spatialAudio:m,closedCaptions:o,hdr:void 0,colorGamut:void 0,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:b,external:!1,fastSwitching:!1,fullMimeTypes:new Set,isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1};return this.setFullTypeForStream_(E),E}async parseDrmInfo_(e,t,i,r){let s=new Map;if(!this.config_.ignoreDrmInfo&&e.segments)for(let d of e.segments){let u=he.filterTagsByName(d.tags,"EXT-X-KEY"),m=null;if(u.length){m=this.getInitSegmentReference_(e,d.tags,i,r);for(let f of u)s.set(f,m)}}let n=!1,a=!1,o=[],c=new Set;for(let[d,u]of s){let m=d,f=u,g=m.getRequiredAttrValue("METHOD");if(g!="NONE"){n=!0;let _=m.getAttributeValue("KEYFORMAT")||"identity",T=null;if(this.isAesMethod_(g)){a=!0;continue}else if(_=="identity")T=await this.identityDrmParser_(m,t,i,f,r);else{let S=this.keyFormatsToDrmParsers_.get(_);T=S?await S(m,t,f):null}if(T){if(T.keyIds)for(let S of T.keyIds)c.add(S);o.push(T)}else p.warning("Unsupported HLS KEYFORMAT",_)}}return{drmInfos:o,keyIds:c,encrypted:n,aesEncrypted:a}}parseAESDrmTag_(e,t,i,r){if(!window.crypto||!window.crypto.subtle)throw p.alwaysWarn("Web Crypto API is not available to decrypt AES. (Web Crypto only exists in secure origins like https)"),new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.NO_WEB_CRYPTO_API);let s=e.getRequiredAttrValue("METHOD"),n=0,a,o=e.getAttributeValue("IV","");if(s==="AES-256-GCM"){if(o)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_INVALID_KEY_IV_FOR_GCM)}else if(!o)n=he.getFirstTagWithNameAsNumber(t.tags,"EXT-X-MEDIA-SEQUENCE",0);else if(a=ne.fromHex(o.substr(2)),a.byteLength!=16)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_IV_LENGTH);let c=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),r),d=c.sort().join(""),u=`${e.toString()}-${n}-${d}`;return this.aesKeyInfoMap_.getOrInsertComputed(u,()=>{let m={bitsKey:128,blockCipherMode:"CBC",iv:a,firstMediaSequenceNumber:n};switch(s){case"AES-256":m.bitsKey=256;break;case"AES-256-CTR":m.bitsKey=256,m.blockCipherMode="CTR";break;case"AES-256-GCM":m.bitsKey=256,m.blockCipherMode="GCM";break}return m.fetchKey=async()=>{let f=await this.aesKeyMap_.getOrInsertComputed(d,()=>{let _=K.RequestType.KEY,T=K.makeRequest(c,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});if(!f.data||f.data.byteLength!=m.bitsKey/8)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.AES_128_INVALID_KEY_LENGTH);let g={name:m.blockCipherMode==="CBC"?"AES-CBC":m.blockCipherMode==="GCM"?"AES-GCM":"AES-CTR",length:m.bitsKey};m.cryptoKey=await window.crypto.subtle.importKey("raw",f.data,g,!0,["decrypt"]),m.fetchKey=void 0},m})}determineStartTime_(e){if(this.startTime_!=null)return;let t=he.getFirstTagWithName(e.tags,"EXT-X-START");t&&(this.startTime_=Number(t.getRequiredAttrValue("TIME-OFFSET")))}determinePresentationType_(e){let t=St.PresentationType_,i=he.getFirstTagWithName(e.tags,"EXT-X-PLAYLIST-TYPE"),r=he.getFirstTagWithName(e.tags,"EXT-X-ENDLIST"),s=i&&i.value=="VOD"||r,n=i&&i.value=="EVENT"&&!s;s?this.setPresentationType_(t.VOD):!s&&!n?this.setPresentationType_(t.LIVE):this.setPresentationType_(t.EVENT)}determineLastTargetDuration_(e){let t=1/0,i=e.segments;if(i.length){let o=i.length-1;for(;o>=0;){let c=i[o],d=he.getFirstTagWithName(c.tags,"EXTINF");if(d){t=he.getExtinfDuration(d);break}o--}}let r=this.getRequiredTag_(e.tags,"EXT-X-TARGETDURATION"),s=Number(r.value),n=he.getFirstTagWithName(e.tags,"EXT-X-PART-INF");n&&(this.partialTargetDuration_=Number(n.getRequiredAttrValue("PART-TARGET")));let a=he.getFirstTagWithName(e.tags,"EXT-X-SERVER-CONTROL");if(this.lowLatencyMode_&&this.partialTargetDuration_)this.lowLatencyByterangeOptimization_?this.partialTargetDuration_*5<=t?this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_):this.lastTargetDuration_=Math.min(this.partialTargetDuration_,this.lastTargetDuration_),this.lowLatencyPresentationDelay_=a?Number(a.getRequiredAttrValue("PART-HOLD-BACK")):0;else{this.lastTargetDuration_=Math.min(t,this.lastTargetDuration_);let o=a?a.getAttribute("HOLD-BACK"):null;this.presentationDelay_=o?Number(o.value):0}this.maxTargetDuration_=Math.max(s,this.maxTargetDuration_)}changePresentationTimelineToLive_(e){let t=0;if(this.config_.defaultPresentationDelay)t=this.config_.defaultPresentationDelay;else if(this.lowLatencyPresentationDelay_)t=this.lowLatencyPresentationDelay_;else if(this.presentationDelay_)t=this.presentationDelay_;else{let i=e.segments.length,r=Math.min(i,this.config_.hls.liveSegmentsDelay);for(let s=i-r;s<i;s++){let n=he.getFirstTagWithName(e.segments[s].tags,"EXTINF");n?t+=he.getExtinfDuration(n):t+=this.maxTargetDuration_}}this.startTime_&&this.startTime_<0&&(t=Math.min(-this.startTime_,t),this.startTime_+=t),this.presentationTimeline_.setPresentationStartTime(0),this.presentationTimeline_.setDelay(t),this.presentationTimeline_.setStatic(!1)}getInitSegmentReference_(e,t,i,r){let s=he.getFirstTagWithName(t,"EXT-X-MAP");if(!s)return null;let n=s.getRequiredAttrValue("URI"),a=he.constructSegmentUris(i(),n,r),o=[a.toString(),s.getAttributeValue("BYTERANGE","")].join("-");return this.mapTagToInitSegmentRefMap_.getOrInsertComputed(o,()=>{v.assert(s,"mapTag should be non-null");let c,d,u=!1;for(let m of t)if(m.name=="EXT-X-KEY"){let f=m.getRequiredAttrValue("METHOD");this.isAesMethod_(f)&&m.id<s.id?(u=!1,c=this.parseAESDrmTag_(m,e,i,r)):u=f!="NONE"}else m.name=="EXT-X-BYTERANGE"&&m.id<s.id&&(d=m);return this.createInitSegmentReference_(a,s,d,c,u)})}createInitSegmentReference_(e,t,i,r,s){let n=0,a=null,o=t.getAttributeValue("BYTERANGE");if(!o&&i&&(o=i.value),o){let d=o.split("@"),u=Number(d[0]);if(n=Number(d[1]),a=n+u-1,r){let m=a+1-n;m%16&&(a+=16-m%16)}}return new Tt(()=>e,n,a,null,null,null,r,s)}createSegmentReference_(e,t,i,r,s,n,a,o,c,d){let u=i.tags,m=he.getFirstTagWithName(u,"EXTINF"),f=0,g=0,_=null;i.partialSegments.length&&(this.manifest_.isLowLatency=!0);let T=null;if(!this.config_.hls.ignoreManifestProgramDateTime){let le=he.getFirstTagWithName(u,"EXT-X-PROGRAM-DATE-TIME");le&&le.value&&(T=I.parseDate(le.value),v.assert(T!=null,"EXT-X-PROGRAM-DATE-TIME format not valid"),this.usesProgramDateTime_=!0)}let S=Se.Status.AVAILABLE;if(he.getFirstTagWithName(u,"EXT-X-GAP")&&(this.manifest_.gapCount++,S=Se.Status.MISSING),!m){if(i.partialSegments.length==0)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,"EXTINF");if(!this.lowLatencyMode_)return null}let b=[],E=!1,C=null,A=!1,w=!1;if(this.lowLatencyMode_&&i.partialSegments.length){let le=e&&window.ReadableStream&&this.config_.hls.allowLowLatencyByteRangeOptimization,H=T;for(let J=0;J<i.partialSegments.length;J++){let Z=i.partialSegments[J],ce=J==0?t:b[b.length-1],W=J==0?r:ce.endTime,z=Number(Z.getAttributeValue("DURATION"))||this.partialTargetDuration_;if(!z)continue;let ge=W+z,Y=0,X=null;if(Z.name=="EXT-X-PRELOAD-HINT"){let yt=Z.getAttributeValue("BYTERANGE-START");Y=yt?Number(yt):0;let xt=Z.getAttributeValue("BYTERANGE-LENGTH");xt?X=Y+Number(xt)-1:Y&&(X=Number.MAX_SAFE_INTEGER)}else{let yt=Z.getAttributeValue("BYTERANGE");[Y,X]=this.parseByteRange_(ce,yt)}let O=Z.getAttributeValue("URI");if(!O)continue;let $=Se.Status.AVAILABLE;Z.getAttributeValue("GAP")=="YES"&&(this.manifest_.gapCount++,$=Se.Status.MISSING,A=!0);let Ie=null,tt=()=>(Ie==null&&(v.assert(O,"Partial uri should be defined!"),Ie=he.constructSegmentUris(o(),O,s)),Ie);le&&Y>=0&&X!=null&&(C=tt,E=!0);let _t=new Se(W,ge,tt,Y,X,e,0,0,1/0,[],"",null,H,$,d);Z.name=="EXT-X-PRELOAD-HINT"&&(_t.markAsPreload(),w=!0),Z.getAttributeValue("INDEPENDENT")!="YES"&&J>0&&_t.markAsNonIndependent();let bt=c;if(!bt){if(b.length&&b[0].mimeType)bt=b[0].mimeType;else if(O){let yt=ct.getExtension(O);bt=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(a).get(yt)||null}}bt&&(_t.mimeType=bt,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(bt)&&(_t.initSegmentReference=null)),b.push(_t),H&&(H+=z)}}if(m){let le=he.getExtinfDuration(m);if(le==0)return null;f=r+le}else if(b.length)f=b[b.length-1].endTime;else return null;E&&(A||b[0].startByte!=0?(E=!1,C=null):b=[]);let M=he.getFirstTagWithName(u,"EXT-X-BYTERANGE");M?[g,_]=this.parseByteRange_(t,M.value):b.length&&(g=b[0].startByte,_=b[b.length-1].endByte);let x="",k=null;if(a==R.ContentType.IMAGE){x="1x1";let le=he.getFirstTagWithName(u,"EXT-X-TILES");if(le){x=le.getRequiredAttrValue("LAYOUT");let H=le.getAttributeValue("DURATION");H&&(k=Number(H))}}let L=null,V=()=>C?C():(L==null&&(L=he.constructSegmentUris(o(),i.verbatimSegmentUri,s)),L||[]),ee=b.length>0&&!!i.verbatimSegmentUri,oe=new Se(r,f,V,g,_,e,0,0,1/0,b,x,k,T,S,d,ee);return c&&(oe.mimeType=c,St.MIME_TYPES_WITHOUT_INIT_SEGMENT_.has(c)&&(oe.initSegmentReference=null)),E&&(this.lowLatencyByterangeOptimization_=!0,oe.markAsByterangeOptimization(),w&&oe.markAsPreload()),oe}parseByteRange_(e,t){let i=0,r=null;if(t){let s=t.split("@"),n=Number(s[0]);s[1]?i=Number(s[1]):(v.assert(e,"Cannot refer back to previous HLS segment!"),i=e.endByte+1),r=i+n-1}return[i,r]}async processDateRangeTags_(e,t,i,r){let s=R.ContentType;if(t!=s.VIDEO&&t!=s.AUDIO)return;let n=this.presentationTimeline_.getInitialProgramDateTime();if(n==null||this.ignoreManifestProgramDateTimeFor_(t))return;let a=he.filterTagsByName(e,"EXT-X-DATERANGE");a=a.filter(c=>c.getAttribute("START-DATE")!=null).sort((c,d)=>{let u=c.getRequiredAttrValue("START-DATE"),m=d.getRequiredAttrValue("START-DATE");return u<m?-1:u>m?1:0});let o=[];for(let c=0;c<a.length;c++){let d=a[c];try{let u=d.getRequiredAttrValue("START-DATE"),m=I.parseDate(u);if(isNaN(m))continue;v.assert(m!=null,"Start date should not be null!");let f=Math.max(0,m-n),g=null,_=d.getAttributeValue("END-DATE");if(_){let A=I.parseDate(_);if(!isNaN(A)&&(v.assert(A!=null,"End date should not be null!"),g=A-n,g<0))continue}if(g==null){let A=d.getAttributeValue("DURATION")||d.getAttributeValue("PLANNED-DURATION");if(A){let w=parseFloat(A);if(isNaN(w)||(g=f+w),m-n+w<0)continue}}let T=d.getAttributeValue("CLASS")||"com.apple.quicktime.HLS",S=d.getAttributeValue("END-ON-NEXT")=="YES";if(g==null&&S){for(let A=c+1;A<a.length;A++){let w=a[A].getAttributeValue("CLASS")||"com.apple.quicktime.HLS";if(T!=w)continue;let M=a[A].getRequiredAttrValue("START-DATE"),x=I.parseDate(M);if(!isNaN(x)&&x&&x>m){g=Math.max(0,x-n);break}}if(g==null)continue}let b=["CLASS","START-DATE","END-DATE","DURATION","END-ON-NEXT"],E=[];for(let A of d.attributes){if(b.includes(A.name))continue;let w=he.variableSubstitution(A.value,i);(A.name=="X-ASSET-URI"||A.name=="X-ASSET-LIST")&&(w=he.constructSegmentUris(r(),A.value,i)[0]);let M={key:A.name,description:"",data:w,mimeType:null,pictureType:null};E.push(M)}let C={schemeIdUri:T,value:"",startTime:f,endTime:g!=null?g:1/0,id:d.getRequiredAttrValue("ID"),timescale:1,eventNode:null,urlParams:void 0,values:E};if(this.playerInterface_.onTimelineRegionAdded(C),E.length>1){let A=this.playerInterface_.onMetadata(T,f,g,E),w=!1,M=E.find(x=>x.key=="CUE");if(M&&M.data.includes("PRE")&&(w=!0),g!=null&&!w){let x;this.manifest_.startTime!=null?x=this.manifest_.startTime:this.isDynamic_()?x=this.manifest_.presentationTimeline.getSeekRangeEnd():x=this.manifest_.presentationTimeline.getSeekRangeStart(),w=f<=x&&g>=x}w&&o.push(A)}}catch(u){p.warning("Ignoring DATERANGE with errors",d.toString())}}o.length&&await Promise.all(o)}createSegments_(e,t,i,r,s,n,a){let o=e.segments;v.assert(o.length,"Playlist should have segments!");let c=null,d=null,u=null,m=null,f,g=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-DISCONTINUITY-SEQUENCE",-1),_=he.getFirstTagWithNameAsNumber(e.tags,"EXT-X-MEDIA-SEQUENCE",0),T=he.getFirstTagWithName(e.tags,"EXT-X-SKIP"),S=T?Number(T.getAttributeValue("SKIPPED-SEGMENTS")):0,b=_+S,E=0;this.isLive_()&&t.has(b)&&(E=t.get(b)),E===0&&this.isLive_()&&t.size>0&&!t.has(b)&&this.presentationTimeline_.getPresentationStartTime()!=null&&(E=this.presentationTimeline_.getSegmentAvailabilityStart());let C=[],A=[],w=null,M=null,x=[],k=0;if(!n&&a){k=o.length;for(let H=0;H<o.length;H++){let J=_+S+H;if(!t.has(J)){k=H;break}if(o[H].partialSegments.length){k=H;break}if(this.lowLatencyMode_){let Z=he.getFirstTagWithName(o[H].tags,"EXTINF");if(Z){let ce=he.getExtinfDuration(Z),W=this.getReferenceForMediaSequence_(a,t,J);if(W&&Math.abs(W.endTime-W.startTime-ce)>.001){k=H;break}}}}if(k>0){let H=_+S+k-1;w=this.getReferenceForMediaSequence_(a,t,H),w?(M=w,p.debug("HLS live update: reusing",k,"known segment references and building only the new tail.")):(p.debug("HLS live update: full playlist rebuild selected for overlap recovery."),k=0)}}let L=M;!L&&a&&(L=this.getReferenceForMediaSequence_(a,t,_+S)||a.get(a.getNumEvicted()+a.getNumReferences()-1));let V=H=>{let J=ct.getExtension(H);if(!J)return null;let ce=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(s).get(J);return ce||(ce=St.RAW_FORMATS_TO_MIME_TYPES_.get(J)),ce};for(let H=0;H<o.length;H++){let J=o[H],Z=he.getFirstTagWithName(J.tags,"EXT-X-MAP");Z&&Z.id!==d&&(c=this.getInitSegmentReference_(e,J.tags,r,i),d=Z.id);let ce=J.verbatimSegmentUri,W="";ce&&(W=ct.getExtension(ce)),W!==m&&(u=V(ce),m=W);let z=H==0?E:w.endTime;b=_+S+H,he.getFirstTagWithName(J.tags,"EXT-X-DISCONTINUITY")&&(g++,H>=k&&w&&w.initSegmentReference&&(w.initSegmentReference.boundaryEnd=z));for(let O of J.tags)O.name=="EXT-X-KEY"&&(this.isAesMethod_(O.getRequiredAttrValue("METHOD"))?f=this.parseAESDrmTag_(O,e,r,i):f=void 0);if(H<k)continue;let Y=n||!t.has(b);t.set(b,z);let X=this.createSegmentReference_(c,w,J,z,i,e,s,r,u,f);if(X){let O=he.getFirstTagWithNameAsNumber(J.tags,"EXT-X-BITRATE");if(O)x.push({bitrate:O,duration:X.endTime-X.startTime}),X.bandwidth=O;else if(X.endByte){let $=X.getSize();if($){let Ie=X.endTime-X.startTime,tt=$*8/Ie/1e3;x.push({bitrate:tt,duration:Ie}),X.bandwidth=tt}}else if(x.length){let $=x[x.length-1];$.duration+=X.endTime-X.startTime,X.bandwidth=$.bitrate}if(X.bandwidth)for(let $ of X.partialReferences)$.bandwidth=X.bandwidth;w=X,X.discontinuitySequence=g,this.ignoreManifestProgramDateTimeFor_(s)&&this.minSequenceNumber_!=null&&b<this.minSequenceNumber_||(C.push(X),(Y||!n)&&A.push(X))}}let ee;if(x.length){let H=x.reduce((J,Z)=>J+Z.duration,0);ee=Math.round(x.reduce((J,Z)=>J+Z.bitrate*Z.duration,0)/H*1e3)}let oe=!!(M!=null&&M.syncTime)||C.some(H=>H.syncTime!=null);if(oe)for(let H=0;H<C.length;H++){let J=C[H];if(J.syncTime!=null)continue;let Z=0,ce=H,W=()=>{let X=C[ce];if(X){if(X.syncTime!=null)return X.syncTime+Z;Z-=X.endTime-X.startTime,ce+=1}return null},z=0,ge=H,Y=()=>{let X=C[ge];if(X){if(X!=J&&(z+=X.endTime-X.startTime),X.syncTime!=null)return X.syncTime+z;ge-=1}else if(M&&M.syncTime!=null)return M.syncTime+(M.endTime-M.startTime)+z;return null};for(;J.syncTime==null;)J.syncTime=Y(),J.syncTime==null&&(J.syncTime=W())}if(oe){let H=0,J=M;if(L&&L.syncTime!=null){let Z=this.realProgramDateTimeByReference_.get(L);Z!=null&&(H=Z-L.syncTime)}for(let Z of C){if(Z.syncTime!=null){if(this.realProgramDateTimeByReference_.set(Z,Z.syncTime),J&&J.syncTime!=null&&J.discontinuitySequence!=Z.discontinuitySequence){let W=J.syncTime+(J.endTime-J.startTime),ge=Z.syncTime-W-H;Math.abs(ge)>1&&(H+=ge)}Z.syncTime-=H}let ce=Z.syncTime;for(let W of Z.partialReferences)W.syncTime=ce,ce+=W.endTime-W.startTime;J=Z}}let le=this.lowestSyncTime_;if(oe&&le!=1/0&&!this.ignoreManifestProgramDateTimeFor_(s))for(let H of C)H.syncAgainst(le);return{segments:n?C:A,totalCount:k+C.length,bandwidth:ee}}setProgramDateTimeRegionsFromIndex_(e,t){if(t!=R.ContentType.VIDEO||this.ignoreManifestProgramDateTimeFor_(t)||!e.segmentIndex)return;let i=[],r=null;for(let s of e.segmentIndex){if(!s||s.syncTime==null)continue;let n=this.realProgramDateTimeByReference_.get(s);if(n==null)continue;let a=n-s.syncTime;(r==null||Math.abs(a-r)>.001)&&i.push({start:s.startTime,pdt:n}),r=a}this.presentationTimeline_.setProgramDateTimeRegions(i)}guessMimeTypeBeforeLoading_(e,t){if(e==R.ContentType.TEXT){if(t=="vtt"||t=="wvtt")return"text/vtt";if(t&&t!=="")return"application/mp4"}return e==R.ContentType.IMAGE&&(!t||t=="jpeg")?"image/jpeg":e==R.ContentType.AUDIO&&t=="mp4a.40.34"?"audio/mpeg":t=="mjpg"?"application/mp4":null}guessMimeTypeFallback_(e){return e==R.ContentType.TEXT?"text/vtt":St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get("mp4")}getAvailableSegment_(e){v.assert(e.length,"Should have segments!");let t=this.isLive_()?Math.trunc((e.length-1)/2):0,i=e[t];for(;i.getStatus()==Se.Status.MISSING&&t+1<e.length;)t++,i=e[t];return{segment:i,segmentIndex:t}}async guessMimeType_(e,t,i){let r=K.RequestType.SEGMENT,{segment:s}=this.getAvailableSegment_(i);if(s.status==Se.Status.MISSING)return this.guessMimeTypeFallback_(e);let n,a=s.getUris(),o=ct.getExtension(a[0]);if(o){let g=St.EXTENSION_MAP_BY_CONTENT_TYPE_.get(e).get(o);if(g||(g=St.RAW_FORMATS_TO_MIME_TYPES_.get(o),g))return g}if(n=this.guessMimeTypeBeforeLoading_(e,t),n)return n;let c,d=K.AdvancedRequestType.MEDIA_SEGMENT,u=K.makeRequest(a,this.playerInterface_.getStreamingRetryParameters()),m;try{u.method="HEAD",m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"]}catch(f){f&&(f.code==h.Code.HTTP_ERROR||f.code==h.Code.BAD_HTTP_STATUS)&&(u.method="GET",this.config_.hls.allowRangeRequestsToGuessMimeType&&(u.headers.Range="bytes=0-0"),m=await this.makeNetworkRequest_(u,r,{type:d}).promise,c=m.headers["content-type"])}return c&&(n=c.toLowerCase().split(";")[0],this.isGenericBinaryMimeType_(n)&&(m.data.byteLength||(u.method="GET",m=await this.makeNetworkRequest_(u,r,{type:d}).promise),pt.probe(D.toUint8(m.data))&&(n="video/mp2t")),!this.isGenericBinaryMimeType_(n))?n:this.guessMimeTypeFallback_(e)}isGenericBinaryMimeType_(e){return St.GENERIC_BINARY_MIME_TYPES_.includes(e)}getRequiredTag_(e,t){let i=he.getFirstTagWithName(e,t);if(!i)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_REQUIRED_TAG_MISSING,t);return i}addVideoAttributes_(e,t,i,r,s,n,a){e&&(e.width=Number(t)||void 0,e.height=Number(i)||void 0,e.frameRate=r||void 0,e.hdr=s||void 0,e.videoLayout=n||void 0,e.colorGamut=a||void 0)}requestManifest_(e,t){let i=K.RequestType.MANIFEST,r=K.makeRequest(e,this.config_.retryParameters),s=t?K.AdvancedRequestType.MEDIA_PLAYLIST:K.AdvancedRequestType.MASTER_PLAYLIST;return this.makeNetworkRequest_(r,i,{type:s})}async onUpdate_(){if(p.info("Updating manifest..."),v.assert(this.getUpdatePlaylistDelay_()>0,"We should only call |onUpdate_| when we are suppose to be updating."),!!this.playerInterface_){try{let e=Date.now();await this.update();let t=Date.now();if(this.isDynamic_()){let i=(t-e)/1e3;this.averageUpdateDuration_.sample(1,i);let r=this.config_.updatePeriod>0?this.config_.updatePeriod:this.getUpdatePlaylistDelay_(),s=Math.max(0,r-this.averageUpdateDuration_.getEstimate());isFinite(s)?this.updatePlaylistTimer_.tickAfter(s):this.updatePlaylistTimer_.tickAfter(1)}}catch(e){if(!this.playerInterface_)return;if(v.assert(e instanceof h,"Should only receive a Shaka error"),this.config_.raiseFatalErrorOnManifestUpdateRequestFailure){this.playerInterface_.onError(e);return}e.severity=h.Severity.RECOVERABLE,this.playerInterface_.onError(e),this.updatePlaylistTimer_.tickAfter(.1)}this.playerInterface_&&this.playerInterface_.onManifestUpdated()}}isDynamic_(){let e=St.PresentationType_;return this.presentationType_!=e.VOD}isLive_(){let e=St.PresentationType_;return this.presentationType_==e.LIVE}getUpdatePlaylistDelay_(){return this.lastTargetDuration_}setPresentationType_(e){this.presentationType_=e,this.presentationTimeline_&&this.presentationTimeline_.setStatic(!this.isDynamic_()),this.isDynamic_()||this.updatePlaylistTimer_.stop()}makeNetworkRequest_(e,t,i){if(!this.operationManager_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);i||(i={}),i.isPreload=this.isPreloadFn_();let r=this.playerInterface_.networkingEngine.request(t,e,i);return this.operationManager_.manage(r),r}isAesMethod_(e){return e=="AES-128"||e=="AES-256"||e=="AES-256-CTR"||e=="AES-256-GCM"}async fairplayDrmParser_(e,t,i){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);if(de.isMediaKeysPolyfilled("apple"))throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_LEGACY_APPLE_MEDIA_KEYS_NOT_SUPPORTED);let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("FairPlay in HLS is only supported with [",s.join(", "),"], not",r),null;let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=R.createDrmInfo("com.apple.fps",n,null,a),c=hr.defaultGetKeyId(a);return!c&&i&&(c=await this.getKeyIdFromInitSegment_(i)),c&&o.keyIds.add(c),o}widevineDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("Widevine in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.widevine.alpha",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}playreadyDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("PlayReady in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=D.toUint8(o.data),d=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),u=new Set,f=ei.createPssh(c,d,u,0),g=R.createDrmInfo("com.microsoft.playready",n,[{initDataType:"cenc",initData:f}],void 0,o.typeInfoList),_=I.parseXmlString(["<PLAYREADY>",ne.toBase64(c),"</PLAYREADY>"].join(`
|
|
707
|
+
`));return _&&(g.licenseServerUri=Ri.getLicenseUrl(_)),Promise.resolve(g)}wiseplayDrmParser_(e,t,i){let r=e.getRequiredAttrValue("METHOD"),s=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!s.includes(r))return p.error("WisePlay in HLS is only supported with [",s.join(", "),"], not",r),Promise.resolve(null);let n="cenc";r=="SAMPLE-AES"&&(n="cbcs");let a=e.getRequiredAttrValue("URI"),o=yr.parseRaw(a.split("?")[0]),c=a.split("?")[0],d=this.psshToInitData_.getOrInsertComputed(c,()=>D.toUint8(o.data)),u=R.createDrmInfo("com.huawei.wiseplay",n,[{initDataType:"cenc",initData:d}],void 0,o.typeInfoList),m=e.getAttributeValue("KEYID");if(m){let f=m.toLowerCase();v.assert(f.startsWith("0x"),"Incorrect KEYID format!"),u.keyIds.add(f.substr(2))}return Promise.resolve(u)}async identityDrmParser_(e,t,i,r,s){if(t=="video/mp2t")throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.HLS_MSE_ENCRYPTED_MP2T_NOT_SUPPORTED);let n=e.getRequiredAttrValue("METHOD"),a=["SAMPLE-AES","SAMPLE-AES-CTR"];if(!a.includes(n))return p.error("Identity (ClearKey) in HLS is only supported with [",a.join(", "),"], not",n),null;let o=he.constructSegmentUris(i(),e.getRequiredAttrValue("URI"),s),c;if(o[0].startsWith("data:text/plain;base64,"))c=ne.toHex(ne.fromBase64(o[0].split("data:text/plain;base64,").pop()));else{let f=o.sort().join(""),g=await this.identityKeyMap_.getOrInsertComputed(f,()=>{let _=K.RequestType.KEY,T=K.makeRequest(o,this.config_.retryParameters);return this.makeNetworkRequest_(T,_).promise});c=ne.toHex(g.data)}let d="00000000000000000000000000000000";if(r){let f=await this.getKeyIdFromInitSegment_(r);f&&(d=f)}let u=new Map;u.set(d,c);let m="cenc";return n=="SAMPLE-AES"&&(m="cbcs"),R.createDrmInfoFromClearKeys(u,m)}async getKeyIdFromInitSegment_(e){let t=null;if(this.initSegmentToKidMap_.has(e))t=this.initSegmentToKidMap_.get(e);else{let i=ct.createSegmentRequest(e.getUris(),e.getStartByte(),e.getEndByte(),this.playerInterface_.getStreamingRetryParameters()),r=K.RequestType.SEGMENT,s=K.AdvancedRequestType.INIT_SEGMENT,n=await this.makeNetworkRequest_(i,r,{type:s}).promise;e.setSegmentData(n.data),t=vt.getDefaultKID(n.data),this.initSegmentToKidMap_.set(e,t)}return t}};l(St,"GENERIC_BINARY_MIME_TYPES_",["application/octet-stream","binary/octet-stream"]),l(St,"PresentationType_",{VOD:"VOD",EVENT:"EVENT",LIVE:"LIVE"}),l(St,"FAKE_MUXED_URL_","shaka://hls-muxed");var Ut=St;Ut.RAW_FORMATS_TO_MIME_TYPES_=new Map().set("aac","audio/aac").set("ac3","audio/ac3").set("ec3","audio/ec3").set("mp3","audio/mpeg");Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","audio/mp4").set("mp4a","audio/mp4").set("m4s","audio/mp4").set("m4i","audio/mp4").set("m4a","audio/mp4").set("m4f","audio/mp4").set("cmfa","audio/mp4").set("ts","video/mp2t").set("tsa","video/mp2t");Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","video/mp4").set("mp4v","video/mp4").set("m4s","video/mp4").set("m4i","video/mp4").set("m4v","video/mp4").set("m4f","video/mp4").set("cmfv","video/mp4").set("ts","video/mp2t").set("tsv","video/mp2t");Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_=new Map().set("mp4","application/mp4").set("m4s","application/mp4").set("m4i","application/mp4").set("m4f","application/mp4").set("cmft","application/mp4").set("vtt","text/vtt").set("webvtt","text/vtt").set("ttml","application/ttml+xml");Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_=new Map().set("jpg","image/jpeg").set("png","image/png").set("svg","image/svg+xml").set("webp","image/webp").set("avif","image/avif");Ut.EXTENSION_MAP_BY_CONTENT_TYPE_=new Map().set("audio",Ut.AUDIO_EXTENSIONS_TO_MIME_TYPES_).set("video",Ut.VIDEO_EXTENSIONS_TO_MIME_TYPES_).set("text",Ut.TEXT_EXTENSIONS_TO_MIME_TYPES_).set("image",Ut.IMAGE_EXTENSIONS_TO_MIME_TYPES_);Ut.MIME_TYPES_WITHOUT_INIT_SEGMENT_=new Set(["video/mp2t",...N.RAW_FORMATS]);me.registerParserByMime("application/x-mpegurl",()=>new Ut);me.registerParserByMime("application/vnd.apple.mpegurl",()=>new Ut);me.registerParserByMime("audio/x-mpegurl",()=>new Ut);/*! @license
|
|
708
|
+
* Shaka Player
|
|
709
|
+
* Copyright 2016 Google LLC
|
|
710
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
711
|
+
*/var jn=class{parse(e){let t=[],i=e.length-128;if(i<0||e[i]!==84||e[i+1]!==65||e[i+2]!==71)return t;let r=(o,c)=>q.fromUTF8(e.subarray(i+o,i+o+c)).replace(/\0/g,"").trim(),s=(o,c)=>{c&&t.push({key:o,description:"",data:c,mimeType:null,pictureType:null})};s("TIT2",r(3,30)),s("TPE1",r(33,30)),s("TALB",r(63,30)),s("TYER",r(93,4));let n="",a=null;return e[i+125]===0?(n=r(97,28),a=e[i+126]):n=r(97,30),s("COMM",n),a!==null&&s("TRCK",String(a)),s("TCON",String(e[i+127])),t}};for(let y of N.RAW_FORMATS)kt.registerParserByMime(y,()=>new jn);/*! @license
|
|
712
|
+
* Shaka Player
|
|
713
|
+
* Copyright 2016 Google LLC
|
|
714
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
715
|
+
*/var Gs=class y{parse(e){let t=[];return new F().boxes(["moov","udta"],F.children).fullBox("meta",F.children).box("ilst",i=>{for(;i.reader.hasMoreData()&&!(i.reader.getLength()-i.reader.getPosition()<8);){let r=i.reader.readUint32(),s=F.typeToString(i.reader.readUint32());if(r<8)break;let n=i.reader.getLength()-i.reader.getPosition(),a=Math.min(r-8,n),o=i.reader.readBytes(a,!1),c=s==="----"?this.parseFreeform_(o):this.parseStandard_(s,o);c&&t.push(c)}}).parse(e),t}parseFreeform_(e){let t="",i="",r=null;return new F().fullBox("mean",s=>{let n=s.reader.getLength()-s.reader.getPosition();t=q.fromUTF8(s.reader.readBytes(n,!1))}).fullBox("name",s=>{let n=s.reader.getLength()-s.reader.getPosition();i=q.fromUTF8(s.reader.readBytes(n,!1))}).fullBox("data",s=>{r=this.parseDataBox_(s)}).parse(e),!r||!i?null:{key:i,data:r.data,description:t?`Domain: ${t}`:"",mimeType:r.mimeType,pictureType:r.pictureType}}parseStandard_(e,t){let i=y.ILST_TO_ID3_.get(e)||e,r=null;return new F().fullBox("data",s=>{let n=this.parseDataBox_(s,e);r={key:i,data:n.data,description:"",mimeType:n.mimeType,pictureType:n.pictureType}}).parse(t),r}parseDataBox_(e,t=""){e.reader.skip(4);let i=e.reader.readBytes(e.reader.getLength()-e.reader.getPosition(),!1);if((t==="trkn"||t==="disk")&&i.length>=6){let r=D.toDataView(i),s=r.getUint16(2,!1),n=r.getUint16(4,!1);return{data:n>0?`${s}/${n}`:`${s}`,mimeType:null,pictureType:null}}switch(e.flags){case 13:return{data:D.toArrayBuffer(i),mimeType:"image/jpeg",pictureType:3};case 14:return{data:D.toArrayBuffer(i),mimeType:"image/png",pictureType:3};case 21:{let r=D.toDataView(i),s=0;switch(i.length){case 1:s=r.getInt8(0);break;case 2:s=r.getInt16(0,!1);break;case 3:s=i[0]<<16|i[1]<<8|i[2],s&8388608&&(s|=-16777216);break;case 4:s=r.getInt32(0,!1);break;default:s=0;for(let n of i)s=s<<8|n}return{data:s,mimeType:null,pictureType:null}}default:return{data:q.fromUTF8(i).replace(/\0/g,""),mimeType:null,pictureType:null}}}};Gs.ILST_TO_ID3_=new Map().set("\xA9nam","TIT2").set("\xA9ART","TPE1").set("aART","TPE2").set("\xA9alb","TALB").set("\xA9gen","TCON").set("\xA9day","TDRC").set("\xA9wrt","TEXT").set("trkn","TRCK").set("disk","TPOS").set("\xA9cmt","COMM").set("covr","APIC").set("cprt","TCOP").set("\xA9too","TENC").set("tmpo","TBPM").set("cpil","TCMP");kt.registerParserByMime("audio/mp4",()=>new Gs);/*! @license
|
|
716
|
+
* Shaka Player
|
|
717
|
+
* Copyright 2016 Google LLC
|
|
718
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
719
|
+
*/var Yn=class Yn{parse(e){if(e.length>=4&&e[0]==102&&e[1]==76&&e[2]==97&&e[3]==67){let r=[],s=4;for(;s+4<=e.length;){let n=e[s],a=!!(n&128),o=n&127,c=e[s+1]<<16|e[s+2]<<8|e[s+3];if(s+=4,s+c>e.length)break;let d=e.subarray(s,s+c);if(o==4&&r.push(...this.parseVorbisCommentBlock_(d)),o==6){let u=this.parseFlacPicture_(d);u&&r.push(u)}if(s+=c,a)break}return r}if(e.length>=4&&e[0]==79&&e[1]==103&&e[2]==103&&e[3]==83){let r=q.fromUTF8(e),s=r.indexOf("OpusTags");if(s<0&&(s=r.indexOf("vorbis")),s>=0)return this.parseVorbisCommentBlock_(e.subarray(s+8))}return[]}parseVorbisCommentBlock_(e){let t=[];try{let i=new Et(e,Et.Endianness.LITTLE_ENDIAN),r=i.readUint32();i.skip(r);let s=i.readUint32();for(let n=0;n<s;n++){let a=i.readUint32(),o=q.fromUTF8(i.readBytes(a,!1)),c=o.indexOf("=");if(c<0)continue;let d=o.substring(0,c).toUpperCase(),u=o.substring(c+1),m=Yn.VORBIS_TO_ID3_MAP_[d]||d;t.push({key:m,data:u,description:"",mimeType:null,pictureType:null})}}catch(i){}return t}parseFlacPicture_(e){try{let t=new Et(e,Et.Endianness.BIG_ENDIAN),i=t.readUint32(),r=t.readUint32(),s=q.fromUTF8(t.readBytes(r,!0)),n=t.readUint32(),a=q.fromUTF8(t.readBytes(n,!0));t.skip(16);let o=t.readUint32(),c=t.readBytes(o,!0);return{key:"APIC",data:D.toArrayBuffer(c),description:a,mimeType:s,pictureType:i}}catch(t){return null}}};l(Yn,"VORBIS_TO_ID3_MAP_",{TITLE:"TIT2",ARTIST:"TPE1",ALBUM:"TALB",ALBUMARTIST:"TPE2",TRACKNUMBER:"TRCK",DISCNUMBER:"TPOS",DATE:"TDRC",GENRE:"TCON",COMMENT:"COMM",DESCRIPTION:"TIT3",COPYRIGHT:"TCOP",COMPOSER:"TCOM",LYRICS:"USLT",ISRC:"TSRC"});var Vr=Yn;kt.registerParserByMime("audio/flac",()=>new Vr);kt.registerParserByMime("audio/ogg",()=>new Vr);kt.registerParserByMime("audio/vorbis",()=>new Vr);kt.registerParserByMime("audio/opus",()=>new Vr);/*! @license
|
|
720
|
+
* Shaka Player
|
|
721
|
+
* Copyright 2016 Google LLC
|
|
722
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
723
|
+
*/var Ks=class{constructor(e){l(this,"frameDuration_");this.frameDuration_=e}parse(e){let t=BigInt(6),i=BigInt(8),{props:r,payloadOffset:s}=this.parsePrivateProperties_(e.data),n=D.toUint8(e.data,s);if(e.extensions&&e.extensions.byteLength>0){let o=this.parseExtensions_(e.extensions),c=o.get(t);if(typeof c=="bigint"){let d=o.get(i);return{startTime:this.timestampToSeconds_(c,typeof d=="bigint"?d:void 0),duration:this.frameDuration_,payload:n}}}let a=r.get(t);if(typeof a=="bigint"){let o=r.get(i);return{startTime:this.timestampToSeconds_(a,typeof o=="bigint"?o:void 0),duration:this.frameDuration_,payload:n}}return{startTime:Number(e.location.group)*this.frameDuration_,duration:this.frameDuration_,payload:n}}timestampToSeconds_(e,t){let i=t!==void 0?Number(t):1e6;return Number(e)/i}parseExtensions_(e){let t=new Map;if(e.byteLength===0)return t;try{let i=0;for(;i<e.byteLength;){let r=this.readVi64At_(e,i);i+=r.bytesRead;let s=r.value;if(s%BigInt(2)===BigInt(0)){let n=this.readVi64At_(e,i);i+=n.bytesRead,t.set(s,n.value)}else{let n=this.readVi64At_(e,i);i+=n.bytesRead;let a=Number(n.value);t.set(s,D.toUint8(e,i,a)),i+=a}}}catch(i){p.v2("LOCParser: failed to parse extension headers, returning partial map",i)}return t}parsePrivateProperties_(e){let t=new Map;if(e.byteLength===0)return{props:t,payloadOffset:0};try{let i=0,r=this.readVi64At_(e,i);i+=r.bytesRead;let s=Number(r.value);if(s===0||s>64)return{props:t,payloadOffset:0};for(let n=0;n<s;n++){let a=this.readVi64At_(e,i);i+=a.bytesRead;let o=a.value;if(o%BigInt(2)===BigInt(0)){let c=this.readVi64At_(e,i);i+=c.bytesRead,t.set(o,c.value)}else{let c=this.readVi64At_(e,i);i+=c.bytesRead;let d=Number(c.value);t.set(o,D.toUint8(e,i,d)),i+=d}}return{props:t,payloadOffset:i}}catch(i){return p.v2("LOCParser: failed to parse private properties prefix, using full buffer as payload",i),{props:t,payloadOffset:0}}}readVi64At_(e,t){if(t>=e.length)throw new Error(`LOCParser.readVi64At: underflow at offset ${t}`);let i=(e[t]&192)>>6;if(i===0)return{value:BigInt(e[t]&63),bytesRead:1};if(i===1){if(t+2>e.length)throw new Error("LOCParser.readVi64At: need 2 bytes");let s=D.toDataView(e,t,2);return{value:BigInt(s.getUint16(0))&BigInt("0x3fff"),bytesRead:2}}if(i===2){if(t+4>e.length)throw new Error("LOCParser.readVi64At: need 4 bytes");let s=D.toDataView(e,t,4);return{value:BigInt(s.getUint32(0))&BigInt("0x3fffffff"),bytesRead:4}}if(t+8>e.length)throw new Error("LOCParser.readVi64At: need 8 bytes");return{value:D.toDataView(e,t,8).getBigUint64(0)&BigInt("0x3fffffffffffffff"),bytesRead:8}}static frameDurationFromTrack(e){let t=(e.codec||"").toLowerCase();return e.framerate?1/e.framerate:e.samplerate?t.startsWith("mp4a.40")?1024/e.samplerate:t==="opus"?960/e.samplerate:(p.warning(`LOCParser.frameDurationFromTrack: unrecognised codec "${e.codec}" for track "${e.name}"`),null):(p.warning(`LOCParser.frameDurationFromTrack: track "${e.name}" has no samplerate`),null)}};/*! @license
|
|
724
|
+
* Shaka Player
|
|
725
|
+
* Copyright 2016 Google LLC
|
|
726
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
727
|
+
*/var Ki=class Ki{static isDraft16(e){return e>=Ki.Version.DRAFT_16}};l(Ki,"MessageTypeId",{CLIENT_SETUP:32,SERVER_SETUP:33,GOAWAY:16,MAX_REQUEST_ID:21,REQUESTS_BLOCKED:26,SUBSCRIBE:3,SUBSCRIBE_OK:4,SUBSCRIBE_ERROR:5,SUBSCRIBE_UPDATE:2,UNSUBSCRIBE:10,PUBLISH_DONE:11,PUBLISH:29,PUBLISH_OK:30,PUBLISH_ERROR:31,FETCH:22,FETCH_OK:24,FETCH_ERROR:25,FETCH_CANCEL:23,TRACK_STATUS:13,TRACK_STATUS_OK:14,TRACK_STATUS_ERROR:15,PUBLISH_NAMESPACE:6,PUBLISH_NAMESPACE_OK:7,PUBLISH_NAMESPACE_ERROR:8,PUBLISH_NAMESPACE_DONE:9,PUBLISH_NAMESPACE_CANCEL:12,SUBSCRIBE_NAMESPACE:17,SUBSCRIBE_NAMESPACE_OK:18,SUBSCRIBE_NAMESPACE_ERROR:19,UNSUBSCRIBE_NAMESPACE:20}),l(Ki,"MessageType",{GOAWAY:"goaway",MAX_REQUEST_ID:"max_request_id",REQUESTS_BLOCKED:"requests_blocked",SUBSCRIBE:"subscribe",SUBSCRIBE_OK:"subscribe_ok",SUBSCRIBE_ERROR:"subscribe_error",SUBSCRIBE_UPDATE:"subscribe_update",UNSUBSCRIBE:"unsubscribe",PUBLISH_DONE:"publish_done",PUBLISH:"publish",PUBLISH_OK:"publish_ok",PUBLISH_ERROR:"publish_error",FETCH:"fetch",FETCH_OK:"fetch_ok",FETCH_ERROR:"fetch_error",FETCH_CANCEL:"fetch_cancel",TRACK_STATUS:"track_status",TRACK_STATUS_OK:"track_status_ok",TRACK_STATUS_ERROR:"track_status_error",PUBLISH_NAMESPACE:"publish_namespace",PUBLISH_NAMESPACE_OK:"publish_namespace_ok",PUBLISH_NAMESPACE_ERROR:"publish_namespace_error",PUBLISH_NAMESPACE_DONE:"publish_namespace_done",PUBLISH_NAMESPACE_CANCEL:"publish_namespace_cancel",SUBSCRIBE_NAMESPACE:"subscribe_namespace",SUBSCRIBE_NAMESPACE_OK:"subscribe_namespace_ok",SUBSCRIBE_NAMESPACE_ERROR:"subscribe_namespace_error",UNSUBSCRIBE_NAMESPACE:"unsubscribe_namespace"}),l(Ki,"SetupOption",{MAX_REQUEST_ID:2,AUTHORIZATION_TOKEN:3,MAX_AUTH_TOKEN_CACHE_SIZE:4,IMPLEMENTATION:7}),l(Ki,"GroupOrder",{PUBLISHER:0,ASCENDING:1,DESCENDING:2}),l(Ki,"FilterType",{NONE:0,NEXT_GROUP_START:1,LARGEST_OBJECT:2,ABSOLUTE_START:3,ABSOLUTE_RANGE:4}),l(Ki,"Version",{DRAFT_14:4278190094,DRAFT_16:4278190096}),l(Ki,"FetchType",{STANDALONE:1,RELATIVE:2,ABSOLUTE:3});var P=Ki;/*! @license
|
|
728
|
+
* Shaka Player
|
|
729
|
+
* Copyright 2016 Google LLC
|
|
730
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
731
|
+
*/var $n=class $n{constructor(e,t){l(this,"buffer_");l(this,"dataView_");l(this,"littleEndian_");l(this,"position_");this.buffer_=new Uint8Array(e),this.dataView_=D.toDataView(this.buffer_),this.littleEndian_=t==$n.Endianness.LITTLE_ENDIAN,this.position_=0}getPosition(){return this.position_}getLength(){return this.position_}getBytes(){return D.toUint8(this.buffer_,0,this.position_)}reset(){this.position_=0}ensureSpace_(e){let t=this.position_+e;if(t<=this.buffer_.length)return;let i=Math.max(this.buffer_.length*2,t),r=new Uint8Array(i);r.set(this.buffer_),this.buffer_=r,this.dataView_=D.toDataView(this.buffer_)}writeUint8(e){this.ensureSpace_(1),this.dataView_.setUint8(this.position_,e&255),this.position_+=1}writeUint16(e){this.ensureSpace_(2),this.dataView_.setUint16(this.position_,e&65535,this.littleEndian_),this.position_+=2}writeUint32(e){this.ensureSpace_(4),this.dataView_.setUint32(this.position_,e>>>0,this.littleEndian_),this.position_+=4}writeUint64(e){if(e<0||e>Number.MAX_SAFE_INTEGER)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.JS_INTEGER_OVERFLOW);this.ensureSpace_(8);let t=Math.floor(e/4294967296),i=e>>>0;this.littleEndian_?(this.dataView_.setUint32(this.position_,i,!0),this.dataView_.setUint32(this.position_+4,t,!0)):(this.dataView_.setUint32(this.position_,t,!1),this.dataView_.setUint32(this.position_+4,i,!1)),this.position_+=8}writeBytes(e){v.assert(e,"Bad call to writeBytes"),this.ensureSpace_(e.byteLength),D.toUint8(this.buffer_,this.position_,e.byteLength).set(e),this.position_+=e.byteLength}writeString(e){let t=D.toUint8(q.toUTF8(e));this.writeUint32(t.length),this.writeBytes(t)}writeVarInt53(e){if(e<0)throw new Error(`Underflow: ${e}`);let t=63,i=16383,r=(1<<30)-1,s=Number.MAX_SAFE_INTEGER;if(e<=t)this.writeUint8(e);else if(e<=i)this.writeUint8(e>>8&63|64),this.writeUint8(e&255);else if(e<=r)this.writeUint8(e>>24&31|128),this.writeUint8(e>>16&255),this.writeUint8(e>>8&255),this.writeUint8(e&255);else if(e<=s){let n=Math.floor(e/4294967296),a=e%4294967296;this.writeUint8(n>>24&15|192),this.writeUint8(n>>16&255),this.writeUint8(n>>8&255),this.writeUint8(n&255),this.writeUint8(a>>24&255),this.writeUint8(a>>16&255),this.writeUint8(a>>8&255),this.writeUint8(a&255)}else throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.JS_INTEGER_OVERFLOW)}writeVarInt62(e){if(e<BigInt(0))throw new Error(`Underflow: ${e}`);if(e<=BigInt(Number.MAX_SAFE_INTEGER)){this.writeVarInt53(Number(e));return}let t=BigInt(255),i=BigInt(15),r=BigInt(192);this.ensureSpace_(8),this.writeUint8(Number(e>>BigInt(56)&i|r)),this.writeUint8(Number(e>>BigInt(48)&t)),this.writeUint8(Number(e>>BigInt(40)&t)),this.writeUint8(Number(e>>BigInt(32)&t)),this.writeUint8(Number(e>>BigInt(24)&t)),this.writeUint8(Number(e>>BigInt(16)&t)),this.writeUint8(Number(e>>BigInt(8)&t)),this.writeUint8(Number(e&t))}writeStringVarInt(e){let t=D.toUint8(q.toUTF8(e));this.writeVarInt53(t.length),this.writeBytes(t)}seek(e){if(v.assert(e>=0,"Bad seek"),e>this.buffer_.length)throw this.outOfBounds_();this.position_=e}skip(e){v.assert(e>=0,"Bad skip"),this.ensureSpace_(e),this.position_+=e}reserveUint16(){let e=this.position_;return this.skip(2),e}patchUint16(e,t){let i=this.position_;this.position_=e,this.writeUint16(t),this.position_=i}outOfBounds_(){return new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.BUFFER_WRITE_OUT_OF_BOUNDS)}};l($n,"Endianness",{BIG_ENDIAN:0,LITTLE_ENDIAN:1});var qi=$n;/*! @license
|
|
732
|
+
* Shaka Player
|
|
733
|
+
* Copyright 2016 Google LLC
|
|
734
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
735
|
+
*/var ns=class{constructor(e,t=1024){l(this,"version_");l(this,"writer_");this.version_=e,this.writer_=new qi(t,qi.Endianness.BIG_ENDIAN)}getBytes(){return this.writer_.getBytes()}reset(){this.writer_.reset()}writeBoolAsUint8_(e){this.writer_.writeUint8(e?1:0)}writeArray_(e,t){this.writer_.writeVarInt53(e.length);for(let i of e)t(i)}writeString_(e){this.writer_.writeStringVarInt(e)}writeTuple_(e){this.writeArray_(e||[],t=>{this.writeString_(t)})}writeLocation_(e){this.writer_.writeVarInt62(e.group),this.writer_.writeVarInt62(e.object)}writeKeyValuePair_(e){if(this.writer_.writeVarInt62(e.type),e.type%BigInt(2)===BigInt(0)){if(typeof e.value!="bigint")throw new Error("Invalid value type for even key "+e.type+": expected bigint, got "+typeof e.value);this.writer_.writeVarInt62(e.value)}else{if(!ArrayBuffer.isView(e.value))throw new Error("Invalid value type for odd key "+e.type+": expected Uint8Array or ArrayBuffer view, got "+typeof e.value);let t=e.value;this.writer_.writeVarInt53(t.byteLength),this.writer_.writeBytes(t)}}writeKeyValuePairs_(e){let t=e?e.length:0;if(this.writer_.writeVarInt53(t),!(!e||!e.length))for(let i of e)this.writeKeyValuePair_(i)}writeDeltaKeyValuePairs_(e){let t=e?e.length:0;if(this.writer_.writeVarInt53(t),!e||!e.length)return;let i=[...e].sort((s,n)=>s.type<n.type?-1:s.type>n.type?1:0),r=BigInt(0);for(let s of i){let n=s.type-r;if(this.writer_.writeVarInt62(n),r=s.type,s.type%BigInt(2)===BigInt(0)){if(typeof s.value!="bigint")throw new Error("Invalid value type for even key "+s.type+": expected bigint, got "+typeof s.value);this.writer_.writeVarInt62(s.value)}else{if(!ArrayBuffer.isView(s.value))throw new Error("Invalid value type for odd key "+s.type+": expected Uint8Array");let a=s.value;this.writer_.writeVarInt53(a.byteLength),this.writer_.writeBytes(a)}}}writeParams_(e){P.isDraft16(this.version_)?this.writeDeltaKeyValuePairs_(e):this.writeKeyValuePairs_(e)}encodeFilterBytes_(e,t,i){let r=new qi(32,qi.Endianness.BIG_ENDIAN);if(r.writeVarInt53(e),e===P.FilterType.ABSOLUTE_START||e===P.FilterType.ABSOLUTE_RANGE){if(!t)throw new Error("Missing startLocation for absolute filter");r.writeVarInt62(t.group),r.writeVarInt62(t.object)}if(e===P.FilterType.ABSOLUTE_START){if(i===void 0)throw new Error("Missing endGroup for absolute range filter");r.writeVarInt62(i)}return r.getBytes()}marshalWithLength(e,t){this.writer_.writeUint8(e);let i=this.writer_.getPosition();this.writer_.writeUint16(0);let r=this.writer_.getPosition();t();let s=this.writer_.getPosition()-r;this.writer_.patchUint16(i,s)}marshal_(e,t){return this.marshalWithLength(e,t),this}marshalGoaway(e){let t=P.MessageTypeId;return this.marshal_(t.GOAWAY,()=>{this.writeString_(e.newSessionUri)})}marshalMaxRequestId(e){let t=P.MessageTypeId;return this.marshal_(t.MAX_REQUEST_ID,()=>{this.writer_.writeVarInt62(e.requestId)})}marshalRequestsBlocked(e){let t=P.MessageTypeId;return this.marshal_(t.REQUESTS_BLOCKED,()=>{this.writer_.writeVarInt62(e.maximumRequestId)})}marshalSubscribe(e){return P.isDraft16(this.version_)?this.marshalSubscribeDraft16_(e):this.marshalSubscribeDraft14_(e)}marshalSubscribeDraft14_(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE,()=>{if(this.writer_.writeVarInt62(e.requestId),this.writeTuple_(e.namespace),this.writeString_(e.name),this.writer_.writeUint8(e.subscriberPriority),this.writer_.writeUint8(e.groupOrder),this.writeBoolAsUint8_(e.forward),this.writer_.writeUint8(e.filterType),e.filterType===P.FilterType.ABSOLUTE_START||e.filterType===P.FilterType.ABSOLUTE_RANGE){if(!e.startLocation)throw new Error("Missing startLocation for absolute filter");this.writeLocation_(e.startLocation)}if(e.filterType===P.FilterType.ABSOLUTE_RANGE){if(!e.endGroup)throw new Error("Missing endGroup for absolute range filter");this.writer_.writeVarInt62(e.endGroup)}this.writeKeyValuePairs_(e.params)})}marshalSubscribeDraft16_(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE,()=>{this.writer_.writeVarInt62(e.requestId),this.writeTuple_(e.namespace),this.writeString_(e.name);let i=e.params||[],r=BigInt(16),s=BigInt(32),n=BigInt(33),a=BigInt(34);i.push({type:r,value:BigInt(e.forward?1:0)}),i.push({type:s,value:BigInt(e.subscriberPriority)});let o=e.filterType;i.push({type:n,value:this.encodeFilterBytes_(o,e.startLocation,e.endGroup)}),i.push({type:a,value:BigInt(e.groupOrder)}),this.writeDeltaKeyValuePairs_(i)})}marshalSubscribeOk(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_OK,()=>{if(this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.expires),this.writer_.writeUint8(e.groupOrder),this.writeBoolAsUint8_(e.contentExists),e.contentExists){if(!e.largest)throw new Error("Missing largest for contentExists");this.writeLocation_(e.largest)}this.writeParams_(e.params)})}marshalSubscribeError(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_ERROR,()=>{var i;this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),P.isDraft16(this.version_)&&this.writer_.writeVarInt62((i=e.retryInterval)!=null?i:BigInt(0)),this.writeString_(e.reason)})}marshalSubscribeUpdate(e){return P.isDraft16(this.version_)?this.marshalSubscribeUpdateDraft16_(e):this.marshalSubscribeUpdateDraft14_(e)}marshalSubscribeUpdateDraft14_(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_UPDATE,()=>{this.writer_.writeVarInt62(e.requestId),this.writeLocation_(e.startLocation),this.writer_.writeVarInt62(e.endGroup),this.writer_.writeUint8(e.subscriberPriority),this.writeBoolAsUint8_(e.forward),this.writeKeyValuePairs_(e.params)})}marshalSubscribeUpdateDraft16_(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_UPDATE,()=>{this.writer_.writeVarInt62(e.requestId);let i=e.params||[],r=BigInt(16),s=BigInt(32),n=BigInt(33);i.push({type:r,value:BigInt(e.forward?1:0)}),i.push({type:s,value:BigInt(e.subscriberPriority)});let a=e.endGroup>BigInt(0)?P.FilterType.ABSOLUTE_RANGE:P.FilterType.ABSOLUTE_START;i.push({type:n,value:this.encodeFilterBytes_(a,e.startLocation,e.endGroup)}),this.writeDeltaKeyValuePairs_(i)})}marshalUnsubscribe(e){let t=P.MessageTypeId;return this.marshal_(t.UNSUBSCRIBE,()=>{this.writer_.writeVarInt62(e.requestId)})}marshalPublishDone(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_DONE,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason),this.writer_.writeVarInt53(e.streamCount)})}marshalPublish(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH,()=>{if(this.writer_.writeVarInt62(e.requestId),this.writeTuple_(e.namespace),this.writeString_(e.name),this.writer_.writeVarInt62(e.trackAlias),this.writer_.writeUint8(e.groupOrder),this.writeBoolAsUint8_(e.contentExists),e.contentExists){if(!e.largestLocation)throw new Error("Missing largestLocation for contentExists");this.writeLocation_(e.largestLocation)}this.writeBoolAsUint8_(e.forward),this.writeParams_(e.params)})}marshalPublishOk(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_OK,()=>{if(this.writer_.writeVarInt62(e.requestId),this.writeBoolAsUint8_(e.forward),this.writer_.writeUint8(e.subscriberPriority),this.writer_.writeUint8(e.groupOrder),this.writer_.writeUint8(e.filterType),e.filterType===P.FilterType.ABSOLUTE_START||e.filterType===P.FilterType.ABSOLUTE_RANGE){if(!e.startLocation)throw new Error("Missing startLocation for absolute filter");this.writeLocation_(e.startLocation)}if(e.filterType===P.FilterType.ABSOLUTE_RANGE){if(!e.endGroup)throw new Error("Missing endGroup for absolute range filter");this.writer_.writeVarInt62(e.endGroup)}this.writeParams_(e.params)})}marshalPublishError(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_ERROR,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason)})}marshalFetch(e){let t=P.MessageTypeId;return this.marshal_(t.FETCH,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeUint8(e.subscriberPriority),this.writer_.writeUint8(e.groupOrder),this.writer_.writeVarInt62(BigInt(e.fetchType)),this.writeTuple_(e.namespace),this.writeString_(e.trackName),this.writer_.writeVarInt62(e.startGroup),this.writer_.writeVarInt62(e.startObject),this.writer_.writeVarInt62(e.endGroup),this.writer_.writeVarInt62(e.endObject),this.writeParams_(e.params)})}marshalFetchOk(e){let t=P.MessageTypeId;return this.marshal_(t.FETCH,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeUint8(e.groupOrder),this.writer_.writeVarInt62(BigInt(e.endOfTrack)),this.writer_.writeVarInt62(e.endGroup),this.writer_.writeVarInt62(e.endObject),this.writeParams_(e.params)})}marshalFetchError(e){let t=P.MessageTypeId;return this.marshal_(t.FETCH_ERROR,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason)})}marshalFetchCancel(e){let t=P.MessageTypeId;return this.marshal_(t.FETCH_CANCEL,()=>{this.writer_.writeVarInt62(e.requestId)})}marshalPublishNamespace(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_NAMESPACE,()=>{this.writer_.writeVarInt62(e.requestId),this.writeTuple_(e.namespace),this.writeParams_(e.params)})}marshalPublishNamespaceOk(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_NAMESPACE_OK,()=>{this.writer_.writeVarInt62(e.requestId),P.isDraft16(this.version_)&&this.writeDeltaKeyValuePairs_([])})}marshalPublishNamespaceError(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_NAMESPACE_ERROR,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason)})}marshalPublishNamespaceDone(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_NAMESPACE_DONE,()=>{this.writeTuple_(e.namespace)})}marshalPublishNamespaceCancel(e){let t=P.MessageTypeId;return this.marshal_(t.PUBLISH_NAMESPACE_CANCEL,()=>{this.writeTuple_(e.namespace),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason)})}marshalSubscribeNamespace(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_NAMESPACE,()=>{this.writer_.writeVarInt62(e.requestId),this.writeTuple_(e.namespace),this.writeParams_(e.params)})}marshalSubscribeNamespaceOk(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_NAMESPACE_OK,()=>{this.writer_.writeVarInt62(e.requestId)})}marshalSubscribeNamespaceError(e){let t=P.MessageTypeId;return this.marshal_(t.SUBSCRIBE_NAMESPACE_ERROR,()=>{this.writer_.writeVarInt62(e.requestId),this.writer_.writeVarInt62(e.code),this.writeString_(e.reason)})}marshalUnsubscribeNamespace(e){let t=P.MessageTypeId;return this.marshal_(t.UNSUBSCRIBE_NAMESPACE,()=>{this.writeTuple_(e.namespace)})}marshalClientSetup(e){let t=P.MessageTypeId;return this.marshal_(t.CLIENT_SETUP,()=>{P.isDraft16(this.version_)||this.writeArray_(e.versions||[],i=>this.writer_.writeVarInt53(i)),this.writeParams_(e.params)})}marshalServerSetup(e){let t=P.MessageTypeId;return this.marshal_(t.SERVER_SETUP,()=>{P.isDraft16(this.version_)||this.writer_.writeVarInt53(e.version),this.writeParams_(e.params)})}};/*! @license
|
|
736
|
+
* Shaka Player
|
|
737
|
+
* Copyright 2016 Google LLC
|
|
738
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
739
|
+
*/var Qn=class{constructor(e,t,i){l(this,"decoder_");l(this,"encoder_");l(this,"mutex_");this.decoder_=new oo(e,i),this.encoder_=new lo(t,i),this.mutex_=new Zr}async receive(){return await this.decoder_.message()}async send(e){await this.mutex_.acquire("ControlStream.send");try{p.debug("Sending control message:",e),await this.encoder_.message(e)}finally{this.mutex_.release()}}},oo=class{constructor(e,t){l(this,"reader_");l(this,"version_");this.reader_=e,this.version_=t}async messageType_(){let e=await this.reader_.u53(),t=await this.reader_.read(2),i=t[0]<<8|t[1];p.v1(`Raw message type: 0x${e.toString(16)}`,`Message length (16-bit MSB): ${i} bytes,
|
|
740
|
+
actual length: ${this.reader_.getByteLength()}`);let r;switch(e){case P.MessageTypeId.GOAWAY:r=P.MessageType.GOAWAY;break;case P.MessageTypeId.MAX_REQUEST_ID:r=P.MessageType.MAX_REQUEST_ID;break;case P.MessageTypeId.REQUESTS_BLOCKED:r=P.MessageType.REQUESTS_BLOCKED;break;case P.MessageTypeId.SUBSCRIBE:r=P.MessageType.SUBSCRIBE;break;case P.MessageTypeId.SUBSCRIBE_OK:r=P.MessageType.SUBSCRIBE_OK;break;case P.MessageTypeId.SUBSCRIBE_ERROR:r=P.MessageType.SUBSCRIBE_ERROR;break;case P.MessageTypeId.SUBSCRIBE_UPDATE:r=P.MessageType.SUBSCRIBE_UPDATE;break;case P.MessageTypeId.UNSUBSCRIBE:r=P.MessageType.UNSUBSCRIBE;break;case P.MessageTypeId.PUBLISH_DONE:r=P.MessageType.PUBLISH_DONE;break;case P.MessageTypeId.PUBLISH:r=P.MessageType.PUBLISH;break;case P.MessageTypeId.PUBLISH_OK:r=P.MessageType.PUBLISH_OK;break;case P.MessageTypeId.PUBLISH_ERROR:r=P.MessageType.PUBLISH_ERROR;break;case P.MessageTypeId.FETCH:r=P.MessageType.FETCH;break;case P.MessageTypeId.FETCH_OK:r=P.MessageType.FETCH_OK;break;case P.MessageTypeId.FETCH_ERROR:r=P.MessageType.FETCH_ERROR;break;case P.MessageTypeId.FETCH_CANCEL:r=P.MessageType.FETCH_CANCEL;break;case P.MessageTypeId.TRACK_STATUS:r=P.MessageType.TRACK_STATUS;break;case P.MessageTypeId.TRACK_STATUS_OK:r=P.MessageType.TRACK_STATUS_OK;break;case P.MessageTypeId.TRACK_STATUS_ERROR:r=P.MessageType.TRACK_STATUS_ERROR;break;case P.MessageTypeId.PUBLISH_NAMESPACE:r=P.MessageType.PUBLISH_NAMESPACE;break;case P.MessageTypeId.PUBLISH_NAMESPACE_OK:r=P.MessageType.PUBLISH_NAMESPACE_OK;break;case P.MessageTypeId.PUBLISH_NAMESPACE_ERROR:r=P.MessageType.PUBLISH_NAMESPACE_ERROR;break;case P.MessageTypeId.PUBLISH_NAMESPACE_DONE:r=P.MessageType.PUBLISH_NAMESPACE_DONE;break;case P.MessageTypeId.PUBLISH_NAMESPACE_CANCEL:r=P.MessageType.PUBLISH_NAMESPACE_CANCEL;break;case P.MessageTypeId.SUBSCRIBE_NAMESPACE:r=P.MessageType.SUBSCRIBE_NAMESPACE;break;case P.MessageTypeId.SUBSCRIBE_NAMESPACE_OK:r=P.MessageType.SUBSCRIBE_NAMESPACE_OK;break;case P.MessageTypeId.SUBSCRIBE_NAMESPACE_ERROR:r=P.MessageType.SUBSCRIBE_NAMESPACE_ERROR;break;case P.MessageTypeId.UNSUBSCRIBE_NAMESPACE:r=P.MessageType.UNSUBSCRIBE_NAMESPACE;break;default:throw new Error(`Unknown message type: 0x${e.toString(16)}`)}return p.v1(`Parsed message type: ${r} (0x${e.toString(16)})`),r}async message(){let e=await this.messageType_(),t;switch(e){case P.MessageType.GOAWAY:t=await this.goaway_();break;case P.MessageType.MAX_REQUEST_ID:t=await this.maxRequestId_();break;case P.MessageType.REQUESTS_BLOCKED:t=await this.requestsBlocked_();break;case P.MessageType.SUBSCRIBE:t=await this.subscribe_();break;case P.MessageType.SUBSCRIBE_OK:t=await this.subscribeOk_();break;case P.MessageType.SUBSCRIBE_ERROR:t=await this.subscribeError_();break;case P.MessageType.SUBSCRIBE_UPDATE:t=await this.subscribeUpdate_();break;case P.MessageType.UNSUBSCRIBE:t=await this.unsubscribe_();break;case P.MessageType.PUBLISH_DONE:t=await this.publishDone_();break;case P.MessageType.PUBLISH:t=await this.publish_();break;case P.MessageType.PUBLISH_OK:t=await this.publishOk_();break;case P.MessageType.PUBLISH_ERROR:t=await this.publishError_();break;case P.MessageType.FETCH:throw new Error(`Unsupported message type: ${e}`);case P.MessageType.FETCH_OK:t=await this.fetchOk_();break;case P.MessageType.FETCH_ERROR:t=await this.fetchError_();break;case P.MessageType.FETCH_CANCEL:case P.MessageType.TRACK_STATUS:case P.MessageType.TRACK_STATUS_OK:case P.MessageType.TRACK_STATUS_ERROR:throw new Error(`Unsupported message type: ${e}`);case P.MessageType.PUBLISH_NAMESPACE:t=await this.publishNamespace_();break;case P.MessageType.PUBLISH_NAMESPACE_OK:t=await this.publishNamespaceOk_();break;case P.MessageType.PUBLISH_NAMESPACE_ERROR:t=await this.publishNamespaceError_();break;case P.MessageType.PUBLISH_NAMESPACE_DONE:t=await this.publishNamespaceDone_();break;case P.MessageType.PUBLISH_NAMESPACE_CANCEL:t=await this.publishNamespaceCancel_();break;case P.MessageType.SUBSCRIBE_NAMESPACE:t=await this.subscribeNamespace_();break;case P.MessageType.SUBSCRIBE_NAMESPACE_OK:t=await this.subscribeNamespaceOk_();break;case P.MessageType.SUBSCRIBE_NAMESPACE_ERROR:t=await this.subscribeNamespaceError_();break;case P.MessageType.UNSUBSCRIBE_NAMESPACE:t=await this.unsubscribeNamespace_();break;default:throw new Error(`Unsupported message type: ${e}`)}return p.debug(`Successfully parsed ${e} message:`,t),t}readParams_(){return P.isDraft16(this.version_)?this.reader_.deltaKeyValuePairs():this.reader_.keyValuePairs()}findParamVarInt_(e,t,i){let r=e.find(s=>s.type===t);return r&&typeof r.value=="bigint"?r.value:i}findParamBytes_(e,t){let i=e.find(r=>r.type===t);return i&&ArrayBuffer.isView(i.value)?i.value:null}parseGroupOrder_(e){switch(e){case 0:return P.GroupOrder.PUBLISHER;case 1:return P.GroupOrder.ASCENDING;case 2:return P.GroupOrder.DESCENDING;default:throw new Error(`Invalid GroupOrder value: ${e}`)}}parseLocationFromBytes_(e){let t=0,{value:i,bytesRead:r}=this.decodeVarIntFromBytes_(e,t);t+=r;let{value:s}=this.decodeVarIntFromBytes_(e,t);return{group:i,object:s}}decodeVarIntFromBytes_(e,t){let i=e[t],r=i>>6,s;switch(r){case 0:s=1;break;case 1:s=2;break;case 2:s=4;break;case 3:s=8;break;default:throw new Error(`Invalid var int prefix: ${r}`)}let n=BigInt(i&63);for(let a=1;a<s;a++)n=n<<BigInt(8)|BigInt(e[t+a]);return{value:n,bytesRead:s}}async decodeGroupOrder_(){let e=await this.reader_.u8();switch(p.debug(`Raw group order code: ${e}`),e){case 0:return P.GroupOrder.PUBLISHER;case 1:return P.GroupOrder.ASCENDING;case 2:return P.GroupOrder.DESCENDING;default:throw new Error(`Invalid GroupOrder value: ${e}`)}}async location_(){return{group:await this.reader_.u62(),object:await this.reader_.u62()}}async goaway_(){let e=await this.reader_.string();return{kind:P.MessageType.GOAWAY,newSessionUri:e}}async maxRequestId_(){let e=await this.reader_.u62();return{kind:P.MessageType.MAX_REQUEST_ID,requestId:e}}async requestsBlocked_(){let e=await this.reader_.u62();return{kind:P.MessageType.REQUESTS_BLOCKED,maximumRequestId:e}}async subscribe_(){let e=await this.reader_.u62(),t=await this.reader_.tuple(),i=await this.reader_.string(),r=await this.reader_.u8(),s=await this.decodeGroupOrder_(),n=await this.reader_.u8Bool(),a=await this.reader_.u8(),o;(a===P.FilterType.ABSOLUTE_START||a===P.FilterType.ABSOLUTE_RANGE)&&(o=await this.location_());let c;a===P.FilterType.ABSOLUTE_RANGE&&(c=await this.reader_.u62());let d=await this.reader_.keyValuePairs();return{kind:P.MessageType.SUBSCRIBE,requestId:e,namespace:t,name:i,subscriberPriority:r,groupOrder:s,forward:n,filterType:a,startLocation:o,endGroup:c,params:d}}subscribeOk_(){return P.isDraft16(this.version_)?this.subscribeOkDraft16_():this.subscribeOkDraft14_()}async subscribeOkDraft14_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i=await this.reader_.u62(),r=await this.decodeGroupOrder_(),s=await this.reader_.u8Bool(),n;s&&(n=await this.location_());let a=await this.reader_.keyValuePairs();return{kind:P.MessageType.SUBSCRIBE_OK,requestId:e,trackAlias:t,expires:i,groupOrder:r,contentExists:s,largest:n,params:a}}async subscribeOkDraft16_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i=await this.reader_.deltaKeyValuePairs(),r=BigInt(8),s=BigInt(9),n=BigInt(34),a=this.findParamVarInt_(i,r,BigInt(0)),o=this.findParamVarInt_(i,n,BigInt(0)),c=this.parseGroupOrder_(Number(o)),d=this.findParamBytes_(i,s),u=!1,m;return d&&d.length>0&&(u=!0,m=this.parseLocationFromBytes_(d)),{kind:P.MessageType.SUBSCRIBE_OK,requestId:e,trackAlias:t,expires:a,groupOrder:c,contentExists:u,largest:m,params:i}}async subscribeError_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i;P.isDraft16(this.version_)&&(i=await this.reader_.u62());let r=await this.reader_.string();return{kind:P.MessageType.SUBSCRIBE_ERROR,requestId:e,code:t,retryInterval:i,reason:r}}async subscribeUpdate_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i=await this.location_(),r=await this.reader_.u62(),s=await this.reader_.u8(),n=await this.reader_.u8Bool(),a=await this.reader_.keyValuePairs();return{kind:P.MessageType.SUBSCRIBE_UPDATE,requestId:e,subscriptionRequestId:t,startLocation:i,endGroup:r,subscriberPriority:s,forward:n,params:a}}async unsubscribe_(){let e=await this.reader_.u62();return{kind:P.MessageType.UNSUBSCRIBE,requestId:e}}async publishDone_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i=await this.reader_.u53(),r=await this.reader_.string();return{kind:P.MessageType.PUBLISH_DONE,requestId:e,code:t,streamCount:i,reason:r}}async publish_(){let e=await this.reader_.u62(),t=await this.reader_.tuple(),i=await this.reader_.string(),r=await this.reader_.u62(),s=await this.decodeGroupOrder_(),n=await this.reader_.u8Bool(),a;n&&(a=await this.location_());let o=await this.reader_.u8Bool(),c=await this.reader_.keyValuePairs();return{kind:P.MessageType.PUBLISH,requestId:e,namespace:t,name:i,trackAlias:r,groupOrder:s,contentExists:n,largestLocation:a,forward:o,params:c}}async publishOk_(){let e=await this.reader_.u62(),t=await this.reader_.u8Bool(),i=await this.reader_.u8(),r=await this.decodeGroupOrder_(),s=await this.reader_.u8(),n;(s===P.FilterType.ABSOLUTE_START||s===P.FilterType.ABSOLUTE_RANGE)&&(n=await this.location_());let a;s===P.FilterType.ABSOLUTE_RANGE&&(a=await this.reader_.u62());let o=await this.reader_.keyValuePairs();return{kind:P.MessageType.PUBLISH_OK,requestId:e,forward:t,subscriberPriority:i,groupOrder:r,filterType:s,startLocation:n,endGroup:a,params:o}}async publishError_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i;P.isDraft16(this.version_)&&(i=await this.reader_.u62());let r=await this.reader_.string();return{kind:P.MessageType.PUBLISH_ERROR,requestId:e,code:t,retryInterval:i,reason:r}}async fetchOk_(){let e=await this.reader_.u62(),t=await this.decodeGroupOrder_(),i=await this.reader_.u8(),r=await this.reader_.u62(),s=await this.reader_.u62(),n=await this.reader_.keyValuePairs();return{kind:P.MessageType.FETCH_OK,requestId:e,groupOrder:t,endOfTrack:i,endGroup:r,endObject:s,params:n}}async fetchError_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i;P.isDraft16(this.version_)&&(i=await this.reader_.u62());let r=await this.reader_.string();return{kind:P.MessageType.FETCH_ERROR,requestId:e,code:t,retryInterval:i,reason:r}}async publishNamespace_(){let e=await this.reader_.u62(),t=await this.reader_.tuple(),i=await this.readParams_();return{kind:P.MessageType.PUBLISH_NAMESPACE,requestId:e,namespace:t,params:i}}async publishNamespaceOk_(){let e=await this.reader_.u62();return{kind:P.MessageType.PUBLISH_NAMESPACE_OK,requestId:e}}async publishNamespaceError_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i;P.isDraft16(this.version_)&&(i=await this.reader_.u62());let r=await this.reader_.string();return{kind:P.MessageType.PUBLISH_NAMESPACE_ERROR,requestId:e,code:t,retryInterval:i,reason:r}}async publishNamespaceDone_(){let e=await this.reader_.tuple();return{kind:P.MessageType.PUBLISH_NAMESPACE_DONE,namespace:e}}async publishNamespaceCancel_(){let e=await this.reader_.tuple(),t=await this.reader_.u62(),i=await this.reader_.string();return{kind:P.MessageType.PUBLISH_NAMESPACE_CANCEL,namespace:e,code:t,reason:i}}async subscribeNamespace_(){let e=await this.reader_.u62(),t=await this.reader_.tuple(),i=await this.reader_.keyValuePairs();return{kind:P.MessageType.SUBSCRIBE_NAMESPACE,requestId:e,namespace:t,params:i}}async subscribeNamespaceOk_(){let e=await this.reader_.u62();return{kind:P.MessageType.SUBSCRIBE_NAMESPACE_OK,requestId:e}}async subscribeNamespaceError_(){let e=await this.reader_.u62(),t=await this.reader_.u62(),i;P.isDraft16(this.version_)&&(i=await this.reader_.u62());let r=await this.reader_.string();return{kind:P.MessageType.SUBSCRIBE_NAMESPACE_ERROR,requestId:e,code:t,retryInterval:i,reason:r}}async unsubscribeNamespace_(){let e=await this.reader_.tuple();return{kind:P.MessageType.UNSUBSCRIBE_NAMESPACE,namespace:e}}},lo=class{constructor(e,t){l(this,"writer_");l(this,"version_");this.writer_=e,this.version_=t}async message(e){p.debug(`Encoding message of type: ${e.kind}`);let t=new ns(this.version_);switch(e.kind){case P.MessageType.GOAWAY:t.marshalGoaway(e);break;case P.MessageType.MAX_REQUEST_ID:t.marshalMaxRequestId(e);break;case P.MessageType.REQUESTS_BLOCKED:t.marshalRequestsBlocked(e);break;case P.MessageType.SUBSCRIBE:t.marshalSubscribe(e);break;case P.MessageType.SUBSCRIBE_OK:t.marshalSubscribeOk(e);break;case P.MessageType.SUBSCRIBE_ERROR:t.marshalSubscribeError(e);break;case P.MessageType.SUBSCRIBE_UPDATE:t.marshalSubscribeUpdate(e);break;case P.MessageType.UNSUBSCRIBE:t.marshalUnsubscribe(e);break;case P.MessageType.PUBLISH_DONE:t.marshalPublishDone(e);break;case P.MessageType.PUBLISH:t.marshalPublish(e);break;case P.MessageType.PUBLISH_OK:t.marshalPublishOk(e);break;case P.MessageType.PUBLISH_ERROR:t.marshalPublishError(e);break;case P.MessageType.FETCH:t.marshalFetch(e);break;case P.MessageType.FETCH_OK:t.marshalFetchOk(e);break;case P.MessageType.FETCH_ERROR:t.marshalFetchError(e);break;case P.MessageType.FETCH_CANCEL:t.marshalFetchCancel(e);break;case P.MessageType.TRACK_STATUS:case P.MessageType.TRACK_STATUS_OK:case P.MessageType.TRACK_STATUS_ERROR:throw new Error(`Unsupported message type for encoding: ${e.kind}`);case P.MessageType.PUBLISH_NAMESPACE:t.marshalPublishNamespace(e);break;case P.MessageType.PUBLISH_NAMESPACE_OK:t.marshalPublishNamespaceOk(e);break;case P.MessageType.PUBLISH_NAMESPACE_ERROR:t.marshalPublishNamespaceError(e);break;case P.MessageType.PUBLISH_NAMESPACE_DONE:t.marshalPublishNamespaceDone(e);break;case P.MessageType.PUBLISH_NAMESPACE_CANCEL:t.marshalPublishNamespaceCancel(e);break;case P.MessageType.SUBSCRIBE_NAMESPACE:t.marshalSubscribeNamespace(e);break;case P.MessageType.SUBSCRIBE_NAMESPACE_OK:t.marshalSubscribeNamespaceOk(e);break;case P.MessageType.SUBSCRIBE_NAMESPACE_ERROR:t.marshalSubscribeNamespaceError(e);break;case P.MessageType.UNSUBSCRIBE_NAMESPACE:t.marshalUnsubscribeNamespace(e);break;default:throw new Error(`Unsupported message type for encoding: ${e.kind}`)}let i=t.getBytes();p.v1(`Marshaled ${i.length} bytes for message type: ${e.kind}`),await this.writer_.write(i)}};/*! @license
|
|
741
|
+
* Shaka Player
|
|
742
|
+
* Copyright 2016 Google LLC
|
|
743
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
744
|
+
*/var as=class{constructor(e,t){l(this,"buffer_");l(this,"stream_");l(this,"reader_");this.buffer_=e,this.stream_=t,this.reader_=t.getReader()}getByteLength(){return this.buffer_.byteLength}getBuffer(){return D.toUint8(this.buffer_)}async fill_(){let e=await this.reader_.read();if(e.done)return!1;let t=D.toUint8(e.value);if(this.buffer_.byteLength===0)this.buffer_=t;else{let i=new Uint8Array(this.buffer_.byteLength+t.byteLength);i.set(this.buffer_),i.set(t,this.buffer_.byteLength),this.buffer_=i}return!0}async fillTo_(e){for(;this.buffer_.byteLength<e;)if(!await this.fill_())throw new Error("unexpected end of stream")}slice_(e){let t=D.toUint8(this.buffer_,0,e);return this.buffer_=D.toUint8(this.buffer_,e),t}async read(e){return e===0?new Uint8Array([]):(await this.fillTo_(e),this.slice_(e))}async readAll(){for(;await this.fill_(););return this.slice_(this.buffer_.byteLength)}async tuple(){let e=await this.u53(),t=[];for(let i=0;i<e;i++){let r=await this.u53(),s=await this.read(r),n=q.fromUTF8(s);t.push(n)}return t}async string(e){let t=await this.u53();if(e!==void 0&&t>e)throw new Error(`string length ${t} exceeds max length ${e}`);let i=await this.read(t);return q.fromUTF8(i)}async u8(){return await this.fillTo_(1),this.slice_(1)[0]}async u8Bool(){return await this.u8()!==0}async u53(){return(await this.u53WithSize()).value}async u53WithSize(){let e=await this.u62WithSize(),t=e.value;if(t>Number.MAX_SAFE_INTEGER)throw new Error("value larger than 53-bits; use v62 instead");return{value:Number(t),bytesRead:e.bytesRead}}async u62(){return(await this.u62WithSize()).value}async u62WithSize(){await this.fillTo_(1);let e=(this.buffer_[0]&192)>>6,t,i;if(e===0){i=1;let r=this.slice_(1)[0];t=BigInt(r)&BigInt("0x3f")}else if(e===1){i=2,await this.fillTo_(2);let r=this.slice_(2),s=D.toDataView(r);t=BigInt(s.getInt16(0))&BigInt("0x3fff")}else if(e===2){i=4,await this.fillTo_(4);let r=this.slice_(4),s=D.toDataView(r);t=BigInt(s.getUint32(0))&BigInt("0x3fffffff")}else if(e===3){i=8,await this.fillTo_(8);let r=this.slice_(8),s=D.toDataView(r);t=BigInt(s.getBigUint64(0))&BigInt("0x3fffffffffffffff")}else throw new Error(`invalid size: ${e}`);return{value:t,bytesRead:i}}async keyValuePairs(){let e=await this.u53(),t=[];for(let i=0;i<e;i++){let r=await this.u62();if(r%BigInt(2)===BigInt(0)){let s=await this.u62();t.push({type:r,value:s})}else{let s=await this.u53(),n=await this.read(s);t.push({type:r,value:n})}}return t}async deltaKeyValuePairs(){let e=await this.u53(),t=[],i=BigInt(0);for(let r=0;r<e;r++){let s=await this.u62(),n=i+s;if(i=n,n%BigInt(2)===BigInt(0)){let a=await this.u62();t.push({type:n,value:a})}else{let a=await this.u53(),o=await this.read(a);t.push({type:n,value:o})}}return t}async done(){return this.buffer_.byteLength>0?!1:!await this.fill_()}async close(){this.reader_.releaseLock(),await this.stream_.cancel("Reader closed")}release(){this.reader_.releaseLock()}},Jn=class{constructor(e){l(this,"stream_");l(this,"writer_");this.stream_=e,this.writer_=e.getWriter()}async write(e){await this.writer_.write(e)}};/*! @license
|
|
745
|
+
* Shaka Player
|
|
746
|
+
* Copyright 2016 Google LLC
|
|
747
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
748
|
+
*/var Zn=class{constructor(e,t){l(this,"reader_");l(this,"version_");this.reader_=e,this.version_=t}async server(){let e=P.MessageTypeId.SERVER_SETUP;p.v1("Decoding server setup message...");let t=await this.reader_.u53();if(p.v1(`Setup message type: 0x${t.toString(16)}
|
|
749
|
+
(expected 0x${e.toString(16)})`),t!==e){let u=`Server SETUP type must be ${e}, got ${t}`;throw p.error(u),new Error(u)}let i=await this.reader_.read(2),r=i[0]<<8|i[1];p.v1(`Message length (16-bit MSB): ${r} bytes`);let s=this.reader_.getByteLength(),n;P.isDraft16(this.version_)?(n=this.version_,p.v1(`Using protocol-negotiated version 0x${n.toString(16)}`)):(n=await this.reader_.u53(),p.v1(`Server selected version: 0x${n.toString(16)}`));let a=P.isDraft16(this.version_)?await this.deltaParameters():await this.parameters();if(p.v1(`Parameters: ${a?`${a.length} parameters`:"none"}`),a&&a.length>0)for(let u of a)typeof u.value=="bigint"?p.v1(`Parameter ID: ${u.type}, value: ${u.value} (bigint)`):p.v1(`Parameter ID: ${u.type}, length:
|
|
750
|
+
${u.value.byteLength} bytes, value:
|
|
751
|
+
${this.formatBytes_(u.value)}`);let o=this.reader_.getByteLength(),c=s-o;if(c!==r){let u=`Message length mismatch: expected ${r}
|
|
752
|
+
bytes, read ${c} bytes`;p.warning(u)}let d={version:n,params:a};return p.debug("Server setup message decoded:",d),d}formatBytes_(e){if(e.length<=16)return Array.from(e).map(t=>t.toString(16).padStart(2,"0")).join(" ");{let t=Array.from(e.slice(0,8)).map(r=>r.toString(16).padStart(2,"0")).join(" "),i=Array.from(e.slice(-8)).map(r=>r.toString(16).padStart(2,"0")).join(" ");return`${t} ... ${i} (${e.length} bytes total)`}}async parameters(){let e=await this.reader_.u53WithSize(),t=e.value;if(p.v1(`Parameter count: ${t}, count field:
|
|
753
|
+
${e.bytesRead} bytes`),t===0)return;let i=[];for(let r=0;r<t;r++){let n=(await this.reader_.u62WithSize()).value;if(n%BigInt(2)===BigInt(0)){let o=await this.reader_.u62WithSize(),c=o.value;p.v1(`Parameter ${r+1}/${t}: Type ${n} (even),
|
|
754
|
+
Value: ${c} (${o.bytesRead} bytes)`);let d=i.findIndex(u=>u.type===n);d!==-1&&(p.warning(`Duplicate parameter type: ${n},
|
|
755
|
+
overwriting previous value`),i.splice(d,1)),i.push({type:n,value:c})}else{let c=(await this.reader_.u53WithSize()).value;if(c>65535){let m=`Parameter value length exceeds maximum: ${c} > 65535`;throw p.error(m),new Error(m)}let d=await this.reader_.read(c);p.v1(`Parameter ${r+1}/${t}: Type ${n} (odd),
|
|
756
|
+
Length: ${c}, Value: ${this.formatBytes_(d)}`);let u=i.findIndex(m=>m.type===n);u!==-1&&(p.warning(`Duplicate parameter type: ${n},
|
|
757
|
+
overwriting previous value`),i.splice(u,1)),i.push({type:n,value:d})}}return i}async deltaParameters(){let e=await this.reader_.u53WithSize(),t=e.value;if(p.v1(`Delta Parameter count: ${t}, count field:
|
|
758
|
+
${e.bytesRead} bytes`),t===0)return;let i=[],r=BigInt(0);for(let s=0;s<t;s++){let n=await this.reader_.u62(),a=r+n;if(r=a,a%BigInt(2)===BigInt(0)){let c=await this.reader_.u62();p.v1(`Delta parameter ${s+1}/${t}: Type ${a}
|
|
759
|
+
(delta ${n}, even), Value: ${c}`),i.push({type:a,value:c})}else{let c=await this.reader_.u53();if(c>65535){let u=`Parameter value length exceeds maximum: ${c} > 65535`;throw p.error(u),new Error(u)}let d=await this.reader_.read(c);p.v1(`Delta parameter ${s+1}/${t}: Type ${a}
|
|
760
|
+
(delta ${n}, odd), Length: ${c}`),i.push({type:a,value:d})}}return i}};/*! @license
|
|
761
|
+
* Shaka Player
|
|
762
|
+
* Copyright 2016 Google LLC
|
|
763
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
764
|
+
*/var ea=class{constructor(e,t){l(this,"writer_");l(this,"version_");this.writer_=e,this.version_=t}async client(e){p.debug("Encoding client setup message:",e);let t=new ns(this.version_);t.marshalClientSetup({versions:e.versions,params:e.params});let i=t.getBytes();p.v1(`Client setup message created: ${i.length} bytes`),await this.writer_.write(i),p.v1("Client setup message sent successfully")}};/*! @license
|
|
765
|
+
* Shaka Player
|
|
766
|
+
* Copyright 2016 Google LLC
|
|
767
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
768
|
+
*/var ta=class{constructor(e,t,i){l(this,"webTransport_");l(this,"controlStream_");l(this,"msfTransport_");l(this,"trackRegistry_");l(this,"nextRequestId_");l(this,"timersSet_");l(this,"isClosing_");l(this,"fetchCallbacks_");this.webTransport_=e,this.controlStream_=t,this.msfTransport_=i,this.trackRegistry_=new co,this.nextRequestId_=BigInt(0),this.timersSet_=new Set,this.isClosing_=!1,this.fetchCallbacks_=new Map,this.startListeningForStreams_()}getNextRequestId(){let e=this.nextRequestId_;return this.nextRequestId_+=BigInt(2),e}async startListeningForStreams_(){p.debug("Starting to listen for incoming unidirectional streams");try{let e=this.webTransport_.incomingUnidirectionalStreams.getReader();for(;;){let{value:t,done:i}=await e.read();if(i){p.debug("Incoming stream reader is done");break}this.handleIncomingStream_(t).catch(r=>{p.error("Error handling incoming stream:",r)})}}catch(e){p.error("Error listening for incoming streams:",e)}}isSubgroupStreamType_(e){let t=e&BigInt(31);return t>=BigInt(8)&&t<=BigInt(13)||t>=BigInt(16)&&t<=BigInt(21)||t>=BigInt(24)&&t<=BigInt(29)}hasDefaultPriority_(e){return(e&BigInt(32))!==BigInt(0)}async handleIncomingStream_(e){p.v1("Received new incoming unidirectional stream");let t=new as(new Uint8Array([]),e);try{let i=await t.u62();p.v1(`Incoming Unidirectional Stream. Type: ${i}`);let r=BigInt(5);this.isSubgroupStreamType_(i)?await this.handleSubgroupStream_(t,i):i===r?await this.handleFetchStream_(t):p.warning(`Unknown stream type: ${i}`)}catch(i){this.isClosing_?p.debug("Stream processing ended during shutdown"):p.error("Error processing incoming stream:",i)}finally{t.close()}}async handleSubgroupStream_(e,t){try{let i=await e.u62(),r=await e.u62();p.v1(`Track alias: ${i} Group ID: ${r}`);let s=null,n=t&BigInt(31),a=(n&BigInt(1))===BigInt(1),o=n&BigInt(7);if(o===BigInt(0)||o===BigInt(1))s=BigInt(0),p.v1(`Subgroup ID: ${s} (implicit zero)`);else if(o===BigInt(2)||o===BigInt(3))p.v1("Subgroup ID will be set to the first Object ID");else if(o===BigInt(4)||o===BigInt(5))s=await e.u62(),p.v1(`Subgroup ID: ${s} (explicit)`);else throw new Error(`Reserved SID mode: ${t}`);let c=0;this.hasDefaultPriority_(t)?p.v1("Publisher Priority: default (omitted, DEFAULT_PRIORITY bit set)"):(c=await e.u8(),p.v1(`Publisher Priority: ${c}`));let d=[],u=.1,m=5,f=50,g=!0;for(;!await e.done();){let _=Date.now(),T=await e.u62();p.v1(`Object ID: ${T}`),g&&s===null&&(s=T,p.v1(`Subgroup ID set to first Object ID: ${s}`)),g=!1;let S=null;if(a){let x=await e.u62();if(x>BigInt(0)){let k=Number(x);S=await e.read(k),p.v1(`Read ${k} bytes of extension headers`)}}let b=await e.u62();p.v1(`Object payload length: ${b}`);let E=null;b===BigInt(0)&&(E=await e.u62(),p.v1(`Object status: ${E}`));let C=b>BigInt(0)?await e.read(Number(b)):new Uint8Array([]);b>BigInt(0)&&p.v1(`Read ${C.byteLength} bytes of object data`);let A={trackAlias:i,location:{group:r,object:T,subgroup:s},data:C,extensions:S,status:E,payloadReadStartMs:_,receiveTimestampMs:Date.now()},w=!1,M=0;for(;!w&&M<m;){if(this.isClosing_){p.debug(`Track ${i} data discarded during shutdown
|
|
769
|
+
(buffered ${d.length} objects)`);return}let x=this.trackRegistry_.getTrackInfoFromAlias(i);if(x!=null&&x.closed){p.debug(`Ignoring object for closed track ${i}`);return}if(x&&x.callbacks.length>0){if(d.length>0){p.info(`Track ${i} now registered, delivering
|
|
770
|
+
${d.length} buffered objects`);for(let k of d)for(let L of x.callbacks)L(k);d.length=0}for(let k of x.callbacks)k(A);w=!0}else if(M===0&&(p.debug(`Track ${i} not registered yet, buffering
|
|
771
|
+
object (group=${r}, obj=${T})`),d.push(A),d.length>f&&(p.warning(`Buffer overflow for track ${i},
|
|
772
|
+
dropping oldest object
|
|
773
|
+
(buffered: ${d.length})`),d.shift())),M++,M<m){if(p.debug(`Retry ${M}/${m} for track
|
|
774
|
+
${i} (buffered: ${d.length})`),await it.delay(u),this.isClosing_){p.debug(`Track ${i} data discarded during
|
|
775
|
+
shutdown (buffered ${d.length} objects)`);return}}else if(this.isClosing_){p.debug(`Track ${i} data discarded during
|
|
776
|
+
shutdown (buffered ${d.length} objects)`);return}else{let k=`Track ${i} not registered after
|
|
777
|
+
${m*u}s. SUBSCRIBE_OK not received in
|
|
778
|
+
time. Connection may be broken. (buffered
|
|
779
|
+
${d.length} objects that will be discarded)`;throw new Error(k)}}}p.v1(`Finished processing SUBGROUP_HEADER stream for track
|
|
780
|
+
${i}`)}catch(i){if(this.isClosing_)p.debug("SUBGROUP_HEADER stream processing ended during shutdown");else throw p.error("Error processing SUBGROUP_HEADER stream:",i),i}}async handleFetchStream_(e){let t=await e.u62();p.debug(`Received FETCH_HEADER stream, requestId=${t}`);let i=this.fetchCallbacks_.get(t);if(!i){p.warning(`No callback registered for fetch requestId=${t}`);return}for(;!await e.done();){let r=Date.now(),s=await e.u62(),n=await e.u62(),a=await e.u62();await e.u8();let o=null,c=await e.u62();if(c>BigInt(0)){let f=Number(c);o=await e.read(f)}let d=await e.u62(),u=d>BigInt(0)?await e.read(Number(d)):new Uint8Array(0);p.v1(`Fetch object: group=${s}, subgroup=${n},
|
|
781
|
+
obj=${a}, len=${u.length}`);let m={trackAlias:BigInt(0),location:{group:s,object:a,subgroup:null},data:u,extensions:o,status:null,payloadReadStartMs:r,receiveTimestampMs:Date.now()};i(m)}this.fetchCallbacks_.delete(t)}notifyCallbacks_(e,t){let i=e.toString();p.debug(`Notifying callbacks for track ${e} (key: ${i}),
|
|
782
|
+
object ID: ${t.location.object}`);let r=this.trackRegistry_.getTrackInfoFromAlias(e);if(r&&r.callbacks.length>0){p.debug(`Found ${r.callbacks.length} callbacks in
|
|
783
|
+
registry for track ${e}`);for(let s=0;s<r.callbacks.length;s++)try{p.debug(`Executing registry callback #${s+1} for track
|
|
784
|
+
${e}`),r.callbacks[s](t),p.debug(`Successfully executed registry callback #${s+1}
|
|
785
|
+
for track ${e}`)}catch(n){p.error(`Error in registry object callback #${s+1} for
|
|
786
|
+
track ${e}:`,n)}}}release(){p.debug("Release tracks manager"),this.isClosing_=!0,this.trackRegistry_.clear();for(let e of this.timersSet_)e.stop();this.timersSet_.clear()}async fetchTrack(e,t,i){let r=e.join("/");p.debug(`Fetching track ${r}:${t}`);let s=this.getNextRequestId(),n={kind:P.MessageType.FETCH,requestId:s,subscriberPriority:0,groupOrder:P.GroupOrder.PUBLISHER,fetchType:P.FetchType.STANDALONE,namespace:e,trackName:t,startGroup:BigInt(0),startObject:BigInt(0),endGroup:BigInt(0),endObject:BigInt(0),params:[]};this.fetchCallbacks_.set(s,i);let a=this.msfTransport_,o=new Promise((c,d)=>{let u=a.registerMessageHandler(P.MessageType.FETCH_OK,s,()=>{p.debug(`Received FetchOk for
|
|
787
|
+
${r}:${t} with requestId ${s}`),m(),c()}),m=a.registerMessageHandler(P.MessageType.FETCH_ERROR,s,f=>{p.error(`Fetch error for
|
|
788
|
+
${r}:${t}:`,f),u(),this.fetchCallbacks_.delete(s),d(f)})});p.debug(`Sending FETCH for ${r}:${t}
|
|
789
|
+
with requestId ${s}`),await this.controlStream_.send(n),await o}async subscribeTrack(e,t,i){let r=e.join("/");p.debug(`Subscribing to track ${r}:${t}`);let s=this.getNextRequestId(),n={kind:P.MessageType.SUBSCRIBE,requestId:s,namespace:e,name:t,subscriberPriority:0,groupOrder:P.GroupOrder.PUBLISHER,forward:!0,filterType:this.msfTransport_.getConfiguration().subscribeFilterType,params:[]};p.debug(`Sending subscribe message for
|
|
790
|
+
${r}:${t} with requestId ${s}`);try{let a=this.msfTransport_,o=new Promise((d,u)=>{let m=a.registerMessageHandler(P.MessageType.SUBSCRIBE_OK,s,_=>{let T=_;p.debug(`Received SubscribeOk for
|
|
791
|
+
${r}:${t} with requestId ${s},
|
|
792
|
+
trackAlias ${T.trackAlias}`),d(T.trackAlias)}),f=a.registerMessageHandler(P.MessageType.SUBSCRIBE_ERROR,s,_=>{m(),p.error(`Received SubscribeError for
|
|
793
|
+
${r}:${t}:`,_),u(_)});new ae(()=>{m(),f(),u(new Error(`Subscribe timeout (2000ms) for
|
|
794
|
+
${r}:${t} with requestId ${s}`))}).tickAfter(2)});await this.controlStream_.send(n);let c=await o;return this.trackRegistry_.registerTrackWithAlias(e,t,s,c),this.trackRegistry_.registerCallback(c,i),p.debug(`Successfully subscribed to
|
|
795
|
+
${r}:${t} with trackAlias ${c}`),c}catch(a){throw p.error(`Error subscribing to track ${r}:${t}:`,a),a}}async unsubscribeTrack(e){p.debug(`Unsubscribing from track with alias ${e}`);let t=this.trackRegistry_.getTrackInfoFromAlias(e);if(!t)throw new Error(`Cannot unsubscribe: No track info found for alias
|
|
796
|
+
${e}`);let r=`${t.namespace.join("/")}:${t.trackName}`,s=t.requestId,n={kind:P.MessageType.UNSUBSCRIBE,requestId:s};p.debug(`Sending unsubscribe message for track ${r}
|
|
797
|
+
with original requestId ${s}`);try{let a=it.delay(.5);await this.controlStream_.send(n),await a,this.trackRegistry_.unregisterAllCallbacks(e),p.debug(`Successfully unsubscribed from track ${r}`)}catch(a){throw p.error(`Error unsubscribing from track ${r}:`,a),a}}handlePublishDone(e){p.debug(`PublishDone received for requestId ${e}`);let t=this.trackRegistry_.getTrackInfoFromRequestId(e);if(!t){p.warning(`PublishDone received for unknown requestId ${e}`);return}let i=t.trackAlias;p.debug(`Marking track ${i} as closed`),t.closed=!0,this.trackRegistry_.unregisterAllCallbacks(i)}},co=class{constructor(){l(this,"trackNameToInfo_");l(this,"trackAliasToInfo_");this.trackNameToInfo_=new Map,this.trackAliasToInfo_=new Map}getNamespaceTrackKey_(e,t){return`${e.join("/")}:${t}`}registerTrackWithAlias(e,t,i,r){let s=this.getNamespaceTrackKey_(e,t);this.trackNameToInfo_.has(s)&&p.warning(`Track ${e}:${t} already registered,
|
|
798
|
+
updating with new alias ${r}`);let n={namespace:e,trackName:t,trackAlias:r,requestId:i,callbacks:[],closed:!1};this.trackNameToInfo_.set(s,n),this.trackAliasToInfo_.set(r.toString(),n),p.debug(`Registered track ${e}:${t} with
|
|
799
|
+
server-assigned alias ${r} and request ID ${i}`)}getTrackInfoFromName(e,t){let i=this.getNamespaceTrackKey_(e,t);return this.trackNameToInfo_.get(i)}getTrackInfoFromAlias(e){return this.trackAliasToInfo_.get(e.toString())}registerCallback(e,t){let i=this.trackAliasToInfo_.get(e.toString());if(!i){p.warning(`Attempted to register callback for unknown track
|
|
800
|
+
alias ${e}`);return}i.callbacks.push(t),p.debug(`Registered callback for track
|
|
801
|
+
${i.namespace}:${i.trackName} (alias: ${e}),
|
|
802
|
+
total callbacks: ${i.callbacks.length}`)}unregisterCallback(e,t){let i=this.trackAliasToInfo_.get(e.toString());if(!i){p.warning(`Attempted to unregister callback for unknown track
|
|
803
|
+
alias ${e}`);return}let r=i.callbacks.indexOf(t);r!==-1&&(i.callbacks.splice(r,1),p.debug(`Unregistered callback for track
|
|
804
|
+
${i.namespace}:${i.trackName} (alias: ${e}),
|
|
805
|
+
remaining callbacks: ${i.callbacks.length}`))}unregisterAllCallbacks(e){let t=this.trackAliasToInfo_.get(e.toString());if(!t){p.warning(`Attempted to unregister callback for unknown track
|
|
806
|
+
alias ${e}`);return}let i=t.callbacks.length;t.callbacks=[],p.debug(`Unregistered all ${i} callbacks for track
|
|
807
|
+
${t.namespace}:${t.trackName} (alias: ${e})`)}getCallbacks(e){let t=this.trackAliasToInfo_.get(e.toString());return t?[...t.callbacks]:[]}getTrackInfoFromRequestId(e){for(let t of this.trackAliasToInfo_.values())if(t.requestId===e)return t;return null}clear(){this.trackNameToInfo_.clear(),this.trackAliasToInfo_.clear(),p.debug("Cleared all track registrations")}};/*! @license
|
|
808
|
+
* Shaka Player
|
|
809
|
+
* Copyright 2016 Google LLC
|
|
810
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
811
|
+
*/var ia=class{constructor(e){l(this,"webTransport_");l(this,"negotiatedVersion_");l(this,"config_");l(this,"nextRequestId_");l(this,"publishNamespaceCallbacks_");l(this,"messageHandlers_");l(this,"tracksManager_");this.webTransport_=null,this.negotiatedVersion_=null,this.config_=e,this.nextRequestId_=BigInt(0),this.publishNamespaceCallbacks_=new Set,this.messageHandlers_=new Map,this.tracksManager_=null}configure(e){this.config_=e}getConfiguration(){return this.config_}async connect(e,t,i){if(!window.WebTransport)throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.WEBTRANSPORT_NOT_AVAILABLE);let r={allowPooling:!1,congestionControl:"low-latency"};t&&(r.serverCertificateHashes=[{algorithm:"sha-256",value:t}]);let s="moq-00",n="moqt-16";switch(this.config_.version){case Dr.AUTO:r.protocols=[n,s];break;case Dr.DRAFT_16:r.protocols=[n];break}switch(this.webTransport_=new WebTransport(e,r),this.webTransport_.closed.catch(()=>{}),await this.webTransport_.ready,p.v1("WebTransport connection established"),this.config_.version){case Dr.DRAFT_14:this.negotiatedVersion_=P.Version.DRAFT_14;break;case Dr.DRAFT_16:this.negotiatedVersion_=P.Version.DRAFT_16;break;default:this.webTransport_.protocol===s?this.negotiatedVersion_=P.Version.DRAFT_14:this.negotiatedVersion_=P.Version.DRAFT_16;break}v.assert(this.negotiatedVersion_!=null,"this.negotiatedVersion_ must be non-null.");let a=await this.webTransport_.createBidirectionalStream();p.v1("Bidirectional stream created",a);let o=new Jn(a.writable),c=new as(new Uint8Array([]),a.readable),d=new ea(o,this.negotiatedVersion_);p.v1("Sending client setup message");let u=P.isDraft16(this.negotiatedVersion_)?[]:[P.Version.DRAFT_14],m="ShakaPlayer/"+dt.version,f=[{type:BigInt(P.SetupOption.MAX_REQUEST_ID),value:BigInt(42069)},{type:BigInt(P.SetupOption.IMPLEMENTATION),value:D.toUint8(q.toUTF8(m))}];i&&f.push({type:BigInt(P.SetupOption.AUTHORIZATION_TOKEN),value:this.buildAuthToken_(i)}),await d.client({versions:u,params:f});let g=new Zn(c,this.negotiatedVersion_);p.v1("Waiting for server setup message");let _=await g.server();if(p.v1("Received server setup:",_),!P.isDraft16(this.negotiatedVersion_)&&!u.includes(_.version))throw new Error(`Unsupported server version: ${_.version}`);let T=new Qn(c,o,this.negotiatedVersion_);if(p.v1(`Control stream established (${this.negotiatedVersion_})`),Fe)switch(this.negotiatedVersion_){case P.Version.DRAFT_14:p.info("Connection established with draft-14");break;case P.Version.DRAFT_16:p.info("Connection established with draft-16");break}this.tracksManager_=new ta(this.webTransport_,T,this),p.v1("Tracks manager created with control stream and client reference");let S=new uo(this.webTransport_,T,this);return this.listenForControlMessages_(T),S}release(){var e;p.v1("Closing client connection"),this.publishNamespaceCallbacks_.clear(),(e=this.tracksManager_)==null||e.release(),this.tracksManager_=null}getNextRequestId(){let e=this.nextRequestId_;return this.nextRequestId_+=BigInt(2),p.v1(`Generated new request ID: ${e}`),e}async listenForControlMessages_(e){var t;p.v1("Starting to listen for control messages");try{for(;;){let i=await e.receive();if(i.kind===P.MessageType.PUBLISH_NAMESPACE){let r=i;p.info(`Received PublishNamespace message with namespace:
|
|
812
|
+
${r.namespace.join("/")}`);try{let s={kind:P.MessageType.PUBLISH_NAMESPACE_OK,requestId:r.requestId,namespace:r.namespace};await e.send(s),p.debug("Sent PublishNamespaceOk for requestId",r.requestId)}catch(s){p.error(`Error sending PublishNamespaceOk: ${s instanceof Error?s.message:String(s)}`)}for(let s of this.publishNamespaceCallbacks_)try{s(r.namespace)}catch(n){p.error(`Error in PublishNamespace callback: ${n instanceof Error?n.message:String(n)}`)}}else if(i.kind===P.MessageType.PUBLISH_DONE){let r=i;p.debug(`Received PublishDone for requestId ${r.requestId}`),(t=this.tracksManager_)==null||t.handlePublishDone(r.requestId)}else if("requestId"in i){let r=i.requestId,s=this.messageHandlers_.get(i.kind);if(s&&s.has(r)){p.debug(`Found handler for message kind ${i.kind} with
|
|
813
|
+
requestId ${r}`);try{let n=s.get(r);n?n(i):p.warning(`Handler for message kind ${i.kind} with
|
|
814
|
+
requestId ${r} was null`),s.delete(r)}catch(n){p.error(`Error in message handler for kind ${i.kind}
|
|
815
|
+
with requestId ${r}: ${n instanceof Error?n.message:String(n)}`)}}else p.debug(`No handler found for message kind ${i.kind}
|
|
816
|
+
with requestId ${r}`)}else p.debug(`Received message of kind ${i.kind} without a request ID`)}}catch(i){i instanceof Error&&i.message.includes("session is closed")?p.debug("Control message listener stopped: connection closed"):p.error("Error while listening for control messages:",i)}}registerMessageHandler(e,t,i){p.v1(`Registering handler for message kind ${e} with
|
|
817
|
+
requestId ${t}`),this.messageHandlers_.has(e)||this.messageHandlers_.set(e,new Map);let r=this.messageHandlers_.get(e);if(!r)throw new Error(`Handler map for message kind ${e} not found`);return r.set(t,i),()=>{p.v1(`Unregistering handler for message kind ${e} with
|
|
818
|
+
requestId ${t}`);let s=this.messageHandlers_.get(e);s&&s.delete(t)}}subscribeTrack(e,t,i){if(!this.tracksManager_)throw new Error("Cannot subscribe: Tracks manager not initialized");return p.v1(`Client subscribing to track ${e.join("/")}:${t}`),this.tracksManager_.subscribeTrack(e,t,i)}async unsubscribeTrack(e){if(!this.tracksManager_)throw new Error("Cannot unsubscribe: Tracks manager not initialized");p.v1(`Client unsubscribing from track with alias ${e}`),await this.tracksManager_.unsubscribeTrack(e)}async fetchTrack(e,t,i){if(!this.tracksManager_)throw new Error("Cannot fetch: Tracks manager not initialized");p.v1(`Client fetching track ${e.join("/")}:${t}`),await this.tracksManager_.fetchTrack(e,t,i)}registerPublishNamespaceCallback(e){return p.v1("Registering PublishNamespace callback"),this.publishNamespaceCallbacks_.add(e),()=>{p.v1("Unregistering PublishNamespace callback"),this.publishNamespaceCallbacks_.delete(e)}}buildAuthToken_(e){let t=D.toUint8(q.toUTF8(e)),i=new qi(2+t.length,qi.Endianness.BIG_ENDIAN);return i.writeVarInt53(3),i.writeVarInt53(0),i.writeBytes(t),i.getBytes()}},uo=class{constructor(e,t,i){l(this,"webTransport_");l(this,"controlStream_");l(this,"msfTransport_");this.webTransport_=e,this.controlStream_=t,this.msfTransport_=i}control(){return this.controlStream_}getNextRequestId(){return this.msfTransport_.getNextRequestId()}async close(e=0,t=""){p.v1(`Closing connection with code ${e}: ${t}`),this.webTransport_.close({closeCode:e,reason:t}),await this.webTransport_.closed}};/*! @license
|
|
819
|
+
* Shaka Player
|
|
820
|
+
* Copyright 2016 Google LLC
|
|
821
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
822
|
+
*/var ra=class extends wi{constructor(){super(null,0,!1,0)}getSegmentAvailabilityEnd(){if(!this.isDynamic())return super.getSegmentAvailabilityEnd();let e=this.getMaxSegmentEndTime();return e!=null?e:0}getSegmentAvailabilityStart(){return this.isDynamic()?Math.max(0,this.getSegmentAvailabilityEnd()-this.getMaxSegmentDuration()):super.getSegmentAvailabilityStart()}};/*! @license
|
|
823
|
+
* Shaka Player
|
|
824
|
+
* Copyright 2016 Google LLC
|
|
825
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
826
|
+
*/var sa=class{constructor(){l(this,"playerInterface_");l(this,"config_");l(this,"isPreloadFn_");l(this,"manifest_");l(this,"msfTransport_");l(this,"connection_");l(this,"publishNamespaces_");l(this,"unregisterPublishNamespaceCallback_");l(this,"unregisterCatalogCallback_");l(this,"catalogPromise_");l(this,"globalId_");l(this,"bandwidthSamples_");l(this,"presentationTimeline_");l(this,"variants_");l(this,"audioStreams_");l(this,"videoStreams_");l(this,"textStreams_");l(this,"unregisterTracksCallback_");l(this,"isFirstVideoSegment_");l(this,"receivedFirstSegment_");this.playerInterface_=null,this.config_=null,this.isPreloadFn_=()=>!1,this.manifest_=null,this.msfTransport_=null,this.connection_=null,this.publishNamespaces_=[],this.unregisterPublishNamespaceCallback_=null,this.unregisterCatalogCallback_=null,this.catalogPromise_=Promise.withResolvers(),this.globalId_=1,this.bandwidthSamples_=new Map,this.presentationTimeline_=null,this.variants_=[],this.audioStreams_=[],this.videoStreams_=[],this.textStreams_=[],this.unregisterTracksCallback_=new Map,this.isFirstVideoSegment_=!0,this.receivedFirstSegment_=new Set}configure(e,t){this.config_=e,t&&(this.isPreloadFn_=t),this.msfTransport_&&this.msfTransport_.configure(this.config_.msf)}async start(e,t){v.assert(this.config_,"Must call configure() before start()!"),this.playerInterface_=t,this.msfTransport_=new ia(this.config_.msf);let i=null;if(this.config_.msf.fingerprintUri){let s=K.RequestType.FINGERPRINT,n=K.makeRequest([this.config_.msf.fingerprintUri],this.config_.retryParameters),a=await this.playerInterface_.networkingEngine.request(s,n).promise;if(!this.playerInterface_)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.OPERATION_ABORTED);let o=q.fromUTF8(a.data).trim(),c=new Uint8Array(o.length/2);for(let d=0;d<c.length;d+=1)c[d]=parseInt(o.slice(2*d,2*d+2),16);i=c}try{this.connection_=await this.msfTransport_.connect(e,i,this.config_.msf.authorizationToken)}catch(s){throw s instanceof h?s:new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.WEBTRANSPORT_INITIALIZATION_FAILED,s)}this.config_.msf.namespaces.length?this.getCatalog_(this.config_.msf.namespaces):this.listenForAnnouncements_(),this.presentationTimeline_=new ra,this.presentationTimeline_.setStatic(!0),this.manifest_={presentationTimeline:this.presentationTimeline_,variants:[],textStreams:[],imageStreams:[],chapterStreams:[],offlineSessionIds:[],sequenceMode:!1,ignoreManifestTimestampsInSegmentsMode:!1,type:me.MSF,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:null};let r;try{r=await it.promiseWithTimeout(10,this.catalogPromise_.promise)}catch(s){throw s instanceof h?s:new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.MSF_CATALOG_TIMEOUT)}if(await this.processCatalog_(r),!this.presentationTimeline_.isLive())throw new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.MSF_VOD_CONTENT_NOT_SUPPORTED);return this.createVariants_(),this.manifest_.isLowLatency=this.presentationTimeline_.isDynamic(),this.manifest_.variants=this.variants_,this.manifest_.textStreams=this.textStreams_,this.playerInterface_.makeTextStreamsForClosedCaptions(this.manifest_),this.manifest_}async stop(){var e,t,i;if((e=this.unregisterCatalogCallback_)==null||e.call(this),this.unregisterCatalogCallback_=null,(t=this.unregisterPublishNamespaceCallback_)==null||t.call(this),this.unregisterPublishNamespaceCallback_=null,this.unregisterTracksCallback_.forEach((r,s)=>{r()}),this.unregisterTracksCallback_.clear(),this.connection_)try{await it.delay(1),await this.connection_.close(),this.connection_=null}catch(r){}(i=this.msfTransport_)==null||i.release(),this.msfTransport_=null,this.playerInterface_=null,this.config_=null,this.manifest_=null}update(){}onExpirationUpdated(e,t){}onInitialVariantChosen(e){}banLocation(e){}setMediaElement(e){}listenForAnnouncements_(){try{p.debug("Listening for announcements...");let e=this.msfTransport_.registerPublishNamespaceCallback(t=>{let i=t.join("/");if(p.debug(`Received publish namespace callback with namespace:
|
|
827
|
+
${i}`),this.publishNamespaces_.some(s=>s.join("/")===i)){p.debug(`Already processed namespace: ${i}`);return}this.publishNamespaces_.push(t),this.getCatalog_(t)});this.unregisterPublishNamespaceCallback_=e,p.debug("Announcement listener registered successfully")}catch(e){p.error(`Error listening for announcements:
|
|
828
|
+
${e instanceof Error?e.message:String(e)}`)}}getCatalog_(e){return this.config_.msf.useFetchCatalog?this.fetchCatalog_(e):this.subscribeToCatalog_(e)}async fetchCatalog_(e){try{let t=e.join("/");p.debug(`Fetching catalog in namespace: ${t}`),await this.msfTransport_.fetchTrack(e,"catalog",i=>{if(i.data.byteLength)try{let r=q.fromUTF8(i.data),s=JSON.parse(r);this.catalogPromise_.resolve(s)}catch(r){p.error(`Failed to decode catalog data:
|
|
829
|
+
${r instanceof Error?r.message:String(r)}`)}}),p.debug(`Successfully fetched catalog in namespace: ${t}`)}catch(t){p.error("Error fetching catalog:",t),t&&t.kind==P.MessageType.FETCH_ERROR?this.catalogPromise_.reject(new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.MSF_NO_CATALOG,t.code,t.reason)):this.catalogPromise_.reject(t)}}async subscribeToCatalog_(e){try{let t=e.join("/");p.debug(`Subscribing to catalog in namespace: ${t}`);let i=await this.msfTransport_.subscribeTrack(e,"catalog",s=>{if(s.data.byteLength)try{let n=q.fromUTF8(s.data),a=JSON.parse(n);this.catalogPromise_.resolve(a)}catch(n){p.error(`Failed to decode catalog data:
|
|
830
|
+
${n instanceof Error?n.message:String(n)}`)}}),r=()=>{if(!this.playerInterface_){p.debug("Skipping catalog unsubscribe during disconnect");return}p.debug(`Unsubscribing from catalog track with alias
|
|
831
|
+
${i}`),this.msfTransport_.unsubscribeTrack(i).catch(s=>{p.error(`Failed to unsubscribe from catalog: ${s}`)})};this.unregisterCatalogCallback_&&(p.debug("Unregistering previous catalog callback"),this.unregisterCatalogCallback_()),this.unregisterCatalogCallback_=r,p.debug(`Successfully subscribed to catalog in namespace:
|
|
832
|
+
${t} with track alias: ${i}`)}catch(t){p.error("Error subscribing to catalog:",t),t&&t.kind==P.MessageType.SUBSCRIBE_ERROR?this.catalogPromise_.reject(new h(h.Severity.CRITICAL,h.Category.MANIFEST,h.Code.MSF_NO_CATALOG,t.code,t.reason)):this.catalogPromise_.reject(t)}}recordBandwidthSample_(e,t,i,r){let s=this.bandwidthSamples_.getOrInsert(e,{bytes:0,readMs:0,group:t.group});t.group!==s.group&&(s.bytes>0&&this.playerInterface_.onSegmentReceived(Math.max(s.readMs,1),s.bytes),s.bytes=0,s.readMs=0,s.group=t.group),s.bytes+=i,s.readMs+=r}async subscribeToTrack(e,t,i){try{let r=[];e.namespace&&r.push(e.namespace),r.length||(this.config_.msf.namespaces.length?r=this.config_.msf.namespaces:this.publishNamespaces_.length?r=this.publishNamespaces_[0]:r=[]);let s=e.name;p.debug(`Subscribing to track: ${t}`);let n=await this.msfTransport_.subscribeTrack(r,s,o=>{p.v1(`Received object for track ${t} with`,o),i(o)}),a=()=>{if(!this.playerInterface_){p.debug("Skipping catalog unsubscribe during disconnect");return}p.debug(`Unsubscribing from catalog track with alias
|
|
833
|
+
${n}`),this.msfTransport_.unsubscribeTrack(n).catch(o=>{p.error(`Failed to unsubscribe from catalog: ${o}`)})};this.unregisterTracksCallback_.set(t,a),p.debug(`Subscribed to track ${t} with alias ${n}`)}catch(r){p.debug(`Error subscribing to track:
|
|
834
|
+
${r instanceof Error?r.message:String(r)}`)}}processCatalog_(e){p.info("MSF Catalog:",e);let t=this.config_.msf.catalogPreprocessor,i=st.defaultCatalogPreprocessor;t!=i&&(t(e),p.info("MSF Catalog after preprocessor:",e));let r=[],s=!0,n=1/0,a=0,o=this.getContentProtections_(e),c=new Map;for(let d of e.initDataList||[])c.set(d.id,d.data);for(let d of e.tracks)"isLive"in d&&(s=d.isLive),d.targetLatency&&(a=Math.max(a,d.targetLatency)),d.trackDuration&&(n=Math.min(n,d.trackDuration)),r.push(this.processTrack_(d,o,c));if(a){let d={maxLatency:null,maxPlaybackRate:null,minLatency:null,minPlaybackRate:null,targetLatency:a/1e3};this.manifest_.serviceDescription=d}return s&&this.presentationTimeline_.setStatic(!1),this.presentationTimeline_.setDuration(n),Promise.all(r)}getContentProtections_(e){var s,n;let t=de.getUuidMap(),i=new Map,r=e.contentProtections||[];for(let a of r){let o=a.refID,c=a.drmSystem;if(!c)continue;let d=t[c.systemID.toLowerCase()];if(!d)continue;let u=a.scheme||"cenc",m=null;c.pssh&&(m=[{initDataType:"cenc",initData:ne.fromBase64(c.pssh)}]);let f=R.createDrmInfo(d,u,m);if((s=c.laURL)!=null&&s.url?f.licenseServerUri=c.laURL.url:m&&de.isPlayReadyKeySystem(d)&&(f.licenseServerUri=Ri.getLicenseUrlFromPssh(m[0].initData)),(n=c.certURL)!=null&&n.url&&(f.serverCertificateUri=c.certURL.url),c.robustness&&(f.videoRobustness=c.robustness,f.audioRobustness=c.robustness),a.defaultKID)for(let g of a.defaultKID){let _=g.replace(/-/g,"").toLowerCase();f.keyIds.add(_)}i.set(o,f)}return i}processTrack_(e,t,i){let r=R.ContentType,s=new Uint8Array([]);e.initData?s=ne.fromBase64(e.initData):e.initRef&&i.has(e.initRef)&&(s=ne.fromBase64(i.get(e.initRef)));let n=e.codec&&e.packaging==="loc",a=null;if(["cmaf","chunk-per-object"].includes(e.packaging))a=vt.getBasicInfoFromMp4(s,s,!1);else if(n){let H=`moq/loc; codecs="${e.codec}"`;a=vt.getBasicInfoFromMimeType(H)}if(!a){p.info("Skipping incompatible track",e);return}let c=a.timescale||e.timescale;if(!c&&!n){p.info("Skipping incompatible track due missing timescale",e);return}let d=a.mimeType||e.mimeType||"",u=a.codecs,m=e.lang;(!e.lang||e.lang=="und")&&(m=a.language||e.lang);let f=Number(a.frameRate)||e.framerate,g=Number(a.width)||e.width,_=Number(a.height)||e.height,T=a.channelCount;!T&&e.channelConfig&&(T=parseInt(e.channelConfig,10));let S=a.sampleRate||e.samplerate||null,b=a.videoRange||void 0,E=a.colorGamut||void 0,C=r.TEXT;for(let H of R.VIDEO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.VIDEO);if(C==r.TEXT)for(let H of R.AUDIO_CODEC_REGEXPS)H.test(u.trim())&&(C=r.AUDIO);let A,w=null,M=[];if(e.role)switch(M.push(e.role),e.role){case"audiodescription":C==r.AUDIO&&(w=me.AccessibilityPurpose.VISUALLY_IMPAIRED);break;case"caption":C==r.TEXT&&(A=R.TextStreamKind.CLOSED_CAPTION);break;case"subtitle":C==r.TEXT&&(A=R.TextStreamKind.SUBTITLE);break}let x=[],k=e.contentProtectionRefIDs;if(k)for(let H of k){let J=t.get(H);if(J)x.push(J);else{p.alwaysWarn("Unrecognized contentProtectionRefID",H);return}}else x=a.drmInfos;let L=new Map;if(!this.config_.disableText)for(let H of e.accessibility||[]){let J=H.schemeId,Z=H.value;J=="urn:scte:dash:cc:cea-608:2015"?R.parseCEA608Captions(Z,L):J=="urn:scte:dash:cc:cea-708:2015"&&R.parseCEA708Captions(Z,L)}let V={id:this.globalId_++,originalId:e.name,groupId:null,createSegmentIndex:()=>Promise.resolve(),segmentIndex:null,mimeType:d,codecs:u,supplementalCodecs:"",kind:A,encrypted:!1,drmInfos:x,keyIds:new Set,language:ve.normalize(m||"und"),originalLanguage:m||null,label:e.label||null,type:C,primary:!1,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,frameRate:f,pixelAspectRatio:void 0,width:g,height:_,bandwidth:e.bitrate,roles:M,forced:!1,channelsCount:T,audioSamplingRate:S,spatialAudio:!1,closedCaptions:L,hdr:b,colorGamut:E,videoLayout:void 0,tilesLayout:void 0,accessibilityPurpose:w,external:!1,fastSwitching:!1,fullMimeTypes:new Set([N.getFullType(d,u)]),isAudioMuxedInVideo:!1,baseOriginalId:null,isIframe:!1},ee=`${e.namespace||""}/${e.name}`,oe=null;c&&(oe=new Tt(()=>[],0,null,null,c,s));let le=null;if(n){let H=Ks.frameDurationFromTrack(e);if(H===null){p.warning(`LOC track "${e.name}" has no usable frame duration; skipping.`);return}le=new Ks(H)}switch(V.createSegmentIndex=()=>{let H=Promise.withResolvers();return this.subscribeToTrack(e,ee,J=>{let Z=J.data;if(!V.segmentIndex||!Z.byteLength)return;this.recordBandwidthSample_(ee,J.location,Z.byteLength,J.receiveTimestampMs-J.payloadReadStartMs);let ce,W;if(n){v.assert(le,"locParser must be non-null");let Y=le.parse(J);W=Y.duration,ce=Y.startTime,Z=Y.payload}else{v.assert(typeof c=="number","Timescale should be a number!");let Y=vt.getStartTimeAndDurationFromMp4(Z,c);ce=Y.startTime,W=Y.duration}if(!W||!Z.byteLength)return;let z=new Se(ce,ce+W,()=>[],0,null,oe,0,0,1/0);z.setSegmentData(Z),this.receivedFirstSegment_.add(C);let ge=this.presentationTimeline_.isStartTimeLocked();if(ge){let Y=Math.min(z.startTime-2,this.presentationTimeline_.getSegmentAvailabilityStart());V.segmentIndex.mergeAndEvict([z],Y)}else V.segmentIndex.merge([z]);if(this.presentationTimeline_.notifySegments([z]),this.presentationTimeline_.notifyMaxSegmentDuration(W),this.presentationTimeline_.isDynamic()){let Y=this.presentationTimeline_.getMaxSegmentDuration();Y>0&&this.presentationTimeline_.setSegmentAvailabilityDuration(Y)}!ge&&(!this.audioStreams_.length||this.receivedFirstSegment_.has(r.AUDIO))&&(!this.videoStreams_.length||this.receivedFirstSegment_.has(r.VIDEO))&&this.presentationTimeline_.lockStartTime(),H==null||H.resolve(),H=null}),V.segmentIndex=new Ze([]),H==null?void 0:H.promise},V.closeSegmentIndex=()=>{var H;this.unregisterTracksCallback_.has(ee)&&(this.unregisterTracksCallback_.get(ee)(),this.unregisterTracksCallback_.delete(ee)),this.bandwidthSamples_.delete(ee),(H=V.segmentIndex)==null||H.release(),V.segmentIndex=null},C){case r.AUDIO:this.config_.disableAudio||this.audioStreams_.push(V);break;case r.VIDEO:this.config_.disableVideo||this.videoStreams_.push(V);break;case r.TEXT:this.config_.disableText||this.textStreams_.push(V);break}}createVariants_(){let e=R.ContentType,t=0,i=[];if(!this.videoStreams_.length||!this.audioStreams_.length){let r=this.videoStreams_.length?this.videoStreams_:this.audioStreams_;for(let s of r){let n=t++,a=s.bandwidth||0;s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0),i.push({id:n,language:s.language,disabledUntilTime:0,primary:s.primary,audio:s.type==e.AUDIO?s:null,video:s.type==e.VIDEO?s:null,bandwidth:a,drmInfos:s.drmInfos,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}}else for(let r of this.audioStreams_)for(let s of this.videoStreams_){let n=de.getCommonDrmInfos(r.drmInfos,s.drmInfos);if(r.drmInfos.length&&s.drmInfos.length&&!n.length){p.warning("Incompatible DRM in audio & video, skipping variant creation.",r,s);continue}let a=(r.bandwidth||0)+(s.bandwidth||0);r.dependencyStream&&(a+=r.dependencyStream.bandwidth||0),s.dependencyStream&&(a+=s.dependencyStream.bandwidth||0);let o=t++;i.push({id:o,language:r.language,disabledUntilTime:0,primary:r.primary,audio:r,video:s,bandwidth:a,drmInfos:n,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]})}this.variants_=i}};me.registerParserByMime("application/msf",()=>new sa);/*! @license
|
|
835
|
+
* Shaka Player
|
|
836
|
+
* Copyright 2016 Google LLC
|
|
837
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
838
|
+
*/var os=class{static makeResponse(e,t,i,r,s,n,a){if(v.assert(t,"Data should be non-null!"),i>=200&&i<=299&&i!=202||i==304)return{uri:s||r,originalUri:r,data:t,status:i,headers:e,fromCache:!!e["x-shaka-from-cache"],originalRequest:n};{let o=null;try{o=q.fromBytesAutoDetect(t)}catch(c){}throw p.debug("HTTP error text:",o),new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.BAD_HTTP_STATUS,r,i,o,e,a,s||r)}}};/*! @license
|
|
839
|
+
* Shaka Player
|
|
840
|
+
* Copyright 2016 Google LLC
|
|
841
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
842
|
+
*/var Ui=class y{static parse(e,t,i,r,s,n){let a=new y.Headers_;try{Zt.asMap(t.headers).forEach((_,T)=>{a.append(T,_)})}catch(_){return p.debug("Failed to create headers:",_),je.failed(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,_,i))}let o=new y.AbortController_,c={body:t.body||void 0,headers:a,method:t.method,signal:o.signal,credentials:t.allowCrossSiteCredentials?"include":void 0},d={canceled:!1,timedOut:!1},u=n.minBytesForProgressEvents||0,m=y.request_(e,t,i,c,d,r,s,t.streamDataCallback,u),f=new je(m,()=>(d.canceled=!0,o.abort(),Promise.resolve())),g=t.retryParameters.timeout;if(g){let _=new ae(()=>{d.timedOut=!0,o.abort()});_.tickAfter(g/1e3),f.finally(()=>{_.stop()})}return f}static async request_(e,t,i,r,s,n,a,o,c){let d=y.fetch_,u=y.ReadableStream_,m,f=new ArrayBuffer(0),g=0,_=0,T={},S=Date.now();try{if(m=await d(e,r),T=y.headersToGenericObject_(m.headers),a(T),r.method!="HEAD"){v.assert(m.body,"non-HEAD responses should have a body");let b=m.headers.get("Content-Length"),E=b?parseInt(b,10):0;if(m.body){let C=m.clone().body.getReader(),A=w=>{let M=async()=>{let x;try{x=await C.read()}catch(V){p.v1("error reading from stream",V.message);return}x.done||(g+=x.value.byteLength,o&&await o(x.value));let k=Date.now(),L=g-_;if(k-S>100&&L>=c||x.done){let V=x.done?0:E-g;n(k-S,L,V),_=g,S=k}x.done?(v.assert(!x.value,'readObj should be unset when "done" is true.'),w.close()):(w.enqueue(x.value),M())};M()};new u({start:A}),f=await m.arrayBuffer()}else{f=await m.arrayBuffer();let C=Date.now();n(C-S,f.byteLength,0)}}if(t.headers.Range){let b=t.headers.Range.replace("bytes=","").split("-").filter(E=>E).map(E=>parseInt(E,10));b.length==2&&f.byteLength!=b[1]-b[0]+1&&p.alwaysWarn("Payload length does not match range requested bytes",t,m)}}catch(b){throw s.canceled?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.OPERATION_ABORTED,e,i):s.timedOut?new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,e,i):new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,b,i)}return os.makeResponse(T,f,m.status,e,m.url,t,i)}static headersToGenericObject_(e){let t={};return e.forEach((i,r)=>{t[r.trim()]=i}),t}static isSupported(){if(window.ReadableStream)try{new ReadableStream({})}catch(e){return!1}else return!1;if(window.Response){if(!new Response("").body)return!1}else return!1;return!!(window.fetch&&!("polyfill"in window.fetch)&&window.AbortController)}};Ui.fetch_=window.fetch;Ui.AbortController_=window.AbortController;Ui.ReadableStream_=window.ReadableStream;Ui.Headers_=window.Headers;Ui.isSupported()&&(K.registerScheme("http",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("https",Ui.parse,K.PluginPriority.PREFERRED,!0),K.registerScheme("blob",Ui.parse,K.PluginPriority.PREFERRED,!0));/*! @license
|
|
843
|
+
* Shaka Player
|
|
844
|
+
* Copyright 2016 Google LLC
|
|
845
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
846
|
+
*/var Hr=class y{static parse(e,t,i,r,s,n){let a=new y.Xhr_,o=Date.now(),c=0,d=new Promise(((u,m)=>{a.open(t.method,e,!0),a.responseType="arraybuffer",a.timeout=t.retryParameters.timeout,a.withCredentials=t.allowCrossSiteCredentials;let f={};a.onabort=()=>{m(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.OPERATION_ABORTED,e,i))},a.onreadystatechange=g=>{a.readyState===XMLHttpRequest.HEADERS_RECEIVED&&(f=y.headersToGenericObject_(a),s(f))},a.onload=g=>{v.assert(a.response instanceof ArrayBuffer,"XHR should have a response by now!");let _=a.response;try{let T=os.makeResponse(f,_,a.status,e,a.responseURL,t,i);u(T)}catch(T){v.assert(T instanceof h,"Wrong error type!"),m(T)}},a.onerror=g=>{m(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,g,i))},a.ontimeout=g=>{m(new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.TIMEOUT,e,i))},a.onprogress=g=>{let _=Date.now(),T=n.minBytesForProgressEvents||0,S=g.loaded-c;if(_-o>100&&S>=T||g.lengthComputable&&g.loaded==g.total){let b=a.readyState==4?0:g.total-g.loaded;r(_-o,S,b),c=g.loaded,o=_}};for(let g in t.headers)try{let _=g.toLowerCase();a.setRequestHeader(_,t.headers[g])}catch(_){throw new h(h.Severity.RECOVERABLE,h.Category.NETWORK,h.Code.HTTP_ERROR,e,_,i)}a.send(t.body)}));return new je(d,()=>(a.abort(),Promise.resolve()))}static headersToGenericObject_(e){let t=e.getAllResponseHeaders().trim().split(`\r
|
|
847
|
+
`),i={};for(let r of t){let s=r.indexOf(": ");s!==-1&&(i[r.slice(0,s).toLowerCase()]=r.slice(s+2))}return i}};Hr.Xhr_=window.XMLHttpRequest;K.registerScheme("http",Hr.parse,K.PluginPriority.FALLBACK,!0);K.registerScheme("https",Hr.parse,K.PluginPriority.FALLBACK,!0);K.registerScheme("blob",Hr.parse,K.PluginPriority.FALLBACK,!0);/*! @license
|
|
848
|
+
* Shaka Player
|
|
849
|
+
* Copyright 2016 Google LLC
|
|
850
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
851
|
+
*/var na=class y extends Le{constructor(t){super();l(this,"player_");l(this,"config_");l(this,"items_");l(this,"currentItemIndex_");l(this,"preloadNext_");l(this,"preloadPrev_");l(this,"eventManager_");l(this,"repeatTimer_");this.player_=t,this.config_=null,this.items_=[],this.currentItemIndex_=-1,this.preloadNext_=null,this.preloadPrev_=null,this.eventManager_=new ue,this.repeatTimer_=null}async destroy(){await this.removeAllItems(),this.player_=null,this.eventManager_&&(this.eventManager_.release(),this.eventManager_=null),this.repeatTimer_&&(this.repeatTimer_.stop(),this.repeatTimer_=null),super.release()}configure(t){this.config_=t}getConfiguration(){return this.config_}setCustomPlayer(t){this.player_=t}getCurrentItem(){return this.items_.length&&this.currentItemIndex_>=0&&this.currentItemIndex_<this.items_.length?this.items_[this.currentItemIndex_]:null}getCurrentItemIndex(){return this.currentItemIndex_}getItems(){return this.items_.slice()}insertItems(t){this.items_.push(...t),this.dispatchEvent(new U(U.EventName.ItemsInserted))}async removeAllItems(){var i,r;if(this.eventManager_.removeAll(),this.player_&&this.items_.length&&this.currentItemIndex_>=0)try{await this.player_.unload()}catch(s){}let t=[];(i=this.preloadPrev_)!=null&&i.preloadManager&&!this.preloadPrev_.preloadManager.isDestroyed()&&t.push(this.preloadPrev_.preloadManager.destroy()),this.preloadPrev_=null,(r=this.preloadNext_)!=null&&r.preloadManager&&!this.preloadNext_.preloadManager.isDestroyed()&&t.push(this.preloadNext_.preloadManager.destroy()),this.preloadNext_=null;for(let s of this.items_)s.preloadManager&&!s.preloadManager.isDestroyed()&&t.push(s.preloadManager.destroy());t.length&&await Promise.all(t),this.items_=[],this.currentItemIndex_=-1,this.dispatchEvent(new U(U.EventName.ItemsRemoved))}async playItem(t){var a,o,c;if(v.assert(this.player_,"We should have player"),this.eventManager_.removeAll(),this.repeatTimer_&&(this.repeatTimer_.stop(),this.repeatTimer_=null),!this.items_.length||t<0||t>=this.items_.length)throw new h(h.Severity.CRITICAL,h.Category.PLAYER,h.Code.QUEUE_INDEX_OUT_OF_BOUNDS);let i=this.getCurrentItem(),r=this.items_[t];this.currentItemIndex_!==t&&(this.currentItemIndex_=t,this.dispatchEvent(new U(U.EventName.CurrentItemChanged)));let s=this.player_.getMediaElement();this.setupPreloadNext_(s),this.setupRepeatOnComplete_(s);let n=this.getAssetOrPreloader_(r);await this.cleanupPreloadPrev_(r,i),r.config&&(this.player_.resetConfiguration(),this.player_.configure(r.config)),((a=r.extraText)!=null&&a.length||(o=r.extraThumbnail)!=null&&o.length||(c=r.extraChapter)!=null&&c.length)&&this.eventManager_.listenOnce(this.player_,"streaming",async()=>{await this.addExtraTracks_(r)}),await this.player_.load(n,r.startTime,r.mimeType),this.preloadNext_=null}setupPreloadNext_(t){if(!this.config_||this.config_.preloadNextUrlWindow<=0)return;let i=!1,r=async()=>{if(this.preloadNext_||this.items_.length<=1||i||this.player_.isDynamic()||!t.duration)return;let s=this.player_.seekRange().end-t.currentTime;if(isNaN(s)||s>this.config_.preloadNextUrlWindow)return;i=!0;let n=null,a=this.config_.repeatMode,o=this.currentItemIndex_+1;if(o<this.items_.length?n=this.items_[o]:a===Yr.ALL&&(n=this.items_[0]),n&&(!n.preloadManager||n.preloadManager.isDestroyed())){try{let c=await this.player_.preload(n.manifestUri,n.startTime,n.mimeType,n.config,!0);this.preloadNext_={item:n,preloadManager:c}}catch(c){this.preloadNext_={item:n,preloadManager:null}}this.eventManager_.unlisten(t,"timeupdate",r)}i=!1};this.eventManager_.listen(t,"timeupdate",r)}playCurrentItemAfterPause_(t){t.paused?(t.currentTime=this.player_.seekRange().start,t.play()):this.eventManager_.listenOnce(t,"paused",()=>{t.currentTime=this.player_.seekRange().start,t.play()})}setupRepeatOnComplete_(t){this.eventManager_.listen(this.player_,"complete",()=>{var n;let i=(n=this.config_)==null?void 0:n.repeatMode;if(i===Yr.SINGLE){this.playCurrentItemAfterPause_(t);return}let r=this.currentItemIndex_+1,s=null;r<this.items_.length?s=r:i===Yr.ALL&&(s=this.items_.length>1?0:this.currentItemIndex_),s!==null&&(s===this.currentItemIndex_?this.playCurrentItemAfterPause_(t):(this.repeatTimer_&&(this.repeatTimer_.stop(),this.repeatTimer_=null),this.repeatTimer_=new ae(()=>{v.assert(s!=null,"targetIndex should not be null"),this.playItem(s).catch(()=>{})}).tickAfter(0)))})}getAssetOrPreloader_(t){var r,s;let i=t.manifestUri;return t.preloadManager&&!t.preloadManager.isDestroyed()?i=t.preloadManager:((r=this.preloadNext_)==null?void 0:r.item)===t&&this.preloadNext_.preloadManager?i=this.preloadNext_.preloadManager:((s=this.preloadPrev_)==null?void 0:s.item)===t&&this.preloadPrev_.preloadManager&&(i=this.preloadPrev_.preloadManager),i}async cleanupPreloadPrev_(t,i){var s,n;let r=((s=this.preloadPrev_)==null?void 0:s.item)===t;if(this.preloadPrev_&&!r&&this.preloadPrev_.preloadManager&&!this.preloadPrev_.preloadManager.isDestroyed()&&await this.preloadPrev_.preloadManager.destroy(),this.preloadPrev_=null,(n=this.config_)!=null&&n.preloadPrevItem&&i&&this.player_.getLoadMode()===dt.LoadMode.MEDIA_SOURCE)try{let a=await this.player_.unloadAndSavePreload(!1,!1,!1,!0);this.preloadPrev_={item:i,preloadManager:a}}catch(a){this.preloadPrev_={item:i,preloadManager:null}}}async addExtraTracks_(t){var n,a,o;let i=((n=t.extraText)==null?void 0:n.map(async c=>{c.mime?await this.player_.addTextTrackAsync(c.uri,c.language,c.kind,c.mime,c.codecs):await this.player_.addTextTrackAsync(c.uri,c.language,c.kind)}))||[],r=((a=t.extraThumbnail)==null?void 0:a.map(async c=>{await this.player_.addThumbnailsTrack(c)}))||[],s=((o=t.extraChapter)==null?void 0:o.map(async c=>{await this.player_.addChaptersTrack(c.uri,c.language,c.mime)}))||[];await Promise.all([...i,...r,...s])}async loadFromM3uPlaylist(t,i=!1){v.assert(this.player_,"We should have player");let r=this.player_.getNetworkingEngine();v.assert(r,"We should have networking engine");let s=this.player_.getConfiguration().manifest.retryParameters,n=K.makeRequest([t],s),a=await r.request(K.RequestType.PLAYLIST,n).promise,o=q.fromUTF8(a.data),c=y.parseM3uPlaylist_(o,t);if(c.length===0){p.warning("QueueManager: No playable entries found in the M3U playlist.",t);return}this.insertItems(c),i&&await this.playItem(0)}static parseM3uPlaylist_(t,i){var o;let r=t.split(/\r?\n/);(o=r[0])!=null&&o.trim().startsWith("#EXTM3U")||p.warning("QueueManager: Playlist does not start with #EXTM3U; attempting to parse anyway.");let s=[],n=new Set,a=null;for(let c of r){let d=c.trim();if(!d||d==="#EXTM3U")continue;if(d.startsWith("#EXTINF:")){a=y.parseExtInf_(d);continue}if(d.startsWith("#"))continue;let u=fe.resolve(i,d),m=a==null?void 0:a["tvg-id"];if(m&&n.has(m)){p.debug("QueueManager: Skipping duplicated channel:",m,u);continue}let f={manifestUri:u,preloadManager:null,startTime:null,mimeType:null,config:null,extraText:null,extraThumbnail:null,extraChapter:null,metadata:a};s.push(f),m&&n.add(m),a=null}return s}static parseExtInf_(t){let i=t.lastIndexOf(","),r=i>=0?t.substring(0,i):t,s=i>=0?t.substring(i+1).trim():"",n=/([\w-]+)="([^"]*)"/g,a={},o;for(;(o=n.exec(r))!==null;)a[o[1]]=o[2];let c=vo(To({},a),{title:a["tvg-name"]||s||void 0,poster:a["tvg-logo"]||void 0});return s&&(c.displayTitle=s),c}};dt.setQueueManagerFactory(y=>new na(y));/*! @license
|
|
852
|
+
* Shaka Player
|
|
853
|
+
* Copyright 2016 Google LLC
|
|
854
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
855
|
+
*/var ni=class y{constructor(e,t,i,r){l(this,"type_");l(this,"mechanism_");l(this,"cell_");l(this,"key_");l(this,"asString_");this.type_=e,this.mechanism_=t,this.cell_=i,this.key_=r,this.asString_=["offline:",e,"/",t,"/",i,"/",r].join("")}isManifest(){return this.type_=="manifest"}isSegment(){return this.type_=="segment"}mechanism(){return this.mechanism_}cell(){return this.cell_}key(){return this.key_}toString(){return this.asString_}static parse(e){let t=/^offline:([a-z]+)\/([^/]+)\/([^/]+)\/([0-9]+)$/.exec(e);if(t==null)return null;let i=t[1];if(i!="manifest"&&i!="segment")return null;let r=t[2];if(!r)return null;let s=t[3];if(!s)return null;let n=Number(t[4]);return i==null?null:new y(i,r,s,n)}static manifest(e,t,i){return new y("manifest",e,t,i)}static segment(e,t,i){return new y("segment",e,t,i)}};/*! @license
|
|
856
|
+
* Shaka Player
|
|
857
|
+
* Copyright 2016 Google LLC
|
|
858
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
859
|
+
*/var ls=class{constructor(e,t){l(this,"mechanism_");l(this,"cell_");this.mechanism_=e,this.cell_=t}fromManifestDB(e){let t=new wi(null,0);t.setDuration(e.duration);let i=e.streams.filter(d=>this.isAudio_(d)),r=e.streams.filter(d=>this.isVideo_(d)),s=this.createVariants(i,r,t),n=e.streams.filter(d=>this.isText_(d)).map(d=>this.fromStreamDB_(d,t)),a=e.streams.filter(d=>this.isImage_(d)).map(d=>this.fromStreamDB_(d,t)),o=e.streams.filter(d=>this.isChapter_(d)).map(d=>this.fromStreamDB_(d,t)),c=e.drmInfo?[e.drmInfo]:[];if(e.drmInfo)for(let d of s.values())d.audio&&d.audio.encrypted&&(d.audio.drmInfos=c),d.video&&d.video.encrypted&&(d.video.drmInfos=c);return{presentationTimeline:t,offlineSessionIds:e.sessionIds,variants:Array.from(s.values()),textStreams:n,imageStreams:a,chapterStreams:o,sequenceMode:e.sequenceMode||!1,ignoreManifestTimestampsInSegmentsMode:!1,type:e.type||me.UNKNOWN,serviceDescription:null,nextUrl:null,periodCount:1,gapCount:0,isLowLatency:!1,startTime:null}}createVariants(e,t,i){let r=new Set;for(let n of e)for(let a of n.variantIds)r.add(a);for(let n of t)for(let a of n.variantIds)r.add(a);let s=new Map;for(let n of r)s.set(n,this.createEmptyVariant_(n));for(let n of e){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.audio,"A variant should only have one audio stream"),c.language=a.language,c.primary=c.primary||a.primary,c.audio=a}}for(let n of t){let a=this.fromStreamDB_(n,i);for(let o of n.variantIds){let c=s.get(o);v.assert(!c.video,"A variant should only have one video stream"),c.primary=c.primary||a.primary,c.video=a}}return s}fromStreamDB_(e,t){let i=e.segments.map((n,a)=>this.fromSegmentDB_(a,n,e));t.notifySegments(i);let r=new Ze(i);return{id:e.id,originalId:e.originalId,groupId:e.groupId,createSegmentIndex:()=>Promise.resolve(),segmentIndex:r,mimeType:e.mimeType,codecs:e.codecs,supplementalCodecs:"",width:e.width||void 0,height:e.height||void 0,frameRate:e.frameRate,pixelAspectRatio:e.pixelAspectRatio,hdr:e.hdr,colorGamut:e.colorGamut,videoLayout:e.videoLayout,kind:e.kind,encrypted:e.encrypted,drmInfos:[],keyIds:e.keyIds,language:e.language,originalLanguage:e.originalLanguage||null,label:e.label,type:e.type,primary:e.primary,trickModeVideo:null,dependencyStream:null,emsgSchemeIdUris:null,roles:e.roles,forced:e.forced,channelsCount:e.channelsCount,audioSamplingRate:e.audioSamplingRate,spatialAudio:e.spatialAudio,closedCaptions:e.closedCaptions,tilesLayout:e.tilesLayout,accessibilityPurpose:null,external:e.external,fastSwitching:e.fastSwitching,fullMimeTypes:new Set([N.getFullType(e.mimeType,e.codecs)]),isAudioMuxedInVideo:e.isAudioMuxedInVideo||!1,baseOriginalId:null,isIframe:e.isIframe||!1}}fromSegmentDB_(e,t,i){let r=this.isChapter_(i)?"":ni.segment(this.mechanism_,this.cell_,t.dataKey),s=t.initSegmentKey!=null?this.fromInitSegmentDB_(t.initSegmentKey):null,n=new Se(t.startTime,t.endTime,()=>[r.toString()],0,null,s,t.timestampOffset,t.appendWindowStart,t.appendWindowEnd,[],t.tilesLayout||"");if(n.mimeType=t.mimeType||i.mimeType||"",n.codecs=t.codecs||i.codecs||"",t.thumbnailSprite&&n.setThumbnailSprite(t.thumbnailSprite),t.chapterTitle){let a={title:t.chapterTitle,images:[]};n.setMetadata(a)}return n}fromInitSegmentDB_(e){let t=ni.segment(this.mechanism_,this.cell_,e);return new Tt(()=>[t.toString()],0,null)}isAudio_(e){let t=R.ContentType;return e.type==t.AUDIO}isVideo_(e){let t=R.ContentType;return e.type==t.VIDEO}isText_(e){let t=R.ContentType;return e.type==t.TEXT}isImage_(e){let t=R.ContentType;return e.type==t.IMAGE}isChapter_(e){let t=R.ContentType;return e.type==t.CHAPTER}createEmptyVariant_(e){return{id:e,language:"",disabledUntilTime:0,primary:!1,audio:null,video:null,bandwidth:0,allowedByApplication:!0,allowedByKeySystem:!0,decodingInfos:[]}}};/*! @license
|
|
860
|
+
* Shaka Player
|
|
861
|
+
* Copyright 2016 Google LLC
|
|
862
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
863
|
+
*/var hi=class hi{constructor(){l(this,"mechanisms_");this.mechanisms_=new Map}destroy(){let e=[];for(let t of this.mechanisms_.values())e.push(t.destroy());return this.mechanisms_.clear(),Promise.all(e)}init(){hi.getRegistry_().forEach((i,r)=>{let s=i();s?this.mechanisms_.set(r,s):p.info("Skipping "+r+" as it is not supported on this platform")});let t=[];for(let i of this.mechanisms_.values())t.push(i.init());return Promise.all(t)}getActive(){let e=null;if(this.mechanisms_.forEach((t,i)=>{t.getCells().forEach((r,s)=>{if(r.hasFixedKeySpace()||e)return;e={path:{mechanism:i,cell:s},cell:r}})}),e)return e;throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MISSING_STORAGE_CELL,"Could not find a cell that supports add-operations")}forEachCell(e){this.mechanisms_.forEach((t,i)=>{t.getCells().forEach((r,s)=>{e({mechanism:i,cell:s},r)})})}getCell(e,t){let i=this.mechanisms_.get(e);if(!i)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MISSING_STORAGE_CELL,"Could not find mechanism with name "+e);let r=i.getCells().get(t);if(!r)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MISSING_STORAGE_CELL,"Could not find cell with name "+t);return r}forEachEmeSessionCell(e){this.mechanisms_.forEach((t,i)=>{e(t.getEmeSessionCell())})}getEmeSessionCell(){let e=Array.from(this.mechanisms_.keys());if(!e.length)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_NOT_SUPPORTED,"No supported storage mechanisms found");return this.mechanisms_.get(e[0]).getEmeSessionCell()}resolvePath(e){let t=this.mechanisms_.get(e.mechanism);return t?t.getCells().get(e.cell):null}async erase(){let e=Array.from(this.mechanisms_.values()),t=e.length>0;t||hi.getRegistry_().forEach((r,s)=>{let n=r();n&&e.push(n)}),await Promise.all(e.map(i=>i.erase())),t||await Promise.all(e.map(i=>i.destroy()))}static register(e,t){hi.registry_.set(e,t)}static unregister(e){hi.registry_.delete(e)}static support(){let e=hi.getRegistry_();for(let t of e.values()){let i=t();if(i)return i.destroy(),!0}return!1}static overrideSupport(e){hi.override_=e}static clearOverride(){hi.override_=null}static getRegistry_(){let e=hi.override_,t=hi.registry_;return COMPILED?t:e||t}};l(hi,"override_",null),l(hi,"registry_",new Map);var Lt=hi;/*! @license
|
|
864
|
+
* Shaka Player
|
|
865
|
+
* Copyright 2016 Google LLC
|
|
866
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
867
|
+
*/var aa=class{constructor(){l(this,"uri_");this.uri_=null}configure(e){}async start(e,t){let i=ni.parse(e);if(this.uri_=i,i==null||!i.isManifest())throw new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.MALFORMED_OFFLINE_URI,e);let r=new Lt;try{await r.init();let a=(await(await r.getCell(i.mechanism(),i.cell())).getManifests([i.key()]))[0],c=new ls(i.mechanism(),i.cell()).fromManifestDB(a);return t.makeTextStreamsForClosedCaptions(c),c}finally{await r.destroy()}}stop(){return Promise.resolve()}update(){}async onExpirationUpdated(e,t){v.assert(this.uri_,"Should not get update event before start has been called");let i=this.uri_,r=new Lt;try{await r.init();let s=await r.getCell(i.mechanism(),i.cell()),a=(await s.getManifests([i.key()]))[0],o=a.sessionIds.includes(e),c=a.expiration==null||a.expiration>t;o&&c&&(p.debug("Updating expiration for stored content"),await s.updateManifestExpiration(i.key(),t))}catch(s){p.error("There was an error updating",i,s)}finally{await r.destroy()}}onInitialVariantChosen(e){}banLocation(e){}setMediaElement(e){}};me.registerParserByMime("application/x-offline-manifest",()=>new aa);/*! @license
|
|
868
|
+
* Shaka Player
|
|
869
|
+
* Copyright 2016 Google LLC
|
|
870
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
871
|
+
*/var oa=class y{static plugin(e,t,i,r){let s=ni.parse(e);return s&&s.isManifest()?y.getManifest_(e,t):s&&s.isSegment()?y.getSegment_(s.key(),s,t):je.failed(new h(h.Severity.CRITICAL,h.Category.NETWORK,h.Code.MALFORMED_OFFLINE_URI,e))}static getManifest_(e,t){let i={uri:e,originalUri:e,data:new ArrayBuffer(0),headers:{"content-type":"application/x-offline-manifest"},originalRequest:t};return je.completed(i)}static getSegment_(e,t,i){v.assert(t.isSegment(),"Only segment uri's should be given to getSegment");let r=new Lt;return je.completed(void 0).chain(()=>r.init()).chain(()=>r.getCell(t.mechanism(),t.cell())).chain(s=>s.getSegments([t.key()])).chain(s=>{let n=s[0];return{uri:t,data:n.data,headers:{},originalRequest:i}}).finally(()=>r.destroy())}};K.registerScheme("offline",oa.plugin);/*! @license
|
|
872
|
+
* Shaka Player
|
|
873
|
+
* Copyright 2016 Google LLC
|
|
874
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
875
|
+
*/var Tr=class y{constructor(e,t,i,r,s){l(this,"ref");l(this,"estimateId");l(this,"groupId");l(this,"isInitSegment");l(this,"refPosition");this.ref=e,this.estimateId=t,this.groupId=i,this.isInitSegment=r,this.refPosition=s}static idForSegmentRef(e){let t=e.getSegmentData(!1);if(t)return ne.toBase64(t);let i=r=>r.split("#xywh=")[0];return e.getUris().map(r=>"{"+encodeURI(i(r))+"}").join("")+":"+e.startByte+":"+e.endByte}getRefId(){return y.idForSegmentRef(this.ref)}makeSegmentRequest(e){return ct.createSegmentRequest(this.ref.getUris(),this.ref.startByte,this.ref.endByte,e.streaming.retryParameters)}};/*! @license
|
|
876
|
+
* Shaka Player
|
|
877
|
+
* Copyright 2016 Google LLC
|
|
878
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
879
|
+
*/var la=class{constructor(){l(this,"estimatedTotal_");l(this,"estimatedDownloaded_");l(this,"actualDownloaded_");l(this,"pending_");l(this,"nextId_");this.estimatedTotal_=0,this.estimatedDownloaded_=0,this.actualDownloaded_=0,this.pending_=new Map,this.nextId_=0}open(e){this.estimatedTotal_+=e;let t=this.nextId_;return this.nextId_++,this.pending_.set(t,e),t}close(e,t){if(!this.pending_.has(e))return;let i=this.pending_.get(e);this.pending_.delete(e),this.estimatedDownloaded_+=i,this.actualDownloaded_+=t}getEstimatedProgress(){return this.estimatedTotal_==0?0:this.estimatedDownloaded_/this.estimatedTotal_}getTotalDownloaded(){return this.actualDownloaded_}};/*! @license
|
|
880
|
+
* Shaka Player
|
|
881
|
+
* Copyright 2016 Google LLC
|
|
882
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
883
|
+
*/var ca=class{constructor(e){l(this,"networkingEngine_");l(this,"groups_");l(this,"destroyer_");l(this,"abortCallbacks_");l(this,"onProgress_");l(this,"onInitData_");l(this,"estimator_");l(this,"aborted_");this.networkingEngine_=e,this.groups_=new Map,this.destroyer_=new ci(()=>this.abortAll().catch(()=>{})),this.abortCallbacks_=[],this.onProgress_=(t,i)=>{},this.onInitData_=(t,i)=>{},this.estimator_=new la,this.aborted_=!1}destroy(){return this.destroyer_.destroy()}setCallbacks(e,t){this.onProgress_=e,this.onInitData_=t}abortAll(){this.aborted_=!0;let e=this.abortCallbacks_.map(t=>t());return this.abortCallbacks_=[],Promise.all(e)}isAborted(){return this.aborted_}addDownloadEstimate(e){return this.estimator_.open(e)}queue(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(async()=>{let o=await this.fetchSegment_(t);if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let c=D.toUint8(o),d=new ei(c);for(let u in d.data){let m=Number(u),f=d.data[m],g=d.systemIds[m];this.onInitData_(f,g)}}return this.estimator_.close(i,o.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(o)});return this.groups_.set(e,a),a}queueData(e,t,i,r,s){this.destroyer_.ensureNotDestroyed();let a=(this.groups_.get(e)||Promise.resolve()).then(()=>{if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED);if(r){let o=D.toUint8(t),c=new ei(o);for(let d in c.data){let u=Number(d),m=c.data[u],f=c.systemIds[u];this.onInitData_(m,f)}}return this.estimator_.close(i,t.byteLength),this.onProgress_(this.estimator_.getEstimatedProgress(),this.estimator_.getTotalDownloaded()),s(t)});return this.groups_.set(e,a),a}queueWork(e,t){this.destroyer_.ensureNotDestroyed();let r=(this.groups_.get(e)||Promise.resolve()).then(async()=>{await t()});return this.groups_.set(e,r),r}async waitToFinish(){return await Promise.all(this.groups_.values()),this.estimator_.getTotalDownloaded()}async fetchSegment_(e){let t=K.RequestType.SEGMENT,i=this.networkingEngine_.request(t,e),r=()=>i.abort();this.abortCallbacks_.push(r);let s=await i.promise;return ye.remove(this.abortCallbacks_,r),s.data}};/*! @license
|
|
884
|
+
* Shaka Player
|
|
885
|
+
* Copyright 2016 Google LLC
|
|
886
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
887
|
+
*/var qs=class y{async delete(e,t,i){let r=[];for(let s of y.createBuckets_(i)){let a=await this.doDelete_(e,t,s);r=r.concat(a)}return r}async doDelete_(e,t,i){let r=new Bi({netEngine:t,onError:()=>{},onKeyStatus:()=>{},onExpirationUpdated:()=>{},onEvent:()=>{}});try{r.configure(e),await r.initForRemoval(i.info.keySystem,i.info.licenseUri,i.info.serverCertificate,i.info.audioCapabilities,i.info.videoCapabilities)}catch(n){return p.warning("Error initializing EME",n),await r.destroy(),[]}let s=[];return await Promise.all(i.sessionIds.map(async n=>{try{await r.removeSession(n),s.push(n)}catch(a){p.warning("Error deleting offline session",a)}})),await r.destroy(),s}static createBuckets_(e){let t=[];for(let i of e){let r=!1;for(let s of t)if(y.isCompatible_(s.info,i)){s.sessionIds.push(i.sessionId),r=!0;break}r||t.push({info:i,sessionIds:[i.sessionId]})}return t}static isCompatible_(e,t){let i=(r,s)=>r.robustness==s.robustness&&r.contentType==s.contentType;return e.keySystem==t.keySystem&&e.licenseUri==t.licenseUri&&ye.hasSameElements(e.audioCapabilities,t.audioCapabilities,i)&&ye.hasSameElements(e.videoCapabilities,t.videoCapabilities,i)}};/*! @license
|
|
888
|
+
* Shaka Player
|
|
889
|
+
* Copyright 2016 Google LLC
|
|
890
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
891
|
+
*/var Gr=class y{static fromManifest(e,t,i,r){v.assert(t.variants.length,"Cannot create stored content from manifest with no variants.");let s=t.presentationTimeline.getDuration(),n=y.getTracks_(t);return{offlineUri:null,originalManifestUri:e,duration:s,size:i,expiration:1/0,tracks:n,appMetadata:r,isIncomplete:!1}}static fromManifestDB(e,t){v.assert(t.streams.length,"Cannot create stored content from manifestDB with no streams.");let r=new ls(e.mechanism(),e.cell()).fromManifestDB(t),s=t.appMetadata||{},n=y.getTracks_(r);return v.assert(t.expiration!=null,"Manifest expiration must be set by now!"),{offlineUri:e.toString(),originalManifestUri:t.originalManifestUri,duration:t.duration,size:t.size,expiration:t.expiration,tracks:n,appMetadata:s,isIncomplete:t.isIncomplete||!1}}static getTracks_(e){let t=[],i=se.getPlayableVariants(e.variants);for(let s of i)t.push(se.variantToTrack(s));let r=e.textStreams;for(let s of r)t.push(se.textStreamToTrack(s));return t}};/*! @license
|
|
892
|
+
* Shaka Player
|
|
893
|
+
* Copyright 2016 Google LLC
|
|
894
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
895
|
+
*/var vr=class vr{constructor(){l(this,"estimateByStreamId_");this.estimateByStreamId_=new Map}addVariant(e){let t=e.audio,i=e.video;if(t&&!i){let r=t.bandwidth||e.bandwidth;this.setBitrate_(t.id,r)}if(!t&&i){let r=i.bandwidth||e.bandwidth;this.setBitrate_(i.id,r)}if(t&&i){let r=t.bandwidth||vr.DEFAULT_AUDIO_BITRATE_,s=i.bandwidth||e.bandwidth-r;s<=0&&(p.warning("Audio bit rate consumes variants bandwidth. Setting video bandwidth to match variant's bandwidth."),s=e.bandwidth),this.setBitrate_(t.id,r),this.setBitrate_(i.id,s)}}setBitrate_(e,t){this.estimateByStreamId_.set(e,t)}addText(e){this.estimateByStreamId_.set(e.id,vr.DEFAULT_TEXT_BITRATE_)}addImage(e){this.estimateByStreamId_.set(e.id,e.bandwidth||vr.DEFAULT_IMAGE_BITRATE_)}getSegmentEstimate(e,t){let i=t.endTime-t.startTime;return this.getEstimate_(e)*i}getInitSegmentEstimate(e){return this.getEstimate_(e)*.5}getEstimate_(e){let t=this.estimateByStreamId_.get(e);return t==null&&(t=0,p.error("Asking for bitrate of stream not given to the estimator")),t==0&&p.warning("Using bitrate of 0, this stream won't affect progress"),t}};l(vr,"DEFAULT_AUDIO_BITRATE_",393216),l(vr,"DEFAULT_TEXT_BITRATE_",52),l(vr,"DEFAULT_IMAGE_BITRATE_",2048);var da=vr;/*! @license
|
|
896
|
+
* Shaka Player
|
|
897
|
+
* Copyright 2016 Google LLC
|
|
898
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
899
|
+
*/var Ws=class y{constructor(e){l(this,"config_");l(this,"networkingEngine_");l(this,"openOperations_");l(this,"openDownloadManagers_");l(this,"destroyer_");l(this,"nextExternalStreamId_");if(e&&e.constructor!=dt)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.LOCAL_PLAYER_INSTANCE_REQUIRED);this.config_=null,this.networkingEngine_=null,e?(this.config_=e.getSharedConfiguration(),this.networkingEngine_=e.getNetworkingEngine(),v.assert(this.networkingEngine_,"Storage should not be initialized with a player that had |destroy| called on it.")):(this.config_=st.createDefault(),this.networkingEngine_=new K,this.networkingEngine_.configure(this.config_.networking)),this.openOperations_=[],this.openDownloadManagers_=[];let t=!e;this.destroyer_=new ci(async()=>{await Promise.all(this.openDownloadManagers_.map(s=>s.abortAll()));let i=()=>{},r=[];for(let s of this.openOperations_)r.push(s.then(i,i));await Promise.all(r),t&&await this.networkingEngine_.destroy(),this.config_=null,this.networkingEngine_=null}),this.nextExternalStreamId_=1e9}static support(){return j.getDevice().supportsMediaSource()?Lt.support():!1}destroy(){return this.destroyer_.destroy()}configure(e,t){return v.assert(typeof e=="object"||arguments.length==2,"String configs should have values!"),arguments.length==2&&typeof e=="string"&&(e=Pt.convertToConfigObject(e,t)),v.assert(typeof e=="object","Should be an object!"),v.assert(this.config_,"Cannot reconfigure storage after calling destroy."),st.mergeConfigObjects(this.config_,e)}getConfiguration(){v.assert(this.config_,"Config must not be null!");let e=st.createDefault();return st.mergeConfigObjects(e,this.config_,st.createDefault()),e}getNetworkingEngine(){return this.networkingEngine_}store(e,t,i,r,s){v.assert(this.networkingEngine_,"Cannot call |store| after calling |destroy|.");let n=this.getConfiguration(),a=async()=>(v.assert(this.networkingEngine_,"Should not call |store| after |destroy|"),i||(i=await ct.getMimeType(e,this.networkingEngine_,n.manifest.retryParameters)),me.getFactory(e,i||null)()),o=new ca(this.networkingEngine_);this.openDownloadManagers_.push(o);let c=this.store_(e,t||{},r||[],s||[],a,n,o),d=new je(c,()=>o.abortAll());return d.finally(()=>{ye.remove(this.openDownloadManagers_,o)}),this.startAbortableOperation_(d)}async store_(e,t,i,r,s,n,a){this.requireSupport_();let o=null,c=null,d=new Lt,u=null,m=null,f=null;try{o=await s();let g=await this.parseManifest(e,o,n);if(this.ensureNotDestroyed_(),!!g.presentationTimeline.isDynamic())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.CANNOT_STORE_LIVE_OFFLINE,e);for(let w of i){let M=await this.createExternalImageStream_(w,g);g.imageStreams.push(M),this.ensureNotDestroyed_()}for(let w of r){let M=await this.createExternalTextStream_(g,w.uri,w.language,w.kind,w.mime,w.codecs);g.textStreams.push(M),this.ensureNotDestroyed_()}Bi.configureClearKey(n.drm.clearKeys,g.variants);let T=g.variants.some(w=>{if(w.audio){for(let M of w.audio.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}if(w.video){for(let M of w.video.drmInfos)if(M.licenseServerUri.startsWith("data:"))return!0}return!1}),S=n.offline.usePersistentLicense;if(T&&(S=!1),c=await this.createDrmEngine(g,w=>{f=f||w},n,S),this.ensureNotDestroyed_(),f)throw f;await this.filterManifest_(g,c,n,S),await d.init(),this.ensureNotDestroyed_(),u=await d.getActive(),this.ensureNotDestroyed_(),v.assert(c,"drmEngine should be non-null here.");let{manifestDB:b,toDownload:E}=this.makeManifestDB_(c,g,e,t,n,a,S),C=await u.cell.addManifests([b]);if(this.ensureNotDestroyed_(),m=C[0],v.assert(c,"drmEngine should be non-null here."),this.ensureNotDestroyed_(),f)throw f;await this.downloadSegments_(E,m,b,a,n,u.cell,g,c,S),this.ensureNotDestroyed_(),this.setManifestDrmFields_(g,b,c,S),await u.cell.updateManifest(m,b),this.ensureNotDestroyed_();let A=ni.manifest(u.path.mechanism,u.path.cell,m);return Gr.fromManifestDB(A,b)}catch(g){throw m!=null&&await y.cleanStoredManifest(m),f||g}finally{await d.destroy(),o&&await o.stop(),c&&await c.destroy()}}async downloadSegments_(e,t,i,r,s,n,a,o,c){let d={},u=0,m=()=>{if(this.destroyer_.destroyed()||r.isAborted())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)},f=async(_,T)=>{for(let S of _){m();let b=S.makeSegmentRequest(s),E=S.estimateId,C=S.isInitSegment,A=async x=>{let k=S.ref,L=k.getSegmentData(!1);k.aesKey&&!L&&(x=await vt.aesDecrypt(x,k.aesKey,S.refPosition));let V=Tr.idForSegmentRef(k),ee=await n.addSegments([{data:x}]);m(),d[V]=ee[0],u+=x.byteLength},M=S.ref.getSegmentData(!1);M?r.queueData(S.groupId,M,E,C,A):r.queue(S.groupId,b,E,C,A)}await r.waitToFinish(),m(),T&&!r.isAborted()&&(this.setManifestDrmFields_(a,i,o,c),await n.updateManifest(t,i))},g=!1;try{if(this.getManifestIsEncrypted_(a)&&g&&!this.getManifestIncludesInitData_(a)){await f(e.filter(S=>S.isInitSegment),!0),m(),e=e.filter(S=>!S.isInitSegment);let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>this.ensureNotDestroyed_()),m()}if(!g){await f(e,!1),m();let _=d,T=u;d={},u=0,await y.assignSegmentsToManifest(n,t,i,_,T,()=>m()),m(),v.assert(!i.isIncomplete,"The manifest should be complete by now")}}catch(_){let T=Object.values(d);throw await n.removeSegments(T,S=>{}),_}}static async cleanStoredManifest(e){let t=new Lt;await t.init();let i=await t.getActive(),r=ni.manifest(i.path.mechanism,i.path.cell,e);await t.destroy(),await new y().remove(r.toString())}static async assignSegmentsToManifest(e,t,i,r,s,n){let a=!1;try{let o=!0;for(let c of i.streams)if(c.type!=R.ContentType.CHAPTER)for(let d of c.segments){let u=d.pendingSegmentRefId?r[d.pendingSegmentRefId]:null;u!=null&&(d.dataKey=u,d.pendingSegmentRefId=void 0),u=d.pendingInitSegmentRefId?r[d.pendingInitSegmentRefId]:null,u!=null&&(d.initSegmentKey=u,d.pendingInitSegmentRefId=void 0),d.pendingSegmentRefId&&(o=!1),d.pendingInitSegmentRefId&&(o=!1)}i.size+=s,o&&(i.isIncomplete=!1),await e.updateManifest(t,i),a=!0,n()}catch(o){if(await y.cleanStoredManifest(t),!a){let c=Object.values(r);await e.removeSegments(c,d=>{})}throw o}}async filterManifest_(e,t,i,r){let s={width:1/0,height:1/0};se.filterByRestrictions(e,i.restrictions,s),await se.filterManifestByMediaCapabilities(t,e,r,i.drm.preferredKeySystems,i.drm.keySystemsMapping);let n=[],a=i.preferredDecodingAttributes,o=i.preferredVideo.map(b=>b.codec).filter(Boolean),c=i.preferredAudio.map(b=>b.codec).filter(Boolean),d=i.preferredText.map(b=>b.format).filter(Boolean);se.chooseCodecsAndFilterManifest(e,o,c,a,d);for(let b of e.variants)v.assert(se.isPlayable(b),'We should have already filtered by "is playable"'),n.push(se.variantToTrack(b));for(let b of e.textStreams)n.push(se.textStreamToTrack(b));for(let b of e.imageStreams)n.push(se.imageStreamToTrack(b));for(let b of e.chapterStreams)n.push(se.chapterStreamToTrack(b));let u=await i.offline.trackSelectionCallback(n),m=e.presentationTimeline.getDuration(),f=0;for(let b of u){let E=b.bandwidth*m/8;f+=E}try{if(!await i.offline.downloadSizeCallback(f))throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_LIMIT_REACHED)}catch(b){throw b instanceof h?b:(p.warning("downloadSizeCallback has produced an unexpected error",b),new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.DOWNLOAD_SIZE_CALLBACK_ERROR))}let g=new Set,_=new Set,T=new Set,S=new Set;for(let b of u)b.type=="variant"&&g.add(b.id),b.type=="text"&&_.add(b.id),b.type=="image"&&T.add(b.id),b.type=="chapter"&&S.add(b.id);e.variants=e.variants.filter(b=>g.has(b.id)),e.textStreams=e.textStreams.filter(b=>_.has(b.id)),e.imageStreams=e.imageStreams.filter(b=>T.has(b.id)),e.chapterStreams=e.chapterStreams.filter(b=>S.has(b.id)),y.validateManifest_(e)}makeManifestDB_(e,t,i,r,s,n,a){let o=Gr.fromManifest(i,t,0,r),c=s.offline.progressCallback,d=(E,C)=>{o.size=C,c(o,E)},u=(E,C)=>{m&&a&&f==C&&e.newInitData("cenc",E)};n.setCallbacks(d,u);let m=this.getManifestIsEncrypted_(t)&&!this.getManifestIncludesInitData_(t),f=null;if(m){let E=e.getDrmInfo();f=y.defaultSystemIds_.get(E.keySystem)}let g=new da;for(let E of t.textStreams)g.addText(E);for(let E of t.imageStreams)g.addImage(E);for(let E of t.chapterStreams)g.addImage(E);for(let E of t.variants)g.addVariant(E);let{streams:_,toDownload:T}=this.createStreams_(n,g,e,t,s),S=e.getDrmInfo();return S&&a&&(S.initData=[]),{manifestDB:{creationTime:Date.now(),originalManifestUri:i,duration:t.presentationTimeline.getDuration(),size:0,expiration:e.getExpiration(),streams:_,sessionIds:a?e.getSessionIds():[],drmInfo:S,appMetadata:r,isIncomplete:!0,sequenceMode:t.sequenceMode,type:t.type},toDownload:T}}getManifestIsEncrypted_(e){return e.variants.some(t=>{let i=t.video&&t.video.encrypted,r=t.audio&&t.audio.encrypted;return i||r})}getManifestIncludesInitData_(e){return e.variants.some(t=>{let i=t.video?t.video.drmInfos:[],r=t.audio?t.audio.drmInfos:[];return i.concat(r).some(n=>n.initData&&n.initData.length)})}setManifestDrmFields_(e,t,i,r){t.expiration=i.getExpiration();let s=i.getSessionIds();if(t.sessionIds=r?s:[],this.getManifestIsEncrypted_(e)&&r&&!s.length)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.NO_INIT_DATA_FOR_OFFLINE)}remove(e){return this.startOperation_(this.remove_(e))}async remove_(e){this.requireSupport_();let t=ni.parse(e);if(t==null||!t.isManifest())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MALFORMED_OFFLINE_URI,e);let i=t,r=new Lt;try{await r.init();let s=await r.getCell(i.mechanism(),i.cell()),a=(await s.getManifests([i.key()]))[0];await Promise.all([this.removeFromDRM_(i,a,r),this.removeFromStorage_(s,i,a)])}finally{await r.destroy()}}static getCapabilities_(e,t){let i=[];for(let r of e.streams)t&&r.type=="video"?i.push({contentType:N.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.videoRobustness}):!t&&r.type=="audio"&&i.push({contentType:N.getFullType(r.mimeType,r.codecs),robustness:e.drmInfo.audioRobustness});return i}async removeFromDRM_(e,t,i){v.assert(this.networkingEngine_,"Cannot be destroyed"),await y.deleteLicenseFor_(this.networkingEngine_,this.config_.drm,i,t)}removeFromStorage_(e,t,i){let r=y.getAllSegmentIds_(i),s=r.length+1,n=0,a=Gr.fromManifestDB(t,i),o=c=>{n+=1,this.config_.offline.progressCallback(a,n/s)};return Promise.all([e.removeSegments(r,o),e.removeManifests([t.key()],o)])}removeEmeSessions(){return this.startOperation_(this.removeEmeSessions_())}async removeEmeSessions_(){this.requireSupport_(),v.assert(this.networkingEngine_,"Cannot be destroyed");let e=this.networkingEngine_,t=this.config_.drm,i=new Lt,r=new qs,s=!1;try{await i.init();let n=[];i.forEachEmeSessionCell(a=>n.push(a));for(let a of n){let o=await a.getAll(),c=await r.delete(t,e,o);await a.remove(c),c.length!=o.length&&(s=!0)}}finally{await i.destroy()}return!s}list(){return this.startOperation_(this.list_())}async list_(){this.requireSupport_();let e=[],t=new Lt;try{await t.init();let i=Promise.resolve();t.forEachCell((r,s)=>{i=i.then(async()=>{(await s.getAllManifests()).forEach((a,o)=>{let c=ni.manifest(r.mechanism,r.cell,o),d=Gr.fromManifestDB(c,a);e.push(d)})})}),await i}finally{await t.destroy()}return e}async parseManifest(e,t,i){let r=null,s=this.networkingEngine_;v.assert(s,"Should be initialized!");let n={networkingEngine:s,filter:()=>Promise.resolve(),makeTextStreamsForClosedCaptions:c=>{},onTimelineRegionAdded:()=>{},onEvent:()=>{},onError:c=>{r=c},isLowLatencyMode:()=>!1,updateDuration:()=>{},newDrmInfo:c=>{},onManifestUpdated:()=>{},getBandwidthEstimate:()=>i.abr.defaultBandwidthEstimate,onMetadata:()=>Promise.resolve(),disableStream:c=>{},addFont:(c,d)=>{},getStreamingRetryParameters:()=>i.streaming.retryParameters,onSegmentReceived:(c,d)=>{}};t.configure(i.manifest),this.ensureNotDestroyed_();let a=await t.start(e,n);this.ensureNotDestroyed_();let o=y.getAllStreamsFromManifest_(a);if(await Promise.all(Qi.map(o,c=>c.createSegmentIndex())),this.ensureNotDestroyed_(),r)throw r;return a}async createExternalImageStream_(e,t){let i=await this.getTextMimetype_(e);if(i!="text/vtt")throw new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.UNSUPPORTED_EXTERNAL_THUMBNAILS_URI,e);v.assert(this.networkingEngine_,"Need networking engine.");let r=await this.getTextData_(e,this.networkingEngine_,this.config_.streaming.retryParameters),s=Ue.findParser(i);if(!s)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,i);let n=s(),a={periodStart:0,segmentStart:0,segmentEnd:t.presentationTimeline.getDuration(),vttOffset:0,isMpegTs:!1},o=D.toUint8(r),c=n.parseMedia(o,a,e,[]),d=[];for(let m of c){let f=null,g=()=>(f==null&&(f=fe.resolveUris([e],[m.payload])),f||[]),_=new Se(m.startTime,m.endTime,g,0,null,null,0,0,1/0);if(m.payload.includes("#xywh")){let T=m.payload.split("#xywh=")[1].split(",");T.length===4&&_.setThumbnailSprite({height:parseInt(T[3],10),positionX:parseInt(T[0],10),positionY:parseInt(T[1],10),width:parseInt(T[2],10)})}d.push(_)}let u=i;return d.length&&(u=await ct.getMimeType(d[0].getUris()[0],this.networkingEngine_,this.config_.manifest.retryParameters)),se.createStream({id:this.nextExternalStreamId_++,segmentIndex:new Ze(d),mimeType:u||"",kind:"",language:"und",type:R.ContentType.IMAGE,tilesLayout:"1x1",external:!0})}async createExternalTextStream_(e,t,i,r,s,n){s||(s=await this.getTextMimetype_(t));let a=se.createStream({id:this.nextExternalStreamId_++,segmentIndex:Ze.forSingleSegment(0,e.presentationTimeline.getDuration(),[t]),mimeType:s||"",codecs:n||"",kind:r,language:i,originalLanguage:i,type:R.ContentType.TEXT,external:!0}),o=N.getFullType(a.mimeType,a.codecs);if(!Ue.isTypeSupported(o))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.MISSING_TEXT_PLUGIN,s);return a}async getTextMimetype_(e){let t;try{v.assert(this.networkingEngine_,"Need networking engine."),t=await ct.getMimeType(e,this.networkingEngine_,this.config_.streaming.retryParameters)}catch(i){}if(t)return t;throw p.error("The mimeType has not been provided and it could not be deduced from its uri."),new h(h.Severity.RECOVERABLE,h.Category.TEXT,h.Code.TEXT_COULD_NOT_GUESS_MIME_TYPE,e)}async getTextData_(e,t,i){let r=K.RequestType.SEGMENT,s=K.makeRequest([e],i);return s.method="GET",(await t.request(r,s).promise).data}async createDrmEngine(e,t,i,r){v.assert(this.networkingEngine_,"Cannot call |createDrmEngine| after |destroy|");let s=new Bi({netEngine:this.networkingEngine_,onError:t,onKeyStatus:()=>{},onExpirationUpdated:()=>{},onEvent:()=>{}});return s.configure(i.drm),await s.initForStorage(e.variants,r),r&&await s.createOrLoad(),s}createStreams_(e,t,i,r,s){let n=new Map,a=y.getAllStreamsFromManifest_(r),o=new Map;for(let c of a){let d=this.createStream_(e,t,r,c,s,n);o.set(c.id,d)}for(let c of r.variants)c.audio&&o.get(c.audio.id).variantIds.push(c.id),c.video&&o.get(c.video.id).variantIds.push(c.id);return{streams:Array.from(o.values()),toDownload:Array.from(n.values())}}createStream_(e,t,i,r,s,n){let a={id:r.id,originalId:r.originalId,groupId:r.groupId,primary:r.primary,type:r.type,mimeType:r.mimeType,codecs:r.codecs,supplementalCodecs:"",frameRate:r.frameRate,pixelAspectRatio:r.pixelAspectRatio,hdr:r.hdr,colorGamut:r.colorGamut,videoLayout:r.videoLayout,kind:r.kind,language:r.language,originalLanguage:r.originalLanguage,label:r.label,width:r.width||null,height:r.height||null,encrypted:r.encrypted,keyIds:r.keyIds,segments:[],variantIds:[],roles:r.roles,forced:r.forced,channelsCount:r.channelsCount,audioSamplingRate:r.audioSamplingRate,spatialAudio:r.spatialAudio,closedCaptions:r.closedCaptions,tilesLayout:r.tilesLayout,external:r.external,fastSwitching:r.fastSwitching,isAudioMuxedInVideo:r.isAudioMuxedInVideo,isIframe:r.isIframe},o=i.presentationTimeline.getSegmentAvailabilityStart(),c=s.offline.numberOfParallelDownloads,d=c===0?r.id:0;return y.forEachSegment_(r,o,(u,m)=>{let f=Tr.idForSegmentRef(u),g,_=null;if(r.type==R.ContentType.CHAPTER){let S=u.getMetadata();S&&(_=S.title)}if(!_&&!n.has(f)){let S=e.addDownloadEstimate(t.getSegmentEstimate(r.id,u)),b=new Tr(u,S,d,!1,m);n.set(f,b)}if(u.initSegmentReference&&(g=Tr.idForSegmentRef(u.initSegmentReference),!n.has(g))){let S=e.addDownloadEstimate(t.getInitSegmentEstimate(r.id)),b=new Tr(u.initSegmentReference,S,d,!0,m);n.set(g,b)}let T={pendingInitSegmentRefId:g,initSegmentKey:g?0:null,startTime:u.startTime,endTime:u.endTime,appendWindowStart:u.appendWindowStart,appendWindowEnd:u.appendWindowEnd,timestampOffset:u.timestampOffset,tilesLayout:u.tilesLayout,pendingSegmentRefId:f,dataKey:0,mimeType:u.mimeType,codecs:u.codecs,thumbnailSprite:u.thumbnailSprite,chapterTitle:_};a.segments.push(T),c!==0&&(d=(d+1)%c)}),a}static forEachSegment_(e,t,i){let r=e.segmentIndex.find(t);if(r==null)return;let s=e.segmentIndex.get(r);for(;s;)i(s,r),s=e.segmentIndex.get(++r)}ensureNotDestroyed_(){if(this.destroyer_.destroyed())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.OPERATION_ABORTED)}requireSupport_(){if(!y.support())throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.STORAGE_NOT_SUPPORTED)}async startOperation_(e){this.openOperations_.push(e);try{return await e}finally{ye.remove(this.openOperations_,e)}}startAbortableOperation_(e){let t=e.promise;return this.openOperations_.push(t),e.finally(()=>{ye.remove(this.openOperations_,t)})}static getAllSegmentIds_(e){let t=new Set;for(let i of e.streams)for(let r of i.segments)r.initSegmentKey!=null&&t.add(r.initSegmentKey),t.add(r.dataKey);return Array.from(t)}static async deleteAll(){let e=new Lt;try{await e.erase()}finally{await e.destroy()}}static async deleteLicenseFor_(e,t,i,r){if(!r.drmInfo)return;let s=i.getEmeSessionCell(),n=r.sessionIds.map(c=>({sessionId:c,keySystem:r.drmInfo.keySystem,licenseUri:r.drmInfo.licenseServerUri,serverCertificate:r.drmInfo.serverCertificate,audioCapabilities:y.getCapabilities_(r,!1),videoCapabilities:y.getCapabilities_(r,!0)})),o=await new qs().delete(t,e,n);await s.remove(o),await s.add(n.filter(c=>!o.includes(c.sessionId)))}static getAllStreamsFromManifest_(e){let t=new Set;for(let i of e.variants)i.audio&&t.add(i.audio),i.video&&t.add(i.video);for(let i of e.textStreams)t.add(i);for(let i of e.imageStreams)t.add(i);for(let i of e.chapterStreams)t.add(i);return t}static validateManifest_(e){let t=new Set(e.variants.map(s=>s.video)),i=new Set(e.variants.map(s=>s.audio)),r=e.textStreams;t.size>1&&p.warning("Multiple video tracks selected to be stored");for(let s of i)for(let n of i)s!=n&&s.language==n.language&&p.warning("Similar audio tracks were selected to be stored",s.id,n.id);for(let s of r)for(let n of r)s!=n&&s.language==n.language&&p.warning("Similar text tracks were selected to be stored",s.id,n.id)}};Ws.defaultSystemIds_=new Map().set("org.w3.clearkey","1077efecc0b24d02ace33c1e52e2fb4b").set("com.widevine.alpha","edef8ba979d64acea3c827dcd51d21ed").set("com.microsoft.playready","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.recommendation","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.software","9a04f07998404286ab92e65be0885f95").set("com.microsoft.playready.hardware","9a04f07998404286ab92e65be0885f95").set("com.huawei.wiseplay","3d5e6d359b9a41e8b843dd3c6e72c42c");dt.registerSupportPlugin("offline",Ws.support);/*! @license
|
|
900
|
+
* Shaka Player
|
|
901
|
+
* Copyright 2016 Google LLC
|
|
902
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
903
|
+
*/var ua=class{constructor(e,t){l(this,"transaction_");l(this,"store_");l(this,"promise_");this.transaction_=e,this.store_=e.objectStore(t),this.promise_=Promise.withResolvers(),e.onabort=i=>{i.preventDefault(),this.promise_.reject()},e.onerror=i=>{i.preventDefault(),this.promise_.reject()},e.oncomplete=i=>{this.promise_.resolve()}}async abort(){try{this.transaction_.abort()}catch(e){}try{await this.promise_.promise}catch(e){}}forEachEntry(e){return new Promise((t,i)=>{let r=this.store_.openCursor();r.onerror=i,r.onsuccess=async s=>{if(r.result==null){t();return}let n=r.result;await e(n.key,n.value,n),n.continue()}})}store(){return this.store_}promise(){return this.promise_.promise}};/*! @license
|
|
904
|
+
* Shaka Player
|
|
905
|
+
* Copyright 2016 Google LLC
|
|
906
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
907
|
+
*/var cs=class{constructor(e){l(this,"connection_");l(this,"pending_");this.connection_=e,this.pending_=[]}destroy(){return Promise.all(this.pending_.map(e=>e.abort()))}startReadOnlyOperation(e){return this.startOperation_(e,"readonly")}startReadWriteOperation(e){return this.startOperation_(e,"readwrite")}startOperation_(e,t){let i=this.connection_.transaction([e],t),r=new ua(i,e);return this.pending_.push(r),r.promise().then(()=>this.stopTracking_(r),()=>this.stopTracking_(r)),r}stopTracking_(e){ye.remove(this.pending_,e)}};/*! @license
|
|
908
|
+
* Shaka Player
|
|
909
|
+
* Copyright 2016 Google LLC
|
|
910
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
911
|
+
*/var ha=class{constructor(e,t){l(this,"connection_");l(this,"store_");this.connection_=new cs(e),this.store_=t}destroy(){return this.connection_.destroy()}async getAll(){let e=this.connection_.startReadOnlyOperation(this.store_),t=[];return await e.forEachEntry((i,r)=>{t.push(r)}),await e.promise(),t}add(e){let t=this.connection_.startReadWriteOperation(this.store_),i=t.store();for(let r of e)i.add(r);return t.promise()}async remove(e){let t=this.connection_.startReadWriteOperation(this.store_);await t.forEachEntry((i,r,s)=>{e.includes(r.sessionId)&&s.delete()}),await t.promise()}};/*! @license
|
|
912
|
+
* Shaka Player
|
|
913
|
+
* Copyright 2016 Google LLC
|
|
914
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
915
|
+
*/var Sr=class{constructor(e,t,i){l(this,"connection_");l(this,"segmentStore_");l(this,"manifestStore_");this.connection_=new cs(e),this.segmentStore_=t,this.manifestStore_=i}destroy(){return this.connection_.destroy()}hasFixedKeySpace(){return!0}addSegments(e){return this.rejectAdd(this.segmentStore_)}removeSegments(e,t){return this.remove_(this.segmentStore_,e,t)}async getSegments(e){return(await this.get_(this.segmentStore_,e)).map(i=>this.convertSegmentData(i))}addManifests(e){return this.rejectAdd(this.manifestStore_)}updateManifest(e,t){return this.rejectUpdate(this.manifestStore_)}updateManifestImplementation(e,t){let i=this.connection_.startReadWriteOperation(this.manifestStore_),r=i.store();return r.get(e).onsuccess=s=>{r.put(t,e)},i.promise()}updateManifestExpiration(e,t){let i=this.connection_.startReadWriteOperation(this.manifestStore_),r=i.store();return r.get(e).onsuccess=s=>{let n=s.target.result;n&&(n.expiration=t,r.put(n,e))},i.promise()}removeManifests(e,t){return this.remove_(this.manifestStore_,e,t)}async getManifests(e){let t=await this.get_(this.manifestStore_,e);return Promise.all(t.map(i=>this.convertManifest(i)))}async getAllManifests(){let e=this.connection_.startReadOnlyOperation(this.manifestStore_),t=new Map;return await e.forEachEntry(async(i,r)=>{let s=await this.convertManifest(r);t.set(i,s)}),await e.promise(),t}convertSegmentData(e){return e}convertManifest(e){return Promise.resolve(e)}rejectAdd(e){return Promise.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.NEW_KEY_OPERATION_NOT_SUPPORTED,"Cannot add new value to "+e))}rejectUpdate(e){return Promise.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MODIFY_OPERATION_NOT_SUPPORTED,"Cannot modify values in "+e))}async add(e,t){let i=this.connection_.startReadWriteOperation(e),r=i.store(),s=[];for(let n of t){let a=r.add(n);a.onsuccess=o=>{let c=a.result;s.push(c)}}return await i.promise(),s}remove_(e,t,i){let r=this.connection_.startReadWriteOperation(e),s=r.store();for(let n of t)s.delete(n).onsuccess=()=>i(n);return r.promise()}async get_(e,t){let i=this.connection_.startReadOnlyOperation(e),r=i.store(),s={},n=[];for(let a of t){let o=r.get(a);o.onsuccess=()=>{o.result==null&&n.push(a),s[a]=o.result}}if(await i.promise(),n.length)throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.KEY_NOT_FOUND,"Could not find values for "+n);return t.map(a=>s[a])}};/*! @license
|
|
916
|
+
* Shaka Player
|
|
917
|
+
* Copyright 2016 Google LLC
|
|
918
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
919
|
+
*/var ma=class y extends Sr{async updateManifestExpiration(e,t){let i=this.connection_.startReadWriteOperation(this.manifestStore_),r=i.store(),s=Promise.withResolvers();r.get(e).onsuccess=n=>{let a=n.target.result;a?(v.assert(a.key==e,"With in-line keys, the keys should match"),a.expiration=t,r.put(a),s.resolve()):s.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.KEY_NOT_FOUND,"Could not find values for "+e))},await Promise.all([i.promise(),s.promise])}async convertManifest(e){let t=[];for(let r=0;r<e.periods.length;++r){let n=(r==e.periods.length-1?e.duration:e.periods[r+1].startTime)-e.periods[r].startTime,a=y.convertPeriod_(e.periods[r],n);t.push(a)}let i=await gr.combineDbStreams(t);return{creationTime:0,originalManifestUri:e.originalManifestUri,duration:e.duration,size:e.size,expiration:e.expiration==null?1/0:e.expiration,streams:i,sessionIds:e.sessionIds,drmInfo:e.drmInfo,appMetadata:e.appMetadata,sequenceMode:!1}}static convertPeriod_(e,t){y.fillMissingVariants_(e);for(let i of e.streams)v.assert(i.variantIds,"After filling in missing variants, each stream should have variant ids");return e.streams.map(i=>y.convertStream_(i,e.startTime,t))}static convertStream_(e,t,i){let r=e.initSegmentUri?y.getKeyFromSegmentUri_(e.initSegmentUri):null,s=t+e.presentationTimeOffset,n=t,a=t+i;return{id:e.id,originalId:null,groupId:null,primary:e.primary,type:e.contentType,mimeType:e.mimeType,codecs:e.codecs,frameRate:e.frameRate,pixelAspectRatio:void 0,hdr:void 0,colorGamut:void 0,videoLayout:void 0,kind:e.kind,language:e.language,originalLanguage:e.language||null,label:e.label,width:e.width,height:e.height,initSegmentKey:r,encrypted:e.encrypted,keyIds:new Set([e.keyId]),segments:e.segments.map(o=>y.convertSegment_(o,r,n,a,s)),variantIds:e.variantIds,roles:[],forced:!1,audioSamplingRate:null,channelsCount:null,spatialAudio:!1,closedCaptions:null,tilesLayout:void 0,external:!1,fastSwitching:!1,isAudioMuxedInVideo:!1,isIframe:!1}}static convertSegment_(e,t,i,r,s){let n=y.getKeyFromSegmentUri_(e.uri);return{startTime:i+e.startTime,endTime:i+e.endTime,dataKey:n,initSegmentKey:t,appendWindowStart:i,appendWindowEnd:r,timestampOffset:s,tilesLayout:"",mimeType:null,codecs:null,thumbnailSprite:null,chapterTitle:null}}convertSegmentData(e){return{data:e.data}}static getKeyFromSegmentUri_(e){let t=null;if(t=/^offline:[0-9]+\/[0-9]+\/([0-9]+)$/.exec(e),t||(t=/^offline:segment\/([0-9]+)$/.exec(e),t))return Number(t[1]);throw new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.MALFORMED_OFFLINE_URI,"Could not parse uri "+e)}static fillMissingVariants_(e){let t=R.ContentType.AUDIO,i=R.ContentType.VIDEO,r=e.streams.filter(a=>a.contentType==t),s=e.streams.filter(a=>a.contentType==i);if(r.every(a=>a.variantIds)&&s.every(a=>a.variantIds))return;v.assert(r.every(a=>!a.variantIds),"Some audio streams have variant ids and some do not."),v.assert(s.every(a=>!a.variantIds),"Some video streams have variant ids and some do not.");for(let a of r)a.variantIds=[];for(let a of s)a.variantIds=[];let n=0;if(s.length&&!r.length){p.debug("Found video-only content. Creating variants for video.");let a=n++;for(let o of s)o.variantIds.push(a)}if(!s.length&&r.length){p.debug("Found audio-only content. Creating variants for audio.");let a=n++;for(let o of r)o.variantIds.push(a)}if(s.length&&r.length){p.debug("Found audio-video content. Creating variants.");for(let a of r)for(let o of s){let c=n++;a.variantIds.push(c),o.variantIds.push(c)}}}};/*! @license
|
|
920
|
+
* Shaka Player
|
|
921
|
+
* Copyright 2016 Google LLC
|
|
922
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
923
|
+
*/var zs=class extends Sr{async convertManifest(e){let t=[];for(let r=0;r<e.periods.length;++r){let n=(r==e.periods.length-1?e.duration:e.periods[r+1].startTime)-e.periods[r].startTime,a=this.convertPeriod_(e.periods[r],n);t.push(a)}let i=await gr.combineDbStreams(t);return{appMetadata:e.appMetadata,creationTime:0,drmInfo:e.drmInfo,duration:e.duration,expiration:e.expiration==null?1/0:e.expiration,originalManifestUri:e.originalManifestUri,sessionIds:e.sessionIds,size:e.size,streams:i,sequenceMode:!1}}convertPeriod_(e,t){let i=[];for(let r of e.streams)r.variantIds.length!=0&&i.push(this.convertStream_(r,e.startTime,e.startTime+t));return i}convertStream_(e,t,i){return{id:e.id,originalId:e.originalId,groupId:null,primary:e.primary,type:e.contentType,mimeType:e.mimeType,codecs:e.codecs,frameRate:e.frameRate,pixelAspectRatio:e.pixelAspectRatio,hdr:void 0,colorGamut:void 0,videoLayout:void 0,kind:e.kind,language:e.language,originalLanguage:e.language||null,label:e.label,width:e.width,height:e.height,encrypted:e.encrypted,keyIds:new Set([e.keyId]),segments:e.segments.map(r=>this.convertSegment_(r,e.initSegmentKey,t,i,e.presentationTimeOffset)),variantIds:e.variantIds,roles:[],forced:!1,audioSamplingRate:null,channelsCount:null,spatialAudio:!1,closedCaptions:null,tilesLayout:void 0,external:!1,fastSwitching:!1,isAudioMuxedInVideo:!1,isIframe:!1}}convertSegment_(e,t,i,r,s){let n=i-s;return{startTime:i+e.startTime,endTime:i+e.endTime,initSegmentKey:t,appendWindowStart:i,appendWindowEnd:r,timestampOffset:n,dataKey:e.dataKey,tilesLayout:"",mimeType:null,codecs:null,thumbnailSprite:null,chapterTitle:null}}};/*! @license
|
|
924
|
+
* Shaka Player
|
|
925
|
+
* Copyright 2016 Google LLC
|
|
926
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
927
|
+
*/var pa=class extends Sr{hasFixedKeySpace(){return!1}addSegments(e){return this.add(this.segmentStore_,e)}addManifests(e){return this.add(this.manifestStore_,e)}updateManifest(e,t){return this.updateManifestImplementation(e,t)}convertManifest(e){return e.expiration==null&&(e.expiration=1/0),Promise.resolve(e)}};/*! @license
|
|
928
|
+
* Shaka Player
|
|
929
|
+
* Copyright 2016 Google LLC
|
|
930
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
931
|
+
*/var qe=class qe{constructor(){l(this,"db_");l(this,"v1_");l(this,"v2_");l(this,"v3_");l(this,"v5_");l(this,"sessions_");this.db_=null,this.v1_=null,this.v2_=null,this.v3_=null,this.v5_=null,this.sessions_=null}init(){let e=qe.DB_NAME,t=qe.VERSION,i=Promise.withResolvers(),r=!1,s=new ae(()=>{r=!0,i.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.INDEXED_DB_INIT_TIMED_OUT))}),n=Po;typeof n=="number"&&n>0&&s.tickAfter(n);let a=window.indexedDB.open(e,t);return a.onsuccess=o=>{if(r)return;s.stop();let c=a.result;this.db_=c,this.v1_=qe.createV1_(c),this.v2_=qe.createV2_(c),this.v3_=qe.createV3_(c),this.v5_=qe.createV5_(c),this.sessions_=qe.createEmeSessionCell_(c),i.resolve()},a.onupgradeneeded=o=>{this.createStores_(a.result)},a.onerror=o=>{r||(s.stop(),i.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.INDEXED_DB_ERROR,a.error)),o.preventDefault())},i.promise}async destroy(){this.v1_&&await this.v1_.destroy(),this.v2_&&await this.v2_.destroy(),this.v3_&&await this.v3_.destroy(),this.v5_&&await this.v5_.destroy(),this.sessions_&&await this.sessions_.destroy(),this.db_&&this.db_.close()}getCells(){let e=new Map;return this.v1_&&e.set("v1",this.v1_),this.v2_&&e.set("v2",this.v2_),this.v3_&&e.set("v3",this.v3_),this.v5_&&e.set("v5",this.v5_),e}getEmeSessionCell(){return v.assert(this.sessions_,"Cannot be destroyed."),this.sessions_}async erase(){this.v1_&&await this.v1_.destroy(),this.v2_&&await this.v2_.destroy(),this.v3_&&await this.v3_.destroy(),this.v5_&&await this.v5_.destroy(),this.db_&&this.db_.close(),await qe.deleteAll_(),this.db_=null,this.v1_=null,this.v2_=null,this.v3_=null,this.v5_=null,await this.init()}static createV1_(e){let t=qe.V1_SEGMENT_STORE,i=qe.V1_MANIFEST_STORE,r=e.objectStoreNames;return r.contains(i)&&r.contains(t)?(p.debug("Mounting v1 idb storage cell"),new ma(e,t,i)):null}static createV2_(e){let t=qe.V2_SEGMENT_STORE,i=qe.V2_MANIFEST_STORE,r=e.objectStoreNames;return r.contains(i)&&r.contains(t)?(p.debug("Mounting v2 idb storage cell"),new zs(e,t,i)):null}static createV3_(e){let t=qe.V3_SEGMENT_STORE,i=qe.V3_MANIFEST_STORE,r=e.objectStoreNames;return r.contains(i)&&r.contains(t)?(p.debug("Mounting v3 idb storage cell"),new zs(e,t,i)):null}static createV5_(e){let t=qe.V5_SEGMENT_STORE,i=qe.V5_MANIFEST_STORE,r=e.objectStoreNames;return r.contains(i)&&r.contains(t)?(p.debug("Mounting v5 idb storage cell"),new pa(e,t,i)):null}static createEmeSessionCell_(e){let t=qe.SESSION_ID_STORE;return e.objectStoreNames.contains(t)?(p.debug("Mounting session ID idb storage cell"),new ha(e,t)):null}createStores_(e){let t=[qe.V5_SEGMENT_STORE,qe.V5_MANIFEST_STORE,qe.SESSION_ID_STORE];for(let i of t)e.objectStoreNames.contains(i)||e.createObjectStore(i,{autoIncrement:!0})}static deleteAll_(){let e=qe.DB_NAME,t=Promise.withResolvers(),i=window.indexedDB.deleteDatabase(e);return i.onblocked=r=>{p.warning("Deleting",e,"is being blocked",r)},i.onsuccess=r=>{t.resolve()},i.onerror=r=>{t.reject(new h(h.Severity.CRITICAL,h.Category.STORAGE,h.Code.INDEXED_DB_ERROR,i.error)),r.preventDefault()},t.promise}};l(qe,"DB_NAME","shaka_offline_db"),l(qe,"VERSION",5),l(qe,"V1_SEGMENT_STORE","segment"),l(qe,"V2_SEGMENT_STORE","segment-v2"),l(qe,"V3_SEGMENT_STORE","segment-v3"),l(qe,"V5_SEGMENT_STORE","segment-v5"),l(qe,"V1_MANIFEST_STORE","manifest"),l(qe,"V2_MANIFEST_STORE","manifest-v2"),l(qe,"V3_MANIFEST_STORE","manifest-v3"),l(qe,"V5_MANIFEST_STORE","manifest-v5"),l(qe,"SESSION_ID_STORE","session-ids");var fa=qe,Po=5;Lt.register("idb",()=>j.getDevice().supportsOfflineStorage()?new fa:null);/*! @license
|
|
932
|
+
* Shaka Player
|
|
933
|
+
* Copyright 2016 Google LLC
|
|
934
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
935
|
+
*/var br=class br{static installAll(){for(let e of br.polyfills_)try{e.callback()}catch(t){p.alwaysWarn("Error installing polyfill!",t)}}static register(e,t){let i={priority:t||0,callback:e};for(let r=0;r<br.polyfills_.length;r++)if(br.polyfills_[r].priority<i.priority){br.polyfills_.splice(r,0,i);return}br.polyfills_.push(i)}};l(br,"polyfills_",[]);var Re=br;/*! @license
|
|
936
|
+
* Shaka Player
|
|
937
|
+
* Copyright 2016 Google LLC
|
|
938
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
939
|
+
*/var ga=class y{static install(){if(Object.getOwnPropertyDescriptor(Element.prototype,"ariaHidden")){p.info("Using native ARIAMixin interface.");return}p.info("ARIAMixin interface not detected. Installing polyfill.");let e=["ariaHidden","ariaLabel","ariaPressed","ariaSelected"];for(let t of e)y.addARIAMixinAttribute_(t)}static addARIAMixinAttribute_(e){let i=`aria-${e.toLowerCase().replace(/^aria/,"")}`;Object.defineProperty(Element.prototype,e,{get(){return this.getAttribute(i)},set(r){let s=this;r==null||r==null?s.removeAttribute(i):s.setAttribute(i,r)}})}};Re.register(ga.install);/*! @license
|
|
940
|
+
* Shaka Player
|
|
941
|
+
* Copyright 2016 Google LLC
|
|
942
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
943
|
+
*/var ds=class{constructor(e,t,i){l(this,"mksa_");l(this,"videoScheme_");l(this,"audioScheme_");l(this,"keySystem");this.mksa_=e,this.videoScheme_=t||null,this.audioScheme_=i||null,this.keySystem=e.keySystem}getConfiguration(){let e=this.mksa_.getConfiguration();if(e.videoCapabilities)for(let t of e.videoCapabilities)t.encryptionScheme=this.videoScheme_;if(e.audioCapabilities)for(let t of e.audioCapabilities)t.encryptionScheme=this.audioScheme_;return e}createMediaKeys(){return this.mksa_.createMediaKeys()}};/*! @license
|
|
944
|
+
* Shaka Player
|
|
945
|
+
* Copyright 2016 Google LLC
|
|
946
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
947
|
+
*/var Li=class{static guessSupportedScheme(e){return de.isFairPlayKeySystem(e)?"cbcs":de.isWidevineKeySystem(e)||de.isPlayReadyKeySystem(e)||de.isClearKeySystem(e)||de.isWisePlayKeySystem(e)?"cenc":(p.alwaysWarn("EmeEncryptionSchemePolyfill: Unknown key system:",e,"Please contribute!"),null)}static hasEncryptionScheme(e){if(!e)return!1;let t=e.getConfiguration(),i=t.videoCapabilities&&t.videoCapabilities[0],r=t.audioCapabilities&&t.audioCapabilities[0],s=i||r;return!!(s&&s.encryptionScheme!==void 0)}static checkSupportedScheme(e,t){return!!(!e||e==t||(e=="cbcs"||e=="cbcs-1-9")&&j.getDevice().supportsCbcsWithoutEncryptionSchemeSupport())}};/*! @license
|
|
948
|
+
* Shaka Player
|
|
949
|
+
* Copyright 2016 Google LLC
|
|
950
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
951
|
+
*/var _a=class y{static install(){if(!j.getDevice().supportsEncryptionSchemePolyfill())return;let t="EmeEncryptionSchemePolyfill:";if(y.originalRMKSA_||navigator.emeEncryptionSchemePolyfilled){p.debug(t,"Already installed.");return}if(!navigator.requestMediaKeySystemAccess||!MediaKeySystemAccess.prototype.getConfiguration){p.debug(t,"EME not found");return}y.originalRMKSA_=navigator.requestMediaKeySystemAccess,p.debug(t,"Waiting to detect encryptionScheme support."),navigator.requestMediaKeySystemAccess=y.probeRMKSA_,navigator.emeEncryptionSchemePolyfilled=!0}static async probeRMKSA_(e,t){let i="EmeEncryptionSchemePolyfill:";v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');let r=await y.originalRMKSA_.call(this,e,t);return Li.hasEncryptionScheme(r)?(p.debug(i,"Native encryptionScheme support found."),navigator.requestMediaKeySystemAccess=y.originalRMKSA_,r):(p.debug(i,"No native encryptionScheme support found. Patching encryptionScheme support."),navigator.requestMediaKeySystemAccess=y.polyfillRMKSA_,y.polyfillRMKSA_.call(this,e,t))}static async polyfillRMKSA_(e,t){v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');let i=Li.guessSupportedScheme(e),r=[];for(let o of t){let c=y.filterCapabilities_(o.videoCapabilities,i),d=y.filterCapabilities_(o.audioCapabilities,i);if(!(o.videoCapabilities&&o.videoCapabilities.length&&!c.length)){if(!(o.audioCapabilities&&o.audioCapabilities.length&&!d.length)){let u=Object.assign({},o);u.videoCapabilities=c,u.audioCapabilities=d,r.push(u)}}}if(!r.length){let o=new Error("Unsupported keySystem or supportedConfigurations.");throw o.name="NotSupportedError",o.code=DOMException.NOT_SUPPORTED_ERR,o}let s=await y.originalRMKSA_.call(this,e,r),n=null,a=null;return r[0]&&(r[0].videoCapabilities&&(n=r[0].videoCapabilities[0].encryptionScheme),r[0].audioCapabilities&&(a=r[0].audioCapabilities[0].encryptionScheme)),new ds(s,n,a)}static filterCapabilities_(e,t){return e&&e.filter(i=>Li.checkSupportedScheme(i.encryptionScheme,t))}};Re.register(_a.install);/*! @license
|
|
952
|
+
* Shaka Player
|
|
953
|
+
* Copyright 2016 Google LLC
|
|
954
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
955
|
+
*/var ya=class y{static install(){if(!window.Document)return;let e=Element.prototype;e.requestFullscreen=e.requestFullscreen||e.mozRequestFullScreen||e.webkitRequestFullscreen,e=Document.prototype,e.exitFullscreen=e.exitFullscreen||e.mozCancelFullScreen||e.webkitCancelFullScreen,"fullscreenElement"in document||(Object.defineProperty(document,"fullscreenElement",{get:()=>document.mozFullScreenElement||document.webkitCurrentFullScreenElement||document.webkitFullscreenElement}),Object.defineProperty(document,"fullscreenEnabled",{get:()=>document.mozFullScreenEnabled||document.webkitFullscreenEnabled}));let t=y.proxyEvent_;document.addEventListener("webkitfullscreenchange",t),document.addEventListener("webkitfullscreenerror",t),document.addEventListener("mozfullscreenchange",t),document.addEventListener("mozfullscreenerror",t)}static proxyEvent_(e){let t=e.type.replace(/^(webkit|moz)/,"").toLowerCase(),i=document.createEvent("Event");i.initEvent(t,e.bubbles,e.cancelable),e.target.dispatchEvent(i)}};Re.register(ya.install);/*! @license
|
|
956
|
+
* Shaka Player
|
|
957
|
+
* Copyright 2016 Google LLC
|
|
958
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
959
|
+
*/var Ta=class y{static install(){p.debug("Map.install"),"getOrInsert"in Map.prototype||(p.debug("Map: Installing getOrInsert polyfill."),Map.prototype.getOrInsert=y.mapGetOrInsert_),"getOrInsertComputed"in Map.prototype||(p.debug("Map: Installing getOrInsertComputed polyfill."),Map.prototype.getOrInsertComputed=y.mapGetOrInsertComputed_),p.debug("WeakMap.install"),"getOrInsert"in WeakMap.prototype||(p.debug("WeakMap: Installing getOrInsert polyfill."),WeakMap.prototype.getOrInsert=y.mapGetOrInsert_),"getOrInsertComputed"in WeakMap.prototype||(p.debug("WeakMap: Installing getOrInsertComputed polyfill."),WeakMap.prototype.getOrInsertComputed=y.mapGetOrInsertComputed_)}static mapGetOrInsert_(e,t){return this.has(e)||this.set(e,t),this.get(e)}static mapGetOrInsertComputed_(e,t){return this.has(e)||this.set(e,t(e)),this.get(e)}};Re.register(Ta.install);/*! @license
|
|
960
|
+
* Shaka Player
|
|
961
|
+
* Copyright 2016 Google LLC
|
|
962
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
963
|
+
*/var va=class y{static install(){if(!j.getDevice().supportsEncryptionSchemePolyfill())return;let t="McEncryptionSchemePolyfill:";if(y.originalDecodingInfo_||navigator.mediaCapabilitiesEncryptionSchemePolyfilled){p.debug(t,"Already installed.");return}if(!navigator.mediaCapabilities){p.debug(t,"MediaCapabilities not found");return}y.originalDecodingInfo_=navigator.mediaCapabilities.decodingInfo,p.debug(t,"Waiting to detect encryptionScheme support."),navigator.mediaCapabilities.decodingInfo=y.probeDecodingInfo_,navigator.mediaCapabilitiesEncryptionSchemePolyfilled=!0}static async probeDecodingInfo_(e){let t="McEncryptionSchemePolyfill:";v.assert(this==navigator.mediaCapabilities,'bad "this" for decodingInfo');let i=await y.originalDecodingInfo_.call(this,e);if(!i.supported||!e.keySystemConfiguration)return i;let r=i.keySystemAccess;return Li.hasEncryptionScheme(r)?(p.debug(t,"Native encryptionScheme support found."),navigator.mediaCapabilities.decodingInfo=y.originalDecodingInfo_,i):(p.debug(t,"No native encryptionScheme support found. Patching encryptionScheme support."),navigator.mediaCapabilities.decodingInfo=y.polyfillDecodingInfo_,r?y.polyfillDecodingInfo_.call(this,e):(i.keySystemAccess=await y.getMediaKeySystemAccess_(e),i))}static async polyfillDecodingInfo_(e){v.assert(this==navigator.mediaCapabilities,'bad "this" for decodingInfo');let t=null,i=null;if(e.keySystemConfiguration){let s=e.keySystemConfiguration,n=s.keySystem;i=s.audio&&s.audio.encryptionScheme,t=s.video&&s.video.encryptionScheme;let a=Li.guessSupportedScheme(n),o={powerEfficient:!1,smooth:!1,supported:!1,keySystemAccess:null,configuration:e};if(!Li.checkSupportedScheme(i,a)||!Li.checkSupportedScheme(t,a))return o}let r=await y.originalDecodingInfo_.call(this,e);return r.keySystemAccess?r.keySystemAccess=new ds(r.keySystemAccess,t,i):e.keySystemConfiguration&&(r.keySystemAccess=await y.getMediaKeySystemAccess_(e)),r}static async getMediaKeySystemAccess_(e){let t=y.convertToMediaKeySystemConfig_(e);return await navigator.requestMediaKeySystemAccess(e.keySystemConfiguration.keySystem,[t])}static convertToMediaKeySystemConfig_(e){let t=e.keySystemConfiguration,i=[],r=[];if(t.audio){let a={robustness:t.audio.robustness||"",contentType:e.audio.contentType,encryptionScheme:t.audio.encryptionScheme};i.push(a)}if(t.video){let a={robustness:t.video.robustness||"",contentType:e.video.contentType,encryptionScheme:t.video.encryptionScheme};r.push(a)}let n={initDataTypes:t.initDataType?[t.initDataType]:[],distinctiveIdentifier:t.distinctiveIdentifier,persistentState:t.persistentState,sessionTypes:t.sessionTypes};return i.length&&(n.audioCapabilities=i),r.length&&(n.videoCapabilities=r),n}};Re.register(va.install,-2);/*! @license
|
|
964
|
+
* Shaka Player
|
|
965
|
+
* Copyright 2016 Google LLC
|
|
966
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
967
|
+
*/var Sa=class y{static install(){p.debug("MediaSource.install");let e=ie.BrowserEngine,t=j.getDevice(),i=t.getBrowserEngine()===e.WEBKIT?t.getVersion():null;!window.MediaSource&&!window.ManagedMediaSource?p.info("No MSE implementation available."):i&&window.MediaSource?i<=12?(p.info("Patching Safari 8-12 MSE bugs."),y.stubAbort_(),y.patchRemovalRange_()):i<=15&&(p.info("Patching Safari 13 & 14 & 15 MSE bugs."),y.stubAbort_()):p.info("Using native MSE as-is.");for(let r of t.rejectCodecs())p.info(`Rejecting ${r}.`),y.rejectCodec_(r);(window.MediaSource||window.ManagedMediaSource)&&y.rejectContainer_("mp2t"),window.MediaSource&&y.isTypeSupported('video/webm; codecs="vp9"')&&!y.isTypeSupported('video/webm; codecs="vp09.00.10.08"')&&(p.info("Patching vp09 support queries."),y.patchVp09_())}static stubAbort_(){let e=y.prototype.addSourceBuffer;y.prototype.addSourceBuffer=function(...t){let i=e.apply(this,t);return i.abort=function(){},i}}static patchRemovalRange_(){let e=SourceBuffer.prototype.remove;SourceBuffer.prototype.remove=function(t,i){return e.call(this,t,i-.001)}}static rejectContainer_(e){if(window.MediaSource){let t=y.isTypeSupported.bind(y);y.isTypeSupported=i=>N.getContainerType(i)!=e&&t(i)}if(window.ManagedMediaSource){let t=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=i=>N.getContainerType(i)!=e&&t(i)}}static rejectCodec_(e){let t=y.isTypeSupported.bind(y);if(y.isTypeSupported=i=>N.getCodecBase(i)!=e&&t(i),window.ManagedMediaSource){let i=ManagedMediaSource.isTypeSupported.bind(ManagedMediaSource);window.ManagedMediaSource.isTypeSupported=r=>N.getCodecBase(r)!=e&&i(r)}}static patchVp09_(){let e=y.isTypeSupported;j.getDevice().supportStandardVP9Checking()&&(y.isTypeSupported=t=>{let i=t.split(/ *; */),r=i.findIndex(o=>o.startsWith("codecs="));if(r<0)return e(t);let n=i[r].replace("codecs=","").replace(/"/g,"").split(/\s*,\s*/),a=n.findIndex(o=>o.startsWith("vp09"));return a>=0&&(n[a]="vp9",i[r]='codecs="'+n.join(",")+'"',t=i.join("; ")),e(t)})}};Re.register(Sa.install);/*! @license
|
|
968
|
+
* Shaka Player
|
|
969
|
+
* Copyright 2016 Google LLC
|
|
970
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
971
|
+
*/var Si=class Si{static install(){if(j.getDevice().supportsMediaCapabilities()){p.info("MediaCapabilities: Native mediaCapabilities support found.");return}p.info("MediaCapabilities: install"),navigator.mediaCapabilities||(navigator.mediaCapabilities={}),Si.originalMcap=navigator.mediaCapabilities,navigator.mediaCapabilities.decodingInfo=Si.decodingInfo_}static async decodingInfo_(e){let t={supported:!1,powerEfficient:!0,smooth:!0,keySystemAccess:null,configuration:e},i=j.getDevice(),r=e.video,s=e.audio;if(e.type=="media-source"){if(!i.supportsMediaSource()||r&&!await Si.checkVideoSupport_(r)||s&&!await Si.checkAudioSupport_(s))return t}else if(e.type=="file"){if(r){let n=r.contentType;if(!i.supportsMediaType(n))return t}if(s){let n=s.contentType;if(!i.supportsMediaType(n))return t}}else return t;if(e.keySystemConfiguration){let n=e.keySystemConfiguration,a=await Si.checkDrmSupport_(r,s,n);a&&(t.supported=!0,t.keySystemAccess=a)}else return t.supported=!0,t;return t}static async checkVideoSupport_(e){return j.getDevice().getDeviceType()===ie.DeviceType.CAST?await Si.canCastDisplayType_(e):Ke.isTypeSupported(e.contentType)}static async checkAudioSupport_(e){let i=j.getDevice().getDeviceType(),r=e.contentType;if(i===ie.DeviceType.CAST&&e.spatialRendering&&(r+="; spatialRendering=true",window.cast&&cast.__platform__&&cast.__platform__.canDisplayType)){let s=!1,n=Si.memoizedCanDisplayTypeRequests_;return n.has(r)?s=n.get(r):(s=await cast.__platform__.canDisplayType(r),n.set(r,s)),s}return Ke.isTypeSupported(r)}static async checkDrmSupport_(e,t,i){let r=[],s=[],n=[];if(i.audio){let g={robustness:i.audio.robustness||"",contentType:t.contentType};j.getDevice().misreportAC3UsingDrm()&&t.contentType.includes('codecs="ac-3"')&&(g.contentType='audio/mp4; codecs="ec-3"'),i.audio.encryptionScheme&&(g.encryptionScheme=i.audio.encryptionScheme,n.push(i.audio.encryptionScheme)),r.push(g)}if(i.video){let g={robustness:i.video.robustness||"",contentType:e.contentType};i.video.encryptionScheme&&(g.encryptionScheme=i.video.encryptionScheme,n.push(i.video.encryptionScheme)),s.push(g)}let a={initDataTypes:[i.initDataType],distinctiveIdentifier:i.distinctiveIdentifier,persistentState:i.persistentState,sessionTypes:i.sessionTypes};r.length&&(a.audioCapabilities=r),s.length&&(a.videoCapabilities=s);let o=e?e.contentType:"",c=t?t.contentType:"",d=N.getBasicType(o)+";"+N.getCodecBase(o),u=N.getBasicType(c)+";"+N.getCodecBase(c),m=i.keySystem,f=null;try{de.hasMediaKeySystemAccess(d,u,m,n)?f=de.getMediaKeySystemAccess(d,u,m,n):(f=await navigator.requestMediaKeySystemAccess(i.keySystem,[a]),de.setMediaKeySystemAccess(d,u,m,n,f))}catch(g){p.info("navigator.requestMediaKeySystemAccess failed.")}return f}static async canCastDisplayType_(e){if(!(window.cast&&cast.__platform__&&cast.__platform__.canDisplayType))return p.warning("Expected cast APIs to be available! Falling back to shaka.media.Capabilities.isTypeSupported() for type support."),Ke.isTypeSupported(e.contentType);let t=e.contentType;if(e.width&&e.height&&e.width>1280&&e.height>720&&(t+=`; width=${e.width}; height=${e.height}`),e.framerate){let n=Math.round(e.framerate);(n<24||n>30)&&(t+=`; framerate=${e.framerate}`)}switch(e.transferFunction||""){case"":case"srgb":break;case"pq":t+="; eotf=smpte2084";break;case"hlg":t+="; eotf=arib-std-b67";break;default:return!1}let r=!1,s=Si.memoizedCanDisplayTypeRequests_;return s.has(t)?r=s.get(t):(r=await cast.__platform__.canDisplayType(t),s.set(t,r)),r}};l(Si,"originalMcap",null),l(Si,"memoizedCanDisplayTypeRequests_",new Map);var ba=Si;Re.register(ba.install,-1);/*! @license
|
|
972
|
+
* Shaka Player
|
|
973
|
+
* Copyright 2016 Google LLC
|
|
974
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
975
|
+
*/var Xs=class y{static install(){if(screen.orientation&&screen.orientation.unlock){p.info("Using native screen.orientation");return}screen.orientation!=null?y.installBasedOnScreenMethods_():window.orientation!=null&&y.installBasedOnWindowMethods_()}static installBasedOnScreenMethods_(){let e=Object.getPrototypeOf(screen.orientation);screen.orientation.lock===void 0&&(e.lock=t=>(p.info("screen.orientation.lock is a no-op"),Promise.resolve())),screen.orientation.unlock===void 0&&(e.unlock=()=>{p.info("screen.orientation.unlock is a no-op")})}static installBasedOnWindowMethods_(){let e=new y.FakeOrientation;screen.orientation=e;let t=()=>{switch(window.orientation){case-90:e.type="landscape-secondary",e.angle=270;break;case 0:e.type="portrait-primary",e.angle=0;break;case 90:e.type="landscape-primary",e.angle=90;break;case 180:e.type="portrait-secondary",e.angle=180;break}};t(),window.addEventListener("orientationchange",()=>{t(),e.dispatchChangeEvent()})}};Xs.FakeOrientation=class extends Le{constructor(){super(),this.type="",this.angle=0}dispatchChangeEvent(){let y=new U("change");this.dispatchEvent(y)}lock(y){let e=r=>screen.lockOrientation?screen.lockOrientation(r):screen.mozLockOrientation?screen.mozLockOrientation(r):!1,t=!1;switch(y){case"natural":t=e("default");break;case"any":t=!0,this.unlock();break;default:t=e(y);break}if(t)return Promise.resolve();let i=new Error("screen.orientation.lock() is not available on this device");return i.name="NotSupportedError",i.code=DOMException.NOT_SUPPORTED_ERR,Promise.reject(i)}unlock(){screen.unlockOrientation?screen.unlockOrientation():screen.mozUnlockOrientation&&screen.mozUnlockOrientation()}};Re.register(Xs.install);/*! @license
|
|
976
|
+
* Shaka Player
|
|
977
|
+
* Copyright 2016 Google LLC
|
|
978
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
979
|
+
*/var us=class{constructor(){l(this,"size");l(this,"status_");this.size=0,this.status_=void 0}setStatus(e){this.size=e==null?0:1,this.status_=e}getStatus(){return this.status_}forEach(e){this.status_&&e(this.status_,de.DUMMY_KEY_ID.value())}get(e){if(this.has(e))return this.status_}has(e){let t=de.DUMMY_KEY_ID.value();return!!(this.status_&&D.equal(e,t))}entries(){v.assert(!1,"Not used! Provided only for the compiler.")}keys(){v.assert(!1,"Not used! Provided only for the compiler.")}values(){v.assert(!1,"Not used! Provided only for the compiler.")}};/*! @license
|
|
980
|
+
* Shaka Player
|
|
981
|
+
* Copyright 2016 Google LLC
|
|
982
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
983
|
+
*/var Xe=class Xe{static defaultInstall(){!window.HTMLVideoElement||!window.WebKitMediaKeys||navigator.requestMediaKeySystemAccess&&MediaKeySystemAccess.prototype.getConfiguration||Xe.install()}static install(e=!1){!window.HTMLVideoElement||!window.WebKitMediaKeys||window.shakaMediaKeysPolyfill!=Xe.apiName_&&(e&&(Xe.enableUninstall=!0,Xe.originalHTMLMediaElementPrototypeMediaKeys=Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype,"mediaKeys"),Xe.originalHTMLMediaElementPrototypeSetMediaKeys=HTMLMediaElement.prototype.setMediaKeys,Xe.originalWindowMediaKeys=window.MediaKeys,Xe.originalWindowMediaKeySystemAccess=window.MediaKeySystemAccess,Xe.originalNavigatorRequestMediaKeySystemAccess=navigator.requestMediaKeySystemAccess),p.info("Using Apple-prefixed EME"),delete HTMLMediaElement.prototype.mediaKeys,HTMLMediaElement.prototype.mediaKeys=null,HTMLMediaElement.prototype.setMediaKeys=Xe.setMediaKeys,window.MediaKeys=Xe.MediaKeys,window.MediaKeySystemAccess=Xe.MediaKeySystemAccess,navigator.requestMediaKeySystemAccess=Xe.requestMediaKeySystemAccess,window.shakaMediaKeysPolyfill=Xe.apiName_,se.clearDecodingConfigCache(),de.clearMediaKeySystemAccessMap())}static uninstall(){window.shakaMediaKeysPolyfill==Xe.apiName_&&Xe.enableUninstall&&(p.info("Un-installing Apple-prefixed EME"),Xe.enableUninstall=!1,Object.defineProperty(HTMLMediaElement.prototype,"mediaKeys",Xe.originalHTMLMediaElementPrototypeMediaKeys),HTMLMediaElement.prototype.setMediaKeys=Xe.originalHTMLMediaElementPrototypeSetMediaKeys,window.MediaKeys=Xe.originalWindowMediaKeys,window.MediaKeySystemAccess=Xe.originalWindowMediaKeySystemAccess,navigator.requestMediaKeySystemAccess=Xe.originalNavigatorRequestMediaKeySystemAccess,Xe.originalWindowMediaKeys=null,Xe.originalWindowMediaKeySystemAccess=null,Xe.originalHTMLMediaElementPrototypeSetMediaKeys=null,Xe.originalNavigatorRequestMediaKeySystemAccess=null,Xe.originalHTMLMediaElementPrototypeMediaKeys=null,window.shakaMediaKeysPolyfill="",se.clearDecodingConfigCache(),de.clearMediaKeySystemAccessMap())}static requestMediaKeySystemAccess(e,t){p.debug("PatchedMediaKeysApple.requestMediaKeySystemAccess"),v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');try{let i=new Xe.MediaKeySystemAccess(e,t);return Promise.resolve(i)}catch(i){return Promise.reject(i)}}static setMediaKeys(e){p.debug("PatchedMediaKeysApple.setMediaKeys"),v.assert(this instanceof HTMLMediaElement,'bad "this" for setMediaKeys');let t=e,i=this.mediaKeys;return i&&i!=t&&(v.assert(i instanceof Xe.MediaKeys,"non-polyfill instance of oldMediaKeys"),i.setMedia(null)),delete this.mediaKeys,this.mediaKeys=e,t?(v.assert(t instanceof Xe.MediaKeys,"non-polyfill instance of newMediaKeys"),t.setMedia(this)):Promise.resolve()}static onWebkitNeedKey_(e){p.debug("PatchedMediaKeysApple.onWebkitNeedKey_",e);let t=this.mediaKeys;v.assert(t instanceof Xe.MediaKeys,"non-polyfill instance of newMediaKeys"),v.assert(e.initData!=null,"missing init data!");let i=D.toUint8(e.initData);if(D.toDataView(i).getUint32(0,!0)+4!=i.byteLength)throw new RangeError("Malformed FairPlay init data");let n=q.fromUTF16(i.subarray(4),!0),a=q.toUTF8(n),o=new Event("encrypted"),c=o;c.initDataType="skd",c.initData=D.toArrayBuffer(a),this.dispatchEvent(o)}};l(Xe,"apiName_","apple");var Wi=Xe;Wi.MediaKeySystemAccess=class{constructor(y,e){if(p.debug("PatchedMediaKeysApple.MediaKeySystemAccess"),this.keySystem=y,this.configuration_,y.startsWith("com.apple.fps"))for(let i of e){let r=this.checkConfig_(i);if(r){this.configuration_=r;return}}let t=new Error("Unsupported keySystem");throw t.name="NotSupportedError",t.code=DOMException.NOT_SUPPORTED_ERR,t}checkConfig_(y){if(y.persistentState=="required")return null;let e={audioCapabilities:[],videoCapabilities:[],persistentState:"optional",distinctiveIdentifier:"optional",initDataTypes:y.initDataTypes,sessionTypes:["temporary"],label:y.label},t=!1,i=!1;if(y.audioCapabilities){for(let r of y.audioCapabilities)if(r.contentType){t=!0;let s=r.contentType.split(";")[0];WebKitMediaKeys.isTypeSupported(this.keySystem,s)&&(e.audioCapabilities.push(r),i=!0)}}if(y.videoCapabilities){for(let r of y.videoCapabilities)if(r.contentType){t=!0;let s=r.contentType.split(";")[0];WebKitMediaKeys.isTypeSupported(this.keySystem,s)&&(e.videoCapabilities.push(r),i=!0)}}return t||(i=WebKitMediaKeys.isTypeSupported(this.keySystem,"video/mp4")),i?e:null}createMediaKeys(){p.debug("PatchedMediaKeysApple.MediaKeySystemAccess.createMediaKeys");let y=new Wi.MediaKeys(this.keySystem);return Promise.resolve(y)}getConfiguration(){return p.debug("PatchedMediaKeysApple.MediaKeySystemAccess.getConfiguration"),this.configuration_}};Wi.MediaKeys=class{constructor(y){p.debug("PatchedMediaKeysApple.MediaKeys"),this.nativeMediaKeys_=new WebKitMediaKeys(y),this.eventManager_=new ue}createSession(y){if(p.debug("PatchedMediaKeysApple.MediaKeys.createSession"),y=y||"temporary",y!="temporary")throw new TypeError("Session type "+y+" is unsupported on this platform.");return new Wi.MediaKeySession(this.nativeMediaKeys_,y)}setServerCertificate(y){return p.debug("PatchedMediaKeysApple.MediaKeys.setServerCertificate"),Promise.resolve(!1)}setMedia(y){if(this.eventManager_.removeAll(),!y)return Promise.resolve();this.eventManager_.listen(y,"webkitneedkey",Wi.onWebkitNeedKey_);try{return ui.waitForReadyState(y,HTMLMediaElement.HAVE_METADATA,this.eventManager_,()=>{y.webkitSetMediaKeys(this.nativeMediaKeys_)}),Promise.resolve()}catch(e){return Promise.reject(e)}}getStatusForPolicy(y){return Promise.resolve("usable")}};Wi.MediaKeySession=class extends Le{constructor(y,e){p.debug("PatchedMediaKeysApple.MediaKeySession"),super(),this.nativeMediaKeySession_=null,this.nativeMediaKeys_=y,this.generateRequestPromise_=null,this.updatePromise_=null,this.eventManager_=new ue,this.closed_=Promise.withResolvers(),this.sessionId="",this.expiration=NaN,this.keyStatuses=new us,this.onkeystatuseschange=null}get closed(){return this.closed_.promise}generateRequest(y,e){p.debug("PatchedMediaKeysApple.MediaKeySession.generateRequest"),this.generateRequestPromise_=Promise.withResolvers();try{let t=this.nativeMediaKeys_.createSession("video/mp4",D.toUint8(e));this.nativeMediaKeySession_=t,this.sessionId=t.sessionId||"",this.eventManager_.listen(this.nativeMediaKeySession_,"webkitkeymessage",(i=>this.onWebkitKeyMessage_(i))),this.eventManager_.listen(t,"webkitkeyadded",(i=>this.onWebkitKeyAdded_(i))),this.eventManager_.listen(t,"webkitkeyerror",(i=>this.onWebkitKeyError_(i))),this.updateKeyStatus_("status-pending")}catch(t){this.generateRequestPromise_.reject(t)}return this.generateRequestPromise_.promise}load(){return p.debug("PatchedMediaKeysApple.MediaKeySession.load"),Promise.reject(new Error("MediaKeySession.load not yet supported"))}update(y){p.debug("PatchedMediaKeysApple.MediaKeySession.update"),this.updatePromise_=Promise.withResolvers();try{this.nativeMediaKeySession_.update(D.toUint8(y))}catch(e){this.updatePromise_.reject(e)}return this.updatePromise_.promise}close(){p.debug("PatchedMediaKeysApple.MediaKeySession.close");try{this.nativeMediaKeySession_.close(),this.closed_.resolve(),this.eventManager_.removeAll()}catch(y){this.closed_.reject(y)}return this.closed}remove(){return p.debug("PatchedMediaKeysApple.MediaKeySession.remove"),Promise.reject(new Error("MediaKeySession.remove is only applicable for persistent licenses, which are not supported on this platform"))}onWebkitKeyMessage_(y){p.debug("PatchedMediaKeysApple.onWebkitKeyMessage_",y),v.assert(this.generateRequestPromise_,"generateRequestPromise_ should be set before now!"),this.generateRequestPromise_&&(this.generateRequestPromise_.resolve(),this.generateRequestPromise_=null);let e=this.keyStatuses.getStatus()==null,t=new Map().set("messageType",e?"license-request":"license-renewal").set("message",D.toArrayBuffer(y.message)),i=new U("message",t);this.dispatchEvent(i)}onWebkitKeyAdded_(y){p.debug("PatchedMediaKeysApple.onWebkitKeyAdded_",y),v.assert(!this.generateRequestPromise_,"Key added during generate!"),v.assert(this.updatePromise_,"updatePromise_ should be set before now!"),this.updatePromise_&&(this.updateKeyStatus_("usable"),this.updatePromise_.resolve(),this.updatePromise_=null)}onWebkitKeyError_(y){p.debug("PatchedMediaKeysApple.onWebkitKeyError_",y);let e=new Error("EME PatchedMediaKeysApple key error");if(e.errorCode=this.nativeMediaKeySession_.error,this.generateRequestPromise_!=null)this.generateRequestPromise_.reject(e),this.generateRequestPromise_=null;else if(this.updatePromise_!=null)this.updatePromise_.reject(e),this.updatePromise_=null;else switch(this.nativeMediaKeySession_.error.code){case WebKitMediaKeyError.MEDIA_KEYERR_OUTPUT:case WebKitMediaKeyError.MEDIA_KEYERR_HARDWARECHANGE:this.updateKeyStatus_("output-not-allowed");break;default:this.updateKeyStatus_("internal-error");break}}updateKeyStatus_(y){this.keyStatuses.setStatus(y);let e=new U("keystatuseschange");this.dispatchEvent(e),this.onkeystatuseschange&&this.onkeystatuseschange(e)}};Re.register(Wi.defaultInstall);/*! @license
|
|
984
|
+
* Shaka Player
|
|
985
|
+
* Copyright 2016 Google LLC
|
|
986
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
987
|
+
*/var $t=class $t{static install(){if(!(!window.HTMLVideoElement||navigator.requestMediaKeySystemAccess&&MediaKeySystemAccess.prototype.getConfiguration)){if(HTMLMediaElement.prototype.webkitGenerateKeyRequest)p.info("Using webkit-prefixed EME v0.1b"),$t.prefix_="webkit";else if(HTMLMediaElement.prototype.generateKeyRequest)p.info("Using nonprefixed EME v0.1b");else return;v.assert(HTMLMediaElement.prototype[$t.prefixApi_("generateKeyRequest")],"PatchedMediaKeysWebkit APIs not available!"),navigator.requestMediaKeySystemAccess=$t.requestMediaKeySystemAccess,delete HTMLMediaElement.prototype.mediaKeys,HTMLMediaElement.prototype.mediaKeys=null,HTMLMediaElement.prototype.setMediaKeys=$t.setMediaKeys,window.MediaKeys=$t.MediaKeys,window.MediaKeySystemAccess=$t.MediaKeySystemAccess,window.shakaMediaKeysPolyfill=$t.apiName_}}static prefixApi_(e){let t=$t.prefix_;return t?t+e.charAt(0).toUpperCase()+e.slice(1):e}static requestMediaKeySystemAccess(e,t){p.debug("PatchedMediaKeysWebkit.requestMediaKeySystemAccess"),v.assert(this==navigator,'bad "this" for requestMediaKeySystemAccess');try{let i=new $t.MediaKeySystemAccess(e,t);return Promise.resolve(i)}catch(i){return Promise.reject(i)}}static setMediaKeys(e){p.debug("PatchedMediaKeysWebkit.setMediaKeys"),v.assert(this instanceof HTMLMediaElement,'bad "this" for setMediaKeys');let t=e,i=this.mediaKeys;return i&&i!=t&&(v.assert(i instanceof $t.MediaKeys,"non-polyfill instance of oldMediaKeys"),i.setMedia(null)),delete this.mediaKeys,this.mediaKeys=e,t&&(v.assert(t instanceof $t.MediaKeys,"non-polyfill instance of newMediaKeys"),t.setMedia(this)),Promise.resolve()}static getVideoElement_(){let e=document.getElementsByTagName("video");return e.length?e[0]:document.createElement("video")}};l($t,"prefix_",""),l($t,"apiName_","webkit");var ai=$t;ai.MediaKeySystemAccess=class{constructor(y,e){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess"),this.keySystem=y,this.internalKeySystem_=y,this.configuration_;let t=!1;y=="org.w3.clearkey"&&(this.internalKeySystem_="webkit-org.w3.clearkey",t=!1);let i=!1,r=ai.getVideoElement_();for(let a of e){let o={audioCapabilities:[],videoCapabilities:[],persistentState:"optional",distinctiveIdentifier:"optional",initDataTypes:a.initDataTypes,sessionTypes:["temporary"],label:a.label},c=!1;if(a.audioCapabilities){for(let d of a.audioCapabilities)if(d.contentType){c=!0;let u=d.contentType.split(";")[0];r.canPlayType(u,this.internalKeySystem_)&&(o.audioCapabilities.push(d),i=!0)}}if(a.videoCapabilities)for(let d of a.videoCapabilities)d.contentType&&(c=!0,r.canPlayType(d.contentType,this.internalKeySystem_)&&(o.videoCapabilities.push(d),i=!0));if(c||(i=r.canPlayType("video/mp4",this.internalKeySystem_)||r.canPlayType("video/webm",this.internalKeySystem_)),a.persistentState=="required"&&(t?(o.persistentState="required",o.sessionTypes=["persistent-license"]):i=!1),i){this.configuration_=o;return}}let s="Unsupported keySystem";(y=="org.w3.clearkey"||y=="com.widevine.alpha")&&(s="None of the requested configurations were supported.");let n=new Error(s);throw n.name="NotSupportedError",n.code=DOMException.NOT_SUPPORTED_ERR,n}createMediaKeys(){p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.createMediaKeys");let y=new ai.MediaKeys(this.internalKeySystem_);return Promise.resolve(y)}getConfiguration(){return p.debug("PatchedMediaKeysWebkit.MediaKeySystemAccess.getConfiguration"),this.configuration_}};ai.MediaKeys=class{constructor(y){p.debug("PatchedMediaKeysWebkit.MediaKeys"),this.keySystem_=y,this.media_=null,this.eventManager_=new ue,this.newSessions_=[],this.sessionMap_=new Map}setMedia(y){this.media_=y,this.eventManager_.removeAll();let e=ai.prefix_;y&&(this.eventManager_.listen(y,e+"needkey",(t=>this.onWebkitNeedKey_(t))),this.eventManager_.listen(y,e+"keymessage",(t=>this.onWebkitKeyMessage_(t))),this.eventManager_.listen(y,e+"keyadded",(t=>this.onWebkitKeyAdded_(t))),this.eventManager_.listen(y,e+"keyerror",(t=>this.onWebkitKeyError_(t))))}createSession(y){if(p.debug("PatchedMediaKeysWebkit.MediaKeys.createSession"),y=y||"temporary",y!="temporary"&&y!="persistent-license")throw new TypeError("Session type "+y+" is unsupported on this platform.");let e=this.media_||document.createElement("video");e.src||(e.src="about:blank");let t=new ai.MediaKeySession(e,this.keySystem_,y);return this.newSessions_.push(t),t}setServerCertificate(y){return p.debug("PatchedMediaKeysWebkit.MediaKeys.setServerCertificate"),Promise.resolve(!1)}getStatusForPolicy(y){return Promise.resolve("usable")}onWebkitNeedKey_(y){p.debug("PatchedMediaKeysWebkit.onWebkitNeedKey_",y),v.assert(this.media_,"media_ not set in onWebkitNeedKey_");let e=new CustomEvent("encrypted"),t=e;t.initDataType="cenc",t.initData=D.toArrayBuffer(y.initData),this.media_.dispatchEvent(e)}onWebkitKeyMessage_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyMessage_",y);let e=this.findSession_(y.sessionId);if(!e){p.error("Session not found",y.sessionId);return}let t=e.keyStatuses.getStatus()==null,i=new Map().set("messageType",t?"licenserequest":"licenserenewal").set("message",y.message),r=new U("message",i);e.generated(),e.dispatchEvent(r)}onWebkitKeyAdded_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyAdded_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyAdded_"),e&&e.ready()}onWebkitKeyError_(y){p.debug("PatchedMediaKeysWebkit.onWebkitKeyError_",y);let e=this.findSession_(y.sessionId);v.assert(e,"unable to find session in onWebkitKeyError_"),e&&e.handleError(y)}findSession_(y){let e=this.sessionMap_.get(y);return e?(p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):(e=this.newSessions_.shift(),e?(e.sessionId=y,this.sessionMap_.set(y,e),p.debug("PatchedMediaKeysWebkit.MediaKeys.findSession_",e),e):null)}};ai.MediaKeySession=class extends Le{constructor(y,e,t){p.debug("PatchedMediaKeysWebkit.MediaKeySession"),super(),this.media_=y,this.initialized_=!1,this.generatePromise_=null,this.updatePromise_=null,this.keySystem_=e,this.type_=t,this.closed_=Promise.withResolvers(),this.sessionId="",this.expiration=NaN,this.keyStatuses=new us,this.onkeystatuseschange=null}get closed(){return this.closed_.promise}generated(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.generated"),this.generatePromise_&&(this.generatePromise_.resolve(),this.generatePromise_=null)}ready(){p.debug("PatchedMediaKeysWebkit.MediaKeySession.ready"),this.updateKeyStatus_("usable"),this.updatePromise_&&this.updatePromise_.resolve(),this.updatePromise_=null}handleError(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.handleError",y);let e=new Error("EME v0.1b key error"),t=y.errorCode;if(t.systemCode=y.systemCode,e.errorCode=t,!y.sessionId&&this.generatePromise_)y.systemCode==45&&(e.message="Unsupported session type."),this.generatePromise_.reject(e),this.generatePromise_=null;else if(y.sessionId&&this.updatePromise_)this.updatePromise_.reject(e),this.updatePromise_=null;else{let i=y.errorCode.code,r=y.systemCode;i==MediaKeyError.MEDIA_KEYERR_OUTPUT?this.updateKeyStatus_("output-restricted"):r==1?this.updateKeyStatus_("expired"):this.updateKeyStatus_("internal-error")}}generate_(y,e){if(this.initialized_){let r=new Error("The session is already initialized.");return Promise.reject(r)}this.initialized_=!0;let t;try{if(this.type_=="persistent-license")if(e)t=D.toUint8(q.toUTF8("LOAD_SESSION|"+e));else{v.assert(y,"expecting init data");let r=q.toUTF8("PERSISTENT|");t=ne.concat(r,y)}else v.assert(this.type_=="temporary","expected temporary session"),v.assert(!e,"unexpected offline session ID"),v.assert(y,"expecting init data"),t=D.toUint8(y);v.assert(t,"init data not set!")}catch(r){return Promise.reject(r)}v.assert(this.generatePromise_==null,"generatePromise_ should be null"),this.generatePromise_=Promise.withResolvers();let i=ai.prefixApi_("generateKeyRequest");try{this.media_[i](this.keySystem_,t)}catch(r){if(r.name!="InvalidStateError")return this.generatePromise_=null,Promise.reject(r);new ae(()=>{try{this.media_[i](this.keySystem_,t)}catch(n){this.generatePromise_.reject(n),this.generatePromise_=null}}).tickAfter(.01)}return this.generatePromise_.promise}update_(y,e){if(this.updatePromise_){this.updatePromise_.promise.then(()=>this.update_(y,e)).catch(()=>this.update_(y,e));return}this.updatePromise_=y;let t,i;if(this.keySystem_=="webkit-org.w3.clearkey"){let s=q.fromUTF8(e),n=JSON.parse(s);n.keys[0].kty!="oct"&&(this.updatePromise_.reject(new Error("Response is not a valid JSON Web Key Set.")),this.updatePromise_=null),t=ne.fromBase64(n.keys[0].k),i=ne.fromBase64(n.keys[0].kid)}else t=D.toUint8(e),i=null;let r=ai.prefixApi_("addKey");try{this.media_[r](this.keySystem_,t,i,this.sessionId)}catch(s){this.updatePromise_.reject(s),this.updatePromise_=null}}updateKeyStatus_(y){this.keyStatuses.setStatus(y);let e=new U("keystatuseschange");this.dispatchEvent(e),this.onkeystatuseschange&&this.onkeystatuseschange(e)}generateRequest(y,e){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.generateRequest"),this.generate_(e,null)}load(y){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.load"),this.type_=="persistent-license"?this.generate_(null,y):Promise.reject(new Error("Not a persistent session."))}update(y){p.debug("PatchedMediaKeysWebkit.MediaKeySession.update",y),v.assert(this.sessionId,"update without session ID");let e=Promise.withResolvers();return this.update_(e,y),e.promise}close(){if(p.debug("PatchedMediaKeysWebkit.MediaKeySession.close"),this.type_!="persistent-license"){if(!this.sessionId)return this.closed_.reject(new Error("The session is not callable.")),this.closed_.promise;let y=ai.prefixApi_("cancelKeyRequest");try{this.media_[y](this.keySystem_,this.sessionId)}catch(e){p.debug(`${y} exception`,e)}}return this.closed_.resolve(),this.closed_.promise}remove(){return p.debug("PatchedMediaKeysWebkit.MediaKeySession.remove"),this.type_!="persistent-license"?Promise.reject(new Error("Not a persistent session.")):this.close()}};Re.register(ai.install);/*! @license
|
|
988
|
+
* Shaka Player
|
|
989
|
+
* Copyright 2016 Google LLC
|
|
990
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
991
|
+
*/var oi=class oi{static install(){if(!window.HTMLVideoElement)return;let e=HTMLVideoElement.prototype;e.requestPictureInPicture&&document.exitPictureInPicture||e.webkitSupportsPresentationMode&&(p.debug("PiPWebkit.install"),document.pictureInPictureEnabled=!0,document.pictureInPictureElement=null,e.requestPictureInPicture=oi.requestPictureInPicture_,Object.defineProperty(e,"disablePictureInPicture",{get:oi.getDisablePictureInPicture_,set:oi.setDisablePictureInPicture_,enumerable:!0,configurable:!0}),document.exitPictureInPicture=oi.exitPictureInPicture_,document.addEventListener("webkitpresentationmodechanged",oi.proxyEvent_,!0))}static proxyEvent_(e){let t=e.target;if(t.webkitPresentationMode==oi.PIP_MODE_){document.pictureInPictureElement=t;let i=new Event("enterpictureinpicture");t.dispatchEvent(i)}else{document.pictureInPictureElement==t&&(document.pictureInPictureElement=null);let i=new Event("leavepictureinpicture");t.dispatchEvent(i)}}static requestPictureInPicture_(){if(this.webkitSupportsPresentationMode(oi.PIP_MODE_))return this.webkitSetPresentationMode(oi.PIP_MODE_),document.pictureInPictureElement=this,Promise.resolve();{let e=new Error("PiP not allowed by video element");return Promise.reject(e)}}static exitPictureInPicture_(){let e=document.pictureInPictureElement;if(e)return e.webkitSetPresentationMode(oi.INLINE_MODE_),document.pictureInPictureElement=null,Promise.resolve();{let t=new Error("No picture in picture element found");return Promise.reject(t)}}static getDisablePictureInPicture_(){return this.hasAttribute("disablePictureInPicture")?!0:!this.webkitSupportsPresentationMode(oi.PIP_MODE_)}static setDisablePictureInPicture_(e){e?this.setAttribute("disablePictureInPicture",""):this.removeAttribute("disablePictureInPicture")}};l(oi,"PIP_MODE_","picture-in-picture"),l(oi,"INLINE_MODE_","inline");var Ea=oi;Re.register(Ea.install);/*! @license
|
|
992
|
+
* Shaka Player
|
|
993
|
+
* Copyright 2016 Google LLC
|
|
994
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
995
|
+
*/var Aa=class y{static install(){if(p.debug("randomUUID.install"),!window.crypto){p.debug("window.crypto must be available to install randomUUID polyfill.");return}if("randomUUID"in window.crypto){p.debug("RandomUUID: Native window.crypto.randomUUID() support found.");return}window.crypto.randomUUID=y.randomUUID_}static randomUUID_(){let e=URL.createObjectURL(new Blob),t=e.toString();return URL.revokeObjectURL(e),t.substr(t.lastIndexOf("/")+1)}};Re.register(Aa.install);/*! @license
|
|
996
|
+
* Shaka Player
|
|
997
|
+
* Copyright 2016 Google LLC
|
|
998
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
999
|
+
*/var Ia=class y{static install(){p.debug("Symbol.install");let e=Symbol.prototype;"description"in e||Object.defineProperty(e,"description",{get:y.getSymbolDescription_})}static getSymbolDescription_(){let e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}};Re.register(Ia.install);/*! @license
|
|
1000
|
+
* Shaka Player
|
|
1001
|
+
* Copyright 2016 Google LLC
|
|
1002
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1003
|
+
*/var Ca=class{static install(){var t,i,r,s,n,a;let e=[Uint8Array,Uint8ClampedArray,Uint16Array,Uint32Array,Int8Array,Int16Array,Int32Array,Float32Array,Float64Array];for(let o of e)(i=(t=o.prototype).indexOf)!=null||(t.indexOf=Array.prototype.indexOf),(s=(r=o.prototype).lastIndexOf)!=null||(r.lastIndexOf=Array.prototype.lastIndexOf),(a=(n=o.prototype).includes)!=null||(n.includes=Array.prototype.includes)}};Re.register(Ca.install);/*! @license
|
|
1004
|
+
* Shaka Player
|
|
1005
|
+
* Copyright 2016 Google LLC
|
|
1006
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1007
|
+
*/var Kr=class Kr{static install(){let e=!1;if(window.URLSearchParams||(window.URLSearchParams=Kr.URLSearchParams_,e=!0),window.URL&&window.URL.prototype&&!("searchParams"in window.URL.prototype)){let t=window.URL.prototype;Object.defineProperty(t,"searchParams",{get:Kr.getSearchParams_,enumerable:!0,configurable:!0}),e=!0}e&&p.debug("UrlSearchParams.install")}static getSearchParams_(){let e=this,t=Kr.searchParamsMap_.get(e);if(!t){t=new window.URLSearchParams(e.search);let i=()=>{let a=t.toString();e.search=a?"?"+a:""},r=t.append;t.append=function(a,o){r.call(this,a,o),i()};let s=t.delete;t.delete=function(a){s.call(this,a),i()};let n=t.set;t.set=function(a,o){n.call(this,a,o),i()},Kr.searchParamsMap_.set(e,t)}return t}};l(Kr,"searchParamsMap_",new WeakMap);var js=Kr;js.URLSearchParams_=class{constructor(y){if(this.params_=[],typeof y=="string"){if(y.startsWith("?")&&(y=y.substring(1)),y){let e=y.split("&");for(let t of e){let i=t.split("="),r=decodeURIComponent(i[0].replace(/\+/g," ")),s=i.length>1?decodeURIComponent(i[1].replace(/\+/g," ")):"";this.append(r,s)}}}else if(Array.isArray(y))for(let e of y)this.append(e[0],e[1]);else if(y)for(let e in y)this.append(e,y[e])}append(y,e){this.params_.push([String(y),String(e)])}delete(y){let e=String(y);this.params_=this.params_.filter(t=>t[0]!==e)}get(y){let e=String(y);for(let t of this.params_)if(t[0]===e)return t[1];return null}getAll(y){let e=String(y);return this.params_.filter(t=>t[0]===e).map(t=>t[1])}has(y){let e=String(y);return this.params_.some(t=>t[0]===e)}set(y,e){let t=String(y),i=String(e),r=!1;for(let s=0;s<this.params_.length;s++)this.params_[s][0]===t&&(r?(this.params_.splice(s,1),s--):(this.params_[s][1]=i,r=!0));r||this.append(t,i)}toString(){return this.params_.map(y=>encodeURIComponent(y[0]).replace(/%20/g,"+")+"="+encodeURIComponent(y[1]).replace(/%20/g,"+")).join("&")}entries(){let y=0,e=this.params_.map(i=>[i[0],i[1]]),t={next:()=>y<e.length?{value:e[y++],done:!1}:{value:void 0,done:!0}};return t[Symbol.iterator]=()=>t,t}keys(){let y=0,e=this.params_,t={next:()=>y<e.length?{value:e[y++][0],done:!1}:{value:void 0,done:!0}};return t[Symbol.iterator]=()=>t,t}values(){let y=0,e=this.params_,t={next:()=>y<e.length?{value:e[y++][1],done:!1}:{value:void 0,done:!0}};return t[Symbol.iterator]=()=>t,t}forEach(y){for(let e of this.params_)y(e[1],e[0],this)}[Symbol.iterator](){return this.entries()}};Re.register(js.install);/*! @license
|
|
1008
|
+
* Shaka Player
|
|
1009
|
+
* Copyright 2016 Google LLC
|
|
1010
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1011
|
+
*/var xa=class y{static install(){if(window.VTTCue){p.info("Using native VTTCue.");return}if(!window.TextTrackCue){p.error("VTTCue not available.");return}let e=null,t=TextTrackCue.length;if(t==3?(p.info("Using VTTCue polyfill from 3 argument TextTrackCue."),e=y.from3ArgsTextTrackCue_):t==6?(p.info("Using VTTCue polyfill from 6 argument TextTrackCue."),e=y.from6ArgsTextTrackCue_):y.canUse3ArgsTextTrackCue_()&&(p.info("Using VTTCue polyfill from 3 argument TextTrackCue."),e=y.from3ArgsTextTrackCue_),!e){p.error("No recognized signature for TextTrackCue found!");return}window.VTTCue=function(i,r,s){return e(i,r,s)}}static from3ArgsTextTrackCue_(e,t,i){return new window.TextTrackCue(e,t,i)}static from6ArgsTextTrackCue_(e,t,i){let r=e+"-"+t+"-"+i;return new window.TextTrackCue(r,e,t,i)}static canUse3ArgsTextTrackCue_(){try{return!!y.from3ArgsTextTrackCue_(1,2,"")}catch(e){return!1}}};Re.register(xa.install);/*! @license
|
|
1012
|
+
* Shaka Player
|
|
1013
|
+
* Copyright 2016 Google LLC
|
|
1014
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1015
|
+
*/var ir=class ir{static install(){if(!window.HTMLVideoElement)return;let e=HTMLVideoElement.prototype;e.requestVideoFrameCallback||window.requestAnimationFrame&&e.getVideoPlaybackQuality&&(e.requestVideoFrameCallback=ir.requestVideoFrameCallback_,e.cancelVideoFrameCallback=ir.cancelVideoFrameCallback_)}static getData_(e){let t=ir.callbackMap_.get(e);return t||(t={nextHandle:1,callbackHandlesToRafIds:new Map,presentedFrames:0},ir.callbackMap_.set(e,t)),t}static requestVideoFrameCallback_(e){let t=this,i=ir.getData_(t),r=i.nextHandle++,s=a=>{if(!i.callbackHandlesToRafIds.has(r))return;let c=t.getVideoPlaybackQuality().totalVideoFrames||0;if(c!==i.presentedFrames){i.presentedFrames=c;let u={presentationTime:a,expectedDisplayTime:a,mediaTime:t.currentTime,presentedFrames:c,width:t.videoWidth,height:t.videoHeight,processingDuration:0};i.callbackHandlesToRafIds.delete(r),e(a,u);return}let d=window.requestAnimationFrame(s);i.callbackHandlesToRafIds.set(r,d)},n=window.requestAnimationFrame(s);return i.callbackHandlesToRafIds.set(r,n),r}static cancelVideoFrameCallback_(e){let t=this,i=ir.callbackMap_.get(t);if(!i)return;let r=i.callbackHandlesToRafIds.get(e);r!=null&&(window.cancelAnimationFrame(r),i.callbackHandlesToRafIds.delete(e))}};l(ir,"callbackMap_",new WeakMap);var wa=ir;Re.register(wa.install,-2);/*! @license
|
|
1016
|
+
* Shaka Player
|
|
1017
|
+
* Copyright 2016 Google LLC
|
|
1018
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1019
|
+
*/var Ma=class{static install(){if(p.debug("VideoPlayPromise.install"),window.HTMLMediaElement){let e=HTMLMediaElement.prototype.play;HTMLMediaElement.prototype.play=function(){let t=e.apply(this);return t&&t.catch(()=>{}),t}}}};Re.register(Ma.install);/*! @license
|
|
1020
|
+
* Shaka Player
|
|
1021
|
+
* Copyright 2016 Google LLC
|
|
1022
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1023
|
+
*/var Ra=class y{static install(){if(!window.HTMLVideoElement)return;let e=HTMLVideoElement.prototype;e.getVideoPlaybackQuality||("webkitDroppedFrameCount"in e||typeof Ge.anyMediaElement().webkitDroppedFrameCount=="number")&&(e.getVideoPlaybackQuality=y.webkit_)}static webkit_(){return{droppedVideoFrames:this.webkitDroppedFrameCount,totalVideoFrames:this.webkitDecodedFrameCount,corruptedVideoFrames:0,creationTime:NaN,totalFrameDelay:0}}};Re.register(Ra.install);/*! @license
|
|
1024
|
+
* Shaka Player
|
|
1025
|
+
* Copyright 2016 Google LLC
|
|
1026
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1027
|
+
*/var Ae=class Ae{constructor(){l(this,"manifestType_");this.manifestType_=me.UNKNOWN}parseInit(e){v.assert(!1,"TTML does not have init segments")}setManifestType(e){this.manifestType_=e}parseMedia(e,t,i,r){let s=Ae.parameterNs_,n=Ae.styleNs_,a=q.fromUTF8(e),o=[];if(a=="")return o;let c=I.parseXmlString(a,"tt",!0);if(!c)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_XML,"Failed to parse TTML.");let d=I.getElementsByTagName(c,"body")[0];if(!d)return[];let u=I.getAttributeNSList(c,s,"frameRate"),m=I.getAttributeNSList(c,s,"subFrameRate"),f=I.getAttributeNSList(c,s,"frameRateMultiplier"),g=I.getAttributeNSList(c,s,"tickRate"),_=I.getAttributeNSList(c,s,"cellResolution"),T=c.attributes["xml:space"]||"default",S=I.getAttributeNSList(c,n,"extent");if(T!="default"&&T!="preserve")throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_XML,"Invalid xml:space value: "+T);let b=T=="default",E=new Ae.RateInfo_(u,m,f,g),C=this.getCellResolution_(_),A=I.getElementsByTagName(c,"metadata")[0],w=(A?A.children:[]).filter(V=>V!=`
|
|
1028
|
+
`),M=I.getElementsByTagName(c,"style"),x=I.getElementsByTagName(c,"region"),k=[];for(let V of x){let ee=this.parseCueRegion_(V,M,S);ee&&k.push(ee)}if(I.findChildren(d,"p").length)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_CUE,"<p> can only be inside <div> in TTML");for(let V of I.findChildren(d,"div"))if(I.findChildren(V,"span").length)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_CUE,"<span> can only be inside <p> in TTML");let L=this.parseCue_(d,t,E,w,M,x,k,b,C,null,!1,i,r);return L&&(L.backgroundColor||(L.backgroundColor="transparent"),o.push(L)),o}parseCue_(e,t,i,r,s,n,a,o,c,d,u,m,f){let g,_=d;if(I.isText(e)){if(!u)return null;g={tagName:"span",children:[I.getTextContents(e)],attributes:{},parent:null}}else g=e;v.assert(g,"cueElement should be non-null!");let T=null;for(let W of Ae.smpteNsList_)if(T=this.getElementsFromCollection_(g,"backgroundImage",r,"#",W)[0],T)break;let S=null,b=I.getAttributeNSList(g,Ae.smpteNsList_,"backgroundImage");if(b&&/^(urn:)(mpeg:[a-z0-9][a-z0-9-]{0,31}:)(subs:)([0-9]+)$/.test(b)){let W=parseInt(b.split(":").pop(),10)-1;if(W>=f.length)return null;S=f[W]}else if(m&&b&&!b.startsWith("#")){let W=fe.resolve(m,b);W&&(S=W)}(e.tagName=="p"||T||S)&&(u=!0);let C=u,w=(g.attributes["xml:space"]||(o?"default":"preserve"))=="default",M=g.children.every(I.isText),x=[];if(!M)for(let W of g.children){let z=this.parseCue_(W,t,i,r,s,n,a,w,c,g,u,m,f);z&&x.push(z)}let k=d!=null,L=I.getTextContents(g),V=g.children.length&&L&&/\S/.test(L),ee=g.attributes.begin||g.attributes.end||g.attributes.dur;if(!ee&&!V&&g.tagName!="br"&&x.length==0)if(k){if(w)return null}else return null;let{start:oe,end:le}=this.parseTime_(g,i);for(;_&&I.isNode(_)&&_.tagName!="tt";)({start:oe,end:le}=this.resolveTime_(_,i,oe,le)),_=_.parent;if(oe==null&&(oe=0),oe+=t.periodStart,le==null?le=1/0:le+=t.periodStart,this.manifestType_!==me.HLS&&(oe=Math.max(oe,t.segmentStart),le=Math.min(le,t.segmentEnd)),!ee&&x.length>0){oe=1/0,le=0;for(let W of x)oe=Math.min(oe,W.startTime),le=Math.max(le,W.endTime)}if(g.tagName=="br"){let W=new B(oe,le,"");return W.lineBreak=!0,W}let H="";M&&(H=q.htmlUnescape(I.getTextContents(g)||""),w&&(H=H.replace(/\s+/g," ")));let J=new B(oe,le,H);J.nestedCues=x,u||(J.isContainer=!0),c&&(J.cellResolution=c);let Z=this.getElementsFromCollection_(g,"region",n,"")[0];if(g.attributes.region&&Z&&Z.attributes["xml:id"]){let W=Z.attributes["xml:id"];J.region=a.filter(z=>z.id==W)[0]}let ce=Z;return d&&k&&!g.attributes.region&&!g.attributes.style&&(ce=this.getElementsFromCollection_(d,"region",n,"")[0]),this.addStyle_(J,g,ce,T,S,s,C,x.length==0),J}parseCueRegion_(e,t,i){let r=new He,s=e.attributes["xml:id"];if(!s)return p.warning("TtmlTextParser parser encountered a region with no id. Region will be ignored."),null;r.id=s;let n=null;i&&(n=Ae.percentValues_.exec(i)||Ae.pixelValues_.exec(i));let a=n?Number(n[1]):null,o=n?Number(n[2]):null,c=null,d=null,u=this.getStyleAttributeFromRegion_(e,t,"extent");u&&(d=Ae.percentValues_.exec(u),c=d||Ae.pixelValues_.exec(u),c!=null&&(r.width=Number(c[1]),r.height=Number(c[2]),d||(a!=null&&(r.width=r.width*100/a),o!=null&&(r.height=r.height*100/o)),r.widthUnits=d||a!=null?He.units.PERCENTAGE:He.units.PX,r.heightUnits=d||o!=null?He.units.PERCENTAGE:He.units.PX));let m=this.getStyleAttributeFromRegion_(e,t,"origin");return m&&(d=Ae.percentValues_.exec(m),c=d||Ae.pixelValues_.exec(m),c!=null&&(r.viewportAnchorX=Number(c[1]),r.viewportAnchorY=Number(c[2]),d?u||(r.width=100-r.viewportAnchorX,r.widthUnits=He.units.PERCENTAGE,r.height=100-r.viewportAnchorY,r.heightUnits=He.units.PERCENTAGE):(o!=null&&(r.viewportAnchorY=r.viewportAnchorY*100/o),a!=null&&(r.viewportAnchorX=r.viewportAnchorX*100/a)),r.viewportAnchorUnits=d||a!=null?He.units.PERCENTAGE:He.units.PX)),r}convertTTMLrgbaToHTMLrgba_(e){let t=e.match(/rgba\(([^)]+)\)/);if(t){let i=t[1].split(",");if(i.length==4)return i[3]=String(Number(i[3])/255),"rgba("+i.join(",")+")"}return e}addStyle_(e,t,i,r,s,n,a,o){let c=a||o;this.getStyleAttribute_(t,i,n,"direction",c)=="rtl"&&(e.direction=B.direction.HORIZONTAL_RIGHT_TO_LEFT);let u=this.getStyleAttribute_(t,i,n,"writingMode",c);u=="tb"||u=="tblr"?e.writingMode=B.writingMode.VERTICAL_LEFT_TO_RIGHT:u=="tbrl"?e.writingMode=B.writingMode.VERTICAL_RIGHT_TO_LEFT:u=="rltb"||u=="rl"?e.direction=B.direction.HORIZONTAL_RIGHT_TO_LEFT:u&&(e.direction=B.direction.HORIZONTAL_LEFT_TO_RIGHT);let m=this.getStyleAttribute_(t,i,n,"textAlign",!0);m?(e.positionAlign=Ae.textAlignToPositionAlign_.get(m),e.lineAlign=Ae.textAlignToLineAlign_.get(m),v.assert(m.toUpperCase()in B.textAlign,m.toUpperCase()+" Should be in Cue.textAlign values!"),e.textAlign=B.textAlign[m.toUpperCase()]):e.textAlign=B.textAlign.CENTER;let f=this.getStyleAttribute_(t,i,n,"displayAlign",!0);f&&(v.assert(f.toUpperCase()in B.displayAlign,f.toUpperCase()+" Should be in Cue.displayAlign values!"),e.displayAlign=B.displayAlign[f.toUpperCase()]);let g=this.getStyleAttribute_(t,i,n,"color",c);g&&(e.color=this.convertTTMLrgbaToHTMLrgba_(g));let _=this.getStyleAttribute_(t,i,n,"backgroundColor",c);_&&(e.backgroundColor=this.convertTTMLrgbaToHTMLrgba_(_));let T=this.getStyleAttribute_(t,i,n,"border",c);T&&(e.border=T);let S=this.getStyleAttribute_(t,i,n,"fontFamily",c);if(S)switch(S){case"monospaceSerif":e.fontFamily="Courier New,Liberation Mono,Courier,monospace";break;case"proportionalSansSerif":e.fontFamily="Arial,Helvetica,Liberation Sans,sans-serif";break;case"sansSerif":e.fontFamily="sans-serif";break;case"monospaceSansSerif":e.fontFamily="Consolas,monospace";break;case"proportionalSerif":e.fontFamily="serif";break;default:e.fontFamily=S.split(",").filter(H=>H!="default").join(",");break}let b=this.getStyleAttribute_(t,i,n,"fontWeight",c);b&&b=="bold"&&(e.fontWeight=B.fontWeight.BOLD);let E=this.getStyleAttribute_(t,i,n,"wrapOption",c);E&&E=="noWrap"?e.wrapLine=!1:e.wrapLine=!0;let C=this.getStyleAttribute_(t,i,n,"lineHeight",c);C&&C.match(Ae.unitValues_)&&(e.lineHeight=C);let A=this.getStyleAttribute_(t,i,n,"fontSize",c);A&&(A.match(Ae.unitValues_)||A.match(Ae.percentValue_))&&(e.fontSize=A);let w=this.getStyleAttribute_(t,i,n,"fontStyle",c);if(w&&(v.assert(w.toUpperCase()in B.fontStyle,w.toUpperCase()+" Should be in Cue.fontStyle values!"),e.fontStyle=B.fontStyle[w.toUpperCase()]),r){let H=r.attributes.imageType||r.attributes.imagetype,J=r.attributes.encoding,Z=I.getTextContents(r).trim();H=="PNG"&&J=="Base64"&&Z&&(e.backgroundImage="data:image/png;base64,"+Z)}else s&&(e.backgroundImage=s);let M=this.getStyleAttribute_(t,i,n,"textOutline",c);if(M){let H=M.split(" ");H[0].match(Ae.unitValues_)?e.textStrokeColor=e.color:(e.textStrokeColor=this.convertTTMLrgbaToHTMLrgba_(H[0]),H.shift()),H[0]&&H[0].match(Ae.unitValues_)?e.textStrokeWidth=H[0]:e.textStrokeColor=""}let x=this.getStyleAttribute_(t,i,n,"letterSpacing",c);x&&x.match(Ae.unitValues_)&&(e.letterSpacing=x);let k=this.getStyleAttribute_(t,i,n,"linePadding",c);k&&k.match(Ae.unitValues_)&&(e.linePadding=k);let L=this.getStyleAttribute_(t,i,n,"opacity",c);L&&(e.opacity=parseFloat(L));let V=this.getStyleAttributeFromRegion_(i,n,"textDecoration");V&&this.addTextDecoration_(e,V);let ee=this.getStyleAttributeFromElement_(t,n,"textDecoration");ee&&this.addTextDecoration_(e,ee);let oe=this.getStyleAttribute_(t,i,n,"textCombine",c);switch(oe&&(e.textCombineUpright=oe),this.getStyleAttribute_(t,i,n,"ruby",c)){case"container":e.rubyTag="ruby";break;case"text":e.rubyTag="rt";break}}addTextDecoration_(e,t){let i=(r,s)=>{let n=e.textDecoration.includes(r);s&&!n?e.textDecoration.push(r):!s&&n&&ye.remove(e.textDecoration,r)};for(let r of t.split(" "))switch(r){case"underline":i(B.textDecoration.UNDERLINE,!0);break;case"noUnderline":i(B.textDecoration.UNDERLINE,!1);break;case"lineThrough":i(B.textDecoration.LINE_THROUGH,!0);break;case"noLineThrough":i(B.textDecoration.LINE_THROUGH,!1);break;case"overline":i(B.textDecoration.OVERLINE,!0);break;case"noOverline":i(B.textDecoration.OVERLINE,!1);break}}getStyleAttribute_(e,t,i,r,s=!0){let n=this.getStyleAttributeFromElement_(e,i,r);return n||(s?this.getStyleAttributeFromRegion_(t,i,r):null)}getStyleAttributeFromRegion_(e,t,i){let r=Ae.styleNs_;if(!e)return null;let s=I.getAttributeNSList(e,r,i);return s||this.getInheritedStyleAttribute_(e,t,i)}getStyleAttributeFromElement_(e,t,i){let r=Ae.styleNs_,s=I.getAttributeNSList(e,r,i);return s||this.getInheritedStyleAttribute_(e,t,i)}getInheritedStyleAttribute_(e,t,i){let r=Ae.styleNs_,s=Ae.styleEbuttsNs_,n=this.getElementsFromCollection_(e,"style",t,""),a=null;for(let o=0;o<n.length;o++){let c=I.getAttributeNS(n[o],s,i);c||(c=I.getAttributeNSList(n[o],r,i)),c||(c=this.getStyleAttributeFromElement_(n[o],t,i)),c&&(a=c)}return a}getElementsFromCollection_(e,t,i,r,s){let n=[];if(!e||i.length<1)return n;let a=this.getInheritedAttribute_(e,t,s);if(a){let o=a.split(" ");for(let c of o)for(let d of i)if(r+d.attributes["xml:id"]==c){n.push(d);break}}return n}getInheritedAttribute_(e,t,i){let r=null;for(;!r&&(r=i?I.getAttributeNS(e,i,t):e.attributes[t],!r);){let s=e.parent;if(s)e=s;else break}return r}resolveTime_(e,t,i,r){let s=this.parseTime_(e,t);return i==null?i=s.start:s.start!=null&&(i+=s.start),r==null?r=s.end:s.start!=null&&(r+=s.start),{start:i,end:r}}parseTime_(e,t){let i=this.parseTimeAttribute_(e.attributes.begin,t),r=this.parseTimeAttribute_(e.attributes.end,t),s=this.parseTimeAttribute_(e.attributes.dur,t);return r==null&&s!=null&&(r=i+s),{start:i,end:r}}parseTimeAttribute_(e,t){let i=null;if(Ae.timeColonFormatFrames_.test(e))i=this.parseColonTimeWithFrames_(t,e);else if(Ae.timeColonFormat_.test(e))i=this.parseTimeFromRegex_(Ae.timeColonFormat_,e);else if(Ae.timeColonFormatMilliseconds_.test(e))i=this.parseTimeFromRegex_(Ae.timeColonFormatMilliseconds_,e);else if(Ae.timeFramesFormat_.test(e))i=this.parseFramesTime_(t,e);else if(Ae.timeTickFormat_.test(e))i=this.parseTickTime_(t,e);else if(Ae.timeHMSFormat_.test(e))i=this.parseTimeFromRegex_(Ae.timeHMSFormat_,e);else if(e)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_CUE,"Could not parse cue time range in TTML");return i}parseFramesTime_(e,t){let i=Ae.timeFramesFormat_.exec(t);return Number(i[1])/e.frameRate}parseTickTime_(e,t){let i=Ae.timeTickFormat_.exec(t);return Number(i[1])/e.tickRate}parseColonTimeWithFrames_(e,t){let i=Ae.timeColonFormatFrames_.exec(t),r=Number(i[1]),s=Number(i[2]),n=Number(i[3]),a=Number(i[4]),o=Number(i[5])||0;return a+=o/e.subFrameRate,n+=a/e.frameRate,n+s*60+r*3600}parseTimeFromRegex_(e,t){let i=e.exec(t);if(i==null||i[0]=="")return null;let r=Number(i[1])||0,s=Number(i[2])||0,n=Number(i[3])||0;return(Number(i[4])||0)/1e3+n+s*60+r*3600}getCellResolution_(e){if(!e)return null;let t=/^(\d+) (\d+)$/.exec(e);if(!t)return null;let i=parseInt(t[1],10),r=parseInt(t[2],10);return{columns:i,rows:r}}};l(Ae,"percentValues_",/^(\d{1,2}(?:\.\d+)?|100(?:\.0+)?)% (\d{1,2}(?:\.\d+)?|100(?:\.0+)?)%$/),l(Ae,"percentValue_",/^(\d{1,4}(?:\.\d+)?|100)%$/),l(Ae,"unitValues_",/^(\d+px|\d+em|\d*\.?\d+c)$/),l(Ae,"pixelValues_",/^(\d+)px (\d+)px$/),l(Ae,"timeColonFormatFrames_",/^(\d{2,}):(\d{2}):(\d{2}):(\d{2})\.?(\d+)?$/),l(Ae,"timeColonFormat_",/^(?:(\d{2,}):)?(\d{2}):(\d{2})$/),l(Ae,"timeColonFormatMilliseconds_",/^(?:(\d{2,}):)?(\d{2}):(\d{2}\.\d+)$/),l(Ae,"timeFramesFormat_",/^(\d*(?:\.\d*)?)f$/),l(Ae,"timeTickFormat_",/^(\d*(?:\.\d*)?)t$/),l(Ae,"parameterNs_",["http://www.w3.org/ns/ttml#parameter","http://www.w3.org/2006/10/ttaf1#parameter"]),l(Ae,"styleNs_",["http://www.w3.org/ns/ttml#styling","http://www.w3.org/2006/10/ttaf1#styling"]),l(Ae,"styleEbuttsNs_","urn:ebu:tt:style"),l(Ae,"smpteNsList_",["http://www.smpte-ra.org/schemas/2052-1/2010/smpte-tt","http://www.smpte-ra.org/schemas/2052-1/2013/smpte-tt"]);var zi=Ae;zi.RateInfo_=class{constructor(y,e,t,i){if(this.frameRate=Number(y)||30,this.subFrameRate=Number(e)||1,this.tickRate=Number(i),this.tickRate==0&&(y?this.tickRate=this.frameRate*this.subFrameRate:this.tickRate=1),t){let r=/^(\d+) (\d+)$/g.exec(t);if(r){let s=Number(r[1]),n=Number(r[2]),a=s/n;this.frameRate*=a}}}};zi.timeHMSFormat_=new RegExp(["^(?:(\\d*(?:\\.\\d*)?)h)?","(?:(\\d*(?:\\.\\d*)?)m)?","(?:(\\d*(?:\\.\\d*)?)s)?","(?:(\\d*(?:\\.\\d*)?)ms)?$"].join(""));zi.textAlignToLineAlign_=new Map().set("left",B.lineAlign.START).set("center",B.lineAlign.CENTER).set("right",B.lineAlign.END).set("start",B.lineAlign.START).set("end",B.lineAlign.END);zi.textAlignToPositionAlign_=new Map().set("left",B.positionAlign.LEFT).set("center",B.positionAlign.CENTER).set("right",B.positionAlign.RIGHT).set("start",B.positionAlign.LEFT).set("end",B.positionAlign.RIGHT);Ue.registerParser("application/ttml+xml",()=>new zi);/*! @license
|
|
1029
|
+
* Shaka Player
|
|
1030
|
+
* Copyright 2016 Google LLC
|
|
1031
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1032
|
+
*/var mi=class{constructor(){l(this,"parser_");this.parser_=new zi}parseInit(e){let t=!1;if(new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("stsd",F.sampleDescription).box("stpp",i=>{t=!0,i.parser.stop()}).parse(e),!t)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_TTML)}setManifestType(e){this.parser_.setManifestType(e)}parseMedia(e,t,i,r){let s=[],n=null,a=[],o=new Map,c=[];if(new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfhd",f=>{v.assert(f.flags!=null,"A TFHD box should have a valid flags value"),n=pe.parseTFHD(f.reader,f.flags).defaultSampleSize}).fullBox("trun",f=>{v.assert(f.version!=null,"A TRUN box should have a valid version value"),v.assert(f.flags!=null,"A TRUN box should have a valid flags value");let g=pe.parseTRUN(f.reader,f.version,f.flags);for(let _ of g.sampleData){let T=_.sampleSize||n||0;c.push(T)}}).fullBox("subs",f=>{let g=f.reader,_=g.readUint32(),T=-1;for(let S=0;S<_;S++){let b=g.readUint32();T+=b;let E=g.readUint16(),C=[];for(let A=0;A<E;A++)f.version==1?C.push(g.readUint32()):C.push(g.readUint16()),g.readUint8(),g.readUint8(),g.readUint32();o.set(T,C)}}).box("mdat",F.allData(f=>{a.push(f)},!1)).parse(e,!1),a.length==0)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_TTML);let u=ne.concat(...a),m=0;for(let f=0;f<c.length;f++){let g=D.toUint8(u,m,c[f]);m+=c[f];let _=o.get(f),T=[];if(_&&_.length){let S=D.toUint8(g,0,_[0]),b=_[0];for(let E=1;E<_.length;E++){let C=D.toUint8(g,b,_[E]),A=ne.toStandardBase64(C);T.push("data:image/png;base64,"+A),b+=_[E]}g=S}s=s.concat(this.parser_.parseMedia(g,t,i,T))}return s}};Ue.registerParser('application/mp4; codecs="stpp"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.im1i"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.im1t"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.im2i"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.im2t"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.etd1"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.etd1|im1t"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.ttml.im1t|etd1"',()=>new mi);Ue.registerParser('application/mp4; codecs="stpp.TTML.im1t"',()=>new mi);/*! @license
|
|
1033
|
+
* Shaka Player
|
|
1034
|
+
* Copyright 2016 Google LLC
|
|
1035
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1036
|
+
*/var We=class We{constructor(){l(this,"manifestType_");this.manifestType_=me.UNKNOWN}parseInit(e){v.assert(!1,"VTT does not have init segments")}setManifestType(e){this.manifestType_=e}parseMedia(e,t,i,r){let s=q.fromUTF8(e);s=s.replace(/\r\n|\r(?=[^\n]|$)/gm,`
|
|
1037
|
+
`);let n=s.split(/\n{2,}/m);if(!/^WEBVTT($|[ \t\n])/m.test(n[0]))throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_HEADER);let a=t.vttOffset;this.manifestType_==me.HLS&&n[0].includes("X-TIMESTAMP-MAP")&&(a=this.computeHlsOffset_(n[0],t));let o=[];for(let u of n[0].split(`
|
|
1038
|
+
`))if(/^Region:/.test(u)){let m=We.parseRegion_(u);o.push(m)}let c=new Map;B.addDefaultTextColor(c);let d=[];for(let u of n.slice(1)){let m=u.split(`
|
|
1039
|
+
`);We.parseStyle_(m,c);let f=We.parseCue_(m,a,o,c);f&&d.push(f)}return d}computeHlsOffset_(e,t){let i=e.match(/LOCAL:((?:(\d{1,}):)?(\d{2}):(\d{2})\.(\d{3}))/m),r=e.match(/MPEGTS:(\d+)/m);if(!i||!r)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_HEADER);let s=Gt.parseTime(i[1]);if(s==null)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_TEXT_HEADER);let n=Number(r[1]),a=We.MPEG_TIMESCALE_,o=We.TS_ROLLOVER_/a;if(t.isMpegTs){let c=t.segmentStart-t.periodStart;for(;c>=o;)c-=o,n+=We.TS_ROLLOVER_}return t.periodStart+n/a-s}static parseRegion_(e){let t=new Gt(e),i=new He;return t.readWord(),t.skipWhitespace(),t.forEachWord(r=>{We.parseRegionSetting_(i,r)||p.warning("VTT parser encountered an invalid VTTRegion setting: ",r," The setting will be ignored.")}),i}static parseStyle_(e,t){if(e.length==1&&!e[0]||We.REGEX_NOTE_.test(e[0])||e[0]!="STYLE")return;let i=[],r=-1;for(let s=1;s<e.length;s++)e[s].includes("::cue")&&(i.push([]),r=i.length-1),r!=-1&&(i[r].push(e[s]),e[s].includes("}")&&(r=-1));for(let s of i){let n="global",a=s[0].match(/\((.*)\)/);a&&(n=a.pop());let o=s.slice(1,-1);if(s[0].includes("}")){let u=/\{(.*?)\}/.exec(s[0]);u&&(o=u[1].split(";"))}let c=t.get(n);c||(c=new B(0,0,""));let d=!1;for(let u=0;u<o.length;u++){let m=/^\s*([^:]+):\s*(.*)/.exec(o[u]);if(m){let f=m[1].trim(),g=m[2].trim().replace(";","");switch(f){case"background-color":case"background":d=!0,c.backgroundColor=g;break;case"color":d=!0,c.color=g;break;case"font-family":d=!0,c.fontFamily=g;break;case"font-size":d=!0,c.fontSize=g;break;case"font-weight":(parseInt(g,10)>=700||g=="bold")&&(d=!0,c.fontWeight=B.fontWeight.BOLD);break;case"font-style":switch(g){case"normal":d=!0,c.fontStyle=B.fontStyle.NORMAL;break;case"italic":d=!0,c.fontStyle=B.fontStyle.ITALIC;break;case"oblique":d=!0,c.fontStyle=B.fontStyle.OBLIQUE;break}break;case"opacity":d=!0,c.opacity=parseFloat(g);break;case"text-combine-upright":d=!0,c.textCombineUpright=g;break;case"text-shadow":d=!0,c.textShadow=g;break;case"white-space":d=!0,c.wrapLine=g!="noWrap";break;default:p.warning("VTT parser encountered an unsupported style: ",m);break}}}d&&t.set(n,c)}}static parseCue_(e,t,i,r){if(e.length==1&&!e[0]||We.REGEX_NOTE_.test(e[0])||e[0]=="STYLE"||e[0]=="REGION")return null;let s=null,n=0;e[0].includes("-->")||(s=e[0],n=1);let a=new Gt(e[n]),o=a.parseTime(),c=a.readRegex(/[ \t]+-->[ \t]+/g),d=a.parseTime();if(o==null||c==null||d==null)return p.alwaysWarn("Failed to parse VTT time code. Cue skipped:",s,e),null;o+=t,d+=t,o<0&&(o=0);let u="";for(let f=n+1;f<e.length;f++)f>n+1&&(u+=`
|
|
1040
|
+
`),u+=e[f];u=u.trim();let m;return r.has("global")?(m=r.get("global").clone(),m.startTime=o,m.endTime=d,m.payload=u):m=new B(o,d,u),a.skipWhitespace(),a.forEachWord(f=>{We.parseCueSetting(m,f,i)||p.warning("VTT parser encountered an invalid VTT setting: ",f," The setting will be ignored.")}),B.parseCuePayload(m,r),s!=null&&(m.id=s),m}static parseCueSetting(e,t,i){let r=null;if(r=We.REGEX_ALIGN_.exec(t))We.setTextAlign_(e,r[1]);else if(r=We.REGEX_VERTICAL_.exec(t))We.setVerticalWritingMode_(e,r[1]);else if(r=We.REGEX_SIZE_.exec(t))e.size=Number(r[1]);else if(r=We.REGEX_POSITION_.exec(t))e.position=Number(r[1]),r[2]&&We.setPositionAlign_(e,r[2]);else if(r=We.REGEX_REGION_.exec(t)){let s=We.getRegionById_(i,r[1]);s&&(e.region=s)}else return We.parsedLineValueAndInterpretation_(e,t);return!0}static getRegionById_(e,t){let i=e.find(r=>r.id==t);return i||(p.warning("VTT parser could not find a region with id: ",t," The region will be ignored."),null)}static parseRegionSetting_(e,t){let i=null;if(i=/^id=(.*)$/.exec(t))e.id=i[1];else if(i=/^width=(\d{1,2}|100)%$/.exec(t))e.width=Number(i[1]);else if(i=/^lines=(\d+)$/.exec(t))e.height=Number(i[1]),e.heightUnits=He.units.LINES;else if(i=/^regionanchor=(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(t))e.regionAnchorX=Number(i[1]),e.regionAnchorY=Number(i[2]);else if(i=/^viewportanchor=(\d{1,2}|100)%,(\d{1,2}|100)%$/.exec(t))e.viewportAnchorX=Number(i[1]),e.viewportAnchorY=Number(i[2]);else if(i=/^scroll=up$/.exec(t))e.scroll=He.scrollMode.UP;else return!1;return!0}static setTextAlign_(e,t){t=="middle"?e.textAlign=B.textAlign.CENTER:(v.assert(t.toUpperCase()in B.textAlign,t.toUpperCase()+" Should be in Cue.textAlign values!"),e.textAlign=B.textAlign[t.toUpperCase()])}static setPositionAlign_(e,t){t=="line-left"||t=="start"?e.positionAlign=B.positionAlign.LEFT:t=="line-right"||t=="end"?e.positionAlign=B.positionAlign.RIGHT:t=="center"||t=="middle"?e.positionAlign=B.positionAlign.CENTER:e.positionAlign=B.positionAlign.AUTO}static setVerticalWritingMode_(e,t){t=="lr"?e.writingMode=B.writingMode.VERTICAL_LEFT_TO_RIGHT:e.writingMode=B.writingMode.VERTICAL_RIGHT_TO_LEFT}static parsedLineValueAndInterpretation_(e,t){let i=null;if(i=We.REGEX_LINE_PCT_.exec(t))e.lineInterpretation=B.lineInterpretation.PERCENTAGE;else if(i=We.REGEX_LINE_NUM_.exec(t))e.lineInterpretation=B.lineInterpretation.LINE_NUMBER;else return!1;return e.line=Number(i[1]),i[2]&&(v.assert(i[2].toUpperCase()in B.lineAlign,i[2].toUpperCase()+" Should be in Cue.lineAlign values!"),e.lineAlign=B.lineAlign[i[2].toUpperCase()]),!0}};l(We,"MPEG_TIMESCALE_",9e4),l(We,"TS_ROLLOVER_",8589934592),l(We,"REGEX_NOTE_",/^NOTE($|[ \t])/),l(We,"REGEX_ALIGN_",/^align:(start|middle|center|end|left|right)$/),l(We,"REGEX_VERTICAL_",/^vertical:(lr|rl)$/),l(We,"REGEX_SIZE_",/^size:([\d.]+)%$/),l(We,"REGEX_POSITION_",/^position:([\d.]+)%(?:,(line-left|line-right|middle|center|start|end|auto))?$/),l(We,"REGEX_REGION_",/^region:(.*)$/),l(We,"REGEX_LINE_PCT_",/^line:([\d.]+)%(?:,(start|end|center))?$/),l(We,"REGEX_LINE_NUM_",/^line:(-?\d+)(?:,(start|end|center))?$/);var Xi=We;Ue.registerParser("text/vtt",()=>new Xi);Ue.registerParser('text/vtt; codecs="vtt"',()=>new Xi);Ue.registerParser('text/vtt; codecs="wvtt"',()=>new Xi);/*! @license
|
|
1041
|
+
* Shaka Player
|
|
1042
|
+
* Copyright 2016 Google LLC
|
|
1043
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1044
|
+
*/var Pa=class y{constructor(){l(this,"timescale_");this.timescale_=null}parseInit(e){let t=!1;if(new F().boxes(F.SAMPLE_TABLE_PATH,F.children).fullBox("mdhd",i=>{v.assert(i.version==0||i.version==1,"MDHD version can only be 0 or 1");let r=pe.parseMDHD(i.reader,i.version);this.timescale_=r.timescale}).fullBox("stsd",F.sampleDescription).box("wvtt",i=>{t=!0}).parse(e),!this.timescale_)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_VTT);if(!t)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_VTT)}setManifestType(e){}parseMedia(e,t,i,r){if(!e.length)return[];if(!this.timescale_)throw p.error("No init segment for MP4+VTT!"),new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_VTT);let s=0,n=[],a,o=[],c=!1,d=!1,u=!1,m=null;if(new F().boxes(F.FRAGMENT_PATH,F.children).fullBox("tfdt",T=>{c=!0,v.assert(T.version==0||T.version==1,"TFDT version can only be 0 or 1"),s=pe.parseTFDTInaccurate(T.reader,T.version).baseMediaDecodeTime}).fullBox("tfhd",T=>{v.assert(T.flags!=null,"A TFHD box should have a valid flags value"),m=pe.parseTFHD(T.reader,T.flags).defaultSampleDuration}).fullBox("trun",T=>{d=!0,v.assert(T.version!=null,"A TRUN box should have a valid version value"),v.assert(T.flags!=null,"A TRUN box should have a valid flags value"),n=pe.parseTRUN(T.reader,T.version,T.flags).sampleData}).box("mdat",F.allData(T=>{v.assert(!u,"VTT cues in mp4 with multiple MDAT are not currently supported"),u=!0,a=T},!1)).parse(e,!1),!u&&!c&&!d)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_VTT);let g=s,_=new Et(a,Et.Endianness.BIG_ENDIAN);for(let T of n){let S=T.sampleDuration||m,b=T.sampleCompositionTimeOffset?s+T.sampleCompositionTimeOffset:g;g=b+(S||0);let E=0;do{let C=_.readUint32();E+=C;let A=_.readUint32(),w=F.typeToString(A),M=null;if(w=="vttc"?C>8&&(M=_.readBytes(C-8,!1)):(w=="vtte"||p.error("Unknown box "+w+"! Skipping!"),_.skip(C-8)),S){if(M){v.assert(this.timescale_!=null,"Timescale should not be null!");let x=y.parseVTTC_(M,t.periodStart+b/this.timescale_,t.periodStart+g/this.timescale_);o.push(x)}}else p.error("WVTT sample duration unknown, and no default found!");v.assert(!T.sampleSize||E<=T.sampleSize,"The samples do not fit evenly into the sample sizes given in the TRUN box!")}while(T.sampleSize&&E<T.sampleSize)}return v.assert(!_.hasMoreData(),"MDAT which contain VTT cues and non-VTT data are not currently supported!"),o.filter(it.isNotNull)}static parseVTTC_(e,t,i){let r,s,n;return new F().box("payl",F.allData(a=>{r=q.fromUTF8(a)},!1)).box("iden",F.allData(a=>{s=q.fromUTF8(a)},!1)).box("sttg",F.allData(a=>{n=q.fromUTF8(a)},!1)).parse(e),r?y.assembleCue_(r,s,n,t,i):null}static assembleCue_(e,t,i,r,s){let n=new B(r,s,e);return B.parseCuePayload(n),t&&(n.id=t),i&&new Gt(i).forEachWord(o=>{Xi.parseCueSetting(n,o,[])||p.warning("VTT parser encountered an invalid VTT setting: ",o," The setting will be ignored.")}),n}};Ue.registerParser('application/mp4; codecs="wvtt"',()=>new Pa);/*! @license
|
|
1045
|
+
* Shaka Player
|
|
1046
|
+
* Copyright 2016 Google LLC
|
|
1047
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1048
|
+
*/var ka=class extends Xi{parseMedia(e,t,i,r){let s=q.fromUTF8(e),n=this.srt2webvtt_(s),a=D.toUint8(q.toUTF8(n));return super.parseMedia(a,t,i,r)}srt2webvtt_(e){let t=`WEBVTT
|
|
1049
|
+
|
|
1050
|
+
`;if(e=="")return t;let i=e.replace(/\r+/g,"");i=i.trim();let r=i.split(`
|
|
1051
|
+
|
|
1052
|
+
`);for(let s of r)t+=this.convertSrtCue_(s);return t}convertSrtCue_(e){let t=e.split(`
|
|
1053
|
+
`).map(u=>u.trim()).filter(Boolean);if(t.length<2||(/^\d+$/.test(t[0])&&t.shift(),t.length<2))return"";let i=/^([\d:,]+)\s*-->\s*([\d:,]+)(.*)?$/,r=t[0].match(i);if(!r)return"";let s=this.normalizeTime_(r[1]),n=this.normalizeTime_(r[2]),a="",o=t.slice(1).join(`
|
|
1054
|
+
`),c=o.match(/{\\an(\d)}/);if(c){let u={1:"line:-1 align:left",2:"line:-1 align:center",3:"line:-1 align:right",7:"line:0 align:left",8:"line:0 align:center",9:"line:0 align:right"};a+=u[c[1]]?` ${u[c[1]]}`:""}let d=o.match(/{\\pos\((\d+),(\d+)\)}/);if(d){let u=Math.min(100,Math.round(parseFloat(d[1])/19.2)),m=Math.min(100,Math.round(parseFloat(d[2])/10.8));a+=` position:${u}% line:${m}%`}return o=o.replace(/{\\.*?}/g,""),o=o.replace(/{b}/gi,"<b>").replace(/{\/b}/gi,"</b>").replace(/{i}/gi,"<i>").replace(/{\/i}/gi,"</i>").replace(/{u}/gi,"<u>").replace(/{\/u}/gi,"</u>"),o=this.convertColors_(o),`${s} --> ${n}${a}
|
|
1055
|
+
${o}
|
|
1056
|
+
|
|
1057
|
+
`}normalizeTime_(e){return/^\d{2}:\d{2},\d{3}$/.test(e)?"00:"+e.replace(",","."):e.replace(",",".")}convertColors_(e){let t=[];return e=e.replace(/<font color=["']?([^"'>]+)["']?>/gi,(i,r)=>{let s=r.toLowerCase(),n=si.getColorName(s);return n?(t.push(n),`<c.${n}>`):""}),e=e.replace(/<\/font>/gi,()=>t.length?(t.pop(),"</c>"):""),e}};Ue.registerParser("text/srt",()=>new ka);/*! @license
|
|
1058
|
+
* Shaka Player
|
|
1059
|
+
* Copyright 2016 Google LLC
|
|
1060
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1061
|
+
*/var ht=class ht{static getParsedCaption(e,t,i,r,s,n=!1){if(r>=s)return null;let a=-1,o=-1;for(let _=0;_<i.length;_++)i[_].some(T=>T!=null&&T.getChar().trim()!="")&&(a===-1&&(a=_),o=_);if(a===-1||o===-1)return null;let c=!1,d=!1,u=ht.DEFAULT_TXT_COLOR,m=ht.DEFAULT_BG_COLOR,f=r,g=ht.createStyledCue(r,s,c,d,u,m);for(let _=a;_<=o;_++){let T=i[_],S=-1,b=-1;for(let E=0;E<T.length;E++)T[E]!=null&&T[E].getChar().trim()!==""&&(S===-1&&(S=E),b=E);if(S===-1||b===-1){let E=ht.createLineBreakCue(r,s);e.nestedCues.push(E);continue}for(let E=S;E<=b;E++){let C=T[E];if(!C){g.payload+=" ";continue}let A=C.isUnderlined(),w=C.isItalicized(),M=C.getTextColor(),x=C.getBackgroundColor(),k=C.getTime(),L=n&&k!=null&&k>r?k:r;(A!=c||w!=d||M!=u||x!=m||L!=f)&&(g.payload&&e.nestedCues.push(g),g=ht.createStyledCue(L,s,A,w,M,x),c=A,d=w,u=M,m=x,f=L),g.payload+=C.getChar()}if(g.payload&&e.nestedCues.push(g),_!==o){let E=ht.createLineBreakCue(r,s);e.nestedCues.push(E)}f=r,g=ht.createStyledCue(r,s,c,d,u,m)}return e.nestedCues.length?{cue:e,stream:t}:null}static createStyledCue(e,t,i,r,s,n){let a=new B(e,t,"");return i&&a.textDecoration.push(B.textDecoration.UNDERLINE),r&&(a.fontStyle=B.fontStyle.ITALIC),a.color=s,a.backgroundColor=n,a}static createLineBreakCue(e,t){let i=new B(e,t,"");return i.lineBreak=!0,i}static getCea608StreamName(e,t){return`CC${(e<<1|t)+1}`}static isSeiNaluType(e,t){switch(e){case ht.CodecFamily.H264:return t==ht.H264_NALU_TYPE_SEI;case ht.CodecFamily.H265:return t==ht.H265_PREFIX_NALU_TYPE_SEI||t==ht.H265_SUFFIX_NALU_TYPE_SEI;case ht.CodecFamily.H266:return t==ht.H266_PREFIX_NALU_TYPE_SEI||t==ht.H266_SUFFIX_NALU_TYPE_SEI;default:return!1}}};l(ht,"CodecFamily",{H264:0,H265:1,H266:2}),l(ht,"DEFAULT_BG_COLOR","black"),l(ht,"DEFAULT_TXT_COLOR","white"),l(ht,"H264_NALU_TYPE_SEI",6),l(ht,"H265_PREFIX_NALU_TYPE_SEI",39),l(ht,"H265_SUFFIX_NALU_TYPE_SEI",40),l(ht,"H266_PREFIX_NALU_TYPE_SEI",23),l(ht,"H266_SUFFIX_NALU_TYPE_SEI",24),l(ht,"DEFAULT_TIMESCALE_VALUE",9e4);var Ye=ht,Da=class{constructor(e,t,i,r,s,n=null){l(this,"character_");l(this,"underline_");l(this,"italics_");l(this,"backgroundColor_");l(this,"textColor_");l(this,"time_");this.character_=e,this.underline_=t,this.italics_=i,this.backgroundColor_=r,this.textColor_=s,this.time_=n}getChar(){return this.character_}getTime(){return this.time_}isUnderlined(){return this.underline_}isItalicized(){return this.italics_}getBackgroundColor(){return this.backgroundColor_}getTextColor(){return this.textColor_}};/*! @license
|
|
1062
|
+
* Shaka Player
|
|
1063
|
+
* Copyright 2016 Google LLC
|
|
1064
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1065
|
+
*/var zt=class zt{constructor(e,t){l(this,"rows_");l(this,"row_");l(this,"scrollRows_");l(this,"fieldNum_");l(this,"channelNum_");l(this,"underline_");l(this,"italics_");l(this,"textColor_");l(this,"backgroundColor_");l(this,"offset_");l(this,"indent_");this.rows_=[],this.row_=1,this.scrollRows_=0,this.fieldNum_=e,this.channelNum_=t,this.underline_=!1,this.italics_=!1,this.textColor_=Ye.DEFAULT_TXT_COLOR,this.backgroundColor_=Ye.DEFAULT_BG_COLOR,this.offset_=null,this.indent_=null,this.reset()}forceEmit(e,t,i=!1){let r=Ye.getCea608StreamName(this.fieldNum_,this.channelNum_),s=new B(e,t,"");s.lineInterpretation=B.lineInterpretation.PERCENTAGE;let n=this.rows_.findIndex(o=>o.some(c=>c.getChar().trim()!="")),a=zt.ROW_TO_LINE_CONVERSION_.get(n);return a&&(s.line=a),this.indent_!=null&&this.offset_!=null&&(s.position=10+Math.min(70,this.indent_*10)+this.offset_*2.5),Ye.getParsedCaption(s,r,this.rows_,e,t,i)}reset(){this.resetAllRows(),this.row_=1,this.offset_=null,this.indent_=null}getRow(){return this.row_}setRow(e){this.row_=e}getScrollSize(){return this.scrollRows_}setScrollSize(e){this.scrollRows_=e}addChar(e,t,i=null){if(t<32||t>127)return;let r="";switch(e){case zt.CharSet.BASIC_NORTH_AMERICAN:zt.CharSet.BasicNorthAmericanChars.has(t)?r=zt.CharSet.BasicNorthAmericanChars.get(t):r=String.fromCharCode(t);break;case zt.CharSet.SPECIAL_NORTH_AMERICAN:r=zt.CharSet.SpecialNorthAmericanChars.get(t);break;case zt.CharSet.SPANISH_FRENCH:this.eraseChar(),r=zt.CharSet.ExtendedSpanishFrench.get(t);break;case zt.CharSet.PORTUGUESE_GERMAN:this.eraseChar(),r=zt.CharSet.ExtendedPortugueseGerman.get(t);break}if(r){let s=new Ye.StyledChar(r,this.underline_,this.italics_,this.backgroundColor_,this.textColor_,i);this.rows_[this.row_].push(s)}}eraseChar(){this.rows_[this.row_].pop()}moveRows(e,t,i){if(!(t<0||e<0))if(e>=t)for(let r=i-1;r>=0;r--)this.rows_[e+r]=this.rows_[t+r].map(s=>s);else for(let r=0;r<i;r++)this.rows_[e+r]=this.rows_[t+r].map(s=>s)}resetRows(e,t){for(let i=0;i<=t;i++)this.rows_[e+i]=[]}resetAllRows(){this.resetRows(0,zt.CC_ROWS)}eraseBuffer(){this.row_=this.scrollRows_>0?this.scrollRows_:0,this.resetAllRows()}setUnderline(e){this.underline_=e}setItalics(e){this.italics_=e}setTextColor(e){this.textColor_=e}setBackgroundColor(e){this.backgroundColor_=e}setOffset(e){this.offset_=e}setIndent(e){this.indent_=e}};l(zt,"CC_ROWS",15),l(zt,"CharSet",{BASIC_NORTH_AMERICAN:0,SPECIAL_NORTH_AMERICAN:1,SPANISH_FRENCH:2,PORTUGUESE_GERMAN:3}),l(zt,"ROW_TO_LINE_CONVERSION_",new Map([[1,10],[2,15.33],[3,20.66],[4,26],[5,31.33],[6,36.66],[7,42],[8,47.33],[9,52.66],[10,58],[11,63.33],[12,68.66],[13,74],[14,79.33],[15,84.66]]));var wt=zt;wt.CharSet.BasicNorthAmericanChars=new Map([[39,"\u2019"],[42,"\xE1"],[92,"\xE9"],[94,"\xED"],[95,"\xF3"],[96,"\xFA"],[123,"\xE7"],[124,"\xF7"],[125,"\xD1"],[126,"\xF1"],[127,"\u2588"]]);wt.CharSet.SpecialNorthAmericanChars=new Map([[48,"\xAE"],[49,"\xB0"],[50,"\xBD"],[51,"\xBF"],[52,"\u2122"],[53,"\xA2"],[54,"\xA3"],[55,"\u266A"],[56,"\xE0"],[57," "],[58,"\xE8"],[59,"\xE2"],[60,"\xEA"],[61,"\xEE"],[62,"\xF4"],[63,"\xFB"]]);wt.CharSet.ExtendedSpanishFrench=new Map([[32,"\xC1"],[33,"\xC9"],[34,"\xD3"],[35,"\xDA"],[36,"\xDC"],[37,"\xFC"],[38,"\u2018"],[39,"\xA1"],[40,"*"],[41,"'"],[42,"\u2500"],[43,"\xA9"],[44,"\u2120"],[45,"\xB7"],[46,"\u201C"],[47,"\u201D"],[48,"\xC0"],[49,"\xC2"],[50,"\xC7"],[51,"\xC8"],[52,"\xCA"],[53,"\xCB"],[54,"\xEB"],[55,"\xCE"],[56,"\xCF"],[57,"\xEF"],[58,"\xD4"],[59,"\xD9"],[60,"\xF9"],[61,"\xDB"],[62,"\xAB"],[63,"\xBB"]]);wt.CharSet.ExtendedPortugueseGerman=new Map([[32,"\xC3"],[33,"\xE3"],[34,"\xCD"],[35,"\xCC"],[36,"\xEC"],[37,"\xD2"],[38,"\xF2"],[39,"\xD5"],[40,"\xF5"],[41,"{"],[42,"}"],[43,"\\"],[44,"^"],[45,"_"],[46,"|"],[47,"~"],[48,"\xC4"],[49,"\xE4"],[50,"\xD6"],[51,"\xF6"],[52,"\xDF"],[53,"\xA5"],[54,"\xA4"],[55,"\u2502"],[56,"\xC5"],[57,"\xE5"],[58,"\xD8"],[59,"\xF8"],[60,"\u250C"],[61,"\u2510"],[62,"\u2514"],[63,"\u2518"]]);/*! @license
|
|
1066
|
+
* Shaka Player
|
|
1067
|
+
* Copyright 2016 Google LLC
|
|
1068
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1069
|
+
*/var nt=class nt{constructor(e,t){l(this,"type_");l(this,"text_");l(this,"displayedMemory_");l(this,"nonDisplayedMemory_");l(this,"curBuf_");l(this,"prevEndTime_");l(this,"lastCp_");this.type_=nt.CaptionType.NONE,this.text_=new wt(e,t),this.displayedMemory_=new wt(e,t),this.nonDisplayedMemory_=new wt(e,t),this.curBuf_=this.nonDisplayedMemory_,this.prevEndTime_=0,this.lastCp_=null}reset(){this.type_=nt.CaptionType.NONE,this.curBuf_=this.nonDisplayedMemory_,this.lastCp_=null,this.displayedMemory_.reset(),this.nonDisplayedMemory_.reset(),this.text_.reset()}firstPts(e){this.prevEndTime_=e}pacToRow_(e,t){return[11,11,1,2,3,4,12,13,14,15,5,6,7,8,9,10][(e&7)<<1|t>>5&1]}controlPac_(e,t){let i=this.pacToRow_(e,t),r=Ye.DEFAULT_TXT_COLOR,s=!1,n=null,a;if(t>95?a=t-96:a=t-64,a<=13){let d=Math.floor(a/2);r=nt.TEXT_COLORS[d]}else a<=15?s=!0:n=Math.floor((a-16)/2);let o=(t&1)===1;if(this.type_===nt.CaptionType.TEXT)return;let c=this.curBuf_;if(this.type_===nt.CaptionType.ROLLUP&&i!==c.getRow()){let d=1+c.getRow()-c.getScrollSize(),u=1+i-c.getScrollSize();c.moveRows(u,d,c.getScrollSize()),c.resetRows(0,u-1),c.resetRows(i+1,wt.CC_ROWS-i)}c.setRow(i),c.setUnderline(o),c.setItalics(s),c.setTextColor(r),c.setIndent(n),c.setOffset(null),c.setBackgroundColor(Ye.DEFAULT_BG_COLOR)}controlMidrow_(e,t){this.curBuf_.setUnderline(!1),this.curBuf_.setItalics(!1),this.curBuf_.setTextColor(Ye.DEFAULT_TXT_COLOR),this.curBuf_.addChar(wt.CharSet.BASIC_NORTH_AMERICAN,32,t);let i=!1,r=(e&1)===1,s=nt.TEXT_COLORS[(e&14)>>1];s==="white_italics"&&(s="white",i=!0),this.curBuf_.setUnderline(r),this.curBuf_.setItalics(i),this.curBuf_.setTextColor(s)}controlBackgroundAttribute_(e,t){let i=Ye.DEFAULT_BG_COLOR;(e&7)===0&&(i=nt.BG_COLORS[(t&14)>>1]),this.curBuf_.setBackgroundColor(i)}controlMiscellaneous_(e){let t=nt.MiscCmd_,i=e.ccData2,r=e.pts,s=null;switch(i){case t.RCL:this.controlRcl_();break;case t.BS:this.controlBs_();break;case t.AOD:case t.AON:break;case t.DER:break;case t.RU2:s=this.controlRu_(2,r);break;case t.RU3:s=this.controlRu_(3,r);break;case t.RU4:s=this.controlRu_(4,r);break;case t.FON:this.controlFon_(r);break;case t.RDC:this.controlRdc_(r);break;case t.TR:this.controlTr_();break;case t.RTD:this.controlRtd_();break;case t.EDM:s=this.controlEdm_(r);break;case t.CR:s=this.controlCr_(r);break;case t.ENM:this.controlEnm_();break;case t.EOC:s=this.controlEoc_(r);break}return s}controlCr_(e){let t=this.curBuf_;if(this.type_!==nt.CaptionType.ROLLUP)return null;let i=t.forceEmit(this.prevEndTime_,e,!0),r=t.getRow()-t.getScrollSize()+1;return t.moveRows(r-1,r,t.getScrollSize()),t.resetRows(0,r-1),t.resetRows(t.getRow(),wt.CC_ROWS-t.getRow()),this.prevEndTime_=e,i}controlRu_(e,t){this.curBuf_=this.displayedMemory_;let i=this.curBuf_,r=null;if(this.type_!==nt.CaptionType.ROLLUP&&this.type_!==nt.CaptionType.TEXT){let s=this.type_===nt.CaptionType.PAINTON;r=i.forceEmit(this.prevEndTime_,t,s),this.displayedMemory_.eraseBuffer(),this.nonDisplayedMemory_.eraseBuffer(),i.setRow(wt.CC_ROWS)}return this.type_=nt.CaptionType.ROLLUP,i.setScrollSize(e),r}controlFon_(e){this.curBuf_.addChar(wt.CharSet.BASIC_NORTH_AMERICAN,32,e)}controlEdm_(e){let t=this.displayedMemory_,i=null;if(this.type_!==nt.CaptionType.TEXT){let r=this.type_===nt.CaptionType.PAINTON||this.type_===nt.CaptionType.ROLLUP;i=t.forceEmit(this.prevEndTime_,e,r)}return t.resetAllRows(),i}controlRdc_(e){this.type_=nt.CaptionType.PAINTON,this.curBuf_=this.displayedMemory_,this.curBuf_.setScrollSize(0),this.prevEndTime_=e}controlEnm_(){this.nonDisplayedMemory_.resetAllRows()}controlEoc_(e){let t=null;if(this.type_!==nt.CaptionType.TEXT){let r=this.type_===nt.CaptionType.PAINTON||this.type_===nt.CaptionType.ROLLUP;t=this.displayedMemory_.forceEmit(this.prevEndTime_,e,r)}let i=this.nonDisplayedMemory_;return this.nonDisplayedMemory_=this.displayedMemory_,this.displayedMemory_=i,this.controlRcl_(),this.prevEndTime_=e,t}controlRcl_(){this.type_=nt.CaptionType.POPON,this.curBuf_=this.nonDisplayedMemory_,this.curBuf_.setScrollSize(0)}controlBs_(){this.curBuf_.eraseChar()}controlTr_(){this.text_.reset(),this.controlRtd_()}controlRtd_(){p.warnOnce("Cea608DataChannel","CEA-608 text mode entered, but is unsupported"),this.curBuf_=this.text_,this.type_=nt.CaptionType.TEXT}handleBasicNorthAmericanChar(e,t,i){this.curBuf_.addChar(wt.CharSet.BASIC_NORTH_AMERICAN,e,i),this.curBuf_.addChar(wt.CharSet.BASIC_NORTH_AMERICAN,t,i)}handleExtendedWesternEuropeanChar_(e,t,i){let r=e&1?wt.CharSet.PORTUGUESE_GERMAN:wt.CharSet.SPANISH_FRENCH;this.curBuf_.addChar(r,t,i)}handleOffset_(e){this.curBuf_.setOffset(e)}handleControlCode(e){let t=e.ccData1,i=e.ccData2,r=e.pts;if(this.lastCp_===(t<<8|i))return this.lastCp_=null,null;if(this.lastCp_=t<<8|i,this.isPAC_(t,i))this.controlPac_(t,i);else if(this.isMidrowStyleChange_(t,i))this.controlMidrow_(i,r);else if(this.isBackgroundAttribute_(t,i))this.controlBackgroundAttribute_(t,i);else if(this.isSpecialNorthAmericanChar_(t,i))this.curBuf_.addChar(wt.CharSet.SPECIAL_NORTH_AMERICAN,i,r);else if(this.isExtendedWesternEuropeanChar_(t,i))this.handleExtendedWesternEuropeanChar_(t,i,r);else{if(this.isMiscellaneous_(t,i))return this.controlMiscellaneous_(e);if(this.isOffset_(t,i)){let s=i-32;this.handleOffset_(s)}}return null}isMiscellaneous_(e,t){return(e&246)===20&&(t&240)===32}isOffset_(e,t){return(e==23||e==31)&&t>=33&&t<=35}isPAC_(e,t){return(e&240)===16&&(t&192)===64}isMidrowStyleChange_(e,t){return(e&247)===17&&(t&240)===32}isBackgroundAttribute_(e,t){return(e&247)===16&&(t&240)===32||(e&247)===23&&(t&255)===45}isSpecialNorthAmericanChar_(e,t){return(e&247)===17&&(t&240)===48}isExtendedWesternEuropeanChar_(e,t){return(e&246)===18&&(t&224)===32}static isControlCode(e){return(e&112)===16}static isXdsControlCode(e){return e>=1&&e<=15}};l(nt,"MiscCmd_",{RCL:32,BS:33,AOD:34,AON:35,DER:36,RU2:37,RU3:38,RU4:39,FON:40,RDC:41,TR:42,RTD:43,EDM:44,CR:45,ENM:46,EOC:47}),l(nt,"CaptionType",{NONE:0,POPON:1,PAINTON:2,ROLLUP:3,TEXT:4}),l(nt,"BG_COLORS",["black","green","blue","cyan","red","yellow","magenta","black"]),l(nt,"TEXT_COLORS",["white","green","blue","cyan","red","yellow","magenta","white_italics"]);var ji=nt;/*! @license
|
|
1070
|
+
* Shaka Player
|
|
1071
|
+
* Copyright 2016 Google LLC
|
|
1072
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1073
|
+
*/var bi=class bi{constructor(e,t){l(this,"parentService_");l(this,"windowNum_");l(this,"visible_");l(this,"relativeToggle_");l(this,"horizontalAnchor_");l(this,"verticalAnchor_");l(this,"anchorId_");l(this,"rowCount_");l(this,"colCount_");l(this,"justification_");l(this,"memory_");l(this,"startTime_");l(this,"row_");l(this,"col_");l(this,"italics_");l(this,"underline_");l(this,"textColor_");l(this,"backgroundColor_");this.parentService_=t,this.windowNum_=e,this.visible_=!1,this.relativeToggle_=!1,this.horizontalAnchor_=0,this.verticalAnchor_=0,this.anchorId_=0,this.rowCount_=0,this.colCount_=0,this.justification_=bi.TextJustification.CENTER,this.memory_=[],this.startTime_=0,this.row_=0,this.col_=0,this.italics_=!1,this.underline_=!1,this.textColor_=Ye.DEFAULT_TXT_COLOR,this.backgroundColor_=Ye.DEFAULT_BG_COLOR,this.resetMemory()}defineWindow(e,t,i,r,s,n,a){this.visible_=e,this.verticalAnchor_=t,this.horizontalAnchor_=i,this.anchorId_=r,this.relativeToggle_=s,this.rowCount_=n,this.colCount_=a}resetMemory(){this.memory_=[];for(let e=0;e<bi.MAX_ROWS;e++)this.memory_.push(this.createNewRow_())}createNewRow_(){let e=[];for(let t=0;t<bi.MAX_COLS;t++)e.push(null);return e}setCharacter(e){if(!this.isPenInBounds_())return;let t=new Da(e,this.underline_,this.italics_,this.backgroundColor_,this.textColor_);this.memory_[this.row_][this.col_]=t,this.col_++}backspace(){this.isPenInBounds_()&&(this.col_<=0&&this.row_<=0||(this.col_<=0?(this.col_=this.colCount_-1,this.row_--):this.col_--,this.memory_[this.row_][this.col_]=null))}isPenInBounds_(){let e=this.row_<this.rowCount_&&this.row_>=0,t=this.col_<this.colCount_&&this.col_>=0;return e&&t}isVisible(){return this.visible_}moveUpRows_(e){let t=0;for(let i=e;i<bi.MAX_ROWS;i++,t++)this.memory_[t]=this.memory_[i];for(let i=0;i<e;i++,t++)this.memory_[t]=this.createNewRow_()}carriageReturn(){if(this.row_+1>=this.rowCount_){this.moveUpRows_(1),this.col_=0;return}this.row_++,this.col_=0}horizontalCarriageReturn(){this.memory_[this.row_]=this.createNewRow_(),this.col_=0}forceEmit(e,t){let i=`svc${t}`,r=bi.TextJustification,s=new B(this.startTime_,e,"");this.justification_===r.LEFT?s.textAlign=B.textAlign.LEFT:this.justification_===r.RIGHT?s.textAlign=B.textAlign.RIGHT:s.textAlign=B.textAlign.CENTER,this.adjustRegion_(s.region);let n=Ye.getParsedCaption(s,i,this.memory_,this.startTime_,e);return n&&this.setStartTime(e),n}setPenLocation(e,t){this.row_=e,this.col_=t}setPenBackgroundColor(e){this.backgroundColor_=e}setPenTextColor(e){this.textColor_=e}setPenUnderline(e){this.underline_=e}setPenItalics(e){this.italics_=e}resetPen(){this.row_=0,this.col_=0,this.underline_=!1,this.italics_=!1,this.textColor_=Ye.DEFAULT_TXT_COLOR,this.backgroundColor_=Ye.DEFAULT_BG_COLOR}setJustification(e){this.justification_=e}display(){this.visible_=!0}hide(){this.visible_=!1}toggle(){this.visible_=!this.visible_}setStartTime(e){this.startTime_=e}adjustRegion_(e){this.parentService_&&(e.id+="svc"+this.parentService_),e.id+="win"+this.windowNum_,e.height=this.rowCount_,e.width=this.colCount_,e.heightUnits=He.units.LINES,e.widthUnits=He.units.LINES,e.viewportAnchorX=this.horizontalAnchor_,e.viewportAnchorY=this.verticalAnchor_,e.viewportAnchorUnits=this.relativeToggle_?He.units.PERCENTAGE:He.units.LINES;let t=bi.AnchorId;switch(this.anchorId_){case t.UPPER_LEFT:e.regionAnchorX=0,e.regionAnchorY=0;break;case t.UPPER_CENTER:e.regionAnchorX=50,e.regionAnchorY=0;break;case t.UPPER_RIGHT:e.regionAnchorX=100,e.regionAnchorY=0;break;case t.MIDDLE_LEFT:e.regionAnchorX=0,e.regionAnchorY=50;break;case t.MIDDLE_CENTER:e.regionAnchorX=50,e.regionAnchorY=50;break;case t.MIDDLE_RIGHT:e.regionAnchorX=100,e.regionAnchorY=50;break;case t.LOWER_LEFT:e.regionAnchorX=0,e.regionAnchorY=100;break;case t.LOWER_CENTER:e.regionAnchorX=50,e.regionAnchorY=100;break;case t.LOWER_RIGHT:e.regionAnchorX=100,e.regionAnchorY=100;break}}};l(bi,"TextJustification",{LEFT:0,RIGHT:1,CENTER:2,FULL:3}),l(bi,"AnchorId",{UPPER_LEFT:0,UPPER_CENTER:1,UPPER_RIGHT:2,MIDDLE_LEFT:3,MIDDLE_CENTER:4,MIDDLE_RIGHT:5,LOWER_LEFT:6,LOWER_CENTER:7,LOWER_RIGHT:8}),l(bi,"MAX_COLS",42),l(bi,"MAX_ROWS",16);var Ua=bi;/*! @license
|
|
1074
|
+
* Shaka Player
|
|
1075
|
+
* Copyright 2016 Google LLC
|
|
1076
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1077
|
+
*/var Ys=class Ys{constructor(){l(this,"builtPackets_");l(this,"currentPacketBeingBuilt_");l(this,"bytesLeftToAddInCurrentPacket_");this.builtPackets_=[],this.currentPacketBeingBuilt_=null,this.bytesLeftToAddInCurrentPacket_=0}addByte(e){if(e.type===Ys.DTVCC_PACKET_START){let t=e.value&63;this.bytesLeftToAddInCurrentPacket_=t*2-1,this.currentPacketBeingBuilt_=[];return}if(this.currentPacketBeingBuilt_&&(this.bytesLeftToAddInCurrentPacket_>0&&(this.currentPacketBeingBuilt_.push(e),this.bytesLeftToAddInCurrentPacket_--),this.bytesLeftToAddInCurrentPacket_===0)){let t=new ho(this.currentPacketBeingBuilt_);this.builtPackets_.push(t),this.currentPacketBeingBuilt_=null,this.bytesLeftToAddInCurrentPacket_=0}}getBuiltPackets(){return this.builtPackets_}clearBuiltPackets(){this.builtPackets_=[]}clear(){this.builtPackets_=[],this.currentPacketBeingBuilt_=null,this.bytesLeftToAddInCurrentPacket_=0}};l(Ys,"DTVCC_PACKET_DATA",2),l(Ys,"DTVCC_PACKET_START",3);var $s=Ys,ho=class{constructor(e){l(this,"pos_");l(this,"packetData_");this.pos_=0,this.packetData_=e}hasMoreData(){return this.pos_<this.packetData_.length}getPosition(){return this.pos_}readByte(){if(!this.hasMoreData())throw this.outOfBoundsError_();return this.packetData_[this.pos_++]}skip(e){if(this.pos_+e>this.packetData_.length)throw this.outOfBoundsError_();this.pos_+=e}rewind(e){if(this.pos_-e<0)throw this.outOfBoundsError_();this.pos_-=e}outOfBoundsError_(){return new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.BUFFER_READ_OUT_OF_BOUNDS)}};/*! @license
|
|
1078
|
+
* Shaka Player
|
|
1079
|
+
* Copyright 2016 Google LLC
|
|
1080
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1081
|
+
*/var Nt=class Nt{constructor(e){l(this,"serviceNumber_");l(this,"windows_");l(this,"currentWindow_");this.serviceNumber_=e,this.windows_=[null,null,null,null,null,null,null,null],this.currentWindow_=null}handleCea708ControlCode(e){let t=e.readByte(),i=t.value,r=t.pts;if(i===Nt.EXT_CEA708_CTRL_CODE_BYTE1){let s=e.readByte();i=i<<16|s.value}return i>=0&&i<=31?this.handleC0_(e,i,r):i>=128&&i<=159?this.handleC1_(e,i,r):(i>=4096&&i<=4127?this.handleC2_(e,i&255):i>=4224&&i<=4255?this.handleC3_(e,i&255):i>=32&&i<=127?this.handleG0_(i):i>=160&&i<=255?this.handleG1_(i):i>=4128&&i<=4223?this.handleG2_(i&255):i>=4256&&i<=4351&&this.handleG3_(i&255),[])}handleG0_(e){if(this.currentWindow_){if(e===127){this.currentWindow_.setCharacter("\u266A");return}this.currentWindow_.setCharacter(String.fromCharCode(e))}}handleG1_(e){this.currentWindow_&&this.currentWindow_.setCharacter(String.fromCharCode(e))}handleG2_(e){if(!this.currentWindow_)return;if(!Nt.G2Charset.has(e)){this.currentWindow_.setCharacter("_");return}let t=Nt.G2Charset.get(e);this.currentWindow_.setCharacter(t)}handleG3_(e){if(this.currentWindow_){if(e!=160){this.currentWindow_.setCharacter("_");return}this.currentWindow_.setCharacter("[CC]")}}handleC0_(e,t,i){if(t==24){let n=e.readByte().value,a=e.readByte().value;if(!this.currentWindow_)return[];let o=String.fromCharCode(n<<8|a);return this.currentWindow_.setCharacter(o),[]}if(!this.currentWindow_)return[];let r=this.currentWindow_,s=null;switch(t){case Nt.ASCII_BACKSPACE:r.backspace();break;case Nt.ASCII_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.carriageReturn();break;case Nt.ASCII_HOR_CARRIAGE_RETURN:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.horizontalCarriageReturn();break;case Nt.ASCII_FORM_FEED:r.isVisible()&&(s=r.forceEmit(i,this.serviceNumber_)),r.resetMemory(),r.setPenLocation(0,0);break}return s?[s]:[]}handleC1_(e,t,i){if(t>=128&&t<=135){let r=t&7;this.setCurrentWindow_(r)}else if(t===136){let r=e.readByte().value;return this.clearWindows_(r,i)}else if(t===137){let r=e.readByte().value;this.displayWindows_(r,i)}else if(t===138){let r=e.readByte().value;return this.hideWindows_(r,i)}else if(t===139){let r=e.readByte().value;return this.toggleWindows_(r,i)}else if(t===140){let r=e.readByte().value;return this.deleteWindows_(r,i)}else{if(t===143)return this.reset_(i);if(t===144)this.setPenAttributes_(e);else if(t===145)this.setPenColor_(e);else if(t===146)this.setPenLocation_(e);else if(t===151)this.setWindowAttributes_(e);else if(t>=152&&t<=159){let r=(t&15)-8;this.defineWindow_(e,r,i)}}return[]}handleC2_(e,t){t>=8&&t<=15?e.skip(1):t>=16&&t<=23?e.skip(2):t>=24&&t<=31&&e.skip(3)}handleC3_(e,t){t>=128&&t<=135?e.skip(4):t>=136&&t<=143&&e.skip(5)}setCurrentWindow_(e){this.windows_[e]&&(this.currentWindow_=this.windows_[e])}getSpecifiedWindowIds_(e){let t=[];for(let i=0;i<8;i++)(e&1)===1&&this.windows_[i]&&t.push(i),e>>=1;return t}clearWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}s.resetMemory()}return i}displayWindows_(e,t){for(let i of this.getSpecifiedWindowIds_(e)){let r=this.windows_[i];r.isVisible()||r.setStartTime(t),r.display()}}hideWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()&&(i=s.forceEmit(t,this.serviceNumber_)),s.hide()}return i?[i]:[]}toggleWindows_(e,t){let i=null;for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];s.isVisible()?i=s.forceEmit(t,this.serviceNumber_):s.setStartTime(t),s.toggle()}return i?[i]:[]}deleteWindows_(e,t){let i=[];for(let r of this.getSpecifiedWindowIds_(e)){let s=this.windows_[r];if(s.isVisible()){let n=s.forceEmit(t,this.serviceNumber_);n&&i.push(n)}this.windows_[r]=null}return i}reset_(e){let i=this.deleteWindows_(255,e);return this.clear(),i}clear(){this.currentWindow_=null,this.windows_=[null,null,null,null,null,null,null,null]}setPenAttributes_(e){e.skip(1);let t=e.readByte().value;if(!this.currentWindow_)return;let i=(t&128)>0,r=(t&64)>0;this.currentWindow_.setPenItalics(i),this.currentWindow_.setPenUnderline(r)}setPenColor_(e){let t=e.readByte().value,i=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let r=t&3,s=(t&12)>>2,n=(t&48)>>4,a=i&3,o=(i&12)>>2,c=(i&48)>>4,d=this.rgbColorToCssColor_(n,s,r),u=this.rgbColorToCssColor_(c,o,a);this.currentWindow_.setPenTextColor(d),this.currentWindow_.setPenBackgroundColor(u)}setPenLocation_(e){let t=e.readByte().value,i=e.readByte().value;if(!this.currentWindow_)return;let r=t&15,s=i&63;this.currentWindow_.setPenLocation(r,s)}setWindowAttributes_(e){e.skip(1),e.skip(1);let t=e.readByte().value;if(e.skip(1),!this.currentWindow_)return;let i=t&3;this.currentWindow_.setJustification(i)}defineWindow_(e,t,i){let r=this.windows_[t]!==null;if(!r){let E=new Ua(t,this.serviceNumber_);E.setStartTime(i),this.windows_[t]=E}let s=e.readByte().value,n=e.readByte().value,a=e.readByte().value,o=e.readByte().value,c=e.readByte().value,d=e.readByte().value,u=(s&32)>0,m=n&127,f=(n&128)>0,g=a,_=(o&15)+1,T=(o&240)>>4,S=(c&63)+1,b=d&7;(!r||b!==0)&&this.windows_[t].resetPen(),this.windows_[t].defineWindow(u,m,g,T,f,_,S),this.currentWindow_=this.windows_[t]}rgbColorToCssColor_(e,t,i){let r=e>>1<<2|t>>1<<1|i>>1;return Nt.Colors[r]}};l(Nt,"ASCII_BACKSPACE",8),l(Nt,"ASCII_FORM_FEED",12),l(Nt,"ASCII_CARRIAGE_RETURN",13),l(Nt,"ASCII_HOR_CARRIAGE_RETURN",14),l(Nt,"EXT_CEA708_CTRL_CODE_BYTE1",16),l(Nt,"G2Charset",new Map([[32," "],[33,"\xA0"],[37,"\u2026"],[42,"\u0160"],[44,"\u0152"],[48,"\u2588"],[49,"\u2018"],[50,"\u2019"],[51,"\u201C"],[52,"\u201D"],[53,"\u2022"],[57,"\u2122"],[58,"\u0161"],[60,"\u0153"],[61,"\u2120"],[63,"\u0178"],[118,"\u215B"],[119,"\u215C"],[120,"\u215D"],[121,"\u215E"],[122,"\u2502"],[123,"\u2510"],[124,"\u2514"],[125,"\u2500"],[126,"\u2518"],[127,"\u250C"]])),l(Nt,"Colors",["black","blue","green","cyan","red","magenta","yellow","white"]);var La=Nt;/*! @license
|
|
1082
|
+
* Shaka Player
|
|
1083
|
+
* Copyright 2016 Google LLC
|
|
1084
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1085
|
+
*/var Qt=class Qt{constructor(){l(this,"cea608DataArray_");l(this,"cea708DataArray_");l(this,"dtvccPacketBuilder_");l(this,"badFrames_");l(this,"cea608ModeToStream_");l(this,"currentField1Channel_");l(this,"currentField2Channel_");l(this,"serviceNumberToService_");l(this,"waitingForFirstPacket_");l(this,"streams_");this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_=new $s,this.badFrames_=0,this.cea608ModeToStream_=new Map([["CC1",new ji(0,0)],["CC2",new ji(0,1)],["CC3",new ji(1,0)],["CC4",new ji(1,1)]]),this.currentField1Channel_=0,this.currentField2Channel_=0,this.serviceNumberToService_=new Map,this.waitingForFirstPacket_=!0,this.streams_=new Set,this.reset()}clear(){p.debug("Clearing CEA decoder"),this.badFrames_=0,this.cea608DataArray_=[],this.cea708DataArray_=[],this.dtvccPacketBuilder_.clear(),this.reset();for(let e of this.serviceNumberToService_.values())e.clear()}reset(){p.debug("Resetting CEA decoder"),this.currentField1Channel_=0,this.currentField2Channel_=0;for(let e of this.cea608ModeToStream_.values())e.reset();this.waitingForFirstPacket_=!0}extract(e,t){if(this.waitingForFirstPacket_){p.debug("Setting first pts value to",t);for(let n of this.cea608ModeToStream_.values())n.firstPts(t);this.waitingForFirstPacket_=!1}let i=new Et(e,Et.Endianness.BIG_ENDIAN);if(i.getLength()<Qt.MIN_LENGTH||i.readUint8()!==Qt.USA_COUNTRY_CODE||i.readUint16()!==Qt.ATSC_PROVIDER_CODE||i.readUint32()!==Qt.ATSC1_USER_IDENTIFIER||i.readUint8()!==3)return;let r=i.readUint8();if((r&64)===0)return;let s=r&31;i.skip(1);for(let n=0;n<s;n++){let a=i.readUint8(),o=(a&4)>>2,c=i.readUint8(),d=i.readUint8();if(o){let u=a&3;u===Qt.NTSC_CC_FIELD_1||u===Qt.NTSC_CC_FIELD_2?this.cea608DataArray_.push({pts:t,type:u,ccData1:c,ccData2:d,order:this.cea608DataArray_.length}):(this.cea708DataArray_.push({pts:t,type:u,value:c,order:this.cea708DataArray_.length}),this.cea708DataArray_.push({pts:t,type:$s.DTVCC_PACKET_DATA,value:d,order:this.cea708DataArray_.length}))}}}extractRaw608(e,t){for(let i=0;i+1<e.length;i+=2){let r=e[i],s=e[i+1];this.cea608DataArray_.push({pts:t,type:Qt.NTSC_CC_FIELD_1,ccData1:r,ccData2:s,order:this.cea608DataArray_.length})}}decode(){let e=[],t=(r,s)=>r.pts-s.pts||r.order-s.order;this.cea608DataArray_.sort(t),this.cea708DataArray_.sort(t);for(let r of this.cea608DataArray_){let s=this.decodeCea608_(r);s&&e.push(s)}for(let r of this.cea708DataArray_)this.dtvccPacketBuilder_.addByte(r);let i=this.dtvccPacketBuilder_.getBuiltPackets();for(let r of i){let s=this.decodeCea708_(r);e.push(...s)}return this.dtvccPacketBuilder_.clearBuiltPackets(),this.cea608DataArray_=[],this.cea708DataArray_=[],e}decodeCea608_(e){let t=e.type;if(ji.isControlCode(e.ccData1)){let a=e.ccData1>>3&1;t===0?this.currentField1Channel_=a:this.currentField2Channel_=a}let i=t?this.currentField2Channel_:this.currentField1Channel_,r=Ye.getCea608StreamName(t,i),s=this.cea608ModeToStream_.get(r);if(e.ccData1===255&&e.ccData2===255||!e.ccData1&&!e.ccData2||!this.isOddParity_(e.ccData1)||!this.isOddParity_(e.ccData2))return++this.badFrames_>=45&&this.reset(),null;if(this.badFrames_=0,e.ccData1&=127,e.ccData2&=127,ji.isXdsControlCode(e.ccData1)||!e.ccData1&&!e.ccData2)return null;let n=null;return ji.isControlCode(e.ccData1)?(this.streams_.add(r),n=s.handleControlCode(e)):s.handleBasicNorthAmericanChar(e.ccData1,e.ccData2,e.pts),n}decodeCea708_(e){let t=[];try{for(;e.hasMoreData();){let i=e.readByte().value,r=(i&224)>>5,s=i&31;if(r===7&&s!=0&&(r=e.readByte().value&63),r!=0){this.streams_.add("svc"+r);let n=this.serviceNumberToService_.getOrInsertComputed(r,o=>new La(o)),a=e.getPosition();for(;e.getPosition()-a<s;){let o=n.handleCea708ControlCode(e);t.push(...o)}}}}catch(i){if(i instanceof h&&i.code===h.Code.BUFFER_READ_OUT_OF_BOUNDS)p.warnOnce("CEA708_INVALID_DATA","Buffer read out of bounds / invalid CEA-708 Data.");else throw i}return t}isOddParity_(e){let t=0;for(;e;)t^=e&1,e>>=1;return t===1}getStreams(){return Array.from(this.streams_)}};l(Qt,"ATSC_PROVIDER_CODE",49),l(Qt,"ATSC1_USER_IDENTIFIER",1195456820),l(Qt,"NTSC_CC_FIELD_1",0),l(Qt,"NTSC_CC_FIELD_2",1),l(Qt,"USA_COUNTRY_CODE",181),l(Qt,"MIN_LENGTH",8);var Na=Qt;Rt.registerDecoder(()=>new Na);/*! @license
|
|
1086
|
+
* Shaka Player
|
|
1087
|
+
* Copyright 2016 Google LLC
|
|
1088
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1089
|
+
*/var hs=class{process(e){let t=[],i=ne.removeEmulationPreventionBytes(e),r=0;for(;r<i.length;){let s=0;for(;i[r]==255;)s+=255,r++;s+=i[r++];let n=0;for(;i[r]==255;)n+=255,r++;n+=i[r++],s==4&&t.push(i.subarray(r,r+n)),r+=n}return t}};/*! @license
|
|
1090
|
+
* Shaka Player
|
|
1091
|
+
* Copyright 2016 Google LLC
|
|
1092
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1093
|
+
*/var Yi=class Yi{constructor(){l(this,"seiProcessor_");l(this,"trackIdToTimescale_");l(this,"defaultSampleDuration_");l(this,"defaultSampleSize_");l(this,"c608TrackId_");l(this,"bitstreamFormat_");this.seiProcessor_=new hs,this.trackIdToTimescale_=new Map,this.defaultSampleDuration_=0,this.defaultSampleSize_=0,this.c608TrackId_=null,this.bitstreamFormat_=Yi.BitstreamFormat.UNKNOWN}init(e){let t=Yi.BitstreamFormat,i=[],r=[],s=null,n=a=>this.setBitstreamFormat_(a.name);if(new F().boxes([...F.SAMPLE_TABLE_PATH,"mvex"],F.children).fullBox("trex",a=>{let o=pe.parseTREX(a.reader);this.defaultSampleDuration_=o.defaultSampleDuration,this.defaultSampleSize_=o.defaultSampleSize}).fullBox("tkhd",a=>{v.assert(a.version!=null,"TKHD is a full box and should have a valid version.");let o=pe.parseTKHD(a.reader,a.version);s=o.trackId,i.push(o.trackId)}).fullBox("mdhd",a=>{v.assert(a.version!=null,"MDHD is a full box and should have a valid version.");let o=pe.parseMDHD(a.reader,a.version);r.push(o.timescale)}).fullBox("stsd",F.sampleDescription).boxes(F.AVC_HEVC_VVC_DV,n).box("encv",F.visualSampleEntry).box("sinf",F.children).box("frma",a=>{let{codec:o}=pe.parseFRMA(a.reader);this.setBitstreamFormat_(o)}).box("c608",a=>{this.bitstreamFormat_=Yi.BitstreamFormat.C608_TRACK,this.c608TrackId_=s}).parse(e,!0,!0),!i.length||!r.length||i.length!=r.length)throw new h(h.Severity.CRITICAL,h.Category.TEXT,h.Code.INVALID_MP4_CEA);this.bitstreamFormat_==t.UNKNOWN&&p.alwaysWarn("Unable to determine bitstream format for CEA parsing!"),i.forEach((a,o)=>{this.trackIdToTimescale_.set(a,r[o])})}parse(e){let t=Yi.BitstreamFormat;if(this.bitstreamFormat_==t.UNKNOWN)return[];let i=[],r=0,s=[];return new F().box("moof",n=>{r=n.start,s=[],F.children(n)}).box("traf",n=>{s.push({trackId:null,baseMediaDecodeTime:null,defaultSampleDuration:this.defaultSampleDuration_,defaultSampleSize:this.defaultSampleSize_,parsedTRUNs:[],timescale:Ye.DEFAULT_TIMESCALE_VALUE}),F.children(n)}).fullBox("trun",n=>{v.assert(n.version!=null&&n.flags!=null,"TRUN is a full box and should have a valid version & flags.");let a=s[s.length-1],o=pe.parseTRUN(n.reader,n.version,n.flags);a.parsedTRUNs.push(o)}).fullBox("tfhd",n=>{v.assert(n.flags!=null,"TFHD is a full box and should have valid flags.");let a=s[s.length-1],o=pe.parseTFHD(n.reader,n.flags);a.trackId=o.trackId,a.defaultSampleDuration=o.defaultSampleDuration||this.defaultSampleDuration_,a.defaultSampleSize=o.defaultSampleSize||this.defaultSampleSize_;let c=o.trackId;this.trackIdToTimescale_.has(c)&&(a.timescale=this.trackIdToTimescale_.get(c))}).fullBox("tfdt",n=>{v.assert(n.version!=null,"TFDT is a full box and should have a valid version.");let a=s[s.length-1],o=pe.parseTFDTInaccurate(n.reader,n.version);a.baseMediaDecodeTime=o.baseMediaDecodeTime}).box("mdat",n=>{let a=r-n.start-8,o=n.reader.getPosition();for(let c of s)if(!(this.bitstreamFormat_==t.C608_TRACK&&c.trackId!==this.c608TrackId_)){if(c.baseMediaDecodeTime===null){p.alwaysWarn("Unable to find base media decode time for CEA captions!");continue}n.reader.seek(o),this.bitstreamFormat_===t.C608_TRACK?this.parseC608Mdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i):this.parseMdat_(n.reader,c.baseMediaDecodeTime,c.timescale,c.defaultSampleDuration,c.defaultSampleSize,a,c.parsedTRUNs,i)}}).parse(e,!1,!0),i}parseMdat_(e,t,i,r,s,n,a,o){let c=Yi.BitstreamFormat;v.assert(this.bitstreamFormat_!=c.UNKNOWN,"Bitstream format should have been checked before now!");let d=t;for(let u of a){u.dataOffset!=null&&e.seek(n+u.dataOffset);for(let m of u.sampleData){let f=m.sampleCompositionTimeOffset||0,g=(d+f)/i,_=m.sampleSize||s;for(;_>0&&e.hasMoreData();){let T=e.readUint32(),S=e.readUint8(),b=null,E=!1,C=1;switch(this.bitstreamFormat_){case c.H264:b=S&31,E=Ye.isSeiNaluType(Ye.CodecFamily.H264,b);break;case c.H265:case c.H266:{C=2,e.skip(1),b=S>>1&63;let A=this.bitstreamFormat_===c.H265?Ye.CodecFamily.H265:Ye.CodecFamily.H266;E=Ye.isSeiNaluType(A,b);break}default:return}if(E){let A=e.readBytes(T-C,!1);for(let w of this.seiProcessor_.process(A))o.push({packet:w,pts:g,format:Rt.CaptionPacketFormat.SEI})}else try{e.skip(T-C)}catch(A){return}_-=T+4}d+=m.sampleDuration||r}}}parseC608Mdat_(e,t,i,r,s,n,a,o){let c=t;for(let d of a){d.dataOffset!=null&&e.seek(n+d.dataOffset);for(let u of d.sampleData){let m=u.sampleSize||s,f=c/i,g=e.readBytes(m,!1);o.push({packet:g,pts:f,format:Rt.CaptionPacketFormat.RAW608}),c+=u.sampleDuration||r}}}setBitstreamFormat_(e){Yi.CodecBitstreamMap_.has(e)&&(this.bitstreamFormat_=Yi.CodecBitstreamMap_.get(e))}};l(Yi,"BitstreamFormat",{UNKNOWN:0,H264:1,H265:2,H266:3,C608_TRACK:4});var Ot=Yi;Ot.CodecBitstreamMap_=new Map().set("avc1",Ot.BitstreamFormat.H264).set("avc3",Ot.BitstreamFormat.H264).set("dvav",Ot.BitstreamFormat.H264).set("dva1",Ot.BitstreamFormat.H264).set("hev1",Ot.BitstreamFormat.H265).set("hvc1",Ot.BitstreamFormat.H265).set("dvh1",Ot.BitstreamFormat.H265).set("dvhe",Ot.BitstreamFormat.H265).set("vvc1",Ot.BitstreamFormat.H266).set("vvi1",Ot.BitstreamFormat.H266).set("dvc1",Ot.BitstreamFormat.H266).set("dvi1",Ot.BitstreamFormat.H266);Rt.registerParser("video/mp4",()=>new Ot);/*! @license
|
|
1094
|
+
* Shaka Player
|
|
1095
|
+
* Copyright 2016 Google LLC
|
|
1096
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1097
|
+
*/var Oa=class{constructor(){l(this,"seiProcessor_");l(this,"tsParser_");this.seiProcessor_=new hs,this.tsParser_=null}init(e){}parse(e){this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt;let t=[],i=D.toUint8(e);if(!pt.probe(i))return t;let r=this.tsParser_.parse(i),s=r.getCodecs(),n=r.getVideoNalus(),a=null;switch(s.video){case"avc":a=Ye.CodecFamily.H264;break;case"hvc":a=Ye.CodecFamily.H265;break}if(a==null)return t;for(let o of n)if(o.time!=null&&Ye.isSeiNaluType(a,o.type))for(let c of this.seiProcessor_.process(o.data))t.push({packet:c,pts:o.time,format:Rt.CaptionPacketFormat.SEI});return t}};Rt.registerParser("video/mp2t",()=>new Oa);/*! @license
|
|
1098
|
+
* Shaka Player
|
|
1099
|
+
* Copyright 2016 Google LLC
|
|
1100
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1101
|
+
*/var Ni=class Ni{static parseHeader(e,t){let i=Ni.getHeaderLength(e,t);if(t+i<=e.length){let r=Ni.getFullFrameLength(e,t)-i;if(r>0)return{headerLength:i,frameLength:r}}return null}static parseInfo(e,t){let i=[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350],r=(e[t+2]&60)>>>2;if(r>i.length-1)return null;let s=((e[t+2]&192)>>>6)+1,n=(e[t+2]&1)<<2;return n|=(e[t+3]&192)>>>6,{sampleRate:i[r],channelCount:n,codec:"mp4a.40."+s}}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&246)===240}static getHeaderLength(e,t){return e[t+1]&1?7:9}static getFullFrameLength(e,t){return(e[t+3]&3)<<11|e[t+4]<<3|(e[t+5]&224)>>>5}static isHeader(e,t){return t+1<e.length&&Ni.isHeaderPattern(e,t)}static probe(e,t){if(Ni.isHeader(e,t)){let i=Ni.getHeaderLength(e,t);if(t+i>=e.length)return!1;let r=Ni.getFullFrameLength(e,t);if(r<=i)return!1;let s=t+r;return s===e.length||Ni.isHeader(e,s)}return!1}static getFrameDuration(e){return Ni.AAC_SAMPLES_PER_FRAME*9e4/e}static getSilentFrame(e,t){switch(e){case"mp4a.40.2":if(t===1)return new Uint8Array([0,200,0,128,35,128]);if(t===2)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(t===3)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(t===4)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(t===5)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(t===6)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224]);break;default:if(t===1)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===2)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(t===3)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);break}return null}};l(Ni,"AAC_SAMPLES_PER_FRAME",1024);var Bt=Ni;/*! @license
|
|
1102
|
+
* Shaka Player
|
|
1103
|
+
* Copyright 2016 Google LLC
|
|
1104
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1105
|
+
*/var li=class{constructor(e){l(this,"originalMimeType_");l(this,"frameIndex");l(this,"initSegments");l(this,"lastInitSegment_");this.originalMimeType_=e,this.frameIndex=0,this.initSegments=new Map,this.lastInitSegment_=null}destroy(){this.initSegments.clear()}getOriginalMimeType(){return this.originalMimeType_}getId3Timestamp(e,t){let i=It.getID3Frames(e);if(i.length){let r=i.find(s=>s.description==="com.apple.streaming.transportStreamTimestamp");if(r)return r.data}return t}packageSegment(e,t,i){let r=t.id+"_"+i.discontinuitySequence,s=this.initSegments.getOrInsertComputed(r,()=>e.initSegment()),n=this.lastInitSegment_!==s,a=e.segmentData();return this.lastInitSegment_=s,this.frameIndex++,{data:a,init:n?s:null}}};/*! @license
|
|
1106
|
+
* Shaka Player
|
|
1107
|
+
* Copyright 2016 Google LLC
|
|
1108
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1109
|
+
*/var $e=class{};$e.AUDIO_SAMPLE_FLAGS=Object.freeze({isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:2,isNonSync:0});$e.VIDEO_KEYFRAME_FLAGS=Object.freeze({isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:2,isNonSync:0});$e.VIDEO_NON_KEYFRAME_FLAGS=Object.freeze({isLeading:0,isDependedOn:0,hasRedundancy:0,degradPrio:0,dependsOn:1,isNonSync:1});/*! @license
|
|
1110
|
+
* Shaka Player
|
|
1111
|
+
* Copyright 2016 Google LLC
|
|
1112
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1113
|
+
*/var ms=class extends li{isSupported(e,t){if(!this.isAacContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAacContainer_(e){return e.toLowerCase().split(";")[0]=="audio/aac"}convertCodecs(e,t){return this.isAacContainer_(t)?`audio/mp4; codecs="${N.getCodecs(t)||"mp4a.40.2"}"`:t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Bt.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=Bt.parseInfo(s,a);if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=c.sampleRate,t.channelsCount=c.channelCount;let d=[];for(;a<s.length;){let _=Bt.parseHeader(s,a);if(!_)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let T=_.headerLength+_.frameLength;if(a+T<=s.length){let S=s.subarray(a+_.headerLength,a+T);d.push({data:S,size:_.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}a+=T}let u=c.sampleRate,m=Math.floor(o*u/1e3),f={id:t.id,type:R.ContentType.AUDIO,codecs:c.codec,timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:d},stream:t},g=new xe([f]);return Promise.resolve(this.packageSegment(g,t,i))}};Oe.registerTransmuxer("audio/aac",()=>new ms("audio/aac"),Oe.PluginPriority.FALLBACK);/*! @license
|
|
1114
|
+
* Shaka Player
|
|
1115
|
+
* Copyright 2016 Google LLC
|
|
1116
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1117
|
+
*/var Oi=class{static parseFrame(e,t,i){if(t+8>e.length||e[t]!==11||e[t+1]!==119)return!1;let r=e[t+4]>>6;if(r>=3)return!1;let s=[48e3,44100,32e3],n=e[t+4]&63,o=[64,69,96,64,70,96,80,87,120,80,88,120,96,104,144,96,105,144,112,121,168,112,122,168,128,139,192,128,140,192,160,174,240,160,175,240,192,208,288,192,209,288,224,243,336,224,244,336,256,278,384,256,279,384,320,348,480,320,349,480,384,417,576,384,418,576,448,487,672,448,488,672,512,557,768,512,558,768,640,696,960,640,697,960,768,835,1152,768,836,1152,896,975,1344,896,976,1344,1024,1114,1536,1024,1115,1536,1152,1253,1728,1152,1254,1728,1280,1393,1920,1280,1394,1920][n*3+r]*2;if(t+o>e.length)return!1;let c=e[t+6]>>5,d=0;c===2?d+=2:(c&1&&c!==1&&(d+=2),c&4&&(d+=2));let u=(e[t+6]<<8|e[t+7])>>12-d&1,m=[2,1,2,3,3,4,4,5],f=e[t+5]>>3,g=e[t+5]&7,_=new Uint8Array([r<<6|f<<1|g>>2,(g&3)<<6|c<<3|u<<2|n>>4,n<<4&224]);return i.sampleRate=s[r],i.channelCount=m[c]+u,i.audioConfig=_,i.frameLength=o,!0}static probe(e,t){if(e[t]===11&&e[t+1]===119){let i=0,r=5;t+=r;let s=null,n=null,a=null;for(;r>0;){a=e[t];let o=Math.min(r,8),c=8-o;n=4278190080>>>24+c<<c,s=(a&n)>>c,i=i?i<<o|s:s,t+=1,r-=o}if(i<16)return!0}return!1}};l(Oi,"AC3_SAMPLES_PER_FRAME",1536);/*! @license
|
|
1118
|
+
* Shaka Player
|
|
1119
|
+
* Copyright 2016 Google LLC
|
|
1120
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1121
|
+
*/var Ba=class extends li{isSupported(e,t){if(!this.isAc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isAc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ac3"}convertCodecs(e,t){return this.isAc3Container_(t)?j.getDevice().requiresEC3InitSegments()?'audio/mp4; codecs="ec-3"':'audio/mp4; codecs="ac-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!Oi.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!Oi.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:Oi.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/ac3",()=>new Ba("audio/ac3"),Oe.PluginPriority.FALLBACK);/*! @license
|
|
1122
|
+
* Shaka Player
|
|
1123
|
+
* Copyright 2016 Google LLC
|
|
1124
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1125
|
+
*/var Fa=class Fa{static parseFrame(e,t,i){if(t+8>e.length||!Fa.probe(e,t))return!1;let r=new ii(e.subarray(t+2));r.skipBits(2),r.skipBits(3);let s=r.readBits(11)+1<<1,n=r.readBits(2),a=null,o=null;n==3?(n=r.readBits(2),a=[24e3,22060,16e3][n],o=3):(a=[48e3,44100,32e3][n],o=r.readBits(2));let c=r.readBits(3),d=r.readBits(1),u=r.readBits(5);if(t+s>e.byteLength)return!1;let m=[2,1,2,3,3,4,4,5],g=[1,2,3,6][o],_=Math.floor(s*a/(g*16)),T=new Uint8Array([(_&8160)>>5,(_&31)<<3,a<<6|u<<1|0,0|c<<1|d<<0,0]);return i.sampleRate=a,i.channelCount=m[c]+d,i.audioConfig=T,i.frameLength=s,!0}static probe(e,t){return(e[t]<<8|e[t+1]<<0)===2935}};l(Fa,"EC3_SAMPLES_PER_FRAME",1536);var $i=Fa;/*! @license
|
|
1126
|
+
* Shaka Player
|
|
1127
|
+
* Copyright 2016 Google LLC
|
|
1128
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1129
|
+
*/var Va=class extends li{isSupported(e,t){if(!this.isEc3Container_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isEc3Container_(e){return e.toLowerCase().split(";")[0]=="audio/ec3"}convertCodecs(e,t){return this.isEc3Container_(t)?'audio/mp4; codecs="ec-3"':t}transmux(e,t,i,r){let s=D.toUint8(e),n=It.getID3Data(s),a=n.length;for(;a<s.length&&!$i.probe(s,a);a++);let o=this.getId3Timestamp(n,i.endTime*1e3),c=0,d=new Uint8Array([]),u=[],m={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(;a<s.length;){if(!$i.parseFrame(s,a,m))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));t.audioSamplingRate=m.sampleRate,t.channelsCount=m.channelCount,c=m.sampleRate,d=m.audioConfig;let S=s.subarray(a,a+m.frameLength);u.push({data:S,size:m.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=m.frameLength}let f=Math.floor(o*c/1e3),g={id:t.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:c,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:u},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/ec3",()=>new Va("audio/ec3"),Oe.PluginPriority.FALLBACK);/*! @license
|
|
1130
|
+
* Shaka Player
|
|
1131
|
+
* Copyright 2016 Google LLC
|
|
1132
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1133
|
+
*/var Ct=class Ct{static parseInfo(e){if(!e.length)return null;let t=e.find(x=>x.type==Ct.NALU_TYPE_SPS_),i=e.find(x=>x.type==Ct.NALU_TYPE_PPS_);if(!t||!i)return null;let r=new ii(t.data),s=r.readUnsignedByte();if(r.readUnsignedByte(),r.readUnsignedByte(),r.skipExpGolomb(),Ct.PROFILES_WITH_OPTIONAL_SPS_DATA_.includes(s)){let x=r.readUnsignedExpGolomb();if(x===3&&r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb(),r.skipBits(1),r.readBoolean()){let k=x!==3?8:12;for(let L=0;L<k;L++)r.readBoolean()&&(L<6?r.skipScalingList(16):r.skipScalingList(64))}}r.skipExpGolomb();let n=r.readUnsignedExpGolomb();if(n===0)r.readUnsignedExpGolomb();else if(n===1){r.skipBits(1),r.skipExpGolomb(),r.skipExpGolomb();let x=r.readUnsignedExpGolomb();for(let k=0;k<x;k++)r.skipExpGolomb()}r.skipExpGolomb(),r.skipBits(1);let a=r.readUnsignedExpGolomb(),o=r.readUnsignedExpGolomb(),c=r.readBits(1);c===0&&r.skipBits(1),r.skipBits(1);let d=0,u=0,m=0,f=0;r.readBoolean()&&(d=r.readUnsignedExpGolomb(),u=r.readUnsignedExpGolomb(),m=r.readUnsignedExpGolomb(),f=r.readUnsignedExpGolomb());let g=1,_=1;if(r.readBoolean()&&r.readBoolean()){let x=r.readUnsignedByte(),k=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],L=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];x>0&&x<=16?(g=k[x-1],_=L[x-1]):x===255&&(g=r.readBits(16),_=r.readBits(16))}let T=(2-c)*(o+1)*16-m*2-f*2,S=(a+1)*16-d*2-u*2,b=t.fullData,E=b.byteLength,C=i.fullData,A=C.byteLength,w=0,M=new Uint8Array(11+E+A);return M[w++]=1,M[w++]=b[1],M[w++]=b[2],M[w++]=b[3],M[w++]=255,M[w++]=225,M[w++]=E>>>8&255,M[w++]=E&255,M.set(b,w),w+=E,M[w++]=1,M[w++]=A>>>8&255,M[w++]=A&255,M.set(C,w),{height:T,width:S,videoConfig:M,hSpacing:g,vSpacing:_}}static getVideoSamples(e){let t=[],i=null,r=!1,s=()=>{if(!i||!i.nalus.length||!i.frame)return;let o=i.nalus.length*4;for(let u of i.nalus)o+=u.fullData.byteLength;let c=new Uint8Array(o),d=0;for(let u of i.nalus){let m=u.fullData.byteLength;c[d]=m>>24&255,c[d+1]=m>>16&255,c[d+2]=m>>8&255,c[d+3]=m&255,c.set(u.fullData,d+4),d+=4+m}i.data=c,t.push(i)},n=new Uint8Array(0),a=o=>{i={data:n,frame:!1,isKeyframe:!1,pts:o.pts,dts:o.dts,nalus:[]}};for(let o=0;o<e.length;o++){let c=e[o],d=c.nalus,u=!1;i&&d.length&&!r&&(s(),a(c));for(let m of c.nalus){let f=!1;switch(m.type){case Ct.NALU_TYPE_NDR_:{let g=!1;f=!0;let _=m.data;if(u&&_.length>4){let T=new ii(_).readSliceType();(T===2||T===4||T===7||T===9)&&(g=!0)}g&&i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=g;break}case Ct.NALU_TYPE_IDR_:{f=!0,i&&i.frame&&!i.isKeyframe&&(s(),i=null),i||a(c),i.frame=!0,i.isKeyframe=!0;break}case Ct.NALU_TYPE_SEI_:f=!0;break;case Ct.NALU_TYPE_SPS_:f=!0,u=!0;break;case Ct.NALU_TYPE_PPS_:f=!0;break;case Ct.NALU_TYPE_AUD_:f=!0,r=!0,i&&i.frame&&(s(),i=null),i||a(c);break;case Ct.NALU_TYPE_FILLER_DATA_:f=!0;break;default:f=!1;break}i&&f&&i.nalus.push(m)}}return s(),t}static isKeyframe(e){return e.some(t=>t.type===Ct.NALU_TYPE_IDR_)}};l(Ct,"NALU_TYPE_NDR_",1),l(Ct,"NALU_TYPE_IDR_",5),l(Ct,"NALU_TYPE_SEI_",6),l(Ct,"NALU_TYPE_SPS_",7),l(Ct,"NALU_TYPE_PPS_",8),l(Ct,"NALU_TYPE_AUD_",9),l(Ct,"NALU_TYPE_FILLER_DATA_",12),l(Ct,"PROFILES_WITH_OPTIONAL_SPS_DATA_",[100,110,122,244,44,83,86,118,128,138,139,134]);var rr=Ct;/*! @license
|
|
1134
|
+
* Shaka Player
|
|
1135
|
+
* Copyright 2016 Google LLC
|
|
1136
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1137
|
+
*/var et=class et{static parseInfo(e){if(!e.length)return null;let t=e.find(d=>d.type==et.NALU_TYPE_VPS_),i=e.find(d=>d.type==et.NALU_TYPE_SPS_),r=e.find(d=>d.type==et.NALU_TYPE_PPS_);if(!t||!i||!r)return null;let s=et.parseVPS_(t.fullData),n=et.parseSPS_(i.fullData),a=et.parsePPS_(r.fullData),o={numTemporalLayers:s.numTemporalLayers,temporalIdNested:s.temporalIdNested,generalProfileSpace:n.generalProfileSpace,generalTierFlag:n.generalTierFlag,generalLevelIdc:n.generalLevelIdc,generalProfileIdc:n.generalProfileIdc,generalProfileCompatibilityFlags1:n.generalProfileCompatibilityFlags1,generalProfileCompatibilityFlags2:n.generalProfileCompatibilityFlags2,generalProfileCompatibilityFlags3:n.generalProfileCompatibilityFlags3,generalProfileCompatibilityFlags4:n.generalProfileCompatibilityFlags4,generalConstraintIndicatorFlags1:n.generalConstraintIndicatorFlags1,generalConstraintIndicatorFlags2:n.generalConstraintIndicatorFlags2,generalConstraintIndicatorFlags3:n.generalConstraintIndicatorFlags3,generalConstraintIndicatorFlags4:n.generalConstraintIndicatorFlags4,generalConstraintIndicatorFlags5:n.generalConstraintIndicatorFlags5,generalConstraintIndicatorFlags6:n.generalConstraintIndicatorFlags6,minSpatialSegmentationIdc:n.minSpatialSegmentationIdc,chromaFormatIdc:n.chromaFormatIdc,bitDepthLumaMinus8:n.bitDepthLumaMinus8,bitDepthChromaMinus8:n.bitDepthChromaMinus8,parallelismType:a.parallelismType,frameRateFps:n.frameRateFps,frameRateFixed:n.frameRateFixed},c=et.getVideoConfiguration_(t.fullData,i.fullData,r.fullData,o);return{height:n.height,width:n.width,videoConfig:c,hSpacing:n.sarWidth,vSpacing:n.sarHeight}}static parseVPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readBits(4),t.readBits(2),t.readBits(6);let i=t.readBits(3),r=t.readBoolean();return{numTemporalLayers:i+1,temporalIdNested:r}}static parseSPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte();let i=0,r=0,s=0,n=0;t.readBits(4);let a=t.readBits(3);t.readBoolean();let o=t.readBits(2),c=t.readBits(1),d=t.readBits(5),u=t.readUnsignedByte(),m=t.readUnsignedByte(),f=t.readUnsignedByte(),g=t.readUnsignedByte(),_=t.readUnsignedByte(),T=t.readUnsignedByte(),S=t.readUnsignedByte(),b=t.readUnsignedByte(),E=t.readUnsignedByte(),C=t.readUnsignedByte(),A=t.readUnsignedByte(),w=[],M=[];for(let Qe=0;Qe<a;Qe++)w.push(t.readBoolean()),M.push(t.readBoolean());if(a>0)for(let Qe=a;Qe<8;Qe++)t.readBits(2);for(let Qe=0;Qe<a;Qe++)w[Qe]&&t.readBits(88),M[Qe]&&t.readUnsignedByte();t.readUnsignedExpGolomb();let x=t.readUnsignedExpGolomb();x==3&&t.readBits(1);let k=t.readUnsignedExpGolomb(),L=t.readUnsignedExpGolomb();t.readBoolean()&&(i+=t.readUnsignedExpGolomb(),r+=t.readUnsignedExpGolomb(),s+=t.readUnsignedExpGolomb(),n+=t.readUnsignedExpGolomb());let ee=t.readUnsignedExpGolomb(),oe=t.readUnsignedExpGolomb(),le=t.readUnsignedExpGolomb();if(t.readBoolean())for(let Qe=0;Qe<=a;Qe++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();else t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb();if(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean()&&t.readBoolean())for(let Ft=0;Ft<4;Ft++)for(let fi=0;fi<(Ft===3?2:6);fi++)if(!t.readBoolean())t.readUnsignedExpGolomb();else{let Ei=Math.min(64,1<<4+(Ft<<1));Ft>1&&t.readExpGolomb();for(let qr=0;qr<Ei;qr++)t.readExpGolomb()}t.readBoolean(),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean());let ce=t.readUnsignedExpGolomb(),W=0;for(let Qe=0;Qe<ce;Qe++){let Ft=!1;if(Qe!==0&&(Ft=t.readBoolean()),Ft){Qe===ce&&t.readUnsignedExpGolomb(),t.readBoolean(),t.readUnsignedExpGolomb();let fi=0;for(let Ar=0;Ar<=W;Ar++){let Ei=t.readBoolean(),qr=!1;Ei||(qr=t.readBoolean()),(Ei||qr)&&fi++}W=fi}else{let fi=t.readUnsignedExpGolomb(),Ar=t.readUnsignedExpGolomb();W=fi+Ar;for(let Ei=0;Ei<fi;Ei++)t.readUnsignedExpGolomb(),t.readBoolean();for(let Ei=0;Ei<Ar;Ei++)t.readUnsignedExpGolomb(),t.readBoolean()}}if(t.readBoolean()){let Qe=t.readUnsignedExpGolomb();for(let Ft=0;Ft<Qe;Ft++){for(let fi=0;fi<le+4;fi++)t.readBits(1);t.readBits(1)}}let ge=!1,Y=1,X=1,O=!0,$=1,Ie=0,tt=0;if(t.readBoolean(),t.readBoolean(),t.readBoolean()){if(t.readBoolean()){let Ir=t.readUnsignedByte(),mo=[1,12,10,16,40,24,20,32,80,18,15,64,160,4,3,2],po=[1,11,11,11,33,11,11,11,33,11,11,33,99,3,2,1];Ir>0&&Ir<=16?(Y=mo[Ir-1],X=po[Ir-1]):Ir===255&&(Y=t.readBits(16),X=t.readBits(16))}if(t.readBoolean()&&t.readBoolean(),t.readBoolean()&&(t.readBits(3),t.readBoolean(),t.readBoolean()&&(t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedByte())),t.readBoolean()&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb()),t.readBoolean(),t.readBoolean(),t.readBoolean(),ge=t.readBoolean(),ge&&(t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb(),t.skipExpGolomb()),t.readBoolean()&&($=t.readBits(32),Ie=t.readBits(32),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readBoolean())){let Wa=!1,za=!1,gs=!1;Wa=t.readBoolean(),za=t.readBoolean(),(Wa||za)&&(gs=t.readBoolean(),gs&&(t.readUnsignedByte(),t.readBits(5),t.readBoolean(),t.readBits(5)),t.readBits(4),t.readBits(4),gs&&t.readBits(4),t.readBits(5),t.readBits(5),t.readBits(5));for(let fo=0;fo<=a;fo++){O=t.readBoolean();let go=!0,Xa=1;O||(go=t.readBoolean());let _o=!1;if(go?t.readUnsignedExpGolomb():_o=t.readBoolean(),_o||(Xa=t.readUnsignedExpGolomb()+1),Wa){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}if(za){for(let _s=0;_s<Xa;_s++)t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),gs&&(t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb());t.readBoolean()}}}t.readBoolean()&&(t.readBoolean(),t.readBoolean(),t.readBoolean(),tt=t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb())}let bt=x===1||x===2?2:1,yt=x===1?2:1,xt=k-(i+r)*bt,mt=L-(s+n)*yt;return{generalLevelIdc:A,generalProfileSpace:o,generalTierFlag:c,generalProfileIdc:d,generalProfileCompatibilityFlags1:u,generalProfileCompatibilityFlags2:m,generalProfileCompatibilityFlags3:f,generalProfileCompatibilityFlags4:g,generalConstraintIndicatorFlags1:_,generalConstraintIndicatorFlags2:T,generalConstraintIndicatorFlags3:S,generalConstraintIndicatorFlags4:b,generalConstraintIndicatorFlags5:E,generalConstraintIndicatorFlags6:C,minSpatialSegmentationIdc:tt,chromaFormatIdc:x,bitDepthLumaMinus8:ee,bitDepthChromaMinus8:oe,width:xt,height:mt,sarWidth:Y,sarHeight:X,frameRateFps:Ie/$,frameRateFixed:O}}static parsePPS_(e){let t=new ii(e,!0);t.readUnsignedByte(),t.readUnsignedByte(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBits(3),t.readBoolean(),t.readBoolean(),t.readUnsignedExpGolomb(),t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean()&&t.readUnsignedExpGolomb(),t.readExpGolomb(),t.readExpGolomb(),t.readBoolean(),t.readBoolean(),t.readBoolean(),t.readBoolean();let r=t.readBoolean(),s=t.readBoolean(),n=1;return s&&r?n=0:s?n=3:r&&(n=2),{parallelismType:n}}static getVideoConfiguration_(e,t,i,r){let s=23+(5+e.byteLength)+(5+t.byteLength)+(5+i.byteLength),n=new Uint8Array(s);n[0]=1,n[1]=(r.generalProfileSpace&3)<<6|(r.generalTierFlag?1:0)<<5|r.generalProfileIdc&31,n[2]=r.generalProfileCompatibilityFlags1,n[3]=r.generalProfileCompatibilityFlags2,n[4]=r.generalProfileCompatibilityFlags3,n[5]=r.generalProfileCompatibilityFlags4,n[6]=r.generalConstraintIndicatorFlags1,n[7]=r.generalConstraintIndicatorFlags2,n[8]=r.generalConstraintIndicatorFlags3,n[9]=r.generalConstraintIndicatorFlags4,n[10]=r.generalConstraintIndicatorFlags5,n[11]=r.generalConstraintIndicatorFlags6,n[12]=r.generalLevelIdc,n[13]=240|(r.minSpatialSegmentationIdc&3840)>>8,n[14]=r.minSpatialSegmentationIdc&255,n[15]=252|r.parallelismType&3,n[16]=252|r.chromaFormatIdc&3,n[17]=248|r.bitDepthLumaMinus8&7,n[18]=248|r.bitDepthChromaMinus8&7,n[19]=0,n[20]=parseInt(r.frameRateFps,10),n[21]=((r.frameRateFixed?1:0)&3)<<6|(r.numTemporalLayers&7)<<3|(r.temporalIdNested?1:0)<<2|3,n[22]=3;let a=[e,t,i],o=23,c=a.length-1;for(let d=0;d<a.length;d+=1)n.set(new Uint8Array([32+d|(d===c?128:0),0,1,a[d].byteLength>>8,a[d].byteLength&255]),o),o+=5,n.set(a[d],o),o+=a[d].byteLength;return n}static parseFrame(e,t){let i=!1,r=[],s=0,n=!1;for(let c of e){let d=!1;switch(c.type){case et.NALU_TYPE_TRAIL_N_:case et.NALU_TYPE_TRAIL_R_:{n=!0,d=!0;break}case et.NALU_TYPE_IDR_W_RADL_:case et.NALU_TYPE_IDR_N_LP_:case et.NALU_TYPE_CRA_NUT_:n=!0,d=!0,i=!0;break;case et.NALU_TYPE_VPS_:case et.NALU_TYPE_SPS_:case et.NALU_TYPE_PPS_:d=!0;break;case et.NALU_TYPE_AUD_:d=!0,n=!0;break;case et.NALU_TYPE_SEI_PREFIX_:case et.NALU_TYPE_SEI_SUFFIX_:d=!0;break;default:d=!1;break}n&&d&&(r.push(c.fullData),s+=c.fullData.byteLength)}if(!r.length)return!1;s+=4*r.length;let a=new Uint8Array(s),o=0;for(let c of r){let d=c.byteLength;a[o]=d>>24&255,a[o+1]=d>>16&255,a[o+2]=d>>8&255,a[o+3]=d&255,a.set(c,o+4),o+=d+4}return t.data=a,t.isKeyframe=i,!0}};l(et,"NALU_TYPE_TRAIL_N_",1),l(et,"NALU_TYPE_TRAIL_R_",0),l(et,"NALU_TYPE_IDR_W_RADL_",19),l(et,"NALU_TYPE_IDR_N_LP_",20),l(et,"NALU_TYPE_CRA_NUT_",21),l(et,"NALU_TYPE_VPS_",32),l(et,"NALU_TYPE_SPS_",33),l(et,"NALU_TYPE_PPS_",34),l(et,"NALU_TYPE_AUD_",35),l(et,"NALU_TYPE_SEI_PREFIX_",39),l(et,"NALU_TYPE_SEI_SUFFIX_",40);var sr=et;/*! @license
|
|
1138
|
+
* Shaka Player
|
|
1139
|
+
* Copyright 2016 Google LLC
|
|
1140
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1141
|
+
*/var ps=class ps{static getAudioConfig(e){let t=[];switch(e.channelConfigCode){case 1:case 2:t=[0];break;case 0:t=[255,1,1,0,1];break;case 128:t=[255,2,0,0,1];break;case 3:t=[1,2,1,0,2,1];break;case 4:t=[1,2,2,0,1,2,3];break;case 5:t=[1,3,2,0,4,1,2,3];break;case 6:t=[1,4,2,0,4,1,2,3,5];break;case 7:t=[1,4,2,0,4,1,2,3,5,6];break;case 8:t=[1,5,3,0,6,1,2,3,4,5,7];break;case 130:t=[1,1,2,0,1];break;case 131:t=[1,1,3,0,1,2];break;case 132:t=[1,1,4,0,1,2,3];break;case 133:t=[1,1,5,0,1,2,3,4];break;case 134:t=[1,1,6,0,1,2,3,4,5];break;case 135:t=[1,1,7,0,1,2,3,4,5,6];break;case 136:t=[1,1,8,0,1,2,3,4,5,6,7];break}return new Uint8Array([0,e.channelCount,0,0,e.sampleRate>>>24&255,e.sampleRate>>>17&255,e.sampleRate>>>8&255,e.sampleRate>>>0&255,0,0,...t])}static getPacketSampleCount(e){if(e.length<1)return ps.OPUS_AUDIO_SAMPLE_PER_FRAME;let t=e[0],i=t>>3&31,r=t&3,s=ps.SAMPLES_PER_FRAME_BY_CONFIG_[i],n;if(r===0)n=1;else if(r===1||r===2)n=2;else if(e.length<2||(n=e[1]&63,n===0))return s;return s*n}};l(ps,"SAMPLES_PER_FRAME_BY_CONFIG_",[480,960,1920,2880,480,960,1920,2880,480,960,1920,2880,480,960,480,960,120,240,480,960,120,240,480,960,120,240,480,960,120,240,480,960]),l(ps,"OPUS_AUDIO_SAMPLE_PER_FRAME",960);var Er=ps;/*! @license
|
|
1142
|
+
* Shaka Player
|
|
1143
|
+
* Copyright 2016 Google LLC
|
|
1144
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1145
|
+
*/var nr=class nr extends li{constructor(t){super(t);l(this,"avcInfo_");l(this,"hvcInfo_");this.avcInfo_=null,this.hvcInfo_=null}destroy(){super.destroy(),this.avcInfo_=null,this.hvcInfo_=null}isSupported(t,i){if(!this.isLocContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=N.getCodecs(s),a=N.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=N.getNormalizedCodec(o);if(!nr.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=N.getNormalizedCodec(c);if(!nr.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isLocContainer_(t){return t.toLowerCase().split(";")[0]=="moq/loc"}convertCodecs(t,i){if(this.isLocContainer_(i)){let r=R.ContentType,s=N.getCodecs(i).split(",").map(n=>N.getCorrectAudioCodecs(n,"audio/mp4")).map(N.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t),c=[];try{let u=N.getNormalizedCodec(i.codecs),m;if(n==a.VIDEO){switch(u){case"avc":m=this.getAvcStreamInfo_(o,i,r,s);break;case"hevc":m=this.getHvcStreamInfo_(o,i,s,r);break}m&&c.push(m)}if(n==a.AUDIO){switch(u){case"aac":m=this.getAacStreamInfo_(o,i,s,r);break;case"opus":m=this.getOpusStreamInfo_(o,i,s,r);break}m&&c.push(m)}}catch(u){return Promise.reject(u)}if(!c.length)return Promise.resolve({data:new Uint8Array([]),init:null});let d=new xe(c);return Promise.resolve(this.packageSegment(d,i,r))}extractNalus_(t,i){let r=[],s=i==="hvc",n=s?2:1,a=0;for(;a+4<=t.byteLength;){let o=(t[a]<<24|t[a+1]<<16|t[a+2]<<8|t[a+3])>>>0;a+=4;let c;if(o===1){c=t.byteLength;for(let f=a;f+2<t.byteLength;f++)if(t[f]===0&&t[f+1]===0){if(t[f+2]===1){c=f;break}if(f+3<t.byteLength&&t[f+2]===0&&t[f+3]===1){c=f;break}}}else if(c=a+o,c>t.byteLength)break;if(c<=a)break;let d=t.subarray(a,c),u=s?(d[0]&126)>>1:d[0]&31,m=d.length>n?d.subarray(n):new Uint8Array([]);r.push({type:u,data:m,fullData:d}),a=c}return r}getAvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"avc"),o=rr.parseInfo(a);if(o&&(this.avcInfo_=o,i.height=o.height,i.width=o.width),!this.avcInfo_)return null;let c=rr.isKeyframe(a),d=Math.floor(r.startTime*n),u=Math.floor((r.endTime-r.startTime)*n),m=[{data:t,size:t.byteLength,duration:u,cts:0,flags:c?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:s,mediaConfig:this.avcInfo_.videoConfig,hSpacing:this.avcInfo_.hSpacing,vSpacing:this.avcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:d,samples:m},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=nr.VIDEO_TIMESCALE_,a=this.extractNalus_(t,"hvc"),o=sr.parseInfo(a);if(o&&(this.hvcInfo_=o,i.height=o.height,i.width=o.width),!this.hvcInfo_)return null;let c=Math.floor(s.startTime*n),d=Math.floor((s.endTime-s.startTime)*n),u={data:new Uint8Array(0),isKeyframe:!1};if(!sr.parseFrame(a,u))return null;let f=[{data:u.data,size:u.data.byteLength,duration:d,cts:0,flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS}];return{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:this.hvcInfo_.videoConfig,hSpacing:this.hvcInfo_.hSpacing,vSpacing:this.hvcInfo_.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:c,samples:f},stream:i}}getAacStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:1024,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}];return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}getOpusStreamInfo_(t,i,r,s){v.assert(i.audioSamplingRate,"Must have audioSamplingRate");let n=i.audioSamplingRate,a=Math.floor(s.startTime*n),o=[{data:t,size:t.length,duration:Er.getPacketSampleCount(t),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}],c=new Uint8Array([0,i.channelsCount,0,0,i.audioSamplingRate>>>24&255,i.audioSamplingRate>>>17&255,i.audioSamplingRate>>>8&255,i.audioSamplingRate>>>0&255,0,0,0]);return{id:i.id,type:R.ContentType.AUDIO,codecs:i.codecs,timescale:n,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:a,samples:o},stream:i}}};l(nr,"VIDEO_TIMESCALE_",9e4),l(nr,"SUPPORTED_AUDIO_CODECS_",["aac","opus"]),l(nr,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var Ha=nr;Oe.registerTransmuxer("moq/loc",()=>new Ha("moq/loc"),Oe.PluginPriority.FALLBACK);/*! @license
|
|
1146
|
+
* Shaka Player
|
|
1147
|
+
* Copyright 2016 Google LLC
|
|
1148
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1149
|
+
*/var Jt=class Jt{static parseHeader(e,t){let i=e[t+1]>>3&3,r=e[t+1]>>1&3,s=e[t+2]>>4&15,n=e[t+2]>>2&3;if(i!==1&&s!==0&&s!==15&&n!==3){let a=e[t+2]>>1&1,o=e[t+3]>>6,c=0;i===3?c=3-r:c=r===3?3:4;let d=Jt.BITRATES_MAP_[c*14+s-1]*1e3,u=i===3?0:i===2?1:2,m=Jt.SAMPLING_RATE_MAP_[u*3+n],f=o===3?1:2,g=Jt.SAMPLES_COEFFICIENTS_[i][r],_=Jt.BYTES_IN_SLOT_[r],T=g*8*_,S=Math.floor(g*d/m+a)*_,E=(navigator.userAgent||"").match(/Chrome\/(\d+)/i),C=E?parseInt(E[1],10):0;return C&&C<=87&&r===2&&d>=224e3&&o===0&&(e[t+3]=e[t+3]|128),{sampleRate:m,channelCount:f,frameLength:S,samplesPerFrame:T}}return null}static isHeaderPattern(e,t){return e[t]===255&&(e[t+1]&224)===224&&(e[t+1]&6)!==0}static isHeader(e,t){return t+1<e.length&&Jt.isHeaderPattern(e,t)}static probe(e,t){if(t+1<e.length&&Jt.isHeaderPattern(e,t)){let r=Jt.parseHeader(e,t),s=4;r&&r.frameLength&&(s=r.frameLength);let n=t+s;return n===e.length||Jt.isHeader(e,n)}return!1}};l(Jt,"BITRATES_MAP_",[32,64,96,128,160,192,224,256,288,320,352,384,416,448,32,48,56,64,80,96,112,128,160,192,224,256,320,384,32,40,48,56,64,80,96,112,128,160,192,224,256,320,32,48,56,64,80,96,112,128,144,160,176,192,224,256,8,16,24,32,40,48,56,64,80,96,112,128,144,160]),l(Jt,"SAMPLING_RATE_MAP_",[44100,48e3,32e3,22050,24e3,16e3,11025,12e3,8e3]),l(Jt,"SAMPLES_COEFFICIENTS_",[[0,72,144,12],[0,0,0,0],[0,72,144,12],[0,144,144,12]]),l(Jt,"BYTES_IN_SLOT_",[0,1,1,4]),l(Jt,"MPEG_AUDIO_SAMPLE_PER_FRAME",1152);var pi=Jt;/*! @license
|
|
1150
|
+
* Shaka Player
|
|
1151
|
+
* Copyright 2016 Google LLC
|
|
1152
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1153
|
+
*/var Ga=class extends li{isSupported(e,t){if(!this.isMpegContainer_(e))return!1;let i=R.ContentType;return Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isMpegContainer_(e){return e.toLowerCase().split(";")[0]=="audio/mpeg"}convertCodecs(e,t){return this.isMpegContainer_(t)?'audio/mp4; codecs="mp3"':t}transmux(e,t,i,r){let s=D.toUint8(e),a=It.getID3Data(s).length;for(;a<s.length&&!pi.probe(s,a);a++);let o=9e4,c,d=[];for(;a<s.length;){let T=pi.parseHeader(s,a);if(!T)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));c||(c=T),a+T.frameLength<=s.length&&d.push({data:s.subarray(a,a+T.frameLength),size:T.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),a+=T.frameLength}if(!c)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let u=c.sampleRate,m=c.samplesPerFrame*o/c.sampleRate,f=this.frameIndex*m,g={id:t.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:u,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:d},stream:t},_=new xe([g]);return Promise.resolve(this.packageSegment(_,t,i))}};Oe.registerTransmuxer("audio/mpeg",()=>new Ga("audio/mpeg"),Oe.PluginPriority.FALLBACK);/*! @license
|
|
1154
|
+
* Shaka Player
|
|
1155
|
+
* Copyright 2016 Google LLC
|
|
1156
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1157
|
+
*/var Ka=class{constructor(e){l(this,"originalMimeType_");l(this,"tsParser_");this.originalMimeType_=e,this.tsParser_=null}destroy(){}isSupported(e,t){if(!this.isTsContainer_(e))return!1;let i=R.ContentType,r=N.getCodecs(e),s=N.splitCodecs(r),n=R.guessCodecsSafe(i.AUDIO,s),a=R.guessCodecsSafe(i.VIDEO,s);return!n||a||N.getNormalizedCodec(n)!="mp3"?!1:Ke.isTypeSupported(this.convertCodecs(i.AUDIO,e))}isTsContainer_(e){return e.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(e,t){return this.isTsContainer_(t)?"audio/mpeg":t}getOriginalMimeType(){return this.originalMimeType_}transmux(e,t,i,r,s){let n=R.ContentType;this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(i.discontinuitySequence);let a=D.toUint8(e),o=this.tsParser_.parse(a);if(o.getCodecs().audio!="mp3"||s!=n.AUDIO)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,i?i.getUris()[0]:null));let d=new Uint8Array([]);for(let u of o.getAudioData()){let m=u.data;if(!m)continue;let f=0;for(;f<m.length;){let g=pi.parseHeader(m,f);if(!g){f++;continue}f+g.frameLength<=m.length&&(d=ne.concat(d,m.subarray(f,f+g.frameLength))),f+=g.frameLength}}return Promise.resolve(d)}};Oe.registerTransmuxer("video/mp2t",()=>new Ka("video/mp2t"),Oe.PluginPriority.PREFERRED_SECONDARY);/*! @license
|
|
1158
|
+
* Shaka Player
|
|
1159
|
+
* Copyright 2016 Google LLC
|
|
1160
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1161
|
+
*/var fs=class fs extends li{constructor(t){super(t);l(this,"tsParser_");l(this,"aacTransmuxer_");this.tsParser_=null,this.aacTransmuxer_=null}destroy(){super.destroy(),this.aacTransmuxer_&&this.aacTransmuxer_.destroy()}isSupported(t,i){if(!this.isTsContainer_(t))return!1;let r=R.ContentType,s=t;i&&(s=this.convertCodecs(i,t));let n=N.getCodecs(s),a=N.splitCodecs(n),o=R.guessCodecsSafe(r.AUDIO,a),c=R.guessCodecsSafe(r.VIDEO,a);if(o){let m=N.getNormalizedCodec(o);if(!fs.SUPPORTED_AUDIO_CODECS_.includes(m))return!1}if(c){let m=N.getNormalizedCodec(c);if(!fs.SUPPORTED_VIDEO_CODECS_.includes(m))return!1}if(i)return Ke.isTypeSupported(this.convertCodecs(i,t));let d=this.convertCodecs(r.AUDIO,t),u=this.convertCodecs(r.VIDEO,t);return Ke.isTypeSupported(d)||Ke.isTypeSupported(u)}isTsContainer_(t){return t.toLowerCase().split(";")[0]=="video/mp2t"}convertCodecs(t,i){if(this.isTsContainer_(i)){let r=R.ContentType,s=N.getCodecs(i).replace("mp4a.40.34","mp3").split(",").map(n=>N.getCorrectAudioCodecs(n,"audio/mp4")).map(N.getCorrectVideoCodecs).join(",");return t==r.AUDIO?`audio/mp4; codecs="${s}"`:`video/mp4; codecs="${s}"`}return i}transmux(t,i,r,s,n){let a=R.ContentType,o=D.toUint8(t);if(n==a.AUDIO&&!pt.probe(o)){let f=It.getID3Data(o),g=f.length;for(;g<o.length;g++)if(pi.probe(o,g))return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));for(g=f.length;g<o.length;g++)if(Bt.probe(o,g))return this.aacTransmuxer_||(this.aacTransmuxer_=new ms("audio/aac")),this.aacTransmuxer_.transmux(t,i,r,s,n);return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null))}this.tsParser_?this.tsParser_.clearData():this.tsParser_=new pt,this.tsParser_.setDiscontinuitySequence(r.discontinuitySequence);let c=this.tsParser_.parse(o),d=[],u=c.getCodecs();try{let f=null;if(n==a.VIDEO){switch(u.video){case"avc":f=this.getAvcStreamInfo_(c,i,s,r);break;case"hvc":f=this.getHvcStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}if(n==a.AUDIO){switch(u.audio){case"aac":f=this.getAacStreamInfo_(c,i,s,r);break;case"ac3":f=this.getAc3StreamInfo_(c,i,s,r);break;case"ec3":f=this.getEc3StreamInfo_(c,i,s,r);break;case"mp3":f=this.getMp3StreamInfo_(c,i,s,r);break;case"opus":f=this.getOpusStreamInfo_(c,i,s,r);break}f&&(d.push(f),f=null)}}catch(f){return f&&f.code==h.Code.TRANSMUXING_NO_VIDEO_DATA?Promise.resolve(new Uint8Array([])):Promise.reject(f)}if(!d.length)return Promise.reject(new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,r?r.getUris()[0]:null));let m=new xe(d);return Promise.resolve(this.packageSegment(m,i,r))}getAacStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null,d=null,u=null;for(let g of t.getAudioData()){let _=g.data;if(!_)continue;let T=0;if(d==-1&&u)_=ne.concat(u,g.data),d=null;else if(d!=null&&u){T=Math.max(0,d);let S=ne.concat(u,_.subarray(0,T));a.push({data:S,size:S.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),u=null,d=null}if(o=Bt.parseInfo(_,T),!o)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);for(i.audioSamplingRate=o.sampleRate,i.channelsCount=o.channelCount,c==null&&g.pts!==null&&(c=g.pts);T<_.length;){let S=Bt.parseHeader(_,T);if(!S){u=_.subarray(T,_.length),d=-1;break}let b=S.headerLength+S.frameLength;if(d=Math.max(0,T+b-_.length),d!=0)u=_.subarray(T+S.headerLength,T+b);else if(T+b<=_.length){let E=_.subarray(T+S.headerLength,T+b);a.push({data:E,size:S.frameLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS})}T+=b}}if(!o||c==null){c=s.startTime*n;let g=N.splitCodecs(i.codecs),_=R.guessCodecsSafe(R.ContentType.AUDIO,g);if(!_||!i.channelsCount||!i.audioSamplingRate)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);o={sampleRate:i.audioSamplingRate,channelCount:i.channelsCount,codec:_};let T=Bt.getSilentFrame(_,i.channelsCount);if(!T)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let S=(s.endTime-s.startTime)*n,b=c+S,E=c;for(;E<b;)a.push({data:T,size:T.byteLength,duration:Bt.AAC_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),E+=Bt.AAC_SAMPLES_PER_FRAME/o.sampleRate*n}let m=o.sampleRate,f=c/n*m;return{id:i.id,type:R.ContentType.AUDIO,codecs:o.codec,timescale:m,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:f,samples:a},stream:i}}getAc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!Oi.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:Oi.AC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ac-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getEc3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=0,c=new Uint8Array([]),d=null,u={sampleRate:0,channelCount:0,audioConfig:new Uint8Array(0),frameLength:0};for(let f of t.getAudioData()){let g=f.data;d==null&&f.pts!==null&&(d=f.pts);let _=0;for(;_<g.length;){if(!$i.parseFrame(g,_,u)){_++;continue}i.audioSamplingRate=u.sampleRate,i.channelsCount=u.channelCount,o=u.sampleRate,c=u.audioConfig;let S=g.subarray(_,_+u.frameLength);a.push({data:S,size:u.frameLength,duration:$i.EC3_SAMPLES_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_+=u.frameLength}}if(o==0||c.byteLength==0||d==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let m=d/n*o;return{id:i.id,type:R.ContentType.AUDIO,codecs:"ec-3",timescale:o,duration:r,mediaConfig:c,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getMp3StreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o,c=null;for(let m of t.getAudioData()){let f=m.data;if(!f)continue;c==null&&m.pts!==null&&(c=m.pts);let g=0;for(;g<f.length;){let _=pi.parseHeader(f,g);if(!_){g++;continue}o||(o=_),g+_.frameLength<=f.length&&a.push({data:f.subarray(g,g+_.frameLength),size:_.frameLength,duration:pi.MPEG_AUDIO_SAMPLE_PER_FRAME,cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),g+=_.frameLength}}if(!o||c==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=o.sampleRate,u=c/n*d;return{id:i.id,type:R.ContentType.AUDIO,codecs:"mp3",timescale:d,duration:r,mediaConfig:new Uint8Array([]),data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:u,samples:a},stream:i}}getOpusStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getOpusMetadata();if(!c)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);let d=Er.getAudioConfig(c),u=c.sampleRate;for(let f of t.getAudioData()){let g=f.data;o==null&&f.pts!==null&&(o=f.pts);let _=0;for(;_<g.length;){let T=(g[_+1]&16)!==0,S=(g[_+1]&8)!==0,b=_+2,E=0;for(;g[b]===255;)E+=255,b+=1;E+=g[b],b+=1,b+=T?2:0,b+=S?2:0;let C=g.slice(b,b+E);a.push({data:C,size:C.byteLength,duration:Er.getPacketSampleCount(C),cts:0,flags:$e.AUDIO_SAMPLE_FLAGS}),_=b+E}}if(d.byteLength==0||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);i.audioSamplingRate=c.sampleRate,i.channelsCount=c.channelCount;let m=o/n*u;return{id:i.id,type:R.ContentType.AUDIO,codecs:"opus",timescale:u,duration:r,mediaConfig:d,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:m,samples:a},stream:i}}getAvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=t.getVideoData(),d=rr.getVideoSamples(c);if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f];o==null&&(o=g.dts);let _;f+1<d.length?_=(d[f+1].dts||0)-(g.dts||0):d.length>1?_=(g.dts||0)-(d[f-1].dts||0):_=(s.endTime-s.startTime)*n,a.push({data:g.data,size:g.data.byteLength,duration:_,cts:Math.round((g.pts||0)-(g.dts||0)),flags:g.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let u=[];for(let f of c)u.push(...f.nalus);let m=rr.parseInfo(u);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"avc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}getHvcStreamInfo_(t,i,r,s){let n=pt.Timescale,a=[],o=null,c=[],d=t.getVideoData(),u={data:new Uint8Array(0),isKeyframe:!1};if(!d.length)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_NO_VIDEO_DATA,s?s.getUris()[0]:null);for(let f=0;f<d.length;f++){let g=d[f],_=g.nalus;if(c.push(..._),!sr.parseFrame(_,u))continue;o==null&&g.dts!=null&&(o=g.dts);let S;f+1<d.length?S=(d[f+1].dts||0)-(g.dts||0):d.length>1?S=(g.dts||0)-(d[f-1].dts||0):S=(s.endTime-s.startTime)*n,a.push({data:u.data,size:u.data.byteLength,duration:S,cts:Math.round((g.pts||0)-(g.dts||0)),flags:u.isKeyframe?$e.VIDEO_KEYFRAME_FLAGS:$e.VIDEO_NON_KEYFRAME_FLAGS})}let m=sr.parseInfo(c);if(!m||o==null)throw new h(h.Severity.CRITICAL,h.Category.MEDIA,h.Code.TRANSMUXING_FAILED,s?s.getUris()[0]:null);return i.height=i.height||m.height,i.width=i.width||m.width,{id:i.id,type:R.ContentType.VIDEO,codecs:"hvc1",timescale:n,duration:r,mediaConfig:m.videoConfig,hSpacing:m.hSpacing,vSpacing:m.vSpacing,data:{sequenceNumber:this.frameIndex,baseMediaDecodeTime:o,samples:a},stream:i}}};l(fs,"SUPPORTED_AUDIO_CODECS_",["aac","ac-3","ec-3","mp3","opus"]),l(fs,"SUPPORTED_VIDEO_CODECS_",["avc","hevc"]);var qa=fs;Oe.registerTransmuxer("video/mp2t",()=>new qa("video/mp2t"),Oe.PluginPriority.PREFERRED);var export_AllDevices=void 0;export{Bt as ADTS,ms as AacTransmuxer,Oi as Ac3,Ba as Ac3Transmuxer,Rn as AdManager,export_AllDevices as AllDevices,ga as Aria,io as CastProxy,so as CastReceiver,Na as CeaDecoder,B as Cue,Ln as DashJsonParser,Br as DashParser,yr as DataUriPlugin,Cr as Deprecate,Ge as Dom,$i as Ec3,Va as Ec3Transmuxer,_a as EmeEncryptionScheme,hr as FairPlay,ya as Fullscreen,rr as H264,sr as H265,Ut as HlsParser,Ui as HttpFetchPlugin,Hr as HttpXHRPlugin,It as Id3Utils,jn as Id3V1Utils,Gs as IlstUtils,Tt as InitSegmentReference,Qi as Iterables,Ha as LocTransmuxer,va as MCapEncryptionScheme,sa as MSFParser,me as ManifestParser,ba as MediaCapabilities,Sa as MediaSource,kt as Metadata,Ga as Mp3Transmuxer,Ot as Mp4CeaParser,mi as Mp4TtmlParser,Pa as Mp4VttParser,pi as MpegAudio,Ka as MpegTsTransmuxer,aa as OfflineManifestParser,oa as OfflineScheme,Er as Opus,Xs as Orientation,Wi as PatchedMediaKeysApple,ai as PatchedMediaKeysWebkit,Ea as PiPWebkit,dt as Player,Ta as PolyfillMap,Ia as PolyfillSymbol,Rs as PreferenceBasedCriteria,wi as PresentationTimeline,na as QueueManager,Aa as RandomUUID,Ze as SegmentIndex,Se as SegmentReference,Ms as SimpleAbrManager,Qr as SpeechToText,ka as SrtTextParser,Ws as Storage,fa as StorageMechanism,Ue as TextEngine,Oe as TransmuxerEngine,Oa as TsCeaParser,qa as TsTransmuxer,zi as TtmlTextParser,Ca as TypedArray,js as URLSearchParams,h as UtilError,xa as VTTCue,wa as VideoFrameCallback,Ma as VideoPlayPromise,Ra as VideoPlaybackQuality,Vr as VorbisUtils,Xi as VttTextParser,Us as WebVttGenerator,p as log,Re as polyfill};
|