UNPKG

dashjs

Version:

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.

2 lines 55.5 kB
/*! v3.0.0-b90898e8, 2019-06-29T00:44:59Z */ !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;((t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).dashjs||(t.dashjs={})).Protection=e()}}(function(){return function i(a,o,u){function E(t,e){if(!o[t]){if(!a[t]){var n="function"==typeof require&&require;if(!e&&n)return n(t,!0);if(l)return l(t,!0);var r=new Error("Cannot find module '"+t+"'");throw r.code="MODULE_NOT_FOUND",r}var s=o[t]={exports:{}};a[t][0].call(s.exports,function(e){return E(a[t][1][e]||e)},s,s.exports,i,a,o,u)}return o[t].exports}for(var l="function"==typeof require&&require,e=0;e<u.length;e++)E(u[e]);return E}({1:[function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}Object.defineProperty(n,"__esModule",{value:!0});var s=(function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}(i,[{key:"extend",value:function(e,t){if(e){var n=!!t&&t.override,r=!!t&&t.publicOnly;for(var s in e)!e.hasOwnProperty(s)||this[s]&&!n||r&&-1===e[s].indexOf("public_")||(this[s]=e[s])}}}]),i);function i(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i)}n.default=s,t.exports=n.default},{}],2:[function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}Object.defineProperty(n,"__esModule",{value:!0});var s=(function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}(i,[{key:"extend",value:function(e,t){if(e){var n=!!t&&t.override,r=!!t&&t.publicOnly;for(var s in e)!e.hasOwnProperty(s)||this[s]&&!n||r&&-1===e[s].indexOf("public_")||(this[s]=e[s])}}}]),i);function i(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i)}n.default=s,t.exports=n.default},{}],3:[function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function s(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,s),this.init()}Object.defineProperty(n,"__esModule",{value:!0});var i=new(function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}(s,[{key:"init",value:function(){this.CLEARKEY_KEYSTEM_STRING="org.w3.clearkey",this.WIDEVINE_KEYSTEM_STRING="com.widevine.alpha",this.PLAYREADY_KEYSTEM_STRING="com.microsoft.playready"}}]),s);n.default=i,t.exports=n.default},{}],4:[function(e,t,n){"use strict";function r(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}Object.defineProperty(n,"__esModule",{value:!0});var s=(function(e,t,n){return t&&r(e.prototype,t),n&&r(e,n),e}(i,null,[{key:"findCencContentProtection",value:function(e){for(var t=null,n=0;n<e.length;++n){var r=e[n];"urn:mpeg:dash:mp4protection:2011"===r.schemeIdUri.toLowerCase()&&"cenc"===r.value.toLowerCase()&&(t=r)}return t}},{key:"getPSSHData",value:function(e){var t=8,n=new DataView(e),r=n.getUint8(t);return t+=20,0<r&&(t+=4+16*n.getUint32(t)),t+=4,e.slice(t)}},{key:"getPSSHForKeySystem",value:function(e,t){var n=i.parsePSSHList(t);return e&&n.hasOwnProperty(e.uuid.toLowerCase())?n[e.uuid.toLowerCase()]:null}},{key:"parseInitDataFromContentProtection",value:function(e,t){return"pssh"in e?t.decodeArray(e.pssh.__text).buffer:null}},{key:"parsePSSHList",value:function(e){if(null==e)return[];for(var t=new DataView(e.buffer||e),n={},r=0;;){var s,i,a=void 0,o=r;if(r>=t.buffer.byteLength)break;if(s=r+t.getUint32(r),r+=4,1886614376===t.getUint32(r))if(r+=4,0===(i=t.getUint8(r))||1===i){r++,r+=3,a="";var u=void 0,E=void 0;for(u=0;u<4;u++)a+=1===(E=t.getUint8(r+u).toString(16)).length?"0"+E:E;for(r+=4,a+="-",u=0;u<2;u++)a+=1===(E=t.getUint8(r+u).toString(16)).length?"0"+E:E;for(r+=2,a+="-",u=0;u<2;u++)a+=1===(E=t.getUint8(r+u).toString(16)).length?"0"+E:E;for(r+=2,a+="-",u=0;u<2;u++)a+=1===(E=t.getUint8(r+u).toString(16)).length?"0"+E:E;for(r+=2,a+="-",u=0;u<6;u++)a+=1===(E=t.getUint8(r+u).toString(16)).length?"0"+E:E;r+=6,a=a.toLowerCase(),t.getUint32(r),r+=4,n[a]=t.buffer.slice(o,s),r=s}else r=s;else r=s}return n}}]),i);function i(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i)}n.default=s,t.exports=n.default},{}],5:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var s=r(e(7)),i=r(e(8)),a=r(e(6)),o=r(e(13)),E=r(e(15)),l=r(e(16)),d=r(e(14)),c=[{generateKeyRequest:"generateKeyRequest",addKey:"addKey",cancelKeyRequest:"cancelKeyRequest",needkey:"needkey",keyerror:"keyerror",keyadded:"keyadded",keymessage:"keymessage"},{generateKeyRequest:"webkitGenerateKeyRequest",addKey:"webkitAddKey",cancelKeyRequest:"webkitCancelKeyRequest",needkey:"webkitneedkey",keyerror:"webkitkeyerror",keyadded:"webkitkeyadded",keymessage:"webkitkeymessage"}],f=[{setMediaKeys:"setMediaKeys",MediaKeys:"MediaKeys",release:"close",needkey:"needkey",error:"keyerror",message:"keymessage",ready:"keyadded",close:"keyclose"},{setMediaKeys:"msSetMediaKeys",MediaKeys:"MSMediaKeys",release:"close",needkey:"msneedkey",error:"mskeyerror",message:"mskeymessage",ready:"mskeyadded",close:"mskeyclose"}];function u(){var a=void 0,o=this.context;function u(e,t){for(var n=0;n<t.length;n++){var r=t[n];if("function"==typeof e[r[Object.keys(r)[0]]])return r}return null}return a={createProtectionSystem:function(e){var t=null,n=(0,i.default)(o).getInstance();n.setConfig({debug:e.debug,BASE64:e.BASE64}),n.initialize();var r=function(e){var t=e.debug,n=t.getLogger(a),r=e.eventBus,s=e.errHandler,i=e.videoModel?e.videoModel.getElement():null;return i&&void 0===i.onencrypted||i&&void 0===i.mediaKeys?u(i,f)?(n.info("EME detected on this user agent! (ProtectionModel_3Feb2014)"),(0,l.default)(o).create({debug:t,eventBus:r,events:e.events,api:u(i,f)})):u(i,c)?(n.info("EME detected on this user agent! (ProtectionModel_01b)"),(0,d.default)(o).create({debug:t,eventBus:r,errHandler:s,events:e.events,api:u(i,c)})):(n.warn("No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!"),null):(n.info("EME detected on this user agent! (ProtectionModel_21Jan2015)"),(0,E.default)(o).create({debug:t,eventBus:r,events:e.events}))}(e);return!t&&r&&(t=(0,s.default)(o).create({protectionModel:r,protectionKeyController:n,eventBus:e.eventBus,debug:e.debug,events:e.events,BASE64:e.BASE64,constants:e.constants}),e.capabilities.setEncryptedMediaSupported(!0)),t}}}u.__dashjs_factory_name="Protection";var y=dashjs.FactoryMaker.getClassFactory(u);y.events=a.default,y.errors=o.default,dashjs.FactoryMaker.updateClassFactory(u.__dashjs_factory_name,y),n.default=y,t.exports=n.default},{13:13,14:14,15:15,16:16,6:6,7:7,8:8}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,s=e(2);function i(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,t,n){for(var r=!0;r;){var s=e,i=t,a=n;r=!1,null===s&&(s=Function.prototype);var o=Object.getOwnPropertyDescriptor(s,i);if(void 0!==o){if("value"in o)return o.value;var u=o.get;if(void 0===u)return;return u.call(a)}var E=Object.getPrototypeOf(s);if(null===E)return;e=E,t=i,n=a,r=!0,o=E=void 0}}(Object.getPrototypeOf(i.prototype),"constructor",this).call(this),this.INTERNAL_KEY_MESSAGE="internalKeyMessage",this.INTERNAL_KEY_SYSTEM_SELECTED="internalKeySystemSelected",this.INTERNAL_KEY_STATUS_CHANGED="internalkeyStatusChanged",this.KEY_ADDED="public_keyAdded",this.KEY_ERROR="public_keyError",this.KEY_MESSAGE="public_keyMessage",this.KEY_SESSION_CLOSED="public_keySessionClosed",this.KEY_SESSION_CREATED="public_keySessionCreated",this.KEY_SESSION_REMOVED="public_keySessionRemoved",this.KEY_STATUSES_CHANGED="public_keyStatusesChanged",this.KEY_SYSTEM_ACCESS_COMPLETE="public_keySystemAccessComplete",this.KEY_SYSTEM_SELECTED="public_keySystemSelected",this.LICENSE_REQUEST_COMPLETE="public_licenseRequestComplete",this.NEED_KEY="needkey",this.PROTECTION_CREATED="public_protectioncreated",this.PROTECTION_DESTROYED="public_protectiondestroyed",this.SERVER_CERTIFICATE_UPDATED="serverCertificateUpdated",this.TEARDOWN_COMPLETE="protectionTeardownComplete",this.VIDEO_ELEMENT_SELECTED="videoElementSelected"}var a=new(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(i,((r=s)&&r.__esModule?r:{default:r}).default),i);n.default=a,t.exports=n.default},{2:2}],7:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var I=r(e(4)),O=r(e(26)),w=r(e(25)),b=r(e(13)),N=r(e(28));function s(e){var t,R=(e=e||{}).protectionKeyController,h=e.protectionModel,D=e.eventBus,M=e.events,n=e.debug,l=e.BASE64,E=e.constants,o=[],m=void 0,d=void 0,c=void 0,u=void 0,r=void 0,f=void 0,C=void 0;function s(){if(!(D&&D.hasOwnProperty("on")&&R&&R.hasOwnProperty("getSupportedKeySystemsFromContentProtection")))throw new Error("Missing config parameter(s)")}function y(e,t){var n=I.default.getPSSHForKeySystem(C,e),r=A(C);if(n){for(var s=h.getAllInitData(),i=0;i<s.length;i++)if(R.initDataEquals(n,s[i]))return void m.warn("DRM: Ignoring initData because we have already seen it!");try{h.createKeySession(n,r,g(C),t)}catch(e){D.trigger(M.KEY_SESSION_CREATED,{data:null,error:new N.default(b.default.KEY_SESSION_CREATED_ERROR_CODE,b.default.KEY_SESSION_CREATED_ERROR_MESSAGE+e.message)})}}else e?h.createKeySession(e,r,g(C),t):D.trigger(M.KEY_SESSION_CREATED,{data:null,error:new N.default(b.default.KEY_SESSION_CREATED_ERROR_CODE,b.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Selected key system is "+(C?C.systemString:null)+". needkey/encrypted event contains no initData corresponding to that key system!")})}function S(e,t){s(),h.loadKeySession(e,t,g(C))}function i(e){s(),e?(h.setMediaElement(e),D.on(M.NEED_KEY,K,this)):null===e&&(h.setMediaElement(e),D.off(M.NEED_KEY,K,this))}function A(e){var t=null;if(e){var n=e.systemString;u&&(t=n in u?u[n]:null)}return t}function _(e){var t=A(e),n=[],r=[],s=t&&t.audioRobustness&&0<t.audioRobustness.length?t.audioRobustness:f,i=t&&t.videoRobustness&&0<t.videoRobustness.length?t.videoRobustness:f,a=g(e),o=t&&t.distinctiveIdentifier?t.distinctiveIdentifier:"optional",u=t&&t.persistentState?t.persistentState:"temporary"===a?"optional":"required";return c.forEach(function(e){e.type===E.AUDIO?n.push(new O.default(e.codec,s)):e.type===E.VIDEO&&r.push(new O.default(e.codec,i))}),new w.default(n,r,o,u,[a])}function g(e){var t=A(e);return t&&t.sessionType?t.sessionType:r}function v(n,o){var u=this,t=[],E=void 0;if(C)for(E=0;E<n.length;E++){if(C===n[E].ks)if("break"===function(){t.push({ks:n[E].ks,configs:[_(C)]});return D.on(M.KEY_SYSTEM_ACCESS_COMPLETE,function e(t){D.off(M.KEY_SYSTEM_ACCESS_COMPLETE,e,u),t.error?o||D.trigger(M.KEY_SYSTEM_SELECTED,{error:new N.default(b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+t.error)}):(m.info("DRM: KeySystem Access Granted"),D.trigger(M.KEY_SYSTEM_SELECTED,{data:t.data}),n[E].sessionId?S(n[E].sessionId,n[E].initData):n[E].initData&&y(n[E].initData,n[E].cdmData))},u),h.requestKeySystemAccess(t),"break"}())break}else if(void 0===C){var r;!function(){C=null,d.push(n);for(var e=0;e<n.length;e++)t.push({ks:n[e].ks,configs:[_(n[e].ks)]});function i(e){D.off(M.KEY_SYSTEM_ACCESS_COMPLETE,i,u),e.error?(C=void 0,D.off(M.INTERNAL_KEY_SYSTEM_SELECTED,r,u),o||D.trigger(M.KEY_SYSTEM_SELECTED,{data:null,error:new N.default(b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+e.error)})):(a=e.data,m.info("DRM: KeySystem Access Granted ("+a.keySystem.systemString+")! Selecting key system..."),h.selectKeySystem(a))}var a=void 0;r=function e(t){if(D.off(M.INTERNAL_KEY_SYSTEM_SELECTED,e,u),D.off(M.KEY_SYSTEM_ACCESS_COMPLETE,i,u),t.error)C=void 0,o||D.trigger(M.KEY_SYSTEM_SELECTED,{data:null,error:new N.default(b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE,b.default.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE+"Error selecting key system! -- "+t.error)});else{if(!h)return;C=h.getKeySystem(),D.trigger(M.KEY_SYSTEM_SELECTED,{data:a});var n=A(C);n&&n.serverCertificate&&0<n.serverCertificate.length&&h.setServerCertificate(l.decodeArray(n.serverCertificate).buffer);for(var r=0;r<d.length;r++)for(E=0;E<d[r].length;E++)if(C===d[r][E].ks){if(R.isClearKey(C)&&n&&n.hasOwnProperty("clearkeys")){var s={kids:Object.keys(n.clearkeys)};d[r][E].initData=(new TextEncoder).encode(JSON.stringify(s))}d[r][E].sessionId?S(d[r][E].sessionId,d[r][E].initData):null!==d[r][E].initData&&y(d[r][E].initData,d[r][E].cdmData);break}}},D.on(M.INTERNAL_KEY_SYSTEM_SELECTED,r,u),D.on(M.KEY_SYSTEM_ACCESS_COMPLETE,i,u),h.requestKeySystemAccess(t)}()}else d.push(n)}function T(e,t){D.trigger(M.LICENSE_REQUEST_COMPLETE,{data:e,error:t})}function a(e){e.error?D.trigger(M.KEY_STATUSES_CHANGED,{data:null,error:e.error}):m.debug("DRM: key status = "+e.status)}function p(e){m.debug("DRM: onKeyMessage");var t=e.data;D.trigger(M.KEY_MESSAGE,{data:t});var n=t.messageType?t.messageType:"license-request",r=t.message,s=t.sessionToken,i=A(C),a=C?C.systemString:null,o=R.getLicenseServer(C,i,n),u={sessionToken:s,messageType:n};if(r&&0!==r.byteLength){if(!o)return m.debug("DRM: License server request not required for this message (type = "+e.data.messageType+"). Session ID = "+s.getSessionID()),void T(u);if(R.isClearKey(C)){var E=R.processClearKeyLicenseRequest(C,i,r);if(E)return m.debug("DRM: ClearKey license request handled by application!"),T(u),void h.updateKeySession(s,E)}var l=null;if(i&&i.serverURL){var d=i.serverURL;"string"==typeof d&&""!==d?l=d:"object"==typeof d&&d.hasOwnProperty(n)&&(l=d[n])}else l=i&&i.laURL&&""!==i.laURL?i.laURL:(l=C.getLicenseServerURLFromInitData(I.default.getPSSHData(s.initData)))||e.data.laURL;if(l=o.getServerURLFromMessage(l,r,n)){var c={},f=!1,y=function(e){if(e)for(var t in e)"authorization"===t.toLowerCase()&&(f=!0),c[t]=e[t]};i&&y(i.httpRequestHeaders),y(C.getRequestHeadersFromMessage(r)),i&&"boolean"==typeof i.withCredentials&&(f=i.withCredentials);var S=function(e,t,n,r){var s=e.response?o.getErrorResponse(e.response,n,r):"NONE";T(t,new N.default(b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+n+' update, XHR complete. status is "'+e.statusText+'" ('+e.status+"), readyState is "+e.readyState+". Response is "+s))},_=C.getLicenseRequestFromMessage(r),g=o.getHTTPMethod(n),v=o.getResponseType(a,n),p=i&&!isNaN(i.httpTimeout)?i.httpTimeout:8e3;!function e(t,n,r,s,i,a,o,u,E,l,d){var c=new XMLHttpRequest;c.open(r,t,!0);c.responseType=s;c.withCredentials=i;0<u&&(c.timeout=u);for(var f in n)c.setRequestHeader(f,n[f]);var y=function(){o--,setTimeout(function(){e(t,n,r,s,i,a,o,u,E,l,d)},1e3)};c.onload=function(){200===this.status||o<=0?E(this):(m.warn("License request failed ("+this.status+"). Retrying it... Pending retries: "+o),y())};c.ontimeout=c.onerror=function(){o<=0?d(this):(m.warn("License request network request failed . Retrying it... Pending retries: "+o),y())};c.onabort=function(){l(this)};c.send(a)}(l,c,g,v,f,_,3,p,function(e){if(h)if(200===e.status){var t=o.getLicenseMessage(e.response,a,n);null!==t?(T(u),h.updateKeySession(s,t)):S(e,u,a,n)}else S(e,u,a,n)},function(e){T(u,new N.default(b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+a+' update, XHR aborted. status is "'+e.statusText+'" ('+e.status+"), readyState is "+e.readyState))},function(e){T(u,new N.default(b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE,b.default.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE+a+' update, XHR error. status is "'+e.statusText+'" ('+e.status+"), readyState is "+e.readyState))})}else T(u,new N.default(b.default.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE,b.default.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE))}else T(u,new N.default(b.default.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE,b.default.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE))}function K(e,t){if(m.debug("DRM: onNeedKey"),"cenc"===e.key.initDataType)if(0===c.length&&(m.warn("DRM: onNeedKey called before initializeForMedia, wait until initialized"),(t=void 0===t?1:t+1)<5))o.push(setTimeout(function(){K(e,t)},500));else{var n=e.key.initData;if(ArrayBuffer.isView(n)&&(n=n.buffer),C){var r=I.default.getPSSHForKeySystem(C,n);if(r)for(var s=h.getAllInitData(),i=0;i<s.length;i++)if(R.initDataEquals(r,s[i]))return void m.warn("DRM: Ignoring initData because we have already seen it!")}m.debug("DRM: initData:",String.fromCharCode.apply(null,new Uint8Array(n)));var a=R.getSupportedKeySystems(n,u);0!==a.length?v(a,!1):m.debug("DRM: Received needkey event with initData, but we don't support any of the key systems!")}else m.warn("DRM: Only 'cenc' initData is supported! Ignoring initData of type: "+e.key.initDataType)}return t={initializeForMedia:function(e){if(!e)throw new Error("mediaInfo can not be null or undefined");s(),D.on(M.INTERNAL_KEY_MESSAGE,p,this),D.on(M.INTERNAL_KEY_STATUS_CHANGED,a,this),c.push(e);var t=R.getSupportedKeySystemsFromContentProtection(e.contentProtection);t&&0<t.length&&v(t,!0)},createKeySession:y,loadKeySession:S,removeKeySession:function(e){s(),h.removeKeySession(e)},closeKeySession:function(e){s(),h.closeKeySession(e)},setServerCertificate:function(e){s(),h.setServerCertificate(e)},setMediaElement:i,setSessionType:function(e){r=e},setRobustnessLevel:function(e){f=e},setProtectionData:function(e){u=e,R.setProtectionData(e)},getSupportedKeySystemsFromContentProtection:function(e){return s(),R.getSupportedKeySystemsFromContentProtection(e)},getKeySystems:function(){return R?R.getKeySystems():[]},setKeySystems:function(e){R&&R.setKeySystems(e)},stop:function(){h&&h.stop()},reset:function(){s(),D.off(M.INTERNAL_KEY_MESSAGE,p,this),D.off(M.INTERNAL_KEY_STATUS_CHANGED,a,this),i(null),C=void 0,h&&(h.reset(),h=null),o.forEach(function(e){return clearTimeout(e)}),o=[],c=[]}},m=n.getLogger(t),d=[],c=[],r="temporary",f="",t}s.__dashjs_factory_name="ProtectionController",n.default=dashjs.FactoryMaker.getClassFactory(s),t.exports=n.default},{13:13,25:25,26:26,28:28,4:4}],8:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var E=r(e(4)),l=r(e(9)),d=r(e(11)),c=r(e(12)),f=r(e(10)),y=r(e(18)),S=r(e(19)),_=r(e(20)),g=r(e(17)),v=r(e(3));function s(){var s=this.context,t=void 0,n=void 0,r=void 0,u=void 0,i=void 0,a=void 0,o=void 0;return t={initialize:function(){u=[];var e=void 0;e=(0,f.default)(s).getInstance({BASE64:i}),u.push(e),e=(0,c.default)(s).getInstance({BASE64:i}),u.push(e),e=(0,l.default)(s).getInstance({BASE64:i}),u.push(e),a=e,e=(0,d.default)(s).getInstance({BASE64:i,debug:n}),u.push(e),o=e},setProtectionData:function(e){for(var t,n,r=0;r<u.length;r++){var s=u[r];s.hasOwnProperty("init")&&s.init((t=s.systemString,n=void 0,n=null,e&&(n=t in e?e[t]:null),n))}},isClearKey:function(e){return e===a||e===o},initDataEquals:function(e,t){if(e.byteLength!==t.byteLength)return!1;for(var n=new Uint8Array(e),r=new Uint8Array(t),s=0;s<n.length;s++)if(n[s]!==r[s])return!1;return!0},getKeySystems:function(){return u},setKeySystems:function(e){u=e},getKeySystemBySystemString:function(e){for(var t=0;t<u.length;t++)if(u[t].systemString===e)return u[t];return null},getSupportedKeySystemsFromContentProtection:function(e){var t=void 0,n=void 0,r=void 0,s=void 0,i=[];if(e)for(r=0;r<u.length;++r)for(n=u[r],s=0;s<e.length;++s)if((t=e[s]).schemeIdUri.toLowerCase()===n.schemeIdURI){var a=n.getInitData(t);i.push({ks:u[r],initData:a,cdmData:n.getCDMData(),sessionId:n.getSessionId(t)})}return i},getSupportedKeySystems:function(e,t){for(var n=[],r=E.default.parsePSSHList(e),s=void 0,i=void 0,a=void 0,o=0;o<u.length;++o)i=(s=u[o]).systemString,a=!t||i in t,s.uuid in r&&a&&n.push({ks:s,initData:r[s.uuid],cdmData:s.getCDMData(),sessionId:s.getSessionId()});return n},getLicenseServer:function(e,t,n){if("license-release"===n||"individualization-request"===n)return null;var r=null;return t&&t.hasOwnProperty("drmtoday")?r=(0,y.default)(s).getInstance({BASE64:i}):e.systemString===v.default.WIDEVINE_KEYSTEM_STRING?r=(0,_.default)(s).getInstance():e.systemString===v.default.PLAYREADY_KEYSTEM_STRING?r=(0,S.default)(s).getInstance():e.systemString===v.default.CLEARKEY_KEYSTEM_STRING&&(r=(0,g.default)(s).getInstance()),r},processClearKeyLicenseRequest:function(e,t,n){try{return e.getClearKeysFromProtectionData(t,n)}catch(e){return r.error("Failed to retrieve clearkeys from ProtectionData"),null}},setConfig:function(e){e&&(e.debug&&(n=e.debug,r=n.getLogger(t)),e.BASE64&&(i=e.BASE64))}}}s.__dashjs_factory_name="ProtectionKeyController",n.default=dashjs.FactoryMaker.getSingletonFactory(s),t.exports=n.default},{10:10,11:11,12:12,17:17,18:18,19:19,20:20,3:3,4:4,9:9}],9:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var u=r(e(23)),E=r(e(21)),s=r(e(4)),i=r(e(3)),a="e2719d58-a985-b3c9-781a-b030af78d30e",o=i.default.CLEARKEY_KEYSTEM_STRING;function l(e){var t=(e=e||{}).BASE64;return{uuid:a,schemeIdURI:"urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e",systemString:o,getInitData:function(e){return s.default.parseInitDataFromContentProtection(e,t)},getRequestHeadersFromMessage:function(){return null},getLicenseRequestFromMessage:function(e){return new Uint8Array(e)},getLicenseServerURLFromInitData:function(){return null},getCDMData:function(){return null},getSessionId:function(){return null},getClearKeysFromProtectionData:function(e,t){var n=null;if(e){for(var r=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(t))),s=[],i=0;i<r.kids.length;i++){var a=r.kids[i],o=e.clearkeys&&e.clearkeys.hasOwnProperty(a)?e.clearkeys[a]:null;if(!o)throw new Error("DRM: ClearKey keyID ("+a+") is not known!");s.push(new u.default(a,o))}n=new E.default(s)}return n}}}l.__dashjs_factory_name="KeySystemClearKey",n.default=dashjs.FactoryMaker.getSingletonFactory(l),t.exports=n.default},{21:21,23:23,3:3,4:4}],10:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var c=r(e(4)),s=r(e(3)),i="9a04f079-9840-4286-ab92-e65be0885f95",a=s.default.PLAYREADY_KEYSTEM_STRING,o=void 0;function u(e){var E="utf-16",l=(e=e||{}).BASE64;function d(){if(!l||!l.hasOwnProperty("decodeArray")||!l.hasOwnProperty("decodeArray"))throw new Error("Missing config parameter(s)")}return{uuid:i,schemeIdURI:"urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95",systemString:a,getInitData:function(e){var t,n,r,s=new Uint8Array([112,115,115,104,0,0,0,0]),i=new Uint8Array([154,4,240,121,152,64,66,134,171,146,230,91,224,136,95,149]),a=0,o=null,u=void 0,E=void 0;if(d(),!e)return null;if("pssh"in e)return c.default.parseInitDataFromContentProtection(e,l);if("pro"in e)o=l.decodeArray(e.pro.__text);else{if(!("prheader"in e))return null;o=l.decodeArray(e.prheader.__text)}return t=o.length,n=4+s.length+i.length+4+t,r=new ArrayBuffer(n),u=new Uint8Array(r),(E=new DataView(r)).setUint32(a,n),a+=4,u.set(s,a),a+=s.length,u.set(i,a),a+=i.length,E.setUint32(a,t),a+=4,u.set(o,a),a+=t,u.buffer},getRequestHeadersFromMessage:function(e){var t,n=void 0,r={},s=new DOMParser,i="utf-16"===E?new Uint16Array(e):new Uint8Array(e);t=String.fromCharCode.apply(null,i);for(var a=(n=s.parseFromString(t,"application/xml")).getElementsByTagName("name"),o=n.getElementsByTagName("value"),u=0;u<a.length;u++)r[a[u].childNodes[0].nodeValue]=o[u].childNodes[0].nodeValue;return r.hasOwnProperty("Content")&&(r["Content-Type"]=r.Content,delete r.Content),r.hasOwnProperty("Content-Type")||(r["Content-Type"]="text/xml; charset="+E),r},getLicenseRequestFromMessage:function(e){var t=null,n=new DOMParser,r="utf-16"===E?new Uint16Array(e):new Uint8Array(e);d();var s=String.fromCharCode.apply(null,r),i=n.parseFromString(s,"application/xml");if(!i.getElementsByTagName("PlayReadyKeyMessage")[0])return e;var a=i.getElementsByTagName("Challenge")[0].childNodes[0].nodeValue;return a&&(t=l.decode(a)),t},getLicenseServerURLFromInitData:function(e){if(e)for(var t=new DataView(e),n=t.getUint16(4,!0),r=6,s=new DOMParser,i=0;i<n;i++){var a=t.getUint16(r,!0);r+=2;var o=t.getUint16(r,!0);if(r+=2,1===a){var u=e.slice(r,r+o),E=String.fromCharCode.apply(null,new Uint16Array(u)),l=s.parseFromString(E,"application/xml");if(l.getElementsByTagName("LA_URL")[0]){var d=l.getElementsByTagName("LA_URL")[0].childNodes[0].nodeValue;if(d)return d}if(l.getElementsByTagName("LUI_URL")[0]){var c=l.getElementsByTagName("LUI_URL")[0].childNodes[0].nodeValue;if(c)return c}}else r+=o}return null},getCDMData:function(){var e=void 0,t=void 0,n=void 0,r=void 0;if(d(),o&&o.cdmData){for(e=[],r=0;r<o.cdmData.length;++r)e.push(o.cdmData.charCodeAt(r)),e.push(0);for(e=String.fromCharCode.apply(null,e),e=l.encode(e),t='<PlayReadyCDMData type="LicenseAcquisition"><LicenseAcquisition version="1.0" Proactive="false"><CustomData encoding="base64encoded">%CUSTOMDATA%</CustomData></LicenseAcquisition></PlayReadyCDMData>'.replace("%CUSTOMDATA%",e),n=[],r=0;r<t.length;++r)n.push(t.charCodeAt(r)),n.push(0);return new Uint8Array(n).buffer}return null},getSessionId:function(e){return o&&o.sessionId?o.sessionId:e&&e.sessionId?e.sessionId:null},setPlayReadyMessageFormat:function(e){if("utf-8"!==e&&"utf-16"!==e)throw new Error('Specified message format is not one of "utf-8" or "utf-16"');E=e},init:function(e){e&&(o=e)}}}u.__dashjs_factory_name="KeySystemPlayReady",n.default=dashjs.FactoryMaker.getSingletonFactory(u),t.exports=n.default},{3:3,4:4}],11:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var E=r(e(23)),l=r(e(21)),s=r(e(4)),i=r(e(3)),a="1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",o=i.default.CLEARKEY_KEYSTEM_STRING;function u(e){var t=void 0,n=e.BASE64,u=e.debug.getLogger(t);return t={uuid:a,schemeIdURI:"urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b",systemString:o,getInitData:function(e){return s.default.parseInitDataFromContentProtection(e,n)},getRequestHeadersFromMessage:function(){return null},getLicenseRequestFromMessage:function(e){return new Uint8Array(e)},getLicenseServerURLFromInitData:function(){return null},getCDMData:function(){return null},getSessionId:function(){return null},getClearKeysFromProtectionData:function(e,t){var n=null;if(e){for(var r=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(t))),s=[],i=0;i<r.kids.length;i++){var a=r.kids[i],o=e.clearkeys&&e.clearkeys.hasOwnProperty(a)?e.clearkeys[a]:null;if(!o)throw new Error("DRM: ClearKey keyID ("+a+") is not known!");s.push(new E.default(a,o))}n=new l.default(s),u.warn("ClearKey schemeIdURI is using W3C Common PSSH systemID (1077efec-c0b2-4d02-ace3-3c1e52e2fb4b) in Content Protection. See DASH-IF IOP v4.1 section 7.6.2.4")}return n}}}u.__dashjs_factory_name="KeySystemW3CClearKey",n.default=dashjs.FactoryMaker.getSingletonFactory(u),t.exports=n.default},{21:21,23:23,3:3,4:4}],12:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var s=r(e(4)),i=r(e(3)),a="edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",o=i.default.WIDEVINE_KEYSTEM_STRING;function u(e){var t=null,n=(e=e||{}).BASE64;return{uuid:a,schemeIdURI:"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",systemString:o,init:function(e){e&&(t=e)},getInitData:function(e){return s.default.parseInitDataFromContentProtection(e,n)},getRequestHeadersFromMessage:function(){return null},getLicenseRequestFromMessage:function(e){return new Uint8Array(e)},getLicenseServerURLFromInitData:function(){return null},getCDMData:function(){return null},getSessionId:function(e){return t&&t.sessionId?t.sessionId:e&&e.sessionId?e.sessionId:null}}}u.__dashjs_factory_name="KeySystemWidevine",n.default=dashjs.FactoryMaker.getSingletonFactory(u),t.exports=n.default},{3:3,4:4}],13:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,s=e(1);function i(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,i),function(e,t,n){for(var r=!0;r;){var s=e,i=t,a=n;r=!1,null===s&&(s=Function.prototype);var o=Object.getOwnPropertyDescriptor(s,i);if(void 0!==o){if("value"in o)return o.value;var u=o.get;if(void 0===u)return;return u.call(a)}var E=Object.getPrototypeOf(s);if(null===E)return;e=E,t=i,n=a,r=!0,o=E=void 0}}(Object.getPrototypeOf(i.prototype),"constructor",this).call(this),this.MEDIA_KEYERR_CODE=100,this.MEDIA_KEYERR_UNKNOWN_CODE=101,this.MEDIA_KEYERR_CLIENT_CODE=102,this.MEDIA_KEYERR_SERVICE_CODE=103,this.MEDIA_KEYERR_OUTPUT_CODE=104,this.MEDIA_KEYERR_HARDWARECHANGE_CODE=105,this.MEDIA_KEYERR_DOMAIN_CODE=106,this.MEDIA_KEY_MESSAGE_ERROR_CODE=107,this.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_CODE=108,this.SERVER_CERTIFICATE_UPDATED_ERROR_CODE=109,this.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE=110,this.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_CODE=111,this.KEY_SYSTEM_ACCESS_DENIED_ERROR_CODE=112,this.KEY_SESSION_CREATED_ERROR_CODE=113,this.MEDIA_KEY_MESSAGE_LICENSER_ERROR_CODE=114,this.MEDIA_KEYERR_UNKNOWN_MESSAGE="An unspecified error occurred. This value is used for errors that don't match any of the other codes.",this.MEDIA_KEYERR_CLIENT_MESSAGE="The Key System could not be installed or updated.",this.MEDIA_KEYERR_SERVICE_MESSAGE="The message passed into update indicated an error from the license service.",this.MEDIA_KEYERR_OUTPUT_MESSAGE="There is no available output device with the required characteristics for the content protection system.",this.MEDIA_KEYERR_HARDWARECHANGE_MESSAGE="A hardware configuration change caused a content protection error.",this.MEDIA_KEYERR_DOMAIN_MESSAGE="An error occurred in a multi-device domain licensing configuration. The most common error is a failure to join the domain.",this.MEDIA_KEY_MESSAGE_ERROR_MESSAGE="Multiple key sessions were creates with a user-agent that does not support sessionIDs!! Unpredictable behavior ahead!",this.MEDIA_KEY_MESSAGE_NO_CHALLENGE_ERROR_MESSAGE="DRM: Empty key message from CDM",this.SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE="Error updating server certificate -- ",this.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE="DRM: KeyStatusChange error! -- License has expired",this.MEDIA_KEY_MESSAGE_NO_LICENSE_SERVER_URL_ERROR_MESSAGE="DRM: No license server URL specified!",this.KEY_SYSTEM_ACCESS_DENIED_ERROR_MESSAGE="DRM: KeySystem Access Denied! -- ",this.KEY_SESSION_CREATED_ERROR_MESSAGE="DRM: unable to create session! --",this.MEDIA_KEY_MESSAGE_LICENSER_ERROR_MESSAGE="DRM: licenser error! --"}var a=new(function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(i,((r=s)&&r.__esModule?r:{default:r}).default),i);n.default=a,t.exports=n.default},{1:1}],14:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var R=r(e(8)),h=r(e(27)),D=r(e(28)),M=r(e(22)),m=r(e(25)),C=r(e(24)),A=r(e(13));function s(e){e=e||{};var t=this.context,c=e.eventBus,f=e.events,n=e.debug,a=e.api,o=e.errHandler,r=void 0,u=void 0,y=void 0,s=void 0,S=void 0,E=void 0,l=void 0,d=void 0,i=void 0;function _(){y&&p();for(var e=0;e<l.length;e++)g(l[e]);c.trigger(f.TEARDOWN_COMPLETE)}function g(t){try{y[a.cancelKeyRequest](s.systemString,t.sessionID)}catch(e){c.trigger(f.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+t.sessionID+") "+e.message})}}function v(e,t){if(t&&e){for(var n=e.length,r=0;r<n;r++)if(e[r].sessionID==t)return e[r];return null}return null}function p(){y.removeEventListener(a.keyerror,i),y.removeEventListener(a.needkey,i),y.removeEventListener(a.keymessage,i),y.removeEventListener(a.keyadded,i)}return r={getAllInitData:function(){for(var e=[],t=0;t<E.length;t++)e.push(E[t].initData);for(t=0;t<l.length;t++)e.push(l[t].initData);return e},requestKeySystemAccess:function(e){var t=y;t=t||document.createElement("video");for(var n=!1,r=0;r<e.length;r++)for(var s=e[r].ks.systemString,i=e[r].configs,a=null,o=0;o<i.length;o++){var u=i[o].videoCapabilities;if(u&&0!==u.length){a=[];for(var E=0;E<u.length;E++)""!==t.canPlayType(u[E].contentType,s)&&a.push(u[E])}if(a&&(!a||0!==a.length)){n=!0;var l=new m.default(null,a),d=S.getKeySystemBySystemString(s);c.trigger(f.KEY_SYSTEM_ACCESS_COMPLETE,{data:new C.default(d,l)});break}}n||c.trigger(f.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})},getKeySystem:function(){return s},selectKeySystem:function(e){s=e.keySystem,c.trigger(f.INTERNAL_KEY_SYSTEM_SELECTED)},setMediaElement:function(e){if(y!==e){if(y){p();for(var t=0;t<l.length;t++)g(l[t]);l=[]}(y=e)&&(y.addEventListener(a.keyerror,i),y.addEventListener(a.needkey,i),y.addEventListener(a.keymessage,i),y.addEventListener(a.keyadded,i),c.trigger(f.VIDEO_ELEMENT_SELECTED))}},createKeySession:function(e){if(!s)throw new Error("Can not create sessions until you have selected a key system");if(d||0===l.length){var t={sessionID:null,initData:e,getSessionID:function(){return this.sessionID},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"}};return E.push(t),y[a.generateKeyRequest](s.systemString,new Uint8Array(e)),t}throw new Error("Multiple sessions not allowed!")},updateKeySession:function(e,t){var n=e.sessionID;if(S.isClearKey(s))for(var r=0;r<t.keyPairs.length;r++)y[a.addKey](s.systemString,t.keyPairs[r].key,t.keyPairs[r].keyID,n);else y[a.addKey](s.systemString,new Uint8Array(t),new Uint8Array(e.initData),n)},closeKeySession:g,setServerCertificate:function(){},loadKeySession:function(){},removeKeySession:function(){},stop:_,reset:_},u=n.getLogger(r),s=y=null,E=[],l=[],S=(0,R.default)(t).getInstance(),i={handleEvent:function(e){var t=null;switch(e.type){case a.needkey:var n=ArrayBuffer.isView(e.initData)?e.initData.buffer:e.initData;c.trigger(f.NEED_KEY,{key:new h.default(n,"cenc")});break;case a.keyerror:if(t=(t=v(l,e.sessionId))||v(E,e.sessionId)){var r=A.default.MEDIA_KEYERR_CODE,s="";switch(e.errorCode.code){case 1:r=A.default.MEDIA_KEYERR_UNKNOWN_CODE,s+="MEDIA_KEYERR_UNKNOWN - "+A.default.MEDIA_KEYERR_UNKNOWN_MESSAGE;break;case 2:r=A.default.MEDIA_KEYERR_CLIENT_CODE,s+="MEDIA_KEYERR_CLIENT - "+A.default.MEDIA_KEYERR_CLIENT_MESSAGE;break;case 3:r=A.default.MEDIA_KEYERR_SERVICE_CODE,s+="MEDIA_KEYERR_SERVICE - "+A.default.MEDIA_KEYERR_SERVICE_MESSAGE;break;case 4:r=A.default.MEDIA_KEYERR_OUTPUT_CODE,s+="MEDIA_KEYERR_OUTPUT - "+A.default.MEDIA_KEYERR_OUTPUT_MESSAGE;break;case 5:r=A.default.MEDIA_KEYERR_HARDWARECHANGE_CODE,s+="MEDIA_KEYERR_HARDWARECHANGE - "+A.default.MEDIA_KEYERR_HARDWARECHANGE_MESSAGE;break;case 6:r=A.default.MEDIA_KEYERR_DOMAIN_CODE,s+="MEDIA_KEYERR_DOMAIN - "+A.default.MEDIA_KEYERR_DOMAIN_MESSAGE}s+=" System Code = "+e.systemCode,c.trigger(f.KEY_ERROR,{data:new D.default(r,s,t)})}else u.error("No session token found for key error");break;case a.keyadded:(t=(t=v(l,e.sessionId))||v(E,e.sessionId))?(u.debug("DRM: Key added."),c.trigger(f.KEY_ADDED,{data:t})):u.debug("No session token found for key added");break;case a.keymessage:if((d=null!==e.sessionId&&void 0!==e.sessionId)?!(t=v(l,e.sessionId))&&0<E.length&&(t=E.shift(),l.push(t),t.sessionID=e.sessionId,c.trigger(f.KEY_SESSION_CREATED,{data:t})):0<E.length&&(t=E.shift(),l.push(t),0!==E.length&&o.error(new D.default(A.default.MEDIA_KEY_MESSAGE_ERROR_CODE,A.default.MEDIA_KEY_MESSAGE_ERROR_MESSAGE))),t){var i=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;t.keyMessage=i,c.trigger(f.INTERNAL_KEY_MESSAGE,{data:new M.default(t,i,e.defaultURL)})}else u.warn("No session token found for key message")}}},r}s.__dashjs_factory_name="ProtectionModel_01b",n.default=dashjs.FactoryMaker.getClassFactory(s),t.exports=n.default},{13:13,22:22,24:24,25:25,27:27,28:28,8:8}],15:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var g=r(e(8)),v=r(e(27)),p=r(e(13)),R=r(e(28)),h=r(e(22)),D=r(e(24)),M=r(e(3));function s(e){e=e||{};var t=this.context,a=e.eventBus,o=e.events,n=e.debug,r=void 0,u=void 0,E=void 0,s=void 0,l=void 0,d=void 0,i=void 0,c=void 0;function f(e){var t=e.session;return t.removeEventListener("keystatuseschange",e),t.removeEventListener("message",e),t.close()}function y(e){for(var t=0;t<d.length;t++)if(d[t]===e){d.splice(t,1);break}}function S(e){var t=void 0,n=void 0;return e&&0<e.length&&(e[0]&&("string"==typeof e[0]?t=e[0]:n=e[0]),e[1]&&("string"==typeof e[1]?t=e[1]:n=e[1])),{status:t,keyId:n}}function _(t,e,n,r){var s={session:t,initData:e,sessionId:r,handleEvent:function(e){switch(e.type){case"keystatuseschange":a.trigger(o.KEY_STATUSES_CHANGED,{data:this}),e.target.keyStatuses.forEach(function(){var e=S(arguments);switch(e.status){case"expired":a.trigger(o.INTERNAL_KEY_STATUS_CHANGED,{error:new R.default(p.default.KEY_STATUS_CHANGED_EXPIRED_ERROR_CODE,p.default.KEY_STATUS_CHANGED_EXPIRED_ERROR_MESSAGE)});break;default:a.trigger(o.INTERNAL_KEY_STATUS_CHANGED,e)}});break;case"message":var t=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;a.trigger(o.INTERNAL_KEY_MESSAGE,{data:new h.default(this,t,void 0,e.messageType)})}},getSessionID:function(){return t.sessionId},getExpirationTime:function(){return t.expiration},getKeyStatuses:function(){return t.keyStatuses},getUsable:function(){var e=!1;return t.keyStatuses.forEach(function(){"usable"===S(arguments).status&&(e=!0)}),e},getSessionType:function(){return n}};return t.addEventListener("keystatuseschange",s),t.addEventListener("message",s),t.closed.then(function(){y(s),u.debug("DRM: Session closed. SessionID = "+s.getSessionID()),a.trigger(o.KEY_SESSION_CLOSED,{data:s.getSessionID()})}),d.push(s),s}return r={getAllInitData:function(){for(var e=[],t=0;t<d.length;t++)d[t].initData&&e.push(d[t].initData);return e},requestKeySystemAccess:function(e){!function s(i,e){if(void 0===navigator.requestMediaKeySystemAccess||"function"!=typeof navigator.requestMediaKeySystemAccess)return void a.trigger(o.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Insecure origins are not allowed"});!function(t){var r=i[t].ks,e=i[t].configs,n=r.systemString;n===M.default.PLAYREADY_KEYSTEM_STRING&&"required"===e[0].persistentState&&(n+=".recommendation"),navigator.requestMediaKeySystemAccess(n,e).then(function(e){var t="function"==typeof e.getConfiguration?e.getConfiguration():null,n=new D.default(r,t);n.mksa=e,a.trigger(o.KEY_SYSTEM_ACCESS_COMPLETE,{data:n})}).catch(function(e){++t<i.length?s(i,t):a.trigger(o.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! "+e.message})})}(e)}(e,0)},getKeySystem:function(){return E},selectKeySystem:function(t){t.mksa.createMediaKeys().then(function(e){E=t.keySystem,l=e,s?s.setMediaKeys(l).then(function(){a.trigger(o.INTERNAL_KEY_SYSTEM_SELECTED)}):a.trigger(o.INTERNAL_KEY_SYSTEM_SELECTED)}).catch(function(){a.trigger(o.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+t.keySystem.systemString+")! Could not create MediaKeys -- TODO"})})},setMediaElement:function(e){s!==e&&(s&&(s.removeEventListener("encrypted",i),s.setMediaKeys&&s.setMediaKeys(null)),(s=e)&&(s.addEventListener("encrypted",i),s.setMediaKeys&&l&&s.setMediaKeys(l)))},setServerCertificate:function(e){if(!E||!l)throw new Error("Can not set server certificate until you have selected a key system");l.setServerCertificate(e).then(function(){u.info("DRM: License server certificate successfully updated."),a.trigger(o.SERVER_CERTIFICATE_UPDATED)}).catch(function(e){a.trigger(o.SERVER_CERTIFICATE_UPDATED,{error:new R.default(p.default.SERVER_CERTIFICATE_UPDATED_ERROR_CODE,p.default.SERVER_CERTIFICATE_UPDATED_ERROR_MESSAGE+e.name)})})},createKeySession:function(e,t,n){if(!E||!l)throw new Error("Can not create sessions until you have selected a key system");var r=l.createSession(n),s=_(r,e,n),i=this.getKeySystem().systemString===M.default.CLEARKEY_KEYSTEM_STRING&&t&&t.clearkeys?"keyids":"cenc";r.generateRequest(i,e).then(function(){u.debug("DRM: Session created. SessionID = "+s.getSessionID()),a.trigger(o.KEY_SESSION_CREATED,{data:s})}).catch(function(e){y(s),a.trigger(o.KEY_SESSION_CREATED,{data:null,error:new R.default(p.default.KEY_SESSION_CREATED_ERROR_CODE,p.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Error generating key request -- "+e.name)})})},updateKeySession:function(t,e){var n=t.session;c.isClearKey(E)&&(e=e.toJWK()),n.update(e).catch(function(e){a.trigger(o.KEY_ERROR,{data:new R.default(p.default.MEDIA_KEYERR_CODE,"Error sending update() message! "+e.name,t)})})},loadKeySession:function(t,e,n){if(!E||!l)throw new Error("Can not load sessions until you have selected a key system");for(var r=0;r<d.length;r++)if(t===d[r].sessionId)return void u.warn("DRM: Ignoring session ID because we have already seen it!");var s=l.createSession(n),i=_(s,e,n,t);s.load(t).then(function(e){e?(u.debug("DRM: Session loaded. SessionID = "+i.getSessionID()),a.trigger(o.KEY_SESSION_CREATED,{data:i})):(y(i),a.trigger(o.KEY_SESSION_CREATED,{data:null,error:new R.default(p.default.KEY_SESSION_CREATED_ERROR_CODE,p.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Could not load session! Invalid Session ID ("+t+")")}))}).catch(function(e){y(i),a.trigger(o.KEY_SESSION_CREATED,{data:null,error:new R.default(p.default.KEY_SESSION_CREATED_ERROR_CODE,p.default.KEY_SESSION_CREATED_ERROR_MESSAGE+"Could not load session ("+t+")! "+e.name)})})},removeKeySession:function(t){t.session.remove().then(function(){u.debug("DRM: Session removed. SessionID = "+t.getSessionID()),a.trigger(o.KEY_SESSION_REMOVED,{data:t.getSessionID()})},function(e){a.trigger(o.KEY_SESSION_REMOVED,{data:null,error:"Error removing session ("+t.getSessionID()+"). "+e.name})})},closeKeySession:function(t){f(t).catch(function(e){y(t),a.trigger(o.KEY_SESSION_CLOSED,{data:null,error:"Error closing session ("+t.getSessionID()+") "+e.name})})},stop:function(){for(var e=void 0,t=0;t<d.length;t++)(e=d[t]).getUsable()||f(e).catch(function(){y(e)})},reset:function(){var n=d.length,r=void 0;0!==n?function(){for(var t=function(e){y(e),0===d.length&&(s?(s.removeEventListener("encrypted",i),s.setMediaKeys(null).then(function(){a.trigger(o.TEARDOWN_COMPLETE)})):a.trigger(o.TEARDOWN_COMPLETE))},e=0;e<n;e++)!function(e){r.session.closed.then(function(){t(e)}),f(r).catch(function(){t(e)})}(r=d[e])}():a.trigger(o.TEARDOWN_COMPLETE)}},u=n.getLogger(r),l=s=E=null,d=[],c=(0,g.default)(t).getInstance(),i={handleEvent:function(e){switch(e.type){case"encrypted":if(e.initData){var t=ArrayBuffer.isView(e.initData)?e.initData.buffer:e.initData;a.trigger(o.NEED_KEY,{key:new v.default(t,e.initDataType)})}}}},r}s.__dashjs_factory_name="ProtectionModel_21Jan2015",n.default=dashjs.FactoryMaker.getClassFactory(s),t.exports=n.default},{13:13,22:22,24:24,27:27,28:28,3:3,8:8}],16:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var v=r(e(8)),p=r(e(27)),R=r(e(28)),h=r(e(13)),D=r(e(22)),M=r(e(25)),m=r(e(24));function s(e){e=e||{};var t=this.context,y=e.eventBus,S=e.events,n=e.debug,_=e.api,r=void 0,u=void 0,s=void 0,E=void 0,l=void 0,d=void 0,c=void 0,i=void 0,g=void 0;function a(){try{for(var e=0;e<c.length;e++)o(c[e]);s&&s.removeEventListener(_.needkey,i),y.trigger(S.TEARDOWN_COMPLETE)}catch(e){y.trigger(S.TEARDOWN_COMPLETE,{error:"Error tearing down key sessions and MediaKeys! -- "+e.message})}}function o(e){var t=e.session;t.removeEventListener(_.error,e),t.removeEventListener(_.message,e),t.removeEventListener(_.ready,e),t.removeEventListener(_.close,e);for(var n=0;n<c.length;n++)if(c[n]===e){c.splice(n,1);break}t[_.release]()}function f(){function e(){s.removeEventListener("loadedmetadata",t),s[_.setMediaKeys](l),y.trigger(S.VIDEO_ELEMENT_SELECTED)}var t=null;1<=s.readyState?e():(t=e.bind(this),s.addEventListener("loadedmetadata",t))}return r={getAllInitData:function(){for(var e=[],t=0;t<c.length;t++)e.push(c[t].initData);return e},requestKeySystemAccess:function(e){for(var t=!1,n=0;n<e.length;n++)for(var r=e[n].ks.systemString,s=e[n].configs,i=null,a=null,o=0;o<s.length;o++){var u=s[o].audioCapabilities,E=s[o].videoCapabilities;if(u&&0!==u.length){i=[];for(var l=0;l<u.length;l++)window[_.MediaKeys].isTypeSupported(r,u[l].contentType)&&i.push(u[l])}if(E&&0!==E.length){a=[];for(var d=0;d<E.length;d++)window[_.MediaKeys].isTypeSupported(r,E[d].contentType)&&a.push(E[d])}if(!(!i&&!a||i&&0===i.length||a&&0===a.length)){t=!0;var c=new M.default(i,a),f=g.getKeySystemBySystemString(r);y.trigger(S.KEY_SYSTEM_ACCESS_COMPLETE,{data:new m.default(f,c)});break}}t||y.trigger(S.KEY_SYSTEM_ACCESS_COMPLETE,{error:"Key system access denied! -- No valid audio/video content configurations detected!"})},getKeySystem:function(){return E},selectKeySystem:function(e){try{l=e.mediaKeys=new window[_.MediaKeys](e.keySystem.systemString),E=e.keySystem,d=e,s&&f(),y.trigger(S.INTERNAL_KEY_SYSTEM_SELECTED)}catch(e){y.trigger(S.INTERNAL_KEY_SYSTEM_SELECTED,{error:"Error selecting keys system ("+E.systemString+")! Could not create MediaKeys -- TODO"})}},setMediaElement:function(e){s!==e&&(s&&s.removeEventListener(_.needkey,i),(s=e)&&(s.addEventListener(_.needkey,i),l&&f()))},createKeySession:function(e,t,n,r){if(!E||!l||!d)throw new Error("Can not create sessions until you have selected a key system");var s=null;if(d.ksConfiguration.videoCapabilities&&0<d.ksConfiguration.videoCapabilities.length&&(s=d.ksConfiguration.videoCapabilities[0]),null===s&&d.ksConfiguration.audioCapabilities&&0<d.ksConfiguration.audioCapabilities.length&&(s=d.ksConfiguration.audioCapabilities[0]),null===s)throw new Error("Can not create sessions for unknown content types.");var i=s.contentType,a=l.createSession(i,new Uint8Array(e),r?new Uint8Array(r):null),o=function(e,t){return{session:e,initData:t,getSessionID:function(){return this.session.sessionId},getExpirationTime:function(){return NaN},getSessionType:function(){return"temporary"},handleEvent:function(e){switch(e.type){case _.error:y.trigger(S.KEY_ERROR,{data:new R.default(h.default.MEDIA_KEYERR_CODE,"KeyError",this)});break;case _.message:var t=ArrayBuffer.isView(e.message)?e.message.buffer:e.message;y.trigger(S.INTERNAL_KEY_MESSAGE,{data:new D.default(this,t,e.destinationURL)});break;case _.ready:u.debug("DRM: Key added."),y.trigger(S.KEY_ADDED);break;case _.close:u.debug("DRM: Session closed. SessionID = "+this.getSessionID()),y.trigger(S.KEY_SESSION_CLOSED,{data:this.getSessionID()})}}}}(a,e);a.addEventListener(_.error,o),a.addEventListener(_.message,o),a.addEventListener(_.ready,o),a.addEventListener(_.close,o),c.push(o),u.debug("DRM: Session created. SessionID = "+o.getSessionID()),y.trigger(S.KEY_SESSION_CREATED,{data:o})},updateKeySession:function(e,t){var n=e.session;g.isClearKey(E)?n.update(new Uint8Array(t.toJWK())):n.update(new Uint8Array(t))},closeKeySession:o,setServerCertificate:function(){},loadKeySession:function(){},removeKeySession:function(){},stop:a,reset:a},u=n.getLogger(r),d=l=E=s=null,c=[],g=(0,v.default)(t).getInstance(),i={handleEvent:function(e){switch(e.type){case _.needkey:if(e.initData){var t=ArrayBuffer.isView(e.initData)?e.initData.buffer:e.initData;y.trigger(S.NEED_KEY,{key:new p.default(t,"cenc")})}}}},r}s.__dashjs_factory_name="ProtectionModel_3Feb2014",n.default=dashjs.FactoryMaker.getClassFactory(s),t.exports=n.default},{13:13,22:22,24:24,25:25,27:27,28:28,8:8}],17:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(n,"__esModule",{value:!0});var a=r(e(23)),o=r(e(21));function s(){return{getServerURLFromMessage:function(e,t){var n=JSON.parse(String.fromCharCode.apply(null,new Uint8Array(t)));e+="/?";for(var r=0;r<n.kids.length;r++)e+=n.kids[r]+"&";return e=e.substring(0,e.length-1)},getHTTPMethod:function(){return"GET"},getResponseType:function(){return"json"},getLicenseMessage:function(e){if(!e.hasOwnProperty("keys"))return null;for(var t=[],n=0;n<e.keys.length;n++){var r=e.keys[n],s=r.kid.replace(/=/g,""),i=r.k.replace(/=/g,"");t.push(new a.default(s,i))}return new o.default(t)},getErrorResponse:function(e){return String.fromCharCode.apply(null,new Uint8Array(e))}}}s.__dashjs_factory_name="ClearKey",n.default=dashjs.FactoryMaker.getSingletonFactory(s),t.exports=n.default},{21:21,23:23}],18:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var r,s=e(3),i=(r=s)&&r.__esModule?r:{default:r};function a(e){var n=(e=e||{}).BASE64,r={};r[i.default.WIDEVINE_KEYSTEM_STRING]={responseType:"json",getLicenseMessage:function(e){return n.decodeArray(e.license)},getErrorResponse:function(e){return e}},r[i.default.PLAYREADY_KEYSTEM_STRING]={responseType:"arraybuffer",getLicenseMessage:function(e){return e},getErrorResponse:function(e){return String.fromCharCode.apply(null,new Uint8Array(e))}};return{getServerURLFromMessage:function(e){return e},getHTTPMethod:function(){return"POST"},getResponseType:function(e){return r[e].responseType},getLicenseMessage:function(e,t){return function(){if(!n||!n.hasOwnProperty("decodeArray"))throw new Error("Missing confi