/** * @license * Video.js 7.10.2 * Copyright Brightcove, Inc. * Available under Apache License Version 2.0 * * * Includes vtt.js * Available under Apache License Version 2.0 * */ !(function (e, t) { 'object' == typeof exports && 'undefined' != typeof module ? (module.exports = t(require('global/window'), require('global/document'))) : 'function' == typeof define && define.amd ? define(['global/window', 'global/document'], t) : ((e = e || self).videojs = t(e.window, e.document)); })(this, function (T, d) { 'use strict'; (T = T && Object.prototype.hasOwnProperty.call(T, 'default') ? T.default : T), (d = d && Object.prototype.hasOwnProperty.call(d, 'default') ? d.default : d); var h = '7.10.2', l = [], e = function (o, u) { return function (e, t, i) { var n = u.levels[t], r = new RegExp('^(' + n + ')$'); if (('log' !== e && i.unshift(e.toUpperCase() + ':'), i.unshift(o + ':'), l)) { l.push([].concat(i)); var a = l.length - 1e3; l.splice(0, 0 < a ? a : 0); } if (T.console) { var s = T.console[e]; s || 'debug' !== e || (s = T.console.info || T.console.log), s && n && r.test(e) && s[Array.isArray(i) ? 'apply' : 'call'](T.console, i); } }; }; var p = (function t(i) { function n() { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; r('log', a, t); } var r, a = 'info'; return ( (r = e(i, n)), (n.createLogger = function (e) { return t(i + ': ' + e); }), (n.levels = { all: 'debug|log|warn|error', off: '', debug: 'debug|log|warn|error', info: 'log|warn|error', warn: 'warn|error', error: 'error', DEFAULT: a }), (n.level = function (e) { if ('string' == typeof e) { if (!n.levels.hasOwnProperty(e)) throw new Error('"' + e + '" in not a valid log level'); a = e; } return a; }), ((n.history = function () { return l ? [].concat(l) : []; }).filter = function (t) { return (l || []).filter(function (e) { return new RegExp('.*' + t + '.*').test(e[0]); }); }), (n.history.clear = function () { l && (l.length = 0); }), (n.history.disable = function () { null !== l && ((l.length = 0), (l = null)); }), (n.history.enable = function () { null === l && (l = []); }), (n.error = function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; return r('error', a, t); }), (n.warn = function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; return r('warn', a, t); }), (n.debug = function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; return r('debug', a, t); }), n ); })('VIDEOJS'), f = p.createLogger; function t(e) { return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, 'default') ? e.default : e; } function i(e, t) { return e((t = { exports: {} }), t.exports), t.exports; } var m = i(function (e) { function t() { return ( (e.exports = t = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var i = arguments[t]; for (var n in i) Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]); } return e; }), t.apply(this, arguments) ); } e.exports = t; }), n = Object.prototype.toString, a = function (e) { return s(e) ? Object.keys(e) : []; }; function r(t, i) { a(t).forEach(function (e) { return i(t[e], e); }); } function g(i) { for (var e = arguments.length, t = new Array(1 < e ? e - 1 : 0), n = 1; n < e; n++) t[n - 1] = arguments[n]; return Object.assign ? m.apply(void 0, [i].concat(t)) : (t.forEach(function (e) { e && r(e, function (e, t) { i[t] = e; }); }), i); } function s(e) { return !!e && 'object' == typeof e; } function o(e) { return s(e) && '[object Object]' === n.call(e) && e.constructor === Object; } function u(e, t) { if (!e || !t) return ''; if ('function' != typeof T.getComputedStyle) return ''; var i = T.getComputedStyle(e); return i ? i.getPropertyValue(t) || i[t] : ''; } function c(e) { return 'string' == typeof e && Boolean(e.trim()); } function v(e) { if (0 <= e.indexOf(' ')) throw new Error('class has illegal whitespace characters'); } function y() { return d === T.document; } function _(e) { return s(e) && 1 === e.nodeType; } function b() { try { return T.parent !== T.self; } catch (e) { return !0; } } function S(n) { return function (e, t) { if (!c(e)) return d[n](null); c(t) && (t = d.querySelector(t)); var i = _(t) ? t : d; return i[n] && i[n](e); }; } function k(e, i, t, n) { void 0 === e && (e = 'div'), void 0 === i && (i = {}), void 0 === t && (t = {}); var r = d.createElement(e); return ( Object.getOwnPropertyNames(i).forEach(function (e) { var t = i[e]; -1 !== e.indexOf('aria-') || 'role' === e || 'type' === e ? (p.warn( 'Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set ' + e + ' to ' + t + '.' ), r.setAttribute(e, t)) : 'textContent' === e ? C(r, t) : r[e] !== t && (r[e] = t); }), Object.getOwnPropertyNames(t).forEach(function (e) { r.setAttribute(e, t[e]); }), n && H(r, n), r ); } function C(e, t) { return 'undefined' == typeof e.textContent ? (e.innerText = t) : (e.textContent = t), e; } function E(e, t) { t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e); } function w(e, t) { return ( v(t), e.classList ? e.classList.contains(t) : (function (e) { return new RegExp('(^|\\s)' + e + '($|\\s)'); })(t).test(e.className) ); } function I(e, t) { return ( e.classList ? e.classList.add(t) : w(e, t) || (e.className = (e.className + ' ' + t).trim()), e ); } function A(e, t) { return ( e.classList ? e.classList.remove(t) : (v(t), (e.className = e.className .split(/\s+/) .filter(function (e) { return e !== t; }) .join(' '))), e ); } function x(e, t, i) { var n = w(e, t); if (('function' == typeof i && (i = i(e, t)), 'boolean' != typeof i && (i = !n), i !== n)) return i ? I(e, t) : A(e, t), e; } function P(i, n) { Object.getOwnPropertyNames(n).forEach(function (e) { var t = n[e]; null === t || 'undefined' == typeof t || !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? '' : t); }); } function L(e) { var t = {}, i = ',autoplay,controls,playsinline,loop,muted,default,defaultMuted,'; if (e && e.attributes && 0 < e.attributes.length) for (var n = e.attributes, r = n.length - 1; 0 <= r; r--) { var a = n[r].name, s = n[r].value; ('boolean' != typeof e[a] && -1 === i.indexOf(',' + a + ',')) || (s = null !== s), (t[a] = s); } return t; } function O(e, t) { return e.getAttribute(t); } function D(e, t, i) { e.setAttribute(t, i); } function M(e, t) { e.removeAttribute(t); } function R() { d.body.focus(), (d.onselectstart = function () { return !1; }); } function N() { d.onselectstart = function () { return !0; }; } function U(e) { if (e && e.getBoundingClientRect && e.parentNode) { var t = e.getBoundingClientRect(), i = {}; return ( ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (e) { void 0 !== t[e] && (i[e] = t[e]); }), i.height || (i.height = parseFloat(u(e, 'height'))), i.width || (i.width = parseFloat(u(e, 'width'))), i ); } } function F(e) { if (!e || (e && !e.offsetParent)) return { left: 0, top: 0, width: 0, height: 0 }; for ( var t = e.offsetWidth, i = e.offsetHeight, n = 0, r = 0; (n += e.offsetLeft), (r += e.offsetTop), (e = e.offsetParent); ); return { left: n, top: r, width: t, height: i }; } function B(e, t) { var i = {}, n = F(t.target), r = F(e), a = r.width, s = r.height, o = t.offsetY - (r.top - n.top), u = t.offsetX - (r.left - n.left); return ( t.changedTouches && ((u = t.changedTouches[0].pageX - r.left), (o = t.changedTouches[0].pageY + r.top)), (i.y = 1 - Math.max(0, Math.min(1, o / s))), (i.x = Math.max(0, Math.min(1, u / a))), i ); } function j(e) { return s(e) && 3 === e.nodeType; } function V(e) { for (; e.firstChild; ) e.removeChild(e.firstChild); return e; } function q(e) { return ( 'function' == typeof e && (e = e()), (Array.isArray(e) ? e : [e]) .map(function (e) { return ( 'function' == typeof e && (e = e()), _(e) || j(e) ? e : 'string' == typeof e && /\S/.test(e) ? d.createTextNode(e) : void 0 ); }) .filter(function (e) { return e; }) ); } function H(t, e) { return ( q(e).forEach(function (e) { return t.appendChild(e); }), t ); } function W(e, t) { return H(V(e), t); } function z(e) { return ( (void 0 === e.button && void 0 === e.buttons) || (0 === e.button && void 0 === e.buttons) || ('mouseup' === e.type && 0 === e.button && 0 === e.buttons) || (0 === e.button && 1 === e.buttons) ); } var G, X = S('querySelector'), K = S('querySelectorAll'), Y = Object.freeze({ __proto__: null, isReal: y, isEl: _, isInFrame: b, createEl: k, textContent: C, prependTo: E, hasClass: w, addClass: I, removeClass: A, toggleClass: x, setAttributes: P, getAttributes: L, getAttribute: O, setAttribute: D, removeAttribute: M, blockTextSelection: R, unblockTextSelection: N, getBoundingClientRect: U, findPosition: F, getPointerPosition: B, isTextNode: j, emptyEl: V, normalizeContent: q, appendContent: H, insertContent: W, isSingleLeftClick: z, $: X, $$: K }), $ = !1, Q = function () { if (y() && !1 !== G.options.autoSetup) { var e = Array.prototype.slice.call(d.getElementsByTagName('video')), t = Array.prototype.slice.call(d.getElementsByTagName('audio')), i = Array.prototype.slice.call(d.getElementsByTagName('video-js')), n = e.concat(t, i); if (n && 0 < n.length) for (var r = 0, a = n.length; r < a; r++) { var s = n[r]; if (!s || !s.getAttribute) { J(1); break; } void 0 === s.player && null !== s.getAttribute('data-setup') && G(s); } else $ || J(1); } }; function J(e, t) { t && (G = t), T.setTimeout(Q, e); } function Z() { ($ = !0), T.removeEventListener('load', Z); } y() && ('complete' === d.readyState ? Z() : T.addEventListener('load', Z)); function ee(e) { var t = d.createElement('style'); return (t.className = e), t; } function te(e, t) { e.styleSheet ? (e.styleSheet.cssText = t) : (e.textContent = t); } var ie, ne = 3; function re() { return ne++; } T.WeakMap || (ie = (function () { function e() { (this.vdata = 'vdata' + Math.floor((T.performance && T.performance.now()) || Date.now())), (this.data = {}); } var t = e.prototype; return ( (t.set = function (e, t) { var i = e[this.vdata] || re(); return e[this.vdata] || (e[this.vdata] = i), (this.data[i] = t), this; }), (t.get = function (e) { var t = e[this.vdata]; if (t) return this.data[t]; p('We have no data for this element', e); }), (t.has = function (e) { return e[this.vdata] in this.data; }), (t.delete = function (e) { var t = e[this.vdata]; t && (delete this.data[t], delete e[this.vdata]); }), e ); })()); var ae, se = T.WeakMap ? new WeakMap() : new ie(); function oe(e, t) { if (se.has(e)) { var i = se.get(e); 0 === i.handlers[t].length && (delete i.handlers[t], e.removeEventListener ? e.removeEventListener(t, i.dispatcher, !1) : e.detachEvent && e.detachEvent('on' + t, i.dispatcher)), Object.getOwnPropertyNames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled), 0 === Object.getOwnPropertyNames(i).length && se.delete(e); } } function ue(t, i, e, n) { e.forEach(function (e) { t(i, e, n); }); } function le(e) { if (e.fixed_) return e; function t() { return !0; } function i() { return !1; } if (!e || !e.isPropagationStopped) { var n = e || T.event; for (var r in ((e = {}), n)) 'layerX' !== r && 'layerY' !== r && 'keyLocation' !== r && 'webkitMovementX' !== r && 'webkitMovementY' !== r && (('returnValue' === r && n.preventDefault) || (e[r] = n[r])); if ( (e.target || (e.target = e.srcElement || d), e.relatedTarget || (e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement), (e.preventDefault = function () { n.preventDefault && n.preventDefault(), (e.returnValue = !1), (n.returnValue = !1), (e.defaultPrevented = !0); }), (e.defaultPrevented = !1), (e.stopPropagation = function () { n.stopPropagation && n.stopPropagation(), (e.cancelBubble = !0), (n.cancelBubble = !0), (e.isPropagationStopped = t); }), (e.isPropagationStopped = i), (e.stopImmediatePropagation = function () { n.stopImmediatePropagation && n.stopImmediatePropagation(), (e.isImmediatePropagationStopped = t), e.stopPropagation(); }), (e.isImmediatePropagationStopped = i), null !== e.clientX && void 0 !== e.clientX) ) { var a = d.documentElement, s = d.body; (e.pageX = e.clientX + ((a && a.scrollLeft) || (s && s.scrollLeft) || 0) - ((a && a.clientLeft) || (s && s.clientLeft) || 0)), (e.pageY = e.clientY + ((a && a.scrollTop) || (s && s.scrollTop) || 0) - ((a && a.clientTop) || (s && s.clientTop) || 0)); } (e.which = e.charCode || e.keyCode), null !== e.button && void 0 !== e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0); } return (e.fixed_ = !0), e; } var ce = function () { if ('boolean' != typeof ae) { ae = !1; try { var e = Object.defineProperty({}, 'passive', { get: function () { ae = !0; } }); T.addEventListener('test', null, e), T.removeEventListener('test', null, e); } catch (e) {} } return ae; }, de = ['touchstart', 'touchmove']; function he(s, e, t) { if (Array.isArray(e)) return ue(he, s, e, t); se.has(s) || se.set(s, {}); var o = se.get(s); if ( (o.handlers || (o.handlers = {}), o.handlers[e] || (o.handlers[e] = []), t.guid || (t.guid = re()), o.handlers[e].push(t), o.dispatcher || ((o.disabled = !1), (o.dispatcher = function (e, t) { if (!o.disabled) { e = le(e); var i = o.handlers[e.type]; if (i) for ( var n = i.slice(0), r = 0, a = n.length; r < a && !e.isImmediatePropagationStopped(); r++ ) try { n[r].call(s, e, t); } catch (e) { p.error(e); } } })), 1 === o.handlers[e].length) ) if (s.addEventListener) { var i = !1; ce() && -1 < de.indexOf(e) && (i = { passive: !0 }), s.addEventListener(e, o.dispatcher, i); } else s.attachEvent && s.attachEvent('on' + e, o.dispatcher); } function pe(e, t, i) { if (se.has(e)) { var n = se.get(e); if (n.handlers) { if (Array.isArray(t)) return ue(pe, e, t, i); var r = function (e, t) { (n.handlers[t] = []), oe(e, t); }; if (void 0 !== t) { var a = n.handlers[t]; if (a) if (i) { if (i.guid) for (var s = 0; s < a.length; s++) a[s].guid === i.guid && a.splice(s--, 1); oe(e, t); } else r(e, t); } else for (var o in n.handlers) Object.prototype.hasOwnProperty.call(n.handlers || {}, o) && r(e, o); } } } function fe(e, t, i) { var n = se.has(e) ? se.get(e) : {}, r = e.parentNode || e.ownerDocument; if ( ('string' == typeof t ? (t = { type: t, target: e }) : t.target || (t.target = e), (t = le(t)), n.dispatcher && n.dispatcher.call(e, t, i), r && !t.isPropagationStopped() && !0 === t.bubbles) ) fe.call(null, r, t, i); else if (!r && !t.defaultPrevented && t.target && t.target[t.type]) { se.has(t.target) || se.set(t.target, {}); var a = se.get(t.target); t.target[t.type] && ((a.disabled = !0), 'function' == typeof t.target[t.type] && t.target[t.type](), (a.disabled = !1)); } return !t.defaultPrevented; } function me(e, t, i) { if (Array.isArray(t)) return ue(me, e, t, i); function n() { pe(e, t, n), i.apply(this, arguments); } (n.guid = i.guid = i.guid || re()), he(e, t, n); } function ge(e, t, i) { function n() { pe(e, t, n), i.apply(this, arguments); } (n.guid = i.guid = i.guid || re()), he(e, t, n); } function ve(e, t, i) { t.guid || (t.guid = re()); var n = t.bind(e); return (n.guid = i ? i + '_' + t.guid : t.guid), n; } function ye(t, i) { var n = T.performance.now(); return function () { var e = T.performance.now(); i <= e - n && (t.apply(void 0, arguments), (n = e)); }; } function _e() {} var be, Te = Object.freeze({ __proto__: null, fixEvent: le, on: he, off: pe, trigger: fe, one: me, any: ge }); (_e.prototype.allowedEvents_ = {}), (_e.prototype.addEventListener = _e.prototype.on = function (e, t) { var i = this.addEventListener; (this.addEventListener = function () {}), he(this, e, t), (this.addEventListener = i); }), (_e.prototype.removeEventListener = _e.prototype.off = function (e, t) { pe(this, e, t); }), (_e.prototype.one = function (e, t) { var i = this.addEventListener; (this.addEventListener = function () {}), me(this, e, t), (this.addEventListener = i); }), (_e.prototype.any = function (e, t) { var i = this.addEventListener; (this.addEventListener = function () {}), ge(this, e, t), (this.addEventListener = i); }), (_e.prototype.dispatchEvent = _e.prototype.trigger = function (e) { var t = e.type || e; 'string' == typeof e && (e = { type: t }), (e = le(e)), this.allowedEvents_[t] && this['on' + t] && this['on' + t](e), fe(this, e); }), (_e.prototype.queueTrigger = function (e) { var t = this; be = be || new Map(); var i = e.type || e, n = be.get(this); n || ((n = new Map()), be.set(this, n)); var r = n.get(i); n.delete(i), T.clearTimeout(r); var a = T.setTimeout(function () { 0 === n.size && ((n = null), be.delete(t)), t.trigger(e); }, 0); n.set(i, a); }); function Se(e) { return ('string' == typeof e && /\S/.test(e)) || (Array.isArray(e) && !!e.length); } function ke(e) { if (!e.nodeName && !Ae(e)) throw new Error('Invalid target; must be a DOM node or evented object.'); } function Ce(e) { if (!Se(e)) throw new Error('Invalid event type; must be a non-empty string or array.'); } function Ee(e) { if ('function' != typeof e) throw new Error('Invalid listener; must be a function.'); } function we(e, t) { var i, n, r, a = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_; return ( (r = a ? ((i = e.eventBusEl_), 3 <= t.length && t.shift(), (n = t[0]), t[1]) : ((i = t[0]), (n = t[1]), t[2])), ke(i), Ce(n), Ee(r), { isTargetingSelf: a, target: i, type: n, listener: (r = ve(e, r)) } ); } function Ie(e, t, i, n) { ke(e), e.nodeName ? Te[t](e, i, n) : e[t](i, n); } var Ae = function (t) { return ( t instanceof _e || (!!t.eventBusEl_ && ['on', 'one', 'off', 'trigger'].every(function (e) { return 'function' == typeof t[e]; })) ); }, xe = { on: function () { for (var e = this, t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]; var r = we(this, i), a = r.isTargetingSelf, s = r.target, o = r.type, u = r.listener; if ((Ie(s, 'on', o, u), !a)) { var l = function () { return e.off(s, o, u); }; l.guid = u.guid; var c = function () { return e.off('dispose', l); }; (c.guid = u.guid), Ie(this, 'on', 'dispose', l), Ie(s, 'on', 'dispose', c); } }, one: function () { for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; var n = we(this, t), a = n.isTargetingSelf, s = n.target, o = n.type, u = n.listener; if (a) Ie(s, 'one', o, u); else { var l = function e() { r.off(s, o, e); for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]; u.apply(null, i); }; (l.guid = u.guid), Ie(s, 'one', o, l); } }, any: function () { for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; var n = we(this, t), a = n.isTargetingSelf, s = n.target, o = n.type, u = n.listener; if (a) Ie(s, 'any', o, u); else { var l = function e() { r.off(s, o, e); for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]; u.apply(null, i); }; (l.guid = u.guid), Ie(s, 'any', o, l); } }, off: function (e, t, i) { if (!e || Se(e)) pe(this.eventBusEl_, e, t); else { var n = e, r = t; ke(n), Ce(r), Ee(i), (i = ve(this, i)), this.off('dispose', i), n.nodeName ? (pe(n, r, i), pe(n, 'dispose', i)) : Ae(n) && (n.off(r, i), n.off('dispose', i)); } }, trigger: function (e, t) { return fe(this.eventBusEl_, e, t); } }; function Pe(e, t) { void 0 === t && (t = {}); var i = t.eventBusKey; if (i) { if (!e[i].nodeName) throw new Error('The eventBusKey "' + i + '" does not refer to an element.'); e.eventBusEl_ = e[i]; } else e.eventBusEl_ = k('span', { className: 'vjs-event-bus' }); return ( g(e, xe), e.eventedCallbacks && e.eventedCallbacks.forEach(function (e) { e(); }), e.on('dispose', function () { e.off(), T.setTimeout(function () { e.eventBusEl_ = null; }, 0); }), e ); } var Le = { state: {}, setState: function (e) { var i, n = this; return ( 'function' == typeof e && (e = e()), r(e, function (e, t) { n.state[t] !== e && ((i = i || {})[t] = { from: n.state[t], to: e }), (n.state[t] = e); }), i && Ae(this) && this.trigger({ changes: i, type: 'statechanged' }), i ); } }; function Oe(e, t) { return ( g(e, Le), (e.state = g({}, e.state, t)), 'function' == typeof e.handleStateChanged && Ae(e) && e.on('statechanged', e.handleStateChanged), e ); } function De(e) { return 'string' != typeof e ? e : e.replace(/./, function (e) { return e.toLowerCase(); }); } function Me(e) { return 'string' != typeof e ? e : e.replace(/./, function (e) { return e.toUpperCase(); }); } function Re() { for (var i = {}, e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]; return ( t.forEach(function (e) { e && r(e, function (e, t) { o(e) ? (o(i[t]) || (i[t] = {}), (i[t] = Re(i[t], e))) : (i[t] = e); }); }), i ); } var Ne = (function () { function e() { this.map_ = {}; } var t = e.prototype; return ( (t.has = function (e) { return e in this.map_; }), (t.delete = function (e) { var t = this.has(e); return delete this.map_[e], t; }), (t.set = function (e, t) { return (this.set_[e] = t), this; }), (t.forEach = function (e, t) { for (var i in this.map_) e.call(t, this.map_[i], i, this); }), e ); })(), Ue = T.Map ? T.Map : Ne, Fe = (function () { function e() { this.set_ = {}; } var t = e.prototype; return ( (t.has = function (e) { return e in this.set_; }), (t.delete = function (e) { var t = this.has(e); return delete this.set_[e], t; }), (t.add = function (e) { return (this.set_[e] = 1), this; }), (t.forEach = function (e, t) { for (var i in this.set_) e.call(t, i, i, this); }), e ); })(), Be = T.Set ? T.Set : Fe, je = (function () { function l(e, t, i) { if ( (!e && this.play ? (this.player_ = e = this) : (this.player_ = e), (this.isDisposed_ = !1), (this.parentComponent_ = null), (this.options_ = Re({}, this.options_)), (t = this.options_ = Re(this.options_, t)), (this.id_ = t.id || (t.el && t.el.id)), !this.id_) ) { var n = (e && e.id && e.id()) || 'no_player'; this.id_ = n + '_component_' + re(); } (this.name_ = t.name || null), t.el ? (this.el_ = t.el) : !1 !== t.createEl && (this.el_ = this.createEl()), !1 !== t.evented && Pe(this, { eventBusKey: this.el_ ? 'el_' : null }), Oe(this, this.constructor.defaultState), (this.children_ = []), (this.childIndex_ = {}), (this.childNameIndex_ = {}), (this.setTimeoutIds_ = new Be()), (this.setIntervalIds_ = new Be()), (this.rafIds_ = new Be()), (this.namedRafs_ = new Ue()), (this.clearingTimersOnDispose_ = !1) !== t.initChildren && this.initChildren(), this.ready(i), !1 !== t.reportTouchActivity && this.enableTouchActivity(); } var e = l.prototype; return ( (e.dispose = function () { if (!this.isDisposed_) { if ( (this.trigger({ type: 'dispose', bubbles: !1 }), (this.isDisposed_ = !0), this.children_) ) for (var e = this.children_.length - 1; 0 <= e; e--) this.children_[e].dispose && this.children_[e].dispose(); (this.children_ = null), (this.childIndex_ = null), (this.childNameIndex_ = null), (this.parentComponent_ = null), this.el_ && (this.el_.parentNode && this.el_.parentNode.removeChild(this.el_), se.has(this.el_) && se.delete(this.el_), (this.el_ = null)), (this.player_ = null); } }), (e.isDisposed = function () { return Boolean(this.isDisposed_); }), (e.player = function () { return this.player_; }), (e.options = function (e) { return e && (this.options_ = Re(this.options_, e)), this.options_; }), (e.el = function () { return this.el_; }), (e.createEl = function (e, t, i) { return k(e, t, i); }), (e.localize = function (e, r, t) { void 0 === t && (t = e); var i = this.player_.language && this.player_.language(), n = this.player_.languages && this.player_.languages(), a = n && n[i], s = i && i.split('-')[0], o = n && n[s], u = t; return ( a && a[e] ? (u = a[e]) : o && o[e] && (u = o[e]), r && (u = u.replace(/\{(\d+)\}/g, function (e, t) { var i = r[t - 1], n = i; return 'undefined' == typeof i && (n = e), n; })), u ); }), (e.contentEl = function () { return this.contentEl_ || this.el_; }), (e.id = function () { return this.id_; }), (e.name = function () { return this.name_; }), (e.children = function () { return this.children_; }), (e.getChildById = function (e) { return this.childIndex_[e]; }), (e.getChild = function (e) { if (e) return this.childNameIndex_[e]; }), (e.getDescendant = function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; t = t.reduce(function (e, t) { return e.concat(t); }, []); for (var n = this, r = 0; r < t.length; r++) if (!(n = n.getChild(t[r])) || !n.getChild) return; return n; }), (e.addChild = function (e, t, i) { var n, r; if ( (void 0 === t && (t = {}), void 0 === i && (i = this.children_.length), 'string' == typeof e) ) { r = Me(e); var a = t.componentClass || r; t.name = r; var s = l.getComponent(a); if (!s) throw new Error('Component ' + a + ' does not exist'); if ('function' != typeof s) return null; n = new s(this.player_ || this, t); } else n = e; if ( (n.parentComponent_ && n.parentComponent_.removeChild(n), this.children_.splice(i, 0, n), (n.parentComponent_ = this), 'function' == typeof n.id && (this.childIndex_[n.id()] = n), (r = r || (n.name && Me(n.name()))) && ((this.childNameIndex_[r] = n), (this.childNameIndex_[De(r)] = n)), 'function' == typeof n.el && n.el()) ) { var o = null; this.children_[i + 1] && (this.children_[i + 1].el_ ? (o = this.children_[i + 1].el_) : _(this.children_[i + 1]) && (o = this.children_[i + 1])), this.contentEl().insertBefore(n.el(), o); } return n; }), (e.removeChild = function (e) { if (('string' == typeof e && (e = this.getChild(e)), e && this.children_)) { for (var t = !1, i = this.children_.length - 1; 0 <= i; i--) if (this.children_[i] === e) { (t = !0), this.children_.splice(i, 1); break; } if (t) { (e.parentComponent_ = null), (this.childIndex_[e.id()] = null), (this.childNameIndex_[Me(e.name())] = null), (this.childNameIndex_[De(e.name())] = null); var n = e.el(); n && n.parentNode === this.contentEl() && this.contentEl().removeChild(e.el()); } } }), (e.initChildren = function () { var r = this, n = this.options_.children; if (n) { var e, a = this.options_, i = l.getComponent('Tech'); (e = Array.isArray(n) ? n : Object.keys(n)) .concat( Object.keys(this.options_).filter(function (t) { return !e.some(function (e) { return 'string' == typeof e ? t === e : t === e.name; }); }) ) .map(function (e) { var t, i; return ( (i = 'string' == typeof e ? n[(t = e)] || r.options_[t] || {} : ((t = e.name), e)), { name: t, opts: i } ); }) .filter(function (e) { var t = l.getComponent(e.opts.componentClass || Me(e.name)); return t && !i.isTech(t); }) .forEach(function (e) { var t = e.name, i = e.opts; if ((void 0 !== a[t] && (i = a[t]), !1 !== i)) { !0 === i && (i = {}), (i.playerOptions = r.options_.playerOptions); var n = r.addChild(t, i); n && (r[t] = n); } }); } }), (e.buildCSSClass = function () { return ''; }), (e.ready = function (e, t) { if ((void 0 === t && (t = !1), e)) return this.isReady_ ? void (t ? e.call(this) : this.setTimeout(e, 1)) : ((this.readyQueue_ = this.readyQueue_ || []), void this.readyQueue_.push(e)); }), (e.triggerReady = function () { (this.isReady_ = !0), this.setTimeout(function () { var e = this.readyQueue_; (this.readyQueue_ = []), e && 0 < e.length && e.forEach(function (e) { e.call(this); }, this), this.trigger('ready'); }, 1); }), (e.$ = function (e, t) { return X(e, t || this.contentEl()); }), (e.$$ = function (e, t) { return K(e, t || this.contentEl()); }), (e.hasClass = function (e) { return w(this.el_, e); }), (e.addClass = function (e) { I(this.el_, e); }), (e.removeClass = function (e) { A(this.el_, e); }), (e.toggleClass = function (e, t) { x(this.el_, e, t); }), (e.show = function () { this.removeClass('vjs-hidden'); }), (e.hide = function () { this.addClass('vjs-hidden'); }), (e.lockShowing = function () { this.addClass('vjs-lock-showing'); }), (e.unlockShowing = function () { this.removeClass('vjs-lock-showing'); }), (e.getAttribute = function (e) { return O(this.el_, e); }), (e.setAttribute = function (e, t) { D(this.el_, e, t); }), (e.removeAttribute = function (e) { M(this.el_, e); }), (e.width = function (e, t) { return this.dimension('width', e, t); }), (e.height = function (e, t) { return this.dimension('height', e, t); }), (e.dimensions = function (e, t) { this.width(e, !0), this.height(t); }), (e.dimension = function (e, t, i) { if (void 0 !== t) return ( (null !== t && t == t) || (t = 0), -1 !== ('' + t).indexOf('%') || -1 !== ('' + t).indexOf('px') ? (this.el_.style[e] = t) : (this.el_.style[e] = 'auto' === t ? '' : t + 'px'), void (i || this.trigger('componentresize')) ); if (!this.el_) return 0; var n = this.el_.style[e], r = n.indexOf('px'); return -1 !== r ? parseInt(n.slice(0, r), 10) : parseInt(this.el_['offset' + Me(e)], 10); }), (e.currentDimension = function (e) { var t = 0; if ('width' !== e && 'height' !== e) throw new Error('currentDimension only accepts width or height value'); if (((t = u(this.el_, e)), 0 === (t = parseFloat(t)) || isNaN(t))) { var i = 'offset' + Me(e); t = this.el_[i]; } return t; }), (e.currentDimensions = function () { return { width: this.currentDimension('width'), height: this.currentDimension('height') }; }), (e.currentWidth = function () { return this.currentDimension('width'); }), (e.currentHeight = function () { return this.currentDimension('height'); }), (e.focus = function () { this.el_.focus(); }), (e.blur = function () { this.el_.blur(); }), (e.handleKeyDown = function (e) { this.player_ && (e.stopPropagation(), this.player_.handleKeyDown(e)); }), (e.handleKeyPress = function (e) { this.handleKeyDown(e); }), (e.emitTapEvents = function () { var n, t = 0, r = null; this.on('touchstart', function (e) { 1 === e.touches.length && ((r = { pageX: e.touches[0].pageX, pageY: e.touches[0].pageY }), (t = T.performance.now()), (n = !0)); }), this.on('touchmove', function (e) { if (1 < e.touches.length) n = !1; else if (r) { var t = e.touches[0].pageX - r.pageX, i = e.touches[0].pageY - r.pageY; 10 < Math.sqrt(t * t + i * i) && (n = !1); } }); function e() { n = !1; } this.on('touchleave', e), this.on('touchcancel', e), this.on('touchend', function (e) { !(r = null) === n && T.performance.now() - t < 200 && (e.preventDefault(), this.trigger('tap')); }); }), (e.enableTouchActivity = function () { if (this.player() && this.player().reportUserActivity) { var t, i = ve(this.player(), this.player().reportUserActivity); this.on('touchstart', function () { i(), this.clearInterval(t), (t = this.setInterval(i, 250)); }); var e = function (e) { i(), this.clearInterval(t); }; this.on('touchmove', i), this.on('touchend', e), this.on('touchcancel', e); } }), (e.setTimeout = function (e, t) { var i, n = this; return ( (e = ve(this, e)), this.clearTimersOnDispose_(), (i = T.setTimeout(function () { n.setTimeoutIds_.has(i) && n.setTimeoutIds_.delete(i), e(); }, t)), this.setTimeoutIds_.add(i), i ); }), (e.clearTimeout = function (e) { return ( this.setTimeoutIds_.has(e) && (this.setTimeoutIds_.delete(e), T.clearTimeout(e)), e ); }), (e.setInterval = function (e, t) { (e = ve(this, e)), this.clearTimersOnDispose_(); var i = T.setInterval(e, t); return this.setIntervalIds_.add(i), i; }), (e.clearInterval = function (e) { return ( this.setIntervalIds_.has(e) && (this.setIntervalIds_.delete(e), T.clearInterval(e)), e ); }), (e.requestAnimationFrame = function (e) { var t, i = this; return this.supportsRaf_ ? (this.clearTimersOnDispose_(), (e = ve(this, e)), (t = T.requestAnimationFrame(function () { i.rafIds_.has(t) && i.rafIds_.delete(t), e(); })), this.rafIds_.add(t), t) : this.setTimeout(e, 1e3 / 60); }), (e.requestNamedAnimationFrame = function (e, t) { var i = this; if (!this.namedRafs_.has(e)) { this.clearTimersOnDispose_(), (t = ve(this, t)); var n = this.requestAnimationFrame(function () { t(), i.namedRafs_.has(e) && i.namedRafs_.delete(e); }); return this.namedRafs_.set(e, n), e; } }), (e.cancelNamedAnimationFrame = function (e) { this.namedRafs_.has(e) && (this.cancelAnimationFrame(this.namedRafs_.get(e)), this.namedRafs_.delete(e)); }), (e.cancelAnimationFrame = function (e) { return this.supportsRaf_ ? (this.rafIds_.has(e) && (this.rafIds_.delete(e), T.cancelAnimationFrame(e)), e) : this.clearTimeout(e); }), (e.clearTimersOnDispose_ = function () { var n = this; this.clearingTimersOnDispose_ || ((this.clearingTimersOnDispose_ = !0), this.one('dispose', function () { [ ['namedRafs_', 'cancelNamedAnimationFrame'], ['rafIds_', 'cancelAnimationFrame'], ['setTimeoutIds_', 'clearTimeout'], ['setIntervalIds_', 'clearInterval'] ].forEach(function (e) { var t = e[0], i = e[1]; n[t].forEach(function (e, t) { return n[i](t); }); }), (n.clearingTimersOnDispose_ = !1); })); }), (l.registerComponent = function (e, t) { if ('string' != typeof e || !e) throw new Error('Illegal component name, "' + e + '"; must be a non-empty string.'); var i, n = l.getComponent('Tech'), r = n && n.isTech(t), a = l === t || l.prototype.isPrototypeOf(t.prototype); if (r || !a) throw ( ((i = r ? 'techs must be registered using Tech.registerTech()' : 'must be a Component subclass'), new Error('Illegal component, "' + e + '"; ' + i + '.')) ); (e = Me(e)), l.components_ || (l.components_ = {}); var s = l.getComponent('Player'); if ('Player' === e && s && s.players) { var o = s.players, u = Object.keys(o); if ( o && 0 < u.length && u .map(function (e) { return o[e]; }) .every(Boolean) ) throw new Error('Can not register Player component after player has been created.'); } return (l.components_[e] = t), (l.components_[De(e)] = t); }), (l.getComponent = function (e) { if (e && l.components_) return l.components_[e]; }), l ); })(); (je.prototype.supportsRaf_ = 'function' == typeof T.requestAnimationFrame && 'function' == typeof T.cancelAnimationFrame), je.registerComponent('Component', je); var Ve = function (e) { if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); return e; }; i(function (t) { function i(e) { return ( 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? (t.exports = i = function (e) { return typeof e; }) : (t.exports = i = function (e) { return e && 'function' == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? 'symbol' : typeof e; }), i(e) ); } t.exports = i; }), i(function (t) { function i(e) { return ( (t.exports = i = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) { return e.__proto__ || Object.getPrototypeOf(e); }), i(e) ); } t.exports = i; }); var qe, He, We, ze, Ge = function (e, t) { (e.prototype = Object.create(t.prototype)), ((e.prototype.constructor = e).__proto__ = t); }, Xe = (T.navigator && T.navigator.userAgent) || '', Ke = /AppleWebKit\/([\d.]+)/i.exec(Xe), Ye = Ke ? parseFloat(Ke.pop()) : null, $e = /iPod/i.test(Xe), Qe = (qe = Xe.match(/OS (\d+)_/i)) && qe[1] ? qe[1] : null, Je = /Android/i.test(Xe), Ze = (function () { var e = Xe.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i); if (!e) return null; var t = e[1] && parseFloat(e[1]), i = e[2] && parseFloat(e[2]); return t && i ? parseFloat(e[1] + '.' + e[2]) : t || null; })(), et = Je && Ze < 5 && Ye < 537, tt = /Firefox/i.test(Xe), it = /Edg/i.test(Xe), nt = !it && (/Chrome/i.test(Xe) || /CriOS/i.test(Xe)), rt = (He = Xe.match(/(Chrome|CriOS)\/(\d+)/)) && He[2] ? parseFloat(He[2]) : null, at = ((We = /MSIE\s(\d+)\.\d/.exec(Xe)), !(ze = We && parseFloat(We[1])) && /Trident\/7.0/i.test(Xe) && /rv:11.0/.test(Xe) && (ze = 11), ze), st = /Safari/i.test(Xe) && !nt && !Je && !it, ot = /Windows/i.test(Xe), ut = y() && ('ontouchstart' in T || T.navigator.maxTouchPoints || (T.DocumentTouch && T.document instanceof T.DocumentTouch)), lt = /iPad/i.test(Xe) || (st && ut && !/iPhone/i.test(Xe)), ct = /iPhone/i.test(Xe) && !lt, dt = ct || lt || $e, ht = (st || dt) && !nt, pt = Object.freeze({ __proto__: null, IS_IPOD: $e, IOS_VERSION: Qe, IS_ANDROID: Je, ANDROID_VERSION: Ze, IS_NATIVE_ANDROID: et, IS_FIREFOX: tt, IS_EDGE: it, IS_CHROME: nt, CHROME_VERSION: rt, IE_VERSION: at, IS_SAFARI: st, IS_WINDOWS: ot, TOUCH_ENABLED: ut, IS_IPAD: lt, IS_IPHONE: ct, IS_IOS: dt, IS_ANY_SAFARI: ht }); function ft(e, t, i, n) { return ( (function (e, t, i) { if ('number' != typeof t || t < 0 || i < t) throw new Error( "Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + t + ') is non-numeric or out of bounds (0-' + i + ').' ); })(e, n, i.length - 1), i[n][t] ); } function mt(e) { return void 0 === e || 0 === e.length ? { length: 0, start: function () { throw new Error('This TimeRanges object is empty'); }, end: function () { throw new Error('This TimeRanges object is empty'); } } : { length: e.length, start: ft.bind(null, 'start', 0, e), end: ft.bind(null, 'end', 1, e) }; } function gt(e, t) { return Array.isArray(e) ? mt(e) : void 0 === e || void 0 === t ? mt() : mt([[e, t]]); } function vt(e, t) { var i, n, r = 0; if (!t) return 0; (e && e.length) || (e = gt(0, 0)); for (var a = 0; a < e.length; a++) (i = e.start(a)), t < (n = e.end(a)) && (n = t), (r += n - i); return r / t; } for ( var yt, _t = { prefixed: !0 }, bt = [ [ 'requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen' ], [ 'webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen' ], [ 'mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen' ], [ 'msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen' ] ], Tt = bt[0], St = 0; St < bt.length; St++ ) if (bt[St][1] in d) { yt = bt[St]; break; } if (yt) { for (var kt = 0; kt < yt.length; kt++) _t[Tt[kt]] = yt[kt]; _t.prefixed = yt[0] !== Tt[0]; } function Ct(e) { if (e instanceof Ct) return e; 'number' == typeof e ? (this.code = e) : 'string' == typeof e ? (this.message = e) : s(e) && ('number' == typeof e.code && (this.code = e.code), g(this, e)), this.message || (this.message = Ct.defaultMessages[this.code] || ''); } (Ct.prototype.code = 0), (Ct.prototype.message = ''), (Ct.prototype.status = null), (Ct.errorTypes = [ 'MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED' ]), (Ct.defaultMessages = { 1: 'You aborted the media playback', 2: 'A network error caused the media download to fail part-way.', 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.', 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.', 5: 'The media is encrypted and we do not have the keys to decrypt it.' }); for (var Et = 0; Et < Ct.errorTypes.length; Et++) (Ct[Ct.errorTypes[Et]] = Et), (Ct.prototype[Ct.errorTypes[Et]] = Et); var wt = function (e, t) { var i, n = null; try { i = JSON.parse(e, t); } catch (e) { n = e; } return [n, i]; }; function It(e) { return null != e && 'function' == typeof e.then; } function At(e) { It(e) && e.then(null, function (e) {}); } function xt(n) { return [ 'kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src' ].reduce( function (e, t, i) { return n[t] && (e[t] = n[t]), e; }, { cues: n.cues && Array.prototype.map.call(n.cues, function (e) { return { startTime: e.startTime, endTime: e.endTime, text: e.text, id: e.id }; }) } ); } var Pt = function (e) { var t = e.$$('track'), i = Array.prototype.map.call(t, function (e) { return e.track; }); return Array.prototype.map .call(t, function (e) { var t = xt(e.track); return e.src && (t.src = e.src), t; }) .concat( Array.prototype.filter .call(e.textTracks(), function (e) { return -1 === i.indexOf(e); }) .map(xt) ); }, Lt = function (e, i) { return ( e.forEach(function (e) { var t = i.addRemoteTextTrack(e).track; !e.src && e.cues && e.cues.forEach(function (e) { return t.addCue(e); }); }), i.textTracks() ); }, Ot = i(function (e, t) { function i(e) { if (e && 'object' == typeof e) { var t = e.which || e.keyCode || e.charCode; t && (e = t); } if ('number' == typeof e) return s[e]; var i, n = String(e); return (i = r[n.toLowerCase()]) ? i : (i = a[n.toLowerCase()]) || (1 === n.length ? n.charCodeAt(0) : void 0); } i.isEventKey = function (e, t) { if (e && 'object' == typeof e) { var i = e.which || e.keyCode || e.charCode; if (null == i) return !1; if ('string' == typeof t) { var n; if ((n = r[t.toLowerCase()])) return n === i; if ((n = a[t.toLowerCase()])) return n === i; } else if ('number' == typeof t) return t === i; return !1; } }; var r = ((t = e.exports = i).code = t.codes = { backspace: 8, tab: 9, enter: 13, shift: 16, ctrl: 17, alt: 18, 'pause/break': 19, 'caps lock': 20, esc: 27, space: 32, 'page up': 33, 'page down': 34, end: 35, home: 36, left: 37, up: 38, right: 39, down: 40, insert: 45, delete: 46, command: 91, 'left command': 91, 'right command': 93, 'numpad *': 106, 'numpad +': 107, 'numpad -': 109, 'numpad .': 110, 'numpad /': 111, 'num lock': 144, 'scroll lock': 145, 'my computer': 182, 'my calculator': 183, ';': 186, '=': 187, ',': 188, '-': 189, '.': 190, '/': 191, '`': 192, '[': 219, '\\': 220, ']': 221, "'": 222 }), a = (t.aliases = { windows: 91, '⇧': 16, '⌥': 18, '⌃': 17, '⌘': 91, ctl: 17, control: 17, option: 18, pause: 19, break: 19, caps: 20, return: 13, escape: 27, spc: 32, spacebar: 32, pgup: 33, pgdn: 34, ins: 45, del: 46, cmd: 91 }); for (n = 97; n < 123; n++) r[String.fromCharCode(n)] = n - 32; for (var n = 48; n < 58; n++) r[n - 48] = n; for (n = 1; n < 13; n++) r['f' + n] = n + 111; for (n = 0; n < 10; n++) r['numpad ' + n] = n + 96; var s = (t.names = t.title = {}); for (n in r) s[r[n]] = n; for (var o in a) r[o] = a[o]; }), Dt = (Ot.code, Ot.codes, Ot.aliases, Ot.names, Ot.title, 'vjs-modal-dialog'), Mt = (function (n) { function e(e, t) { var i; return ( ((i = n.call(this, e, t) || this).opened_ = i.hasBeenOpened_ = i.hasBeenFilled_ = !1), i.closeable(!i.options_.uncloseable), i.content(i.options_.content), (i.contentEl_ = k('div', { className: Dt + '-content' }, { role: 'document' })), (i.descEl_ = k('p', { className: Dt + '-description vjs-control-text', id: i.el().getAttribute('aria-describedby') })), C(i.descEl_, i.description()), i.el_.appendChild(i.descEl_), i.el_.appendChild(i.contentEl_), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call( this, 'div', { className: this.buildCSSClass(), tabIndex: -1 }, { 'aria-describedby': this.id() + '_description', 'aria-hidden': 'true', 'aria-label': this.label(), role: 'dialog' } ); }), (t.dispose = function () { (this.contentEl_ = null), (this.descEl_ = null), (this.previouslyActiveEl_ = null), n.prototype.dispose.call(this); }), (t.buildCSSClass = function () { return Dt + ' vjs-hidden ' + n.prototype.buildCSSClass.call(this); }), (t.label = function () { return this.localize(this.options_.label || 'Modal Window'); }), (t.description = function () { var e = this.options_.description || this.localize('This is a modal window.'); return ( this.closeable() && (e += ' ' + this.localize( 'This modal can be closed by pressing the Escape key or activating the close button.' )), e ); }), (t.open = function () { if (!this.opened_) { var e = this.player(); this.trigger('beforemodalopen'), (this.opened_ = !0), (!this.options_.fillAlways && (this.hasBeenOpened_ || this.hasBeenFilled_)) || this.fill(), (this.wasPlaying_ = !e.paused()), this.options_.pauseOnOpen && this.wasPlaying_ && e.pause(), this.on('keydown', this.handleKeyDown), (this.hadControls_ = e.controls()), e.controls(!1), this.show(), this.conditionalFocus_(), this.el().setAttribute('aria-hidden', 'false'), this.trigger('modalopen'), (this.hasBeenOpened_ = !0); } }), (t.opened = function (e) { return 'boolean' == typeof e && this[e ? 'open' : 'close'](), this.opened_; }), (t.close = function () { if (this.opened_) { var e = this.player(); this.trigger('beforemodalclose'), (this.opened_ = !1), this.wasPlaying_ && this.options_.pauseOnOpen && e.play(), this.off('keydown', this.handleKeyDown), this.hadControls_ && e.controls(!0), this.hide(), this.el().setAttribute('aria-hidden', 'true'), this.trigger('modalclose'), this.conditionalBlur_(), this.options_.temporary && this.dispose(); } }), (t.closeable = function (e) { if ('boolean' == typeof e) { var t = (this.closeable_ = !!e), i = this.getChild('closeButton'); if (t && !i) { var n = this.contentEl_; (this.contentEl_ = this.el_), (i = this.addChild('closeButton', { controlText: 'Close Modal Dialog' })), (this.contentEl_ = n), this.on(i, 'close', this.close); } !t && i && (this.off(i, 'close', this.close), this.removeChild(i), i.dispose()); } return this.closeable_; }), (t.fill = function () { this.fillWith(this.content()); }), (t.fillWith = function (e) { var t = this.contentEl(), i = t.parentNode, n = t.nextSibling; this.trigger('beforemodalfill'), (this.hasBeenFilled_ = !0), i.removeChild(t), this.empty(), W(t, e), this.trigger('modalfill'), n ? i.insertBefore(t, n) : i.appendChild(t); var r = this.getChild('closeButton'); r && i.appendChild(r.el_); }), (t.empty = function () { this.trigger('beforemodalempty'), V(this.contentEl()), this.trigger('modalempty'); }), (t.content = function (e) { return 'undefined' != typeof e && (this.content_ = e), this.content_; }), (t.conditionalFocus_ = function () { var e = d.activeElement, t = this.player_.el_; (this.previouslyActiveEl_ = null), (!t.contains(e) && t !== e) || ((this.previouslyActiveEl_ = e), this.focus()); }), (t.conditionalBlur_ = function () { this.previouslyActiveEl_ && (this.previouslyActiveEl_.focus(), (this.previouslyActiveEl_ = null)); }), (t.handleKeyDown = function (e) { if ((e.stopPropagation(), Ot.isEventKey(e, 'Escape') && this.closeable())) return e.preventDefault(), void this.close(); if (Ot.isEventKey(e, 'Tab')) { for ( var t, i = this.focusableEls_(), n = this.el_.querySelector(':focus'), r = 0; r < i.length; r++ ) if (n === i[r]) { t = r; break; } d.activeElement === this.el_ && (t = 0), e.shiftKey && 0 === t ? (i[i.length - 1].focus(), e.preventDefault()) : e.shiftKey || t !== i.length - 1 || (i[0].focus(), e.preventDefault()); } }), (t.focusableEls_ = function () { var e = this.el_.querySelectorAll('*'); return Array.prototype.filter.call(e, function (e) { return ( ((e instanceof T.HTMLAnchorElement || e instanceof T.HTMLAreaElement) && e.hasAttribute('href')) || ((e instanceof T.HTMLInputElement || e instanceof T.HTMLSelectElement || e instanceof T.HTMLTextAreaElement || e instanceof T.HTMLButtonElement) && !e.hasAttribute('disabled')) || e instanceof T.HTMLIFrameElement || e instanceof T.HTMLObjectElement || e instanceof T.HTMLEmbedElement || (e.hasAttribute('tabindex') && -1 !== e.getAttribute('tabindex')) || e.hasAttribute('contenteditable') ); }); }), e ); })(je); (Mt.prototype.options_ = { pauseOnOpen: !0, temporary: !0 }), je.registerComponent('ModalDialog', Mt); var Rt = (function (n) { function e(e) { var t; void 0 === e && (e = []), ((t = n.call(this) || this).tracks_ = []), Object.defineProperty(Ve(t), 'length', { get: function () { return this.tracks_.length; } }); for (var i = 0; i < e.length; i++) t.addTrack(e[i]); return t; } Ge(e, n); var t = e.prototype; return ( (t.addTrack = function (e) { var t = this.tracks_.length; '' + t in this || Object.defineProperty(this, t, { get: function () { return this.tracks_[t]; } }), -1 === this.tracks_.indexOf(e) && (this.tracks_.push(e), this.trigger({ track: e, type: 'addtrack', target: this })); }), (t.removeTrack = function (e) { for (var t, i = 0, n = this.length; i < n; i++) if (this[i] === e) { (t = this[i]).off && t.off(), this.tracks_.splice(i, 1); break; } t && this.trigger({ track: t, type: 'removetrack', target: this }); }), (t.getTrackById = function (e) { for (var t = null, i = 0, n = this.length; i < n; i++) { var r = this[i]; if (r.id === e) { t = r; break; } } return t; }), e ); })(_e); for (var Nt in ((Rt.prototype.allowedEvents_ = { change: 'change', addtrack: 'addtrack', removetrack: 'removetrack' }), Rt.prototype.allowedEvents_)) Rt.prototype['on' + Nt] = null; function Ut(e, t) { for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].enabled = !1); } function Ft(e, t) { for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].selected = !1); } function Bt(e) { var t = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'], i = d.createElement('a'); i.href = e; var n, r = '' === i.host && 'file:' !== i.protocol; r && (((n = d.createElement('div')).innerHTML = ''), (i = n.firstChild), n.setAttribute('style', 'display:none; position:absolute;'), d.body.appendChild(n)); for (var a = {}, s = 0; s < t.length; s++) a[t[s]] = i[t[s]]; return ( 'http:' === a.protocol && (a.host = a.host.replace(/:80$/, '')), 'https:' === a.protocol && (a.host = a.host.replace(/:443$/, '')), a.protocol || (a.protocol = T.location.protocol), r && d.body.removeChild(n), a ); } function jt(e) { if (!e.match(/^https?:\/\//)) { var t = d.createElement('div'); (t.innerHTML = 'x'), (e = t.firstChild.href); } return e; } function Vt(e) { if ('string' == typeof e) { var t = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/.exec(e); if (t) return t.pop().toLowerCase(); } return ''; } function qt(e, t) { void 0 === t && (t = T.location); var i = Bt(e); return (':' === i.protocol ? t.protocol : i.protocol) + i.host !== t.protocol + t.host; } var Ht = (function (n) { function e(e) { var t; void 0 === e && (e = []); for (var i = e.length - 1; 0 <= i; i--) if (e[i].enabled) { Ut(e, e[i]); break; } return ((t = n.call(this, e) || this).changing_ = !1), t; } Ge(e, n); var t = e.prototype; return ( (t.addTrack = function (e) { var t = this; e.enabled && Ut(this, e), n.prototype.addTrack.call(this, e), e.addEventListener && ((e.enabledChange_ = function () { t.changing_ || ((t.changing_ = !0), Ut(t, e), (t.changing_ = !1), t.trigger('change')); }), e.addEventListener('enabledchange', e.enabledChange_)); }), (t.removeTrack = function (e) { n.prototype.removeTrack.call(this, e), e.removeEventListener && e.enabledChange_ && (e.removeEventListener('enabledchange', e.enabledChange_), (e.enabledChange_ = null)); }), e ); })(Rt), Wt = (function (n) { function e(e) { var t; void 0 === e && (e = []); for (var i = e.length - 1; 0 <= i; i--) if (e[i].selected) { Ft(e, e[i]); break; } return ( ((t = n.call(this, e) || this).changing_ = !1), Object.defineProperty(Ve(t), 'selectedIndex', { get: function () { for (var e = 0; e < this.length; e++) if (this[e].selected) return e; return -1; }, set: function () {} }), t ); } Ge(e, n); var t = e.prototype; return ( (t.addTrack = function (e) { var t = this; e.selected && Ft(this, e), n.prototype.addTrack.call(this, e), e.addEventListener && ((e.selectedChange_ = function () { t.changing_ || ((t.changing_ = !0), Ft(t, e), (t.changing_ = !1), t.trigger('change')); }), e.addEventListener('selectedchange', e.selectedChange_)); }), (t.removeTrack = function (e) { n.prototype.removeTrack.call(this, e), e.removeEventListener && e.selectedChange_ && (e.removeEventListener('selectedchange', e.selectedChange_), (e.selectedChange_ = null)); }), e ); })(Rt), zt = (function (i) { function e() { return i.apply(this, arguments) || this; } Ge(e, i); var t = e.prototype; return ( (t.addTrack = function (e) { var t = this; i.prototype.addTrack.call(this, e), this.queueChange_ || (this.queueChange_ = function () { return t.queueTrigger('change'); }), this.triggerSelectedlanguagechange || (this.triggerSelectedlanguagechange_ = function () { return t.trigger('selectedlanguagechange'); }), e.addEventListener('modechange', this.queueChange_); -1 === ['metadata', 'chapters'].indexOf(e.kind) && e.addEventListener('modechange', this.triggerSelectedlanguagechange_); }), (t.removeTrack = function (e) { i.prototype.removeTrack.call(this, e), e.removeEventListener && (this.queueChange_ && e.removeEventListener('modechange', this.queueChange_), this.selectedlanguagechange_ && e.removeEventListener('modechange', this.triggerSelectedlanguagechange_)); }), e ); })(Rt), Gt = (function () { function e(e) { void 0 === e && (e = []), (this.trackElements_ = []), Object.defineProperty(this, 'length', { get: function () { return this.trackElements_.length; } }); for (var t = 0, i = e.length; t < i; t++) this.addTrackElement_(e[t]); } var t = e.prototype; return ( (t.addTrackElement_ = function (e) { var t = this.trackElements_.length; '' + t in this || Object.defineProperty(this, t, { get: function () { return this.trackElements_[t]; } }), -1 === this.trackElements_.indexOf(e) && this.trackElements_.push(e); }), (t.getTrackElementByTrack_ = function (e) { for (var t, i = 0, n = this.trackElements_.length; i < n; i++) if (e === this.trackElements_[i].track) { t = this.trackElements_[i]; break; } return t; }), (t.removeTrackElement_ = function (e) { for (var t = 0, i = this.trackElements_.length; t < i; t++) if (e === this.trackElements_[t]) { this.trackElements_[t].track && 'function' == typeof this.trackElements_[t].track.off && this.trackElements_[t].track.off(), 'function' == typeof this.trackElements_[t].off && this.trackElements_[t].off(), this.trackElements_.splice(t, 1); break; } }), e ); })(), Xt = (function () { function t(e) { t.prototype.setCues_.call(this, e), Object.defineProperty(this, 'length', { get: function () { return this.length_; } }); } var e = t.prototype; return ( (e.setCues_ = function (e) { var t = this.length || 0, i = 0, n = e.length; (this.cues_ = e), (this.length_ = e.length); function r(e) { '' + e in this || Object.defineProperty(this, '' + e, { get: function () { return this.cues_[e]; } }); } if (t < n) for (i = t; i < n; i++) r.call(this, i); }), (e.getCueById = function (e) { for (var t = null, i = 0, n = this.length; i < n; i++) { var r = this[i]; if (r.id === e) { t = r; break; } } return t; }), t ); })(), Kt = { alternative: 'alternative', captions: 'captions', main: 'main', sign: 'sign', subtitles: 'subtitles', commentary: 'commentary' }, Yt = { alternative: 'alternative', descriptions: 'descriptions', main: 'main', 'main-desc': 'main-desc', translation: 'translation', commentary: 'commentary' }, $t = { subtitles: 'subtitles', captions: 'captions', descriptions: 'descriptions', chapters: 'chapters', metadata: 'metadata' }, Qt = { disabled: 'disabled', hidden: 'hidden', showing: 'showing' }, Jt = (function (a) { function e(e) { var t; void 0 === e && (e = {}), (t = a.call(this) || this); function i(e) { Object.defineProperty(Ve(t), e, { get: function () { return n[e]; }, set: function () {} }); } var n = { id: e.id || 'vjs_track_' + re(), kind: e.kind || '', label: e.label || '', language: e.language || '' }; for (var r in n) i(r); return t; } return Ge(e, a), e; })(_e), Zt = Object.freeze({ __proto__: null, parseUrl: Bt, getAbsoluteURL: jt, getFileExtension: Vt, isCrossOrigin: qt }), ei = function (e) { var t = ti.call(e); return ( '[object Function]' === t || ('function' == typeof e && '[object RegExp]' !== t) || ('undefined' != typeof window && (e === window.setTimeout || e === window.alert || e === window.confirm || e === window.prompt)) ); }, /** * @license * slighly modified parse-headers 2.0.2 * Copyright (c) 2014 David Björklund * Available under the MIT license * */ ti = Object.prototype.toString; var ii = function (e) { var r = {}; return ( e && e .trim() .split('\n') .forEach(function (e) { var t = e.indexOf(':'), i = e.slice(0, t).trim().toLowerCase(), n = e.slice(t + 1).trim(); 'undefined' == typeof r[i] ? (r[i] = n) : Array.isArray(r[i]) ? r[i].push(n) : (r[i] = [r[i], n]); }), r ); }, ni = si, ri = si; function ai(e, t, i) { var n = e; return ( ei(t) ? ((i = t), 'string' == typeof e && (n = { uri: e })) : (n = m({}, t, { uri: e })), (n.callback = i), n ); } function si(e, t, i) { return oi((t = ai(e, t, i))); } function oi(n) { if ('undefined' == typeof n.callback) throw new Error('callback argument missing'); var r = !1, a = function (e, t, i) { r || ((r = !0), n.callback(e, t, i)); }; function t(e) { return ( clearTimeout(o), e instanceof Error || (e = new Error('' + (e || 'Unknown XMLHttpRequest Error'))), (e.statusCode = 0), a(e, m) ); } function e() { if (!s) { var e; clearTimeout(o), (e = n.useXDR && void 0 === u.status ? 200 : 1223 === u.status ? 204 : u.status); var t = m, i = null; return ( 0 !== e ? ((t = { body: (function () { var e = void 0; if ( ((e = u.response ? u.response : u.responseText || (function (e) { try { if ('document' === e.responseType) return e.responseXML; var t = e.responseXML && 'parsererror' === e.responseXML.documentElement.nodeName; if ('' === e.responseType && !t) return e.responseXML; } catch (e) {} return null; })(u)), f) ) try { e = JSON.parse(e); } catch (e) {} return e; })(), statusCode: e, method: c, headers: {}, url: l, rawRequest: u }), u.getAllResponseHeaders && (t.headers = ii(u.getAllResponseHeaders()))) : (i = new Error('Internal XMLHttpRequest Error')), a(i, t, t.body) ); } } var i, s, o, u = n.xhr || null, l = ((u = u || (n.cors || n.useXDR ? new si.XDomainRequest() : new si.XMLHttpRequest())).url = n.uri || n.url), c = (u.method = n.method || 'GET'), d = n.body || n.data, h = (u.headers = n.headers || {}), p = !!n.sync, f = !1, m = { body: void 0, headers: {}, statusCode: 0, method: c, url: l, rawRequest: u }; if ( ('json' in n && !1 !== n.json && ((f = !0), h.accept || h.Accept || (h.Accept = 'application/json'), 'GET' !== c && 'HEAD' !== c && (h['content-type'] || h['Content-Type'] || (h['Content-Type'] = 'application/json'), (d = JSON.stringify(!0 === n.json ? d : n.json)))), (u.onreadystatechange = function () { 4 === u.readyState && setTimeout(e, 0); }), (u.onload = e), (u.onerror = t), (u.onprogress = function () {}), (u.onabort = function () { s = !0; }), (u.ontimeout = t), u.open(c, l, !p, n.username, n.password), p || (u.withCredentials = !!n.withCredentials), !p && 0 < n.timeout && (o = setTimeout(function () { if (!s) { (s = !0), u.abort('timeout'); var e = new Error('XMLHttpRequest timeout'); (e.code = 'ETIMEDOUT'), t(e); } }, n.timeout)), u.setRequestHeader) ) for (i in h) h.hasOwnProperty(i) && u.setRequestHeader(i, h[i]); else if ( n.headers && !(function (e) { for (var t in e) if (e.hasOwnProperty(t)) return !1; return !0; })(n.headers) ) throw new Error('Headers cannot be set on an XDomainRequest object'); return ( 'responseType' in n && (u.responseType = n.responseType), 'beforeSend' in n && 'function' == typeof n.beforeSend && n.beforeSend(u), u.send(d || null), u ); } (si.XMLHttpRequest = T.XMLHttpRequest || function () {}), (si.XDomainRequest = 'withCredentials' in new si.XMLHttpRequest() ? si.XMLHttpRequest : T.XDomainRequest), (function (e, t) { for (var i = 0; i < e.length; i++) t(e[i]); })(['get', 'put', 'post', 'patch', 'head', 'delete'], function (n) { si['delete' === n ? 'del' : n] = function (e, t, i) { return ((t = ai(e, t, i)).method = n.toUpperCase()), oi(t); }; }), (ni.default = ri); function ui(e, t) { var i = new T.WebVTT.Parser(T, T.vttjs, T.WebVTT.StringDecoder()), n = []; (i.oncue = function (e) { t.addCue(e); }), (i.onparsingerror = function (e) { n.push(e); }), (i.onflush = function () { t.trigger({ type: 'loadeddata', target: t }); }), i.parse(e), 0 < n.length && (T.console && T.console.groupCollapsed && T.console.groupCollapsed('Text Track parsing errors for ' + t.src), n.forEach(function (e) { return p.error(e); }), T.console && T.console.groupEnd && T.console.groupEnd()), i.flush(); } function li(e, n) { var t = { uri: e }, i = qt(e); i && (t.cors = i); var r = 'use-credentials' === n.tech_.crossOrigin(); r && (t.withCredentials = r), ni( t, ve(this, function (e, t, i) { if (e) return p.error(e, t); (n.loaded_ = !0), 'function' != typeof T.WebVTT ? n.tech_ && n.tech_.any(['vttjsloaded', 'vttjserror'], function (e) { if ('vttjserror' !== e.type) return ui(i, n); p.error('vttjs failed to load, stopping trying to process ' + n.src); }) : ui(i, n); }) ); } var ci = (function (l) { function e(e) { var t; if ((void 0 === e && (e = {}), !e.tech)) throw new Error('A tech was not provided.'); var i = Re(e, { kind: $t[e.kind] || 'subtitles', language: e.language || e.srclang || '' }), n = Qt[i.mode] || 'disabled', r = i.default; ('metadata' !== i.kind && 'chapters' !== i.kind) || (n = 'hidden'), ((t = l.call(this, i) || this).tech_ = i.tech), (t.cues_ = []), (t.activeCues_ = []), (t.preload_ = !1 !== t.tech_.preloadTextTracks); var a = new Xt(t.cues_), s = new Xt(t.activeCues_), o = !1, u = ve(Ve(t), function () { (this.activeCues = this.activeCues), o && (this.trigger('cuechange'), (o = !1)); }); return ( 'disabled' !== n && t.tech_.ready(function () { t.tech_.on('timeupdate', u); }, !0), Object.defineProperties(Ve(t), { default: { get: function () { return r; }, set: function () {} }, mode: { get: function () { return n; }, set: function (e) { var t = this; Qt[e] && ((n = e), this.preload_ || 'disabled' === n || 0 !== this.cues.length || li(this.src, this), 'disabled' !== n ? this.tech_.ready(function () { t.tech_.on('timeupdate', u); }, !0) : this.tech_.off('timeupdate', u), this.trigger('modechange')); } }, cues: { get: function () { return this.loaded_ ? a : null; }, set: function () {} }, activeCues: { get: function () { if (!this.loaded_) return null; if (0 === this.cues.length) return s; for ( var e = this.tech_.currentTime(), t = [], i = 0, n = this.cues.length; i < n; i++ ) { var r = this.cues[i]; r.startTime <= e && r.endTime >= e ? t.push(r) : r.startTime === r.endTime && r.startTime <= e && r.startTime + 0.5 >= e && t.push(r); } if (((o = !1), t.length !== this.activeCues_.length)) o = !0; else for (var a = 0; a < t.length; a++) -1 === this.activeCues_.indexOf(t[a]) && (o = !0); return (this.activeCues_ = t), s.setCues_(this.activeCues_), s; }, set: function () {} } }), i.src ? ((t.src = i.src), t.preload_ || (t.loaded_ = !0), (t.preload_ || r || ('subtitles' !== i.kind && 'captions' !== i.kind)) && li(t.src, Ve(t))) : (t.loaded_ = !0), t ); } Ge(e, l); var t = e.prototype; return ( (t.addCue = function (e) { var t = e; if (T.vttjs && !(e instanceof T.vttjs.VTTCue)) { for (var i in ((t = new T.vttjs.VTTCue(e.startTime, e.endTime, e.text)), e)) i in t || (t[i] = e[i]); (t.id = e.id), (t.originalCue_ = e); } for (var n = this.tech_.textTracks(), r = 0; r < n.length; r++) n[r] !== this && n[r].removeCue(t); this.cues_.push(t), this.cues.setCues_(this.cues_); }), (t.removeCue = function (e) { for (var t = this.cues_.length; t--; ) { var i = this.cues_[t]; if (i === e || (i.originalCue_ && i.originalCue_ === e)) { this.cues_.splice(t, 1), this.cues.setCues_(this.cues_); break; } } }), e ); })(Jt); ci.prototype.allowedEvents_ = { cuechange: 'cuechange' }; var di = (function (r) { function e(e) { var t; void 0 === e && (e = {}); var i = Re(e, { kind: Yt[e.kind] || '' }); t = r.call(this, i) || this; var n = !1; return ( Object.defineProperty(Ve(t), 'enabled', { get: function () { return n; }, set: function (e) { 'boolean' == typeof e && e !== n && ((n = e), this.trigger('enabledchange')); } }), i.enabled && (t.enabled = i.enabled), (t.loaded_ = !0), t ); } return Ge(e, r), e; })(Jt), hi = (function (r) { function e(e) { var t; void 0 === e && (e = {}); var i = Re(e, { kind: Kt[e.kind] || '' }); t = r.call(this, i) || this; var n = !1; return ( Object.defineProperty(Ve(t), 'selected', { get: function () { return n; }, set: function (e) { 'boolean' == typeof e && e !== n && ((n = e), this.trigger('selectedchange')); } }), i.selected && (t.selected = i.selected), t ); } return Ge(e, r), e; })(Jt), pi = (function (r) { function e(e) { var t, i; void 0 === e && (e = {}), (t = r.call(this) || this); var n = new ci(e); return ( (t.kind = n.kind), (t.src = n.src), (t.srclang = n.language), (t.label = n.label), (t.default = n.default), Object.defineProperties(Ve(t), { readyState: { get: function () { return i; } }, track: { get: function () { return n; } } }), (i = 0), n.addEventListener('loadeddata', function () { (i = 2), t.trigger({ type: 'load', target: Ve(t) }); }), t ); } return Ge(e, r), e; })(_e); (pi.prototype.allowedEvents_ = { load: 'load' }), (pi.NONE = 0), (pi.LOADING = 1), (pi.LOADED = 2), (pi.ERROR = 3); var fi = { audio: { ListClass: Ht, TrackClass: di, capitalName: 'Audio' }, video: { ListClass: Wt, TrackClass: hi, capitalName: 'Video' }, text: { ListClass: zt, TrackClass: ci, capitalName: 'Text' } }; Object.keys(fi).forEach(function (e) { (fi[e].getterName = e + 'Tracks'), (fi[e].privateName = e + 'Tracks_'); }); var mi = { remoteText: { ListClass: zt, TrackClass: ci, capitalName: 'RemoteText', getterName: 'remoteTextTracks', privateName: 'remoteTextTracks_' }, remoteTextEl: { ListClass: Gt, TrackClass: pi, capitalName: 'RemoteTextTrackEls', getterName: 'remoteTextTrackEls', privateName: 'remoteTextTrackEls_' } }, gi = m({}, fi, mi); (mi.names = Object.keys(mi)), (fi.names = Object.keys(fi)), (gi.names = [].concat(mi.names).concat(fi.names)); var vi = Object.create || function (e) { if (1 !== arguments.length) throw new Error('Object.create shim only accepts one parameter.'); return (yi.prototype = e), new yi(); }; function yi() {} function _i(e, t) { (this.name = 'ParsingError'), (this.code = e.code), (this.message = t || e.message); } function bi(e) { function t(e, t, i, n) { return 3600 * (0 | e) + 60 * (0 | t) + (0 | i) + (0 | n) / 1e3; } var i = e.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/); return i ? i[3] ? t(i[1], i[2], i[3].replace(':', ''), i[4]) : 59 < i[1] ? t(i[1], i[2], 0, i[4]) : t(0, i[1], i[2], i[4]) : null; } function Ti() { this.values = vi(null); } function Si(e, t, i, n) { var r = n ? e.split(n) : [e]; for (var a in r) if ('string' == typeof r[a]) { var s = r[a].split(i); if (2 === s.length) t(s[0], s[1]); } } function ki(t, e, s) { var i = t; function n() { var e = bi(t); if (null === e) throw new _i(_i.Errors.BadTimeStamp, 'Malformed timestamp: ' + i); return (t = t.replace(/^[^\sa-zA-Z-]+/, '')), e; } function r() { t = t.replace(/^\s+/, ''); } if ((r(), (e.startTime = n()), r(), '--\x3e' !== t.substr(0, 3))) throw new _i( _i.Errors.BadTimeStamp, "Malformed time stamp (time stamps must be separated by '--\x3e'): " + i ); (t = t.substr(3)), r(), (e.endTime = n()), r(), (function (e, t) { var a = new Ti(); Si( e, function (e, t) { switch (e) { case 'region': for (var i = s.length - 1; 0 <= i; i--) if (s[i].id === t) { a.set(e, s[i].region); break; } break; case 'vertical': a.alt(e, t, ['rl', 'lr']); break; case 'line': var n = t.split(','), r = n[0]; a.integer(e, r), a.percent(e, r) && a.set('snapToLines', !1), a.alt(e, r, ['auto']), 2 === n.length && a.alt('lineAlign', n[1], ['start', 'center', 'end']); break; case 'position': (n = t.split(',')), a.percent(e, n[0]), 2 === n.length && a.alt('positionAlign', n[1], ['start', 'center', 'end']); break; case 'size': a.percent(e, t); break; case 'align': a.alt(e, t, ['start', 'center', 'end', 'left', 'right']); } }, /:/, /\s/ ), (t.region = a.get('region', null)), (t.vertical = a.get('vertical', '')); try { t.line = a.get('line', 'auto'); } catch (e) {} (t.lineAlign = a.get('lineAlign', 'start')), (t.snapToLines = a.get('snapToLines', !0)), (t.size = a.get('size', 100)); try { t.align = a.get('align', 'center'); } catch (e) { t.align = a.get('align', 'middle'); } try { t.position = a.get('position', 'auto'); } catch (e) { t.position = a.get( 'position', { start: 0, left: 0, center: 50, middle: 50, end: 100, right: 100 }, t.align ); } t.positionAlign = a.get( 'positionAlign', { start: 'start', left: 'start', center: 'center', middle: 'center', end: 'end', right: 'end' }, t.align ); })(t, e); } (((_i.prototype = vi(Error.prototype)).constructor = _i).Errors = { BadSignature: { code: 0, message: 'Malformed WebVTT signature.' }, BadTimeStamp: { code: 1, message: 'Malformed time stamp.' } }), (Ti.prototype = { set: function (e, t) { this.get(e) || '' === t || (this.values[e] = t); }, get: function (e, t, i) { return i ? (this.has(e) ? this.values[e] : t[i]) : this.has(e) ? this.values[e] : t; }, has: function (e) { return e in this.values; }, alt: function (e, t, i) { for (var n = 0; n < i.length; ++n) if (t === i[n]) { this.set(e, t); break; } }, integer: function (e, t) { /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10)); }, percent: function (e, t) { return ( !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && 0 <= (t = parseFloat(t)) && t <= 100) && (this.set(e, t), !0) ); } }); var Ci = d.createElement('textarea'), Ei = { c: 'span', i: 'i', b: 'b', u: 'u', ruby: 'ruby', rt: 'rt', v: 'span', lang: 'span' }, wi = { white: 'rgba(255,255,255,1)', lime: 'rgba(0,255,0,1)', cyan: 'rgba(0,255,255,1)', red: 'rgba(255,0,0,1)', yellow: 'rgba(255,255,0,1)', magenta: 'rgba(255,0,255,1)', blue: 'rgba(0,0,255,1)', black: 'rgba(0,0,0,1)' }, Ii = { v: 'title', lang: 'lang' }, Ai = { rt: 'ruby' }; function xi(a, i) { function e() { if (!i) return null; var e, t = i.match(/^([^<]*)(<[^>]*>?)?/); return (e = t[1] ? t[1] : t[2]), (i = i.substr(e.length)), e; } function t(e, t) { var i = Ei[e]; if (!i) return null; var n = a.document.createElement(i), r = Ii[e]; return r && t && (n[r] = t.trim()), n; } for (var n, r, s, o, u = a.document.createElement('div'), l = u, c = []; null !== (n = e()); ) if ('<' !== n[0]) l.appendChild( a.document.createTextNode( ((r = n), (Ci.innerHTML = r), (r = Ci.textContent), (Ci.textContent = ''), r) ) ); else { if ('/' === n[1]) { c.length && c[c.length - 1] === n.substr(2).replace('>', '') && (c.pop(), (l = l.parentNode)); continue; } var d, h = bi(n.substr(1, n.length - 2)); if (h) { (d = a.document.createProcessingInstruction('timestamp', h)), l.appendChild(d); continue; } var p = n.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/); if (!p) continue; if (!(d = t(p[1], p[3]))) continue; if (((s = l), Ai[(o = d).localName] && Ai[o.localName] !== s.localName)) continue; if (p[2]) { var f = p[2].split('.'); f.forEach(function (e) { var t = /^bg_/.test(e), i = t ? e.slice(3) : e; if (wi.hasOwnProperty(i)) { var n = t ? 'background-color' : 'color', r = wi[i]; d.style[n] = r; } }), (d.className = f.join(' ')); } c.push(p[1]), l.appendChild(d), (l = d); } return u; } var Pi = [ [1470, 1470], [1472, 1472], [1475, 1475], [1478, 1478], [1488, 1514], [1520, 1524], [1544, 1544], [1547, 1547], [1549, 1549], [1563, 1563], [1566, 1610], [1645, 1647], [1649, 1749], [1765, 1766], [1774, 1775], [1786, 1805], [1807, 1808], [1810, 1839], [1869, 1957], [1969, 1969], [1984, 2026], [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074], [2084, 2084], [2088, 2088], [2096, 2110], [2112, 2136], [2142, 2142], [2208, 2208], [2210, 2220], [8207, 8207], [64285, 64285], [64287, 64296], [64298, 64310], [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324], [64326, 64449], [64467, 64829], [64848, 64911], [64914, 64967], [65008, 65020], [65136, 65140], [65142, 65276], [67584, 67589], [67592, 67592], [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669], [67671, 67679], [67840, 67867], [67872, 67897], [67903, 67903], [67968, 68023], [68030, 68031], [68096, 68096], [68112, 68115], [68117, 68119], [68121, 68147], [68160, 68167], [68176, 68184], [68192, 68223], [68352, 68405], [68416, 68437], [68440, 68466], [68472, 68479], [68608, 68680], [126464, 126467], [126469, 126495], [126497, 126498], [126500, 126500], [126503, 126503], [126505, 126514], [126516, 126519], [126521, 126521], [126523, 126523], [126530, 126530], [126535, 126535], [126537, 126537], [126539, 126539], [126541, 126543], [126545, 126546], [126548, 126548], [126551, 126551], [126553, 126553], [126555, 126555], [126557, 126557], [126559, 126559], [126561, 126562], [126564, 126564], [126567, 126570], [126572, 126578], [126580, 126583], [126585, 126588], [126590, 126590], [126592, 126601], [126603, 126619], [126625, 126627], [126629, 126633], [126635, 126651], [1114109, 1114109] ]; function Li(e) { for (var t = 0; t < Pi.length; t++) { var i = Pi[t]; if (e >= i[0] && e <= i[1]) return !0; } return !1; } function Oi() {} function Di(e, t, i) { Oi.call(this), (this.cue = t), (this.cueDiv = xi(e, t.text)); var n = { color: 'rgba(255, 255, 255, 1)', backgroundColor: 'rgba(0, 0, 0, 0.8)', position: 'relative', left: 0, right: 0, top: 0, bottom: 0, display: 'inline', writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl', unicodeBidi: 'plaintext' }; this.applyStyles(n, this.cueDiv), (this.div = e.document.createElement('div')), (n = { direction: (function (e) { var t = [], i = ''; if (!e || !e.childNodes) return 'ltr'; function r(e, t) { for (var i = t.childNodes.length - 1; 0 <= i; i--) e.push(t.childNodes[i]); } function a(e) { if (!e || !e.length) return null; var t = e.pop(), i = t.textContent || t.innerText; if (i) { var n = i.match(/^.*(\n|\r)/); return n ? n[(e.length = 0)] : i; } return 'ruby' === t.tagName ? a(e) : t.childNodes ? (r(e, t), a(e)) : void 0; } for (r(t, e); (i = a(t)); ) for (var n = 0; n < i.length; n++) if (Li(i.charCodeAt(n))) return 'rtl'; return 'ltr'; })(this.cueDiv), writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl', unicodeBidi: 'plaintext', textAlign: 'middle' === t.align ? 'center' : t.align, font: i.font, whiteSpace: 'pre-line', position: 'absolute' }), this.applyStyles(n), this.div.appendChild(this.cueDiv); var r = 0; switch (t.positionAlign) { case 'start': r = t.position; break; case 'center': r = t.position - t.size / 2; break; case 'end': r = t.position - t.size; } '' === t.vertical ? this.applyStyles({ left: this.formatStyle(r, '%'), width: this.formatStyle(t.size, '%') }) : this.applyStyles({ top: this.formatStyle(r, '%'), height: this.formatStyle(t.size, '%') }), (this.move = function (e) { this.applyStyles({ top: this.formatStyle(e.top, 'px'), bottom: this.formatStyle(e.bottom, 'px'), left: this.formatStyle(e.left, 'px'), right: this.formatStyle(e.right, 'px'), height: this.formatStyle(e.height, 'px'), width: this.formatStyle(e.width, 'px') }); }); } function Mi(e) { var t, i, n, r; if (e.div) { (i = e.div.offsetHeight), (n = e.div.offsetWidth), (r = e.div.offsetTop); var a = (a = e.div.childNodes) && (a = a[0]) && a.getClientRects && a.getClientRects(); (e = e.div.getBoundingClientRect()), (t = a ? Math.max((a[0] && a[0].height) || 0, e.height / a.length) : 0); } (this.left = e.left), (this.right = e.right), (this.top = e.top || r), (this.height = e.height || i), (this.bottom = e.bottom || r + (e.height || i)), (this.width = e.width || n), (this.lineHeight = void 0 !== t ? t : e.lineHeight); } function Ri(e, t, o, u) { var i = new Mi(t), n = t.cue, r = (function (e) { if ('number' == typeof e.line && (e.snapToLines || (0 <= e.line && e.line <= 100))) return e.line; if (!e.track || !e.track.textTrackList || !e.track.textTrackList.mediaElement) return -1; for (var t = e.track, i = t.textTrackList, n = 0, r = 0; r < i.length && i[r] !== t; r++) 'showing' === i[r].mode && n++; return -1 * ++n; })(n), a = []; if (n.snapToLines) { var s; switch (n.vertical) { case '': (a = ['+y', '-y']), (s = 'height'); break; case 'rl': (a = ['+x', '-x']), (s = 'width'); break; case 'lr': (a = ['-x', '+x']), (s = 'width'); } var l = i.lineHeight, c = l * Math.round(r), d = o[s] + l, h = a[0]; Math.abs(c) > d && ((c = c < 0 ? -1 : 1), (c *= Math.ceil(d / l) * l)), r < 0 && ((c += '' === n.vertical ? o.height : o.width), (a = a.reverse())), i.move(h, c); } else { var p = (i.lineHeight / o.height) * 100; switch (n.lineAlign) { case 'center': r -= p / 2; break; case 'end': r -= p; } switch (n.vertical) { case '': t.applyStyles({ top: t.formatStyle(r, '%') }); break; case 'rl': t.applyStyles({ left: t.formatStyle(r, '%') }); break; case 'lr': t.applyStyles({ right: t.formatStyle(r, '%') }); } (a = ['+y', '-x', '+x', '-y']), (i = new Mi(t)); } var f = (function (e, t) { for (var i, n = new Mi(e), r = 1, a = 0; a < t.length; a++) { for (; e.overlapsOppositeAxis(o, t[a]) || (e.within(o) && e.overlapsAny(u)); ) e.move(t[a]); if (e.within(o)) return e; var s = e.intersectPercentage(o); s < r && ((i = new Mi(e)), (r = s)), (e = new Mi(n)); } return i || n; })(i, a); t.move(f.toCSSCompatValues(o)); } function Ni() {} (Oi.prototype.applyStyles = function (e, t) { for (var i in ((t = t || this.div), e)) e.hasOwnProperty(i) && (t.style[i] = e[i]); }), (Oi.prototype.formatStyle = function (e, t) { return 0 === e ? 0 : e + t; }), ((Di.prototype = vi(Oi.prototype)).constructor = Di), (Mi.prototype.move = function (e, t) { switch (((t = void 0 !== t ? t : this.lineHeight), e)) { case '+x': (this.left += t), (this.right += t); break; case '-x': (this.left -= t), (this.right -= t); break; case '+y': (this.top += t), (this.bottom += t); break; case '-y': (this.top -= t), (this.bottom -= t); } }), (Mi.prototype.overlaps = function (e) { return ( this.left < e.right && this.right > e.left && this.top < e.bottom && this.bottom > e.top ); }), (Mi.prototype.overlapsAny = function (e) { for (var t = 0; t < e.length; t++) if (this.overlaps(e[t])) return !0; return !1; }), (Mi.prototype.within = function (e) { return ( this.top >= e.top && this.bottom <= e.bottom && this.left >= e.left && this.right <= e.right ); }), (Mi.prototype.overlapsOppositeAxis = function (e, t) { switch (t) { case '+x': return this.left < e.left; case '-x': return this.right > e.right; case '+y': return this.top < e.top; case '-y': return this.bottom > e.bottom; } }), (Mi.prototype.intersectPercentage = function (e) { return ( (Math.max(0, Math.min(this.right, e.right) - Math.max(this.left, e.left)) * Math.max(0, Math.min(this.bottom, e.bottom) - Math.max(this.top, e.top))) / (this.height * this.width) ); }), (Mi.prototype.toCSSCompatValues = function (e) { return { top: this.top - e.top, bottom: e.bottom - this.bottom, left: this.left - e.left, right: e.right - this.right, height: this.height, width: this.width }; }), (Mi.getSimpleBoxPosition = function (e) { var t = e.div ? e.div.offsetHeight : e.tagName ? e.offsetHeight : 0, i = e.div ? e.div.offsetWidth : e.tagName ? e.offsetWidth : 0, n = e.div ? e.div.offsetTop : e.tagName ? e.offsetTop : 0; return { left: (e = e.div ? e.div.getBoundingClientRect() : e.tagName ? e.getBoundingClientRect() : e).left, right: e.right, top: e.top || n, height: e.height || t, bottom: e.bottom || n + (e.height || t), width: e.width || i }; }), (Ni.StringDecoder = function () { return { decode: function (e) { if (!e) return ''; if ('string' != typeof e) throw new Error('Error - expected string data.'); return decodeURIComponent(encodeURIComponent(e)); } }; }), (Ni.convertCueToDOMTree = function (e, t) { return e && t ? xi(e, t) : null; }); (Ni.processCues = function (n, r, e) { if (!n || !r || !e) return null; for (; e.firstChild; ) e.removeChild(e.firstChild); var a = n.document.createElement('div'); if ( ((a.style.position = 'absolute'), (a.style.left = '0'), (a.style.right = '0'), (a.style.top = '0'), (a.style.bottom = '0'), (a.style.margin = '1.5%'), e.appendChild(a), (function (e) { for (var t = 0; t < e.length; t++) if (e[t].hasBeenReset || !e[t].displayState) return !0; return !1; })(r)) ) { var s = [], o = Mi.getSimpleBoxPosition(a), u = { font: Math.round(0.05 * o.height * 100) / 100 + 'px sans-serif' }; !(function () { for (var e, t, i = 0; i < r.length; i++) (t = r[i]), (e = new Di(n, t, u)), a.appendChild(e.div), Ri(0, e, o, s), (t.displayState = e.div), s.push(Mi.getSimpleBoxPosition(e)); })(); } else for (var t = 0; t < r.length; t++) a.appendChild(r[t].displayState); }), ((Ni.Parser = function (e, t, i) { i || ((i = t), (t = {})), (t = t || {}), (this.window = e), (this.vttjs = t), (this.state = 'INITIAL'), (this.buffer = ''), (this.decoder = i || new TextDecoder('utf8')), (this.regionList = []); }).prototype = { reportOrThrowError: function (e) { if (!(e instanceof _i)) throw e; this.onparsingerror && this.onparsingerror(e); }, parse: function (e) { var n = this; function t() { for (var e = n.buffer, t = 0; t < e.length && '\r' !== e[t] && '\n' !== e[t]; ) ++t; var i = e.substr(0, t); return '\r' === e[t] && ++t, '\n' === e[t] && ++t, (n.buffer = e.substr(t)), i; } function i(e) { e.match(/X-TIMESTAMP-MAP/) ? Si( e, function (e, t) { switch (e) { case 'X-TIMESTAMP-MAP': !(function (e) { var i = new Ti(); Si( e, function (e, t) { switch (e) { case 'MPEGT': i.integer(e + 'S', t); break; case 'LOCA': i.set(e + 'L', bi(t)); } }, /[^\d]:/, /,/ ), n.ontimestampmap && n.ontimestampmap({ MPEGTS: i.get('MPEGTS'), LOCAL: i.get('LOCAL') }); })(t); } }, /=/ ) : Si( e, function (e, t) { switch (e) { case 'Region': !(function (e) { var r = new Ti(); if ( (Si( e, function (e, t) { switch (e) { case 'id': r.set(e, t); break; case 'width': r.percent(e, t); break; case 'lines': r.integer(e, t); break; case 'regionanchor': case 'viewportanchor': var i = t.split(','); if (2 !== i.length) break; var n = new Ti(); if ( (n.percent('x', i[0]), n.percent('y', i[1]), !n.has('x') || !n.has('y')) ) break; r.set(e + 'X', n.get('x')), r.set(e + 'Y', n.get('y')); break; case 'scroll': r.alt(e, t, ['up']); } }, /=/, /\s/ ), r.has('id')) ) { var t = new (n.vttjs.VTTRegion || n.window.VTTRegion)(); (t.width = r.get('width', 100)), (t.lines = r.get('lines', 3)), (t.regionAnchorX = r.get('regionanchorX', 0)), (t.regionAnchorY = r.get('regionanchorY', 100)), (t.viewportAnchorX = r.get('viewportanchorX', 0)), (t.viewportAnchorY = r.get('viewportanchorY', 100)), (t.scroll = r.get('scroll', '')), n.onregion && n.onregion(t), n.regionList.push({ id: r.get('id'), region: t }); } })(t); } }, /:/ ); } e && (n.buffer += n.decoder.decode(e, { stream: !0 })); try { var r; if ('INITIAL' === n.state) { if (!/\r\n|\n/.test(n.buffer)) return this; var a = (r = t()).match(/^WEBVTT([ \t].*)?$/); if (!a || !a[0]) throw new _i(_i.Errors.BadSignature); n.state = 'HEADER'; } for (var s = !1; n.buffer; ) { if (!/\r\n|\n/.test(n.buffer)) return this; switch ((s ? (s = !1) : (r = t()), n.state)) { case 'HEADER': /:/.test(r) ? i(r) : r || (n.state = 'ID'); continue; case 'NOTE': r || (n.state = 'ID'); continue; case 'ID': if (/^NOTE($|[ \t])/.test(r)) { n.state = 'NOTE'; break; } if (!r) continue; n.cue = new (n.vttjs.VTTCue || n.window.VTTCue)(0, 0, ''); try { n.cue.align = 'center'; } catch (e) { n.cue.align = 'middle'; } if (((n.state = 'CUE'), -1 === r.indexOf('--\x3e'))) { n.cue.id = r; continue; } case 'CUE': try { ki(r, n.cue, n.regionList); } catch (e) { n.reportOrThrowError(e), (n.cue = null), (n.state = 'BADCUE'); continue; } n.state = 'CUETEXT'; continue; case 'CUETEXT': var o = -1 !== r.indexOf('--\x3e'); if (!r || (o && (s = !0))) { n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'ID'); continue; } n.cue.text && (n.cue.text += '\n'), (n.cue.text += r.replace(/\u2028/g, '\n').replace(/u2029/g, '\n')); continue; case 'BADCUE': r || (n.state = 'ID'); continue; } } } catch (e) { n.reportOrThrowError(e), 'CUETEXT' === n.state && n.cue && n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'INITIAL' === n.state ? 'BADWEBVTT' : 'BADCUE'); } return this; }, flush: function () { var t = this; try { if ( ((t.buffer += t.decoder.decode()), (!t.cue && 'HEADER' !== t.state) || ((t.buffer += '\n\n'), t.parse()), 'INITIAL' === t.state) ) throw new _i(_i.Errors.BadSignature); } catch (e) { t.reportOrThrowError(e); } return t.onflush && t.onflush(), this; } }); var Ui = Ni, Fi = { '': 1, lr: 1, rl: 1 }, Bi = { start: 1, center: 1, end: 1, left: 1, right: 1, auto: 1, 'line-left': 1, 'line-right': 1 }; function ji(e) { return 'string' == typeof e && !!Bi[e.toLowerCase()] && e.toLowerCase(); } function Vi(e, t, i) { this.hasBeenReset = !1; var n = '', r = !1, a = e, s = t, o = i, u = null, l = '', c = !0, d = 'auto', h = 'start', p = 'auto', f = 'auto', m = 100, g = 'center'; Object.defineProperties(this, { id: { enumerable: !0, get: function () { return n; }, set: function (e) { n = '' + e; } }, pauseOnExit: { enumerable: !0, get: function () { return r; }, set: function (e) { r = !!e; } }, startTime: { enumerable: !0, get: function () { return a; }, set: function (e) { if ('number' != typeof e) throw new TypeError('Start time must be set to a number.'); (a = e), (this.hasBeenReset = !0); } }, endTime: { enumerable: !0, get: function () { return s; }, set: function (e) { if ('number' != typeof e) throw new TypeError('End time must be set to a number.'); (s = e), (this.hasBeenReset = !0); } }, text: { enumerable: !0, get: function () { return o; }, set: function (e) { (o = '' + e), (this.hasBeenReset = !0); } }, region: { enumerable: !0, get: function () { return u; }, set: function (e) { (u = e), (this.hasBeenReset = !0); } }, vertical: { enumerable: !0, get: function () { return l; }, set: function (e) { var t = (function (e) { return 'string' == typeof e && !!Fi[e.toLowerCase()] && e.toLowerCase(); })(e); if (!1 === t) throw new SyntaxError( 'Vertical: an invalid or illegal direction string was specified.' ); (l = t), (this.hasBeenReset = !0); } }, snapToLines: { enumerable: !0, get: function () { return c; }, set: function (e) { (c = !!e), (this.hasBeenReset = !0); } }, line: { enumerable: !0, get: function () { return d; }, set: function (e) { if ('number' != typeof e && 'auto' !== e) throw new SyntaxError('Line: an invalid number or illegal string was specified.'); (d = e), (this.hasBeenReset = !0); } }, lineAlign: { enumerable: !0, get: function () { return h; }, set: function (e) { var t = ji(e); t && ((h = t), (this.hasBeenReset = !0)); } }, position: { enumerable: !0, get: function () { return p; }, set: function (e) { if (e < 0 || 100 < e) throw new Error('Position must be between 0 and 100.'); (p = e), (this.hasBeenReset = !0); } }, positionAlign: { enumerable: !0, get: function () { return f; }, set: function (e) { var t = ji(e); t && ((f = t), (this.hasBeenReset = !0)); } }, size: { enumerable: !0, get: function () { return m; }, set: function (e) { if (e < 0 || 100 < e) throw new Error('Size must be between 0 and 100.'); (m = e), (this.hasBeenReset = !0); } }, align: { enumerable: !0, get: function () { return g; }, set: function (e) { var t = ji(e); if (!t) throw new SyntaxError('align: an invalid or illegal alignment string was specified.'); (g = t), (this.hasBeenReset = !0); } } }), (this.displayState = void 0); } Vi.prototype.getCueAsHTML = function () { return WebVTT.convertCueToDOMTree(window, this.text); }; var qi = Vi, Hi = { '': !0, up: !0 }; function Wi(e) { return 'number' == typeof e && 0 <= e && e <= 100; } function zi() { var t = 100, i = 3, n = 0, r = 100, a = 0, s = 100, o = ''; Object.defineProperties(this, { width: { enumerable: !0, get: function () { return t; }, set: function (e) { if (!Wi(e)) throw new Error('Width must be between 0 and 100.'); t = e; } }, lines: { enumerable: !0, get: function () { return i; }, set: function (e) { if ('number' != typeof e) throw new TypeError('Lines must be set to a number.'); i = e; } }, regionAnchorY: { enumerable: !0, get: function () { return r; }, set: function (e) { if (!Wi(e)) throw new Error('RegionAnchorX must be between 0 and 100.'); r = e; } }, regionAnchorX: { enumerable: !0, get: function () { return n; }, set: function (e) { if (!Wi(e)) throw new Error('RegionAnchorY must be between 0 and 100.'); n = e; } }, viewportAnchorY: { enumerable: !0, get: function () { return s; }, set: function (e) { if (!Wi(e)) throw new Error('ViewportAnchorY must be between 0 and 100.'); s = e; } }, viewportAnchorX: { enumerable: !0, get: function () { return a; }, set: function (e) { if (!Wi(e)) throw new Error('ViewportAnchorX must be between 0 and 100.'); a = e; } }, scroll: { enumerable: !0, get: function () { return o; }, set: function (e) { var t = (function (e) { return 'string' == typeof e && !!Hi[e.toLowerCase()] && e.toLowerCase(); })(e); !1 === t || (o = t); } } }); } var Gi = i(function (e) { var t = (e.exports = { WebVTT: Ui, VTTCue: qi, VTTRegion: zi }); (T.vttjs = t), (T.WebVTT = t.WebVTT); var i = t.VTTCue, n = t.VTTRegion, r = T.VTTCue, a = T.VTTRegion; (t.shim = function () { (T.VTTCue = i), (T.VTTRegion = n); }), (t.restore = function () { (T.VTTCue = r), (T.VTTRegion = a); }), T.VTTCue || t.shim(); }); Gi.WebVTT, Gi.VTTCue, Gi.VTTRegion; var Xi = (function (t) { function i(i, e) { var n; return ( void 0 === i && (i = {}), void 0 === e && (e = function () {}), (i.reportTouchActivity = !1), ((n = t.call(this, null, i, e) || this).hasStarted_ = !1), n.on('playing', function () { this.hasStarted_ = !0; }), n.on('loadstart', function () { this.hasStarted_ = !1; }), gi.names.forEach(function (e) { var t = gi[e]; i && i[t.getterName] && (n[t.privateName] = i[t.getterName]); }), n.featuresProgressEvents || n.manualProgressOn(), n.featuresTimeupdateEvents || n.manualTimeUpdatesOn(), ['Text', 'Audio', 'Video'].forEach(function (e) { !1 === i['native' + e + 'Tracks'] && (n['featuresNative' + e + 'Tracks'] = !1); }), !1 === i.nativeCaptions || !1 === i.nativeTextTracks ? (n.featuresNativeTextTracks = !1) : (!0 !== i.nativeCaptions && !0 !== i.nativeTextTracks) || (n.featuresNativeTextTracks = !0), n.featuresNativeTextTracks || n.emulateTextTracks(), (n.preloadTextTracks = !1 !== i.preloadTextTracks), (n.autoRemoteTextTracks_ = new gi.text.ListClass()), n.initTrackListeners(), i.nativeControlsForTouch || n.emitTapEvents(), n.constructor && (n.name_ = n.constructor.name || 'Unknown Tech'), n ); } Ge(i, t); var e = i.prototype; return ( (e.triggerSourceset = function (e) { var t = this; this.isReady_ || this.one('ready', function () { return t.setTimeout(function () { return t.triggerSourceset(e); }, 1); }), this.trigger({ src: e, type: 'sourceset' }); }), (e.manualProgressOn = function () { this.on('durationchange', this.onDurationChange), (this.manualProgress = !0), this.one('ready', this.trackProgress); }), (e.manualProgressOff = function () { (this.manualProgress = !1), this.stopTrackingProgress(), this.off('durationchange', this.onDurationChange); }), (e.trackProgress = function (e) { this.stopTrackingProgress(), (this.progressInterval = this.setInterval( ve(this, function () { var e = this.bufferedPercent(); this.bufferedPercent_ !== e && this.trigger('progress'), 1 === (this.bufferedPercent_ = e) && this.stopTrackingProgress(); }), 500 )); }), (e.onDurationChange = function (e) { this.duration_ = this.duration(); }), (e.buffered = function () { return gt(0, 0); }), (e.bufferedPercent = function () { return vt(this.buffered(), this.duration_); }), (e.stopTrackingProgress = function () { this.clearInterval(this.progressInterval); }), (e.manualTimeUpdatesOn = function () { (this.manualTimeUpdates = !0), this.on('play', this.trackCurrentTime), this.on('pause', this.stopTrackingCurrentTime); }), (e.manualTimeUpdatesOff = function () { (this.manualTimeUpdates = !1), this.stopTrackingCurrentTime(), this.off('play', this.trackCurrentTime), this.off('pause', this.stopTrackingCurrentTime); }), (e.trackCurrentTime = function () { this.currentTimeInterval && this.stopTrackingCurrentTime(), (this.currentTimeInterval = this.setInterval(function () { this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }); }, 250)); }), (e.stopTrackingCurrentTime = function () { this.clearInterval(this.currentTimeInterval), this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }); }), (e.dispose = function () { this.clearTracks(fi.names), this.manualProgress && this.manualProgressOff(), this.manualTimeUpdates && this.manualTimeUpdatesOff(), t.prototype.dispose.call(this); }), (e.clearTracks = function (e) { var r = this; (e = [].concat(e)).forEach(function (e) { for (var t = r[e + 'Tracks']() || [], i = t.length; i--; ) { var n = t[i]; 'text' === e && r.removeRemoteTextTrack(n), t.removeTrack(n); } }); }), (e.cleanupAutoTextTracks = function () { for (var e = this.autoRemoteTextTracks_ || [], t = e.length; t--; ) { var i = e[t]; this.removeRemoteTextTrack(i); } }), (e.reset = function () {}), (e.crossOrigin = function () {}), (e.setCrossOrigin = function () {}), (e.error = function (e) { return void 0 !== e && ((this.error_ = new Ct(e)), this.trigger('error')), this.error_; }), (e.played = function () { return this.hasStarted_ ? gt(0, 0) : gt(); }), (e.setScrubbing = function () {}), (e.setCurrentTime = function () { this.manualTimeUpdates && this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }); }), (e.initTrackListeners = function () { var r = this; fi.names.forEach(function (e) { function t() { r.trigger(e + 'trackchange'); } var i = fi[e], n = r[i.getterName](); n.addEventListener('removetrack', t), n.addEventListener('addtrack', t), r.on('dispose', function () { n.removeEventListener('removetrack', t), n.removeEventListener('addtrack', t); }); }); }), (e.addWebVttScript_ = function () { var e = this; if (!T.WebVTT) if (d.body.contains(this.el())) { if (!this.options_['vtt.js'] && o(Gi) && 0 < Object.keys(Gi).length) return void this.trigger('vttjsloaded'); var t = d.createElement('script'); (t.src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js'), (t.onload = function () { e.trigger('vttjsloaded'); }), (t.onerror = function () { e.trigger('vttjserror'); }), this.on('dispose', function () { (t.onload = null), (t.onerror = null); }), (T.WebVTT = !0), this.el().parentNode.appendChild(t); } else this.ready(this.addWebVttScript_); }), (e.emulateTextTracks = function () { function t(e) { return n.addTrack(e.track); } function i(e) { return n.removeTrack(e.track); } var e = this, n = this.textTracks(), r = this.remoteTextTracks(); r.on('addtrack', t), r.on('removetrack', i), this.addWebVttScript_(); function a() { return e.trigger('texttrackchange'); } function s() { a(); for (var e = 0; e < n.length; e++) { var t = n[e]; t.removeEventListener('cuechange', a), 'showing' === t.mode && t.addEventListener('cuechange', a); } } s(), n.addEventListener('change', s), n.addEventListener('addtrack', s), n.addEventListener('removetrack', s), this.on('dispose', function () { r.off('addtrack', t), r.off('removetrack', i), n.removeEventListener('change', s), n.removeEventListener('addtrack', s), n.removeEventListener('removetrack', s); for (var e = 0; e < n.length; e++) { n[e].removeEventListener('cuechange', a); } }); }), (e.addTextTrack = function (e, t, i) { if (!e) throw new Error('TextTrack kind is required but was not provided'); return (function (e, t, i, n, r) { void 0 === r && (r = {}); var a = e.textTracks(); (r.kind = t), i && (r.label = i), n && (r.language = n), (r.tech = e); var s = new gi.text.TrackClass(r); return a.addTrack(s), s; })(this, e, t, i); }), (e.createRemoteTextTrack = function (e) { var t = Re(e, { tech: this }); return new mi.remoteTextEl.TrackClass(t); }), (e.addRemoteTextTrack = function (e, t) { var i = this; void 0 === e && (e = {}); var n = this.createRemoteTextTrack(e); return ( !0 !== t && !1 !== t && (p.warn( 'Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js' ), (t = !0)), this.remoteTextTrackEls().addTrackElement_(n), this.remoteTextTracks().addTrack(n.track), !0 !== t && this.ready(function () { return i.autoRemoteTextTracks_.addTrack(n.track); }), n ); }), (e.removeRemoteTextTrack = function (e) { var t = this.remoteTextTrackEls().getTrackElementByTrack_(e); this.remoteTextTrackEls().removeTrackElement_(t), this.remoteTextTracks().removeTrack(e), this.autoRemoteTextTracks_.removeTrack(e); }), (e.getVideoPlaybackQuality = function () { return {}; }), (e.requestPictureInPicture = function () { var e = this.options_.Promise || T.Promise; if (e) return e.reject(); }), (e.disablePictureInPicture = function () { return !0; }), (e.setDisablePictureInPicture = function () {}), (e.setPoster = function () {}), (e.playsinline = function () {}), (e.setPlaysinline = function () {}), (e.overrideNativeAudioTracks = function () {}), (e.overrideNativeVideoTracks = function () {}), (e.canPlayType = function () { return ''; }), (i.canPlayType = function () { return ''; }), (i.canPlaySource = function (e, t) { return i.canPlayType(e.type); }), (i.isTech = function (e) { return e.prototype instanceof i || e instanceof i || e === i; }), (i.registerTech = function (e, t) { if ((i.techs_ || (i.techs_ = {}), !i.isTech(t))) throw new Error('Tech ' + e + ' must be a Tech'); if (!i.canPlayType) throw new Error('Techs must have a static canPlayType method on them'); if (!i.canPlaySource) throw new Error('Techs must have a static canPlaySource method on them'); return ( (e = Me(e)), (i.techs_[e] = t), (i.techs_[De(e)] = t), 'Tech' !== e && i.defaultTechOrder_.push(e), t ); }), (i.getTech = function (e) { if (e) return i.techs_ && i.techs_[e] ? i.techs_[e] : ((e = Me(e)), T && T.videojs && T.videojs[e] ? (p.warn( 'The ' + e + ' tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)' ), T.videojs[e]) : void 0); }), i ); })(je); gi.names.forEach(function (e) { var t = gi[e]; Xi.prototype[t.getterName] = function () { return (this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName]; }; }), (Xi.prototype.featuresVolumeControl = !0), (Xi.prototype.featuresMuteControl = !0), (Xi.prototype.featuresFullscreenResize = !1), (Xi.prototype.featuresPlaybackRate = !1), (Xi.prototype.featuresProgressEvents = !1), (Xi.prototype.featuresSourceset = !1), (Xi.prototype.featuresTimeupdateEvents = !1), (Xi.prototype.featuresNativeTextTracks = !1), (Xi.withSourceHandlers = function (r) { (r.registerSourceHandler = function (e, t) { var i = r.sourceHandlers; (i = i || (r.sourceHandlers = [])), void 0 === t && (t = i.length), i.splice(t, 0, e); }), (r.canPlayType = function (e) { for (var t, i = r.sourceHandlers || [], n = 0; n < i.length; n++) if ((t = i[n].canPlayType(e))) return t; return ''; }), (r.selectSourceHandler = function (e, t) { for (var i = r.sourceHandlers || [], n = 0; n < i.length; n++) if (i[n].canHandleSource(e, t)) return i[n]; return null; }), (r.canPlaySource = function (e, t) { var i = r.selectSourceHandler(e, t); return i ? i.canHandleSource(e, t) : ''; }); ['seekable', 'seeking', 'duration'].forEach(function (e) { var t = this[e]; 'function' == typeof t && (this[e] = function () { return this.sourceHandler_ && this.sourceHandler_[e] ? this.sourceHandler_[e].apply(this.sourceHandler_, arguments) : t.apply(this, arguments); }); }, r.prototype), (r.prototype.setSource = function (e) { var t = r.selectSourceHandler(e, this.options_); t || (r.nativeSourceHandler ? (t = r.nativeSourceHandler) : p.error('No source handler found for the current source.')), this.disposeSourceHandler(), this.off('dispose', this.disposeSourceHandler), t !== r.nativeSourceHandler && (this.currentSource_ = e), (this.sourceHandler_ = t.handleSource(e, this, this.options_)), this.one('dispose', this.disposeSourceHandler); }), (r.prototype.disposeSourceHandler = function () { this.currentSource_ && (this.clearTracks(['audio', 'video']), (this.currentSource_ = null)), this.cleanupAutoTextTracks(), this.sourceHandler_ && (this.sourceHandler_.dispose && this.sourceHandler_.dispose(), (this.sourceHandler_ = null)); }); }), je.registerComponent('Tech', Xi), Xi.registerTech('Tech', Xi), (Xi.defaultTechOrder_ = []); var Ki = {}, Yi = {}, $i = {}; function Qi(e, t, i) { e.setTimeout(function () { return (function i(n, e, r, a, s, o) { void 0 === n && (n = {}); void 0 === e && (e = []); void 0 === s && (s = []); void 0 === o && (o = !1); var t = e, u = t[0], l = t.slice(1); if ('string' == typeof u) i(n, Ki[u], r, a, s, o); else if (u) { var c = rn(a, u); if (!c.setSource) return s.push(c), i(n, l, r, a, s, o); c.setSource(g({}, n), function (e, t) { if (e) return i(n, l, r, a, s, o); s.push(c), i(t, n.type === t.type ? l : Ki[t.type], r, a, s, o); }); } else l.length ? i(n, l, r, a, s, o) : o ? r(n, s) : i(n, Ki['*'], r, a, s, !0); })(t, Ki[t.type], i, e); }, 1); } function Ji(e, t, i, n) { void 0 === n && (n = null); var r = 'call' + Me(i), a = e.reduce(nn(r), n), s = a === $i, o = s ? null : t[i](a); return ( (function (e, t, i, n) { for (var r = e.length - 1; 0 <= r; r--) { var a = e[r]; a[t] && a[t](n, i); } })(e, i, o, s), o ); } var Zi = { buffered: 1, currentTime: 1, duration: 1, muted: 1, played: 1, paused: 1, seekable: 1, volume: 1 }, en = { setCurrentTime: 1, setMuted: 1, setVolume: 1 }, tn = { play: 1, pause: 1 }; function nn(i) { return function (e, t) { return e === $i ? $i : t[i] ? t[i](e) : e; }; } function rn(e, t) { var i = Yi[e.id()], n = null; if (null == i) return (n = t(e)), (Yi[e.id()] = [[t, n]]), n; for (var r = 0; r < i.length; r++) { var a = i[r], s = a[0], o = a[1]; s === t && (n = o); } return null === n && ((n = t(e)), i.push([t, n])), n; } function an(e) { void 0 === e && (e = ''); var t = Vt(e); return sn[t.toLowerCase()] || ''; } var sn = { opus: 'video/ogg', ogv: 'video/ogg', mp4: 'video/mp4', mov: 'video/mp4', m4v: 'video/mp4', mkv: 'video/x-matroska', m4a: 'audio/mp4', mp3: 'audio/mpeg', aac: 'audio/aac', caf: 'audio/x-caf', flac: 'audio/flac', oga: 'audio/ogg', wav: 'audio/wav', m3u8: 'application/x-mpegURL', jpg: 'image/jpeg', jpeg: 'image/jpeg', gif: 'image/gif', png: 'image/png', svg: 'image/svg+xml', webp: 'image/webp' }; function on(e) { if (!e.type) { var t = an(e.src); t && (e.type = t); } return e; } var un = (function (l) { function e(e, t, i) { var n, r = Re({ createEl: !1 }, t); if ( ((n = l.call(this, e, r, i) || this), t.playerOptions.sources && 0 !== t.playerOptions.sources.length) ) e.src(t.playerOptions.sources); else for (var a = 0, s = t.playerOptions.techOrder; a < s.length; a++) { var o = Me(s[a]), u = Xi.getTech(o); if ((o || (u = je.getComponent(o)), u && u.isSupported())) { e.loadTech_(o); break; } } return n; } return Ge(e, l), e; })(je); je.registerComponent('MediaLoader', un); var ln = (function (r) { function e(e, t) { var i; return (i = r.call(this, e, t) || this).emitTapEvents(), i.enable(), i; } Ge(e, r); var t = e.prototype; return ( (t.createEl = function (e, t, i) { void 0 === e && (e = 'div'), void 0 === t && (t = {}), void 0 === i && (i = {}), (t = g( { innerHTML: '', className: this.buildCSSClass(), tabIndex: 0 }, t )), 'button' === e && p.error( 'Creating a ClickableComponent with an HTML element of ' + e + ' is not supported; use a Button instead.' ), (i = g({ role: 'button' }, i)), (this.tabIndex_ = t.tabIndex); var n = r.prototype.createEl.call(this, e, t, i); return this.createControlTextEl(n), n; }), (t.dispose = function () { (this.controlTextEl_ = null), r.prototype.dispose.call(this); }), (t.createControlTextEl = function (e) { return ( (this.controlTextEl_ = k( 'span', { className: 'vjs-control-text' }, { 'aria-live': 'polite' } )), e && e.appendChild(this.controlTextEl_), this.controlText(this.controlText_, e), this.controlTextEl_ ); }), (t.controlText = function (e, t) { if ((void 0 === t && (t = this.el()), void 0 === e)) return this.controlText_ || 'Need Text'; var i = this.localize(e); (this.controlText_ = e), C(this.controlTextEl_, i), this.nonIconControl || t.setAttribute('title', i); }), (t.buildCSSClass = function () { return 'vjs-control vjs-button ' + r.prototype.buildCSSClass.call(this); }), (t.enable = function () { this.enabled_ || ((this.enabled_ = !0), this.removeClass('vjs-disabled'), this.el_.setAttribute('aria-disabled', 'false'), 'undefined' != typeof this.tabIndex_ && this.el_.setAttribute('tabIndex', this.tabIndex_), this.on(['tap', 'click'], this.handleClick), this.on('keydown', this.handleKeyDown)); }), (t.disable = function () { (this.enabled_ = !1), this.addClass('vjs-disabled'), this.el_.setAttribute('aria-disabled', 'true'), 'undefined' != typeof this.tabIndex_ && this.el_.removeAttribute('tabIndex'), this.off('mouseover', this.handleMouseOver), this.off('mouseout', this.handleMouseOut), this.off(['tap', 'click'], this.handleClick), this.off('keydown', this.handleKeyDown); }), (t.handleClick = function (e) { this.options_.clickHandler && this.options_.clickHandler.call(this, arguments); }), (t.handleKeyDown = function (e) { Ot.isEventKey(e, 'Space') || Ot.isEventKey(e, 'Enter') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : r.prototype.handleKeyDown.call(this, e); }), e ); })(je); je.registerComponent('ClickableComponent', ln); var cn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).update(), e.on('posterchange', ve(Ve(i), i.update)), i ); } Ge(e, n); var t = e.prototype; return ( (t.dispose = function () { this.player().off('posterchange', this.update), n.prototype.dispose.call(this); }), (t.createEl = function () { return k('div', { className: 'vjs-poster', tabIndex: -1 }); }), (t.update = function (e) { var t = this.player().poster(); this.setSrc(t), t ? this.show() : this.hide(); }), (t.setSrc = function (e) { var t = ''; e && (t = 'url("' + e + '")'), (this.el_.style.backgroundImage = t); }), (t.handleClick = function (e) { if (this.player_.controls()) { var t = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length; !this.player_.tech(!0) || ((at || it) && t) || this.player_.tech(!0).focus(), this.player_.paused() ? At(this.player_.play()) : this.player_.pause(); } }), e ); })(ln); je.registerComponent('PosterImage', cn); var dn = '#222', hn = { monospace: 'monospace', sansSerif: 'sans-serif', serif: 'serif', monospaceSansSerif: '"Andale Mono", "Lucida Console", monospace', monospaceSerif: '"Courier New", monospace', proportionalSansSerif: 'sans-serif', proportionalSerif: 'serif', casual: '"Comic Sans MS", Impact, fantasy', script: '"Monotype Corsiva", cursive', smallcaps: '"Andale Mono", "Lucida Console", monospace, sans-serif' }; function pn(e, t) { var i; if (4 === e.length) i = e[1] + e[1] + e[2] + e[2] + e[3] + e[3]; else { if (7 !== e.length) throw new Error( 'Invalid color code provided, ' + e + '; must be formatted as e.g. #f0e or #f604e2.' ); i = e.slice(1); } return ( 'rgba(' + parseInt(i.slice(0, 2), 16) + ',' + parseInt(i.slice(2, 4), 16) + ',' + parseInt(i.slice(4, 6), 16) + ',' + t + ')' ); } function fn(e, t, i) { try { e.style[t] = i; } catch (e) { return; } } var mn = (function (a) { function e(i, e, t) { var n; n = a.call(this, i, e, t) || this; var r = ve(Ve(n), n.updateDisplay); return ( i.on('loadstart', ve(Ve(n), n.toggleDisplay)), i.on('texttrackchange', r), i.on('loadedmetadata', ve(Ve(n), n.preselectTrack)), i.ready( ve(Ve(n), function () { if (i.tech_ && i.tech_.featuresNativeTextTracks) this.hide(); else { i.on('fullscreenchange', r), i.on('playerresize', r), T.addEventListener('orientationchange', r), i.on('dispose', function () { return T.removeEventListener('orientationchange', r); }); for (var e = this.options_.playerOptions.tracks || [], t = 0; t < e.length; t++) this.player_.addRemoteTextTrack(e[t], !0); this.preselectTrack(); } }) ), n ); } Ge(e, a); var t = e.prototype; return ( (t.preselectTrack = function () { for ( var e, t, i, n = { captions: 1, subtitles: 1 }, r = this.player_.textTracks(), a = this.player_.cache_.selectedLanguage, s = 0; s < r.length; s++ ) { var o = r[s]; a && a.enabled && a.language && a.language === o.language && o.kind in n ? (i = o.kind === a.kind ? o : i || o) : a && !a.enabled ? (t = e = i = null) : o.default && ('descriptions' !== o.kind || e ? o.kind in n && !t && (t = o) : (e = o)); } i ? (i.mode = 'showing') : t ? (t.mode = 'showing') : e && (e.mode = 'showing'); }), (t.toggleDisplay = function () { this.player_.tech_ && this.player_.tech_.featuresNativeTextTracks ? this.hide() : this.show(); }), (t.createEl = function () { return a.prototype.createEl.call( this, 'div', { className: 'vjs-text-track-display' }, { 'aria-live': 'off', 'aria-atomic': 'true' } ); }), (t.clearDisplay = function () { 'function' == typeof T.WebVTT && T.WebVTT.processCues(T, [], this.el_); }), (t.updateDisplay = function () { var e = this.player_.textTracks(), t = this.options_.allowMultipleShowingTracks; if ((this.clearDisplay(), t)) { for (var i = [], n = 0; n < e.length; ++n) { var r = e[n]; 'showing' === r.mode && i.push(r); } this.updateForTrack(i); } else { for (var a = null, s = null, o = e.length; o--; ) { var u = e[o]; 'showing' === u.mode && ('descriptions' === u.kind ? (a = u) : (s = u)); } s ? ('off' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'off'), this.updateForTrack(s)) : a && ('assertive' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'assertive'), this.updateForTrack(a)); } }), (t.updateDisplayState = function (e) { for ( var t = this.player_.textTrackSettings.getValues(), i = e.activeCues, n = i.length; n--; ) { var r = i[n]; if (r) { var a = r.displayState; if ( (t.color && (a.firstChild.style.color = t.color), t.textOpacity && fn(a.firstChild, 'color', pn(t.color || '#fff', t.textOpacity)), t.backgroundColor && (a.firstChild.style.backgroundColor = t.backgroundColor), t.backgroundOpacity && fn( a.firstChild, 'backgroundColor', pn(t.backgroundColor || '#000', t.backgroundOpacity) ), t.windowColor && (t.windowOpacity ? fn(a, 'backgroundColor', pn(t.windowColor, t.windowOpacity)) : (a.style.backgroundColor = t.windowColor)), t.edgeStyle && ('dropshadow' === t.edgeStyle ? (a.firstChild.style.textShadow = '2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px ' + dn) : 'raised' === t.edgeStyle ? (a.firstChild.style.textShadow = '1px 1px #222, 2px 2px #222, 3px 3px ' + dn) : 'depressed' === t.edgeStyle ? (a.firstChild.style.textShadow = '1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px ' + dn) : 'uniform' === t.edgeStyle && (a.firstChild.style.textShadow = '0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px ' + dn)), t.fontPercent && 1 !== t.fontPercent) ) { var s = T.parseFloat(a.style.fontSize); (a.style.fontSize = s * t.fontPercent + 'px'), (a.style.height = 'auto'), (a.style.top = 'auto'); } t.fontFamily && 'default' !== t.fontFamily && ('small-caps' === t.fontFamily ? (a.firstChild.style.fontVariant = 'small-caps') : (a.firstChild.style.fontFamily = hn[t.fontFamily])); } } }), (t.updateForTrack = function (e) { if ( (Array.isArray(e) || (e = [e]), 'function' == typeof T.WebVTT && !e.every(function (e) { return !e.activeCues; })) ) { for (var t = [], i = 0; i < e.length; ++i) for (var n = e[i], r = 0; r < n.activeCues.length; ++r) t.push(n.activeCues[r]); T.WebVTT.processCues(T, t, this.el_); for (var a = 0; a < e.length; ++a) { for (var s = e[a], o = 0; o < s.activeCues.length; ++o) { var u = s.activeCues[o].displayState; I(u, 'vjs-text-track-cue'), I(u, 'vjs-text-track-cue-' + (s.language ? s.language : a)); } this.player_.textTrackSettings && this.updateDisplayState(s); } } }), e ); })(je); je.registerComponent('TextTrackDisplay', mn); var gn = (function (r) { function e() { return r.apply(this, arguments) || this; } return ( Ge(e, r), (e.prototype.createEl = function () { var e = this.player_.isAudio(), t = this.localize(e ? 'Audio Player' : 'Video Player'), i = k('span', { className: 'vjs-control-text', innerHTML: this.localize('{1} is loading.', [t]) }), n = r.prototype.createEl.call(this, 'div', { className: 'vjs-loading-spinner', dir: 'ltr' }); return n.appendChild(i), n; }), e ); })(je); je.registerComponent('LoadingSpinner', gn); var vn = (function (t) { function e() { return t.apply(this, arguments) || this; } Ge(e, t); var i = e.prototype; return ( (i.createEl = function (e, t, i) { void 0 === t && (t = {}), void 0 === i && (i = {}), (t = g( { innerHTML: '', className: this.buildCSSClass() }, t )), (i = g({ type: 'button' }, i)); var n = je.prototype.createEl.call(this, 'button', t, i); return this.createControlTextEl(n), n; }), (i.addChild = function (e, t) { void 0 === t && (t = {}); var i = this.constructor.name; return ( p.warn( 'Adding an actionable (user controllable) child to a Button (' + i + ') is not supported; use a ClickableComponent instead.' ), je.prototype.addChild.call(this, e, t) ); }), (i.enable = function () { t.prototype.enable.call(this), this.el_.removeAttribute('disabled'); }), (i.disable = function () { t.prototype.disable.call(this), this.el_.setAttribute('disabled', 'disabled'); }), (i.handleKeyDown = function (e) { Ot.isEventKey(e, 'Space') || Ot.isEventKey(e, 'Enter') ? e.stopPropagation() : t.prototype.handleKeyDown.call(this, e); }), e ); })(ln); je.registerComponent('Button', vn); var yn = (function (n) { function e(e, t) { var i; return ( ((i = n.call(this, e, t) || this).mouseused_ = !1), i.on('mousedown', i.handleMouseDown), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-big-play-button'; }), (t.handleClick = function (e) { var t = this.player_.play(); if (this.mouseused_ && e.clientX && e.clientY) { var i = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length; return ( At(t), void (!this.player_.tech(!0) || ((at || it) && i) || this.player_.tech(!0).focus()) ); } var n = this.player_.getChild('controlBar'), r = n && n.getChild('playToggle'); if (r) { var a = function () { return r.focus(); }; It(t) ? t.then(a, function () {}) : this.setTimeout(a, 1); } else this.player_.tech(!0).focus(); }), (t.handleKeyDown = function (e) { (this.mouseused_ = !1), n.prototype.handleKeyDown.call(this, e); }), (t.handleMouseDown = function (e) { this.mouseused_ = !0; }), e ); })(vn); // (yn.prototype.controlText_ = 'Play Video'), je.registerComponent('BigPlayButton', yn); (yn.prototype.controlText_ = ''), je.registerComponent('BigPlayButton', yn); var _n = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).controlText((t && t.controlText) || i.localize('Close')), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-close-button ' + n.prototype.buildCSSClass.call(this); }), (t.handleClick = function (e) { this.trigger({ type: 'close', bubbles: !1 }); }), (t.handleKeyDown = function (e) { Ot.isEventKey(e, 'Esc') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : n.prototype.handleKeyDown.call(this, e); }), e ); })(vn); je.registerComponent('CloseButton', _n); var bn = (function (n) { function e(e, t) { var i; return ( void 0 === t && (t = {}), (i = n.call(this, e, t) || this), (t.replay = void 0 === t.replay || t.replay), i.on(e, 'play', i.handlePlay), i.on(e, 'pause', i.handlePause), t.replay && i.on(e, 'ended', i.handleEnded), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-play-control ' + n.prototype.buildCSSClass.call(this); }), (t.handleClick = function (e) { this.player_.paused() ? this.player_.play() : this.player_.pause(); }), (t.handleSeeked = function (e) { this.removeClass('vjs-ended'), this.player_.paused() ? this.handlePause(e) : this.handlePlay(e); }), (t.handlePlay = function (e) { this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.controlText('Pause'); }), (t.handlePause = function (e) { this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.controlText('Play'); }), (t.handleEnded = function (e) { this.removeClass('vjs-playing'), this.addClass('vjs-ended'), this.controlText('Replay'), this.one(this.player_, 'seeked', this.handleSeeked); }), e ); })(vn); (bn.prototype.controlText_ = 'Play'), je.registerComponent('PlayToggle', bn); function Tn(e, t) { e = e < 0 ? 0 : e; var i = Math.floor(e % 60), n = Math.floor((e / 60) % 60), r = Math.floor(e / 3600), a = Math.floor((t / 60) % 60), s = Math.floor(t / 3600); return ( (!isNaN(e) && e !== 1 / 0) || (r = n = i = '-'), (r = 0 < r || 0 < s ? r + ':' : '') + (n = ((r || 10 <= a) && n < 10 ? '0' + n : n) + ':') + (i = i < 10 ? '0' + i : i) ); } var Sn = Tn; function kn(e, t) { return void 0 === t && (t = e), Sn(e, t); } var Cn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).on(e, ['timeupdate', 'ended'], i.updateContent), i.updateTextNode_(), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { var e = this.buildCSSClass(), t = n.prototype.createEl.call(this, 'div', { className: e + ' vjs-time-control vjs-control', innerHTML: '' + this.localize(this.labelText_) + ' ' }); return ( (this.contentEl_ = k( 'span', { className: e + '-display' }, { 'aria-live': 'off', role: 'presentation' } )), t.appendChild(this.contentEl_), t ); }), (t.dispose = function () { (this.contentEl_ = null), (this.textNode_ = null), n.prototype.dispose.call(this); }), (t.updateTextNode_ = function (e) { var t = this; void 0 === e && (e = 0), (e = kn(e)), this.formattedTime_ !== e && ((this.formattedTime_ = e), this.requestNamedAnimationFrame('TimeDisplay#updateTextNode_', function () { if (t.contentEl_) { var e = t.textNode_; (t.textNode_ = d.createTextNode(t.formattedTime_)), t.textNode_ && (e ? t.contentEl_.replaceChild(t.textNode_, e) : t.contentEl_.appendChild(t.textNode_)); } })); }), (t.updateContent = function (e) {}), e ); })(je); (Cn.prototype.labelText_ = 'Time'), (Cn.prototype.controlText_ = 'Time'), je.registerComponent('TimeDisplay', Cn); var En = (function (e) { function t() { return e.apply(this, arguments) || this; } Ge(t, e); var i = t.prototype; return ( (i.buildCSSClass = function () { return 'vjs-current-time'; }), (i.updateContent = function (e) { var t; (t = this.player_.ended() ? this.player_.duration() : this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()), this.updateTextNode_(t); }), t ); })(Cn); (En.prototype.labelText_ = 'Current Time'), (En.prototype.controlText_ = 'Current Time'), je.registerComponent('CurrentTimeDisplay', En); var wn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).on(e, 'durationchange', i.updateContent), i.on(e, 'loadstart', i.updateContent), i.on(e, 'loadedmetadata', i.updateContent), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-duration'; }), (t.updateContent = function (e) { var t = this.player_.duration(); this.updateTextNode_(t); }), e ); })(Cn); (wn.prototype.labelText_ = 'Duration'), (wn.prototype.controlText_ = 'Duration'), je.registerComponent('DurationDisplay', wn); var In = (function (e) { function t() { return e.apply(this, arguments) || this; } return ( Ge(t, e), (t.prototype.createEl = function () { return e.prototype.createEl.call( this, 'div', { className: 'vjs-time-control vjs-time-divider', innerHTML: '
/
' }, { 'aria-hidden': !0 } ); }), t ); })(je); je.registerComponent('TimeDivider', In); var An = (function (n) { function e(e, t) { var i; return (i = n.call(this, e, t) || this).on(e, 'durationchange', i.updateContent), i; } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-remaining-time'; }), (t.createEl = function () { var e = n.prototype.createEl.call(this); return e.insertBefore(k('span', {}, { 'aria-hidden': !0 }, '-'), this.contentEl_), e; }), (t.updateContent = function (e) { var t; 'number' == typeof this.player_.duration() && ((t = this.player_.ended() ? 0 : this.player_.remainingTimeDisplay ? this.player_.remainingTimeDisplay() : this.player_.remainingTime()), this.updateTextNode_(t)); }), e ); })(Cn); (An.prototype.labelText_ = 'Remaining Time'), (An.prototype.controlText_ = 'Remaining Time'), je.registerComponent('RemainingTimeDisplay', An); var xn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).updateShowing(), i.on(i.player(), 'durationchange', i.updateShowing), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { var e = n.prototype.createEl.call(this, 'div', { className: 'vjs-live-control vjs-control' }); return ( (this.contentEl_ = k( 'div', { className: 'vjs-live-display', innerHTML: '' + this.localize('Stream Type') + ' ' + this.localize('LIVE') }, { 'aria-live': 'off' } )), e.appendChild(this.contentEl_), e ); }), (t.dispose = function () { (this.contentEl_ = null), n.prototype.dispose.call(this); }), (t.updateShowing = function (e) { this.player().duration() === 1 / 0 ? this.show() : this.hide(); }), e ); })(je); je.registerComponent('LiveDisplay', xn); var Pn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).updateLiveEdgeStatus(), i.player_.liveTracker && i.on(i.player_.liveTracker, 'liveedgechange', i.updateLiveEdgeStatus), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { var e = n.prototype.createEl.call(this, 'button', { className: 'vjs-seek-to-live-control vjs-control' }); return ( (this.textEl_ = k( 'span', { className: 'vjs-seek-to-live-text', innerHTML: this.localize('LIVE') }, { 'aria-hidden': 'true' } )), e.appendChild(this.textEl_), e ); }), (t.updateLiveEdgeStatus = function () { !this.player_.liveTracker || this.player_.liveTracker.atLiveEdge() ? (this.setAttribute('aria-disabled', !0), this.addClass('vjs-at-live-edge'), this.controlText('Seek to live, currently playing live')) : (this.setAttribute('aria-disabled', !1), this.removeClass('vjs-at-live-edge'), this.controlText('Seek to live, currently behind live')); }), (t.handleClick = function () { this.player_.liveTracker.seekToLiveEdge(); }), (t.dispose = function () { this.player_.liveTracker && this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatus), (this.textEl_ = null), n.prototype.dispose.call(this); }), e ); })(vn); (Pn.prototype.controlText_ = 'Seek to live, currently playing live'), je.registerComponent('SeekToLive', Pn); function Ln(e, t, i) { return (e = Number(e)), Math.min(i, Math.max(t, isNaN(e) ? t : e)); } var On = (function (n) { function e(e, t) { var i; return ( ((i = n.call(this, e, t) || this).bar = i.getChild(i.options_.barName)), i.vertical(!!i.options_.vertical), i.enable(), i ); } Ge(e, n); var t = e.prototype; return ( (t.enabled = function () { return this.enabled_; }), (t.enable = function () { this.enabled() || (this.on('mousedown', this.handleMouseDown), this.on('touchstart', this.handleMouseDown), this.on('keydown', this.handleKeyDown), this.on('click', this.handleClick), this.on(this.player_, 'controlsvisible', this.update), this.playerEvent && this.on(this.player_, this.playerEvent, this.update), this.removeClass('disabled'), this.setAttribute('tabindex', 0), (this.enabled_ = !0)); }), (t.disable = function () { if (this.enabled()) { var e = this.bar.el_.ownerDocument; this.off('mousedown', this.handleMouseDown), this.off('touchstart', this.handleMouseDown), this.off('keydown', this.handleKeyDown), this.off('click', this.handleClick), this.off(this.player_, 'controlsvisible', this.update), this.off(e, 'mousemove', this.handleMouseMove), this.off(e, 'mouseup', this.handleMouseUp), this.off(e, 'touchmove', this.handleMouseMove), this.off(e, 'touchend', this.handleMouseUp), this.removeAttribute('tabindex'), this.addClass('disabled'), this.playerEvent && this.off(this.player_, this.playerEvent, this.update), (this.enabled_ = !1); } }), (t.createEl = function (e, t, i) { return ( void 0 === t && (t = {}), void 0 === i && (i = {}), (t.className = t.className + ' vjs-slider'), (t = g({ tabIndex: 0 }, t)), (i = g( { role: 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, tabIndex: 0 }, i )), n.prototype.createEl.call(this, e, t, i) ); }), (t.handleMouseDown = function (e) { var t = this.bar.el_.ownerDocument; 'mousedown' === e.type && e.preventDefault(), 'touchstart' !== e.type || nt || e.preventDefault(), R(), this.addClass('vjs-sliding'), this.trigger('slideractive'), this.on(t, 'mousemove', this.handleMouseMove), this.on(t, 'mouseup', this.handleMouseUp), this.on(t, 'touchmove', this.handleMouseMove), this.on(t, 'touchend', this.handleMouseUp), this.handleMouseMove(e); }), (t.handleMouseMove = function (e) {}), (t.handleMouseUp = function () { var e = this.bar.el_.ownerDocument; N(), this.removeClass('vjs-sliding'), this.trigger('sliderinactive'), this.off(e, 'mousemove', this.handleMouseMove), this.off(e, 'mouseup', this.handleMouseUp), this.off(e, 'touchmove', this.handleMouseMove), this.off(e, 'touchend', this.handleMouseUp), this.update(); }), (t.update = function () { var t = this; if (this.el_ && this.bar) { var i = this.getProgress(); return ( i === this.progress_ || ((this.progress_ = i), this.requestNamedAnimationFrame('Slider#update', function () { var e = t.vertical() ? 'height' : 'width'; t.bar.el().style[e] = (100 * i).toFixed(2) + '%'; })), i ); } }), (t.getProgress = function () { return Number(Ln(this.getPercent(), 0, 1).toFixed(4)); }), (t.calculateDistance = function (e) { var t = B(this.el_, e); return this.vertical() ? t.y : t.x; }), (t.handleKeyDown = function (e) { Ot.isEventKey(e, 'Left') || Ot.isEventKey(e, 'Down') ? (e.preventDefault(), e.stopPropagation(), this.stepBack()) : Ot.isEventKey(e, 'Right') || Ot.isEventKey(e, 'Up') ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : n.prototype.handleKeyDown.call(this, e); }), (t.handleClick = function (e) { e.stopPropagation(), e.preventDefault(); }), (t.vertical = function (e) { if (void 0 === e) return this.vertical_ || !1; (this.vertical_ = !!e), this.vertical_ ? this.addClass('vjs-slider-vertical') : this.addClass('vjs-slider-horizontal'); }), e ); })(je); je.registerComponent('Slider', On); function Dn(e, t) { return Ln((e / t) * 100, 0, 100).toFixed(2) + '%'; } var Mn = (function (r) { function e(e, t) { var i; return ((i = r.call(this, e, t) || this).partEls_ = []), i.on(e, 'progress', i.update), i; } Ge(e, r); var t = e.prototype; return ( (t.createEl = function () { var e = r.prototype.createEl.call(this, 'div', { className: 'vjs-load-progress' }), t = k('span', { className: 'vjs-control-text' }), i = k('span', { textContent: this.localize('Loaded') }), n = d.createTextNode(': '); return ( (this.percentageEl_ = k('span', { className: 'vjs-control-text-loaded-percentage', textContent: '0%' })), e.appendChild(t), t.appendChild(i), t.appendChild(n), t.appendChild(this.percentageEl_), e ); }), (t.dispose = function () { (this.partEls_ = null), (this.percentageEl_ = null), r.prototype.dispose.call(this); }), (t.update = function (e) { var d = this; this.requestNamedAnimationFrame('LoadProgressBar#update', function () { var e = d.player_.liveTracker, t = d.player_.buffered(), i = e && e.isLive() ? e.seekableEnd() : d.player_.duration(), n = d.player_.bufferedEnd(), r = d.partEls_, a = Dn(n, i); d.percent_ !== a && ((d.el_.style.width = a), C(d.percentageEl_, a), (d.percent_ = a)); for (var s = 0; s < t.length; s++) { var o = t.start(s), u = t.end(s), l = r[s]; l || ((l = d.el_.appendChild(k())), (r[s] = l)), (l.dataset.start === o && l.dataset.end === u) || ((l.dataset.start = o), (l.dataset.end = u), (l.style.left = Dn(o, n)), (l.style.width = Dn(u - o, n))); } for (var c = r.length; c > t.length; c--) d.el_.removeChild(r[c - 1]); r.length = t.length; }); }), e ); })(je); je.registerComponent('LoadProgressBar', Mn); var Rn = (function (n) { function e(e, t) { var i; return ((i = n.call(this, e, t) || this).update = ye(ve(Ve(i), i.update), 30)), i; } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call( this, 'div', { className: 'vjs-time-tooltip' }, { 'aria-hidden': 'true' } ); }), (t.update = function (e, t, i) { var n = F(this.el_), r = U(this.player_.el()), a = e.width * t; if (r && n) { var s = e.left - r.left + a, o = e.width - a + (r.right - e.right), u = n.width / 2; s < u ? (u += u - s) : o < u && (u = o), u < 0 ? (u = 0) : u > n.width && (u = n.width), (this.el_.style.right = '-' + u + 'px'), this.write(i); } }), (t.write = function (e) { C(this.el_, e); }), (t.updateTime = function (r, a, s, o) { var u = this; this.requestNamedAnimationFrame('TimeTooltip#updateTime', function () { var e, t = u.player_.duration(); if (u.player_.liveTracker && u.player_.liveTracker.isLive()) { var i = u.player_.liveTracker.liveWindow(), n = i - a * i; e = (n < 1 ? '' : '-') + kn(n, i); } else e = kn(s, t); u.update(r, a, e), o && o(); }); }), e ); })(je); je.registerComponent('TimeTooltip', Rn); var Nn = (function (n) { function e(e, t) { var i; return ((i = n.call(this, e, t) || this).update = ye(ve(Ve(i), i.update), 30)), i; } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call( this, 'div', { className: 'vjs-play-progress vjs-slider-bar' }, { 'aria-hidden': 'true' } ); }), (t.update = function (e, t) { var i = this.getChild('timeTooltip'); if (i) { var n = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); i.updateTime(e, t, n); } }), e ); })(je); (Nn.prototype.options_ = { children: [] }), dt || Je || Nn.prototype.options_.children.push('timeTooltip'), je.registerComponent('PlayProgressBar', Nn); var Un = (function (n) { function e(e, t) { var i; return ((i = n.call(this, e, t) || this).update = ye(ve(Ve(i), i.update), 30)), i; } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call(this, 'div', { className: 'vjs-mouse-display' }); }), (t.update = function (e, t) { var i = this, n = t * this.player_.duration(); this.getChild('timeTooltip').updateTime(e, t, n, function () { i.el_.style.left = e.width * t + 'px'; }); }), e ); })(je); (Un.prototype.options_ = { children: ['timeTooltip'] }), je.registerComponent('MouseTimeDisplay', Un); var Fn = (function (a) { function e(e, t) { var i; return (i = a.call(this, e, t) || this).setEventHandlers_(), i; } Ge(e, a); var t = e.prototype; return ( (t.setEventHandlers_ = function () { (this.update_ = ve(this, this.update)), (this.update = ye(this.update_, 30)), this.on(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, 'liveedgechange', this.update), (this.updateInterval = null), this.on(this.player_, ['playing'], this.enableInterval_), this.on(this.player_, ['ended', 'pause', 'waiting'], this.disableInterval_), 'hidden' in d && 'visibilityState' in d && this.on(d, 'visibilitychange', this.toggleVisibility_); }), (t.toggleVisibility_ = function (e) { d.hidden ? this.disableInterval_(e) : (this.enableInterval_(), this.update()); }), (t.enableInterval_ = function () { this.updateInterval || (this.updateInterval = this.setInterval(this.update, 30)); }), (t.disableInterval_ = function (e) { (this.player_.liveTracker && this.player_.liveTracker.isLive() && e && 'ended' !== e.type) || (this.updateInterval && (this.clearInterval(this.updateInterval), (this.updateInterval = null))); }), (t.createEl = function () { return a.prototype.createEl.call( this, 'div', { className: 'vjs-progress-holder' }, { 'aria-label': this.localize('Progress Bar') } ); }), (t.update = function (e) { var n = this, r = a.prototype.update.call(this); return ( this.requestNamedAnimationFrame('SeekBar#update', function () { var e = n.player_.ended() ? n.player_.duration() : n.getCurrentTime_(), t = n.player_.liveTracker, i = n.player_.duration(); t && t.isLive() && (i = n.player_.liveTracker.liveCurrentTime()), n.percent_ !== r && (n.el_.setAttribute('aria-valuenow', (100 * r).toFixed(2)), (n.percent_ = r)), (n.currentTime_ === e && n.duration_ === i) || (n.el_.setAttribute( 'aria-valuetext', n.localize( 'progress bar timing: currentTime={1} duration={2}', [kn(e, i), kn(i, i)], '{1} of {2}' ) ), (n.currentTime_ = e), (n.duration_ = i)), n.bar && n.bar.update(U(n.el()), n.getProgress()); }), r ); }), (t.getCurrentTime_ = function () { return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(); }), (t.getPercent = function () { var e, t = this.getCurrentTime_(), i = this.player_.liveTracker; return ( i && i.isLive() ? ((e = (t - i.seekableStart()) / i.liveWindow()), i.atLiveEdge() && (e = 1)) : (e = t / this.player_.duration()), e ); }), (t.handleMouseDown = function (e) { z(e) && (e.stopPropagation(), this.player_.scrubbing(!0), (this.videoWasPlaying = !this.player_.paused()), this.player_.pause(), a.prototype.handleMouseDown.call(this, e)); }), (t.handleMouseMove = function (e) { if (z(e)) { var t, i = this.calculateDistance(e), n = this.player_.liveTracker; if (n && n.isLive()) { if (0.99 <= i) return void n.seekToLiveEdge(); var r = n.seekableStart(), a = n.liveCurrentTime(); if ( (a <= (t = r + i * n.liveWindow()) && (t = a), t <= r && (t = r + 0.1), t === 1 / 0) ) return; } else (t = i * this.player_.duration()) === this.player_.duration() && (t -= 0.1); this.player_.currentTime(t); } }), (t.enable = function () { a.prototype.enable.call(this); var e = this.getChild('mouseTimeDisplay'); e && e.show(); }), (t.disable = function () { a.prototype.disable.call(this); var e = this.getChild('mouseTimeDisplay'); e && e.hide(); }), (t.handleMouseUp = function (e) { a.prototype.handleMouseUp.call(this, e), e && e.stopPropagation(), this.player_.scrubbing(!1), this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }), this.videoWasPlaying ? At(this.player_.play()) : this.update_(); }), (t.stepForward = function () { this.player_.currentTime(this.player_.currentTime() + 5); }), (t.stepBack = function () { this.player_.currentTime(this.player_.currentTime() - 5); }), (t.handleAction = function (e) { this.player_.paused() ? this.player_.play() : this.player_.pause(); }), (t.handleKeyDown = function (e) { if (Ot.isEventKey(e, 'Space') || Ot.isEventKey(e, 'Enter')) e.preventDefault(), e.stopPropagation(), this.handleAction(e); else if (Ot.isEventKey(e, 'Home')) e.preventDefault(), e.stopPropagation(), this.player_.currentTime(0); else if (Ot.isEventKey(e, 'End')) e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.duration()); else if (/^[0-9]$/.test(Ot(e))) { e.preventDefault(), e.stopPropagation(); var t = (10 * (Ot.codes[Ot(e)] - Ot.codes[0])) / 100; this.player_.currentTime(this.player_.duration() * t); } else Ot.isEventKey(e, 'PgDn') ? (e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.currentTime() - 60)) : Ot.isEventKey(e, 'PgUp') ? (e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.currentTime() + 60)) : a.prototype.handleKeyDown.call(this, e); }), (t.dispose = function () { this.disableInterval_(), this.off(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, 'liveedgechange', this.update), this.off(this.player_, ['playing'], this.enableInterval_), this.off(this.player_, ['ended', 'pause', 'waiting'], this.disableInterval_), 'hidden' in d && 'visibilityState' in d && this.off(d, 'visibilitychange', this.toggleVisibility_), a.prototype.dispose.call(this); }), e ); })(On); (Fn.prototype.options_ = { children: ['loadProgressBar', 'playProgressBar'], barName: 'playProgressBar' }), dt || Je || Fn.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay'), je.registerComponent('SeekBar', Fn); var Bn = (function (n) { function e(e, t) { var i; return ( ((i = n.call(this, e, t) || this).handleMouseMove = ye(ve(Ve(i), i.handleMouseMove), 30)), (i.throttledHandleMouseSeek = ye(ve(Ve(i), i.handleMouseSeek), 30)), i.enable(), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call(this, 'div', { className: 'vjs-progress-control vjs-control' }); }), (t.handleMouseMove = function (e) { var t = this.getChild('seekBar'); if (t) { var i = t.getChild('playProgressBar'), n = t.getChild('mouseTimeDisplay'); if (i || n) { var r = t.el(), a = F(r), s = B(r, e).x; (s = Ln(s, 0, 1)), n && n.update(a, s), i && i.update(a, t.getProgress()); } } }), (t.handleMouseSeek = function (e) { var t = this.getChild('seekBar'); t && t.handleMouseMove(e); }), (t.enabled = function () { return this.enabled_; }), (t.disable = function () { this.children().forEach(function (e) { return e.disable && e.disable(); }), this.enabled() && (this.off(['mousedown', 'touchstart'], this.handleMouseDown), this.off(this.el_, 'mousemove', this.handleMouseMove), this.handleMouseUp(), this.addClass('disabled'), (this.enabled_ = !1)); }), (t.enable = function () { this.children().forEach(function (e) { return e.enable && e.enable(); }), this.enabled() || (this.on(['mousedown', 'touchstart'], this.handleMouseDown), this.on(this.el_, 'mousemove', this.handleMouseMove), this.removeClass('disabled'), (this.enabled_ = !0)); }), (t.handleMouseDown = function (e) { var t = this.el_.ownerDocument, i = this.getChild('seekBar'); i && i.handleMouseDown(e), this.on(t, 'mousemove', this.throttledHandleMouseSeek), this.on(t, 'touchmove', this.throttledHandleMouseSeek), this.on(t, 'mouseup', this.handleMouseUp), this.on(t, 'touchend', this.handleMouseUp); }), (t.handleMouseUp = function (e) { var t = this.el_.ownerDocument, i = this.getChild('seekBar'); i && i.handleMouseUp(e), this.off(t, 'mousemove', this.throttledHandleMouseSeek), this.off(t, 'touchmove', this.throttledHandleMouseSeek), this.off(t, 'mouseup', this.handleMouseUp), this.off(t, 'touchend', this.handleMouseUp); }), e ); })(je); (Bn.prototype.options_ = { children: ['seekBar'] }), je.registerComponent('ProgressControl', Bn); var jn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).on( e, ['enterpictureinpicture', 'leavepictureinpicture'], i.handlePictureInPictureChange ), i.on( e, ['disablepictureinpicturechanged', 'loadedmetadata'], i.handlePictureInPictureEnabledChange ), i.disable(), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-picture-in-picture-control ' + n.prototype.buildCSSClass.call(this); }), (t.handlePictureInPictureEnabledChange = function () { d.pictureInPictureEnabled && !1 === this.player_.disablePictureInPicture() ? this.enable() : this.disable(); }), (t.handlePictureInPictureChange = function (e) { this.player_.isInPictureInPicture() ? this.controlText('Exit Picture-in-Picture') : this.controlText('Picture-in-Picture'), this.handlePictureInPictureEnabledChange(); }), (t.handleClick = function (e) { this.player_.isInPictureInPicture() ? this.player_.exitPictureInPicture() : this.player_.requestPictureInPicture(); }), e ); })(vn); (jn.prototype.controlText_ = 'Picture-in-Picture'), je.registerComponent('PictureInPictureToggle', jn); var Vn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).on(e, 'fullscreenchange', i.handleFullscreenChange), !1 === d[e.fsApi_.fullscreenEnabled] && i.disable(), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-fullscreen-control ' + n.prototype.buildCSSClass.call(this); }), (t.handleFullscreenChange = function (e) { this.player_.isFullscreen() ? this.controlText('Non-Fullscreen') : this.controlText('Fullscreen'); }), (t.handleClick = function (e) { this.player_.isFullscreen() ? this.player_.exitFullscreen() : this.player_.requestFullscreen(); }), e ); })(vn); (Vn.prototype.controlText_ = 'Fullscreen'), je.registerComponent('FullscreenToggle', Vn); var qn = (function (e) { function t() { return e.apply(this, arguments) || this; } return ( Ge(t, e), (t.prototype.createEl = function () { return e.prototype.createEl.call(this, 'div', { className: 'vjs-volume-level', innerHTML: '' }); }), t ); })(je); je.registerComponent('VolumeLevel', qn); var Hn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).on('slideractive', i.updateLastVolume_), i.on(e, 'volumechange', i.updateARIAAttributes), e.ready(function () { return i.updateARIAAttributes(); }), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { return n.prototype.createEl.call( this, 'div', { className: 'vjs-volume-bar vjs-slider-bar' }, { 'aria-label': this.localize('Volume Level'), 'aria-live': 'polite' } ); }), (t.handleMouseDown = function (e) { z(e) && n.prototype.handleMouseDown.call(this, e); }), (t.handleMouseMove = function (e) { z(e) && (this.checkMuted(), this.player_.volume(this.calculateDistance(e))); }), (t.checkMuted = function () { this.player_.muted() && this.player_.muted(!1); }), (t.getPercent = function () { return this.player_.muted() ? 0 : this.player_.volume(); }), (t.stepForward = function () { this.checkMuted(), this.player_.volume(this.player_.volume() + 0.1); }), (t.stepBack = function () { this.checkMuted(), this.player_.volume(this.player_.volume() - 0.1); }), (t.updateARIAAttributes = function (e) { var t = this.player_.muted() ? 0 : this.volumeAsPercentage_(); this.el_.setAttribute('aria-valuenow', t), this.el_.setAttribute('aria-valuetext', t + '%'); }), (t.volumeAsPercentage_ = function () { return Math.round(100 * this.player_.volume()); }), (t.updateLastVolume_ = function () { var e = this, t = this.player_.volume(); this.one('sliderinactive', function () { 0 === e.player_.volume() && e.player_.lastVolume_(t); }); }), e ); })(On); (Hn.prototype.options_ = { children: ['volumeLevel'], barName: 'volumeLevel' }), (Hn.prototype.playerEvent = 'volumechange'), je.registerComponent('VolumeBar', Hn); var Wn = (function (n) { function e(e, t) { var i; return ( void 0 === t && (t = {}), (t.vertical = t.vertical || !1), ('undefined' != typeof t.volumeBar && !o(t.volumeBar)) || ((t.volumeBar = t.volumeBar || {}), (t.volumeBar.vertical = t.vertical)), (i = n.call(this, e, t) || this), (function (e, t) { t.tech_ && !t.tech_.featuresVolumeControl && e.addClass('vjs-hidden'), e.on(t, 'loadstart', function () { t.tech_.featuresVolumeControl ? e.removeClass('vjs-hidden') : e.addClass('vjs-hidden'); }); })(Ve(i), e), (i.throttledHandleMouseMove = ye(ve(Ve(i), i.handleMouseMove), 30)), i.on('mousedown', i.handleMouseDown), i.on('touchstart', i.handleMouseDown), i.on(i.volumeBar, ['focus', 'slideractive'], function () { i.volumeBar.addClass('vjs-slider-active'), i.addClass('vjs-slider-active'), i.trigger('slideractive'); }), i.on(i.volumeBar, ['blur', 'sliderinactive'], function () { i.volumeBar.removeClass('vjs-slider-active'), i.removeClass('vjs-slider-active'), i.trigger('sliderinactive'); }), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { var e = 'vjs-volume-horizontal'; return ( this.options_.vertical && (e = 'vjs-volume-vertical'), n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-control vjs-control ' + e }) ); }), (t.handleMouseDown = function (e) { var t = this.el_.ownerDocument; this.on(t, 'mousemove', this.throttledHandleMouseMove), this.on(t, 'touchmove', this.throttledHandleMouseMove), this.on(t, 'mouseup', this.handleMouseUp), this.on(t, 'touchend', this.handleMouseUp); }), (t.handleMouseUp = function (e) { var t = this.el_.ownerDocument; this.off(t, 'mousemove', this.throttledHandleMouseMove), this.off(t, 'touchmove', this.throttledHandleMouseMove), this.off(t, 'mouseup', this.handleMouseUp), this.off(t, 'touchend', this.handleMouseUp); }), (t.handleMouseMove = function (e) { this.volumeBar.handleMouseMove(e); }), e ); })(je); (Wn.prototype.options_ = { children: ['volumeBar'] }), je.registerComponent('VolumeControl', Wn); var zn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this), (function (e, t) { t.tech_ && !t.tech_.featuresMuteControl && e.addClass('vjs-hidden'), e.on(t, 'loadstart', function () { t.tech_.featuresMuteControl ? e.removeClass('vjs-hidden') : e.addClass('vjs-hidden'); }); })(Ve(i), e), i.on(e, ['loadstart', 'volumechange'], i.update), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-mute-control ' + n.prototype.buildCSSClass.call(this); }), (t.handleClick = function (e) { var t = this.player_.volume(), i = this.player_.lastVolume_(); if (0 === t) { var n = i < 0.1 ? 0.1 : i; this.player_.volume(n), this.player_.muted(!1); } else this.player_.muted(!this.player_.muted()); }), (t.update = function (e) { this.updateIcon_(), this.updateControlText_(); }), (t.updateIcon_ = function () { var e = this.player_.volume(), t = 3; dt && this.player_.tech_ && this.player_.tech_.el_ && this.player_.muted(this.player_.tech_.el_.muted), 0 === e || this.player_.muted() ? (t = 0) : e < 0.33 ? (t = 1) : e < 0.67 && (t = 2); for (var i = 0; i < 4; i++) A(this.el_, 'vjs-vol-' + i); I(this.el_, 'vjs-vol-' + t); }), (t.updateControlText_ = function () { var e = this.player_.muted() || 0 === this.player_.volume() ? 'Unmute' : 'Mute'; this.controlText() !== e && this.controlText(e); }), e ); })(vn); (zn.prototype.controlText_ = 'Mute'), je.registerComponent('MuteToggle', zn); var Gn = (function (n) { function e(e, t) { var i; return ( void 0 === t && (t = {}), 'undefined' != typeof t.inline ? (t.inline = t.inline) : (t.inline = !0), ('undefined' != typeof t.volumeControl && !o(t.volumeControl)) || ((t.volumeControl = t.volumeControl || {}), (t.volumeControl.vertical = !t.inline)), (i = n.call(this, e, t) || this).on(e, ['loadstart'], i.volumePanelState_), i.on(i.muteToggle, 'keyup', i.handleKeyPress), i.on(i.volumeControl, 'keyup', i.handleVolumeControlKeyUp), i.on('keydown', i.handleKeyPress), i.on('mouseover', i.handleMouseOver), i.on('mouseout', i.handleMouseOut), i.on(i.volumeControl, ['slideractive'], i.sliderActive_), i.on(i.volumeControl, ['sliderinactive'], i.sliderInactive_), i ); } Ge(e, n); var t = e.prototype; return ( (t.sliderActive_ = function () { this.addClass('vjs-slider-active'); }), (t.sliderInactive_ = function () { this.removeClass('vjs-slider-active'); }), (t.volumePanelState_ = function () { this.volumeControl.hasClass('vjs-hidden') && this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-hidden'), this.volumeControl.hasClass('vjs-hidden') && !this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-mute-toggle-only'); }), (t.createEl = function () { var e = 'vjs-volume-panel-horizontal'; return ( this.options_.inline || (e = 'vjs-volume-panel-vertical'), n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-panel vjs-control ' + e }) ); }), (t.dispose = function () { this.handleMouseOut(), n.prototype.dispose.call(this); }), (t.handleVolumeControlKeyUp = function (e) { Ot.isEventKey(e, 'Esc') && this.muteToggle.focus(); }), (t.handleMouseOver = function (e) { this.addClass('vjs-hover'), he(d, 'keyup', ve(this, this.handleKeyPress)); }), (t.handleMouseOut = function (e) { this.removeClass('vjs-hover'), pe(d, 'keyup', ve(this, this.handleKeyPress)); }), (t.handleKeyPress = function (e) { Ot.isEventKey(e, 'Esc') && this.handleMouseOut(); }), e ); })(je); (Gn.prototype.options_ = { children: ['muteToggle', 'volumeControl'] }), je.registerComponent('VolumePanel', Gn); var Xn = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this), t && (i.menuButton_ = t.menuButton), (i.focusedChild_ = -1), i.on('keydown', i.handleKeyDown), (i.boundHandleBlur_ = ve(Ve(i), i.handleBlur)), (i.boundHandleTapClick_ = ve(Ve(i), i.handleTapClick)), i ); } Ge(e, n); var t = e.prototype; return ( (t.addEventListenerForItem = function (e) { e instanceof je && (this.on(e, 'blur', this.boundHandleBlur_), this.on(e, ['tap', 'click'], this.boundHandleTapClick_)); }), (t.removeEventListenerForItem = function (e) { e instanceof je && (this.off(e, 'blur', this.boundHandleBlur_), this.off(e, ['tap', 'click'], this.boundHandleTapClick_)); }), (t.removeChild = function (e) { 'string' == typeof e && (e = this.getChild(e)), this.removeEventListenerForItem(e), n.prototype.removeChild.call(this, e); }), (t.addItem = function (e) { var t = this.addChild(e); t && this.addEventListenerForItem(t); }), (t.createEl = function () { var e = this.options_.contentElType || 'ul'; (this.contentEl_ = k(e, { className: 'vjs-menu-content' })), this.contentEl_.setAttribute('role', 'menu'); var t = n.prototype.createEl.call(this, 'div', { append: this.contentEl_, className: 'vjs-menu' }); return ( t.appendChild(this.contentEl_), he(t, 'click', function (e) { e.preventDefault(), e.stopImmediatePropagation(); }), t ); }), (t.dispose = function () { (this.contentEl_ = null), (this.boundHandleBlur_ = null), (this.boundHandleTapClick_ = null), n.prototype.dispose.call(this); }), (t.handleBlur = function (e) { var t = e.relatedTarget || d.activeElement; if ( !this.children().some(function (e) { return e.el() === t; }) ) { var i = this.menuButton_; i && i.buttonPressed_ && t !== i.el().firstChild && i.unpressButton(); } }), (t.handleTapClick = function (t) { if (this.menuButton_) { this.menuButton_.unpressButton(); var e = this.children(); if (!Array.isArray(e)) return; var i = e.filter(function (e) { return e.el() === t.target; })[0]; if (!i) return; 'CaptionSettingsMenuItem' !== i.name() && this.menuButton_.focus(); } }), (t.handleKeyDown = function (e) { Ot.isEventKey(e, 'Left') || Ot.isEventKey(e, 'Down') ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : (Ot.isEventKey(e, 'Right') || Ot.isEventKey(e, 'Up')) && (e.preventDefault(), e.stopPropagation(), this.stepBack()); }), (t.stepForward = function () { var e = 0; void 0 !== this.focusedChild_ && (e = this.focusedChild_ + 1), this.focus(e); }), (t.stepBack = function () { var e = 0; void 0 !== this.focusedChild_ && (e = this.focusedChild_ - 1), this.focus(e); }), (t.focus = function (e) { void 0 === e && (e = 0); var t = this.children().slice(); t.length && t[0].className && /vjs-menu-title/.test(t[0].className) && t.shift(), 0 < t.length && (e < 0 ? (e = 0) : e >= t.length && (e = t.length - 1), t[(this.focusedChild_ = e)].el_.focus()); }), e ); })(je); je.registerComponent('Menu', Xn); var Kn = (function (r) { function e(e, t) { var i; void 0 === t && (t = {}), ((i = r.call(this, e, t) || this).menuButton_ = new vn(e, t)), i.menuButton_.controlText(i.controlText_), i.menuButton_.el_.setAttribute('aria-haspopup', 'true'); var n = vn.prototype.buildCSSClass(); return ( (i.menuButton_.el_.className = i.buildCSSClass() + ' ' + n), i.menuButton_.removeClass('vjs-control'), i.addChild(i.menuButton_), i.update(), (i.enabled_ = !0), i.on(i.menuButton_, 'tap', i.handleClick), i.on(i.menuButton_, 'click', i.handleClick), i.on(i.menuButton_, 'keydown', i.handleKeyDown), i.on(i.menuButton_, 'mouseenter', function () { i.addClass('vjs-hover'), i.menu.show(), he(d, 'keyup', ve(Ve(i), i.handleMenuKeyUp)); }), i.on('mouseleave', i.handleMouseLeave), i.on('keydown', i.handleSubmenuKeyDown), i ); } Ge(e, r); var t = e.prototype; return ( (t.update = function () { var e = this.createMenu(); this.menu && (this.menu.dispose(), this.removeChild(this.menu)), (this.menu = e), this.addChild(e), (this.buttonPressed_ = !1), this.menuButton_.el_.setAttribute('aria-expanded', 'false'), this.items && this.items.length <= this.hideThreshold_ ? this.hide() : this.show(); }), (t.createMenu = function () { var e = new Xn(this.player_, { menuButton: this }); if (((this.hideThreshold_ = 0), this.options_.title)) { var t = k('li', { className: 'vjs-menu-title', innerHTML: Me(this.options_.title), tabIndex: -1 }); this.hideThreshold_ += 1; var i = new je(this.player_, { el: t }); e.addItem(i); } if (((this.items = this.createItems()), this.items)) for (var n = 0; n < this.items.length; n++) e.addItem(this.items[n]); return e; }), (t.createItems = function () {}), (t.createEl = function () { return r.prototype.createEl.call( this, 'div', { className: this.buildWrapperCSSClass() }, {} ); }), (t.buildWrapperCSSClass = function () { var e = 'vjs-menu-button'; return ( !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + vn.prototype.buildCSSClass() + ' ' + r.prototype.buildCSSClass.call(this) ); }), (t.buildCSSClass = function () { var e = 'vjs-menu-button'; return ( !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + r.prototype.buildCSSClass.call(this) ); }), (t.controlText = function (e, t) { return void 0 === t && (t = this.menuButton_.el()), this.menuButton_.controlText(e, t); }), (t.dispose = function () { this.handleMouseLeave(), r.prototype.dispose.call(this); }), (t.handleClick = function (e) { this.buttonPressed_ ? this.unpressButton() : this.pressButton(); }), (t.handleMouseLeave = function (e) { this.removeClass('vjs-hover'), pe(d, 'keyup', ve(this, this.handleMenuKeyUp)); }), (t.focus = function () { this.menuButton_.focus(); }), (t.blur = function () { this.menuButton_.blur(); }), (t.handleKeyDown = function (e) { Ot.isEventKey(e, 'Esc') || Ot.isEventKey(e, 'Tab') ? (this.buttonPressed_ && this.unpressButton(), Ot.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus())) : (Ot.isEventKey(e, 'Up') || Ot.isEventKey(e, 'Down')) && (this.buttonPressed_ || (e.preventDefault(), this.pressButton())); }), (t.handleMenuKeyUp = function (e) { (Ot.isEventKey(e, 'Esc') || Ot.isEventKey(e, 'Tab')) && this.removeClass('vjs-hover'); }), (t.handleSubmenuKeyPress = function (e) { this.handleSubmenuKeyDown(e); }), (t.handleSubmenuKeyDown = function (e) { (Ot.isEventKey(e, 'Esc') || Ot.isEventKey(e, 'Tab')) && (this.buttonPressed_ && this.unpressButton(), Ot.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus())); }), (t.pressButton = function () { if (this.enabled_) { if ( ((this.buttonPressed_ = !0), this.menu.show(), this.menu.lockShowing(), this.menuButton_.el_.setAttribute('aria-expanded', 'true'), dt && b()) ) return; this.menu.focus(); } }), (t.unpressButton = function () { this.enabled_ && ((this.buttonPressed_ = !1), this.menu.unlockShowing(), this.menu.hide(), this.menuButton_.el_.setAttribute('aria-expanded', 'false')); }), (t.disable = function () { this.unpressButton(), (this.enabled_ = !1), this.addClass('vjs-disabled'), this.menuButton_.disable(); }), (t.enable = function () { (this.enabled_ = !0), this.removeClass('vjs-disabled'), this.menuButton_.enable(); }), e ); })(je); je.registerComponent('MenuButton', Kn); var Yn = (function (a) { function e(e, t) { var i, n = t.tracks; if (((i = a.call(this, e, t) || this).items.length <= 1 && i.hide(), !n)) return Ve(i); var r = ve(Ve(i), i.update); return ( n.addEventListener('removetrack', r), n.addEventListener('addtrack', r), i.player_.on('ready', r), i.player_.on('dispose', function () { n.removeEventListener('removetrack', r), n.removeEventListener('addtrack', r); }), i ); } return Ge(e, a), e; })(Kn); je.registerComponent('TrackButton', Yn); var $n = ['Tab', 'Esc', 'Up', 'Down', 'Right', 'Left'], Qn = (function (n) { function e(e, t) { var i; return ( ((i = n.call(this, e, t) || this).selectable = t.selectable), (i.isSelected_ = t.selected || !1), (i.multiSelectable = t.multiSelectable), i.selected(i.isSelected_), i.selectable ? i.multiSelectable ? i.el_.setAttribute('role', 'menuitemcheckbox') : i.el_.setAttribute('role', 'menuitemradio') : i.el_.setAttribute('role', 'menuitem'), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function (e, t, i) { return ( (this.nonIconControl = !0), n.prototype.createEl.call( this, 'li', g( { className: 'vjs-menu-item', innerHTML: '' + this.localize(this.options_.label) + '', tabIndex: -1 }, t ), i ) ); }), (t.handleKeyDown = function (t) { $n.some(function (e) { return Ot.isEventKey(t, e); }) || n.prototype.handleKeyDown.call(this, t); }), (t.handleClick = function (e) { this.selected(!0); }), (t.selected = function (e) { this.selectable && (e ? (this.addClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'true'), this.controlText(', selected'), (this.isSelected_ = !0)) : (this.removeClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'false'), this.controlText(''), (this.isSelected_ = !1))); }), e ); })(ln); je.registerComponent('MenuItem', Qn); var Jn = (function (u) { function e(e, t) { var n, i = t.track, r = e.textTracks(); (t.label = i.label || i.language || 'Unknown'), (t.selected = 'showing' === i.mode), ((n = u.call(this, e, t) || this).track = i), (n.kinds = (t.kinds || [t.kind || n.track.kind]).filter(Boolean)); function a() { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; n.handleTracksChange.apply(Ve(n), t); } function s() { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; n.handleSelectedLanguageChange.apply(Ve(n), t); } var o; e.on(['loadstart', 'texttrackchange'], a), r.addEventListener('change', a), r.addEventListener('selectedlanguagechange', s), n.on('dispose', function () { e.off(['loadstart', 'texttrackchange'], a), r.removeEventListener('change', a), r.removeEventListener('selectedlanguagechange', s); }), void 0 === r.onchange && n.on(['tap', 'click'], function () { if ('object' != typeof T.Event) try { o = new T.Event('change'); } catch (e) {} o || (o = d.createEvent('Event')).initEvent('change', !0, !0), r.dispatchEvent(o); }); return n.handleTracksChange(), n; } Ge(e, u); var t = e.prototype; return ( (t.handleClick = function (e) { var t = this.track, i = this.player_.textTracks(); if ((u.prototype.handleClick.call(this, e), i)) for (var n = 0; n < i.length; n++) { var r = i[n]; -1 !== this.kinds.indexOf(r.kind) && (r === t ? 'showing' !== r.mode && (r.mode = 'showing') : 'disabled' !== r.mode && (r.mode = 'disabled')); } }), (t.handleTracksChange = function (e) { var t = 'showing' === this.track.mode; t !== this.isSelected_ && this.selected(t); }), (t.handleSelectedLanguageChange = function (e) { if ('showing' === this.track.mode) { var t = this.player_.cache_.selectedLanguage; if (t && t.enabled && t.language === this.track.language && t.kind !== this.track.kind) return; this.player_.cache_.selectedLanguage = { enabled: !0, language: this.track.language, kind: this.track.kind }; } }), (t.dispose = function () { (this.track = null), u.prototype.dispose.call(this); }), e ); })(Qn); je.registerComponent('TextTrackMenuItem', Jn); var Zn = (function (i) { function e(e, t) { return ( (t.track = { player: e, kind: t.kind, kinds: t.kinds, default: !1, mode: 'disabled' }), t.kinds || (t.kinds = [t.kind]), t.label ? (t.track.label = t.label) : (t.track.label = t.kinds.join(' and ') + ' off'), (t.selectable = !0), (t.multiSelectable = !1), i.call(this, e, t) || this ); } Ge(e, i); var t = e.prototype; return ( (t.handleTracksChange = function (e) { for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) { var a = t[n]; if (-1 < this.options_.kinds.indexOf(a.kind) && 'showing' === a.mode) { i = !1; break; } } i !== this.isSelected_ && this.selected(i); }), (t.handleSelectedLanguageChange = function (e) { for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) { var a = t[n]; if ( -1 < ['captions', 'descriptions', 'subtitles'].indexOf(a.kind) && 'showing' === a.mode ) { i = !1; break; } } i && (this.player_.cache_.selectedLanguage = { enabled: !1 }); }), e ); })(Jn); je.registerComponent('OffTextTrackMenuItem', Zn); var er = (function (i) { function e(e, t) { return void 0 === t && (t = {}), (t.tracks = e.textTracks()), i.call(this, e, t) || this; } return ( Ge(e, i), (e.prototype.createItems = function (e, t) { var i; void 0 === e && (e = []), void 0 === t && (t = Jn), this.label_ && (i = this.label_ + ' off'), e.push(new Zn(this.player_, { kinds: this.kinds_, kind: this.kind_, label: i })), (this.hideThreshold_ += 1); var n = this.player_.textTracks(); Array.isArray(this.kinds_) || (this.kinds_ = [this.kind_]); for (var r = 0; r < n.length; r++) { var a = n[r]; if (-1 < this.kinds_.indexOf(a.kind)) { var s = new t(this.player_, { track: a, kinds: this.kinds_, kind: this.kind_, selectable: !0, multiSelectable: !1 }); s.addClass('vjs-' + a.kind + '-menu-item'), e.push(s); } } return e; }), e ); })(Yn); je.registerComponent('TextTrackButton', er); var tr = (function (s) { function e(e, t) { var i, n = t.track, r = t.cue, a = e.currentTime(); return ( (t.selectable = !0), (t.multiSelectable = !1), (t.label = r.text), (t.selected = r.startTime <= a && a < r.endTime), ((i = s.call(this, e, t) || this).track = n), (i.cue = r), n.addEventListener('cuechange', ve(Ve(i), i.update)), i ); } Ge(e, s); var t = e.prototype; return ( (t.handleClick = function (e) { s.prototype.handleClick.call(this), this.player_.currentTime(this.cue.startTime), this.update(this.cue.startTime); }), (t.update = function (e) { var t = this.cue, i = this.player_.currentTime(); this.selected(t.startTime <= i && i < t.endTime); }), e ); })(Qn); je.registerComponent('ChaptersTrackMenuItem', tr); var ir = (function (n) { function e(e, t, i) { return n.call(this, e, t, i) || this; } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-chapters-button ' + n.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-chapters-button ' + n.prototype.buildWrapperCSSClass.call(this); }), (t.update = function (e) { (this.track_ && (!e || ('addtrack' !== e.type && 'removetrack' !== e.type))) || this.setTrack(this.findChaptersTrack()), n.prototype.update.call(this); }), (t.setTrack = function (e) { if (this.track_ !== e) { if ( (this.updateHandler_ || (this.updateHandler_ = this.update.bind(this)), this.track_) ) { var t = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_); t && t.removeEventListener('load', this.updateHandler_), (this.track_ = null); } if (((this.track_ = e), this.track_)) { this.track_.mode = 'hidden'; var i = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_); i && i.addEventListener('load', this.updateHandler_); } } }), (t.findChaptersTrack = function () { for (var e = this.player_.textTracks() || [], t = e.length - 1; 0 <= t; t--) { var i = e[t]; if (i.kind === this.kind_) return i; } }), (t.getMenuCaption = function () { return this.track_ && this.track_.label ? this.track_.label : this.localize(Me(this.kind_)); }), (t.createMenu = function () { return (this.options_.title = this.getMenuCaption()), n.prototype.createMenu.call(this); }), (t.createItems = function () { var e = []; if (!this.track_) return e; var t = this.track_.cues; if (!t) return e; for (var i = 0, n = t.length; i < n; i++) { var r = t[i], a = new tr(this.player_, { track: this.track_, cue: r }); e.push(a); } return e; }), e ); })(er); (ir.prototype.kind_ = 'chapters'), (ir.prototype.controlText_ = 'Chapters'), je.registerComponent('ChaptersButton', ir); var nr = (function (s) { function e(e, t, i) { var n; n = s.call(this, e, t, i) || this; var r = e.textTracks(), a = ve(Ve(n), n.handleTracksChange); return ( r.addEventListener('change', a), n.on('dispose', function () { r.removeEventListener('change', a); }), n ); } Ge(e, s); var t = e.prototype; return ( (t.handleTracksChange = function (e) { for (var t = this.player().textTracks(), i = !1, n = 0, r = t.length; n < r; n++) { var a = t[n]; if (a.kind !== this.kind_ && 'showing' === a.mode) { i = !0; break; } } i ? this.disable() : this.enable(); }), (t.buildCSSClass = function () { return 'vjs-descriptions-button ' + s.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-descriptions-button ' + s.prototype.buildWrapperCSSClass.call(this); }), e ); })(er); (nr.prototype.kind_ = 'descriptions'), (nr.prototype.controlText_ = 'Descriptions'), je.registerComponent('DescriptionsButton', nr); var rr = (function (n) { function e(e, t, i) { return n.call(this, e, t, i) || this; } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-subtitles-button ' + n.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-subtitles-button ' + n.prototype.buildWrapperCSSClass.call(this); }), e ); })(er); (rr.prototype.kind_ = 'subtitles'), (rr.prototype.controlText_ = 'Subtitles'), je.registerComponent('SubtitlesButton', rr); var ar = (function (n) { function e(e, t) { var i; return ( (t.track = { player: e, kind: t.kind, label: t.kind + ' settings', selectable: !1, default: !1, mode: 'disabled' }), (t.selectable = !1), (t.name = 'CaptionSettingsMenuItem'), (i = n.call(this, e, t) || this).addClass('vjs-texttrack-settings'), i.controlText(', opens ' + t.kind + ' settings dialog'), i ); } return ( Ge(e, n), (e.prototype.handleClick = function (e) { this.player().getChild('textTrackSettings').open(); }), e ); })(Jn); je.registerComponent('CaptionSettingsMenuItem', ar); var sr = (function (n) { function e(e, t, i) { return n.call(this, e, t, i) || this; } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-captions-button ' + n.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-captions-button ' + n.prototype.buildWrapperCSSClass.call(this); }), (t.createItems = function () { var e = []; return ( (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) || !this.player().getChild('textTrackSettings') || (e.push(new ar(this.player_, { kind: this.kind_ })), (this.hideThreshold_ += 1)), n.prototype.createItems.call(this, e) ); }), e ); })(er); (sr.prototype.kind_ = 'captions'), (sr.prototype.controlText_ = 'Captions'), je.registerComponent('CaptionsButton', sr); var or = (function (r) { function e() { return r.apply(this, arguments) || this; } return ( Ge(e, r), (e.prototype.createEl = function (e, t, i) { var n = '' + this.localize(this.options_.label); return ( 'captions' === this.options_.track.kind && (n += '\n \n ' + this.localize('Captions') + '\n '), (n += ''), r.prototype.createEl.call(this, e, g({ innerHTML: n }, t), i) ); }), e ); })(Jn); je.registerComponent('SubsCapsMenuItem', or); var ur = (function (n) { function e(e, t) { var i; return ( void 0 === t && (t = {}), ((i = n.call(this, e, t) || this).label_ = 'subtitles'), -1 < ['en', 'en-us', 'en-ca', 'fr-ca'].indexOf(i.player_.language_) && (i.label_ = 'captions'), i.menuButton_.controlText(Me(i.label_)), i ); } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-subs-caps-button ' + n.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-subs-caps-button ' + n.prototype.buildWrapperCSSClass.call(this); }), (t.createItems = function () { var e = []; return ( (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) || !this.player().getChild('textTrackSettings') || (e.push(new ar(this.player_, { kind: this.label_ })), (this.hideThreshold_ += 1)), (e = n.prototype.createItems.call(this, e, or)) ); }), e ); })(er); (ur.prototype.kinds_ = ['captions', 'subtitles']), (ur.prototype.controlText_ = 'Subtitles'), je.registerComponent('SubsCapsButton', ur); var lr = (function (s) { function e(e, t) { var n, i = t.track, r = e.audioTracks(); (t.label = i.label || i.language || 'Unknown'), (t.selected = i.enabled), ((n = s.call(this, e, t) || this).track = i), n.addClass('vjs-' + i.kind + '-menu-item'); function a() { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; n.handleTracksChange.apply(Ve(n), t); } return ( r.addEventListener('change', a), n.on('dispose', function () { r.removeEventListener('change', a); }), n ); } Ge(e, s); var t = e.prototype; return ( (t.createEl = function (e, t, i) { var n = '' + this.localize(this.options_.label); return ( 'main-desc' === this.options_.track.kind && (n += '\n \n ' + this.localize('Descriptions') + '\n '), (n += ''), s.prototype.createEl.call(this, e, g({ innerHTML: n }, t), i) ); }), (t.handleClick = function (e) { var t = this.player_.audioTracks(); s.prototype.handleClick.call(this, e); for (var i = 0; i < t.length; i++) { var n = t[i]; n.enabled = n === this.track; } }), (t.handleTracksChange = function (e) { this.selected(this.track.enabled); }), e ); })(Qn); je.registerComponent('AudioTrackMenuItem', lr); var cr = (function (i) { function e(e, t) { return void 0 === t && (t = {}), (t.tracks = e.audioTracks()), i.call(this, e, t) || this; } Ge(e, i); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-audio-button ' + i.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-audio-button ' + i.prototype.buildWrapperCSSClass.call(this); }), (t.createItems = function (e) { void 0 === e && (e = []), (this.hideThreshold_ = 1); for (var t = this.player_.audioTracks(), i = 0; i < t.length; i++) { var n = t[i]; e.push(new lr(this.player_, { track: n, selectable: !0, multiSelectable: !1 })); } return e; }), e ); })(Yn); (cr.prototype.controlText_ = 'Audio Track'), je.registerComponent('AudioTrackButton', cr); var dr = (function (a) { function e(e, t) { var i, n = t.rate, r = parseFloat(n, 10); return ( (t.label = n), (t.selected = 1 === r), (t.selectable = !0), (t.multiSelectable = !1), ((i = a.call(this, e, t) || this).label = n), (i.rate = r), i.on(e, 'ratechange', i.update), i ); } Ge(e, a); var t = e.prototype; return ( (t.handleClick = function (e) { a.prototype.handleClick.call(this), this.player().playbackRate(this.rate); }), (t.update = function (e) { this.selected(this.player().playbackRate() === this.rate); }), e ); })(Qn); (dr.prototype.contentElType = 'button'), je.registerComponent('PlaybackRateMenuItem', dr); var hr = (function (n) { function e(e, t) { var i; return ( (i = n.call(this, e, t) || this).updateVisibility(), i.updateLabel(), i.on(e, 'loadstart', i.updateVisibility), i.on(e, 'ratechange', i.updateLabel), i ); } Ge(e, n); var t = e.prototype; return ( (t.createEl = function () { var e = n.prototype.createEl.call(this); return ( (this.labelEl_ = k('div', { className: 'vjs-playback-rate-value', innerHTML: '1x' })), e.appendChild(this.labelEl_), e ); }), (t.dispose = function () { (this.labelEl_ = null), n.prototype.dispose.call(this); }), (t.buildCSSClass = function () { return 'vjs-playback-rate ' + n.prototype.buildCSSClass.call(this); }), (t.buildWrapperCSSClass = function () { return 'vjs-playback-rate ' + n.prototype.buildWrapperCSSClass.call(this); }), (t.createMenu = function () { var e = new Xn(this.player()), t = this.playbackRates(); if (t) for (var i = t.length - 1; 0 <= i; i--) e.addChild(new dr(this.player(), { rate: t[i] + 'x' })); return e; }), (t.updateARIAAttributes = function () { this.el().setAttribute('aria-valuenow', this.player().playbackRate()); }), (t.handleClick = function (e) { for ( var t = this.player().playbackRate(), i = this.playbackRates(), n = i[0], r = 0; r < i.length; r++ ) if (i[r] > t) { n = i[r]; break; } this.player().playbackRate(n); }), (t.playbackRates = function () { return ( this.options_.playbackRates || (this.options_.playerOptions && this.options_.playerOptions.playbackRates) ); }), (t.playbackRateSupported = function () { return ( this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && 0 < this.playbackRates().length ); }), (t.updateVisibility = function (e) { this.playbackRateSupported() ? this.removeClass('vjs-hidden') : this.addClass('vjs-hidden'); }), (t.updateLabel = function (e) { this.playbackRateSupported() && (this.labelEl_.innerHTML = this.player().playbackRate() + 'x'); }), e ); })(Kn); (hr.prototype.controlText_ = 'Playback Rate'), je.registerComponent('PlaybackRateMenuButton', hr); var pr = (function (e) { function t() { return e.apply(this, arguments) || this; } Ge(t, e); var i = t.prototype; return ( (i.buildCSSClass = function () { return 'vjs-spacer ' + e.prototype.buildCSSClass.call(this); }), (i.createEl = function () { return e.prototype.createEl.call(this, 'div', { className: this.buildCSSClass() }); }), t ); })(je); je.registerComponent('Spacer', pr); var fr = (function (t) { function e() { return t.apply(this, arguments) || this; } Ge(e, t); var i = e.prototype; return ( (i.buildCSSClass = function () { return 'vjs-custom-control-spacer ' + t.prototype.buildCSSClass.call(this); }), (i.createEl = function () { var e = t.prototype.createEl.call(this, { className: this.buildCSSClass() }); return (e.innerHTML = ' '), e; }), e ); })(pr); je.registerComponent('CustomControlSpacer', fr); var mr = (function (e) { function t() { return e.apply(this, arguments) || this; } return ( Ge(t, e), (t.prototype.createEl = function () { return e.prototype.createEl.call(this, 'div', { className: 'vjs-control-bar', dir: 'ltr' }); }), t ); })(je); (mr.prototype.options_ = { children: [ 'playToggle', 'volumePanel', 'currentTimeDisplay', 'timeDivider', 'durationDisplay', 'progressControl', 'liveDisplay', 'seekToLive', 'remainingTimeDisplay', 'customControlSpacer', 'playbackRateMenuButton', 'chaptersButton', 'descriptionsButton', 'subsCapsButton', 'audioTrackButton', 'fullscreenToggle' ] }), 'exitPictureInPicture' in d && mr.prototype.options_.children.splice( mr.prototype.options_.children.length - 1, 0, 'pictureInPictureToggle' ), je.registerComponent('ControlBar', mr); var gr = (function (n) { function e(e, t) { var i; return (i = n.call(this, e, t) || this).on(e, 'error', i.open), i; } Ge(e, n); var t = e.prototype; return ( (t.buildCSSClass = function () { return 'vjs-error-display ' + n.prototype.buildCSSClass.call(this); }), (t.content = function () { var e = this.player().error(); return e ? this.localize(e.message) : ''; }), e ); })(Mt); (gr.prototype.options_ = m({}, Mt.prototype.options_, { pauseOnOpen: !1, fillAlways: !0, temporary: !1, uncloseable: !0 })), je.registerComponent('ErrorDisplay', gr); var vr = 'vjs-text-track-settings', yr = ['#000', 'Black'], _r = ['#00F', 'Blue'], br = ['#0FF', 'Cyan'], Tr = ['#0F0', 'Green'], Sr = ['#F0F', 'Magenta'], kr = ['#F00', 'Red'], Cr = ['#FFF', 'White'], Er = ['#FF0', 'Yellow'], wr = ['1', 'Opaque'], Ir = ['0.5', 'Semi-Transparent'], Ar = ['0', 'Transparent'], xr = { backgroundColor: { selector: '.vjs-bg-color > select', id: 'captions-background-color-%s', label: 'Color', options: [yr, Cr, kr, Tr, _r, Er, Sr, br] }, backgroundOpacity: { selector: '.vjs-bg-opacity > select', id: 'captions-background-opacity-%s', label: 'Transparency', options: [wr, Ir, Ar] }, color: { selector: '.vjs-fg-color > select', id: 'captions-foreground-color-%s', label: 'Color', options: [Cr, yr, kr, Tr, _r, Er, Sr, br] }, edgeStyle: { selector: '.vjs-edge-style > select', id: '%s', label: 'Text Edge Style', options: [ ['none', 'None'], ['raised', 'Raised'], ['depressed', 'Depressed'], ['uniform', 'Uniform'], ['dropshadow', 'Dropshadow'] ] }, fontFamily: { selector: '.vjs-font-family > select', id: 'captions-font-family-%s', label: 'Font Family', options: [ ['proportionalSansSerif', 'Proportional Sans-Serif'], ['monospaceSansSerif', 'Monospace Sans-Serif'], ['proportionalSerif', 'Proportional Serif'], ['monospaceSerif', 'Monospace Serif'], ['casual', 'Casual'], ['script', 'Script'], ['small-caps', 'Small Caps'] ] }, fontPercent: { selector: '.vjs-font-percent > select', id: 'captions-font-size-%s', label: 'Font Size', options: [ ['0.50', '50%'], ['0.75', '75%'], ['1.00', '100%'], ['1.25', '125%'], ['1.50', '150%'], ['1.75', '175%'], ['2.00', '200%'], ['3.00', '300%'], ['4.00', '400%'] ], default: 2, parser: function (e) { return '1.00' === e ? null : Number(e); } }, textOpacity: { selector: '.vjs-text-opacity > select', id: 'captions-foreground-opacity-%s', label: 'Transparency', options: [wr, Ir] }, windowColor: { selector: '.vjs-window-color > select', id: 'captions-window-color-%s', label: 'Color' }, windowOpacity: { selector: '.vjs-window-opacity > select', id: 'captions-window-opacity-%s', label: 'Transparency', options: [Ar, Ir, wr] } }; function Pr(e, t) { if ((t && (e = t(e)), e && 'none' !== e)) return e; } xr.windowColor.options = xr.backgroundColor.options; var Lr = (function (n) { function e(e, t) { var i; return ( (t.temporary = !1), ((i = n.call(this, e, t) || this).updateDisplay = ve(Ve(i), i.updateDisplay)), i.fill(), (i.hasBeenOpened_ = i.hasBeenFilled_ = !0), (i.endDialog = k('p', { className: 'vjs-control-text', textContent: i.localize('End of dialog window.') })), i.el().appendChild(i.endDialog), i.setDefaults(), void 0 === t.persistTextTrackSettings && (i.options_.persistTextTrackSettings = i.options_.playerOptions.persistTextTrackSettings), i.on(i.$('.vjs-done-button'), 'click', function () { i.saveSettings(), i.close(); }), i.on(i.$('.vjs-default-button'), 'click', function () { i.setDefaults(), i.updateDisplay(); }), r(xr, function (e) { i.on(i.$(e.selector), 'change', i.updateDisplay); }), i.options_.persistTextTrackSettings && i.restoreSettings(), i ); } Ge(e, n); var t = e.prototype; return ( (t.dispose = function () { (this.endDialog = null), n.prototype.dispose.call(this); }), (t.createElSelect_ = function (e, t, i) { var n = this; void 0 === t && (t = ''), void 0 === i && (i = 'label'); var r = xr[e], a = r.id.replace('%s', this.id_), s = [t, a].join(' ').trim(); return [ '<' + i + ' id="' + a + '" class="' + ('label' === i ? 'vjs-label' : '') + '">', this.localize(r.label), '', '') .join(''); }), (t.createElFgColor_ = function () { var e = 'captions-text-legend-' + this.id_; return [ '
', '', this.localize('Text'), '', this.createElSelect_('color', e), '', this.createElSelect_('textOpacity', e), '', '
' ].join(''); }), (t.createElBgColor_ = function () { var e = 'captions-background-' + this.id_; return [ '
', '', this.localize('Background'), '', this.createElSelect_('backgroundColor', e), '', this.createElSelect_('backgroundOpacity', e), '', '
' ].join(''); }), (t.createElWinColor_ = function () { var e = 'captions-window-' + this.id_; return [ '
', '', this.localize('Window'), '', this.createElSelect_('windowColor', e), '', this.createElSelect_('windowOpacity', e), '', '
' ].join(''); }), (t.createElColors_ = function () { return k('div', { className: 'vjs-track-settings-colors', innerHTML: [ this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_() ].join('') }); }), (t.createElFont_ = function () { return k('div', { className: 'vjs-track-settings-font', innerHTML: [ '
', this.createElSelect_('fontPercent', '', 'legend'), '
', '
', this.createElSelect_('edgeStyle', '', 'legend'), '
', '
', this.createElSelect_('fontFamily', '', 'legend'), '
' ].join('') }); }), (t.createElControls_ = function () { var e = this.localize('restore all settings to the default values'); return k('div', { className: 'vjs-track-settings-controls', innerHTML: [ '', '' ].join('') }); }), (t.content = function () { return [this.createElColors_(), this.createElFont_(), this.createElControls_()]; }), (t.label = function () { return this.localize('Caption Settings Dialog'); }), (t.description = function () { return this.localize( 'Beginning of dialog window. Escape will cancel and close the window.' ); }), (t.buildCSSClass = function () { return n.prototype.buildCSSClass.call(this) + ' vjs-text-track-settings'; }), (t.getValues = function () { var r = this; return (function (i, n, e) { return ( void 0 === e && (e = 0), a(i).reduce(function (e, t) { return n(e, i[t], t); }, e) ); })( xr, function (e, t, i) { var n = (function (e, t) { return Pr(e.options[e.options.selectedIndex].value, t); })(r.$(t.selector), t.parser); return void 0 !== n && (e[i] = n), e; }, {} ); }), (t.setValues = function (i) { var n = this; r(xr, function (e, t) { !(function (e, t, i) { if (t) for (var n = 0; n < e.options.length; n++) if (Pr(e.options[n].value, i) === t) { e.selectedIndex = n; break; } })(n.$(e.selector), i[t], e.parser); }); }), (t.setDefaults = function () { var i = this; r(xr, function (e) { var t = e.hasOwnProperty('default') ? e.default : 0; i.$(e.selector).selectedIndex = t; }); }), (t.restoreSettings = function () { var e; try { e = JSON.parse(T.localStorage.getItem(vr)); } catch (e) { p.warn(e); } e && this.setValues(e); }), (t.saveSettings = function () { if (this.options_.persistTextTrackSettings) { var e = this.getValues(); try { Object.keys(e).length ? T.localStorage.setItem(vr, JSON.stringify(e)) : T.localStorage.removeItem(vr); } catch (e) { p.warn(e); } } }), (t.updateDisplay = function () { var e = this.player_.getChild('textTrackDisplay'); e && e.updateDisplay(); }), (t.conditionalBlur_ = function () { this.previouslyActiveEl_ = null; var e = this.player_.controlBar, t = e && e.subsCapsButton, i = e && e.captionsButton; t ? t.focus() : i && i.focus(); }), e ); })(Mt); je.registerComponent('TextTrackSettings', Lr); var Or = (function (a) { function e(e, t) { var i, n = t.ResizeObserver || T.ResizeObserver; null === t.ResizeObserver && (n = !1); var r = Re({ createEl: !n, reportTouchActivity: !1 }, t); return ( ((i = a.call(this, e, r) || this).ResizeObserver = t.ResizeObserver || T.ResizeObserver), (i.loadListener_ = null), (i.resizeObserver_ = null), (i.debouncedHandler_ = (function (n, r, a, s) { var o; void 0 === s && (s = T); function e() { var e = this, t = arguments, i = function () { (i = o = null), a || n.apply(e, t); }; !o && a && n.apply(e, t), s.clearTimeout(o), (o = s.setTimeout(i, r)); } return ( (e.cancel = function () { s.clearTimeout(o), (o = null); }), e ); })( function () { i.resizeHandler(); }, 100, !1, Ve(i) )), n ? ((i.resizeObserver_ = new i.ResizeObserver(i.debouncedHandler_)), i.resizeObserver_.observe(e.el())) : ((i.loadListener_ = function () { if (i.el_ && i.el_.contentWindow) { var e = i.debouncedHandler_, t = (i.unloadListener_ = function () { pe(this, 'resize', e), pe(this, 'unload', t), (t = null); }); he(i.el_.contentWindow, 'unload', t), he(i.el_.contentWindow, 'resize', e); } }), i.one('load', i.loadListener_)), i ); } Ge(e, a); var t = e.prototype; return ( (t.createEl = function () { return a.prototype.createEl.call( this, 'iframe', { className: 'vjs-resize-manager', tabIndex: -1 }, { 'aria-hidden': 'true' } ); }), (t.resizeHandler = function () { this.player_ && this.player_.trigger && this.player_.trigger('playerresize'); }), (t.dispose = function () { this.debouncedHandler_ && this.debouncedHandler_.cancel(), this.resizeObserver_ && (this.player_.el() && this.resizeObserver_.unobserve(this.player_.el()), this.resizeObserver_.disconnect()), this.loadListener_ && this.off('load', this.loadListener_), this.el_ && this.el_.contentWindow && this.unloadListener_ && this.unloadListener_.call(this.el_.contentWindow), (this.ResizeObserver = null), (this.resizeObserver = null), (this.debouncedHandler_ = null), (this.loadListener_ = null), a.prototype.dispose.call(this); }), e ); })(je); je.registerComponent('ResizeManager', Or); var Dr = { trackingThreshold: 30, liveTolerance: 15 }, Mr = (function (r) { function e(e, t) { var i, n = Re(Dr, t, { createEl: !1 }); return ( (i = r.call(this, e, n) || this).reset_(), i.on(i.player_, 'durationchange', i.handleDurationchange), at && 'hidden' in d && 'visibilityState' in d && i.on(d, 'visibilitychange', i.handleVisibilityChange), i ); } Ge(e, r); var t = e.prototype; return ( (t.handleVisibilityChange = function () { this.player_.duration() === 1 / 0 && (d.hidden ? this.stopTracking() : this.startTracking()); }), (t.trackLive_ = function () { var e = this.player_.seekable(); if (e && e.length) { var t = Number(T.performance.now().toFixed(4)), i = -1 === this.lastTime_ ? 0 : (t - this.lastTime_) / 1e3; (this.lastTime_ = t), (this.pastSeekEnd_ = this.pastSeekEnd() + i); var n = this.liveCurrentTime(), r = this.player_.currentTime(), a = this.player_.paused() || this.seekedBehindLive_ || Math.abs(n - r) > this.options_.liveTolerance; (this.timeupdateSeen_ && n !== 1 / 0) || (a = !1), a !== this.behindLiveEdge_ && ((this.behindLiveEdge_ = a), this.trigger('liveedgechange')); } }), (t.handleDurationchange = function () { this.player_.duration() === 1 / 0 && this.liveWindow() >= this.options_.trackingThreshold ? (this.player_.options_.liveui && this.player_.addClass('vjs-liveui'), this.startTracking()) : (this.player_.removeClass('vjs-liveui'), this.stopTracking()); }), (t.startTracking = function () { this.isTracking() || (this.timeupdateSeen_ || (this.timeupdateSeen_ = this.player_.hasStarted()), (this.trackingInterval_ = this.setInterval(this.trackLive_, 30)), this.trackLive_(), this.on(this.player_, ['play', 'pause'], this.trackLive_), this.timeupdateSeen_ ? this.on(this.player_, 'seeked', this.handleSeeked) : (this.one(this.player_, 'play', this.handlePlay), this.one(this.player_, 'timeupdate', this.handleFirstTimeupdate))); }), (t.handleFirstTimeupdate = function () { (this.timeupdateSeen_ = !0), this.on(this.player_, 'seeked', this.handleSeeked); }), (t.handleSeeked = function () { var e = Math.abs(this.liveCurrentTime() - this.player_.currentTime()); (this.seekedBehindLive_ = !this.skipNextSeeked_ && 2 < e), (this.skipNextSeeked_ = !1), this.trackLive_(); }), (t.handlePlay = function () { this.one(this.player_, 'timeupdate', this.seekToLiveEdge); }), (t.reset_ = function () { (this.lastTime_ = -1), (this.pastSeekEnd_ = 0), (this.lastSeekEnd_ = -1), (this.behindLiveEdge_ = !0), (this.timeupdateSeen_ = !1), (this.seekedBehindLive_ = !1), (this.skipNextSeeked_ = !1), this.clearInterval(this.trackingInterval_), (this.trackingInterval_ = null), this.off(this.player_, ['play', 'pause'], this.trackLive_), this.off(this.player_, 'seeked', this.handleSeeked), this.off(this.player_, 'play', this.handlePlay), this.off(this.player_, 'timeupdate', this.handleFirstTimeupdate), this.off(this.player_, 'timeupdate', this.seekToLiveEdge); }), (t.stopTracking = function () { this.isTracking() && (this.reset_(), this.trigger('liveedgechange')); }), (t.seekableEnd = function () { for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.end(i)); return t.length ? t.sort()[t.length - 1] : 1 / 0; }), (t.seekableStart = function () { for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.start(i)); return t.length ? t.sort()[0] : 0; }), (t.liveWindow = function () { var e = this.liveCurrentTime(); return e === 1 / 0 ? 1 / 0 : e - this.seekableStart(); }), (t.isLive = function () { return this.isTracking(); }), (t.atLiveEdge = function () { return !this.behindLiveEdge(); }), (t.liveCurrentTime = function () { return this.pastSeekEnd() + this.seekableEnd(); }), (t.pastSeekEnd = function () { var e = this.seekableEnd(); return ( -1 !== this.lastSeekEnd_ && e !== this.lastSeekEnd_ && (this.pastSeekEnd_ = 0), (this.lastSeekEnd_ = e), this.pastSeekEnd_ ); }), (t.behindLiveEdge = function () { return this.behindLiveEdge_; }), (t.isTracking = function () { return 'number' == typeof this.trackingInterval_; }), (t.seekToLiveEdge = function () { (this.seekedBehindLive_ = !1), this.atLiveEdge() || ((this.skipNextSeeked_ = !0), this.player_.currentTime(this.liveCurrentTime())); }), (t.dispose = function () { this.off(d, 'visibilitychange', this.handleVisibilityChange), this.stopTracking(), r.prototype.dispose.call(this); }), e ); })(je); je.registerComponent('LiveTracker', Mr); function Rr(e) { var t = e.el(); if (t.hasAttribute('src')) return e.triggerSourceset(t.src), !0; var i = e.$$('source'), n = [], r = ''; if (!i.length) return !1; for (var a = 0; a < i.length; a++) { var s = i[a].src; s && -1 === n.indexOf(s) && n.push(s); } return !!n.length && (1 === n.length && (r = n[0]), e.triggerSourceset(r), !0); } function Nr(e, t) { for ( var i = {}, n = 0; n < e.length && !((i = Object.getOwnPropertyDescriptor(e[n], t)) && i.set && i.get); n++ ); return (i.enumerable = !0), (i.configurable = !0), i; } function Ur(a) { var s = a.el(); if (!s.resetSourceWatch_) { var t = {}, e = (function (e) { return Nr([e.el(), T.HTMLMediaElement.prototype, T.Element.prototype, Vr], 'innerHTML'); })(a), i = function (r) { return function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; var n = r.apply(s, t); return Rr(a), n; }; }; ['append', 'appendChild', 'insertAdjacentHTML'].forEach(function (e) { s[e] && ((t[e] = s[e]), (s[e] = i(t[e]))); }), Object.defineProperty(s, 'innerHTML', Re(e, { set: i(e.set) })), (s.resetSourceWatch_ = function () { (s.resetSourceWatch_ = null), Object.keys(t).forEach(function (e) { s[e] = t[e]; }), Object.defineProperty(s, 'innerHTML', e); }), a.one('sourceset', s.resetSourceWatch_); } } function Fr(n) { if (n.featuresSourceset) { var r = n.el(); if (!r.resetSourceset_) { var i = (function (e) { return Nr([e.el(), T.HTMLMediaElement.prototype, qr], 'src'); })(n), a = r.setAttribute, t = r.load; Object.defineProperty( r, 'src', Re(i, { set: function (e) { var t = i.set.call(r, e); return n.triggerSourceset(r.src), t; } }) ), (r.setAttribute = function (e, t) { var i = a.call(r, e, t); return /src/i.test(e) && n.triggerSourceset(r.src), i; }), (r.load = function () { var e = t.call(r); return Rr(n) || (n.triggerSourceset(''), Ur(n)), e; }), r.currentSrc ? n.triggerSourceset(r.currentSrc) : Rr(n) || Ur(n), (r.resetSourceset_ = function () { (r.resetSourceset_ = null), (r.load = t), (r.setAttribute = a), Object.defineProperty(r, 'src', i), r.resetSourceWatch_ && r.resetSourceWatch_(); }); } } } function Br(t, i, n, e) { function r(e) { return Object.defineProperty(t, i, { value: e, enumerable: !0, writable: !0 }); } void 0 === e && (e = !0); var a = { configurable: !0, enumerable: !0, get: function () { var e = n(); return r(e), e; } }; return e && (a.set = r), Object.defineProperty(t, i, a); } var jr, Vr = Object.defineProperty({}, 'innerHTML', { get: function () { return this.cloneNode(!0).innerHTML; }, set: function (e) { var t = d.createElement(this.nodeName.toLowerCase()); t.innerHTML = e; for (var i = d.createDocumentFragment(); t.childNodes.length; ) i.appendChild(t.childNodes[0]); return (this.innerText = ''), T.Element.prototype.appendChild.call(this, i), this.innerHTML; } }), qr = Object.defineProperty({}, 'src', { get: function () { return this.hasAttribute('src') ? jt(T.Element.prototype.getAttribute.call(this, 'src')) : ''; }, set: function (e) { return T.Element.prototype.setAttribute.call(this, 'src', e), e; } }), Hr = (function (c) { function o(e, t) { var i; i = c.call(this, e, t) || this; var n = e.source, r = !1; if ( (n && (i.el_.currentSrc !== n.src || (e.tag && 3 === e.tag.initNetworkState_)) ? i.setSource(n) : i.handleLateInit_(i.el_), e.enableSourceset && i.setupSourcesetHandling_(), i.el_.hasChildNodes()) ) { for (var a = i.el_.childNodes, s = a.length, o = []; s--; ) { var u = a[s]; 'track' === u.nodeName.toLowerCase() && (i.featuresNativeTextTracks ? (i.remoteTextTrackEls().addTrackElement_(u), i.remoteTextTracks().addTrack(u.track), i.textTracks().addTrack(u.track), r || i.el_.hasAttribute('crossorigin') || !qt(u.src) || (r = !0)) : o.push(u)); } for (var l = 0; l < o.length; l++) i.el_.removeChild(o[l]); } return ( i.proxyNativeTracks_(), i.featuresNativeTextTracks && r && p.warn( "Text Tracks are being loaded from another origin but the crossorigin attribute isn't used.\nThis may prevent text tracks from loading." ), i.restoreMetadataTracksInIOSNativePlayer_(), (ut || ct || et) && !0 === e.nativeControlsForTouch && i.setControls(!0), i.proxyWebkitFullscreen_(), i.triggerReady(), i ); } Ge(o, c); var e = o.prototype; return ( (e.dispose = function () { this.el_ && this.el_.resetSourceset_ && this.el_.resetSourceset_(), o.disposeMediaElement(this.el_), (this.options_ = null), c.prototype.dispose.call(this); }), (e.setupSourcesetHandling_ = function () { Fr(this); }), (e.restoreMetadataTracksInIOSNativePlayer_ = function () { function e() { i = []; for (var e = 0; e < n.length; e++) { var t = n[e]; 'metadata' === t.kind && i.push({ track: t, storedMode: t.mode }); } } var i, n = this.textTracks(); e(), n.addEventListener('change', e), this.on('dispose', function () { return n.removeEventListener('change', e); }); function r() { for (var e = 0; e < i.length; e++) { var t = i[e]; 'disabled' === t.track.mode && t.track.mode !== t.storedMode && (t.track.mode = t.storedMode); } n.removeEventListener('change', r); } this.on('webkitbeginfullscreen', function () { n.removeEventListener('change', e), n.removeEventListener('change', r), n.addEventListener('change', r); }), this.on('webkitendfullscreen', function () { n.removeEventListener('change', e), n.addEventListener('change', e), n.removeEventListener('change', r); }); }), (e.overrideNative_ = function (e, t) { var i = this; if (t === this['featuresNative' + e + 'Tracks']) { var n = e.toLowerCase(); this[n + 'TracksListeners_'] && Object.keys(this[n + 'TracksListeners_']).forEach(function (e) { i.el()[n + 'Tracks'].removeEventListener(e, i[n + 'TracksListeners_'][e]); }), (this['featuresNative' + e + 'Tracks'] = !t), (this[n + 'TracksListeners_'] = null), this.proxyNativeTracksForType_(n); } }), (e.overrideNativeAudioTracks = function (e) { this.overrideNative_('Audio', e); }), (e.overrideNativeVideoTracks = function (e) { this.overrideNative_('Video', e); }), (e.proxyNativeTracksForType_ = function (i) { var n = this, e = fi[i], r = this.el()[e.getterName], a = this[e.getterName](); if (this['featuresNative' + e.capitalName + 'Tracks'] && r && r.addEventListener) { var s = { change: function (e) { var t = { type: 'change', target: a, currentTarget: a, srcElement: a }; a.trigger(t), 'text' === i && n[mi.remoteText.getterName]().trigger(t); }, addtrack: function (e) { a.addTrack(e.track); }, removetrack: function (e) { a.removeTrack(e.track); } }, t = function () { for (var e = [], t = 0; t < a.length; t++) { for (var i = !1, n = 0; n < r.length; n++) if (r[n] === a[t]) { i = !0; break; } i || e.push(a[t]); } for (; e.length; ) a.removeTrack(e.shift()); }; (this[e.getterName + 'Listeners_'] = s), Object.keys(s).forEach(function (t) { var i = s[t]; r.addEventListener(t, i), n.on('dispose', function (e) { return r.removeEventListener(t, i); }); }), this.on('loadstart', t), this.on('dispose', function (e) { return n.off('loadstart', t); }); } }), (e.proxyNativeTracks_ = function () { var t = this; fi.names.forEach(function (e) { t.proxyNativeTracksForType_(e); }); }), (e.createEl = function () { var e = this.options_.tag; if (!e || (!this.options_.playerElIngest && !this.movingMediaElementInDOM)) { if (e) { var t = e.cloneNode(!0); e.parentNode && e.parentNode.insertBefore(t, e), o.disposeMediaElement(e), (e = t); } else { e = d.createElement('video'); var i = Re({}, this.options_.tag && L(this.options_.tag)); (ut && !0 === this.options_.nativeControlsForTouch) || delete i.controls, P(e, g(i, { id: this.options_.techId, class: 'vjs-tech' })); } e.playerId = this.options_.playerId; } 'undefined' != typeof this.options_.preload && D(e, 'preload', this.options_.preload), void 0 !== this.options_.disablePictureInPicture && (e.disablePictureInPicture = this.options_.disablePictureInPicture); for (var n = ['loop', 'muted', 'playsinline', 'autoplay'], r = 0; r < n.length; r++) { var a = n[r], s = this.options_[a]; 'undefined' != typeof s && (s ? D(e, a, a) : M(e, a), (e[a] = s)); } return e; }), (e.handleLateInit_ = function (e) { if (0 !== e.networkState && 3 !== e.networkState) { if (0 === e.readyState) { var t = !1, i = function () { t = !0; }; this.on('loadstart', i); var n = function () { t || this.trigger('loadstart'); }; return ( this.on('loadedmetadata', n), void this.ready(function () { this.off('loadstart', i), this.off('loadedmetadata', n), t || this.trigger('loadstart'); }) ); } var r = ['loadstart']; r.push('loadedmetadata'), 2 <= e.readyState && r.push('loadeddata'), 3 <= e.readyState && r.push('canplay'), 4 <= e.readyState && r.push('canplaythrough'), this.ready(function () { r.forEach(function (e) { this.trigger(e); }, this); }); } }), (e.setScrubbing = function (e) { this.isScrubbing_ = e; }), (e.setCurrentTime = function (e) { try { this.isScrubbing_ && this.el_.fastSeek && ht ? this.el_.fastSeek(e) : (this.el_.currentTime = e); } catch (e) { p(e, 'Video is not ready. (Video.js)'); } }), (e.duration = function () { var t = this; if (this.el_.duration === 1 / 0 && Je && nt && 0 === this.el_.currentTime) { return ( this.on('timeupdate', function e() { 0 < t.el_.currentTime && (t.el_.duration === 1 / 0 && t.trigger('durationchange'), t.off('timeupdate', e)); }), NaN ); } return this.el_.duration || NaN; }), (e.width = function () { return this.el_.offsetWidth; }), (e.height = function () { return this.el_.offsetHeight; }), (e.proxyWebkitFullscreen_ = function () { var e = this; if ('webkitDisplayingFullscreen' in this.el_) { var t = function () { this.trigger('fullscreenchange', { isFullscreen: !1 }); }, i = function () { 'webkitPresentationMode' in this.el_ && 'picture-in-picture' !== this.el_.webkitPresentationMode && (this.one('webkitendfullscreen', t), this.trigger('fullscreenchange', { isFullscreen: !0, nativeIOSFullscreen: !0 })); }; this.on('webkitbeginfullscreen', i), this.on('dispose', function () { e.off('webkitbeginfullscreen', i), e.off('webkitendfullscreen', t); }); } }), (e.supportsFullScreen = function () { if ('function' == typeof this.el_.webkitEnterFullScreen) { var e = (T.navigator && T.navigator.userAgent) || ''; if (/Android/.test(e) || !/Chrome|Mac OS X 10.5/.test(e)) return !0; } return !1; }), (e.enterFullScreen = function () { var e = this.el_; if (e.paused && e.networkState <= e.HAVE_METADATA) At(this.el_.play()), this.setTimeout(function () { e.pause(); try { e.webkitEnterFullScreen(); } catch (e) { this.trigger('fullscreenerror', e); } }, 0); else try { e.webkitEnterFullScreen(); } catch (e) { this.trigger('fullscreenerror', e); } }), (e.exitFullScreen = function () { this.el_.webkitDisplayingFullscreen ? this.el_.webkitExitFullScreen() : this.trigger('fullscreenerror', new Error('The video is not fullscreen')); }), (e.requestPictureInPicture = function () { return this.el_.requestPictureInPicture(); }), (e.src = function (e) { if (void 0 === e) return this.el_.src; this.setSrc(e); }), (e.reset = function () { o.resetMediaElement(this.el_); }), (e.currentSrc = function () { return this.currentSource_ ? this.currentSource_.src : this.el_.currentSrc; }), (e.setControls = function (e) { this.el_.controls = !!e; }), (e.addTextTrack = function (e, t, i) { return this.featuresNativeTextTracks ? this.el_.addTextTrack(e, t, i) : c.prototype.addTextTrack.call(this, e, t, i); }), (e.createRemoteTextTrack = function (e) { if (!this.featuresNativeTextTracks) return c.prototype.createRemoteTextTrack.call(this, e); var t = d.createElement('track'); return ( e.kind && (t.kind = e.kind), e.label && (t.label = e.label), (e.language || e.srclang) && (t.srclang = e.language || e.srclang), e.default && (t.default = e.default), e.id && (t.id = e.id), e.src && (t.src = e.src), t ); }), (e.addRemoteTextTrack = function (e, t) { var i = c.prototype.addRemoteTextTrack.call(this, e, t); return this.featuresNativeTextTracks && this.el().appendChild(i), i; }), (e.removeRemoteTextTrack = function (e) { if ((c.prototype.removeRemoteTextTrack.call(this, e), this.featuresNativeTextTracks)) for (var t = this.$$('track'), i = t.length; i--; ) (e !== t[i] && e !== t[i].track) || this.el().removeChild(t[i]); }), (e.getVideoPlaybackQuality = function () { if ('function' == typeof this.el().getVideoPlaybackQuality) return this.el().getVideoPlaybackQuality(); var e = {}; return ( 'undefined' != typeof this.el().webkitDroppedFrameCount && 'undefined' != typeof this.el().webkitDecodedFrameCount && ((e.droppedVideoFrames = this.el().webkitDroppedFrameCount), (e.totalVideoFrames = this.el().webkitDecodedFrameCount)), T.performance && 'function' == typeof T.performance.now ? (e.creationTime = T.performance.now()) : T.performance && T.performance.timing && 'number' == typeof T.performance.timing.navigationStart && (e.creationTime = T.Date.now() - T.performance.timing.navigationStart), e ); }), o ); })(Xi); Br(Hr, 'TEST_VID', function () { if (y()) { var e = d.createElement('video'), t = d.createElement('track'); return (t.kind = 'captions'), (t.srclang = 'en'), (t.label = 'English'), e.appendChild(t), e; } }), (Hr.isSupported = function () { try { Hr.TEST_VID.volume = 0.5; } catch (e) { return !1; } return !(!Hr.TEST_VID || !Hr.TEST_VID.canPlayType); }), (Hr.canPlayType = function (e) { return Hr.TEST_VID.canPlayType(e); }), (Hr.canPlaySource = function (e, t) { return Hr.canPlayType(e.type); }), (Hr.canControlVolume = function () { try { var e = Hr.TEST_VID.volume; return (Hr.TEST_VID.volume = e / 2 + 0.1), e !== Hr.TEST_VID.volume; } catch (e) { return !1; } }), (Hr.canMuteVolume = function () { try { var e = Hr.TEST_VID.muted; return ( (Hr.TEST_VID.muted = !e), Hr.TEST_VID.muted ? D(Hr.TEST_VID, 'muted', 'muted') : M(Hr.TEST_VID, 'muted'), e !== Hr.TEST_VID.muted ); } catch (e) { return !1; } }), (Hr.canControlPlaybackRate = function () { if (Je && nt && rt < 58) return !1; try { var e = Hr.TEST_VID.playbackRate; return (Hr.TEST_VID.playbackRate = e / 2 + 0.1), e !== Hr.TEST_VID.playbackRate; } catch (e) { return !1; } }), (Hr.canOverrideAttributes = function () { try { var e = function () {}; Object.defineProperty(d.createElement('video'), 'src', { get: e, set: e }), Object.defineProperty(d.createElement('audio'), 'src', { get: e, set: e }), Object.defineProperty(d.createElement('video'), 'innerHTML', { get: e, set: e }), Object.defineProperty(d.createElement('audio'), 'innerHTML', { get: e, set: e }); } catch (e) { return !1; } return !0; }), (Hr.supportsNativeTextTracks = function () { return ht || (dt && nt); }), (Hr.supportsNativeVideoTracks = function () { return !(!Hr.TEST_VID || !Hr.TEST_VID.videoTracks); }), (Hr.supportsNativeAudioTracks = function () { return !(!Hr.TEST_VID || !Hr.TEST_VID.audioTracks); }), (Hr.Events = [ 'loadstart', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'canplay', 'canplaythrough', 'playing', 'waiting', 'seeking', 'seeked', 'ended', 'durationchange', 'timeupdate', 'progress', 'play', 'pause', 'ratechange', 'resize', 'volumechange' ]), [ ['featuresVolumeControl', 'canControlVolume'], ['featuresMuteControl', 'canMuteVolume'], ['featuresPlaybackRate', 'canControlPlaybackRate'], ['featuresSourceset', 'canOverrideAttributes'], ['featuresNativeTextTracks', 'supportsNativeTextTracks'], ['featuresNativeVideoTracks', 'supportsNativeVideoTracks'], ['featuresNativeAudioTracks', 'supportsNativeAudioTracks'] ].forEach(function (e) { var t = e[0], i = e[1]; Br( Hr.prototype, t, function () { return Hr[i](); }, !0 ); }), (Hr.prototype.movingMediaElementInDOM = !dt), (Hr.prototype.featuresFullscreenResize = !0), (Hr.prototype.featuresProgressEvents = !0), (Hr.prototype.featuresTimeupdateEvents = !0), (Hr.patchCanPlayType = function () { 4 <= Ze && !tt && !nt && ((jr = Hr.TEST_VID && Hr.TEST_VID.constructor.prototype.canPlayType), (Hr.TEST_VID.constructor.prototype.canPlayType = function (e) { return e && /^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(e) ? 'maybe' : jr.call(this, e); })); }), (Hr.unpatchCanPlayType = function () { var e = Hr.TEST_VID.constructor.prototype.canPlayType; return jr && (Hr.TEST_VID.constructor.prototype.canPlayType = jr), e; }), Hr.patchCanPlayType(), (Hr.disposeMediaElement = function (e) { if (e) { for (e.parentNode && e.parentNode.removeChild(e); e.hasChildNodes(); ) e.removeChild(e.firstChild); e.removeAttribute('src'), 'function' == typeof e.load && (function () { try { e.load(); } catch (e) {} })(); } }), (Hr.resetMediaElement = function (e) { if (e) { for (var t = e.querySelectorAll('source'), i = t.length; i--; ) e.removeChild(t[i]); e.removeAttribute('src'), 'function' == typeof e.load && (function () { try { e.load(); } catch (e) {} })(); } }), ['muted', 'defaultMuted', 'autoplay', 'controls', 'loop', 'playsinline'].forEach(function (e) { Hr.prototype[e] = function () { return this.el_[e] || this.el_.hasAttribute(e); }; }), ['muted', 'defaultMuted', 'autoplay', 'loop', 'playsinline'].forEach(function (t) { Hr.prototype['set' + Me(t)] = function (e) { (this.el_[t] = e) ? this.el_.setAttribute(t, t) : this.el_.removeAttribute(t); }; }), [ 'paused', 'currentTime', 'buffered', 'volume', 'poster', 'preload', 'error', 'seeking', 'seekable', 'ended', 'playbackRate', 'defaultPlaybackRate', 'disablePictureInPicture', 'played', 'networkState', 'readyState', 'videoWidth', 'videoHeight', 'crossOrigin' ].forEach(function (e) { Hr.prototype[e] = function () { return this.el_[e]; }; }), [ 'volume', 'src', 'poster', 'preload', 'playbackRate', 'defaultPlaybackRate', 'disablePictureInPicture', 'crossOrigin' ].forEach(function (t) { Hr.prototype['set' + Me(t)] = function (e) { this.el_[t] = e; }; }), ['pause', 'load', 'play'].forEach(function (e) { Hr.prototype[e] = function () { return this.el_[e](); }; }), Xi.withSourceHandlers(Hr), (Hr.nativeSourceHandler = {}), (Hr.nativeSourceHandler.canPlayType = function (e) { try { return Hr.TEST_VID.canPlayType(e); } catch (e) { return ''; } }), (Hr.nativeSourceHandler.canHandleSource = function (e, t) { if (e.type) return Hr.nativeSourceHandler.canPlayType(e.type); if (e.src) { var i = Vt(e.src); return Hr.nativeSourceHandler.canPlayType('video/' + i); } return ''; }), (Hr.nativeSourceHandler.handleSource = function (e, t, i) { t.setSrc(e.src); }), (Hr.nativeSourceHandler.dispose = function () {}), Hr.registerSourceHandler(Hr.nativeSourceHandler), Xi.registerTech('Html5', Hr); var Wr = [ 'progress', 'abort', 'suspend', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'timeupdate', 'resize', 'volumechange', 'texttrackchange' ], zr = { canplay: 'CanPlay', canplaythrough: 'CanPlayThrough', playing: 'Playing', seeked: 'Seeked' }, Gr = ['tiny', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'huge'], Xr = {}; Gr.forEach(function (e) { var t = 'x' === e.charAt(0) ? 'x-' + e.substring(1) : e; Xr[e] = 'vjs-layout-' + t; }); var Kr = { tiny: 210, xsmall: 320, small: 425, medium: 768, large: 1440, xlarge: 2560, huge: 1 / 0 }, Yr = (function (c) { function l(e, t, i) { var n; if ( ((e.id = e.id || t.id || 'vjs_video_' + re()), ((t = g(l.getTagSettings(e), t)).initChildren = !1), (t.createEl = !1), (t.evented = !1), (t.reportTouchActivity = !1), !t.language) ) if ('function' == typeof e.closest) { var r = e.closest('[lang]'); r && r.getAttribute && (t.language = r.getAttribute('lang')); } else for (var a = e; a && 1 === a.nodeType; ) { if (L(a).hasOwnProperty('lang')) { t.language = a.getAttribute('lang'); break; } a = a.parentNode; } if ( (((n = c.call(this, null, t, i) || this).boundDocumentFullscreenChange_ = ve( Ve(n), n.documentFullscreenChange_ )), (n.boundFullWindowOnEscKey_ = ve(Ve(n), n.fullWindowOnEscKey)), (n.isFullscreen_ = !1), (n.log = f(n.id_)), (n.fsApi_ = _t), (n.isPosterFromTech_ = !1), (n.queuedCallbacks_ = []), (n.isReady_ = !1), (n.hasStarted_ = !1), (n.userActive_ = !1), (n.debugEnabled_ = !1), !n.options_ || !n.options_.techOrder || !n.options_.techOrder.length) ) throw new Error( 'No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?' ); if ( ((n.tag = e), (n.tagAttributes = e && L(e)), n.language(n.options_.language), t.languages) ) { var s = {}; Object.getOwnPropertyNames(t.languages).forEach(function (e) { s[e.toLowerCase()] = t.languages[e]; }), (n.languages_ = s); } else n.languages_ = l.prototype.options_.languages; n.resetCache_(), (n.poster_ = t.poster || ''), (n.controls_ = !!t.controls), (e.controls = !1), e.removeAttribute('controls'), (n.changingSrc_ = !1), (n.playCallbacks_ = []), (n.playTerminatedQueue_ = []), e.hasAttribute('autoplay') ? n.autoplay(!0) : n.autoplay(n.options_.autoplay), t.plugins && Object.keys(t.plugins).forEach(function (e) { if ('function' != typeof n[e]) throw new Error('plugin "' + e + '" does not exist'); }), (n.scrubbing_ = !1), (n.el_ = n.createEl()), Pe(Ve(n), { eventBusKey: 'el_' }), n.fsApi_.requestFullscreen && (he(d, n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_), n.on(n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_)), n.fluid_ && n.on('playerreset', n.updateStyleEl_); var o = Re(n.options_); t.plugins && Object.keys(t.plugins).forEach(function (e) { n[e](t.plugins[e]); }), t.debug && n.debug(!0), (n.options_.playerOptions = o), (n.middleware_ = []), n.initChildren(), n.isAudio('audio' === e.nodeName.toLowerCase()), n.controls() ? n.addClass('vjs-controls-enabled') : n.addClass('vjs-controls-disabled'), n.el_.setAttribute('role', 'region'), n.isAudio() ? n.el_.setAttribute('aria-label', n.localize('Audio Player')) : n.el_.setAttribute('aria-label', n.localize('Video Player')), n.isAudio() && n.addClass('vjs-audio'), n.flexNotSupported_() && n.addClass('vjs-no-flex'), ut && n.addClass('vjs-touch-enabled'), dt || n.addClass('vjs-workinghover'), (l.players[n.id_] = Ve(n)); var u = h.split('.')[0]; return ( n.addClass('vjs-v' + u), n.userActive(!0), n.reportUserActivity(), n.one('play', n.listenForUserActivity_), n.on('stageclick', n.handleStageClick_), n.on('keydown', n.handleKeyDown), n.breakpoints(n.options_.breakpoints), n.responsive(n.options_.responsive), n ); } Ge(l, c); var e = l.prototype; return ( (e.dispose = function () { var n = this; this.trigger('dispose'), this.off('dispose'), pe(d, this.fsApi_.fullscreenchange, this.boundDocumentFullscreenChange_), pe(d, 'keydown', this.boundFullWindowOnEscKey_), this.styleEl_ && this.styleEl_.parentNode && (this.styleEl_.parentNode.removeChild(this.styleEl_), (this.styleEl_ = null)), (l.players[this.id_] = null), this.tag && this.tag.player && (this.tag.player = null), this.el_ && this.el_.player && (this.el_.player = null), this.tech_ && (this.tech_.dispose(), (this.isPosterFromTech_ = !1), (this.poster_ = '')), this.playerElIngest_ && (this.playerElIngest_ = null), this.tag && (this.tag = null), (function (e) { Yi[e.id()] = null; })(this), gi.names.forEach(function (e) { var t = gi[e], i = n[t.getterName](); i && i.off && i.off(); }), c.prototype.dispose.call(this); }), (e.createEl = function () { var t, i = this.tag, e = (this.playerElIngest_ = i.parentNode && i.parentNode.hasAttribute && i.parentNode.hasAttribute('data-vjs-player')), n = 'video-js' === this.tag.tagName.toLowerCase(); e ? (t = this.el_ = i.parentNode) : n || (t = this.el_ = c.prototype.createEl.call(this, 'div')); var r = L(i); if (n) { for (t = this.el_ = i, i = this.tag = d.createElement('video'); t.children.length; ) i.appendChild(t.firstChild); w(t, 'video-js') || I(t, 'video-js'), t.appendChild(i), (e = this.playerElIngest_ = t), Object.keys(t).forEach(function (e) { try { i[e] = t[e]; } catch (e) {} }); } if ( (i.setAttribute('tabindex', '-1'), (r.tabindex = '-1'), (at || (nt && ot)) && (i.setAttribute('role', 'application'), (r.role = 'application')), i.removeAttribute('width'), i.removeAttribute('height'), 'width' in r && delete r.width, 'height' in r && delete r.height, Object.getOwnPropertyNames(r).forEach(function (e) { (n && 'class' === e) || t.setAttribute(e, r[e]), n && i.setAttribute(e, r[e]); }), (i.playerId = i.id), (i.id += '_html5_api'), (i.className = 'vjs-tech'), (i.player = t.player = this), this.addClass('vjs-paused'), !0 !== T.VIDEOJS_NO_DYNAMIC_STYLE) ) { this.styleEl_ = ee('vjs-styles-dimensions'); var a = X('.vjs-styles-defaults'), s = X('head'); s.insertBefore(this.styleEl_, a ? a.nextSibling : s.firstChild); } (this.fill_ = !1), (this.fluid_ = !1), this.width(this.options_.width), this.height(this.options_.height), this.fill(this.options_.fill), this.fluid(this.options_.fluid), this.aspectRatio(this.options_.aspectRatio), this.crossOrigin(this.options_.crossOrigin || this.options_.crossorigin); for (var o = i.getElementsByTagName('a'), u = 0; u < o.length; u++) { var l = o.item(u); I(l, 'vjs-hidden'), l.setAttribute('hidden', 'hidden'); } return ( (i.initNetworkState_ = i.networkState), i.parentNode && !e && i.parentNode.insertBefore(t, i), E(i, t), this.children_.unshift(i), this.el_.setAttribute('lang', this.language_), (this.el_ = t) ); }), (e.crossOrigin = function (e) { if (!e) return this.techGet_('crossOrigin'); 'anonymous' === e || 'use-credentials' === e ? this.techCall_('setCrossOrigin', e) : p.warn('crossOrigin must be "anonymous" or "use-credentials", given "' + e + '"'); }), (e.width = function (e) { return this.dimension('width', e); }), (e.height = function (e) { return this.dimension('height', e); }), (e.dimension = function (e, t) { var i = e + '_'; if (void 0 === t) return this[i] || 0; if ('' === t || 'auto' === t) return (this[i] = void 0), void this.updateStyleEl_(); var n = parseFloat(t); isNaN(n) ? p.error('Improper value "' + t + '" supplied for for ' + e) : ((this[i] = n), this.updateStyleEl_()); }), (e.fluid = function (e) { if (void 0 === e) return !!this.fluid_; (this.fluid_ = !!e), Ae(this) && this.off('playerreset', this.updateStyleEl_), e ? (this.addClass('vjs-fluid'), this.fill(!1), (function (e, t) { Ae(e) ? t() : (e.eventedCallbacks || (e.eventedCallbacks = []), e.eventedCallbacks.push(t)); })(function () { this.on('playerreset', this.updateStyleEl_); })) : this.removeClass('vjs-fluid'), this.updateStyleEl_(); }), (e.fill = function (e) { if (void 0 === e) return !!this.fill_; (this.fill_ = !!e), e ? (this.addClass('vjs-fill'), this.fluid(!1)) : this.removeClass('vjs-fill'); }), (e.aspectRatio = function (e) { if (void 0 === e) return this.aspectRatio_; if (!/^\d+\:\d+$/.test(e)) throw new Error( 'Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.' ); (this.aspectRatio_ = e), this.fluid(!0), this.updateStyleEl_(); }), (e.updateStyleEl_ = function () { if (!0 !== T.VIDEOJS_NO_DYNAMIC_STYLE) { var e, t, i, n = ( void 0 !== this.aspectRatio_ && 'auto' !== this.aspectRatio_ ? this.aspectRatio_ : 0 < this.videoWidth() ? this.videoWidth() + ':' + this.videoHeight() : '16:9' ).split(':'), r = n[1] / n[0]; (e = void 0 !== this.width_ ? this.width_ : void 0 !== this.height_ ? this.height_ / r : this.videoWidth() || 300), (t = void 0 !== this.height_ ? this.height_ : e * r), (i = /^[^a-zA-Z]/.test(this.id()) ? 'dimensions-' + this.id() : this.id() + '-dimensions'), this.addClass(i), te( this.styleEl_, '\n .' + i + ' {\n width: ' + e + 'px;\n height: ' + t + 'px;\n }\n\n .' + i + '.vjs-fluid {\n padding-top: ' + 100 * r + '%;\n }\n ' ); } else { var a = 'number' == typeof this.width_ ? this.width_ : this.options_.width, s = 'number' == typeof this.height_ ? this.height_ : this.options_.height, o = this.tech_ && this.tech_.el(); o && (0 <= a && (o.width = a), 0 <= s && (o.height = s)); } }), (e.loadTech_ = function (e, t) { var i = this; this.tech_ && this.unloadTech_(); var n = Me(e), r = e.charAt(0).toLowerCase() + e.slice(1); 'Html5' !== n && this.tag && (Xi.getTech('Html5').disposeMediaElement(this.tag), (this.tag.player = null), (this.tag = null)), (this.techName_ = n), (this.isReady_ = !1); var a = { source: t, autoplay: 'string' != typeof this.autoplay() && this.autoplay(), nativeControlsForTouch: this.options_.nativeControlsForTouch, playerId: this.id(), techId: this.id() + '_' + r + '_api', playsinline: this.options_.playsinline, preload: this.options_.preload, loop: this.options_.loop, disablePictureInPicture: this.options_.disablePictureInPicture, muted: this.options_.muted, poster: this.poster(), language: this.language(), playerElIngest: this.playerElIngest_ || !1, 'vtt.js': this.options_['vtt.js'], canOverridePoster: !!this.options_.techCanOverridePoster, enableSourceset: this.options_.enableSourceset, Promise: this.options_.Promise }; gi.names.forEach(function (e) { var t = gi[e]; a[t.getterName] = i[t.privateName]; }), g(a, this.options_[n]), g(a, this.options_[r]), g(a, this.options_[e.toLowerCase()]), this.tag && (a.tag = this.tag), t && t.src === this.cache_.src && 0 < this.cache_.currentTime && (a.startTime = this.cache_.currentTime); var s = Xi.getTech(e); if (!s) throw new Error( "No Tech named '" + n + "' exists! '" + n + "' should be registered using videojs.registerTech()'" ); (this.tech_ = new s(a)), this.tech_.ready(ve(this, this.handleTechReady_), !0), Lt(this.textTracksJson_ || [], this.tech_), Wr.forEach(function (e) { i.on(i.tech_, e, i['handleTech' + Me(e) + '_']); }), Object.keys(zr).forEach(function (t) { i.on(i.tech_, t, function (e) { 0 === i.tech_.playbackRate() && i.tech_.seeking() ? i.queuedCallbacks_.push({ callback: i['handleTech' + zr[t] + '_'].bind(i), event: e }) : i['handleTech' + zr[t] + '_'](e); }); }), this.on(this.tech_, 'loadstart', this.handleTechLoadStart_), this.on(this.tech_, 'sourceset', this.handleTechSourceset_), this.on(this.tech_, 'waiting', this.handleTechWaiting_), this.on(this.tech_, 'ended', this.handleTechEnded_), this.on(this.tech_, 'seeking', this.handleTechSeeking_), this.on(this.tech_, 'play', this.handleTechPlay_), this.on(this.tech_, 'firstplay', this.handleTechFirstPlay_), this.on(this.tech_, 'pause', this.handleTechPause_), this.on(this.tech_, 'durationchange', this.handleTechDurationChange_), this.on(this.tech_, 'fullscreenchange', this.handleTechFullscreenChange_), this.on(this.tech_, 'fullscreenerror', this.handleTechFullscreenError_), this.on(this.tech_, 'enterpictureinpicture', this.handleTechEnterPictureInPicture_), this.on(this.tech_, 'leavepictureinpicture', this.handleTechLeavePictureInPicture_), this.on(this.tech_, 'error', this.handleTechError_), this.on(this.tech_, 'loadedmetadata', this.updateStyleEl_), this.on(this.tech_, 'posterchange', this.handleTechPosterChange_), this.on(this.tech_, 'textdata', this.handleTechTextData_), this.on(this.tech_, 'ratechange', this.handleTechRateChange_), this.usingNativeControls(this.techGet_('controls')), this.controls() && !this.usingNativeControls() && this.addTechControlsListeners_(), this.tech_.el().parentNode === this.el() || ('Html5' === n && this.tag) || E(this.tech_.el(), this.el()), this.tag && ((this.tag.player = null), (this.tag = null)); }), (e.unloadTech_ = function () { var i = this; gi.names.forEach(function (e) { var t = gi[e]; i[t.privateName] = i[t.getterName](); }), (this.textTracksJson_ = Pt(this.tech_)), (this.isReady_ = !1), this.tech_.dispose(), (this.tech_ = !1), this.isPosterFromTech_ && ((this.poster_ = ''), this.trigger('posterchange')), (this.isPosterFromTech_ = !1); }), (e.tech = function (e) { return ( void 0 === e && p.warn( "Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n" ), this.tech_ ); }), (e.addTechControlsListeners_ = function () { this.removeTechControlsListeners_(), this.on(this.tech_, 'mouseup', this.handleTechClick_), this.on(this.tech_, 'dblclick', this.handleTechDoubleClick_), this.on(this.tech_, 'touchstart', this.handleTechTouchStart_), this.on(this.tech_, 'touchmove', this.handleTechTouchMove_), this.on(this.tech_, 'touchend', this.handleTechTouchEnd_), this.on(this.tech_, 'tap', this.handleTechTap_); }), (e.removeTechControlsListeners_ = function () { this.off(this.tech_, 'tap', this.handleTechTap_), this.off(this.tech_, 'touchstart', this.handleTechTouchStart_), this.off(this.tech_, 'touchmove', this.handleTechTouchMove_), this.off(this.tech_, 'touchend', this.handleTechTouchEnd_), this.off(this.tech_, 'mouseup', this.handleTechClick_), this.off(this.tech_, 'dblclick', this.handleTechDoubleClick_); }), (e.handleTechReady_ = function () { this.triggerReady(), this.cache_.volume && this.techCall_('setVolume', this.cache_.volume), this.handleTechPosterChange_(), this.handleTechDurationChange_(); }), (e.handleTechLoadStart_ = function () { this.removeClass('vjs-ended'), this.removeClass('vjs-seeking'), this.error(null), this.handleTechDurationChange_(), this.paused() ? (this.hasStarted(!1), this.trigger('loadstart')) : (this.trigger('loadstart'), this.trigger('firstplay')), this.manualAutoplay_(this.autoplay()); }), (e.manualAutoplay_ = function (t) { var n = this; if (this.tech_ && 'string' == typeof t) { var e, i = function () { var e = n.muted(); n.muted(!0); function t() { n.muted(e); } n.playTerminatedQueue_.push(t); var i = n.play(); if (It(i)) return i.catch(t); }; if ( ('any' === t && !0 !== this.muted() ? It((e = this.play())) && (e = e.catch(i)) : (e = 'muted' === t && !0 !== this.muted() ? i() : this.play()), It(e)) ) return e .then(function () { n.trigger({ type: 'autoplay-success', autoplay: t }); }) .catch(function (e) { n.trigger({ type: 'autoplay-failure', autoplay: t }); }); } }), (e.updateSourceCaches_ = function (e) { void 0 === e && (e = ''); var t = e, i = ''; 'string' != typeof t && ((t = e.src), (i = e.type)), (this.cache_.source = this.cache_.source || {}), (this.cache_.sources = this.cache_.sources || []), t && !i && (i = (function (e, t) { if (!t) return ''; if (e.cache_.source.src === t && e.cache_.source.type) return e.cache_.source.type; var i = e.cache_.sources.filter(function (e) { return e.src === t; }); if (i.length) return i[0].type; for (var n = e.$$('source'), r = 0; r < n.length; r++) { var a = n[r]; if (a.type && a.src && a.src === t) return a.type; } return an(t); })(this, t)), (this.cache_.source = Re({}, e, { src: t, type: i })); for ( var n = this.cache_.sources.filter(function (e) { return e.src && e.src === t; }), r = [], a = this.$$('source'), s = [], o = 0; o < a.length; o++ ) { var u = L(a[o]); r.push(u), u.src && u.src === t && s.push(u.src); } s.length && !n.length ? (this.cache_.sources = r) : n.length || (this.cache_.sources = [this.cache_.source]), (this.cache_.src = t); }), (e.handleTechSourceset_ = function (e) { var i = this; if (!this.changingSrc_) { var t = function (e) { return i.updateSourceCaches_(e); }, n = this.currentSource().src, r = e.src; n && !/^blob:/.test(n) && /^blob:/.test(r) && ((this.lastSource_ && (this.lastSource_.tech === r || this.lastSource_.player === n)) || (t = function () {})), t(r), e.src || this.tech_.any(['sourceset', 'loadstart'], function (e) { if ('sourceset' !== e.type) { var t = i.techGet('currentSrc'); (i.lastSource_.tech = t), i.updateSourceCaches_(t); } }); } (this.lastSource_ = { player: this.currentSource().src, tech: e.src }), this.trigger({ src: e.src, type: 'sourceset' }); }), (e.hasStarted = function (e) { if (void 0 === e) return this.hasStarted_; e !== this.hasStarted_ && ((this.hasStarted_ = e), this.hasStarted_ ? (this.addClass('vjs-has-started'), this.trigger('firstplay')) : this.removeClass('vjs-has-started')); }), (e.handleTechPlay_ = function () { this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.hasStarted(!0), this.trigger('play'); }), (e.handleTechRateChange_ = function () { 0 < this.tech_.playbackRate() && 0 === this.cache_.lastPlaybackRate && (this.queuedCallbacks_.forEach(function (e) { return e.callback(e.event); }), (this.queuedCallbacks_ = [])), (this.cache_.lastPlaybackRate = this.tech_.playbackRate()), this.trigger('ratechange'); }), (e.handleTechWaiting_ = function () { var t = this; this.addClass('vjs-waiting'), this.trigger('waiting'); var i = this.currentTime(); this.on('timeupdate', function e() { i !== t.currentTime() && (t.removeClass('vjs-waiting'), t.off('timeupdate', e)); }); }), (e.handleTechCanPlay_ = function () { this.removeClass('vjs-waiting'), this.trigger('canplay'); }), (e.handleTechCanPlayThrough_ = function () { this.removeClass('vjs-waiting'), this.trigger('canplaythrough'); }), (e.handleTechPlaying_ = function () { this.removeClass('vjs-waiting'), this.trigger('playing'); }), (e.handleTechSeeking_ = function () { this.addClass('vjs-seeking'), this.trigger('seeking'); }), (e.handleTechSeeked_ = function () { this.removeClass('vjs-seeking'), this.removeClass('vjs-ended'), this.trigger('seeked'); }), (e.handleTechFirstPlay_ = function () { this.options_.starttime && (p.warn('Passing the `starttime` option to the player will be deprecated in 6.0'), this.currentTime(this.options_.starttime)), this.addClass('vjs-has-started'), this.trigger('firstplay'); }), (e.handleTechPause_ = function () { this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.trigger('pause'); }), (e.handleTechEnded_ = function () { this.addClass('vjs-ended'), this.options_.loop ? (this.currentTime(0), this.play()) : this.paused() || this.pause(), this.trigger('ended'); }), (e.handleTechDurationChange_ = function () { this.duration(this.techGet_('duration')); }), (e.handleTechClick_ = function (e) { z(e) && this.controls_ && (this.paused() ? At(this.play()) : this.pause()); }), (e.handleTechDoubleClick_ = function (t) { this.controls_ && (Array.prototype.some.call( this.$$('.vjs-control-bar, .vjs-modal-dialog'), function (e) { return e.contains(t.target); } ) || (void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.doubleClick && !1 === this.options_.userActions.doubleClick) || (void 0 !== this.options_ && void 0 !== this.options_.userActions && 'function' == typeof this.options_.userActions.doubleClick ? this.options_.userActions.doubleClick.call(this, t) : this.isFullscreen() ? this.exitFullscreen() : this.requestFullscreen())); }), (e.handleTechTap_ = function () { this.userActive(!this.userActive()); }), (e.handleTechTouchStart_ = function () { this.userWasActive = this.userActive(); }), (e.handleTechTouchMove_ = function () { this.userWasActive && this.reportUserActivity(); }), (e.handleTechTouchEnd_ = function (e) { e.preventDefault(); }), (e.handleStageClick_ = function () { this.reportUserActivity(); }), (e.toggleFullscreenClass_ = function () { this.isFullscreen() ? this.addClass('vjs-fullscreen') : this.removeClass('vjs-fullscreen'); }), (e.documentFullscreenChange_ = function (e) { var t = e.target.player; if (!t || t === this) { var i = this.el(), n = d[this.fsApi_.fullscreenElement] === i; !n && i.matches ? (n = i.matches(':' + this.fsApi_.fullscreen)) : !n && i.msMatchesSelector && (n = i.msMatchesSelector(':' + this.fsApi_.fullscreen)), this.isFullscreen(n); } }), (e.handleTechFullscreenChange_ = function (e, t) { t && (t.nativeIOSFullscreen && this.toggleClass('vjs-ios-native-fs'), this.isFullscreen(t.isFullscreen)); }), (e.handleTechFullscreenError_ = function (e, t) { this.trigger('fullscreenerror', t); }), (e.togglePictureInPictureClass_ = function () { this.isInPictureInPicture() ? this.addClass('vjs-picture-in-picture') : this.removeClass('vjs-picture-in-picture'); }), (e.handleTechEnterPictureInPicture_ = function (e) { this.isInPictureInPicture(!0); }), (e.handleTechLeavePictureInPicture_ = function (e) { this.isInPictureInPicture(!1); }), (e.handleTechError_ = function () { var e = this.tech_.error(); this.error(e); }), (e.handleTechTextData_ = function (e, t) { var i = null; 1 < arguments.length && (i = t), this.trigger('textdata', i); }), (e.getCache = function () { return this.cache_; }), (e.resetCache_ = function () { this.cache_ = { currentTime: 0, initTime: 0, inactivityTimeout: this.options_.inactivityTimeout, duration: NaN, lastVolume: 1, lastPlaybackRate: this.defaultPlaybackRate(), media: null, src: '', source: {}, sources: [], volume: 1 }; }), (e.techCall_ = function (e, t) { this.ready(function () { if (e in en) return (function (e, t, i, n) { return t[i](e.reduce(nn(i), n)); })(this.middleware_, this.tech_, e, t); if (e in tn) return Ji(this.middleware_, this.tech_, e, t); try { this.tech_ && this.tech_[e](t); } catch (e) { throw (p(e), e); } }, !0); }), (e.techGet_ = function (t) { if (this.tech_ && this.tech_.isReady_) { if (t in Zi) return (function (e, t, i) { return e.reduceRight(nn(i), t[i]()); })(this.middleware_, this.tech_, t); if (t in tn) return Ji(this.middleware_, this.tech_, t); try { return this.tech_[t](); } catch (e) { if (void 0 === this.tech_[t]) throw ( (p( 'Video.js: ' + t + ' method not defined for ' + this.techName_ + ' playback technology.', e ), e) ); if ('TypeError' === e.name) throw ( (p( 'Video.js: ' + t + ' unavailable on ' + this.techName_ + ' playback technology element.', e ), (this.tech_.isReady_ = !1), e) ); throw (p(e), e); } } }), (e.play = function () { var t = this, e = this.options_.Promise || T.Promise; return e ? new e(function (e) { t.play_(e); }) : this.play_(); }), (e.play_ = function (e) { var t = this; void 0 === e && (e = At), this.playCallbacks_.push(e); var i = Boolean(!this.changingSrc_ && (this.src() || this.currentSrc())); if ( (this.waitToPlay_ && (this.off(['ready', 'loadstart'], this.waitToPlay_), (this.waitToPlay_ = null)), !this.isReady_ || !i) ) return ( (this.waitToPlay_ = function (e) { t.play_(); }), this.one(['ready', 'loadstart'], this.waitToPlay_), void (i || (!ht && !dt) || this.load()) ); var n = this.techGet_('play'); null === n ? this.runPlayTerminatedQueue_() : this.runPlayCallbacks_(n); }), (e.runPlayTerminatedQueue_ = function () { var e = this.playTerminatedQueue_.slice(0); (this.playTerminatedQueue_ = []), e.forEach(function (e) { e(); }); }), (e.runPlayCallbacks_ = function (t) { var e = this.playCallbacks_.slice(0); (this.playCallbacks_ = []), (this.playTerminatedQueue_ = []), e.forEach(function (e) { e(t); }); }), (e.pause = function () { this.techCall_('pause'); }), (e.paused = function () { return !1 !== this.techGet_('paused'); }), (e.played = function () { return this.techGet_('played') || gt(0, 0); }), (e.scrubbing = function (e) { if ('undefined' == typeof e) return this.scrubbing_; (this.scrubbing_ = !!e), this.techCall_('setScrubbing', this.scrubbing_), e ? this.addClass('vjs-scrubbing') : this.removeClass('vjs-scrubbing'); }), (e.currentTime = function (e) { return 'undefined' != typeof e ? (e < 0 && (e = 0), this.isReady_ && !this.changingSrc_ && this.tech_ && this.tech_.isReady_ ? (this.techCall_('setCurrentTime', e), void (this.cache_.initTime = 0)) : ((this.cache_.initTime = e), this.off('canplay', this.applyInitTime_), void this.one('canplay', this.applyInitTime_))) : ((this.cache_.currentTime = this.techGet_('currentTime') || 0), this.cache_.currentTime); }), (e.applyInitTime_ = function () { this.currentTime(this.cache_.initTime); }), (e.duration = function (e) { if (void 0 === e) return void 0 !== this.cache_.duration ? this.cache_.duration : NaN; (e = parseFloat(e)) < 0 && (e = 1 / 0), e !== this.cache_.duration && ((this.cache_.duration = e) === 1 / 0 ? this.addClass('vjs-live') : this.removeClass('vjs-live'), isNaN(e) || this.trigger('durationchange')); }), (e.remainingTime = function () { return this.duration() - this.currentTime(); }), (e.remainingTimeDisplay = function () { return Math.floor(this.duration()) - Math.floor(this.currentTime()); }), (e.buffered = function () { var e = this.techGet_('buffered'); return (e && e.length) || (e = gt(0, 0)), e; }), (e.bufferedPercent = function () { return vt(this.buffered(), this.duration()); }), (e.bufferedEnd = function () { var e = this.buffered(), t = this.duration(), i = e.end(e.length - 1); return t < i && (i = t), i; }), (e.volume = function (e) { var t; return void 0 !== e ? ((t = Math.max(0, Math.min(1, parseFloat(e)))), (this.cache_.volume = t), this.techCall_('setVolume', t), void (0 < t && this.lastVolume_(t))) : ((t = parseFloat(this.techGet_('volume'))), isNaN(t) ? 1 : t); }), (e.muted = function (e) { if (void 0 === e) return this.techGet_('muted') || !1; this.techCall_('setMuted', e); }), (e.defaultMuted = function (e) { return void 0 !== e ? this.techCall_('setDefaultMuted', e) : this.techGet_('defaultMuted') || !1; }), (e.lastVolume_ = function (e) { if (void 0 === e || 0 === e) return this.cache_.lastVolume; this.cache_.lastVolume = e; }), (e.supportsFullScreen = function () { return this.techGet_('supportsFullScreen') || !1; }), (e.isFullscreen = function (e) { if (void 0 === e) return this.isFullscreen_; var t = this.isFullscreen_; return ( (this.isFullscreen_ = Boolean(e)), this.isFullscreen_ !== t && this.fsApi_.prefixed && this.trigger('fullscreenchange'), void this.toggleFullscreenClass_() ); }), (e.requestFullscreen = function (s) { var e = this.options_.Promise || T.Promise; if (e) { var o = this; return new e(function (e, i) { function n() { o.off('fullscreenerror', r), o.off('fullscreenchange', t); } function t() { n(), e(); } function r(e, t) { n(), i(t); } o.one('fullscreenchange', t), o.one('fullscreenerror', r); var a = o.requestFullscreenHelper_(s); if (a) return a.then(n, n), a; }); } return this.requestFullscreenHelper_(); }), (e.requestFullscreenHelper_ = function (e) { var t, i = this; if ( (this.fsApi_.prefixed || ((t = (this.options_.fullscreen && this.options_.fullscreen.options) || {}), void 0 !== e && (t = e)), this.fsApi_.requestFullscreen) ) { var n = this.el_[this.fsApi_.requestFullscreen](t); return ( n && n.then( function () { return i.isFullscreen(!0); }, function () { return i.isFullscreen(!1); } ), n ); } this.tech_.supportsFullScreen() ? this.techCall_('enterFullScreen') : this.enterFullWindow(); }), (e.exitFullscreen = function () { var e = this.options_.Promise || T.Promise; if (e) { var s = this; return new e(function (e, i) { function n() { s.off('fullscreenerror', r), s.off('fullscreenchange', t); } function t() { n(), e(); } function r(e, t) { n(), i(t); } s.one('fullscreenchange', t), s.one('fullscreenerror', r); var a = s.exitFullscreenHelper_(); if (a) return a.then(n, n), a; }); } return this.exitFullscreenHelper_(); }), (e.exitFullscreenHelper_ = function () { var e = this; if (this.fsApi_.requestFullscreen) { var t = d[this.fsApi_.exitFullscreen](); return ( t && t.then(function () { return e.isFullscreen(!1); }), t ); } this.tech_.supportsFullScreen() ? this.techCall_('exitFullScreen') : this.exitFullWindow(); }), (e.enterFullWindow = function () { this.isFullscreen(!0), (this.isFullWindow = !0), (this.docOrigOverflow = d.documentElement.style.overflow), he(d, 'keydown', this.boundFullWindowOnEscKey_), (d.documentElement.style.overflow = 'hidden'), I(d.body, 'vjs-full-window'), this.trigger('enterFullWindow'); }), (e.fullWindowOnEscKey = function (e) { Ot.isEventKey(e, 'Esc') && (!0 === this.isFullscreen() ? this.exitFullscreen() : this.exitFullWindow()); }), (e.exitFullWindow = function () { this.isFullscreen(!1), (this.isFullWindow = !1), pe(d, 'keydown', this.boundFullWindowOnEscKey_), (d.documentElement.style.overflow = this.docOrigOverflow), A(d.body, 'vjs-full-window'), this.trigger('exitFullWindow'); }), (e.disablePictureInPicture = function (e) { if (void 0 === e) return this.techGet_('disablePictureInPicture'); this.techCall_('setDisablePictureInPicture', e), (this.options_.disablePictureInPicture = e), this.trigger('disablepictureinpicturechanged'); }), (e.isInPictureInPicture = function (e) { return void 0 !== e ? ((this.isInPictureInPicture_ = !!e), void this.togglePictureInPictureClass_()) : !!this.isInPictureInPicture_; }), (e.requestPictureInPicture = function () { if ('pictureInPictureEnabled' in d && !1 === this.disablePictureInPicture()) return this.techGet_('requestPictureInPicture'); }), (e.exitPictureInPicture = function () { if ('pictureInPictureEnabled' in d) return d.exitPictureInPicture(); }), (e.handleKeyDown = function (e) { var t = this.options_.userActions; if (t && t.hotkeys) { !(function (e) { var t = e.tagName.toLowerCase(); if (e.isContentEditable) return !0; if ('input' === t) return ( -1 === ['button', 'checkbox', 'hidden', 'radio', 'reset', 'submit'].indexOf(e.type) ); return -1 !== ['textarea'].indexOf(t); })(this.el_.ownerDocument.activeElement) && ('function' == typeof t.hotkeys ? t.hotkeys.call(this, e) : this.handleHotkeys(e)); } }), (e.handleHotkeys = function (e) { var t = this.options_.userActions ? this.options_.userActions.hotkeys : {}, i = t.fullscreenKey, n = void 0 === i ? function (e) { return Ot.isEventKey(e, 'f'); } : i, r = t.muteKey, a = void 0 === r ? function (e) { return Ot.isEventKey(e, 'm'); } : r, s = t.playPauseKey, o = void 0 === s ? function (e) { return Ot.isEventKey(e, 'k') || Ot.isEventKey(e, 'Space'); } : s; if (n.call(this, e)) { e.preventDefault(), e.stopPropagation(); var u = je.getComponent('FullscreenToggle'); !1 !== d[this.fsApi_.fullscreenEnabled] && u.prototype.handleClick.call(this, e); } else if (a.call(this, e)) { e.preventDefault(), e.stopPropagation(), je.getComponent('MuteToggle').prototype.handleClick.call(this, e); } else if (o.call(this, e)) { e.preventDefault(), e.stopPropagation(), je.getComponent('PlayToggle').prototype.handleClick.call(this, e); } }), (e.canPlayType = function (e) { for (var t, i = 0, n = this.options_.techOrder; i < n.length; i++) { var r = n[i], a = Xi.getTech(r); if ((a = a || je.getComponent(r))) { if (a.isSupported() && (t = a.canPlayType(e))) return t; } else p.error( 'The "' + r + '" tech is undefined. Skipped browser support check for that tech.' ); } return ''; }), (e.selectSource = function (e) { function t(e, i, n) { var r; return ( e.some(function (t) { return i.some(function (e) { if ((r = n(t, e))) return !0; }); }), r ); } function i(e, t) { var i = e[0]; if (e[1].canPlaySource(t, r.options_[i.toLowerCase()])) return { source: t, tech: i }; } var n, r = this, a = this.options_.techOrder .map(function (e) { return [e, Xi.getTech(e)]; }) .filter(function (e) { var t = e[0], i = e[1]; return i ? i.isSupported() : (p.error( 'The "' + t + '" tech is undefined. Skipped browser support check for that tech.' ), !1); }); return ( (this.options_.sourceOrder ? t( e, a, ((n = i), function (e, t) { return n(t, e); }) ) : t(a, e, i)) || !1 ); }), (e.src = function (e) { var i = this; if ('undefined' == typeof e) return this.cache_.src || ''; var n = (function t(e) { if (Array.isArray(e)) { var i = []; e.forEach(function (e) { (e = t(e)), Array.isArray(e) ? (i = i.concat(e)) : s(e) && i.push(e); }), (e = i); } else e = 'string' == typeof e && e.trim() ? [on({ src: e })] : s(e) && 'string' == typeof e.src && e.src && e.src.trim() ? [on(e)] : []; return e; })(e); n.length ? ((this.changingSrc_ = !0), (this.cache_.sources = n), this.updateSourceCaches_(n[0]), Qi(this, n[0], function (e, t) { if ( ((i.middleware_ = t), (i.cache_.sources = n), i.updateSourceCaches_(e), i.src_(e)) ) return 1 < n.length ? i.src(n.slice(1)) : ((i.changingSrc_ = !1), i.setTimeout(function () { this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) }); }, 0), void i.triggerReady()); !(function (e, t) { e.forEach(function (e) { return e.setTech && e.setTech(t); }); })(t, i.tech_); })) : this.setTimeout(function () { this.error({ code: 4, message: this.localize(this.options_.notSupportedMessage) }); }, 0); }), (e.src_ = function (e) { var t = this, i = this.selectSource([e]); return ( !i || ((function (e, t) { return Me(e) === Me(t); })(i.tech, this.techName_) ? this.ready(function () { this.tech_.constructor.prototype.hasOwnProperty('setSource') ? this.techCall_('setSource', e) : this.techCall_('src', e.src), (this.changingSrc_ = !1); }, !0) : ((this.changingSrc_ = !0), this.loadTech_(i.tech, i.source), this.tech_.ready(function () { t.changingSrc_ = !1; })), !1) ); }), (e.load = function () { this.techCall_('load'); }), (e.reset = function () { var e = this, t = this.options_.Promise || T.Promise; this.paused() || !t ? this.doReset_() : At( this.play().then(function () { return e.doReset_(); }) ); }), (e.doReset_ = function () { this.tech_ && this.tech_.clearTracks('text'), this.resetCache_(), this.poster(''), this.loadTech_(this.options_.techOrder[0], null), this.techCall_('reset'), this.resetControlBarUI_(), Ae(this) && this.trigger('playerreset'); }), (e.resetControlBarUI_ = function () { this.resetProgressBar_(), this.resetPlaybackRate_(), this.resetVolumeBar_(); }), (e.resetProgressBar_ = function () { this.currentTime(0); var e = this.controlBar, t = e.durationDisplay, i = e.remainingTimeDisplay; t && t.updateContent(), i && i.updateContent(); }), (e.resetPlaybackRate_ = function () { this.playbackRate(this.defaultPlaybackRate()), this.handleTechRateChange_(); }), (e.resetVolumeBar_ = function () { this.volume(1), this.trigger('volumechange'); }), (e.currentSources = function () { var e = this.currentSource(), t = []; return 0 !== Object.keys(e).length && t.push(e), this.cache_.sources || t; }), (e.currentSource = function () { return this.cache_.source || {}; }), (e.currentSrc = function () { return (this.currentSource() && this.currentSource().src) || ''; }), (e.currentType = function () { return (this.currentSource() && this.currentSource().type) || ''; }), (e.preload = function (e) { return void 0 !== e ? (this.techCall_('setPreload', e), void (this.options_.preload = e)) : this.techGet_('preload'); }), (e.autoplay = function (e) { if (void 0 === e) return this.options_.autoplay || !1; var t; 'string' == typeof e && /(any|play|muted)/.test(e) ? ((this.options_.autoplay = e), this.manualAutoplay_(e), (t = !1)) : (this.options_.autoplay = !!e), (t = 'undefined' == typeof t ? this.options_.autoplay : t), this.tech_ && this.techCall_('setAutoplay', t); }), (e.playsinline = function (e) { return void 0 !== e ? (this.techCall_('setPlaysinline', e), (this.options_.playsinline = e), this) : this.techGet_('playsinline'); }), (e.loop = function (e) { return void 0 !== e ? (this.techCall_('setLoop', e), void (this.options_.loop = e)) : this.techGet_('loop'); }), (e.poster = function (e) { if (void 0 === e) return this.poster_; (e = e || '') !== this.poster_ && ((this.poster_ = e), this.techCall_('setPoster', e), (this.isPosterFromTech_ = !1), this.trigger('posterchange')); }), (e.handleTechPosterChange_ = function () { if ( (!this.poster_ || this.options_.techCanOverridePoster) && this.tech_ && this.tech_.poster ) { var e = this.tech_.poster() || ''; e !== this.poster_ && ((this.poster_ = e), (this.isPosterFromTech_ = !0), this.trigger('posterchange')); } }), (e.controls = function (e) { if (void 0 === e) return !!this.controls_; (e = !!e), this.controls_ !== e && ((this.controls_ = e), this.usingNativeControls() && this.techCall_('setControls', e), this.controls_ ? (this.removeClass('vjs-controls-disabled'), this.addClass('vjs-controls-enabled'), this.trigger('controlsenabled'), this.usingNativeControls() || this.addTechControlsListeners_()) : (this.removeClass('vjs-controls-enabled'), this.addClass('vjs-controls-disabled'), this.trigger('controlsdisabled'), this.usingNativeControls() || this.removeTechControlsListeners_())); }), (e.usingNativeControls = function (e) { if (void 0 === e) return !!this.usingNativeControls_; (e = !!e), this.usingNativeControls_ !== e && ((this.usingNativeControls_ = e), this.usingNativeControls_ ? (this.addClass('vjs-using-native-controls'), this.trigger('usingnativecontrols')) : (this.removeClass('vjs-using-native-controls'), this.trigger('usingcustomcontrols'))); }), (e.error = function (e) { if (void 0 === e) return this.error_ || null; if (this.options_.suppressNotSupportedError && e && 4 === e.code) { var t = function () { this.error(e); }; return ( (this.options_.suppressNotSupportedError = !1), this.any(['click', 'touchstart'], t), void this.one('loadstart', function () { this.off(['click', 'touchstart'], t); }) ); } if (null === e) return ( (this.error_ = e), this.removeClass('vjs-error'), void (this.errorDisplay && this.errorDisplay.close()) ); (this.error_ = new Ct(e)), this.addClass('vjs-error'), p.error( '(CODE:' + this.error_.code + ' ' + Ct.errorTypes[this.error_.code] + ')', this.error_.message, this.error_ ), this.trigger('error'); }), (e.reportUserActivity = function (e) { this.userActivity_ = !0; }), (e.userActive = function (e) { if (void 0 === e) return this.userActive_; if ((e = !!e) !== this.userActive_) { if (((this.userActive_ = e), this.userActive_)) return ( (this.userActivity_ = !0), this.removeClass('vjs-user-inactive'), this.addClass('vjs-user-active'), void this.trigger('useractive') ); this.tech_ && this.tech_.one('mousemove', function (e) { e.stopPropagation(), e.preventDefault(); }), (this.userActivity_ = !1), this.removeClass('vjs-user-active'), this.addClass('vjs-user-inactive'), this.trigger('userinactive'); } }), (e.listenForUserActivity_ = function () { function e(e) { r(), this.clearInterval(t); } var t, i, n, r = ve(this, this.reportUserActivity); this.on('mousedown', function () { r(), this.clearInterval(t), (t = this.setInterval(r, 250)); }), this.on('mousemove', function (e) { (e.screenX === i && e.screenY === n) || ((i = e.screenX), (n = e.screenY), r()); }), this.on('mouseup', e), this.on('mouseleave', e); var a, s = this.getChild('controlBar'); !s || dt || Je || (s.on('mouseenter', function (e) { (this.player().cache_.inactivityTimeout = this.player().options_.inactivityTimeout), (this.player().options_.inactivityTimeout = 0); }), s.on('mouseleave', function (e) { this.player().options_.inactivityTimeout = this.player().cache_.inactivityTimeout; })), this.on('keydown', r), this.on('keyup', r), this.setInterval(function () { if (this.userActivity_) { (this.userActivity_ = !1), this.userActive(!0), this.clearTimeout(a); var e = this.options_.inactivityTimeout; e <= 0 || (a = this.setTimeout(function () { this.userActivity_ || this.userActive(!1); }, e)); } }, 250); }), (e.playbackRate = function (e) { if (void 0 === e) return this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_('playbackRate') : 1; this.techCall_('setPlaybackRate', e); }), (e.defaultPlaybackRate = function (e) { return void 0 !== e ? this.techCall_('setDefaultPlaybackRate', e) : this.tech_ && this.tech_.featuresPlaybackRate ? this.techGet_('defaultPlaybackRate') : 1; }), (e.isAudio = function (e) { if (void 0 === e) return !!this.isAudio_; this.isAudio_ = !!e; }), (e.addTextTrack = function (e, t, i) { if (this.tech_) return this.tech_.addTextTrack(e, t, i); }), (e.addRemoteTextTrack = function (e, t) { if (this.tech_) return this.tech_.addRemoteTextTrack(e, t); }), (e.removeRemoteTextTrack = function (e) { void 0 === e && (e = {}); var t = e.track; if (((t = t || e), this.tech_)) return this.tech_.removeRemoteTextTrack(t); }), (e.getVideoPlaybackQuality = function () { return this.techGet_('getVideoPlaybackQuality'); }), (e.videoWidth = function () { return (this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth()) || 0; }), (e.videoHeight = function () { return (this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight()) || 0; }), (e.language = function (e) { if (void 0 === e) return this.language_; this.language_ = String(e).toLowerCase(); }), (e.languages = function () { return Re(l.prototype.options_.languages, this.languages_); }), (e.toJSON = function () { var e = Re(this.options_), t = e.tracks; e.tracks = []; for (var i = 0; i < t.length; i++) { var n = t[i]; ((n = Re(n)).player = void 0), (e.tracks[i] = n); } return e; }), (e.createModal = function (e, t) { var i = this; (t = t || {}).content = e || ''; var n = new Mt(this, t); return ( this.addChild(n), n.on('dispose', function () { i.removeChild(n); }), n.open(), n ); }), (e.updateCurrentBreakpoint_ = function () { if (this.responsive()) for ( var e = this.currentBreakpoint(), t = this.currentWidth(), i = 0; i < Gr.length; i++ ) { var n = Gr[i]; if (t <= this.breakpoints_[n]) { if (e === n) return; e && this.removeClass(Xr[e]), this.addClass(Xr[n]), (this.breakpoint_ = n); break; } } }), (e.removeCurrentBreakpoint_ = function () { var e = this.currentBreakpointClass(); (this.breakpoint_ = ''), e && this.removeClass(e); }), (e.breakpoints = function (e) { return ( void 0 === e || ((this.breakpoint_ = ''), (this.breakpoints_ = g({}, Kr, e)), this.updateCurrentBreakpoint_()), g(this.breakpoints_) ); }), (e.responsive = function (e) { return void 0 === e ? this.responsive_ : (e = Boolean(e)) !== this.responsive_ ? ((this.responsive_ = e) ? (this.on('playerresize', this.updateCurrentBreakpoint_), this.updateCurrentBreakpoint_()) : (this.off('playerresize', this.updateCurrentBreakpoint_), this.removeCurrentBreakpoint_()), e) : void 0; }), (e.currentBreakpoint = function () { return this.breakpoint_; }), (e.currentBreakpointClass = function () { return Xr[this.breakpoint_] || ''; }), (e.loadMedia = function (e, t) { var i = this; if (e && 'object' == typeof e) { this.reset(), (this.cache_.media = Re(e)); var n = this.cache_.media, r = n.artwork, a = n.poster, s = n.src, o = n.textTracks; !r && a && (this.cache_.media.artwork = [{ src: a, type: an(a) }]), s && this.src(s), a && this.poster(a), Array.isArray(o) && o.forEach(function (e) { return i.addRemoteTextTrack(e, !1); }), this.ready(t); } }), (e.getMedia = function () { if (this.cache_.media) return Re(this.cache_.media); var e = this.poster(), t = { src: this.currentSources(), textTracks: Array.prototype.map.call(this.remoteTextTracks(), function (e) { return { kind: e.kind, label: e.label, language: e.language, src: e.src }; }) }; return e && ((t.poster = e), (t.artwork = [{ src: t.poster, type: an(t.poster) }])), t; }), (l.getTagSettings = function (e) { var t = { sources: [], tracks: [] }, i = L(e), n = i['data-setup']; if ( (w(e, 'vjs-fill') && (i.fill = !0), w(e, 'vjs-fluid') && (i.fluid = !0), null !== n) ) { var r = wt(n || '{}'), a = r[0], s = r[1]; a && p.error(a), g(i, s); } if ((g(t, i), e.hasChildNodes())) for (var o = e.childNodes, u = 0, l = o.length; u < l; u++) { var c = o[u], d = c.nodeName.toLowerCase(); 'source' === d ? t.sources.push(L(c)) : 'track' === d && t.tracks.push(L(c)); } return t; }), (e.flexNotSupported_ = function () { var e = d.createElement('i'); return !( 'flexBasis' in e.style || 'webkitFlexBasis' in e.style || 'mozFlexBasis' in e.style || 'msFlexBasis' in e.style || 'msFlexOrder' in e.style ); }), (e.debug = function (e) { if (void 0 === e) return this.debugEnabled_; e ? (this.trigger('debugon'), (this.previousLogLevel_ = this.log.level), this.log.level('debug'), (this.debugEnabled_ = !0)) : (this.trigger('debugoff'), this.log.level(this.previousLogLevel_), (this.previousLogLevel_ = void 0), (this.debugEnabled_ = !1)); }), l ); })(je); gi.names.forEach(function (e) { var t = gi[e]; Yr.prototype[t.getterName] = function () { return this.tech_ ? this.tech_[t.getterName]() : ((this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName]); }; }), (Yr.prototype.crossorigin = Yr.prototype.crossOrigin), (Yr.players = {}); var $r = T.navigator; (Yr.prototype.options_ = { techOrder: Xi.defaultTechOrder_, html5: {}, flash: {}, inactivityTimeout: 2e3, playbackRates: [], liveui: !1, children: [ 'mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', 'bigPlayButton', 'liveTracker', 'controlBar', 'errorDisplay', 'textTrackSettings', 'resizeManager' ], language: ($r && (($r.languages && $r.languages[0]) || $r.userLanguage || $r.language)) || 'en', languages: {}, notSupportedMessage: 'No compatible source was found for this media.', fullscreen: { options: { navigationUI: 'hide' } }, breakpoints: {}, responsive: !1 }), ['ended', 'seeking', 'seekable', 'networkState', 'readyState'].forEach(function (e) { Yr.prototype[e] = function () { return this.techGet_(e); }; }), Wr.forEach(function (e) { Yr.prototype['handleTech' + Me(e) + '_'] = function () { return this.trigger(e); }; }), je.registerComponent('Player', Yr); var Qr = i(function (i) { function n(e, t) { return ( (i.exports = n = Object.setPrototypeOf || function (e, t) { return (e.__proto__ = t), e; }), n(e, t) ); } i.exports = n; }); function Jr(e) { return oa.hasOwnProperty(e); } function Zr(e) { return Jr(e) ? oa[e] : void 0; } function ea(e, t) { (e[sa] = e[sa] || {}), (e[sa][t] = !0); } function ta(e, t, i) { var n = (i ? 'before' : '') + 'pluginsetup'; e.trigger(n, t), e.trigger(n + ':' + t.name, t); } function ia(r, a) { return ( (a.prototype.name = r), function () { ta(this, { name: r, plugin: a, instance: null }, !0); for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; var n = ra(a, [this].concat(t)); return ( (this[r] = function () { return n; }), ta(this, n.getEventHash()), n ); } ); } var na = function () { if ('undefined' == typeof Reflect || !Reflect.construct) return !1; if (Reflect.construct.sham) return !1; if ('function' == typeof Proxy) return !0; try { return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0; } catch (e) { return !1; } }, ra = i(function (n) { function r(e, t, i) { return ( na() ? (n.exports = r = Reflect.construct) : (n.exports = r = function (e, t, i) { var n = [null]; n.push.apply(n, t); var r = new (Function.bind.apply(e, n))(); return i && Qr(r, i.prototype), r; }), r.apply(null, arguments) ); } n.exports = r; }), aa = 'plugin', sa = 'activePlugins_', oa = {}, ua = (function () { function i(e) { if (this.constructor === i) throw new Error('Plugin must be sub-classed; not directly instantiated.'); (this.player = e), this.log || (this.log = this.player.log.createLogger(this.name)), Pe(this), delete this.trigger, Oe(this, this.constructor.defaultState), ea(e, this.name), (this.dispose = ve(this, this.dispose)), e.on('dispose', this.dispose); } var e = i.prototype; return ( (e.version = function () { return this.constructor.VERSION; }), (e.getEventHash = function (e) { return ( void 0 === e && (e = {}), (e.name = this.name), (e.plugin = this.constructor), (e.instance = this), e ); }), (e.trigger = function (e, t) { return void 0 === t && (t = {}), fe(this.eventBusEl_, e, this.getEventHash(t)); }), (e.handleStateChanged = function (e) {}), (e.dispose = function () { var e = this.name, t = this.player; this.trigger('dispose'), this.off(), t.off('dispose', this.dispose), (t[sa][e] = !1), (this.player = this.state = null), (t[e] = ia(e, oa[e])); }), (i.isBasic = function (e) { var t = 'string' == typeof e ? Zr(e) : e; return 'function' == typeof t && !i.prototype.isPrototypeOf(t.prototype); }), (i.registerPlugin = function (e, t) { if ('string' != typeof e) throw new Error( 'Illegal plugin name, "' + e + '", must be a string, was ' + typeof e + '.' ); if (Jr(e)) p.warn( 'A plugin named "' + e + '" already exists. You may want to avoid re-registering plugins!' ); else if (Yr.prototype.hasOwnProperty(e)) throw new Error( 'Illegal plugin name, "' + e + '", cannot share a name with an existing player method!' ); if ('function' != typeof t) throw new Error( 'Illegal plugin for "' + e + '", must be a function, was ' + typeof t + '.' ); return ( (oa[e] = t), e !== aa && (i.isBasic(t) ? (Yr.prototype[e] = (function (t, i) { function n() { ta(this, { name: t, plugin: i, instance: null }, !0); var e = i.apply(this, arguments); return ea(this, t), ta(this, { name: t, plugin: i, instance: e }), e; } return ( Object.keys(i).forEach(function (e) { n[e] = i[e]; }), n ); })(e, t)) : (Yr.prototype[e] = ia(e, t))), t ); }), (i.deregisterPlugin = function (e) { if (e === aa) throw new Error('Cannot de-register base plugin.'); Jr(e) && (delete oa[e], delete Yr.prototype[e]); }), (i.getPlugins = function (e) { var i; return ( void 0 === e && (e = Object.keys(oa)), e.forEach(function (e) { var t = Zr(e); t && ((i = i || {})[e] = t); }), i ); }), (i.getPluginVersion = function (e) { var t = Zr(e); return (t && t.VERSION) || ''; }), i ); })(); (ua.getPlugin = Zr), (ua.BASE_PLUGIN_NAME = aa), ua.registerPlugin(aa, ua), (Yr.prototype.usingPlugin = function (e) { return !!this[sa] && !0 === this[sa][e]; }), (Yr.prototype.hasPlugin = function (e) { return !!Jr(e); }); var la = function (e, t) { if ('function' != typeof t && null !== t) throw new TypeError('Super expression must either be null or a function'); (e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } })), t && Qr(e, t); }, ca = function (e) { return 0 === e.indexOf('#') ? e.slice(1) : e; }; function da(e, i, t) { var n = da.getPlayer(e); if (n) return ( i && p.warn('Player "' + e + '" is already initialised. Options will not be applied.'), t && n.ready(t), n ); var r = 'string' == typeof e ? X('#' + ca(e)) : e; if (!_(r)) throw new TypeError('The element or ID supplied is not valid. (videojs)'); (r.ownerDocument.defaultView && r.ownerDocument.body.contains(r)) || p.warn('The element supplied is not included in the DOM'), (i = i || {}), da.hooks('beforesetup').forEach(function (e) { var t = e(r, Re(i)); s(t) && !Array.isArray(t) ? (i = Re(i, t)) : p.error('please return an object in beforesetup hooks'); }); var a = je.getComponent('Player'); return ( (n = new a(r, i, t)), da.hooks('setup').forEach(function (e) { return e(n); }), n ); } if ( ((da.hooks_ = {}), (da.hooks = function (e, t) { return ( (da.hooks_[e] = da.hooks_[e] || []), t && (da.hooks_[e] = da.hooks_[e].concat(t)), da.hooks_[e] ); }), (da.hook = function (e, t) { da.hooks(e, t); }), (da.hookOnce = function (i, e) { da.hooks( i, [].concat(e).map(function (t) { return function e() { return da.removeHook(i, e), t.apply(void 0, arguments); }; }) ); }), (da.removeHook = function (e, t) { var i = da.hooks(e).indexOf(t); return !(i <= -1) && ((da.hooks_[e] = da.hooks_[e].slice()), da.hooks_[e].splice(i, 1), !0); }), !0 !== T.VIDEOJS_NO_DYNAMIC_STYLE && y()) ) { var ha = X('.vjs-styles-defaults'); if (!ha) { ha = ee('vjs-styles-defaults'); var pa = X('head'); pa && pa.insertBefore(ha, pa.firstChild), te( ha, '\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid {\n padding-top: 56.25%\n }\n ' ); } } function fa(e) { return e && 'object' == typeof e && 'default' in e ? e : { default: e }; } J(1, da), (da.VERSION = h), (da.options = Yr.prototype.options_), (da.getPlayers = function () { return Yr.players; }), (da.getPlayer = function (e) { var t, i = Yr.players; if ('string' == typeof e) { var n = ca(e), r = i[n]; if (r) return r; t = X('#' + n); } else t = e; if (_(t)) { var a = t, s = a.player, o = a.playerId; if (s || i[o]) return s || i[o]; } }), (da.getAllPlayers = function () { return Object.keys(Yr.players) .map(function (e) { return Yr.players[e]; }) .filter(Boolean); }), (da.players = Yr.players), (da.getComponent = je.getComponent), (da.registerComponent = function (e, t) { Xi.isTech(t) && p.warn( 'The ' + e + ' tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)' ), je.registerComponent.call(je, e, t); }), (da.getTech = Xi.getTech), (da.registerTech = Xi.registerTech), (da.use = function (e, t) { (Ki[e] = Ki[e] || []), Ki[e].push(t); }), Object.defineProperty(da, 'middleware', { value: {}, writeable: !1, enumerable: !0 }), Object.defineProperty(da.middleware, 'TERMINATOR', { value: $i, writeable: !1, enumerable: !0 }), (da.browser = pt), (da.TOUCH_ENABLED = ut), (da.extend = function (e, t) { void 0 === t && (t = {}); var i = function () { e.apply(this, arguments); }, n = {}; for (var r in ('object' == typeof t ? (t.constructor !== Object.prototype.constructor && (i = t.constructor), (n = t)) : 'function' == typeof t && (i = t), la(i, e), e && (i.super_ = e), n)) n.hasOwnProperty(r) && (i.prototype[r] = n[r]); return i; }), (da.mergeOptions = Re), (da.bind = ve), (da.registerPlugin = ua.registerPlugin), (da.deregisterPlugin = ua.deregisterPlugin), (da.plugin = function (e, t) { return ( p.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead'), ua.registerPlugin(e, t) ); }), (da.getPlugins = ua.getPlugins), (da.getPlugin = ua.getPlugin), (da.getPluginVersion = ua.getPluginVersion), (da.addLanguage = function (e, t) { var i; return ( (e = ('' + e).toLowerCase()), (da.options.languages = Re(da.options.languages, (((i = {})[e] = t), i))), da.options.languages[e] ); }), (da.log = p), (da.createLogger = f), (da.createTimeRange = da.createTimeRanges = gt), (da.formatTime = kn), (da.setFormatTime = function (e) { Sn = e; }), (da.resetFormatTime = function () { Sn = Tn; }), (da.parseUrl = Bt), (da.isCrossOrigin = qt), (da.EventTarget = _e), (da.on = he), (da.one = me), (da.off = pe), (da.trigger = fe), (da.xhr = ni), (da.TextTrack = ci), (da.AudioTrack = di), (da.VideoTrack = hi), [ 'isEl', 'isTextNode', 'createEl', 'hasClass', 'addClass', 'removeClass', 'toggleClass', 'setAttributes', 'getAttributes', 'emptyEl', 'appendContent', 'insertContent' ].forEach(function (e) { da[e] = function () { return ( p.warn('videojs.' + e + '() is deprecated; use videojs.dom.' + e + '() instead'), Y[e].apply(null, arguments) ); }; }), (da.computedStyle = u), (da.dom = Y), (da.url = Zt), (da.defineLazyProperty = Br); var ma = fa( i(function (e, t) { var i, c, n, r, d; (i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/), (c = /^([^\/?#]*)(.*)$/), (n = /(?:\/|^)\.(?=\/)/g), (r = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g), (d = { buildAbsoluteURL: function (e, t, i) { if (((i = i || {}), (e = e.trim()), !(t = t.trim()))) { if (!i.alwaysNormalize) return e; var n = d.parseURL(e); if (!n) throw new Error('Error trying to parse base URL.'); return (n.path = d.normalizePath(n.path)), d.buildURLFromParts(n); } var r = d.parseURL(t); if (!r) throw new Error('Error trying to parse relative URL.'); if (r.scheme) return i.alwaysNormalize ? ((r.path = d.normalizePath(r.path)), d.buildURLFromParts(r)) : t; var a = d.parseURL(e); if (!a) throw new Error('Error trying to parse base URL.'); if (!a.netLoc && a.path && '/' !== a.path[0]) { var s = c.exec(a.path); (a.netLoc = s[1]), (a.path = s[2]); } a.netLoc && !a.path && (a.path = '/'); var o = { scheme: a.scheme, netLoc: r.netLoc, path: null, params: r.params, query: r.query, fragment: r.fragment }; if (!r.netLoc && ((o.netLoc = a.netLoc), '/' !== r.path[0])) if (r.path) { var u = a.path, l = u.substring(0, u.lastIndexOf('/') + 1) + r.path; o.path = d.normalizePath(l); } else (o.path = a.path), r.params || ((o.params = a.params), r.query || (o.query = a.query)); return ( null === o.path && (o.path = i.alwaysNormalize ? d.normalizePath(r.path) : r.path), d.buildURLFromParts(o) ); }, parseURL: function (e) { var t = i.exec(e); return t ? { scheme: t[1] || '', netLoc: t[2] || '', path: t[3] || '', params: t[4] || '', query: t[5] || '', fragment: t[6] || '' } : null; }, normalizePath: function (e) { for ( e = e.split('').reverse().join('').replace(n, ''); e.length !== (e = e.replace(r, '')).length; ); return e.split('').reverse().join(''); }, buildURLFromParts: function (e) { return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment; } }), (e.exports = d); }) ), ga = fa(T), va = function (e, t) { return /^[a-z]+:/i.test(t) ? t : (/\/\//i.test(e) || (e = ma.default.buildAbsoluteURL( (ga.default.location && ga.default.location.href) || '', e )), ma.default.buildAbsoluteURL(e, t)); }, ya = (function () { function e() { this.listeners = {}; } var t = e.prototype; return ( (t.on = function (e, t) { this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t); }), (t.off = function (e, t) { if (!this.listeners[e]) return !1; var i = this.listeners[e].indexOf(t); return ( (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(i, 1), -1 < i ); }), (t.trigger = function (e, t) { var i = this.listeners[e]; if (i) if (2 === arguments.length) for (var n = i.length, r = 0; r < n; ++r) i[r].call(this, t); else for ( var a = Array.prototype.slice.call(arguments, 1), s = i.length, o = 0; o < s; ++o ) i[o].apply(this, a); }), (t.dispose = function () { this.listeners = {}; }), (t.pipe = function (t) { this.on('data', function (e) { t.push(e); }); }), e ); })(); function _a(e) { return e && 'object' == typeof e && 'default' in e ? e : { default: e }; } var ba = _a(T); function Ta(e) { for ( var t, i = e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')), n = {}, r = i.length; r--; ) '' !== i[r] && (((t = /([^=]*)=(.*)/.exec(i[r]).slice(1))[0] = t[0].replace(/^\s+|\s+$/g, '')), (t[1] = t[1].replace(/^\s+|\s+$/g, '')), (t[1] = t[1].replace(/^['"](.*)['"]$/g, '$1')), (n[t[0]] = t[1])); return n; } var Sa = function (e) { for ( var t = (function (e) { return ba.default.atob ? ba.default.atob(e) : Buffer.from(e, 'base64').toString('binary'); })(e), i = new Uint8Array(t.length), n = 0; n < t.length; n++ ) i[n] = t.charCodeAt(n); return i; }, ka = (function (t) { function e() { var e; return ((e = t.call(this) || this).buffer = ''), e; } return ( Ge(e, t), (e.prototype.push = function (e) { var t; for ( this.buffer += e, t = this.buffer.indexOf('\n'); -1 < t; t = this.buffer.indexOf('\n') ) this.trigger('data', this.buffer.substring(0, t)), (this.buffer = this.buffer.substring(t + 1)); }), e ); })(ya), Ca = (function (t) { function e() { var e; return ((e = t.call(this) || this).customParsers = []), (e.tagMappers = []), e; } Ge(e, t); var i = e.prototype; return ( (i.push = function (n) { var u, l, c = this; 0 !== (n = n.trim()).length && ('#' === n[0] ? this.tagMappers .reduce( function (e, t) { var i = t(n); return i === n ? e : e.concat([i]); }, [n] ) .forEach(function (e) { for (var t = 0; t < c.customParsers.length; t++) if (c.customParsers[t].call(c, e)) return; if (0 === e.indexOf('#EXT')) if (((e = e.replace('\r', '')), (u = /^#EXTM3U/.exec(e)))) c.trigger('data', { type: 'tag', tagType: 'm3u' }); else { if ((u = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(e))) return ( (l = { type: 'tag', tagType: 'inf' }), u[1] && (l.duration = parseFloat(u[1])), u[2] && (l.title = u[2]), void c.trigger('data', l) ); if ((u = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'targetduration' }), u[1] && (l.duration = parseInt(u[1], 10)), void c.trigger('data', l) ); if ((u = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'totalduration' }), u[1] && (l.duration = parseInt(u[1], 10)), void c.trigger('data', l) ); if ((u = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'version' }), u[1] && (l.version = parseInt(u[1], 10)), void c.trigger('data', l) ); if ((u = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'media-sequence' }), u[1] && (l.number = parseInt(u[1], 10)), void c.trigger('data', l) ); if ((u = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'discontinuity-sequence' }), u[1] && (l.number = parseInt(u[1], 10)), void c.trigger('data', l) ); if ((u = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(e))) return ( (l = { type: 'tag', tagType: 'playlist-type' }), u[1] && (l.playlistType = u[1]), void c.trigger('data', l) ); if ((u = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'byterange' }), u[1] && (l.length = parseInt(u[1], 10)), u[2] && (l.offset = parseInt(u[2], 10)), void c.trigger('data', l) ); if ((u = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(e))) return ( (l = { type: 'tag', tagType: 'allow-cache' }), u[1] && (l.allowed = !/NO/.test(u[1])), void c.trigger('data', l) ); if ((u = /^#EXT-X-MAP:?(.*)$/.exec(e))) { if (((l = { type: 'tag', tagType: 'map' }), u[1])) { var i = Ta(u[1]); if ((i.URI && (l.uri = i.URI), i.BYTERANGE)) { var n = i.BYTERANGE.split('@'), r = n[0], a = n[1]; (l.byterange = {}), r && (l.byterange.length = parseInt(r, 10)), a && (l.byterange.offset = parseInt(a, 10)); } } c.trigger('data', l); } else if ((u = /^#EXT-X-STREAM-INF:?(.*)$/.exec(e))) { if (((l = { type: 'tag', tagType: 'stream-inf' }), u[1])) { if (((l.attributes = Ta(u[1])), l.attributes.RESOLUTION)) { var s = l.attributes.RESOLUTION.split('x'), o = {}; s[0] && (o.width = parseInt(s[0], 10)), s[1] && (o.height = parseInt(s[1], 10)), (l.attributes.RESOLUTION = o); } l.attributes.BANDWIDTH && (l.attributes.BANDWIDTH = parseInt(l.attributes.BANDWIDTH, 10)), l.attributes['PROGRAM-ID'] && (l.attributes['PROGRAM-ID'] = parseInt( l.attributes['PROGRAM-ID'], 10 )); } c.trigger('data', l); } else { if ((u = /^#EXT-X-MEDIA:?(.*)$/.exec(e))) return ( (l = { type: 'tag', tagType: 'media' }), u[1] && (l.attributes = Ta(u[1])), void c.trigger('data', l) ); if ((u = /^#EXT-X-ENDLIST/.exec(e))) c.trigger('data', { type: 'tag', tagType: 'endlist' }); else if ((u = /^#EXT-X-DISCONTINUITY/.exec(e))) c.trigger('data', { type: 'tag', tagType: 'discontinuity' }); else { if ((u = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(e))) return ( (l = { type: 'tag', tagType: 'program-date-time' }), u[1] && ((l.dateTimeString = u[1]), (l.dateTimeObject = new Date(u[1]))), void c.trigger('data', l) ); if ((u = /^#EXT-X-KEY:?(.*)$/.exec(e))) return ( (l = { type: 'tag', tagType: 'key' }), u[1] && ((l.attributes = Ta(u[1])), l.attributes.IV && ('0x' === l.attributes.IV.substring(0, 2).toLowerCase() && (l.attributes.IV = l.attributes.IV.substring(2)), (l.attributes.IV = l.attributes.IV.match(/.{8}/g)), (l.attributes.IV[0] = parseInt(l.attributes.IV[0], 16)), (l.attributes.IV[1] = parseInt(l.attributes.IV[1], 16)), (l.attributes.IV[2] = parseInt(l.attributes.IV[2], 16)), (l.attributes.IV[3] = parseInt(l.attributes.IV[3], 16)), (l.attributes.IV = new Uint32Array(l.attributes.IV)))), void c.trigger('data', l) ); if ((u = /^#EXT-X-START:?(.*)$/.exec(e))) return ( (l = { type: 'tag', tagType: 'start' }), u[1] && ((l.attributes = Ta(u[1])), (l.attributes['TIME-OFFSET'] = parseFloat( l.attributes['TIME-OFFSET'] )), (l.attributes.PRECISE = /YES/.test(l.attributes.PRECISE))), void c.trigger('data', l) ); if ((u = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(e))) return ( (l = { type: 'tag', tagType: 'cue-out-cont' }), u[1] ? (l.data = u[1]) : (l.data = ''), void c.trigger('data', l) ); if ((u = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(e))) return ( (l = { type: 'tag', tagType: 'cue-out' }), u[1] ? (l.data = u[1]) : (l.data = ''), void c.trigger('data', l) ); if ((u = /^#EXT-X-CUE-IN:?(.*)?$/.exec(e))) return ( (l = { type: 'tag', tagType: 'cue-in' }), u[1] ? (l.data = u[1]) : (l.data = ''), void c.trigger('data', l) ); c.trigger('data', { type: 'tag', data: e.slice(4) }); } } } else c.trigger('data', { type: 'comment', text: e.slice(1) }); }) : this.trigger('data', { type: 'uri', uri: n })); }), (i.addParser = function (e) { var t = this, i = e.expression, n = e.customType, r = e.dataParser, a = e.segment; 'function' != typeof r && (r = function (e) { return e; }), this.customParsers.push(function (e) { if (i.exec(e)) return ( t.trigger('data', { type: 'custom', data: r(e), customType: n, segment: a }), !0 ); }); }), (i.addTagMapper = function (e) { var t = e.expression, i = e.map; this.tagMappers.push(function (e) { return t.test(e) ? i(e) : e; }); }), e ); })(ya), Ea = (function (t) { function e() { var e; ((e = t.call(this) || this).lineStream = new ka()), (e.parseStream = new Ca()), e.lineStream.pipe(e.parseStream); var r, a, s = Ve(e), o = [], u = {}, l = { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} }, c = 0; e.manifest = { allowCache: !0, discontinuityStarts: [], segments: [] }; var d = 0; return ( e.parseStream.on('data', function (t) { var i, n; ({ tag: function () { ( ({ 'allow-cache': function () { (this.manifest.allowCache = t.allowed), 'allowed' in t || (this.trigger('info', { message: 'defaulting allowCache to YES' }), (this.manifest.allowCache = !0)); }, byterange: function () { var e = {}; 'length' in t && (((u.byterange = e).length = t.length), 'offset' in t || (t.offset = d)), 'offset' in t && ((u.byterange = e).offset = t.offset), (d = e.offset + e.length); }, endlist: function () { this.manifest.endList = !0; }, inf: function () { 'mediaSequence' in this.manifest || ((this.manifest.mediaSequence = 0), this.trigger('info', { message: 'defaulting media sequence to zero' })), 'discontinuitySequence' in this.manifest || ((this.manifest.discontinuitySequence = 0), this.trigger('info', { message: 'defaulting discontinuity sequence to zero' })), 0 < t.duration && (u.duration = t.duration), 0 === t.duration && ((u.duration = 0.01), this.trigger('info', { message: 'updating zero segment duration to a small value' })), (this.manifest.segments = o); }, key: function () { if (t.attributes) if ('NONE' !== t.attributes.METHOD) if (t.attributes.URI) { if ( 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed' === t.attributes.KEYFORMAT ) { return -1 === ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'].indexOf( t.attributes.METHOD ) ? void this.trigger('warn', { message: 'invalid key method provided for Widevine' }) : ('SAMPLE-AES-CENC' === t.attributes.METHOD && this.trigger('warn', { message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead' }), 'data:text/plain;base64,' !== t.attributes.URI.substring(0, 23) ? void this.trigger('warn', { message: 'invalid key URI provided for Widevine' }) : t.attributes.KEYID && '0x' === t.attributes.KEYID.substring(0, 2) ? void (this.manifest.contentProtection = { 'com.widevine.alpha': { attributes: { schemeIdUri: t.attributes.KEYFORMAT, keyId: t.attributes.KEYID.substring(2) }, pssh: Sa(t.attributes.URI.split(',')[1]) } }) : void this.trigger('warn', { message: 'invalid key ID provided for Widevine' })); } t.attributes.METHOD || this.trigger('warn', { message: 'defaulting key method to AES-128' }), (a = { method: t.attributes.METHOD || 'AES-128', uri: t.attributes.URI }), 'undefined' != typeof t.attributes.IV && (a.iv = t.attributes.IV); } else this.trigger('warn', { message: 'ignoring key declaration without URI' }); else a = null; else this.trigger('warn', { message: 'ignoring key declaration without attribute list' }); }, 'media-sequence': function () { isFinite(t.number) ? (this.manifest.mediaSequence = t.number) : this.trigger('warn', { message: 'ignoring invalid media sequence: ' + t.number }); }, 'discontinuity-sequence': function () { isFinite(t.number) ? ((this.manifest.discontinuitySequence = t.number), (c = t.number)) : this.trigger('warn', { message: 'ignoring invalid discontinuity sequence: ' + t.number }); }, 'playlist-type': function () { /VOD|EVENT/.test(t.playlistType) ? (this.manifest.playlistType = t.playlistType) : this.trigger('warn', { message: 'ignoring unknown playlist type: ' + t.playlist }); }, map: function () { (r = {}), t.uri && (r.uri = t.uri), t.byterange && (r.byterange = t.byterange); }, 'stream-inf': function () { (this.manifest.playlists = o), (this.manifest.mediaGroups = this.manifest.mediaGroups || l), t.attributes ? (u.attributes || (u.attributes = {}), m(u.attributes, t.attributes)) : this.trigger('warn', { message: 'ignoring empty stream-inf attributes' }); }, media: function () { if ( ((this.manifest.mediaGroups = this.manifest.mediaGroups || l), t.attributes && t.attributes.TYPE && t.attributes['GROUP-ID'] && t.attributes.NAME) ) { var e = this.manifest.mediaGroups[t.attributes.TYPE]; (e[t.attributes['GROUP-ID']] = e[t.attributes['GROUP-ID']] || {}), (i = e[t.attributes['GROUP-ID']]), (n = { default: /yes/i.test(t.attributes.DEFAULT) }).default ? (n.autoselect = !0) : (n.autoselect = /yes/i.test(t.attributes.AUTOSELECT)), t.attributes.LANGUAGE && (n.language = t.attributes.LANGUAGE), t.attributes.URI && (n.uri = t.attributes.URI), t.attributes['INSTREAM-ID'] && (n.instreamId = t.attributes['INSTREAM-ID']), t.attributes.CHARACTERISTICS && (n.characteristics = t.attributes.CHARACTERISTICS), t.attributes.FORCED && (n.forced = /yes/i.test(t.attributes.FORCED)), (i[t.attributes.NAME] = n); } else this.trigger('warn', { message: 'ignoring incomplete or missing media group' }); }, discontinuity: function () { (c += 1), (u.discontinuity = !0), this.manifest.discontinuityStarts.push(o.length); }, 'program-date-time': function () { 'undefined' == typeof this.manifest.dateTimeString && ((this.manifest.dateTimeString = t.dateTimeString), (this.manifest.dateTimeObject = t.dateTimeObject)), (u.dateTimeString = t.dateTimeString), (u.dateTimeObject = t.dateTimeObject); }, targetduration: function () { !isFinite(t.duration) || t.duration < 0 ? this.trigger('warn', { message: 'ignoring invalid target duration: ' + t.duration }) : (this.manifest.targetDuration = t.duration); }, totalduration: function () { !isFinite(t.duration) || t.duration < 0 ? this.trigger('warn', { message: 'ignoring invalid total duration: ' + t.duration }) : (this.manifest.totalDuration = t.duration); }, start: function () { t.attributes && !isNaN(t.attributes['TIME-OFFSET']) ? (this.manifest.start = { timeOffset: t.attributes['TIME-OFFSET'], precise: t.attributes.PRECISE }) : this.trigger('warn', { message: 'ignoring start declaration without appropriate attribute list' }); }, 'cue-out': function () { u.cueOut = t.data; }, 'cue-out-cont': function () { u.cueOutCont = t.data; }, 'cue-in': function () { u.cueIn = t.data; } })[t.tagType] || function () {} ).call(s); }, uri: function () { (u.uri = t.uri), o.push(u), !this.manifest.targetDuration || 'duration' in u || (this.trigger('warn', { message: 'defaulting segment duration to the target duration' }), (u.duration = this.manifest.targetDuration)), a && (u.key = a), (u.timeline = c), r && (u.map = r), (u = {}); }, comment: function () {}, custom: function () { t.segment ? ((u.custom = u.custom || {}), (u.custom[t.customType] = t.data)) : ((this.manifest.custom = this.manifest.custom || {}), (this.manifest.custom[t.customType] = t.data)); } })[t.type].call(s); }), e ); } Ge(e, t); var i = e.prototype; return ( (i.push = function (e) { this.lineStream.push(e); }), (i.end = function () { this.lineStream.push('\n'); }), (i.addParser = function (e) { this.parseStream.addParser(e); }), (i.addTagMapper = function (e) { this.parseStream.addTagMapper(e); }), e ); })(ya), wa = i(function (e, t) { Object.defineProperty(t, '__esModule', { value: !0 }); var i = /^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i, n = /^application\/dash\+xml/i; t.simpleTypeFromSourceType = function (e) { return i.test(e) ? 'hls' : n.test(e) ? 'dash' : 'application/vnd.videojs.vhs+json' === e ? 'vhs-json' : null; }; }); /*! @name m3u8-parser @version 4.5.0 @license Apache-2.0 */ t(wa); var Ia = wa.simpleTypeFromSourceType, Aa = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/, xa = new RegExp( '[\\-\\.0-9' + Aa.source.slice(1, -1) + '\\u00B7\\u0300-\\u036F\\u203F-\\u2040]' ), Pa = new RegExp('^' + Aa.source + xa.source + '*(?::' + Aa.source + xa.source + '*)?$'), La = 0, Oa = 1, Da = 2, Ma = 3, Ra = 4, Na = 5, Ua = 6, Fa = 7; function Ba() {} function ja(e, t) { return (t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber), t; } function Va(e, t, i, n, r, a) { for (var s, o = ++t, u = La; ; ) { var l = e.charAt(o); switch (l) { case '=': if (u === Oa) (s = e.slice(t, o)), (u = Ma); else { if (u !== Da) throw new Error('attribute equal must after attrName'); u = Ma; } break; case "'": case '"': if (u === Ma || u === Oa) { if ( (u === Oa && (a.warning('attribute value must after "="'), (s = e.slice(t, o))), (t = o + 1), !(0 < (o = e.indexOf(l, t)))) ) throw new Error("attribute value no end '" + l + "' match"); (c = e.slice(t, o).replace(/&#?\w+;/g, r)), i.add(s, c, t - 1), (u = Na); } else { if (u != Ra) throw new Error('attribute value must after "="'); (c = e.slice(t, o).replace(/&#?\w+;/g, r)), i.add(s, c, t), a.warning('attribute "' + s + '" missed start quot(' + l + ')!!'), (t = o + 1), (u = Na); } break; case '/': switch (u) { case La: i.setTagName(e.slice(t, o)); case Na: case Ua: case Fa: (u = Fa), (i.closed = !0); case Ra: case Oa: case Da: break; default: throw new Error("attribute invalid close char('/')"); } break; case '': return a.error('unexpected end of input'), u == La && i.setTagName(e.slice(t, o)), o; case '>': switch (u) { case La: i.setTagName(e.slice(t, o)); case Na: case Ua: case Fa: break; case Ra: case Oa: '/' === (c = e.slice(t, o)).slice(-1) && ((i.closed = !0), (c = c.slice(0, -1))); case Da: u === Da && (c = s), u == Ra ? (a.warning('attribute "' + c + '" missed quot(")!!'), i.add(s, c.replace(/&#?\w+;/g, r), t)) : (('http://www.w3.org/1999/xhtml' === n[''] && c.match(/^(?:disabled|checked|selected)$/i)) || a.warning('attribute "' + c + '" missed value!! "' + c + '" instead!!'), i.add(c, c, t)); break; case Ma: throw new Error('attribute value missed!!'); } return o; case '€': l = ' '; default: if (l <= ' ') switch (u) { case La: i.setTagName(e.slice(t, o)), (u = Ua); break; case Oa: (s = e.slice(t, o)), (u = Da); break; case Ra: var c = e.slice(t, o).replace(/&#?\w+;/g, r); a.warning('attribute "' + c + '" missed quot(")!!'), i.add(s, c, t); case Na: u = Ua; } else switch (u) { case Da: i.tagName; ('http://www.w3.org/1999/xhtml' === n[''] && s.match(/^(?:disabled|checked|selected)$/i)) || a.warning('attribute "' + s + '" missed value!! "' + s + '" instead2!!'), i.add(s, s, t), (t = o), (u = Oa); break; case Na: a.warning('attribute space is required"' + s + '"!!'); case Ua: (u = Oa), (t = o); break; case Ma: (u = Ra), (t = o); break; case Fa: throw new Error("elements closed character '/' and '>' must be connected to"); } } o++; } } function qa(e, t, i) { for (var n = e.tagName, r = null, a = e.length; a--; ) { var s = e[a], o = s.qName, u = s.value; if (0 < (h = o.indexOf(':'))) var l = (s.prefix = o.slice(0, h)), c = o.slice(h + 1), d = 'xmlns' === l && c; else (l = null), (d = 'xmlns' === (c = o) && ''); (s.localName = c), !1 !== d && (null == r && ((r = {}), za(i, (i = {}))), (i[d] = r[d] = u), (s.uri = 'http://www.w3.org/2000/xmlns/'), t.startPrefixMapping(d, u)); } for (a = e.length; a--; ) { (l = (s = e[a]).prefix) && ('xml' === l && (s.uri = 'http://www.w3.org/XML/1998/namespace'), 'xmlns' !== l && (s.uri = i[l || ''])); } var h; c = 0 < (h = n.indexOf(':')) ? ((l = e.prefix = n.slice(0, h)), (e.localName = n.slice(h + 1))) : ((l = null), (e.localName = n)); var p = (e.uri = i[l || '']); if ((t.startElement(p, c, n, e), !e.closed)) return (e.currentNSMap = i), (e.localNSMap = r), !0; if ((t.endElement(p, c, n), r)) for (l in r) t.endPrefixMapping(l); } function Ha(e, t, i, n, r) { if (/^(?:script|textarea)$/i.test(i)) { var a = e.indexOf('', t), s = e.substring(t + 1, a); if (/[&<]/.test(s)) return ( /^script$/i.test(i) || (s = s.replace(/&#?\w+;/g, n)), r.characters(s, 0, s.length), a ); } return t + 1; } function Wa(e, t, i, n) { var r = n[i]; return ( null == r && ((r = e.lastIndexOf('')) < t && (r = e.lastIndexOf('', t + 9); return i.startCDATA(), i.characters(e, t + 9, r - t - 9), i.endCDATA(), r + 3; } var a = (function (e, t) { var i, n = [], r = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g; (r.lastIndex = t), r.exec(e); for (; (i = r.exec(e)); ) if ((n.push(i), i[1])) return n; })(e, t), s = a.length; if (1 < s && /!doctype/i.test(a[0][0])) { var o = a[1][0], u = 3 < s && /^public$/i.test(a[2][0]) && a[3][0], l = 4 < s && a[4][0], c = a[s - 1]; return ( i.startDTD( o, u && u.replace(/^(['"])(.*?)\1$/, '$2'), l && l.replace(/^(['"])(.*?)\1$/, '$2') ), i.endDTD(), c.index + c[0].length ); } } return -1; } function Xa(e, t, i) { var n = e.indexOf('?>', t); if (n) { var r = e.substring(t, n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/); if (r) { r[0].length; return i.processingInstruction(r[1], r[2]), n + 2; } return -1; } return -1; } function Ka(e) {} function Ya(e, t) { return (e.__proto__ = t), e; } (Ba.prototype = { parse: function (e, t, i) { var n = this.domBuilder; n.startDocument(), za(t, (t = {})), (function (i, e, n, r, a) { function s(e) { var t = e.slice(1, -1); return t in n ? n[t] : '#' === t.charAt(0) ? (function (e) { if (65535 < e) { var t = 55296 + ((e -= 65536) >> 10), i = 56320 + (1023 & e); return String.fromCharCode(t, i); } return String.fromCharCode(e); })(parseInt(t.substr(1).replace('x', '0x'))) : (a.error('entity not found:' + e), e); } function t(e) { if (f < e) { var t = i.substring(f, e).replace(/&#?\w+;/g, s); d && o(f), r.characters(t, 0, e - f), (f = e); } } function o(e, t) { for (; l <= e && (t = c.exec(i)); ) (u = t.index), (l = u + t[0].length), d.lineNumber++; d.columnNumber = e - u + 1; } var u = 0, l = 0, c = /.*(?:\r\n?|\n)|.*$/g, d = r.locator, h = [{ currentNSMap: e }], p = {}, f = 0; for (;;) { try { var m = i.indexOf('<', f); if (m < 0) { if (!i.substr(f).match(/^\s*$/)) { var g = r.doc, v = g.createTextNode(i.substr(f)); g.appendChild(v), (r.currentElement = v); } return; } switch ((f < m && t(m), i.charAt(m + 1))) { case '/': var y = i.indexOf('>', m + 3), _ = i.substring(m + 2, y), b = h.pop(); y < 0 ? ((_ = i.substring(m + 2).replace(/[\s<].*/, '')), a.error('end tag name: ' + _ + ' is not complete:' + b.tagName), (y = m + 1 + _.length)) : _.match(/\s' == e && '>') || ('&' == e && '&') || ('"' == e && '"') || '&#' + e.charCodeAt() + ';' ); } function xs(e, t) { if (t(e)) return !0; if ((e = e.firstChild)) do { if (xs(e, t)) return !0; } while ((e = e.nextSibling)); } function Ps() {} function Ls(e, t, i) { e && e._inc++, 'http://www.w3.org/2000/xmlns/' == i.namespaceURI && delete t._nsMap[i.prefix ? i.localName : '']; } function Os(e, t, i) { if (e && e._inc) { e._inc++; var n = t.childNodes; if (i) n[n.length++] = i; else { for (var r = t.firstChild, a = 0; r; ) r = (n[a++] = r).nextSibling; n.length = a; } } } function Ds(e, t) { var i = t.previousSibling, n = t.nextSibling; return ( i ? (i.nextSibling = n) : (e.firstChild = n), n ? (n.previousSibling = i) : (e.lastChild = i), Os(e.ownerDocument, e), t ); } function Ms(e, t, i) { var n = t.parentNode; if ((n && n.removeChild(t), t.nodeType === ds)) { var r = t.firstChild; if (null == r) return t; var a = t.lastChild; } else r = a = t; var s = i ? i.previousSibling : e.lastChild; for ( r.previousSibling = s, a.nextSibling = i, s ? (s.nextSibling = r) : (e.firstChild = r), null == i ? (e.lastChild = a) : (i.previousSibling = a); (r.parentNode = e), r !== a && (r = r.nextSibling); ); return Os(e.ownerDocument || e, e), t.nodeType == ds && (t.firstChild = t.lastChild = null), t; } function Rs() { this._nsMap = {}; } function Ns() {} function Us() {} function Fs() {} function Bs() {} function js() {} function Vs() {} function qs() {} function Hs() {} function Ws() {} function zs() {} function Gs() {} function Xs() {} function Ks(e, t) { var i = [], n = 9 == this.nodeType ? this.documentElement : this, r = n.prefix, a = n.namespaceURI; if (a && null == r && null == (r = n.lookupPrefix(a))) var s = [{ namespace: a, prefix: null }]; return $s(this, i, e, t, s), i.join(''); } function Ys(e, t, i) { var n = e.prefix || '', r = e.namespaceURI; if (!n && !r) return !1; if ( ('xml' === n && 'http://www.w3.org/XML/1998/namespace' === r) || 'http://www.w3.org/2000/xmlns/' == r ) return !1; for (var a = i.length; a--; ) { var s = i[a]; if (s.prefix == n) return s.namespace != r; } return !0; } function $s(e, t, i, n, r) { if (n) { if (!(e = n(e))) return; if ('string' == typeof e) return void t.push(e); } switch (e.nodeType) { case ts: r = r || []; var a = e.attributes, s = a.length, o = e.firstChild, u = e.tagName; (i = Za === e.namespaceURI || i), t.push('<', u); for (var l = 0; l < s; l++) { 'xmlns' == (c = a.item(l)).prefix ? r.push({ prefix: c.localName, namespace: c.value }) : 'xmlns' == c.nodeName && r.push({ prefix: '', namespace: c.value }); } for (l = 0; l < s; l++) { var c; if (Ys((c = a.item(l)), 0, r)) { var d = c.prefix || '', h = c.namespaceURI, p = d ? ' xmlns:' + d : ' xmlns'; t.push(p, '="', h, '"'), r.push({ prefix: d, namespace: h }); } $s(c, t, i, n, r); } if (Ys(e, 0, r)) { (d = e.prefix || ''), (h = e.namespaceURI), (p = d ? ' xmlns:' + d : ' xmlns'); t.push(p, '="', h, '"'), r.push({ prefix: d, namespace: h }); } if (o || (i && !/^(?:meta|link|img|br|hr|input)$/i.test(u))) { if ((t.push('>'), i && /^script$/i.test(u))) for (; o; ) o.data ? t.push(o.data) : $s(o, t, i, n, r), (o = o.nextSibling); else for (; o; ) $s(o, t, i, n, r), (o = o.nextSibling); t.push(''); } else t.push('/>'); return; case ls: case ds: for (o = e.firstChild; o; ) $s(o, t, i, n, r), (o = o.nextSibling); return; case is: return t.push(' ', e.name, '="', e.value.replace(/[<&"]/g, As), '"'); case ns: return t.push(e.data.replace(/[<&]/g, As)); case rs: return t.push(''); case us: return t.push('\x3c!--', e.data, '--\x3e'); case cs: var f = e.publicId, m = e.systemId; if ((t.push(''); else if (m && '.' != m) t.push(' SYSTEM "', m, '">'); else { var g = e.internalSubset; g && t.push(' [', g, ']'), t.push('>'); } return; case os: return t.push(''); case as: return t.push('&', e.nodeName, ';'); default: t.push('??', e.nodeName); } } function Qs(e, t, i) { e[t] = i; } (ys.prototype = Error.prototype), Qa(ps, ys), (_s.prototype = { length: 0, item: function (e) { return this[e] || null; }, toString: function (e, t) { for (var i = [], n = 0; n < this.length; n++) $s(this[n], i, e, t); return i.join(''); } }), (bs.prototype.item = function (e) { return Ts(this), this[e]; }), Ja(bs, _s), (Ss.prototype = { length: 0, item: _s.prototype.item, getNamedItem: function (e) { for (var t = this.length; t--; ) { var i = this[t]; if (i.nodeName == e) return i; } }, setNamedItem: function (e) { var t = e.ownerElement; if (t && t != this._ownerElement) throw new ys(vs); var i = this.getNamedItem(e.nodeName); return Cs(this._ownerElement, this, e, i), i; }, setNamedItemNS: function (e) { var t, i = e.ownerElement; if (i && i != this._ownerElement) throw new ys(vs); return ( (t = this.getNamedItemNS(e.namespaceURI, e.localName)), Cs(this._ownerElement, this, e, t), t ); }, removeNamedItem: function (e) { var t = this.getNamedItem(e); return Es(this._ownerElement, this, t), t; }, removeNamedItemNS: function (e, t) { var i = this.getNamedItemNS(e, t); return Es(this._ownerElement, this, i), i; }, getNamedItemNS: function (e, t) { for (var i = this.length; i--; ) { var n = this[i]; if (n.localName == t && n.namespaceURI == e) return n; } return null; } }), (ws.prototype = { hasFeature: function (e, t) { var i = this._features[e.toLowerCase()]; return !(!i || (t && !(t in i))); }, createDocument: function (e, t, i) { var n = new Ps(); if ( ((n.implementation = this), (n.childNodes = new _s()), (n.doctype = i) && n.appendChild(i), t) ) { var r = n.createElementNS(e, t); n.appendChild(r); } return n; }, createDocumentType: function (e, t, i) { var n = new Vs(); return (n.name = e), (n.nodeName = e), (n.publicId = t), (n.systemId = i), n; } }), (Is.prototype = { firstChild: null, lastChild: null, previousSibling: null, nextSibling: null, attributes: null, parentNode: null, childNodes: null, ownerDocument: null, nodeValue: null, namespaceURI: null, prefix: null, localName: null, insertBefore: function (e, t) { return Ms(this, e, t); }, replaceChild: function (e, t) { this.insertBefore(e, t), t && this.removeChild(t); }, removeChild: function (e) { return Ds(this, e); }, appendChild: function (e) { return this.insertBefore(e, null); }, hasChildNodes: function () { return null != this.firstChild; }, cloneNode: function (e) { return (function e(t, i, n) { var r = new i.constructor(); for (var a in i) { var s = i[a]; 'object' != typeof s && s != r[a] && (r[a] = s); } i.childNodes && (r.childNodes = new _s()); r.ownerDocument = t; switch (r.nodeType) { case ts: var o = i.attributes, u = (r.attributes = new Ss()), l = o.length; u._ownerElement = r; for (var c = 0; c < l; c++) r.setAttributeNode(e(t, o.item(c), !0)); break; case is: n = !0; } if (n) for (var d = i.firstChild; d; ) r.appendChild(e(t, d, n)), (d = d.nextSibling); return r; })(this.ownerDocument || this, this, e); }, normalize: function () { for (var e = this.firstChild; e; ) { var t = e.nextSibling; t && t.nodeType == ns && e.nodeType == ns ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), (e = t)); } }, isSupported: function (e, t) { return this.ownerDocument.implementation.hasFeature(e, t); }, hasAttributes: function () { return 0 < this.attributes.length; }, lookupPrefix: function (e) { for (var t = this; t; ) { var i = t._nsMap; if (i) for (var n in i) if (i[n] == e) return n; t = t.nodeType == is ? t.ownerDocument : t.parentNode; } return null; }, lookupNamespaceURI: function (e) { for (var t = this; t; ) { var i = t._nsMap; if (i && e in i) return i[e]; t = t.nodeType == is ? t.ownerDocument : t.parentNode; } return null; }, isDefaultNamespace: function (e) { return null == this.lookupPrefix(e); } }), Qa(es, Is), Qa(es, Is.prototype), (Ps.prototype = { nodeName: '#document', nodeType: ls, doctype: null, documentElement: null, _inc: 1, insertBefore: function (e, t) { if (e.nodeType != ds) return ( null == this.documentElement && e.nodeType == ts && (this.documentElement = e), Ms(this, e, t), (e.ownerDocument = this), e ); for (var i = e.firstChild; i; ) { var n = i.nextSibling; this.insertBefore(i, t), (i = n); } return e; }, removeChild: function (e) { return this.documentElement == e && (this.documentElement = null), Ds(this, e); }, importNode: function (e, t) { return (function e(t, i, n) { var r; switch (i.nodeType) { case ts: (r = i.cloneNode(!1)).ownerDocument = t; case ds: break; case is: n = !0; } r = r || i.cloneNode(!1); r.ownerDocument = t; r.parentNode = null; if (n) for (var a = i.firstChild; a; ) r.appendChild(e(t, a, n)), (a = a.nextSibling); return r; })(this, e, t); }, getElementById: function (t) { var i = null; return ( xs(this.documentElement, function (e) { if (e.nodeType == ts && e.getAttribute('id') == t) return (i = e), !0; }), i ); }, createElement: function (e) { var t = new Rs(); return ( (t.ownerDocument = this), (t.nodeName = e), (t.tagName = e), (t.childNodes = new _s()), ((t.attributes = new Ss())._ownerElement = t) ); }, createDocumentFragment: function () { var e = new zs(); return (e.ownerDocument = this), (e.childNodes = new _s()), e; }, createTextNode: function (e) { var t = new Fs(); return (t.ownerDocument = this), t.appendData(e), t; }, createComment: function (e) { var t = new Bs(); return (t.ownerDocument = this), t.appendData(e), t; }, createCDATASection: function (e) { var t = new js(); return (t.ownerDocument = this), t.appendData(e), t; }, createProcessingInstruction: function (e, t) { var i = new Gs(); return (i.ownerDocument = this), (i.tagName = i.target = e), (i.nodeValue = i.data = t), i; }, createAttribute: function (e) { var t = new Ns(); return ( (t.ownerDocument = this), (t.name = e), (t.nodeName = e), (t.localName = e), (t.specified = !0), t ); }, createEntityReference: function (e) { var t = new Ws(); return (t.ownerDocument = this), (t.nodeName = e), t; }, createElementNS: function (e, t) { var i = new Rs(), n = t.split(':'), r = (i.attributes = new Ss()); return ( (i.childNodes = new _s()), (i.ownerDocument = this), (i.nodeName = t), (i.tagName = t), (i.namespaceURI = e), 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t), (r._ownerElement = i) ); }, createAttributeNS: function (e, t) { var i = new Ns(), n = t.split(':'); return ( (i.ownerDocument = this), (i.nodeName = t), (i.name = t), (i.namespaceURI = e), (i.specified = !0), 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t), i ); } }), Ja(Ps, Is), (Ps.prototype.getElementsByTagName = (Rs.prototype = { nodeType: ts, hasAttribute: function (e) { return null != this.getAttributeNode(e); }, getAttribute: function (e) { var t = this.getAttributeNode(e); return (t && t.value) || ''; }, getAttributeNode: function (e) { return this.attributes.getNamedItem(e); }, setAttribute: function (e, t) { var i = this.ownerDocument.createAttribute(e); (i.value = i.nodeValue = '' + t), this.setAttributeNode(i); }, removeAttribute: function (e) { var t = this.getAttributeNode(e); t && this.removeAttributeNode(t); }, appendChild: function (e) { return e.nodeType === ds ? this.insertBefore(e, null) : (function (e, t) { var i = t.parentNode; if (i) { var n = e.lastChild; i.removeChild(t); n = e.lastChild; } return ( (n = e.lastChild), (t.parentNode = e), (t.previousSibling = n), (t.nextSibling = null), n ? (n.nextSibling = t) : (e.firstChild = t), (e.lastChild = t), Os(e.ownerDocument, e, t), t ); })(this, e); }, setAttributeNode: function (e) { return this.attributes.setNamedItem(e); }, setAttributeNodeNS: function (e) { return this.attributes.setNamedItemNS(e); }, removeAttributeNode: function (e) { return this.attributes.removeNamedItem(e.nodeName); }, removeAttributeNS: function (e, t) { var i = this.getAttributeNodeNS(e, t); i && this.removeAttributeNode(i); }, hasAttributeNS: function (e, t) { return null != this.getAttributeNodeNS(e, t); }, getAttributeNS: function (e, t) { var i = this.getAttributeNodeNS(e, t); return (i && i.value) || ''; }, setAttributeNS: function (e, t, i) { var n = this.ownerDocument.createAttributeNS(e, t); (n.value = n.nodeValue = '' + i), this.setAttributeNode(n); }, getAttributeNodeNS: function (e, t) { return this.attributes.getNamedItemNS(e, t); }, getElementsByTagName: function (n) { return new bs(this, function (t) { var i = []; return ( xs(t, function (e) { e === t || e.nodeType != ts || ('*' !== n && e.tagName != n) || i.push(e); }), i ); }); }, getElementsByTagNameNS: function (n, r) { return new bs(this, function (t) { var i = []; return ( xs(t, function (e) { e === t || e.nodeType !== ts || ('*' !== n && e.namespaceURI !== n) || ('*' !== r && e.localName != r) || i.push(e); }), i ); }); } }).getElementsByTagName), (Ps.prototype.getElementsByTagNameNS = Rs.prototype.getElementsByTagNameNS), Ja(Rs, Is), (Ns.prototype.nodeType = is), Ja(Ns, Is), (Us.prototype = { data: '', substringData: function (e, t) { return this.data.substring(e, e + t); }, appendData: function (e) { (e = this.data + e), (this.nodeValue = this.data = e), (this.length = e.length); }, insertData: function (e, t) { this.replaceData(e, 0, t); }, appendChild: function (e) { throw new Error(fs[ms]); }, deleteData: function (e, t) { this.replaceData(e, t, ''); }, replaceData: function (e, t, i) { (i = this.data.substring(0, e) + i + this.data.substring(e + t)), (this.nodeValue = this.data = i), (this.length = i.length); } }), Ja(Us, Is), (Fs.prototype = { nodeName: '#text', nodeType: ns, splitText: function (e) { var t = this.data, i = t.substring(e); (t = t.substring(0, e)), (this.data = this.nodeValue = t), (this.length = t.length); var n = this.ownerDocument.createTextNode(i); return this.parentNode && this.parentNode.insertBefore(n, this.nextSibling), n; } }), Ja(Fs, Us), (Bs.prototype = { nodeName: '#comment', nodeType: us }), Ja(Bs, Us), (js.prototype = { nodeName: '#cdata-section', nodeType: rs }), Ja(js, Us), (Vs.prototype.nodeType = cs), Ja(Vs, Is), (qs.prototype.nodeType = hs), Ja(qs, Is), (Hs.prototype.nodeType = ss), Ja(Hs, Is), (Ws.prototype.nodeType = as), Ja(Ws, Is), (zs.prototype.nodeName = '#document-fragment'), (zs.prototype.nodeType = ds), Ja(zs, Is), (Gs.prototype.nodeType = os), Ja(Gs, Is), (Xs.prototype.serializeToString = function (e, t, i) { return Ks.call(e, t, i); }), (Is.prototype.toString = Ks); try { if (Object.defineProperty) { Object.defineProperty(bs.prototype, 'length', { get: function () { return Ts(this), this.$$length; } }), Object.defineProperty(Is.prototype, 'textContent', { get: function () { return (function e(t) { switch (t.nodeType) { case ts: case ds: var i = []; for (t = t.firstChild; t; ) 7 !== t.nodeType && 8 !== t.nodeType && i.push(e(t)), (t = t.nextSibling); return i.join(''); default: return t.nodeValue; } })(this); }, set: function (e) { switch (this.nodeType) { case ts: case ds: for (; this.firstChild; ) this.removeChild(this.firstChild); (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e)); break; default: (this.data = e), (this.value = e), (this.nodeValue = e); } } }), (Qs = function (e, t, i) { e['$$' + t] = i; }); } } catch (e) {} function Js(e) { return !!e && 'object' == typeof e; } function Zs() { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; return t.reduce(function (t, i) { return ( Object.keys(i).forEach(function (e) { Array.isArray(t[e]) && Array.isArray(i[e]) ? (t[e] = t[e].concat(i[e])) : Js(t[e]) && Js(i[e]) ? (t[e] = Zs(t[e], i[e])) : (t[e] = i[e]); }), t ); }, {}); } function eo(e) { return e.reduce(function (e, t) { return e.concat(t); }, []); } function to(e) { if (!e.length) return []; for (var t = [], i = 0; i < e.length; i++) t.push(e[i]); return t; } function io(e) { var t = e.baseUrl, i = void 0 === t ? '' : t, n = e.source, r = void 0 === n ? '' : n, a = e.range, s = void 0 === a ? '' : a, o = e.indexRange, u = void 0 === o ? '' : o, l = { uri: r, resolvedUri: va(i || '', r) }; if (s || u) { var c = (s || u).split('-'), d = parseInt(c[0], 10), h = parseInt(c[1], 10); l.byterange = { length: h - d + 1, offset: d }; } return l; } function no(e) { var t = e.type, i = void 0 === t ? 'static' : t, n = e.duration, r = e.timescale, a = void 0 === r ? 1 : r, s = e.sourceDuration, o = No[i](e), u = (function (e, t) { for (var i = [], n = e; n < t; n++) i.push(n); return i; })(o.start, o.end).map( (function (o) { return function (e, t) { var i = o.duration, n = o.timescale, r = void 0 === n ? 1 : n, a = o.periodIndex, s = o.startNumber; return { number: (void 0 === s ? 1 : s) + e, duration: i / r, timeline: a, time: t * i }; }; })(e) ); if ('static' === i) { var l = u.length - 1; u[l].duration = s - (n / a) * l; } return u; } function ro(e) { var t = e.baseUrl, i = e.initialization, n = void 0 === i ? {} : i, r = e.sourceDuration, a = e.indexRange, s = void 0 === a ? '' : a, o = e.duration; if (!t) throw new Error(Do); var u = io({ baseUrl: t, source: n.sourceURL, range: n.range }), l = io({ baseUrl: t, source: t, indexRange: s }); if (((l.map = u), o)) { var c = no(e); c.length && ((l.duration = c[0].duration), (l.timeline = c[0].timeline)); } else r && ((l.duration = r), (l.timeline = 0)); return (l.number = 0), [l]; } function ao(e, t, i) { for ( var n = e.sidx.map ? e.sidx.map : null, r = e.sidx.duration, a = e.timeline || 0, s = e.sidx.byterange, o = s.offset + s.length, u = t.timescale, l = t.references.filter(function (e) { return 1 !== e.referenceType; }), c = [], d = o + t.firstOffset, h = 0; h < l.length; h++ ) { var p = t.references[h], f = p.referencedSize, m = p.subsegmentDuration, g = ro({ baseUrl: i, timescale: u, timeline: a, periodIndex: a, duration: m, sourceDuration: r, indexRange: d + '-' + (d + f - 1) })[0]; n && (g.map = n), c.push(g), (d += f); } return (e.segments = c), e; } function so(e) { return (function (t) { return Object.keys(t).map(function (e) { return t[e]; }); })( e.reduce(function (e, t) { var i, n = t.attributes.id + (t.attributes.lang || ''); e[n] ? (t.segments[0] && (t.segments[0].discontinuity = !0), (i = e[n].segments).push.apply(i, t.segments), t.attributes.contentProtection && (e[n].attributes.contentProtection = t.attributes.contentProtection)) : (e[n] = t); return e; }, {}) ).map(function (e) { return ( (e.discontinuityStarts = (function (e, n) { return e.reduce(function (e, t, i) { return t[n] && e.push(i), e; }, []); })(e.segments, 'discontinuity')), e ); }); } function oo(e, t) { if ((void 0 === t && (t = {}), !Object.keys(t).length)) return e; for (var i in e) { var n = e[i]; if (n.sidx) { var r = n.sidx.uri + '-' + ((s = n.sidx.byterange), void 0, (o = s.offset + s.length - 1), s.offset + '-' + o), a = t[r] && t[r].sidx; n.sidx && a && ao(n, a, n.sidx.resolvedUri); } } var s, o; return e; } function uo(e) { var t, i = e.attributes, n = e.segments, r = e.sidx, a = { attributes: ((t = { NAME: i.id, AUDIO: 'audio', SUBTITLES: 'subs', RESOLUTION: { width: i.width, height: i.height }, CODECS: i.codecs, BANDWIDTH: i.bandwidth }), (t['PROGRAM-ID'] = 1), t), uri: '', endList: 'static' === (i.type || 'static'), timeline: i.periodIndex, resolvedUri: '', targetDuration: i.duration, segments: n, mediaSequence: n.length ? n[0].number : 1 }; return i.contentProtection && (a.contentProtection = i.contentProtection), r && (a.sidx = r), a; } function lo(e, t, i) { var n; if ((void 0 === i && (i = {}), !e.length)) return {}; var r = e[0].attributes, a = r.sourceDuration, s = r.type, o = void 0 === s ? 'static' : s, u = r.suggestedPresentationDelay, l = r.minimumUpdatePeriod, c = so( e.filter(function (e) { var t = e.attributes; return 'video/mp4' === t.mimeType || 'video' === t.contentType; }) ).map(uo), d = so( e.filter(function (e) { var t = e.attributes; return 'audio/mp4' === t.mimeType || 'audio' === t.contentType; }) ), h = e.filter(function (e) { var t = e.attributes; return 'text/vtt' === t.mimeType || 'text' === t.contentType; }), p = { allowCache: !0, discontinuityStarts: [], segments: [], endList: !0, mediaGroups: ((n = { AUDIO: {}, VIDEO: {} }), (n['CLOSED-CAPTIONS'] = {}), (n.SUBTITLES = {}), n), uri: '', duration: a, playlists: oo(c, i) }; return ( 0 <= l && (p.minimumUpdatePeriod = 1e3 * l), t && (p.locations = t), 'dynamic' === o && (p.suggestedPresentationDelay = u), d.length && (p.mediaGroups.AUDIO.audio = (function (e, s) { var o; void 0 === s && (s = {}); var t = e.reduce(function (e, t) { var i = (t.attributes.role && t.attributes.role.value) || '', n = t.attributes.lang || '', r = 'main'; if (n) { var a = i ? ' (' + i + ')' : ''; r = t.attributes.lang + a; } return ( (e[r] && e[r].playlists[0].attributes.BANDWIDTH > t.attributes.bandwidth) || ((e[r] = { language: n, autoselect: !0, default: 'main' === i, playlists: oo( [ (function (e) { var t, i = e.attributes, n = e.segments, r = e.sidx, a = { attributes: ((t = { NAME: i.id, BANDWIDTH: i.bandwidth, CODECS: i.codecs }), (t['PROGRAM-ID'] = 1), t), uri: '', endList: 'static' === (i.type || 'static'), timeline: i.periodIndex, resolvedUri: '', targetDuration: i.duration, segments: n, mediaSequence: n.length ? n[0].number : 1 }; return ( i.contentProtection && (a.contentProtection = i.contentProtection), r && (a.sidx = r), a ); })(t) ], s ), uri: '' }), 'undefined' == typeof o && 'main' === i && ((o = t).default = !0)), e ); }, {}); o || (t[Object.keys(t)[0]].default = !0); return t; })(d, i)), h.length && (p.mediaGroups.SUBTITLES.subs = (function (e, n) { return ( void 0 === n && (n = {}), e.reduce(function (e, t) { var i = t.attributes.lang || 'text'; return ( e[i] || (e[i] = { language: i, default: !1, autoselect: !1, playlists: oo( [ (function (e) { var t, i = e.attributes, n = e.segments; 'undefined' == typeof n && ((n = [ { uri: i.baseUrl, timeline: i.periodIndex, resolvedUri: i.baseUrl || '', duration: i.sourceDuration, number: 0 } ]), (i.duration = i.sourceDuration)); var r = (((t = { NAME: i.id, BANDWIDTH: i.bandwidth })['PROGRAM-ID'] = 1), t); return ( i.codecs && (r.CODECS = i.codecs), { attributes: r, uri: '', endList: 'static' === (i.type || 'static'), timeline: i.periodIndex, resolvedUri: i.baseUrl || '', targetDuration: i.duration, segments: n, mediaSequence: n.length ? n[0].number : 1 } ); })(t) ], n ), uri: '' }), e ); }, {}) ); })(h, i)), p ); } function co(e, t) { for ( var i, n, r, a, s, o, u, l, c, d, h, p, f = e.type, m = void 0 === f ? 'static' : f, g = e.minimumUpdatePeriod, v = void 0 === g ? 0 : g, y = e.media, _ = void 0 === y ? '' : y, b = e.sourceDuration, T = e.timescale, S = void 0 === T ? 1 : T, k = e.startNumber, C = void 0 === k ? 1 : k, E = e.periodIndex, w = [], I = -1, A = 0; A < t.length; A++ ) { var x = t[A], P = x.d, L = x.r || 0, O = x.t || 0; I < 0 && (I = O), O && I < O && (I = O); var D = void 0; if (L < 0) { var M = A + 1; D = M === t.length ? 'dynamic' === m && 0 < v && 0 < _.indexOf('$Number$') ? ((n = I), (r = P), void 0, (a = (i = e).NOW), (s = i.clientOffset), (o = i.availabilityStartTime), (u = i.timescale), (l = void 0 === u ? 1 : u), (c = i.start), (d = void 0 === c ? 0 : c), (h = i.minimumUpdatePeriod), (p = (a + s) / 1e3 + (void 0 === h ? 0 : h) - (o + d)), Math.ceil((p * l - n) / r)) : (b * S - I) / P : (t[M].t - I) / P; } else D = L + 1; for (var R = C + w.length + D, N = C + w.length; N < R; ) w.push({ number: N, duration: P / S, time: I, timeline: E }), (I += P), N++; } return w; } function ho(e, t) { return e.replace( Uo, (function (a) { return function (e, t, i, n) { if ('$$' === e) return '$'; if ('undefined' == typeof a[t]) return e; var r = '' + a[t]; return 'RepresentationID' === t ? r : (n = i ? parseInt(n, 10) : 1) <= r.length ? r : new Array(n - r.length + 1).join('0') + r; }; })(t) ); } function po(i, e) { var n = { RepresentationID: i.id, Bandwidth: i.bandwidth || 0 }, t = i.initialization, r = void 0 === t ? { sourceURL: '', range: '' } : t, a = io({ baseUrl: i.baseUrl, source: ho(r.sourceURL, n), range: r.range }); return (function (e, t) { return e.duration || t ? e.duration ? no(e) : co(e, t) : [ { number: e.startNumber || 1, duration: e.sourceDuration, time: 0, timeline: e.periodIndex } ]; })(i, e).map(function (e) { (n.Number = e.number), (n.Time = e.time); var t = ho(i.media || '', n); return { uri: t, timeline: e.timeline, duration: e.duration, resolvedUri: va(i.baseUrl || '', t), map: a, number: e.number }; }); } function fo(t, e) { var i = t.duration, n = t.segmentUrls, r = void 0 === n ? [] : n; if ((!i && !e) || (i && e)) throw new Error(Mo); var a, s = r.map(function (e) { return (function (e, t) { var i = e.baseUrl, n = e.initialization, r = void 0 === n ? {} : n, a = io({ baseUrl: i, source: r.sourceURL, range: r.range }), s = io({ baseUrl: i, source: t.media, range: t.mediaRange }); return (s.map = a), s; })(t, e); }); return ( i && (a = no(t)), e && (a = co(t, e)), a .map(function (e, t) { if (s[t]) { var i = s[t]; return (i.timeline = e.timeline), (i.duration = e.duration), (i.number = e.number), i; } }) .filter(function (e) { return e; }) ); } function mo(e) { var t, i, n = e.attributes, r = e.segmentInfo; r.template ? ((i = po), (t = Zs(n, r.template))) : r.base ? ((i = ro), (t = Zs(n, r.base))) : r.list && ((i = fo), (t = Zs(n, r.list))); var a = { attributes: n }; if (!i) return a; var s = i(t, r.timeline); if (t.duration) { var o = t, u = o.duration, l = o.timescale, c = void 0 === l ? 1 : l; t.duration = u / c; } else s.length ? (t.duration = s.reduce(function (e, t) { return Math.max(e, Math.ceil(t.duration)); }, 0)) : (t.duration = 0); return ( (a.attributes = t), (a.segments = s), r.base && t.indexRange && ((a.sidx = s[0]), (a.segments = [])), a ); } function go(e, t) { return to(e.childNodes).filter(function (e) { return e.tagName === t; }); } function vo(e) { return e.textContent.trim(); } function yo(e) { var t = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e); if (!t) return 0; var i = t.slice(1), n = i[0], r = i[1], a = i[2], s = i[3], o = i[4], u = i[5]; return ( 31536e3 * parseFloat(n || 0) + 2592e3 * parseFloat(r || 0) + 86400 * parseFloat(a || 0) + 3600 * parseFloat(s || 0) + 60 * parseFloat(o || 0) + parseFloat(u || 0) ); } function _o(e) { return e && e.attributes ? to(e.attributes).reduce(function (e, t) { var i = Fo[t.name] || Fo.DEFAULT; return (e[t.name] = i(t.value)), e; }, {}) : {}; } function bo(e, i) { return i.length ? eo( e.map(function (t) { return i.map(function (e) { return va(t, vo(e)); }); }) ) : e; } function To(e) { var t = go(e, 'SegmentTemplate')[0], i = go(e, 'SegmentList')[0], n = i && go(i, 'SegmentURL').map(function (e) { return Zs({ tag: 'SegmentURL' }, _o(e)); }), r = go(e, 'SegmentBase')[0], a = i || t, s = a && go(a, 'SegmentTimeline')[0], o = i || r || t, u = o && go(o, 'Initialization')[0], l = t && _o(t); l && u ? (l.initialization = u && _o(u)) : l && l.initialization && (l.initialization = { sourceURL: l.initialization }); var c = { template: l, timeline: s && go(s, 'S').map(function (e) { return _o(e); }), list: i && Zs(_o(i), { segmentUrls: n, initialization: _o(u) }), base: r && Zs(_o(r), { initialization: _o(u) }) }; return ( Object.keys(c).forEach(function (e) { c[e] || delete c[e]; }), c ); } function So(c, d, h) { return function (e) { var t = _o(e), i = bo(d, go(e, 'BaseURL')), n = go(e, 'Role')[0], r = { role: _o(n) }, a = Zs(c, t, r), s = (function (e) { return e.reduce(function (e, t) { var i = _o(t), n = Bo[i.schemeIdUri]; if (n) { e[n] = { attributes: i }; var r = go(t, 'cenc:pssh')[0]; if (r) { var a = vo(r), s = a && Sa(a); e[n].pssh = s; } } return e; }, {}); })(go(e, 'ContentProtection')); Object.keys(s).length && (a = Zs(a, { contentProtection: s })); var o = To(e), u = go(e, 'Representation'), l = Zs(h, o); return eo( u.map( (function (a, s, o) { return function (e) { var t = go(e, 'BaseURL'), i = bo(s, t), n = Zs(a, _o(e)), r = To(e); return i.map(function (e) { return { segmentInfo: Zs(o, r), attributes: Zs(n, { baseUrl: e }) }; }); }; })(a, i, l) ) ); }; } function ko(e, t) { void 0 === t && (t = {}); var i = t, n = i.manifestUri, r = void 0 === n ? '' : n, a = i.NOW, s = void 0 === a ? Date.now() : a, o = i.clientOffset, u = void 0 === o ? 0 : o, l = go(e, 'Period'); if (!l.length) throw new Error(Po); var c = go(e, 'Location'), d = _o(e), h = bo([r], go(e, 'BaseURL')); return ( (d.sourceDuration = d.mediaPresentationDuration || 0), (d.NOW = s), (d.clientOffset = u), c.length && (d.locations = c.map(vo)), { locations: d.locations, representationInfo: eo( l.map( (function (l, c) { return function (e, t) { var i = bo(c, go(e, 'BaseURL')), n = _o(e), r = parseInt(n.id, 10), a = T.isNaN(r) ? t : r, s = Zs(l, { periodIndex: a }), o = go(e, 'AdaptationSet'), u = To(e); return eo(o.map(So(s, i, u))); }; })(d, h) ) ) } ); } function Co(e) { if ('' === e) throw new Error(Lo); var t = new xo().parseFromString(e, 'application/xml'), i = t && 'MPD' === t.documentElement.tagName ? t.documentElement : null; if (!i || (i && 0 < i.getElementsByTagName('parsererror').length)) throw new Error(Oo); return i; } function Eo(e, t) { void 0 === t && (t = {}); var i = ko(Co(e), t), n = (function (e) { return e.map(mo); })(i.representationInfo); return lo(n, i.locations, t.sidxMapping); } function wo(e) { return (function (e) { var t = go(e, 'UTCTiming')[0]; if (!t) return null; var i = _o(t); switch (i.schemeIdUri) { case 'urn:mpeg:dash:utc:http-head:2014': case 'urn:mpeg:dash:utc:http-head:2012': i.method = 'HEAD'; break; 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': i.method = 'GET'; break; case 'urn:mpeg:dash:utc:direct:2014': case 'urn:mpeg:dash:utc:direct:2012': (i.method = 'DIRECT'), (i.value = Date.parse(i.value)); break; case 'urn:mpeg:dash:utc:http-ntp:2014': case 'urn:mpeg:dash:utc:ntp:2014': case 'urn:mpeg:dash:utc:sntp:2014': default: throw new Error(Ro); } return i; })(Co(e)); } var Io = { DOMImplementation: ws, XMLSerializer: Xs }, Ao = i(function (e, t) { function i(e) { this.options = e || { locator: {} }; } function l() { this.cdata = !1; } function c(e, t) { (t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber); } function d(e) { if (e) return ( '\n@' + (e.systemId || '') + '#[line:' + e.lineNumber + ',col:' + e.columnNumber + ']' ); } function r(e, t, i) { return 'string' == typeof e ? e.substr(t, i) : e.length >= t + i || t ? new java.lang.String(e, t, i) + '' : e; } function h(e, t) { e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t); } (i.prototype.parseFromString = function (e, t) { var i = this.options, n = new p(), r = i.domBuilder || new l(), a = i.errorHandler, s = i.locator, o = i.xmlns || {}, u = { lt: '<', gt: '>', amp: '&', quot: '"', apos: "'" }; return ( s && r.setDocumentLocator(s), (n.errorHandler = (function (n, e, r) { if (!n) { if (e instanceof l) return e; n = e; } var a = {}, s = n instanceof Function; function t(t) { var i = n[t]; !i && s && (i = 2 == n.length ? function (e) { n(t, e); } : n), (a[t] = (i && function (e) { i('[xmldom ' + t + ']\t' + e + d(r)); }) || function () {}); } return (r = r || {}), t('warning'), t('error'), t('fatalError'), a; })(a, r, s)), (n.domBuilder = i.domBuilder || r), /\/x?html?$/.test(t) && ((u.nbsp = ' '), (u.copy = '©'), (o[''] = 'http://www.w3.org/1999/xhtml')), (o.xml = o.xml || 'http://www.w3.org/XML/1998/namespace'), e ? n.parse(e, o, u) : n.errorHandler.error('invalid doc source'), r.doc ); }), (l.prototype = { startDocument: function () { (this.doc = new n().createDocument(null, null, null)), this.locator && (this.doc.documentURI = this.locator.systemId); }, startElement: function (e, t, i, n) { var r = this.doc, a = r.createElementNS(e, i || t), s = n.length; h(this, a), (this.currentElement = a), this.locator && c(this.locator, a); for (var o = 0; o < s; o++) { e = n.getURI(o); var u = n.getValue(o), l = ((i = n.getQName(o)), r.createAttributeNS(e, i)); this.locator && c(n.getLocator(o), l), (l.value = l.nodeValue = u), a.setAttributeNode(l); } }, endElement: function (e, t, i) { var n = this.currentElement; n.tagName; this.currentElement = n.parentNode; }, startPrefixMapping: function (e, t) {}, endPrefixMapping: function (e) {}, processingInstruction: function (e, t) { var i = this.doc.createProcessingInstruction(e, t); this.locator && c(this.locator, i), h(this, i); }, ignorableWhitespace: function (e, t, i) {}, characters: function (e, t, i) { if ((e = r.apply(this, arguments))) { if (this.cdata) var n = this.doc.createCDATASection(e); else n = this.doc.createTextNode(e); this.currentElement ? this.currentElement.appendChild(n) : /^\s*$/.test(e) && this.doc.appendChild(n), this.locator && c(this.locator, n); } }, skippedEntity: function (e) {}, endDocument: function () { this.doc.normalize(); }, setDocumentLocator: function (e) { (this.locator = e) && (e.lineNumber = 0); }, comment: function (e, t, i) { e = r.apply(this, arguments); var n = this.doc.createComment(e); this.locator && c(this.locator, n), h(this, n); }, startCDATA: function () { this.cdata = !0; }, endCDATA: function () { this.cdata = !1; }, startDTD: function (e, t, i) { var n = this.doc.implementation; if (n && n.createDocumentType) { var r = n.createDocumentType(e, t, i); this.locator && c(this.locator, r), h(this, r); } }, warning: function (e) {}, error: function (e) {}, fatalError: function (e) { throw e; } }), 'endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl'.replace( /\w+/g, function (e) { l.prototype[e] = function () { return null; }; } ); var p = $a.XMLReader, n = (t.DOMImplementation = Io.DOMImplementation); (t.XMLSerializer = Io.XMLSerializer), (t.DOMParser = i); }), xo = (Ao.DOMImplementation, Ao.XMLSerializer, Ao.DOMParser), Po = 'INVALID_NUMBER_OF_PERIOD', Lo = 'DASH_EMPTY_MANIFEST', Oo = 'DASH_INVALID_XML', Do = 'NO_BASE_URL', Mo = 'SEGMENT_TIME_UNSPECIFIED', Ro = 'UNSUPPORTED_UTC_TIMING_SCHEME', No = { static: function (e) { var t = e.duration, i = e.timescale, n = void 0 === i ? 1 : i, r = e.sourceDuration; return { start: 0, end: Math.ceil(r / (t / n)) }; }, dynamic: function (e) { var t = e.NOW, i = e.clientOffset, n = e.availabilityStartTime, r = e.timescale, a = void 0 === r ? 1 : r, s = e.duration, o = e.start, u = void 0 === o ? 0 : o, l = e.minimumUpdatePeriod, c = void 0 === l ? 0 : l, d = e.timeShiftBufferDepth, h = void 0 === d ? 1 / 0 : d, p = (t + i) / 1e3, f = n + u, m = p + c - f, g = Math.ceil((m * a) / s), v = Math.floor(((p - f - h) * a) / s), y = Math.floor(((p - f) * a) / s); return { start: Math.max(0, v), end: Math.min(g, y) }; } }, Uo = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g, Fo = { mediaPresentationDuration: function (e) { return yo(e); }, availabilityStartTime: function (e) { return ( (function (e) { return /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e) && (e += 'Z'), Date.parse(e); })(e) / 1e3 ); }, minimumUpdatePeriod: function (e) { return yo(e); }, suggestedPresentationDelay: function (e) { return yo(e); }, type: function (e) { return e; }, timeShiftBufferDepth: function (e) { return yo(e); }, start: function (e) { return yo(e); }, width: function (e) { return parseInt(e, 10); }, height: function (e) { return parseInt(e, 10); }, bandwidth: function (e) { return parseInt(e, 10); }, startNumber: function (e) { return parseInt(e, 10); }, timescale: function (e) { return parseInt(e, 10); }, duration: function (e) { var t = parseInt(e, 10); return isNaN(t) ? yo(e) : t; }, d: function (e) { return parseInt(e, 10); }, t: function (e) { return parseInt(e, 10); }, r: function (e) { return parseInt(e, 10); }, DEFAULT: function (e) { return e; } }, Bo = { 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey', 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha', 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready', 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime' }, jo = function (e) { var t, i = new DataView(e.buffer, e.byteOffset, e.byteLength), n = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), references: [], referenceId: i.getUint32(4), timescale: i.getUint32(8), earliestPresentationTime: i.getUint32(12), firstOffset: i.getUint32(16) }, r = i.getUint16(22); for (t = 24; r; t += 12, r--) n.references.push({ referenceType: (128 & e[t]) >>> 7, referencedSize: 2147483647 & i.getUint32(t), subsegmentDuration: i.getUint32(t + 4), startsWithSap: !!(128 & e[t + 8]), sapType: (112 & e[t + 8]) >>> 4, sapDeltaTime: 268435455 & i.getUint32(t + 8) }); return n; }, Vo = i(function (e, t) { Object.defineProperty(t, '__esModule', { value: !0 }); function n(e) { return e instanceof Uint8Array ? e : new Uint8Array( (e && e.buffer) || e, (e && e.byteOffset) || 0, (e && e.byteLength) || 0 ); } function r(e) { if (!e) return ''; e = Array.prototype.slice.call(e); var t = String.fromCharCode.apply(null, n(e)); try { return decodeURIComponent(escape(t)); } catch (e) {} return t; } function i(e, t) { void 0 === t && (t = 0); var i = ((e = n(e))[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]; return (16 & e[t + 5]) >> 4 ? 20 + i : 10 + i; } function a(e, t) { return ( void 0 === t && (t = 0), (e = n(e)).length - t < 10 || 'ID3' !== r(e.subarray(t, t + 3)) ? t : a(e, (t += i(e, t))) ); } var s = { aac: function (e) { var t = a(e); return ( e.length >= t + 2 && 255 == (255 & e[t]) && 224 == (224 & e[t + 1]) && 16 == (22 & e[t + 1]) ); }, mp3: function (e) { var t = a(e); return ( e.length >= t + 2 && 255 == (255 & e[t]) && 224 == (224 & e[t + 1]) && 2 == (6 & e[t + 1]) ); }, webm: function (e) { return ( 4 <= e.length && 26 == (255 & e[0]) && 69 == (255 & e[1]) && 223 == (255 & e[2]) && 163 == (255 & e[3]) ); }, mp4: function (e) { return ( 8 <= e.length && /^(f|s)typ$/.test(r(e.subarray(4, 8))) && !/^ftyp3g$/.test(r(e.subarray(4, 10))) ); }, '3gp': function (e) { return 10 <= e.length && /^ftyp3g$/.test(r(e.subarray(4, 10))); }, ts: function (e) { if (e.length < 189 && 1 <= e.length) return 71 === e[0]; for (var t = 0; t + 188 < e.length && t < 188; ) { if (71 === e[t] && 71 === e[t + 188]) return !0; t += 1; } return !1; }, flac: function (e) { return 4 <= e.length && /^fLaC$/.test(r(e.subarray(0, 4))); }, ogg: function (e) { return 4 <= e.length && /^OggS$/.test(r(e.subarray(0, 4))); } }, o = Object.keys(s) .filter(function (e) { return 'ts' !== e; }) .concat('ts'); o.forEach(function (e) { var t = s[e]; s[e] = function (e) { return t(n(e)); }; }); (t.detectContainerForBytes = function (e) { e = n(e); for (var t = 0; t < o.length; t++) { var i = o[t]; if (s[i](e)) return i; } return ''; }), (t.getId3Offset = a), (t.id3Size = i), (t.isLikely = s), (t.isLikelyFmp4MediaSegment = function (e) { e = n(e); for (var t = 0; t < e.length; ) { var i = ((e[t] << 24) | (e[t + 1] << 16) | (e[t + 2] << 8) | e[t + 3]) >>> 0; if ('moof' === r(e.subarray(t + 4, t + 8))) return !0; 0 == i || i + t > e.length ? (t = e.length) : (t += i); } return !1; }); }); t(Vo); var qo = Vo.detectContainerForBytes, Ho = Vo.getId3Offset, Wo = (Vo.id3Size, Vo.isLikely, Vo.isLikelyFmp4MediaSegment), zo = i(function (e, t) { Object.defineProperty(t, '__esModule', { value: !0 }); function s(e) { return e instanceof Uint8Array ? e : new Uint8Array( (e && e.buffer) || e, (e && e.byteOffset) || 0, (e && e.byteLength) || 0 ); } (t.bytesToString = function (e) { if (!e) return ''; e = Array.prototype.slice.call(e); var t = String.fromCharCode.apply(null, s(e)); try { return decodeURIComponent(escape(t)); } catch (e) {} return t; }), (t.concatTypedArrays = function () { for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]; var n = t.reduce(function (e, t) { return (e += (t && (t.byteLength || t.length)) || 0); }, 0), r = new Uint8Array(n), a = 0; return ( t.forEach(function (e) { (e = s(e)), r.set(e, a), (a += e.byteLength); }), r ); }), (t.isTypedArray = function (e) { return ArrayBuffer.isView(e); }), (t.stringToBytes = function (e, t) { void 0 === t && (t = !1); return ( 'string' != typeof e && e && 'function' == typeof e.toString && (e = e.toString()), 'string' != typeof e ? [] : (t || (e = unescape(encodeURIComponent(e))), e.split('').map(function (e) { return 255 & e.charCodeAt(0); })) ); }), (t.toUint8 = s); }); t(zo); zo.bytesToString; function Go() { this.init = function () { var a = {}; (this.on = function (e, t) { a[e] || (a[e] = []), (a[e] = a[e].concat(t)); }), (this.off = function (e, t) { var i; return ( !!a[e] && ((i = a[e].indexOf(t)), (a[e] = a[e].slice()), a[e].splice(i, 1), -1 < i) ); }), (this.trigger = function (e) { var t, i, n, r; if ((t = a[e])) if (2 === arguments.length) for (n = t.length, i = 0; i < n; ++i) t[i].call(this, arguments[1]); else { for (r = [], i = arguments.length, i = 1; i < arguments.length; ++i) r.push(arguments[i]); for (n = t.length, i = 0; i < n; ++i) t[i].apply(this, r); } }), (this.dispose = function () { a = {}; }); }; } var Xo = zo.concatTypedArrays, Ko = (zo.isTypedArray, zo.stringToBytes), Yo = zo.toUint8, $o = 27, Qo = 15, Jo = 21; (Go.prototype.pipe = function (t) { return ( this.on('data', function (e) { t.push(e); }), this.on('done', function (e) { t.flush(e); }), this.on('partialdone', function (e) { t.partialFlush(e); }), this.on('endedtimeline', function (e) { t.endTimeline(e); }), this.on('reset', function (e) { t.reset(e); }), t ); }), (Go.prototype.push = function (e) { this.trigger('data', e); }), (Go.prototype.flush = function (e) { this.trigger('done', e); }), (Go.prototype.partialFlush = function (e) { this.trigger('partialdone', e); }), (Go.prototype.endTimeline = function (e) { this.trigger('endedtimeline', e); }), (Go.prototype.reset = function (e) { this.trigger('reset', e); }); function Zo(e, t) { var i = 1; for (t < e && (i = -1); 4294967296 < Math.abs(t - e); ) e += 8589934592 * i; return e; } new Go(); function eu(e) { var t = 31 & e[1]; return (t <<= 8), (t |= e[2]); } function tu(e) { return !!(64 & e[1]); } function iu(e) { var t = 0; return 1 < (48 & e[3]) >>> 4 && (t += e[4] + 1), t; } function nu(e) { switch (e) { case 5: return 'slice_layer_without_partitioning_rbsp_idr'; case 6: return 'sei_rbsp'; case 7: return 'seq_parameter_set_rbsp'; case 8: return 'pic_parameter_set_rbsp'; case 9: return 'access_unit_delimiter_rbsp'; default: return null; } } function ru(e, t) { var i = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]; return (i = 0 <= i ? i : 0), (16 & e[t + 5]) >> 4 ? i + 20 : i + 10; } function au(e) { return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3]; } var su, ou, uu, lu, cu = { parseType: function (e, t) { var i = eu(e); return 0 === i ? 'pat' : i === t ? 'pmt' : t ? 'pes' : null; }, parsePat: function (e) { var t = tu(e), i = 4 + iu(e); return t && (i += e[i] + 1), ((31 & e[i + 10]) << 8) | e[i + 11]; }, parsePmt: function (e) { var t = {}, i = tu(e), n = 4 + iu(e); if ((i && (n += e[n] + 1), 1 & e[n + 5])) { var r; r = 3 + (((15 & e[n + 1]) << 8) | e[n + 2]) - 4; for (var a = 12 + (((15 & e[n + 10]) << 8) | e[n + 11]); a < r; ) { var s = n + a; (t[((31 & e[s + 1]) << 8) | e[s + 2]] = e[s]), (a += 5 + (((15 & e[s + 3]) << 8) | e[s + 4])); } return t; } }, parsePayloadUnitStartIndicator: tu, parsePesType: function (e, t) { switch (t[eu(e)]) { case $o: return 'video'; case Qo: return 'audio'; case Jo: return 'timed-metadata'; default: return null; } }, parsePesTime: function (e) { if (!tu(e)) return null; var t = 4 + iu(e); if (t >= e.byteLength) return null; var i, n = null; return ( 192 & (i = e[t + 7]) && (((n = {}).pts = ((14 & e[t + 9]) << 27) | ((255 & e[t + 10]) << 20) | ((254 & e[t + 11]) << 12) | ((255 & e[t + 12]) << 5) | ((254 & e[t + 13]) >>> 3)), (n.pts *= 4), (n.pts += (6 & e[t + 13]) >>> 1), (n.dts = n.pts), 64 & i && ((n.dts = ((14 & e[t + 14]) << 27) | ((255 & e[t + 15]) << 20) | ((254 & e[t + 16]) << 12) | ((255 & e[t + 17]) << 5) | ((254 & e[t + 18]) >>> 3)), (n.dts *= 4), (n.dts += (6 & e[t + 18]) >>> 1))), n ); }, videoPacketContainsKeyFrame: function (e) { for (var t = 4 + iu(e), i = e.subarray(t), n = 0, r = 0, a = !1; r < i.byteLength - 3; r++) if (1 === i[r + 2]) { n = r + 5; break; } for (; n < i.byteLength; ) switch (i[n]) { case 0: if (0 !== i[n - 1]) { n += 2; break; } if (0 !== i[n - 2]) { n++; break; } for ( r + 3 !== n - 2 && 'slice_layer_without_partitioning_rbsp_idr' === nu(31 & i[r + 3]) && (a = !0); 1 !== i[++n] && n < i.length; ); (r = n - 2), (n += 3); break; case 1: if (0 !== i[n - 1] || 0 !== i[n - 2]) { n += 3; break; } 'slice_layer_without_partitioning_rbsp_idr' === nu(31 & i[r + 3]) && (a = !0), (r = n - 2), (n += 3); break; default: n += 3; } return ( (i = i.subarray(r)), (n -= r), (r = 0), i && 3 < i.byteLength && 'slice_layer_without_partitioning_rbsp_idr' === nu(31 & i[r + 3]) && (a = !0), a ); } }, du = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], hu = { isLikelyAacData: function (e) { var t = (function e(t, i) { return t.length - i < 10 || t[i] !== 'I'.charCodeAt(0) || t[i + 1] !== 'D'.charCodeAt(0) || t[i + 2] !== '3'.charCodeAt(0) ? i : e(t, (i += ru(t, i))); })(e, 0); return ( e.length >= t + 2 && 255 == (255 & e[t]) && 240 == (240 & e[t + 1]) && 16 == (22 & e[t + 1]) ); }, parseId3TagSize: ru, parseAdtsSize: function (e, t) { var i = (224 & e[t + 5]) >> 5, n = e[t + 4] << 3; return (6144 & e[t + 3]) | n | i; }, parseType: function (e, t) { return e[t] === 'I'.charCodeAt(0) && e[t + 1] === 'D'.charCodeAt(0) && e[t + 2] === '3'.charCodeAt(0) ? 'timed-metadata' : !0 & e[t] && 240 == (240 & e[t + 1]) ? 'audio' : null; }, parseSampleRate: function (e) { for (var t = 0; t + 5 < e.length; ) { if (255 === e[t] && 240 == (246 & e[t + 1])) return du[(60 & e[t + 2]) >>> 2]; t++; } return null; }, parseAacTimestamp: function (e) { var t, i, n; (t = 10), 64 & e[5] && ((t += 4), (t += au(e.subarray(10, 14)))); do { if ((i = au(e.subarray(t + 4, t + 8))) < 1) return null; if ('PRIV' === String.fromCharCode(e[t], e[t + 1], e[t + 2], e[t + 3])) { n = e.subarray(t + 10, t + i + 10); for (var r = 0; r < n.byteLength; r++) if (0 === n[r]) { if ( 'com.apple.streaming.transportStreamTimestamp' !== unescape( (function (e, t, i) { var n, r = ''; for (n = t; n < i; n++) r += '%' + ('00' + e[n].toString(16)).slice(-2); return r; })(n, 0, r) ) ) break; var a = n.subarray(r + 1), s = ((1 & a[3]) << 30) | (a[4] << 22) | (a[5] << 14) | (a[6] << 6) | (a[7] >>> 2); return (s *= 4), (s += 3 & a[7]); } } (t += 10), (t += i); } while (t < e.byteLength); return null; } }, pu = 9e4, fu = ((su = function (e) { return 9e4 * e; }), (ou = function (e, t) { return e * t; }), (uu = function (e) { return e / 9e4; }), (lu = function (e, t) { return e / t; }), pu), mu = Zo, gu = {}; (gu.ts = cu), (gu.aac = hu); function vu(e, t, i) { for (var n, r, a, s, o = 0, u = Cu, l = !1; u <= e.byteLength; ) if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o++, u++; else { switch (((n = e.subarray(o, u)), gu.ts.parseType(n, t.pid))) { case 'pes': (r = gu.ts.parsePesType(n, t.table)), (a = gu.ts.parsePayloadUnitStartIndicator(n)), 'audio' === r && a && (s = gu.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0)); } if (l) break; (o += Cu), (u += Cu); } for (o = (u = e.byteLength) - Cu, l = !1; 0 <= o; ) if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o--, u--; else { switch (((n = e.subarray(o, u)), gu.ts.parseType(n, t.pid))) { case 'pes': (r = gu.ts.parsePesType(n, t.table)), (a = gu.ts.parsePayloadUnitStartIndicator(n)), 'audio' === r && a && (s = gu.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0)); } if (l) break; (o -= Cu), (u -= Cu); } } function yu(e, t, i) { for ( var n, r, a, s, o, u, l, c = 0, d = Cu, h = !1, p = { data: [], size: 0 }; d < e.byteLength; ) if (71 !== e[c] || 71 !== e[d]) c++, d++; else { switch (((n = e.subarray(c, d)), gu.ts.parseType(n, t.pid))) { case 'pes': if ( ((r = gu.ts.parsePesType(n, t.table)), (a = gu.ts.parsePayloadUnitStartIndicator(n)), 'video' === r && (a && !h && (s = gu.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (h = !0)), !i.firstKeyFrame)) ) { if (a && 0 !== p.size) { for (o = new Uint8Array(p.size), u = 0; p.data.length; ) (l = p.data.shift()), o.set(l, u), (u += l.byteLength); if (gu.ts.videoPacketContainsKeyFrame(o)) { var f = gu.ts.parsePesTime(o); f && ((i.firstKeyFrame = f), (i.firstKeyFrame.type = 'video')); } p.size = 0; } p.data.push(n), (p.size += n.byteLength); } } if (h && i.firstKeyFrame) break; (c += Cu), (d += Cu); } for (c = (d = e.byteLength) - Cu, h = !1; 0 <= c; ) if (71 !== e[c] || 71 !== e[d]) c--, d--; else { switch (((n = e.subarray(c, d)), gu.ts.parseType(n, t.pid))) { case 'pes': (r = gu.ts.parsePesType(n, t.table)), (a = gu.ts.parsePayloadUnitStartIndicator(n)), 'video' === r && a && (s = gu.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (h = !0)); } if (h) break; (c -= Cu), (d -= Cu); } } function _u(e) { var t = { pid: null, table: null }, i = {}; for (var n in ((function (e, t) { for (var i, n = 0, r = Cu; r < e.byteLength; ) if (71 !== e[n] || 71 !== e[r]) n++, r++; else { switch (((i = e.subarray(n, r)), gu.ts.parseType(i, t.pid))) { case 'pat': t.pid || (t.pid = gu.ts.parsePat(i)); break; case 'pmt': t.table || (t.table = gu.ts.parsePmt(i)); } if (t.pid && t.table) return; (n += Cu), (r += Cu); } })(e, t), t.table)) { if (t.table.hasOwnProperty(n)) switch (t.table[n]) { case $o: (i.video = []), yu(e, t, i), 0 === i.video.length && delete i.video; break; case Qo: (i.audio = []), vu(e, t, i), 0 === i.audio.length && delete i.audio; } } return i; } var bu, Tu, Su, ku = pu, Cu = 188, Eu = function (e, t) { var i; return (i = gu.aac.isLikelyAacData(e) ? (function (e) { for (var t, i = !1, n = 0, r = null, a = null, s = 0, o = 0; 3 <= e.length - o; ) { switch (gu.aac.parseType(e, o)) { case 'timed-metadata': if (e.length - o < 10) { i = !0; break; } if ((s = gu.aac.parseId3TagSize(e, o)) > e.length) { i = !0; break; } null === a && ((t = e.subarray(o, o + s)), (a = gu.aac.parseAacTimestamp(t))), (o += s); break; case 'audio': if (e.length - o < 7) { i = !0; break; } if ((s = gu.aac.parseAdtsSize(e, o)) > e.length) { i = !0; break; } null === r && ((t = e.subarray(o, o + s)), (r = gu.aac.parseSampleRate(t))), n++, (o += s); break; default: o++; } if (i) return null; } if (null === r || null === a) return null; var u = ku / r; return { audio: [ { type: 'audio', dts: a, pts: a }, { type: 'audio', dts: a + 1024 * n * u, pts: a + 1024 * n * u } ] }; })(e) : _u(e)) && (i.audio || i.video) ? ((function (e, t) { if (e.audio && e.audio.length) { var i = t; 'undefined' == typeof i && (i = e.audio[0].dts), e.audio.forEach(function (e) { (e.dts = mu(e.dts, i)), (e.pts = mu(e.pts, i)), (e.dtsTime = e.dts / ku), (e.ptsTime = e.pts / ku); }); } if (e.video && e.video.length) { var n = t; if ( ('undefined' == typeof n && (n = e.video[0].dts), e.video.forEach(function (e) { (e.dts = mu(e.dts, n)), (e.pts = mu(e.pts, n)), (e.dtsTime = e.dts / ku), (e.ptsTime = e.pts / ku); }), e.firstKeyFrame) ) { var r = e.firstKeyFrame; (r.dts = mu(r.dts, n)), (r.pts = mu(r.pts, n)), (r.dtsTime = r.dts / ku), (r.ptsTime = r.dts / ku); } } })(i, t), i) : null; }, wu = function (e) { return e >>> 0; }, Iu = function (e) { var t = ''; return ( (t += String.fromCharCode(e[0])), (t += String.fromCharCode(e[1])), (t += String.fromCharCode(e[2])), (t += String.fromCharCode(e[3])) ); }, Au = wu, xu = function e(t, i) { var n, r, a, s, o, u = []; if (!i.length) return null; for (n = 0; n < t.byteLength; ) (r = Au((t[n] << 24) | (t[n + 1] << 16) | (t[n + 2] << 8) | t[n + 3])), (a = Iu(t.subarray(n + 4, n + 8))), (s = 1 < r ? n + r : t.byteLength), a === i[0] && (1 === i.length ? u.push(t.subarray(n + 8, s)) : (o = e(t.subarray(n + 8, s), i.slice(1))).length && (u = u.concat(o))), (n = s); return u; }, Pu = function (e) { var t, i = new DataView(e.buffer, e.byteOffset, e.byteLength), n = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: i.getUint32(4) }, r = 1 & n.flags[2], a = 2 & n.flags[2], s = 8 & n.flags[2], o = 16 & n.flags[2], u = 32 & n.flags[2], l = 65536 & n.flags[0], c = 131072 & n.flags[0]; return ( (t = 8), r && ((t += 4), (n.baseDataOffset = i.getUint32(12)), (t += 4)), a && ((n.sampleDescriptionIndex = i.getUint32(t)), (t += 4)), s && ((n.defaultSampleDuration = i.getUint32(t)), (t += 4)), o && ((n.defaultSampleSize = i.getUint32(t)), (t += 4)), u && (n.defaultSampleFlags = i.getUint32(t)), l && (n.durationIsEmpty = !0), !r && c && (n.baseDataOffsetIsMoof = !0), n ); }, Lu = function (e) { return { isLeading: (12 & e[0]) >>> 2, dependsOn: 3 & e[0], isDependedOn: (192 & e[1]) >>> 6, hasRedundancy: (48 & e[1]) >>> 4, paddingValue: (14 & e[1]) >>> 1, isNonSyncSample: 1 & e[1], degradationPriority: (e[2] << 8) | e[3] }; }, Ou = function (e) { var t, i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: [] }, n = new DataView(e.buffer, e.byteOffset, e.byteLength), r = 1 & i.flags[2], a = 4 & i.flags[2], s = 1 & i.flags[1], o = 2 & i.flags[1], u = 4 & i.flags[1], l = 8 & i.flags[1], c = n.getUint32(4), d = 8; for ( r && ((i.dataOffset = n.getInt32(d)), (d += 4)), a && c && ((t = { flags: Lu(e.subarray(d, d + 4)) }), (d += 4), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t), c--); c--; ) (t = {}), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), u && ((t.flags = Lu(e.subarray(d, d + 4))), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t); return i; }, Du = wu, Mu = function (e) { var t = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), baseMediaDecodeTime: Du((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7]) }; return ( 1 === t.version && ((t.baseMediaDecodeTime *= Math.pow(2, 32)), (t.baseMediaDecodeTime += Du((e[8] << 24) | (e[9] << 16) | (e[10] << 8) | e[11]))), t ); }, Ru = wu, Nu = function (e) { return ('00' + e.toString(16)).slice(-2); }; (bu = function (r, e) { var t, i, n; return ( (t = xu(e, ['moof', 'traf'])), (i = [].concat.apply( [], t.map(function (n) { return xu(n, ['tfhd']).map(function (e) { var t, i; return ( (t = Ru((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7])), (i = r[t] || 9e4), (xu(n, ['tfdt']).map(function (e) { var t, i; return ( (t = e[0]), (i = Ru((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7])), 1 === t && ((i *= Math.pow(2, 32)), (i += Ru((e[8] << 24) | (e[9] << 16) | (e[10] << 8) | e[11]))), i ); })[0] || 1 / 0) / i ); }); }) )), (n = Math.min.apply(null, i)), isFinite(n) ? n : 0 ); }), (Tu = function (e) { var t = xu(e, ['moov', 'trak']), h = []; return ( t.forEach(function (e) { var t, i, n = {}, r = xu(e, ['tkhd'])[0]; r && ((i = (t = new DataView(r.buffer, r.byteOffset, r.byteLength)).getUint8(0)), (n.id = 0 === i ? t.getUint32(12) : t.getUint32(20))); var a = xu(e, ['mdia', 'hdlr'])[0]; if (a) { var s = Iu(a.subarray(8, 12)); n.type = 'vide' === s ? 'video' : 'soun' === s ? 'audio' : s; } var o = xu(e, ['mdia', 'minf', 'stbl', 'stsd'])[0]; if (o) { var u = o.subarray(8); n.codec = Iu(u.subarray(4, 8)); var l, c = xu(u, [n.codec])[0]; c && (/^[a-z]vc[1-9]$/i.test(n.codec) ? ((l = c.subarray(78)), 'avcC' === Iu(l.subarray(4, 8)) && 11 < l.length ? ((n.codec += '.'), (n.codec += Nu(l[9])), (n.codec += Nu(l[10])), (n.codec += Nu(l[11]))) : (n.codec = 'avc1.4d400d')) : /^mp4[a,v]$/i.test(n.codec) && ((l = c.subarray(28)), 'esds' === Iu(l.subarray(4, 8)) && 20 < l.length && 0 !== l[19] ? ((n.codec += '.' + Nu(l[19])), (n.codec += '.' + Nu((l[20] >>> 2) & 63).replace(/^0/, ''))) : (n.codec = 'mp4a.40.2'))); } var d = xu(e, ['mdia', 'mdhd'])[0]; d && (n.timescale = Su(d)), h.push(n); }), h ); }); var Uu = bu, Fu = Tu, Bu = ((Su = function (e) { var t = 0 === e[0] ? 12 : 20; return Ru((e[t] << 24) | (e[1 + t] << 16) | (e[2 + t] << 8) | e[3 + t]); }), i(function (e, t) { function i(e) { return e && 'object' == typeof e && 'default' in e ? e : { default: e }; } Object.defineProperty(t, '__esModule', { value: !0 }); function r(e) { return e ? e.replace(/avc1\.(\d+)\.(\d+)/i, function (e, t, i) { return ( 'avc1.' + ('00' + Number(t).toString(16)).slice(-2) + '00' + ('00' + Number(i).toString(16)).slice(-2) ); }) : e; } function n(e) { return e.map(r); } function a(e) { void 0 === e && (e = ''); var t = e.split(','), a = {}; return ( t.forEach(function (r) { (r = r.trim()), ['video', 'audio'].forEach(function (e) { var t = l[e].exec(r.toLowerCase()); if (t && !(t.length <= 1)) { var i = r.substring(0, t[1].length), n = r.replace(i, ''); a[e] = { type: i, details: n }; } }); }), a ); } function s(e) { return void 0 === e && (e = ''), l.audio.test(e.trim().toLowerCase()); } function o(e) { if (e && 'string' == typeof e) { var t = e .toLowerCase() .split(',') .map(function (e) { return r(e.trim()); }), i = 'video'; 1 === t.length && s(t[0]) && (i = 'audio'); var n = 'mp4'; return ( t.every(function (e) { return l.mp4.test(e); }) ? (n = 'mp4') : t.every(function (e) { return l.webm.test(e); }) ? (n = 'webm') : t.every(function (e) { return l.ogg.test(e); }) && (n = 'ogg'), i + '/' + n + ';codecs="' + e + '"' ); } } var u = i(T), l = { mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v)/, webm: /^(vp0?[89]|av0?1|opus|vorbis)/, ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/, video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/, audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3)/, muxerVideo: /^(avc0?1)/, muxerAudio: /^(mp4a)/ }; (t.DEFAULT_AUDIO_CODEC = 'mp4a.40.2'), (t.DEFAULT_VIDEO_CODEC = 'avc1.4d400d'), (t.browserSupportsCodec = function (e) { return ( void 0 === e && (e = ''), (u.default.MediaSource && u.default.MediaSource.isTypeSupported && u.default.MediaSource.isTypeSupported(o(e))) || !1 ); }), (t.codecsFromDefault = function (e, t) { if (!e.mediaGroups.AUDIO || !t) return null; var i = e.mediaGroups.AUDIO[t]; if (!i) return null; for (var n in i) { var r = i[n]; if (r.default && r.playlists) return a(r.playlists[0].attributes.CODECS); } return null; }), (t.getMimeForCodec = o), (t.isAudioCodec = s), (t.isVideoCodec = function (e) { return void 0 === e && (e = ''), l.video.test(e.trim().toLowerCase()); }), (t.mapLegacyAvcCodecs = function (e) { return e.replace(/avc1\.(\d+)\.(\d+)/i, function (e) { return n([e])[0]; }); }), (t.muxerSupportsCodec = function (e) { return ( void 0 === e && (e = ''), e .toLowerCase() .split(',') .every(function (e) { return (e = e.trim()), l.muxerVideo.test(e) || l.muxerAudio.test(e); }) ); }), (t.parseCodecs = a), (t.translateLegacyCodec = r), (t.translateLegacyCodecs = n); })); t(Bu); function ju(e, t, i) { return e && i && i.responseURL && t !== i.responseURL ? i.responseURL : t; } function Vu(e, t) { return e + '-' + t; } function qu(e) { var t = e.manifestString, i = e.customTagParsers, n = void 0 === i ? [] : i, r = e.customTagMappers, a = void 0 === r ? [] : r, s = new Ea(); return ( n.forEach(function (e) { return s.addParser(e); }), a.forEach(function (e) { return s.addTagMapper(e); }), s.push(t), s.end(), s.manifest ); } function Hu(r, a) { ['AUDIO', 'SUBTITLES'].forEach(function (e) { for (var t in r.mediaGroups[e]) for (var i in r.mediaGroups[e][t]) { var n = r.mediaGroups[e][t][i]; a(n, e, t, i); } }); } function Wu(e) { var t = e.playlist, i = e.uri, n = e.id; (t.id = n), i && (t.uri = i), (t.attributes = t.attributes || {}); } function zu(s, e) { s.uri = e; for (var t = 0; t < s.playlists.length; t++) if (!s.playlists[t].uri) { var i = 'placeholder-uri-' + t; s.playlists[t].uri = i; } Hu(s, function (e, t, i, n) { if (e.playlists && e.playlists.length && !e.playlists[0].uri) { var r = 'placeholder-uri-' + t + '-' + i + '-' + n, a = Vu(0, r); (e.playlists[0].uri = r), (e.playlists[0].id = a), (s.playlists[a] = e.playlists[0]), (s.playlists[r] = e.playlists[0]); } }), (function (e) { for (var t = e.playlists.length; t--; ) { var i = e.playlists[t]; Wu({ playlist: i, id: Vu(t, i.uri) }), (i.resolvedUri = $l(e.uri, i.uri)), (e.playlists[i.id] = i), (e.playlists[i.uri] = i).attributes.BANDWIDTH || Ql.warn('Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute.'); } })(s), (function (t) { Hu(t, function (e) { e.uri && (e.resolvedUri = $l(t.uri, e.uri)); }); })(s); } function Gu(e, t) { e.resolvedUri || (e.resolvedUri = $l(t, e.uri)), e.key && !e.key.resolvedUri && (e.key.resolvedUri = $l(t, e.key.uri)), e.map && !e.map.resolvedUri && (e.map.resolvedUri = $l(t, e.map.uri)); } function Xu(e, t) { var i = Jl(e, {}), n = i.playlists[t.id]; if (!n) return null; if ( n.segments && t.segments && n.segments.length === t.segments.length && n.endList === t.endList && n.mediaSequence === t.mediaSequence ) return null; var r = Jl(n, t); n.segments && (r.segments = (function (e, t, i) { var n = t.slice(); i = i || 0; for (var r = Math.min(e.length, t.length + i), a = i; a < r; a++) n[a - i] = Jl(e[a], n[a - i]); return n; })(n.segments, t.segments, t.mediaSequence - n.mediaSequence)), r.segments.forEach(function (e) { Gu(e, r.resolvedUri); }); for (var a = 0; a < i.playlists.length; a++) i.playlists[a].id === t.id && (i.playlists[a] = r); return (i.playlists[t.id] = r), (i.playlists[t.uri] = r), i; } function Ku(e, t) { var i = e.segments[e.segments.length - 1]; return t && i && i.duration ? 1e3 * i.duration : 500 * (e.targetDuration || 10); } function Yu(e, t) { var i, n = []; if (e && e.length) for (i = 0; i < e.length; i++) t(e.start(i), e.end(i)) && n.push([e.start(i), e.end(i)]); return da.createTimeRanges(n); } function $u(e, i) { return Yu(e, function (e, t) { return e - 0.1 <= i && i <= t + 0.1; }); } function Qu(e, t) { return Yu(e, function (e) { return t <= e - ec; }); } function Ju(e) { var t = []; if (!e || !e.length) return ''; for (var i = 0; i < e.length; i++) t.push(e.start(i) + ' => ' + e.end(i)); return t.join(', '); } function Zu(e) { for (var t = [], i = 0; i < e.length; i++) t.push({ start: e.start(i), end: e.end(i) }); return t; } function el(e, t, i) { if (('undefined' == typeof t && (t = e.mediaSequence + e.segments.length), t < e.mediaSequence)) return 0; var n = (function (e, t) { var i = 0, n = t - e.mediaSequence, r = e.segments[n]; if (r) { if ('undefined' != typeof r.start) return { result: r.start, precise: !0 }; if ('undefined' != typeof r.end) return { result: r.end - r.duration, precise: !0 }; } for (; n--; ) { if ('undefined' != typeof (r = e.segments[n]).end) return { result: i + r.end, precise: !0 }; if (((i += r.duration), 'undefined' != typeof r.start)) return { result: i + r.start, precise: !0 }; } return { result: i, precise: !1 }; })(e, t); if (n.precise) return n.result; var r = (function (e, t) { for (var i, n = 0, r = t - e.mediaSequence; r < e.segments.length; r++) { if ('undefined' != typeof (i = e.segments[r]).start) return { result: i.start - n, precise: !0 }; if (((n += i.duration), 'undefined' != typeof i.end)) return { result: i.end - n, precise: !0 }; } return { result: -1, precise: !1 }; })(e, t); return r.precise ? r.result : n.result + i; } function tl(e, t, i) { if (!e) return 0; if (('number' != typeof i && (i = 0), 'undefined' == typeof t)) { if (e.totalDuration) return e.totalDuration; if (!e.endList) return T.Infinity; } return el(e, t, i); } function il(e, t, i) { var n = 0; if (i < t) { var r = [i, t]; (t = r[0]), (i = r[1]); } if (t < 0) { for (var a = t; a < Math.min(0, i); a++) n += e.targetDuration; t = 0; } for (var s = t; s < i; s++) n += e.segments[s].duration; return n; } function nl(e, t) { if (!e.segments.length) return 0; var i = e.segments.length, n = e.segments[i - 1].duration || e.targetDuration, r = 'number' == typeof t ? t : n + 2 * e.targetDuration; if (0 === r) return i; for (var a = 0; i-- && !(r <= (a += e.segments[i].duration)); ); return Math.max(0, i); } function rl(e, t, i, n) { if (!e || !e.segments) return null; if (e.endList) return tl(e); if (null === t) return null; t = t || 0; var r = i ? nl(e, n) : e.segments.length; return el(e, e.mediaSequence + r, t); } function al(e) { return e.excludeUntil && e.excludeUntil > Date.now(); } function sl(e) { return e.excludeUntil && e.excludeUntil === 1 / 0; } function ol(e) { var t = al(e); return !e.disabled && !t; } function ul(e, t) { return t.attributes && t.attributes[e]; } function ll(e, t) { if (1 === e.playlists.length) return !0; var i = t.attributes.BANDWIDTH || Number.MAX_VALUE; return ( 0 === e.playlists.filter(function (e) { return !!ol(e) && (e.attributes.BANDWIDTH || 0) < i; }).length ); } function cl(e, t, i, n) { var r = 'arraybuffer' === e.responseType ? e.response : e.responseText; !t && r && ((e.responseTime = Date.now()), (e.roundTripTime = e.responseTime - e.requestTime), (e.bytesReceived = r.byteLength || r.length), e.bandwidth || (e.bandwidth = Math.floor((e.bytesReceived / e.roundTripTime) * 8 * 1e3))), i.headers && (e.responseHeaders = i.headers), t && 'ETIMEDOUT' === t.code && (e.timedout = !0), t || e.aborted || 200 === i.statusCode || 206 === i.statusCode || 0 === i.statusCode || (t = new Error('XHR Failed with a response of: ' + (e && (r || e.responseText)))), n(t, e); } function dl() { return function e(t, i) { t = rc({ timeout: 45e3 }, t); var n = e.beforeRequest || da.Vhs.xhr.beforeRequest; if (n && 'function' == typeof n) { var r = n(t); r && (t = r); } var a = nc(t, function (e, t) { return cl(a, e, t, i); }), s = a.abort; return ( (a.abort = function () { return (a.aborted = !0), s.apply(a, arguments); }), (a.uri = t.uri), (a.requestTime = Date.now()), a ); }; } function hl(e) { var t = {}; return ( e.byterange && (t.Range = (function (e) { var t = e.offset + e.length - 1; return 'bytes=' + e.offset + '-' + t; })(e.byterange)), t ); } function pl(e, t) { var i = e.toString(16); return '00'.substring(0, 2 - i.length) + i + (t % 2 ? ' ' : ''); } function fl(e) { return 32 <= e && e < 126 ? String.fromCharCode(e) : '.'; } function ml(i) { var n = {}; return ( Object.keys(i).forEach(function (e) { var t = i[e]; ArrayBuffer.isView(t) ? (n[e] = { bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }) : (n[e] = t); }), n ); } function gl(e) { var t = e.byterange || { length: 1 / 0, offset: 0 }; return [t.length, t.offset, e.resolvedUri].join(','); } function vl(e) { return e.resolvedUri; } function yl(e) { for (var t = Array.prototype.slice.call(e), i = '', n = 0; n < t.length / 16; n++) i += t .slice(16 * n, 16 * n + 16) .map(pl) .join('') + ' ' + t .slice(16 * n, 16 * n + 16) .map(fl) .join('') + '\n'; return i; } function _l(e) { var t = e.playlist, i = e.time, n = void 0 === i ? void 0 : i, r = e.callback; if (!r) throw new Error('getProgramTime: callback must be provided'); if (!t || void 0 === n) return r({ message: 'getProgramTime: playlist and time must be provided' }); var a = (function (e, t) { if (!t || !t.segments || 0 === t.segments.length) return null; for ( var i, n = 0, r = 0; r < t.segments.length && !( e <= (n = (i = t.segments[r]).videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationEnd : n + i.duration) ); r++ ); var a = t.segments[t.segments.length - 1]; if (a.videoTimingInfo && a.videoTimingInfo.transmuxedPresentationEnd < e) return null; if (n < e) { if (e > n + 0.25 * a.duration) return null; i = a; } return { segment: i, estimatedStart: i.videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationStart : n - i.duration, type: i.videoTimingInfo ? 'accurate' : 'estimate' }; })(n, t); if (!a) return r({ message: 'valid programTime was not found' }); if ('estimate' === a.type) return r({ message: 'Accurate programTime could not be determined. Please seek to e.seekTime and try again', seekTime: a.estimatedStart }); var s = { mediaSeconds: n }, o = (function (e, t) { if (!t.dateTimeObject) return null; var i = t.videoTimingInfo.transmuxerPrependedSeconds, n = e - (t.videoTimingInfo.transmuxedPresentationStart + i); return new Date(t.dateTimeObject.getTime() + 1e3 * n); })(n, a.segment); return o && (s.programDateTime = o.toISOString()), r(null, s); } function bl(e) { var t = e.programTime, i = e.playlist, n = e.retryCount, r = void 0 === n ? 2 : n, a = e.seekTo, s = e.pauseAfterSeek, o = void 0 === s || s, u = e.tech, l = e.callback; if (!l) throw new Error('seekToProgramTime: callback must be provided'); if ('undefined' == typeof t || !i || !a) return l({ message: 'seekToProgramTime: programTime, seekTo and playlist must be provided' }); if (!i.endList && !u.hasStarted_) return l({ message: 'player must be playing a live stream to start buffering' }); if ( !(function (e) { if (!e.segments || 0 === e.segments.length) return !1; for (var t = 0; t < e.segments.length; t++) { if (!e.segments[t].dateTimeObject) return !1; } return !0; })(i) ) return l({ message: 'programDateTime tags must be provided in the manifest ' + i.resolvedUri }); var c = (function (e, t) { var i; try { i = new Date(e); } catch (e) { return null; } if (!t || !t.segments || 0 === t.segments.length) return null; var n = t.segments[0]; if (i < n.dateTimeObject) return null; for (var r = 0; r < t.segments.length - 1; r++) { if (((n = t.segments[r]), i < t.segments[r + 1].dateTimeObject)) break; } var a = t.segments[t.segments.length - 1], s = a.dateTimeObject, o = a.videoTimingInfo ? (function (e) { return ( e.transmuxedPresentationEnd - e.transmuxedPresentationStart - e.transmuxerPrependedSeconds ); })(a.videoTimingInfo) : a.duration + 0.25 * a.duration; return new Date(s.getTime() + 1e3 * o) < i ? null : (s < i && (n = a), { segment: n, estimatedStart: n.videoTimingInfo ? n.videoTimingInfo.transmuxedPresentationStart : ic.duration(t, t.mediaSequence + t.segments.indexOf(n)), type: n.videoTimingInfo ? 'accurate' : 'estimate' }); })(t, i); if (!c) return l({ message: t + ' was not found in the stream' }); var d = c.segment, h = (function (e, t) { var i, n; try { (i = new Date(e)), (n = new Date(t)); } catch (e) {} var r = i.getTime(); return (n.getTime() - r) / 1e3; })(d.dateTimeObject, t); if ('estimate' === c.type) return 0 === r ? l({ message: t + ' is not buffered yet. Try again' }) : (a(c.estimatedStart + h), void u.one('seeked', function () { bl({ programTime: t, playlist: i, retryCount: r - 1, seekTo: a, pauseAfterSeek: o, tech: u, callback: l }); })); var p = d.start + h; u.one('seeked', function () { return l(null, u.currentTime()); }), o && u.pause(), a(p); } function Tl(e, t) { if (4 === e.readyState) return t(); } function Sl(e) { var t = e.masterXml, i = e.srcUrl, n = e.clientOffset, r = e.sidxMapping, a = Eo(t, { manifestUri: i, clientOffset: n, sidxMapping: r }); return zu(a, i), a; } function kl(e, t) { for ( var s = !0, o = sc(e, { duration: t.duration, minimumUpdatePeriod: t.minimumUpdatePeriod }), i = 0; i < t.playlists.length; i++ ) { var n = Xu(o, t.playlists[i]); n && ((o = n), (s = !1)); } return ( Hu(t, function (e, t, i, n) { if (e.playlists && e.playlists.length) { var r = e.playlists[0].id, a = Xu(o, e.playlists[0]); a && (((o = a).mediaGroups[t][i][n].playlists[0] = o.playlists[r]), (s = !1)); } }), t.minimumUpdatePeriod !== e.minimumUpdatePeriod && (s = !1), s ? null : o ); } function Cl(e) { var t = e.byterange.offset + e.byterange.length - 1; return e.uri + '-' + e.byterange.offset + '-' + t; } function El(e, t) { var i, n, r = {}; for (var a in e) { var s = e[a].sidx; if (s) { var o = Cl(s); if (!t[o]) break; var u = t[o].sidxInfo; (i = u), (n = s), (Boolean(!i.map && !n.map) || Boolean( i.map && n.map && i.map.byterange.offset === n.map.byterange.offset && i.map.byterange.length === n.map.byterange.length )) && i.uri === n.uri && i.byterange.offset === n.byterange.offset && i.byterange.length === n.byterange.length && (r[o] = t[o]); } } return r; } function wl(o, e, u, l, t, c) { var d = { uri: ju(t.handleManifestRedirects, e.resolvedUri), byterange: e.byterange, playlist: u }, h = da.mergeOptions(d, { responseType: 'arraybuffer', headers: hl(d) }); return (function (e, t, r) { function a(e, t, i, n) { return t.abort(), (u = !0), r(e, t, i, n); } function i(e, t) { if (!u) { if (e) return a(e, t, '', o); var i = t.responseText.substring((o && o.byteLength) || 0, t.responseText.length); if (((o = Xo(o, Ko(i, !0))), (s = s || Ho(o)), o.length < 10 || (s && o.length < s + 2))) return Tl(t, function () { return a(e, t, '', o); }); var n = qo(o); return 'ts' === n && o.length < 188 ? Tl(t, function () { return a(e, t, '', o); }) : !n && o.length < 376 ? Tl(t, function () { return a(e, t, '', o); }) : a(null, t, n, o); } } var s, o = [], u = !1, n = t( { uri: e, beforeSend: function (t) { t.overrideMimeType('text/plain; charset=x-user-defined'), t.addEventListener('progress', function (e) { e.total, e.loaded; return cl(t, null, { statusCode: t.status }, i); }); } }, function (e, t) { return cl(n, e, t, i); } ); return n; })(d.uri, l, function (e, t, i, n) { if (e) return c(e, t); if (!i || 'mp4' !== i) return c( { status: t.status, message: 'Unsupported ' + (i || 'unknown') + ' container type for sidx segment at URL: ' + d.uri, response: '', playlist: u, internal: !0, blacklistDuration: 1 / 0, code: 2 }, t ); var r = d.byterange, a = r.offset, s = r.length; if (n.length >= s + a) return c(e, { response: n.subarray(a, a + s), status: t.status, uri: t.uri }); o.request = l(h, c); }); } function Il(e) { for (var t = new Uint8Array(new ArrayBuffer(e.length)), i = 0; i < e.length; i++) t[i] = e.charCodeAt(i); return t.buffer; } function Al(e) { var t = e.transmuxer, i = e.bytes, n = e.audioAppendStart, r = e.gopsToAlignWith, a = e.isPartial, s = e.remux, o = e.onData, u = e.onTrackInfo, l = e.onAudioTimingInfo, c = e.onVideoTimingInfo, d = e.onVideoSegmentTimingInfo, h = e.onId3, p = e.onCaptions, f = e.onDone, m = { isPartial: a, buffer: [] }; if ( ((t.onmessage = function (e) { Bl && ('data' === e.data.action && (function (e, t, i) { var n = e.data.segment, r = n.type, a = n.initSegment, s = n.captions, o = n.captionStreams, u = n.metadata, l = n.videoFrameDtsTime, c = n.videoFramePtsTime; t.buffer.push({ captions: s, captionStreams: o, metadata: u }); var d = e.data.segment.boxes || { data: e.data.segment.data }, h = { type: r, data: new Uint8Array(d.data, d.data.byteOffset, d.data.byteLength), initSegment: new Uint8Array(a.data, a.byteOffset, a.byteLength) }; 'undefined' != typeof l && (h.videoFrameDtsTime = l), 'undefined' != typeof c && (h.videoFramePtsTime = c), i(h); })(e, m, o), 'trackinfo' === e.data.action && u(e.data.trackInfo), 'gopInfo' === e.data.action && (function (e, t) { t.gopInfo = e.data.gopInfo; })(e, m), 'audioTimingInfo' === e.data.action && l(e.data.audioTimingInfo), 'videoTimingInfo' === e.data.action && c(e.data.videoTimingInfo), 'videoSegmentTimingInfo' === e.data.action && d(e.data.videoSegmentTimingInfo), 'id3Frame' === e.data.action && h([e.data.id3Frame], e.data.id3Frame.dispatchType), 'caption' === e.data.action && p(e.data.caption), 'transmuxed' === e.data.type && ((t.onmessage = null), (function (e) { var t = e.transmuxedData, i = e.callback; (t.buffer = []), i(t); })({ transmuxedData: m, callback: f }), cc())); }), n && t.postMessage({ action: 'setAudioAppendStart', appendStart: n }), Array.isArray(r) && t.postMessage({ action: 'alignGopsWith', gopsToAlignWith: r }), 'undefined' != typeof s && t.postMessage({ action: 'setRemux', remux: s }), i.byteLength) ) { var g = i instanceof ArrayBuffer ? i : i.buffer, v = i instanceof ArrayBuffer ? 0 : i.byteOffset; t.postMessage({ action: 'push', data: g, byteOffset: v, byteLength: i.byteLength }, [g]); } t.postMessage({ action: a ? 'partialFlush' : 'flush' }); } function xl(e, t) { e.postMessage({ action: t }), cc(); } function Pl(e, t) { Bl ? lc.push(xl.bind(null, t, e)) : xl(t, (Bl = e)); } function Ll(e) { Bl ? lc.push(e) : Al((Bl = e)); } function Ol(e) { e.forEach(function (e) { e.abort(); }); } function Dl(e, t) { return t.timedout ? { status: t.status, message: 'HLS request timed-out at URL: ' + t.uri, code: mc, xhr: t } : t.aborted ? { status: t.status, message: 'HLS request aborted at URL: ' + t.uri, code: gc, xhr: t } : e ? { status: t.status, message: 'HLS request errored at URL: ' + t.uri, code: fc, xhr: t } : null; } function Ml(e) { var i = e.segment, t = e.bytes, n = e.isPartial, r = e.trackInfoFn, a = e.timingInfoFn, s = e.videoSegmentTimingInfoFn, o = e.id3Fn, u = e.captionsFn, l = e.dataFn, c = e.doneFn, d = (i.map && i.map.tracks) || {}, h = Boolean(d.audio && d.video), p = a.bind(null, i, 'audio', 'start'), f = a.bind(null, i, 'audio', 'end'), m = a.bind(null, i, 'video', 'start'), g = a.bind(null, i, 'video', 'end'); if (!n && !i.lastReachedChar) { var v = (function (e, t) { var i = Eu(e, t * fu); if (!i) return null; var n = { hasVideo: (i.video && 2 === i.video.length) || !1, hasAudio: (i.audio && 2 === i.audio.length) || !1 }; return ( n.hasVideo && (n.videoStart = i.video[0].ptsTime), n.hasAudio && (n.audioStart = i.audio[0].ptsTime), n ); })(t, i.baseStartTime); v && (r(i, { hasAudio: v.hasAudio, hasVideo: v.hasVideo, isMuxed: h }), (r = null), v.hasAudio && !h && p(v.audioStart), v.hasVideo && m(v.videoStart), (m = p = null)); } Ll({ bytes: t, transmuxer: i.transmuxer, audioAppendStart: i.audioAppendStart, gopsToAlignWith: i.gopsToAlignWith, isPartial: n, remux: h, onData: function (e) { (e.type = 'combined' === e.type ? 'video' : e.type), l(i, e); }, onTrackInfo: function (e) { r && (h && (e.isMuxed = !0), r(i, e)); }, onAudioTimingInfo: function (e) { p && 'undefined' != typeof e.start && (p(e.start), (p = null)), f && 'undefined' != typeof e.end && f(e.end); }, onVideoTimingInfo: function (e) { m && 'undefined' != typeof e.start && (m(e.start), (m = null)), g && 'undefined' != typeof e.end && g(e.end); }, onVideoSegmentTimingInfo: function (e) { s(e); }, onId3: function (e, t) { o(i, e, t); }, onCaptions: function (e) { u(i, [e]); }, onDone: function (e) { c && !n && ((e.type = 'combined' === e.type ? 'video' : e.type), c(null, i, e)); } }); } function Rl(e) { var n = e.segment, r = e.bytes, t = e.isPartial, i = e.trackInfoFn, a = e.timingInfoFn, s = e.videoSegmentTimingInfoFn, o = e.id3Fn, u = e.captionsFn, l = e.dataFn, c = e.doneFn, d = new Uint8Array(r); if (Wo(d)) { n.isFmp4 = !0; var h = n.map.tracks, p = { isFmp4: !0, hasVideo: !!h.video, hasAudio: !!h.audio }; h.audio && h.audio.codec && 'enca' !== h.audio.codec && (p.audioCodec = h.audio.codec), h.video && h.video.codec && 'encv' !== h.video.codec && (p.videoCodec = h.video.codec), h.video && h.audio && (p.isMuxed = !0), i(n, p); var f = Uu(n.map.timescales, d); p.hasAudio && !p.isMuxed && a(n, 'audio', 'start', f), p.hasVideo && a(n, 'video', 'start', f); var m = function (e) { l(n, { data: r, type: p.hasAudio && !p.isMuxed ? 'audio' : 'video' }), e && e.length && u(n, e), c(null, n, {}); }; if (!h.video || !r.byteLength || !n.transmuxer) return void m(); var g = r instanceof ArrayBuffer ? r : r.buffer, v = r instanceof ArrayBuffer ? 0 : r.byteOffset; return ( n.transmuxer.addEventListener('message', function e(t) { if ('mp4Captions' === t.data.action) { n.transmuxer.removeEventListener('message', e); var i = t.data.data; (n.bytes = r = new Uint8Array(i, i.byteOffset || 0, i.byteLength)), m(t.data.captions); } }), void n.transmuxer.postMessage( { action: 'pushMp4Captions', timescales: n.map.timescales, trackIds: [h.video.id], data: g, byteOffset: v, byteLength: r.byteLength }, [g] ) ); } if (n.transmuxer) { if ( ('undefined' == typeof n.container && (n.container = qo(d)), 'ts' !== n.container && 'aac' !== n.container) ) return i(n, { hasAudio: !1, hasVideo: !1 }), void c(null, n, {}); Ml({ segment: n, bytes: r, isPartial: t, trackInfoFn: i, timingInfoFn: a, videoSegmentTimingInfoFn: s, id3Fn: o, captionsFn: u, dataFn: l, doneFn: c }); } else c(null, n, {}); } function Nl(e) { var i = e.activeXhrs, n = e.decryptionWorker, r = e.trackInfoFn, a = e.timingInfoFn, s = e.videoSegmentTimingInfoFn, o = e.id3Fn, u = e.captionsFn, l = e.dataFn, c = e.doneFn, d = 0, h = !1; return function (e, t) { if (!h) { if (e) return (h = !0), Ol(i), c(e, t); if ((d += 1) === i.length) { if (((t.endOfAllRequests = Date.now()), t.encryptedBytes)) return (function (e) { var t, n = e.decryptionWorker, r = e.segment, a = e.trackInfoFn, s = e.timingInfoFn, o = e.videoSegmentTimingInfoFn, u = e.id3Fn, l = e.captionsFn, c = e.dataFn, d = e.doneFn; n.addEventListener('message', function e(t) { if (t.data.source === r.requestId) { n.removeEventListener('message', e); var i = t.data.decrypted; (r.bytes = new Uint8Array(i.bytes, i.byteOffset, i.byteLength)), Rl({ segment: r, bytes: r.bytes, isPartial: !1, trackInfoFn: a, timingInfoFn: s, videoSegmentTimingInfoFn: o, id3Fn: u, captionsFn: l, dataFn: c, doneFn: d }); } }), (t = r.key.bytes.slice ? r.key.bytes.slice() : new Uint32Array(Array.prototype.slice.call(r.key.bytes))), n.postMessage( ml({ source: r.requestId, encrypted: r.encryptedBytes, key: t, iv: r.key.iv }), [r.encryptedBytes.buffer, t.buffer] ); })({ decryptionWorker: n, segment: t, trackInfoFn: r, timingInfoFn: a, videoSegmentTimingInfoFn: s, id3Fn: o, captionsFn: u, dataFn: l, doneFn: c }); Rl({ segment: t, bytes: t.bytes, isPartial: !1, trackInfoFn: r, timingInfoFn: a, videoSegmentTimingInfoFn: s, id3Fn: o, captionsFn: u, dataFn: l, doneFn: c }); } } }; } function Ul(e) { var n = e.segment, r = e.progressFn, a = e.trackInfoFn, s = e.timingInfoFn, o = e.videoSegmentTimingInfoFn, u = e.id3Fn, l = e.captionsFn, c = e.dataFn, d = e.handlePartialData; return function (e) { var t = e.target; if (!t.aborted) { if (d && !n.key && t.responseText && 8 <= t.responseText.length) { var i = Il(t.responseText.substring(n.lastReachedChar || 0)); (!n.lastReachedChar && Wo(new Uint8Array(i))) || ((n.lastReachedChar = t.responseText.length), Rl({ segment: n, bytes: i, isPartial: !0, trackInfoFn: a, timingInfoFn: s, videoSegmentTimingInfoFn: o, id3Fn: u, captionsFn: l, dataFn: c })); } return ( (n.stats = da.mergeOptions( n.stats, (function (e) { var t = e.target, i = { bandwidth: 1 / 0, bytesReceived: 0, roundTripTime: Date.now() - t.requestTime || 0 }; return ( (i.bytesReceived = e.loaded), (i.bandwidth = Math.floor((i.bytesReceived / i.roundTripTime) * 8 * 1e3)), i ); })(e) )), !n.stats.firstBytesReceivedAt && n.stats.bytesReceived && (n.stats.firstBytesReceivedAt = Date.now()), r(e, n) ); } }; } function Fl(e) { var t = e.xhr, i = e.xhrOptions, n = e.decryptionWorker, r = e.segment, a = e.abortFn, s = e.progressFn, o = e.trackInfoFn, u = e.timingInfoFn, l = e.videoSegmentTimingInfoFn, c = e.id3Fn, d = e.captionsFn, h = e.dataFn, p = e.doneFn, f = e.handlePartialData, m = [], g = Nl({ activeXhrs: m, decryptionWorker: n, trackInfoFn: o, timingInfoFn: u, videoSegmentTimingInfoFn: l, id3Fn: c, captionsFn: d, dataFn: h, doneFn: p }); if (r.key && !r.key.bytes) { var v = t( da.mergeOptions(i, { uri: r.key.resolvedUri, responseType: 'arraybuffer' }), (function (a, s) { return function (e, t) { var i = t.response, n = Dl(e, t); if (n) return s(n, a); if (16 !== i.byteLength) return s( { status: t.status, message: 'Invalid HLS key at URL: ' + t.uri, code: fc, xhr: t }, a ); var r = new DataView(i); return ( (a.key.bytes = new Uint32Array([ r.getUint32(0), r.getUint32(4), r.getUint32(8), r.getUint32(12) ])), s(null, a) ); }; })(r, g) ); m.push(v); } if (r.map && !r.map.bytes) { var y = t( da.mergeOptions(i, { uri: r.map.resolvedUri, responseType: 'arraybuffer', headers: hl(r.map) }), (function (e) { var a = e.segment, s = e.finishProcessingFn; return function (e, t) { var i = t.response, n = Dl(e, t); if (n) return s(n, a); if (0 === i.byteLength) return s( { status: t.status, message: 'Empty HLS segment content at URL: ' + t.uri, code: fc, xhr: t }, a ); a.map.bytes = new Uint8Array(t.response); var r = qo(a.map.bytes); return 'mp4' !== r ? s( { status: t.status, message: 'Found unsupported ' + (r || 'unknown') + ' container for initialization segment at URL: ' + t.uri, code: fc, internal: !0, xhr: t }, a ) : (Fu(a.map.bytes).forEach(function (e) { (a.map.tracks = a.map.tracks || {}), a.map.tracks[e.type] || ((a.map.tracks[e.type] = e).id && e.timescale && ((a.map.timescales = a.map.timescales || {}), (a.map.timescales[e.id] = e.timescale))); }), s(null, a)); }; })({ segment: r, finishProcessingFn: g }) ); m.push(y); } var _ = da.mergeOptions(i, { uri: r.resolvedUri, responseType: 'arraybuffer', headers: hl(r) }); f && ((_.responseType = 'text'), (_.beforeSend = function (e) { e.overrideMimeType('text/plain; charset=x-user-defined'); })); var b = t( _, (function (e) { var a = e.segment, s = e.finishProcessingFn, o = e.responseType; return function (e, t) { var i = t.response, n = Dl(e, t); if (n) return s(n, a); var r = 'arraybuffer' !== o && t.responseText ? Il(t.responseText.substring(a.lastReachedChar || 0)) : t.response; return 0 === i.byteLength ? s( { status: t.status, message: 'Empty HLS segment content at URL: ' + t.uri, code: fc, xhr: t }, a ) : ((a.stats = (function (e) { return { bandwidth: e.bandwidth, bytesReceived: e.bytesReceived || 0, roundTripTime: e.roundTripTime || 0 }; })(t)), a.key ? (a.encryptedBytes = new Uint8Array(r)) : (a.bytes = new Uint8Array(r)), s(null, a)); }; })({ segment: r, finishProcessingFn: g, responseType: _.responseType }) ); b.addEventListener( 'progress', Ul({ segment: r, progressFn: s, trackInfoFn: o, timingInfoFn: u, videoSegmentTimingInfoFn: l, id3Fn: c, captionsFn: d, dataFn: h, handlePartialData: f }) ), m.push(b); var T = {}; return ( m.forEach(function (e) { e.addEventListener( 'loadend', (function (e) { var t = e.loadendState, i = e.abortFn; return function (e) { e.target.aborted && i && !t.calledAbortFn && (i(), (t.calledAbortFn = !0)); }; })({ loadendState: T, abortFn: a }) ); }), function () { return Ol(m); } ); } var Bl, jl = Bu.DEFAULT_AUDIO_CODEC, Vl = Bu.DEFAULT_VIDEO_CODEC, ql = Bu.browserSupportsCodec, Hl = Bu.codecsFromDefault, Wl = Bu.getMimeForCodec, zl = Bu.isAudioCodec, Gl = Bu.isVideoCodec, Xl = (Bu.mapLegacyAvcCodecs, Bu.muxerSupportsCodec), Kl = Bu.parseCodecs, Yl = Bu.translateLegacyCodec, $l = (Bu.translateLegacyCodecs, va), Ql = da.log, Jl = da.mergeOptions, Zl = (function (c) { function e(e, t, i) { var n; if ((void 0 === i && (i = {}), (n = c.call(this) || this), !e)) throw new Error('A non-empty playlist URL or object is required'); var r = i, a = r.withCredentials, s = void 0 !== a && a, o = r.handleManifestRedirects, u = void 0 !== o && o; (n.src = e), (n.vhs_ = t), (n.withCredentials = s), (n.handleManifestRedirects = u); var l = t.options_; return ( (n.customTagParsers = (l && l.customTagParsers) || []), (n.customTagMappers = (l && l.customTagMappers) || []), (n.state = 'HAVE_NOTHING'), n.on('mediaupdatetimeout', function () { 'HAVE_METADATA' === n.state && ((n.state = 'HAVE_CURRENT_METADATA'), (n.request = n.vhs_.xhr( { uri: $l(n.master.uri, n.media().uri), withCredentials: n.withCredentials }, function (e, t) { if (n.request) return e ? n.playlistRequestError(n.request, n.media(), 'HAVE_METADATA') : void n.haveMetadata({ playlistString: n.request.responseText, url: n.media().uri, id: n.media().id }); } ))); }), n ); } Ge(e, c); var t = e.prototype; return ( (t.playlistRequestError = function (e, t, i) { var n = t.uri, r = t.id; (this.request = null), i && (this.state = i), (this.error = { playlist: this.master.playlists[r], status: e.status, message: 'HLS playlist request error at URL: ' + n + '.', responseText: e.responseText, code: 500 <= e.status ? 4 : 2 }), this.trigger('error'); }), (t.haveMetadata = function (e) { var t = this, i = e.playlistString, n = e.playlistObject, r = e.url, a = e.id; (this.request = null), (this.state = 'HAVE_METADATA'); var s = n || qu({ manifestString: i, customTagParsers: this.customTagParsers, customTagMappers: this.customTagMappers }); Wu({ playlist: s, uri: r, id: a }); var o = Xu(this.master, s); (this.targetDuration = s.targetDuration), o ? ((this.master = o), (this.media_ = this.master.playlists[a])) : this.trigger('playlistunchanged'), this.media().endList || (T.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = T.setTimeout(function () { t.trigger('mediaupdatetimeout'); }, Ku(this.media(), !!o)))), this.trigger('loadedplaylist'); }), (t.dispose = function () { this.trigger('dispose'), this.stopRequest(), T.clearTimeout(this.mediaUpdateTimeout), T.clearTimeout(this.finalRenditionTimeout), this.off(); }), (t.stopRequest = function () { if (this.request) { var e = this.request; (this.request = null), (e.onreadystatechange = null), e.abort(); } }), (t.media = function (i, e) { var n = this; if (!i) return this.media_; if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state); if ('string' == typeof i) { if (!this.master.playlists[i]) throw new Error('Unknown playlist URI: ' + i); i = this.master.playlists[i]; } if ((T.clearTimeout(this.finalRenditionTimeout), e)) { var t = (i.targetDuration / 2) * 1e3 || 5e3; this.finalRenditionTimeout = T.setTimeout(this.media.bind(this, i, !1), t); } else { var r = this.state, a = !this.media_ || i.id !== this.media_.id; if (this.master.playlists[i.id].endList || (i.endList && i.segments.length)) return ( this.request && ((this.request.onreadystatechange = null), this.request.abort(), (this.request = null)), (this.state = 'HAVE_METADATA'), (this.media_ = i), void ( a && (this.trigger('mediachanging'), 'HAVE_MASTER' === r ? this.trigger('loadedmetadata') : this.trigger('mediachange')) ) ); if (a) { if (((this.state = 'SWITCHING_MEDIA'), this.request)) { if (i.resolvedUri === this.request.url) return; (this.request.onreadystatechange = null), this.request.abort(), (this.request = null); } this.media_ && this.trigger('mediachanging'), (this.request = this.vhs_.xhr( { uri: i.resolvedUri, withCredentials: this.withCredentials }, function (e, t) { if (n.request) { if (((i.resolvedUri = ju(n.handleManifestRedirects, i.resolvedUri, t)), e)) return n.playlistRequestError(n.request, i, r); n.haveMetadata({ playlistString: t.responseText, url: i.uri, id: i.id }), 'HAVE_MASTER' === r ? n.trigger('loadedmetadata') : n.trigger('mediachange'); } } )); } } }), (t.pause = function () { this.stopRequest(), T.clearTimeout(this.mediaUpdateTimeout), 'HAVE_NOTHING' === this.state && (this.started = !1), 'SWITCHING_MEDIA' === this.state ? this.media_ ? (this.state = 'HAVE_METADATA') : (this.state = 'HAVE_MASTER') : 'HAVE_CURRENT_METADATA' === this.state && (this.state = 'HAVE_METADATA'); }), (t.load = function (e) { var t = this; T.clearTimeout(this.mediaUpdateTimeout); var i = this.media(); if (e) { var n = i ? (i.targetDuration / 2) * 1e3 : 5e3; this.mediaUpdateTimeout = T.setTimeout(function () { return t.load(); }, n); } else this.started ? i && !i.endList ? this.trigger('mediaupdatetimeout') : this.trigger('loadedplaylist') : this.start(); }), (t.start = function () { var n = this; if (((this.started = !0), 'object' == typeof this.src)) return ( this.src.uri || (this.src.uri = T.location.href), (this.src.resolvedUri = this.src.uri), void setTimeout(function () { n.setupInitialPlaylist(n.src); }, 0) ); this.request = this.vhs_.xhr( { uri: this.src, withCredentials: this.withCredentials }, function (e, t) { if (n.request) { if (((n.request = null), e)) return ( (n.error = { status: t.status, message: 'HLS playlist request error at URL: ' + n.src + '.', responseText: t.responseText, code: 2 }), 'HAVE_NOTHING' === n.state && (n.started = !1), n.trigger('error') ); n.src = ju(n.handleManifestRedirects, n.src, t); var i = qu({ manifestString: t.responseText, customTagParsers: n.customTagParsers, customTagMappers: n.customTagMappers }); n.setupInitialPlaylist(i); } } ); }), (t.srcUri = function () { return 'string' == typeof this.src ? this.src : this.src.uri; }), (t.setupInitialPlaylist = function (e) { if (((this.state = 'HAVE_MASTER'), e.playlists)) return ( (this.master = e), zu(this.master, this.srcUri()), e.playlists.forEach(function (t) { t.segments && t.segments.forEach(function (e) { Gu(e, t.resolvedUri); }); }), this.trigger('loadedplaylist'), void (this.request || this.media(this.master.playlists[0])) ); var t = this.srcUri() || T.location.href; (this.master = (function (e, t) { var i = Vu(0, t), n = { mediaGroups: { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} }, uri: T.location.href, resolvedUri: T.location.href, playlists: [{ uri: t, id: i, resolvedUri: t, attributes: {} }] }; return (n.playlists[i] = n.playlists[0]), (n.playlists[t] = n.playlists[0]), n; })(0, t)), this.haveMetadata({ playlistObject: e, url: t, id: this.master.playlists[0].id }), this.trigger('loadedmetadata'); }), e ); })(da.EventTarget), ec = 1 / 30, tc = da.createTimeRange, ic = { duration: tl, seekable: function (e, t, i) { var n = t || 0, r = rl(e, t, !0, i); return null === r ? tc() : tc(n, r); }, safeLiveIndex: nl, getMediaInfoForTime: function (e, t, i, n) { var r, a = e.segments.length, s = t - n; if (s < 0) { if (0 < i) for (r = i - 1; 0 <= r; r--) if (0 < (s += e.segments[r].duration + ec)) return { mediaIndex: r, startTime: n - il(e, i, r) }; return { mediaIndex: 0, startTime: t }; } if (i < 0) { for (r = i; r < 0; r++) if ((s -= e.targetDuration) < 0) return { mediaIndex: 0, startTime: t }; i = 0; } for (r = i; r < a; r++) if ((s -= e.segments[r].duration + ec) < 0) return { mediaIndex: r, startTime: n + il(e, i, r) }; return { mediaIndex: a - 1, startTime: t }; }, isEnabled: ol, isDisabled: function (e) { return e.disabled; }, isBlacklisted: al, isIncompatible: sl, playlistEnd: rl, isAes: function (e) { for (var t = 0; t < e.segments.length; t++) if (e.segments[t].key) return !0; return !1; }, hasAttribute: ul, estimateSegmentRequestTime: function (e, t, i, n) { return ( void 0 === n && (n = 0), ul('BANDWIDTH', i) ? (e * i.attributes.BANDWIDTH - 8 * n) / t : NaN ); }, isLowestEnabledRendition: ll }, nc = da.xhr, rc = da.mergeOptions, ac = Object.freeze({ __proto__: null, createTransferableMessage: ml, initSegmentId: gl, segmentKeyId: vl, hexDump: yl, tagDump: function (e) { var t = e.bytes; return yl(t); }, textRanges: function (e) { var t, i, n, r = ''; for (t = 0; t < e.length; t++) r += ((n = t), (i = e).start(n) + '-' + i.end(n) + ' '); return r; } }), sc = da.mergeOptions, oc = (function (c) { function e(e, t, i, n) { var r; void 0 === i && (i = {}), (r = c.call(this) || this); var a = i, s = a.withCredentials, o = void 0 !== s && s, u = a.handleManifestRedirects, l = void 0 !== u && u; if (((r.vhs_ = t), (r.withCredentials = o), (r.handleManifestRedirects = l), !e)) throw new Error('A non-empty playlist URL or object is required'); return ( r.on('minimumUpdatePeriod', function () { r.refreshXml_(); }), r.on('mediaupdatetimeout', function () { r.refreshMedia_(r.media().id); }), (r.state = 'HAVE_NOTHING'), (r.loadedPlaylists_ = {}), 'string' == typeof e ? ((r.srcUrl = e), (r.sidxMapping_ = {}), Ve(r)) : (r.setupChildLoader(n, e), r) ); } Ge(e, c); var t = e.prototype; return ( (t.setupChildLoader = function (e, t) { (this.masterPlaylistLoader_ = e), (this.childPlaylist_ = t); }), (t.dispose = function () { this.trigger('dispose'), this.stopRequest(), (this.loadedPlaylists_ = {}), T.clearTimeout(this.minimumUpdatePeriodTimeout_), T.clearTimeout(this.mediaRequest_), T.clearTimeout(this.mediaUpdateTimeout), this.off(); }), (t.hasPendingRequest = function () { return this.request || this.mediaRequest_; }), (t.stopRequest = function () { if (this.request) { var e = this.request; (this.request = null), (e.onreadystatechange = null), e.abort(); } }), (t.sidxRequestFinished_ = function (r, a, s, o) { var u = this; return function (e, t) { if (u.request) { if (((u.request = null), e)) return ( (u.error = 'object' == typeof e ? e : { status: t.status, message: 'DASH playlist request error at URL: ' + r.uri, response: t.response, code: 2 }), s && (u.state = s), void u.trigger('error') ); var i = Yo(t.response), n = jo(i.subarray(8)); return o(a, n); } }; }), (t.media = function (i) { var n = this; if (!i) return this.media_; if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state); var r = this.state; if ('string' == typeof i) { if (!this.master.playlists[i]) throw new Error('Unknown playlist URI: ' + i); i = this.master.playlists[i]; } var e = !this.media_ || i.id !== this.media_.id; if (e && this.loadedPlaylists_[i.id] && this.loadedPlaylists_[i.id].endList) return ( (this.state = 'HAVE_METADATA'), (this.media_ = i), void (e && (this.trigger('mediachanging'), this.trigger('mediachange'))) ); if (e) if ((this.media_ && this.trigger('mediachanging'), i.sidx)) { var t, a; a = this.masterPlaylistLoader_ ? ((t = this.masterPlaylistLoader_.master), this.masterPlaylistLoader_.sidxMapping_) : ((t = this.master), this.sidxMapping_); var s = Cl(i.sidx); (a[s] = { sidxInfo: i.sidx }), (this.request = wl( this, i.sidx, i, this.vhs_.xhr, { handleManifestRedirects: this.handleManifestRedirects }, this.sidxRequestFinished_(i, t, r, function (e, t) { if (!e || !t) throw new Error('failed to request sidx'); (a[s].sidx = t), n.haveMetadata({ startingState: r, playlist: e.playlists[i.id] }); }) )); } else this.mediaRequest_ = T.setTimeout( this.haveMetadata.bind(this, { startingState: r, playlist: i }), 0 ); }), (t.haveMetadata = function (e) { var t = e.startingState, i = e.playlist; (this.state = 'HAVE_METADATA'), (this.loadedPlaylists_[i.id] = i), (this.mediaRequest_ = null), this.refreshMedia_(i.id), 'HAVE_MASTER' === t ? this.trigger('loadedmetadata') : this.trigger('mediachange'); }), (t.pause = function () { this.stopRequest(), T.clearTimeout(this.mediaUpdateTimeout), T.clearTimeout(this.minimumUpdatePeriodTimeout_), 'HAVE_NOTHING' === this.state && (this.started = !1); }), (t.load = function (e) { var t = this; T.clearTimeout(this.mediaUpdateTimeout), T.clearTimeout(this.minimumUpdatePeriodTimeout_); var i = this.media(); if (e) { var n = i ? (i.targetDuration / 2) * 1e3 : 5e3; this.mediaUpdateTimeout = T.setTimeout(function () { return t.load(); }, n); } else this.started ? i && !i.endList ? this.trigger('mediaupdatetimeout') : this.trigger('loadedplaylist') : this.start(); }), (t.start = function () { var i = this; (this.started = !0), this.masterPlaylistLoader_ ? (this.mediaRequest_ = T.setTimeout(this.haveMaster_.bind(this), 0)) : (this.request = this.vhs_.xhr( { uri: this.srcUrl, withCredentials: this.withCredentials }, function (e, t) { if (i.request) { if (((i.request = null), e)) return ( (i.error = { status: t.status, message: 'DASH playlist request error at URL: ' + i.srcUrl, responseText: t.responseText, code: 2 }), 'HAVE_NOTHING' === i.state && (i.started = !1), i.trigger('error') ); (i.masterXml_ = t.responseText), t.responseHeaders && t.responseHeaders.date ? (i.masterLoaded_ = Date.parse(t.responseHeaders.date)) : (i.masterLoaded_ = Date.now()), (i.srcUrl = ju(i.handleManifestRedirects, i.srcUrl, t)), i.syncClientServerClock_(i.onClientServerClockSync_.bind(i)); } } )); }), (t.syncClientServerClock_ = function (n) { var r = this, a = wo(this.masterXml_); return null === a ? ((this.clientOffset_ = this.masterLoaded_ - Date.now()), n()) : 'DIRECT' === a.method ? ((this.clientOffset_ = a.value - Date.now()), n()) : void (this.request = this.vhs_.xhr( { uri: $l(this.srcUrl, a.value), method: a.method, withCredentials: this.withCredentials }, function (e, t) { if (r.request) { if (e) return (r.clientOffset_ = r.masterLoaded_ - Date.now()), n(); var i; (i = 'HEAD' === a.method ? t.responseHeaders && t.responseHeaders.date ? Date.parse(t.responseHeaders.date) : r.masterLoaded_ : Date.parse(t.responseText)), (r.clientOffset_ = i - Date.now()), n(); } } )); }), (t.haveMaster_ = function () { (this.state = 'HAVE_MASTER'), (this.mediaRequest_ = null), this.masterPlaylistLoader_ ? this.media_ || this.media(this.childPlaylist_) : (this.updateMainManifest_( Sl({ masterXml: this.masterXml_, srcUrl: this.srcUrl, clientOffset: this.clientOffset_, sidxMapping: this.sidxMapping_ }) ), this.trigger('loadedplaylist')); }), (t.updateMinimumUpdatePeriodTimeout_ = function () { var t = this; T.clearTimeout(this.minimumUpdatePeriodTimeout_); function e(e) { t.minimumUpdatePeriodTimeout_ = T.setTimeout(function () { t.trigger('minimumUpdatePeriod'); }, e); } var i = this.master && this.master.minimumUpdatePeriod; 0 < i ? e(i) : 0 === i && (this.media() ? e(1e3 * this.media().targetDuration) : this.one('loadedplaylist', function () { e(1e3 * t.media().targetDuration); })); }), (t.onClientServerClockSync_ = function () { this.haveMaster_(), this.hasPendingRequest() || this.media_ || this.media(this.master.playlists[0]), this.updateMinimumUpdatePeriodTimeout_(); }), (t.updateMainManifest_ = function (e) { if (((this.master = e), this.master.locations && this.master.locations.length)) { var t = this.master.locations[0]; t !== this.srcUrl && (this.srcUrl = t); } }), (t.refreshXml_ = function () { var o = this; this.request = this.vhs_.xhr( { uri: this.srcUrl, withCredentials: this.withCredentials }, function (e, t) { if (o.request) { if (((o.request = null), e)) return ( (o.error = { status: t.status, message: 'DASH playlist request error at URL: ' + o.srcUrl, responseText: t.responseText, code: 2 }), 'HAVE_NOTHING' === o.state && (o.started = !1), o.trigger('error') ); (o.masterXml_ = t.responseText), (o.sidxMapping_ = (function (e, t, i, a) { var n = Eo(e, { manifestUri: t, clientOffset: i }), s = El(n.playlists, a); return ( Hu(n, function (e, t, i, n) { if (e.playlists && e.playlists.length) { var r = e.playlists; s = sc(s, El(r, a)); } }), s ); })(o.masterXml_, o.srcUrl, o.clientOffset_, o.sidxMapping_)); var i = Sl({ masterXml: o.masterXml_, srcUrl: o.srcUrl, clientOffset: o.clientOffset_, sidxMapping: o.sidxMapping_ }), n = kl(o.master, i), r = o.media().sidx; if (n) if (r) { var a = Cl(r); if (!o.sidxMapping_[a]) { var s = o.media(); o.request = wl( o, s.sidx, s, o.vhs_.xhr, { handleManifestRedirects: o.handleManifestRedirects }, o.sidxRequestFinished_(s, i, o.state, function (e, t) { if (!e || !t) throw new Error('failed to request sidx on minimumUpdatePeriod'); (o.sidxMapping_[a].sidx = t), o.updateMinimumUpdatePeriodTimeout_(), o.refreshMedia_(o.media().id); }) ); } } else o.updateMainManifest_(n), o.media_ && (o.media_ = o.master.playlists[o.media_.id]); o.updateMinimumUpdatePeriodTimeout_(); } } ); }), (t.refreshMedia_ = function (e) { var t, i, n = this; if (!e) throw new Error('refreshMedia_ must take a media id'); i = this.masterPlaylistLoader_ ? ((t = this.masterPlaylistLoader_.master), Sl({ masterXml: this.masterPlaylistLoader_.masterXml_, srcUrl: this.masterPlaylistLoader_.srcUrl, clientOffset: this.masterPlaylistLoader_.clientOffset_, sidxMapping: this.masterPlaylistLoader_.sidxMapping_ })) : ((t = this.master), Sl({ masterXml: this.masterXml_, srcUrl: this.srcUrl, clientOffset: this.clientOffset_, sidxMapping: this.sidxMapping_ })); var r = kl(t, i); r ? (this.masterPlaylistLoader_ ? (this.masterPlaylistLoader_.master = r) : (this.master = r), (this.media_ = r.playlists[e])) : ((this.media_ = t.playlists[e]), this.trigger('playlistunchanged')), this.media().endList || (this.mediaUpdateTimeout = T.setTimeout(function () { n.trigger('mediaupdatetimeout'); }, Ku(this.media(), !!r))), this.trigger('loadedplaylist'); }), e ); })(da.EventTarget), uc = { GOAL_BUFFER_LENGTH: 30, MAX_GOAL_BUFFER_LENGTH: 60, BACK_BUFFER_LENGTH: 30, GOAL_BUFFER_LENGTH_RATE: 1, INITIAL_BANDWIDTH: 4194304, BANDWIDTH_VARIANCE: 1.2, BUFFER_LOW_WATER_LINE: 0, MAX_BUFFER_LOW_WATER_LINE: 30, BUFFER_LOW_WATER_LINE_RATE: 1 }, lc = [], cc = function () { (Bl = null), lc.length && ('function' == typeof (Bl = lc.shift()) ? Bl() : Al(Bl)); }, dc = function (e) { Pl('reset', e); }, hc = function () { (Bl = null), (lc.length = 0); }, pc = function (e) { Pl('endTimeline', e); }, fc = 2, mc = -101, gc = -102, vc = 'undefined' != typeof window ? window : {}, yc = 'undefined' == typeof Symbol ? '__target' : Symbol(), _c = 'application/javascript', bc = vc.BlobBuilder || vc.WebKitBlobBuilder || vc.MozBlobBuilder || vc.MSBlobBuilder, Tc = vc.URL || vc.webkitURL || (Tc && Tc.msURL), Sc = vc.Worker; function kc(r, a) { return function (e) { var t = this; if (!a) return new Sc(r); if (Sc && !e) { var i = Ic( a .toString() .replace(/^function.+?{/, '') .slice(0, -1) ); return ( (this[yc] = new Sc(i)), (function (e, t) { if (!e || !t) return; var i = e.terminate; (e.objURL = t), (e.terminate = function () { e.objURL && Tc.revokeObjectURL(e.objURL), i.call(e); }); })(this[yc], i), this[yc] ); } var n = { postMessage: function (e) { t.onmessage && setTimeout(function () { t.onmessage({ data: e, target: n }); }); } }; a.call(n), (this.postMessage = function (e) { setTimeout(function () { n.onmessage({ data: e, target: t }); }); }), (this.isThisThread = !0); }; } if (Sc) { var Cc, Ec = Ic('self.onmessage = function () {}'), wc = new Uint8Array(1); try { (Cc = new Sc(Ec)).postMessage(wc, [wc.buffer]); } catch (e) { Sc = null; } finally { Tc.revokeObjectURL(Ec), Cc && Cc.terminate(); } } function Ic(t) { try { return Tc.createObjectURL(new Blob([t], { type: _c })); } catch (e) { var i = new bc(); return i.append(t), Tc.createObjectURL(i.getBlob(type)); } } function Ac(e, t) { var i = t.attributes || {}; return e && e.mediaGroups && e.mediaGroups.AUDIO && i.AUDIO && e.mediaGroups.AUDIO[i.AUDIO]; } function xc(e, t) { var i = t.attributes || {}, n = (function (e) { var t = e.attributes || {}; if (t.CODECS) return Kl(t.CODECS); })(t) || {}; if ( Ac(e, t) && !n.audio && !(function (e, t) { if (!Ac(e, t)) return !0; var i = t.attributes || {}, n = e.mediaGroups.AUDIO[i.AUDIO]; for (var r in n) if (!n[r].uri && !n[r].playlists) return !0; return !1; })(e, t) ) { var r = Hl(e, i.AUDIO); r && (n.audio = r.audio); } var a = {}; return ( n.video && (a.video = Yl('' + n.video.type + n.video.details)), n.audio && (a.audio = Yl('' + n.audio.type + n.audio.details)), a ); } function Pc(e) { return da.log.debug ? da.log.debug.bind(da, 'VHS:', e + ' >') : function () {}; } function Lc(e) { if (e && e.playlist) { var t = e.playlist; return JSON.stringify({ id: t.id, bandwidth: e.bandwidth, width: e.width, height: e.height, codecs: (t.attributes && t.attributes.CODECS) || '' }); } } function Oc(e, t) { if (!e) return ''; var i = T.getComputedStyle(e); return i ? i[t] : ''; } function Dc(e, n) { var r = e.slice(); e.sort(function (e, t) { var i = n(e, t); return 0 === i ? r.indexOf(e) - r.indexOf(t) : i; }); } function Mc(e, t) { var i, n; return ( e.attributes.BANDWIDTH && (i = e.attributes.BANDWIDTH), (i = i || T.Number.MAX_VALUE), t.attributes.BANDWIDTH && (n = t.attributes.BANDWIDTH), i - (n = n || T.Number.MAX_VALUE) ); } function Rc(e) { var t = e.inbandTextTracks, i = e.metadataArray, n = e.timestampOffset, r = e.videoDuration; if (i) { var a = T.WebKitDataCue || T.VTTCue, s = t.metadataTrack_; if ( s && (i.forEach(function (e) { var i = e.cueTime + n; !('number' != typeof i || T.isNaN(i) || i < 0) && i < 1 / 0 && e.frames.forEach(function (e) { var t = new a(i, i, e.value || e.url || e.data || ''); (t.frame = e), (t.value = e), (function (e) { Object.defineProperties(e.frame, { id: { get: function () { return ( da.log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'), e.value.key ); } }, value: { get: function () { return ( da.log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'), e.value.data ); } }, privateData: { get: function () { return ( da.log.warn( 'cue.frame.privateData is deprecated. Use cue.value.data instead.' ), e.value.data ); } } }); })(t), s.addCue(t); }); }), s.cues && s.cues.length) ) { for (var o = s.cues, u = [], l = 0; l < o.length; l++) o[l] && u.push(o[l]); var c = u.reduce(function (e, t) { var i = e[t.startTime] || []; return i.push(t), (e[t.startTime] = i), e; }, {}), d = Object.keys(c).sort(function (e, t) { return Number(e) - Number(t); }); d.forEach(function (e, t) { var i = c[e], n = Number(d[t + 1]) || r; i.forEach(function (e) { e.endTime = n; }); }); } } } function Nc(e, t, i) { var n, r; if (i && i.cues) for (n = i.cues.length; n--; ) (r = i.cues[n]).startTime >= e && r.endTime <= t && i.removeCue(r); } function Uc(e) { return 'number' == typeof e && isFinite(e); } function Fc(e) { return e + 'TimingInfo'; } function Bc(e) { var t = e.segmentTimeline, i = e.currentTimeline, n = e.startOfSegment, r = e.buffered; return e.overrideCheck || t !== i ? (r.length ? r.end(r.length - 1) : n) : null; } function jc(e) { var t = e.timelineChangeController, i = e.currentTimeline, n = e.segmentTimeline, r = e.loaderType, a = e.audioDisabled; if (i === n) return !1; if ('audio' === r) { var s = t.lastTimelineChange({ type: 'main' }); return !s || s.to !== n; } if ('main' === r && a) { var o = t.pendingTimelineChange({ type: 'audio' }); return !o || o.to !== n; } return !1; } var Vc = new kc('./transmuxer-worker.worker.js', function (e, t) { var Zt = this; /*! @name @videojs/http-streaming @version 2.2.4 @license Apache-2.0 */ !(function () { function e() { this.init = function () { var a = {}; (this.on = function (e, t) { a[e] || (a[e] = []), (a[e] = a[e].concat(t)); }), (this.off = function (e, t) { var i; return ( !!a[e] && ((i = a[e].indexOf(t)), (a[e] = a[e].slice()), a[e].splice(i, 1), -1 < i) ); }), (this.trigger = function (e) { var t, i, n, r; if ((t = a[e])) if (2 === arguments.length) for (n = t.length, i = 0; i < n; ++i) t[i].call(this, arguments[1]); else { for (r = [], i = arguments.length, i = 1; i < arguments.length; ++i) r.push(arguments[i]); for (n = t.length, i = 0; i < n; ++i) t[i].apply(this, r); } }), (this.dispose = function () { a = {}; }); }; } (e.prototype.pipe = function (t) { return ( this.on('data', function (e) { t.push(e); }), this.on('done', function (e) { t.flush(e); }), this.on('partialdone', function (e) { t.partialFlush(e); }), this.on('endedtimeline', function (e) { t.endTimeline(e); }), this.on('reset', function (e) { t.reset(e); }), t ); }), (e.prototype.push = function (e) { this.trigger('data', e); }), (e.prototype.flush = function (e) { this.trigger('done', e); }), (e.prototype.partialFlush = function (e) { this.trigger('partialdone', e); }), (e.prototype.endTimeline = function (e) { this.trigger('endedtimeline', e); }), (e.prototype.reset = function (e) { this.trigger('reset', e); }); var l, t, i, r, a, n, s, o, u, c, d, h, p, f, m, g, v, y, _, b, T, S, k, C, E, w, I, A, x, P, L, O, D, M, R, N, U, F, B, j, V = e, q = Math.pow(2, 32) - 1; !(function () { var e; if ( ((S = { avc1: [], avcC: [], btrt: [], dinf: [], dref: [], esds: [], ftyp: [], hdlr: [], mdat: [], mdhd: [], mdia: [], mfhd: [], minf: [], moof: [], moov: [], mp4a: [], mvex: [], mvhd: [], pasp: [], sdtp: [], smhd: [], stbl: [], stco: [], stsc: [], stsd: [], stsz: [], stts: [], styp: [], tfdt: [], tfhd: [], traf: [], trak: [], trun: [], trex: [], tkhd: [], vmhd: [] }), 'undefined' != typeof Uint8Array) ) { for (e in S) S.hasOwnProperty(e) && (S[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]); (k = new Uint8Array([ 'i'.charCodeAt(0), 's'.charCodeAt(0), 'o'.charCodeAt(0), 'm'.charCodeAt(0) ])), (E = new Uint8Array([ 'a'.charCodeAt(0), 'v'.charCodeAt(0), 'c'.charCodeAt(0), '1'.charCodeAt(0) ])), (C = new Uint8Array([0, 0, 0, 1])), (w = 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 ])), (I = 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 ])), (A = { video: w, audio: I }), (L = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1 ])), (P = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (O = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])), (D = O), (M = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), (R = O), (x = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0])); } })(), (l = function (e) { var t, i, n = [], r = 0; for (t = 1; t < arguments.length; t++) n.push(arguments[t]); for (t = n.length; t--; ) r += n[t].byteLength; for ( i = new Uint8Array(r + 8), new DataView(i.buffer, i.byteOffset, i.byteLength).setUint32(0, i.byteLength), i.set(e, 4), t = 0, r = 8; t < n.length; t++ ) i.set(n[t], r), (r += n[t].byteLength); return i; }), (t = function () { return l(S.dinf, l(S.dref, L)); }), (i = function (e) { return l( S.esds, new Uint8Array([ 0, 0, 0, 0, 3, 25, 0, 0, 0, 4, 17, 64, 21, 0, 6, 0, 0, 0, 218, 192, 0, 0, 218, 192, 5, 2, (e.audioobjecttype << 3) | (e.samplingfrequencyindex >>> 1), (e.samplingfrequencyindex << 7) | (e.channelcount << 3), 6, 1, 2 ]) ); }), (m = function (e) { return l(S.hdlr, A[e]); }), (f = function (e) { var t = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 95, 144, (e.duration >>> 24) & 255, (e.duration >>> 16) & 255, (e.duration >>> 8) & 255, 255 & e.duration, 85, 196, 0, 0 ]); return ( e.samplerate && ((t[12] = (e.samplerate >>> 24) & 255), (t[13] = (e.samplerate >>> 16) & 255), (t[14] = (e.samplerate >>> 8) & 255), (t[15] = 255 & e.samplerate)), l(S.mdhd, t) ); }), (p = function (e) { return l(S.mdia, f(e), m(e.type), n(e)); }), (a = function (e) { return l( S.mfhd, new Uint8Array([ 0, 0, 0, 0, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e ]) ); }), (n = function (e) { return l(S.minf, 'video' === e.type ? l(S.vmhd, x) : l(S.smhd, P), t(), v(e)); }), (s = function (e, t) { for (var i = [], n = t.length; n--; ) i[n] = _(t[n]); return l.apply(null, [S.moof, a(e)].concat(i)); }), (o = function (e) { for (var t = e.length, i = []; t--; ) i[t] = d(e[t]); return l.apply(null, [S.moov, c(4294967295)].concat(i).concat(u(e))); }), (u = function (e) { for (var t = e.length, i = []; t--; ) i[t] = b(e[t]); return l.apply(null, [S.mvex].concat(i)); }), (c = function (e) { var t = new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 95, 144, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 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 ]); return l(S.mvhd, t); }), (g = function (e) { var t, i, n = e.samples || [], r = new Uint8Array(4 + n.length); for (i = 0; i < n.length; i++) (t = n[i].flags), (r[i + 4] = (t.dependsOn << 4) | (t.isDependedOn << 2) | t.hasRedundancy); return l(S.sdtp, r); }), (v = function (e) { return l(S.stbl, y(e), l(S.stts, R), l(S.stsc, D), l(S.stsz, M), l(S.stco, O)); }), (y = function (e) { return l( S.stsd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), 'video' === e.type ? N(e) : U(e) ); }), (N = function (e) { var t, i, n = e.sps || [], r = e.pps || [], a = [], s = []; for (t = 0; t < n.length; t++) a.push((65280 & n[t].byteLength) >>> 8), a.push(255 & n[t].byteLength), (a = a.concat(Array.prototype.slice.call(n[t]))); for (t = 0; t < r.length; t++) s.push((65280 & r[t].byteLength) >>> 8), s.push(255 & r[t].byteLength), (s = s.concat(Array.prototype.slice.call(r[t]))); if ( ((i = [ S.avc1, 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, (65280 & e.width) >> 8, 255 & e.width, (65280 & e.height) >> 8, 255 & e.height, 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 ]), l( S.avcC, new Uint8Array( [1, e.profileIdc, e.profileCompatibility, e.levelIdc, 255].concat( [n.length], a, [r.length], s ) ) ), l(S.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])) ]), e.sarRatio) ) { var o = e.sarRatio[0], u = e.sarRatio[1]; i.push( l( S.pasp, new Uint8Array([ (4278190080 & o) >> 24, (16711680 & o) >> 16, (65280 & o) >> 8, 255 & o, (4278190080 & u) >> 24, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u ]) ) ); } return l.apply(null, i); }), (U = function (e) { return l( S.mp4a, new Uint8Array([ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.channelcount) >> 8, 255 & e.channelcount, (65280 & e.samplesize) >> 8, 255 & e.samplesize, 0, 0, 0, 0, (65280 & e.samplerate) >> 8, 255 & e.samplerate, 0, 0 ]), i(e) ); }), (h = function (e) { var t = new Uint8Array([ 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 0, (4278190080 & e.duration) >> 24, (16711680 & e.duration) >> 16, (65280 & e.duration) >> 8, 255 & e.duration, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 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, (65280 & e.width) >> 8, 255 & e.width, 0, 0, (65280 & e.height) >> 8, 255 & e.height, 0, 0 ]); return l(S.tkhd, t); }), (_ = function (e) { var t, i, n, r, a, s; return ( (t = l( S.tfhd, new Uint8Array([ 0, 0, 0, 58, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]) )), (a = Math.floor(e.baseMediaDecodeTime / (1 + q))), (s = Math.floor(e.baseMediaDecodeTime % (1 + q))), (i = l( S.tfdt, new Uint8Array([ 1, 0, 0, 0, (a >>> 24) & 255, (a >>> 16) & 255, (a >>> 8) & 255, 255 & a, (s >>> 24) & 255, (s >>> 16) & 255, (s >>> 8) & 255, 255 & s ]) )), 92, 'audio' === e.type ? ((n = T(e, 92)), l(S.traf, t, i, n)) : ((r = g(e)), (n = T(e, r.length + 92)), l(S.traf, t, i, n, r)) ); }), (d = function (e) { return (e.duration = e.duration || 4294967295), l(S.trak, h(e), p(e)); }), (b = function (e) { var t = new Uint8Array([ 0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1 ]); return 'video' !== e.type && (t[t.length - 1] = 0), l(S.trex, t); }), (j = function (e, t) { var i = 0, n = 0, r = 0, a = 0; return ( e.length && (void 0 !== e[0].duration && (i = 1), void 0 !== e[0].size && (n = 2), void 0 !== e[0].flags && (r = 4), void 0 !== e[0].compositionTimeOffset && (a = 8)), [ 0, 0, i | n | r | a, 1, (4278190080 & e.length) >>> 24, (16711680 & e.length) >>> 16, (65280 & e.length) >>> 8, 255 & e.length, (4278190080 & t) >>> 24, (16711680 & t) >>> 16, (65280 & t) >>> 8, 255 & t ] ); }), (B = function (e, t) { var i, n, r, a, s, o; for ( t += 20 + 16 * (a = e.samples || []).length, r = j(a, t), (n = new Uint8Array(r.length + 16 * a.length)).set(r), i = r.length, o = 0; o < a.length; o++ ) (s = a[o]), (n[i++] = (4278190080 & s.duration) >>> 24), (n[i++] = (16711680 & s.duration) >>> 16), (n[i++] = (65280 & s.duration) >>> 8), (n[i++] = 255 & s.duration), (n[i++] = (4278190080 & s.size) >>> 24), (n[i++] = (16711680 & s.size) >>> 16), (n[i++] = (65280 & s.size) >>> 8), (n[i++] = 255 & s.size), (n[i++] = (s.flags.isLeading << 2) | s.flags.dependsOn), (n[i++] = (s.flags.isDependedOn << 6) | (s.flags.hasRedundancy << 4) | (s.flags.paddingValue << 1) | s.flags.isNonSyncSample), (n[i++] = 61440 & s.flags.degradationPriority), (n[i++] = 15 & s.flags.degradationPriority), (n[i++] = (4278190080 & s.compositionTimeOffset) >>> 24), (n[i++] = (16711680 & s.compositionTimeOffset) >>> 16), (n[i++] = (65280 & s.compositionTimeOffset) >>> 8), (n[i++] = 255 & s.compositionTimeOffset); return l(S.trun, n); }), (F = function (e, t) { var i, n, r, a, s, o; for ( t += 20 + 8 * (a = e.samples || []).length, r = j(a, t), (i = new Uint8Array(r.length + 8 * a.length)).set(r), n = r.length, o = 0; o < a.length; o++ ) (s = a[o]), (i[n++] = (4278190080 & s.duration) >>> 24), (i[n++] = (16711680 & s.duration) >>> 16), (i[n++] = (65280 & s.duration) >>> 8), (i[n++] = 255 & s.duration), (i[n++] = (4278190080 & s.size) >>> 24), (i[n++] = (16711680 & s.size) >>> 16), (i[n++] = (65280 & s.size) >>> 8), (i[n++] = 255 & s.size); return l(S.trun, i); }), (T = function (e, t) { return 'audio' === e.type ? F(e, t) : B(e, t); }); r = function () { return l(S.ftyp, k, C, k, E); }; function H(e, t) { var i = { size: 0, flags: { isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0, degradationPriority: 0, isNonSyncSample: 1 } }; return ( (i.dataOffset = t), (i.compositionTimeOffset = e.pts - e.dts), (i.duration = e.duration), (i.size = 4 * e.length), (i.size += e.byteLength), e.keyFrame && ((i.flags.dependsOn = 2), (i.flags.isNonSyncSample = 0)), i ); } function W(e) { for (var t = []; e--; ) t.push(0); return t; } function z() { if (!X) { var e = { 96e3: [ue, [227, 64], W(154), [56]], 88200: [ue, [231], W(170), [56]], 64e3: [ue, [248, 192], W(240), [56]], 48e3: [ue, [255, 192], W(268), [55, 148, 128], W(54), [112]], 44100: [ue, [255, 192], W(268), [55, 163, 128], W(84), [112]], 32e3: [ue, [255, 192], W(268), [55, 234], W(226), [112]], 24e3: [ue, [255, 192], W(268), [55, 255, 128], W(268), [111, 112], W(126), [224]], 16e3: [ ue, [255, 192], W(268), [55, 255, 128], W(268), [111, 255], W(269), [223, 108], W(195), [1, 192] ], 12e3: [ le, W(268), [3, 127, 248], W(268), [6, 255, 240], W(268), [13, 255, 224], W(268), [27, 253, 128], W(259), [56] ], 11025: [ le, W(268), [3, 127, 248], W(268), [6, 255, 240], W(268), [13, 255, 224], W(268), [27, 255, 192], W(268), [55, 175, 128], W(108), [112] ], 8e3: [le, W(268), [3, 121, 16], W(47), [7]] }; X = (function (i) { return Object.keys(i).reduce(function (e, t) { return ( (e[t] = new Uint8Array( i[t].reduce(function (e, t) { return e.concat(t); }, []) )), e ); }, {}); })(e); } return X; } function G() { G.prototype.init.call(this), (this.captionPackets_ = []), (this.ccStreams_ = [new Me(0, 0), new Me(0, 1), new Me(1, 0), new Me(1, 1)]), this.reset(), this.ccStreams_.forEach(function (e) { e.on('data', this.trigger.bind(this, 'data')), e.on('partialdone', this.trigger.bind(this, 'partialdone')), e.on('done', this.trigger.bind(this, 'done')); }, this); } var X, K, Y, $, Q, J = function (e) { return l(S.mdat, e); }, Z = s, ee = function (e) { var t, i = r(), n = o(e); return ( (t = new Uint8Array(i.byteLength + n.byteLength)).set(i), t.set(n, i.byteLength), t ); }, te = function (e) { var t, i, n = [], r = []; for ( r.byteLength = 0, r.nalCount = 0, r.duration = 0, t = n.byteLength = 0; t < e.length; t++ ) 'access_unit_delimiter_rbsp' === (i = e[t]).nalUnitType ? (n.length && ((n.duration = i.dts - n.dts), (r.byteLength += n.byteLength), (r.nalCount += n.length), (r.duration += n.duration), r.push(n)), ((n = [i]).byteLength = i.data.byteLength), (n.pts = i.pts), (n.dts = i.dts)) : ('slice_layer_without_partitioning_rbsp_idr' === i.nalUnitType && (n.keyFrame = !0), (n.duration = i.dts - n.dts), (n.byteLength += i.data.byteLength), n.push(i)); return ( r.length && (!n.duration || n.duration <= 0) && (n.duration = r[r.length - 1].duration), (r.byteLength += n.byteLength), (r.nalCount += n.length), (r.duration += n.duration), r.push(n), r ); }, ie = function (e) { var t, i, n = [], r = []; for ( n.byteLength = 0, n.nalCount = 0, n.duration = 0, n.pts = e[0].pts, n.dts = e[0].dts, r.byteLength = 0, r.nalCount = 0, r.duration = 0, r.pts = e[0].pts, r.dts = e[0].dts, t = 0; t < e.length; t++ ) (i = e[t]).keyFrame ? (n.length && (r.push(n), (r.byteLength += n.byteLength), (r.nalCount += n.nalCount), (r.duration += n.duration)), ((n = [i]).nalCount = i.length), (n.byteLength = i.byteLength), (n.pts = i.pts), (n.dts = i.dts), (n.duration = i.duration)) : ((n.duration += i.duration), (n.nalCount += i.length), (n.byteLength += i.byteLength), n.push(i)); return ( r.length && n.duration <= 0 && (n.duration = r[r.length - 1].duration), (r.byteLength += n.byteLength), (r.nalCount += n.nalCount), (r.duration += n.duration), r.push(n), r ); }, ne = function (e) { var t; return ( !e[0][0].keyFrame && 1 < e.length && ((t = e.shift()), (e.byteLength -= t.byteLength), (e.nalCount -= t.nalCount), (e[0][0].dts = t.dts), (e[0][0].pts = t.pts), (e[0][0].duration += t.duration)), e ); }, re = function (e, t) { var i, n, r, a, s, o = t || 0, u = []; for (i = 0; i < e.length; i++) for (a = e[i], n = 0; n < a.length; n++) (s = a[n]), (o += (r = H(s, o)).size), u.push(r); return u; }, ae = function (e) { var t, i, n, r, a, s, o = 0, u = e.byteLength, l = e.nalCount, c = new Uint8Array(u + 4 * l), d = new DataView(c.buffer); for (t = 0; t < e.length; t++) for (r = e[t], i = 0; i < r.length; i++) for (a = r[i], n = 0; n < a.length; n++) (s = a[n]), d.setUint32(o, s.data.byteLength), (o += 4), c.set(s.data, o), (o += s.data.byteLength); return c; }, se = function (e, t) { var i, n = []; return (i = H(e, t || 0)), n.push(i), n; }, oe = function (e) { var t, i, n = 0, r = e.byteLength, a = e.length, s = new Uint8Array(r + 4 * a), o = new DataView(s.buffer); for (t = 0; t < e.length; t++) (i = e[t]), o.setUint32(n, i.data.byteLength), (n += 4), s.set(i.data, n), (n += i.data.byteLength); return s; }, ue = [33, 16, 5, 32, 164, 27], le = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252], ce = 9e4, de = ((Y = function (e, t) { return e * t; }), ($ = function (e) { return e / 9e4; })), he = ((Q = function (e, t) { return e / t; }), function (e, t) { return K(Q(e, t)); }), pe = function (e, t) { return Y($(e), t); }, fe = function (e, t, i) { return $(i ? e : e - t); }, me = (K = function (e) { return 9e4 * e; }), ge = de, ve = function (e, t, i, n) { var r, a, s, o, u, l = 0, c = 0, d = 0; if ( t.length && ((r = he(e.baseMediaDecodeTime, e.samplerate)), (a = Math.ceil(ce / (e.samplerate / 1024))), i && n && ((l = r - Math.max(i, n)), (d = (c = Math.floor(l / a)) * a)), !(c < 1 || ce / 2 < d)) ) { for (s = (s = z()[e.samplerate]) || t[0].data, o = 0; o < c; o++) (u = t[0]), t.splice(0, 0, { data: s, dts: u.dts - a, pts: u.pts - a }); e.baseMediaDecodeTime -= Math.floor(pe(d, e.samplerate)); } }, ye = function (e, t, i) { return t.minSegmentDts >= i ? e : ((t.minSegmentDts = 1 / 0), e.filter(function (e) { return ( e.dts >= i && ((t.minSegmentDts = Math.min(t.minSegmentDts, e.dts)), (t.minSegmentPts = t.minSegmentDts), !0) ); })); }, _e = function (e) { var t, i, n = []; for (t = 0; t < e.length; t++) (i = e[t]), n.push({ size: i.data.byteLength, duration: 1024 }); return n; }, be = function (e) { var t, i, n = 0, r = new Uint8Array( (function (e) { var t, i = 0; for (t = 0; t < e.length; t++) i += e[t].data.byteLength; return i; })(e) ); for (t = 0; t < e.length; t++) (i = e[t]), r.set(i.data, n), (n += i.data.byteLength); return r; }, Te = ce, Se = function (e) { delete e.minSegmentDts, delete e.maxSegmentDts, delete e.minSegmentPts, delete e.maxSegmentPts; }, ke = function (e, t) { var i, n = e.minSegmentDts; return ( t || (n -= e.timelineStartInfo.dts), (i = e.timelineStartInfo.baseMediaDecodeTime), (i += n), (i = Math.max(0, i)), 'audio' === e.type && ((i *= e.samplerate / Te), (i = Math.floor(i))), i ); }, Ce = function (e, t) { 'number' == typeof t.pts && (void 0 === e.timelineStartInfo.pts && (e.timelineStartInfo.pts = t.pts), void 0 === e.minSegmentPts ? (e.minSegmentPts = t.pts) : (e.minSegmentPts = Math.min(e.minSegmentPts, t.pts)), void 0 === e.maxSegmentPts ? (e.maxSegmentPts = t.pts) : (e.maxSegmentPts = Math.max(e.maxSegmentPts, t.pts))), 'number' == typeof t.dts && (void 0 === e.timelineStartInfo.dts && (e.timelineStartInfo.dts = t.dts), void 0 === e.minSegmentDts ? (e.minSegmentDts = t.dts) : (e.minSegmentDts = Math.min(e.minSegmentDts, t.dts)), void 0 === e.maxSegmentDts ? (e.maxSegmentDts = t.dts) : (e.maxSegmentDts = Math.max(e.maxSegmentDts, t.dts))); }, Ee = function (e) { for ( var t = 0, i = { payloadType: -1, payloadSize: 0 }, n = 0, r = 0; t < e.byteLength && 128 !== e[t]; ) { for (; 255 === e[t]; ) (n += 255), t++; for (n += e[t++]; 255 === e[t]; ) (r += 255), t++; if (((r += e[t++]), !i.payload && 4 === n)) { if ('GA94' === String.fromCharCode(e[t + 3], e[t + 4], e[t + 5], e[t + 6])) { (i.payloadType = n), (i.payloadSize = r), (i.payload = e.subarray(t, t + r)); break; } i.payload = void 0; } (t += r), (r = n = 0); } return i; }, we = function (e) { return 181 !== e.payload[0] ? null : 49 != ((e.payload[1] << 8) | e.payload[2]) ? null : 'GA94' !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ? null : 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1); }, Ie = function (e, t) { var i, n, r, a, s = []; if (!(64 & t[0])) return s; for (n = 31 & t[0], i = 0; i < n; i++) (a = { type: 3 & t[2 + (r = 3 * i)], pts: e }), 4 & t[2 + r] && ((a.ccData = (t[3 + r] << 8) | t[4 + r]), s.push(a)); return s; }, Ae = function (e) { for (var t, i, n = e.byteLength, r = [], a = 1; a < n - 2; ) 0 === e[a] && 0 === e[a + 1] && 3 === e[a + 2] ? (r.push(a + 2), (a += 2)) : a++; if (0 === r.length) return e; (t = n - r.length), (i = new Uint8Array(t)); var s = 0; for (a = 0; a < t; s++, a++) s === r[0] && (s++, r.shift()), (i[a] = e[s]); return i; }, xe = 4; ((G.prototype = new V()).push = function (e) { var t, i, n; if ( 'sei_rbsp' === e.nalUnitType && (t = Ee(e.escapedRBSP)).payloadType === xe && (i = we(t)) ) if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0; else { if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return ( this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1)) ); (n = Ie(e.pts, i)), (this.captionPackets_ = this.captionPackets_.concat(n)), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, (this.latestDts_ = e.dts); } }), (G.prototype.flushCCStreams = function (t) { this.ccStreams_.forEach(function (e) { return 'flush' === t ? e.flush() : e.partialFlush(); }, this); }), (G.prototype.flushStream = function (e) { this.captionPackets_.length && (this.captionPackets_.forEach(function (e, t) { e.presortIndex = t; }), this.captionPackets_.sort(function (e, t) { return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts; }), this.captionPackets_.forEach(function (e) { e.type < 2 && this.dispatchCea608Packet(e); }, this), (this.captionPackets_.length = 0)), this.flushCCStreams(e); }), (G.prototype.flush = function () { return this.flushStream('flush'); }), (G.prototype.partialFlush = function () { return this.flushStream('partialFlush'); }), (G.prototype.reset = function () { (this.latestDts_ = null), (this.ignoreNextEqualDts_ = !1), (this.numSameDts_ = 0), (this.activeCea608Channel_ = [null, null]), this.ccStreams_.forEach(function (e) { e.reset(); }); }), (G.prototype.dispatchCea608Packet = function (e) { this.setsTextOrXDSActive(e) ? (this.activeCea608Channel_[e.type] = null) : this.setsChannel1Active(e) ? (this.activeCea608Channel_[e.type] = 0) : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e); }), (G.prototype.setsChannel1Active = function (e) { return 4096 == (30720 & e.ccData); }), (G.prototype.setsChannel2Active = function (e) { return 6144 == (30720 & e.ccData); }), (G.prototype.setsTextOrXDSActive = function (e) { return ( 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData) ); }); function Pe(e) { return null === e ? '' : ((e = Oe[e] || e), String.fromCharCode(e)); } function Le() { for (var e = [], t = 15; t--; ) e.push(''); return e; } var Oe = { 42: 225, 92: 233, 94: 237, 95: 243, 96: 250, 123: 231, 124: 247, 125: 209, 126: 241, 127: 9608, 304: 174, 305: 176, 306: 189, 307: 191, 308: 8482, 309: 162, 310: 163, 311: 9834, 312: 224, 313: 160, 314: 232, 315: 226, 316: 234, 317: 238, 318: 244, 319: 251, 544: 193, 545: 201, 546: 211, 547: 218, 548: 220, 549: 252, 550: 8216, 551: 161, 552: 42, 553: 39, 554: 8212, 555: 169, 556: 8480, 557: 8226, 558: 8220, 559: 8221, 560: 192, 561: 194, 562: 199, 563: 200, 564: 202, 565: 203, 566: 235, 567: 206, 568: 207, 569: 239, 570: 212, 571: 217, 572: 249, 573: 219, 574: 171, 575: 187, 800: 195, 801: 227, 802: 205, 803: 204, 804: 236, 805: 210, 806: 242, 807: 213, 808: 245, 809: 123, 810: 125, 811: 92, 812: 94, 813: 95, 814: 124, 815: 126, 816: 196, 817: 228, 818: 214, 819: 246, 820: 223, 821: 165, 822: 164, 823: 9474, 824: 197, 825: 229, 826: 216, 827: 248, 828: 9484, 829: 9488, 830: 9492, 831: 9496 }, De = [ 4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152 ], Me = function e(t, i) { e.prototype.init.call(this), (this.field_ = t || 0), (this.dataChannel_ = i || 0), (this.name_ = 'CC' + (1 + ((this.field_ << 1) | this.dataChannel_))), this.setConstants(), this.reset(), (this.push = function (e) { var t, i, n, r, a; if ((t = 32639 & e.ccData) !== this.lastControlCode_) { if ( (4096 == (61440 & t) ? (this.lastControlCode_ = t) : t !== this.PADDING_ && (this.lastControlCode_ = null), (n = t >>> 8), (r = 255 & t), t !== this.PADDING_) ) if (t === this.RESUME_CAPTION_LOADING_) this.mode_ = 'popOn'; else if (t === this.END_OF_CAPTION_) (this.mode_ = 'popOn'), this.clearFormatting(e.pts), this.flushDisplayed(e.pts), (i = this.displayed_), (this.displayed_ = this.nonDisplayed_), (this.nonDisplayed_ = i), (this.startPts_ = e.pts); else if (t === this.ROLL_UP_2_ROWS_) (this.rollUpRows_ = 2), this.setRollUp(e.pts); else if (t === this.ROLL_UP_3_ROWS_) (this.rollUpRows_ = 3), this.setRollUp(e.pts); else if (t === this.ROLL_UP_4_ROWS_) (this.rollUpRows_ = 4), this.setRollUp(e.pts); else if (t === this.CARRIAGE_RETURN_) this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), (this.startPts_ = e.pts); else if (t === this.BACKSPACE_) 'popOn' === this.mode_ ? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice( 0, -1 )) : (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1)); else if (t === this.ERASE_DISPLAYED_MEMORY_) this.flushDisplayed(e.pts), (this.displayed_ = Le()); else if (t === this.ERASE_NON_DISPLAYED_MEMORY_) this.nonDisplayed_ = Le(); else if (t === this.RESUME_DIRECT_CAPTIONING_) 'paintOn' !== this.mode_ && (this.flushDisplayed(e.pts), (this.displayed_ = Le())), (this.mode_ = 'paintOn'), (this.startPts_ = e.pts); else if (this.isSpecialCharacter(n, r)) (a = Pe((n = (3 & n) << 8) | r)), this[this.mode_](e.pts, a), this.column_++; else if (this.isExtCharacter(n, r)) 'popOn' === this.mode_ ? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice( 0, -1 )) : (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1)), (a = Pe((n = (3 & n) << 8) | r)), this[this.mode_](e.pts, a), this.column_++; else if (this.isMidRowCode(n, r)) this.clearFormatting(e.pts), this[this.mode_](e.pts, ' '), this.column_++, 14 == (14 & r) && this.addFormatting(e.pts, ['i']), 1 == (1 & r) && this.addFormatting(e.pts, ['u']); else if (this.isOffsetControlCode(n, r)) this.column_ += 3 & r; else if (this.isPAC(n, r)) { var s = De.indexOf(7968 & t); 'rollUp' === this.mode_ && (s - this.rollUpRows_ + 1 < 0 && (s = this.rollUpRows_ - 1), this.setRollUp(e.pts, s)), s !== this.row_ && (this.clearFormatting(e.pts), (this.row_ = s)), 1 & r && -1 === this.formatting_.indexOf('u') && this.addFormatting(e.pts, ['u']), 16 == (16 & t) && (this.column_ = 4 * ((14 & t) >> 1)), this.isColorPAC(r) && 14 == (14 & r) && this.addFormatting(e.pts, ['i']); } else this.isNormalChar(n) && (0 === r && (r = null), (a = Pe(n)), (a += Pe(r)), this[this.mode_](e.pts, a), (this.column_ += a.length)); } else this.lastControlCode_ = null; }); }; (Me.prototype = new V()), (Me.prototype.flushDisplayed = function (e) { var t = this.displayed_ .map(function (e) { try { return e.trim(); } catch (e) { return ''; } }) .join('\n') .replace(/^\n+|\n+$/g, ''); t.length && this.trigger('data', { startPts: this.startPts_, endPts: e, text: t, stream: this.name_ }); }), (Me.prototype.reset = function () { (this.mode_ = 'popOn'), (this.topRow_ = 0), (this.startPts_ = 0), (this.displayed_ = Le()), (this.nonDisplayed_ = Le()), (this.lastControlCode_ = null), (this.column_ = 0), (this.row_ = 14), (this.rollUpRows_ = 2), (this.formatting_ = []); }), (Me.prototype.setConstants = function () { 0 === this.dataChannel_ ? ((this.BASE_ = 16), (this.EXT_ = 17), (this.CONTROL_ = (20 | this.field_) << 8), (this.OFFSET_ = 23)) : 1 === this.dataChannel_ && ((this.BASE_ = 24), (this.EXT_ = 25), (this.CONTROL_ = (28 | this.field_) << 8), (this.OFFSET_ = 31)), (this.PADDING_ = 0), (this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_), (this.END_OF_CAPTION_ = 47 | this.CONTROL_), (this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_), (this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_), (this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_), (this.CARRIAGE_RETURN_ = 45 | this.CONTROL_), (this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_), (this.BACKSPACE_ = 33 | this.CONTROL_), (this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_), (this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_); }), (Me.prototype.isSpecialCharacter = function (e, t) { return e === this.EXT_ && 48 <= t && t <= 63; }), (Me.prototype.isExtCharacter = function (e, t) { return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && 32 <= t && t <= 63; }), (Me.prototype.isMidRowCode = function (e, t) { return e === this.EXT_ && 32 <= t && t <= 47; }), (Me.prototype.isOffsetControlCode = function (e, t) { return e === this.OFFSET_ && 33 <= t && t <= 35; }), (Me.prototype.isPAC = function (e, t) { return e >= this.BASE_ && e < this.BASE_ + 8 && 64 <= t && t <= 127; }), (Me.prototype.isColorPAC = function (e) { return (64 <= e && e <= 79) || (96 <= e && e <= 127); }), (Me.prototype.isNormalChar = function (e) { return 32 <= e && e <= 127; }), (Me.prototype.setRollUp = function (e, t) { if ( ('rollUp' !== this.mode_ && ((this.row_ = 14), (this.mode_ = 'rollUp'), this.flushDisplayed(e), (this.nonDisplayed_ = Le()), (this.displayed_ = Le())), void 0 !== t && t !== this.row_) ) for (var i = 0; i < this.rollUpRows_; i++) (this.displayed_[t - i] = this.displayed_[this.row_ - i]), (this.displayed_[this.row_ - i] = ''); void 0 === t && (t = this.row_), (this.topRow_ = t - this.rollUpRows_ + 1); }), (Me.prototype.addFormatting = function (e, t) { this.formatting_ = this.formatting_.concat(t); var i = t.reduce(function (e, t) { return e + '<' + t + '>'; }, ''); this[this.mode_](e, i); }), (Me.prototype.clearFormatting = function (e) { if (this.formatting_.length) { var t = this.formatting_.reverse().reduce(function (e, t) { return e + ''; }, ''); (this.formatting_ = []), this[this.mode_](e, t); } }), (Me.prototype.popOn = function (e, t) { var i = this.nonDisplayed_[this.row_]; (i += t), (this.nonDisplayed_[this.row_] = i); }), (Me.prototype.rollUp = function (e, t) { var i = this.displayed_[this.row_]; (i += t), (this.displayed_[this.row_] = i); }), (Me.prototype.shiftRowsUp_ = function () { var e; for (e = 0; e < this.topRow_; e++) this.displayed_[e] = ''; for (e = this.row_ + 1; e < 15; e++) this.displayed_[e] = ''; for (e = this.topRow_; e < this.row_; e++) this.displayed_[e] = this.displayed_[e + 1]; this.displayed_[this.row_] = ''; }), (Me.prototype.paintOn = function (e, t) { var i = this.displayed_[this.row_]; (i += t), (this.displayed_[this.row_] = i); }); function Re(e, t) { var i = 1; for (t < e && (i = -1); 4294967296 < Math.abs(t - e); ) e += 8589934592 * i; return e; } function Ne(e) { var t, i; Ne.prototype.init.call(this), (this.type_ = e || 'shared'), (this.push = function (e) { ('shared' !== this.type_ && e.type !== this.type_) || (void 0 === i && (i = e.dts), (e.dts = Re(e.dts, i)), (e.pts = Re(e.pts, i)), (t = e.dts), this.trigger('data', e)); }), (this.flush = function () { (i = t), this.trigger('done'); }), (this.endTimeline = function () { this.flush(), this.trigger('endedtimeline'); }), (this.discontinuity = function () { t = i = void 0; }), (this.reset = function () { this.discontinuity(), this.trigger('reset'); }); } var Ue = { CaptionStream: G, Cea608Stream: Me }, Fe = { H264_STREAM_TYPE: 27, ADTS_STREAM_TYPE: 15, METADATA_STREAM_TYPE: 21 }; Ne.prototype = new V(); function Be(e, t, i) { var n, r = ''; for (n = t; n < i; n++) r += '%' + ('00' + e[n].toString(16)).slice(-2); return r; } function je(e, t, i) { return decodeURIComponent(Be(e, t, i)); } function Ve(e) { return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3]; } var qe, He = Ne, We = { TXXX: function (e) { var t; if (3 === e.data[0]) { for (t = 1; t < e.data.length; t++) if (0 === e.data[t]) { (e.description = je(e.data, 1, t)), (e.value = je(e.data, t + 1, e.data.length).replace(/\0*$/, '')); break; } e.data = e.value; } }, WXXX: function (e) { var t; if (3 === e.data[0]) for (t = 1; t < e.data.length; t++) if (0 === e.data[t]) { (e.description = je(e.data, 1, t)), (e.url = je(e.data, t + 1, e.data.length)); break; } }, PRIV: function (e) { var t, i; for (t = 0; t < e.data.length; t++) if (0 === e.data[t]) { e.owner = ((i = e.data), unescape(Be(i, 0, t))); break; } (e.privateData = e.data.subarray(t + 1)), (e.data = e.privateData); } }; (qe = function (e) { var t, u = { debug: !(!e || !e.debug), descriptor: e && e.descriptor }, l = 0, c = [], d = 0; if ( (qe.prototype.init.call(this), (this.dispatchType = Fe.METADATA_STREAM_TYPE.toString(16)), u.descriptor) ) for (t = 0; t < u.descriptor.length; t++) this.dispatchType += ('00' + u.descriptor[t].toString(16)).slice(-2); this.push = function (e) { var t, i, n, r, a; if ('timed-metadata' === e.type) if ( (e.dataAlignmentIndicator && ((d = 0), (c.length = 0)), 0 === c.length && (e.data.length < 10 || e.data[0] !== 'I'.charCodeAt(0) || e.data[1] !== 'D'.charCodeAt(0) || e.data[2] !== '3'.charCodeAt(0))) ) u.debug; else if ( (c.push(e), (d += e.data.byteLength), 1 === c.length && ((l = Ve(e.data.subarray(6, 10))), (l += 10)), !(d < l)) ) { for ( t = { data: new Uint8Array(l), frames: [], pts: c[0].pts, dts: c[0].dts }, a = 0; a < l; ) t.data.set(c[0].data.subarray(0, l - a), a), (a += c[0].data.byteLength), (d -= c[0].data.byteLength), c.shift(); (i = 10), 64 & t.data[5] && ((i += 4), (i += Ve(t.data.subarray(10, 14))), (l -= Ve(t.data.subarray(16, 20)))); do { if ((n = Ve(t.data.subarray(i + 4, i + 8))) < 1) return; if ( (((r = { id: String.fromCharCode( t.data[i], t.data[i + 1], t.data[i + 2], t.data[i + 3] ), data: t.data.subarray(i + 10, i + n + 10) }).key = r.id), We[r.id] && (We[r.id](r), 'com.apple.streaming.transportStreamTimestamp' === r.owner)) ) { var s = r.data, o = ((1 & s[3]) << 30) | (s[4] << 22) | (s[5] << 14) | (s[6] << 6) | (s[7] >>> 2); (o *= 4), (o += 3 & s[7]), (r.timeStamp = o), void 0 === t.pts && void 0 === t.dts && ((t.pts = r.timeStamp), (t.dts = r.timeStamp)), this.trigger('timestamp', r); } t.frames.push(r), (i += 10), (i += n); } while (i < l); this.trigger('data', t); } }; }).prototype = new V(); var ze, Ge, Xe, Ke = qe, Ye = He; ((ze = function () { var r = new Uint8Array(188), a = 0; ze.prototype.init.call(this), (this.push = function (e) { var t, i = 0, n = 188; for ( a ? ((t = new Uint8Array(e.byteLength + a)).set(r.subarray(0, a)), t.set(e, a), (a = 0)) : (t = e); n < t.byteLength; ) 71 !== t[i] || 71 !== t[n] ? (i++, n++) : (this.trigger('data', t.subarray(i, n)), (i += 188), (n += 188)); i < t.byteLength && (r.set(t.subarray(i), 0), (a = t.byteLength - i)); }), (this.flush = function () { 188 === a && 71 === r[0] && (this.trigger('data', r), (a = 0)), this.trigger('done'); }), (this.endTimeline = function () { this.flush(), this.trigger('endedtimeline'); }), (this.reset = function () { (a = 0), this.trigger('reset'); }); }).prototype = new V()), ((Ge = function () { var n, r, a, s; Ge.prototype.init.call(this), ((s = this).packetsWaitingForPmt = []), (this.programMapTable = void 0), (n = function (e, t) { var i = 0; t.payloadUnitStartIndicator && (i += e[i] + 1), 'pat' === t.type ? r(e.subarray(i), t) : a(e.subarray(i), t); }), (r = function (e, t) { (t.section_number = e[7]), (t.last_section_number = e[8]), (s.pmtPid = ((31 & e[10]) << 8) | e[11]), (t.pmtPid = s.pmtPid); }), (a = function (e, t) { var i, n; if (1 & e[5]) { for ( s.programMapTable = { video: null, audio: null, 'timed-metadata': {} }, i = 3 + (((15 & e[1]) << 8) | e[2]) - 4, n = 12 + (((15 & e[10]) << 8) | e[11]); n < i; ) { var r = e[n], a = ((31 & e[n + 1]) << 8) | e[n + 2]; r === Fe.H264_STREAM_TYPE && null === s.programMapTable.video ? (s.programMapTable.video = a) : r === Fe.ADTS_STREAM_TYPE && null === s.programMapTable.audio ? (s.programMapTable.audio = a) : r === Fe.METADATA_STREAM_TYPE && (s.programMapTable['timed-metadata'][a] = r), (n += 5 + (((15 & e[n + 3]) << 8) | e[n + 4])); } t.programMapTable = s.programMapTable; } }), (this.push = function (e) { var t = {}, i = 4; if ( ((t.payloadUnitStartIndicator = !!(64 & e[1])), (t.pid = 31 & e[1]), (t.pid <<= 8), (t.pid |= e[2]), 1 < (48 & e[3]) >>> 4 && (i += e[i] + 1), 0 === t.pid) ) (t.type = 'pat'), n(e.subarray(i), t), this.trigger('data', t); else if (t.pid === this.pmtPid) for ( t.type = 'pmt', n(e.subarray(i), t), this.trigger('data', t); this.packetsWaitingForPmt.length; ) this.processPes_.apply(this, this.packetsWaitingForPmt.shift()); else void 0 === this.programMapTable ? this.packetsWaitingForPmt.push([e, i, t]) : this.processPes_(e, i, t); }), (this.processPes_ = function (e, t, i) { i.pid === this.programMapTable.video ? (i.streamType = Fe.H264_STREAM_TYPE) : i.pid === this.programMapTable.audio ? (i.streamType = Fe.ADTS_STREAM_TYPE) : (i.streamType = this.programMapTable['timed-metadata'][i.pid]), (i.type = 'pes'), (i.data = e.subarray(t)), this.trigger('data', i); }); }).prototype = new V()), (Ge.STREAM_TYPES = { h264: 27, adts: 15 }), ((Xe = function () { function n(e, t, i) { var n, r, a = new Uint8Array(e.size), s = { type: t }, o = 0, u = 0; if (e.data.length && !(e.size < 9)) { for (s.trackId = e.data[0].pid, o = 0; o < e.data.length; o++) (r = e.data[o]), a.set(r.data, u), (u += r.data.byteLength); !(function (e, t) { var i; (t.packetLength = 6 + ((e[4] << 8) | e[5])), (t.dataAlignmentIndicator = 0 != (4 & e[6])), 192 & (i = e[7]) && ((t.pts = ((14 & e[9]) << 27) | ((255 & e[10]) << 20) | ((254 & e[11]) << 12) | ((255 & e[12]) << 5) | ((254 & e[13]) >>> 3)), (t.pts *= 4), (t.pts += (6 & e[13]) >>> 1), (t.dts = t.pts), 64 & i && ((t.dts = ((14 & e[14]) << 27) | ((255 & e[15]) << 20) | ((254 & e[16]) << 12) | ((255 & e[17]) << 5) | ((254 & e[18]) >>> 3)), (t.dts *= 4), (t.dts += (6 & e[18]) >>> 1))), (t.data = e.subarray(9 + e[8])); })(a, s), (n = 'video' === t || s.packetLength <= e.size), (i || n) && ((e.size = 0), (e.data.length = 0)), n && l.trigger('data', s); } } var t, l = this, r = { data: [], size: 0 }, a = { data: [], size: 0 }, s = { data: [], size: 0 }; Xe.prototype.init.call(this), (this.push = function (i) { ({ pat: function () {}, pes: function () { var e, t; switch (i.streamType) { case Fe.H264_STREAM_TYPE: (e = r), (t = 'video'); break; case Fe.ADTS_STREAM_TYPE: (e = a), (t = 'audio'); break; case Fe.METADATA_STREAM_TYPE: (e = s), (t = 'timed-metadata'); break; default: return; } i.payloadUnitStartIndicator && n(e, t, !0), e.data.push(i), (e.size += i.data.byteLength); }, pmt: function () { var e = { type: 'metadata', tracks: [] }; null !== (t = i.programMapTable).video && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.video, codec: 'avc', type: 'video' }), null !== t.audio && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.audio, codec: 'adts', type: 'audio' }), l.trigger('data', e); } })[i.type](); }), (this.reset = function () { (r.size = 0), (r.data.length = 0), (a.size = 0), (a.data.length = 0), this.trigger('reset'); }), (this.flushStreams_ = function () { n(r, 'video'), n(a, 'audio'), n(s, 'timed-metadata'); }), (this.flush = function () { this.flushStreams_(), this.trigger('done'); }); }).prototype = new V()); var $e = { PAT_PID: 0, MP2T_PACKET_LENGTH: 188, TransportPacketStream: ze, TransportParseStream: Ge, ElementaryStream: Xe, TimestampRolloverStream: Ye, CaptionStream: Ue.CaptionStream, Cea608Stream: Ue.Cea608Stream, MetadataStream: Ke }; for (var Qe in Fe) Fe.hasOwnProperty(Qe) && ($e[Qe] = Fe[Qe]); var Je, Ze = $e, et = ce, tt = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350]; (Je = function (u) { var l, c = 0; Je.prototype.init.call(this), (this.push = function (e) { var t, i, n, r, a, s, o = 0; if ((u || (c = 0), 'audio' === e.type)) for ( l ? ((r = l), (l = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), l.set(e.data, r.byteLength)) : (l = e.data); o + 5 < l.length; ) if (255 === l[o] && 240 == (246 & l[o + 1])) { if ( ((i = 2 * (1 & ~l[o + 1])), (t = ((3 & l[o + 3]) << 11) | (l[o + 4] << 3) | ((224 & l[o + 5]) >> 5)), (s = ((a = 1024 * (1 + (3 & l[o + 6]))) * et) / tt[(60 & l[o + 2]) >>> 2]), (n = o + t), l.byteLength < n) ) return; if ( (this.trigger('data', { pts: e.pts + c * s, dts: e.dts + c * s, sampleCount: a, audioobjecttype: 1 + ((l[o + 2] >>> 6) & 3), channelcount: ((1 & l[o + 2]) << 2) | ((192 & l[o + 3]) >>> 6), samplerate: tt[(60 & l[o + 2]) >>> 2], samplingfrequencyindex: (60 & l[o + 2]) >>> 2, samplesize: 16, data: l.subarray(o + 7 + i, n) }), c++, l.byteLength === n) ) return void (l = void 0); l = l.subarray(n); } else o++; }), (this.flush = function () { (c = 0), this.trigger('done'); }), (this.reset = function () { (l = void 0), this.trigger('reset'); }), (this.endTimeline = function () { (l = void 0), this.trigger('endedtimeline'); }); }).prototype = new V(); var it, nt, rt, at = Je, st = function (n) { var r = n.byteLength, a = 0, s = 0; (this.length = function () { return 8 * r; }), (this.bitsAvailable = function () { return 8 * r + s; }), (this.loadWord = function () { var e = n.byteLength - r, t = new Uint8Array(4), i = Math.min(4, r); if (0 === i) throw new Error('no bytes available'); t.set(n.subarray(e, e + i)), (a = new DataView(t.buffer).getUint32(0)), (s = 8 * i), (r -= i); }), (this.skipBits = function (e) { var t; e < s || ((e -= s), (e -= 8 * (t = Math.floor(e / 8))), (r -= t), this.loadWord()), (a <<= e), (s -= e); }), (this.readBits = function (e) { var t = Math.min(s, e), i = a >>> (32 - t); return ( 0 < (s -= t) ? (a <<= t) : 0 < r && this.loadWord(), 0 < (t = e - t) ? (i << t) | this.readBits(t) : i ); }), (this.skipLeadingZeros = function () { var e; for (e = 0; e < s; ++e) if (0 != (a & (2147483648 >>> e))) return (a <<= e), (s -= e), e; return this.loadWord(), e + this.skipLeadingZeros(); }), (this.skipUnsignedExpGolomb = function () { this.skipBits(1 + this.skipLeadingZeros()); }), (this.skipExpGolomb = function () { this.skipBits(1 + this.skipLeadingZeros()); }), (this.readUnsignedExpGolomb = function () { var e = this.skipLeadingZeros(); return this.readBits(e + 1) - 1; }), (this.readExpGolomb = function () { var e = this.readUnsignedExpGolomb(); return 1 & e ? (1 + e) >>> 1 : -1 * (e >>> 1); }), (this.readBoolean = function () { return 1 === this.readBits(1); }), (this.readUnsignedByte = function () { return this.readBits(8); }), this.loadWord(); }; ((nt = function () { var n, r, a = 0; nt.prototype.init.call(this), (this.push = function (e) { for ( var t, i = (r = r ? ((t = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), t.set(e.data, r.byteLength), t) : e.data).byteLength; a < i - 3; a++ ) if (1 === r[a + 2]) { n = a + 5; break; } for (; n < i; ) switch (r[n]) { case 0: if (0 !== r[n - 1]) { n += 2; break; } if (0 !== r[n - 2]) { n++; break; } for ( a + 3 !== n - 2 && this.trigger('data', r.subarray(a + 3, n - 2)); 1 !== r[++n] && n < i; ); (a = n - 2), (n += 3); break; case 1: if (0 !== r[n - 1] || 0 !== r[n - 2]) { n += 3; break; } this.trigger('data', r.subarray(a + 3, n - 2)), (a = n - 2), (n += 3); break; default: n += 3; } (r = r.subarray(a)), (n -= a), (a = 0); }), (this.reset = function () { (r = null), (a = 0), this.trigger('reset'); }), (this.flush = function () { r && 3 < r.byteLength && this.trigger('data', r.subarray(a + 3)), (r = null), (a = 0), this.trigger('done'); }), (this.endTimeline = function () { this.flush(), this.trigger('endedtimeline'); }); }).prototype = new V()), (rt = { 100: !0, 110: !0, 122: !0, 244: !0, 44: !0, 83: !0, 86: !0, 118: !0, 128: !0, 138: !0, 139: !0, 134: !0 }), ((it = function () { var i, n, r, a, s, o, _, t = new nt(); it.prototype.init.call(this), ((i = this).push = function (e) { 'video' === e.type && ((n = e.trackId), (r = e.pts), (a = e.dts), t.push(e)); }), t.on('data', function (e) { var t = { trackId: n, pts: r, dts: a, data: e }; switch (31 & e[0]) { case 5: t.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'; break; case 6: (t.nalUnitType = 'sei_rbsp'), (t.escapedRBSP = s(e.subarray(1))); break; case 7: (t.nalUnitType = 'seq_parameter_set_rbsp'), (t.escapedRBSP = s(e.subarray(1))), (t.config = o(t.escapedRBSP)); break; case 8: t.nalUnitType = 'pic_parameter_set_rbsp'; break; case 9: t.nalUnitType = 'access_unit_delimiter_rbsp'; } i.trigger('data', t); }), t.on('done', function () { i.trigger('done'); }), t.on('partialdone', function () { i.trigger('partialdone'); }), t.on('reset', function () { i.trigger('reset'); }), t.on('endedtimeline', function () { i.trigger('endedtimeline'); }), (this.flush = function () { t.flush(); }), (this.partialFlush = function () { t.partialFlush(); }), (this.reset = function () { t.reset(); }), (this.endTimeline = function () { t.endTimeline(); }), (_ = function (e, t) { var i, n = 8, r = 8; for (i = 0; i < e; i++) 0 !== r && (r = (n + t.readExpGolomb() + 256) % 256), (n = 0 === r ? n : r); }), (s = function (e) { for (var t, i, n = e.byteLength, r = [], a = 1; a < n - 2; ) 0 === e[a] && 0 === e[a + 1] && 3 === e[a + 2] ? (r.push(a + 2), (a += 2)) : a++; if (0 === r.length) return e; (t = n - r.length), (i = new Uint8Array(t)); var s = 0; for (a = 0; a < t; s++, a++) s === r[0] && (s++, r.shift()), (i[a] = e[s]); return i; }), (o = function (e) { var t, i, n, r, a, s, o, u, l, c, d, h, p, f = 0, m = 0, g = 0, v = 0, y = 1; if ( ((i = (t = new st(e)).readUnsignedByte()), (r = t.readUnsignedByte()), (n = t.readUnsignedByte()), t.skipUnsignedExpGolomb(), rt[i] && (3 === (a = t.readUnsignedExpGolomb()) && t.skipBits(1), t.skipUnsignedExpGolomb(), t.skipUnsignedExpGolomb(), t.skipBits(1), t.readBoolean())) ) for (d = 3 !== a ? 8 : 12, p = 0; p < d; p++) t.readBoolean() && _(p < 6 ? 16 : 64, t); if ((t.skipUnsignedExpGolomb(), 0 === (s = t.readUnsignedExpGolomb()))) t.readUnsignedExpGolomb(); else if (1 === s) for ( t.skipBits(1), t.skipExpGolomb(), t.skipExpGolomb(), o = t.readUnsignedExpGolomb(), p = 0; p < o; p++ ) t.skipExpGolomb(); if ( (t.skipUnsignedExpGolomb(), t.skipBits(1), (u = t.readUnsignedExpGolomb()), (l = t.readUnsignedExpGolomb()), 0 === (c = t.readBits(1)) && t.skipBits(1), t.skipBits(1), t.readBoolean() && ((f = t.readUnsignedExpGolomb()), (m = t.readUnsignedExpGolomb()), (g = t.readUnsignedExpGolomb()), (v = t.readUnsignedExpGolomb())), t.readBoolean() && t.readBoolean()) ) { switch (t.readUnsignedByte()) { case 1: h = [1, 1]; break; case 2: h = [12, 11]; break; case 3: h = [10, 11]; break; case 4: h = [16, 11]; break; case 5: h = [40, 33]; break; case 6: h = [24, 11]; break; case 7: h = [20, 11]; break; case 8: h = [32, 11]; break; case 9: h = [80, 33]; break; case 10: h = [18, 11]; break; case 11: h = [15, 11]; break; case 12: h = [64, 33]; break; case 13: h = [160, 99]; break; case 14: h = [4, 3]; break; case 15: h = [3, 2]; break; case 16: h = [2, 1]; break; case 255: h = [ (t.readUnsignedByte() << 8) | t.readUnsignedByte(), (t.readUnsignedByte() << 8) | t.readUnsignedByte() ]; } h && (y = h[0] / h[1]); } return { profileIdc: i, levelIdc: n, profileCompatibility: r, width: Math.ceil((16 * (u + 1) - 2 * f - 2 * m) * y), height: (2 - c) * (l + 1) * 16 - 2 * g - 2 * v, sarRatio: h }; }); }).prototype = new V()); function ot(e, t) { var i = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]; return (i = 0 <= i ? i : 0), (16 & e[t + 5]) >> 4 ? i + 20 : i + 10; } var ut, lt = { H264Stream: it, NalByteStream: nt }, ct = function (e) { var t = (function e(t, i) { return t.length - i < 10 || t[i] !== 'I'.charCodeAt(0) || t[i + 1] !== 'D'.charCodeAt(0) || t[i + 2] !== '3'.charCodeAt(0) ? i : e(t, (i += ot(t, i))); })(e, 0); return ( e.length >= t + 2 && 255 == (255 & e[t]) && 240 == (240 & e[t + 1]) && 16 == (22 & e[t + 1]) ); }, dt = ot, ht = function (e, t) { var i = (224 & e[t + 5]) >> 5, n = e[t + 4] << 3; return (6144 & e[t + 3]) | n | i; }; (ut = function () { var o = new Uint8Array(), u = 0; ut.prototype.init.call(this), (this.setTimestamp = function (e) { u = e; }), (this.push = function (e) { var t, i, n, r, a = 0, s = 0; for ( o.length ? ((r = o.length), (o = new Uint8Array(e.byteLength + r)).set(o.subarray(0, r)), o.set(e, r)) : (o = e); 3 <= o.length - s; ) if ( o[s] !== 'I'.charCodeAt(0) || o[s + 1] !== 'D'.charCodeAt(0) || o[s + 2] !== '3'.charCodeAt(0) ) if (255 != (255 & o[s]) || 240 != (240 & o[s + 1])) s++; else { if (o.length - s < 7) break; if (s + (a = ht(o, s)) > o.length) break; (n = { type: 'audio', data: o.subarray(s, s + a), pts: u, dts: u }), this.trigger('data', n), (s += a); } else { if (o.length - s < 10) break; if (s + (a = dt(o, s)) > o.length) break; (i = { type: 'timed-metadata', data: o.subarray(s, s + a) }), this.trigger('data', i), (s += a); } (t = o.length - s), (o = 0 < t ? o.subarray(s) : new Uint8Array()); }), (this.reset = function () { (o = new Uint8Array()), this.trigger('reset'); }), (this.endTimeline = function () { (o = new Uint8Array()), this.trigger('endedtimeline'); }); }).prototype = new V(); function pt(e, t) { var i; if (e.length !== t.length) return !1; for (i = 0; i < e.length; i++) if (e[i] !== t[i]) return !1; return !0; } function ft(e, t, i, n, r, a) { return { start: { dts: e, pts: e + (i - t) }, end: { dts: e + (n - t), pts: e + (r - i) }, prependedContentDuration: a, baseMediaDecodeTime: e }; } var mt, gt, vt, yt, _t = ut, bt = [ 'audioobjecttype', 'channelcount', 'samplerate', 'samplingfrequencyindex', 'samplesize' ], Tt = ['width', 'height', 'profileIdc', 'levelIdc', 'profileCompatibility', 'sarRatio'], St = lt.H264Stream, kt = ct, Ct = ce; ((gt = function (a, s) { var o = [], u = 0, l = 0, c = 0, d = 1 / 0; (s = s || {}), gt.prototype.init.call(this), (this.push = function (t) { Ce(a, t), a && bt.forEach(function (e) { a[e] = t[e]; }), o.push(t); }), (this.setEarliestDts = function (e) { l = e; }), (this.setVideoBaseMediaDecodeTime = function (e) { d = e; }), (this.setAudioAppendStart = function (e) { c = e; }), (this.flush = function () { var e, t, i, n, r; 0 !== o.length && ((e = ye(o, a, l)), (a.baseMediaDecodeTime = ke(a, s.keepOriginalTimestamps)), ve(a, e, c, d), (a.samples = _e(e)), (i = J(be(e))), (o = []), (t = Z(u, [a])), (n = new Uint8Array(t.byteLength + i.byteLength)), u++, n.set(t), n.set(i, t.byteLength), Se(a), (r = Math.ceil((1024 * Ct) / a.samplerate)), e.length && this.trigger('timingInfo', { start: e[0].pts, end: e[0].pts + e.length * r }), this.trigger('data', { track: a, boxes: n })), this.trigger('done', 'AudioSegmentStream'); }), (this.reset = function () { Se(a), (o = []), this.trigger('reset'); }); }).prototype = new V()), ((mt = function (c, d) { var t, i, h = 0, p = [], f = []; (d = d || {}), mt.prototype.init.call(this), delete c.minPTS, (this.gopCache_ = []), (this.push = function (e) { Ce(c, e), 'seq_parameter_set_rbsp' !== e.nalUnitType || t || ((t = e.config), (c.sps = [e.data]), Tt.forEach(function (e) { c[e] = t[e]; }, this)), 'pic_parameter_set_rbsp' !== e.nalUnitType || i || ((i = e.data), (c.pps = [e.data])), p.push(e); }), (this.flush = function () { for ( var e, t, i, n, r, a, s, o, u = 0; p.length && 'access_unit_delimiter_rbsp' !== p[0].nalUnitType; ) p.shift(); if (0 === p.length) return this.resetStream_(), void this.trigger('done', 'VideoSegmentStream'); if ( ((e = te(p)), (i = ie(e))[0][0].keyFrame || ((t = this.getGopForFusion_(p[0], c)) ? ((u = t.duration), i.unshift(t), (i.byteLength += t.byteLength), (i.nalCount += t.nalCount), (i.pts = t.pts), (i.dts = t.dts), (i.duration += t.duration)) : (i = ne(i))), f.length) ) { var l; if (!(l = d.alignGopsAtEnd ? this.alignGopsAtEnd_(i) : this.alignGopsAtStart_(i))) return ( this.gopCache_.unshift({ gop: i.pop(), pps: c.pps, sps: c.sps }), (this.gopCache_.length = Math.min(6, this.gopCache_.length)), (p = []), this.resetStream_(), void this.trigger('done', 'VideoSegmentStream') ); Se(c), (i = l); } Ce(c, i), (c.samples = re(i)), (r = J(ae(i))), (c.baseMediaDecodeTime = ke(c, d.keepOriginalTimestamps)), this.trigger( 'processedGopsInfo', i.map(function (e) { return { pts: e.pts, dts: e.dts, byteLength: e.byteLength }; }) ), (s = i[0]), (o = i[i.length - 1]), this.trigger( 'segmentTimingInfo', ft( c.baseMediaDecodeTime, s.dts, s.pts, o.dts + o.duration, o.pts + o.duration, u ) ), this.trigger('timingInfo', { start: i[0].pts, end: i[i.length - 1].pts + i[i.length - 1].duration }), this.gopCache_.unshift({ gop: i.pop(), pps: c.pps, sps: c.sps }), (this.gopCache_.length = Math.min(6, this.gopCache_.length)), (p = []), this.trigger('baseMediaDecodeTime', c.baseMediaDecodeTime), this.trigger('timelineStartInfo', c.timelineStartInfo), (n = Z(h, [c])), (a = new Uint8Array(n.byteLength + r.byteLength)), h++, a.set(n), a.set(r, n.byteLength), this.trigger('data', { track: c, boxes: a }), this.resetStream_(), this.trigger('done', 'VideoSegmentStream'); }), (this.reset = function () { this.resetStream_(), (p = []), (this.gopCache_.length = 0), (f.length = 0), this.trigger('reset'); }), (this.resetStream_ = function () { Se(c), (i = t = void 0); }), (this.getGopForFusion_ = function (e) { var t, i, n, r, a, s = 1 / 0; for (a = 0; a < this.gopCache_.length; a++) (n = (r = this.gopCache_[a]).gop), c.pps && pt(c.pps[0], r.pps[0]) && c.sps && pt(c.sps[0], r.sps[0]) && (n.dts < c.timelineStartInfo.dts || (-1e4 <= (t = e.dts - n.dts - n.duration) && t <= 45e3 && (!i || t < s) && ((i = r), (s = t)))); return i ? i.gop : null; }), (this.alignGopsAtStart_ = function (e) { var t, i, n, r, a, s, o, u; for ( a = e.byteLength, s = e.nalCount, o = e.duration, t = i = 0; t < f.length && i < e.length && ((n = f[t]), (r = e[i]), n.pts !== r.pts); ) r.pts > n.pts ? t++ : (i++, (a -= r.byteLength), (s -= r.nalCount), (o -= r.duration)); return 0 === i ? e : i === e.length ? null : (((u = e.slice(i)).byteLength = a), (u.duration = o), (u.nalCount = s), (u.pts = u[0].pts), (u.dts = u[0].dts), u); }), (this.alignGopsAtEnd_ = function (e) { var t, i, n, r, a, s, o; for (t = f.length - 1, i = e.length - 1, a = null, s = !1; 0 <= t && 0 <= i; ) { if (((n = f[t]), (r = e[i]), n.pts === r.pts)) { s = !0; break; } n.pts > r.pts ? t-- : (t === f.length - 1 && (a = i), i--); } if (!s && null === a) return null; if (0 === (o = s ? i : a)) return e; var u = e.slice(o), l = u.reduce( function (e, t) { return ( (e.byteLength += t.byteLength), (e.duration += t.duration), (e.nalCount += t.nalCount), e ); }, { byteLength: 0, duration: 0, nalCount: 0 } ); return ( (u.byteLength = l.byteLength), (u.duration = l.duration), (u.nalCount = l.nalCount), (u.pts = u[0].pts), (u.dts = u[0].dts), u ); }), (this.alignGopsWith = function (e) { f = e; }); }).prototype = new V()), ((yt = function (e, t) { (this.numberOfTracks = 0), (this.metadataStream = t), 'undefined' != typeof (e = e || {}).remux ? (this.remuxTracks = !!e.remux) : (this.remuxTracks = !0), 'boolean' == typeof e.keepOriginalTimestamps ? (this.keepOriginalTimestamps = e.keepOriginalTimestamps) : (this.keepOriginalTimestamps = !1), (this.pendingTracks = []), (this.videoTrack = null), (this.pendingBoxes = []), (this.pendingCaptions = []), (this.pendingMetadata = []), (this.pendingBytes = 0), (this.emittedTracks = 0), yt.prototype.init.call(this), (this.push = function (e) { return e.text ? this.pendingCaptions.push(e) : e.frames ? this.pendingMetadata.push(e) : (this.pendingTracks.push(e.track), (this.pendingBytes += e.boxes.byteLength), 'video' === e.track.type && ((this.videoTrack = e.track), this.pendingBoxes.push(e.boxes)), void ( 'audio' === e.track.type && ((this.audioTrack = e.track), this.pendingBoxes.unshift(e.boxes)) )); }); }).prototype = new V()), (yt.prototype.flush = function (e) { var t, i, n, r, a = 0, s = { captions: [], captionStreams: {}, metadata: [], info: {} }, o = 0; if (this.pendingTracks.length < this.numberOfTracks) { if ('VideoSegmentStream' !== e && 'AudioSegmentStream' !== e) return; if (this.remuxTracks) return; if (0 === this.pendingTracks.length) return ( this.emittedTracks++, void ( this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0)) ) ); } if ( (this.videoTrack ? ((o = this.videoTrack.timelineStartInfo.pts), Tt.forEach(function (e) { s.info[e] = this.videoTrack[e]; }, this)) : this.audioTrack && ((o = this.audioTrack.timelineStartInfo.pts), bt.forEach(function (e) { s.info[e] = this.audioTrack[e]; }, this)), this.videoTrack || this.audioTrack) ) { for ( 1 === this.pendingTracks.length ? (s.type = this.pendingTracks[0].type) : (s.type = 'combined'), this.emittedTracks += this.pendingTracks.length, n = ee(this.pendingTracks), s.initSegment = new Uint8Array(n.byteLength), s.initSegment.set(n), s.data = new Uint8Array(this.pendingBytes), r = 0; r < this.pendingBoxes.length; r++ ) s.data.set(this.pendingBoxes[r], a), (a += this.pendingBoxes[r].byteLength); for (r = 0; r < this.pendingCaptions.length; r++) ((t = this.pendingCaptions[r]).startTime = fe( t.startPts, o, this.keepOriginalTimestamps )), (t.endTime = fe(t.endPts, o, this.keepOriginalTimestamps)), (s.captionStreams[t.stream] = !0), s.captions.push(t); for (r = 0; r < this.pendingMetadata.length; r++) ((i = this.pendingMetadata[r]).cueTime = fe(i.pts, o, this.keepOriginalTimestamps)), s.metadata.push(i); for ( s.metadata.dispatchType = this.metadataStream.dispatchType, this.pendingTracks.length = 0, this.videoTrack = null, this.pendingBoxes.length = 0, this.pendingCaptions.length = 0, this.pendingBytes = 0, this.pendingMetadata.length = 0, this.trigger('data', s), r = 0; r < s.captions.length; r++ ) (t = s.captions[r]), this.trigger('caption', t); for (r = 0; r < s.metadata.length; r++) (i = s.metadata[r]), this.trigger('id3Frame', i); } this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0)); }), (yt.prototype.setRemux = function (e) { this.remuxTracks = e; }), ((vt = function (n) { var r, a, s = this, i = !0; vt.prototype.init.call(this), (n = n || {}), (this.baseMediaDecodeTime = n.baseMediaDecodeTime || 0), (this.transmuxPipeline_ = {}), (this.setupAacPipeline = function () { var t = {}; ((this.transmuxPipeline_ = t).type = 'aac'), (t.metadataStream = new Ze.MetadataStream()), (t.aacStream = new _t()), (t.audioTimestampRolloverStream = new Ze.TimestampRolloverStream('audio')), (t.timedMetadataTimestampRolloverStream = new Ze.TimestampRolloverStream( 'timed-metadata' )), (t.adtsStream = new at()), (t.coalesceStream = new yt(n, t.metadataStream)), (t.headOfPipeline = t.aacStream), t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream), t.aacStream .pipe(t.timedMetadataTimestampRolloverStream) .pipe(t.metadataStream) .pipe(t.coalesceStream), t.metadataStream.on('timestamp', function (e) { t.aacStream.setTimestamp(e.timeStamp); }), t.aacStream.on('data', function (e) { ('timed-metadata' !== e.type && 'audio' !== e.type) || t.audioSegmentStream || ((a = a || { timelineStartInfo: { baseMediaDecodeTime: s.baseMediaDecodeTime }, codec: 'adts', type: 'audio' }), t.coalesceStream.numberOfTracks++, (t.audioSegmentStream = new gt(a, n)), t.audioSegmentStream.on('timingInfo', s.trigger.bind(s, 'audioTimingInfo')), t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream), s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r })); }), t.coalesceStream.on('data', this.trigger.bind(this, 'data')), t.coalesceStream.on('done', this.trigger.bind(this, 'done')); }), (this.setupTsPipeline = function () { var i = {}; ((this.transmuxPipeline_ = i).type = 'ts'), (i.metadataStream = new Ze.MetadataStream()), (i.packetStream = new Ze.TransportPacketStream()), (i.parseStream = new Ze.TransportParseStream()), (i.elementaryStream = new Ze.ElementaryStream()), (i.timestampRolloverStream = new Ze.TimestampRolloverStream()), (i.adtsStream = new at()), (i.h264Stream = new St()), (i.captionStream = new Ze.CaptionStream()), (i.coalesceStream = new yt(n, i.metadataStream)), (i.headOfPipeline = i.packetStream), i.packetStream .pipe(i.parseStream) .pipe(i.elementaryStream) .pipe(i.timestampRolloverStream), i.timestampRolloverStream.pipe(i.h264Stream), i.timestampRolloverStream.pipe(i.adtsStream), i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream), i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream), i.elementaryStream.on('data', function (e) { var t; if ('metadata' === e.type) { for (t = e.tracks.length; t--; ) r || 'video' !== e.tracks[t].type ? a || 'audio' !== e.tracks[t].type || ((a = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime) : ((r = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime); r && !i.videoSegmentStream && (i.coalesceStream.numberOfTracks++, (i.videoSegmentStream = new mt(r, n)), i.videoSegmentStream.on('timelineStartInfo', function (e) { a && !n.keepOriginalTimestamps && ((a.timelineStartInfo = e), i.audioSegmentStream.setEarliestDts(e.dts - s.baseMediaDecodeTime)); }), i.videoSegmentStream.on('processedGopsInfo', s.trigger.bind(s, 'gopInfo')), i.videoSegmentStream.on( 'segmentTimingInfo', s.trigger.bind(s, 'videoSegmentTimingInfo') ), i.videoSegmentStream.on('baseMediaDecodeTime', function (e) { a && i.audioSegmentStream.setVideoBaseMediaDecodeTime(e); }), i.videoSegmentStream.on('timingInfo', s.trigger.bind(s, 'videoTimingInfo')), i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)), a && !i.audioSegmentStream && (i.coalesceStream.numberOfTracks++, (i.audioSegmentStream = new gt(a, n)), i.audioSegmentStream.on( 'timingInfo', s.trigger.bind(s, 'audioTimingInfo') ), i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)), s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r }); } }), i.coalesceStream.on('data', this.trigger.bind(this, 'data')), i.coalesceStream.on('id3Frame', function (e) { (e.dispatchType = i.metadataStream.dispatchType), s.trigger('id3Frame', e); }), i.coalesceStream.on('caption', this.trigger.bind(this, 'caption')), i.coalesceStream.on('done', this.trigger.bind(this, 'done')); }), (this.setBaseMediaDecodeTime = function (e) { var t = this.transmuxPipeline_; n.keepOriginalTimestamps || (this.baseMediaDecodeTime = e), a && ((a.timelineStartInfo.dts = void 0), (a.timelineStartInfo.pts = void 0), Se(a), t.audioTimestampRolloverStream && t.audioTimestampRolloverStream.discontinuity()), r && (t.videoSegmentStream && (t.videoSegmentStream.gopCache_ = []), (r.timelineStartInfo.dts = void 0), (r.timelineStartInfo.pts = void 0), Se(r), t.captionStream.reset()), t.timestampRolloverStream && t.timestampRolloverStream.discontinuity(); }), (this.setAudioAppendStart = function (e) { a && this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e); }), (this.setRemux = function (e) { var t = this.transmuxPipeline_; (n.remux = e), t && t.coalesceStream && t.coalesceStream.setRemux(e); }), (this.alignGopsWith = function (e) { r && this.transmuxPipeline_.videoSegmentStream && this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e); }), (this.push = function (e) { if (i) { var t = kt(e); t && 'aac' !== this.transmuxPipeline_.type ? this.setupAacPipeline() : t || 'ts' === this.transmuxPipeline_.type || this.setupTsPipeline(), (i = !1); } this.transmuxPipeline_.headOfPipeline.push(e); }), (this.flush = function () { (i = !0), this.transmuxPipeline_.headOfPipeline.flush(); }), (this.endTimeline = function () { this.transmuxPipeline_.headOfPipeline.endTimeline(); }), (this.reset = function () { this.transmuxPipeline_.headOfPipeline && this.transmuxPipeline_.headOfPipeline.reset(); }), (this.resetCaptions = function () { this.transmuxPipeline_.captionStream && this.transmuxPipeline_.captionStream.reset(); }); }).prototype = new V()); function Et(a, s) { var o = [], u = 0, l = 0, c = 0, d = 1 / 0, h = null, p = null; (s = s || {}), Et.prototype.init.call(this), (this.push = function (t) { Ce(a, t), a && bt.forEach(function (e) { a[e] = t[e]; }), o.push(t); }), (this.setEarliestDts = function (e) { l = e; }), (this.setVideoBaseMediaDecodeTime = function (e) { d = e; }), (this.setAudioAppendStart = function (e) { c = e; }), (this.processFrames_ = function () { var e, t, i, n, r; 0 !== o.length && 0 !== (e = ye(o, a, l)).length && ((a.baseMediaDecodeTime = ke(a, s.keepOriginalTimestamps)), ve(a, e, c, d), (a.samples = _e(e)), (i = J(be(e))), (o = []), (t = Z(u, [a])), u++, (a.initSegment = ee([a])), (n = new Uint8Array(t.byteLength + i.byteLength)).set(t), n.set(i, t.byteLength), Se(a), null === h && (p = h = e[0].pts), (p += e.length * ((1024 * At) / a.samplerate)), (r = { start: h }), this.trigger('timingInfo', r), this.trigger('data', { track: a, boxes: n })); }), (this.flush = function () { this.processFrames_(), this.trigger('timingInfo', { start: h, end: p }), this.resetTiming_(), this.trigger('done', 'AudioSegmentStream'); }), (this.partialFlush = function () { this.processFrames_(), this.trigger('partialdone', 'AudioSegmentStream'); }), (this.endTimeline = function () { this.flush(), this.trigger('endedtimeline', 'AudioSegmentStream'); }), (this.resetTiming_ = function () { Se(a), (p = h = null); }), (this.reset = function () { this.resetTiming_(), (o = []), this.trigger('reset'); }); } var wt = { Transmuxer: vt, VideoSegmentStream: mt, AudioSegmentStream: gt, AUDIO_PROPERTIES: bt, VIDEO_PROPERTIES: Tt, generateVideoSegmentTimingInfo: ft }.Transmuxer, It = { Adts: at, h264: lt }, At = ce; Et.prototype = new V(); function xt(o, u) { var t, i, l, c = 0, d = [], h = [], p = null, f = null, m = !0; (u = u || {}), xt.prototype.init.call(this), (this.push = function (e) { Ce(o, e), 'undefined' == typeof o.timelineStartInfo.dts && (o.timelineStartInfo.dts = e.dts), 'seq_parameter_set_rbsp' !== e.nalUnitType || t || ((t = e.config), (o.sps = [e.data]), Tt.forEach(function (e) { o[e] = t[e]; }, this)), 'pic_parameter_set_rbsp' !== e.nalUnitType || i || ((i = e.data), (o.pps = [e.data])), d.push(e); }), (this.processNals_ = function (e) { var t; for (d = h.concat(d); d.length && 'access_unit_delimiter_rbsp' !== d[0].nalUnitType; ) d.shift(); if (0 !== d.length) { var i = te(d); if (i.length) if ( ((h = i[i.length - 1]), e && (i.pop(), (i.duration -= h.duration), (i.nalCount -= h.length), (i.byteLength -= h.byteLength)), i.length) ) { if ((this.trigger('timelineStartInfo', o.timelineStartInfo), m)) { if (!(l = ie(i))[0][0].keyFrame) { if (!(l = ne(l))[0][0].keyFrame) return (d = [].concat.apply([], i).concat(h)), void (h = []); (i = [].concat.apply([], l)).duration = l.duration; } m = !1; } for ( null === p && ((p = i[0].pts), (f = p)), f += i.duration, this.trigger('timingInfo', { start: p, end: f }), t = 0; t < i.length; t++ ) { var n = i[t]; o.samples = se(n); var r = J(oe(n)); Se(o), Ce(o, n), (o.baseMediaDecodeTime = ke(o, u.keepOriginalTimestamps)); var a = Z(c, [o]); c++, (o.initSegment = ee([o])); var s = new Uint8Array(a.byteLength + r.byteLength); s.set(a), s.set(r, a.byteLength), this.trigger('data', { track: o, boxes: s, sequence: c, videoFrameDts: n.dts, videoFramePts: n.pts }); } d = []; } else d = []; } }), (this.resetTimingAndConfig_ = function () { (i = t = void 0), (f = p = null); }), (this.partialFlush = function () { this.processNals_(!0), this.trigger('partialdone', 'VideoSegmentStream'); }), (this.flush = function () { this.processNals_(!1), this.resetTimingAndConfig_(), this.trigger('done', 'VideoSegmentStream'); }), (this.endTimeline = function () { this.flush(), this.trigger('endedtimeline', 'VideoSegmentStream'); }), (this.reset = function () { this.resetTimingAndConfig_(), (h = []), (d = []), (m = !0), this.trigger('reset'); }); } var Pt = Et; xt.prototype = new V(); function Lt(e) { return (e.prototype = new V()), e.prototype.init.call(e), e; } function Ot(t, i) { t.on('data', i.trigger.bind(i, 'data')), t.on('done', i.trigger.bind(i, 'done')), t.on('partialdone', i.trigger.bind(i, 'partialdone')), t.on('endedtimeline', i.trigger.bind(i, 'endedtimeline')), t.on('audioTimingInfo', i.trigger.bind(i, 'audioTimingInfo')), t.on('videoTimingInfo', i.trigger.bind(i, 'videoTimingInfo')), t.on('trackinfo', i.trigger.bind(i, 'trackinfo')), t.on('id3Frame', function (e) { (e.dispatchType = t.metadataStream.dispatchType), (e.cueTime = de(e.pts)), i.trigger('id3Frame', e); }), t.on('caption', function (e) { i.trigger('caption', e); }); } function Dt(i) { var n = null, r = !0; (i = i || {}), Dt.prototype.init.call(this), (i.baseMediaDecodeTime = i.baseMediaDecodeTime || 0), (this.push = function (e) { if (r) { var t = Rt(e); !t || (n && 'aac' === n.type) ? t || (n && 'ts' === n.type) || ((n = (function (i) { var n = { type: 'ts', tracks: { audio: null, video: null }, packet: new Ze.TransportPacketStream(), parse: new Ze.TransportParseStream(), elementary: new Ze.ElementaryStream(), timestampRollover: new Ze.TimestampRolloverStream(), adts: new It.Adts(), h264: new It.h264.H264Stream(), captionStream: new Ze.CaptionStream(), metadataStream: new Ze.MetadataStream() }; return ( (n.headOfPipeline = n.packet), n.packet.pipe(n.parse).pipe(n.elementary).pipe(n.timestampRollover), n.timestampRollover.pipe(n.h264), n.h264.pipe(n.captionStream), n.timestampRollover.pipe(n.metadataStream), n.timestampRollover.pipe(n.adts), n.elementary.on('data', function (e) { if ('metadata' === e.type) { for (var t = 0; t < e.tracks.length; t++) n.tracks[e.tracks[t].type] || ((n.tracks[e.tracks[t].type] = e.tracks[t]), (n.tracks[e.tracks[t].type].timelineStartInfo.baseMediaDecodeTime = i.baseMediaDecodeTime)); n.tracks.video && !n.videoSegmentStream && ((n.videoSegmentStream = new Mt(n.tracks.video, i)), n.videoSegmentStream.on('timelineStartInfo', function (e) { n.tracks.audio && !i.keepOriginalTimestamps && n.audioSegmentStream.setEarliestDts( e.dts - i.baseMediaDecodeTime ); }), n.videoSegmentStream.on( 'timingInfo', n.trigger.bind(n, 'videoTimingInfo') ), n.videoSegmentStream.on('data', function (e) { n.trigger('data', { type: 'video', data: e }); }), n.videoSegmentStream.on('done', n.trigger.bind(n, 'done')), n.videoSegmentStream.on( 'partialdone', n.trigger.bind(n, 'partialdone') ), n.videoSegmentStream.on( 'endedtimeline', n.trigger.bind(n, 'endedtimeline') ), n.h264.pipe(n.videoSegmentStream)), n.tracks.audio && !n.audioSegmentStream && ((n.audioSegmentStream = new Pt(n.tracks.audio, i)), n.audioSegmentStream.on('data', function (e) { n.trigger('data', { type: 'audio', data: e }); }), n.audioSegmentStream.on('done', n.trigger.bind(n, 'done')), n.audioSegmentStream.on( 'partialdone', n.trigger.bind(n, 'partialdone') ), n.audioSegmentStream.on( 'endedtimeline', n.trigger.bind(n, 'endedtimeline') ), n.audioSegmentStream.on( 'timingInfo', n.trigger.bind(n, 'audioTimingInfo') ), n.adts.pipe(n.audioSegmentStream)), n.trigger('trackinfo', { hasAudio: !!n.tracks.audio, hasVideo: !!n.tracks.video }); } }), n.captionStream.on('data', function (e) { var t; (t = (n.tracks.video && n.tracks.video.timelineStartInfo.pts) || 0), (e.startTime = fe(e.startPts, t, i.keepOriginalTimestamps)), (e.endTime = fe(e.endPts, t, i.keepOriginalTimestamps)), n.trigger('caption', e); }), (n = Lt(n)).metadataStream.on('data', n.trigger.bind(n, 'id3Frame')), n ); })(i)), Ot(n, this)) : ((n = (function (t) { var i = { type: 'aac', tracks: { audio: null }, metadataStream: new Ze.MetadataStream(), aacStream: new _t(), audioRollover: new Ze.TimestampRolloverStream('audio'), timedMetadataRollover: new Ze.TimestampRolloverStream('timed-metadata'), adtsStream: new at(!0) }; return ( (i.headOfPipeline = i.aacStream), i.aacStream.pipe(i.audioRollover).pipe(i.adtsStream), i.aacStream.pipe(i.timedMetadataRollover).pipe(i.metadataStream), i.metadataStream.on('timestamp', function (e) { i.aacStream.setTimestamp(e.timeStamp); }), i.aacStream.on('data', function (e) { ('timed-metadata' !== e.type && 'audio' !== e.type) || i.audioSegmentStream || ((i.tracks.audio = i.tracks.audio || { timelineStartInfo: { baseMediaDecodeTime: t.baseMediaDecodeTime }, codec: 'adts', type: 'audio' }), (i.audioSegmentStream = new Pt(i.tracks.audio, t)), i.audioSegmentStream.on('data', function (e) { i.trigger('data', { type: 'audio', data: e }); }), i.audioSegmentStream.on( 'partialdone', i.trigger.bind(i, 'partialdone') ), i.audioSegmentStream.on('done', i.trigger.bind(i, 'done')), i.audioSegmentStream.on( 'endedtimeline', i.trigger.bind(i, 'endedtimeline') ), i.audioSegmentStream.on( 'timingInfo', i.trigger.bind(i, 'audioTimingInfo') ), i.adtsStream.pipe(i.audioSegmentStream), i.trigger('trackinfo', { hasAudio: !!i.tracks.audio, hasVideo: !!i.tracks.video })); }), (i = Lt(i)).metadataStream.on('data', i.trigger.bind(i, 'id3Frame')), i ); })(i)), Ot(n, this)), (r = !1); } n.headOfPipeline.push(e); }), (this.flush = function () { n && ((r = !0), n.headOfPipeline.flush()); }), (this.partialFlush = function () { n && n.headOfPipeline.partialFlush(); }), (this.endTimeline = function () { n && n.headOfPipeline.endTimeline(); }), (this.reset = function () { n && n.headOfPipeline.reset(); }), (this.setBaseMediaDecodeTime = function (e) { i.keepOriginalTimestamps || (i.baseMediaDecodeTime = e), n && (n.tracks.audio && ((n.tracks.audio.timelineStartInfo.dts = void 0), (n.tracks.audio.timelineStartInfo.pts = void 0), Se(n.tracks.audio), n.audioRollover && n.audioRollover.discontinuity()), n.tracks.video && (n.videoSegmentStream && (n.videoSegmentStream.gopCache_ = []), (n.tracks.video.timelineStartInfo.dts = void 0), (n.tracks.video.timelineStartInfo.pts = void 0), Se(n.tracks.video)), n.timestampRollover && n.timestampRollover.discontinuity()); }), (this.setRemux = function (e) { (i.remux = e), n && n.coalesceStream && n.coalesceStream.setRemux(e); }), (this.setAudioAppendStart = function (e) { n && n.tracks.audio && n.audioSegmentStream && n.audioSegmentStream.setAudioAppendStart(e); }), (this.alignGopsWith = function (e) {}); } var Mt = xt, Rt = ct; Dt.prototype = new V(); function Nt(e, t) { for (var i = e, n = 0; n < t.length; n++) { var r = t[n]; if (i < r.size) return r; i -= r.size; } return null; } function Ut(e, c) { var n = Ht(e, ['moof', 'traf']), t = Ht(e, ['mdat']), d = {}, r = []; return ( t.forEach(function (e, t) { var i = n[t]; r.push({ mdat: e, traf: i }); }), r.forEach(function (e) { var t, i = e.mdat, n = e.traf, r = Ht(n, ['tfhd']), a = Kt(r[0]), s = a.trackId, o = Ht(n, ['tfdt']), u = 0 < o.length ? zt(o[0]).baseMediaDecodeTime : 0, l = Ht(n, ['trun']); c === s && 0 < l.length && ((t = (function (e, t, i) { var n, r, a, s, o = new DataView(e.buffer, e.byteOffset, e.byteLength), u = []; for (r = 0; r + 4 < e.length; r += a) if (((a = o.getUint32(r)), (r += 4), !(a <= 0))) switch (31 & e[r]) { case 6: var l = e.subarray(r + 1, r + 1 + a), c = Nt(r, t); if ( ((n = { nalUnitType: 'sei_rbsp', size: a, data: l, escapedRBSP: Yt(l), trackId: i }), c) ) (n.pts = c.pts), (n.dts = c.dts), (s = c); else { if (!s) break; (n.pts = s.pts), (n.dts = s.dts); } u.push(n); } return u; })( i, (function (e, t, i) { var n = t, r = i.defaultSampleDuration || 0, a = i.defaultSampleSize || 0, s = i.trackId, o = []; return ( e.forEach(function (e) { var t = Xt(e).samples; t.forEach(function (e) { void 0 === e.duration && (e.duration = r), void 0 === e.size && (e.size = a), (e.trackId = s), (e.dts = n), void 0 === e.compositionTimeOffset && (e.compositionTimeOffset = 0), (e.pts = n + e.compositionTimeOffset), (n += e.duration); }), (o = o.concat(t)); }), o ); })(l, u, a), s )), d[s] || (d[s] = []), (d[s] = d[s].concat(t))); }), d ); } function Ft(e) { return 'AudioSegmentStream' === e ? 'audio' : 'VideoSegmentStream' === e ? 'video' : ''; } var Bt = Dt, jt = function (e) { return e >>> 0; }, Vt = function (e) { var t = ''; return ( (t += String.fromCharCode(e[0])), (t += String.fromCharCode(e[1])), (t += String.fromCharCode(e[2])), (t += String.fromCharCode(e[3])) ); }, qt = jt, Ht = function e(t, i) { var n, r, a, s, o, u = []; if (!i.length) return null; for (n = 0; n < t.byteLength; ) (r = qt((t[n] << 24) | (t[n + 1] << 16) | (t[n + 2] << 8) | t[n + 3])), (a = Vt(t.subarray(n + 4, n + 8))), (s = 1 < r ? n + r : t.byteLength), a === i[0] && (1 === i.length ? u.push(t.subarray(n + 8, s)) : (o = e(t.subarray(n + 8, s), i.slice(1))).length && (u = u.concat(o))), (n = s); return u; }, Wt = jt, zt = function (e) { var t = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), baseMediaDecodeTime: Wt((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7]) }; return ( 1 === t.version && ((t.baseMediaDecodeTime *= Math.pow(2, 32)), (t.baseMediaDecodeTime += Wt((e[8] << 24) | (e[9] << 16) | (e[10] << 8) | e[11]))), t ); }, Gt = function (e) { return { isLeading: (12 & e[0]) >>> 2, dependsOn: 3 & e[0], isDependedOn: (192 & e[1]) >>> 6, hasRedundancy: (48 & e[1]) >>> 4, paddingValue: (14 & e[1]) >>> 1, isNonSyncSample: 1 & e[1], degradationPriority: (e[2] << 8) | e[3] }; }, Xt = function (e) { var t, i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: [] }, n = new DataView(e.buffer, e.byteOffset, e.byteLength), r = 1 & i.flags[2], a = 4 & i.flags[2], s = 1 & i.flags[1], o = 2 & i.flags[1], u = 4 & i.flags[1], l = 8 & i.flags[1], c = n.getUint32(4), d = 8; for ( r && ((i.dataOffset = n.getInt32(d)), (d += 4)), a && c && ((t = { flags: Gt(e.subarray(d, d + 4)) }), (d += 4), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t), c--); c--; ) (t = {}), s && ((t.duration = n.getUint32(d)), (d += 4)), o && ((t.size = n.getUint32(d)), (d += 4)), u && ((t.flags = Gt(e.subarray(d, d + 4))), (d += 4)), l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)), i.samples.push(t); return i; }, Kt = function (e) { var t, i = new DataView(e.buffer, e.byteOffset, e.byteLength), n = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: i.getUint32(4) }, r = 1 & n.flags[2], a = 2 & n.flags[2], s = 8 & n.flags[2], o = 16 & n.flags[2], u = 32 & n.flags[2], l = 65536 & n.flags[0], c = 131072 & n.flags[0]; return ( (t = 8), r && ((t += 4), (n.baseDataOffset = i.getUint32(12)), (t += 4)), a && ((n.sampleDescriptionIndex = i.getUint32(t)), (t += 4)), s && ((n.defaultSampleDuration = i.getUint32(t)), (t += 4)), o && ((n.defaultSampleSize = i.getUint32(t)), (t += 4)), u && (n.defaultSampleFlags = i.getUint32(t)), l && (n.durationIsEmpty = !0), !r && c && (n.baseDataOffsetIsMoof = !0), n ); }, Yt = Ae, $t = Ue.CaptionStream, Qt = function () { var t, a, s, o, u, i, n = !1; (this.isInitialized = function () { return n; }), (this.init = function (e) { (t = new $t()), (n = !0), (i = !!e && e.isPartial), t.on('data', function (e) { (e.startTime = e.startPts / o), (e.endTime = e.endPts / o), u.captions.push(e), (u.captionStreams[e.stream] = !0); }); }), (this.isNewInit = function (e, t) { return ( !( (e && 0 === e.length) || (t && 'object' == typeof t && 0 === Object.keys(t).length) ) && (s !== e[0] || o !== t[s]) ); }), (this.parse = function (e, t, i) { var n; if (!this.isInitialized()) return null; if (!t || !i) return null; if (this.isNewInit(t, i)) (s = t[0]), (o = i[s]); else if (null === s || !o) return a.push(e), null; for (; 0 < a.length; ) { var r = a.shift(); this.parse(r, t, i); } return null !== (n = (function (e, t, i) { return null === t ? null : { seiNals: Ut(e, t)[t], timescale: i }; })(e, s, o)) && n.seiNals ? (this.pushNals(n.seiNals), this.flushStream(), u) : null; }), (this.pushNals = function (e) { if (!this.isInitialized() || !e || 0 === e.length) return null; e.forEach(function (e) { t.push(e); }); }), (this.flushStream = function () { if (!this.isInitialized()) return null; i ? t.partialFlush() : t.flush(); }), (this.clearParsedCaptions = function () { (u.captions = []), (u.captionStreams = {}); }), (this.resetCaptionStream = function () { if (!this.isInitialized()) return null; t.reset(); }), (this.clearAllCaptions = function () { this.clearParsedCaptions(), this.resetCaptionStream(); }), (this.reset = function () { (a = []), (o = s = null), u ? this.clearParsedCaptions() : (u = { captions: [], captionStreams: {} }), this.resetCaptionStream(); }), this.reset(); }, Jt = (function () { function e(e, t) { (this.options = t || {}), (this.self = e), this.init(); } var t = e.prototype; return ( (t.init = function () { this.transmuxer && this.transmuxer.dispose(), (this.transmuxer = this.options.handlePartialData ? new Bt(this.options) : new wt(this.options)), this.options.handlePartialData ? (function (n, e) { e.on('data', function (e) { var t = { data: e.data.track.initSegment.buffer, byteOffset: e.data.track.initSegment.byteOffset, byteLength: e.data.track.initSegment.byteLength }, i = { boxes: { data: e.data.boxes.buffer, byteOffset: e.data.boxes.byteOffset, byteLength: e.data.boxes.byteLength }, initSegment: t, type: e.type, sequence: e.data.sequence }; 'undefined' != typeof e.data.videoFrameDts && (i.videoFrameDtsTime = ge(e.data.videoFrameDts)), 'undefined' != typeof e.data.videoFramePts && (i.videoFramePtsTime = ge(e.data.videoFramePts)), n.postMessage({ action: 'data', segment: i }, [ i.boxes.data, i.initSegment.data ]); }), e.on('id3Frame', function (e) { n.postMessage({ action: 'id3Frame', id3Frame: e }); }), e.on('caption', function (e) { n.postMessage({ action: 'caption', caption: e }); }), e.on('done', function (e) { n.postMessage({ action: 'done', type: Ft(e) }); }), e.on('partialdone', function (e) { n.postMessage({ action: 'partialdone', type: Ft(e) }); }), e.on('endedsegment', function (e) { n.postMessage({ action: 'endedSegment', type: Ft(e) }); }), e.on('trackinfo', function (e) { n.postMessage({ action: 'trackinfo', trackInfo: e }); }), e.on('audioTimingInfo', function (e) { if (null !== e.start) { var t = { start: ge(e.start) }; e.end && (t.end = ge(e.end)), n.postMessage({ action: 'audioTimingInfo', audioTimingInfo: t }); } else n.postMessage({ action: 'audioTimingInfo', audioTimingInfo: e }); }), e.on('videoTimingInfo', function (e) { var t = { start: ge(e.start) }; e.end && (t.end = ge(e.end)), n.postMessage({ action: 'videoTimingInfo', videoTimingInfo: t }); }); })(this.self, this.transmuxer) : (function (n, e) { e.on('data', function (e) { var t = e.initSegment; e.initSegment = { data: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }; var i = e.data; (e.data = i.buffer), n.postMessage( { action: 'data', segment: e, byteOffset: i.byteOffset, byteLength: i.byteLength }, [e.data] ); }), e.on('done', function (e) { n.postMessage({ action: 'done' }); }), e.on('gopInfo', function (e) { n.postMessage({ action: 'gopInfo', gopInfo: e }); }), e.on('videoSegmentTimingInfo', function (e) { var t = { start: { decode: ge(e.start.dts), presentation: ge(e.start.pts) }, end: { decode: ge(e.end.dts), presentation: ge(e.end.pts) }, baseMediaDecodeTime: ge(e.baseMediaDecodeTime) }; e.prependedContentDuration && (t.prependedContentDuration = ge(e.prependedContentDuration)), n.postMessage({ action: 'videoSegmentTimingInfo', videoSegmentTimingInfo: t }); }), e.on('id3Frame', function (e) { n.postMessage({ action: 'id3Frame', id3Frame: e }); }), e.on('caption', function (e) { n.postMessage({ action: 'caption', caption: e }); }), e.on('trackinfo', function (e) { n.postMessage({ action: 'trackinfo', trackInfo: e }); }), e.on('audioTimingInfo', function (e) { n.postMessage({ action: 'audioTimingInfo', audioTimingInfo: { start: ge(e.start), end: ge(e.end) } }); }), e.on('videoTimingInfo', function (e) { n.postMessage({ action: 'videoTimingInfo', videoTimingInfo: { start: ge(e.start), end: ge(e.end) } }); }); })(this.self, this.transmuxer); }), (t.pushMp4Captions = function (e) { this.captionParser || ((this.captionParser = new Qt()), this.captionParser.init()); var t = new Uint8Array(e.data, e.byteOffset, e.byteLength), i = this.captionParser.parse(t, e.trackIds, e.timescales); this.self.postMessage( { action: 'mp4Captions', captions: (i && i.captions) || [], data: t.buffer }, [t.buffer] ); }), (t.clearAllMp4Captions = function () { this.captionParser && this.captionParser.clearAllCaptions(); }), (t.clearParsedMp4Captions = function () { this.captionParser && this.captionParser.clearParsedCaptions(); }), (t.push = function (e) { var t = new Uint8Array(e.data, e.byteOffset, e.byteLength); this.transmuxer.push(t); }), (t.reset = function () { this.transmuxer.reset(); }), (t.setTimestampOffset = function (e) { var t = e.timestampOffset || 0; this.transmuxer.setBaseMediaDecodeTime(Math.round(me(t))); }), (t.setAudioAppendStart = function (e) { this.transmuxer.setAudioAppendStart(Math.ceil(me(e.appendStart))); }), (t.setRemux = function (e) { this.transmuxer.setRemux(e.remux); }), (t.flush = function (e) { this.transmuxer.flush(), Zt.postMessage({ action: 'done', type: 'transmuxed' }); }), (t.partialFlush = function (e) { this.transmuxer.partialFlush(), Zt.postMessage({ action: 'partialdone', type: 'transmuxed' }); }), (t.endTimeline = function () { this.transmuxer.endTimeline(), Zt.postMessage({ action: 'endedtimeline', type: 'transmuxed' }); }), (t.alignGopsWith = function (e) { this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice()); }), e ); })(); new (function (t) { t.onmessage = function (e) { 'init' === e.data.action && e.data.options ? (this.messageHandlers = new Jt(t, e.data.options)) : (this.messageHandlers || (this.messageHandlers = new Jt(t)), e.data && e.data.action && 'init' !== e.data.action && this.messageHandlers[e.data.action] && this.messageHandlers[e.data.action](e.data)); }; })(Zt); })(); }), qc = Pc('PlaylistSelector'), Hc = (function (n) { function e(e, t) { var i; if (((i = n.call(this) || this), !e)) throw new TypeError('Initialization settings are required'); if ('function' != typeof e.currentTime) throw new TypeError('No currentTime getter specified'); if (!e.mediaSource) throw new TypeError('No MediaSource specified'); return ( (i.bandwidth = e.bandwidth), (i.throughput = { rate: 0, count: 0 }), (i.roundTrip = NaN), i.resetStats_(), (i.mediaIndex = null), (i.hasPlayed_ = e.hasPlayed), (i.currentTime_ = e.currentTime), (i.seekable_ = e.seekable), (i.seeking_ = e.seeking), (i.duration_ = e.duration), (i.mediaSource_ = e.mediaSource), (i.vhs_ = e.vhs), (i.loaderType_ = e.loaderType), (i.currentMediaInfo_ = void 0), (i.startingMediaInfo_ = void 0), (i.segmentMetadataTrack_ = e.segmentMetadataTrack), (i.goalBufferLength_ = e.goalBufferLength), (i.sourceType_ = e.sourceType), (i.sourceUpdater_ = e.sourceUpdater), (i.inbandTextTracks_ = e.inbandTextTracks), (i.state_ = 'INIT'), (i.handlePartialData_ = e.handlePartialData), (i.timelineChangeController_ = e.timelineChangeController), (i.shouldSaveSegmentTimingInfo_ = !0), (i.checkBufferTimeout_ = null), (i.error_ = void 0), (i.currentTimeline_ = -1), (i.pendingSegment_ = null), (i.xhrOptions_ = null), (i.pendingSegments_ = []), (i.audioDisabled_ = !1), (i.isPendingTimestampOffset_ = !1), (i.gopBuffer_ = []), (i.timeMapping_ = 0), (i.safeAppend_ = 11 <= da.browser.IE_VERSION), (i.appendInitSegment_ = { audio: !0, video: !0 }), (i.playlistOfLastInitSegment_ = { audio: null, video: null }), (i.callQueue_ = []), (i.loadQueue_ = []), (i.metadataQueue_ = { id3: [], caption: [] }), (i.activeInitSegmentId_ = null), (i.initSegments_ = {}), (i.cacheEncryptionKeys_ = e.cacheEncryptionKeys), (i.keyCache_ = {}), (i.decrypter_ = e.decrypter), (i.syncController_ = e.syncController), (i.syncPoint_ = { segmentIndex: 0, time: 0 }), (i.transmuxer_ = i.createTransmuxer_()), (i.triggerSyncInfoUpdate_ = function () { return i.trigger('syncinfoupdate'); }), i.syncController_.on('syncinfoupdate', i.triggerSyncInfoUpdate_), i.mediaSource_.addEventListener('sourceopen', function () { i.isEndOfStream_() || (i.ended_ = !1); }), (i.fetchAtBuffer_ = !1), (i.logger_ = Pc('SegmentLoader[' + i.loaderType_ + ']')), Object.defineProperty(Ve(i), 'state', { get: function () { return this.state_; }, set: function (e) { e !== this.state_ && (this.logger_(this.state_ + ' -> ' + e), (this.state_ = e), this.trigger('statechange')); } }), i.sourceUpdater_.on('ready', function () { i.hasEnoughInfoToAppend_() && i.processCallQueue_(); }), 'main' === i.loaderType_ && i.timelineChangeController_.on('pendingtimelinechange', function () { i.hasEnoughInfoToAppend_() && i.processCallQueue_(); }), 'audio' === i.loaderType_ && i.timelineChangeController_.on('timelinechange', function () { i.hasEnoughInfoToLoad_() && i.processLoadQueue_(), i.hasEnoughInfoToAppend_() && i.processCallQueue_(); }), i ); } Ge(e, n); var t = e.prototype; return ( (t.createTransmuxer_ = function () { var e = new Vc(); return ( e.postMessage({ action: 'init', options: { remux: !1, alignGopsAtEnd: this.safeAppend_, keepOriginalTimestamps: !0, handlePartialData: this.handlePartialData_ } }), e ); }), (t.resetStats_ = function () { (this.mediaBytesTransferred = 0), (this.mediaRequests = 0), (this.mediaRequestsAborted = 0), (this.mediaRequestsTimedout = 0), (this.mediaRequestsErrored = 0), (this.mediaTransferDuration = 0), (this.mediaSecondsLoaded = 0); }), (t.dispose = function () { this.trigger('dispose'), (this.state = 'DISPOSED'), this.pause(), this.abort_(), this.transmuxer_ && (this.transmuxer_.terminate(), hc()), this.resetStats_(), this.checkBufferTimeout_ && T.clearTimeout(this.checkBufferTimeout_), this.syncController_ && this.triggerSyncInfoUpdate_ && this.syncController_.off('syncinfoupdate', this.triggerSyncInfoUpdate_), this.off(); }), (t.setAudio = function (e) { (this.audioDisabled_ = !e), e ? (this.appendInitSegment_.audio = !0) : this.sourceUpdater_.removeAudio(0, this.duration_()); }), (t.abort = function () { 'WAITING' === this.state ? (this.abort_(), (this.state = 'READY'), this.paused() || this.monitorBuffer_()) : this.pendingSegment_ && (this.pendingSegment_ = null); }), (t.abort_ = function () { this.pendingSegment_ && this.pendingSegment_.abortRequests && this.pendingSegment_.abortRequests(), (this.pendingSegment_ = null), (this.callQueue_ = []), (this.loadQueue_ = []), (this.metadataQueue_.id3 = []), (this.metadataQueue_.caption = []), this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_); }), (t.checkForAbort_ = function (e) { return 'APPENDING' !== this.state || this.pendingSegment_ ? !this.pendingSegment_ || this.pendingSegment_.requestId !== e : ((this.state = 'READY'), !0); }), (t.error = function (e) { return ( 'undefined' != typeof e && (this.logger_('error occurred:', e), (this.error_ = e)), (this.pendingSegment_ = null), this.error_ ); }), (t.endOfStream = function () { (this.ended_ = !0), this.transmuxer_ && dc(this.transmuxer_), (this.gopBuffer_.length = 0), this.pause(), this.trigger('ended'); }), (t.buffered_ = function () { if (!this.sourceUpdater_ || !this.startingMediaInfo_) return da.createTimeRanges(); if ('main' === this.loaderType_) { var e = this.startingMediaInfo_, t = e.hasAudio, i = e.hasVideo, n = e.isMuxed; if (i && t && !this.audioDisabled_ && !n) return this.sourceUpdater_.buffered(); if (i) return this.sourceUpdater_.videoBuffered(); } return this.sourceUpdater_.audioBuffered(); }), (t.initSegmentForMap = function (e, t) { if ((void 0 === t && (t = !1), !e)) return null; var i = gl(e), n = this.initSegments_[i]; return ( t && !n && e.bytes && (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: e.bytes, tracks: e.tracks, timescales: e.timescales }), n || e ); }), (t.segmentKey = function (e, t) { if ((void 0 === t && (t = !1), !e)) return null; var i = vl(e), n = this.keyCache_[i]; this.cacheEncryptionKeys_ && t && !n && e.bytes && (this.keyCache_[i] = n = { resolvedUri: e.resolvedUri, bytes: e.bytes }); var r = { resolvedUri: (n || e).resolvedUri }; return n && (r.bytes = n.bytes), r; }), (t.couldBeginLoading_ = function () { return this.playlist_ && !this.paused(); }), (t.load = function () { if ((this.monitorBuffer_(), this.playlist_)) { if ( (this.syncController_.setDateTimeMapping(this.playlist_), 'INIT' === this.state && this.couldBeginLoading_()) ) return this.init_(); !this.couldBeginLoading_() || ('READY' !== this.state && 'INIT' !== this.state) || (this.state = 'READY'); } }), (t.init_ = function () { return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_(); }), (t.playlist = function (e, t) { if ((void 0 === t && (t = {}), e)) { var i = this.playlist_, n = this.pendingSegment_; (this.playlist_ = e), (this.xhrOptions_ = t), 'INIT' === this.state && (e.syncInfo = { mediaSequence: e.mediaSequence, time: 0 }); var r = null; if ( (i && (i.id ? (r = i.id) : i.uri && (r = i.uri)), this.logger_('playlist update [' + r + ' => ' + (e.id || e.uri) + ']'), this.trigger('syncinfoupdate'), 'INIT' === this.state && this.couldBeginLoading_()) ) return this.init_(); if (!i || i.uri !== e.uri) return ( (null === this.mediaIndex && !this.handlePartialData_) || this.resyncLoader(), (this.currentMediaInfo_ = void 0), void this.trigger('playlistupdate') ); var a = e.mediaSequence - i.mediaSequence; this.logger_('live window shift [' + a + ']'), null !== this.mediaIndex && (this.mediaIndex -= a), n && ((n.mediaIndex -= a), 0 <= n.mediaIndex && (n.segment = e.segments[n.mediaIndex])), this.syncController_.saveExpiredSegmentInfo(i, e); } }), (t.pause = function () { this.checkBufferTimeout_ && (T.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = null)); }), (t.paused = function () { return null === this.checkBufferTimeout_; }), (t.resetEverything = function (e) { (this.ended_ = !1), (this.appendInitSegment_ = { audio: !0, video: !0 }), this.resetLoader(), this.remove(0, 1 / 0, e), this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }); }), (t.resetLoader = function () { (this.fetchAtBuffer_ = !1), this.resyncLoader(); }), (t.resyncLoader = function () { this.transmuxer_ && dc(this.transmuxer_), (this.mediaIndex = null), (this.syncPoint_ = null), (this.isPendingTimestampOffset_ = !1), (this.callQueue_ = []), (this.loadQueue_ = []), (this.metadataQueue_.id3 = []), (this.metadataQueue_.caption = []), this.abort(), this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' }); }), (t.remove = function (e, t, i) { if ( (void 0 === i && (i = function () {}), t === 1 / 0 && (t = this.duration_()), this.sourceUpdater_ && this.currentMediaInfo_) ) { var n = 1, r = function () { 0 === --n && i(); }; for (var a in (this.audioDisabled_ || (n++, this.sourceUpdater_.removeAudio(e, t, r)), 'main' === this.loaderType_ && this.currentMediaInfo_ && this.currentMediaInfo_.hasVideo && ((this.gopBuffer_ = (function (e, t, i, n) { for ( var r = Math.ceil((t - n) * fu), a = Math.ceil((i - n) * fu), s = e.slice(), o = e.length; o-- && !(e[o].pts <= a); ); if (-1 === o) return s; for (var u = o + 1; u-- && !(e[u].pts <= r); ); return (u = Math.max(u, 0)), s.splice(u, o - u + 1), s; })(this.gopBuffer_, e, t, this.timeMapping_)), n++, this.sourceUpdater_.removeVideo(e, t, r)), this.inbandTextTracks_)) Nc(e, t, this.inbandTextTracks_[a]); Nc(e, t, this.segmentMetadataTrack_), r(); } }), (t.monitorBuffer_ = function () { this.checkBufferTimeout_ && T.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = T.setTimeout(this.monitorBufferTick_.bind(this), 1)); }), (t.monitorBufferTick_ = function () { 'READY' === this.state && this.fillBuffer_(), this.checkBufferTimeout_ && T.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = T.setTimeout(this.monitorBufferTick_.bind(this), 500)); }), (t.fillBuffer_ = function () { if (!this.sourceUpdater_.updating()) { this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint( this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_() )); var e = this.buffered_(), t = this.checkBuffer_( e, this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_ ); t && ((t.timestampOffset = Bc({ segmentTimeline: t.timeline, currentTimeline: this.currentTimeline_, startOfSegment: t.startOfSegment, buffered: e, overrideCheck: this.isPendingTimestampOffset_ })), (this.isPendingTimestampOffset_ = !1), 'number' == typeof t.timestampOffset && this.timelineChangeController_.pendingTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: t.timeline }), this.loadSegment_(t)); } }), (t.isEndOfStream_ = function (e, t) { if ( (void 0 === e && (e = this.mediaIndex), void 0 === t && (t = this.playlist_), !t || !this.mediaSource_) ) return !1; var i = e + 1 === t.segments.length; return t.endList && 'open' === this.mediaSource_.readyState && i; }), (t.checkBuffer_ = function (e, t, i, n, r, a) { var s = 0; e.length && (s = e.end(e.length - 1)); var o = Math.max(0, s - r); if (!t.segments.length) return null; if (o >= this.goalBufferLength_()) return null; if (!n && 1 <= o) return null; var u, l = null, c = !1; if (null === a) (l = this.getSyncSegmentCandidate_(t)), (c = !0); else if (null !== i) { var d = t.segments[i]; (u = d && d.end ? d.end : s), (l = i + 1); } else if (this.fetchAtBuffer_) { var h = ic.getMediaInfoForTime(t, s, a.segmentIndex, a.time); (l = h.mediaIndex), (u = h.startTime); } else { var p = ic.getMediaInfoForTime(t, r, a.segmentIndex, a.time); (l = p.mediaIndex), (u = p.startTime); } var f = this.generateSegmentInfo_(t, l, u, c); return !f || (this.mediaSource_ && this.playlist_ && f.mediaIndex === this.playlist_.segments.length - 1 && 'ended' === this.mediaSource_.readyState && !this.seeking_()) ? void 0 : (this.logger_('checkBuffer_ returning ' + f.uri, { segmentInfo: f, playlist: t, currentMediaIndex: i, nextMediaIndex: l, startOfSegment: u, isSyncRequest: c }), f); }), (t.getSyncSegmentCandidate_ = function (e) { var t = this; if (-1 === this.currentTimeline_) return 0; var i = e.segments .map(function (e, t) { return { timeline: e.timeline, segmentIndex: t }; }) .filter(function (e) { return e.timeline === t.currentTimeline_; }); return i.length ? i[Math.min(i.length - 1, 1)].segmentIndex : Math.max(e.segments.length - 1, 0); }), (t.generateSegmentInfo_ = function (e, t, i, n) { if (t < 0 || t >= e.segments.length) return null; var r, a, s = e.segments[t], o = this.sourceUpdater_.audioBuffered(), u = this.sourceUpdater_.videoBuffered(); return ( o.length && (r = o.end(o.length - 1) - this.sourceUpdater_.audioTimestampOffset()), u.length && (a = (function (e, t, i) { if ('undefined' == typeof t || null === t || !e.length) return []; var n, r = Math.ceil((t - i + 3) * fu); for (n = 0; n < e.length && !(e[n].pts > r); n++); return e.slice(n); })( this.gopBuffer_, this.currentTime_() - this.sourceUpdater_.videoTimestampOffset(), this.timeMapping_ )), { requestId: 'segment-loader-' + Math.random(), uri: s.resolvedUri, mediaIndex: t, isSyncRequest: n, startOfSegment: i, playlist: e, bytes: null, encryptedBytes: null, timestampOffset: null, timeline: s.timeline, duration: s.duration, segment: s, byteLength: 0, transmuxer: this.transmuxer_, audioAppendStart: r, gopsToAlignWith: a } ); }), (t.abortRequestEarly_ = function (e) { if ( this.vhs_.tech_.paused() || !this.xhrOptions_.timeout || !this.playlist_.attributes.BANDWIDTH ) return !1; if (Date.now() - (e.firstBytesReceivedAt || Date.now()) < 1e3) return !1; var t = this.currentTime_(), i = e.bandwidth, n = this.pendingSegment_.duration, r = ic.estimateSegmentRequestTime(n, i, this.playlist_, e.bytesReceived), a = (function (e, t, i) { return void 0 === i && (i = 1), ((e.length ? e.end(e.length - 1) : 0) - t) / i; })(this.buffered_(), t, this.vhs_.tech_.playbackRate()) - 1; if (r <= a) return !1; var s = (function (e) { var t = e.master, i = e.currentTime, n = e.bandwidth, r = e.duration, a = e.segmentDuration, s = e.timeUntilRebuffer, o = e.currentTimeline, u = e.syncController, l = t.playlists.filter(function (e) { return !ic.isIncompatible(e); }), c = l.filter(ic.isEnabled); c.length || (c = l.filter(function (e) { return !ic.isDisabled(e); })); var d = c.filter(ic.hasAttribute.bind(null, 'BANDWIDTH')).map(function (e) { var t = u.getSyncPoint(e, r, o, i) ? 1 : 2; return { playlist: e, rebufferingImpact: ic.estimateSegmentRequestTime(a, n, e) * t - s }; }), h = d.filter(function (e) { return e.rebufferingImpact <= 0; }); return ( Dc(h, function (e, t) { return Mc(t.playlist, e.playlist); }), h.length ? h[0] : (Dc(d, function (e, t) { return e.rebufferingImpact - t.rebufferingImpact; }), d[0] || null) ); })({ master: this.vhs_.playlists.master, currentTime: t, bandwidth: i, duration: this.duration_(), segmentDuration: n, timeUntilRebuffer: a, currentTimeline: this.currentTimeline_, syncController: this.syncController_ }); if (s) { var o = r - a - s.rebufferingImpact, u = 0.5; return ( a <= ec && (u = 1), !s.playlist || s.playlist.uri === this.playlist_.uri || o < u ? !1 : ((this.bandwidth = s.playlist.attributes.BANDWIDTH * uc.BANDWIDTH_VARIANCE + 1), this.abort(), this.trigger('earlyabort'), !0) ); } }), (t.handleAbort_ = function () { this.mediaRequestsAborted += 1; }), (t.handleProgress_ = function (e, t) { this.checkForAbort_(t.requestId) || this.abortRequestEarly_(t.stats) || this.trigger('progress'); }), (t.handleTrackInfo_ = function (e, t) { this.checkForAbort_(e.requestId) || this.abortRequestEarly_(e.stats) || this.checkForIllegalMediaSwitch(t) || ((t = t || {}), (function (e, t) { if ((!e && !t) || (!e && t) || (e && !t)) return !1; if (e === t) return !0; var i = Object.keys(e).sort(), n = Object.keys(t).sort(); if (i.length !== n.length) return !1; for (var r = 0; r < i.length; r++) { var a = i[r]; if (a !== n[r]) return !1; if (e[a] !== t[a]) return !1; } return !0; })(this.currentMediaInfo_, t) || ((this.appendInitSegment_ = { audio: !0, video: !0 }), (this.startingMediaInfo_ = t), (this.currentMediaInfo_ = t), this.logger_('trackinfo update', t), this.trigger('trackinfo')), this.checkForAbort_(e.requestId) || this.abortRequestEarly_(e.stats) || ((this.pendingSegment_.trackInfo = t), this.hasEnoughInfoToAppend_() && this.processCallQueue_())); }), (t.handleTimingInfo_ = function (e, t, i, n) { if (!this.checkForAbort_(e.requestId) && !this.abortRequestEarly_(e.stats)) { var r = this.pendingSegment_, a = Fc(t); (r[a] = r[a] || {}), (r[a][i] = n), this.logger_('timinginfo: ' + t + ' - ' + i + ' - ' + n), this.hasEnoughInfoToAppend_() && this.processCallQueue_(); } }), (t.handleCaptions_ = function (e, t) { var s = this; if (!this.checkForAbort_(e.requestId) && !this.abortRequestEarly_(e.stats)) if (0 !== t.length) if (this.pendingSegment_.hasAppendedData_) { var o = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset(), u = {}; t.forEach(function (e) { u[e.stream] = u[e.stream] || { startTime: 1 / 0, captions: [], endTime: 0 }; var t = u[e.stream]; (t.startTime = Math.min(t.startTime, e.startTime + o)), (t.endTime = Math.max(t.endTime, e.endTime + o)), t.captions.push(e); }), Object.keys(u).forEach(function (e) { var t = u[e], i = t.startTime, n = t.endTime, r = t.captions, a = s.inbandTextTracks_; s.logger_('adding cues from ' + i + ' -> ' + n + ' for ' + e), (function (e, t, i) { if (!e[i]) { t.trigger({ type: 'usage', name: 'vhs-608' }), t.trigger({ type: 'usage', name: 'hls-608' }); var n = t.textTracks().getTrackById(i); e[i] = n || t.addRemoteTextTrack({ kind: 'captions', id: i, label: i }, !1).track; } })(a, s.vhs_.tech_, e), Nc(i, n, a[e]), (function (e) { var i = e.inbandTextTracks, t = e.captionArray, n = e.timestampOffset; if (t) { var r = T.WebKitDataCue || T.VTTCue; t.forEach(function (e) { var t = e.stream; i[t].addCue(new r(e.startTime + n, e.endTime + n, e.text)); }); } })({ captionArray: r, inbandTextTracks: a, timestampOffset: o }); }), this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' }); } else this.metadataQueue_.caption.push(this.handleCaptions_.bind(this, e, t)); else this.logger_('SegmentLoader received no captions from a caption event'); }), (t.handleId3_ = function (e, t, i) { if (!this.checkForAbort_(e.requestId) && !this.abortRequestEarly_(e.stats)) if (this.pendingSegment_.hasAppendedData_) { var n = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset(); !(function (e, t, i) { e.metadataTrack_ || ((e.metadataTrack_ = i.addRemoteTextTrack( { kind: 'metadata', label: 'Timed Metadata' }, !1 ).track), (e.metadataTrack_.inBandMetadataTrackDispatchType = t)); })(this.inbandTextTracks_, i, this.vhs_.tech_), Rc({ inbandTextTracks: this.inbandTextTracks_, metadataArray: t, timestampOffset: n, videoDuration: this.duration_() }); } else this.metadataQueue_.id3.push(this.handleId3_.bind(this, e, t, i)); }), (t.processMetadataQueue_ = function () { this.metadataQueue_.id3.forEach(function (e) { return e(); }), this.metadataQueue_.caption.forEach(function (e) { return e(); }), (this.metadataQueue_.id3 = []), (this.metadataQueue_.caption = []); }), (t.processCallQueue_ = function () { var e = this.callQueue_; (this.callQueue_ = []), e.forEach(function (e) { return e(); }); }), (t.processLoadQueue_ = function () { var e = this.loadQueue_; (this.loadQueue_ = []), e.forEach(function (e) { return e(); }); }), (t.hasEnoughInfoToLoad_ = function () { if ('audio' !== this.loaderType_) return !0; var e = this.pendingSegment_; return ( !!e && (!this.currentMediaInfo_ || !jc({ timelineChangeController: this.timelineChangeController_, currentTimeline: this.currentTimeline_, segmentTimeline: e.timeline, loaderType: this.loaderType_, audioDisabled: this.audioDisabled_ })) ); }), (t.hasEnoughInfoToAppend_ = function () { if (!this.sourceUpdater_.ready()) return !1; var e = this.pendingSegment_; if (!e || !e.trackInfo) return !1; if (!this.handlePartialData_) { var t = this.currentMediaInfo_, i = t.hasAudio, n = t.hasVideo, r = t.isMuxed; if (n && !e.videoTimingInfo) return !1; if (i && !this.audioDisabled_ && !r && !e.audioTimingInfo) return !1; } return !jc({ timelineChangeController: this.timelineChangeController_, currentTimeline: this.currentTimeline_, segmentTimeline: e.timeline, loaderType: this.loaderType_, audioDisabled: this.audioDisabled_ }); }), (t.handleData_ = function (e, t) { if (!this.checkForAbort_(e.requestId) && !this.abortRequestEarly_(e.stats)) if (!this.callQueue_.length && this.hasEnoughInfoToAppend_()) { var i = this.pendingSegment_; if ( (this.setTimeMapping_(i.timeline), this.updateMediaSecondsLoaded_(i.segment), 'closed' !== this.mediaSource_.readyState) ) { if ( (e.map && ((e.map = this.initSegmentForMap(e.map, !0)), (i.segment.map = e.map)), e.key && this.segmentKey(e.key, !0), (i.isFmp4 = e.isFmp4), (i.timingInfo = i.timingInfo || {}), i.isFmp4) ) this.trigger('fmp4'), (i.timingInfo.start = i[Fc(t.type)].start); else { var n, r = 'main' === this.loaderType_ && this.currentMediaInfo_.hasVideo; r && (n = this.handlePartialData_ ? t.videoFramePtsTime : i.videoTimingInfo.start), (i.timingInfo.start = this.trueSegmentStart_({ currentStart: i.timingInfo.start, playlist: i.playlist, mediaIndex: i.mediaIndex, currentVideoTimestampOffset: this.sourceUpdater_.videoTimestampOffset(), useVideoTimingInfo: r, firstVideoFrameTimeForData: n, videoTimingInfo: i.videoTimingInfo, audioTimingInfo: i.audioTimingInfo })); } this.updateAppendInitSegmentStatus(i, t.type), this.updateSourceBufferTimestampOffset_(i), (i.hasAppendedData_ = !0), this.processMetadataQueue_(), this.appendData_(i, t); } } else this.callQueue_.push(this.handleData_.bind(this, e, t)); }), (t.updateAppendInitSegmentStatus = function (e, t) { 'main' !== this.loaderType_ || 'number' != typeof e.timestampOffset || e.changedTimestampOffset || (this.appendInitSegment_ = { audio: !0, video: !0 }), this.playlistOfLastInitSegment_[t] !== e.playlist && (this.appendInitSegment_[t] = !0); }), (t.getInitSegmentAndUpdateState_ = function (e) { var t = e.type, i = e.initSegment, n = e.map, r = e.playlist; if (n) { var a = gl(n); if (this.activeInitSegmentId_ === a) return null; (i = this.initSegmentForMap(n, !0).bytes), (this.activeInitSegmentId_ = a); } return i && this.appendInitSegment_[t] ? ((this.playlistOfLastInitSegment_[t] = r), (this.appendInitSegment_[t] = !!n), (this.activeInitSegmentId_ = null), i) : null; }), (t.appendToSourceBuffer_ = function (e) { var t = this, i = e.segmentInfo, n = e.type, r = e.initSegment, a = e.data, s = [a], o = a.byteLength; r && (s.unshift(r), (o += r.byteLength)); var u = (function (e) { var t, i = 0; return ( e.bytes && ((t = new Uint8Array(e.bytes)), e.segments.forEach(function (e) { t.set(e, i), (i += e.byteLength); })), t ); })({ bytes: o, segments: s }); this.sourceUpdater_.appendBuffer({ segmentInfo: i, type: n, bytes: u }, function (e) { e && (t.error( n + ' append of ' + u.length + 'b failed for segment #' + i.mediaIndex + ' in playlist ' + i.playlist.id ), t.trigger('appenderror')); }); }), (t.handleVideoSegmentTimingInfo_ = function (e, t) { if (this.pendingSegment_ && e === this.pendingSegment_.requestId) { var i = this.pendingSegment_.segment; i.videoTimingInfo || (i.videoTimingInfo = {}), (i.videoTimingInfo.transmuxerPrependedSeconds = t.prependedContentDuration || 0), (i.videoTimingInfo.transmuxedPresentationStart = t.start.presentation), (i.videoTimingInfo.transmuxedPresentationEnd = t.end.presentation), (i.videoTimingInfo.baseMediaDecodeTime = t.baseMediaDecodeTime); } }), (t.appendData_ = function (e, t) { var i = t.type, n = t.data; if (n && n.byteLength && ('audio' !== i || !this.audioDisabled_)) { var r = this.getInitSegmentAndUpdateState_({ type: i, initSegment: t.initSegment, playlist: e.playlist, map: e.isFmp4 ? e.segment.map : null }); this.appendToSourceBuffer_({ segmentInfo: e, type: i, initSegment: r, data: n }); } }), (t.loadSegment_ = function (i) { var n = this; (this.state = 'WAITING'), (this.pendingSegment_ = i), this.trimBackBuffer_(i), 'number' == typeof i.timestampOffset && this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }), this.hasEnoughInfoToLoad_() ? this.updateTransmuxerAndRequestSegment_(i) : this.loadQueue_.push(function () { var e = n.buffered_(); 'number' == typeof i.timestampOffset && (i.timestampOffset = Bc({ segmentTimeline: i.timeline, currentTimeline: n.currentTimeline_, startOfSegment: i.startOfSegment, buffered: e, overrideCheck: !0 })), delete i.audioAppendStart; var t = n.sourceUpdater_.audioBuffered(); t.length && (i.audioAppendStart = t.end(t.length - 1) - n.sourceUpdater_.audioTimestampOffset()), n.updateTransmuxerAndRequestSegment_(i); }); }), (t.updateTransmuxerAndRequestSegment_ = function (e) { this.shouldUpdateTransmuxerTimestampOffset_(e.timestampOffset) && ((this.gopBuffer_.length = 0), (e.gopsToAlignWith = []), (this.timeMapping_ = 0), this.transmuxer_.postMessage({ action: 'reset' }), this.transmuxer_.postMessage({ action: 'setTimestampOffset', timestampOffset: e.timestampOffset })); var t = this.createSimplifiedSegmentObj_(e); e.abortRequests = Fl({ xhr: this.vhs_.xhr, xhrOptions: this.xhrOptions_, decryptionWorker: this.decrypter_, segment: t, handlePartialData: this.handlePartialData_, abortFn: this.handleAbort_.bind(this), progressFn: this.handleProgress_.bind(this), trackInfoFn: this.handleTrackInfo_.bind(this), timingInfoFn: this.handleTimingInfo_.bind(this), videoSegmentTimingInfoFn: this.handleVideoSegmentTimingInfo_.bind(this, e.requestId), captionsFn: this.handleCaptions_.bind(this), id3Fn: this.handleId3_.bind(this), dataFn: this.handleData_.bind(this), doneFn: this.segmentRequestFinished_.bind(this) }); }), (t.trimBackBuffer_ = function (e) { var t = (function (e, t, i) { var n = t - uc.BACK_BUFFER_LENGTH; e.length && (n = Math.max(n, e.start(0))); var r = t - i; return Math.min(r, n); })(this.seekable_(), this.currentTime_(), this.playlist_.targetDuration || 10); 0 < t && this.remove(0, t); }), (t.createSimplifiedSegmentObj_ = function (e) { var t = e.segment, i = { resolvedUri: t.resolvedUri, byterange: t.byterange, requestId: e.requestId, transmuxer: e.transmuxer, audioAppendStart: e.audioAppendStart, gopsToAlignWith: e.gopsToAlignWith }, n = e.playlist.segments[e.mediaIndex]; if ( (n && n.end && n.timeline === t.timeline && (i.baseStartTime = n.end + e.timestampOffset), t.key) ) { var r = t.key.iv || new Uint32Array([0, 0, 0, e.mediaIndex + e.playlist.mediaSequence]); (i.key = this.segmentKey(t.key)), (i.key.iv = r); } return t.map && (i.map = this.initSegmentForMap(t.map)), i; }), (t.saveTransferStats_ = function (e) { (this.mediaRequests += 1), e && ((this.mediaBytesTransferred += e.bytesReceived), (this.mediaTransferDuration += e.roundTripTime)); }), (t.saveBandwidthRelatedStats_ = function (e) { (this.bandwidth = e.bandwidth), (this.roundTrip = e.roundTripTime), (this.pendingSegment_.byteLength = e.bytesReceived); }), (t.handleTimeout_ = function () { (this.mediaRequestsTimedout += 1), (this.bandwidth = 1), (this.roundTrip = NaN), this.trigger('bandwidthupdate'); }), (t.segmentRequestFinished_ = function (e, t, i) { if (this.callQueue_.length) this.callQueue_.push(this.segmentRequestFinished_.bind(this, e, t, i)); else if ( (this.saveTransferStats_(t.stats), this.pendingSegment_ && t.requestId === this.pendingSegment_.requestId) ) { if (e) { if (((this.pendingSegment_ = null), (this.state = 'READY'), e.code === gc)) return; return ( this.pause(), e.code === mc ? void this.handleTimeout_() : ((this.mediaRequestsErrored += 1), this.error(e), void this.trigger('error')) ); } this.saveBandwidthRelatedStats_(t.stats); var n = this.pendingSegment_; (n.endOfAllRequests = t.endOfAllRequests), i.gopInfo && (this.gopBuffer_ = (function (e, t, i) { if (!t.length) return e; if (i) return t.slice(); for (var n = t[0].pts, r = 0; r < e.length && !(e[r].pts >= n); r++); return e.slice(0, r).concat(t); })(this.gopBuffer_, i.gopInfo, this.safeAppend_)), (this.state = 'APPENDING'); var r = this.isEndOfStream_(n.mediaIndex, n.playlist), a = null !== this.mediaIndex, s = n.timeline !== this.currentTimeline_ && 0 < n.timeline; !n.isFmp4 && (r || (a && s)) && pc(this.transmuxer_), this.trigger('appending'), this.waitForAppendsToComplete_(n); } }), (t.setTimeMapping_ = function (e) { var t = this.syncController_.mappingForTimeline(e); null !== t && (this.timeMapping_ = t); }), (t.updateMediaSecondsLoaded_ = function (e) { 'number' == typeof e.start && 'number' == typeof e.end ? (this.mediaSecondsLoaded += e.end - e.start) : (this.mediaSecondsLoaded += e.duration); }), (t.shouldUpdateTransmuxerTimestampOffset_ = function (e) { return ( null !== e && (('main' === this.loaderType_ && e !== this.sourceUpdater_.videoTimestampOffset()) || (!this.audioDisabled_ && e !== this.sourceUpdater_.audioTimestampOffset())) ); }), (t.trueSegmentStart_ = function (e) { var t = e.currentStart, i = e.playlist, n = e.mediaIndex, r = e.firstVideoFrameTimeForData, a = e.currentVideoTimestampOffset, s = e.useVideoTimingInfo, o = e.videoTimingInfo, u = e.audioTimingInfo; if ('undefined' != typeof t) return t; if (!s) return u.start; var l = i.segments[n - 1]; return 0 !== n && l && 'undefined' != typeof l.start && l.end === r + a ? o.start : r; }), (t.waitForAppendsToComplete_ = function (e) { if (!this.currentMediaInfo_) return ( this.error({ message: 'No starting media returned, likely due to an unsupported media format.', blacklistDuration: 1 / 0 }), void this.trigger('error') ); var t = this.currentMediaInfo_, i = t.hasAudio, n = t.hasVideo, r = t.isMuxed, a = 'main' === this.loaderType_ && n, s = !this.audioDisabled_ && i && !r; if (((e.waitingOnAppends = 0), !e.hasAppendedData_)) return ( e.timingInfo || 'number' != typeof e.timestampOffset || (this.isPendingTimestampOffset_ = !0), (e.timingInfo = { start: 0 }), e.waitingOnAppends++, this.isPendingTimestampOffset_ || (this.updateSourceBufferTimestampOffset_(e), this.processMetadataQueue_()), void this.checkAppendsDone_(e) ); a && e.waitingOnAppends++, s && e.waitingOnAppends++, a && this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this, e)), s && this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this, e)); }), (t.checkAppendsDone_ = function (e) { this.checkForAbort_(e.requestId) || (e.waitingOnAppends--, 0 === e.waitingOnAppends && this.handleAppendsDone_()); }), (t.checkForIllegalMediaSwitch = function (e) { var t = (function (e, t, i) { return 'main' === e && t && i ? i.hasAudio || i.hasVideo ? t.hasVideo && !i.hasVideo ? "Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest." : !t.hasVideo && i.hasVideo ? "Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest." : null : 'Neither audio nor video found in segment.' : null; })(this.loaderType_, this.currentMediaInfo_, e); return ( !!t && (this.error({ message: t, blacklistDuration: 1 / 0 }), this.trigger('error'), !0) ); }), (t.updateSourceBufferTimestampOffset_ = function (e) { if ( null !== e.timestampOffset && 'number' == typeof e.timingInfo.start && !e.changedTimestampOffset && 'main' === this.loaderType_ ) { var t = !1; (e.timestampOffset -= e.timingInfo.start), (e.changedTimestampOffset = !0), e.timestampOffset !== this.sourceUpdater_.videoTimestampOffset() && (this.sourceUpdater_.videoTimestampOffset(e.timestampOffset), (t = !0)), e.timestampOffset !== this.sourceUpdater_.audioTimestampOffset() && (this.sourceUpdater_.audioTimestampOffset(e.timestampOffset), (t = !0)), t && this.trigger('timestampoffset'); } }), (t.updateTimingInfoEnd_ = function (e) { e.timingInfo = e.timingInfo || {}; var t = 'main' === this.loaderType_ && this.currentMediaInfo_.hasVideo && e.videoTimingInfo ? e.videoTimingInfo : e.audioTimingInfo; t && (e.timingInfo.end = 'number' == typeof t.end ? t.end : t.start + e.duration); }), (t.handleAppendsDone_ = function () { if ((this.pendingSegment_ && this.trigger('appendsdone'), !this.pendingSegment_)) return (this.state = 'READY'), void (this.paused() || this.monitorBuffer_()); var e = this.pendingSegment_; if ( (this.updateTimingInfoEnd_(e), this.shouldSaveSegmentTimingInfo_ && this.syncController_.saveSegmentTimingInfo({ segmentInfo: e, shouldSaveTimelineMapping: 'main' === this.loaderType_ }), this.logger_( (function (e) { var t = e.segment, i = t.start, n = t.end, r = e.playlist, a = r.mediaSequence, s = r.id, o = r.segments, u = void 0 === o ? [] : o, l = e.mediaIndex, c = e.timeline; return [ 'appending [' + l + '] of [' + a + ', ' + (a + u.length) + '] from playlist [' + s + ']', '[' + i + ' => ' + n + '] in timeline [' + c + ']' ].join(' '); })(e) ), this.recordThroughput_(e), (this.pendingSegment_ = null), (this.state = 'READY'), e.isSyncRequest) ) this.trigger('syncinfoupdate'); else { this.addSegmentMetadataCue_(e), (this.fetchAtBuffer_ = !0), this.currentTimeline_ !== e.timeline && (this.timelineChangeController_.lastTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: e.timeline }), 'main' !== this.loaderType_ || this.audioDisabled_ || this.timelineChangeController_.lastTimelineChange({ type: 'audio', from: this.currentTimeline_, to: e.timeline })), (this.currentTimeline_ = e.timeline), this.trigger('syncinfoupdate'); var t = e.segment; if (t.end && this.currentTime_() - t.end > 3 * e.playlist.targetDuration) this.resetEverything(); else null !== this.mediaIndex && this.trigger('bandwidthupdate'), this.trigger('progress'), (this.mediaIndex = e.mediaIndex), this.isEndOfStream_(e.mediaIndex, e.playlist) && this.endOfStream(), this.trigger('appended'), this.paused() || this.monitorBuffer_(); } }), (t.recordThroughput_ = function (e) { var t = this.throughput.rate, i = Date.now() - e.endOfAllRequests + 1, n = Math.floor((e.byteLength / i) * 8 * 1e3); this.throughput.rate += (n - t) / ++this.throughput.count; }), (t.addSegmentMetadataCue_ = function (e) { if (this.segmentMetadataTrack_) { var t = e.segment, i = t.start, n = t.end; if (Uc(i) && Uc(n)) { Nc(i, n, this.segmentMetadataTrack_); var r = T.WebKitDataCue || T.VTTCue, a = { custom: t.custom, dateTimeObject: t.dateTimeObject, dateTimeString: t.dateTimeString, bandwidth: e.playlist.attributes.BANDWIDTH, resolution: e.playlist.attributes.RESOLUTION, codecs: e.playlist.attributes.CODECS, byteLength: e.byteLength, uri: e.uri, timeline: e.timeline, playlist: e.playlist.id, start: i, end: n }, s = new r(i, n, JSON.stringify(a)); (s.value = a), this.segmentMetadataTrack_.addCue(s); } } }), e ); })(da.EventTarget); function Wc() {} function zc(e) { return 'string' != typeof e ? e : e.replace(/./, function (e) { return e.toUpperCase(); }); } function Gc(e, t) { var i = t[e + 'Buffer']; return (i && i.updating) || t.queuePending[e]; } function Xc(e, t) { if (0 !== t.queue.length) { var i = 0, n = t.queue[i]; if ('mediaSource' !== n.type) { if ( 'mediaSource' !== e && t.started_ && 'closed' !== t.mediaSource.readyState && !Gc(e, t) ) { if (n.type !== e) { if ( null === (i = (function (e, t) { for (var i = 0; i < t.length; i++) { var n = t[i]; if ('mediaSource' === n.type) return null; if (n.type === e) return i; } return null; })(e, t.queue)) ) return; n = t.queue[i]; } t.queue.splice(i, 1), n.action(e, t), n.doneFn ? (t.queuePending[e] = n) : Xc(e, t); } } else t.updating() || 'closed' === t.mediaSource.readyState || (t.queue.shift(), n.action(t), n.doneFn && n.doneFn(), Xc('audio', t), Xc('video', t)); } } function Kc(e, t) { var i = t[e + 'Buffer'], n = zc(e); i && (i.removeEventListener('updateend', t['on' + n + 'UpdateEnd_']), i.removeEventListener('error', t['on' + n + 'Error_']), (t.codecs[e] = null), (t[e + 'Buffer'] = null)); } function Yc(e, t) { return e && t && -1 !== Array.prototype.indexOf.call(e.sourceBuffers, t); } function $c(e) { var t = e.type, i = e.sourceUpdater, n = e.action, r = e.doneFn, a = e.name; i.queue.push({ type: t, action: n, doneFn: r, name: a }), Xc(t, i); } function Qc(i, n) { return function (e) { if (n.queuePending[i]) { var t = n.queuePending[i].doneFn; (n.queuePending[i] = null), t && t(n[i + 'Error_']); } Xc(i, n); }; } function Jc(e) { return decodeURIComponent(escape(String.fromCharCode.apply(null, e))); } function Zc(e, t) { for (var i = e.cues, n = 0; n < i.length; n++) { var r = i[n]; if (t >= r.adStartTime && t <= r.adEndTime) return r; } return null; } function ed(e, t) { e.abort(), e.pause(), t && t.activePlaylistLoader && (t.activePlaylistLoader.pause(), (t.activePlaylistLoader = null)); } function td(e, t) { (t.activePlaylistLoader = e).load(); } function id(t) { ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) { wd[e](e, t); }); var i = t.mediaTypes, e = t.masterPlaylistLoader, n = t.tech, r = t.vhs; ['AUDIO', 'SUBTITLES'].forEach(function (e) { (i[e].activeGroup = (function (a, s) { return function (t) { var e = s.masterPlaylistLoader, i = s.mediaTypes[a].groups, n = e.media(); if (!n) return null; var r = null; return ( n.attributes[a] && (r = i[n.attributes[a]]), (r = r || i.main), 'undefined' == typeof t ? r : null === t ? null : r.filter(function (e) { return e.id === t.id; })[0] || null ); }; })(e, t)), (i[e].activeTrack = Id[e](e, t)), (i[e].onGroupChanged = (function (o, u) { return function () { var e = u.segmentLoaders, t = e[o], i = e.main, n = u.mediaTypes[o], r = n.activeTrack(), a = n.activeGroup(r), s = n.activePlaylistLoader; ed(t, n), a && (a.playlistLoader ? (t.resyncLoader(), td(a.playlistLoader, n)) : s && i.resetEverything()); }; })(e, t)), (i[e].onGroupChanging = (function (t, i) { return function () { var e = i.segmentLoaders[t]; e.abort(), e.pause(); }; })(e, t)), (i[e].onTrackChanged = (function (o, u) { return function () { var e = u.segmentLoaders, t = e[o], i = e.main, n = u.mediaTypes[o], r = n.activeTrack(), a = n.activeGroup(r), s = n.activePlaylistLoader; if ((ed(t, n), a)) { if ('AUDIO' === o) { if (!a.playlistLoader) return i.setAudio(!0), void i.resetEverything(); t.setAudio(!0), i.setAudio(!1); } s !== a.playlistLoader && (t.track && t.track(r), t.resetEverything()), td(a.playlistLoader, n); } }; })(e, t)); }); var a = i.AUDIO.activeGroup(); if (a) { var s = ( a.filter(function (e) { return e.default; })[0] || a[0] ).id; (i.AUDIO.tracks[s].enabled = !0), i.AUDIO.onTrackChanged(); } function o() { i.AUDIO.onTrackChanged(), n.trigger({ type: 'usage', name: 'vhs-audio-change' }), n.trigger({ type: 'usage', name: 'hls-audio-change' }); } for (var u in (e.on('mediachange', function () { ['AUDIO', 'SUBTITLES'].forEach(function (e) { return i[e].onGroupChanged(); }); }), e.on('mediachanging', function () { ['AUDIO', 'SUBTITLES'].forEach(function (e) { return i[e].onGroupChanging(); }); }), n.audioTracks().addEventListener('change', o), n.remoteTextTracks().addEventListener('change', i.SUBTITLES.onTrackChanged), r.on('dispose', function () { n.audioTracks().removeEventListener('change', o), n.remoteTextTracks().removeEventListener('change', i.SUBTITLES.onTrackChanged); }), n.clearTracks('audio'), i.AUDIO.tracks)) n.audioTracks().addTrack(i.AUDIO.tracks[u]); } function nd(e, t, i) { var n = e.masterPlaylistController_, r = n[(e.options_.smoothQualityChange ? 'smooth' : 'fast') + 'QualityChange_'].bind(n); if (t.attributes.RESOLUTION) { var a = t.attributes.RESOLUTION; (this.width = a.width), (this.height = a.height); } (this.bandwidth = t.attributes.BANDWIDTH), (this.codecs = xc(n.master(), t)), (this.playlist = t), (this.id = i), (this.enabled = (function (r, a, s) { return function (e) { var t = r.master.playlists[a], i = sl(t), n = ol(t); return 'undefined' == typeof e ? n : (e ? delete t.disabled : (t.disabled = !0), e === n || i || (s(), e ? r.trigger('renditionenabled') : r.trigger('renditiondisabled')), e); }; })(e.playlists, t.id, r)); } function rd(e) { !(function t(i, e) { var n = 0, r = 0, a = da.mergeOptions(Od, e); i.ready(function () { i.trigger({ type: 'usage', name: 'vhs-error-reload-initialized' }), i.trigger({ type: 'usage', name: 'hls-error-reload-initialized' }); }); function s() { r && i.currentTime(r); } function o(e) { null != e && ((r = (i.duration() !== 1 / 0 && i.currentTime()) || 0), i.one('loadedmetadata', s), i.src(e), i.trigger({ type: 'usage', name: 'vhs-error-reload' }), i.trigger({ type: 'usage', name: 'hls-error-reload' }), i.play()); } function u() { return Date.now() - n < 1e3 * a.errorInterval ? (i.trigger({ type: 'usage', name: 'vhs-error-reload-canceled' }), void i.trigger({ type: 'usage', name: 'hls-error-reload-canceled' })) : a.getSource && 'function' == typeof a.getSource ? ((n = Date.now()), a.getSource.call(i, o)) : void da.log.error( 'ERROR: reloadSourceOnError - The option getSource must be a function!' ); } function l() { i.off('loadedmetadata', s), i.off('error', u), i.off('dispose', l); } i.on('error', u), i.on('dispose', l), (i.reloadSourceOnError = function (e) { l(), t(i, e); }); })(this, e); } var ad, sd = ['video', 'audio'], od = function (n, r) { return function (e, t) { var i = t[e + 'Buffer']; Yc(t.mediaSource, i) && (t.logger_( 'Appending segment ' + r.mediaIndex + "'s " + n.length + ' bytes to ' + e + 'Buffer' ), i.appendBuffer(n)); }; }, ud = function (n, r) { return function (e, t) { var i = t[e + 'Buffer']; Yc(t.mediaSource, i) && (t.logger_('Removing ' + n + ' to ' + r + ' from ' + e + 'Buffer'), i.remove(n, r)); }; }, ld = function (n) { return function (e, t) { var i = t[e + 'Buffer']; Yc(t.mediaSource, i) && (t.logger_('Setting ' + e + 'timestampOffset to ' + n), (i.timestampOffset = n)); }; }, cd = function (i) { return function (e, t) { i(); }; }, dd = function (t) { return function (e) { if ('open' === e.mediaSource.readyState) { e.logger_('Calling mediaSource endOfStream(' + (t || '') + ')'); try { e.mediaSource.endOfStream(t); } catch (e) { da.log.warn('Failed to call media source endOfStream', e); } } }; }, hd = function (t) { return function (e) { e.logger_('Setting mediaSource duration to ' + t); try { e.mediaSource.duration = t; } catch (e) { da.log.warn('Failed to set media source duration', e); } }; }, pd = function () { return function (t, e) { if ('open' === e.mediaSource.readyState) { var i = e[t + 'Buffer']; if (Yc(e.mediaSource, i)) { e.logger_('calling abort on ' + t + 'Buffer'); try { i.abort(); } catch (e) { da.log.warn('Failed to abort on ' + t + 'Buffer', e); } } } }; }, fd = function (r, a) { return function (e) { var t = zc(r), i = Wl(a); e.logger_('Adding ' + r + 'Buffer with codec ' + a + ' to mediaSource'); var n = e.mediaSource.addSourceBuffer(i); n.addEventListener('updateend', e['on' + t + 'UpdateEnd_']), n.addEventListener('error', e['on' + t + 'Error_']), (e.codecs[r] = a), (e[r + 'Buffer'] = n); }; }, md = function (i) { return function (e) { var t = e[i + 'Buffer']; if ((Kc(i, e), Yc(e.mediaSource, t))) { e.logger_('Removing ' + i + 'Buffer with codec ' + e.codecs[i] + ' from mediaSource'); try { e.mediaSource.removeSourceBuffer(t); } catch (e) { da.log.warn('Failed to removeSourceBuffer ' + i + 'Buffer', e); } } }; }, gd = function (r) { return function (e, t) { var i = t[e + 'Buffer'], n = Wl(r); Yc(t.mediaSource, i) && t.codecs[e] !== r && (t.logger_('changing ' + e + 'Buffer codec from ' + t.codecs[e] + ' to ' + r), i.changeType(n), (t.codecs[e] = r)); }; }, vd = (function (i) { function e(e) { var t; return ( ((t = i.call(this) || this).mediaSource = e), (t.sourceopenListener_ = function () { return Xc('mediaSource', Ve(t)); }), t.mediaSource.addEventListener('sourceopen', t.sourceopenListener_), (t.logger_ = Pc('SourceUpdater')), (t.audioTimestampOffset_ = 0), (t.videoTimestampOffset_ = 0), (t.queue = []), (t.queuePending = { audio: null, video: null }), (t.delayedAudioAppendQueue_ = []), (t.videoAppendQueued_ = !1), (t.codecs = {}), (t.onVideoUpdateEnd_ = Qc('video', Ve(t))), (t.onAudioUpdateEnd_ = Qc('audio', Ve(t))), (t.onVideoError_ = function (e) { t.videoError_ = e; }), (t.onAudioError_ = function (e) { t.audioError_ = e; }), (t.started_ = !1), t ); } Ge(e, i); var t = e.prototype; return ( (t.ready = function () { return this.started_; }), (t.createSourceBuffers = function (e) { this.ready() || (this.addOrChangeSourceBuffers(e), (this.started_ = !0), this.trigger('ready')); }), (t.addSourceBuffer = function (e, t) { $c({ type: 'mediaSource', sourceUpdater: this, action: fd(e, t), name: 'addSourceBuffer' }); }), (t.abort = function (e) { $c({ type: e, sourceUpdater: this, action: pd(e), name: 'abort' }); }), (t.removeSourceBuffer = function (e) { this.canRemoveSourceBuffer() ? $c({ type: 'mediaSource', sourceUpdater: this, action: md(e), name: 'removeSourceBuffer' }) : da.log.error('removeSourceBuffer is not supported!'); }), (t.canRemoveSourceBuffer = function () { return ( !da.browser.IE_VERSION && T.MediaSource && T.MediaSource.prototype && 'function' == typeof T.MediaSource.prototype.removeSourceBuffer ); }), (e.canChangeType = function () { return ( T.SourceBuffer && T.SourceBuffer.prototype && 'function' == typeof T.SourceBuffer.prototype.changeType ); }), (t.canChangeType = function () { return this.constructor.canChangeType(); }), (t.changeType = function (e, t) { this.canChangeType() ? $c({ type: e, sourceUpdater: this, action: gd(t), name: 'changeType' }) : da.log.error('changeType is not supported!'); }), (t.addOrChangeSourceBuffers = function (i) { var n = this; if (!i || 'object' != typeof i || 0 === Object.keys(i).length) throw new Error('Cannot addOrChangeSourceBuffers to undefined codecs'); Object.keys(i).forEach(function (e) { var t = i[e]; if (!n.ready()) return n.addSourceBuffer(e, t); n.canChangeType() && n.changeType(e, t); }); }), (t.appendBuffer = function (e, t) { var i = this, n = e.segmentInfo, r = e.type, a = e.bytes; if ( ((this.processedAppend_ = !0), 'audio' === r && this.videoBuffer && !this.videoAppendQueued_) ) return ( this.delayedAudioAppendQueue_.push([e, t]), void this.logger_('delayed audio append of ' + a.length + ' until video append') ); if ( ($c({ type: r, sourceUpdater: this, action: od(a, n || { mediaIndex: -1 }), doneFn: t, name: 'appendBuffer' }), 'video' === r) ) { if (((this.videoAppendQueued_ = !0), !this.delayedAudioAppendQueue_.length)) return; var s = this.delayedAudioAppendQueue_.slice(); this.logger_('queuing delayed audio ' + s.length + ' appendBuffers'), (this.delayedAudioAppendQueue_.length = 0), s.forEach(function (e) { i.appendBuffer.apply(i, e); }); } }), (t.audioBuffered = function () { return Yc(this.mediaSource, this.audioBuffer) && this.audioBuffer.buffered ? this.audioBuffer.buffered : da.createTimeRange(); }), (t.videoBuffered = function () { return Yc(this.mediaSource, this.videoBuffer) && this.videoBuffer.buffered ? this.videoBuffer.buffered : da.createTimeRange(); }), (t.buffered = function () { var e = Yc(this.mediaSource, this.videoBuffer) ? this.videoBuffer : null, t = Yc(this.mediaSource, this.audioBuffer) ? this.audioBuffer : null; return t && !e ? this.audioBuffered() : e && !t ? this.videoBuffered() : (function (e, t) { var i = null, n = null, r = 0, a = [], s = []; if (!(e && e.length && t && t.length)) return da.createTimeRange(); for (var o = e.length; o--; ) a.push({ time: e.start(o), type: 'start' }), a.push({ time: e.end(o), type: 'end' }); for (o = t.length; o--; ) a.push({ time: t.start(o), type: 'start' }), a.push({ time: t.end(o), type: 'end' }); for ( a.sort(function (e, t) { return e.time - t.time; }), o = 0; o < a.length; o++ ) 'start' === a[o].type ? 2 === ++r && (i = a[o].time) : 'end' === a[o].type && 1 === --r && (n = a[o].time), null !== i && null !== n && (s.push([i, n]), (n = i = null)); return da.createTimeRanges(s); })(this.audioBuffered(), this.videoBuffered()); }), (t.setDuration = function (e, t) { void 0 === t && (t = Wc), $c({ type: 'mediaSource', sourceUpdater: this, action: hd(e), name: 'duration', doneFn: t }); }), (t.endOfStream = function (e, t) { void 0 === e && (e = null), void 0 === t && (t = Wc), 'string' != typeof e && (e = void 0), $c({ type: 'mediaSource', sourceUpdater: this, action: dd(e), name: 'endOfStream', doneFn: t }); }), (t.removeAudio = function (e, t, i) { void 0 === i && (i = Wc), this.audioBuffered().length && 0 !== this.audioBuffered().end(0) ? $c({ type: 'audio', sourceUpdater: this, action: ud(e, t), doneFn: i, name: 'remove' }) : i(); }), (t.removeVideo = function (e, t, i) { void 0 === i && (i = Wc), this.videoBuffered().length && 0 !== this.videoBuffered().end(0) ? $c({ type: 'video', sourceUpdater: this, action: ud(e, t), doneFn: i, name: 'remove' }) : i(); }), (t.updating = function () { return !(!Gc('audio', this) && !Gc('video', this)); }), (t.audioTimestampOffset = function (e) { return ( 'undefined' != typeof e && this.audioBuffer && this.audioTimestampOffset_ !== e && ($c({ type: 'audio', sourceUpdater: this, action: ld(e), name: 'timestampOffset' }), (this.audioTimestampOffset_ = e)), this.audioTimestampOffset_ ); }), (t.videoTimestampOffset = function (e) { return ( 'undefined' != typeof e && this.videoBuffer && this.videoTimestampOffset !== e && ($c({ type: 'video', sourceUpdater: this, action: ld(e), name: 'timestampOffset' }), (this.videoTimestampOffset_ = e)), this.videoTimestampOffset_ ); }), (t.audioQueueCallback = function (e) { this.audioBuffer && $c({ type: 'audio', sourceUpdater: this, action: cd(e), name: 'callback' }); }), (t.videoQueueCallback = function (e) { this.videoBuffer && $c({ type: 'video', sourceUpdater: this, action: cd(e), name: 'callback' }); }), (t.dispose = function () { var t = this; this.trigger('dispose'), sd.forEach(function (e) { t.abort(e), t.canRemoveSourceBuffer() ? t.removeSourceBuffer(e) : t[e + 'QueueCallback'](function () { return Kc(e, t); }); }), (this.videoAppendQueued_ = !1), (this.delayedAudioAppendQueue_.length = 0), this.sourceopenListener_ && this.mediaSource.removeEventListener('sourceopen', this.sourceopenListener_), this.off(); }), e ); })(da.EventTarget), yd = new Uint8Array( '\n\n'.split('').map(function (e) { return e.charCodeAt(0); }) ), _d = (function (n) { function e(e, t) { var i; return ( void 0 === t && (t = {}), ((i = n.call(this, e, t) || this).handlePartialData_ = !1), (i.mediaSource_ = null), (i.subtitlesTrack_ = null), (i.loaderType_ = 'subtitle'), (i.featuresNativeTextTracks_ = e.featuresNativeTextTracks), (i.shouldSaveSegmentTimingInfo_ = !1), i ); } Ge(e, n); var t = e.prototype; return ( (t.createTransmuxer_ = function () { return null; }), (t.buffered_ = function () { if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues.length) return da.createTimeRanges(); var e = this.subtitlesTrack_.cues, t = e[0].startTime, i = e[e.length - 1].startTime; return da.createTimeRanges([[t, i]]); }), (t.initSegmentForMap = function (e, t) { if ((void 0 === t && (t = !1), !e)) return null; var i = gl(e), n = this.initSegments_[i]; if (t && !n && e.bytes) { var r = yd.byteLength + e.bytes.byteLength, a = new Uint8Array(r); a.set(e.bytes), a.set(yd, e.bytes.byteLength), (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: a }); } return n || e; }), (t.couldBeginLoading_ = function () { return this.playlist_ && this.subtitlesTrack_ && !this.paused(); }), (t.init_ = function () { return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_(); }), (t.track = function (e) { return ( 'undefined' == typeof e || ((this.subtitlesTrack_ = e), 'INIT' === this.state && this.couldBeginLoading_() && this.init_()), this.subtitlesTrack_ ); }), (t.remove = function (e, t) { Nc(e, t, this.subtitlesTrack_); }), (t.fillBuffer_ = function () { var e = this; this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint( this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_() )); var t = this.checkBuffer_( this.buffered_(), this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_ ); if ((t = this.skipEmptySegments_(t))) { if (null === this.syncController_.timestampOffsetForTimeline(t.timeline)) { return ( this.syncController_.one('timestampoffset', function () { (e.state = 'READY'), e.paused() || e.monitorBuffer_(); }), void (this.state = 'WAITING_ON_TIMELINE') ); } this.loadSegment_(t); } }), (t.skipEmptySegments_ = function (e) { for (; e && e.segment.empty; ) e = this.generateSegmentInfo_( e.playlist, e.mediaIndex + 1, e.startOfSegment + e.duration, e.isSyncRequest ); return e; }), (t.stopForError = function (e) { this.error(e), (this.state = 'READY'), this.pause(), this.trigger('error'); }), (t.segmentRequestFinished_ = function (e, t, i) { var n = this; if (this.subtitlesTrack_) { if ((this.saveTransferStats_(t.stats), !this.pendingSegment_)) return (this.state = 'READY'), void (this.mediaRequestsAborted += 1); if (e) return ( e.code === mc && this.handleTimeout_(), e.code === gc ? (this.mediaRequestsAborted += 1) : (this.mediaRequestsErrored += 1), void this.stopForError(e) ); this.saveBandwidthRelatedStats_(t.stats), (this.state = 'APPENDING'), this.trigger('appending'); var r = this.pendingSegment_, a = r.segment; if ( (a.map && (a.map.bytes = t.map.bytes), (r.bytes = t.bytes), 'function' != typeof T.WebVTT && this.subtitlesTrack_ && this.subtitlesTrack_.tech_) ) { var s, o = function () { n.subtitlesTrack_.tech_.off('vttjsloaded', s), n.stopForError({ message: 'Error loading vtt.js' }); }; return ( (s = function () { n.subtitlesTrack_.tech_.off('vttjserror', o), n.segmentRequestFinished_(e, t, i); }), (this.state = 'WAITING_ON_VTTJS'), this.subtitlesTrack_.tech_.one('vttjsloaded', s), void this.subtitlesTrack_.tech_.one('vttjserror', o) ); } a.requested = !0; try { this.parseVTTCues_(r); } catch (e) { return void this.stopForError({ message: e.message }); } if ( (this.updateTimeMapping_( r, this.syncController_.timelines[r.timeline], this.playlist_ ), r.cues.length ? (r.timingInfo = { start: r.cues[0].startTime, end: r.cues[r.cues.length - 1].endTime }) : (r.timingInfo = { start: r.startOfSegment, end: r.startOfSegment + r.duration }), r.isSyncRequest) ) return ( this.trigger('syncinfoupdate'), (this.pendingSegment_ = null), void (this.state = 'READY') ); (r.byteLength = r.bytes.byteLength), (this.mediaSecondsLoaded += a.duration), r.cues.forEach(function (e) { n.remove(e.startTime, e.endTime), n.subtitlesTrack_.addCue( n.featuresNativeTextTracks_ ? new T.VTTCue(e.startTime, e.endTime, e.text) : e ); }), this.handleAppendsDone_(); } else this.state = 'READY'; }), (t.handleData_ = function () {}), (t.updateTimingInfoEnd_ = function () {}), (t.parseVTTCues_ = function (t) { var e, i = !1; 'function' == typeof T.TextDecoder ? (e = new T.TextDecoder('utf8')) : ((e = T.WebVTT.StringDecoder()), (i = !0)); var n = new T.WebVTT.Parser(T, T.vttjs, e); if ( ((t.cues = []), (t.timestampmap = { MPEGTS: 0, LOCAL: 0 }), (n.oncue = t.cues.push.bind(t.cues)), (n.ontimestampmap = function (e) { t.timestampmap = e; }), (n.onparsingerror = function (e) { da.log.warn('Error encountered when parsing cues: ' + e.message); }), t.segment.map) ) { var r = t.segment.map.bytes; i && (r = Jc(r)), n.parse(r); } var a = t.bytes; i && (a = Jc(a)), n.parse(a), n.flush(); }), (t.updateTimeMapping_ = function (e, t, i) { var n = e.segment; if (t) if (e.cues.length) { var r = e.timestampmap, a = r.MPEGTS / fu - r.LOCAL + t.mapping; if ( (e.cues.forEach(function (e) { (e.startTime += a), (e.endTime += a); }), !i.syncInfo) ) { var s = e.cues[0].startTime, o = e.cues[e.cues.length - 1].startTime; i.syncInfo = { mediaSequence: i.mediaSequence + e.mediaIndex, time: Math.min(s, o - n.duration) }; } } else n.empty = !0; }), e ); })(Hc), bd = [ { name: 'VOD', run: function (e, t, i, n, r) { if (i === 1 / 0) return null; return { time: 0, segmentIndex: 0 }; } }, { name: 'ProgramDateTime', run: function (e, t, i, n, r) { if (!e.datetimeToDisplayTime) return null; var a = t.segments || [], s = null, o = null; r = r || 0; for (var u = 0; u < a.length; u++) { var l = a[u]; if (l.dateTimeObject) { var c = l.dateTimeObject.getTime() / 1e3 + e.datetimeToDisplayTime, d = Math.abs(r - c); if (null !== o && (0 === d || o < d)) break; (o = d), (s = { time: c, segmentIndex: u }); } } return s; } }, { name: 'Segment', run: function (e, t, i, n, r) { var a = t.segments || [], s = null, o = null; r = r || 0; for (var u = 0; u < a.length; u++) { var l = a[u]; if (l.timeline === n && 'undefined' != typeof l.start) { var c = Math.abs(r - l.start); if (null !== o && o < c) break; (!s || null === o || c <= o) && ((o = c), (s = { time: l.start, segmentIndex: u })); } } return s; } }, { name: 'Discontinuity', run: function (e, t, i, n, r) { var a = null; if (((r = r || 0), t.discontinuityStarts && t.discontinuityStarts.length)) for (var s = null, o = 0; o < t.discontinuityStarts.length; o++) { var u = t.discontinuityStarts[o], l = t.discontinuitySequence + o + 1, c = e.discontinuities[l]; if (c) { var d = Math.abs(r - c.time); if (null !== s && s < d) break; (!a || null === s || d <= s) && ((s = d), (a = { time: c.time, segmentIndex: u })); } } return a; } }, { name: 'Playlist', run: function (e, t, i, n, r) { return t.syncInfo ? { time: t.syncInfo.time, segmentIndex: t.syncInfo.mediaSequence - t.mediaSequence } : null; } } ], Td = (function (i) { function e(e) { var t; return ( ((t = i.call(this) || this).timelines = []), (t.discontinuities = []), (t.datetimeToDisplayTime = null), (t.logger_ = Pc('SyncController')), t ); } Ge(e, i); var t = e.prototype; return ( (t.getSyncPoint = function (e, t, i, n) { var r = this.runStrategies_(e, t, i, n); return r.length ? this.selectSyncPoint_(r, { key: 'time', value: n }) : null; }), (t.getExpiredTime = function (e, t) { if (!e || !e.segments) return null; var i = this.runStrategies_(e, t, e.discontinuitySequence, 0); if (!i.length) return null; var n = this.selectSyncPoint_(i, { key: 'segmentIndex', value: 0 }); return 0 < n.segmentIndex && (n.time *= -1), Math.abs(n.time + il(e, n.segmentIndex, 0)); }), (t.runStrategies_ = function (e, t, i, n) { for (var r = [], a = 0; a < bd.length; a++) { var s = bd[a], o = s.run(this, e, t, i, n); o && ((o.strategy = s.name), r.push({ strategy: s.name, syncPoint: o })); } return r; }), (t.selectSyncPoint_ = function (e, t) { for ( var i = e[0].syncPoint, n = Math.abs(e[0].syncPoint[t.key] - t.value), r = e[0].strategy, a = 1; a < e.length; a++ ) { var s = Math.abs(e[a].syncPoint[t.key] - t.value); s < n && ((n = s), (i = e[a].syncPoint), (r = e[a].strategy)); } return ( this.logger_( 'syncPoint for [' + t.key + ': ' + t.value + '] chosen with strategy [' + r + ']: [time:' + i.time + ', segmentIndex:' + i.segmentIndex + ']' ), i ); }), (t.saveExpiredSegmentInfo = function (e, t) { for (var i = t.mediaSequence - e.mediaSequence - 1; 0 <= i; i--) { var n = e.segments[i]; if (n && 'undefined' != typeof n.start) { (t.syncInfo = { mediaSequence: e.mediaSequence + i, time: n.start }), this.logger_( 'playlist refresh sync: [time:' + t.syncInfo.time + ', mediaSequence: ' + t.syncInfo.mediaSequence + ']' ), this.trigger('syncinfoupdate'); break; } } }), (t.setDateTimeMapping = function (e) { if ( !this.datetimeToDisplayTime && e.segments && e.segments.length && e.segments[0].dateTimeObject ) { var t = e.segments[0].dateTimeObject.getTime() / 1e3; this.datetimeToDisplayTime = -t; } }), (t.saveSegmentTimingInfo = function (e) { var t = e.segmentInfo, i = e.shouldSaveTimelineMapping; this.calculateSegmentTimeMapping_(t, t.timingInfo, i) && (this.saveDiscontinuitySyncInfo_(t), t.playlist.syncInfo || (t.playlist.syncInfo = { mediaSequence: t.playlist.mediaSequence + t.mediaIndex, time: t.segment.start })); }), (t.timestampOffsetForTimeline = function (e) { return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].time; }), (t.mappingForTimeline = function (e) { return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].mapping; }), (t.calculateSegmentTimeMapping_ = function (e, t, i) { var n = e.segment, r = this.timelines[e.timeline]; if (null !== e.timestampOffset) (r = { time: e.startOfSegment, mapping: e.startOfSegment - t.start }), i && ((this.timelines[e.timeline] = r), this.trigger('timestampoffset'), this.logger_( 'time mapping for timeline ' + e.timeline + ': [time: ' + r.time + '] [mapping: ' + r.mapping + ']' )), (n.start = e.startOfSegment), (n.end = t.end + r.mapping); else { if (!r) return !1; (n.start = t.start + r.mapping), (n.end = t.end + r.mapping); } return !0; }), (t.saveDiscontinuitySyncInfo_ = function (e) { var t = e.playlist, i = e.segment; if (i.discontinuity) this.discontinuities[i.timeline] = { time: i.start, accuracy: 0 }; else if (t.discontinuityStarts && t.discontinuityStarts.length) for (var n = 0; n < t.discontinuityStarts.length; n++) { var r = t.discontinuityStarts[n], a = t.discontinuitySequence + n + 1, s = r - e.mediaIndex, o = Math.abs(s); if (!this.discontinuities[a] || this.discontinuities[a].accuracy > o) { var u = void 0; (u = s < 0 ? i.start - il(t, e.mediaIndex, r) : i.end + il(t, e.mediaIndex + 1, r)), (this.discontinuities[a] = { time: u, accuracy: o }); } } }), (t.dispose = function () { this.trigger('dispose'), this.off(); }), e ); })(da.EventTarget), Sd = (function (t) { function e() { var e; return ( ((e = t.call(this) || this).pendingTimelineChanges_ = {}), (e.lastTimelineChanges_ = {}), e ); } Ge(e, t); var i = e.prototype; return ( (i.clearPendingTimelineChange = function (e) { (this.pendingTimelineChanges_[e] = null), this.trigger('pendingtimelinechange'); }), (i.pendingTimelineChange = function (e) { var t = e.type, i = e.from, n = e.to; return ( 'number' == typeof i && 'number' == typeof n && ((this.pendingTimelineChanges_[t] = { type: t, from: i, to: n }), this.trigger('pendingtimelinechange')), this.pendingTimelineChanges_[t] ); }), (i.lastTimelineChange = function (e) { var t = e.type, i = e.from, n = e.to; return ( 'number' == typeof i && 'number' == typeof n && ((this.lastTimelineChanges_[t] = { type: t, from: i, to: n }), delete this.pendingTimelineChanges_[t], this.trigger('timelinechange')), this.lastTimelineChanges_[t] ); }), (i.dispose = function () { this.trigger('dispose'), (this.pendingTimelineChanges_ = {}), (this.lastTimelineChanges_ = {}), this.off(); }), e ); })(da.EventTarget), kd = new kc('./decrypter-worker.worker.js', function (e, t) { var i, n, r, c, g, l, s, a = this; /*! @name @videojs/http-streaming @version 2.2.4 @license Apache-2.0 */ (i = function ( e, t, i ) { return t && o(e.prototype, t), i && o(e, i), e; }), (n = function (e, t) { (e.prototype = Object.create(t.prototype)), ((e.prototype.constructor = e).__proto__ = t); }), (r = (function () { function e() { this.listeners = {}; } var t = e.prototype; return ( (t.on = function (e, t) { this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t); }), (t.off = function (e, t) { if (!this.listeners[e]) return !1; var i = this.listeners[e].indexOf(t); return ( (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(i, 1), -1 < i ); }), (t.trigger = function (e, t) { var i = this.listeners[e]; if (i) if (2 === arguments.length) for (var n = i.length, r = 0; r < n; ++r) i[r].call(this, t); else for ( var a = Array.prototype.slice.call(arguments, 1), s = i.length, o = 0; o < s; ++o ) i[o].apply(this, a); }), (t.dispose = function () { this.listeners = {}; }), (t.pipe = function (t) { this.on('data', function (e) { t.push(e); }); }), e ); })()), (c = null), (g = (function () { function e(e) { var t, i, n; (c = c || (function () { var e, t, i, n, r, a, s, o, u = [ [[], [], [], [], []], [[], [], [], [], []] ], l = u[0], c = u[1], d = l[4], h = c[4], p = [], f = []; for (e = 0; e < 256; e++) f[(p[e] = (e << 1) ^ (283 * (e >> 7))) ^ e] = e; for (t = i = 0; !d[t]; t ^= n || 1, i = f[i] || 1) for ( a = ((a = i ^ (i << 1) ^ (i << 2) ^ (i << 3) ^ (i << 4)) >> 8) ^ (255 & a) ^ 99, o = (16843009 * p[(r = p[(n = p[(h[(d[t] = a)] = t)])])]) ^ (65537 * r) ^ (257 * n) ^ (16843008 * t), s = (257 * p[a]) ^ (16843008 * a), e = 0; e < 4; e++ ) (l[e][t] = s = (s << 24) ^ (s >>> 8)), (c[e][a] = o = (o << 24) ^ (o >>> 8)); for (e = 0; e < 5; e++) (l[e] = l[e].slice(0)), (c[e] = c[e].slice(0)); return u; })()), (this._tables = [ [ c[0][0].slice(), c[0][1].slice(), c[0][2].slice(), c[0][3].slice(), c[0][4].slice() ], [ c[1][0].slice(), c[1][1].slice(), c[1][2].slice(), c[1][3].slice(), c[1][4].slice() ] ]); var r = this._tables[0][4], a = this._tables[1], s = e.length, o = 1; if (4 !== s && 6 !== s && 8 !== s) throw new Error('Invalid aes key size'); var u = e.slice(0), l = []; for (this._key = [u, l], t = s; t < 4 * s + 28; t++) (n = u[t - 1]), (t % s == 0 || (8 === s && t % s == 4)) && ((n = (r[n >>> 24] << 24) ^ (r[(n >> 16) & 255] << 16) ^ (r[(n >> 8) & 255] << 8) ^ r[255 & n]), t % s == 0 && ((n = (n << 8) ^ (n >>> 24) ^ (o << 24)), (o = (o << 1) ^ (283 * (o >> 7))))), (u[t] = u[t - s] ^ n); for (i = 0; t; i++, t--) (n = u[3 & i ? t : t - 4]), (l[i] = t <= 4 || i < 4 ? n : a[0][r[n >>> 24]] ^ a[1][r[(n >> 16) & 255]] ^ a[2][r[(n >> 8) & 255]] ^ a[3][r[255 & n]]); } return ( (e.prototype.decrypt = function (e, t, i, n, r, a) { var s, o, u, l, c = this._key[1], d = e ^ c[0], h = n ^ c[1], p = i ^ c[2], f = t ^ c[3], m = c.length / 4 - 2, g = 4, v = this._tables[1], y = v[0], _ = v[1], b = v[2], T = v[3], S = v[4]; for (l = 0; l < m; l++) (s = y[d >>> 24] ^ _[(h >> 16) & 255] ^ b[(p >> 8) & 255] ^ T[255 & f] ^ c[g]), (o = y[h >>> 24] ^ _[(p >> 16) & 255] ^ b[(f >> 8) & 255] ^ T[255 & d] ^ c[g + 1]), (u = y[p >>> 24] ^ _[(f >> 16) & 255] ^ b[(d >> 8) & 255] ^ T[255 & h] ^ c[g + 2]), (f = y[f >>> 24] ^ _[(d >> 16) & 255] ^ b[(h >> 8) & 255] ^ T[255 & p] ^ c[g + 3]), (g += 4), (d = s), (h = o), (p = u); for (l = 0; l < 4; l++) (r[(3 & -l) + a] = (S[d >>> 24] << 24) ^ (S[(h >> 16) & 255] << 16) ^ (S[(p >> 8) & 255] << 8) ^ S[255 & f] ^ c[g++]), (s = d), (d = h), (h = p), (p = f), (f = s); }), e ); })()), (l = (function (t) { function e() { var e; return ((e = t.call(this, r) || this).jobs = []), (e.delay = 1), (e.timeout_ = null), e; } n(e, t); var i = e.prototype; return ( (i.processJob_ = function () { this.jobs.shift()(), this.jobs.length ? (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay)) : (this.timeout_ = null); }), (i.push = function (e) { this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay)); }), e ); })(r)), (s = (function () { function u(e, t, i, n) { var r = u.STEP, a = new Int32Array(e.buffer), s = new Uint8Array(e.byteLength), o = 0; for ( this.asyncStream_ = new l(), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s)), o = r; o < a.length; o += r ) (i = new Uint32Array([v(a[o - 4]), v(a[o - 3]), v(a[o - 2]), v(a[o - 1])])), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s)); this.asyncStream_.push(function () { n( null, /*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */ (function (e) { return e.subarray(0, e.byteLength - e[e.byteLength - 1]); })(/*! @name aes-decrypter @version 3.1.0 @license Apache-2.0 */ s) ); }); } return ( (u.prototype.decryptChunk_ = function (t, i, n, r) { return function () { var e = (function (e, t, i) { var n, r, a, s, o, u, l, c, d, h = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2), p = new g(Array.prototype.slice.call(t)), f = new Uint8Array(e.byteLength), m = new Int32Array(f.buffer); for (n = i[0], r = i[1], a = i[2], s = i[3], d = 0; d < h.length; d += 4) (o = v(h[d])), (u = v(h[d + 1])), (l = v(h[d + 2])), (c = v(h[d + 3])), p.decrypt(o, u, l, c, m, d), (m[d] = v(m[d] ^ n)), (m[d + 1] = v(m[d + 1] ^ r)), (m[d + 2] = v(m[d + 2] ^ a)), (m[d + 3] = v(m[d + 3] ^ s)), (n = o), (r = u), (a = l), (s = c); return f; })(t, i, n); r.set(e, t.byteOffset); }; }), i(u, null, [ { key: 'STEP', get: function () { return 32e3; } } ]), u ); })()), new (function (a) { a.onmessage = function (e) { var i = e.data, t = new Uint8Array(i.encrypted.bytes, i.encrypted.byteOffset, i.encrypted.byteLength), n = new Uint32Array(i.key.bytes, i.key.byteOffset, i.key.byteLength / 4), r = new Uint32Array(i.iv.bytes, i.iv.byteOffset, i.iv.byteLength / 4); new s(t, n, r, function (e, t) { a.postMessage( (function (i) { var n = {}; return ( Object.keys(i).forEach(function (e) { var t = i[e]; ArrayBuffer.isView(t) ? (n[e] = { bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }) : (n[e] = t); }), n ); })({ source: i.source, decrypted: t }), [t.buffer] ); }); }; })(a); function o(e, t) { for (var i = 0; i < t.length; i++) { var n = t[i]; (n.enumerable = n.enumerable || !1), (n.configurable = !0), 'value' in n && (n.writable = !0), Object.defineProperty(e, n.key, n); } } function v(e) { return (e << 24) | ((65280 & e) << 8) | ((16711680 & e) >> 8) | (e >>> 24); } }), Cd = { AUDIO: function (u, l) { return function () { var e = l.segmentLoaders[u], t = l.mediaTypes[u], i = l.blacklistCurrentPlaylist; ed(e, t); var n = t.activeTrack(), r = t.activeGroup(), a = ( r.filter(function (e) { return e.default; })[0] || r[0] ).id, s = t.tracks[a]; if (n !== s) { for (var o in (da.log.warn( 'Problem encountered loading the alternate audio track.Switching back to default.' ), t.tracks)) t.tracks[o].enabled = t.tracks[o] === s; t.onTrackChanged(); } else i({ message: 'Problem encountered loading the default audio track.' }); }; }, SUBTITLES: function (n, r) { return function () { var e = r.segmentLoaders[n], t = r.mediaTypes[n]; da.log.warn('Problem encountered loading the subtitle track.Disabling subtitle track.'), ed(e, t); var i = t.activeTrack(); i && (i.mode = 'disabled'), t.onTrackChanged(); }; } }, Ed = { AUDIO: function (e, t, i) { if (t) { var n = i.tech, r = i.requestOptions, a = i.segmentLoaders[e]; t.on('loadedmetadata', function () { var e = t.media(); a.playlist(e, r), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load(); }), t.on('loadedplaylist', function () { a.playlist(t.media(), r), n.paused() || a.load(); }), t.on('error', Cd[e](e, i)); } }, SUBTITLES: function (e, t, i) { var n = i.tech, r = i.requestOptions, a = i.segmentLoaders[e], s = i.mediaTypes[e]; t.on('loadedmetadata', function () { var e = t.media(); a.playlist(e, r), a.track(s.activeTrack()), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load(); }), t.on('loadedplaylist', function () { a.playlist(t.media(), r), n.paused() || a.load(); }), t.on('error', Cd[e](e, i)); } }, wd = { AUDIO: function (s, o) { var u = o.vhs, l = o.sourceType, e = o.segmentLoaders[s], c = o.requestOptions, t = o.master, d = t.mediaGroups, i = t.playlists, n = o.mediaTypes[s], h = n.groups, p = n.tracks, f = o.masterPlaylistLoader; (d[s] && 0 !== Object.keys(d[s]).length) || (d[s] = { main: { default: { default: !0 } } }); function r(r) { function e(e) { var t = d[s][r][e]; a.filter(function (e) { return e.resolvedUri === t.resolvedUri; }).length && delete t.resolvedUri; var i = void 0; if ( ((i = 'vhs-json' === l && t.playlists ? new Zl(t.playlists[0], u, c) : t.resolvedUri ? new Zl(t.resolvedUri, u, c) : t.playlists && 'dash' === l ? new oc(t.playlists[0], u, c, f) : null), (t = da.mergeOptions({ id: e, playlistLoader: i }, t)), Ed[s](s, t.playlistLoader, o), h[r].push(t), 'undefined' == typeof p[e]) ) { var n = new da.AudioTrack({ id: e, kind: (function (e) { var t = e.default ? 'main' : 'alternative'; return ( e.characteristics && 0 <= e.characteristics.indexOf('public.accessibility.describes-video') && (t = 'main-desc'), t ); })(t), enabled: !1, language: t.language, default: t.default, label: e }); p[e] = n; } } h[r] || (h[r] = []); var a = i.filter(function (e) { return e.attributes[s] === r; }); for (var t in d[s][r]) e(t); } for (var a in d[s]) r(a); e.on('error', Cd[s](s, o)); }, SUBTITLES: function (e, t) { var i = t.tech, n = t.vhs, r = t.sourceType, a = t.segmentLoaders[e], s = t.requestOptions, o = t.master.mediaGroups, u = t.mediaTypes[e], l = u.groups, c = u.tracks, d = t.masterPlaylistLoader; for (var h in o[e]) for (var p in (l[h] || (l[h] = []), o[e][h])) if (!o[e][h][p].forced) { var f = o[e][h][p], m = void 0; if ( ('hls' === r ? (m = new Zl(f.resolvedUri, n, s)) : 'dash' === r ? (m = new oc(f.playlists[0], n, s, d)) : 'vhs-json' === r && (m = new Zl(f.playlists ? f.playlists[0] : f.resolvedUri, n, s)), (f = da.mergeOptions({ id: p, playlistLoader: m }, f)), Ed[e](e, f.playlistLoader, t), l[h].push(f), 'undefined' == typeof c[p]) ) { var g = i.addRemoteTextTrack( { id: p, kind: 'subtitles', default: f.default && f.autoselect, language: f.language, label: p }, !1 ).track; c[p] = g; } } a.on('error', Cd[e](e, t)); }, 'CLOSED-CAPTIONS': function (e, t) { var i = t.tech, n = t.master.mediaGroups, r = t.mediaTypes[e], a = r.groups, s = r.tracks; for (var o in n[e]) for (var u in (a[o] || (a[o] = []), n[e][o])) { var l = n[e][o][u]; if ( l.instreamId.match(/CC\d/) && (a[o].push(da.mergeOptions({ id: u }, l)), 'undefined' == typeof s[u]) ) { var c = i.addRemoteTextTrack( { id: l.instreamId, kind: 'captions', default: l.default && l.autoselect, language: l.language, label: u }, !1 ).track; s[u] = c; } } } }, Id = { AUDIO: function (i, n) { return function () { var e = n.mediaTypes[i].tracks; for (var t in e) if (e[t].enabled) return e[t]; return null; }; }, SUBTITLES: function (i, n) { return function () { var e = n.mediaTypes[i].tracks; for (var t in e) if ('showing' === e[t].mode || 'hidden' === e[t].mode) return e[t]; return null; }; } }, Ad = [ 'mediaRequests', 'mediaRequestsAborted', 'mediaRequestsTimedout', 'mediaRequestsErrored', 'mediaTransferDuration', 'mediaBytesTransferred' ], xd = (function (m) { function e(e) { var t; t = m.call(this) || this; var i = e.src, n = e.handleManifestRedirects, r = e.withCredentials, a = e.tech, s = e.bandwidth, o = e.externVhs, u = e.useCueTags, l = e.blacklistDuration, c = e.enableLowInitialPlaylist, d = e.sourceType, h = e.cacheEncryptionKeys, p = e.handlePartialData; if (!i) throw new Error('A non-empty playlist URL or JSON manifest string is required'); (ad = o), (t.withCredentials = r), (t.tech_ = a), (t.vhs_ = a.vhs), (t.sourceType_ = d), (t.useCueTags_ = u), (t.blacklistDuration = l), (t.enableLowInitialPlaylist = c), t.useCueTags_ && ((t.cueTagsTrack_ = t.tech_.addTextTrack('metadata', 'ad-cues')), (t.cueTagsTrack_.inBandMetadataTrackDispatchType = '')), (t.requestOptions_ = { withCredentials: r, handleManifestRedirects: n, timeout: null }), t.on('error', t.pauseLoading), (t.mediaTypes_ = (function () { var t = {}; return ( ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) { t[e] = { groups: {}, tracks: {}, activePlaylistLoader: null, activeGroup: Wc, activeTrack: Wc, onGroupChanged: Wc, onTrackChanged: Wc }; }), t ); })()), (t.mediaSource = new T.MediaSource()), (t.handleDurationChange_ = t.handleDurationChange_.bind(Ve(t))), (t.handleSourceOpen_ = t.handleSourceOpen_.bind(Ve(t))), (t.handleSourceEnded_ = t.handleSourceEnded_.bind(Ve(t))), t.mediaSource.addEventListener('durationchange', t.handleDurationChange_), t.mediaSource.addEventListener('sourceopen', t.handleSourceOpen_), t.mediaSource.addEventListener('sourceended', t.handleSourceEnded_), (t.seekable_ = da.createTimeRanges()), (t.hasPlayed_ = !1), (t.syncController_ = new Td(e)), (t.segmentMetadataTrack_ = a.addRemoteTextTrack( { kind: 'metadata', label: 'segment-metadata' }, !1 ).track), (t.decrypter_ = new kd()), (t.sourceUpdater_ = new vd(t.mediaSource)), (t.inbandTextTracks_ = {}), (t.timelineChangeController_ = new Sd()); var f = { vhs: t.vhs_, mediaSource: t.mediaSource, currentTime: t.tech_.currentTime.bind(t.tech_), seekable: function () { return t.seekable(); }, seeking: function () { return t.tech_.seeking(); }, duration: function () { return t.duration(); }, hasPlayed: function () { return t.hasPlayed_; }, goalBufferLength: function () { return t.goalBufferLength(); }, bandwidth: s, syncController: t.syncController_, decrypter: t.decrypter_, sourceType: t.sourceType_, inbandTextTracks: t.inbandTextTracks_, cacheEncryptionKeys: h, handlePartialData: p, sourceUpdater: t.sourceUpdater_, timelineChangeController: t.timelineChangeController_ }; return ( (t.masterPlaylistLoader_ = 'dash' === t.sourceType_ ? new oc(i, t.vhs_, t.requestOptions_) : new Zl(i, t.vhs_, t.requestOptions_)), t.setupMasterPlaylistLoaderListeners_(), (t.mainSegmentLoader_ = new Hc( da.mergeOptions(f, { segmentMetadataTrack: t.segmentMetadataTrack_, loaderType: 'main' }), e )), (t.audioSegmentLoader_ = new Hc(da.mergeOptions(f, { loaderType: 'audio' }), e)), (t.subtitleSegmentLoader_ = new _d( da.mergeOptions(f, { loaderType: 'vtt', featuresNativeTextTracks: t.tech_.featuresNativeTextTracks }), e )), t.setupSegmentLoaderListeners_(), Ad.forEach(function (e) { t[e + '_'] = function (e) { return this.audioSegmentLoader_[e] + this.mainSegmentLoader_[e]; }.bind(Ve(t), e); }), (t.logger_ = Pc('MPC')), (t.triggeredFmp4Usage = !1), t.masterPlaylistLoader_.load(), t ); } Ge(e, m); var t = e.prototype; return ( (t.setupMasterPlaylistLoaderListeners_ = function () { var i = this; this.masterPlaylistLoader_.on('loadedmetadata', function () { var e = i.masterPlaylistLoader_.media(), t = 1.5 * e.targetDuration * 1e3; ll(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t), e.endList && 'none' !== i.tech_.preload() && (i.mainSegmentLoader_.playlist(e, i.requestOptions_), i.mainSegmentLoader_.load()), id({ sourceType: i.sourceType_, segmentLoaders: { AUDIO: i.audioSegmentLoader_, SUBTITLES: i.subtitleSegmentLoader_, main: i.mainSegmentLoader_ }, tech: i.tech_, requestOptions: i.requestOptions_, masterPlaylistLoader: i.masterPlaylistLoader_, vhs: i.vhs_, master: i.master(), mediaTypes: i.mediaTypes_, blacklistCurrentPlaylist: i.blacklistCurrentPlaylist.bind(i) }), i.triggerPresenceUsage_(i.master(), e), i.setupFirstPlay(), !i.mediaTypes_.AUDIO.activePlaylistLoader || i.mediaTypes_.AUDIO.activePlaylistLoader.media() ? i.trigger('selectedinitialmedia') : i.mediaTypes_.AUDIO.activePlaylistLoader.one('loadedmetadata', function () { i.trigger('selectedinitialmedia'); }); }), this.masterPlaylistLoader_.on('loadedplaylist', function () { var e = i.masterPlaylistLoader_.media(); if (!e) { var t; if ( (i.excludeUnsupportedVariants_(), i.enableLowInitialPlaylist && (t = i.selectInitialPlaylist()), (t = t || i.selectPlaylist()), (i.initialMedia_ = t), i.masterPlaylistLoader_.media(i.initialMedia_), !('vhs-json' === i.sourceType_ && i.initialMedia_.segments)) ) return; e = i.initialMedia_; } i.handleUpdatedMediaPlaylist(e); }), this.masterPlaylistLoader_.on('error', function () { i.blacklistCurrentPlaylist(i.masterPlaylistLoader_.error); }), this.masterPlaylistLoader_.on('mediachanging', function () { i.mainSegmentLoader_.abort(), i.mainSegmentLoader_.pause(); }), this.masterPlaylistLoader_.on('mediachange', function () { var e = i.masterPlaylistLoader_.media(), t = 1.5 * e.targetDuration * 1e3; ll(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t), i.mainSegmentLoader_.playlist(e, i.requestOptions_), i.mainSegmentLoader_.load(), i.tech_.trigger({ type: 'mediachange', bubbles: !0 }); }), this.masterPlaylistLoader_.on('playlistunchanged', function () { var e = i.masterPlaylistLoader_.media(); i.stuckAtPlaylistEnd_(e) && (i.blacklistCurrentPlaylist({ message: 'Playlist no longer updating.' }), i.tech_.trigger('playliststuck')); }), this.masterPlaylistLoader_.on('renditiondisabled', function () { i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-disabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-disabled' }); }), this.masterPlaylistLoader_.on('renditionenabled', function () { i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-enabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-enabled' }); }); }), (t.handleUpdatedMediaPlaylist = function (e) { this.useCueTags_ && this.updateAdCues_(e), this.mainSegmentLoader_.playlist(e, this.requestOptions_), this.updateDuration(!e.endList), this.tech_.paused() || (this.mainSegmentLoader_.load(), this.audioSegmentLoader_ && this.audioSegmentLoader_.load()); }), (t.triggerPresenceUsage_ = function (e, t) { var i = e.mediaGroups || {}, n = !0, r = Object.keys(i.AUDIO); for (var a in i.AUDIO) for (var s in i.AUDIO[a]) { i.AUDIO[a][s].uri || (n = !1); } n && (this.tech_.trigger({ type: 'usage', name: 'vhs-demuxed' }), this.tech_.trigger({ type: 'usage', name: 'hls-demuxed' })), Object.keys(i.SUBTITLES).length && (this.tech_.trigger({ type: 'usage', name: 'vhs-webvtt' }), this.tech_.trigger({ type: 'usage', name: 'hls-webvtt' })), ad.Playlist.isAes(t) && (this.tech_.trigger({ type: 'usage', name: 'vhs-aes' }), this.tech_.trigger({ type: 'usage', name: 'hls-aes' })), r.length && 1 < Object.keys(i.AUDIO[r[0]]).length && (this.tech_.trigger({ type: 'usage', name: 'vhs-alternate-audio' }), this.tech_.trigger({ type: 'usage', name: 'hls-alternate-audio' })), this.useCueTags_ && (this.tech_.trigger({ type: 'usage', name: 'vhs-playlist-cue-tags' }), this.tech_.trigger({ type: 'usage', name: 'hls-playlist-cue-tags' })); }), (t.setupSegmentLoaderListeners_ = function () { var n = this; this.mainSegmentLoader_.on('bandwidthupdate', function () { var e = n.selectPlaylist(), t = n.masterPlaylistLoader_.media(), i = n.tech_.buffered(); !(function (e) { var t = e.currentPlaylist, i = e.nextPlaylist, n = e.forwardBuffer, r = e.bufferLowWaterLine, a = e.duration; e.log; return i ? !t.endList || a < uc.MAX_BUFFER_LOW_WATER_LINE || i.attributes.BANDWIDTH < t.attributes.BANDWIDTH || r <= n : (da.log.warn('We received no playlist to switch to. Please check your stream.'), !1); })({ currentPlaylist: t, nextPlaylist: e, forwardBuffer: i.length ? i.end(i.length - 1) - n.tech_.currentTime() : 0, bufferLowWaterLine: n.bufferLowWaterLine(), duration: n.duration(), log: n.logger_ }) || n.masterPlaylistLoader_.media(e), n.tech_.trigger('bandwidthupdate'); }), this.mainSegmentLoader_.on('progress', function () { n.trigger('progress'); }), this.mainSegmentLoader_.on('error', function () { n.blacklistCurrentPlaylist(n.mainSegmentLoader_.error()); }), this.mainSegmentLoader_.on('appenderror', function () { (n.error = n.mainSegmentLoader_.error_), n.trigger('error'); }), this.mainSegmentLoader_.on('syncinfoupdate', function () { n.onSyncInfoUpdate_(); }), this.mainSegmentLoader_.on('timestampoffset', function () { n.tech_.trigger({ type: 'usage', name: 'vhs-timestamp-offset' }), n.tech_.trigger({ type: 'usage', name: 'hls-timestamp-offset' }); }), this.audioSegmentLoader_.on('syncinfoupdate', function () { n.onSyncInfoUpdate_(); }), this.audioSegmentLoader_.on('appenderror', function () { (n.error = n.audioSegmentLoader_.error_), n.trigger('error'); }), this.mainSegmentLoader_.on('ended', function () { n.logger_('main segment loader ended'), n.onEndOfStream(); }), this.mainSegmentLoader_.on('earlyabort', function () { n.blacklistCurrentPlaylist( { message: "Aborted early because there isn't enough bandwidth to complete the request without rebuffering." }, 120 ); }); function e() { if (!n.sourceUpdater_.ready()) return n.tryToCreateSourceBuffers_(); var e = n.getCodecsOrExclude_(); e && n.sourceUpdater_.addOrChangeSourceBuffers(e); } this.mainSegmentLoader_.on('trackinfo', e), this.audioSegmentLoader_.on('trackinfo', e), this.mainSegmentLoader_.on('fmp4', function () { n.triggeredFmp4Usage || (n.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), n.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (n.triggeredFmp4Usage = !0)); }), this.audioSegmentLoader_.on('fmp4', function () { n.triggeredFmp4Usage || (n.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), n.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (n.triggeredFmp4Usage = !0)); }), this.audioSegmentLoader_.on('ended', function () { n.logger_('audioSegmentLoader ended'), n.onEndOfStream(); }); }), (t.mediaSecondsLoaded_ = function () { return Math.max( this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded ); }), (t.load = function () { this.mainSegmentLoader_.load(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.load(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.load(); }), (t.smoothQualityChange_ = function (e) { void 0 === e && (e = this.selectPlaylist()), e !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(e), this.mainSegmentLoader_.resetLoader()); }), (t.fastQualityChange_ = function (e) { var t = this; void 0 === e && (e = this.selectPlaylist()), e !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(e), this.mainSegmentLoader_.resetEverything(function () { da.browser.IE_VERSION || da.browser.IS_EDGE ? t.tech_.setCurrentTime(t.tech_.currentTime() + 0.04) : t.tech_.setCurrentTime(t.tech_.currentTime()); })); }), (t.play = function () { if (!this.setupFirstPlay()) { this.tech_.ended() && this.tech_.setCurrentTime(0), this.hasPlayed_ && this.load(); var e = this.tech_.seekable(); return this.tech_.duration() === 1 / 0 && this.tech_.currentTime() < e.start(0) ? this.tech_.setCurrentTime(e.end(e.length - 1)) : void 0; } }), (t.setupFirstPlay = function () { var e = this, t = this.masterPlaylistLoader_.media(); if (!t || this.tech_.paused() || this.hasPlayed_) return !1; if (!t.endList) { var i = this.seekable(); if (!i.length) return !1; if (da.browser.IE_VERSION && 0 === this.tech_.readyState()) return ( this.tech_.one('loadedmetadata', function () { e.trigger('firstplay'), e.tech_.setCurrentTime(i.end(0)), (e.hasPlayed_ = !0); }), !1 ); this.trigger('firstplay'), this.tech_.setCurrentTime(i.end(0)); } return (this.hasPlayed_ = !0), this.load(), !0; }), (t.handleSourceOpen_ = function () { if ((this.tryToCreateSourceBuffers_(), this.tech_.autoplay())) { var e = this.tech_.play(); 'undefined' != typeof e && 'function' == typeof e.then && e.then(null, function (e) {}); } this.trigger('sourceopen'); }), (t.handleSourceEnded_ = function () { if (this.inbandTextTracks_.metadataTrack_) { var e = this.inbandTextTracks_.metadataTrack_.cues; if (e && e.length) { var t = this.duration(); e[e.length - 1].endTime = isNaN(t) || Math.abs(t) === 1 / 0 ? Number.MAX_VALUE : t; } } }), (t.handleDurationChange_ = function () { this.tech_.trigger('durationchange'); }), (t.onEndOfStream = function () { var e = this.mainSegmentLoader_.ended_; this.mediaTypes_.AUDIO.activePlaylistLoader && (e = !this.mainSegmentLoader_.currentMediaInfo_ || this.mainSegmentLoader_.currentMediaInfo_.hasVideo ? e && this.audioSegmentLoader_.ended_ : this.audioSegmentLoader_.ended_), e && this.sourceUpdater_.endOfStream(); }), (t.stuckAtPlaylistEnd_ = function (e) { if (!this.seekable().length) return !1; var t = this.syncController_.getExpiredTime(e, this.duration()); if (null === t) return !1; var i = ad.Playlist.playlistEnd(e, t), n = this.tech_.currentTime(), r = this.tech_.buffered(); if (!r.length) return i - n <= 0.1; var a = r.end(r.length - 1); return a - n <= 0.1 && i - a <= 0.1; }), (t.blacklistCurrentPlaylist = function (e, t) { void 0 === e && (e = {}); var i = e.playlist || this.masterPlaylistLoader_.media(); if (((t = t || e.blacklistDuration || this.blacklistDuration), !i)) return ( (this.error = e), void ('open' !== this.mediaSource.readyState ? this.trigger('error') : this.sourceUpdater_.endOfStream('network')) ); var n = this.masterPlaylistLoader_.master.playlists, r = n.filter(ol), a = 1 === r.length && r[0] === i; if (1 === n.length && t !== 1 / 0) return ( da.log.warn( 'Problem encountered with playlist ' + i.id + '. Trying again since it is the only playlist.' ), this.tech_.trigger('retryplaylist'), this.masterPlaylistLoader_.load(a) ); if (a) { var s = !1; n.forEach(function (e) { if (e !== i) { var t = e.excludeUntil; 'undefined' != typeof t && t !== 1 / 0 && ((s = !0), delete e.excludeUntil); } }), s && (da.log.warn( 'Removing other playlists from the exclusion list because the last rendition is about to be excluded.' ), this.tech_.trigger('retryplaylist')); } (i.excludeUntil = Date.now() + 1e3 * t), this.tech_.trigger('blacklistplaylist'), this.tech_.trigger({ type: 'usage', name: 'vhs-rendition-blacklisted' }), this.tech_.trigger({ type: 'usage', name: 'hls-rendition-blacklisted' }); var o = this.selectPlaylist(); if (!o) return ( (this.error = 'Playback cannot continue. No available working or supported playlists.'), void this.trigger('error') ); var u = e.internal ? this.logger_ : da.log.warn, l = e.message ? ' ' + e.message : ''; return ( u( (e.internal ? 'Internal problem' : 'Problem') + ' encountered with playlist ' + i.id + '.' + l + ' Switching to playlist ' + o.id + '.' ), o.attributes.AUDIO !== i.attributes.AUDIO && this.delegateLoaders_('audio', ['abort', 'pause']), o.attributes.SUBTITLES !== i.attributes.SUBTITLES && this.delegateLoaders_('subtitle', ['abort', 'pause']), this.delegateLoaders_('main', ['abort', 'pause']), this.masterPlaylistLoader_.media(o, a) ); }), (t.pauseLoading = function () { this.delegateLoaders_('all', ['abort', 'pause']); }), (t.delegateLoaders_ = function (i, e) { var n = this, r = [], t = 'all' === i; (!t && 'main' !== i) || r.push(this.masterPlaylistLoader_); var a = []; (!t && 'audio' !== i) || a.push('AUDIO'), (!t && 'subtitle' !== i) || (a.push('CLOSED-CAPTIONS'), a.push('SUBTITLES')), a.forEach(function (e) { var t = n.mediaTypes_[e] && n.mediaTypes_[e].activePlaylistLoader; t && r.push(t); }), ['main', 'audio', 'subtitle'].forEach(function (e) { var t = n[e + 'SegmentLoader_']; !t || (i !== e && 'all' !== i) || r.push(t); }), r.forEach(function (t) { return e.forEach(function (e) { 'function' == typeof t[e] && t[e](); }); }); }), (t.setCurrentTime = function (e) { var t = $u(this.tech_.buffered(), e); return this.masterPlaylistLoader_ && this.masterPlaylistLoader_.media() && this.masterPlaylistLoader_.media().segments ? t && t.length ? e : (this.mainSegmentLoader_.resetEverything(), this.mainSegmentLoader_.abort(), this.mediaTypes_.AUDIO.activePlaylistLoader && (this.audioSegmentLoader_.resetEverything(), this.audioSegmentLoader_.abort()), this.mediaTypes_.SUBTITLES.activePlaylistLoader && (this.subtitleSegmentLoader_.resetEverything(), this.subtitleSegmentLoader_.abort()), void this.load()) : 0; }), (t.duration = function () { if (!this.masterPlaylistLoader_) return 0; var e = this.masterPlaylistLoader_.media(); return e ? e.endList ? this.mediaSource ? this.mediaSource.duration : ad.Playlist.duration(e) : 1 / 0 : 0; }), (t.seekable = function () { return this.seekable_; }), (t.onSyncInfoUpdate_ = function () { var e; if (this.masterPlaylistLoader_) { var t = this.masterPlaylistLoader_.media(); if (t) { var i = this.syncController_.getExpiredTime(t, this.duration()); if (null !== i) { var n = this.masterPlaylistLoader_.master.suggestedPresentationDelay, r = ad.Playlist.seekable(t, i, n); if (0 !== r.length) { if (this.mediaTypes_.AUDIO.activePlaylistLoader) { if ( ((t = this.mediaTypes_.AUDIO.activePlaylistLoader.media()), null === (i = this.syncController_.getExpiredTime(t, this.duration()))) ) return; if (0 === (e = ad.Playlist.seekable(t, i, n)).length) return; } var a, s; this.seekable_ && this.seekable_.length && ((a = this.seekable_.end(0)), (s = this.seekable_.start(0))), e ? e.start(0) > r.end(0) || r.start(0) > e.end(0) ? (this.seekable_ = r) : (this.seekable_ = da.createTimeRanges([ [ e.start(0) > r.start(0) ? e.start(0) : r.start(0), e.end(0) < r.end(0) ? e.end(0) : r.end(0) ] ])) : (this.seekable_ = r), (this.seekable_ && this.seekable_.length && this.seekable_.end(0) === a && this.seekable_.start(0) === s) || (this.logger_('seekable updated [' + Ju(this.seekable_) + ']'), this.tech_.trigger('seekablechanged')); } } } } }), (t.updateDuration = function (e) { if ( (this.updateDuration_ && (this.mediaSource.removeEventListener('sourceopen', this.updateDuration_), (this.updateDuration_ = null)), 'open' !== this.mediaSource.readyState) ) return ( (this.updateDuration_ = this.updateDuration.bind(this, e)), void this.mediaSource.addEventListener('sourceopen', this.updateDuration_) ); if (e) { var t = this.seekable(); if (!t.length) return; (isNaN(this.mediaSource.duration) || this.mediaSource.duration < t.end(t.length - 1)) && this.sourceUpdater_.setDuration(t.end(t.length - 1)); } else { var i = this.tech_.buffered(), n = ad.Playlist.duration(this.masterPlaylistLoader_.media()); 0 < i.length && (n = Math.max(n, i.end(i.length - 1))), this.mediaSource.duration !== n && this.sourceUpdater_.setDuration(n); } }), (t.dispose = function () { var n = this; this.trigger('dispose'), this.decrypter_.terminate(), this.masterPlaylistLoader_.dispose(), this.mainSegmentLoader_.dispose(), ['AUDIO', 'SUBTITLES'].forEach(function (e) { var t = n.mediaTypes_[e].groups; for (var i in t) t[i].forEach(function (e) { e.playlistLoader && e.playlistLoader.dispose(); }); }), this.audioSegmentLoader_.dispose(), this.subtitleSegmentLoader_.dispose(), this.sourceUpdater_.dispose(), this.timelineChangeController_.dispose(), this.updateDuration_ && this.mediaSource.removeEventListener('sourceopen', this.updateDuration_), this.mediaSource.removeEventListener('durationchange', this.handleDurationChange_), this.mediaSource.removeEventListener('sourceopen', this.handleSourceOpen_), this.mediaSource.removeEventListener('sourceended', this.handleSourceEnded_), this.off(); }), (t.master = function () { return this.masterPlaylistLoader_.master; }), (t.media = function () { return this.masterPlaylistLoader_.media() || this.initialMedia_; }), (t.areMediaTypesKnown_ = function () { var e = !!this.mediaTypes_.AUDIO.activePlaylistLoader; return !( !this.mainSegmentLoader_.currentMediaInfo_ || (e && !this.audioSegmentLoader_.currentMediaInfo_) ); }), (t.getCodecsOrExclude_ = function () { var n = this, i = { main: this.mainSegmentLoader_.currentMediaInfo_ || {}, audio: this.audioSegmentLoader_.currentMediaInfo_ || {} }; i.video = i.main; var e = xc(this.master(), this.media()), r = {}, t = !!this.mediaTypes_.AUDIO.activePlaylistLoader; if ( (i.main.hasVideo && (r.video = e.video || i.main.videoCodec || Vl), i.main.isMuxed && (r.video += ',' + (e.audio || i.main.audioCodec || jl)), ((i.main.hasAudio && !i.main.isMuxed) || i.audio.hasAudio || t) && ((r.audio = e.audio || i.main.audioCodec || i.audio.audioCodec || jl), (i.audio.isFmp4 = i.main.hasAudio && !i.main.isMuxed ? i.main.isFmp4 : i.audio.isFmp4)), r.audio || r.video) ) { var a, s = {}; if ( (['video', 'audio'].forEach(function (e) { if ( r.hasOwnProperty(e) && !(function (e, t) { return e ? ql(t) : Xl(t); })(i[e].isFmp4, r[e]) ) { var t = i[e].isFmp4 ? 'browser' : 'muxer'; (s[t] = s[t] || []), s[t].push(r[e]), 'audio' === e && (a = t); } }), t && a && this.media().attributes.AUDIO) ) { var o = this.media().attributes.AUDIO; this.master().playlists.forEach(function (e) { (e.attributes && e.attributes.AUDIO) === o && e !== n.media() && (e.excludeUntil = 1 / 0); }), this.logger_( 'excluding audio group ' + o + ' as ' + a + ' does not support codec(s): "' + r.audio + '"' ); } if (!Object.keys(s).length) { if (this.sourceUpdater_.ready() && !this.sourceUpdater_.canChangeType()) { var u = []; if ( (['video', 'audio'].forEach(function (e) { var t = (Kl(n.sourceUpdater_.codecs[e] || '')[e] || {}).type, i = (Kl(r[e] || '')[e] || {}).type; t && i && t.toLowerCase() !== i.toLowerCase() && u.push('"' + n.sourceUpdater_.codecs[e] + '" -> "' + r[e] + '"'); }), u.length) ) return void this.blacklistCurrentPlaylist({ playlist: this.media(), message: 'Codec switching not supported: ' + u.join(', ') + '.', blacklistDuration: 1 / 0, internal: !0 }); } return r; } var l = Object.keys(s).reduce(function (e, t) { return ( e && (e += ', '), (e += t + ' does not support codec(s): "' + s[t].join(',') + '"') ); }, '') + '.'; this.blacklistCurrentPlaylist({ playlist: this.media(), internal: !0, message: l, blacklistDuration: 1 / 0 }); } else this.blacklistCurrentPlaylist({ playlist: this.media(), message: 'Could not determine codecs for playlist.', blacklistDuration: 1 / 0 }); }), (t.tryToCreateSourceBuffers_ = function () { if ( 'open' === this.mediaSource.readyState && !this.sourceUpdater_.ready() && this.areMediaTypesKnown_() ) { var e = this.getCodecsOrExclude_(); if (e) { this.sourceUpdater_.createSourceBuffers(e); var t = [e.video, e.audio].filter(Boolean).join(','); this.excludeIncompatibleVariants_(t); } } }), (t.excludeUnsupportedVariants_ = function () { var i = this; this.master().playlists.forEach(function (e) { var t = xc(i.master, e); !t.audio || Xl(t.audio) || ql(t.audio) || (e.excludeUntil = 1 / 0), !t.video || Xl(t.video) || ql(t.video) || (e.excludeUntil = 1 / 0); }); }), (t.excludeIncompatibleVariants_ = function (e) { var s = this, o = Kl(e), u = Object.keys(o).length; this.master().playlists.forEach(function (e) { if (e.excludeUntil !== 1 / 0) { var t = {}, i = 2, n = [], r = xc(s.masterPlaylistLoader_.master, e); if (r.audio || r.video) { var a = [r.video, r.audio].filter(Boolean).join(','); (t = Kl(a)), (i = Object.keys(t).length); } i !== u && (n.push('codec count "' + i + '" !== "' + u + '"'), (e.excludeUntil = 1 / 0)), s.sourceUpdater_.canChangeType() || (t.video && o.video && t.video.type.toLowerCase() !== o.video.type.toLowerCase() && (n.push('video codec "' + t.video.type + '" !== "' + o.video.type + '"'), (e.excludeUntil = 1 / 0)), t.audio && o.audio && t.audio.type.toLowerCase() !== o.audio.type.toLowerCase() && ((e.excludeUntil = 1 / 0), n.push('audio codec "' + t.audio.type + '" !== "' + o.audio.type + '"'))), n.length && s.logger_('blacklisting ' + e.id + ': ' + n.join(' && ')); } }); }), (t.updateAdCues_ = function (e) { var t = 0, i = this.seekable(); i.length && (t = i.start(0)), (function (e, t, i) { if ((void 0 === i && (i = 0), e.segments)) for (var n, r = i, a = 0; a < e.segments.length; a++) { var s = e.segments[a]; if ((n = n || Zc(t, r + s.duration / 2))) { if ('cueIn' in s) { (n.endTime = r), (n.adEndTime = r), (r += s.duration), (n = null); continue; } if (r < n.endTime) { r += s.duration; continue; } n.endTime += s.duration; } else if ( ('cueOut' in s && (((n = new T.VTTCue(r, r + s.duration, s.cueOut)).adStartTime = r), (n.adEndTime = r + parseFloat(s.cueOut)), t.addCue(n)), 'cueOutCont' in s) ) { var o = s.cueOutCont.split('/').map(parseFloat), u = o[0], l = o[1]; ((n = new T.VTTCue(r, r + s.duration, '')).adStartTime = r - u), (n.adEndTime = n.adStartTime + l), t.addCue(n); } r += s.duration; } })(e, this.cueTagsTrack_, t); }), (t.goalBufferLength = function () { var e = this.tech_.currentTime(), t = uc.GOAL_BUFFER_LENGTH, i = uc.GOAL_BUFFER_LENGTH_RATE, n = Math.max(t, uc.MAX_GOAL_BUFFER_LENGTH); return Math.min(t + e * i, n); }), (t.bufferLowWaterLine = function () { var e = this.tech_.currentTime(), t = uc.BUFFER_LOW_WATER_LINE, i = uc.BUFFER_LOW_WATER_LINE_RATE, n = Math.max(t, uc.MAX_BUFFER_LOW_WATER_LINE); return Math.min(t + e * i, n); }), e ); })(da.EventTarget), Pd = ['seeking', 'seeked', 'pause', 'playing', 'error'], Ld = (function () { function e(e) { var t = this; (this.masterPlaylistController_ = e.masterPlaylistController), (this.tech_ = e.tech), (this.seekable = e.seekable), (this.allowSeeksWithinUnsafeLiveWindow = e.allowSeeksWithinUnsafeLiveWindow), (this.media = e.media), (this.consecutiveUpdates = 0), (this.lastRecordedTime = null), (this.timer_ = null), (this.checkCurrentTimeTimeout_ = null), (this.logger_ = Pc('PlaybackWatcher')), this.logger_('initialize'); function i() { return t.monitorCurrentTime_(); } function n() { return t.techWaiting_(); } function r() { return t.cancelTimer_(); } function a() { return t.fixesBadSeeks_(); } var s = this.masterPlaylistController_, o = ['main', 'subtitle', 'audio'], u = {}; o.forEach(function (e) { (u[e] = { reset: function () { return t.resetSegmentDownloads_(e); }, updateend: function () { return t.checkSegmentDownloads_(e); } }), s[e + 'SegmentLoader_'].on('appendsdone', u[e].updateend), s[e + 'SegmentLoader_'].on('playlistupdate', u[e].reset), t.tech_.on(['seeked', 'seeking'], u[e].reset); }), this.tech_.on('seekablechanged', a), this.tech_.on('waiting', n), this.tech_.on(Pd, r), this.tech_.on('canplay', i), (this.dispose = function () { t.logger_('dispose'), t.tech_.off('seekablechanged', a), t.tech_.off('waiting', n), t.tech_.off(Pd, r), t.tech_.off('canplay', i), o.forEach(function (e) { s[e + 'SegmentLoader_'].off('appendsdone', u[e].updateend), s[e + 'SegmentLoader_'].off('playlistupdate', u[e].reset), t.tech_.off(['seeked', 'seeking'], u[e].reset); }), t.checkCurrentTimeTimeout_ && T.clearTimeout(t.checkCurrentTimeTimeout_), t.cancelTimer_(); }); } var t = e.prototype; return ( (t.monitorCurrentTime_ = function () { this.checkCurrentTime_(), this.checkCurrentTimeTimeout_ && T.clearTimeout(this.checkCurrentTimeTimeout_), (this.checkCurrentTimeTimeout_ = T.setTimeout( this.monitorCurrentTime_.bind(this), 250 )); }), (t.resetSegmentDownloads_ = function (e) { var t = this.masterPlaylistController_[e + 'SegmentLoader_']; 0 < this[e + 'StalledDownloads_'] && this.logger_('resetting possible stalled download count for ' + e + ' loader'), (this[e + 'StalledDownloads_'] = 0), (this[e + 'Buffered_'] = t.buffered_()); }), (t.checkSegmentDownloads_ = function (e) { var t = this.masterPlaylistController_, i = t[e + 'SegmentLoader_'], n = i.buffered_(), r = (function (e, t) { if (e === t) return !1; if ((!e && t) || (!t && e)) return !0; if (e.length !== t.length) return !0; for (var i = 0; i < e.length; i++) if (e.start(i) !== t.start(i) || e.end(i) !== t.end(i)) return !0; return !1; })(this[e + 'Buffered_'], n); (this[e + 'Buffered_'] = n), r ? this.resetSegmentDownloads_(e) : (this[e + 'StalledDownloads_']++, this.logger_( 'found #' + this[e + 'StalledDownloads_'] + ' ' + e + ' appends that did not increase buffer (possible stalled download)', { playlistId: i.playlist_ && i.playlist_.id, buffered: Zu(n) } ), this[e + 'StalledDownloads_'] < 10 || (this.logger_(e + ' loader stalled download exclusion'), this.resetSegmentDownloads_(e), this.tech_.trigger({ type: 'usage', name: 'vhs-' + e + '-download-exclusion' }), 'subtitle' !== e && t.blacklistCurrentPlaylist( { message: 'Excessive ' + e + ' segment downloading detected.' }, 1 / 0 ))); }), (t.checkCurrentTime_ = function () { if (this.tech_.seeking() && this.fixesBadSeeks_()) return ( (this.consecutiveUpdates = 0), void (this.lastRecordedTime = this.tech_.currentTime()) ); if (!this.tech_.paused() && !this.tech_.seeking()) { var e = this.tech_.currentTime(), t = this.tech_.buffered(); if (this.lastRecordedTime === e && (!t.length || e + 0.1 >= t.end(t.length - 1))) return this.techWaiting_(); 5 <= this.consecutiveUpdates && e === this.lastRecordedTime ? (this.consecutiveUpdates++, this.waiting_()) : e === this.lastRecordedTime ? this.consecutiveUpdates++ : ((this.consecutiveUpdates = 0), (this.lastRecordedTime = e)); } }), (t.cancelTimer_ = function () { (this.consecutiveUpdates = 0), this.timer_ && (this.logger_('cancelTimer_'), clearTimeout(this.timer_)), (this.timer_ = null); }), (t.fixesBadSeeks_ = function () { if (!this.tech_.seeking()) return !1; var e, t = this.seekable(), i = this.tech_.currentTime(); this.afterSeekableWindow_(t, i, this.media(), this.allowSeeksWithinUnsafeLiveWindow) && (e = t.end(t.length - 1)); if (this.beforeSeekableWindow_(t, i)) { var n = t.start(0); e = n + (n === t.end(0) ? 0 : 0.1); } if ('undefined' != typeof e) return ( this.logger_( 'Trying to seek outside of seekable at time ' + i + ' with seekable range ' + Ju(t) + '. Seeking to ' + e + '.' ), this.tech_.setCurrentTime(e), !0 ); var r = this.tech_.buffered(); return ( !!(function (e) { var t = e.buffered, i = e.targetDuration, n = e.currentTime; return ( !!t.length && !(t.end(0) - t.start(0) < 2 * i) && !(n > t.start(0)) && t.start(0) - n < i ); })({ buffered: r, targetDuration: this.media().targetDuration, currentTime: i }) && ((e = r.start(0) + 0.1), this.logger_( 'Buffered region starts (' + r.start(0) + ') just beyond seek point (' + i + '). Seeking to ' + e + '.' ), this.tech_.setCurrentTime(e), !0) ); }), (t.waiting_ = function () { if (!this.techWaiting_()) { var e = this.tech_.currentTime(), t = this.tech_.buffered(), i = $u(t, e); return i.length && e + 3 <= i.end(0) ? (this.cancelTimer_(), this.tech_.setCurrentTime(e), this.logger_( 'Stopped at ' + e + ' while inside a buffered region [' + i.start(0) + ' -> ' + i.end(0) + ']. Attempting to resume playback by seeking to the current time.' ), this.tech_.trigger({ type: 'usage', name: 'vhs-unknown-waiting' }), void this.tech_.trigger({ type: 'usage', name: 'hls-unknown-waiting' })) : void 0; } }), (t.techWaiting_ = function () { var e = this.seekable(), t = this.tech_.currentTime(); if (this.tech_.seeking() && this.fixesBadSeeks_()) return !0; if (this.tech_.seeking() || null !== this.timer_) return !0; if (this.beforeSeekableWindow_(e, t)) { var i = e.end(e.length - 1); return ( this.logger_( 'Fell out of live window at time ' + t + '. Seeking to live point (seekable end) ' + i ), this.cancelTimer_(), this.tech_.setCurrentTime(i), this.tech_.trigger({ type: 'usage', name: 'vhs-live-resync' }), this.tech_.trigger({ type: 'usage', name: 'hls-live-resync' }), !0 ); } var n = this.tech_.vhs.masterPlaylistController_.sourceUpdater_, r = this.tech_.buffered(); if ( this.videoUnderflow_({ audioBuffered: n.audioBuffered(), videoBuffered: n.videoBuffered(), currentTime: t }) ) return ( this.cancelTimer_(), this.tech_.setCurrentTime(t), this.tech_.trigger({ type: 'usage', name: 'vhs-video-underflow' }), this.tech_.trigger({ type: 'usage', name: 'hls-video-underflow' }), !0 ); var a = Qu(r, t); if (0 < a.length) { var s = a.start(0) - t; return ( this.logger_( 'Stopped at ' + t + ', setting timer for ' + s + ', seeking to ' + a.start(0) ), this.cancelTimer_(), (this.timer_ = setTimeout(this.skipTheGap_.bind(this), 1e3 * s, t)), !0 ); } return !1; }), (t.afterSeekableWindow_ = function (e, t, i, n) { if ((void 0 === n && (n = !1), !e.length)) return !1; var r = e.end(e.length - 1) + 0.1; return !i.endList && n && (r = e.end(e.length - 1) + 3 * i.targetDuration), r < t; }), (t.beforeSeekableWindow_ = function (e, t) { return !!(e.length && 0 < e.start(0) && t < e.start(0) - 0.1); }), (t.videoUnderflow_ = function (e) { var t = e.videoBuffered, i = e.audioBuffered, n = e.currentTime; if (t) { var r; if (t.length && i.length) { var a = $u(t, n - 3), s = $u(t, n), o = $u(i, n); o.length && !s.length && a.length && (r = { start: a.end(0), end: o.end(0) }); } else { Qu(t, n).length || (r = this.gapFromVideoUnderflow_(t, n)); } return ( !!r && (this.logger_( 'Encountered a gap in video from ' + r.start + ' to ' + r.end + '. Seeking to current time ' + n ), !0) ); } }), (t.skipTheGap_ = function (e) { var t = this.tech_.buffered(), i = this.tech_.currentTime(), n = Qu(t, i); this.cancelTimer_(), 0 !== n.length && i === e && (this.logger_( 'skipTheGap_:', 'currentTime:', i, 'scheduled currentTime:', e, 'nextRange start:', n.start(0) ), this.tech_.setCurrentTime(n.start(0) + ec), this.tech_.trigger({ type: 'usage', name: 'vhs-gap-skip' }), this.tech_.trigger({ type: 'usage', name: 'hls-gap-skip' })); }), (t.gapFromVideoUnderflow_ = function (e, t) { for ( var i = (function (e) { if (e.length < 2) return da.createTimeRanges(); for (var t = [], i = 1; i < e.length; i++) { var n = e.end(i - 1), r = e.start(i); t.push([n, r]); } return da.createTimeRanges(t); })(e), n = 0; n < i.length; n++ ) { var r = i.start(n), a = i.end(n); if (t - r < 4 && 2 < t - r) return { start: r, end: a }; } return null; }), e ); })(), Od = { errorInterval: 30, getSource: function (e) { return e( this.tech({ IWillNotUseThisInPlugins: !0 }).currentSource_ || this.currentSource() ); } }, Dd = { PlaylistLoader: Zl, Playlist: ic, utils: ac, STANDARD_PLAYLIST_SELECTOR: function () { var e = (this.useDevicePixelRatio && T.devicePixelRatio) || 1; return (function (e, t, i, n, r) { var a = { bandwidth: t, width: i, height: n, limitRenditionByPlayerDimensions: r }, s = e.playlists.map(function (e) { var t = e.attributes.RESOLUTION && e.attributes.RESOLUTION.width, i = e.attributes.RESOLUTION && e.attributes.RESOLUTION.height; return { bandwidth: e.attributes.BANDWIDTH || T.Number.MAX_VALUE, width: t, height: i, playlist: e }; }); Dc(s, function (e, t) { return e.bandwidth - t.bandwidth; }); var o = (s = s.filter(function (e) { return !ic.isIncompatible(e.playlist); })).filter(function (e) { return ic.isEnabled(e.playlist); }); o.length || (o = s.filter(function (e) { return !ic.isDisabled(e.playlist); })); var u = o.filter(function (e) { return e.bandwidth * uc.BANDWIDTH_VARIANCE < t; }), l = u[u.length - 1], c = u.filter(function (e) { return e.bandwidth === l.bandwidth; })[0]; if (!1 === r) { var d = c || o[0] || s[0]; if (d && d.playlist) { var h = 'sortedPlaylistReps'; return ( c && (h = 'bandwidthBestRep'), o[0] && (h = 'enabledPlaylistReps'), qc('choosing ' + Lc(d) + ' using ' + h + ' with options', a), d.playlist ); } return qc('could not choose a playlist with options', a), null; } var p = u.filter(function (e) { return e.width && e.height; }); Dc(p, function (e, t) { return e.width - t.width; }); var f = p.filter(function (e) { return e.width === i && e.height === n; }); l = f[f.length - 1]; var m, g, v, y = f.filter(function (e) { return e.bandwidth === l.bandwidth; })[0]; y || ((g = (m = p.filter(function (e) { return e.width > i || e.height > n; })).filter(function (e) { return e.width === m[0].width && e.height === m[0].height; })), (l = g[g.length - 1]), (v = g.filter(function (e) { return e.bandwidth === l.bandwidth; })[0])); var _ = v || y || c || o[0] || s[0]; if (_ && _.playlist) { var b = 'sortedPlaylistReps'; return ( v ? (b = 'resolutionPlusOneRep') : y ? (b = 'resolutionBestRep') : c ? (b = 'bandwidthBestRep') : o[0] && (b = 'enabledPlaylistReps'), qc('choosing ' + Lc(_) + ' using ' + b + ' with options', a), _.playlist ); } return qc('could not choose a playlist with options', a), null; })( this.playlists.master, this.systemBandwidth, parseInt(Oc(this.tech_.el(), 'width'), 10) * e, parseInt(Oc(this.tech_.el(), 'height'), 10) * e, this.limitRenditionByPlayerDimensions ); }, INITIAL_PLAYLIST_SELECTOR: function () { var t = this, e = this.playlists.master.playlists.filter(ic.isEnabled); return ( Dc(e, function (e, t) { return Mc(e, t); }), e.filter(function (e) { return !!xc(t.playlists.master, e).video; })[0] || null ); }, comparePlaylistBandwidth: Mc, comparePlaylistResolution: function (e, t) { var i, n; return ( e.attributes.RESOLUTION && e.attributes.RESOLUTION.width && (i = e.attributes.RESOLUTION.width), (i = i || T.Number.MAX_VALUE), t.attributes.RESOLUTION && t.attributes.RESOLUTION.width && (n = t.attributes.RESOLUTION.width), i === (n = n || T.Number.MAX_VALUE) && e.attributes.BANDWIDTH && t.attributes.BANDWIDTH ? e.attributes.BANDWIDTH - t.attributes.BANDWIDTH : i - n ); }, xhr: dl() }; [ 'GOAL_BUFFER_LENGTH', 'MAX_GOAL_BUFFER_LENGTH', 'BACK_BUFFER_LENGTH', 'GOAL_BUFFER_LENGTH_RATE', 'BUFFER_LOW_WATER_LINE', 'MAX_BUFFER_LOW_WATER_LINE', 'BUFFER_LOW_WATER_LINE_RATE', 'BANDWIDTH_VARIANCE' ].forEach(function (t) { Object.defineProperty(Dd, t, { get: function () { return ( da.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'), uc[t] ); }, set: function (e) { da.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'), 'number' != typeof e || e < 0 ? da.log.warn('value of Vhs.' + t + ' must be greater than or equal to 0') : (uc[t] = e); } }); }); function Md(e, t) { for (var i = t.media(), n = -1, r = 0; r < e.length; r++) if (e[r].id === i.id) { n = r; break; } (e.selectedIndex_ = n), e.trigger({ selectedIndex: n, type: 'change' }); } var Rd = 'videojs-vhs'; Dd.canPlaySource = function () { return da.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder."); }; function Nd(e) { var t = e.player, i = e.sourceKeySystems, n = e.media, r = e.audioMedia, a = e.mainPlaylists, s = (function (e, t, i) { if (!e) return e; var n = { video: t && t.attributes && t.attributes.CODECS, audio: i && i.attributes && i.attributes.CODECS }; !n.audio && n.video && 1 < n.video.split(',').length && n.video.split(',').forEach(function (e) { (e = e.trim()), zl(e) ? (n.audio = e) : Gl(e) && (n.video = e); }); var r = n.video ? 'video/mp4;codecs="' + n.video + '"' : null, a = n.audio ? 'audio/mp4;codecs="' + n.audio + '"' : null, s = {}; for (var o in e) (s[o] = { audioContentType: a, videoContentType: r }), t.contentProtection && t.contentProtection[o] && t.contentProtection[o].pssh && (s[o].pssh = t.contentProtection[o].pssh), 'string' == typeof e[o] && (s[o].url = e[o]); return da.mergeOptions(e, s); })(i, n, r); s && (!(t.currentSource().keySystems = s) || t.eme ? 11 !== da.browser.IE_VERSION && t.eme.initializeMediaKeys && (function (e, i) { return e.reduce(function (e, n) { if (!n.contentProtection) return e; var t = i.reduce(function (e, t) { var i = n.contentProtection[t]; return i && i.pssh && (e[t] = { pssh: i.pssh }), e; }, {}); return Object.keys(t).length && e.push(t), e; }, []); })(r ? a.concat([r]) : a, Object.keys(i)).forEach(function (e) { t.eme.initializeMediaKeys({ keySystems: e }); }) : da.log.warn('DRM encrypted source cannot be decrypted without a DRM plugin')); } function Ud() { if (!T.localStorage) return null; var e = T.localStorage.getItem(Rd); if (!e) return null; try { return JSON.parse(e); } catch (e) { return null; } } (Dd.supportsNativeHls = (function () { if (!d || !d.createElement) return !1; var t = d.createElement('video'); if (!da.getTech('Html5').isSupported()) return !1; return [ 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/x-mpegurl', 'application/x-mpegurl', 'video/x-mpegurl', 'video/mpegurl', 'application/mpegurl' ].some(function (e) { return /maybe|probably/i.test(t.canPlayType(e)); }); })()), (Dd.supportsNativeDash = !!(d && d.createElement && da.getTech('Html5').isSupported()) && /maybe|probably/i.test(d.createElement('video').canPlayType('application/dash+xml'))), (Dd.supportsTypeNatively = function (e) { return 'hls' === e ? Dd.supportsNativeHls : 'dash' === e && Dd.supportsNativeDash; }), (Dd.isSupported = function () { return da.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder."); }); var Fd = (function (a) { function e(e, t, i) { var n; if ( ((n = a.call(this, t, da.mergeOptions(i.hls, i.vhs)) || this), i.hls && Object.keys(i.hls).length && da.log.warn('Using hls options is deprecated. Use vhs instead.'), t.options_ && t.options_.playerId) ) { var r = da(t.options_.playerId); r.hasOwnProperty('hls') || Object.defineProperty(r, 'hls', { get: function () { return ( da.log.warn('player.hls is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'hls-player-access' }), Ve(n) ); }, configurable: !0 }), r.hasOwnProperty('vhs') || Object.defineProperty(r, 'vhs', { get: function () { return ( da.log.warn('player.vhs is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'vhs-player-access' }), Ve(n) ); }, configurable: !0 }), r.hasOwnProperty('dash') || Object.defineProperty(r, 'dash', { get: function () { return ( da.log.warn('player.dash is deprecated. Use player.tech().vhs instead.'), Ve(n) ); }, configurable: !0 }), (n.player_ = r); } if ( ((n.tech_ = t), (n.source_ = e), (n.stats = {}), (n.ignoreNextSeekingEvent_ = !1), n.setOptions_(), n.options_.overrideNative && t.overrideNativeAudioTracks && t.overrideNativeVideoTracks) ) t.overrideNativeAudioTracks(!0), t.overrideNativeVideoTracks(!0); else if ( n.options_.overrideNative && (t.featuresNativeVideoTracks || t.featuresNativeAudioTracks) ) throw new Error( 'Overriding native HLS requires emulated tracks. See https://git.io/vMpjB' ); return ( n.on( d, [ 'fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange' ], function (e) { var t = d.fullscreenElement || d.webkitFullscreenElement || d.mozFullScreenElement || d.msFullscreenElement; t && t.contains(n.tech_.el()) && n.masterPlaylistController_.smoothQualityChange_(); } ), n.on(n.tech_, 'seeking', function () { this.ignoreNextSeekingEvent_ ? (this.ignoreNextSeekingEvent_ = !1) : this.setCurrentTime(this.tech_.currentTime()); }), n.on(n.tech_, 'error', function () { this.tech_.error() && this.masterPlaylistController_ && this.masterPlaylistController_.pauseLoading(); }), n.on(n.tech_, 'play', n.play), n ); } Ge(e, a); var t = e.prototype; return ( (t.setOptions_ = function () { var t = this; if ( ((this.options_.withCredentials = this.options_.withCredentials || !1), (this.options_.handleManifestRedirects = !1 !== this.options_.handleManifestRedirects), (this.options_.limitRenditionByPlayerDimensions = !1 !== this.options_.limitRenditionByPlayerDimensions), (this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || !1), (this.options_.smoothQualityChange = this.options_.smoothQualityChange || !1), (this.options_.useBandwidthFromLocalStorage = 'undefined' != typeof this.source_.useBandwidthFromLocalStorage ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || !1), (this.options_.customTagParsers = this.options_.customTagParsers || []), (this.options_.customTagMappers = this.options_.customTagMappers || []), (this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || !1), (this.options_.handlePartialData = this.options_.handlePartialData || !1), 'number' != typeof this.options_.blacklistDuration && (this.options_.blacklistDuration = 300), 'number' != typeof this.options_.bandwidth && this.options_.useBandwidthFromLocalStorage) ) { var e = Ud(); e && e.bandwidth && ((this.options_.bandwidth = e.bandwidth), this.tech_.trigger({ type: 'usage', name: 'vhs-bandwidth-from-local-storage' }), this.tech_.trigger({ type: 'usage', name: 'hls-bandwidth-from-local-storage' })), e && e.throughput && ((this.options_.throughput = e.throughput), this.tech_.trigger({ type: 'usage', name: 'vhs-throughput-from-local-storage' }), this.tech_.trigger({ type: 'usage', name: 'hls-throughput-from-local-storage' })); } 'number' != typeof this.options_.bandwidth && (this.options_.bandwidth = uc.INITIAL_BANDWIDTH), (this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === uc.INITIAL_BANDWIDTH), [ 'withCredentials', 'useDevicePixelRatio', 'limitRenditionByPlayerDimensions', 'bandwidth', 'smoothQualityChange', 'customTagParsers', 'customTagMappers', 'handleManifestRedirects', 'cacheEncryptionKeys', 'handlePartialData' ].forEach(function (e) { 'undefined' != typeof t.source_[e] && (t.options_[e] = t.source_[e]); }), (this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions), (this.useDevicePixelRatio = this.options_.useDevicePixelRatio); }), (t.src = function (e, t) { var i = this; e && (this.setOptions_(), (this.options_.src = (function (e) { return 0 === e.toLowerCase().indexOf('data:application/vnd.videojs.vhs+json,') ? JSON.parse(e.substring(e.indexOf(',') + 1)) : e; })(this.source_.src)), (this.options_.tech = this.tech_), (this.options_.externVhs = Dd), (this.options_.sourceType = Ia(t)), (this.options_.seekTo = function (e) { i.tech_.setCurrentTime(e); }), (this.masterPlaylistController_ = new xd(this.options_)), (this.playbackWatcher_ = new Ld( da.mergeOptions(this.options_, { seekable: function () { return i.seekable(); }, media: function () { return i.masterPlaylistController_.media(); }, masterPlaylistController: this.masterPlaylistController_ }) )), this.masterPlaylistController_.on('error', function () { var e = da.players[i.tech_.options_.playerId], t = i.masterPlaylistController_.error; 'object' != typeof t || t.code ? 'string' == typeof t && (t = { message: t, code: 3 }) : (t.code = 3), e.error(t); }), (this.masterPlaylistController_.selectPlaylist = this.selectPlaylist ? this.selectPlaylist.bind(this) : Dd.STANDARD_PLAYLIST_SELECTOR.bind(this)), (this.masterPlaylistController_.selectInitialPlaylist = Dd.INITIAL_PLAYLIST_SELECTOR.bind(this)), (this.playlists = this.masterPlaylistController_.masterPlaylistLoader_), (this.mediaSource = this.masterPlaylistController_.mediaSource), Object.defineProperties(this, { selectPlaylist: { get: function () { return this.masterPlaylistController_.selectPlaylist; }, set: function (e) { this.masterPlaylistController_.selectPlaylist = e.bind(this); } }, throughput: { get: function () { return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate; }, set: function (e) { (this.masterPlaylistController_.mainSegmentLoader_.throughput.rate = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput.count = 1); } }, bandwidth: { get: function () { return this.masterPlaylistController_.mainSegmentLoader_.bandwidth; }, set: function (e) { (this.masterPlaylistController_.mainSegmentLoader_.bandwidth = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput = { rate: 0, count: 0 }); } }, systemBandwidth: { get: function () { var e, t = 1 / (this.bandwidth || 1); return ( (e = 0 < this.throughput ? 1 / this.throughput : 0), Math.floor(1 / (t + e)) ); }, set: function () { da.log.error('The "systemBandwidth" property is read-only'); } } }), this.options_.bandwidth && (this.bandwidth = this.options_.bandwidth), this.options_.throughput && (this.throughput = this.options_.throughput), Object.defineProperties(this.stats, { bandwidth: { get: function () { return i.bandwidth || 0; }, enumerable: !0 }, mediaRequests: { get: function () { return i.masterPlaylistController_.mediaRequests_() || 0; }, enumerable: !0 }, mediaRequestsAborted: { get: function () { return i.masterPlaylistController_.mediaRequestsAborted_() || 0; }, enumerable: !0 }, mediaRequestsTimedout: { get: function () { return i.masterPlaylistController_.mediaRequestsTimedout_() || 0; }, enumerable: !0 }, mediaRequestsErrored: { get: function () { return i.masterPlaylistController_.mediaRequestsErrored_() || 0; }, enumerable: !0 }, mediaTransferDuration: { get: function () { return i.masterPlaylistController_.mediaTransferDuration_() || 0; }, enumerable: !0 }, mediaBytesTransferred: { get: function () { return i.masterPlaylistController_.mediaBytesTransferred_() || 0; }, enumerable: !0 }, mediaSecondsLoaded: { get: function () { return i.masterPlaylistController_.mediaSecondsLoaded_() || 0; }, enumerable: !0 }, buffered: { get: function () { return Zu(i.tech_.buffered()); }, enumerable: !0 }, currentTime: { get: function () { return i.tech_.currentTime(); }, enumerable: !0 }, currentSource: { get: function () { return i.tech_.currentSource_; }, enumerable: !0 }, currentTech: { get: function () { return i.tech_.name_; }, enumerable: !0 }, duration: { get: function () { return i.tech_.duration(); }, enumerable: !0 }, master: { get: function () { return i.playlists.master; }, enumerable: !0 }, playerDimensions: { get: function () { return i.tech_.currentDimensions(); }, enumerable: !0 }, seekable: { get: function () { return Zu(i.tech_.seekable()); }, enumerable: !0 }, timestamp: { get: function () { return Date.now(); }, enumerable: !0 }, videoPlaybackQuality: { get: function () { return i.tech_.getVideoPlaybackQuality(); }, enumerable: !0 } }), this.tech_.one( 'canplay', this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_) ), this.tech_.on('bandwidthupdate', function () { i.options_.useBandwidthFromLocalStorage && (function (e) { if (!T.localStorage) return; var t = Ud(); t = t ? da.mergeOptions(t, e) : e; try { T.localStorage.setItem(Rd, JSON.stringify(t)); } catch (e) { return; } })({ bandwidth: i.bandwidth, throughput: Math.round(i.throughput) }); }), this.masterPlaylistController_.on('selectedinitialmedia', function () { !(function (i) { var e = i.playlists; i.representations = function () { return e && e.master && e.master.playlists ? e.master.playlists .filter(function (e) { return !sl(e); }) .map(function (e, t) { return new nd(i, e, e.id); }) : []; }; })(i); }), this.masterPlaylistController_.sourceUpdater_.on('ready', function () { var e = i.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader; Nd({ player: i.player_, sourceKeySystems: i.source_.keySystems, media: i.playlists.media(), audioMedia: e && e.media(), mainPlaylists: i.playlists.master.playlists }); }), this.on(this.masterPlaylistController_, 'progress', function () { this.tech_.trigger('progress'); }), this.on(this.masterPlaylistController_, 'firstplay', function () { this.ignoreNextSeekingEvent_ = !0; }), this.setupQualityLevels_(), this.tech_.el() && ((this.mediaSourceUrl_ = T.URL.createObjectURL( this.masterPlaylistController_.mediaSource )), this.tech_.src(this.mediaSourceUrl_))); }), (t.setupQualityLevels_ = function () { var e = this, t = da.players[this.tech_.options_.playerId]; t && t.qualityLevels && !this.qualityLevels_ && ((this.qualityLevels_ = t.qualityLevels()), this.masterPlaylistController_.on('selectedinitialmedia', function () { !(function (t, e) { e.representations().forEach(function (e) { t.addQualityLevel(e); }), Md(t, e.playlists); })(e.qualityLevels_, e); }), this.playlists.on('mediachange', function () { Md(e.qualityLevels_, e.playlists); })); }), (e.version = function () { return { '@videojs/http-streaming': '2.2.4', 'mux.js': '5.6.7', 'mpd-parser': '0.14.0', 'm3u8-parser': '4.5.0', 'aes-decrypter': '3.1.0' }; }), (t.version = function () { return this.constructor.version(); }), (t.canChangeType = function () { return vd.canChangeType(); }), (t.play = function () { this.masterPlaylistController_.play(); }), (t.setCurrentTime = function (e) { this.masterPlaylistController_.setCurrentTime(e); }), (t.duration = function () { return this.masterPlaylistController_.duration(); }), (t.seekable = function () { return this.masterPlaylistController_.seekable(); }), (t.dispose = function () { this.playbackWatcher_ && this.playbackWatcher_.dispose(), this.masterPlaylistController_ && this.masterPlaylistController_.dispose(), this.qualityLevels_ && this.qualityLevels_.dispose(), this.player_ && (delete this.player_.vhs, delete this.player_.dash, delete this.player_.hls), this.tech_ && this.tech_.vhs && delete this.tech_.vhs, this.tech_ && delete this.tech_.hls, this.mediaSourceUrl_ && T.URL.revokeObjectURL && (T.URL.revokeObjectURL(this.mediaSourceUrl_), (this.mediaSourceUrl_ = null)), a.prototype.dispose.call(this); }), (t.convertToProgramTime = function (e, t) { return _l({ playlist: this.masterPlaylistController_.media(), time: e, callback: t }); }), (t.seekToProgramTime = function (e, t, i, n) { return ( void 0 === i && (i = !0), void 0 === n && (n = 2), bl({ programTime: e, playlist: this.masterPlaylistController_.media(), retryCount: n, pauseAfterSeek: i, seekTo: this.options_.seekTo, tech: this.options_.tech, callback: t }) ); }), e ); })(da.getComponent('Component')), Bd = { name: 'videojs-http-streaming', VERSION: '2.2.4', canHandleSource: function (e, t) { void 0 === t && (t = {}); var i = da.mergeOptions(da.options, t); return Bd.canPlayType(e.type, i); }, handleSource: function (e, t, i) { void 0 === i && (i = {}); var n = da.mergeOptions(da.options, i); return ( (t.vhs = new Fd(e, t, n)), da.hasOwnProperty('hls') || Object.defineProperty(t, 'hls', { get: function () { return ( da.log.warn('player.tech().hls is deprecated. Use player.tech().vhs instead.'), t.vhs ); }, configurable: !0 }), (t.vhs.xhr = dl()), t.vhs.src(e.src, e.type), t.vhs ); }, canPlayType: function (e, t) { void 0 === t && (t = {}); var i = da.mergeOptions(da.options, t).vhs.overrideNative, n = void 0 === i ? !da.browser.IS_ANY_SAFARI : i, r = Ia(e); return r && (!Dd.supportsTypeNatively(r) || n) ? 'maybe' : ''; } }; return ( ql('avc1.4d400d,mp4a.40.2') && da.getTech('Html5').registerSourceHandler(Bd, 0), (da.VhsHandler = Fd), Object.defineProperty(da, 'HlsHandler', { get: function () { return da.log.warn('videojs.HlsHandler is deprecated. Use videojs.VhsHandler instead.'), Fd; }, configurable: !0 }), (da.VhsSourceHandler = Bd), Object.defineProperty(da, 'HlsSourceHandler', { get: function () { return ( da.log.warn( 'videojs.HlsSourceHandler is deprecated. Use videojs.VhsSourceHandler instead.' ), Bd ); }, configurable: !0 }), (da.Vhs = Dd), Object.defineProperty(da, 'Hls', { get: function () { return da.log.warn('videojs.Hls is deprecated. Use videojs.Vhs instead.'), Dd; }, configurable: !0 }), da.use || (da.registerComponent('Hls', Dd), da.registerComponent('Vhs', Dd)), (da.options.vhs = da.options.vhs || {}), (da.options.hls = da.options.hls || {}), da.registerPlugin ? da.registerPlugin('reloadSourceOnError', rd) : da.plugin('reloadSourceOnError', rd), da ); });