PageSourceSearch

https://apologetics315.com/wp-content/plugins/resonator-core/inc/p…/mediaelement-and-player.js?ver=6.9.9

js apologetics315.com collected 2026-10-02 10:26:17 UTC 271,957 bytes, 8,474 lines download raw bytes

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