PageSourceSearch

https://www.xanax.com/-/media/Base-Themes/Core-Libraries/scripts/mediaelement-and-player.js

js xanax.com collected 2026-09-24 22:54:28 UTC 265,104 bytes, 8,510 lines download raw bytes

vendor: 25,613 bytes, lines 1-702
1/*!
2 * MediaElement.js
3 * http://www.mediaelementjs.com/
4 *
5 * Wrapper that mimics native HTML5 MediaElement (audio and video)
6 * using a variety of technologies (pure JavaScript, Flash, iframe)
7 *
8 * Copyright 2010-2017, John Dyer (http://j.hn/)
9 * License: MIT
10 *
11 */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
12
13},{}],2:[function(_dereq_,module,exports){
14(function (global){
15var topLevel = typeof global !== 'undefined' ? global :
16    typeof window !== 'undefined' ? window : {}
17var minDoc = _dereq_(1);
18
19var doccy;
20
21if (typeof document !== 'undefined') {
22    doccy = document;
23} else {
24    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
25
26    if (!doccy) {
27        doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
28    }
29}
30
31module.exports = doccy;
32
33}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
34},{"1":1}],3:[function(_dereq_,module,exports){
35(function (global){
36var win;
37
38if (typeof window !== "undefined") {
39    win = window;
40} else if (typeof global !== "undefined") {
41    win = global;
42} else if (typeof self !== "undefined"){
43    win = self;
44} else {
45    win = {};
46}
47
48module.exports = win;
49
50}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
51},{}],4:[function(_dereq_,module,exports){
52(function (root) {
53
54  // Store setTimeout reference so promise-polyfill will be unaffected by
55  // other code modifying setTimeout (like sinon.useFakeTimers())
56  var setTimeoutFunc = setTimeout;
57
58  function noop() {}
59  
60  // Polyfill for Function.prototype.bind
61  function bind(fn, thisArg) {
62    return function () {
63      fn.apply(thisArg, arguments);
64    };
65  }
66
67  function Promise(fn) {
68    if (typeof this !== 'object') throw new TypeError('Promises must be constructed via new');
69    if (typeof fn !== 'function') throw new TypeError('not a function');
70    this._state = 0;
71    this._handled = false;
72    this._value = undefined;
73    this._deferreds = [];
74
75    doResolve(fn, this);
76  }
77
78  function handle(self, deferred) {
79    while (self._state === 3) {
80      self = self._value;
81    }
82    if (self._state === 0) {
83      self._deferreds.push(deferred);
84      return;
85    }
86    self._handled = true;
87    Promise._immediateFn(function () {
88      var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;
89      if (cb === null) {
90        (self._state === 1 ? resolve : reject)(deferred.promise, self._value);
91        return;
92      }
93      var ret;
94      try {
95        ret = cb(self._value);
96      } catch (e) {
97        reject(deferred.promise, e);
98        return;
99      }
100      resolve(deferred.promise, ret);
101    });
102  }
103
104  function resolve(self, newValue) {
105    try {
106      // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure
107      if (newValue === self) throw new TypeError('A promise cannot be resolved with itself.');
108      if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
109        var then = newValue.then;
110        if (newValue instanceof Promise) {
111          self._state = 3;
112          self._value = newValue;
113          finale(self);
114          return;
115        } else if (typeof then === 'function') {
116          doResolve(bind(then, newValue), self);
117          return;
118        }
119      }
120      self._state = 1;
121      self._value = newValue;
122      finale(self);
123    } catch (e) {
124      reject(self, e);
125    }
126  }
127
128  function reject(self, newValue) {
129    self._state = 2;
130    self._value = newValue;
131    finale(self);
132  }
133
134  function finale(self) {
135    if (self._state === 2 && self._deferreds.length === 0) {
136      Promise._immediateFn(function() {
137        if (!self._handled) {
138          Promise._unhandledRejectionFn(self._value);
139        }
140      });
141    }
142
143    for (var i = 0, len = self._deferreds.length; i < len; i++) {
144      handle(self, self._deferreds[i]);
145    }
146    self._deferreds = null;
147  }
148
149  function Handler(onFulfilled, onRejected, promise) {
150    this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
151    this.onRejected = typeof onRejected === 'function' ? onRejected : null;
152    this.promise = promise;
153  }
154
155  /**
156   * Take a potentially misbehaving resolver function and make sure
157   * onFulfilled and onRejected are only called once.
158   *
159   * Makes no guarantees about asynchrony.
160   */
161  function doResolve(fn, self) {
162    var done = false;
163    try {
164      fn(function (value) {
165        if (done) return;
166        done = true;
167        resolve(self, value);
168      }, function (reason) {
169        if (done) return;
170        done = true;
171        reject(self, reason);
172      });
173    } catch (ex) {
174      if (done) return;
175      done = true;
176      reject(self, ex);
177    }
178  }
179
180  Promise.prototype['catch'] = function (onRejected) {
181    return this.then(null, onRejected);
182  };
183
184  Promise.prototype.then = function (onFulfilled, onRejected) {
185    var prom = new (this.constructor)(noop);
186
187    handle(this, new Handler(onFulfilled, onRejected, prom));
188    return prom;
189  };
190
191  Promise.all = function (arr) {
192    var args = Array.prototype.slice.call(arr);
193
194    return new Promise(function (resolve, reject) {
195      if (args.length === 0) return resolve([]);
196      var remaining = args.length;
197
198      function res(i, val) {
199        try {
200          if (val && (typeof val === 'object' || typeof val === 'function')) {
201            var then = val.then;
202            if (typeof then === 'function') {
203              then.call(val, function (val) {
204                res(i, val);
205              }, reject);
206              return;
207            }
208          }
209          args[i] = val;
210          if (--remaining === 0) {
211            resolve(args);
212          }
213        } catch (ex) {
214          reject(ex);
215        }
216      }
217
218      for (var i = 0; i < args.length; i++) {
219        res(i, args[i]);
220      }
221    });
222  };
223
224  Promise.resolve = function (value) {
225    if (value && typeof value === 'object' && value.constructor === Promise) {
226      return value;
227    }
228
229    return new Promise(function (resolve) {
230      resolve(value);
231    });
232  };
233
234  Promise.reject = function (value) {
235    return new Promise(function (resolve, reject) {
236      reject(value);
237    });
238  };
239
240  Promise.race = function (values) {
241    return new Promise(function (resolve, reject) {
242      for (var i = 0, len = values.length; i < len; i++) {
243        values[i].then(resolve, reject);
244      }
245    });
246  };
247
248  // Use polyfill for setImmediate for performance gains
249  Promise._immediateFn = (typeof setImmediate === 'function' && function (fn) { setImmediate(fn); }) ||
250    function (fn) {
251      setTimeoutFunc(fn, 0);
252    };
253
254  Promise._unhandledRejectionFn = function _unhandledRejectionFn(err) {
255    if (typeof console !== 'undefined' && console) {
256      console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console
257    }
258  };
259
260  /**
261   * Set the immediate function to execute callbacks
262   * @param fn {function} Function to execute
263   * @deprecated
264   */
265  Promise._setImmediateFn = function _setImmediateFn(fn) {
266    Promise._immediateFn = fn;
267  };
268
269  /**
270   * Change the function to execute on unhandled rejection
271   * @param {function} fn Function to execute on unhandled rejection
272   * @deprecated
273   */
274  Promise._setUnhandledRejectionFn = function _setUnhandledRejectionFn(fn) {
275    Promise._unhandledRejectionFn = fn;
276  };
277  
278  if (typeof module !== 'undefined' && module.exports) {
279    module.exports = Promise;
280  } else if (!root.Promise) {
281    root.Promise = Promise;
282  }
283
284})(this);
285
286},{}],5:[function(_dereq_,module,exports){
287'use strict';
288
289Object.defineProperty(exports, "__esModule", {
290	value: true
291});
292
293var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
294
295var _mejs = _dereq_(7);
296
297var _mejs2 = _interopRequireDefault(_mejs);
298
299var _en = _dereq_(15);
300
301var _general = _dereq_(27);
302
303function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
304
305var i18n = { lang: 'en', en: _en.EN };
306
307i18n.language = function () {
308	for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
309		args[_key] = arguments[_key];
310	}
311
312	if (args !== null && args !== undefined && args.length) {
313
314		if (typeof args[0] !== 'string') {
315			throw new TypeError('Language code must be a string value');
316		}
317
318		if (!/^[a-z]{2,3}((\-|_)[a-z]{2})?$/i.test(args[0])) {
319			throw new TypeError('Language code must have format 2-3 letters and. optionally, hyphen, underscore followed by 2 more letters');
320		}
321
322		i18n.lang = args[0];
323
324		if (i18n[args[0]] === undefined) {
325			args[1] = args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object' ? args[1] : {};
326			i18n[args[0]] = !(0, _general.isObjectEmpty)(args[1]) ? args[1] : _en.EN;
327		} else if (args[1] !== null && args[1] !== undefined && _typeof(args[1]) === 'object') {
328			i18n[args[0]] = args[1];
329		}
330	}
331
332	return i18n.lang;
333};
334
335i18n.t = function (message) {
336	var pluralParam = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
337
338
339	if (typeof message === 'string' && message.length) {
340
341		var str = void 0,
342		    pluralForm = void 0;
343
344		var language = i18n.language();
345
346		var _plural = function _plural(input, number, form) {
347
348			if ((typeof input === 'undefined' ? 'undefined' : _typeof(input)) !== 'object' || typeof number !== 'number' || typeof form !== 'number') {
349				return input;
350			}
351
352			var _pluralForms = function () {
353				return [function () {
354					return arguments.length <= 1 ? undefined : arguments[1];
355				}, function () {
356					return (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
357				}, function () {
358					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
359				}, function () {
360					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
361						return arguments.length <= 1 ? undefined : arguments[1];
362					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 0) {
363						return arguments.length <= 2 ? undefined : arguments[2];
364					} else {
365						return arguments.length <= 3 ? undefined : arguments[3];
366					}
367				}, function () {
368					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1 || (arguments.length <= 0 ? undefined : arguments[0]) === 11) {
369						return arguments.length <= 1 ? undefined : arguments[1];
370					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2 || (arguments.length <= 0 ? undefined : arguments[0]) === 12) {
371						return arguments.length <= 2 ? undefined : arguments[2];
372					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 20) {
373						return arguments.length <= 3 ? undefined : arguments[3];
374					} else {
375						return arguments.length <= 4 ? undefined : arguments[4];
376					}
377				}, function () {
378					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
379						return arguments.length <= 1 ? undefined : arguments[1];
380					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 0 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
381						return arguments.length <= 2 ? undefined : arguments[2];
382					} else {
383						return arguments.length <= 3 ? undefined : arguments[3];
384					}
385				}, function () {
386					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
387						return arguments.length <= 1 ? undefined : arguments[1];
388					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
389						return arguments.length <= 2 ? undefined : arguments[2];
390					} else {
391						return [3];
392					}
393				}, function () {
394					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 !== 11) {
395						return arguments.length <= 1 ? undefined : arguments[1];
396					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
397						return arguments.length <= 2 ? undefined : arguments[2];
398					} else {
399						return arguments.length <= 3 ? undefined : arguments[3];
400					}
401				}, function () {
402					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
403						return arguments.length <= 1 ? undefined : arguments[1];
404					} else if ((arguments.length <= 0 ? undefined : arguments[0]) >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) <= 4) {
405						return arguments.length <= 2 ? undefined : arguments[2];
406					} else {
407						return arguments.length <= 3 ? undefined : arguments[3];
408					}
409				}, function () {
410					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
411						return arguments.length <= 1 ? undefined : arguments[1];
412					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
413						return arguments.length <= 2 ? undefined : arguments[2];
414					} else {
415						return arguments.length <= 3 ? undefined : arguments[3];
416					}
417				}, function () {
418					if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 1) {
419						return arguments.length <= 2 ? undefined : arguments[2];
420					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 2) {
421						return arguments.length <= 3 ? undefined : arguments[3];
422					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 === 3 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 === 4) {
423						return arguments.length <= 4 ? undefined : arguments[4];
424					} else {
425						return arguments.length <= 1 ? undefined : arguments[1];
426					}
427				}, function () {
428					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
429						return arguments.length <= 1 ? undefined : arguments[1];
430					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
431						return arguments.length <= 2 ? undefined : arguments[2];
432					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 2 && (arguments.length <= 0 ? undefined : arguments[0]) < 7) {
433						return arguments.length <= 3 ? undefined : arguments[3];
434					} else if ((arguments.length <= 0 ? undefined : arguments[0]) > 6 && (arguments.length <= 0 ? undefined : arguments[0]) < 11) {
435						return arguments.length <= 4 ? undefined : arguments[4];
436					} else {
437						return arguments.length <= 5 ? undefined : arguments[5];
438					}
439				}, function () {
440					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
441						return arguments.length <= 1 ? undefined : arguments[1];
442					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
443						return arguments.length <= 2 ? undefined : arguments[2];
444					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
445						return arguments.length <= 3 ? undefined : arguments[3];
446					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 3 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 <= 10) {
447						return arguments.length <= 4 ? undefined : arguments[4];
448					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 11) {
449						return arguments.length <= 5 ? undefined : arguments[5];
450					} else {
451						return arguments.length <= 6 ? undefined : arguments[6];
452					}
453				}, function () {
454					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
455						return arguments.length <= 1 ? undefined : arguments[1];
456					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 0 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 > 1 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 11) {
457						return arguments.length <= 2 ? undefined : arguments[2];
458					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 100 > 10 && (arguments.length <= 0 ? undefined : arguments[0]) % 100 < 20) {
459						return arguments.length <= 3 ? undefined : arguments[3];
460					} else {
461						return arguments.length <= 4 ? undefined : arguments[4];
462					}
463				}, function () {
464					if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1) {
465						return arguments.length <= 1 ? undefined : arguments[1];
466					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 === 2) {
467						return arguments.length <= 2 ? undefined : arguments[2];
468					} else {
469						return arguments.length <= 3 ? undefined : arguments[3];
470					}
471				}, function () {
472					return (arguments.length <= 0 ? undefined : arguments[0]) !== 11 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 === 1 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
473				}, function () {
474					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
475						return arguments.length <= 1 ? undefined : arguments[1];
476					} else if ((arguments.length <= 0 ? undefined : arguments[0]) % 10 >= 2 && (arguments.length <= 0 ? undefined : arguments[0]) % 10 <= 4 && ((arguments.length <= 0 ? undefined : arguments[0]) % 100 < 10 || (arguments.length <= 0 ? undefined : arguments[0]) % 100 >= 20)) {
477						return arguments.length <= 2 ? undefined : arguments[2];
478					} else {
479						return arguments.length <= 3 ? undefined : arguments[3];
480					}
481				}, function () {
482					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
483						return arguments.length <= 1 ? undefined : arguments[1];
484					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
485						return arguments.length <= 2 ? undefined : arguments[2];
486					} else if ((arguments.length <= 0 ? undefined : arguments[0]) !== 8 && (arguments.length <= 0 ? undefined : arguments[0]) !== 11) {
487						return arguments.length <= 3 ? undefined : arguments[3];
488					} else {
489						return arguments.length <= 4 ? undefined : arguments[4];
490					}
491				}, function () {
492					return (arguments.length <= 0 ? undefined : arguments[0]) === 0 ? arguments.length <= 1 ? undefined : arguments[1] : arguments.length <= 2 ? undefined : arguments[2];
493				}, function () {
494					if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
495						return arguments.length <= 1 ? undefined : arguments[1];
496					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 2) {
497						return arguments.length <= 2 ? undefined : arguments[2];
498					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 3) {
499						return arguments.length <= 3 ? undefined : arguments[3];
500					} else {
501						return arguments.length <= 4 ? undefined : arguments[4];
502					}
503				}, function () {
504					if ((arguments.length <= 0 ? undefined : arguments[0]) === 0) {
505						return arguments.length <= 1 ? undefined : arguments[1];
506					} else if ((arguments.length <= 0 ? undefined : arguments[0]) === 1) {
507						return arguments.length <= 2 ? undefined : arguments[2];
508					} else {
509						return arguments.length <= 3 ? undefined : arguments[3];
510					}
511				}];
512			}();
513
514			return _pluralForms[form].apply(null, [number].concat(input));
515		};
516
517		if (i18n[language] !== undefined) {
518			str = i18n[language][message];
519			if (pluralParam !== null && typeof pluralParam === 'number') {
520				pluralForm = i18n[language]['mejs.plural-form'];
521				str = _plural.apply(null, [str, pluralParam, pluralForm]);
522			}
523		}
524
525		if (!str && i18n.en) {
526			str = i18n.en[message];
527			if (pluralParam !== null && typeof pluralParam === 'number') {
528				pluralForm = i18n.en['mejs.plural-form'];
529				str = _plural.apply(null, [str, pluralParam, pluralForm]);
530			}
531		}
532
533		str = str || message;
534
535		if (pluralParam !== null && typeof pluralParam === 'number') {
536			str = str.replace('%1', pluralParam);
537		}
538
539		return (0, _general.escapeHTML)(str);
540	}
541
542	return message;
543};
544
545_mejs2.default.i18n = i18n;
546
547if (typeof mejsL10n !== 'undefined') {
548	_mejs2.default.i18n.language(mejsL10n.language, mejsL10n.strings);
549}
550
551exports.default = i18n;
552
553},{"15":15,"27":27,"7":7}],6:[function(_dereq_,module,exports){
554'use strict';
555
556Object.defineProperty(exports, "__esModule", {
557	value: true
558});
559
560var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
561
562var _window = _dereq_(3);
563
564var _window2 = _interopRequireDefault(_window);
565
566var _document = _dereq_(2);
567
568var _document2 = _interopRequireDefault(_document);
569
570var _mejs = _dereq_(7);
571
572var _mejs2 = _interopRequireDefault(_mejs);
573
574var _general = _dereq_(27);
575
576var _media2 = _dereq_(28);
577
578var _renderer = _dereq_(8);
579
580var _constants = _dereq_(25);
581
582function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
583
584function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
585
586var MediaElement = function MediaElement(idOrNode, options, sources) {
587	var _this = this;
588
589	_classCallCheck(this, MediaElement);
590
591	var t = this;
592
593	sources = Array.isArray(sources) ? sources : null;
594
595	t.defaults = {
596		renderers: [],
597
598		fakeNodeName: 'mediaelementwrapper',
599
600		pluginPath: 'build/',
601
602		shimScriptAccess: 'sameDomain'
603	};
604
605	options = Object.assign(t.defaults, options);
606
607	t.mediaElement = _document2.default.createElement(options.fakeNodeName);
608
609	var id = idOrNode,
610	    error = false;
611
612	if (typeof idOrNode === 'string') {
613		t.mediaElement.originalNode = _document2.default.getElementById(idOrNode);
614	} else {
615		t.mediaElement.originalNode = idOrNode;
616		id = idOrNode.id;
617	}
618
619	if (t.mediaElement.originalNode === undefined || t.mediaElement.originalNode === null) {
620		return null;
621	}
622
623	t.mediaElement.options = options;
624	id = id || 'mejs_' + Math.random().toString().slice(2);
625
626	t.mediaElement.originalNode.setAttribute('id', id + '_from_mejs');
627
628	var tagName = t.mediaElement.originalNode.tagName.toLowerCase();
629	if (['video', 'audio'].indexOf(tagName) > -1 && !t.mediaElement.originalNode.getAttribute('preload')) {
630		t.mediaElement.originalNode.setAttribute('preload', 'none');
631	}
632
633	t.mediaElement.originalNode.parentNode.insertBefore(t.mediaElement, t.mediaElement.originalNode);
634
635	t.mediaElement.appendChild(t.mediaElement.originalNode);
636
637	var processURL = function processURL(url, type) {
638		if (_window2.default.location.protocol === 'https:' && url.indexOf('http:') === 0 && _constants.IS_IOS && _mejs2.default.html5media.mediaTypes.indexOf(type) > -1) {
639			var xhr = new XMLHttpRequest();
640			xhr.onreadystatechange = function () {
641				if (this.readyState === 4 && this.status === 200) {
642					var _url = _window2.default.URL || _window2.default.webkitURL,
643					    blobUrl = _url.createObjectURL(this.response);
644					t.mediaElement.originalNode.setAttribute('src', blobUrl);
645					return blobUrl;
646				}
647				return url;
648			};
649			xhr.open('GET', url);
650			xhr.responseType = 'blob';
651			xhr.send();
652		}
653
654		return url;
655	};
656
657	var mediaFiles = void 0;
658
659	if (sources !== null) {
660		mediaFiles = sources;
661	} else if (t.mediaElement.originalNode !== null) {
662
663		mediaFiles = [];
664
665		switch (t.mediaElement.originalNode.nodeName.toLowerCase()) {
666			case 'iframe':
667				mediaFiles.push({
668					type: '',
669					src: t.mediaElement.originalNode.getAttribute('src')
670				});
671				break;
672			case 'audio':
673			case 'video':
674				var _sources = t.mediaElement.originalNode.children.length,
675				    nodeSource = t.mediaElement.originalNode.getAttribute('src');
676
677				if (nodeSource) {
678					var node = t.mediaElement.originalNode,
679					    type = (0, _media2.formatType)(nodeSource, node.getAttribute('type'));
680					mediaFiles.push({
681						type: type,
682						src: processURL(nodeSource, type)
683					});
684				}
685
686				for (var i = 0; i < _sources; i++) {
687					var n = t.mediaElement.originalNode.children[i];
688					if (n.tagName.toLowerCase() === 'source') {
689						var src = n.getAttribute('src'),
690						    _type = (0, _media2.formatType)(src, n.getAttribute('type'));
691						mediaFiles.push({ type: _type, src: processURL(src, _type) });
692					}
693				}
694				break;
695		}
696	}
697
698	t.mediaElement.id = id;
699	t.mediaElement.renderers = {};
700	t.mediaElement.events = {};
701	t.mediaElement.promises = [];
702	t.mediaElement.renderer = null;
703	t.mediaElement.rendererName = null;
704
705	t.mediaElement.changeRenderer = function (rendererName, mediaFiles) {
706
707		var t = _this,
708		    media = Object.keys(mediaFiles[0]).length > 2 ? mediaFiles[0] : mediaFiles[0].src;
709
710		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && t.mediaElement.renderer.name === rendererName) {
711			t.mediaElement.renderer.pause();
712			if (t.mediaElement.renderer.stop) {
713				t.mediaElement.renderer.stop();
714			}
715			t.mediaElement.renderer.show();
716			t.mediaElement.renderer.setSrc(media);
717			return true;
718		}
719
720		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
721			t.mediaElement.renderer.pause();
722			if (t.mediaElement.renderer.stop) {
723				t.mediaElement.renderer.stop();
724			}
725			t.mediaElement.renderer.hide();
726		}
727
728		var newRenderer = t.mediaElement.renderers[rendererName],
729		    newRendererType = null;
730
731		if (newRenderer !== undefined && newRenderer !== null) {
732			newRenderer.show();
733			newRenderer.setSrc(media);
734			t.mediaElement.renderer = newRenderer;
vendor: 16,847 bytes, lines 735-1269
735			t.mediaElement.rendererName = rendererName;
736			return true;
737		}
738
739		var rendererArray = t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : _renderer.renderer.order;
740
741		for (var _i = 0, total = rendererArray.length; _i < total; _i++) {
742			var index = rendererArray[_i];
743
744			if (index === rendererName) {
745				var rendererList = _renderer.renderer.renderers;
746				newRendererType = rendererList[index];
747
748				var renderOptions = Object.assign(newRendererType.options, t.mediaElement.options);
749				newRenderer = newRendererType.create(t.mediaElement, renderOptions, mediaFiles);
750				newRenderer.name = rendererName;
751
752				t.mediaElement.renderers[newRendererType.name] = newRenderer;
753				t.mediaElement.renderer = newRenderer;
754				t.mediaElement.rendererName = rendererName;
755				newRenderer.show();
756				return true;
757			}
758		}
759
760		return false;
761	};
762
763	t.mediaElement.setSize = function (width, height) {
764		if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null) {
765			t.mediaElement.renderer.setSize(width, height);
766		}
767	};
768
769	t.mediaElement.generateError = function (message, urlList) {
770		message = message || '';
771		urlList = Array.isArray(urlList) ? urlList : [];
772		var event = (0, _general.createEvent)('error', t.mediaElement);
773		event.message = message;
774		event.urls = urlList;
775		t.mediaElement.dispatchEvent(event);
776		error = true;
777	};
778
779	var props = _mejs2.default.html5media.properties,
780	    methods = _mejs2.default.html5media.methods,
781	    addProperty = function addProperty(obj, name, onGet, onSet) {
782		var oldValue = obj[name];
783		var getFn = function getFn() {
784			return onGet.apply(obj, [oldValue]);
785		},
786		    setFn = function setFn(newValue) {
787			oldValue = onSet.apply(obj, [newValue]);
788			return oldValue;
789		};
790
791		Object.defineProperty(obj, name, {
792			get: getFn,
793			set: setFn
794		});
795	},
796	    assignGettersSetters = function assignGettersSetters(propName) {
797		if (propName !== 'src') {
798
799			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1),
800			    getFn = function getFn() {
801				return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['get' + capName] === 'function' ? t.mediaElement.renderer['get' + capName]() : null;
802			},
803			    setFn = function setFn(value) {
804				if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer['set' + capName] === 'function') {
805					t.mediaElement.renderer['set' + capName](value);
806				}
807			};
808
809			addProperty(t.mediaElement, propName, getFn, setFn);
810			t.mediaElement['get' + capName] = getFn;
811			t.mediaElement['set' + capName] = setFn;
812		}
813	},
814	    getSrc = function getSrc() {
815		return t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null ? t.mediaElement.renderer.getSrc() : null;
816	},
817	    setSrc = function setSrc(value) {
818		var mediaFiles = [];
819
820		if (typeof value === 'string') {
821			mediaFiles.push({
822				src: value,
823				type: value ? (0, _media2.getTypeFromFile)(value) : ''
824			});
825		} else if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src !== undefined) {
826			var _src = (0, _media2.absolutizeUrl)(value.src),
827			    _type2 = value.type,
828			    media = Object.assign(value, {
829				src: _src,
830				type: (_type2 === '' || _type2 === null || _type2 === undefined) && _src ? (0, _media2.getTypeFromFile)(_src) : _type2
831			});
832			mediaFiles.push(media);
833		} else if (Array.isArray(value)) {
834			for (var _i2 = 0, total = value.length; _i2 < total; _i2++) {
835
836				var _src2 = (0, _media2.absolutizeUrl)(value[_i2].src),
837				    _type3 = value[_i2].type,
838				    _media = Object.assign(value[_i2], {
839					src: _src2,
840					type: (_type3 === '' || _type3 === null || _type3 === undefined) && _src2 ? (0, _media2.getTypeFromFile)(_src2) : _type3
841				});
842
843				mediaFiles.push(_media);
844			}
845		}
846
847		var renderInfo = _renderer.renderer.select(mediaFiles, t.mediaElement.options.renderers.length ? t.mediaElement.options.renderers : []),
848		    event = void 0;
849
850		if (!t.mediaElement.paused) {
851			t.mediaElement.pause();
852			event = (0, _general.createEvent)('pause', t.mediaElement);
853			t.mediaElement.dispatchEvent(event);
854		}
855		t.mediaElement.originalNode.src = mediaFiles[0].src || '';
856
857		if (renderInfo === null && mediaFiles[0].src) {
858			t.mediaElement.generateError('No renderer found', mediaFiles);
859			return;
860		}
861
862		return mediaFiles[0].src ? t.mediaElement.changeRenderer(renderInfo.rendererName, mediaFiles) : null;
863	},
864	    triggerAction = function triggerAction(methodName, args) {
865		try {
866			if (methodName === 'play' && t.mediaElement.rendererName === 'native_dash') {
867				var response = t.mediaElement.renderer[methodName](args);
868				if (response && typeof response.then === 'function') {
869					response.catch(function () {
870						if (t.mediaElement.paused) {
871							setTimeout(function () {
872								var tmpResponse = t.mediaElement.renderer.play();
873								if (tmpResponse !== undefined) {
874									tmpResponse.catch(function () {
875										if (!t.mediaElement.renderer.paused) {
876											t.mediaElement.renderer.pause();
877										}
878									});
879								}
880							}, 150);
881						}
882					});
883				}
884			} else {
885				t.mediaElement.renderer[methodName](args);
886			}
887		} catch (e) {
888			t.mediaElement.generateError(e, mediaFiles);
889		}
890	},
891	    assignMethods = function assignMethods(methodName) {
892		t.mediaElement[methodName] = function () {
893			for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
894				args[_key] = arguments[_key];
895			}
896
897			if (t.mediaElement.renderer !== undefined && t.mediaElement.renderer !== null && typeof t.mediaElement.renderer[methodName] === 'function') {
898				if (t.mediaElement.promises.length) {
899					Promise.all(t.mediaElement.promises).then(function () {
900						triggerAction(methodName, args);
901					}).catch(function (e) {
902						t.mediaElement.generateError(e, mediaFiles);
903					});
904				} else {
905					triggerAction(methodName, args);
906				}
907			}
908			return null;
909		};
910	};
911
912	addProperty(t.mediaElement, 'src', getSrc, setSrc);
913	t.mediaElement.getSrc = getSrc;
914	t.mediaElement.setSrc = setSrc;
915
916	for (var _i3 = 0, total = props.length; _i3 < total; _i3++) {
917		assignGettersSetters(props[_i3]);
918	}
919
920	for (var _i4 = 0, _total = methods.length; _i4 < _total; _i4++) {
921		assignMethods(methods[_i4]);
922	}
923
924	t.mediaElement.addEventListener = function (eventName, callback) {
925		t.mediaElement.events[eventName] = t.mediaElement.events[eventName] || [];
926
927		t.mediaElement.events[eventName].push(callback);
928	};
929	t.mediaElement.removeEventListener = function (eventName, callback) {
930		if (!eventName) {
931			t.mediaElement.events = {};
932			return true;
933		}
934
935		var callbacks = t.mediaElement.events[eventName];
936
937		if (!callbacks) {
938			return true;
939		}
940
941		if (!callback) {
942			t.mediaElement.events[eventName] = [];
943			return true;
944		}
945
946		for (var _i5 = 0; _i5 < callbacks.length; _i5++) {
947			if (callbacks[_i5] === callback) {
948				t.mediaElement.events[eventName].splice(_i5, 1);
949				return true;
950			}
951		}
952		return false;
953	};
954
955	t.mediaElement.dispatchEvent = function (event) {
956		var callbacks = t.mediaElement.events[event.type];
957		if (callbacks) {
958			for (var _i6 = 0; _i6 < callbacks.length; _i6++) {
959				callbacks[_i6].apply(null, [event]);
960			}
961		}
962	};
963
964	t.mediaElement.destroy = function () {
965		var mediaElement = t.mediaElement.originalNode.cloneNode(true);
966		var wrapper = t.mediaElement.parentElement;
967		mediaElement.removeAttribute('id');
968		mediaElement.remove();
969		t.mediaElement.remove();
970		wrapper.append(mediaElement);
971	};
972
973	if (mediaFiles.length) {
974		t.mediaElement.src = mediaFiles;
975	}
976
977	if (t.mediaElement.promises.length) {
978		Promise.all(t.mediaElement.promises).then(function () {
979			if (t.mediaElement.options.success) {
980				t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
981			}
982		}).catch(function () {
983			if (error && t.mediaElement.options.error) {
984				t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
985			}
986		});
987	} else {
988		if (t.mediaElement.options.success) {
989			t.mediaElement.options.success(t.mediaElement, t.mediaElement.originalNode);
990		}
991
992		if (error && t.mediaElement.options.error) {
993			t.mediaElement.options.error(t.mediaElement, t.mediaElement.originalNode);
994		}
995	}
996
997	return t.mediaElement;
998};
999
1000_window2.default.MediaElement = MediaElement;
1001_mejs2.default.MediaElement = MediaElement;
1002
1003exports.default = MediaElement;
1004
1005},{"2":2,"25":25,"27":27,"28":28,"3":3,"7":7,"8":8}],7:[function(_dereq_,module,exports){
1006'use strict';
1007
1008Object.defineProperty(exports, "__esModule", {
1009	value: true
1010});
1011
1012var _window = _dereq_(3);
1013
1014var _window2 = _interopRequireDefault(_window);
1015
1016function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1017
1018var mejs = {};
1019
1020mejs.version = '4.2.8';
1021
1022mejs.html5media = {
1023	properties: ['volume', 'src', 'currentTime', 'muted', 'duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable', 'currentSrc', 'preload', 'bufferedBytes', 'bufferedTime', 'initialTime', 'startOffsetTime', 'defaultPlaybackRate', 'playbackRate', 'played', 'autoplay', 'loop', 'controls'],
1024	readOnlyProperties: ['duration', 'paused', 'ended', 'buffered', 'error', 'networkState', 'readyState', 'seeking', 'seekable'],
1025
1026	methods: ['load', 'play', 'pause', 'canPlayType'],
1027
1028	events: ['loadstart', 'durationchange', 'loadedmetadata', 'loadeddata', 'progress', 'canplay', 'canplaythrough', 'suspend', 'abort', 'error', 'emptied', 'stalled', 'play', 'playing', 'pause', 'waiting', 'seeking', 'seeked', 'timeupdate', 'ended', 'ratechange', 'volumechange'],
1029
1030	mediaTypes: ['audio/mp3', 'audio/ogg', 'audio/oga', 'audio/wav', 'audio/x-wav', 'audio/wave', 'audio/x-pn-wav', 'audio/mpeg', 'audio/mp4', 'video/mp4', 'video/webm', 'video/ogg', 'video/ogv']
1031};
1032
1033_window2.default.mejs = mejs;
1034
1035exports.default = mejs;
1036
1037},{"3":3}],8:[function(_dereq_,module,exports){
1038'use strict';
1039
1040Object.defineProperty(exports, "__esModule", {
1041	value: true
1042});
1043exports.renderer = undefined;
1044
1045var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
1046
1047var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
1048
1049var _mejs = _dereq_(7);
1050
1051var _mejs2 = _interopRequireDefault(_mejs);
1052
1053function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1054
1055function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
1056
1057var Renderer = function () {
1058	function Renderer() {
1059		_classCallCheck(this, Renderer);
1060
1061		this.renderers = {};
1062		this.order = [];
1063	}
1064
1065	_createClass(Renderer, [{
1066		key: 'add',
1067		value: function add(renderer) {
1068			if (renderer.name === undefined) {
1069				throw new TypeError('renderer must contain at least `name` property');
1070			}
1071
1072			this.renderers[renderer.name] = renderer;
1073			this.order.push(renderer.name);
1074		}
1075	}, {
1076		key: 'select',
1077		value: function select(mediaFiles) {
1078			var renderers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1079
1080			var renderersLength = renderers.length;
1081
1082			renderers = renderers.length ? renderers : this.order;
1083
1084			if (!renderersLength) {
1085				var rendererIndicator = [/^(html5|native)/i, /^flash/i, /iframe$/i],
1086				    rendererRanking = function rendererRanking(renderer) {
1087					for (var i = 0, total = rendererIndicator.length; i < total; i++) {
1088						if (rendererIndicator[i].test(renderer)) {
1089							return i;
1090						}
1091					}
1092					return rendererIndicator.length;
1093				};
1094
1095				renderers.sort(function (a, b) {
1096					return rendererRanking(a) - rendererRanking(b);
1097				});
1098			}
1099
1100			for (var i = 0, total = renderers.length; i < total; i++) {
1101				var key = renderers[i],
1102				    _renderer = this.renderers[key];
1103
1104				if (_renderer !== null && _renderer !== undefined) {
1105					for (var j = 0, jl = mediaFiles.length; j < jl; j++) {
1106						if (typeof _renderer.canPlayType === 'function' && typeof mediaFiles[j].type === 'string' && _renderer.canPlayType(mediaFiles[j].type)) {
1107							return {
1108								rendererName: _renderer.name,
1109								src: mediaFiles[j].src
1110							};
1111						}
1112					}
1113				}
1114			}
1115
1116			return null;
1117		}
1118	}, {
1119		key: 'order',
1120		set: function set(order) {
1121			if (!Array.isArray(order)) {
1122				throw new TypeError('order must be an array of strings.');
1123			}
1124
1125			this._order = order;
1126		},
1127		get: function get() {
1128			return this._order;
1129		}
1130	}, {
1131		key: 'renderers',
1132		set: function set(renderers) {
1133			if (renderers !== null && (typeof renderers === 'undefined' ? 'undefined' : _typeof(renderers)) !== 'object') {
1134				throw new TypeError('renderers must be an array of objects.');
1135			}
1136
1137			this._renderers = renderers;
1138		},
1139		get: function get() {
1140			return this._renderers;
1141		}
1142	}]);
1143
1144	return Renderer;
1145}();
1146
1147var renderer = exports.renderer = new Renderer();
1148
1149_mejs2.default.Renderers = renderer;
1150
1151},{"7":7}],9:[function(_dereq_,module,exports){
1152'use strict';
1153
1154var _window = _dereq_(3);
1155
1156var _window2 = _interopRequireDefault(_window);
1157
1158var _document = _dereq_(2);
1159
1160var _document2 = _interopRequireDefault(_document);
1161
1162var _i18n = _dereq_(5);
1163
1164var _i18n2 = _interopRequireDefault(_i18n);
1165
1166var _player = _dereq_(16);
1167
1168var _player2 = _interopRequireDefault(_player);
1169
1170var _constants = _dereq_(25);
1171
1172var Features = _interopRequireWildcard(_constants);
1173
1174var _general = _dereq_(27);
1175
1176var _dom = _dereq_(26);
1177
1178var _media = _dereq_(28);
1179
1180function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
1181
1182function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1183
1184Object.assign(_player.config, {
1185	usePluginFullScreen: true,
1186
1187	fullscreenText: null,
1188
1189	useFakeFullscreen: false
1190});
1191
1192Object.assign(_player2.default.prototype, {
1193	isFullScreen: false,
1194
1195	isNativeFullScreen: false,
1196
1197	isInIframe: false,
1198
1199	isPluginClickThroughCreated: false,
1200
1201	fullscreenMode: '',
1202
1203	containerSizeTimeout: null,
1204
1205	buildfullscreen: function buildfullscreen(player) {
1206		if (!player.isVideo) {
1207			return;
1208		}
1209
1210		player.isInIframe = _window2.default.location !== _window2.default.parent.location;
1211
1212		player.detectFullscreenMode();
1213
1214		var t = this,
1215		    fullscreenTitle = (0, _general.isString)(t.options.fullscreenText) ? t.options.fullscreenText : _i18n2.default.t('mejs.fullscreen'),
1216		    fullscreenBtn = _document2.default.createElement('div');
1217
1218		fullscreenBtn.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'fullscreen-button';
1219		fullscreenBtn.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + fullscreenTitle + '" aria-label="' + fullscreenTitle + '" tabindex="0"></button>';
1220		t.addControlElement(fullscreenBtn, 'fullscreen');
1221
1222		fullscreenBtn.addEventListener('click', function () {
1223			var isFullScreen = Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || player.isFullScreen;
1224
1225			if (isFullScreen) {
1226				player.exitFullScreen();
1227			} else {
1228				player.enterFullScreen();
1229			}
1230		});
1231
1232		player.fullscreenBtn = fullscreenBtn;
1233
1234		t.options.keyActions.push({
1235			keys: [70],
1236			action: function action(player, media, key, event) {
1237				if (!event.ctrlKey) {
1238					if (typeof player.enterFullScreen !== 'undefined') {
1239						if (player.isFullScreen) {
1240							player.exitFullScreen();
1241						} else {
1242							player.enterFullScreen();
1243						}
1244					}
1245				}
1246			}
1247		});
1248
1249		t.exitFullscreenCallback = function (e) {
1250			var key = e.which || e.keyCode || 0;
1251			if (key === 27 && (Features.HAS_TRUE_NATIVE_FULLSCREEN && Features.IS_FULLSCREEN || t.isFullScreen)) {
1252				player.exitFullScreen();
1253			}
1254		};
1255
1256		t.globalBind('keydown', t.exitFullscreenCallback);
1257
1258		t.normalHeight = 0;
1259		t.normalWidth = 0;
1260
1261		if (Features.HAS_TRUE_NATIVE_FULLSCREEN) {
1262			var fullscreenChanged = function fullscreenChanged() {
1263				if (player.isFullScreen) {
1264					if (Features.isFullScreen()) {
1265						player.isNativeFullScreen = true;
1266
1267						player.setControlsSize();
1268					} else {
1269						player.isNativeFullScreen = false;
1270
1271						player.exitFullScreen();
1272					}
1273				}
1274			};
1275
1276			player.globalBind(Features.FULLSCREEN_EVENT_NAME, fullscreenChanged);
1277		}
1278	},
1279	cleanfullscreen: function cleanfullscreen(player) {
1280		player.exitFullScreen();
1281		player.globalUnbind('keydown', player.exitFullscreenCallback);
1282	},
1283	detectFullscreenMode: function detectFullscreenMode() {
1284		var t = this,
1285		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1286
1287		var mode = '';
1288
1289		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && isNative) {
1290			mode = 'native-native';
1291		} else if (Features.HAS_TRUE_NATIVE_FULLSCREEN && !isNative) {
1292			mode = 'plugin-native';
1293		} else if (t.usePluginFullScreen && Features.SUPPORT_POINTER_EVENTS) {
1294			mode = 'plugin-click';
1295		}
1296
1297		t.fullscreenMode = mode;
1298		return mode;
1299	},
1300	enterFullScreen: function enterFullScreen() {
1301		var t = this,
1302		    isNative = t.media.rendererName !== null && /(html5|native)/i.test(t.media.rendererName),
1303		    containerStyles = getComputedStyle(t.getElement(t.container));
1304
1305		if (t.options.useFakeFullscreen === false && Features.IS_IOS && Features.HAS_IOS_FULLSCREEN && typeof t.media.originalNode.webkitEnterFullscreen === 'function' && t.media.originalNode.canPlayType((0, _media.getTypeFromFile)(t.media.getSrc()))) {
1306			t.media.originalNode.webkitEnterFullscreen();
1307			return;
1308		}
1309
1310		(0, _dom.addClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1311		(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1312
1313		t.normalHeight = parseFloat(containerStyles.height);
1314		t.normalWidth = parseFloat(containerStyles.width);
1315
1316		if (t.fullscreenMode === 'native-native' || t.fullscreenMode === 'plugin-native') {
1317			Features.requestFullScreen(t.getElement(t.container));
1318
1319			if (t.isInIframe) {
1320				setTimeout(function checkFullscreen() {
1321
1322					if (t.isNativeFullScreen) {
1323						var percentErrorMargin = 0.002,
1324						    windowWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth,
1325						    screenWidth = screen.width,
1326						    absDiff = Math.abs(screenWidth - windowWidth),
1327						    marginError = screenWidth * percentErrorMargin;
1328
1329						if (absDiff > marginError) {
1330							t.exitFullScreen();
1331						} else {
1332							setTimeout(checkFullscreen, 500);
1333						}
1334					}
1335				}, 1000);
1336			}
1337		}
1338
1339		t.getElement(t.container).style.width = '100%';
1340		t.getElement(t.container).style.height = '100%';
1341
1342		t.containerSizeTimeout = setTimeout(function () {
1343			t.getElement(t.container).style.width = '100%';
1344			t.getElement(t.container).style.height = '100%';
1345			t.setControlsSize();
1346		}, 500);
1347
1348		if (isNative) {
1349			t.node.style.width = '100%';
1350			t.node.style.height = '100%';
1351		} else {
1352			var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1353			    _total = elements.length;
1354			for (var i = 0; i < _total; i++) {
1355				elements[i].style.width = '100%';
1356				elements[i].style.height = '100%';
1357			}
1358		}
1359
1360		if (t.options.setDimensions && typeof t.media.setSize === 'function') {
1361			t.media.setSize(screen.width, screen.height);
1362		}
1363
1364		var layers = t.getElement(t.layers).children,
1365		    total = layers.length;
1366		for (var _i = 0; _i < total; _i++) {
1367			layers[_i].style.width = '100%';
1368			layers[_i].style.height = '100%';
1369		}
1370
1371		if (t.fullscreenBtn) {
1372			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1373			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1374		}
1375
1376		t.setControlsSize();
1377		t.isFullScreen = true;
1378
1379		var zoomFactor = Math.min(screen.width / t.width, screen.height / t.height),
1380		    captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1381		if (captionText) {
1382			captionText.style.fontSize = zoomFactor * 100 + '%';
1383			captionText.style.lineHeight = 'normal';
1384			t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = (screen.height - t.normalHeight) / 2 - t.getElement(t.controls).offsetHeight / 2 + zoomFactor + 15 + 'px';
1385		}
1386		var event = (0, _general.createEvent)('enteredfullscreen', t.getElement(t.container));
1387		t.getElement(t.container).dispatchEvent(event);
1388	},
1389	exitFullScreen: function exitFullScreen() {
1390		var t = this,
vendor: 13,208 bytes, lines 1391-1753
1391		    isNative = t.media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
1392
1393		clearTimeout(t.containerSizeTimeout);
1394
1395		if (Features.HAS_TRUE_NATIVE_FULLSCREEN && (Features.IS_FULLSCREEN || t.isFullScreen)) {
1396			Features.cancelFullScreen();
1397		}
1398
1399		(0, _dom.removeClass)(_document2.default.documentElement, t.options.classPrefix + 'fullscreen');
1400		(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'container-fullscreen');
1401
1402		if (t.options.setDimensions) {
1403			t.getElement(t.container).style.width = t.normalWidth + 'px';
1404			t.getElement(t.container).style.height = t.normalHeight + 'px';
1405
1406			if (isNative) {
1407				t.node.style.width = t.normalWidth + 'px';
1408				t.node.style.height = t.normalHeight + 'px';
1409			} else {
1410				var elements = t.getElement(t.container).querySelectorAll('embed, object, video'),
1411				    _total2 = elements.length;
1412				for (var i = 0; i < _total2; i++) {
1413					elements[i].style.width = t.normalWidth + 'px';
1414					elements[i].style.height = t.normalHeight + 'px';
1415				}
1416			}
1417
1418			if (typeof t.media.setSize === 'function') {
1419				t.media.setSize(t.normalWidth, t.normalHeight);
1420			}
1421
1422			var layers = t.getElement(t.layers).children,
1423			    total = layers.length;
1424			for (var _i2 = 0; _i2 < total; _i2++) {
1425				layers[_i2].style.width = t.normalWidth + 'px';
1426				layers[_i2].style.height = t.normalHeight + 'px';
1427			}
1428		}
1429
1430		if (t.fullscreenBtn) {
1431			(0, _dom.removeClass)(t.fullscreenBtn, t.options.classPrefix + 'unfullscreen');
1432			(0, _dom.addClass)(t.fullscreenBtn, t.options.classPrefix + 'fullscreen');
1433		}
1434
1435		t.setControlsSize();
1436		t.isFullScreen = false;
1437
1438		var captionText = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-text');
1439		if (captionText) {
1440			captionText.style.fontSize = '';
1441			captionText.style.lineHeight = '';
1442			t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'captions-position').style.bottom = '';
1443		}
1444		var event = (0, _general.createEvent)('exitedfullscreen', t.getElement(t.container));
1445		t.getElement(t.container).dispatchEvent(event);
1446	}
1447});
1448
1449},{"16":16,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"5":5}],10:[function(_dereq_,module,exports){
1450'use strict';
1451
1452var _document = _dereq_(2);
1453
1454var _document2 = _interopRequireDefault(_document);
1455
1456var _player = _dereq_(16);
1457
1458var _player2 = _interopRequireDefault(_player);
1459
1460var _i18n = _dereq_(5);
1461
1462var _i18n2 = _interopRequireDefault(_i18n);
1463
1464var _general = _dereq_(27);
1465
1466var _dom = _dereq_(26);
1467
1468function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1469
1470Object.assign(_player.config, {
1471	playText: null,
1472
1473	pauseText: null
1474});
1475
1476Object.assign(_player2.default.prototype, {
1477	buildplaypause: function buildplaypause(player, controls, layers, media) {
1478		var t = this,
1479		    op = t.options,
1480		    playTitle = (0, _general.isString)(op.playText) ? op.playText : _i18n2.default.t('mejs.play'),
1481		    pauseTitle = (0, _general.isString)(op.pauseText) ? op.pauseText : _i18n2.default.t('mejs.pause'),
1482		    play = _document2.default.createElement('div');
1483
1484		play.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'playpause-button ' + t.options.classPrefix + 'play';
1485		play.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + playTitle + '" aria-label="' + pauseTitle + '" tabindex="0"></button>';
1486		play.addEventListener('click', function () {
1487			if (t.paused) {
1488				t.play();
1489			} else {
1490				t.pause();
1491			}
1492		});
1493
1494		var playBtn = play.querySelector('button');
1495		t.addControlElement(play, 'playpause');
1496
1497		function togglePlayPause(which) {
1498			if ('play' === which) {
1499				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1500				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1501				(0, _dom.addClass)(play, t.options.classPrefix + 'pause');
1502				playBtn.setAttribute('title', pauseTitle);
1503				playBtn.setAttribute('aria-label', pauseTitle);
1504			} else {
1505
1506				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1507				(0, _dom.removeClass)(play, t.options.classPrefix + 'replay');
1508				(0, _dom.addClass)(play, t.options.classPrefix + 'play');
1509				playBtn.setAttribute('title', playTitle);
1510				playBtn.setAttribute('aria-label', playTitle);
1511			}
1512		}
1513
1514		togglePlayPause('pse');
1515
1516		media.addEventListener('loadedmetadata', function () {
1517			if (media.rendererName.indexOf('flash') === -1) {
1518				togglePlayPause('pse');
1519			}
1520		});
1521		media.addEventListener('play', function () {
1522			togglePlayPause('play');
1523		});
1524		media.addEventListener('playing', function () {
1525			togglePlayPause('play');
1526		});
1527		media.addEventListener('pause', function () {
1528			togglePlayPause('pse');
1529		});
1530		media.addEventListener('ended', function () {
1531			if (!player.options.loop) {
1532				(0, _dom.removeClass)(play, t.options.classPrefix + 'pause');
1533				(0, _dom.removeClass)(play, t.options.classPrefix + 'play');
1534				(0, _dom.addClass)(play, t.options.classPrefix + 'replay');
1535				playBtn.setAttribute('title', playTitle);
1536				playBtn.setAttribute('aria-label', playTitle);
1537			}
1538		});
1539	}
1540});
1541
1542},{"16":16,"2":2,"26":26,"27":27,"5":5}],11:[function(_dereq_,module,exports){
1543'use strict';
1544
1545var _document = _dereq_(2);
1546
1547var _document2 = _interopRequireDefault(_document);
1548
1549var _player = _dereq_(16);
1550
1551var _player2 = _interopRequireDefault(_player);
1552
1553var _i18n = _dereq_(5);
1554
1555var _i18n2 = _interopRequireDefault(_i18n);
1556
1557var _constants = _dereq_(25);
1558
1559var _time = _dereq_(30);
1560
1561var _dom = _dereq_(26);
1562
1563function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
1564
1565Object.assign(_player.config, {
1566	enableProgressTooltip: true,
1567
1568	useSmoothHover: true,
1569
1570	forceLive: false
1571});
1572
1573Object.assign(_player2.default.prototype, {
1574	buildprogress: function buildprogress(player, controls, layers, media) {
1575
1576		var lastKeyPressTime = 0,
1577		    mouseIsDown = false,
1578		    startedPaused = false;
1579
1580		var t = this,
1581		    autoRewindInitial = player.options.autoRewind,
1582		    tooltip = player.options.enableProgressTooltip ? '<span class="' + t.options.classPrefix + 'time-float">' + ('<span class="' + t.options.classPrefix + 'time-float-current">00:00</span>') + ('<span class="' + t.options.classPrefix + 'time-float-corner"></span>') + '</span>' : '',
1583		    rail = _document2.default.createElement('div');
1584
1585		rail.className = t.options.classPrefix + 'time-rail';
1586		rail.innerHTML = '<span class="' + t.options.classPrefix + 'time-total ' + t.options.classPrefix + 'time-slider">' + ('<span class="' + t.options.classPrefix + 'time-buffering"></span>') + ('<span class="' + t.options.classPrefix + 'time-loaded"></span>') + ('<span class="' + t.options.classPrefix + 'time-current"></span>') + ('<span class="' + t.options.classPrefix + 'time-hovered no-hover"></span>') + ('<span class="' + t.options.classPrefix + 'time-handle"><span class="' + t.options.classPrefix + 'time-handle-content"></span></span>') + ('' + tooltip) + '</span>';
1587
1588		t.addControlElement(rail, 'progress');
1589
1590		t.options.keyActions.push({
1591			keys: [37, 227],
1592			action: function action(player) {
1593				if (!isNaN(player.duration) && player.duration > 0) {
1594					if (player.isVideo) {
1595						player.showControls();
1596						player.startControlsTimer();
1597					}
1598
1599					player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1600
1601					var newTime = Math.max(player.currentTime - player.options.defaultSeekBackwardInterval(player), 0);
1602					player.setCurrentTime(newTime);
1603				}
1604			}
1605		}, {
1606			keys: [39, 228],
1607			action: function action(player) {
1608
1609				if (!isNaN(player.duration) && player.duration > 0) {
1610					if (player.isVideo) {
1611						player.showControls();
1612						player.startControlsTimer();
1613					}
1614
1615					player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'time-total').focus();
1616
1617					var newTime = Math.min(player.currentTime + player.options.defaultSeekForwardInterval(player), player.duration);
1618					player.setCurrentTime(newTime);
1619				}
1620			}
1621		});
1622
1623		t.rail = controls.querySelector('.' + t.options.classPrefix + 'time-rail');
1624		t.total = controls.querySelector('.' + t.options.classPrefix + 'time-total');
1625		t.loaded = controls.querySelector('.' + t.options.classPrefix + 'time-loaded');
1626		t.current = controls.querySelector('.' + t.options.classPrefix + 'time-current');
1627		t.handle = controls.querySelector('.' + t.options.classPrefix + 'time-handle');
1628		t.timefloat = controls.querySelector('.' + t.options.classPrefix + 'time-float');
1629		t.timefloatcurrent = controls.querySelector('.' + t.options.classPrefix + 'time-float-current');
1630		t.slider = controls.querySelector('.' + t.options.classPrefix + 'time-slider');
1631		t.hovered = controls.querySelector('.' + t.options.classPrefix + 'time-hovered');
1632		t.buffer = controls.querySelector('.' + t.options.classPrefix + 'time-buffering');
1633		t.newTime = 0;
1634		t.forcedHandlePause = false;
1635		t.setTransformStyle = function (element, value) {
1636			element.style.transform = value;
1637			element.style.webkitTransform = value;
1638			element.style.MozTransform = value;
1639			element.style.msTransform = value;
1640			element.style.OTransform = value;
1641		};
1642
1643		t.buffer.style.display = 'none';
1644
1645		var handleMouseMove = function handleMouseMove(e) {
1646			var totalStyles = getComputedStyle(t.total),
1647			    offsetStyles = (0, _dom.offset)(t.total),
1648			    width = t.total.offsetWidth,
1649			    transform = function () {
1650				if (totalStyles.webkitTransform !== undefined) {
1651					return 'webkitTransform';
1652				} else if (totalStyles.mozTransform !== undefined) {
1653					return 'mozTransform ';
1654				} else if (totalStyles.oTransform !== undefined) {
1655					return 'oTransform';
1656				} else if (totalStyles.msTransform !== undefined) {
1657					return 'msTransform';
1658				} else {
1659					return 'transform';
1660				}
1661			}(),
1662			    cssMatrix = function () {
1663				if ('WebKitCSSMatrix' in window) {
1664					return 'WebKitCSSMatrix';
1665				} else if ('MSCSSMatrix' in window) {
1666					return 'MSCSSMatrix';
1667				} else if ('CSSMatrix' in window) {
1668					return 'CSSMatrix';
1669				}
1670			}();
1671
1672			var percentage = 0,
1673			    leftPos = 0,
1674			    pos = 0,
1675			    x = void 0;
1676
1677			if (e.originalEvent && e.originalEvent.changedTouches) {
1678				x = e.originalEvent.changedTouches[0].pageX;
1679			} else if (e.changedTouches) {
1680				x = e.changedTouches[0].pageX;
1681			} else {
1682				x = e.pageX;
1683			}
1684
1685			if (t.getDuration()) {
1686				if (x < offsetStyles.left) {
1687					x = offsetStyles.left;
1688				} else if (x > width + offsetStyles.left) {
1689					x = width + offsetStyles.left;
1690				}
1691
1692				pos = x - offsetStyles.left;
1693				percentage = pos / width;
1694				t.newTime = percentage <= 0.02 ? 0 : percentage * t.getDuration();
1695
1696				if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1697					t.setCurrentRailHandle(t.newTime);
1698					t.updateCurrent(t.newTime);
1699				}
1700
1701				if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
1702					if (pos < 0) {
1703						pos = 0;
1704					}
1705					if (t.options.useSmoothHover && cssMatrix !== null && typeof window[cssMatrix] !== 'undefined') {
1706						var matrix = new window[cssMatrix](getComputedStyle(t.handle)[transform]),
1707						    handleLocation = matrix.m41,
1708						    hoverScaleX = pos / parseFloat(getComputedStyle(t.total).width) - handleLocation / parseFloat(getComputedStyle(t.total).width);
1709
1710						t.hovered.style.left = handleLocation + 'px';
1711						t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
1712						t.hovered.setAttribute('pos', pos);
1713
1714						if (hoverScaleX >= 0) {
1715							(0, _dom.removeClass)(t.hovered, 'negative');
1716						} else {
1717							(0, _dom.addClass)(t.hovered, 'negative');
1718						}
1719					}
1720
1721					if (t.timefloat) {
1722						var half = t.timefloat.offsetWidth / 2,
1723						    offsetContainer = mejs.Utils.offset(t.getElement(t.container)),
1724						    tooltipStyles = getComputedStyle(t.timefloat);
1725
1726						if (x - offsetContainer.left < t.timefloat.offsetWidth) {
1727							leftPos = half;
1728						} else if (x - offsetContainer.left >= t.getElement(t.container).offsetWidth - half) {
1729							leftPos = t.total.offsetWidth - half;
1730						} else {
1731							leftPos = pos;
1732						}
1733
1734						if ((0, _dom.hasClass)(t.getElement(t.container), t.options.classPrefix + 'long-video')) {
1735							leftPos += parseFloat(tooltipStyles.marginLeft) / 2 + t.timefloat.offsetWidth / 2;
1736						}
1737
1738						t.timefloat.style.left = leftPos + 'px';
1739						t.timefloatcurrent.innerHTML = (0, _time.secondsToTimeCode)(t.newTime, player.options.alwaysShowHours, player.options.showTimecodeFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat);
1740						t.timefloat.style.display = 'block';
1741					}
1742				}
1743			} else if (!_constants.IS_IOS && !_constants.IS_ANDROID && t.timefloat) {
1744				leftPos = t.timefloat.offsetWidth + width >= t.getElement(t.container).offsetWidth ? t.timefloat.offsetWidth / 2 : 0;
1745				t.timefloat.style.left = leftPos + 'px';
1746				t.timefloat.style.left = leftPos + 'px';
1747				t.timefloat.style.display = 'block';
1748			}
1749		},
1750		    updateSlider = function updateSlider() {
1751			var seconds = t.getCurrentTime(),
1752			    timeSliderText = _i18n2.default.t('mejs.time-slider'),
1753			    time = (0, _time.secondsToTimeCode)(seconds, player.options.alwaysShowHours, player.options.showTimeco
1753deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat),
1754			    duration = t.getDuration();
1755
1756			t.slider.setAttribute('role', 'slider');
1757			t.slider.tabIndex = 0;
1758
1759			if (media.paused) {
1760				t.slider.setAttribute('aria-label', timeSliderText);
1761				t.slider.setAttribute('aria-valuemin', 0);
1762				t.slider.setAttribute('aria-valuemax', duration);
1763				t.slider.setAttribute('aria-valuenow', seconds);
1764				t.slider.setAttribute('aria-valuetext', time);
1765			} else {
1766				t.slider.removeAttribute('aria-label');
1767				t.slider.removeAttribute('aria-valuemin');
1768				t.slider.removeAttribute('aria-valuemax');
1769				t.slider.removeAttribute('aria-valuenow');
1770				t.slider.removeAttribute('aria-valuetext');
1771			}
1772		},
1773		    restartPlayer = function restartPlayer() {
1774			if (new Date() - lastKeyPressTime >= 1000) {
1775				t.play();
1776			}
1777		},
1778		    handleMouseup = function handleMouseup() {
1779			if (mouseIsDown && t.getCurrentTime() !== null && t.newTime.toFixed(4) !== t.getCurrentTime().toFixed(4)) {
1780				t.setCurrentTime(t.newTime);
1781				t.setCurrentRail();
1782				t.updateCurrent(t.newTime);
1783			}
1784			if (t.forcedHandlePause) {
1785				t.slider.focus();
1786				t.play();
1787			}
1788			t.forcedHandlePause = false;
1789		};
1790
1791		t.slider.addEventListener('focus', function () {
1792			player.options.autoRewind = false;
1793		});
1794		t.slider.addEventListener('blur', function () {
1795			player.options.autoRewind = autoRewindInitial;
1796		});
1797		t.slider.addEventListener('keydown', function (e) {
1798			if (new Date() - lastKeyPressTime >= 1000) {
1799				startedPaused = t.paused;
1800			}
1801
1802			if (t.options.keyActions.length) {
1803
1804				var keyCode = e.which || e.keyCode || 0,
1805				    duration = t.getDuration(),
1806				    seekForward = player.options.defaultSeekForwardInterval(media),
1807				    seekBackward = player.options.defaultSeekBackwardInterval(media);
1808
1809				var seekTime = t.getCurrentTime();
1810				var volume = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider');
1811
1812				if (keyCode === 38 || keyCode === 40) {
1813					if (volume) {
1814						volume.style.display = 'block';
1815					}
1816					if (t.isVideo) {
1817						t.showControls();
1818						t.startControlsTimer();
1819					}
1820
1821					var newVolume = keyCode === 38 ? Math.min(t.volume + 0.1, 1) : Math.max(t.volume - 0.1, 0),
1822					    mutePlayer = newVolume <= 0;
1823					t.setVolume(newVolume);
1824					t.setMuted(mutePlayer);
1825					return;
1826				} else {
1827					if (volume) {
1828						volume.style.display = 'none';
1829					}
1830				}
1831
1832				switch (keyCode) {
1833					case 37:
1834						if (t.getDuration() !== Infinity) {
1835							seekTime -= seekBackward;
1836						}
1837						break;
1838					case 39:
1839						if (t.getDuration() !== Infinity) {
1840							seekTime += seekForward;
1841						}
1842						break;
1843					case 36:
1844						seekTime = 0;
1845						break;
1846					case 35:
1847						seekTime = duration;
1848						break;
1849					case 13:
1850					case 32:
1851						if (_constants.IS_FIREFOX) {
1852							if (t.paused) {
1853								t.play();
1854							} else {
1855								t.pause();
1856							}
1857						}
1858						return;
1859					default:
1860						return;
1861				}
1862
1863				seekTime = seekTime < 0 ? 0 : seekTime >= duration ? duration : Math.floor(seekTime);
1864				lastKeyPressTime = new Date();
1865				if (!startedPaused) {
1866					player.pause();
1867				}
1868
1869				if (seekTime < t.getDuration() && !startedPaused) {
1870					setTimeout(restartPlayer, 1100);
1871				}
1872
1873				t.setCurrentTime(seekTime);
1874				player.showControls();
1875
1876				e.preventDefault();
1877				e.stopPropagation();
1878			}
1879		});
1880
1881		var events = ['mousedown', 'touchstart'];
1882
1883		t.slider.addEventListener('dragstart', function () {
1884			return false;
1885		});
1886
1887		for (var i = 0, total = events.length; i < total; i++) {
1888			t.slider.addEventListener(events[i], function (e) {
1889				t.forcedHandlePause = false;
1890				if (t.getDuration() !== Infinity) {
1891					if (e.which === 1 || e.which === 0) {
1892						if (!t.paused) {
1893							t.pause();
1894							t.forcedHandlePause = true;
1895						}
1896
1897						mouseIsDown = true;
1898						handleMouseMove(e);
1899						var endEvents = ['mouseup', 'touchend'];
1900
1901						for (var j = 0, totalEvents = endEvents.length; j < totalEvents; j++) {
1902							t.getElement(t.container).addEventListener(endEvents[j], function (event) {
1903								var target = event.target;
1904								if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1905									handleMouseMove(event);
1906								}
1907							});
1908						}
1909						t.globalBind('mouseup.dur touchend.dur', function () {
1910							handleMouseup();
1911							mouseIsDown = false;
vendor: 6,438 bytes, lines 1912-2112
1912							if (t.timefloat) {
1913								t.timefloat.style.display = 'none';
1914							}
1915						});
1916					}
1917				}
1918			}, _constants.SUPPORT_PASSIVE_EVENT && events[i] === 'touchstart' ? { passive: true } : false);
1919		}
1920		t.slider.addEventListener('mouseenter', function (e) {
1921			if (e.target === t.slider && t.getDuration() !== Infinity) {
1922				t.getElement(t.container).addEventListener('mousemove', function (event) {
1923					var target = event.target;
1924					if (target === t.slider || target.closest('.' + t.options.classPrefix + 'time-slider')) {
1925						handleMouseMove(event);
1926					}
1927				});
1928				if (t.timefloat && !_constants.IS_IOS && !_constants.IS_ANDROID) {
1929					t.timefloat.style.display = 'block';
1930				}
1931				if (t.hovered && !_constants.IS_IOS && !_constants.IS_ANDROID && t.options.useSmoothHover) {
1932					(0, _dom.removeClass)(t.hovered, 'no-hover');
1933				}
1934			}
1935		});
1936		t.slider.addEventListener('mouseleave', function () {
1937			if (t.getDuration() !== Infinity) {
1938				if (!mouseIsDown) {
1939					if (t.timefloat) {
1940						t.timefloat.style.display = 'none';
1941					}
1942					if (t.hovered && t.options.useSmoothHover) {
1943						(0, _dom.addClass)(t.hovered, 'no-hover');
1944					}
1945				}
1946			}
1947		});
1948
1949		t.broadcastCallback = function (e) {
1950			var broadcast = controls.querySelector('.' + t.options.classPrefix + 'broadcast');
1951			if (!t.options.forceLive && t.getDuration() !== Infinity) {
1952				if (broadcast) {
1953					t.slider.style.display = '';
1954					broadcast.remove();
1955				}
1956
1957				player.setProgressRail(e);
1958				if (!t.forcedHandlePause) {
1959					player.setCurrentRail(e);
1960				}
1961				updateSlider();
1962			} else if (!broadcast || t.options.forceLive) {
1963				var label = _document2.default.createElement('span');
1964				label.className = t.options.classPrefix + 'broadcast';
1965				label.innerText = _i18n2.default.t('mejs.live-broadcast');
1966				t.slider.style.display = 'none';
1967				t.rail.appendChild(label);
1968			}
1969		};
1970
1971		media.addEventListener('progress', t.broadcastCallback);
1972		media.addEventListener('timeupdate', t.broadcastCallback);
1973		media.addEventListener('play', function () {
1974			t.buffer.style.display = 'none';
1975		});
1976		media.addEventListener('playing', function () {
1977			t.buffer.style.display = 'none';
1978		});
1979		media.addEventListener('seeking', function () {
1980			t.buffer.style.display = '';
1981		});
1982		media.addEventListener('seeked', function () {
1983			t.buffer.style.display = 'none';
1984		});
1985		media.addEventListener('pause', function () {
1986			t.buffer.style.display = 'none';
1987		});
1988		media.addEventListener('waiting', function () {
1989			t.buffer.style.display = '';
1990		});
1991		media.addEventListener('loadeddata', function () {
1992			t.buffer.style.display = '';
1993		});
1994		media.addEventListener('canplay', function () {
1995			t.buffer.style.display = 'none';
1996		});
1997		media.addEventListener('error', function () {
1998			t.buffer.style.display = 'none';
1999		});
2000
2001		t.getElement(t.container).addEventListener('controlsresize', function (e) {
2002			if (t.getDuration() !== Infinity) {
2003				player.setProgressRail(e);
2004				if (!t.forcedHandlePause) {
2005					player.setCurrentRail(e);
2006				}
2007			}
2008		});
2009	},
2010	cleanprogress: function cleanprogress(player, controls, layers, media) {
2011		media.removeEventListener('progress', player.broadcastCallback);
2012		media.removeEventListener('timeupdate', player.broadcastCallback);
2013		if (player.rail) {
2014			player.rail.remove();
2015		}
2016	},
2017	setProgressRail: function setProgressRail(e) {
2018		var t = this,
2019		    target = e !== undefined ? e.detail.target || e.target : t.media;
2020
2021		var percent = null;
2022
2023		if (target && target.buffered && target.buffered.length > 0 && target.buffered.end && t.getDuration()) {
2024			percent = target.buffered.end(target.buffered.length - 1) / t.getDuration();
2025		} else if (target && target.bytesTotal !== undefined && target.bytesTotal > 0 && target.bufferedBytes !== undefined) {
2026				percent = target.bufferedBytes / target.bytesTotal;
2027			} else if (e && e.lengthComputable && e.total !== 0) {
2028					percent = e.loaded / e.total;
2029				}
2030
2031		if (percent !== null) {
2032			percent = Math.min(1, Math.max(0, percent));
2033
2034			if (t.loaded) {
2035				t.setTransformStyle(t.loaded, 'scaleX(' + percent + ')');
2036			}
2037		}
2038	},
2039	setCurrentRailHandle: function setCurrentRailHandle(fakeTime) {
2040		var t = this;
2041		t.setCurrentRailMain(t, fakeTime);
2042	},
2043	setCurrentRail: function setCurrentRail() {
2044		var t = this;
2045		t.setCurrentRailMain(t);
2046	},
2047	setCurrentRailMain: function setCurrentRailMain(t, fakeTime) {
2048		if (t.getCurrentTime() !== undefined && t.getDuration()) {
2049			var nTime = typeof fakeTime === 'undefined' ? t.getCurrentTime() : fakeTime;
2050
2051			if (t.total && t.handle) {
2052				var tW = parseFloat(getComputedStyle(t.total).width);
2053
2054				var newWidth = Math.round(tW * nTime / t.getDuration()),
2055				    handlePos = newWidth - Math.round(t.handle.offsetWidth / 2);
2056
2057				handlePos = handlePos < 0 ? 0 : handlePos;
2058				t.setTransformStyle(t.current, 'scaleX(' + newWidth / tW + ')');
2059				t.setTransformStyle(t.handle, 'translateX(' + handlePos + 'px)');
2060
2061				if (t.options.useSmoothHover && !(0, _dom.hasClass)(t.hovered, 'no-hover')) {
2062					var pos = parseInt(t.hovered.getAttribute('pos'), 10);
2063					pos = isNaN(pos) ? 0 : pos;
2064
2065					var hoverScaleX = pos / tW - handlePos / tW;
2066
2067					t.hovered.style.left = handlePos + 'px';
2068					t.setTransformStyle(t.hovered, 'scaleX(' + hoverScaleX + ')');
2069
2070					if (hoverScaleX >= 0) {
2071						(0, _dom.removeClass)(t.hovered, 'negative');
2072					} else {
2073						(0, _dom.addClass)(t.hovered, 'negative');
2074					}
2075				}
2076			}
2077		}
2078	}
2079});
2080
2081},{"16":16,"2":2,"25":25,"26":26,"30":30,"5":5}],12:[function(_dereq_,module,exports){
2082'use strict';
2083
2084var _document = _dereq_(2);
2085
2086var _document2 = _interopRequireDefault(_document);
2087
2088var _player = _dereq_(16);
2089
2090var _player2 = _interopRequireDefault(_player);
2091
2092var _time = _dereq_(30);
2093
2094var _dom = _dereq_(26);
2095
2096function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2097
2098Object.assign(_player.config, {
2099	duration: 0,
2100
2101	timeAndDurationSeparator: '<span> | </span>'
2102});
2103
2104Object.assign(_player2.default.prototype, {
2105	buildcurrent: function buildcurrent(player, controls, layers, media) {
2106		var t = this,
2107		    time = _document2.default.createElement('div');
2108
2109		time.className = t.options.classPrefix + 'time';
2110		time.setAttribute('role', 'timer');
2111		time.setAttribute('aria-live', 'off');
2112		time.innerHTML = '<span class="' + t.options.classPrefix + 'currenttime">' + (0, _time.secondsToTimeCode)(0, player.options.alwaysShowHours, player.options.showTimeco
2112deFrameCount, player.options.framesPerSecond, player.options.secondsDecimalLength, player.options.timeFormat) + '</span>';
2113
2114		t.addControlElement(time, 'current');
2115		player.updateCurrent();
2116		t.updateTimeCallback = function () {
2117			if (t.controlsAreVisible) {
2118				player.updateCurrent();
2119			}
2120		};
2121		media.addEventListener('timeupdate', t.updateTimeCallback);
2122	},
2123	cleancurrent: function cleancurrent(player, controls, layers, media) {
2124		media.removeEventListener('timeupdate', player.updateTimeCallback);
2125	},
2126	buildduration: function buildduration(player, controls, layers, media) {
2127		var t = this,
2128		    currTime = controls.lastChild.querySelector('.' + t.options.classPrefix + 'currenttime');
2129
2130		if (currTime) {
2131			controls.querySelector('.' + t.options.classPrefix + 'time').innerHTML += t.options.timeAndDurationSeparator + '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2132		} else {
2133			if (controls.querySelector('.' + t.options.classPrefix + 'currenttime')) {
2134				(0, _dom.addClass)(controls.querySelector('.' + t.options.classPrefix + 'currenttime').parentNode, t.options.classPrefix + 'currenttime-container');
2135			}
2136
2137			var duration = _document2.default.createElement('div');
2138			duration.className = t.options.classPrefix + 'time ' + t.options.classPrefix + 'duration-container';
2139			duration.innerHTML = '<span class="' + t.options.classPrefix + 'duration">' + ((0, _time.secondsToTimeCode)(t.options.duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat) + '</span>');
2140
2141			t.addControlElement(duration, 'duration');
2142		}
2143
2144		t.updateDurationCallback = function () {
2145			if (t.controlsAreVisible) {
2146				player.updateDuration();
2147			}
2148		};
2149
2150		media.addEventListener('timeupdate', t.updateDurationCallback);
2151	},
2152	cleanduration: function cleanduration(player, controls, layers, media) {
2153		media.removeEventListener('timeupdate', player.updateDurationCallback);
2154	},
2155	updateCurrent: function updateCurrent() {
2156		var t = this;
2157
2158		var currentTime = t.getCurrentTime();
2159
2160		if (isNaN(currentTime)) {
2161			currentTime = 0;
2162		}
2163
2164		var timecode = (0, _time.secondsToTimeCode)(currentTime, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2165
2166		if (timecode.length > 5) {
2167			(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2168		} else {
2169			(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2170		}
2171
2172		if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime')) {
2173			t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'currenttime').innerText = timecode;
2174		}
2175	},
2176	updateDuration: function updateDuration() {
2177		var t = this;
2178
2179		var duration = t.getDuration();
2180
2181		if (isNaN(duration) || duration === Infinity || duration < 0) {
2182			t.media.duration = t.options.duration = duration = 0;
2183		}
2184
2185		if (t.options.duration > 0) {
2186			duration = t.options.duration;
2187		}
2188
2189		var timecode = (0, _time.secondsToTimeCode)(duration, t.options.alwaysShowHours, t.options.showTimecodeFrameCount, t.options.framesPerSecond, t.options.secondsDecimalLength, t.options.timeFormat);
2190
2191		if (timecode.length > 5) {
2192			(0, _dom.addClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2193		} else {
2194			(0, _dom.removeClass)(t.getElement(t.container), t.options.classPrefix + 'long-video');
2195		}
2196
2197		if (t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration') && duration > 0) {
2198			t.getElement(t.controls).querySelector('.' + t.options.classPrefix + 'duration').innerHTML = timecode;
2199		}
2200	}
2201});
2202
2203},{"16":16,"2":2,"26":26,"30":30}],13:[function(_dereq_,module,exports){
2204'use strict';
2205
2206var _document = _dereq_(2);
2207
2208var _document2 = _interopRequireDefault(_document);
2209
2210var _mejs = _dereq_(7);
2211
2212var _mejs2 = _interopRequireDefault(_mejs);
2213
2214var _i18n = _dereq_(5);
2215
2216var _i18n2 = _interopRequireDefault(_i18n);
2217
2218var _player = _dereq_(16);
2219
2220var _player2 = _interopRequireDefault(_player);
2221
2222var _time = _dereq_(30);
2223
2224var _general = _dereq_(27);
2225
2226var _dom = _dereq_(26);
2227
2228function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2229
2230Object.assign(_player.config, {
2231	startLanguage: '',
2232
2233	tracksText: null,
2234
2235	chaptersText: null,
2236
2237	tracksAriaLive: false,
2238
2239	hideCaptionsButtonWhenEmpty: true,
2240
2241	toggleCaptionsButtonWhenOnlyOne: false,
2242
2243	slidesSelector: ''
2244});
2245
2246Object.assign(_player2.default.prototype, {
2247	hasChapters: false,
2248
2249	buildtracks: function buildtracks(player, controls, layers, media) {
2250
2251		this.findTracks();
2252
2253		if (!player.tracks.length && (!player.trackFiles || !player.trackFiles.length === 0)) {
2254			return;
2255		}
2256
2257		var t = this,
2258		    attr = t.options.tracksAriaLive ? ' role="log" aria-live="assertive" aria-atomic="false"' : '',
2259		    tracksTitle = (0, _general.isString)(t.options.tracksText) ? t.options.tracksText : _i18n2.default.t('mejs.captions-subtitles'),
2260		    chaptersTitle = (0, _general.isString)(t.options.chaptersText) ? t.options.chaptersText : _i18n2.default.t('mejs.captions-chapters'),
2261		    total = player.trackFiles === null ? player.tracks.length : player.trackFiles.length;
2262
2263		if (t.domNode.textTracks) {
2264			for (var i = t.domNode.textTracks.length - 1; i >= 0; i--) {
2265				t.domNode.textTracks[i].mode = 'hidden';
2266			}
2267		}
2268
2269		t.cleartracks(player);
2270
2271		player.captions = _document2.default.createElement('div');
2272		player.captions.className = t.options.classPrefix + 'captions-layer ' + t.options.classPrefix + 'layer';
2273		player.captions.innerHTML = '<div class="' + t.options.classPrefix + 'captions-position ' + t.options.classPrefix + 'captions-position-hover"' + attr + '>' + ('<span class="' + t.options.classPrefix + 'captions-text"></span>') + '</div>';
2274		player.captions.style.display = 'none';
2275		layers.insertBefore(player.captions, layers.firstChild);
2276
2277		player.captionsText = player.captions.querySelector('.' + t.options.classPrefix + 'captions-text');
2278
2279		player.captionsButton = _document2.default.createElement('div');
2280		player.captionsButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'captions-button';
2281		player.captionsButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + tracksTitle + '" aria-label="' + tracksTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'captions-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'captions-selector-list">') + ('<li class="' + t.options.classPrefix + 'captions-selector-list-item">') + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + player.id + '_captions" id="' + player.id + '_captions_none" ') + 'value="none" checked disabled>' + ('<label class="' + t.options.classPrefix + 'captions-selector-label ') + (t.options.classPrefix + 'captions-selected" ') + ('for="' + player.id + '_captions_none">' + _i18n2.default.t('mejs.none') + '</label>') + '</li>' + '</ul>' + '</div>';
2282
2283		t.addControlElement(player.captionsButton, 'tracks');
2284
2285		player.captionsButton.querySelector('.' + t.options.classPrefix + 'captions-selector-input').disabled = false;
2286
2287		player.chaptersButton = _document2.default.createElement('div');
2288		player.chaptersButton.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'chapters-button';
2289		player.chaptersButton.innerHTML = '<button type="button" aria-controls="' + t.id + '" title="' + chaptersTitle + '" aria-label="' + chaptersTitle + '" tabindex="0"></button>' + ('<div class="' + t.options.classPrefix + 'chapters-selector ' + t.options.classPrefix + 'offscreen">') + ('<ul class="' + t.options.classPrefix + 'chapters-selector-list"></ul>') + '</div>';
2290
2291		var subtitleCount = 0;
2292
2293		for (var _i = 0; _i < total; _i++) {
2294			var kind = player.tracks[_i].kind,
2295			    src = player.tracks[_i].src;
2296			if (src.trim()) {
2297				if (kind === 'subtitles' || kind === 'captions') {
2298					subtitleCount++;
2299				} else if (kind === 'chapters' && !controls.querySelector('.' + t.options.classPrefix + 'chapter-selector')) {
2300					player.captionsButton.parentNode.insertBefore(player.chaptersButton, player.captionsButton);
2301				}
2302			}
2303		}
2304
2305		player.trackToLoad = -1;
2306		player.selectedTrack = null;
2307		player.isLoadingTrack = false;
2308
2309		for (var _i2 = 0; _i2 < total; _i2++) {
2310			var _kind = player.tracks[_i2].kind;
2311			if (player.tracks[_i2].src.trim() && (_kind === 'subtitles' || _kind === 'captions')) {
2312				player.addTrackButton(player.tracks[_i2].trackId, player.tracks[_i2].srclang, player.tracks[_i2].label);
2313			}
2314		}
2315
2316		player.loadNextTrack();
2317
2318		var inEvents = ['mouseenter', 'focusin'],
2319		    outEvents = ['mouseleave', 'focusout'];
2320
2321		if (t.options.toggleCaptionsButtonWhenOnlyOne && subtitleCount === 1) {
2322			player.captionsButton.addEventListener('click', function (e) {
2323				var trackId = 'none';
2324				if (player.selectedTrack === null) {
2325					trackId = player.tracks[0].trackId;
2326				}
2327				var keyboard = e.keyCode || e.which;
2328				player.setTrack(trackId, typeof keyboard !== 'undefined');
2329			});
2330		} else {
2331			var labels = player.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selector-label'),
2332			    captions = player.captionsButton.querySelectorAll('input[type=radio]');
2333
2334			for (var _i3 = 0, _total = inEvents.length; _i3 < _total; _i3++) {
2335				player.captionsButton.addEventListener(inEvents[_i3], function () {
2336					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2337				});
2338			}
2339
2340			for (var _i4 = 0, _total2 = outEvents.length; _i4 < _total2; _i4++) {
2341				player.captionsButton.addEventListener(outEvents[_i4], function () {
2342					(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'captions-selector'), t.options.classPrefix + 'offscreen');
2343				});
2344			}
2345
2346			for (var _i5 = 0, _total3 = captions.length; _i5 < _total3; _i5++) {
2347				captions[_i5].addEventListener('click', function (e) {
2348					var keyboard = e.keyCode || e.which;
2349					player.setTrack(this.value, typeof keyboard !== 'undefined');
2350				});
2351			}
2352
2353			for (var _i6 = 0, _total4 = labels.length; _i6 < _total4; _i6++) {
2354				labels[_i6].addEventListener('click', function (e) {
2355					var radio = (0, _dom.siblings)(this, function (el) {
2356						return el.tagName === 'INPUT';
2357					})[0],
2358					    event = (0, _general.createEvent)('click', radio);
2359					radio.dispatchEvent(event);
2360					e.preventDefault();
2361				});
2362			}
2363
2364			player.captionsButton.addEventListener('keydown', function (e) {
2365				e.stopPropagation();
2366			});
2367		}
2368
2369		for (var _i7 = 0, _total5 = inEvents.length; _i7 < _total5; _i7++) {
2370			player.chaptersButton.addEventListener(inEvents[_i7], function () {
2371				if (this.querySelector('.' + t.options.classPrefix + 'chapters-selector-list').children.length) {
2372					(0, _dom.removeClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2373				}
2374			});
2375		}
2376
2377		for (var _i8 = 0, _total6 = outEvents.length; _i8 < _total6; _i8++) {
2378			player.chaptersButton.addEventListener(outEvents[_i8], function () {
2379				(0, _dom.addClass)(this.querySelector('.' + t.options.classPrefix + 'chapters-selector'), t.options.classPrefix + 'offscreen');
2380			});
2381		}
2382
2383		player.chaptersButton.addEventListener('keydown', function (e) {
2384			e.stopPropagation();
2385		});
2386
2387		if (!player.options.alwaysShowControls) {
2388			player.getElement(player.container).addEventListener('controlsshown', function () {
2389				(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2390			});
2391
2392			player.getElement(player.container).addEventListener('controlshidden', function () {
2393				if (!media.paused) {
2394					(0, _dom.removeClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2395				}
2396			});
2397		} else {
2398			(0, _dom.addClass)(player.getElement(player.container).querySelector('.' + t.options.classPrefix + 'captions-position'), t.options.classPrefix + 'captions-position-hover');
2399		}
2400
2401		media.addEventListener('timeupdate', function () {
2402			player.displayCaptions();
2403		});
2404
2405		if (player.options.slidesSelector !== '') {
2406			player.slidesContainer = _document2.default.querySelectorAll(player.options.slidesSelector);
2407
2408			media.addEventListener('timeupdate', function () {
2409				player.displaySlides();
2410			});
2411		}
2412	},
2413	cleartracks: function cleartracks(player) {
2414		if (player) {
2415			if (player.captions) {
2416				player.captions.remove();
2417			}
2418			if (player.chapters) {
2419				player.chapters.remove();
2420			}
2421			if (player.captionsText) {
2422				player.captionsText.remove();
2423			}
2424			if (player.captionsButton) {
2425				player.captionsButton.remove();
2426			}
2427			if (player.chaptersButton) {
2428				player.chaptersButton.remove();
2429			}
2430		}
2431	},
2432	rebuildtracks: function rebuildtracks() {
2433		var t = this;
2434		t.findTracks();
2435		t.buildtracks(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
2436	},
2437	findTracks: function findTracks() {
2438		var t = this,
2439		    tracktags = t.trackFiles === null ? t.node.querySelectorAll('track') : t.trackFiles,
2440		    total = tracktags.length;
2441
2442		t.tracks = [];
2443		for (var i = 0; i < total; i++) {
2444			var track = tracktags[i],
2445			    srclang = track.getAttribute('srclang').toLowerCase() || '',
2446			    trackId = t.id + '_track_' + i + '_' + track.getAttribute('kind') + '_' + srclang;
2447			t.tracks.push({
2448				trackId: trackId,
2449				srclang: srclang,
2450				src: track.getAttribute('src'),
2451				kind: track.getAttribute('kind'),
2452				label: track.getAttribute('label') || '',
2453				entries: [],
2454				isLoaded: false
2455			});
2456		}
2457	},
2458	setTrack: function setTrack(trackId, setByKeyboard) {
2459
2460		var t = this,
2461		    radios = t.captionsButton.querySelectorAll('input[type="radio"]'),
2462		    captions = t.captionsButton.querySelectorAll('.' + t.options.classPrefix + 'captions-selected'),
2463		    track = t.captionsButton.querySelector('input[value="' + trackId + '"]');
2464
2465		for (var i = 0, total = radios.length; i < total; i++) {
2466			radios[i].checked = false;
2467		}
2468
2469		for (var _i9 = 0, _total7 = captions.length; _i9 < _total7; _i9++) {
2470			(0, _dom.removeClass)(captions[_i9], t.options.classPrefix + 'captions-selected');
2471		}
2472
2473		track.checked = true;
2474		var labels = (0, _dom.siblings)(track, function (el) {
2475			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2476		});
2477		for (var _i10 = 0, _total8 = labels.length; _i10 < _total8; _i10++) {
2478			(0, _dom.addClass)(labels[_i10], t.options.classPrefix + 'captions-selected');
2479		}
2480
2481		if (trackId === 'none') {
2482			t.selectedTrack = null;
2483			(0, _dom.removeClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2484		} else {
2485			for (var _i11 = 0, _total9 = t.tracks.length; _i11 < _total9; _i11++) {
2486				var _track = t.tracks[_i11];
2487				if (_track.trackId === trackId) {
2488					if (t.selectedTrack === null) {
2489						(0, _dom.addClass)(t.captionsButton, t.options.classPrefix + 'captions-enabled');
2490					}
2491					t.selectedTrack = _track;
2492					t.captions.setAttribute('lang', t.selectedTrack.srclang);
2493					t.displayCaptions();
2494					break;
2495				}
2496			}
2497		}
2498
2499		var event = (0, _general.createEvent)('captionschange', t.media);
2500		event.detail.caption = t.selectedTrack;
2501		t.media.dispatchEvent(event);
2502
2503		if (!setByKeyboard) {
2504			setTimeout(function () {
2505				t.getElement(t.container).focus();
2506			}, 500);
2507		}
2508	},
2509	loadNextTrack: function loadNextTrack() {
2510		var t = this;
2511
2512		t.trackToLoad++;
2513		if (t.trackToLoad < t.tracks.length) {
2514			t.isLoadingTrack = true;
2515			t.loadTrack(t.trackToLoad);
2516		} else {
2517			t.isLoadingTrack = false;
2518			t.checkForTracks();
2519		}
2520	},
2521	loadTrack: function loadTrack(index) {
2522		var t = this,
2523		    track = t.tracks[index];
2524
2525		if (track !== undefined && (track.src !== undefined || track.src !== "")) {
2526			(0, _dom.ajax)(track.src, 'text', function (d) {
2527				track.entries = typeof d === 'string' && /<tt\s+xml/ig.exec(d) ? _mejs2.default.TrackFormatParser.dfxp.parse(d) : _mejs2.default.TrackFormatParser.webvtt.parse(d);
2528
2529				track.isLoaded = true;
2530				t.enableTrackButton(track);
2531				t.loadNextTrack();
2532
2533				if (track.kind === 'slides') {
2534					t.setupSlides(track);
2535				} else if (track.kind === 'chapters' && !t.hasChapters) {
2536						t.drawChapters(track);
2537						t.hasChapters = true;
2538					}
2539			}, function () {
2540				t.removeTrackButton(track.trackId);
2541				t.loadNextTrack();
2542			});
2543		}
2544	},
2545	enableTrackButton: function enableTrackButton(track) {
2546		var t = this,
2547		    lang = track.srclang,
2548		    target = _document2.default.getElementById('' + track.trackId);
2549
2550		if (!target) {
2551			return;
2552		}
2553
2554		var label = track.label;
2555
2556		if (label === '') {
2557			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2558		}
2559		target.disabled = false;
2560		var targetSiblings = (0, _dom.siblings)(target, function (el) {
2561			return (0, _dom.hasClass)(el, t.options.classPrefix + 'captions-selector-label');
2562		});
2563		for (var i = 0, total = targetSiblings.length; i < total; i++) {
2564			targetSiblings[i].innerHTML = label;
2565		}
2566
2567		if (t.options.startLanguage === lang) {
2568			target.checked = true;
2569			var event = (0, _general.createEvent)('click', target);
2570			target.dispatchEvent(event);
2571		}
2572	},
2573	removeTrackButton: function removeTrackButton(trackId) {
2574		var element = _document2.default.getElementById('' + trackId);
2575		if (element) {
2576			var button = element.closest('li');
2577			if (button) {
2578				button.remove();
2579			}
2580		}
2581	},
2582	addTrackButton: function addTrackButton(trackId, lang, label) {
2583		var t = this;
2584		if (label === '') {
2585			label = _i18n2.default.t(_mejs2.default.language.codes[lang]) || lang;
2586		}
2587
2588		t.captionsButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'captions-selector-list-item">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_captions" id="' + trackId + '" value="' + trackId + '" disabled>') + ('<label class="' + t.options.classPrefix + 'captions-selector-label"') + ('for="' + trackId + '">' + label + ' (loading)</label>') + '</li>';
2589	},
2590	checkForTracks: function checkForTracks() {
2591		var t = this;
2592
2593		var hasSubtitles = false;
2594
2595		if (t.options.hideCaptionsButtonWhenEmpty) {
2596			for (var i = 0, total = t.tracks.length; i < total; i++) {
2597				var kind = t.tracks[i].kind;
2598				if ((kind === 'subtitles' || kind === 'captions') && t.tracks[i].isLoaded) {
2599					hasSubtitles = true;
2600					break;
2601				}
2602			}
2603
2604			t.captionsButton.style.display = hasSubtitles ? '' : 'none';
2605			t.setControlsSize();
2606		}
2607	},
2608	displayCaptions: function displayCaptions() {
2609		if (this.tracks === undefined) {
2610			return;
2611		}
2612
2613		var t = this,
2614		    track = t.selectedTrack,
2615		    sanitize = function sanitize(html) {
2616			var div = _document2.default.createElement('div');
2617			div.innerHTML = html;
2618
2619			var scripts = div.getElementsByTagName('script');
2620			var i = scripts.length;
2621			while (i--) {
2622				scripts[i].remove();
2623			}
2624
2625			var allElements = div.getElementsByTagName('*');
2626			for (var _i12 = 0, n = allElements.length; _i12 < n; _i12++) {
2627				var attributesObj = allElements[_i12].attributes,
2628				    attributes = Array.prototype.slice.call(attributesObj);
2629
2630				for (var j = 0, total = attributes.length; j < total; j++) {
2631					if (attributes[j].name.startsWith('on') || attributes[j].value.startsWith('javascript')) {
2632						allElements[_i12].remove();
2633					} else if (attributes[j].name === 'style') {
2634						allElements[_i12].removeAttribute(attributes[j].name);
2635					}
2636				}
2637			}
2638			return div.innerHTML;
2639		};
2640
2641		if (track !== null && track.isLoaded) {
2642			var i = t.searchTrackPosition(track.entries, t.media.currentTime);
2643			if (i > -1) {
2644				t.captionsText.innerHTML = sanitize(track.entries[i].text);
2645				t.captionsText.className = t.options.classPrefix + 'captions-text ' + (track.entries[i].identifier || '');
2646				t.captions.style.display = '';
2647				t.captions.style.height = '0px';
2648				return;
2649			}
2650			t.captions.style.display = 'none';
2651		} else {
2652			t.captions.style.display = 'none';
2653		}
2654	},
2655	setupSlides: function setupSlides(track) {
2656		var t = this;
2657		t.slides = track;
2658		t.slides.entries.imgs = [t.slides.entries.length];
2659		t.showSlide(0);
2660	},
2661	showSlide: function showSlide(index) {
2662		var _this = this;
2663
2664		var t = this;
2665
2666		if (t.tracks === undefined || t.slidesContainer === undefined) {
2667			return;
2668		}
2669
2670		var url = t.slides.entries[index].text;
2671
2672		var img = t.slides.entries[index].imgs;
2673
2674		if (img === undefined || img.fadeIn === undefined) {
2675			var image = _document2.default.createElement('img');
2676			image.src = url;
2677			image.addEventListener('load', function () {
2678				var self = _this,
2679				    visible = (0, _dom.siblings)(self, function (el) {
2680					return visible(el);
2681				});
2682				self.style.display = 'none';
2683				t.slidesContainer.innerHTML += self.innerHTML;
2684				(0, _dom.fadeIn)(t.slidesContainer.querySelector(image));
2685				for (var i = 0, total = visible.length; i < total; i++) {
2686					(0, _dom.fadeOut)(visible[i], 400);
2687				}
2688			});
2689			t.slides.entries[index].imgs = img = image;
2690		} else if (!(0, _dom.visible)(img)) {
2691			var _visible = (0, _dom.siblings)(self, function (el) {
2692				return _visible(el);
2693			});
2694			(0, _dom.fadeIn)(t.slidesContainer.querySelector(img));
2695			for (var i = 0, total = _visible.length; i < total; i++) {
2696				(0, _dom.fadeOut)(_visible[i]);
2697			}
2698		}
2699	},
2700	displaySlides: function displaySlides() {
2701		var t = this;
2702
2703		if (this.slides === undefined) {
2704			return;
2705		}
2706
2707		var slides = t.slides,
2708		    i = t.searchTrackPosition(slides.entries, t.media.currentTime);
2709
2710		if (i > -1) {
2711			t.showSlide(i);
2712		}
2713	},
2714	drawChapters: function drawChapters(chapters) {
2715		var t = this,
vendor: 4,204 bytes, lines 2716-2852
2716		    total = chapters.entries.length;
2717
2718		if (!total) {
2719			return;
2720		}
2721
2722		t.chaptersButton.querySelector('ul').innerHTML = '';
2723
2724		for (var i = 0; i < total; i++) {
2725			t.chaptersButton.querySelector('ul').innerHTML += '<li class="' + t.options.classPrefix + 'chapters-selector-list-item" ' + 'role="menuitemcheckbox" aria-live="polite" aria-disabled="false" aria-checked="false">' + ('<input type="radio" class="' + t.options.classPrefix + 'captions-selector-input" ') + ('name="' + t.id + '_chapters" id="' + t.id + '_chapters_' + i + '" value="' + chapters.entries[i].start + '" disabled>') + ('<label class="' + t.options.classPrefix + 'chapters-selector-label"') + ('for="' + t.id + '_chapters_' + i + '">' + chapters.entries[i].text + '</label>') + '</li>';
2726		}
2727
2728		var radios = t.chaptersButton.querySelectorAll('input[type="radio"]'),
2729		    labels = t.chaptersButton.querySelectorAll('.' + t.options.classPrefix + 'chapters-selector-label');
2730
2731		for (var _i13 = 0, _total10 = radios.length; _i13 < _total10; _i13++) {
2732			radios[_i13].disabled = false;
2733			radios[_i13].checked = false;
2734			radios[_i13].addEventListener('click', function (e) {
2735				var self = this,
2736				    listItems = t.chaptersButton.querySelectorAll('li'),
2737				    label = (0, _dom.siblings)(self, function (el) {
2738					return (0, _dom.hasClass)(el, t.options.classPrefix + 'chapters-selector-label');
2739				})[0];
2740
2741				self.checked = true;
2742				self.parentNode.setAttribute('aria-checked', true);
2743				(0, _dom.addClass)(label, t.options.classPrefix + 'chapters-selected');
2744				(0, _dom.removeClass)(t.chaptersButton.querySelector('.' + t.options.classPrefix + 'chapters-selected'), t.options.classPrefix + 'chapters-selected');
2745
2746				for (var _i14 = 0, _total11 = listItems.length; _i14 < _total11; _i14++) {
2747					listItems[_i14].setAttribute('aria-checked', false);
2748				}
2749
2750				var keyboard = e.keyCode || e.which;
2751				if (typeof keyboard === 'undefined') {
2752					setTimeout(function () {
2753						t.getElement(t.container).focus();
2754					}, 500);
2755				}
2756
2757				t.media.setCurrentTime(parseFloat(self.value));
2758				if (t.media.paused) {
2759					t.media.play();
2760				}
2761			});
2762		}
2763
2764		for (var _i15 = 0, _total12 = labels.length; _i15 < _total12; _i15++) {
2765			labels[_i15].addEventListener('click', function (e) {
2766				var radio = (0, _dom.siblings)(this, function (el) {
2767					return el.tagName === 'INPUT';
2768				})[0],
2769				    event = (0, _general.createEvent)('click', radio);
2770				radio.dispatchEvent(event);
2771				e.preventDefault();
2772			});
2773		}
2774	},
2775	searchTrackPosition: function searchTrackPosition(tracks, currentTime) {
2776		var lo = 0,
2777		    hi = tracks.length - 1,
2778		    mid = void 0,
2779		    start = void 0,
2780		    stop = void 0;
2781
2782		while (lo <= hi) {
2783			mid = lo + hi >> 1;
2784			start = tracks[mid].start;
2785			stop = tracks[mid].stop;
2786
2787			if (currentTime >= start && currentTime < stop) {
2788				return mid;
2789			} else if (start < currentTime) {
2790				lo = mid + 1;
2791			} else if (start > currentTime) {
2792				hi = mid - 1;
2793			}
2794		}
2795
2796		return -1;
2797	}
2798});
2799
2800_mejs2.default.language = {
2801	codes: {
2802		af: 'mejs.afrikaans',
2803		sq: 'mejs.albanian',
2804		ar: 'mejs.arabic',
2805		be: 'mejs.belarusian',
2806		bg: 'mejs.bulgarian',
2807		ca: 'mejs.catalan',
2808		zh: 'mejs.chinese',
2809		'zh-cn': 'mejs.chinese-simplified',
2810		'zh-tw': 'mejs.chines-traditional',
2811		hr: 'mejs.croatian',
2812		cs: 'mejs.czech',
2813		da: 'mejs.danish',
2814		nl: 'mejs.dutch',
2815		en: 'mejs.english',
2816		et: 'mejs.estonian',
2817		fl: 'mejs.filipino',
2818		fi: 'mejs.finnish',
2819		fr: 'mejs.french',
2820		gl: 'mejs.galician',
2821		de: 'mejs.german',
2822		el: 'mejs.greek',
2823		ht: 'mejs.haitian-creole',
2824		iw: 'mejs.hebrew',
2825		hi: 'mejs.hindi',
2826		hu: 'mejs.hungarian',
2827		is: 'mejs.icelandic',
2828		id: 'mejs.indonesian',
2829		ga: 'mejs.irish',
2830		it: 'mejs.italian',
2831		ja: 'mejs.japanese',
2832		ko: 'mejs.korean',
2833		lv: 'mejs.latvian',
2834		lt: 'mejs.lithuanian',
2835		mk: 'mejs.macedonian',
2836		ms: 'mejs.malay',
2837		mt: 'mejs.maltese',
2838		no: 'mejs.norwegian',
2839		fa: 'mejs.persian',
2840		pl: 'mejs.polish',
2841		pt: 'mejs.portuguese',
2842		ro: 'mejs.romanian',
2843		ru: 'mejs.russian',
2844		sr: 'mejs.serbian',
2845		sk: 'mejs.slovak',
2846		sl: 'mejs.slovenian',
2847		es: 'mejs.spanish',
2848		sw: 'mejs.swahili',
2849		sv: 'mejs.swedish',
2850		tl: 'mejs.tagalog',
2851		th: 'mejs.thai',
2852		tr: 'mejs.turkish',
2853		uk: 'mejs.ukrainian',
2854		vi: 'mejs.vietnamese',
2855		cy: 'mejs.welsh',
2856		yi: 'mejs.yiddish'
2857	}
2858};
2859
2860_mejs2.default.TrackFormatParser = {
2861	webvtt: {
2862		pattern: /^((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{1,3})?) --\> ((?:[0-9]{1,2}:)?[0-9]{2}:[0-9]{2}([,.][0-9]{3})?)(.*)$/,
2863
2864		parse: function parse(trackText) {
2865			var lines = trackText.split(/\r?\n/),
2866			    entries = [];
2867
2868			var timecode = void 0,
2869			    text = void 0,
2870			    identifier = void 0;
2871
2872			for (var i = 0, total = lines.length; i < total; i++) {
2873				timecode = this.pattern.exec(lines[i]);
2874
2875				if (timecode && i < lines.length) {
2876					if (i - 1 >= 0 && lines[i - 1] !== '') {
2877						identifier = lines[i - 1];
2878					}
2879					i++;
2880
2881					text = lines[i];
2882					i++;
2883					while (lines[i] !== '' && i < lines.length) {
2884						text = text + '\n' + lines[i];
2885						i++;
2886					}
2887					text = text.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2888					entries.push({
2889						identifier: identifier,
2890						start: (0, _time.convertSMPTEtoSeconds)(timecode[1]) === 0 ? 0.200 : (0, _time.convertSMPTEtoSeconds)(timecode[1]),
2891						stop: (0, _time.convertSMPTEtoSeconds)(timecode[3]),
2892						text: text,
2893						settings: timecode[5]
2894					});
2895				}
2896				identifier = '';
2897			}
2898			return entries;
2899		}
2900	},
2901
2902	dfxp: {
2903		parse: function parse(trackText) {
2904			trackText = $(trackText).filter('tt');
2905			var container = trackText.firstChild,
2906			    lines = container.querySelectorAll('p'),
2907			    styleNode = trackText.getElementById('' + container.attr('style')),
2908			    entries = [];
2909
2910			var styles = void 0;
2911
2912			if (styleNode.length) {
2913				styleNode.removeAttribute('id');
2914				var attributes = styleNode.attributes;
2915				if (attributes.length) {
2916					styles = {};
2917					for (var i = 0, total = attributes.length; i < total; i++) {
2918						styles[attributes[i].name.split(":")[1]] = attributes[i].value;
2919					}
2920				}
2921			}
2922
2923			for (var _i16 = 0, _total13 = lines.length; _i16 < _total13; _i16++) {
2924				var style = void 0,
2925				    _temp = {
2926					start: null,
2927					stop: null,
2928					style: null,
2929					text: null
2930				};
2931
2932				if (lines.eq(_i16).attr('begin')) {
2933					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('begin'));
2934				}
2935				if (!_temp.start && lines.eq(_i16 - 1).attr('end')) {
2936					_temp.start = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 - 1).attr('end'));
2937				}
2938				if (lines.eq(_i16).attr('end')) {
2939					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16).attr('end'));
2940				}
2941				if (!_temp.stop && lines.eq(_i16 + 1).attr('begin')) {
2942					_temp.stop = (0, _time.convertSMPTEtoSeconds)(lines.eq(_i16 + 1).attr('begin'));
2943				}
2944
2945				if (styles) {
2946					style = '';
2947					for (var _style in styles) {
2948						style += _style + ':' + styles[_style] + ';';
2949					}
2950				}
2951				if (style) {
2952					_temp.style = style;
2953				}
2954				if (_temp.start === 0) {
2955					_temp.start = 0.200;
2956				}
2957				_temp.text = lines.eq(_i16).innerHTML.trim().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig, "<a href='$1' target='_blank'>$1</a>");
2958				entries.push(_temp);
2959			}
2960			return entries;
2961		}
2962	}
2963};
2964
2965},{"16":16,"2":2,"26":26,"27":27,"30":30,"5":5,"7":7}],14:[function(_dereq_,module,exports){
2966'use strict';
2967
2968var _document = _dereq_(2);
2969
2970var _document2 = _interopRequireDefault(_document);
2971
2972var _player = _dereq_(16);
2973
2974var _player2 = _interopRequireDefault(_player);
2975
2976var _i18n = _dereq_(5);
2977
2978var _i18n2 = _interopRequireDefault(_i18n);
2979
2980var _constants = _dereq_(25);
2981
2982var _general = _dereq_(27);
2983
2984var _dom = _dereq_(26);
2985
2986function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2987
2988Object.assign(_player.config, {
2989	muteText: null,
2990
2991	unmuteText: null,
2992
2993	allyVolumeControlText: null,
2994
2995	hideVolumeOnTouchDevices: true,
2996
2997	audioVolume: 'horizontal',
2998
2999	videoVolume: 'vertical',
3000
3001	startVolume: 0.8
3002});
3003
3004Object.assign(_player2.default.prototype, {
3005	buildvolume: function buildvolume(player, controls, layers, media) {
3006		if ((_constants.IS_ANDROID || _constants.IS_IOS) && this.options.hideVolumeOnTouchDevices) {
3007			return;
3008		}
3009
3010		var t = this,
3011		    mode = t.isVideo ? t.options.videoVolume : t.options.audioVolume,
3012		    muteText = (0, _general.isString)(t.options.muteText) ? t.options.muteText : _i18n2.default.t('mejs.mute'),
3013		    unmuteText = (0, _general.isString)(t.options.unmuteText) ? t.options.unmuteText : _i18n2.default.t('mejs.unmute'),
3014		    volumeControlText = (0, _general.isString)(t.options.allyVolumeControlText) ? t.options.allyVolumeControlText : _i18n2.default.t('mejs.volume-help-text'),
3015		    mute = _document2.default.createElement('div');
3016
3017		mute.className = t.options.classPrefix + 'button ' + t.options.classPrefix + 'volume-button ' + t.options.classPrefix + 'mute';
3018		mute.innerHTML = mode === 'horizontal' ? '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' : '<button type="button" aria-controls="' + t.id + '" title="' + muteText + '" aria-label="' + muteText + '" tabindex="0"></button>' + ('<a href="javascript:void(0);" class="' + t.options.classPrefix + 'volume-slider" ') + ('aria-label="' + _i18n2.default.t('mejs.volume-slider') + '" aria-valuemin="0" aria-valuemax="100" role="slider" ') + 'aria-orientation="vertical">' + ('<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>') + ('<div class="' + t.options.classPrefix + 'volume-total">') + ('<div class="' + t.options.classPrefix + 'volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'volume-handle"></div>') + '</div>' + '</a>';
3019
3020		t.addControlElement(mute, 'volume');
3021
3022		t.options.keyActions.push({
3023			keys: [38],
3024			action: function action(player) {
3025				var volumeSlider = player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'volume-slider');
3026				if (volumeSlider || player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'volume-slider').matches(':focus')) {
3027					volumeSlider.style.display = 'block';
3028				}
3029				if (player.isVideo) {
3030					player.showControls();
3031					player.startControlsTimer();
3032				}
3033
3034				var newVolume = Math.min(player.volume + 0.1, 1);
3035				player.setVolume(newVolume);
3036				if (newVolume > 0) {
3037					player.setMuted(false);
3038				}
3039			}
3040		}, {
3041			keys: [40],
3042			action: function action(player) {
3043				var volumeSlider = player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'volume-slider');
3044				if (volumeSlider) {
3045					volumeSlider.style.display = 'block';
3046				}
3047
3048				if (player.isVideo) {
3049					player.showControls();
3050					player.startControlsTimer();
3051				}
3052
3053				var newVolume = Math.max(player.volume - 0.1, 0);
3054				player.setVolume(newVolume);
3055
3056				if (newVolume <= 0.1) {
3057					player.setMuted(true);
3058				}
3059			}
3060		}, {
3061			keys: [77],
3062			action: function action(player) {
3063				player.getElement(player.container).querySelector('.' + _player.config.classPrefix + 'volume-slider').style.display = 'block';
3064				if (player.isVideo) {
3065					player.showControls();
3066					player.startControlsTimer();
3067				}
3068				if (player.media.muted) {
3069					player.setMuted(false);
3070				} else {
3071					player.setMuted(true);
3072				}
3073			}
3074		});
3075
3076		if (mode === 'horizontal') {
3077			var anchor = _document2.default.createElement('a');
3078			anchor.className = t.options.classPrefix + 'horizontal-volume-slider';
3079			anchor.href = 'javascript:void(0);';
3080			anchor.setAttribute('aria-label', _i18n2.default.t('mejs.volume-slider'));
3081			anchor.setAttribute('aria-valuemin', 0);
3082			anchor.setAttribute('aria-valuemax', 100);
3083			anchor.setAttribute('role', 'slider');
3084			anchor.innerHTML += '<span class="' + t.options.classPrefix + 'offscreen">' + volumeControlText + '</span>' + ('<div class="' + t.options.classPrefix + 'horizontal-volume-total">') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-current"></div>') + ('<div class="' + t.options.classPrefix + 'horizontal-volume-handle"></div>') + '</div>';
3085			mute.parentNode.insertBefore(anchor, mute.nextSibling);
3086		}
3087
3088		var mouseIsDown = false,
3089		    mouseIsOver = false,
3090		    modified = false,
3091		    updateVolumeSlider = function updateVolumeSlider() {
3092			var volume = Math.floor(media.volume * 100);
3093			volumeSlider.setAttribute('aria-valuenow', volume);
vendor: 20,306 bytes, lines 3094-3753
3094			volumeSlider.setAttribute('aria-valuetext', volume + '%');
3095		};
3096
3097		var volumeSlider = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-slider') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-slider'),
3098		    volumeTotal = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-total') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-total'),
3099		    volumeCurrent = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-current') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-current'),
3100		    volumeHandle = mode === 'vertical' ? t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'volume-handle') : t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'horizontal-volume-handle'),
3101		    positionVolumeHandle = function positionVolumeHandle(volume) {
3102
3103			if (volume === null || isNaN(volume) || volume === undefined) {
3104				return;
3105			}
3106
3107			volume = Math.max(0, volume);
3108			volume = Math.min(volume, 1);
3109
3110			if (volume === 0) {
3111				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3112				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3113				var button = mute.firstElementChild;
3114				button.setAttribute('title', unmuteText);
3115				button.setAttribute('aria-label', unmuteText);
3116			} else {
3117				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3118				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3119				var _button = mute.firstElementChild;
3120				_button.setAttribute('title', muteText);
3121				_button.setAttribute('aria-label', muteText);
3122			}
3123
3124			var volumePercentage = volume * 100 + '%',
3125			    volumeStyles = getComputedStyle(volumeHandle);
3126
3127			if (mode === 'vertical') {
3128				volumeCurrent.style.bottom = 0;
3129				volumeCurrent.style.height = volumePercentage;
3130				volumeHandle.style.bottom = volumePercentage;
3131				volumeHandle.style.marginBottom = -parseFloat(volumeStyles.height) / 2 + 'px';
3132			} else {
3133				volumeCurrent.style.left = 0;
3134				volumeCurrent.style.width = volumePercentage;
3135				volumeHandle.style.left = volumePercentage;
3136				volumeHandle.style.marginLeft = -parseFloat(volumeStyles.width) / 2 + 'px';
3137			}
3138		},
3139		    handleVolumeMove = function handleVolumeMove(e) {
3140			var totalOffset = (0, _dom.offset)(volumeTotal),
3141			    volumeStyles = getComputedStyle(volumeTotal);
3142
3143			modified = true;
3144
3145			var volume = null;
3146
3147			if (mode === 'vertical') {
3148				var railHeight = parseFloat(volumeStyles.height),
3149				    newY = e.pageY - totalOffset.top;
3150
3151				volume = (railHeight - newY) / railHeight;
3152
3153				if (totalOffset.top === 0 || totalOffset.left === 0) {
3154					return;
3155				}
3156			} else {
3157				var railWidth = parseFloat(volumeStyles.width),
3158				    newX = e.pageX - totalOffset.left;
3159
3160				volume = newX / railWidth;
3161			}
3162
3163			volume = Math.max(0, volume);
3164			volume = Math.min(volume, 1);
3165
3166			positionVolumeHandle(volume);
3167
3168			t.setMuted(volume === 0);
3169			t.setVolume(volume);
3170
3171			e.preventDefault();
3172			e.stopPropagation();
3173		},
3174		    toggleMute = function toggleMute() {
3175			if (t.muted) {
3176				positionVolumeHandle(0);
3177				(0, _dom.removeClass)(mute, t.options.classPrefix + 'mute');
3178				(0, _dom.addClass)(mute, t.options.classPrefix + 'unmute');
3179			} else {
3180				positionVolumeHandle(media.volume);
3181				(0, _dom.removeClass)(mute, t.options.classPrefix + 'unmute');
3182				(0, _dom.addClass)(mute, t.options.classPrefix + 'mute');
3183			}
3184		};
3185
3186		player.getElement(player.container).addEventListener('keydown', function (e) {
3187			var hasFocus = !!e.target.closest('.' + t.options.classPrefix + 'container');
3188			if (!hasFocus && mode === 'vertical') {
3189				volumeSlider.style.display = 'none';
3190			}
3191		});
3192
3193		mute.addEventListener('mouseenter', function (e) {
3194			if (e.target === mute) {
3195				volumeSlider.style.display = 'block';
3196				mouseIsOver = true;
3197				e.preventDefault();
3198				e.stopPropagation();
3199			}
3200		});
3201		mute.addEventListener('focusin', function () {
3202			volumeSlider.style.display = 'block';
3203			mouseIsOver = true;
3204		});
3205
3206		mute.addEventListener('focusout', function (e) {
3207			if ((!e.relatedTarget || e.relatedTarget && !e.relatedTarget.matches('.' + t.options.classPrefix + 'volume-slider')) && mode === 'vertical') {
3208				volumeSlider.style.display = 'none';
3209			}
3210		});
3211		mute.addEventListener('mouseleave', function () {
3212			mouseIsOver = false;
3213			if (!mouseIsDown && mode === 'vertical') {
3214				volumeSlider.style.display = 'none';
3215			}
3216		});
3217		mute.addEventListener('focusout', function () {
3218			mouseIsOver = false;
3219		});
3220		mute.addEventListener('keydown', function (e) {
3221			if (t.options.keyActions.length) {
3222				var keyCode = e.which || e.keyCode || 0,
3223				    volume = media.volume;
3224
3225				switch (keyCode) {
3226					case 38:
3227						volume = Math.min(volume + 0.1, 1);
3228						break;
3229					case 40:
3230						volume = Math.max(0, volume - 0.1);
3231						break;
3232					default:
3233						return true;
3234				}
3235
3236				mouseIsDown = false;
3237				positionVolumeHandle(volume);
3238				media.setVolume(volume);
3239
3240				e.preventDefault();
3241				e.stopPropagation();
3242			}
3243		});
3244		mute.querySelector('button').addEventListener('click', function () {
3245			media.setMuted(!media.muted);
3246			var event = (0, _general.createEvent)('volumechange', media);
3247			media.dispatchEvent(event);
3248		});
3249
3250		volumeSlider.addEventListener('dragstart', function () {
3251			return false;
3252		});
3253
3254		volumeSlider.addEventListener('mouseover', function () {
3255			mouseIsOver = true;
3256		});
3257		volumeSlider.addEventListener('focusin', function () {
3258			volumeSlider.style.display = 'block';
3259			mouseIsOver = true;
3260		});
3261		volumeSlider.addEventListener('focusout', function () {
3262			mouseIsOver = false;
3263			if (!mouseIsDown && mode === 'vertical') {
3264				volumeSlider.style.display = 'none';
3265			}
3266		});
3267		volumeSlider.addEventListener('mousedown', function (e) {
3268			handleVolumeMove(e);
3269			t.globalBind('mousemove.vol', function (event) {
3270				var target = event.target;
3271				if (mouseIsDown && (target === volumeSlider || target.closest(mode === 'vertical' ? '.' + t.options.classPrefix + 'volume-slider' : '.' + t.options.classPrefix + 'horizontal-volume-slider'))) {
3272					handleVolumeMove(event);
3273				}
3274			});
3275			t.globalBind('mouseup.vol', function () {
3276				mouseIsDown = false;
3277				if (!mouseIsOver && mode === 'vertical') {
3278					volumeSlider.style.display = 'none';
3279				}
3280			});
3281			mouseIsDown = true;
3282			e.preventDefault();
3283			e.stopPropagation();
3284		});
3285
3286		media.addEventListener('volumechange', function (e) {
3287			if (!mouseIsDown) {
3288				toggleMute();
3289			}
3290			updateVolumeSlider(e);
3291		});
3292
3293		var rendered = false;
3294		media.addEventListener('rendererready', function () {
3295			if (!modified) {
3296				setTimeout(function () {
3297					rendered = true;
3298					if (player.options.startVolume === 0 || media.originalNode.muted) {
3299						media.setMuted(true);
3300						player.options.startVolume = 0;
3301					}
3302					media.setVolume(player.options.startVolume);
3303					t.setControlsSize();
3304				}, 250);
3305			}
3306		});
3307
3308		media.addEventListener('loadedmetadata', function () {
3309			setTimeout(function () {
3310				if (!modified && !rendered) {
3311					if (player.options.startVolume === 0 || media.originalNode.muted) {
3312						media.setMuted(true);
3313					}
3314					media.setVolume(player.options.startVolume);
3315					t.setControlsSize();
3316				}
3317				rendered = false;
3318			}, 250);
3319		});
3320
3321		if (player.options.startVolume === 0 || media.originalNode.muted) {
3322			media.setMuted(true);
3323			player.options.startVolume = 0;
3324			toggleMute();
3325		}
3326
3327		t.getElement(t.container).addEventListener('controlsresize', function () {
3328			toggleMute();
3329		});
3330	}
3331});
3332
3333},{"16":16,"2":2,"25":25,"26":26,"27":27,"5":5}],15:[function(_dereq_,module,exports){
3334'use strict';
3335
3336Object.defineProperty(exports, "__esModule", {
3337	value: true
3338});
3339var EN = exports.EN = {
3340	'mejs.plural-form': 1,
3341
3342	'mejs.download-file': 'Download File',
3343
3344	'mejs.install-flash': 'You are using a browser that does not have Flash player enabled or installed. Please turn on your Flash player plugin or download the latest version from https://get.adobe.com/flashplayer/',
3345
3346	'mejs.fullscreen': 'Fullscreen',
3347
3348	'mejs.play': 'Play',
3349	'mejs.pause': 'Pause',
3350
3351	'mejs.time-slider': 'Time Slider',
3352	'mejs.time-help-text': 'Use Left/Right Arrow keys to advance one second, Up/Down arrows to advance ten seconds.',
3353	'mejs.live-broadcast': 'Live Broadcast',
3354
3355	'mejs.volume-help-text': 'Use Up/Down Arrow keys to increase or decrease volume.',
3356	'mejs.unmute': 'Unmute',
3357	'mejs.mute': 'Mute',
3358	'mejs.volume-slider': 'Volume Slider',
3359
3360	'mejs.video-player': 'Video Player',
3361	'mejs.audio-player': 'Audio Player',
3362
3363	'mejs.captions-subtitles': 'Captions/Subtitles',
3364	'mejs.captions-chapters': 'Chapters',
3365	'mejs.none': 'None',
3366	'mejs.afrikaans': 'Afrikaans',
3367	'mejs.albanian': 'Albanian',
3368	'mejs.arabic': 'Arabic',
3369	'mejs.belarusian': 'Belarusian',
3370	'mejs.bulgarian': 'Bulgarian',
3371	'mejs.catalan': 'Catalan',
3372	'mejs.chinese': 'Chinese',
3373	'mejs.chinese-simplified': 'Chinese (Simplified)',
3374	'mejs.chinese-traditional': 'Chinese (Traditional)',
3375	'mejs.croatian': 'Croatian',
3376	'mejs.czech': 'Czech',
3377	'mejs.danish': 'Danish',
3378	'mejs.dutch': 'Dutch',
3379	'mejs.english': 'English',
3380	'mejs.estonian': 'Estonian',
3381	'mejs.filipino': 'Filipino',
3382	'mejs.finnish': 'Finnish',
3383	'mejs.french': 'French',
3384	'mejs.galician': 'Galician',
3385	'mejs.german': 'German',
3386	'mejs.greek': 'Greek',
3387	'mejs.haitian-creole': 'Haitian Creole',
3388	'mejs.hebrew': 'Hebrew',
3389	'mejs.hindi': 'Hindi',
3390	'mejs.hungarian': 'Hungarian',
3391	'mejs.icelandic': 'Icelandic',
3392	'mejs.indonesian': 'Indonesian',
3393	'mejs.irish': 'Irish',
3394	'mejs.italian': 'Italian',
3395	'mejs.japanese': 'Japanese',
3396	'mejs.korean': 'Korean',
3397	'mejs.latvian': 'Latvian',
3398	'mejs.lithuanian': 'Lithuanian',
3399	'mejs.macedonian': 'Macedonian',
3400	'mejs.malay': 'Malay',
3401	'mejs.maltese': 'Maltese',
3402	'mejs.norwegian': 'Norwegian',
3403	'mejs.persian': 'Persian',
3404	'mejs.polish': 'Polish',
3405	'mejs.portuguese': 'Portuguese',
3406	'mejs.romanian': 'Romanian',
3407	'mejs.russian': 'Russian',
3408	'mejs.serbian': 'Serbian',
3409	'mejs.slovak': 'Slovak',
3410	'mejs.slovenian': 'Slovenian',
3411	'mejs.spanish': 'Spanish',
3412	'mejs.swahili': 'Swahili',
3413	'mejs.swedish': 'Swedish',
3414	'mejs.tagalog': 'Tagalog',
3415	'mejs.thai': 'Thai',
3416	'mejs.turkish': 'Turkish',
3417	'mejs.ukrainian': 'Ukrainian',
3418	'mejs.vietnamese': 'Vietnamese',
3419	'mejs.welsh': 'Welsh',
3420	'mejs.yiddish': 'Yiddish'
3421};
3422
3423},{}],16:[function(_dereq_,module,exports){
3424'use strict';
3425
3426Object.defineProperty(exports, "__esModule", {
3427	value: true
3428});
3429exports.config = undefined;
3430
3431var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
3432
3433var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
3434
3435var _window = _dereq_(3);
3436
3437var _window2 = _interopRequireDefault(_window);
3438
3439var _document = _dereq_(2);
3440
3441var _document2 = _interopRequireDefault(_document);
3442
3443var _mejs = _dereq_(7);
3444
3445var _mejs2 = _interopRequireDefault(_mejs);
3446
3447var _mediaelement = _dereq_(6);
3448
3449var _mediaelement2 = _interopRequireDefault(_mediaelement);
3450
3451var _default = _dereq_(17);
3452
3453var _default2 = _interopRequireDefault(_default);
3454
3455var _i18n = _dereq_(5);
3456
3457var _i18n2 = _interopRequireDefault(_i18n);
3458
3459var _constants = _dereq_(25);
3460
3461var _general = _dereq_(27);
3462
3463var _time = _dereq_(30);
3464
3465var _media = _dereq_(28);
3466
3467var _dom = _dereq_(26);
3468
3469var dom = _interopRequireWildcard(_dom);
3470
3471function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
3472
3473function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
3474
3475function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
3476
3477_mejs2.default.mepIndex = 0;
3478
3479_mejs2.default.players = {};
3480
3481var config = exports.config = {
3482	poster: '',
3483
3484	showPosterWhenEnded: false,
3485
3486	showPosterWhenPaused: false,
3487
3488	defaultVideoWidth: 480,
3489
3490	defaultVideoHeight: 270,
3491
3492	videoWidth: -1,
3493
3494	videoHeight: -1,
3495
3496	defaultAudioWidth: 400,
3497
3498	defaultAudioHeight: 40,
3499
3500	defaultSeekBackwardInterval: function defaultSeekBackwardInterval(media) {
3501		return media.getDuration() * 0.05;
3502	},
3503
3504	defaultSeekForwardInterval: function defaultSeekForwardInterval(media) {
3505		return media.getDuration() * 0.05;
3506	},
3507
3508	setDimensions: true,
3509
3510	audioWidth: -1,
3511
3512	audioHeight: -1,
3513
3514	loop: false,
3515
3516	autoRewind: true,
3517
3518	enableAutosize: true,
3519
3520	timeFormat: '',
3521
3522	alwaysShowHours: false,
3523
3524	showTimecodeFrameCount: false,
3525
3526	framesPerSecond: 25,
3527
3528	alwaysShowControls: false,
3529
3530	hideVideoControlsOnLoad: false,
3531
3532	hideVideoControlsOnPause: false,
3533
3534	clickToPlayPause: true,
3535
3536	controlsTimeoutDefault: 1500,
3537
3538	controlsTimeoutMouseEnter: 2500,
3539
3540	controlsTimeoutMouseLeave: 1000,
3541
3542	iPadUseNativeControls: false,
3543
3544	iPhoneUseNativeControls: false,
3545
3546	AndroidUseNativeControls: false,
3547
3548	features: ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'],
3549
3550	useDefaultControls: false,
3551
3552	isVideo: true,
3553
3554	stretching: 'auto',
3555
3556	classPrefix: 'mejs__',
3557
3558	enableKeyboard: true,
3559
3560	pauseOtherPlayers: true,
3561
3562	secondsDecimalLength: 0,
3563
3564	customError: null,
3565
3566	keyActions: [{
3567		keys: [32, 179],
3568		action: function action(player) {
3569
3570			if (!_constants.IS_FIREFOX) {
3571				if (player.paused || player.ended) {
3572					player.play();
3573				} else {
3574					player.pause();
3575				}
3576			}
3577		}
3578	}]
3579};
3580
3581_mejs2.default.MepDefaults = config;
3582
3583var MediaElementPlayer = function () {
3584	function MediaElementPlayer(node, o) {
3585		_classCallCheck(this, MediaElementPlayer);
3586
3587		var t = this,
3588		    element = typeof node === 'string' ? _document2.default.getElementById(node) : node;
3589
3590		if (!(t instanceof MediaElementPlayer)) {
3591			return new MediaElementPlayer(element, o);
3592		}
3593
3594		t.node = t.media = element;
3595
3596		if (!t.node) {
3597			return;
3598		}
3599
3600		if (t.media.player) {
3601			return t.media.player;
3602		}
3603
3604		t.hasFocus = false;
3605
3606		t.controlsAreVisible = true;
3607
3608		t.controlsEnabled = true;
3609
3610		t.controlsTimer = null;
3611
3612		t.currentMediaTime = 0;
3613
3614		t.proxy = null;
3615
3616		if (o === undefined) {
3617			var options = t.node.getAttribute('data-mejsoptions');
3618			o = options ? JSON.parse(options) : {};
3619		}
3620
3621		t.options = Object.assign({}, config, o);
3622
3623		if (t.options.loop && !t.media.getAttribute('loop')) {
3624			t.media.loop = true;
3625			t.node.loop = true;
3626		} else if (t.media.loop) {
3627			t.options.loop = true;
3628		}
3629
3630		if (!t.options.timeFormat) {
3631			t.options.timeFormat = 'mm:ss';
3632			if (t.options.alwaysShowHours) {
3633				t.options.timeFormat = 'hh:mm:ss';
3634			}
3635			if (t.options.showTimecodeFrameCount) {
3636				t.options.timeFormat += ':ff';
3637			}
3638		}
3639
3640		(0, _time.calculateTimeFormat)(0, t.options, t.options.framesPerSecond || 25);
3641
3642		t.id = 'mep_' + _mejs2.default.mepIndex++;
3643
3644		_mejs2.default.players[t.id] = t;
3645
3646		t.init();
3647
3648		return t;
3649	}
3650
3651	_createClass(MediaElementPlayer, [{
3652		key: 'getElement',
3653		value: function getElement(element) {
3654			return element;
3655		}
3656	}, {
3657		key: 'init',
3658		value: function init() {
3659			var t = this,
3660			    playerOptions = Object.assign({}, t.options, {
3661				success: function success(media, domNode) {
3662					t._meReady(media, domNode);
3663				},
3664				error: function error(e) {
3665					t._handleError(e);
3666				}
3667			}),
3668			    tagName = t.node.tagName.toLowerCase();
3669
3670			t.isDynamic = tagName !== 'audio' && tagName !== 'video' && tagName !== 'iframe';
3671			t.isVideo = t.isDynamic ? t.options.isVideo : tagName !== 'audio' && t.options.isVideo;
3672			t.mediaFiles = null;
3673			t.trackFiles = null;
3674
3675			if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls) {
3676				t.node.setAttribute('controls', true);
3677
3678				if (_constants.IS_IPAD && t.node.getAttribute('autoplay')) {
3679					t.play();
3680				}
3681			} else if ((t.isVideo || !t.isVideo && (t.options.features.length || t.options.useDefaultControls)) && !(_constants.IS_ANDROID && t.options.AndroidUseNativeControls)) {
3682				t.node.removeAttribute('controls');
3683				var videoPlayerTitle = t.isVideo ? _i18n2.default.t('mejs.video-player') : _i18n2.default.t('mejs.audio-player');
3684
3685				var offscreen = _document2.default.createElement('span');
3686				offscreen.className = t.options.classPrefix + 'offscreen';
3687				offscreen.innerText = videoPlayerTitle;
3688				t.media.parentNode.insertBefore(offscreen, t.media);
3689
3690				t.container = _document2.default.createElement('div');
3691				t.getElement(t.container).id = t.id;
3692				t.getElement(t.container).className = t.options.classPrefix + 'container ' + t.options.classPrefix + 'container-keyboard-inactive ' + t.media.className;
3693				t.getElement(t.container).tabIndex = 0;
3694				t.getElement(t.container).setAttribute('role', 'application');
3695				t.getElement(t.container).setAttribute('aria-label', videoPlayerTitle);
3696				t.getElement(t.container).innerHTML = '<div class="' + t.options.classPrefix + 'inner">' + ('<div class="' + t.options.classPrefix + 'mediaelement"></div>') + ('<div class="' + t.options.classPrefix + 'layers"></div>') + ('<div class="' + t.options.classPrefix + 'controls"></div>') + '</div>';
3697				t.getElement(t.container).addEventListener('focus', function (e) {
3698					if (!t.controlsAreVisible && !t.hasFocus && t.controlsEnabled) {
3699						t.showControls(true);
3700
3701						var btnSelector = (0, _general.isNodeAfter)(e.relatedTarget, t.getElement(t.container)) ? '.' + t.options.classPrefix + 'controls .' + t.options.classPrefix + 'button:last-child > button' : '.' + t.options.classPrefix + 'playpause-button > button',
3702						    button = t.getElement(t.container).querySelector(btnSelector);
3703
3704						button.focus();
3705					}
3706				});
3707				t.node.parentNode.insertBefore(t.getElement(t.container), t.node);
3708
3709				if (!t.options.features.length && !t.options.useDefaultControls) {
3710					t.getElement(t.container).style.background = 'transparent';
3711					t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls').style.display = 'none';
3712				}
3713
3714				if (t.isVideo && t.options.stretching === 'fill' && !dom.hasClass(t.getElement(t.container).parentNode, t.options.classPrefix + 'fill-container')) {
3715					t.outerContainer = t.media.parentNode;
3716
3717					var wrapper = _document2.default.createElement('div');
3718					wrapper.className = t.options.classPrefix + 'fill-container';
3719					t.getElement(t.container).parentNode.insertBefore(wrapper, t.getElement(t.container));
3720					wrapper.appendChild(t.getElement(t.container));
3721				}
3722
3723				if (_constants.IS_ANDROID) {
3724					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'android');
3725				}
3726				if (_constants.IS_IOS) {
3727					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ios');
3728				}
3729				if (_constants.IS_IPAD) {
3730					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'ipad');
3731				}
3732				if (_constants.IS_IPHONE) {
3733					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'iphone');
3734				}
3735				dom.addClass(t.getElement(t.container), t.isVideo ? t.options.classPrefix + 'video' : t.options.classPrefix + 'audio');
3736
3737				if (_constants.IS_SAFARI && !_constants.IS_IOS) {
3738
3739					dom.addClass(t.getElement(t.container), t.options.classPrefix + 'hide-cues');
3740
3741					var cloneNode = t.node.cloneNode(),
3742					    children = t.node.children,
3743					    mediaFiles = [],
3744					    tracks = [];
3745
3746					for (var i = 0, total = children.length; i < total; i++) {
3747						var childNode = children[i];
3748
3749						(function () {
3750							switch (childNode.tagName.toLowerCase()) {
3751								case 'source':
3752									var elements = {};
3753									Array.prototype.slice.call(childNode.attributes).forEac
3753h(function (item) {
3754										elements[item.name] = item.value;
3755									});
3756									elements.type = (0, _media.formatType)(elements.src, elements.type);
3757									mediaFiles.push(elements);
3758									break;
3759								case 'track':
3760									childNode.mode = 'hidden';
3761									tracks.push(childNode);
3762									break;
3763								default:
3764									cloneNode.appendChild(childNode);
3765									break;
3766							}
3767						})();
3768					}
3769
3770					t.node.remove();
3771					t.node = t.media = cloneNode;
3772
3773					if (mediaFiles.length) {
3774						t.mediaFiles = mediaFiles;
3775					}
3776					if (tracks.length) {
3777						t.trackFiles = tracks;
3778					}
3779				}
3780
3781				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'mediaelement').appendChild(t.node);
3782
3783				t.media.player = t;
3784
3785				t.controls = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'controls');
3786				t.layers = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'layers');
3787
3788				var tagType = t.isVideo ? 'video' : 'audio',
3789				    capsTagName = tagType.substring(0, 1).toUpperCase() + tagType.substring(1);
3790
3791				if (t.options[tagType + 'Width'] > 0 || t.options[tagType + 'Width'].toString().indexOf('%') > -1) {
3792					t.width = t.options[tagType + 'Width'];
3793				} else if (t.node.style.width !== '' && t.node.style.width !== null) {
3794					t.width = t.node.style.width;
3795				} else if (t.node.getAttribute('width')) {
3796					t.width = t.node.getAttribute('width');
3797				} else {
3798					t.width = t.options['default' + capsTagName + 'Width'];
3799				}
3800
3801				if (t.options[tagType + 'Height'] > 0 || t.options[tagType + 'Height'].toString().indexOf('%') > -1) {
3802					t.height = t.options[tagType + 'Height'];
3803				} else if (t.node.style.height !== '' && t.node.style.height !== null) {
3804					t.height = t.node.style.height;
3805				} else if (t.node.getAttribute('height')) {
3806					t.height = t.node.getAttribute('height');
3807				} else {
3808					t.height = t.options['default' + capsTagName + 'Height'];
3809				}
3810
3811				t.initialAspectRatio = t.height >= t.width ? t.width / t.height : t.height / t.width;
3812
3813				t.setPlayerSize(t.width, t.height);
3814
3815				playerOptions.pluginWidth = t.width;
3816				playerOptions.pluginHeight = t.height;
3817			} else if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
3818					t.node.style.display = 'none';
3819				}
3820
3821			_mejs2.default.MepDefaults = playerOptions;
3822
3823			new _mediaelement2.default(t.media, playerOptions, t.mediaFiles);
3824
3825			if (t.getElement(t.container) !== undefined && t.options.features.length && t.controlsAreVisible && !t.options.hideVideoControlsOnLoad) {
3826				var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3827				t.getElement(t.container).dispatchEvent(event);
3828			}
3829		}
3830	}, {
3831		key: 'showControls',
3832		value: function showControls(doAnimation) {
3833			var t = this;
3834
3835			doAnimation = doAnimation === undefined || doAnimation;
3836
3837			if (t.controlsAreVisible || !t.isVideo) {
3838				return;
3839			}
3840
3841			if (doAnimation) {
3842				(function () {
3843					dom.fadeIn(t.getElement(t.controls), 200, function () {
3844						dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3845						var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3846						t.getElement(t.container).dispatchEvent(event);
3847					});
3848
3849					var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3850
3851					var _loop = function _loop(i, total) {
3852						dom.fadeIn(controls[i], 200, function () {
3853							dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3854						});
3855					};
3856
3857					for (var i = 0, total = controls.length; i < total; i++) {
3858						_loop(i, total);
3859					}
3860				})();
3861			} else {
3862				dom.removeClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3863				t.getElement(t.controls).style.display = '';
3864				t.getElement(t.controls).style.opacity = 1;
3865
3866				var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3867				for (var i = 0, total = controls.length; i < total; i++) {
3868					dom.removeClass(controls[i], t.options.classPrefix + 'offscreen');
3869					controls[i].style.display = '';
3870				}
3871
3872				var event = (0, _general.createEvent)('controlsshown', t.getElement(t.container));
3873				t.getElement(t.container).dispatchEvent(event);
3874			}
3875
3876			t.controlsAreVisible = true;
3877			t.setControlsSize();
3878		}
3879	}, {
3880		key: 'hideControls',
3881		value: function hideControls(doAnimation, forceHide) {
3882			var t = this;
3883
3884			doAnimation = doAnimation === undefined || doAnimation;
3885
3886			if (forceHide !== true && (!t.controlsAreVisible || t.options.alwaysShowControls || t.paused && t.readyState === 4 && (!t.options.hideVideoControlsOnLoad && t.currentTime <= 0 || !t.options.hideVideoControlsOnPause && t.currentTime > 0) || t.isVideo && !t.options.hideVideoControlsOnLoad && !t.readyState || t.ended)) {
3887				return;
3888			}
3889
3890			if (doAnimation) {
3891				(function () {
3892					dom.fadeOut(t.getElement(t.controls), 200, function () {
3893						dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3894						t.getElement(t.controls).style.display = '';
3895						var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3896						t.getElement(t.container).dispatchEvent(event);
3897					});
3898
3899					var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3900
3901					var _loop2 = function _loop2(i, total) {
vendor: 20,320 bytes, lines 3902-4574
3902						dom.fadeOut(controls[i], 200, function () {
3903							dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3904							controls[i].style.display = '';
3905						});
3906					};
3907
3908					for (var i = 0, total = controls.length; i < total; i++) {
3909						_loop2(i, total);
3910					}
3911				})();
3912			} else {
3913				dom.addClass(t.getElement(t.controls), t.options.classPrefix + 'offscreen');
3914				t.getElement(t.controls).style.display = '';
3915				t.getElement(t.controls).style.opacity = 0;
3916
3917				var controls = t.getElement(t.container).querySelectorAll('.' + t.options.classPrefix + 'control');
3918				for (var i = 0, total = controls.length; i < total; i++) {
3919					dom.addClass(controls[i], t.options.classPrefix + 'offscreen');
3920					controls[i].style.display = '';
3921				}
3922
3923				var event = (0, _general.createEvent)('controlshidden', t.getElement(t.container));
3924				t.getElement(t.container).dispatchEvent(event);
3925			}
3926
3927			t.controlsAreVisible = false;
3928		}
3929	}, {
3930		key: 'startControlsTimer',
3931		value: function startControlsTimer(timeout) {
3932			var t = this;
3933
3934			timeout = typeof timeout !== 'undefined' ? timeout : t.options.controlsTimeoutDefault;
3935
3936			t.killControlsTimer('start');
3937
3938			t.controlsTimer = setTimeout(function () {
3939				t.hideControls();
3940				t.killControlsTimer('hide');
3941			}, timeout);
3942		}
3943	}, {
3944		key: 'killControlsTimer',
3945		value: function killControlsTimer() {
3946			var t = this;
3947
3948			if (t.controlsTimer !== null) {
3949				clearTimeout(t.controlsTimer);
3950				delete t.controlsTimer;
3951				t.controlsTimer = null;
3952			}
3953		}
3954	}, {
3955		key: 'disableControls',
3956		value: function disableControls() {
3957			var t = this;
3958
3959			t.killControlsTimer();
3960			t.controlsEnabled = false;
3961			t.hideControls(false, true);
3962		}
3963	}, {
3964		key: 'enableControls',
3965		value: function enableControls() {
3966			var t = this;
3967
3968			t.controlsEnabled = true;
3969			t.showControls(false);
3970		}
3971	}, {
3972		key: '_setDefaultPlayer',
3973		value: function _setDefaultPlayer() {
3974			var t = this;
3975			if (t.proxy) {
3976				t.proxy.pause();
3977			}
3978			t.proxy = new _default2.default(t);
3979			t.media.addEventListener('loadedmetadata', function () {
3980				if (t.getCurrentTime() > 0 && t.currentMediaTime > 0) {
3981					t.setCurrentTime(t.currentMediaTime);
3982					if (!_constants.IS_IOS && !_constants.IS_ANDROID) {
3983						t.play();
3984					}
3985				}
3986			});
3987		}
3988	}, {
3989		key: '_meReady',
3990		value: function _meReady(media, domNode) {
3991			var t = this,
3992			    autoplayAttr = domNode.getAttribute('autoplay'),
3993			    autoplay = !(autoplayAttr === undefined || autoplayAttr === null || autoplayAttr === 'false'),
3994			    isNative = media.rendererName !== null && /(native|html5)/i.test(t.media.rendererName);
3995
3996			if (t.getElement(t.controls)) {
3997				t.enableControls();
3998			}
3999
4000			if (t.getElement(t.container) && t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play')) {
4001				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-play').style.display = '';
4002			}
4003
4004			if (t.created) {
4005				return;
4006			}
4007
4008			t.created = true;
4009			t.media = media;
4010			t.domNode = domNode;
4011
4012			if (!(_constants.IS_ANDROID && t.options.AndroidUseNativeControls) && !(_constants.IS_IPAD && t.options.iPadUseNativeControls) && !(_constants.IS_IPHONE && t.options.iPhoneUseNativeControls)) {
4013				if (!t.isVideo && !t.options.features.length && !t.options.useDefaultControls) {
4014					if (autoplay && isNative) {
4015						t.play();
4016					}
4017
4018					if (t.options.success) {
4019
4020						if (typeof t.options.success === 'string') {
4021							_window2.default[t.options.success](t.media, t.domNode, t);
4022						} else {
4023							t.options.success(t.media, t.domNode, t);
4024						}
4025					}
4026
4027					return;
4028				}
4029
4030				t.featurePosition = {};
4031
4032				t._setDefaultPlayer();
4033
4034				t.buildposter(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4035				t.buildkeyboard(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4036				t.buildoverlays(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4037
4038				if (t.options.useDefaultControls) {
4039					var defaultControls = ['playpause', 'current', 'progress', 'duration', 'tracks', 'volume', 'fullscreen'];
4040					t.options.features = defaultControls.concat(t.options.features.filter(function (item) {
4041						return defaultControls.indexOf(item) === -1;
4042					}));
4043				}
4044
4045				t.buildfeatures(t, t.getElement(t.controls), t.getElement(t.layers), t.media);
4046
4047				var event = (0, _general.createEvent)('controlsready', t.getElement(t.container));
4048				t.getElement(t.container).dispatchEvent(event);
4049
4050				t.setPlayerSize(t.width, t.height);
4051				t.setControlsSize();
4052
4053				if (t.isVideo) {
4054					t.clickToPlayPauseCallback = function () {
4055
4056						if (t.options.clickToPlayPause) {
4057							var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4058							    pressed = button.getAttribute('aria-pressed');
4059
4060							if (t.paused && pressed) {
4061								t.pause();
4062							} else if (t.paused) {
4063								t.play();
4064							} else {
4065								t.pause();
4066							}
4067
4068							button.setAttribute('aria-pressed', !pressed);
4069							t.getElement(t.container).focus();
4070						}
4071					};
4072
4073					t.createIframeLayer();
4074
4075					t.media.addEventListener('click', t.clickToPlayPauseCallback);
4076
4077					if ((_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls) {
4078						t.node.addEventListener('touchstart', function () {
4079							if (t.controlsAreVisible) {
4080								t.hideControls(false);
4081							} else {
4082								if (t.controlsEnabled) {
4083									t.showControls(false);
4084								}
4085							}
4086						}, _constants.SUPPORT_PASSIVE_EVENT ? { passive: true } : false);
4087					} else {
4088						t.getElement(t.container).addEventListener('mouseenter', function () {
4089							if (t.controlsEnabled) {
4090								if (!t.options.alwaysShowControls) {
4091									t.killControlsTimer('enter');
4092									t.showControls();
4093									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4094								}
4095							}
4096						});
4097						t.getElement(t.container).addEventListener('mousemove', function () {
4098							if (t.controlsEnabled) {
4099								if (!t.controlsAreVisible) {
4100									t.showControls();
4101								}
4102								if (!t.options.alwaysShowControls) {
4103									t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4104								}
4105							}
4106						});
4107						t.getElement(t.container).addEventListener('mouseleave', function () {
4108							if (t.controlsEnabled) {
4109								if (!t.paused && !t.options.alwaysShowControls) {
4110									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4111								}
4112							}
4113						});
4114					}
4115
4116					if (t.options.hideVideoControlsOnLoad) {
4117						t.hideControls(false);
4118					}
4119
4120					if (t.options.enableAutosize) {
4121						t.media.addEventListener('loadedmetadata', function (e) {
4122							var target = e !== undefined ? e.detail.target || e.target : t.media;
4123							if (t.options.videoHeight <= 0 && !t.domNode.getAttribute('height') && !t.domNode.style.height && target !== null && !isNaN(target.videoHeight)) {
4124								t.setPlayerSize(target.videoWidth, target.videoHeight);
4125								t.setControlsSize();
4126								t.media.setSize(target.videoWidth, target.videoHeight);
4127							}
4128						});
4129					}
4130				}
4131
4132				t.media.addEventListener('play', function () {
4133					t.hasFocus = true;
4134
4135					for (var playerIndex in _mejs2.default.players) {
4136						if (_mejs2.default.players.hasOwnProperty(playerIndex)) {
4137							var p = _mejs2.default.players[playerIndex];
4138
4139							if (p.id !== t.id && t.options.pauseOtherPlayers && !p.paused && !p.ended) {
4140								p.pause();
4141								p.hasFocus = false;
4142							}
4143						}
4144					}
4145
4146					if (!(_constants.IS_ANDROID || _constants.IS_IOS) && !t.options.alwaysShowControls && t.isVideo) {
4147						t.hideControls();
4148					}
4149				});
4150
4151				t.media.addEventListener('ended', function () {
4152					if (t.options.autoRewind) {
4153						try {
4154							t.setCurrentTime(0);
4155
4156							setTimeout(function () {
4157								var loadingElement = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-loading');
4158								if (loadingElement && loadingElement.parentNode) {
4159									loadingElement.parentNode.style.display = 'none';
4160								}
4161							}, 20);
4162						} catch (exp) {
4163							
4164						}
4165					}
4166
4167					if (typeof t.media.renderer.stop === 'function') {
4168						t.media.renderer.stop();
4169					} else {
4170						t.pause();
4171					}
4172
4173					if (t.setProgressRail) {
4174						t.setProgressRail();
4175					}
4176					if (t.setCurrentRail) {
4177						t.setCurrentRail();
4178					}
4179
4180					if (t.options.loop) {
4181						t.play();
4182					} else if (!t.options.alwaysShowControls && t.controlsEnabled) {
4183						t.showControls();
4184					}
4185				});
4186
4187				t.media.addEventListener('loadedmetadata', function () {
4188
4189					(0, _time.calculateTimeFormat)(t.getDuration(), t.options, t.options.framesPerSecond || 25);
4190
4191					if (t.updateDuration) {
4192						t.updateDuration();
4193					}
4194					if (t.updateCurrent) {
4195						t.updateCurrent();
4196					}
4197
4198					if (!t.isFullScreen) {
4199						t.setPlayerSize(t.width, t.height);
4200						t.setControlsSize();
4201					}
4202				});
4203
4204				var duration = null;
4205				t.media.addEventListener('timeupdate', function () {
4206					if (!isNaN(t.getDuration()) && duration !== t.getDuration()) {
4207						duration = t.getDuration();
4208						(0, _time.calculateTimeFormat)(duration, t.options, t.options.framesPerSecond || 25);
4209
4210						if (t.updateDuration) {
4211							t.updateDuration();
4212						}
4213						if (t.updateCurrent) {
4214							t.updateCurrent();
4215						}
4216
4217						t.setControlsSize();
4218					}
4219				});
4220
4221				t.getElement(t.container).addEventListener('click', function (e) {
4222					dom.addClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4223				});
4224
4225				t.getElement(t.container).addEventListener('focusin', function (e) {
4226					dom.removeClass(e.currentTarget, t.options.classPrefix + 'container-keyboard-inactive');
4227					if (t.isVideo && !_constants.IS_ANDROID && !_constants.IS_IOS && t.controlsEnabled && !t.options.alwaysShowControls) {
4228						t.killControlsTimer('enter');
4229						t.showControls();
4230						t.startControlsTimer(t.options.controlsTimeoutMouseEnter);
4231					}
4232				});
4233
4234				t.getElement(t.container).addEventListener('focusout', function (e) {
4235					setTimeout(function () {
4236						if (e.relatedTarget) {
4237							if (t.keyboardAction && !e.relatedTarget.closest('.' + t.options.classPrefix + 'container')) {
4238								t.keyboardAction = false;
4239								if (t.isVideo && !t.options.alwaysShowControls && !t.paused) {
4240									t.startControlsTimer(t.options.controlsTimeoutMouseLeave);
4241								}
4242							}
4243						}
4244					}, 0);
4245				});
4246
4247				setTimeout(function () {
4248					t.setPlayerSize(t.width, t.height);
4249					t.setControlsSize();
4250				}, 0);
4251
4252				t.globalResizeCallback = function () {
4253					if (!(t.isFullScreen || _constants.HAS_TRUE_NATIVE_FULLSCREEN && _document2.default.webkitIsFullScreen)) {
4254						t.setPlayerSize(t.width, t.height);
4255					}
4256
4257					t.setControlsSize();
4258				};
4259
4260				t.globalBind('resize', t.globalResizeCallback);
4261			}
4262
4263			if (autoplay && isNative) {
4264				t.play();
4265			}
4266
4267			if (t.options.success) {
4268				if (typeof t.options.success === 'string') {
4269					_window2.default[t.options.success](t.media, t.domNode, t);
4270				} else {
4271					t.options.success(t.media, t.domNode, t);
4272				}
4273			}
4274		}
4275	}, {
4276		key: '_handleError',
4277		value: function _handleError(e, media, node) {
4278			var t = this,
4279			    play = t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-play');
4280
4281			if (play) {
4282				play.style.display = 'none';
4283			}
4284
4285			if (t.options.error) {
4286				t.options.error(e, media, node);
4287			}
4288
4289			if (t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay')) {
4290				t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'cannotplay').remove();
4291			}
4292
4293			var errorContainer = _document2.default.createElement('div');
4294			errorContainer.className = t.options.classPrefix + 'cannotplay';
4295			errorContainer.style.width = '100%';
4296			errorContainer.style.height = '100%';
4297
4298			var errorContent = typeof t.options.customError === 'function' ? t.options.customError(t.media, t.media.originalNode) : t.options.customError,
4299			    imgError = '';
4300
4301			if (!errorContent) {
4302				var poster = t.media.originalNode.getAttribute('poster');
4303				if (poster) {
4304					imgError = '<img src="' + poster + '" alt="' + _mejs2.default.i18n.t('mejs.download-file') + '">';
4305				}
4306
4307				if (e.message) {
4308					errorContent = '<p>' + e.message + '</p>';
4309				}
4310
4311				if (e.urls) {
4312					for (var i = 0, total = e.urls.length; i < total; i++) {
4313						var url = e.urls[i];
4314						errorContent += '<a href="' + url.src + '" data-type="' + url.type + '"><span>' + _mejs2.default.i18n.t('mejs.download-file') + ': ' + url.src + '</span></a>';
4315					}
4316				}
4317			}
4318
4319			if (errorContent && t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error')) {
4320				errorContainer.innerHTML = errorContent;
4321				t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').innerHTML = '' + imgError + errorContainer.outerHTML;
4322				t.getElement(t.layers).querySelector('.' + t.options.classPrefix + 'overlay-error').parentNode.style.display = 'block';
4323			}
4324
4325			if (t.controlsEnabled) {
4326				t.disableControls();
4327			}
4328		}
4329	}, {
4330		key: 'setPlayerSize',
4331		value: function setPlayerSize(width, height) {
4332			var t = this;
4333
4334			if (!t.options.setDimensions) {
4335				return false;
4336			}
4337
4338			if (typeof width !== 'undefined') {
4339				t.width = width;
4340			}
4341
4342			if (typeof height !== 'undefined') {
4343				t.height = height;
4344			}
4345
4346			switch (t.options.stretching) {
4347				case 'fill':
4348					if (t.isVideo) {
4349						t.setFillMode();
4350					} else {
4351						t.setDimensions(t.width, t.height);
4352					}
4353					break;
4354				case 'responsive':
4355					t.setResponsiveMode();
4356					break;
4357				case 'none':
4358					t.setDimensions(t.width, t.height);
4359					break;
4360
4361				default:
4362					if (t.hasFluidMode() === true) {
4363						t.setResponsiveMode();
4364					} else {
4365						t.setDimensions(t.width, t.height);
4366					}
4367					break;
4368			}
4369		}
4370	}, {
4371		key: 'hasFluidMode',
4372		value: function hasFluidMode() {
4373			var t = this;
4374
4375			return t.height.toString().indexOf('%') !== -1 || t.node && t.node.style.maxWidth && t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width || t.node && t.node.currentStyle && t.node.currentStyle.maxWidth === '100%';
4376		}
4377	}, {
4378		key: 'setResponsiveMode',
4379		value: function setResponsiveMode() {
4380			var t = this,
4381			    parent = function () {
4382
4383				var parentEl = void 0,
4384				    el = t.getElement(t.container);
4385
4386				while (el) {
4387					try {
4388						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4389							return _window2.default.frameElement;
4390						} else {
4391							parentEl = el.parentElement;
4392						}
4393					} catch (e) {
4394						parentEl = el.parentElement;
4395					}
4396
4397					if (parentEl && dom.visible(parentEl)) {
4398						return parentEl;
4399					}
4400					el = parentEl;
4401				}
4402
4403				return null;
4404			}(),
4405			    parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null),
4406			    nativeWidth = function () {
4407				if (t.isVideo) {
4408					if (t.node.videoWidth && t.node.videoWidth > 0) {
4409						return t.node.videoWidth;
4410					} else if (t.node.getAttribute('width')) {
4411						return t.node.getAttribute('width');
4412					} else {
4413						return t.options.defaultVideoWidth;
4414					}
4415				} else {
4416					return t.options.defaultAudioWidth;
4417				}
4418			}(),
4419			    nativeHeight = function () {
4420				if (t.isVideo) {
4421					if (t.node.videoHeight && t.node.videoHeight > 0) {
4422						return t.node.videoHeight;
4423					} else if (t.node.getAttribute('height')) {
4424						return t.node.getAttribute('height');
4425					} else {
4426						return t.options.defaultVideoHeight;
4427					}
4428				} else {
4429					return t.options.defaultAudioHeight;
4430				}
4431			}(),
4432			    aspectRatio = function () {
4433				var ratio = 1;
4434				if (!t.isVideo) {
4435					return ratio;
4436				}
4437
4438				if (t.node.videoWidth && t.node.videoWidth > 0 && t.node.videoHeight && t.node.videoHeight > 0) {
4439					ratio = t.height >= t.width ? t.node.videoWidth / t.node.videoHeight : t.node.videoHeight / t.node.videoWidth;
4440				} else {
4441					ratio = t.initialAspectRatio;
4442				}
4443
4444				if (isNaN(ratio) || ratio < 0.01 || ratio > 100) {
4445					ratio = 1;
4446				}
4447
4448				return ratio;
4449			}(),
4450			    parentHeight = parseFloat(parentStyles.height);
4451
4452			var newHeight = void 0,
4453			    parentWidth = parseFloat(parentStyles.width);
4454
4455			if (t.isVideo) {
4456				if (t.height === '100%') {
4457					newHeight = parseFloat(parentWidth * nativeHeight / nativeWidth, 10);
4458				} else {
4459					newHeight = t.height >= t.width ? parseFloat(parentWidth / aspectRatio, 10) : parseFloat(parentWidth * aspectRatio, 10);
4460				}
4461			} else {
4462				newHeight = nativeHeight;
4463			}
4464
4465			if (isNaN(newHeight)) {
4466				newHeight = parentHeight;
4467			}
4468
4469			if (t.getElement(t.container).parentNode.length > 0 && t.getElement(t.container).parentNode.tagName.toLowerCase() === 'body') {
4470				parentWidth = _window2.default.innerWidth || _document2.default.documentElement.clientWidth || _document2.default.body.clientWidth;
4471				newHeight = _window2.default.innerHeight || _document2.default.documentElement.clientHeight || _document2.default.body.clientHeight;
4472			}
4473
4474			if (newHeight && parentWidth) {
4475				t.getElement(t.container).style.width = parentWidth + 'px';
4476				t.getElement(t.container).style.height = newHeight + 'px';
4477
4478				t.node.style.width = '100%';
4479				t.node.style.height = '100%';
4480
4481				if (t.isVideo && t.media.setSize) {
4482					t.media.setSize(parentWidth, newHeight);
4483				}
4484
4485				var layerChildren = t.getElement(t.layers).children;
4486				for (var i = 0, total = layerChildren.length; i < total; i++) {
4487					layerChildren[i].style.width = '100%';
4488					layerChildren[i].style.height = '100%';
4489				}
4490			}
4491		}
4492	}, {
4493		key: 'setFillMode',
4494		value: function setFillMode() {
4495			var t = this;
4496			var isIframe = _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null;
4497			var parent = function () {
4498				var parentEl = void 0,
4499				    el = t.getElement(t.container);
4500
4501				while (el) {
4502					try {
4503						if (_constants.IS_FIREFOX && el.tagName.toLowerCase() === 'html' && _window2.default.self !== _window2.default.top && _window2.default.frameElement !== null) {
4504							return _window2.default.frameElement;
4505						} else {
4506							parentEl = el.parentElement;
4507						}
4508					} catch (e) {
4509						parentEl = el.parentElement;
4510					}
4511
4512					if (parentEl && dom.visible(parentEl)) {
4513						return parentEl;
4514					}
4515					el = parentEl;
4516				}
4517
4518				return null;
4519			}();
4520			var parentStyles = parent ? getComputedStyle(parent, null) : getComputedStyle(_document2.default.body, null);
4521
4522			if (t.node.style.height !== 'none' && t.node.style.height !== t.height) {
4523				t.node.style.height = 'auto';
4524			}
4525			if (t.node.style.maxWidth !== 'none' && t.node.style.maxWidth !== t.width) {
4526				t.node.style.maxWidth = 'none';
4527			}
4528
4529			if (t.node.style.maxHeight !== 'none' && t.node.style.maxHeight !== t.height) {
4530				t.node.style.maxHeight = 'none';
4531			}
4532
4533			if (t.node.currentStyle) {
4534				if (t.node.currentStyle.height === '100%') {
4535					t.node.currentStyle.height = 'auto';
4536				}
4537				if (t.node.currentStyle.maxWidth === '100%') {
4538					t.node.currentStyle.maxWidth = 'none';
4539				}
4540				if (t.node.currentStyle.maxHeight === '100%') {
4541					t.node.currentStyle.maxHeight = 'none';
4542				}
4543			}
4544
4545			if (!isIframe && !parseFloat(parentStyles.width)) {
4546				parent.style.width = t.media.offsetWidth + 'px';
4547			}
4548
4549			if (!isIframe && !parseFloat(parentStyles.height)) {
4550				parent.style.height = t.media.offsetHeight + 'px';
4551			}
4552
4553			parentStyles = getComputedStyle(parent);
4554
4555			var parentWidth = parseFloat(parentStyles.width),
4556			    parentHeight = parseFloat(parentStyles.height);
4557
4558			t.setDimensions('100%', '100%');
4559
4560			var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
4561			if (poster) {
4562				poster.style.display = '';
4563			}
4564
4565			var targetElement = t.getElement(t.container).querySelectorAll('object, embed, iframe, video'),
4566			    initHeight = t.height,
4567			    initWidth = t.width,
4568			    scaleX1 = parentWidth,
4569			    scaleY1 = initHeight * parentWidth / initWidth,
4570			    scaleX2 = initWidth * parentHeight / initHeight,
4571			    scaleY2 = parentHeight,
4572			    bScaleOnWidth = scaleX2 > parentWidth === false,
4573			    finalWidth = bScaleOnWidth ? Math.floor(scaleX1) : Math.floor(scaleX2),
4574			    finalHeight = bScaleOnWidth ? Math.floor(scaleY1) : Math.floor(scaleY2),
4575			    width = bScaleOnWidth ? parentWidth + 'px' : finalWidth + 'px',
4576			    height = bScaleOnWidth ? finalHeight + 'px' : parentHeight + 'px';
4577
4578			for (var i = 0, total = targetElement.length; i < total; i++) {
4579				targetElement[i].style.height = height;
4580				targetElement[i].style.width = width;
4581				if (t.media.setSize) {
4582					t.media.setSize(width, height);
4583				}
4584
4585				targetElement[i].style.marginLeft = Math.floor((parentWidth - finalWidth) / 2) + 'px';
4586				targetElement[i].style.marginTop = 0;
4587			}
4588		}
4589	}, {
4590		key: 'setDimensions',
4591		value: function setDimensions(width, height) {
4592			var t = this;
4593
4594			width = (0, _general.isString)(width) && width.indexOf('%') > -1 ? width : parseFloat(width) + 'px';
4595			height = (0, _general.isString)(height) && height.indexOf('%') > -1 ? height : parseFloat(height) + 'px';
4596
4597			t.getElement(t.container).style.width = width;
4598			t.getElement(t.container).style.height = height;
4599
4600			var layers = t.getElement(t.layers).children;
4601			for (var i = 0, total = layers.length; i < total; i++) {
4602				layers[i].style.width = width;
4603				layers[i].style.height = height;
4604			}
4605		}
4606	}, {
4607		key: 'setControlsSize',
4608		value: function setControlsSize() {
4609			var t = this;
4610
4611			if (!dom.visible(t.getElement(t.container))) {
4612				return;
4613			}
4614
4615			if (t.rail && dom.visible(t.rail)) {
4616				var totalStyles = t.total ? getComputedStyle(t.total, null) : null,
4617				    totalMargin = totalStyles ? parseFloat(totalStyles.marginLeft) + parseFloat(totalStyles.marginRight) : 0,
4618				    railStyles = getComputedStyle(t.rail),
4619				    railMargin = parseFloat(railStyles.marginLeft) + parseFloat(railStyles.marginRight);
4620
4621				var siblingsWidth = 0;
4622
4623				var siblings = dom.siblings(t.rail, function (el) {
4624					return el !== t.rail;
4625				}),
4626				    total = siblings.length;
4627				for (var i = 0; i < total; i++) {
4628					siblingsWidth += siblings[i].offsetWidth;
4629				}
4630
4631				siblingsWidth += totalMargin + (totalMargin === 0 ? railMargin * 2 : railMargin) + 1;
4632
4633				t.getElement(t.container).style.minWidth = siblingsWidth + 'px';
4634
4635				var event = (0, _general.createEvent)('controlsresize', t.getElement(t.container));
4636				t.getElement(t.container).dispatchEvent(event);
4637			} else {
4638				var children = t.getElement(t.controls).children;
4639				var minWidth = 0;
4640
4641				for (var _i = 0, _total = children.length; _i < _total; _i++) {
4642					minWidth += children[_i].offsetWidth;
4643				}
4644
4645				t.getElement(t.container).style.minWidth = minWidth + 'px';
4646			}
4647		}
4648	}, {
4649		key: 'addControlElement',
4650		value: function addControlElement(element, key) {
4651
4652			var t = this;
4653
4654			if (t.featurePosition[key] !== undefined) {
4655				var child = t.getElement(t.controls).children[t.featurePosition[key] - 1];
4656				child.parentNode.insertBefore(element, child.nextSibling);
4657			} else {
4658				t.getElement(t.controls).appendChild(element);
4659				var children = t.getElement(t.controls).children;
4660				for (var i = 0, total = children.length; i < total; i++) {
4661					if (element === children[i]) {
4662						t.featurePosition[key] = i;
4663						break;
4664					}
4665				}
4666			}
4667		}
4668	}, {
4669		key: 'createIframeLayer',
4670		value: function createIframeLayer() {
4671			var t = this;
4672
4673			if (t.isVideo && t.media.rendererName !== null && t.media.rendererName.indexOf('iframe') > -1 && !_document2.default.getElementById(t.media.id + '-iframe-overlay')) {
4674
4675				var layer = _document2.default.createElement('div'),
4676				    target = _document2.default.getElementById(t.media.id + '_' + t.media.rendererName);
4677
4678				layer.id = t.media.id + '-iframe-overlay';
4679				layer.className = t.options.classPrefix + 'iframe-overlay';
4680				layer.addEventListener('click', function (e) {
4681					if (t.options.clickToPlayPause) {
4682						if (t.paused) {
4683							t.play();
4684						} else {
4685							t.pause();
4686						}
4687
4688						e.preventDefault();
4689						e.stopPropagation();
4690					}
4691				});
4692
4693				target.parentNode.insertBefore(layer, target);
4694			}
4695		}
4696	}, {
4697		key: 'resetSize',
4698		value: function resetSize() {
4699			var t = this;
4700
4701			setTimeout(function () {
4702				t.setPlayerSize(t.width, t.height);
4703				t.setControlsSize();
4704			}, 50);
4705		}
4706	}, {
4707		key: 'setPoster',
4708		value: function setPoster(url) {
4709			var t = this;
4710
4711			if (t.getElement(t.container)) {
4712				var posterDiv = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster');
4713
4714				if (!posterDiv) {
4715					posterDiv = _document2.default.createElement('div');
4716					posterDiv.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
vendor: 26,333 bytes, lines 4717-5669
4717					t.getElement(t.layers).appendChild(posterDiv);
4718				}
4719
4720				var posterImg = posterDiv.querySelector('img');
4721
4722				if (!posterImg && url) {
4723					posterImg = _document2.default.createElement('img');
4724					posterImg.className = t.options.classPrefix + 'poster-img';
4725					posterImg.width = '100%';
4726					posterImg.height = '100%';
4727					posterDiv.style.display = '';
4728					posterDiv.appendChild(posterImg);
4729				}
4730
4731				if (url) {
4732					posterImg.setAttribute('src', url);
4733					posterDiv.style.backgroundImage = 'url("' + url + '")';
4734					posterDiv.style.display = '';
4735				} else if (posterImg) {
4736					posterDiv.style.backgroundImage = 'none';
4737					posterDiv.style.display = 'none';
4738					posterImg.remove();
4739				} else {
4740					posterDiv.style.display = 'none';
4741				}
4742			} else if (_constants.IS_IPAD && t.options.iPadUseNativeControls || _constants.IS_IPHONE && t.options.iPhoneUseNativeControls || _constants.IS_ANDROID && t.options.AndroidUseNativeControls) {
4743				t.media.originalNode.poster = url;
4744			}
4745		}
4746	}, {
4747		key: 'changeSkin',
4748		value: function changeSkin(className) {
4749			var t = this;
4750
4751			t.getElement(t.container).className = t.options.classPrefix + 'container ' + className;
4752			t.setPlayerSize(t.width, t.height);
4753			t.setControlsSize();
4754		}
4755	}, {
4756		key: 'globalBind',
4757		value: function globalBind(events, callback) {
4758			var t = this,
4759			    doc = t.node ? t.node.ownerDocument : _document2.default;
4760
4761			events = (0, _general.splitEvents)(events, t.id);
4762			if (events.d) {
4763				var eventList = events.d.split(' ');
4764				for (var i = 0, total = eventList.length; i < total; i++) {
4765					eventList[i].split('.').reduce(function (part, e) {
4766						doc.addEventListener(e, callback, false);
4767						return e;
4768					}, '');
4769				}
4770			}
4771			if (events.w) {
4772				var _eventList = events.w.split(' ');
4773				for (var _i2 = 0, _total2 = _eventList.length; _i2 < _total2; _i2++) {
4774					_eventList[_i2].split('.').reduce(function (part, e) {
4775						_window2.default.addEventListener(e, callback, false);
4776						return e;
4777					}, '');
4778				}
4779			}
4780		}
4781	}, {
4782		key: 'globalUnbind',
4783		value: function globalUnbind(events, callback) {
4784			var t = this,
4785			    doc = t.node ? t.node.ownerDocument : _document2.default;
4786
4787			events = (0, _general.splitEvents)(events, t.id);
4788			if (events.d) {
4789				var eventList = events.d.split(' ');
4790				for (var i = 0, total = eventList.length; i < total; i++) {
4791					eventList[i].split('.').reduce(function (part, e) {
4792						doc.removeEventListener(e, callback, false);
4793						return e;
4794					}, '');
4795				}
4796			}
4797			if (events.w) {
4798				var _eventList2 = events.w.split(' ');
4799				for (var _i3 = 0, _total3 = _eventList2.length; _i3 < _total3; _i3++) {
4800					_eventList2[_i3].split('.').reduce(function (part, e) {
4801						_window2.default.removeEventListener(e, callback, false);
4802						return e;
4803					}, '');
4804				}
4805			}
4806		}
4807	}, {
4808		key: 'buildfeatures',
4809		value: function buildfeatures(player, controls, layers, media) {
4810			var t = this;
4811
4812			for (var i = 0, total = t.options.features.length; i < total; i++) {
4813				var feature = t.options.features[i];
4814				if (t['build' + feature]) {
4815					try {
4816						t['build' + feature](player, controls, layers, media);
4817					} catch (e) {
4818						console.error('error building ' + feature, e);
4819					}
4820				}
4821			}
4822		}
4823	}, {
4824		key: 'buildposter',
4825		value: function buildposter(player, controls, layers, media) {
4826			var t = this,
4827			    poster = _document2.default.createElement('div');
4828
4829			poster.className = t.options.classPrefix + 'poster ' + t.options.classPrefix + 'layer';
4830			layers.appendChild(poster);
4831
4832			var posterUrl = media.originalNode.getAttribute('poster');
4833
4834			if (player.options.poster !== '') {
4835				if (posterUrl && _constants.IS_IOS) {
4836					media.originalNode.removeAttribute('poster');
4837				}
4838				posterUrl = player.options.poster;
4839			}
4840
4841			if (posterUrl) {
4842				t.setPoster(posterUrl);
4843			} else if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
4844				t.setPoster(t.media.renderer.getPosterUrl());
4845			} else {
4846				poster.style.display = 'none';
4847			}
4848
4849			media.addEventListener('play', function () {
4850				poster.style.display = 'none';
4851			});
4852
4853			media.addEventListener('playing', function () {
4854				poster.style.display = 'none';
4855			});
4856
4857			if (player.options.showPosterWhenEnded && player.options.autoRewind) {
4858				media.addEventListener('ended', function () {
4859					poster.style.display = '';
4860				});
4861			}
4862
4863			media.addEventListener('error', function () {
4864				poster.style.display = 'none';
4865			});
4866
4867			if (player.options.showPosterWhenPaused) {
4868				media.addEventListener('pause', function () {
4869					if (!player.ended) {
4870						poster.style.display = '';
4871					}
4872				});
4873			}
4874		}
4875	}, {
4876		key: 'buildoverlays',
4877		value: function buildoverlays(player, controls, layers, media) {
4878
4879			if (!player.isVideo) {
4880				return;
4881			}
4882
4883			var t = this,
4884			    loading = _document2.default.createElement('div'),
4885			    error = _document2.default.createElement('div'),
4886			    bigPlay = _document2.default.createElement('div');
4887
4888			loading.style.display = 'none';
4889			loading.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4890			loading.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-loading">' + ('<span class="' + t.options.classPrefix + 'overlay-loading-bg-img"></span>') + '</div>';
4891			layers.appendChild(loading);
4892
4893			error.style.display = 'none';
4894			error.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer';
4895			error.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-error"></div>';
4896			layers.appendChild(error);
4897
4898			bigPlay.className = t.options.classPrefix + 'overlay ' + t.options.classPrefix + 'layer ' + t.options.classPrefix + 'overlay-play';
4899			bigPlay.innerHTML = '<div class="' + t.options.classPrefix + 'overlay-button" role="button" tabindex="0" ' + ('aria-label="' + _i18n2.default.t('mejs.play') + '" aria-pressed="false"></div>');
4900			bigPlay.addEventListener('click', function () {
4901				if (t.options.clickToPlayPause) {
4902
4903					var button = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'overlay-button'),
4904					    pressed = button.getAttribute('aria-pressed');
4905
4906					if (t.paused) {
4907						t.play();
4908					} else {
4909						t.pause();
4910					}
4911
4912					button.setAttribute('aria-pressed', !!pressed);
4913					t.getElement(t.container).focus();
4914				}
4915			});
4916
4917			bigPlay.addEventListener('keydown', function (e) {
4918				var keyPressed = e.keyCode || e.which || 0;
4919
4920				if (keyPressed === 13 || _constants.IS_FIREFOX && keyPressed === 32) {
4921					var event = (0, _general.createEvent)('click', bigPlay);
4922					bigPlay.dispatchEvent(event);
4923					return false;
4924				}
4925			});
4926
4927			layers.appendChild(bigPlay);
4928
4929			if (t.media.rendererName !== null && (/(youtube|facebook)/i.test(t.media.rendererName) && !(t.media.originalNode.getAttribute('poster') || player.options.poster || typeof t.media.renderer.getPosterUrl === 'function' && t.media.renderer.getPosterUrl()) || _constants.IS_STOCK_ANDROID || t.media.originalNode.getAttribute('autoplay'))) {
4930				bigPlay.style.display = 'none';
4931			}
4932
4933			var hasError = false;
4934
4935			media.addEventListener('play', function () {
4936				bigPlay.style.display = 'none';
4937				loading.style.display = 'none';
4938				error.style.display = 'none';
4939				hasError = false;
4940			});
4941			media.addEventListener('playing', function () {
4942				bigPlay.style.display = 'none';
4943				loading.style.display = 'none';
4944				error.style.display = 'none';
4945				hasError = false;
4946			});
4947			media.addEventListener('seeking', function () {
4948				bigPlay.style.display = 'none';
4949				loading.style.display = '';
4950				hasError = false;
4951			});
4952			media.addEventListener('seeked', function () {
4953				bigPlay.style.display = t.paused && !_constants.IS_STOCK_ANDROID ? '' : 'none';
4954				loading.style.display = 'none';
4955				hasError = false;
4956			});
4957			media.addEventListener('pause', function () {
4958				loading.style.display = 'none';
4959				if (!_constants.IS_STOCK_ANDROID && !hasError) {
4960					bigPlay.style.display = '';
4961				}
4962				hasError = false;
4963			});
4964			media.addEventListener('waiting', function () {
4965				loading.style.display = '';
4966				hasError = false;
4967			});
4968
4969			media.addEventListener('loadeddata', function () {
4970				loading.style.display = '';
4971
4972				if (_constants.IS_ANDROID) {
4973					media.canplayTimeout = setTimeout(function () {
4974						if (_document2.default.createEvent) {
4975							var evt = _document2.default.createEvent('HTMLEvents');
4976							evt.initEvent('canplay', true, true);
4977							return media.dispatchEvent(evt);
4978						}
4979					}, 300);
4980				}
4981				hasError = false;
4982			});
4983			media.addEventListener('canplay', function () {
4984				loading.style.display = 'none';
4985
4986				clearTimeout(media.canplayTimeout);
4987				hasError = false;
4988			});
4989
4990			media.addEventListener('error', function (e) {
4991				t._handleError(e, t.media, t.node);
4992				loading.style.display = 'none';
4993				bigPlay.style.display = 'none';
4994				hasError = true;
4995			});
4996
4997			media.addEventListener('loadedmetadata', function () {
4998				if (!t.controlsEnabled) {
4999					t.enableControls();
5000				}
5001			});
5002
5003			media.addEventListener('keydown', function (e) {
5004				t.onkeydown(player, media, e);
5005				hasError = false;
5006			});
5007		}
5008	}, {
5009		key: 'buildkeyboard',
5010		value: function buildkeyboard(player, controls, layers, media) {
5011
5012			var t = this;
5013
5014			t.getElement(t.container).addEventListener('keydown', function () {
5015				t.keyboardAction = true;
5016			});
5017
5018			t.globalKeydownCallback = function (event) {
5019				var container = _document2.default.activeElement.closest('.' + t.options.classPrefix + 'container'),
5020				    target = t.media.closest('.' + t.options.classPrefix + 'container');
5021				t.hasFocus = !!(container && target && container.id === target.id);
5022				return t.onkeydown(player, media, event);
5023			};
5024
5025			t.globalClickCallback = function (event) {
5026				t.hasFocus = !!event.target.closest('.' + t.options.classPrefix + 'container');
5027			};
5028
5029			t.globalBind('keydown', t.globalKeydownCallback);
5030
5031			t.globalBind('click', t.globalClickCallback);
5032		}
5033	}, {
5034		key: 'onkeydown',
5035		value: function onkeydown(player, media, e) {
5036
5037			if (player.hasFocus && player.options.enableKeyboard) {
5038				for (var i = 0, total = player.options.keyActions.length; i < total; i++) {
5039					var keyAction = player.options.keyActions[i];
5040
5041					for (var j = 0, jl = keyAction.keys.length; j < jl; j++) {
5042						if (e.keyCode === keyAction.keys[j]) {
5043							keyAction.action(player, media, e.keyCode, e);
5044							e.preventDefault();
5045							e.stopPropagation();
5046							return;
5047						}
5048					}
5049				}
5050			}
5051
5052			return true;
5053		}
5054	}, {
5055		key: 'play',
5056		value: function play() {
5057			this.proxy.play();
5058		}
5059	}, {
5060		key: 'pause',
5061		value: function pause() {
5062			this.proxy.pause();
5063		}
5064	}, {
5065		key: 'load',
5066		value: function load() {
5067			this.proxy.load();
5068		}
5069	}, {
5070		key: 'setCurrentTime',
5071		value: function setCurrentTime(time) {
5072			this.proxy.setCurrentTime(time);
5073		}
5074	}, {
5075		key: 'getCurrentTime',
5076		value: function getCurrentTime() {
5077			return this.proxy.currentTime;
5078		}
5079	}, {
5080		key: 'getDuration',
5081		value: function getDuration() {
5082			return this.proxy.duration;
5083		}
5084	}, {
5085		key: 'setVolume',
5086		value: function setVolume(volume) {
5087			this.proxy.volume = volume;
5088		}
5089	}, {
5090		key: 'getVolume',
5091		value: function getVolume() {
5092			return this.proxy.getVolume();
5093		}
5094	}, {
5095		key: 'setMuted',
5096		value: function setMuted(value) {
5097			this.proxy.setMuted(value);
5098		}
5099	}, {
5100		key: 'setSrc',
5101		value: function setSrc(src) {
5102			if (!this.controlsEnabled) {
5103				this.enableControls();
5104			}
5105			this.proxy.setSrc(src);
5106		}
5107	}, {
5108		key: 'getSrc',
5109		value: function getSrc() {
5110			return this.proxy.getSrc();
5111		}
5112	}, {
5113		key: 'canPlayType',
5114		value: function canPlayType(type) {
5115			return this.proxy.canPlayType(type);
5116		}
5117	}, {
5118		key: 'remove',
5119		value: function remove() {
5120			var t = this,
5121			    rendererName = t.media.rendererName,
5122			    src = t.media.originalNode.src;
5123
5124			for (var featureIndex in t.options.features) {
5125				var feature = t.options.features[featureIndex];
5126				if (t['clean' + feature]) {
5127					try {
5128						t['clean' + feature](t, t.getElement(t.layers), t.getElement(t.controls), t.media);
5129					} catch (e) {
5130						console.error('error cleaning ' + feature, e);
5131					}
5132				}
5133			}
5134
5135			var nativeWidth = t.node.getAttribute('width'),
5136			    nativeHeight = t.node.getAttribute('height');
5137
5138			if (nativeWidth) {
5139				if (nativeWidth.indexOf('%') === -1) {
5140					nativeWidth = nativeWidth + 'px';
5141				}
5142			} else {
5143				nativeWidth = 'auto';
5144			}
5145
5146			if (nativeHeight) {
5147				if (nativeHeight.indexOf('%') === -1) {
5148					nativeHeight = nativeHeight + 'px';
5149				}
5150			} else {
5151				nativeHeight = 'auto';
5152			}
5153
5154			t.node.style.width = nativeWidth;
5155			t.node.style.height = nativeHeight;
5156
5157			t.setPlayerSize(0, 0);
5158
5159			if (!t.isDynamic) {
5160				(function () {
5161					t.node.setAttribute('controls', true);
5162					t.node.setAttribute('id', t.node.getAttribute('id').replace('_' + rendererName, '').replace('_from_mejs', ''));
5163					var poster = t.getElement(t.container).querySelector('.' + t.options.classPrefix + 'poster>img');
5164					if (poster) {
5165						t.node.setAttribute('poster', poster.src);
5166					}
5167
5168					delete t.node.autoplay;
5169
5170					if (t.media.canPlayType((0, _media.getTypeFromFile)(src)) !== '') {
5171						t.node.setAttribute('src', src);
5172					}
5173
5174					if (~rendererName.indexOf('iframe')) {
5175						var layer = _document2.default.getElementById(t.media.id + '-iframe-overlay');
5176						layer.remove();
5177					}
5178
5179					var node = t.node.cloneNode();
5180					node.style.display = '';
5181					t.getElement(t.container).parentNode.insertBefore(node, t.getElement(t.container));
5182					t.node.remove();
5183
5184					if (t.mediaFiles) {
5185						for (var i = 0, total = t.mediaFiles.length; i < total; i++) {
5186							var source = _document2.default.createElement('source');
5187							source.setAttribute('src', t.mediaFiles[i].src);
5188							source.setAttribute('type', t.mediaFiles[i].type);
5189							node.appendChild(source);
5190						}
5191					}
5192					if (t.trackFiles) {
5193						var _loop3 = function _loop3(_i4, _total4) {
5194							var track = t.trackFiles[_i4];
5195							var newTrack = _document2.default.createElement('track');
5196							newTrack.kind = track.kind;
5197							newTrack.label = track.label;
5198							newTrack.srclang = track.srclang;
5199							newTrack.src = track.src;
5200
5201							node.appendChild(newTrack);
5202							newTrack.addEventListener('load', function () {
5203								this.mode = 'showing';
5204								node.textTracks[_i4].mode = 'showing';
5205							});
5206						};
5207
5208						for (var _i4 = 0, _total4 = t.trackFiles.length; _i4 < _total4; _i4++) {
5209							_loop3(_i4, _total4);
5210						}
5211					}
5212
5213					delete t.node;
5214					delete t.mediaFiles;
5215					delete t.trackFiles;
5216				})();
5217			} else {
5218				t.getElement(t.container).parentNode.insertBefore(t.node, t.getElement(t.container));
5219			}
5220
5221			if (typeof t.media.renderer.destroy === 'function') {
5222				t.media.renderer.destroy();
5223			}
5224
5225			delete _mejs2.default.players[t.id];
5226
5227			if (_typeof(t.getElement(t.container)) === 'object') {
5228				var offscreen = t.getElement(t.container).parentNode.querySelector('.' + t.options.classPrefix + 'offscreen');
5229				offscreen.remove();
5230				t.getElement(t.container).remove();
5231			}
5232			t.globalUnbind('resize', t.globalResizeCallback);
5233			t.globalUnbind('keydown', t.globalKeydownCallback);
5234			t.globalUnbind('click', t.globalClickCallback);
5235
5236			delete t.media.player;
5237		}
5238	}, {
5239		key: 'paused',
5240		get: function get() {
5241			return this.proxy.paused;
5242		}
5243	}, {
5244		key: 'muted',
5245		get: function get() {
5246			return this.proxy.muted;
5247		},
5248		set: function set(muted) {
5249			this.setMuted(muted);
5250		}
5251	}, {
5252		key: 'ended',
5253		get: function get() {
5254			return this.proxy.ended;
5255		}
5256	}, {
5257		key: 'readyState',
5258		get: function get() {
5259			return this.proxy.readyState;
5260		}
5261	}, {
5262		key: 'currentTime',
5263		set: function set(time) {
5264			this.setCurrentTime(time);
5265		},
5266		get: function get() {
5267			return this.getCurrentTime();
5268		}
5269	}, {
5270		key: 'duration',
5271		get: function get() {
5272			return this.getDuration();
5273		}
5274	}, {
5275		key: 'volume',
5276		set: function set(volume) {
5277			this.setVolume(volume);
5278		},
5279		get: function get() {
5280			return this.getVolume();
5281		}
5282	}, {
5283		key: 'src',
5284		set: function set(src) {
5285			this.setSrc(src);
5286		},
5287		get: function get() {
5288			return this.getSrc();
5289		}
5290	}]);
5291
5292	return MediaElementPlayer;
5293}();
5294
5295_window2.default.MediaElementPlayer = MediaElementPlayer;
5296_mejs2.default.MediaElementPlayer = MediaElementPlayer;
5297
5298exports.default = MediaElementPlayer;
5299
5300},{"17":17,"2":2,"25":25,"26":26,"27":27,"28":28,"3":3,"30":30,"5":5,"6":6,"7":7}],17:[function(_dereq_,module,exports){
5301'use strict';
5302
5303Object.defineProperty(exports, "__esModule", {
5304	value: true
5305});
5306
5307var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
5308
5309var _window = _dereq_(3);
5310
5311var _window2 = _interopRequireDefault(_window);
5312
5313function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5314
5315function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
5316
5317var DefaultPlayer = function () {
5318	function DefaultPlayer(player) {
5319		_classCallCheck(this, DefaultPlayer);
5320
5321		this.media = player.media;
5322		this.isVideo = player.isVideo;
5323		this.classPrefix = player.options.classPrefix;
5324		this.createIframeLayer = function () {
5325			return player.createIframeLayer();
5326		};
5327		this.setPoster = function (url) {
5328			return player.setPoster(url);
5329		};
5330		return this;
5331	}
5332
5333	_createClass(DefaultPlayer, [{
5334		key: 'play',
5335		value: function play() {
5336			this.media.play();
5337		}
5338	}, {
5339		key: 'pause',
5340		value: function pause() {
5341			this.media.pause();
5342		}
5343	}, {
5344		key: 'load',
5345		value: function load() {
5346			var t = this;
5347
5348			if (!t.isLoaded) {
5349				t.media.load();
5350			}
5351
5352			t.isLoaded = true;
5353		}
5354	}, {
5355		key: 'setCurrentTime',
5356		value: function setCurrentTime(time) {
5357			this.media.setCurrentTime(time);
5358		}
5359	}, {
5360		key: 'getCurrentTime',
5361		value: function getCurrentTime() {
5362			return this.media.currentTime;
5363		}
5364	}, {
5365		key: 'getDuration',
5366		value: function getDuration() {
5367			return this.media.getDuration();
5368		}
5369	}, {
5370		key: 'setVolume',
5371		value: function setVolume(volume) {
5372			this.media.setVolume(volume);
5373		}
5374	}, {
5375		key: 'getVolume',
5376		value: function getVolume() {
5377			return this.media.getVolume();
5378		}
5379	}, {
5380		key: 'setMuted',
5381		value: function setMuted(value) {
5382			this.media.setMuted(value);
5383		}
5384	}, {
5385		key: 'setSrc',
5386		value: function setSrc(src) {
5387			var t = this,
5388			    layer = document.getElementById(t.media.id + '-iframe-overlay');
5389
5390			if (layer) {
5391				layer.remove();
5392			}
5393
5394			t.media.setSrc(src);
5395			t.createIframeLayer();
5396			if (t.media.renderer !== null && typeof t.media.renderer.getPosterUrl === 'function') {
5397				t.setPoster(t.media.renderer.getPosterUrl());
5398			}
5399		}
5400	}, {
5401		key: 'getSrc',
5402		value: function getSrc() {
5403			return this.media.getSrc();
5404		}
5405	}, {
5406		key: 'canPlayType',
5407		value: function canPlayType(type) {
5408			return this.media.canPlayType(type);
5409		}
5410	}, {
5411		key: 'paused',
5412		get: function get() {
5413			return this.media.paused;
5414		}
5415	}, {
5416		key: 'muted',
5417		set: function set(muted) {
5418			this.setMuted(muted);
5419		},
5420		get: function get() {
5421			return this.media.muted;
5422		}
5423	}, {
5424		key: 'ended',
5425		get: function get() {
5426			return this.media.ended;
5427		}
5428	}, {
5429		key: 'readyState',
5430		get: function get() {
5431			return this.media.readyState;
5432		}
5433	}, {
5434		key: 'currentTime',
5435		set: function set(time) {
5436			this.setCurrentTime(time);
5437		},
5438		get: function get() {
5439			return this.getCurrentTime();
5440		}
5441	}, {
5442		key: 'duration',
5443		get: function get() {
5444			return this.getDuration();
5445		}
5446	}, {
5447		key: 'volume',
5448		set: function set(volume) {
5449			this.setVolume(volume);
5450		},
5451		get: function get() {
5452			return this.getVolume();
5453		}
5454	}, {
5455		key: 'src',
5456		set: function set(src) {
5457			this.setSrc(src);
5458		},
5459		get: function get() {
5460			return this.getSrc();
5461		}
5462	}]);
5463
5464	return DefaultPlayer;
5465}();
5466
5467exports.default = DefaultPlayer;
5468
5469
5470_window2.default.DefaultPlayer = DefaultPlayer;
5471
5472},{"3":3}],18:[function(_dereq_,module,exports){
5473'use strict';
5474
5475var _window = _dereq_(3);
5476
5477var _window2 = _interopRequireDefault(_window);
5478
5479var _mejs = _dereq_(7);
5480
5481var _mejs2 = _interopRequireDefault(_mejs);
5482
5483var _player = _dereq_(16);
5484
5485var _player2 = _interopRequireDefault(_player);
5486
5487function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5488
5489if (typeof jQuery !== 'undefined') {
5490	_mejs2.default.$ = _window2.default.jQuery = _window2.default.$ = jQuery;
5491} else if (typeof Zepto !== 'undefined') {
5492	_mejs2.default.$ = _window2.default.Zepto = _window2.default.$ = Zepto;
5493} else if (typeof ender !== 'undefined') {
5494	_mejs2.default.$ = _window2.default.ender = _window2.default.$ = ender;
5495}
5496
5497(function ($) {
5498	if (typeof $ !== 'undefined') {
5499		$.fn.mediaelementplayer = function (options) {
5500			if (options === false) {
5501				this.each(function () {
5502					var player = $(this).data('mediaelementplayer');
5503					if (player) {
5504						player.remove();
5505					}
5506					$(this).removeData('mediaelementplayer');
5507				});
5508			} else {
5509				this.each(function () {
5510					$(this).data('mediaelementplayer', new _player2.default(this, options));
5511				});
5512			}
5513			return this;
5514		};
5515
5516		$(document).ready(function () {
5517			$('.' + _mejs2.default.MepDefaults.classPrefix + 'player').mediaelementplayer();
5518		});
5519	}
5520})(_mejs2.default.$);
5521
5522},{"16":16,"3":3,"7":7}],19:[function(_dereq_,module,exports){
5523'use strict';
5524
5525var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5526
5527var _window = _dereq_(3);
5528
5529var _window2 = _interopRequireDefault(_window);
5530
5531var _mejs = _dereq_(7);
5532
5533var _mejs2 = _interopRequireDefault(_mejs);
5534
5535var _renderer = _dereq_(8);
5536
5537var _general = _dereq_(27);
5538
5539var _media = _dereq_(28);
5540
5541var _constants = _dereq_(25);
5542
5543var _dom = _dereq_(26);
5544
5545function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5546
5547var NativeDash = {
5548
5549	promise: null,
5550
5551	load: function load(settings) {
5552		if (typeof dashjs !== 'undefined') {
5553			NativeDash.promise = new Promise(function (resolve) {
5554				resolve();
5555			}).then(function () {
5556				NativeDash._createPlayer(settings);
5557			});
5558		} else {
5559			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.dashjs.org/latest/dash.all.min.js';
5560
5561			NativeDash.promise = NativeDash.promise || (0, _dom.loadScript)(settings.options.path);
5562			NativeDash.promise.then(function () {
5563				NativeDash._createPlayer(settings);
5564			});
5565		}
5566
5567		return NativeDash.promise;
5568	},
5569
5570	_createPlayer: function _createPlayer(settings) {
5571		var player = dashjs.MediaPlayer().create();
5572		_window2.default['__ready__' + settings.id](player);
5573		return player;
5574	}
5575};
5576
5577var DashNativeRenderer = {
5578	name: 'native_dash',
5579	options: {
5580		prefix: 'native_dash',
5581		dash: {
5582			path: 'https://cdn.dashjs.org/latest/dash.all.min.js',
5583			debug: false,
5584			drm: {},
5585
5586			robustnessLevel: ''
5587		}
5588	},
5589
5590	canPlayType: function canPlayType(type) {
5591		return _constants.HAS_MSE && ['application/dash+xml'].indexOf(type.toLowerCase()) > -1;
5592	},
5593
5594	create: function create(mediaElement, options, mediaFiles) {
5595
5596		var originalNode = mediaElement.originalNode,
5597		    id = mediaElement.id + '_' + options.prefix,
5598		    autoplay = originalNode.autoplay,
5599		    children = originalNode.children;
5600
5601		var node = null,
5602		    dashPlayer = null;
5603
5604		originalNode.removeAttribute('type');
5605		for (var i = 0, total = children.length; i < total; i++) {
5606			children[i].removeAttribute('type');
5607		}
5608
5609		node = originalNode.cloneNode(true);
5610		options = Object.assign(options, mediaElement.options);
5611
5612		var props = _mejs2.default.html5media.properties,
5613		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
5614			return e !== 'error';
5615		}),
5616		    attachNativeEvents = function attachNativeEvents(e) {
5617			var event = (0, _general.createEvent)(e.type, mediaElement);
5618			mediaElement.dispatchEvent(event);
5619		},
5620		    assignGettersSetters = function assignGettersSetters(propName) {
5621			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5622
5623			node['get' + capName] = function () {
5624				return dashPlayer !== null ? node[propName] : null;
5625			};
5626
5627			node['set' + capName] = function (value) {
5628				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
5629					if (propName === 'src') {
5630						var source = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
5631						node[propName] = source;
5632						if (dashPlayer !== null) {
5633							dashPlayer.reset();
5634							for (var _i = 0, _total = events.length; _i < _total; _i++) {
5635								node.removeEventListener(events[_i], attachNativeEvents);
5636							}
5637							dashPlayer = NativeDash._createPlayer({
5638								options: options.dash,
5639								id: id
5640							});
5641
5642							if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && _typeof(value.drm) === 'object') {
5643								dashPlayer.setProtectionData(value.drm);
5644								if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5645									dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5646								}
5647							}
5648							dashPlayer.attachSource(source);
5649							if (autoplay) {
5650								dashPlayer.play();
5651							}
5652						}
5653					} else {
5654						node[propName] = value;
5655					}
5656				}
5657			};
5658		};
5659
5660		for (var _i2 = 0, _total2 = props.length; _i2 < _total2; _i2++) {
5661			assignGettersSetters(props[_i2]);
5662		}
5663
5664		_window2.default['__ready__' + id] = function (_dashPlayer) {
5665			mediaElement.dashPlayer = dashPlayer = _dashPlayer;
5666
5667			var dashEvents = dashjs.MediaPlayer.events,
5668			    assignEvents = function assignEvents(eventName) {
5669				if (eventName === 'loadedmetadata') {
5670					dashPlayer.getDebug().setLogToBrowserConsole(options.dash.debug);
5671					dashPlayer.initialize();
5672					dashPlayer.setScheduleWhilePaused(false);
5673					dashPlayer.setFastSwitchEnabled(true);
5674					dashPlayer.attachView(node);
5675					dashPlayer.setAutoPlay(false);
5676
5677					if (_typeof(options.dash.drm) === 'object' && !_mejs2.default.Utils.isObjectEmpty(options.dash.drm)) {
5678						dashPlayer.setProtectionData(options.dash.drm);
5679						if ((0, _general.isString)(options.dash.robustnessLevel) && options.dash.robustnessLevel) {
5680							dashPlayer.getProtectionController().setRobustnessLevel(options.dash.robustnessLevel);
5681						}
5682					}
5683					dashPlayer.attachSource(node.getSrc());
5684				}
5685
5686				node.addEventListener(eventName, attachNativeEvents);
5687			};
5688
5689			for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
5690				assignEvents(events[_i3]);
5691			}
5692
5693			var assignMdashEvents = function assignMdashEvents(e) {
5694				if (e.type.toLowerCase() === 'error') {
5695					mediaElement.generateError(e.message, node.src);
5696					console.error(e);
5697				} else {
5698					var _event = (0, _general.createEvent)(e.type, mediaElement);
5699					_event.data = e;
5700					mediaElement.dispatchEvent(_event);
5701				}
5702			};
5703
5704			for (var eventType in dashEvents) {
5705				if (dashEvents.hasOwnProperty(eventType)) {
5706					dashPlayer.on(dashEvents[eventType], function (e) {
5707						return assignMdashEvents(e);
5708					});
5709				}
5710			}
5711		};
5712
5713		if (mediaFiles && mediaFiles.length > 0) {
5714			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
5715				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
5716					node.setAttribute('src', mediaFiles[_i4].src);
5717					if (typeof mediaFiles[_i4].drm !== 'undefined') {
5718						options.dash.drm = mediaFiles[_i4].drm;
5719					}
5720					break;
5721				}
5722			}
5723		}
5724
5725		node.setAttribute('id', id);
5726
5727		originalNode.parentNode.insertBefore(node, originalNode);
5728		originalNode.autoplay = false;
5729		originalNode.style.display = 'none';
5730
5731		node.setSize = function (width, height) {
5732			node.style.width = width + 'px';
5733			node.style.height = height + 'px';
5734			return node;
5735		};
5736
5737		node.hide = function () {
5738			node.pause();
5739			node.style.display = 'none';
5740			return node;
5741		};
5742
5743		node.show = function () {
5744			node.style.display = '';
5745			return node;
5746		};
5747
5748		node.destroy = function () {
5749			if (dashPlayer !== null) {
5750				dashPlayer.reset();
5751			}
5752		};
5753
5754		var event = (0, _general.createEvent)('rendererready', node);
5755		mediaElement.dispatchEvent(event);
5756
5757		mediaElement.promises.push(NativeDash.load({
5758			options: options.dash,
5759			id: id
5760		}));
5761
5762		return node;
5763	}
5764};
5765
5766_media.typeChecks.push(function (url) {
5767	return ~url.toLowerCase().indexOf('.mpd') ? 'application/dash+xml' : null;
5768});
5769
5770_renderer.renderer.add(DashNativeRenderer);
5771
5772},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],20:[function(_dereq_,module,exports){
5773'use strict';
5774
5775Object.defineProperty(exports, "__esModule", {
5776	value: true
5777});
5778exports.PluginDetector = undefined;
5779
5780var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
5781
5782var _window = _dereq_(3);
5783
5784var _window2 = _interopRequireDefault(_window);
5785
5786var _document = _dereq_(2);
5787
5788var _document2 = _interopRequireDefault(_document);
5789
5790var _mejs = _dereq_(7);
5791
5792var _mejs2 = _interopRequireDefault(_mejs);
5793
5794var _i18n = _dereq_(5);
5795
5796var _i18n2 = _interopRequireDefault(_i18n);
5797
5798var _renderer = _dereq_(8);
5799
5800var _general = _dereq_(27);
5801
5802var _constants = _dereq_(25);
5803
5804var _media = _dereq_(28);
5805
5806function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
5807
5808var PluginDetector = exports.PluginDetector = {
5809	plugins: [],
5810
5811	hasPluginVersion: function hasPluginVersion(plugin, v) {
5812		var pv = PluginDetector.plugins[plugin];
5813		v[1] = v[1] || 0;
5814		v[2] = v[2] || 0;
5815		return pv[0] > v[0] || pv[0] === v[0] && pv[1] > v[1] || pv[0] === v[0] && pv[1] === v[1] && pv[2] >= v[2];
5816	},
5817
5818	addPlugin: function addPlugin(p, pluginName, mimeType, activeX, axDetect) {
5819		PluginDetector.plugins[p] = PluginDetector.detectPlugin(pluginName, mimeType, activeX, axDetect);
5820	},
5821
5822	detectPlugin: function detectPlugin(pluginName, mimeType, activeX, axDetect) {
5823
5824		var version = [0, 0, 0],
5825		    description = void 0,
5826		    ax = void 0;
5827
5828		if (_constants.NAV.plugins !== null && _constants.NAV.plugins !== undefined && _typeof(_constants.NAV.plugins[pluginName]) === 'object') {
5829			description = _constants.NAV.plugins[pluginName].description;
5830			if (description && !(typeof _constants.NAV.mimeTypes !== 'undefined' && _constants.NAV.mimeTypes[mimeType] && !_constants.NAV.mimeTypes[mimeType].enabledPlugin)) {
5831				version = description.replace(pluginName, '').replace(/^\s+/, '').replace(/\sr/gi, '.').split('.');
5832				for (var i = 0, total = version.length; i < total; i++) {
5833					version[i] = parseInt(version[i].match(/\d+/), 10);
5834				}
5835			}
5836		} else if (_window2.default.ActiveXObject !== undefined) {
5837			try {
5838				ax = new ActiveXObject(activeX);
5839				if (ax) {
5840					version = axDetect(ax);
5841				}
5842			} catch (e) {
5843				
5844			}
5845		}
5846		return version;
5847	}
5848};
5849
5850PluginDetector.addPlugin('flash', 'Shockwave Flash', 'application/x-shockwave-flash', 'ShockwaveFlash.ShockwaveFlash', function (ax) {
5851	var version = [],
5852	    d = ax.GetVariable("$version");
5853
5854	if (d) {
5855		d = d.split(" ")[1].split(",");
5856		version = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
5857	}
5858	return version;
5859});
5860
5861var FlashMediaElementRenderer = {
5862	create: function create(mediaElement, options, mediaFiles) {
5863
5864		var flash = {};
5865		var isActive = false;
5866
5867		flash.options = options;
5868		flash.id = mediaElement.id + '_' + flash.options.prefix;
5869		flash.mediaElement = mediaElement;
5870		flash.flashState = {};
5871		flash.flashApi = null;
5872		flash.flashApiStack = [];
5873
5874		var props = _mejs2.default.html5media.properties,
5875		    assignGettersSetters = function assignGettersSetters(propName) {
5876			flash.flashState[propName] = null;
5877
5878			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5879
5880			flash['get' + capName] = function () {
5881				if (flash.flashApi !== null) {
5882					if (typeof flash.flashApi['get_' + propName] === 'function') {
5883						var value = flash.flashApi['get_' + propName]();
5884
5885						if (propName === 'buffered') {
5886							return {
5887								start: function start() {
5888									return 0;
5889								},
5890								end: function end() {
5891									return value;
5892								},
5893								length: 1
5894							};
5895						}
5896						return value;
5897					} else {
5898						return null;
5899					}
5900				} else {
5901					return null;
5902				}
5903			};
5904
5905			flash['set' + capName] = function (value) {
5906				if (propName === 'src') {
5907					value = (0, _media.absolutizeUrl)(value);
5908				}
5909
5910				if (flash.flashApi !== null && flash.flashApi['set_' + propName] !== undefined) {
5911					try {
5912						flash.flashApi['set_' + propName](value);
5913					} catch (e) {
5914						
5915					}
5916				} else {
5917					flash.flashApiStack.push({
5918						type: 'set',
5919						propName: propName,
5920						value: value
5921					});
5922				}
5923			};
5924		};
5925
5926		for (var i = 0, total = props.length; i < total; i++) {
5927			assignGettersSetters(props[i]);
5928		}
5929
5930		var methods = _mejs2.default.html5media.methods,
5931		    assignMethods = function assignMethods(methodName) {
5932			flash[methodName] = function () {
5933				if (isActive) {
5934					if (flash.flashApi !== null) {
5935						if (flash.flashApi['fire_' + methodName]) {
5936							try {
5937								flash.flashApi['fire_' + methodName]();
5938							} catch (e) {
5939								
5940							}
5941						} else {
5942							
5943						}
5944					} else {
5945						flash.flashApiStack.push({
5946							type: 'call',
5947							methodName: methodName
5948						});
5949					}
5950				}
5951			};
5952		};
5953		methods.push('stop');
5954		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
5955			assignMethods(methods[_i]);
5956		}
5957
5958		var initEvents = ['rendererready'];
5959
5960		for (var _i2 = 0, _total2 = initEvents.length; _i2 < _total2; _i2++) {
5961			var event = (0, _general.createEvent)(initEvents[_i2], flash);
5962			mediaElement.dispatchEvent(event);
5963		}
5964
5965		_window2.default['__ready__' + flash.id] = function () {
5966
5967			flash.flashReady = true;
5968			flash.flashApi = _document2.default.getElementById('__' + flash.id);
5969
5970			if (flash.flashApiStack.length) {
5971				for (var _i3 = 0, _total3 = flash.flashApiStack.length; _i3 < _total3; _i3++) {
5972					var stackItem = flash.flashApiStack[_i3];
5973
5974					if (stackItem.type === 'set') {
5975						var propName = stackItem.propName,
5976						    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
5977
5978						flash['set' + capName](stackItem.value);
5979					} else if (stackItem.type === 'call') {
5980						flash[stackItem.methodName]();
5981					}
5982				}
5983			}
5984		};
5985
5986		_window2.default['__event__' + flash.id] = function (eventName, message) {
5987			var event = (0, _general.createEvent)(eventName, flash);
5988			if (message) {
5989				try {
5990					event.data = JSON.parse(message);
5991					event.details.data = JSON.parse(message);
5992				} catch (e) {
5993					event.message = message;
5994				}
5995			}
5996
5997			flash.mediaElement.dispatchEvent(event);
5998		};
5999
6000		flash.flashWrapper = _document2.default.createElement('div');
6001
6002		if (['always', 'sameDomain'].indexOf(flash.options.shimScriptAccess) === -1) {
6003			flash.options.shimScriptAccess = 'sameDomain';
6004		}
6005
6006		var autoplay = mediaElement.originalNode.autoplay,
6007		    flashVars = ['uid=' + flash.id, 'autoplay=' + autoplay, 'allowScriptAccess=' + flash.options.shimScriptAccess, 'preload=' + (mediaElement.originalNode.getAttribute('preload') || '')],
6008		    isVideo = mediaElement.originalNode !== null && mediaElement.originalNode.tagName.toLowerCase() === 'video',
6009		    flashHeight = isVideo ? mediaElement.originalNode.height : 1,
6010		    flashWidth = isVideo ? mediaElement.originalNode.width : 1;
6011
6012		if (mediaElement.originalNode.getAttribute('src')) {
6013			flashVars.push('src=' + mediaElement.originalNode.getAttribute('src'));
6014		}
6015
6016		if (flash.options.enablePseudoStreaming === true) {
6017			flashVars.push('pseudostreamstart=' + flash.options.pseudoStreamingStartQueryParam);
6018			flashVars.push('pseudostreamtype=' + flash.options.pseudoStreamingType);
6019		}
6020
6021		if (flash.options.streamDelimiter) {
6022			flashVars.push('streamdelimiter=' + encodeURIComponent(flash.options.streamDelimiter));
6023		}
6024
6025		if (flash.options.proxyType) {
6026			flashVars.push('proxytype=' + flash.options.proxyType);
6027		}
6028
6029		mediaElement.appendChild(flash.flashWrapper);
6030		mediaElement.originalNode.style.display = 'none';
6031
6032		var settings = [];
6033
6034		if (_constants.IS_IE || _constants.IS_EDGE) {
6035			var specialIEContainer = _document2.default.createElement('div');
6036			flash.flashWrapper.appendChild(specialIEContainer);
6037
6038			if (_constants.IS_EDGE) {
6039				settings = ['type="application/x-shockwave-flash"', 'data="' + flash.options.pluginPath + flash.options.filename + '"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '\'"'];
6040			} else {
6041				settings = ['classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"', 'codebase="//download.macromedia.com/pub/s
6041hockwave/cabs/flash/swflash.cab"', 'id="__' + flash.id + '"', 'width="' + flashWidth + '"', 'height="' + flashHeight + '"'];
6042			}
6043
6044			if (!isVideo) {
6045				settings.push('style="clip: rect(0 0 0 0); position: absolute;"');
6046			}
6047
6048			specialIEContainer.outerHTML = '<object ' + settings.join(' ') + '>' + ('<param name="movie" value="' + flash.options.pluginPath + flash.options.filename + '?x=' + new Date() + '" />') + ('<param name="flashvars" value="' + flashVars.join('&amp;') + '" />') + '<param name="quality" value="high" />' + '<param name="bgcolor" value="#000000" />' + '<param name="wmode" value="transparent" />' + ('<param name="allowScriptAccess" value="' + flash.options.shimScriptAccess + '" />') + '<param name="allowFullScreen" value="true" />' + ('<div>' + _i18n2.default.t('mejs.install-flash') + '</div>') + '</object>';
6049		} else {
6050
6051			settings = ['id="__' + flash.id + '"', 'name="__' + flash.id + '"', 'play="true"', 'loop="false"', 'quality="high"', 'bgcolor="#000000"', 'wmode="transparent"', 'allowScriptAccess="' + flash.options.shimScriptAccess + '"', 'allowFullScreen="true"', 'type="application/x-shockwave-flash"', 'pluginspage="//www.macromedia.com/go/getflashplayer"', 'src="' + flash.options.pluginPath + flash.options.filename + '"', 'flashvars="' + flashVars.join('&') + '"'];
6052
6053			if (isVideo) {
6054				settings.push('width="' + flashWidth + '"');
6055				settings.push('height="' + flashHeight + '"');
6056			} else {
6057				settings.push('style="position: fixed; left: -9999em; top: -9999em;"');
6058			}
6059
6060			flash.flashWrapper.innerHTML = '<embed ' + settings.join(' ') + '>';
6061		}
6062
6063		flash.flashNode = flash.flashWrapper.lastChild;
6064
6065		flash.hide = function () {
6066			isActive = false;
6067			if (isVideo) {
6068				flash.flashNode.style.display = 'none';
6069			}
6070		};
6071		flash.show = function () {
6072			isActive = true;
6073			if (isVideo) {
6074				flash.flashNode.style.display = '';
6075			}
6076		};
6077		flash.setSize = function (width, height) {
6078			flash.flashNode.style.width = width + 'px';
6079			flash.flashNode.style.height = height + 'px';
6080
6081			if (flash.flashApi !== null && typeof flash.flashApi.fire_setSize === 'function') {
6082				flash.flashApi.fire_setSize(width, height);
6083			}
6084		};
6085
6086		flash.destroy = function () {
6087			flash.flashNode.remove();
6088		};
6089
6090		if (mediaFiles && mediaFiles.length > 0) {
6091			for (var _i4 = 0, _total4 = mediaFiles.length; _i4 < _total4; _i4++) {
6092				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i4].type)) {
6093					flash.setSrc(mediaFiles[_i4].src);
6094					break;
6095				}
6096			}
6097		}
6098
6099		return flash;
6100	}
6101};
6102
6103var hasFlash = PluginDetector.hasPluginVersion('flash', [10, 0, 0]);
6104
6105if (hasFlash) {
6106	_media.typeChecks.push(function (url) {
6107		url = url.toLowerCase();
6108
6109		if (url.startsWith('rtmp')) {
6110			if (~url.indexOf('.mp3')) {
6111				return 'audio/rtmp';
6112			} else {
6113				return 'video/rtmp';
6114			}
6115		} else if (/\.og(a|g)/i.test(url)) {
6116			return 'audio/ogg';
6117		} else if (~url.indexOf('.m3u8')) {
6118			return 'application/x-mpegURL';
6119		} else if (~url.indexOf('.mpd')) {
6120			return 'application/dash+xml';
6121		} else if (~url.indexOf('.flv')) {
6122			return 'video/flv';
6123		} else {
6124			return null;
6125		}
6126	});
6127
6128	var FlashMediaElementVideoRenderer = {
6129		name: 'flash_video',
6130		options: {
6131			prefix: 'flash_video',
6132			filename: 'mediaelement-flash-video.swf',
6133			enablePseudoStreaming: false,
6134
6135			pseudoStreamingStartQueryParam: 'start',
6136
6137			pseudoStreamingType: 'byte',
6138
6139			proxyType: '',
6140
6141			streamDelimiter: ''
6142		},
6143
6144		canPlayType: function canPlayType(type) {
6145			return ~['video/mp4', 'video/rtmp', 'audio/rtmp', 'rtmp/mp4', 'audio/mp4', 'video/flv', 'video/x-flv'].indexOf(type.toLowerCase());
6146		},
6147
6148		create: FlashMediaElementRenderer.create
6149
6150	};
6151	_renderer.renderer.add(FlashMediaElementVideoRenderer);
6152
6153	var FlashMediaElementHlsVideoRenderer = {
6154		name: 'flash_hls',
6155		options: {
6156			prefix: 'flash_hls',
6157			filename: 'mediaelement-flash-video-hls.swf'
6158		},
6159
6160		canPlayType: function canPlayType(type) {
6161			return ~['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase());
6162		},
6163
6164		create: FlashMediaElementRenderer.create
6165	};
6166	_renderer.renderer.add(FlashMediaElementHlsVideoRenderer);
6167
6168	var FlashMediaElementMdashVideoRenderer = {
6169		name: 'flash_dash',
6170		options: {
6171			prefix: 'flash_dash',
6172			filename: 'mediaelement-flash-video-mdash.swf'
6173		},
6174
6175		canPlayType: function canPlayType(type) {
6176			return ~['application/dash+xml'].indexOf(type.toLowerCase());
6177		},
6178
6179		create: FlashMediaElementRenderer.create
6180	};
6181	_renderer.renderer.add(FlashMediaElementMdashVideoRenderer);
6182
6183	var FlashMediaElementAudioRenderer = {
6184		name: 'flash_audio',
6185		options: {
6186			prefix: 'flash_audio',
6187			filename: 'mediaelement-flash-audio.swf'
6188		},
6189
6190		canPlayType: function canPlayType(type) {
6191			return ~['audio/mp3'].indexOf(type.toLowerCase());
6192		},
6193
6194		create: FlashMediaElementRenderer.create
6195	};
6196	_renderer.renderer.add(FlashMediaElementAudioRenderer);
6197
6198	var FlashMediaElementAudioOggRenderer = {
6199		name: 'flash_audio_ogg',
6200		options: {
6201			prefix: 'flash_audio_ogg',
6202			filename: 'mediaelement-flash-audio-ogg.swf'
6203		},
6204
6205		canPlayType: function canPlayType(type) {
6206			return ~['audio/ogg', 'audio/oga', 'audio/ogv'].indexOf(type.toLowerCase());
6207		},
6208
6209		create: FlashMediaElementRenderer.create
6210	};
6211	_renderer.renderer.add(FlashMediaElementAudioOggRenderer);
6212}
6213
6214},{"2":2,"25":25,"27":27,"28":28,"3":3,"5":5,"7":7,"8":8}],21:[function(_dereq_,module,exports){
6215'use strict';
6216
6217var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6218
6219var _window = _dereq_(3);
6220
6221var _window2 = _interopRequireDefault(_window);
6222
6223var _mejs = _dereq_(7);
6224
6225var _mejs2 = _interopRequireDefault(_mejs);
6226
6227var _renderer = _dereq_(8);
6228
6229var _general = _dereq_(27);
6230
6231var _constants = _dereq_(25);
6232
6233var _media = _dereq_(28);
6234
6235var _dom = _dereq_(26);
6236
6237function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6238
6239var NativeFlv = {
6240
6241	promise: null,
6242
6243	load: function load(settings) {
6244		if (typeof flvjs !== 'undefined') {
6245			NativeFlv.promise = new Promise(function (resolve) {
6246				resolve();
6247			}).then(function () {
6248				NativeFlv._createPlayer(settings);
6249			});
6250		} else {
6251			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/flv.js@latest';
6252
6253			NativeFlv.promise = NativeFlv.promise || (0, _dom.loadScript)(settings.options.path);
6254			NativeFlv.promise.then(function () {
6255				NativeFlv._createPlayer(settings);
6256			});
6257		}
6258
6259		return NativeFlv.promise;
6260	},
6261
6262	_createPlayer: function _createPlayer(settings) {
6263		flvjs.LoggingControl.enableDebug = settings.options.debug;
6264		flvjs.LoggingControl.enableVerbose = settings.options.debug;
6265		var player = flvjs.createPlayer(settings.options, settings.configs);
6266		_window2.default['__ready__' + settings.id](player);
6267		return player;
6268	}
6269};
6270
6271var FlvNativeRenderer = {
6272	name: 'native_flv',
6273	options: {
6274		prefix: 'native_flv',
6275		flv: {
6276			path: 'https://cdn.jsdelivr.net/npm/flv.js@latest',
6277
6278			cors: true,
6279			debug: false
6280		}
6281	},
6282
6283	canPlayType: function canPlayType(type) {
6284		return _constants.HAS_MSE && ['video/x-flv', 'video/flv'].indexOf(type.toLowerCase()) > -1;
6285	},
6286
6287	create: function create(mediaElement, options, mediaFiles) {
6288
6289		var originalNode = mediaElement.originalNode,
6290		    id = mediaElement.id + '_' + options.prefix;
6291
6292		var node = null,
6293		    flvPlayer = null;
6294
6295		node = originalNode.cloneNode(true);
6296		options = Object.assign(options, mediaElement.options);
6297
6298		var props = _mejs2.default.html5media.properties,
6299		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6300			return e !== 'error';
6301		}),
6302		    attachNativeEvents = function attachNativeEvents(e) {
6303			var event = (0, _general.createEvent)(e.type, mediaElement);
6304			mediaElement.dispatchEvent(event);
6305		},
6306		    assignGettersSetters = function assignGettersSetters(propName) {
6307			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6308
6309			node['get' + capName] = function () {
6310				return flvPlayer !== null ? node[propName] : null;
6311			};
6312
6313			node['set' + capName] = function (value) {
6314				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6315					if (propName === 'src') {
6316						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6317						if (flvPlayer !== null) {
6318							var _flvOptions = {};
6319							_flvOptions.type = 'flv';
6320							_flvOptions.url = value;
6321							_flvOptions.cors = options.flv.cors;
6322							_flvOptions.debug = options.flv.debug;
6323							_flvOptions.path = options.flv.path;
6324							var _flvConfigs = options.flv.configs;
6325
6326							flvPlayer.destroy();
6327							for (var i = 0, total = events.length; i < total; i++) {
6328								node.removeEventListener(events[i], attachNativeEvents);
6329							}
6330							flvPlayer = NativeFlv._createPlayer({
6331								options: _flvOptions,
6332								configs: _flvConfigs,
6333								id: id
6334							});
6335							flvPlayer.attachMediaElement(node);
6336							flvPlayer.load();
6337						}
6338					} else {
6339						node[propName] = value;
6340					}
6341				}
6342			};
6343		};
6344
6345		for (var i = 0, total = props.length; i < total; i++) {
6346			assignGettersSetters(props[i]);
6347		}
6348
6349		_window2.default['__ready__' + id] = function (_flvPlayer) {
6350			mediaElement.flvPlayer = flvPlayer = _flvPlayer;
6351
6352			var flvEvents = flvjs.Events,
6353			    assignEvents = function assignEvents(eventName) {
6354				if (eventName === 'loadedmetadata') {
6355					flvPlayer.unload();
6356					flvPlayer.detachMediaElement();
6357					flvPlayer.attachMediaElement(node);
6358					flvPlayer.load();
6359				}
6360
6361				node.addEventListener(eventName, attachNativeEvents);
6362			};
6363
6364			for (var _i = 0, _total = events.length; _i < _total; _i++) {
6365				assignEvents(events[_i]);
6366			}
6367
6368			var assignFlvEvents = function assignFlvEvents(name, data) {
6369				if (name === 'error') {
6370					var message = data[0] + ': ' + data[1] + ' ' + data[2].msg;
6371					mediaElement.generateError(message, node.src);
6372				} else {
6373					var _event = (0, _general.createEvent)(name, mediaElement);
6374					_event.data = data;
6375					mediaElement.dispatchEvent(_event);
6376				}
6377			};
6378
6379			var _loop = function _loop(eventType) {
6380				if (flvEvents.hasOwnProperty(eventType)) {
6381					flvPlayer.on(flvEvents[eventType], function () {
6382						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6383							args[_key] = arguments[_key];
6384						}
6385
6386						return assignFlvEvents(flvEvents[eventType], args);
6387					});
6388				}
6389			};
6390
6391			for (var eventType in flvEvents) {
6392				_loop(eventType);
6393			}
6394		};
6395
6396		if (mediaFiles && mediaFiles.length > 0) {
6397			for (var _i2 = 0, _total2 = mediaFiles.length; _i2 < _total2; _i2++) {
6398				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[_i2].type)) {
6399					node.setAttribute('src', mediaFiles[_i2].src);
6400					break;
6401				}
6402			}
6403		}
6404
6405		node.setAttribute('id', id);
6406
6407		originalNode.parentNode.insertBefore(node, originalNode);
6408		originalNode.autoplay = false;
vendor: 29,269 bytes, lines 6409-7461
6409		originalNode.style.display = 'none';
6410
6411		var flvOptions = {};
6412		flvOptions.type = 'flv';
6413		flvOptions.url = node.src;
6414		flvOptions.cors = options.flv.cors;
6415		flvOptions.debug = options.flv.debug;
6416		flvOptions.path = options.flv.path;
6417		var flvConfigs = options.flv.configs;
6418
6419		node.setSize = function (width, height) {
6420			node.style.width = width + 'px';
6421			node.style.height = height + 'px';
6422			return node;
6423		};
6424
6425		node.hide = function () {
6426			if (flvPlayer !== null) {
6427				flvPlayer.pause();
6428			}
6429			node.style.display = 'none';
6430			return node;
6431		};
6432
6433		node.show = function () {
6434			node.style.display = '';
6435			return node;
6436		};
6437
6438		node.destroy = function () {
6439			if (flvPlayer !== null) {
6440				flvPlayer.destroy();
6441			}
6442		};
6443
6444		var event = (0, _general.createEvent)('rendererready', node);
6445		mediaElement.dispatchEvent(event);
6446
6447		mediaElement.promises.push(NativeFlv.load({
6448			options: flvOptions,
6449			configs: flvConfigs,
6450			id: id
6451		}));
6452
6453		return node;
6454	}
6455};
6456
6457_media.typeChecks.push(function (url) {
6458	return ~url.toLowerCase().indexOf('.flv') ? 'video/flv' : null;
6459});
6460
6461_renderer.renderer.add(FlvNativeRenderer);
6462
6463},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],22:[function(_dereq_,module,exports){
6464'use strict';
6465
6466var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
6467
6468var _window = _dereq_(3);
6469
6470var _window2 = _interopRequireDefault(_window);
6471
6472var _mejs = _dereq_(7);
6473
6474var _mejs2 = _interopRequireDefault(_mejs);
6475
6476var _renderer = _dereq_(8);
6477
6478var _general = _dereq_(27);
6479
6480var _constants = _dereq_(25);
6481
6482var _media = _dereq_(28);
6483
6484var _dom = _dereq_(26);
6485
6486function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6487
6488var NativeHls = {
6489
6490	promise: null,
6491
6492	load: function load(settings) {
6493		if (typeof Hls !== 'undefined') {
6494			NativeHls.promise = new Promise(function (resolve) {
6495				resolve();
6496			}).then(function () {
6497				NativeHls._createPlayer(settings);
6498			});
6499		} else {
6500			settings.options.path = typeof settings.options.path === 'string' ? settings.options.path : 'https://cdn.jsdelivr.net/npm/hls.js@latest';
6501
6502			NativeHls.promise = NativeHls.promise || (0, _dom.loadScript)(settings.options.path);
6503			NativeHls.promise.then(function () {
6504				NativeHls._createPlayer(settings);
6505			});
6506		}
6507
6508		return NativeHls.promise;
6509	},
6510
6511	_createPlayer: function _createPlayer(settings) {
6512		var player = new Hls(settings.options);
6513		_window2.default['__ready__' + settings.id](player);
6514		return player;
6515	}
6516};
6517
6518var HlsNativeRenderer = {
6519	name: 'native_hls',
6520	options: {
6521		prefix: 'native_hls',
6522		hls: {
6523			path: 'https://cdn.jsdelivr.net/npm/hls.js@latest',
6524
6525			autoStartLoad: false,
6526			debug: false
6527		}
6528	},
6529
6530	canPlayType: function canPlayType(type) {
6531		return _constants.HAS_MSE && ['application/x-mpegurl', 'application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) > -1;
6532	},
6533
6534	create: function create(mediaElement, options, mediaFiles) {
6535
6536		var originalNode = mediaElement.originalNode,
6537		    id = mediaElement.id + '_' + options.prefix,
6538		    preload = originalNode.getAttribute('preload'),
6539		    autoplay = originalNode.autoplay;
6540
6541		var hlsPlayer = null,
6542		    node = null,
6543		    index = 0,
6544		    total = mediaFiles.length;
6545
6546		node = originalNode.cloneNode(true);
6547		options = Object.assign(options, mediaElement.options);
6548		options.hls.autoStartLoad = preload && preload !== 'none' || autoplay;
6549
6550		var props = _mejs2.default.html5media.properties,
6551		    events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6552			return e !== 'error';
6553		}),
6554		    attachNativeEvents = function attachNativeEvents(e) {
6555			var event = (0, _general.createEvent)(e.type, mediaElement);
6556			mediaElement.dispatchEvent(event);
6557		},
6558		    assignGettersSetters = function assignGettersSetters(propName) {
6559			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6560
6561			node['get' + capName] = function () {
6562				return hlsPlayer !== null ? node[propName] : null;
6563			};
6564
6565			node['set' + capName] = function (value) {
6566				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6567					if (propName === 'src') {
6568						node[propName] = (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && value.src ? value.src : value;
6569						if (hlsPlayer !== null) {
6570							hlsPlayer.destroy();
6571							for (var i = 0, _total = events.length; i < _total; i++) {
6572								node.removeEventListener(events[i], attachNativeEvents);
6573							}
6574							hlsPlayer = NativeHls._createPlayer({
6575								options: options.hls,
6576								id: id
6577							});
6578							hlsPlayer.loadSource(value);
6579							hlsPlayer.attachMedia(node);
6580						}
6581					} else {
6582						node[propName] = value;
6583					}
6584				}
6585			};
6586		};
6587
6588		for (var i = 0, _total2 = props.length; i < _total2; i++) {
6589			assignGettersSetters(props[i]);
6590		}
6591
6592		_window2.default['__ready__' + id] = function (_hlsPlayer) {
6593			mediaElement.hlsPlayer = hlsPlayer = _hlsPlayer;
6594			var hlsEvents = Hls.Events,
6595			    assignEvents = function assignEvents(eventName) {
6596				if (eventName === 'loadedmetadata') {
6597					var url = mediaElement.originalNode.src;
6598					hlsPlayer.detachMedia();
6599					hlsPlayer.loadSource(url);
6600					hlsPlayer.attachMedia(node);
6601				}
6602
6603				node.addEventListener(eventName, attachNativeEvents);
6604			};
6605
6606			for (var _i = 0, _total3 = events.length; _i < _total3; _i++) {
6607				assignEvents(events[_i]);
6608			}
6609
6610			var recoverDecodingErrorDate = void 0,
6611			    recoverSwapAudioCodecDate = void 0;
6612			var assignHlsEvents = function assignHlsEvents(name, data) {
6613				if (name === 'hlsError') {
6614					console.warn(data);
6615					data = data[1];
6616
6617					if (data.fatal) {
6618						switch (data.type) {
6619							case 'mediaError':
6620								var now = new Date().getTime();
6621								if (!recoverDecodingErrorDate || now - recoverDecodingErrorDate > 3000) {
6622									recoverDecodingErrorDate = new Date().getTime();
6623									hlsPlayer.recoverMediaError();
6624								} else if (!recoverSwapAudioCodecDate || now - recoverSwapAudioCodecDate > 3000) {
6625									recoverSwapAudioCodecDate = new Date().getTime();
6626									console.warn('Attempting to swap Audio Codec and recover from media error');
6627									hlsPlayer.swapAudioCodec();
6628									hlsPlayer.recoverMediaError();
6629								} else {
6630									var message = 'Cannot recover, last media error recovery failed';
6631									mediaElement.generateError(message, node.src);
6632									console.error(message);
6633								}
6634								break;
6635							case 'networkError':
6636								if (data.details === 'manifestLoadError') {
6637									if (index < total && mediaFiles[index + 1] !== undefined) {
6638										node.setSrc(mediaFiles[index++].src);
6639										node.load();
6640										node.play();
6641									} else {
6642										var _message = 'Network error';
6643										mediaElement.generateError(_message, mediaFiles);
6644										console.error(_message);
6645									}
6646								} else {
6647									var _message2 = 'Network error';
6648									mediaElement.generateError(_message2, mediaFiles);
6649									console.error(_message2);
6650								}
6651								break;
6652							default:
6653								hlsPlayer.destroy();
6654								break;
6655						}
6656					}
6657				} else {
6658					var _event = (0, _general.createEvent)(name, mediaElement);
6659					_event.data = data;
6660					mediaElement.dispatchEvent(_event);
6661				}
6662			};
6663
6664			var _loop = function _loop(eventType) {
6665				if (hlsEvents.hasOwnProperty(eventType)) {
6666					hlsPlayer.on(hlsEvents[eventType], function () {
6667						for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
6668							args[_key] = arguments[_key];
6669						}
6670
6671						return assignHlsEvents(hlsEvents[eventType], args);
6672					});
6673				}
6674			};
6675
6676			for (var eventType in hlsEvents) {
6677				_loop(eventType);
6678			}
6679		};
6680
6681		if (total > 0) {
6682			for (; index < total; index++) {
6683				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6684					node.setAttribute('src', mediaFiles[index].src);
6685					break;
6686				}
6687			}
6688		}
6689
6690		if (preload !== 'auto' && !autoplay) {
6691			node.addEventListener('play', function () {
6692				if (hlsPlayer !== null) {
6693					hlsPlayer.startLoad();
6694				}
6695			});
6696
6697			node.addEventListener('pause', function () {
6698				if (hlsPlayer !== null) {
6699					hlsPlayer.stopLoad();
6700				}
6701			});
6702		}
6703
6704		node.setAttribute('id', id);
6705
6706		originalNode.parentNode.insertBefore(node, originalNode);
6707		originalNode.autoplay = false;
6708		originalNode.style.display = 'none';
6709
6710		node.setSize = function (width, height) {
6711			node.style.width = width + 'px';
6712			node.style.height = height + 'px';
6713			return node;
6714		};
6715
6716		node.hide = function () {
6717			node.pause();
6718			node.style.display = 'none';
6719			return node;
6720		};
6721
6722		node.show = function () {
6723			node.style.display = '';
6724			return node;
6725		};
6726
6727		node.destroy = function () {
6728			if (hlsPlayer !== null) {
6729				hlsPlayer.stopLoad();
6730				hlsPlayer.destroy();
6731			}
6732		};
6733
6734		var event = (0, _general.createEvent)('rendererready', node);
6735		mediaElement.dispatchEvent(event);
6736
6737		mediaElement.promises.push(NativeHls.load({
6738			options: options.hls,
6739			id: id
6740		}));
6741
6742		return node;
6743	}
6744};
6745
6746_media.typeChecks.push(function (url) {
6747	return ~url.toLowerCase().indexOf('.m3u8') ? 'application/x-mpegURL' : null;
6748});
6749
6750_renderer.renderer.add(HlsNativeRenderer);
6751
6752},{"25":25,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],23:[function(_dereq_,module,exports){
6753'use strict';
6754
6755var _window = _dereq_(3);
6756
6757var _window2 = _interopRequireDefault(_window);
6758
6759var _document = _dereq_(2);
6760
6761var _document2 = _interopRequireDefault(_document);
6762
6763var _mejs = _dereq_(7);
6764
6765var _mejs2 = _interopRequireDefault(_mejs);
6766
6767var _renderer = _dereq_(8);
6768
6769var _general = _dereq_(27);
6770
6771var _constants = _dereq_(25);
6772
6773function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6774
6775var HtmlMediaElement = {
6776	name: 'html5',
6777	options: {
6778		prefix: 'html5'
6779	},
6780
6781	canPlayType: function canPlayType(type) {
6782
6783		var mediaElement = _document2.default.createElement('video');
6784
6785		if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
6786			return 'yes';
6787		} else if (mediaElement.canPlayType) {
6788			return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
6789		} else {
6790			return '';
6791		}
6792	},
6793
6794	create: function create(mediaElement, options, mediaFiles) {
6795
6796		var id = mediaElement.id + '_' + options.prefix;
6797		var isActive = false;
6798
6799		var node = null;
6800
6801		if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
6802			node = _document2.default.createElement('audio');
6803			mediaElement.appendChild(node);
6804		} else {
6805			node = mediaElement.originalNode;
6806		}
6807
6808		node.setAttribute('id', id);
6809
6810		var props = _mejs2.default.html5media.properties,
6811		    assignGettersSetters = function assignGettersSetters(propName) {
6812			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
6813
6814			node['get' + capName] = function () {
6815				return node[propName];
6816			};
6817
6818			node['set' + capName] = function (value) {
6819				if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
6820					node[propName] = value;
6821				}
6822			};
6823		};
6824
6825		for (var i = 0, _total = props.length; i < _total; i++) {
6826			assignGettersSetters(props[i]);
6827		}
6828
6829		var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
6830			return e !== 'error';
6831		}),
6832		    assignEvents = function assignEvents(eventName) {
6833			node.addEventListener(eventName, function (e) {
6834				if (isActive) {
6835					var _event = (0, _general.createEvent)(e.type, e.target);
6836					mediaElement.dispatchEvent(_event);
6837				}
6838			});
6839		};
6840
6841		for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
6842			assignEvents(events[_i]);
6843		}
6844
6845		node.setSize = function (width, height) {
6846			node.style.width = width + 'px';
6847			node.style.height = height + 'px';
6848			return node;
6849		};
6850
6851		node.hide = function () {
6852			isActive = false;
6853			node.style.display = 'none';
6854
6855			return node;
6856		};
6857
6858		node.show = function () {
6859			isActive = true;
6860			node.style.display = '';
6861
6862			return node;
6863		};
6864
6865		var index = 0,
6866		    total = mediaFiles.length;
6867		if (total > 0) {
6868			for (; index < total; index++) {
6869				if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
6870					node.setAttribute('src', mediaFiles[index].src);
6871					break;
6872				}
6873			}
6874		}
6875
6876		node.addEventListener('error', function (e) {
6877			if (e.target.error.code === 4 && isActive) {
6878				if (index < total && mediaFiles[index + 1] !== undefined) {
6879					node.src = mediaFiles[index++].src;
6880					node.load();
6881					node.play();
6882				} else {
6883					mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
6884				}
6885			}
6886		});
6887
6888		var event = (0, _general.createEvent)('rendererready', node);
6889		mediaElement.dispatchEvent(event);
6890
6891		return node;
6892	}
6893};
6894
6895_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
6896
6897_renderer.renderer.add(HtmlMediaElement);
6898
6899},{"2":2,"25":25,"27":27,"3":3,"7":7,"8":8}],24:[function(_dereq_,module,exports){
6900'use strict';
6901
6902var _window = _dereq_(3);
6903
6904var _window2 = _interopRequireDefault(_window);
6905
6906var _document = _dereq_(2);
6907
6908var _document2 = _interopRequireDefault(_document);
6909
6910var _mejs = _dereq_(7);
6911
6912var _mejs2 = _interopRequireDefault(_mejs);
6913
6914var _renderer = _dereq_(8);
6915
6916var _general = _dereq_(27);
6917
6918var _media = _dereq_(28);
6919
6920var _dom = _dereq_(26);
6921
6922function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6923
6924var YouTubeApi = {
6925	isIframeStarted: false,
6926
6927	isIframeLoaded: false,
6928
6929	iframeQueue: [],
6930
6931	enqueueIframe: function enqueueIframe(settings) {
6932		YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
6933
6934		if (YouTubeApi.isLoaded) {
6935			YouTubeApi.createIframe(settings);
6936		} else {
6937			YouTubeApi.loadIframeApi();
6938			YouTubeApi.iframeQueue.push(settings);
6939		}
6940	},
6941
6942	loadIframeApi: function loadIframeApi() {
6943		if (!YouTubeApi.isIframeStarted) {
6944			(0, _dom.loadScript)('https://www.youtube.com/player_api');
6945			YouTubeApi.isIframeStarted = true;
6946		}
6947	},
6948
6949	iFrameReady: function iFrameReady() {
6950
6951		YouTubeApi.isLoaded = true;
6952		YouTubeApi.isIframeLoaded = true;
6953
6954		while (YouTubeApi.iframeQueue.length > 0) {
6955			var settings = YouTubeApi.iframeQueue.pop();
6956			YouTubeApi.createIframe(settings);
6957		}
6958	},
6959
6960	createIframe: function createIframe(settings) {
6961		return new YT.Player(settings.containerId, settings);
6962	},
6963
6964	getYouTubeId: function getYouTubeId(url) {
6965
6966		var youTubeId = '';
6967
6968		if (url.indexOf('?') > 0) {
6969			youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
6970
6971			if (youTubeId === '') {
6972				youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6973			}
6974		} else {
6975			youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
6976		}
6977
6978		var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
6979		youTubeId = id.split('?');
6980		return youTubeId[0];
6981	},
6982
6983	getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
6984
6985		if (url === undefined || url === null || !url.trim().length) {
6986			return null;
6987		}
6988
6989		var parts = url.split('?'),
6990		    parameters = parts[1].split('&');
6991
6992		var youTubeId = '';
6993
6994		for (var i = 0, total = parameters.length; i < total; i++) {
6995			var paramParts = parameters[i].split('=');
6996			if (paramParts[0] === 'v') {
6997				youTubeId = paramParts[1];
6998				break;
6999			}
7000		}
7001
7002		return youTubeId;
7003	},
7004
7005	getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
7006
7007		if (url === undefined || url === null || !url.trim().length) {
7008			return null;
7009		}
7010
7011		var parts = url.split('?');
7012		url = parts[0];
7013		return url.substring(url.lastIndexOf('/') + 1);
7014	},
7015
7016	getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
7017		if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
7018			return url;
7019		}
7020
7021		var parts = url.split('/');
7022		parts[2] = parts[2].replace('.com', '-nocookie.com');
7023		return parts.join('/');
7024	}
7025};
7026
7027var YouTubeIframeRenderer = {
7028	name: 'youtube_iframe',
7029
7030	options: {
7031		prefix: 'youtube_iframe',
7032
7033		youtube: {
7034			autoplay: 0,
7035			controls: 0,
7036			disablekb: 1,
7037			end: 0,
7038			loop: 0,
7039			modestbranding: 0,
7040			playsinline: 0,
7041			rel: 0,
7042			showinfo: 0,
7043			start: 0,
7044			iv_load_policy: 3,
7045
7046			nocookie: false,
7047
7048			imageQuality: null
7049		}
7050	},
7051
7052	canPlayType: function canPlayType(type) {
7053		return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
7054	},
7055
7056	create: function create(mediaElement, options, mediaFiles) {
7057
7058		var youtube = {},
7059		    apiStack = [],
7060		    readyState = 4;
7061
7062		var youTubeApi = null,
7063		    paused = true,
7064		    ended = false,
7065		    youTubeIframe = null,
7066		    volume = 1;
7067
7068		youtube.options = options;
7069		youtube.id = mediaElement.id + '_' + options.prefix;
7070		youtube.mediaElement = mediaElement;
7071
7072		var props = _mejs2.default.html5media.properties,
7073		    assignGettersSetters = function assignGettersSetters(propName) {
7074
7075			var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7076
7077			youtube['get' + capName] = function () {
7078				if (youTubeApi !== null) {
7079					var value = null;
7080
7081					switch (propName) {
7082						case 'currentTime':
7083							return youTubeApi.getCurrentTime();
7084						case 'duration':
7085							return youTubeApi.getDuration();
7086						case 'volume':
7087							volume = youTubeApi.getVolume() / 100;
7088							return volume;
7089						case 'paused':
7090							return paused;
7091						case 'ended':
7092							return ended;
7093						case 'muted':
7094							return youTubeApi.isMuted();
7095						case 'buffered':
7096							var percentLoaded = youTubeApi.getVideoLoadedFraction(),
7097							    duration = youTubeApi.getDuration();
7098							return {
7099								start: function start() {
7100									return 0;
7101								},
7102								end: function end() {
7103									return percentLoaded * duration;
7104								},
7105								length: 1
7106							};
7107						case 'src':
7108							return youTubeApi.getVideoUrl();
7109						case 'readyState':
7110							return readyState;
7111					}
7112
7113					return value;
7114				} else {
7115					return null;
7116				}
7117			};
7118
7119			youtube['set' + capName] = function (value) {
7120				if (youTubeApi !== null) {
7121					switch (propName) {
7122						case 'src':
7123							var url = typeof value === 'string' ? value : value[0].src,
7124							    _videoId = YouTubeApi.getYouTubeId(url);
7125
7126							if (mediaElement.originalNode.autoplay) {
7127								youTubeApi.loadVideoById(_videoId);
7128							} else {
7129								youTubeApi.cueVideoById(_videoId);
7130							}
7131							break;
7132						case 'currentTime':
7133							youTubeApi.seekTo(value);
7134							break;
7135						case 'muted':
7136							if (value) {
7137								youTubeApi.mute();
7138							} else {
7139								youTubeApi.unMute();
7140							}
7141							setTimeout(function () {
7142								var event = (0, _general.createEvent)('volumechange', youtube);
7143								mediaElement.dispatchEvent(event);
7144							}, 50);
7145							break;
7146						case 'volume':
7147							volume = value;
7148							youTubeApi.setVolume(value * 100);
7149							setTimeout(function () {
7150								var event = (0, _general.createEvent)('volumechange', youtube);
7151								mediaElement.dispatchEvent(event);
7152							}, 50);
7153							break;
7154						case 'readyState':
7155							var event = (0, _general.createEvent)('canplay', youtube);
7156							mediaElement.dispatchEvent(event);
7157							break;
7158						default:
7159							
7160							break;
7161					}
7162				} else {
7163					apiStack.push({ type: 'set', propName: propName, value: value });
7164				}
7165			};
7166		};
7167
7168		for (var i = 0, total = props.length; i < total; i++) {
7169			assignGettersSetters(props[i]);
7170		}
7171
7172		var methods = _mejs2.default.html5media.methods,
7173		    assignMethods = function assignMethods(methodName) {
7174			youtube[methodName] = function () {
7175				if (youTubeApi !== null) {
7176					switch (methodName) {
7177						case 'play':
7178							paused = false;
7179							return youTubeApi.playVideo();
7180						case 'pause':
7181							paused = true;
7182							return youTubeApi.pauseVideo();
7183						case 'load':
7184							return null;
7185					}
7186				} else {
7187					apiStack.push({ type: 'call', methodName: methodName });
7188				}
7189			};
7190		};
7191
7192		for (var _i = 0, _total = methods.length; _i < _total; _i++) {
7193			assignMethods(methods[_i]);
7194		}
7195
7196		var errorHandler = function errorHandler(error) {
7197			var message = '';
7198			switch (error.data) {
7199				case 2:
7200					message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
7201					break;
7202				case 5:
7203					message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
7204					break;
7205				case 100:
7206					message = 'The video requested was not found. Either video has been removed or has been marked as private.';
7207					break;
7208				case 101:
7209				case 105:
7210					message = 'The owner of the requested video does not allow it to be played in embedded players.';
7211					break;
7212				default:
7213					message = 'Unknown error.';
7214					break;
7215			}
7216			mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
7217		};
7218
7219		var youtubeContainer = _document2.default.createElement('div');
7220		youtubeContainer.id = youtube.id;
7221
7222		if (youtube.options.youtube.nocookie) {
7223			mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
7224		}
7225
7226		mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
7227		mediaElement.originalNode.style.display = 'none';
7228
7229		var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
7230		    height = isAudio ? '1' : mediaElement.originalNode.height,
7231		    width = isAudio ? '1' : mediaElement.originalNode.width,
7232		    videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
7233		    youtubeSettings = {
7234			id: youtube.id,
7235			containerId: youtubeContainer.id,
7236			videoId: videoId,
7237			height: height,
7238			width: width,
7239			playerVars: Object.assign({
7240				controls: 0,
7241				rel: 0,
7242				disablekb: 1,
7243				showinfo: 0,
7244				modestbranding: 0,
7245				html5: 1,
7246				iv_load_policy: 3
7247			}, youtube.options.youtube),
7248			origin: _window2.default.location.host,
7249			events: {
7250				onReady: function onReady(e) {
7251					mediaElement.youTubeApi = youTubeApi = e.target;
7252					mediaElement.youTubeState = {
7253						paused: true,
7254						ended: false
7255					};
7256
7257					if (apiStack.length) {
7258						for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
7259
7260							var stackItem = apiStack[_i2];
7261
7262							if (stackItem.type === 'set') {
7263								var propName = stackItem.propName,
7264								    capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
7265
7266								youtube['set' + capName](stackItem.value);
7267							} else if (stackItem.type === 'call') {
7268								youtube[stackItem.methodName]();
7269							}
7270						}
7271					}
7272
7273					youTubeIframe = youTubeApi.getIframe();
7274
7275					if (mediaElement.originalNode.muted) {
7276						youTubeApi.mute();
7277					}
7278
7279					var events = ['mouseover', 'mouseout'],
7280					    assignEvents = function assignEvents(e) {
7281						var newEvent = (0, _general.createEvent)(e.type, youtube);
7282						mediaElement.dispatchEvent(newEvent);
7283					};
7284
7285					for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
7286						youTubeIframe.addEventListener(events[_i3], assignEvents, false);
7287					}
7288
7289					var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
7290
7291					for (var _i4 = 0, _total4 = initEvents.length; _i4 < _total4; _i4++) {
7292						var event = (0, _general.createEvent)(initEvents[_i4], youtube);
7293						mediaElement.dispatchEvent(event);
7294					}
7295				},
7296				onStateChange: function onStateChange(e) {
7297					var events = [];
7298
7299					switch (e.data) {
7300						case -1:
7301							events = ['loadedmetadata'];
7302							paused = true;
7303							ended = false;
7304							break;
7305						case 0:
7306							events = ['ended'];
7307							paused = false;
7308							ended = !youtube.options.youtube.loop;
7309							if (!youtube.options.youtube.loop) {
7310								youtube.stopInterval();
7311							}
7312							break;
7313						case 1:
7314							events = ['play', 'playing'];
7315							paused = false;
7316							ended = false;
7317							youtube.startInterval();
7318							break;
7319						case 2:
7320							events = ['pause'];
7321							paused = true;
7322							ended = false;
7323							youtube.stopInterval();
7324							break;
7325						case 3:
7326							events = ['progress'];
7327							ended = false;
7328							break;
7329						case 5:
7330							events = ['loadeddata', 'loadedmetadata', 'canplay'];
7331							paused = true;
7332							ended = false;
7333							break;
7334					}
7335
7336					for (var _i5 = 0, _total5 = events.length; _i5 < _total5; _i5++) {
7337						var event = (0, _general.createEvent)(events[_i5], youtube);
7338						mediaElement.dispatchEvent(event);
7339					}
7340				},
7341				onError: function onError(e) {
7342					return errorHandler(e);
7343				}
7344			}
7345		};
7346
7347		if (isAudio || mediaElement.originalNode.hasAttribute('playsinline')) {
7348			youtubeSettings.playerVars.playsinline = 1;
7349		}
7350
7351		if (mediaElement.originalNode.controls) {
7352			youtubeSettings.playerVars.controls = 1;
7353		}
7354		if (mediaElement.originalNode.autoplay) {
7355			youtubeSettings.playerVars.autoplay = 1;
7356		}
7357		if (mediaElement.originalNode.loop) {
7358			youtubeSettings.playerVars.loop = 1;
7359		}
7360
7361		if ((youtubeSettings.playerVars.loop && parseInt(youtubeSettings.playerVars.loop, 10) === 1 || mediaElement.originalNode.src.indexOf('loop=') > -1) && !youtubeSettings.playerVars.playlist && mediaElement.originalNode.src.indexOf('playlist=') === -1) {
7362			youtubeSettings.playerVars.playlist = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7363		}
7364
7365		YouTubeApi.enqueueIframe(youtubeSettings);
7366
7367		youtube.onEvent = function (eventName, player, _youTubeState) {
7368			if (_youTubeState !== null && _youTubeState !== undefined) {
7369				mediaElement.youTubeState = _youTubeState;
7370			}
7371		};
7372
7373		youtube.setSize = function (width, height) {
7374			if (youTubeApi !== null) {
7375				youTubeApi.setSize(width, height);
7376			}
7377		};
7378		youtube.hide = function () {
7379			youtube.stopInterval();
7380			youtube.pause();
7381			if (youTubeIframe) {
7382				youTubeIframe.style.display = 'none';
7383			}
7384		};
7385		youtube.show = function () {
7386			if (youTubeIframe) {
7387				youTubeIframe.style.display = '';
7388			}
7389		};
7390		youtube.destroy = function () {
7391			youTubeApi.destroy();
7392		};
7393		youtube.interval = null;
7394
7395		youtube.startInterval = function () {
7396			youtube.interval = setInterval(function () {
7397				var event = (0, _general.createEvent)('timeupdate', youtube);
7398				mediaElement.dispatchEvent(event);
7399			}, 250);
7400		};
7401		youtube.stopInterval = function () {
7402			if (youtube.interval) {
7403				clearInterval(youtube.interval);
7404			}
7405		};
7406		youtube.getPosterUrl = function () {
7407			var quality = options.youtube.imageQuality,
7408			    resolutions = ['default', 'hqdefault', 'mqdefault', 'sddefault', 'maxresdefault'],
7409			    id = YouTubeApi.getYouTubeId(mediaElement.originalNode.src);
7410			return quality && resolutions.indexOf(quality) > -1 && id ? 'https://img.youtube.com/vi/' + id + '/' + quality + '.jpg' : '';
7411		};
7412
7413		return youtube;
7414	}
7415};
7416
7417_window2.default.onYouTubePlayerAPIReady = function () {
7418	YouTubeApi.iFrameReady();
7419};
7420
7421_media.typeChecks.push(function (url) {
7422	return (/\/\/(www\.youtube|youtu\.?be)/i.test(url) ? 'video/x-youtube' : null
7423	);
7424});
7425
7426_renderer.renderer.add(YouTubeIframeRenderer);
7427
7428},{"2":2,"26":26,"27":27,"28":28,"3":3,"7":7,"8":8}],25:[function(_dereq_,module,exports){
7429'use strict';
7430
7431Object.defineProperty(exports, "__esModule", {
7432	value: true
7433});
7434exports.cancelFullScreen = exports.requestFullScreen = exports.isFullScreen = exports.FULLSCREEN_EVENT_NAME = exports.HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = exports.SUPPORTS_NATIVE_HLS = exports.SUPPORT_PASSIVE_EVENT = exports.SUPPORT_POINTER_EVENTS = exports.HAS_MSE = exports.IS_STOCK_ANDROID = exports.IS_SAFARI = exports.IS_FIREFOX = exports.IS_CHROME = exports.IS_EDGE = exports.IS_IE = exports.IS_ANDROID = exports.IS_IOS = exports.IS_IPOD = exports.IS_IPHONE = exports.IS_IPAD = exports.UA = exports.NAV = undefined;
7435
7436var _window = _dereq_(3);
7437
7438var _window2 = _interopRequireDefault(_window);
7439
7440var _document = _dereq_(2);
7441
7442var _document2 = _interopRequireDefault(_document);
7443
7444var _mejs = _dereq_(7);
7445
7446var _mejs2 = _interopRequireDefault(_mejs);
7447
7448function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7449
7450var NAV = exports.NAV = _window2.default.navigator;
7451var UA = exports.UA = NAV.userAgent.toLowerCase();
7452var IS_IPAD = exports.IS_IPAD = /ipad/i.test(UA) && !_window2.default.MSStream;
7453var IS_IPHONE = exports.IS_IPHONE = /iphone/i.test(UA) && !_window2.default.MSStream;
7454var IS_IPOD = exports.IS_IPOD = /ipod/i.test(UA) && !_window2.default.MSStream;
7455var IS_IOS = exports.IS_IOS = /ipad|iphone|ipod/i.test(UA) && !_window2.default.MSStream;
7456var IS_ANDROID = exports.IS_ANDROID = /android/i.test(UA);
7457var IS_IE = exports.IS_IE = /(trident|microsoft)/i.test(NAV.appName);
7458var IS_EDGE = exports.IS_EDGE = 'msLaunchUri' in NAV && !('documentMode' in _document2.default);
7459var IS_CHROME = exports.IS_CHROME = /chrome/i.test(UA);
7460var IS_FIREFOX = exports.IS_FIREFOX = /firefox/i.test(UA);
7461var IS_SAFARI = exports.IS_SAFARI = /safari/i.test(UA) && !IS_CHROME;
7462var IS_STOCK_ANDROID = exports.IS_STOCK_ANDROID = /^mozilla\/\d+\.\d+\s\(linux;\su;/i.test(UA);
7463var HAS_MSE = exports.HAS_MSE = 'MediaSource' in _window2.default;
7464var SUPPORT_POINTER_EVENTS = exports.SUPPORT_POINTER_EVENTS = function ($$) {
7465	var element = _document2.default.createElement('x'),
7466	    documentElement = _document2.default.documentElement,
7467	    getComputedStyle = _window2.default.getComputedStyle;
7468
7469	if (!('pointerEvents' in element.style)) {
7470		return false;
7471	}
7472
7473	element.style.pointerEvents = 'auto';
7474	element.style.pointerEvents = 'x';
7475	documentElement.appendChild(element);
7476	var supports = getComputedStyle && getComputedStyle(element, '').pointerEvents === 'auto';
7477	//Workaround: Remove element using jQuery to avoid error, in split screen mode, which happens because Prototype.js uses $ sign inside. 
7478    //By that time $ sign references jQuery library.
7479    $$(element).remove();
7480	return !!supports;
7481}(jQuery);
7482
7483var SUPPORT_PASSIVE_EVENT = exports.SUPPORT_PASSIVE_EVENT = function () {
7484	var supportsPassive = false;
7485	try {
7486		var opts = Object.defineProperty({}, 'passive', {
7487			get: function get() {
7488				supportsPassive = true;
7489			}
7490		});
7491		_window2.default.addEventListener('test', null, opts);
7492	} catch (e) {}
7493    
7494	return supportsPassive;
7495}();
7496
7497var html5Elements = ['source', 'track', 'audio', 'video'];
7498var video = void 0;
7499
7500for (var i = 0, total = html5Elements.length; i < total; i++) {
7501	video = _document2.default.createElement(html5Elements[i]);
7502}
7503
7504var SUPPORTS_NATIVE_HLS = exports.SUPPORTS_NATIVE_HLS = IS_SAFARI || IS_ANDROID && (IS_CHROME || IS_STOCK_ANDROID) || IS_IE && /edge/i.test(UA);
7505
7506var hasiOSFullScreen = video.webkitEnterFullscreen !== undefined;
7507
7508var hasNativeFullscreen = video.requestFullscreen !== undefined;
7509
7510if (hasiOSFullScreen && /mac os x 10_5/i.test(UA)) {
7511	hasNativeFullscreen = false;
7512	hasiOSFullScreen = false;
7513}
7514
7515var hasWebkitNativeFullScreen = video.webkitRequestFullScreen !== undefined;
7516var hasMozNativeFullScreen = video.mozRequestFullScreen !== undefined;
7517var hasMsNativeFullScreen = video.msRequestFullscreen !== undefined;
7518var hasTrueNativeFullScreen = hasWebkitNativeFullScreen || hasMozNativeFullScreen || hasMsNativeFullScreen;
7519var nativeFullScreenEnabled = hasTrueNativeFullScreen;
7520var fullScreenEventName = '';
7521var isFullScreen = void 0,
7522    requestFullScreen = void 0,
7523    cancelFullScreen = void 0;
7524
7525if (hasMozNativeFullScreen) {
7526	nativeFullScreenEnabled = _document2.default.mozFullScreenEnabled;
7527} else if (hasMsNativeFullScreen) {
7528	nativeFullScreenEnabled = _document2.default.msFullscreenEnabled;
7529}
7530
7531if (IS_CHROME) {
7532	hasiOSFullScreen = false;
7533}
7534
7535if (hasTrueNativeFullScreen) {
7536	if (hasWebkitNativeFullScreen) {
7537		fullScreenEventName = 'webkitfullscreenchange';
7538	} else if (hasMozNativeFullScreen) {
7539		fullScreenEventName = 'mozfullscreenchange';
7540	} else if (hasMsNativeFullScreen) {
7541		fullScreenEventName = 'MSFullscreenChange';
7542	}
7543
7544	exports.isFullScreen = isFullScreen = function isFullScreen() {
7545		if (hasMozNativeFullScreen) {
7546			return _document2.default.mozFullScreen;
7547		} else if (hasWebkitNativeFullScreen) {
7548			return _document2.default.webkitIsFullScreen;
7549		} else if (hasMsNativeFullScreen) {
7550			return _document2.default.msFullscreenElement !== null;
7551		}
7552	};
7553
7554	exports.requestFullScreen = requestFullScreen = function requestFullScreen(el) {
7555		if (hasWebkitNativeFullScreen) {
7556			el.webkitRequestFullScreen();
7557		} else if (hasMozNativeFullScreen) {
7558			el.mozRequestFullScreen();
7559		} else if (hasMsNativeFullScreen) {
7560			el.msRequestFullscreen();
7561		}
7562	};
7563
7564	exports.cancelFullScreen = cancelFullScreen = function cancelFullScreen() {
7565		if (hasWebkitNativeFullScreen) {
7566			_document2.default.webkitCancelFullScreen();
7567		} else if (hasMozNativeFullScreen) {
7568			_document2.default.mozCancelFullScreen();
7569		} else if (hasMsNativeFullScreen) {
7570			_document2.default.msExitFullscreen();
7571		}
7572	};
7573}
7574
7575var HAS_NATIVE_FULLSCREEN = exports.HAS_NATIVE_FULLSCREEN = hasNativeFullscreen;
7576var HAS_WEBKIT_NATIVE_FULLSCREEN = exports.HAS_WEBKIT_NATIVE_FULLSCREEN = hasWebkitNativeFullScreen;
7577var HAS_MOZ_NATIVE_FULLSCREEN = exports.HAS_MOZ_NATIVE_FULLSCREEN = hasMozNativeFullScreen;
7578var HAS_MS_NATIVE_FULLSCREEN = exports.HAS_MS_NATIVE_FULLSCREEN = hasMsNativeFullScreen;
7579var HAS_IOS_FULLSCREEN = exports.HAS_IOS_FULLSCREEN = hasiOSFullScreen;
7580var HAS_TRUE_NATIVE_FULLSCREEN = exports.HAS_TRUE_NATIVE_FULLSCREEN = hasTrueNativeFullScreen;
vendor: 19,068 bytes, lines 7581-8269
7581var HAS_NATIVE_FULLSCREEN_ENABLED = exports.HAS_NATIVE_FULLSCREEN_ENABLED = nativeFullScreenEnabled;
7582var FULLSCREEN_EVENT_NAME = exports.FULLSCREEN_EVENT_NAME = fullScreenEventName;
7583exports.isFullScreen = isFullScreen;
7584exports.requestFullScreen = requestFullScreen;
7585exports.cancelFullScreen = cancelFullScreen;
7586
7587
7588_mejs2.default.Features = _mejs2.default.Features || {};
7589_mejs2.default.Features.isiPad = IS_IPAD;
7590_mejs2.default.Features.isiPod = IS_IPOD;
7591_mejs2.default.Features.isiPhone = IS_IPHONE;
7592_mejs2.default.Features.isiOS = _mejs2.default.Features.isiPhone || _mejs2.default.Features.isiPad;
7593_mejs2.default.Features.isAndroid = IS_ANDROID;
7594_mejs2.default.Features.isIE = IS_IE;
7595_mejs2.default.Features.isEdge = IS_EDGE;
7596_mejs2.default.Features.isChrome = IS_CHROME;
7597_mejs2.default.Features.isFirefox = IS_FIREFOX;
7598_mejs2.default.Features.isSafari = IS_SAFARI;
7599_mejs2.default.Features.isStockAndroid = IS_STOCK_ANDROID;
7600_mejs2.default.Features.hasMSE = HAS_MSE;
7601_mejs2.default.Features.supportsNativeHLS = SUPPORTS_NATIVE_HLS;
7602_mejs2.default.Features.supportsPointerEvents = SUPPORT_POINTER_EVENTS;
7603_mejs2.default.Features.supportsPassiveEvent = SUPPORT_PASSIVE_EVENT;
7604_mejs2.default.Features.hasiOSFullScreen = HAS_IOS_FULLSCREEN;
7605_mejs2.default.Features.hasNativeFullscreen = HAS_NATIVE_FULLSCREEN;
7606_mejs2.default.Features.hasWebkitNativeFullScreen = HAS_WEBKIT_NATIVE_FULLSCREEN;
7607_mejs2.default.Features.hasMozNativeFullScreen = HAS_MOZ_NATIVE_FULLSCREEN;
7608_mejs2.default.Features.hasMsNativeFullScreen = HAS_MS_NATIVE_FULLSCREEN;
7609_mejs2.default.Features.hasTrueNativeFullScreen = HAS_TRUE_NATIVE_FULLSCREEN;
7610_mejs2.default.Features.nativeFullScreenEnabled = HAS_NATIVE_FULLSCREEN_ENABLED;
7611_mejs2.default.Features.fullScreenEventName = FULLSCREEN_EVENT_NAME;
7612_mejs2.default.Features.isFullScreen = isFullScreen;
7613_mejs2.default.Features.requestFullScreen = requestFullScreen;
7614_mejs2.default.Features.cancelFullScreen = cancelFullScreen;
7615
7616},{"2":2,"3":3,"7":7}],26:[function(_dereq_,module,exports){
7617'use strict';
7618
7619Object.defineProperty(exports, "__esModule", {
7620	value: true
7621});
7622exports.removeClass = exports.addClass = exports.hasClass = undefined;
7623exports.loadScript = loadScript;
7624exports.offset = offset;
7625exports.toggleClass = toggleClass;
7626exports.fadeOut = fadeOut;
7627exports.fadeIn = fadeIn;
7628exports.siblings = siblings;
7629exports.visible = visible;
7630exports.ajax = ajax;
7631
7632var _window = _dereq_(3);
7633
7634var _window2 = _interopRequireDefault(_window);
7635
7636var _document = _dereq_(2);
7637
7638var _document2 = _interopRequireDefault(_document);
7639
7640var _mejs = _dereq_(7);
7641
7642var _mejs2 = _interopRequireDefault(_mejs);
7643
7644function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7645
7646function loadScript(url) {
7647	return new Promise(function (resolve, reject) {
7648		var script = _document2.default.createElement('script');
7649		script.src = url;
7650		script.async = true;
7651		script.onload = function () {
7652			script.remove();
7653			resolve();
7654		};
7655		script.onerror = function () {
7656			script.remove();
7657			reject();
7658		};
7659		_document2.default.head.appendChild(script);
7660	});
7661}
7662
7663function offset(el) {
7664	var rect = el.getBoundingClientRect(),
7665	    scrollLeft = _window2.default.pageXOffset || _document2.default.documentElement.scrollLeft,
7666	    scrollTop = _window2.default.pageYOffset || _document2.default.documentElement.scrollTop;
7667	return { top: rect.top + scrollTop, left: rect.left + scrollLeft };
7668}
7669
7670var hasClassMethod = void 0,
7671    addClassMethod = void 0,
7672    removeClassMethod = void 0;
7673
7674if ('classList' in _document2.default.documentElement) {
7675	hasClassMethod = function hasClassMethod(el, className) {
7676		return el.classList !== undefined && el.classList.contains(className);
7677	};
7678	addClassMethod = function addClassMethod(el, className) {
7679		return el.classList.add(className);
7680	};
7681	removeClassMethod = function removeClassMethod(el, className) {
7682		return el.classList.remove(className);
7683	};
7684} else {
7685	hasClassMethod = function hasClassMethod(el, className) {
7686		return new RegExp('\\b' + className + '\\b').test(el.className);
7687	};
7688	addClassMethod = function addClassMethod(el, className) {
7689		if (!hasClass(el, className)) {
7690			el.className += ' ' + className;
7691		}
7692	};
7693	removeClassMethod = function removeClassMethod(el, className) {
7694		el.className = el.className.replace(new RegExp('\\b' + className + '\\b', 'g'), '');
7695	};
7696}
7697
7698var hasClass = exports.hasClass = hasClassMethod;
7699var addClass = exports.addClass = addClassMethod;
7700var removeClass = exports.removeClass = removeClassMethod;
7701
7702function toggleClass(el, className) {
7703	hasClass(el, className) ? removeClass(el, className) : addClass(el, className);
7704}
7705
7706function fadeOut(el) {
7707	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7708	var callback = arguments[2];
7709
7710	if (!el.style.opacity) {
7711		el.style.opacity = 1;
7712	}
7713
7714	var start = null;
7715	_window2.default.requestAnimationFrame(function animate(timestamp) {
7716		start = start || timestamp;
7717		var progress = timestamp - start;
7718		var opacity = parseFloat(1 - progress / duration, 2);
7719		el.style.opacity = opacity < 0 ? 0 : opacity;
7720		if (progress > duration) {
7721			if (callback && typeof callback === 'function') {
7722				callback();
7723			}
7724		} else {
7725			_window2.default.requestAnimationFrame(animate);
7726		}
7727	});
7728}
7729
7730function fadeIn(el) {
7731	var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 400;
7732	var callback = arguments[2];
7733
7734	if (!el.style.opacity) {
7735		el.style.opacity = 0;
7736	}
7737
7738	var start = null;
7739	_window2.default.requestAnimationFrame(function animate(timestamp) {
7740		start = start || timestamp;
7741		var progress = timestamp - start;
7742		var opacity = parseFloat(progress / duration, 2);
7743		el.style.opacity = opacity > 1 ? 1 : opacity;
7744		if (progress > duration) {
7745			if (callback && typeof callback === 'function') {
7746				callback();
7747			}
7748		} else {
7749			_window2.default.requestAnimationFrame(animate);
7750		}
7751	});
7752}
7753
7754function siblings(el, filter) {
7755	var siblings = [];
7756	el = el.parentNode.firstChild;
7757	do {
7758		if (!filter || filter(el)) {
7759			siblings.push(el);
7760		}
7761	} while (el = el.nextSibling);
7762	return siblings;
7763}
7764
7765function visible(elem) {
7766	if (elem.getClientRects !== undefined && elem.getClientRects === 'function') {
7767		return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
7768	}
7769	return !!(elem.offsetWidth || elem.offsetHeight);
7770}
7771
7772function ajax(url, dataType, success, error) {
7773	var xhr = _window2.default.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
7774
7775	var type = 'application/x-www-form-urlencoded; charset=UTF-8',
7776	    completed = false,
7777	    accept = '*/'.concat('*');
7778
7779	switch (dataType) {
7780		case 'text':
7781			type = 'text/plain';
7782			break;
7783		case 'json':
7784			type = 'application/json, text/javascript';
7785			break;
7786		case 'html':
7787			type = 'text/html';
7788			break;
7789		case 'xml':
7790			type = 'application/xml, text/xml';
7791			break;
7792	}
7793
7794	if (type !== 'application/x-www-form-urlencoded') {
7795		accept = type + ', */*; q=0.01';
7796	}
7797
7798	if (xhr) {
7799		xhr.open('GET', url, true);
7800		xhr.setRequestHeader('Accept', accept);
7801		xhr.onreadystatechange = function () {
7802			if (completed) {
7803				return;
7804			}
7805
7806			if (xhr.readyState === 4) {
7807				if (xhr.status === 200) {
7808					completed = true;
7809					var data = void 0;
7810					switch (dataType) {
7811						case 'json':
7812							data = JSON.parse(xhr.responseText);
7813							break;
7814						case 'xml':
7815							data = xhr.responseXML;
7816							break;
7817						default:
7818							data = xhr.responseText;
7819							break;
7820					}
7821					success(data);
7822				} else if (typeof error === 'function') {
7823					error(xhr.status);
7824				}
7825			}
7826		};
7827
7828		xhr.send();
7829	}
7830}
7831
7832_mejs2.default.Utils = _mejs2.default.Utils || {};
7833_mejs2.default.Utils.offset = offset;
7834_mejs2.default.Utils.hasClass = hasClass;
7835_mejs2.default.Utils.addClass = addClass;
7836_mejs2.default.Utils.removeClass = removeClass;
7837_mejs2.default.Utils.toggleClass = toggleClass;
7838_mejs2.default.Utils.fadeIn = fadeIn;
7839_mejs2.default.Utils.fadeOut = fadeOut;
7840_mejs2.default.Utils.siblings = siblings;
7841_mejs2.default.Utils.visible = visible;
7842_mejs2.default.Utils.ajax = ajax;
7843_mejs2.default.Utils.loadScript = loadScript;
7844
7845},{"2":2,"3":3,"7":7}],27:[function(_dereq_,module,exports){
7846'use strict';
7847
7848Object.defineProperty(exports, "__esModule", {
7849	value: true
7850});
7851exports.escapeHTML = escapeHTML;
7852exports.debounce = debounce;
7853exports.isObjectEmpty = isObjectEmpty;
7854exports.splitEvents = splitEvents;
7855exports.createEvent = createEvent;
7856exports.isNodeAfter = isNodeAfter;
7857exports.isString = isString;
7858
7859var _mejs = _dereq_(7);
7860
7861var _mejs2 = _interopRequireDefault(_mejs);
7862
7863function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7864
7865function escapeHTML(input) {
7866
7867	if (typeof input !== 'string') {
7868		throw new Error('Argument passed must be a string');
7869	}
7870
7871	var map = {
7872		'&': '&amp;',
7873		'<': '&lt;',
7874		'>': '&gt;',
7875		'"': '&quot;'
7876	};
7877
7878	return input.replace(/[&<>"]/g, function (c) {
7879		return map[c];
7880	});
7881}
7882
7883function debounce(func, wait) {
7884	var _this = this,
7885	    _arguments = arguments;
7886
7887	var immediate = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
7888
7889
7890	if (typeof func !== 'function') {
7891		throw new Error('First argument must be a function');
7892	}
7893
7894	if (typeof wait !== 'number') {
7895		throw new Error('Second argument must be a numeric value');
7896	}
7897
7898	var timeout = void 0;
7899	return function () {
7900		var context = _this,
7901		    args = _arguments;
7902		var later = function later() {
7903			timeout = null;
7904			if (!immediate) {
7905				func.apply(context, args);
7906			}
7907		};
7908		var callNow = immediate && !timeout;
7909		clearTimeout(timeout);
7910		timeout = setTimeout(later, wait);
7911
7912		if (callNow) {
7913			func.apply(context, args);
7914		}
7915	};
7916}
7917
7918function isObjectEmpty(instance) {
7919	return Object.getOwnPropertyNames(instance).length <= 0;
7920}
7921
7922function splitEvents(events, id) {
7923	var rwindow = /^((after|before)print|(before)?unload|hashchange|message|o(ff|n)line|page(hide|show)|popstate|resize|storage)\b/;
7924
7925	var ret = { d: [], w: [] };
7926	(events || '').split(' ').forEach(function (v) {
7927		var eventName = '' + v + (id ? '.' + id : '');
7928
7929		if (eventName.startsWith('.')) {
7930			ret.d.push(eventName);
7931			ret.w.push(eventName);
7932		} else {
7933			ret[rwindow.test(v) ? 'w' : 'd'].push(eventName);
7934		}
7935	});
7936
7937	ret.d = ret.d.join(' ');
7938	ret.w = ret.w.join(' ');
7939	return ret;
7940}
7941
7942function createEvent(eventName, target) {
7943
7944	if (typeof eventName !== 'string') {
7945		throw new Error('Event name must be a string');
7946	}
7947
7948	var eventFrags = eventName.match(/([a-z]+\.([a-z]+))/i),
7949	    detail = {
7950		target: target
7951	};
7952
7953	if (eventFrags !== null) {
7954		eventName = eventFrags[1];
7955		detail.namespace = eventFrags[2];
7956	}
7957
7958	return new window.CustomEvent(eventName, {
7959		detail: detail
7960	});
7961}
7962
7963function isNodeAfter(sourceNode, targetNode) {
7964
7965	return !!(sourceNode && targetNode && sourceNode.compareDocumentPosition(targetNode) & 2);
7966}
7967
7968function isString(value) {
7969	return typeof value === 'string';
7970}
7971
7972_mejs2.default.Utils = _mejs2.default.Utils || {};
7973_mejs2.default.Utils.escapeHTML = escapeHTML;
7974_mejs2.default.Utils.debounce = debounce;
7975_mejs2.default.Utils.isObjectEmpty = isObjectEmpty;
7976_mejs2.default.Utils.splitEvents = splitEvents;
7977_mejs2.default.Utils.createEvent = createEvent;
7978_mejs2.default.Utils.isNodeAfter = isNodeAfter;
7979_mejs2.default.Utils.isString = isString;
7980
7981},{"7":7}],28:[function(_dereq_,module,exports){
7982'use strict';
7983
7984Object.defineProperty(exports, "__esModule", {
7985	value: true
7986});
7987exports.typeChecks = undefined;
7988exports.absolutizeUrl = absolutizeUrl;
7989exports.formatType = formatType;
7990exports.getMimeFromType = getMimeFromType;
7991exports.getTypeFromFile = getTypeFromFile;
7992exports.getExtension = getExtension;
7993exports.normalizeExtension = normalizeExtension;
7994
7995var _mejs = _dereq_(7);
7996
7997var _mejs2 = _interopRequireDefault(_mejs);
7998
7999var _general = _dereq_(27);
8000
8001function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8002
8003var typeChecks = exports.typeChecks = [];
8004
8005function absolutizeUrl(url) {
8006
8007	if (typeof url !== 'string') {
8008		throw new Error('`url` argument must be a string');
8009	}
8010
8011	var el = document.createElement('div');
8012	el.innerHTML = '<a href="' + (0, _general.escapeHTML)(url) + '">x</a>';
8013	return el.firstChild.href;
8014}
8015
8016function formatType(url) {
8017	var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
8018
8019	return url && !type ? getTypeFromFile(url) : type;
8020}
8021
8022function getMimeFromType(type) {
8023
8024	if (typeof type !== 'string') {
8025		throw new Error('`type` argument must be a string');
8026	}
8027
8028	return type && type.indexOf(';') > -1 ? type.substr(0, type.indexOf(';')) : type;
8029}
8030
8031function getTypeFromFile(url) {
8032
8033	if (typeof url !== 'string') {
8034		throw new Error('`url` argument must be a string');
8035	}
8036
8037	for (var i = 0, total = typeChecks.length; i < total; i++) {
8038		var type = typeChecks[i](url);
8039
8040		if (type) {
8041			return type;
8042		}
8043	}
8044
8045	var ext = getExtension(url),
8046	    normalizedExt = normalizeExtension(ext);
8047
8048	var mime = 'video/mp4';
8049
8050	if (normalizedExt) {
8051		if (~['mp4', 'm4v', 'ogg', 'ogv', 'webm', 'flv', 'mpeg', 'mov'].indexOf(normalizedExt)) {
8052			mime = 'video/' + normalizedExt;
8053		} else if (~['mp3', 'oga', 'wav', 'mid', 'midi'].indexOf(normalizedExt)) {
8054			mime = 'audio/' + normalizedExt;
8055		}
8056	}
8057
8058	return mime;
8059}
8060
8061function getExtension(url) {
8062
8063	if (typeof url !== 'string') {
8064		throw new Error('`url` argument must be a string');
8065	}
8066
8067	var baseUrl = url.split('?')[0],
8068	    baseName = baseUrl.split('\\').pop().split('/').pop();
8069	return ~baseName.indexOf('.') ? baseName.substring(baseName.lastIndexOf('.') + 1) : '';
8070}
8071
8072function normalizeExtension(extension) {
8073
8074	if (typeof extension !== 'string') {
8075		throw new Error('`extension` argument must be a string');
8076	}
8077
8078	switch (extension) {
8079		case 'mp4':
8080		case 'm4v':
8081			return 'mp4';
8082		case 'webm':
8083		case 'webma':
8084		case 'webmv':
8085			return 'webm';
8086		case 'ogg':
8087		case 'oga':
8088		case 'ogv':
8089			return 'ogg';
8090		default:
8091			return extension;
8092	}
8093}
8094
8095_mejs2.default.Utils = _mejs2.default.Utils || {};
8096_mejs2.default.Utils.typeChecks = typeChecks;
8097_mejs2.default.Utils.absolutizeUrl = absolutizeUrl;
8098_mejs2.default.Utils.formatType = formatType;
8099_mejs2.default.Utils.getMimeFromType = getMimeFromType;
8100_mejs2.default.Utils.getTypeFromFile = getTypeFromFile;
8101_mejs2.default.Utils.getExtension = getExtension;
8102_mejs2.default.Utils.normalizeExtension = normalizeExtension;
8103
8104},{"27":27,"7":7}],29:[function(_dereq_,module,exports){
8105'use strict';
8106
8107var _document = _dereq_(2);
8108
8109var _document2 = _interopRequireDefault(_document);
8110
8111var _promisePolyfill = _dereq_(4);
8112
8113var _promisePolyfill2 = _interopRequireDefault(_promisePolyfill);
8114
8115function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8116
8117(function (arr) {
8118	arr.forEach(function (item) {
8119		if (item.hasOwnProperty('remove')) {
8120			return;
8121		}
8122		Object.defineProperty(item, 'remove', {
8123			configurable: true,
8124			enumerable: true,
8125			writable: true,
8126			value: function remove() {
8127				this.parentNode.removeChild(this);
8128			}
8129		});
8130	});
8131})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);
8132
8133(function () {
8134
8135	if (typeof window.CustomEvent === 'function') {
8136		return false;
8137	}
8138
8139	function CustomEvent(event, params) {
8140		params = params || { bubbles: false, cancelable: false, detail: undefined };
8141		var evt = _document2.default.createEvent('CustomEvent');
8142		evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
8143		return evt;
8144	}
8145
8146	CustomEvent.prototype = window.Event.prototype;
8147	window.CustomEvent = CustomEvent;
8148})();
8149
8150if (typeof Object.assign !== 'function') {
8151	Object.assign = function (target) {
8152
8153		if (target === null || target === undefined) {
8154			throw new TypeError('Cannot convert undefined or null to object');
8155		}
8156
8157		var to = Object(target);
8158
8159		for (var index = 1, total = arguments.length; index < total; index++) {
8160			var nextSource = arguments[index];
8161
8162			if (nextSource !== null) {
8163				for (var nextKey in nextSource) {
8164					if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
8165						to[nextKey] = nextSource[nextKey];
8166					}
8167				}
8168			}
8169		}
8170		return to;
8171	};
8172}
8173
8174if (!String.prototype.startsWith) {
8175	String.prototype.startsWith = function (searchString, position) {
8176		position = position || 0;
8177		return this.substr(position, searchString.length) === searchString;
8178	};
8179}
8180
8181if (!Element.prototype.matches) {
8182	Element.prototype.matches = Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector || function (s) {
8183		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8184		    i = matches.length - 1;
8185		while (--i >= 0 && matches.item(i) !== this) {}
8186		return i > -1;
8187	};
8188}
8189
8190if (window.Element && !Element.prototype.closest) {
8191	Element.prototype.closest = function (s) {
8192		var matches = (this.document || this.ownerDocument).querySelectorAll(s),
8193		    i = void 0,
8194		    el = this;
8195		do {
8196			i = matches.length;
8197			while (--i >= 0 && matches.item(i) !== el) {}
8198		} while (i < 0 && (el = el.parentElement));
8199		return el;
8200	};
8201}
8202
8203(function () {
8204	var lastTime = 0;
8205	var vendors = ['ms', 'moz', 'webkit', 'o'];
8206	for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {
8207		window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame'];
8208		window.cancelAnimationFrame = window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame'];
8209	}
8210
8211	if (!window.requestAnimationFrame) window.requestAnimationFrame = function (callback) {
8212		var currTime = new Date().getTime();
8213		var timeToCall = Math.max(0, 16 - (currTime - lastTime));
8214		var id = window.setTimeout(function () {
8215			callback(currTime + timeToCall);
8216		}, timeToCall);
8217		lastTime = currTime + timeToCall;
8218		return id;
8219	};
8220
8221	if (!window.cancelAnimationFrame) window.cancelAnimationFrame = function (id) {
8222		clearTimeout(id);
8223	};
8224})();
8225
8226if (/firefox/i.test(navigator.userAgent)) {
8227	var getComputedStyle = window.getComputedStyle;
8228	window.getComputedStyle = function (el, pseudoEl) {
8229		var t = getComputedStyle(el, pseudoEl);
8230		return t === null ? { getPropertyValue: function getPropertyValue() {} } : t;
8231	};
8232}
8233
8234if (!window.Promise) {
8235	window.Promise = _promisePolyfill2.default;
8236}
8237
8238(function (constructor) {
8239	if (constructor && constructor.prototype && constructor.prototype.children === null) {
8240		Object.defineProperty(constructor.prototype, 'children', {
8241			get: function get() {
8242				var i = 0,
8243				    node = void 0,
8244				    nodes = this.childNodes,
8245				    children = [];
8246				while (node = nodes[i++]) {
8247					if (node.nodeType === 1) {
8248						children.push(node);
8249					}
8250				}
8251				return children;
8252			}
8253		});
8254	}
8255})(window.Node || window.Element);
8256
8257},{"2":2,"4":4}],30:[function(_dereq_,module,exports){
8258'use strict';
8259
8260Object.defineProperty(exports, "__esModule", {
8261	value: true
8262});
8263exports.isDropFrame = isDropFrame;
8264exports.secondsToTimeCode = secondsToTimeCode;
8265exports.timeCodeToSeconds = timeCodeToSeconds;
8266exports.calculateTimeFormat = calculateTimeFormat;
8267exports.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8268
8269var _mejs = _dereq_(7
vendor: 6,842 bytes, lines 8269-8510
8269);
8270
8271var _mejs2 = _interopRequireDefault(_mejs);
8272
8273function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8274
8275function isDropFrame() {
8276	var fps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 25;
8277
8278	return !(fps % 1 === 0);
8279}
8280function secondsToTimeCode(time) {
8281	var forceHours = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
8282	var showFrameCount = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
8283	var fps = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;
8284	var secondsDecimalLength = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
8285	var timeFormat = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 'hh:mm:ss';
8286
8287
8288	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8289
8290	var dropFrames = Math.round(fps * 0.066666),
8291	    timeBase = Math.round(fps),
8292	    framesPer24Hours = Math.round(fps * 3600) * 24,
8293	    framesPer10Minutes = Math.round(fps * 600),
8294	    frameSep = isDropFrame(fps) ? ';' : ':',
8295	    hours = void 0,
8296	    minutes = void 0,
8297	    seconds = void 0,
8298	    frames = void 0,
8299	    f = Math.round(time * fps);
8300
8301	if (isDropFrame(fps)) {
8302
8303		if (f < 0) {
8304			f = framesPer24Hours + f;
8305		}
8306
8307		f = f % framesPer24Hours;
8308
8309		var d = Math.floor(f / framesPer10Minutes);
8310		var m = f % framesPer10Minutes;
8311		f = f + dropFrames * 9 * d;
8312		if (m > dropFrames) {
8313			f = f + dropFrames * Math.floor((m - dropFrames) / Math.round(timeBase * 60 - dropFrames));
8314		}
8315
8316		var timeBaseDivision = Math.floor(f / timeBase);
8317
8318		hours = Math.floor(Math.floor(timeBaseDivision / 60) / 60);
8319		minutes = Math.floor(timeBaseDivision / 60) % 60;
8320
8321		if (showFrameCount) {
8322			seconds = timeBaseDivision % 60;
8323		} else {
8324			seconds = Math.floor(f / timeBase % 60).toFixed(secondsDecimalLength);
8325		}
8326	} else {
8327		hours = Math.floor(time / 3600) % 24;
8328		minutes = Math.floor(time / 60) % 60;
8329		if (showFrameCount) {
8330			seconds = Math.floor(time % 60);
8331		} else {
8332			seconds = Math.floor(time % 60).toFixed(secondsDecimalLength);
8333		}
8334	}
8335	hours = hours <= 0 ? 0 : hours;
8336	minutes = minutes <= 0 ? 0 : minutes;
8337	seconds = seconds <= 0 ? 0 : seconds;
8338
8339	seconds = seconds === 60 ? 0 : seconds;
8340	minutes = minutes === 60 ? 0 : minutes;
8341
8342	var timeFormatFrags = timeFormat.split(':');
8343	var timeFormatSettings = {};
8344	for (var i = 0, total = timeFormatFrags.length; i < total; ++i) {
8345		var unique = '';
8346		for (var j = 0, t = timeFormatFrags[i].length; j < t; j++) {
8347			if (unique.indexOf(timeFormatFrags[i][j]) < 0) {
8348				unique += timeFormatFrags[i][j];
8349			}
8350		}
8351		if (~['f', 's', 'm', 'h'].indexOf(unique)) {
8352			timeFormatSettings[unique] = timeFormatFrags[i].length;
8353		}
8354	}
8355
8356	var result = forceHours || hours > 0 ? (hours < 10 && timeFormatSettings.h > 1 ? '0' + hours : hours) + ':' : '';
8357	result += (minutes < 10 && timeFormatSettings.m > 1 ? '0' + minutes : minutes) + ':';
8358	result += '' + (seconds < 10 && timeFormatSettings.s > 1 ? '0' + seconds : seconds);
8359
8360	if (showFrameCount) {
8361		frames = (f % timeBase).toFixed(0);
8362		frames = frames <= 0 ? 0 : frames;
8363		result += frames < 10 && timeFormatSettings.f ? frameSep + '0' + frames : '' + frameSep + frames;
8364	}
8365
8366	return result;
8367}
8368
8369function timeCodeToSeconds(time) {
8370	var fps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 25;
8371
8372
8373	if (typeof time !== 'string') {
8374		throw new TypeError('Time must be a string');
8375	}
8376
8377	if (time.indexOf(';') > 0) {
8378		time = time.replace(';', ':');
8379	}
8380
8381	if (!/\d{2}(\:\d{2}){0,3}/i.test(time)) {
8382		throw new TypeError('Time code must have the format `00:00:00`');
8383	}
8384
8385	var parts = time.split(':');
8386
8387	var output = void 0,
8388	    hours = 0,
8389	    minutes = 0,
8390	    seconds = 0,
8391	    frames = 0,
8392	    totalMinutes = 0,
8393	    dropFrames = Math.round(fps * 0.066666),
8394	    timeBase = Math.round(fps),
8395	    hFrames = timeBase * 3600,
8396	    mFrames = timeBase * 60;
8397
8398	switch (parts.length) {
8399		default:
8400		case 1:
8401			seconds = parseInt(parts[0], 10);
8402			break;
8403		case 2:
8404			minutes = parseInt(parts[0], 10);
8405			seconds = parseInt(parts[1], 10);
8406			break;
8407		case 3:
8408			hours = parseInt(parts[0], 10);
8409			minutes = parseInt(parts[1], 10);
8410			seconds = parseInt(parts[2], 10);
8411			break;
8412		case 4:
8413			hours = parseInt(parts[0], 10);
8414			minutes = parseInt(parts[1], 10);
8415			seconds = parseInt(parts[2], 10);
8416			frames = parseInt(parts[3], 10);
8417			break;
8418	}
8419
8420	if (isDropFrame(fps)) {
8421		totalMinutes = 60 * hours + minutes;
8422		output = hFrames * hours + mFrames * minutes + timeBase * seconds + frames - dropFrames * (totalMinutes - Math.floor(totalMinutes / 10));
8423	} else {
8424		output = (hFrames * hours + mFrames * minutes + fps * seconds + frames) / fps;
8425	}
8426
8427	return parseFloat(output.toFixed(3));
8428}
8429
8430function calculateTimeFormat(time, options) {
8431	var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 25;
8432
8433
8434	time = !time || typeof time !== 'number' || time < 0 ? 0 : time;
8435
8436	var hours = Math.floor(time / 3600) % 24,
8437	    minutes = Math.floor(time / 60) % 60,
8438	    seconds = Math.floor(time % 60),
8439	    frames = Math.floor((time % 1 * fps).toFixed(3)),
8440	    lis = [[frames, 'f'], [seconds, 's'], [minutes, 'm'], [hours, 'h']];
8441
8442	var format = options.timeFormat,
8443	    firstTwoPlaces = format[1] === format[0],
8444	    separatorIndex = firstTwoPlaces ? 2 : 1,
8445	    separator = format.length < separatorIndex ? format[separatorIndex] : ':',
8446	    firstChar = format[0],
8447	    required = false;
8448
8449	for (var i = 0, len = lis.length; i < len; i++) {
8450		if (~format.indexOf(lis[i][1])) {
8451			required = true;
8452		} else if (required) {
8453			var hasNextValue = false;
8454			for (var j = i; j < len; j++) {
8455				if (lis[j][0] > 0) {
8456					hasNextValue = true;
8457					break;
8458				}
8459			}
8460
8461			if (!hasNextValue) {
8462				break;
8463			}
8464
8465			if (!firstTwoPlaces) {
8466				format = firstChar + format;
8467			}
8468			format = lis[i][1] + separator + format;
8469			if (firstTwoPlaces) {
8470				format = lis[i][1] + format;
8471			}
8472			firstChar = lis[i][1];
8473		}
8474	}
8475
8476	options.timeFormat = format;
8477}
8478
8479function convertSMPTEtoSeconds(SMPTE) {
8480
8481	if (typeof SMPTE !== 'string') {
8482		throw new TypeError('Argument must be a string value');
8483	}
8484
8485	SMPTE = SMPTE.replace(',', '.');
8486
8487	var decimalLen = ~SMPTE.indexOf('.') ? SMPTE.split('.')[1].length : 0;
8488
8489	var secs = 0,
8490	    multiplier = 1;
8491
8492	SMPTE = SMPTE.split(':').reverse();
8493
8494	for (var i = 0, total = SMPTE.length; i < total; i++) {
8495		multiplier = 1;
8496		if (i > 0) {
8497			multiplier = Math.pow(60, i);
8498		}
8499		secs += Number(SMPTE[i]) * multiplier;
8500	}
8501	return Number(secs.toFixed(decimalLen));
8502}
8503
8504_mejs2.default.Utils = _mejs2.default.Utils || {};
8505_mejs2.default.Utils.secondsToTimeCode = secondsToTimeCode;
8506_mejs2.default.Utils.timeCodeToSeconds = timeCodeToSeconds;
8507_mejs2.default.Utils.calculateTimeFormat = calculateTimeFormat;
8508_mejs2.default.Utils.convertSMPTEtoSeconds = convertSMPTEtoSeconds;
8509
8510},{"
85107":7}]},{},[29,6,5,15,23,20,19,21,22,24,16,18,17,9,10,11,12,13,14]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.